@xyne/workflow-ui 1.3.35 → 1.3.37
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/components/builder/v3/WorkflowBuilderV3.d.ts +11 -1
- package/dist/components/builder/v3/WorkflowBuilderV3.d.ts.map +1 -1
- package/dist/components/builder/v3/WorkflowBuilderV3.js +8 -1
- package/dist/components/builder/v3/WorkflowBuilderV3.js.map +1 -1
- package/dist/components/dashboard/WorkflowDashboard.d.ts +3 -1
- package/dist/components/dashboard/WorkflowDashboard.d.ts.map +1 -1
- package/dist/components/dashboard/WorkflowDashboard.js +2 -2
- package/dist/components/dashboard/WorkflowDashboard.js.map +1 -1
- package/dist/components/provider/WorkflowUIProvider.d.ts.map +1 -1
- package/dist/components/provider/WorkflowUIProvider.js +2 -1
- package/dist/components/provider/WorkflowUIProvider.js.map +1 -1
- package/dist/components/workflows/WorkflowApp.d.ts.map +1 -1
- package/dist/components/workflows/WorkflowApp.js +44 -30
- package/dist/components/workflows/WorkflowApp.js.map +1 -1
- package/dist/hooks/queries.d.ts +45 -0
- package/dist/hooks/queries.d.ts.map +1 -0
- package/dist/hooks/queries.js +57 -0
- package/dist/hooks/queries.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/live/LiveEventsProvider.d.ts +18 -0
- package/dist/live/LiveEventsProvider.d.ts.map +1 -0
- package/dist/live/LiveEventsProvider.js +113 -0
- package/dist/live/LiveEventsProvider.js.map +1 -0
- package/dist/live/live-context.d.ts +34 -0
- package/dist/live/live-context.d.ts.map +1 -0
- package/dist/live/live-context.js +10 -0
- package/dist/live/live-context.js.map +1 -0
- package/dist/live/use-live-workflow.d.ts +22 -0
- package/dist/live/use-live-workflow.d.ts.map +1 -0
- package/dist/live/use-live-workflow.js +47 -0
- package/dist/live/use-live-workflow.js.map +1 -0
- package/dist/live/use-remote-adoption.d.ts +34 -0
- package/dist/live/use-remote-adoption.d.ts.map +1 -0
- package/dist/live/use-remote-adoption.js +56 -0
- package/dist/live/use-remote-adoption.js.map +1 -0
- package/package.json +1 -1
|
@@ -23,6 +23,16 @@ export interface WorkflowBuilderV3Props {
|
|
|
23
23
|
* for a run: deep-linking, analytics, or scoping its own side panels to the node in view.
|
|
24
24
|
*/
|
|
25
25
|
onSelectStep?: ((stepId: string | null) => void) | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Fires when the builder gains or loses unsaved changes.
|
|
28
|
+
*
|
|
29
|
+
* Observation only, like {@link onSelectStep} — the edits stay the builder's.
|
|
30
|
+
* A host needs this to answer a question only it can: whether it is safe to
|
|
31
|
+
* replace what is on screen. Refreshing a clean builder is invisible and
|
|
32
|
+
* correct; doing it while someone is mid-edit destroys their work, and the
|
|
33
|
+
* host has no other way to tell the two apart.
|
|
34
|
+
*/
|
|
35
|
+
onDirtyChange?: ((dirty: boolean) => void) | undefined;
|
|
26
36
|
}
|
|
27
|
-
export declare function WorkflowBuilderV3({ builder: externalBuilder, initialConfig, initialSummary, onChange, onSave, readOnly, className, aiBuilderClient, onSelectStep, }: WorkflowBuilderV3Props): import("react").JSX.Element;
|
|
37
|
+
export declare function WorkflowBuilderV3({ builder: externalBuilder, initialConfig, initialSummary, onChange, onSave, readOnly, className, aiBuilderClient, onSelectStep, onDirtyChange, }: WorkflowBuilderV3Props): import("react").JSX.Element;
|
|
28
38
|
//# sourceMappingURL=WorkflowBuilderV3.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBuilderV3.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowBuilderV3.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAsB,KAAK,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AA2B3G,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC/C,aAAa,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,2EAA2E;IAC3E,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACzF,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowBuilderV3.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowBuilderV3.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAsB,KAAK,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AA2B3G,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC/C,aAAa,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,2EAA2E;IAC3E,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACzF,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACxD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EAAE,eAAe,EACxB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,MAAM,EACN,QAAgB,EAChB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,aAAa,GACd,EAAE,sBAAsB,+BA8axB"}
|
|
@@ -20,7 +20,7 @@ import { cn } from '../../shared/cn.js';
|
|
|
20
20
|
function isPanelOpen(selectedStepId, isTriggerSelected, isVariablesSelected) {
|
|
21
21
|
return !!selectedStepId || isTriggerSelected || isVariablesSelected;
|
|
22
22
|
}
|
|
23
|
-
export function WorkflowBuilderV3({ builder: externalBuilder, initialConfig, initialSummary, onChange, onSave, readOnly = false, className, aiBuilderClient, onSelectStep, }) {
|
|
23
|
+
export function WorkflowBuilderV3({ builder: externalBuilder, initialConfig, initialSummary, onChange, onSave, readOnly = false, className, aiBuilderClient, onSelectStep, onDirtyChange, }) {
|
|
24
24
|
const opts = { autoValidate: true };
|
|
25
25
|
if (initialConfig)
|
|
26
26
|
opts.initialConfig = initialConfig;
|
|
@@ -35,6 +35,13 @@ export function WorkflowBuilderV3({ builder: externalBuilder, initialConfig, ini
|
|
|
35
35
|
useEffect(() => {
|
|
36
36
|
onSelectStepRef.current?.(builder.selectedStepId);
|
|
37
37
|
}, [builder.selectedStepId]);
|
|
38
|
+
// Same ref treatment, same reason: the host hears about dirtiness changing,
|
|
39
|
+
// not about the builder re-rendering.
|
|
40
|
+
const onDirtyChangeRef = useRef(onDirtyChange);
|
|
41
|
+
onDirtyChangeRef.current = onDirtyChange;
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
onDirtyChangeRef.current?.(builder.isDirty);
|
|
44
|
+
}, [builder.isDirty]);
|
|
38
45
|
// ─── Validation issue surfacing (Part C) ───
|
|
39
46
|
const grouped = useMemo(() => groupIssues(builder.validation), [builder.validation]);
|
|
40
47
|
const issueTargets = useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBuilderV3.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowBuilderV3.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowBuilderV3.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowBuilderV3.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG1E,OAAO,EAAE,kBAAkB,EAAiC,MAAM,wCAAwC,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,sEAAsE;AACtE,SAAS,WAAW,CAClB,cAA6B,EAC7B,iBAA0B,EAC1B,mBAA4B;IAE5B,OAAO,CAAC,CAAC,cAAc,IAAI,iBAAiB,IAAI,mBAAmB,CAAC;AACtE,CAAC;AAoCD,MAAM,UAAU,iBAAiB,CAAC,EAChC,OAAO,EAAE,eAAe,EACxB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,aAAa,GACU;IACvB,MAAM,IAAI,GAA6C,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC9E,IAAI,aAAa;QAAE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACtD,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACvC,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,eAAe,IAAI,eAAe,CAAC;IAEnD,wFAAwF;IACxF,iFAAiF;IACjF,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAE7B,4EAA4E;IAC5E,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/C,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAAC;IACzC,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtB,8CAA8C;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACrF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,MAAM,CAAC,GAAa,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QACvD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7B,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3B,qBAAqB,CAAC,GAAG,EAAE;YACzB,QAAQ;iBACL,aAAa,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACxD,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,GAAW,EAAE,EAAE;QAC7C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACtC,MAAM,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;QAC5E,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAE,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElD,2EAA2E;IAC3E,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;QACjC,kBAAkB,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACrB,MAAM,YAAY,GAAG,OAAO,KAAK,eAAe,CAAC;IAEjD,6EAA6E;IAC7E,+CAA+C;IAC/C,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,yEAAyE;IACzE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAC;IAE1F,uEAAuE;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO;QAC9B,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9D,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO;QAC9B,uEAAuE;QACvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;QACD,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAErD,6EAA6E;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9B,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAElE,iBAAiB;IACjB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtD,eAAe;IACf,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC,CAAC;IAClF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,IAAI,QAAQ;YAAE,OAAO;QACrB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACjC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QACrD,IAAI,QAAQ;YAAE,OAAO;QACrB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,WAAoB,EAAE,QAAgD,EAAE,EAAE;QAC3G,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,mBAAmB;YAAE,OAAO;QACrD,oBAAoB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE5C,MAAM,sBAAsB,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,OAA0B,EAAE,EAAE;QACtF,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,yBAAyB,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE;QAC7D,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,aAAa,EAAE,CAAC;IAC1B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,OAAO,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAC7E,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAClC,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QAC/C,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;IACrD,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,yEAAyE;IACzE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAA8C,IAAI,CAAC,CAAC;IACtG,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QACvD,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzB,wBAAwB;IACxB,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrF,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAExD,6EAA6E;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACZ,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;oBAChC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QACF,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,qBAAqB;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAE,EAAE;YACzC,wCAAwC;YACxC,MAAM,GAAG,GAAI,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC;YAC9C,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,QAAQ;gBAAE,OAAO;YAEtE,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;YAEtC,cAAc;YACd,IAAI,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,MAAM;oBAAE,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YACD,cAAc;YACd,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YACD,6BAA6B;YAC7B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;gBACzE,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YACD,4CAA4C;YAC5C,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC5E,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,0BAA0B;YAC1B,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,OAAO,CAAC,cAAc,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAErD,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,uCAEjD,eACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,qEAAqE,EAC/E,KAAK,EAAE;oBACL,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,mBAAmB,CAAC;wBAC/F,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,UAAU;iBACf,aAED,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAC5C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAChD,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,kBAAkB,EAClC,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,aAAa,EACxB,aAAa,EAAE,iBAAiB,EAChC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAC3C,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,EAClD,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAC5D,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EACpF,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAClH,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;4BAChC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;4BACrE,IAAI,OAAO;gCAAE,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;wBAC7D,CAAC,EACD,YAAY,EAAE,OAAO,CAAC,MAAM,EAC5B,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAC5C,EAGD,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CACjC,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,QAAQ,IACP,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,UAAU,GAAG,CAAC,EACxB,WAAW,EAAE,YAAY,CAAC,MAAM,EAChC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAC3B,GACE,CACP,EAGA,CAAC,QAAQ,IAAI,CACZ,KAAC,cAAc,IACb,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,MAAM,EAAE,OAAO,CAAC,IAAI,EACpB,MAAM,EAAE,OAAO,CAAC,IAAI,EACpB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,aAAa,EACxB,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAChD,eAAe,EAAE,OAAO,CAAC,mBAAmB,EAC5C,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,KAC7E,CAAC,eAAe;4BAClB,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;4BACnE,CAAC,CAAC,EAAE,CAAC,GACP,CACH,EAGA,CAAC,QAAQ,IAAI,MAAM,IAAI,CACtB,eAAK,SAAS,EAAC,qDAAqD,aACjE,SAAS,IAAI,CACZ,eAAM,SAAS,EAAC,2EAA2E,EAAC,KAAK,EAAE,SAAS,YACzG,SAAS,GACL,CACR,EACA,CAAC,OAAO,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,CAClD,eAAM,SAAS,EAAC,wCAAwC,EAAC,KAAK,EAAC,iBAAiB,+BAAiB,CAClG,EACD,KAAC,aAAa,IAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAI,EACvD,kBACE,IAAI,EAAC,QAAQ,iBACD,cAAc,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,EAAE,CACX,qHAAqH,EACrH,SAAS,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,mCAAmC,EACvF,MAAM,IAAI,+BAA+B,CAC1C,aAEA,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,YAC5I,mBAAU,MAAM,EAAC,gBAAgB,GAAE,GAC/B,CACP,CAAC,CAAC,CAAC,CACF,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,aAC9I,eAAM,CAAC,EAAC,iEAAiE,GAAE,EAAA,eAAM,CAAC,EAAC,eAAe,GAAE,EAAA,eAAM,CAAC,EAAC,UAAU,GAAE,IACpH,CACP,EACA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAC3C,IACL,CACP,IACG,EAGN,KAAC,SAAS,IACR,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAC5C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAChD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EACzC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAC1D,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EACxC,aAAa,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAA4B,EAC/E,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,EACvF,aAAa,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACtE,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,EACxE,gBAAgB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAChE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EACpD,iBAAiB,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAChG,oBAAoB,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,EACtG,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAC3C,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,EAClD,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAC5D,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACtE,sBAAsB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EACxD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GACvC,EAGD,eAAe,IAAI,CAClB,KAAC,cAAc,IACb,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,OAAO,CAAC,MAAM,EAC7B,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAClD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAChF,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,GACpC,CACH,EAGD,KAAC,UAAU,IACT,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,GACvC,EACF,KAAC,aAAa,IACZ,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAC1C,EAGD,iBAAiB,IAAI,CACpB,KAAC,oBAAoB,IACnB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC9E,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAC1C,YAAY,EAAE,GAAG,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,GAClE,CACH,EAGA,aAAa,IAAI,CAChB,KAAC,gBAAgB,IACf,SAAS,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAC1C,iBAAiB,EAAE,aAAa,CAAC,MAAM,EACvC,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACtC,SAAS,EAAE,GAAG,EAAE;oBACd,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBACzC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC,GACD,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -34,7 +34,9 @@ export interface WorkflowDashboardProps {
|
|
|
34
34
|
permittedActions?: readonly Action[] | undefined;
|
|
35
35
|
/** Fires when the builder's selected step changes. See WorkflowBuilder. */
|
|
36
36
|
onSelectStep?: ((stepId: string | null) => void) | undefined;
|
|
37
|
+
/** Forwarded to the builder — see {@link WorkflowBuilderV3Props.onDirtyChange}. */
|
|
38
|
+
onDirtyChange?: ((dirty: boolean) => void) | undefined;
|
|
37
39
|
}
|
|
38
|
-
export declare function WorkflowDashboard({ defaultView, view: controlledView, onViewChange, onViewRun, workflowId, workflowConfig, summary, onSave, onTestRun, className, classNames, aiBuilderClient, permittedActions, onSelectStep, }: WorkflowDashboardProps): React.JSX.Element;
|
|
40
|
+
export declare function WorkflowDashboard({ defaultView, view: controlledView, onViewChange, onViewRun, workflowId, workflowConfig, summary, onSave, onTestRun, className, classNames, aiBuilderClient, permittedActions, onSelectStep, onDirtyChange, }: WorkflowDashboardProps): React.JSX.Element;
|
|
39
41
|
export {};
|
|
40
42
|
//# sourceMappingURL=WorkflowDashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAQrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD,KAAK,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAC/B,uFAAuF;IACvF,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD;8CAC0C;IAC1C,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACzF,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,GAAG,SAAS,CAAC;IACd,qEAAqE;IACrE,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAQrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD,KAAK,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAC/B,uFAAuF;IACvF,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD;8CAC0C;IAC1C,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACzF,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,GAAG,SAAS,CAAC;IACd,qEAAqE;IACrE,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,mFAAmF;IACnF,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACxD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAoB,EACpB,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACd,OAAO,EACP,MAAM,EACN,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,EAAE,sBAAsB,qBAkLxB"}
|
|
@@ -8,7 +8,7 @@ import { useOptionalSlot } from '../provider/slot-resolution.js';
|
|
|
8
8
|
import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
|
|
9
9
|
import { cn } from '../shared/cn.js';
|
|
10
10
|
import { canPerform } from '../../utils/permissions.js';
|
|
11
|
-
export function WorkflowDashboard({ defaultView = 'runs', view: controlledView, onViewChange, onViewRun, workflowId, workflowConfig, summary, onSave, onTestRun, className, classNames, aiBuilderClient, permittedActions, onSelectStep, }) {
|
|
11
|
+
export function WorkflowDashboard({ defaultView = 'runs', view: controlledView, onViewChange, onViewRun, workflowId, workflowConfig, summary, onSave, onTestRun, className, classNames, aiBuilderClient, permittedActions, onSelectStep, onDirtyChange, }) {
|
|
12
12
|
const canEdit = canPerform(permittedActions, 'workflow:update');
|
|
13
13
|
const canRun = canPerform(permittedActions, 'workflow:run');
|
|
14
14
|
// The host owns the share UI (identity/roles/transport) via the slot; we only
|
|
@@ -55,7 +55,7 @@ export function WorkflowDashboard({ defaultView = 'runs', view: controlledView,
|
|
|
55
55
|
if (selectedExecutionId) {
|
|
56
56
|
return (_jsxs("div", { className: cn('flex h-full flex-col', classNames?.root, className), "data-workflow-ui": "", children: [_jsx("div", { className: "flex items-center border-b border-[var(--wui-border)] bg-[var(--wui-bg)] px-4 py-2.5", children: _jsxs("button", { onClick: () => setSelectedExecutionId(null), className: "flex items-center gap-1.5 text-[13px] font-medium text-[var(--wui-primary)] transition-colors hover:opacity-80", children: [_jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "m15 18-6-6 6-6" }) }), "Back to ", activeView === 'runs' ? 'Runs' : 'Dashboard'] }) }), _jsx("div", { className: "flex-1 overflow-hidden", children: _jsx(ExecutionViewer, { executionId: selectedExecutionId, workflowConfig: workflowConfig }) })] }));
|
|
57
57
|
}
|
|
58
|
-
return (_jsxs("div", { className: cn('flex h-full flex-col', classNames?.root, className), "data-workflow-ui": "", children: [_jsxs("div", { className: cn('flex items-center gap-1 border-b border-[var(--wui-border)] bg-[var(--wui-bg)] px-4', classNames?.tabs), children: [_jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M12 20h9" }), _jsx("path", { d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z" })] }), label: "Runs", active: activeView === 'runs', onClick: () => setActiveView('runs') }), _jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "7", height: "7", x: "3", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "3", y: "14", rx: "1" })] }), label: "Builder", active: activeView === 'builder', onClick: () => setActiveView('builder') }), workflowId && (canShare || canRun) && (_jsxs("div", { className: "ml-auto flex items-center gap-2", children: [canShare && (_jsxs("button", { onClick: () => setShareOpen(true), className: cn('flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[13px] font-medium transition-colors', 'text-[var(--wui-fg)] hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)]'), children: [_jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "18", cy: "5", r: "3" }), _jsx("circle", { cx: "6", cy: "12", r: "3" }), _jsx("circle", { cx: "18", cy: "19", r: "3" }), _jsx("line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49" }), _jsx("line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49" })] }), "Share"] })), canRun && (_jsxs("button", { onClick: handleRunClick, className: cn('flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[13px] font-semibold transition-colors', 'bg-[var(--wui-primary)] text-[var(--wui-primary-fg)] hover:opacity-90'), children: [_jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }), "Run"] }))] }))] }), workflowId && shareOpen && ShareSlot && (_jsx(ShareSlot, { resourceType: "workflow", resourceId: workflowId, onClose: () => setShareOpen(false) })), _jsxs("div", { className: cn('flex-1 overflow-hidden', classNames?.content), children: [activeView === 'builder' && (_jsx(WorkflowBuilder, { initialConfig: workflowConfig, initialSummary: summary, onSave: onSave, onTestRun: onTestRun, aiBuilderClient: aiBuilderClient, readOnly: !canEdit, onSelectStep: onSelectStep })), activeView === 'runs' && (_jsx(RunsView, { workflowId: workflowId, onSelectExecution: onViewRun ?? setSelectedExecutionId }, runKey))] }), showTriggerForm && triggerInputSchema && (_jsx(TriggerFormModal, { inputSchema: triggerInputSchema, onSubmit: handleRun, onClose: () => setShowTriggerForm(false) }))] }));
|
|
58
|
+
return (_jsxs("div", { className: cn('flex h-full flex-col', classNames?.root, className), "data-workflow-ui": "", children: [_jsxs("div", { className: cn('flex items-center gap-1 border-b border-[var(--wui-border)] bg-[var(--wui-bg)] px-4', classNames?.tabs), children: [_jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M12 20h9" }), _jsx("path", { d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z" })] }), label: "Runs", active: activeView === 'runs', onClick: () => setActiveView('runs') }), _jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "7", height: "7", x: "3", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "3", y: "14", rx: "1" })] }), label: "Builder", active: activeView === 'builder', onClick: () => setActiveView('builder') }), workflowId && (canShare || canRun) && (_jsxs("div", { className: "ml-auto flex items-center gap-2", children: [canShare && (_jsxs("button", { onClick: () => setShareOpen(true), className: cn('flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[13px] font-medium transition-colors', 'text-[var(--wui-fg)] hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)]'), children: [_jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "18", cy: "5", r: "3" }), _jsx("circle", { cx: "6", cy: "12", r: "3" }), _jsx("circle", { cx: "18", cy: "19", r: "3" }), _jsx("line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49" }), _jsx("line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49" })] }), "Share"] })), canRun && (_jsxs("button", { onClick: handleRunClick, className: cn('flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[13px] font-semibold transition-colors', 'bg-[var(--wui-primary)] text-[var(--wui-primary-fg)] hover:opacity-90'), children: [_jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }), "Run"] }))] }))] }), workflowId && shareOpen && ShareSlot && (_jsx(ShareSlot, { resourceType: "workflow", resourceId: workflowId, onClose: () => setShareOpen(false) })), _jsxs("div", { className: cn('flex-1 overflow-hidden', classNames?.content), children: [activeView === 'builder' && (_jsx(WorkflowBuilder, { initialConfig: workflowConfig, initialSummary: summary, onSave: onSave, onTestRun: onTestRun, aiBuilderClient: aiBuilderClient, readOnly: !canEdit, onSelectStep: onSelectStep, onDirtyChange: onDirtyChange })), activeView === 'runs' && (_jsx(RunsView, { workflowId: workflowId, onSelectExecution: onViewRun ?? setSelectedExecutionId }, runKey))] }), showTriggerForm && triggerInputSchema && (_jsx(TriggerFormModal, { inputSchema: triggerInputSchema, onSubmit: handleRun, onClose: () => setShowTriggerForm(false) }))] }));
|
|
59
59
|
}
|
|
60
60
|
function TabButton({ icon, label, active, onClick, }) {
|
|
61
61
|
return (_jsxs("button", { onClick: onClick, className: cn('flex items-center gap-2 px-3.5 py-3 text-[13px] font-semibold transition-all duration-100', active
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowDashboard.js","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,EAAE,iBAAiB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowDashboard.js","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowUIProvider.d.ts","sourceRoot":"","sources":["../../../src/components/provider/WorkflowUIProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowUIProvider.d.ts","sourceRoot":"","sources":["../../../src/components/provider/WorkflowUIProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAYlC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBA4BlD"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
4
4
|
import { WorkflowUIContext, } from './workflow-ui-context.js';
|
|
5
|
+
import { LiveEventsProvider } from '../../live/LiveEventsProvider.js';
|
|
5
6
|
const defaultQueryClient = new QueryClient({
|
|
6
7
|
defaultOptions: {
|
|
7
8
|
queries: {
|
|
@@ -29,6 +30,6 @@ export function WorkflowUIProvider({ client, queryClient, slots, classNames, cla
|
|
|
29
30
|
classNames: classNames ?? {},
|
|
30
31
|
}), [client, slots, classNames]);
|
|
31
32
|
const qc = queryClient ?? defaultQueryClient;
|
|
32
|
-
return (_jsx(QueryClientProvider, { client: qc, children: _jsx(WorkflowUIContext.Provider, { value: value, children: _jsx("div", { "data-workflow-ui": "", className: className, children: children }) }) }));
|
|
33
|
+
return (_jsx(QueryClientProvider, { client: qc, children: _jsx(WorkflowUIContext.Provider, { value: value, children: _jsx(LiveEventsProvider, { client: client, children: _jsx("div", { "data-workflow-ui": "", className: className, children: children }) }) }) }));
|
|
33
34
|
}
|
|
34
35
|
//# sourceMappingURL=WorkflowUIProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowUIProvider.js","sourceRoot":"","sources":["../../../src/components/provider/WorkflowUIProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowUIProvider.js","sourceRoot":"","sources":["../../../src/components/provider/WorkflowUIProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,MAAM,kBAAkB,GAAG,IAAI,WAAW,CAAC;IACzC,cAAc,EAAE;QACd,OAAO,EAAE;YACP,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,CAAC;SACT;KACF;CACF,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,MAAM,EACN,WAAW,EACX,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAQ,GACyC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC;QACL,MAAM;QACN,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,UAAU,EAAE,UAAU,IAAI,EAAE;KAC7B,CAAC,EACF,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAC5B,CAAC;IAEF,MAAM,EAAE,GAAG,WAAW,IAAI,kBAAkB,CAAC;IAE7C,OAAO,CACL,KAAC,mBAAmB,IAAC,MAAM,EAAE,EAAE,YAC7B,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAMtC,KAAC,kBAAkB,IAAC,MAAM,EAAE,MAAM,YAChC,kCAAsB,EAAE,EAAC,SAAS,EAAE,SAAS,YAC1C,QAAQ,GACL,GACa,GACM,GACT,CACvB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowApp.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowApp.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowApp.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowApp.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAUrE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B;+DAC2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC;wFACoF;IACpF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/E,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,kFAAkF;IAClF,aAAa,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsCD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,MAAM,EACN,UAAU,EACV,eAAe,EACf,OAAO,EACP,aAAa,EACb,YAAY,EACZ,SAAS,GACV,EAAE,gBAAgB,+BAiPlB"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useRef, useState, } from 'react';
|
|
3
3
|
import { ArrowLeft } from 'lucide-react';
|
|
4
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
4
5
|
import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
|
|
6
|
+
import { useWorkflowDetail, wfKeys } from '../../hooks/queries.js';
|
|
7
|
+
import { useRemoteAdoption } from '../../live/use-remote-adoption.js';
|
|
5
8
|
import { WorkflowHome } from './WorkflowHome.js';
|
|
6
9
|
import {} from './WorkflowBrowser.js';
|
|
7
10
|
import { WorkflowDashboard } from '../dashboard/WorkflowDashboard.js';
|
|
@@ -45,7 +48,7 @@ export function WorkflowApp({ path, search, onNavigate, aiBuilderClient, onToast
|
|
|
45
48
|
// The URL carries only the leaf folder id; the full breadcrumb lives here and is
|
|
46
49
|
// reconciled with the id on back/forward/deep-link below.
|
|
47
50
|
const [folderCrumbs, setFolderCrumbs] = useState([]);
|
|
48
|
-
const
|
|
51
|
+
const queryClient = useQueryClient();
|
|
49
52
|
const folderId = route.kind === 'home' ? route.folderId : undefined;
|
|
50
53
|
useEffect(() => {
|
|
51
54
|
setFolderCrumbs((prev) => {
|
|
@@ -60,32 +63,28 @@ export function WorkflowApp({ path, search, onNavigate, aiBuilderClient, onToast
|
|
|
60
63
|
});
|
|
61
64
|
}, [folderId]);
|
|
62
65
|
const workflowId = route.kind === 'workflow' ? route.workflowId : undefined;
|
|
63
|
-
|
|
66
|
+
// React Query replaces the hand-rolled fetch, and the sequence counter that
|
|
67
|
+
// guarded it: it discards superseded fetches for a key on its own, and — the
|
|
68
|
+
// reason for the change — gives a change notification something to invalidate.
|
|
69
|
+
const { data: detail } = useWorkflowDetail(workflowId);
|
|
70
|
+
// ─── Adopting a change made somewhere else ───
|
|
71
|
+
//
|
|
72
|
+
// The builder seeds its state once, at mount, so a refetched config does not
|
|
73
|
+
// reach it and cannot silently overwrite what someone is typing. Adopting one
|
|
74
|
+
// therefore means remounting, which is exactly the decision that has to depend
|
|
75
|
+
// on whether there is unsaved work:
|
|
76
|
+
//
|
|
77
|
+
// - clean → remount. The user sees the new version, and loses nothing.
|
|
78
|
+
// - dirty → leave it alone and say so. Replacing the canvas under someone
|
|
79
|
+
// mid-edit is the one outcome worse than being slightly stale.
|
|
80
|
+
//
|
|
81
|
+
// Either way the cache is invalidated, so the fresh copy is ready the moment
|
|
82
|
+
// the user asks for it.
|
|
83
|
+
const builderDirty = useRef(false);
|
|
84
|
+
const { epoch: builderEpoch, stale: staleRemote, adopt: adoptRemote, clearStale, } = useRemoteAdoption(workflowId, () => builderDirty.current);
|
|
64
85
|
useEffect(() => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
const seq = ++fetchSeq.current;
|
|
70
|
-
void (async () => {
|
|
71
|
-
const wf = await client.workflows.get(workflowId);
|
|
72
|
-
if (seq !== fetchSeq.current)
|
|
73
|
-
return;
|
|
74
|
-
const meta = wf.metadata
|
|
75
|
-
? JSON.parse(wf.metadata)
|
|
76
|
-
: {};
|
|
77
|
-
const config = wf.config
|
|
78
|
-
? JSON.parse(wf.config)
|
|
79
|
-
: undefined;
|
|
80
|
-
setDetail({
|
|
81
|
-
workflowId,
|
|
82
|
-
name: meta.name ?? workflowId,
|
|
83
|
-
config,
|
|
84
|
-
...(wf.summary != null ? { summary: wf.summary } : {}),
|
|
85
|
-
...(wf.permittedActions ? { permittedActions: wf.permittedActions } : {}),
|
|
86
|
-
});
|
|
87
|
-
})();
|
|
88
|
-
}, [workflowId, client]);
|
|
86
|
+
builderDirty.current = false;
|
|
87
|
+
}, [workflowId]);
|
|
89
88
|
const goTab = useCallback((tab) => onNavigate(tabToPath(tab)), [onNavigate]);
|
|
90
89
|
const goFolder = useCallback((crumbs) => {
|
|
91
90
|
setFolderCrumbs(crumbs);
|
|
@@ -102,8 +101,12 @@ export function WorkflowApp({ path, search, onNavigate, aiBuilderClient, onToast
|
|
|
102
101
|
if (!detail)
|
|
103
102
|
return;
|
|
104
103
|
await client.workflows.update(detail.workflowId, { config });
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
// Write through, rather than invalidating: we already know what the server
|
|
105
|
+
// now holds, and a refetch here would race the builder's own state. The
|
|
106
|
+
// change event this save causes carries our origin and is dropped before it
|
|
107
|
+
// reaches the subscription above, so this is the only update that lands.
|
|
108
|
+
queryClient.setQueryData(wfKeys.workflow(detail.workflowId), (prev) => prev ? { ...prev, config, ...(summary != null ? { summary } : {}) } : prev);
|
|
109
|
+
}, [client, detail, queryClient]);
|
|
107
110
|
let detailView = null;
|
|
108
111
|
if (route.kind === 'run') {
|
|
109
112
|
detailView = (_jsx(ExecutionViewer, { executionId: route.executionId, selectedStepId: route.nodeId ?? null, viewMode: search?.view ?? 'tabs', onViewModeChange: (m) => onNavigate(runToPath(route.executionId, route.nodeId), { view: m === 'graph' ? 'graph' : undefined }, true), onSelectStep: (node, replace) => onNavigate(runToPath(route.executionId, node ?? undefined), { view: search?.view }, replace ?? false), onBack: () => {
|
|
@@ -113,9 +116,20 @@ export function WorkflowApp({ path, search, onNavigate, aiBuilderClient, onToast
|
|
|
113
116
|
}
|
|
114
117
|
else if (route.kind === 'workflow') {
|
|
115
118
|
detailView =
|
|
116
|
-
detail?.workflowId === route.workflowId ? (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-3 border-b border-[var(--wui-border)] bg-[var(--wui-bg)] px-5 py-2.5", children: [_jsx("button", { type: "button", "aria-label": "Back", onClick: backToBrowser, className: "grid h-7 w-7 place-items-center rounded-md text-[var(--wui-fg-muted)] transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] hover:text-[var(--wui-fg)]", children: _jsx(ArrowLeft, { className: "h-3.5 w-3.5", strokeWidth: 2 }) }), _jsxs("nav", { className: "flex min-w-0 items-center gap-1 text-[13px] text-[var(--wui-fg-muted)]", children: [_jsx("button", { type: "button", onClick: () => goToCrumb(-1), className: "rounded-md px-1.5 py-0.5 transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] hover:text-[var(--wui-fg)]", children: "Workflows" }), folderCrumbs.map((seg, i) => (_jsxs("span", { className: "flex min-w-0 items-center gap-1", children: [_jsx("span", { className: "select-none text-[var(--wui-fg-muted)]/60", children: "\u203A" }), _jsx("button", { type: "button", onClick: () => goToCrumb(i), className: "max-w-[24ch] truncate rounded-md px-1.5 py-0.5 transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] hover:text-[var(--wui-fg)]", title: seg.name, children: seg.name })] }, seg.id))), _jsxs("span", { className: "flex min-w-0 items-center gap-1", children: [_jsx("span", { className: "select-none text-[var(--wui-fg-muted)]/60", children: "\u203A" }), _jsx("span", { className: "max-w-[32ch] truncate rounded-md px-1.5 py-0.5 font-medium text-[var(--wui-fg)]", title: detail.name, children: detail.name })] })] })] }),
|
|
119
|
+
detail?.workflowId === route.workflowId ? (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-3 border-b border-[var(--wui-border)] bg-[var(--wui-bg)] px-5 py-2.5", children: [_jsx("button", { type: "button", "aria-label": "Back", onClick: backToBrowser, className: "grid h-7 w-7 place-items-center rounded-md text-[var(--wui-fg-muted)] transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] hover:text-[var(--wui-fg)]", children: _jsx(ArrowLeft, { className: "h-3.5 w-3.5", strokeWidth: 2 }) }), _jsxs("nav", { className: "flex min-w-0 items-center gap-1 text-[13px] text-[var(--wui-fg-muted)]", children: [_jsx("button", { type: "button", onClick: () => goToCrumb(-1), className: "rounded-md px-1.5 py-0.5 transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] hover:text-[var(--wui-fg)]", children: "Workflows" }), folderCrumbs.map((seg, i) => (_jsxs("span", { className: "flex min-w-0 items-center gap-1", children: [_jsx("span", { className: "select-none text-[var(--wui-fg-muted)]/60", children: "\u203A" }), _jsx("button", { type: "button", onClick: () => goToCrumb(i), className: "max-w-[24ch] truncate rounded-md px-1.5 py-0.5 transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] hover:text-[var(--wui-fg)]", title: seg.name, children: seg.name })] }, seg.id))), _jsxs("span", { className: "flex min-w-0 items-center gap-1", children: [_jsx("span", { className: "select-none text-[var(--wui-fg-muted)]/60", children: "\u203A" }), _jsx("span", { className: "max-w-[32ch] truncate rounded-md px-1.5 py-0.5 font-medium text-[var(--wui-fg)]", title: detail.name, children: detail.name })] })] })] }), staleRemote && (_jsxs("div", { role: "status", className: "flex items-center justify-between gap-3 border-b border-[var(--wui-border)] bg-[var(--wui-bg-muted)] px-4 py-2 text-[13px] text-[var(--wui-fg)]", children: [_jsx("span", { children: "This workflow was changed somewhere else. Your unsaved edits are still here." }), _jsx("button", { type: "button", onClick: adoptRemote, className: "shrink-0 rounded-[var(--wui-radius-sm)] bg-[var(--wui-primary)] px-2.5 py-1 text-[12px] font-medium text-[var(--wui-primary-fg)] hover:bg-[var(--wui-primary-hover)]", children: "Discard mine and reload" })] })), _jsx("div", { className: "flex-1 overflow-hidden", children: _jsx(WorkflowDashboard
|
|
120
|
+
// Remounting is how a change made elsewhere is adopted: the builder
|
|
121
|
+
// seeds its state at mount and deliberately ignores a changed
|
|
122
|
+
// `initialConfig` thereafter, so that a background refetch can never
|
|
123
|
+
// overwrite an edit in progress.
|
|
124
|
+
, { view: route.view, onViewChange: (v) => onNavigate(v === 'builder' ? `w/${route.workflowId}/edit` : `w/${route.workflowId}`), onViewRun: openRun, workflowId: detail.workflowId, workflowConfig: detail.config, summary: detail.summary, onSave: handleSave, onDirtyChange: (dirty) => {
|
|
125
|
+
builderDirty.current = dirty;
|
|
126
|
+
// Saving clears the dirty flag, and with it any warning that was
|
|
127
|
+
// only waiting on unsaved work.
|
|
128
|
+
if (!dirty)
|
|
129
|
+
clearStale();
|
|
130
|
+
}, ...(onSelectStep ? { onSelectStep } : {}), ...(aiBuilderClient ? { aiBuilderClient } : {}), ...(detail.permittedActions
|
|
117
131
|
? { permittedActions: detail.permittedActions }
|
|
118
|
-
: {}) }) })] })) : (_jsx("div", { className: "flex h-full items-center justify-center text-[13px] text-[var(--wui-fg-muted)]", children: "Loading\u2026" }));
|
|
132
|
+
: {}) }, `${route.workflowId}:${String(builderEpoch)}`) })] })) : (_jsx("div", { className: "flex h-full items-center justify-center text-[13px] text-[var(--wui-fg-muted)]", children: "Loading\u2026" }));
|
|
119
133
|
}
|
|
120
134
|
const tab = route.kind === 'home' ? route.tab : 'workflows';
|
|
121
135
|
return (_jsx(WorkflowHome, { ...(className ? { className } : {}), tab: tab, onTabChange: goTab, path: folderCrumbs, onPathChange: goFolder, onSelectWorkflow: openWorkflow, onViewRun: (id) => openRun(id), approvalId: route.kind === 'home' && route.tab === 'approvals' ? (route.approvalId ?? null) : null, onApprovalSelect: (id) => onNavigate(id ? `approvals/${id}` : 'approvals'), ...(onToast ? { onToast } : {}), ...(headerActions ? { headerActions } : {}), ...(detailView ? { detailView } : {}) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowApp.js","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowApp.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,SAAS,EACT,MAAM,EACN,QAAQ,GAET,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowApp.js","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The query layer: cache keys, and the reads that live under them.
|
|
3
|
+
*
|
|
4
|
+
* These exist so that a change notification has something to invalidate. The
|
|
5
|
+
* package previously fetched with `useEffect` + `useState` in every component,
|
|
6
|
+
* which cannot be told "that is stale now" from outside — a notification would
|
|
7
|
+
* have had nowhere to land. React Query was already a declared peer dependency;
|
|
8
|
+
* until now nothing used it.
|
|
9
|
+
*/
|
|
10
|
+
import { type UseQueryResult } from '@tanstack/react-query';
|
|
11
|
+
import type { WorkflowConfig, Action } from '@xyne/workflow-sdk';
|
|
12
|
+
import type { WorkflowClient } from '@xyne/workflow-sdk/client';
|
|
13
|
+
/**
|
|
14
|
+
* Cache keys, in one place.
|
|
15
|
+
*
|
|
16
|
+
* Hierarchical and built from `all` downward so a broad invalidation reaches
|
|
17
|
+
* everything beneath it. Hand-written key arrays scattered across components are
|
|
18
|
+
* how invalidation silently stops matching.
|
|
19
|
+
*/
|
|
20
|
+
export declare const wfKeys: {
|
|
21
|
+
readonly all: readonly ["xyne-workflow-ui"];
|
|
22
|
+
readonly workflow: (workflowId: string) => readonly ["xyne-workflow-ui", "workflow", string];
|
|
23
|
+
readonly workflowList: (folderId?: string) => readonly ["xyne-workflow-ui", "workflow-list", string | null];
|
|
24
|
+
};
|
|
25
|
+
/** A workflow, with its JSON columns already parsed. */
|
|
26
|
+
export interface WorkflowDetail {
|
|
27
|
+
workflowId: string;
|
|
28
|
+
name: string;
|
|
29
|
+
config: WorkflowConfig | undefined;
|
|
30
|
+
summary?: string;
|
|
31
|
+
permittedActions?: readonly Action[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* `metadata` and `config` are stored as JSON strings, so every reader would
|
|
35
|
+
* otherwise parse them itself — and disagree about what a malformed one means.
|
|
36
|
+
*/
|
|
37
|
+
export declare function toWorkflowDetail(workflowId: string, record: Awaited<ReturnType<WorkflowClient['workflows']['get']>>): WorkflowDetail;
|
|
38
|
+
/**
|
|
39
|
+
* Read one workflow.
|
|
40
|
+
*
|
|
41
|
+
* Pass `undefined` to read nothing — the query stays disabled rather than the
|
|
42
|
+
* caller having to branch around the hook, which it could not do anyway.
|
|
43
|
+
*/
|
|
44
|
+
export declare function useWorkflowDetail(workflowId: string | undefined): UseQueryResult<WorkflowDetail>;
|
|
45
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/hooks/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE;;;;;;GAMG;AACH,eAAO,MAAM,MAAM;;oCAEM,MAAM;uCACH,MAAM;CAExB,CAAC;AAEX,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAC9D,cAAc,CAehB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,cAAc,CAAC,cAAc,CAAC,CAQhC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The query layer: cache keys, and the reads that live under them.
|
|
3
|
+
*
|
|
4
|
+
* These exist so that a change notification has something to invalidate. The
|
|
5
|
+
* package previously fetched with `useEffect` + `useState` in every component,
|
|
6
|
+
* which cannot be told "that is stale now" from outside — a notification would
|
|
7
|
+
* have had nowhere to land. React Query was already a declared peer dependency;
|
|
8
|
+
* until now nothing used it.
|
|
9
|
+
*/
|
|
10
|
+
import { useQuery } from '@tanstack/react-query';
|
|
11
|
+
import { useWorkflowUI } from '../components/provider/workflow-ui-context.js';
|
|
12
|
+
/**
|
|
13
|
+
* Cache keys, in one place.
|
|
14
|
+
*
|
|
15
|
+
* Hierarchical and built from `all` downward so a broad invalidation reaches
|
|
16
|
+
* everything beneath it. Hand-written key arrays scattered across components are
|
|
17
|
+
* how invalidation silently stops matching.
|
|
18
|
+
*/
|
|
19
|
+
export const wfKeys = {
|
|
20
|
+
all: ['xyne-workflow-ui'],
|
|
21
|
+
workflow: (workflowId) => [...wfKeys.all, 'workflow', workflowId],
|
|
22
|
+
workflowList: (folderId) => [...wfKeys.all, 'workflow-list', folderId ?? null],
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* `metadata` and `config` are stored as JSON strings, so every reader would
|
|
26
|
+
* otherwise parse them itself — and disagree about what a malformed one means.
|
|
27
|
+
*/
|
|
28
|
+
export function toWorkflowDetail(workflowId, record) {
|
|
29
|
+
const meta = record.metadata
|
|
30
|
+
? JSON.parse(record.metadata)
|
|
31
|
+
: {};
|
|
32
|
+
const config = record.config
|
|
33
|
+
? JSON.parse(record.config)
|
|
34
|
+
: undefined;
|
|
35
|
+
return {
|
|
36
|
+
workflowId,
|
|
37
|
+
name: meta.name ?? workflowId,
|
|
38
|
+
config,
|
|
39
|
+
...(record.summary != null ? { summary: record.summary } : {}),
|
|
40
|
+
...(record.permittedActions ? { permittedActions: record.permittedActions } : {}),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read one workflow.
|
|
45
|
+
*
|
|
46
|
+
* Pass `undefined` to read nothing — the query stays disabled rather than the
|
|
47
|
+
* caller having to branch around the hook, which it could not do anyway.
|
|
48
|
+
*/
|
|
49
|
+
export function useWorkflowDetail(workflowId) {
|
|
50
|
+
const { client } = useWorkflowUI();
|
|
51
|
+
return useQuery({
|
|
52
|
+
queryKey: wfKeys.workflow(workflowId ?? ''),
|
|
53
|
+
queryFn: async () => toWorkflowDetail(workflowId, await client.workflows.get(workflowId)),
|
|
54
|
+
enabled: Boolean(workflowId),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/hooks/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAuB,MAAM,uBAAuB,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE,CAAC,kBAAkB,CAAU;IAClC,QAAQ,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAU;IAClF,YAAY,EAAE,CAAC,QAAiB,EAAE,EAAE,CAClC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAU;CACrD,CAAC;AAWX;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,MAA+D;IAE/D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;QAC1B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAuB;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QAC1B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAoB;QAC/C,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,UAAU;QACV,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU;QAC7B,MAAM;QACN,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;IAEnC,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAW,EAAE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAW,CAAC,CAAC;QAC3F,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
export { WorkflowUIProvider, useWorkflowUI, useSlot, cn, StatusBadge, EmptyState, LoadingSpinner, ErrorBoundary, WorkflowBuilder, computeLayout, SchemaFormRenderer, RunsView, RunsTable, RunsFilters, ExecutionViewer, ExecutionTree, ExecutionHeader, StepDetailPanel, SummaryPanel, SidePanelShell, PauseInteractionPanel, SchemaAwareRenderer, WorkflowDashboard, SummaryButton, SummaryDialog, MarkdownView, CitationArrow, CitationMarks, AppShell, Sidebar, Breadcrumb, PageHeader, AutomationCard, AutomationListView, CreateWorkflowDialog, AnalyticsDashboard, WorkflowBrowser, WorkflowHome, WorkflowApp, CredentialVault, } from './components/index.js';
|
|
20
20
|
export type { WorkflowUIConfig, StatusBadgeProps, StatusVariant, EmptyStateProps, LoadingSpinnerProps, ErrorBoundaryProps, WorkflowBuilderProps, LayoutNode, LayoutEdge, LayoutResult, SchemaFormRendererProps, RunsViewProps, RunsTableProps, RunsFiltersProps, ExecutionViewerProps, ExecutionTreeProps, ExecutionHeaderProps, StepDetailPanelProps, SummaryPanelProps, SidePanelShellProps, PauseInteractionPanelProps, SchemaAwareRendererProps, WorkflowDashboardProps, SummaryButtonProps, SummaryDialogProps, MarkdownViewProps, CitationArrowProps, CitationMarksProps, AppShellProps, SidebarProps, SidebarItem, BreadcrumbProps, BreadcrumbItem, PageHeaderProps, AutomationCardProps, AutomationListViewProps, CreateWorkflowDialogProps, AnalyticsDashboardProps, WorkflowBrowserProps, FolderCrumb, WorkflowHomeProps, WorkflowHomeTab, WorkflowAppProps, CredentialVaultProps, } from './components/index.js';
|
|
21
21
|
export { canPerform, isPermissionDenied, friendlyMutationError } from './utils/permissions.js';
|
|
22
|
+
export { useLiveWorkflow, useWorkflowChanges } from './live/use-live-workflow.js';
|
|
23
|
+
export { useLiveContext } from './live/live-context.js';
|
|
24
|
+
export type { LiveChange, LiveContextValue } from './live/live-context.js';
|
|
25
|
+
export { wfKeys, useWorkflowDetail, toWorkflowDetail } from './hooks/queries.js';
|
|
26
|
+
export type { WorkflowDetail } from './hooks/queries.js';
|
|
22
27
|
export { useAnalytics } from './hooks/use-analytics.js';
|
|
23
28
|
export { useApprovalCount } from './hooks/use-approval-count.js';
|
|
24
29
|
export { ApprovalsView } from './components/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAEL,kBAAkB,EAClB,aAAa,EACb,OAAO,EAEP,EAAE,EACF,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EAEb,eAAe,EACf,aAAa,EAEb,kBAAkB,EAElB,QAAQ,EACR,SAAS,EACT,WAAW,EAEX,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EAEnB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EAEb,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,EAEV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EAEpB,kBAAkB,EAElB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAElB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EAEf,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EAEzB,uBAAuB,EAEvB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAEL,kBAAkB,EAClB,aAAa,EACb,OAAO,EAEP,EAAE,EACF,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EAEb,eAAe,EACf,aAAa,EAEb,kBAAkB,EAElB,QAAQ,EACR,SAAS,EACT,WAAW,EAEX,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EAEnB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EAEb,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU,EAEV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EAEpB,kBAAkB,EAElB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAElB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EAEf,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EAEzB,uBAAuB,EAEvB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAS/F,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI3E,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGlG,YAAY,EACV,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EAChC,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -43,6 +43,17 @@ WorkflowBrowser, WorkflowHome, WorkflowApp, CredentialVault, } from './component
|
|
|
43
43
|
// ─── Authorization (UI reflection helpers) ───
|
|
44
44
|
export { canPerform, isPermissionDenied, friendlyMutationError } from './utils/permissions.js';
|
|
45
45
|
// ─── Analytics hooks ───
|
|
46
|
+
// ─── Live change notifications ───
|
|
47
|
+
//
|
|
48
|
+
// The provider owns one multiplexed connection; these are how a component
|
|
49
|
+
// registers interest in it. `useLiveWorkflow` keeps a cached workflow honest on
|
|
50
|
+
// its own; `useWorkflowChanges` is for the cases where refreshing is the wrong
|
|
51
|
+
// answer, such as an editor holding unsaved work.
|
|
52
|
+
export { useLiveWorkflow, useWorkflowChanges } from './live/use-live-workflow.js';
|
|
53
|
+
export { useLiveContext } from './live/live-context.js';
|
|
54
|
+
// Query keys and reads, so a host can prime or invalidate the same cache the
|
|
55
|
+
// components use.
|
|
56
|
+
export { wfKeys, useWorkflowDetail, toWorkflowDetail } from './hooks/queries.js';
|
|
46
57
|
export { useAnalytics } from './hooks/use-analytics.js';
|
|
47
58
|
// ─── Approvals ───
|
|
48
59
|
export { useApprovalCount } from './hooks/use-approval-count.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qBAAqB;AACrB,OAAO;AACL,WAAW;AACX,kBAAkB,EAClB,aAAa,EACb,OAAO;AACP,SAAS;AACT,EAAE,EACF,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa;AACb,UAAU;AACV,eAAe,EACf,aAAa;AACb,cAAc;AACd,kBAAkB;AAClB,OAAO;AACP,QAAQ,EACR,SAAS,EACT,WAAW;AACX,YAAY;AACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,mBAAmB;AACnB,YAAY;AACZ,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa;AACb,SAAS;AACT,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU;AACV,cAAc;AACd,cAAc,EACd,kBAAkB,EAClB,oBAAoB;AACpB,YAAY;AACZ,kBAAkB;AAClB,mBAAmB;AACnB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAqD/B,gDAAgD;AAChD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/F,0BAA0B;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AActD,oEAAoE;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qBAAqB;AACrB,OAAO;AACL,WAAW;AACX,kBAAkB,EAClB,aAAa,EACb,OAAO;AACP,SAAS;AACT,EAAE,EACF,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa;AACb,UAAU;AACV,eAAe,EACf,aAAa;AACb,cAAc;AACd,kBAAkB;AAClB,OAAO;AACP,QAAQ,EACR,SAAS,EACT,WAAW;AACX,YAAY;AACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,mBAAmB;AACnB,YAAY;AACZ,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa;AACb,SAAS;AACT,QAAQ,EACR,OAAO,EACP,UAAU,EACV,UAAU;AACV,cAAc;AACd,cAAc,EACd,kBAAkB,EAClB,oBAAoB;AACpB,YAAY;AACZ,kBAAkB;AAClB,mBAAmB;AACnB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAqD/B,gDAAgD;AAChD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/F,0BAA0B;AAC1B,oCAAoC;AACpC,EAAE;AACF,0EAA0E;AAC1E,gFAAgF;AAChF,+EAA+E;AAC/E,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,6EAA6E;AAC7E,kBAAkB;AAClB,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AActD,oEAAoE;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { WorkflowClient } from '@xyne/workflow-sdk/client';
|
|
3
|
+
/**
|
|
4
|
+
* Owns the single change-notification connection for everything below it.
|
|
5
|
+
*
|
|
6
|
+
* One connection, not one per component. Browsers cap concurrent connections per
|
|
7
|
+
* origin (six, on HTTP/1.1), and a screen showing a list, a builder and a run
|
|
8
|
+
* would spend most of that budget on streams that could share one.
|
|
9
|
+
*
|
|
10
|
+
* Membership is reconciled from a registry rather than driven by props: watchers
|
|
11
|
+
* come and go with navigation, and the connection should follow them without any
|
|
12
|
+
* component having to know about the others.
|
|
13
|
+
*/
|
|
14
|
+
export declare function LiveEventsProvider({ client, children, }: {
|
|
15
|
+
client: WorkflowClient;
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
}): React.JSX.Element;
|
|
18
|
+
//# sourceMappingURL=LiveEventsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveEventsProvider.d.ts","sourceRoot":"","sources":["../../src/live/LiveEventsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAYhE;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAwGA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { LiveContext } from './live-context.js';
|
|
4
|
+
/**
|
|
5
|
+
* How long the watched set must hold still before the connection is rebuilt.
|
|
6
|
+
*
|
|
7
|
+
* Mounting a screen registers several watchers in the same tick, and navigation
|
|
8
|
+
* unregisters a batch and registers another. Reconnecting on each would open and
|
|
9
|
+
* discard a connection per component; waiting for the set to settle opens one.
|
|
10
|
+
*/
|
|
11
|
+
const RECONCILE_DELAY_MS = 150;
|
|
12
|
+
/**
|
|
13
|
+
* Owns the single change-notification connection for everything below it.
|
|
14
|
+
*
|
|
15
|
+
* One connection, not one per component. Browsers cap concurrent connections per
|
|
16
|
+
* origin (six, on HTTP/1.1), and a screen showing a list, a builder and a run
|
|
17
|
+
* would spend most of that budget on streams that could share one.
|
|
18
|
+
*
|
|
19
|
+
* Membership is reconciled from a registry rather than driven by props: watchers
|
|
20
|
+
* come and go with navigation, and the connection should follow them without any
|
|
21
|
+
* component having to know about the others.
|
|
22
|
+
*/
|
|
23
|
+
export function LiveEventsProvider({ client, children, }) {
|
|
24
|
+
const registry = React.useRef(new Map());
|
|
25
|
+
const timer = React.useRef(undefined);
|
|
26
|
+
// Sorted, comma-joined: a stable string, so an unchanged set cannot re-render
|
|
27
|
+
// or re-subscribe just because a new array was allocated.
|
|
28
|
+
const [topicKey, setTopicKey] = React.useState('');
|
|
29
|
+
const [connected, setConnected] = React.useState(false);
|
|
30
|
+
const reconcile = React.useCallback(() => {
|
|
31
|
+
if (timer.current !== undefined)
|
|
32
|
+
clearTimeout(timer.current);
|
|
33
|
+
timer.current = setTimeout(() => {
|
|
34
|
+
const next = [...registry.current.keys()].sort().join(',');
|
|
35
|
+
setTopicKey((prev) => (prev === next ? prev : next));
|
|
36
|
+
}, RECONCILE_DELAY_MS);
|
|
37
|
+
}, []);
|
|
38
|
+
const watch = React.useCallback((workflowId, listener) => {
|
|
39
|
+
let listeners = registry.current.get(workflowId);
|
|
40
|
+
if (!listeners) {
|
|
41
|
+
listeners = new Set();
|
|
42
|
+
registry.current.set(workflowId, listeners);
|
|
43
|
+
}
|
|
44
|
+
const own = listeners;
|
|
45
|
+
own.add(listener);
|
|
46
|
+
reconcile();
|
|
47
|
+
return () => {
|
|
48
|
+
// Identity guard: this handle may outlive the entry it created, and must
|
|
49
|
+
// not evict whatever replaced it.
|
|
50
|
+
if (registry.current.get(workflowId) !== own)
|
|
51
|
+
return;
|
|
52
|
+
own.delete(listener);
|
|
53
|
+
if (own.size === 0)
|
|
54
|
+
registry.current.delete(workflowId);
|
|
55
|
+
reconcile();
|
|
56
|
+
};
|
|
57
|
+
}, [reconcile]);
|
|
58
|
+
const emit = React.useCallback((workflowId, change) => {
|
|
59
|
+
const listeners = registry.current.get(workflowId);
|
|
60
|
+
if (!listeners)
|
|
61
|
+
return;
|
|
62
|
+
// Snapshot: a listener may unregister itself while being notified.
|
|
63
|
+
for (const listener of [...listeners])
|
|
64
|
+
listener(change);
|
|
65
|
+
}, []);
|
|
66
|
+
React.useEffect(() => {
|
|
67
|
+
if (topicKey === '') {
|
|
68
|
+
setConnected(false);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const workflows = topicKey.split(',');
|
|
72
|
+
const stop = client.events.subscribe({ workflows }, {
|
|
73
|
+
onEvent: (event) => {
|
|
74
|
+
if (event.event !== 'workflow_changed')
|
|
75
|
+
return;
|
|
76
|
+
const { data } = event;
|
|
77
|
+
// Drop the echo of our own write. Suppressed here, once, rather than in
|
|
78
|
+
// every consumer: an editor that cannot tell its own save from someone
|
|
79
|
+
// else's reports the user's own work as a conflict.
|
|
80
|
+
if (data.origin && data.origin === client.origin)
|
|
81
|
+
return;
|
|
82
|
+
emit(data.workflowId, {
|
|
83
|
+
workflowId: data.workflowId,
|
|
84
|
+
reason: 'changed',
|
|
85
|
+
change: data.change,
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
onOpen: ({ reconnected }) => {
|
|
89
|
+
setConnected(true);
|
|
90
|
+
if (!reconnected)
|
|
91
|
+
return;
|
|
92
|
+
// Nothing was buffered while we were away, so every watcher re-reads.
|
|
93
|
+
for (const workflowId of [...registry.current.keys()]) {
|
|
94
|
+
emit(workflowId, { workflowId, reason: 'resync' });
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
onError: () => {
|
|
98
|
+
setConnected(false);
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
return () => {
|
|
102
|
+
stop();
|
|
103
|
+
setConnected(false);
|
|
104
|
+
};
|
|
105
|
+
}, [client, topicKey, emit]);
|
|
106
|
+
React.useEffect(() => () => {
|
|
107
|
+
if (timer.current !== undefined)
|
|
108
|
+
clearTimeout(timer.current);
|
|
109
|
+
}, []);
|
|
110
|
+
const value = React.useMemo(() => ({ watch, connected }), [watch, connected]);
|
|
111
|
+
return _jsx(LiveContext.Provider, { value: value, children: children });
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=LiveEventsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveEventsProvider.js","sourceRoot":"","sources":["../../src/live/LiveEventsProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,WAAW,EAA4C,MAAM,mBAAmB,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,GAIT;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAA6B,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAA4C,SAAS,CAAC,CAAC;IACjF,8EAA8E;IAC9E,0DAA0D;IAC1D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3D,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAC7B,CAAC,UAAkB,EAAE,QAAsB,EAAE,EAAE;QAC7C,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,GAAG,GAAG,SAAS,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClB,SAAS,EAAE,CAAC;QAEZ,OAAO,GAAG,EAAE;YACV,yEAAyE;YACzE,kCAAkC;YAClC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG;gBAAE,OAAO;YACrD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;gBAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACxD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC;IACJ,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,UAAkB,EAAE,MAAmC,EAAE,EAAE;QACzF,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,mEAAmE;QACnE,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC;YAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAClC,EAAE,SAAS,EAAE,EACb;YACE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB;oBAAE,OAAO;gBAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,KAA4B,CAAC;gBAE9C,wEAAwE;gBACxE,uEAAuE;gBACvE,oDAAoD;gBACpD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;oBAAE,OAAO;gBAEzD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;gBAC1B,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,IAAI,CAAC,WAAW;oBAAE,OAAO;gBACzB,sEAAsE;gBACtE,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBACtD,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;SACF,CACF,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,IAAI,EAAE,CAAC;YACP,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7B,KAAK,CAAC,SAAS,CACb,GAAG,EAAE,CAAC,GAAG,EAAE;QACT,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAC5B,CAAC,KAAK,EAAE,SAAS,CAAC,CACnB,CAAC;IAEF,OAAO,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAwB,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WorkflowChangeKind } from '@xyne/workflow-sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Why a subscriber is being told to look again.
|
|
4
|
+
*
|
|
5
|
+
* - `changed` — a specific change arrived, and `change` says what kind.
|
|
6
|
+
* - `resync` — the connection came back after a drop. The stream cannot replay,
|
|
7
|
+
* so anything published while it was down is gone: re-read regardless of
|
|
8
|
+
* whether a change was actually missed. The recovery path and the happy path
|
|
9
|
+
* then run the same code, which is the only way the rare one stays correct.
|
|
10
|
+
*/
|
|
11
|
+
export interface LiveChange {
|
|
12
|
+
workflowId: string;
|
|
13
|
+
reason: 'changed' | 'resync';
|
|
14
|
+
change?: WorkflowChangeKind;
|
|
15
|
+
}
|
|
16
|
+
export type LiveListener = (change: LiveChange) => void;
|
|
17
|
+
export interface LiveContextValue {
|
|
18
|
+
/**
|
|
19
|
+
* Register interest in a workflow. Returns a cleanup that deregisters it.
|
|
20
|
+
*
|
|
21
|
+
* Registering is not the same as connecting: the provider pools every watcher
|
|
22
|
+
* into one connection and reopens it when the set settles.
|
|
23
|
+
*/
|
|
24
|
+
watch: (workflowId: string, listener: LiveListener) => () => void;
|
|
25
|
+
/** False while no connection is open — nothing is watched, or it is retrying. */
|
|
26
|
+
connected: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Null when the host has not mounted the live layer. Every consumer degrades to
|
|
30
|
+
* "no live updates" rather than throwing, so a host can leave it off.
|
|
31
|
+
*/
|
|
32
|
+
export declare const LiveContext: import("react").Context<LiveContextValue | null>;
|
|
33
|
+
export declare function useLiveContext(): LiveContextValue | null;
|
|
34
|
+
//# sourceMappingURL=live-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-context.d.ts","sourceRoot":"","sources":["../../src/live/live-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,MAAM,IAAI,CAAC;IAClE,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,kDAA+C,CAAC;AAExE,wBAAgB,cAAc,IAAI,gBAAgB,GAAG,IAAI,CAExD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Null when the host has not mounted the live layer. Every consumer degrades to
|
|
4
|
+
* "no live updates" rather than throwing, so a host can leave it off.
|
|
5
|
+
*/
|
|
6
|
+
export const LiveContext = createContext(null);
|
|
7
|
+
export function useLiveContext() {
|
|
8
|
+
return useContext(LiveContext);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=live-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-context.js","sourceRoot":"","sources":["../../src/live/live-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAgClD;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAExE,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type LiveChange } from './live-context.js';
|
|
2
|
+
/**
|
|
3
|
+
* Be told when a workflow changes somewhere other than here.
|
|
4
|
+
*
|
|
5
|
+
* The low-level hook: it reports, and the caller decides. Most callers want
|
|
6
|
+
* {@link useLiveWorkflow} instead — reach for this one when "refresh" is the
|
|
7
|
+
* wrong answer, as it is in an editor holding unsaved work.
|
|
8
|
+
*
|
|
9
|
+
* A no-op when the host has not mounted the live layer, or while `workflowId` is
|
|
10
|
+
* undefined, so a caller never has to guard the call.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useWorkflowChanges(workflowId: string | undefined, onChange: (change: LiveChange) => void): void;
|
|
13
|
+
/**
|
|
14
|
+
* Keep a workflow's cached copy honest: re-read it whenever it changes elsewhere.
|
|
15
|
+
*
|
|
16
|
+
* Invalidates rather than patching from the event, because the event carries no
|
|
17
|
+
* workflow — deliberately. The re-read goes through the ordinary authorized GET,
|
|
18
|
+
* which is what keeps access control on the read path instead of at a fan-out
|
|
19
|
+
* layer that knows nothing about who is listening.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useLiveWorkflow(workflowId: string | undefined): void;
|
|
22
|
+
//# sourceMappingURL=use-live-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-live-workflow.d.ts","sourceRoot":"","sources":["../../src/live/use-live-workflow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GACrC,IAAI,CAgBN;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAOpE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
3
|
+
import { wfKeys } from '../hooks/queries.js';
|
|
4
|
+
import { useLiveContext } from './live-context.js';
|
|
5
|
+
/**
|
|
6
|
+
* Be told when a workflow changes somewhere other than here.
|
|
7
|
+
*
|
|
8
|
+
* The low-level hook: it reports, and the caller decides. Most callers want
|
|
9
|
+
* {@link useLiveWorkflow} instead — reach for this one when "refresh" is the
|
|
10
|
+
* wrong answer, as it is in an editor holding unsaved work.
|
|
11
|
+
*
|
|
12
|
+
* A no-op when the host has not mounted the live layer, or while `workflowId` is
|
|
13
|
+
* undefined, so a caller never has to guard the call.
|
|
14
|
+
*/
|
|
15
|
+
export function useWorkflowChanges(workflowId, onChange) {
|
|
16
|
+
const live = useLiveContext();
|
|
17
|
+
// Held in a ref so that an inline arrow — which almost every caller passes —
|
|
18
|
+
// does not tear down and reopen the subscription on every render.
|
|
19
|
+
const handler = useRef(onChange);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
handler.current = onChange;
|
|
22
|
+
}, [onChange]);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!live || !workflowId)
|
|
25
|
+
return;
|
|
26
|
+
return live.watch(workflowId, (change) => {
|
|
27
|
+
handler.current(change);
|
|
28
|
+
});
|
|
29
|
+
}, [live, workflowId]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Keep a workflow's cached copy honest: re-read it whenever it changes elsewhere.
|
|
33
|
+
*
|
|
34
|
+
* Invalidates rather than patching from the event, because the event carries no
|
|
35
|
+
* workflow — deliberately. The re-read goes through the ordinary authorized GET,
|
|
36
|
+
* which is what keeps access control on the read path instead of at a fan-out
|
|
37
|
+
* layer that knows nothing about who is listening.
|
|
38
|
+
*/
|
|
39
|
+
export function useLiveWorkflow(workflowId) {
|
|
40
|
+
const queryClient = useQueryClient();
|
|
41
|
+
useWorkflowChanges(workflowId, () => {
|
|
42
|
+
if (!workflowId)
|
|
43
|
+
return;
|
|
44
|
+
void queryClient.invalidateQueries({ queryKey: wfKeys.workflow(workflowId) });
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=use-live-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-live-workflow.js","sourceRoot":"","sources":["../../src/live/use-live-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAA8B,EAC9B,QAAsC;IAEtC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC7B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YACvC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,UAA8B;IAC5D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE;QAClC,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface RemoteAdoption {
|
|
2
|
+
/**
|
|
3
|
+
* Feed into an editor's `key`. It increments only when a change made elsewhere
|
|
4
|
+
* should replace what is on screen — and only once the new copy has actually
|
|
5
|
+
* been read.
|
|
6
|
+
*/
|
|
7
|
+
epoch: number;
|
|
8
|
+
/** A change landed that was deliberately not applied, because of local edits. */
|
|
9
|
+
stale: boolean;
|
|
10
|
+
/** Apply the pending change, discarding local edits. */
|
|
11
|
+
adopt: () => void;
|
|
12
|
+
/** Forget a pending change — call when the local edits are gone. */
|
|
13
|
+
clearStale: () => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Decides when a workflow changed elsewhere should replace what the user is
|
|
17
|
+
* looking at.
|
|
18
|
+
*
|
|
19
|
+
* Two rules, and both are easy to get wrong:
|
|
20
|
+
*
|
|
21
|
+
* 1. **Never remount before the new copy has been read.** `invalidateQueries`
|
|
22
|
+
* resolves when the refetch settles; bumping the epoch any earlier remounts
|
|
23
|
+
* the editor against the copy we already had. Editors here seed from their
|
|
24
|
+
* initial config and ignore it afterwards — deliberately, so a background
|
|
25
|
+
* refetch cannot overwrite someone's typing — so an early remount is not
|
|
26
|
+
* merely premature, it is permanent: the fresh config arrives moments later
|
|
27
|
+
* and has nowhere to go. The event looks delivered, the network shows the new
|
|
28
|
+
* data, and the screen never changes.
|
|
29
|
+
*
|
|
30
|
+
* 2. **Never remount over unsaved work.** Report it instead and let the user
|
|
31
|
+
* choose, via {@link RemoteAdoption.adopt}.
|
|
32
|
+
*/
|
|
33
|
+
export declare function useRemoteAdoption(workflowId: string | undefined, isDirty: () => boolean): RemoteAdoption;
|
|
34
|
+
//# sourceMappingURL=use-remote-adoption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-remote-adoption.d.ts","sourceRoot":"","sources":["../../src/live/use-remote-adoption.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,KAAK,EAAE,OAAO,CAAC;IACf,wDAAwD;IACxD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,oEAAoE;IACpE,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,OAAO,GACrB,cAAc,CAkChB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
3
|
+
import { wfKeys } from '../hooks/queries.js';
|
|
4
|
+
import { useWorkflowChanges } from './use-live-workflow.js';
|
|
5
|
+
/**
|
|
6
|
+
* Decides when a workflow changed elsewhere should replace what the user is
|
|
7
|
+
* looking at.
|
|
8
|
+
*
|
|
9
|
+
* Two rules, and both are easy to get wrong:
|
|
10
|
+
*
|
|
11
|
+
* 1. **Never remount before the new copy has been read.** `invalidateQueries`
|
|
12
|
+
* resolves when the refetch settles; bumping the epoch any earlier remounts
|
|
13
|
+
* the editor against the copy we already had. Editors here seed from their
|
|
14
|
+
* initial config and ignore it afterwards — deliberately, so a background
|
|
15
|
+
* refetch cannot overwrite someone's typing — so an early remount is not
|
|
16
|
+
* merely premature, it is permanent: the fresh config arrives moments later
|
|
17
|
+
* and has nowhere to go. The event looks delivered, the network shows the new
|
|
18
|
+
* data, and the screen never changes.
|
|
19
|
+
*
|
|
20
|
+
* 2. **Never remount over unsaved work.** Report it instead and let the user
|
|
21
|
+
* choose, via {@link RemoteAdoption.adopt}.
|
|
22
|
+
*/
|
|
23
|
+
export function useRemoteAdoption(workflowId, isDirty) {
|
|
24
|
+
const queryClient = useQueryClient();
|
|
25
|
+
const [epoch, setEpoch] = useState(0);
|
|
26
|
+
const [stale, setStale] = useState(false);
|
|
27
|
+
useWorkflowChanges(workflowId, () => {
|
|
28
|
+
if (!workflowId)
|
|
29
|
+
return;
|
|
30
|
+
void queryClient
|
|
31
|
+
.invalidateQueries({ queryKey: wfKeys.workflow(workflowId) })
|
|
32
|
+
.then(() => {
|
|
33
|
+
if (isDirty())
|
|
34
|
+
setStale(true);
|
|
35
|
+
else
|
|
36
|
+
setEpoch((previous) => previous + 1);
|
|
37
|
+
})
|
|
38
|
+
.catch(() => {
|
|
39
|
+
// The refetch failed, so the cache still holds the old copy and there is
|
|
40
|
+
// nothing new to show. The next notification, or a reconnect, retries.
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
const adopt = useCallback(() => {
|
|
44
|
+
setStale(false);
|
|
45
|
+
setEpoch((previous) => previous + 1);
|
|
46
|
+
}, []);
|
|
47
|
+
const clearStale = useCallback(() => {
|
|
48
|
+
setStale(false);
|
|
49
|
+
}, []);
|
|
50
|
+
// A different workflow starts with nothing pending.
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
setStale(false);
|
|
53
|
+
}, [workflowId]);
|
|
54
|
+
return { epoch, stale, adopt, clearStale };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=use-remote-adoption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-remote-adoption.js","sourceRoot":"","sources":["../../src/live/use-remote-adoption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAiB5D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAA8B,EAC9B,OAAsB;IAEtB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1C,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE;QAClC,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,KAAK,WAAW;aACb,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;aAC5D,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,OAAO,EAAE;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;;gBACzB,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,yEAAyE;YACzE,uEAAuE;QACzE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,oDAAoD;IACpD,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC7C,CAAC"}
|