@workflow/web-shared 4.0.1-beta.25 → 4.0.1-beta.27
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/api/workflow-api-client.d.ts +44 -25
- package/dist/api/workflow-api-client.d.ts.map +1 -1
- package/dist/api/workflow-api-client.js +280 -196
- package/dist/api/workflow-api-client.js.map +1 -1
- package/dist/api/workflow-server-actions.d.ts +8 -1
- package/dist/api/workflow-server-actions.d.ts.map +1 -1
- package/dist/api/workflow-server-actions.js +114 -93
- package/dist/api/workflow-server-actions.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/utils.d.ts +44 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +109 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/sidebar/attribute-panel.d.ts +9 -2
- package/dist/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/sidebar/attribute-panel.js +152 -11
- package/dist/sidebar/attribute-panel.js.map +1 -1
- package/dist/sidebar/conversation-view.d.ts +7 -0
- package/dist/sidebar/conversation-view.d.ts.map +1 -0
- package/dist/sidebar/conversation-view.js +125 -0
- package/dist/sidebar/conversation-view.js.map +1 -0
- package/dist/sidebar/workflow-detail-panel.d.ts +3 -1
- package/dist/sidebar/workflow-detail-panel.d.ts.map +1 -1
- package/dist/sidebar/workflow-detail-panel.js +2 -2
- package/dist/sidebar/workflow-detail-panel.js.map +1 -1
- package/dist/stream-viewer.d.ts +13 -0
- package/dist/stream-viewer.d.ts.map +1 -0
- package/dist/stream-viewer.js +108 -0
- package/dist/stream-viewer.js.map +1 -0
- package/dist/trace-viewer/util/timing.d.ts +4 -13
- package/dist/trace-viewer/util/timing.d.ts.map +1 -1
- package/dist/trace-viewer/util/timing.js +5 -64
- package/dist/trace-viewer/util/timing.js.map +1 -1
- package/dist/workflow-trace-view.d.ts +3 -1
- package/dist/workflow-trace-view.d.ts.map +1 -1
- package/dist/workflow-trace-view.js +2 -2
- package/dist/workflow-trace-view.js.map +1 -1
- package/package.json +6 -3
|
@@ -3,8 +3,10 @@ import type { EnvMap } from '../api/workflow-server-actions';
|
|
|
3
3
|
/**
|
|
4
4
|
* Custom panel component for workflow traces that displays entity details
|
|
5
5
|
*/
|
|
6
|
-
export declare function WorkflowDetailPanel({ env, run, }: {
|
|
6
|
+
export declare function WorkflowDetailPanel({ env, run, onStreamClick, }: {
|
|
7
7
|
env: EnvMap;
|
|
8
8
|
run: WorkflowRun;
|
|
9
|
+
/** Callback when a stream reference is clicked */
|
|
10
|
+
onStreamClick?: (streamId: string) => void;
|
|
9
11
|
}): React.JSX.Element | null;
|
|
10
12
|
//# sourceMappingURL=workflow-detail-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-detail-panel.d.ts","sourceRoot":"","sources":["../../src/sidebar/workflow-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAK7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,GAAG,
|
|
1
|
+
{"version":3,"file":"workflow-detail-panel.d.ts","sourceRoot":"","sources":["../../src/sidebar/workflow-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAK7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,GAAG,EACH,aAAa,GACd,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,WAAW,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA8E3B"}
|
|
@@ -10,7 +10,7 @@ import { AttributePanel } from './attribute-panel';
|
|
|
10
10
|
/**
|
|
11
11
|
* Custom panel component for workflow traces that displays entity details
|
|
12
12
|
*/
|
|
13
|
-
export function WorkflowDetailPanel({ env, run, }) {
|
|
13
|
+
export function WorkflowDetailPanel({ env, run, onStreamClick, }) {
|
|
14
14
|
const { state } = useTraceViewer();
|
|
15
15
|
const { selected } = state;
|
|
16
16
|
const data = selected?.span.attributes?.data;
|
|
@@ -51,6 +51,6 @@ export function WorkflowDetailPanel({ env, run, }) {
|
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
53
|
const displayData = fetchedData || data;
|
|
54
|
-
return (_jsxs("div", { className: clsx('flex flex-col px-2'), children: [_jsx(AttributePanel, { data: displayData, expiredAt: run.expiredAt, isLoading: loading, error: error ?? undefined }), resource !== 'run' && (_jsx(EventsList, { correlationId: resourceId, env: env, events: selected.span.events, expiredAt: run.expiredAt }))] }));
|
|
54
|
+
return (_jsxs("div", { className: clsx('flex flex-col px-2'), children: [_jsx(AttributePanel, { data: displayData, expiredAt: run.expiredAt, isLoading: loading, error: error ?? undefined, onStreamClick: onStreamClick }), resource !== 'run' && (_jsx(EventsList, { correlationId: resourceId, env: env, events: selected.span.events, expiredAt: run.expiredAt }))] }));
|
|
55
55
|
}
|
|
56
56
|
//# sourceMappingURL=workflow-detail-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-detail-panel.js","sourceRoot":"","sources":["../../src/sidebar/workflow-detail-panel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,GAAG,EACH,GAAG,
|
|
1
|
+
{"version":3,"file":"workflow-detail-panel.js","sourceRoot":"","sources":["../../src/sidebar/workflow-detail-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EnvMap } from './api/workflow-server-actions';
|
|
2
|
+
interface StreamViewerProps {
|
|
3
|
+
env: EnvMap;
|
|
4
|
+
streamId: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* StreamViewer component that displays real-time stream data.
|
|
8
|
+
* It connects to a stream and displays chunks as they arrive,
|
|
9
|
+
* with auto-scroll functionality.
|
|
10
|
+
*/
|
|
11
|
+
export declare function StreamViewer({ env, streamId }: StreamViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=stream-viewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-viewer.d.ts","sourceRoot":"","sources":["../src/stream-viewer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE5D,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAyLhE"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { readStream } from './api/workflow-api-client';
|
|
5
|
+
/**
|
|
6
|
+
* StreamViewer component that displays real-time stream data.
|
|
7
|
+
* It connects to a stream and displays chunks as they arrive,
|
|
8
|
+
* with auto-scroll functionality.
|
|
9
|
+
*/
|
|
10
|
+
export function StreamViewer({ env, streamId }) {
|
|
11
|
+
const [chunks, setChunks] = useState([]);
|
|
12
|
+
const [isLive, setIsLive] = useState(true);
|
|
13
|
+
const [error, setError] = useState(null);
|
|
14
|
+
const [hasMoreBelow, setHasMoreBelow] = useState(false);
|
|
15
|
+
const scrollRef = useRef(null);
|
|
16
|
+
const abortControllerRef = useRef(null);
|
|
17
|
+
const chunkIdRef = useRef(0);
|
|
18
|
+
const checkScrollPosition = useCallback(() => {
|
|
19
|
+
if (scrollRef.current) {
|
|
20
|
+
const { scrollTop, scrollHeight, clientHeight } = scrollRef.current;
|
|
21
|
+
const isAtBottom = scrollHeight - scrollTop - clientHeight < 10;
|
|
22
|
+
setHasMoreBelow(!isAtBottom && scrollHeight > clientHeight);
|
|
23
|
+
}
|
|
24
|
+
}, []);
|
|
25
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: chunks.length triggers scroll on new chunks
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
// Auto-scroll to bottom when new content arrives
|
|
28
|
+
if (scrollRef.current) {
|
|
29
|
+
scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
|
|
30
|
+
}
|
|
31
|
+
// Check scroll position after content changes
|
|
32
|
+
checkScrollPosition();
|
|
33
|
+
}, [chunks.length, checkScrollPosition]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
let mounted = true;
|
|
36
|
+
abortControllerRef.current = new AbortController();
|
|
37
|
+
const handleStreamEnd = () => {
|
|
38
|
+
if (mounted) {
|
|
39
|
+
setIsLive(false);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const handleStreamError = (err) => {
|
|
43
|
+
if (mounted) {
|
|
44
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
45
|
+
setIsLive(false);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const addChunk = (value) => {
|
|
49
|
+
if (mounted && value !== undefined && value !== null) {
|
|
50
|
+
const chunkId = chunkIdRef.current++;
|
|
51
|
+
const text = typeof value === 'string' ? value : JSON.stringify(value, null, 2);
|
|
52
|
+
setChunks((prev) => [...prev, { id: chunkId, text }]);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const processStreamChunks = async (reader) => {
|
|
56
|
+
for (;;) {
|
|
57
|
+
if (abortControllerRef.current?.signal.aborted) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
const { value, done } = await reader.read();
|
|
61
|
+
if (done) {
|
|
62
|
+
handleStreamEnd();
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
addChunk(value);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const readStreamData = async () => {
|
|
69
|
+
try {
|
|
70
|
+
const stream = await readStream(env, streamId);
|
|
71
|
+
const reader = stream.getReader();
|
|
72
|
+
await processStreamChunks(reader);
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
handleStreamError(err);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
void readStreamData();
|
|
79
|
+
return () => {
|
|
80
|
+
mounted = false;
|
|
81
|
+
if (abortControllerRef.current) {
|
|
82
|
+
abortControllerRef.current.abort();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}, [env, streamId]);
|
|
86
|
+
return (_jsxs("div", { className: "flex flex-col h-full pb-4", children: [_jsxs("div", { className: "flex items-center justify-between mb-3 px-1", children: [_jsx("code", { className: "text-xs font-mono truncate max-w-[80%]", style: { color: 'var(--ds-gray-900)' }, title: streamId, children: streamId }), _jsxs("span", { className: "text-xs flex items-center gap-1.5", style: {
|
|
87
|
+
color: isLive ? 'var(--ds-green-700)' : 'var(--ds-gray-600)',
|
|
88
|
+
}, children: [_jsx("span", { className: "inline-block w-2 h-2 rounded-full", style: {
|
|
89
|
+
backgroundColor: isLive
|
|
90
|
+
? 'var(--ds-green-600)'
|
|
91
|
+
: 'var(--ds-gray-500)',
|
|
92
|
+
} }), isLive ? 'Live' : 'Closed'] })] }), _jsxs("div", { className: "relative flex-1 min-h-[200px]", children: [_jsx("div", { ref: scrollRef, onScroll: checkScrollPosition, className: "absolute inset-0 overflow-auto flex flex-col gap-2", children: error ? (_jsxs("div", { className: "text-[11px] rounded-md border p-3", style: {
|
|
93
|
+
borderColor: 'var(--ds-red-300)',
|
|
94
|
+
backgroundColor: 'var(--ds-red-100)',
|
|
95
|
+
color: 'var(--ds-red-700)',
|
|
96
|
+
}, children: [_jsx("div", { children: "Error reading stream:" }), _jsx("div", { children: error })] })) : chunks.length === 0 ? (_jsx("div", { className: "text-[11px] rounded-md border p-3", style: {
|
|
97
|
+
borderColor: 'var(--ds-gray-300)',
|
|
98
|
+
backgroundColor: 'var(--ds-gray-100)',
|
|
99
|
+
color: 'var(--ds-gray-600)',
|
|
100
|
+
}, children: isLive ? 'Waiting for stream data...' : 'Stream is empty' })) : (chunks.map((chunk, index) => (_jsx("pre", { className: "text-[11px] rounded-md border p-3 m-0 whitespace-pre-wrap break-words", style: {
|
|
101
|
+
borderColor: 'var(--ds-gray-300)',
|
|
102
|
+
backgroundColor: 'var(--ds-gray-100)',
|
|
103
|
+
color: 'var(--ds-gray-1000)',
|
|
104
|
+
}, children: _jsxs("code", { children: [_jsxs("span", { className: "select-none mr-2", style: { color: 'var(--ds-gray-500)' }, children: ["[", index, "]"] }), chunk.text] }) }, `${streamId}-chunk-${chunk.id}`)))) }), hasMoreBelow && (_jsx("div", { className: "absolute bottom-0 left-0 right-0 h-8 pointer-events-none", style: {
|
|
105
|
+
background: 'linear-gradient(to top, var(--ds-background-100), transparent)',
|
|
106
|
+
} }))] })] }));
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=stream-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-viewer.js","sourceRoot":"","sources":["../src/stream-viewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
|
+
import { formatDuration } from '../../lib/utils';
|
|
2
|
+
export { formatDuration };
|
|
1
3
|
export declare function getHighResInMs([seconds, nanoseconds]: [
|
|
2
4
|
number,
|
|
3
5
|
number
|
|
4
6
|
]): number;
|
|
5
7
|
export declare function getMsInHighRes(ms: number): [number, number];
|
|
6
8
|
/**
|
|
7
|
-
* Formats a duration
|
|
8
|
-
*
|
|
9
|
-
* - For durations < 1m: shows seconds (e.g., "45s")
|
|
10
|
-
* - For durations < 1h: shows minutes (e.g., "45m")
|
|
11
|
-
* - For durations < 1d: shows hours (e.g., "45h")
|
|
12
|
-
* Largest time is hours.
|
|
9
|
+
* Formats a duration for timeline display (compact single-unit format).
|
|
10
|
+
* @deprecated Use formatDuration(ms, true) instead.
|
|
13
11
|
*/
|
|
14
12
|
export declare const formatDurationForTimeline: (ms: number) => string;
|
|
15
|
-
/**
|
|
16
|
-
* Formats a duration in milliseconds to a human-readable string.
|
|
17
|
-
* - For durations < 1s: shows milliseconds (e.g., "500ms")
|
|
18
|
-
* - For durations < 1m: shows seconds (e.g., "45.5s")
|
|
19
|
-
* - For durations >= 1m: shows human-readable format (e.g., "1h 30m", "2d 5h")
|
|
20
|
-
*/
|
|
21
|
-
export declare function formatDuration(ms: number): string;
|
|
22
13
|
export declare function formatTimeSelection(ms: number): string;
|
|
23
14
|
//# sourceMappingURL=timing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../../src/trace-viewer/util/timing.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;IACrD,MAAM;IACN,MAAM;CACP,GAAG,MAAM,CAET;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE3D;
|
|
1
|
+
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../../src/trace-viewer/util/timing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,wBAAgB,cAAc,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;IACrD,MAAM;IACN,MAAM;CACP,GAAG,MAAM,CAET;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE3D;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAI,IAAI,MAAM,KAAG,MAC7B,CAAC;AAO3B,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKtD"}
|
|
@@ -1,75 +1,16 @@
|
|
|
1
|
+
import { formatDuration } from '../../lib/utils';
|
|
2
|
+
export { formatDuration };
|
|
1
3
|
export function getHighResInMs([seconds, nanoseconds]) {
|
|
2
4
|
return seconds * 1000 + nanoseconds / 1e6;
|
|
3
5
|
}
|
|
4
6
|
export function getMsInHighRes(ms) {
|
|
5
7
|
return [Math.floor(ms / 1000), (ms % 1000) * 1000];
|
|
6
8
|
}
|
|
7
|
-
const durationFormatter = new Intl.NumberFormat(undefined, {
|
|
8
|
-
maximumFractionDigits: 2,
|
|
9
|
-
});
|
|
10
|
-
const MS_IN_SECOND = 1000;
|
|
11
|
-
const MS_IN_MINUTE = 60 * MS_IN_SECOND;
|
|
12
|
-
const MS_IN_HOUR = 60 * MS_IN_MINUTE;
|
|
13
|
-
const MS_IN_DAY = 24 * MS_IN_HOUR;
|
|
14
|
-
/**
|
|
15
|
-
* Formats a duration in the most accurate single-part string.
|
|
16
|
-
* - For durations < 1s: shows milliseconds (e.g., "500ms")
|
|
17
|
-
* - For durations < 1m: shows seconds (e.g., "45s")
|
|
18
|
-
* - For durations < 1h: shows minutes (e.g., "45m")
|
|
19
|
-
* - For durations < 1d: shows hours (e.g., "45h")
|
|
20
|
-
* Largest time is hours.
|
|
21
|
-
*/
|
|
22
|
-
export const formatDurationForTimeline = (ms) => {
|
|
23
|
-
if (ms < MS_IN_SECOND) {
|
|
24
|
-
return `${durationFormatter.format(ms)}ms`;
|
|
25
|
-
}
|
|
26
|
-
if (ms < MS_IN_MINUTE) {
|
|
27
|
-
return `${durationFormatter.format(ms / MS_IN_SECOND)}s`;
|
|
28
|
-
}
|
|
29
|
-
if (ms < MS_IN_HOUR) {
|
|
30
|
-
return `${durationFormatter.format(ms / MS_IN_MINUTE)}m`;
|
|
31
|
-
}
|
|
32
|
-
// For durations >= 1 hour (including >= 1 day), show hours
|
|
33
|
-
return `${durationFormatter.format(ms / MS_IN_HOUR)}h`;
|
|
34
|
-
};
|
|
35
9
|
/**
|
|
36
|
-
* Formats a duration
|
|
37
|
-
*
|
|
38
|
-
* - For durations < 1m: shows seconds (e.g., "45.5s")
|
|
39
|
-
* - For durations >= 1m: shows human-readable format (e.g., "1h 30m", "2d 5h")
|
|
10
|
+
* Formats a duration for timeline display (compact single-unit format).
|
|
11
|
+
* @deprecated Use formatDuration(ms, true) instead.
|
|
40
12
|
*/
|
|
41
|
-
export
|
|
42
|
-
if (ms === 0) {
|
|
43
|
-
return '0';
|
|
44
|
-
}
|
|
45
|
-
// For durations less than 1 second, show milliseconds
|
|
46
|
-
if (ms < MS_IN_SECOND) {
|
|
47
|
-
return `${durationFormatter.format(ms)}ms`;
|
|
48
|
-
}
|
|
49
|
-
// For durations less than 1 minute, show seconds
|
|
50
|
-
if (ms < MS_IN_MINUTE) {
|
|
51
|
-
return `${durationFormatter.format(ms / MS_IN_SECOND)}s`;
|
|
52
|
-
}
|
|
53
|
-
// For durations >= 1 minute, show human-readable format
|
|
54
|
-
const days = Math.floor(ms / MS_IN_DAY);
|
|
55
|
-
const hours = Math.floor((ms % MS_IN_DAY) / MS_IN_HOUR);
|
|
56
|
-
const minutes = Math.floor((ms % MS_IN_HOUR) / MS_IN_MINUTE);
|
|
57
|
-
const seconds = Math.floor((ms % MS_IN_MINUTE) / MS_IN_SECOND);
|
|
58
|
-
const parts = [];
|
|
59
|
-
if (days > 0) {
|
|
60
|
-
parts.push(`${days}d`);
|
|
61
|
-
}
|
|
62
|
-
if (hours > 0) {
|
|
63
|
-
parts.push(`${hours}h`);
|
|
64
|
-
}
|
|
65
|
-
if (minutes > 0) {
|
|
66
|
-
parts.push(`${minutes}m`);
|
|
67
|
-
}
|
|
68
|
-
if (hours <= 1 && (seconds > 0 || parts.length === 0)) {
|
|
69
|
-
parts.push(`${seconds}s`);
|
|
70
|
-
}
|
|
71
|
-
return parts.join(' ');
|
|
72
|
-
}
|
|
13
|
+
export const formatDurationForTimeline = (ms) => formatDuration(ms, true);
|
|
73
14
|
const timeSelectionFormatter = new Intl.NumberFormat(undefined, {
|
|
74
15
|
minimumFractionDigits: 2,
|
|
75
16
|
maximumFractionDigits: 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../../src/trace-viewer/util/timing.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../../src/trace-viewer/util/timing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,MAAM,UAAU,cAAc,CAAC,CAAC,OAAO,EAAE,WAAW,CAGnD;IACC,OAAO,OAAO,GAAG,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAU,EAAU,EAAE,CAC9D,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAE3B,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;IAC9D,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AAClD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Event, Hook, Step, WorkflowRun } from '@workflow/world';
|
|
2
2
|
import type { EnvMap } from './api/workflow-server-actions';
|
|
3
|
-
export declare const WorkflowTraceViewer: ({ run, steps, hooks, events, env, isLoading, error, }: {
|
|
3
|
+
export declare const WorkflowTraceViewer: ({ run, steps, hooks, events, env, isLoading, error, onStreamClick, }: {
|
|
4
4
|
run: WorkflowRun;
|
|
5
5
|
steps: Step[];
|
|
6
6
|
hooks: Hook[];
|
|
@@ -8,5 +8,7 @@ export declare const WorkflowTraceViewer: ({ run, steps, hooks, events, env, isL
|
|
|
8
8
|
env: EnvMap;
|
|
9
9
|
isLoading?: boolean;
|
|
10
10
|
error?: Error | null;
|
|
11
|
+
/** Callback when a stream reference is clicked in the detail panel */
|
|
12
|
+
onStreamClick?: (streamId: string) => void;
|
|
11
13
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
12
14
|
//# sourceMappingURL=workflow-trace-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-trace-view.d.ts","sourceRoot":"","sources":["../src/workflow-trace-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAsB5D,eAAO,MAAM,mBAAmB,GAAI,
|
|
1
|
+
{"version":3,"file":"workflow-trace-view.d.ts","sourceRoot":"","sources":["../src/workflow-trace-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAsB5D,eAAO,MAAM,mBAAmB,GAAI,sEASjC;IACD,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,sEAAsE;IACtE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,4CAwJA,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { getCustomSpanClassName, getCustomSpanEventClassName, } from './workflow
|
|
|
8
8
|
import { hookToSpan, runToSpan, stepToSpan, WORKFLOW_LIBRARY, waitToSpan, } from './workflow-traces/trace-span-construction';
|
|
9
9
|
import { otelTimeToMs } from './workflow-traces/trace-time-utils';
|
|
10
10
|
const RE_RENDER_INTERVAL_MS = 2000;
|
|
11
|
-
export const WorkflowTraceViewer = ({ run, steps, hooks, events, env, isLoading, error, }) => {
|
|
11
|
+
export const WorkflowTraceViewer = ({ run, steps, hooks, events, env, isLoading, error, onStreamClick, }) => {
|
|
12
12
|
const [now, setNow] = useState(() => new Date());
|
|
13
13
|
useEffect(() => {
|
|
14
14
|
if (!run?.completedAt) {
|
|
@@ -116,6 +116,6 @@ export const WorkflowTraceViewer = ({ run, steps, hooks, events, env, isLoading,
|
|
|
116
116
|
if (isLoading || !trace) {
|
|
117
117
|
return (_jsxs("div", { className: "relative w-full h-full", children: [_jsx("div", { className: "border-b border-gray-alpha-400 w-full" }), _jsx(Skeleton, { className: "w-full ml-2 mt-1 mb-1 h-[56px]" }), _jsxs("div", { className: "p-2 relative w-full", children: [_jsx(Skeleton, { className: "w-full mt-6 h-[20px]" }), _jsx(Skeleton, { className: "w-[10%] mt-2 ml-6 h-[20px]" }), _jsx(Skeleton, { className: "w-[10%] mt-2 ml-12 h-[20px]" }), _jsx(Skeleton, { className: "w-[20%] mt-2 ml-16 h-[20px]" })] })] }));
|
|
118
118
|
}
|
|
119
|
-
return (_jsx("div", { className: "relative w-full h-full", children: _jsx(TraceViewerContextProvider, { withPanel: true, customSpanClassNameFunc: getCustomSpanClassName, customSpanEventClassNameFunc: getCustomSpanEventClassName, customPanelComponent: _jsx(WorkflowDetailPanel, { env: env, run: run }), children: _jsx(TraceViewerTimeline, { height: "100%", trace: trace, withPanel: true }) }) }));
|
|
119
|
+
return (_jsx("div", { className: "relative w-full h-full", children: _jsx(TraceViewerContextProvider, { withPanel: true, customSpanClassNameFunc: getCustomSpanClassName, customSpanEventClassNameFunc: getCustomSpanEventClassName, customPanelComponent: _jsx(WorkflowDetailPanel, { env: env, run: run, onStreamClick: onStreamClick }), children: _jsx(TraceViewerTimeline, { height: "100%", trace: trace, withPanel: true }) }) }));
|
|
120
120
|
};
|
|
121
121
|
//# sourceMappingURL=workflow-trace-view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-trace-view.js","sourceRoot":"","sources":["../src/workflow-trace-view.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,UAAU,GACX,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,GAAG,EACH,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,EACH,SAAS,EACT,KAAK,
|
|
1
|
+
{"version":3,"file":"workflow-trace-view.js","sourceRoot":"","sources":["../src/workflow-trace-view.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/web-shared",
|
|
3
3
|
"description": "Shared components for Workflow Observability UI",
|
|
4
|
-
"version": "4.0.1-beta.
|
|
4
|
+
"version": "4.0.1-beta.27",
|
|
5
5
|
"private": false,
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
@@ -37,17 +37,20 @@
|
|
|
37
37
|
"react": "19.1.0",
|
|
38
38
|
"react-dom": "19.1.0",
|
|
39
39
|
"sonner": "2.0.7",
|
|
40
|
+
"streamdown": "1.4.0",
|
|
40
41
|
"swr": "2.3.6",
|
|
41
42
|
"tailwind-merge": "2.5.5",
|
|
42
43
|
"tailwindcss": "4",
|
|
43
|
-
"@workflow/core": "4.0.1-beta.
|
|
44
|
-
"@workflow/
|
|
44
|
+
"@workflow/core": "4.0.1-beta.26",
|
|
45
|
+
"@workflow/errors": "4.0.1-beta.8",
|
|
46
|
+
"@workflow/world": "4.0.1-beta.10"
|
|
45
47
|
},
|
|
46
48
|
"devDependencies": {
|
|
47
49
|
"@biomejs/biome": "^2.2.7",
|
|
48
50
|
"@types/node": "22.19.0",
|
|
49
51
|
"@types/react": "19",
|
|
50
52
|
"@types/react-dom": "19",
|
|
53
|
+
"ai": "5.0.104",
|
|
51
54
|
"typescript": "^5.9.3",
|
|
52
55
|
"@workflow/tsconfig": "4.0.1-beta.0"
|
|
53
56
|
},
|