@stigmer/react 3.0.8-dev.20260612122433 → 3.0.8-dev.20260613051837
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/execution/ExecutionProgress.d.ts.map +1 -1
- package/execution/ExecutionProgress.js +5 -1
- package/execution/ExecutionProgress.js.map +1 -1
- package/execution/MessageThread.d.ts +32 -3
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +59 -10
- package/execution/MessageThread.js.map +1 -1
- package/execution/useExecutionStream.d.ts +76 -5
- package/execution/useExecutionStream.d.ts.map +1 -1
- package/execution/useExecutionStream.js +166 -23
- package/execution/useExecutionStream.js.map +1 -1
- package/internal/VirtualizedThread.d.ts +3 -1
- package/internal/VirtualizedThread.d.ts.map +1 -1
- package/internal/VirtualizedThread.js +4 -2
- package/internal/VirtualizedThread.js.map +1 -1
- package/internal/backoff.d.ts +61 -0
- package/internal/backoff.d.ts.map +1 -0
- package/internal/backoff.js +79 -0
- package/internal/backoff.js.map +1 -0
- package/internal/store/conversation-store.d.ts +34 -0
- package/internal/store/conversation-store.d.ts.map +1 -1
- package/internal/store/conversation-store.js +50 -2
- package/internal/store/conversation-store.js.map +1 -1
- package/internal/store/workflow-execution-event-store.d.ts +12 -0
- package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
- package/internal/store/workflow-execution-event-store.js +7 -0
- package/internal/store/workflow-execution-event-store.js.map +1 -1
- package/internal/stream-controller.d.ts +57 -21
- package/internal/stream-controller.d.ts.map +1 -1
- package/internal/stream-controller.js +117 -3
- package/internal/stream-controller.js.map +1 -1
- package/internal/useFetch.d.ts +7 -0
- package/internal/useFetch.d.ts.map +1 -1
- package/internal/useFetch.js +21 -0
- package/internal/useFetch.js.map +1 -1
- package/package.json +4 -4
- package/session/SessionViewer.js +26 -1
- package/session/SessionViewer.js.map +1 -1
- package/session/useSessionConversation.d.ts +41 -4
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +74 -10
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionExecutions.d.ts +17 -1
- package/session/useSessionExecutions.d.ts.map +1 -1
- package/session/useSessionExecutions.js +6 -2
- package/session/useSessionExecutions.js.map +1 -1
- package/src/execution/ExecutionProgress.tsx +12 -0
- package/src/execution/MessageThread.tsx +174 -5
- package/src/execution/__tests__/MessageThread.test.tsx +64 -0
- package/src/execution/__tests__/useExecutionStream.test.tsx +279 -0
- package/src/execution/useExecutionStream.ts +254 -34
- package/src/internal/VirtualizedThread.tsx +7 -1
- package/src/internal/__tests__/backoff.test.ts +99 -0
- package/src/internal/__tests__/stream-controller.test.ts +165 -10
- package/src/internal/__tests__/useFetch.test.tsx +59 -0
- package/src/internal/backoff.ts +100 -0
- package/src/internal/store/__tests__/conversation-store.test.ts +61 -0
- package/src/internal/store/conversation-store.ts +68 -3
- package/src/internal/store/workflow-execution-event-store.ts +22 -0
- package/src/internal/stream-controller.ts +151 -26
- package/src/internal/useFetch.ts +26 -0
- package/src/session/SessionViewer.tsx +89 -0
- package/src/session/__tests__/useSessionConversation.test.tsx +53 -0
- package/src/session/useSessionConversation.ts +121 -15
- package/src/session/useSessionExecutions.ts +23 -1
- package/src/workflow/WorkflowExecutionHeader.tsx +4 -1
- package/src/workflow/WorkflowExecutionTimeline.tsx +2 -1
- package/src/workflow/__tests__/useWorkflowExecutionEventStream.test.tsx +117 -1
- package/src/workflow/execution/useWaterfallEntries.ts +2 -1
- package/src/workflow/useWorkflowExecutionEventStream.ts +122 -41
- package/src/workflow/waterfall/WaterfallTimeline.tsx +2 -1
- package/styles.css +1 -1
- package/workflow/WorkflowExecutionHeader.d.ts.map +1 -1
- package/workflow/WorkflowExecutionHeader.js +3 -1
- package/workflow/WorkflowExecutionHeader.js.map +1 -1
- package/workflow/WorkflowExecutionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowExecutionTimeline.js +1 -1
- package/workflow/WorkflowExecutionTimeline.js.map +1 -1
- package/workflow/execution/useWaterfallEntries.d.ts.map +1 -1
- package/workflow/execution/useWaterfallEntries.js +1 -1
- package/workflow/execution/useWaterfallEntries.js.map +1 -1
- package/workflow/useWorkflowExecutionEventStream.d.ts +32 -4
- package/workflow/useWorkflowExecutionEventStream.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionEventStream.js +75 -32
- package/workflow/useWorkflowExecutionEventStream.js.map +1 -1
- package/workflow/waterfall/WaterfallTimeline.d.ts.map +1 -1
- package/workflow/waterfall/WaterfallTimeline.js +1 -1
- package/workflow/waterfall/WaterfallTimeline.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionHeader.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AAIxG,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAGrH,iDAAiD;AACjD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAuBD,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionHeader.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AAIxG,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAGrH,iDAAiD;AACjD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAuBD,eAAO,MAAM,uBAAuB,oEA8HlC,CAAC"}
|
|
@@ -44,7 +44,9 @@ export const WorkflowExecutionHeader = memo(function WorkflowExecutionHeader({ e
|
|
|
44
44
|
const isRunning = RUNNING_PHASES.has(phase);
|
|
45
45
|
const isPaused = phase === ExecutionPhase.EXECUTION_PAUSED;
|
|
46
46
|
const isFailed = phase === ExecutionPhase.EXECUTION_FAILED;
|
|
47
|
-
const isLive = streamState.stage === "streaming" ||
|
|
47
|
+
const isLive = streamState.stage === "streaming" ||
|
|
48
|
+
streamState.stage === "connecting" ||
|
|
49
|
+
streamState.stage === "reconnecting";
|
|
48
50
|
return (_jsxs("header", { className: cn("flex items-center gap-3 border-b border-border px-4 py-3", className), children: [_jsx(WorkflowExecutionPhaseBadge, { phase: phase }), _jsx("h2", { className: "min-w-0 flex-1 truncate text-sm font-semibold text-foreground", children: name }), duration && (_jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: duration })), costDisplay && (_jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: costDisplay })), isLive && (_jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [_jsxs("span", { className: "relative flex h-1.5 w-1.5", children: [_jsx("span", { className: "absolute inline-flex h-full w-full animate-ping rounded-full bg-success opacity-75" }), _jsx("span", { className: "relative inline-flex h-1.5 w-1.5 rounded-full bg-success" })] }), "Live"] })), _jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [onCompare && TERMINAL_PHASES.has(phase) && (_jsx(ActionButton, { label: "Compare with\u2026", onClick: onCompare, disabled: false })), isRunning && (_jsxs(_Fragment, { children: [_jsx(ActionButton, { label: "Pause", onClick: () => actions.pause(), disabled: actions.isSubmitting }), _jsx(ActionButton, { label: "Cancel", variant: "destructive", onClick: () => actions.cancel(), disabled: actions.isSubmitting })] })), isPaused && (_jsxs(_Fragment, { children: [_jsx(ActionButton, { label: "Resume", onClick: () => actions.resume(), disabled: actions.isSubmitting }), _jsx(ActionButton, { label: "Cancel", variant: "destructive", onClick: () => actions.cancel(), disabled: actions.isSubmitting })] })), isFailed && (_jsxs(_Fragment, { children: [onDiagnose && (_jsx(ActionButton, { label: isDiagnosing ? "Diagnosing…" : "Diagnose", onClick: onDiagnose, disabled: actions.isSubmitting || !!isDiagnosing })), _jsx(ActionButton, { label: "Recover", onClick: () => actions.recover(), disabled: actions.isSubmitting })] })), headerActions && (_jsx("div", { className: "relative flex items-center", children: headerActions }))] })] }));
|
|
49
51
|
});
|
|
50
52
|
function ActionButton({ label, variant, onClick, disabled, }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionHeader.js","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionHeader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AACjG,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAuBhE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAiB;IAC7C,cAAc,CAAC,iBAAiB;IAChC,cAAc,CAAC,qBAAqB;CACrC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAiB;IAC9C,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,gBAAgB;IAC/B,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,oBAAoB;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,SAAS,uBAAuB,CAAC,EAC3E,SAAS,EACT,WAAW,EACX,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,SAAS,GACoB;IAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,cAAc,CAAC,2BAA2B,CAAC;IACpF,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,WAAW,CAAC;IAC/E,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC;IAExD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACvE,OAAO,cAAc,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,IAAI,WAAW,CAAC,kBAAkB,IAAI,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7D,OAAO,cAAc,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,KAAK,cAAc,CAAC,gBAAgB,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,KAAK,cAAc,CAAC,gBAAgB,CAAC;IAC3D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionHeader.js","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionTimeline.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionTimeline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAG/G,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAEnH,mDAAmD;AACnD,MAAM,WAAW,8BAA8B;IAC7C,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,yDAAyD;IACzD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC5D,+DAA+D;IAC/D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionTimeline.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionTimeline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAG/G,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAEnH,mDAAmD;AACnD,MAAM,WAAW,8BAA8B;IAC7C,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,yDAAyD;IACzD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC5D,+DAA+D;IAC/D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,sEAgGpC,CAAC"}
|
|
@@ -36,7 +36,7 @@ export const WorkflowExecutionTimeline = memo(function WorkflowExecutionTimeline
|
|
|
36
36
|
sentinelRef.current.scrollIntoView({ behavior: "smooth", block: "end" });
|
|
37
37
|
}
|
|
38
38
|
}, [events.length]);
|
|
39
|
-
const isLive = streamState.stage === "streaming";
|
|
39
|
+
const isLive = streamState.stage === "streaming" || streamState.stage === "reconnecting";
|
|
40
40
|
const isConnecting = streamState.stage === "connecting";
|
|
41
41
|
const isComplete = streamState.stage === "complete";
|
|
42
42
|
const isError = streamState.stage === "error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionTimeline.js","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionTimeline.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAe,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AA0BlF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,yBAAyB,CAAC,EAC/E,MAAM,EACN,WAAW,EACX,0BAA0B,EAC1B,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,GACsB;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAErC,8DAA8D;IAC9D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;YACV,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC;QACjD,CAAC,EACD,EAAE,SAAS,EAAE,GAAG,EAAE,CACnB,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,6DAA6D;IAC7D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,eAAe,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACnD,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpB,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionTimeline.js","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutionTimeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWaterfallEntries.d.ts","sourceRoot":"","sources":["../../../src/workflow/execution/useWaterfallEntries.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAMpC,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,6CAA6C;IAC7C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AASD,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,EAAE,0BAA0B,GAAG,yBAAyB,
|
|
1
|
+
{"version":3,"file":"useWaterfallEntries.d.ts","sourceRoot":"","sources":["../../../src/workflow/execution/useWaterfallEntries.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAMpC,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,6CAA6C;IAC7C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AASD,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,EAAE,0BAA0B,GAAG,yBAAyB,CA8DxD"}
|
|
@@ -18,7 +18,7 @@ import { deriveWaterfallEntries, deriveWaterfallScale, } from "./derive-waterfal
|
|
|
18
18
|
const EMPTY_ENTRIES = [];
|
|
19
19
|
const EMPTY_SCALE = { totalMs: 1000, ticks: [0, 1000], labelEveryN: 1 };
|
|
20
20
|
export function useWaterfallEntries({ events, streamState, executionStartIso, executionDurationMs, }) {
|
|
21
|
-
const isLive = streamState.stage === "streaming";
|
|
21
|
+
const isLive = streamState.stage === "streaming" || streamState.stage === "reconnecting";
|
|
22
22
|
const execStartEpoch = useMemo(() => (executionStartIso ? new Date(executionStartIso).getTime() : 0), [executionStartIso]);
|
|
23
23
|
// --- Live clock (rAF-driven nowMs for growing bars) ---
|
|
24
24
|
const [nowMs, setNowMs] = useState(() => execStartEpoch > 0 ? Date.now() - execStartEpoch : 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWaterfallEntries.js","sourceRoot":"","sources":["../../../src/workflow/execution/useWaterfallEntries.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;GAUG;AAEH,OAAO,EAAe,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG1E,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,4BAA4B,CAAC;AA4BpC,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,aAAa,GAA8B,EAAE,CAAC;AACpD,MAAM,WAAW,GAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAExF,MAAM,UAAU,mBAAmB,CAAC,EAClC,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACQ;IAC3B,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"useWaterfallEntries.js","sourceRoot":"","sources":["../../../src/workflow/execution/useWaterfallEntries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { WorkflowExecutionEvent } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
2
2
|
import type { WorkflowEventType } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
3
3
|
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/enum_pb";
|
|
4
|
+
import { type BackoffOptions } from "../internal/backoff";
|
|
4
5
|
import { WorkflowExecutionEventStore, type WorkflowEventStreamState, type DerivedTaskState, type DerivedCostSummary } from "../internal/store";
|
|
5
6
|
/** Options for {@link useWorkflowExecutionEventStream}. */
|
|
6
7
|
export interface UseWorkflowExecutionEventStreamOptions {
|
|
@@ -18,6 +19,20 @@ export interface UseWorkflowExecutionEventStreamOptions {
|
|
|
18
19
|
* (terminal). When omitted, defaults to live streaming.
|
|
19
20
|
*/
|
|
20
21
|
readonly executionPhase?: ExecutionPhase;
|
|
22
|
+
/**
|
|
23
|
+
* Automatically re-establish the live subscription with exponential
|
|
24
|
+
* backoff when it drops with a transient transport error, resuming from
|
|
25
|
+
* the last received `sequence_number` (no events lost). Defaults to `true`.
|
|
26
|
+
*/
|
|
27
|
+
readonly autoReconnect?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Tune the auto-reconnect backoff schedule and attempt cap. Omitted fields
|
|
30
|
+
* fall back to SDK defaults (base 1s, ×2, max 30s, 10 attempts).
|
|
31
|
+
*/
|
|
32
|
+
readonly reconnectOptions?: BackoffOptions & {
|
|
33
|
+
/** Max attempts before surfacing a terminal `error`. */
|
|
34
|
+
readonly maxAttempts?: number;
|
|
35
|
+
};
|
|
21
36
|
}
|
|
22
37
|
/** Return value of {@link useWorkflowExecutionEventStream}. */
|
|
23
38
|
export interface UseWorkflowExecutionEventStreamReturn {
|
|
@@ -35,9 +50,20 @@ export interface UseWorkflowExecutionEventStreamReturn {
|
|
|
35
50
|
readonly isStreaming: boolean;
|
|
36
51
|
/** `true` while connecting to the event stream. */
|
|
37
52
|
readonly isConnecting: boolean;
|
|
38
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* `true` while a transient drop is being retried automatically. Accumulated
|
|
55
|
+
* events stay visible and `error` remains `null`; on success the
|
|
56
|
+
* subscription resumes from the last sequence number with no events lost.
|
|
57
|
+
*/
|
|
58
|
+
readonly isReconnecting: boolean;
|
|
59
|
+
/** 1-based count of the in-flight reconnect attempt; `0` when not reconnecting. */
|
|
60
|
+
readonly reconnectAttempt: number;
|
|
61
|
+
/**
|
|
62
|
+
* Error from the last failed stream attempt, or `null`. Set only once
|
|
63
|
+
* auto-reconnect exhausts its attempts (or for a non-transient failure).
|
|
64
|
+
*/
|
|
39
65
|
readonly error: Error | null;
|
|
40
|
-
/** Re-establish the stream subscription. */
|
|
66
|
+
/** Re-establish the stream subscription (manual fallback). */
|
|
41
67
|
readonly reconnect: () => void;
|
|
42
68
|
}
|
|
43
69
|
/**
|
|
@@ -60,8 +86,10 @@ export declare function isRecoveryTransition(prevPhase: ExecutionPhase | undefin
|
|
|
60
86
|
* integration.
|
|
61
87
|
*
|
|
62
88
|
* For running executions: subscribes via `subscribeEvents` with
|
|
63
|
-
* replay+live-tail.
|
|
64
|
-
* sequence number
|
|
89
|
+
* replay+live-tail. A transient drop auto-reconnects with exponential
|
|
90
|
+
* backoff, resuming from the last received sequence number so no events are
|
|
91
|
+
* lost; `error` is surfaced only once retries are exhausted. A clean stream
|
|
92
|
+
* end is the server's completion signal and is never retried.
|
|
65
93
|
*
|
|
66
94
|
* For terminal executions: loads the full event log via paginated
|
|
67
95
|
* `getEventLog` calls.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWorkflowExecutionEventStream.d.ts","sourceRoot":"","sources":["../../src/workflow/useWorkflowExecutionEventStream.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAM1G,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;
|
|
1
|
+
{"version":3,"file":"useWorkflowExecutionEventStream.d.ts","sourceRoot":"","sources":["../../src/workflow/useWorkflowExecutionEventStream.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAM1G,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AAIjG,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,2DAA2D;AAC3D,MAAM,WAAW,sCAAsC;IACrD,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,2BAA2B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,cAAc,GAAG;QAC3C,wDAAwD;QACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED,+DAA+D;AAC/D,MAAM,WAAW,qCAAqC;IACpD,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3D,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,8BAA8B;IAC9B,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;CAChC;AASD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,cAAc,GAAG,SAAS,EACrC,SAAS,EAAE,cAAc,GAAG,SAAS,GACpC,OAAO,CAGT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,OAAO,CAAC,EAAE,sCAAsC,GAC/C,qCAAqC,CAkPvC"}
|
|
@@ -3,8 +3,10 @@ import { startTransition, useCallback, useEffect, useRef, useState, useSyncExter
|
|
|
3
3
|
import { create } from "@bufbuild/protobuf";
|
|
4
4
|
import { GetEventLogRequestSchema, SubscribeEventsRequestSchema, } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
|
|
5
5
|
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/enum_pb";
|
|
6
|
+
import { isTransientStreamError } from "@stigmer/sdk";
|
|
6
7
|
import { useStigmer } from "../hooks";
|
|
7
8
|
import { toError } from "../internal/toError";
|
|
9
|
+
import { computeBackoffDelay, sleep, DEFAULT_RECONNECT_MAX_ATTEMPTS, } from "../internal/backoff";
|
|
8
10
|
import { WorkflowExecutionEventStore, } from "../internal/store";
|
|
9
11
|
const TERMINAL_PHASES = new Set([
|
|
10
12
|
ExecutionPhase.EXECUTION_COMPLETED,
|
|
@@ -36,8 +38,10 @@ export function isRecoveryTransition(prevPhase, nextPhase) {
|
|
|
36
38
|
* integration.
|
|
37
39
|
*
|
|
38
40
|
* For running executions: subscribes via `subscribeEvents` with
|
|
39
|
-
* replay+live-tail.
|
|
40
|
-
* sequence number
|
|
41
|
+
* replay+live-tail. A transient drop auto-reconnects with exponential
|
|
42
|
+
* backoff, resuming from the last received sequence number so no events are
|
|
43
|
+
* lost; `error` is surfaced only once retries are exhausted. A clean stream
|
|
44
|
+
* end is the server's completion signal and is never retried.
|
|
41
45
|
*
|
|
42
46
|
* For terminal executions: loads the full event log via paginated
|
|
43
47
|
* `getEventLog` calls.
|
|
@@ -67,6 +71,8 @@ export function useWorkflowExecutionEventStream(executionId, options) {
|
|
|
67
71
|
}, []);
|
|
68
72
|
const eventTypes = options?.eventTypes;
|
|
69
73
|
const executionPhase = options?.executionPhase;
|
|
74
|
+
const autoReconnect = options?.autoReconnect ?? true;
|
|
75
|
+
const reconnectOptions = options?.reconnectOptions;
|
|
70
76
|
// Stable ref for values that should not trigger re-subscription
|
|
71
77
|
const storeRef = useRef(store);
|
|
72
78
|
storeRef.current = store;
|
|
@@ -157,44 +163,77 @@ export function useWorkflowExecutionEventStream(executionId, options) {
|
|
|
157
163
|
})();
|
|
158
164
|
}
|
|
159
165
|
else {
|
|
160
|
-
// Live-stream events for running executions
|
|
166
|
+
// Live-stream events for running executions, with auto-reconnect.
|
|
161
167
|
currentStore.setStreamState({ stage: "connecting", executionId });
|
|
162
168
|
(async () => {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
})
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
169
|
+
const signal = abortController.signal;
|
|
170
|
+
const maxAttempts = reconnectOptions?.maxAttempts ?? DEFAULT_RECONNECT_MAX_ATTEMPTS;
|
|
171
|
+
// 1-based count of consecutive failed attempts, reset by any event.
|
|
172
|
+
let attempt = 0;
|
|
173
|
+
while (!signal.aborted) {
|
|
174
|
+
try {
|
|
175
|
+
// Re-read each attempt: after a drop we resume from the last
|
|
176
|
+
// sequence number, so the server replays only what we missed and
|
|
177
|
+
// no events are lost or duplicated.
|
|
178
|
+
const afterSequence = currentStore.getLatestSequence();
|
|
179
|
+
for await (const event of stigmer.workflowExecution.subscribeEvents(create(SubscribeEventsRequestSchema, {
|
|
180
|
+
executionId,
|
|
181
|
+
afterSequence,
|
|
182
|
+
eventTypes: eventTypes ? [...eventTypes] : [],
|
|
183
|
+
}), signal)) {
|
|
184
|
+
if (signal.aborted)
|
|
185
|
+
return;
|
|
186
|
+
attempt = 0; // an event proves the connection is healthy
|
|
187
|
+
startTransition(() => {
|
|
188
|
+
currentStore.appendEvents([event]);
|
|
189
|
+
const stage = currentStore.getStreamState().stage;
|
|
190
|
+
if (stage === "connecting" || stage === "reconnecting") {
|
|
191
|
+
currentStore.setStreamState({ stage: "streaming", executionId });
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
// A clean end of the event stream is the server's completion
|
|
196
|
+
// signal (the execution finished). Unlike the agent snapshot
|
|
197
|
+
// stream, there is no separate terminal marker to re-check, so we
|
|
198
|
+
// must NOT treat this as a premature drop — doing so would loop
|
|
199
|
+
// forever re-subscribing past the final sequence. Transient drops
|
|
200
|
+
// surface as thrown errors (handled below), not a clean end.
|
|
201
|
+
if (!signal.aborted) {
|
|
202
|
+
currentStore.setStreamState({ stage: "complete", executionId });
|
|
203
|
+
}
|
|
185
204
|
return;
|
|
186
|
-
const error = toError(err);
|
|
187
|
-
const isUnimplemented = error.message.includes("UNIMPLEMENTED") ||
|
|
188
|
-
error.message.includes("unimplemented");
|
|
189
|
-
if (isUnimplemented) {
|
|
190
|
-
currentStore.setStreamState({ stage: "unsupported", executionId });
|
|
191
205
|
}
|
|
192
|
-
|
|
206
|
+
catch (err) {
|
|
207
|
+
if (signal.aborted)
|
|
208
|
+
return;
|
|
209
|
+
const error = toError(err);
|
|
210
|
+
const isUnimplemented = error.message.includes("UNIMPLEMENTED") ||
|
|
211
|
+
error.message.includes("unimplemented");
|
|
212
|
+
// A server without event-stream support will never recover —
|
|
213
|
+
// surface the unsupported state immediately, never retry.
|
|
214
|
+
if (isUnimplemented) {
|
|
215
|
+
currentStore.setStreamState({ stage: "unsupported", executionId });
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (!autoReconnect ||
|
|
219
|
+
!isTransientStreamError(error) ||
|
|
220
|
+
attempt >= maxAttempts) {
|
|
221
|
+
currentStore.setStreamState({ stage: "error", executionId, error });
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
attempt += 1;
|
|
193
225
|
currentStore.setStreamState({
|
|
194
|
-
stage: "
|
|
226
|
+
stage: "reconnecting",
|
|
195
227
|
executionId,
|
|
228
|
+
attempt,
|
|
196
229
|
error,
|
|
197
230
|
});
|
|
231
|
+
try {
|
|
232
|
+
await sleep(computeBackoffDelay(attempt, reconnectOptions), signal);
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return; // aborted mid-backoff
|
|
236
|
+
}
|
|
198
237
|
}
|
|
199
238
|
}
|
|
200
239
|
})();
|
|
@@ -211,6 +250,8 @@ export function useWorkflowExecutionEventStream(executionId, options) {
|
|
|
211
250
|
const totalTasks = useSyncExternalStore(store.subscribe, store.getTotalTasks);
|
|
212
251
|
const isStreaming = streamState.stage === "streaming";
|
|
213
252
|
const isConnecting = streamState.stage === "connecting";
|
|
253
|
+
const isReconnecting = streamState.stage === "reconnecting";
|
|
254
|
+
const reconnectAttempt = streamState.stage === "reconnecting" ? streamState.attempt : 0;
|
|
214
255
|
const error = streamState.stage === "error" ? streamState.error : null;
|
|
215
256
|
return {
|
|
216
257
|
events,
|
|
@@ -220,6 +261,8 @@ export function useWorkflowExecutionEventStream(executionId, options) {
|
|
|
220
261
|
totalTasks,
|
|
221
262
|
isStreaming,
|
|
222
263
|
isConnecting,
|
|
264
|
+
isReconnecting,
|
|
265
|
+
reconnectAttempt,
|
|
223
266
|
error,
|
|
224
267
|
reconnect,
|
|
225
268
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWorkflowExecutionEventStream.js","sourceRoot":"","sources":["../../src/workflow/useWorkflowExecutionEventStream.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EACL,eAAe,EACf,WAAW,EACX,SAAS,EACT,MAAM,EACN,QAAQ,EACR,oBAAoB,GACrB,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,2BAA2B,GAI5B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"useWorkflowExecutionEventStream.js","sourceRoot":"","sources":["../../src/workflow/useWorkflowExecutionEventStream.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EACL,eAAe,EACf,WAAW,EACX,SAAS,EACT,MAAM,EACN,QAAQ,EACR,oBAAoB,GACrB,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,KAAK,EACL,8BAA8B,GAE/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,GAI5B,MAAM,mBAAmB,CAAC;AAmE3B,MAAM,eAAe,GAAG,IAAI,GAAG,CAAiB;IAC9C,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,gBAAgB;IAC/B,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,oBAAoB;CACpC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAqC,EACrC,SAAqC;IAErC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,+BAA+B,CAC7C,WAA0B,EAC1B,OAAgD;IAEhD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,gBAAgB,GAAG,MAAM,CAAqC,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QACjD,gBAAgB,CAAC,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,gBAAgB,CAAC,OAAQ,CAAC;IAE1D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,CAAC;IAC/C,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;IACrD,MAAM,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,CAAC;IAEnD,gEAAgE;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAEzB,+DAA+D;IAC/D,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,YAAY,GAAG,MAAM,CAA6B,SAAS,CAAC,CAAC;IAEnE,sEAAsE;IACtE,qEAAqE;IACrE,yEAAyE;IACzE,MAAM,kBAAkB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;YACjC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;QACtC,MAAM,UAAU,GAAG,cAAc,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEvF,mEAAmE;QACnE,mEAAmE;QACnE,iEAAiE;QACjE,gEAAgE;QAChE,mEAAmE;QACnE,iEAAiE;QACjE,qEAAqE;QACrE,2DAA2D;QAC3D,MAAM,iBAAiB,GACrB,kBAAkB,CAAC,OAAO,KAAK,IAAI;YACnC,kBAAkB,CAAC,OAAO,KAAK,WAAW,CAAC;QAC7C,IAAI,iBAAiB,EAAE,CAAC;YACtB,YAAY,CAAC,KAAK,EAAE,CAAC;YACrB,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,kBAAkB,CAAC,OAAO,GAAG,WAAW,CAAC;QAEzC,iEAAiE;QACjE,oEAAoE;QACpE,mEAAmE;QACnE,uDAAuD;QACvD,iEAAiE;QACjE,8DAA8D;QAC9D,gEAAgE;QAChE,EAAE;QACF,mEAAmE;QACnE,kEAAkE;QAClE,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,oBAAoB,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YAC/D,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QACD,YAAY,CAAC,OAAO,GAAG,cAAc,CAAC;QAEtC,IAAI,UAAU,EAAE,CAAC;YACf,iDAAiD;YACjD,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAElE,CAAC,KAAK,IAAI,EAAE;gBACV,IAAI,CAAC;oBACH,IAAI,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,OAAO,GAAG,IAAI,CAAC;oBAEnB,OAAO,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBAClD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,WAAW,CACtD,MAAM,CAAC,wBAAwB,EAAE;4BAC/B,WAAW;4BACX,aAAa;4BACb,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;4BAC7C,QAAQ,EAAE,GAAG;yBACd,CAAC,CACH,CAAC;wBAEF,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;4BAAE,OAAO;wBAE3C,eAAe,CAAC,GAAG,EAAE;4BACnB,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACzC,CAAC,CAAC,CAAC;wBAEH,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;wBACvB,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;oBACtC,CAAC;oBAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpC,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;wBAAE,OAAO;oBAC3C,YAAY,CAAC,cAAc,CAAC;wBAC1B,KAAK,EAAE,OAAO;wBACd,WAAW;wBACX,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAElE,CAAC,KAAK,IAAI,EAAE;gBACV,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;gBACtC,MAAM,WAAW,GACf,gBAAgB,EAAE,WAAW,IAAI,8BAA8B,CAAC;gBAElE,oEAAoE;gBACpE,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACvB,IAAI,CAAC;wBACH,6DAA6D;wBAC7D,iEAAiE;wBACjE,oCAAoC;wBACpC,MAAM,aAAa,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC;wBAEvD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,eAAe,CACjE,MAAM,CAAC,4BAA4B,EAAE;4BACnC,WAAW;4BACX,aAAa;4BACb,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;yBAC9C,CAAC,EACF,MAAM,CACP,EAAE,CAAC;4BACF,IAAI,MAAM,CAAC,OAAO;gCAAE,OAAO;4BAE3B,OAAO,GAAG,CAAC,CAAC,CAAC,4CAA4C;4BACzD,eAAe,CAAC,GAAG,EAAE;gCACnB,YAAY,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gCACnC,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;gCAClD,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;oCACvD,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;gCACnE,CAAC;4BACH,CAAC,CAAC,CAAC;wBACL,CAAC;wBAED,6DAA6D;wBAC7D,6DAA6D;wBAC7D,kEAAkE;wBAClE,gEAAgE;wBAChE,kEAAkE;wBAClE,6DAA6D;wBAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACpB,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;wBAClE,CAAC;wBACD,OAAO;oBACT,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,MAAM,CAAC,OAAO;4BAAE,OAAO;wBAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC3B,MAAM,eAAe,GACnB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;4BACvC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;wBAE1C,6DAA6D;wBAC7D,0DAA0D;wBAC1D,IAAI,eAAe,EAAE,CAAC;4BACpB,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;4BACnE,OAAO;wBACT,CAAC;wBAED,IACE,CAAC,aAAa;4BACd,CAAC,sBAAsB,CAAC,KAAK,CAAC;4BAC9B,OAAO,IAAI,WAAW,EACtB,CAAC;4BACD,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;4BACpE,OAAO;wBACT,CAAC;wBAED,OAAO,IAAI,CAAC,CAAC;wBACb,YAAY,CAAC,cAAc,CAAC;4BAC1B,KAAK,EAAE,cAAc;4BACrB,WAAW;4BACX,OAAO;4BACP,KAAK;yBACN,CAAC,CAAC;wBACH,IAAI,CAAC;4BACH,MAAM,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;wBACtE,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,CAAC,sBAAsB;wBAChC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QAED,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvD,2CAA2C;IAC3C,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAChF,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAE9E,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,KAAK,WAAW,CAAC;IACtD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,KAAK,YAAY,CAAC;IACxD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,KAAK,cAAc,CAAC;IAC5D,MAAM,gBAAgB,GACpB,WAAW,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,OAAO;QACL,MAAM;QACN,UAAU;QACV,WAAW;QACX,WAAW;QACX,UAAU;QACV,WAAW;QACX,YAAY;QACZ,cAAc;QACd,gBAAgB;QAChB,KAAK;QACL,SAAS;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaterfallTimeline.d.ts","sourceRoot":"","sources":["../../../src/workflow/waterfall/WaterfallTimeline.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAKpG,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,2GAA2G;IAC3G,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,sEAAsE;IACtE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"WaterfallTimeline.d.ts","sourceRoot":"","sources":["../../../src/workflow/waterfall/WaterfallTimeline.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC/G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAKpG,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,2GAA2G;IAC3G,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,sEAAsE;IACtE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,iBAAiB,8DAoF5B,CAAC"}
|
|
@@ -52,7 +52,7 @@ export const WaterfallTimeline = memo(function WaterfallTimeline({ events, strea
|
|
|
52
52
|
}, [selectedTaskName]);
|
|
53
53
|
// Empty state
|
|
54
54
|
if (entries.length === 0) {
|
|
55
|
-
const isConnecting = streamState.stage === "connecting";
|
|
55
|
+
const isConnecting = streamState.stage === "connecting" || streamState.stage === "reconnecting";
|
|
56
56
|
return (_jsx("div", { className: cn("flex items-center justify-center text-xs text-[var(--stgm-muted-foreground,#737373)]", className), children: isConnecting ? "Loading timeline…" : "No task data available" }));
|
|
57
57
|
}
|
|
58
58
|
return (_jsxs("div", { className: cn("flex flex-col overflow-hidden", className), role: "list", "aria-label": "Execution waterfall", children: [_jsxs("div", { className: "flex shrink-0 items-center", children: [_jsx("div", { className: "w-[248px] shrink-0" }), _jsx("div", { className: "min-w-0 flex-1", children: _jsx(WaterfallScaleComponent, { scale: scale }) })] }), _jsxs("div", { ref: scrollRef, className: "flex-1 overflow-y-auto", children: [entries.map((entry) => (_jsx(WaterfallRow, { entry: entry, totalMs: scale.totalMs, nowMs: nowMs, isSelected: entry.taskName === selectedTaskName, onSelect: handleSelect }, entry.taskName))), isLive && (_jsxs("div", { className: "flex items-center gap-2 px-2 py-1 text-[10px] text-[var(--stgm-muted-foreground,#737373)]", children: [_jsxs("span", { className: "relative flex size-1.5", children: [_jsx("span", { className: "absolute inline-flex size-full animate-ping rounded-full bg-[var(--stgm-success,#22c55e)] opacity-75" }), _jsx("span", { className: "relative inline-flex size-1.5 rounded-full bg-[var(--stgm-success,#22c55e)]" })] }), "Live"] }))] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaterfallTimeline.js","sourceRoot":"","sources":["../../../src/workflow/waterfall/WaterfallTimeline.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAGpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAoB9C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAC/D,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACc;IACvB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC;QAC5D,MAAM;QACN,WAAW;QACX,iBAAiB;QACjB,mBAAmB;KACpB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,QAAgB,EAAE,EAAE;QACnB,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,mEAAmE;IACnE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO;QACpD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CACzC,oBAAoB,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CACrD,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,cAAc;IACd,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"WaterfallTimeline.js","sourceRoot":"","sources":["../../../src/workflow/waterfall/WaterfallTimeline.tsx"],"names":[],"mappings":"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"}
|