@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.
Files changed (41) hide show
  1. package/dist/api/workflow-api-client.d.ts +44 -25
  2. package/dist/api/workflow-api-client.d.ts.map +1 -1
  3. package/dist/api/workflow-api-client.js +280 -196
  4. package/dist/api/workflow-api-client.js.map +1 -1
  5. package/dist/api/workflow-server-actions.d.ts +8 -1
  6. package/dist/api/workflow-server-actions.d.ts.map +1 -1
  7. package/dist/api/workflow-server-actions.js +114 -93
  8. package/dist/api/workflow-server-actions.js.map +1 -1
  9. package/dist/index.d.ts +4 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/utils.d.ts +44 -0
  14. package/dist/lib/utils.d.ts.map +1 -1
  15. package/dist/lib/utils.js +109 -0
  16. package/dist/lib/utils.js.map +1 -1
  17. package/dist/sidebar/attribute-panel.d.ts +9 -2
  18. package/dist/sidebar/attribute-panel.d.ts.map +1 -1
  19. package/dist/sidebar/attribute-panel.js +152 -11
  20. package/dist/sidebar/attribute-panel.js.map +1 -1
  21. package/dist/sidebar/conversation-view.d.ts +7 -0
  22. package/dist/sidebar/conversation-view.d.ts.map +1 -0
  23. package/dist/sidebar/conversation-view.js +125 -0
  24. package/dist/sidebar/conversation-view.js.map +1 -0
  25. package/dist/sidebar/workflow-detail-panel.d.ts +3 -1
  26. package/dist/sidebar/workflow-detail-panel.d.ts.map +1 -1
  27. package/dist/sidebar/workflow-detail-panel.js +2 -2
  28. package/dist/sidebar/workflow-detail-panel.js.map +1 -1
  29. package/dist/stream-viewer.d.ts +13 -0
  30. package/dist/stream-viewer.d.ts.map +1 -0
  31. package/dist/stream-viewer.js +108 -0
  32. package/dist/stream-viewer.js.map +1 -0
  33. package/dist/trace-viewer/util/timing.d.ts +4 -13
  34. package/dist/trace-viewer/util/timing.d.ts.map +1 -1
  35. package/dist/trace-viewer/util/timing.js +5 -64
  36. package/dist/trace-viewer/util/timing.js.map +1 -1
  37. package/dist/workflow-trace-view.d.ts +3 -1
  38. package/dist/workflow-trace-view.d.ts.map +1 -1
  39. package/dist/workflow-trace-view.js +2 -2
  40. package/dist/workflow-trace-view.js.map +1 -1
  41. package/package.json +6 -3
@@ -1,5 +1,26 @@
1
+ import type { Step } from '@workflow/world';
2
+ import type { ModelMessage } from 'ai';
1
3
  import { type ClassValue } from 'clsx';
2
4
  export declare function cn(...inputs: ClassValue[]): string;
5
+ /**
6
+ * Formats a duration in milliseconds to a human-readable string.
7
+ *
8
+ * @param ms - Duration in milliseconds
9
+ * @param compact - If true, returns a single-unit format (e.g., "45s", "2.5m").
10
+ * If false (default), returns multi-part format (e.g., "1h 30m", "2d 5h").
11
+ *
12
+ * Compact format:
13
+ * - < 1s: shows milliseconds (e.g., "500ms")
14
+ * - < 1m: shows seconds (e.g., "45s")
15
+ * - < 1h: shows minutes (e.g., "45m")
16
+ * - >= 1h: shows hours (e.g., "2.5h")
17
+ *
18
+ * Full format:
19
+ * - < 1s: shows milliseconds (e.g., "500ms")
20
+ * - < 1m: shows seconds (e.g., "45.5s")
21
+ * - >= 1m: shows human-readable format (e.g., "1h 30m", "2d 5h")
22
+ */
23
+ export declare function formatDuration(ms: number, compact?: boolean): string;
3
24
  /**
4
25
  * Returns a formatted pagination display string
5
26
  * @param currentPage - The current page number
@@ -8,4 +29,27 @@ export declare function cn(...inputs: ClassValue[]): string;
8
29
  * @returns Formatted string like "Page 1 of 3+" or "Page 2 of 2"
9
30
  */
10
31
  export declare function getPaginationDisplay(currentPage: number, totalPages: number, hasMore: boolean): string;
32
+ /**
33
+ * Check if a step is a doStreamStep (LLM call with conversation input)
34
+ */
35
+ export declare function isDoStreamStep(stepName: string): boolean;
36
+ /**
37
+ * Extract the conversation from a hydrated doStreamStep input.
38
+ * doStreamStep signature: (conversationPrompt, model, writable, tools, options)
39
+ * So input[0] is the conversation.
40
+ */
41
+ export declare function extractConversation(stepInput: unknown): ModelMessage[] | null;
42
+ /**
43
+ * A doStreamStep with its conversation input extracted
44
+ */
45
+ export interface StreamStep {
46
+ stepId: string;
47
+ stepName: string;
48
+ displayName: string;
49
+ conversation: ModelMessage[];
50
+ }
51
+ /**
52
+ * Identifies all stream steps (doStreamStep) in a run and extracts their conversations.
53
+ */
54
+ export declare function identifyStreamSteps(steps: Step[]): StreamStep[];
11
55
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,MAAM,CAKR"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,MAAM,CA6ClE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,MAAM,CAKR;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,EAAE,GAAG,IAAI,CAmB7E;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAc/D"}
package/dist/lib/utils.js CHANGED
@@ -3,6 +3,70 @@ import { twMerge } from 'tailwind-merge';
3
3
  export function cn(...inputs) {
4
4
  return twMerge(clsx(inputs));
5
5
  }
6
+ const durationFormatter = new Intl.NumberFormat(undefined, {
7
+ maximumFractionDigits: 2,
8
+ });
9
+ const MS_IN_SECOND = 1000;
10
+ const MS_IN_MINUTE = 60 * MS_IN_SECOND;
11
+ const MS_IN_HOUR = 60 * MS_IN_MINUTE;
12
+ const MS_IN_DAY = 24 * MS_IN_HOUR;
13
+ /**
14
+ * Formats a duration in milliseconds to a human-readable string.
15
+ *
16
+ * @param ms - Duration in milliseconds
17
+ * @param compact - If true, returns a single-unit format (e.g., "45s", "2.5m").
18
+ * If false (default), returns multi-part format (e.g., "1h 30m", "2d 5h").
19
+ *
20
+ * Compact format:
21
+ * - < 1s: shows milliseconds (e.g., "500ms")
22
+ * - < 1m: shows seconds (e.g., "45s")
23
+ * - < 1h: shows minutes (e.g., "45m")
24
+ * - >= 1h: shows hours (e.g., "2.5h")
25
+ *
26
+ * Full format:
27
+ * - < 1s: shows milliseconds (e.g., "500ms")
28
+ * - < 1m: shows seconds (e.g., "45.5s")
29
+ * - >= 1m: shows human-readable format (e.g., "1h 30m", "2d 5h")
30
+ */
31
+ export function formatDuration(ms, compact = false) {
32
+ if (ms === 0) {
33
+ return '0';
34
+ }
35
+ // For durations less than 1 second, show milliseconds
36
+ if (ms < MS_IN_SECOND) {
37
+ return `${durationFormatter.format(ms)}ms`;
38
+ }
39
+ // For durations less than 1 minute, show seconds
40
+ if (ms < MS_IN_MINUTE) {
41
+ return `${durationFormatter.format(ms / MS_IN_SECOND)}s`;
42
+ }
43
+ // Compact format: single unit
44
+ if (compact) {
45
+ if (ms < MS_IN_HOUR) {
46
+ return `${durationFormatter.format(ms / MS_IN_MINUTE)}m`;
47
+ }
48
+ return `${durationFormatter.format(ms / MS_IN_HOUR)}h`;
49
+ }
50
+ // Full format: human-readable multi-part
51
+ const days = Math.floor(ms / MS_IN_DAY);
52
+ const hours = Math.floor((ms % MS_IN_DAY) / MS_IN_HOUR);
53
+ const minutes = Math.floor((ms % MS_IN_HOUR) / MS_IN_MINUTE);
54
+ const seconds = Math.floor((ms % MS_IN_MINUTE) / MS_IN_SECOND);
55
+ const parts = [];
56
+ if (days > 0) {
57
+ parts.push(`${days}d`);
58
+ }
59
+ if (hours > 0) {
60
+ parts.push(`${hours}h`);
61
+ }
62
+ if (minutes > 0) {
63
+ parts.push(`${minutes}m`);
64
+ }
65
+ if (hours <= 1 && (seconds > 0 || parts.length === 0)) {
66
+ parts.push(`${seconds}s`);
67
+ }
68
+ return parts.join(' ');
69
+ }
6
70
  /**
7
71
  * Returns a formatted pagination display string
8
72
  * @param currentPage - The current page number
@@ -16,4 +80,49 @@ export function getPaginationDisplay(currentPage, totalPages, hasMore) {
16
80
  }
17
81
  return `Page ${currentPage} of ${totalPages}`;
18
82
  }
83
+ // ============================================================================
84
+ // Durable Agent Utilities
85
+ // ============================================================================
86
+ /**
87
+ * Check if a step is a doStreamStep (LLM call with conversation input)
88
+ */
89
+ export function isDoStreamStep(stepName) {
90
+ return stepName.endsWith('//doStreamStep');
91
+ }
92
+ /**
93
+ * Extract the conversation from a hydrated doStreamStep input.
94
+ * doStreamStep signature: (conversationPrompt, model, writable, tools, options)
95
+ * So input[0] is the conversation.
96
+ */
97
+ export function extractConversation(stepInput) {
98
+ if (!Array.isArray(stepInput) || stepInput.length === 0) {
99
+ return null;
100
+ }
101
+ const firstArg = stepInput[0];
102
+ if (!Array.isArray(firstArg)) {
103
+ return null;
104
+ }
105
+ // Validate it looks like ModelMessage[]
106
+ if (!firstArg.every((msg) => msg && typeof msg === 'object' && 'role' in msg)) {
107
+ return null;
108
+ }
109
+ return firstArg;
110
+ }
111
+ /**
112
+ * Identifies all stream steps (doStreamStep) in a run and extracts their conversations.
113
+ */
114
+ export function identifyStreamSteps(steps) {
115
+ return steps
116
+ .filter((step) => isDoStreamStep(step.stepName))
117
+ .map((step) => {
118
+ const functionName = step.stepName.split('//').pop() ?? 'unknown';
119
+ const conversation = extractConversation(step.input) ?? [];
120
+ return {
121
+ stepId: step.stepId,
122
+ stepName: step.stepName,
123
+ displayName: functionName,
124
+ conversation,
125
+ };
126
+ });
127
+ }
19
128
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,UAAkB,EAClB,OAAgB;IAEhB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,QAAQ,WAAW,OAAO,UAAU,GAAG,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,WAAW,OAAO,UAAU,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,20 @@
1
- export declare const AttributeBlock: ({ attribute, value, isLoading, inline, }: {
1
+ interface DisplayContext {
2
+ stepName?: string;
3
+ }
4
+ export declare const AttributeBlock: ({ attribute, value, isLoading, inline, context, }: {
2
5
  attribute: string;
3
6
  value: unknown;
4
7
  isLoading?: boolean;
5
8
  inline?: boolean;
9
+ context?: DisplayContext;
6
10
  }) => import("react/jsx-runtime").JSX.Element | null;
7
- export declare const AttributePanel: ({ data, isLoading, error, expiredAt, }: {
11
+ export declare const AttributePanel: ({ data, isLoading, error, expiredAt, onStreamClick, }: {
8
12
  data: Record<string, unknown>;
9
13
  isLoading?: boolean;
10
14
  error?: Error;
11
15
  expiredAt?: string | Date;
16
+ /** Callback when a stream reference is clicked */
17
+ onStreamClick?: (streamId: string) => void;
12
18
  }) => import("react/jsx-runtime").JSX.Element;
19
+ export {};
13
20
  //# sourceMappingURL=attribute-panel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../src/sidebar/attribute-panel.tsx"],"names":[],"mappings":"AAqPA,eAAO,MAAM,cAAc,GAAI,0CAK5B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,mDAkDA,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,wCAK5B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,4CAgFA,CAAC"}
1
+ {"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../src/sidebar/attribute-panel.tsx"],"names":[],"mappings":"AAoUA,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkMD,eAAO,MAAM,cAAc,GAAI,mDAM5B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,mDAkDA,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,uDAM5B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,4CA2FA,CAAC"}
@@ -1,15 +1,145 @@
1
1
  'use client';
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { parseStepName, parseWorkflowName } from '@workflow/core/parse-name';
4
4
  import { AlertCircle } from 'lucide-react';
5
+ import { createContext, useContext, useMemo, useState, } from 'react';
5
6
  import { Alert, AlertDescription, AlertTitle } from '../components/ui/alert';
7
+ import { extractConversation, isDoStreamStep } from '../lib/utils';
8
+ import { ConversationView } from './conversation-view';
6
9
  import { DetailCard } from './detail-card';
10
+ /**
11
+ * Tabbed view for conversation and raw JSON
12
+ */
13
+ function ConversationWithTabs({ conversation, args, }) {
14
+ const [activeTab, setActiveTab] = useState('conversation');
15
+ return (_jsx(DetailCard, { summary: `Input (${conversation.length} messages)`, children: _jsxs("div", { className: "rounded-md border", style: { borderColor: 'var(--ds-gray-300)' }, children: [_jsxs("div", { className: "flex gap-1 border-b", style: { borderColor: 'var(--ds-gray-300)' }, children: [_jsx("button", { type: "button", onClick: () => setActiveTab('conversation'), className: "px-3 py-1.5 text-[11px] font-medium transition-colors", style: {
16
+ color: activeTab === 'conversation'
17
+ ? 'var(--ds-gray-1000)'
18
+ : 'var(--ds-gray-600)',
19
+ borderBottom: activeTab === 'conversation'
20
+ ? '2px solid var(--ds-blue-600)'
21
+ : '2px solid transparent',
22
+ marginBottom: '-1px',
23
+ }, children: "Conversation" }), _jsx("button", { type: "button", onClick: () => setActiveTab('json'), className: "px-3 py-1.5 text-[11px] font-medium transition-colors", style: {
24
+ color: activeTab === 'json'
25
+ ? 'var(--ds-gray-1000)'
26
+ : 'var(--ds-gray-600)',
27
+ borderBottom: activeTab === 'json'
28
+ ? '2px solid var(--ds-blue-600)'
29
+ : '2px solid transparent',
30
+ marginBottom: '-1px',
31
+ }, children: "Raw JSON" })] }), activeTab === 'conversation' ? (_jsx(ConversationView, { messages: conversation })) : (_jsx("div", { className: "p-3 max-h-[400px] overflow-y-auto", children: Array.isArray(args)
32
+ ? args.map((v, i) => (_jsx("div", { className: "mt-2 first:mt-0", children: JsonBlock(v) }, i)))
33
+ : JsonBlock(args) }))] }) }));
34
+ }
35
+ /**
36
+ * Context for stream click handler
37
+ */
38
+ const StreamClickContext = createContext(undefined);
39
+ /**
40
+ * Marker for stream reference objects that can be rendered as links
41
+ * This is duplicated from @workflow/core/observability to avoid pulling in
42
+ * Node.js dependencies into the client bundle.
43
+ */
44
+ const STREAM_REF_TYPE = '__workflow_stream_ref__';
45
+ /**
46
+ * Check if a value is a StreamRef object
47
+ *
48
+ */
49
+ const isStreamRef = (value) => {
50
+ // TODO: This is duplicated from @workflow/core/observability, but can't be pulled
51
+ // in client-side code because it's a Node.js dependency.
52
+ return (value !== null &&
53
+ typeof value === 'object' &&
54
+ '__type' in value &&
55
+ value.__type === STREAM_REF_TYPE &&
56
+ 'streamId' in value &&
57
+ typeof value.streamId === 'string');
58
+ };
59
+ /**
60
+ * Renders a StreamRef as a styled link/badge
61
+ */
62
+ const StreamRefDisplay = ({ streamRef }) => {
63
+ const onStreamClick = useContext(StreamClickContext);
64
+ const handleClick = () => {
65
+ if (onStreamClick) {
66
+ onStreamClick(streamRef.streamId);
67
+ }
68
+ };
69
+ return (_jsxs("button", { type: "button", onClick: handleClick, className: "inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-mono cursor-pointer hover:opacity-80 transition-opacity", style: {
70
+ backgroundColor: 'var(--ds-blue-200)',
71
+ color: 'var(--ds-blue-900)',
72
+ border: '1px solid var(--ds-blue-400)',
73
+ }, title: `Click to view stream: ${streamRef.streamId}`, children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("title", { children: "Stream icon" }), _jsx("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }), _jsx("circle", { cx: "12", cy: "12", r: "3" })] }), streamRef.streamId.length > 40
74
+ ? `${streamRef.streamId.slice(0, 20)}...${streamRef.streamId.slice(-15)}`
75
+ : streamRef.streamId] }));
76
+ };
77
+ /**
78
+ * Recursively transforms a value for JSON display, replacing StreamRef objects
79
+ * with placeholder strings that can be identified and replaced with React elements
80
+ */
81
+ const transformValueForDisplay = (value) => {
82
+ const streamRefs = new Map();
83
+ let counter = 0;
84
+ const transform = (v) => {
85
+ if (isStreamRef(v)) {
86
+ const placeholder = `__STREAM_REF_${counter++}__`;
87
+ streamRefs.set(placeholder, v);
88
+ return placeholder;
89
+ }
90
+ if (Array.isArray(v)) {
91
+ return v.map(transform);
92
+ }
93
+ if (v !== null && typeof v === 'object') {
94
+ const result = {};
95
+ for (const [key, val] of Object.entries(v)) {
96
+ result[key] = transform(val);
97
+ }
98
+ return result;
99
+ }
100
+ return v;
101
+ };
102
+ const transformed = transform(value);
103
+ return {
104
+ json: JSON.stringify(transformed, null, 2),
105
+ streamRefs,
106
+ };
107
+ };
7
108
  const JsonBlock = (value) => {
109
+ const { json, streamRefs } = transformValueForDisplay(value);
110
+ // If no stream refs, just render plain JSON
111
+ if (streamRefs.size === 0) {
112
+ return (_jsx("pre", { className: "text-[11px] overflow-x-auto rounded-md border p-3", style: {
113
+ borderColor: 'var(--ds-gray-300)',
114
+ backgroundColor: 'var(--ds-gray-100)',
115
+ color: 'var(--ds-gray-1000)',
116
+ }, children: _jsx("code", { children: json }) }));
117
+ }
118
+ // Split the JSON by stream ref placeholders and render with React elements
119
+ const parts = [];
120
+ let remaining = json;
121
+ let keyIndex = 0;
122
+ for (const [placeholder, streamRef] of streamRefs) {
123
+ const index = remaining.indexOf(`"${placeholder}"`);
124
+ if (index !== -1) {
125
+ // Add text before the placeholder
126
+ if (index > 0) {
127
+ parts.push(remaining.slice(0, index));
128
+ }
129
+ // Add the StreamRef component
130
+ parts.push(_jsx(StreamRefDisplay, { streamRef: streamRef }, keyIndex++));
131
+ remaining = remaining.slice(index + placeholder.length + 2); // +2 for quotes
132
+ }
133
+ }
134
+ // Add any remaining text
135
+ if (remaining) {
136
+ parts.push(remaining);
137
+ }
8
138
  return (_jsx("pre", { className: "text-[11px] overflow-x-auto rounded-md border p-3", style: {
9
139
  borderColor: 'var(--ds-gray-300)',
10
140
  backgroundColor: 'var(--ds-gray-100)',
11
141
  color: 'var(--ds-gray-1000)',
12
- }, children: _jsx("code", { children: JSON.stringify(value, null, 2) }) }));
142
+ }, children: _jsx("code", { children: parts }) }));
13
143
  };
14
144
  const attributeOrder = [
15
145
  'workflowName',
@@ -81,12 +211,19 @@ const attributeToDisplayFn = {
81
211
  resumeAt: (value) => new Date(String(value)).toLocaleString(),
82
212
  // Resolved attributes, won't actually use this function
83
213
  metadata: JsonBlock,
84
- input: (value) => {
214
+ input: (value, context) => {
85
215
  // Check if input has args + closure vars structure
86
216
  if (value && typeof value === 'object' && 'args' in value) {
87
217
  const { args, closureVars } = value;
88
218
  const argCount = Array.isArray(args) ? args.length : 0;
89
219
  const hasClosureVars = closureVars && Object.keys(closureVars).length > 0;
220
+ // Check if this is a doStreamStep - show conversation view with tabs
221
+ if (context?.stepName && isDoStreamStep(context.stepName)) {
222
+ const conversation = extractConversation(args);
223
+ if (conversation && conversation.length > 0) {
224
+ return (_jsxs(_Fragment, { children: [_jsx(ConversationWithTabs, { conversation: conversation, args: args }), hasClosureVars && (_jsx(DetailCard, { summary: "Closure Variables", children: JsonBlock(closureVars) }))] }));
225
+ }
226
+ }
90
227
  return (_jsxs(_Fragment, { children: [_jsx(DetailCard, { summary: `Input (${argCount} arguments)`, children: Array.isArray(args)
91
228
  ? args.map((v, i) => (_jsx("div", { className: "mt-2", children: JsonBlock(v) }, i)))
92
229
  : JsonBlock(args) }), hasClosureVars && (_jsx(DetailCard, { summary: "Closure Variables", children: JsonBlock(closureVars) }))] }));
@@ -135,12 +272,12 @@ const ExpiredDataMessage = () => (_jsx("div", { className: "text-copy-12 rounded
135
272
  backgroundColor: 'var(--ds-gray-100)',
136
273
  color: 'var(--ds-gray-700)',
137
274
  }, children: _jsx("span", { children: "The data for this run has expired and is no longer available." }) }));
138
- export const AttributeBlock = ({ attribute, value, isLoading, inline = false, }) => {
275
+ export const AttributeBlock = ({ attribute, value, isLoading, inline = false, context, }) => {
139
276
  const displayFn = attributeToDisplayFn[attribute];
140
277
  if (!displayFn) {
141
278
  return null;
142
279
  }
143
- const displayValue = displayFn(value);
280
+ const displayValue = displayFn(value, context);
144
281
  if (!displayValue) {
145
282
  return null;
146
283
  }
@@ -149,7 +286,7 @@ export const AttributeBlock = ({ attribute, value, isLoading, inline = false, })
149
286
  }
150
287
  return (_jsxs("div", { className: "relative", children: [typeof isLoading === 'boolean' && isLoading && (_jsx("div", { className: "absolute top-9 right-4", children: _jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2", style: { borderColor: 'var(--ds-gray-900)' } }) })), _jsxs("div", { className: "flex flex-col gap-0 my-2", children: [_jsx("span", { className: "text-xs font-medium", style: { color: 'var(--ds-gray-500)' }, children: attribute }), _jsx("span", { className: "text-xs", style: { color: 'var(--ds-gray-1000)' }, children: displayValue })] }, attribute)] }));
151
288
  };
152
- export const AttributePanel = ({ data, isLoading, error, expiredAt, }) => {
289
+ export const AttributePanel = ({ data, isLoading, error, expiredAt, onStreamClick, }) => {
153
290
  const displayData = data;
154
291
  const hasExpired = expiredAt != null && new Date(expiredAt) < new Date();
155
292
  const basicAttributes = Object.keys(displayData)
@@ -166,11 +303,15 @@ export const AttributePanel = ({ data, isLoading, error, expiredAt, }) => {
166
303
  const displayValue = displayFn(displayData[attribute]);
167
304
  return displayValue !== null;
168
305
  });
169
- return (_jsxs("div", { children: [visibleBasicAttributes.length > 0 && (_jsx("div", { className: "flex flex-col divide-y rounded-lg border mb-3 overflow-hidden", style: {
170
- borderColor: 'var(--ds-gray-300)',
171
- backgroundColor: 'var(--ds-gray-100)',
172
- }, children: visibleBasicAttributes.map((attribute) => (_jsxs("div", { className: "flex items-center justify-between px-3 py-1.5", style: {
306
+ // Memoize context object to avoid object reconstruction on render
307
+ const displayContext = useMemo(() => ({
308
+ stepName: displayData.stepName,
309
+ }), [displayData.stepName]);
310
+ return (_jsx(StreamClickContext.Provider, { value: onStreamClick, children: _jsxs("div", { children: [visibleBasicAttributes.length > 0 && (_jsx("div", { className: "flex flex-col divide-y rounded-lg border mb-3 overflow-hidden", style: {
173
311
  borderColor: 'var(--ds-gray-300)',
174
- }, children: [_jsx("span", { className: "text-[11px] font-medium", style: { color: 'var(--ds-gray-500)' }, children: attribute }), _jsx("span", { className: "text-[11px] font-mono", style: { color: 'var(--ds-gray-1000)' }, children: attributeToDisplayFn[attribute]?.(displayData[attribute]) })] }, attribute))) })), error ? (_jsxs(Alert, { variant: "destructive", className: "my-4", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx(AlertTitle, { children: "Failed to load resource details" }), _jsx(AlertDescription, { className: "text-sm", children: error.message })] })) : hasExpired ? (_jsx(ExpiredDataMessage, {})) : (resolvedAttributes.map((attribute) => (_jsx(AttributeBlock, { isLoading: isLoading, attribute: attribute, value: displayData[attribute] }, attribute))))] }));
312
+ backgroundColor: 'var(--ds-gray-100)',
313
+ }, children: visibleBasicAttributes.map((attribute) => (_jsxs("div", { className: "flex items-center justify-between px-3 py-1.5", style: {
314
+ borderColor: 'var(--ds-gray-300)',
315
+ }, children: [_jsx("span", { className: "text-[11px] font-medium", style: { color: 'var(--ds-gray-500)' }, children: attribute }), _jsx("span", { className: "text-[11px] font-mono", style: { color: 'var(--ds-gray-1000)' }, children: attributeToDisplayFn[attribute]?.(displayData[attribute]) })] }, attribute))) })), error ? (_jsxs(Alert, { variant: "destructive", className: "my-4", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx(AlertTitle, { children: "Failed to load resource details" }), _jsx(AlertDescription, { className: "text-sm", children: error.message })] })) : hasExpired ? (_jsx(ExpiredDataMessage, {})) : (resolvedAttributes.map((attribute) => (_jsx(AttributeBlock, { isLoading: isLoading, attribute: attribute, value: displayData[attribute], context: displayContext }, attribute))))] }) }));
175
316
  };
176
317
  //# sourceMappingURL=attribute-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-panel.js","sourceRoot":"","sources":["../../src/sidebar/attribute-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attribute-panel.js","sourceRoot":"","sources":["../../src/sidebar/attribute-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ModelMessage } from 'ai';
2
+ interface ConversationViewProps {
3
+ messages: ModelMessage[];
4
+ }
5
+ export declare function ConversationView({ messages }: ConversationViewProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=conversation-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-view.d.ts","sourceRoot":"","sources":["../../src/sidebar/conversation-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAGvC,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAmBnE"}
@@ -0,0 +1,125 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Streamdown } from 'streamdown';
3
+ export function ConversationView({ messages }) {
4
+ if (messages.length === 0) {
5
+ return (_jsx("div", { className: "text-center py-8 text-[11px]", style: { color: 'var(--ds-gray-600)' }, children: "No messages" }));
6
+ }
7
+ return (_jsx("div", { className: "flex flex-col gap-3 max-h-[400px] overflow-y-auto p-3", children: messages.map((message, index) => (_jsx(MessageBubble, { message: message }, index))) }));
8
+ }
9
+ function MessageBubble({ message }) {
10
+ const role = message.role;
11
+ const parts = parseContent(message.content);
12
+ const style = getRoleStyle(role);
13
+ return (_jsxs("div", { className: "rounded-md border text-[11px]", style: {
14
+ backgroundColor: style.bg,
15
+ borderColor: style.border,
16
+ }, children: [_jsx("div", { className: "px-2.5 py-1 border-b text-[10px] font-medium uppercase tracking-wide", style: {
17
+ borderColor: style.border,
18
+ color: style.label,
19
+ }, children: role }), _jsx("div", { className: "px-2.5 py-2 space-y-2", children: parts.map((part, i) => (_jsx(ContentPart, { part: part, role: role }, i))) })] }));
20
+ }
21
+ function ContentPart({ part, role }) {
22
+ if (part.type === 'text') {
23
+ if (!part.text)
24
+ return null;
25
+ // Use Streamdown for assistant messages (they often contain markdown)
26
+ if (role === 'assistant') {
27
+ return (_jsx("div", { className: "prose prose-sm max-w-none text-[11px] [&>*:first-child]:mt-0 [&>*:last-child]:mb-0", style: { color: 'var(--ds-gray-1000)' }, children: _jsx(Streamdown, { children: part.text }) }));
28
+ }
29
+ return (_jsx("div", { className: "whitespace-pre-wrap break-words", style: { color: 'var(--ds-gray-1000)' }, children: part.text }));
30
+ }
31
+ if (part.type === 'tool-call') {
32
+ return (_jsxs("div", { className: "rounded border px-2 py-1.5", style: {
33
+ backgroundColor: 'var(--ds-purple-100)',
34
+ borderColor: 'var(--ds-purple-300)',
35
+ }, children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] font-medium", children: [_jsx("span", { children: "\uD83D\uDD27" }), _jsx("span", { style: { color: 'var(--ds-purple-900)' }, children: part.toolName })] }), part.input != null && (_jsx("pre", { className: "mt-1.5 text-[10px] overflow-x-auto p-1.5 rounded", style: {
36
+ backgroundColor: 'var(--ds-gray-100)',
37
+ color: 'var(--ds-gray-800)',
38
+ }, children: typeof part.input === 'string'
39
+ ? part.input
40
+ : JSON.stringify(part.input, null, 2) }))] }));
41
+ }
42
+ if (part.type === 'tool-result') {
43
+ const outputText = formatOutput(part.output);
44
+ return (_jsxs("div", { className: "rounded border px-2 py-1.5", style: {
45
+ backgroundColor: 'var(--ds-green-100)',
46
+ borderColor: 'var(--ds-green-300)',
47
+ }, children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] font-medium", children: [_jsx("span", { children: "\u2713" }), _jsxs("span", { style: { color: 'var(--ds-green-900)' }, children: [part.toolName, " result"] })] }), outputText && (_jsx("pre", { className: "mt-1.5 text-[10px] overflow-x-auto max-h-[80px] p-1.5 rounded", style: {
48
+ backgroundColor: 'var(--ds-gray-100)',
49
+ color: 'var(--ds-gray-800)',
50
+ }, children: outputText }))] }));
51
+ }
52
+ return null;
53
+ }
54
+ function getRoleStyle(role) {
55
+ switch (role) {
56
+ case 'user':
57
+ return {
58
+ bg: 'var(--ds-blue-100)',
59
+ border: 'var(--ds-blue-300)',
60
+ label: 'var(--ds-blue-700)',
61
+ };
62
+ case 'assistant':
63
+ return {
64
+ bg: 'var(--ds-gray-100)',
65
+ border: 'var(--ds-gray-300)',
66
+ label: 'var(--ds-gray-700)',
67
+ };
68
+ case 'system':
69
+ return {
70
+ bg: 'var(--ds-amber-100)',
71
+ border: 'var(--ds-amber-300)',
72
+ label: 'var(--ds-amber-700)',
73
+ };
74
+ case 'tool':
75
+ return {
76
+ bg: 'var(--ds-green-50)',
77
+ border: 'var(--ds-green-300)',
78
+ label: 'var(--ds-green-700)',
79
+ };
80
+ default:
81
+ return {
82
+ bg: 'var(--ds-gray-100)',
83
+ border: 'var(--ds-gray-300)',
84
+ label: 'var(--ds-gray-700)',
85
+ };
86
+ }
87
+ }
88
+ function parseContent(content) {
89
+ if (typeof content === 'string') {
90
+ return [{ type: 'text', text: content }];
91
+ }
92
+ if (Array.isArray(content)) {
93
+ return content.map((part) => {
94
+ if (typeof part === 'string') {
95
+ return { type: 'text', text: part };
96
+ }
97
+ if (part?.type === 'text') {
98
+ return { type: 'text', text: String(part.text ?? '') };
99
+ }
100
+ if (part?.type === 'tool-call') {
101
+ return {
102
+ type: 'tool-call',
103
+ toolName: part.toolName,
104
+ input: part.input,
105
+ };
106
+ }
107
+ if (part?.type === 'tool-result') {
108
+ return {
109
+ type: 'tool-result',
110
+ toolName: part.toolName,
111
+ output: part.output,
112
+ };
113
+ }
114
+ return { type: 'text', text: '' };
115
+ });
116
+ }
117
+ return [];
118
+ }
119
+ function formatOutput(output) {
120
+ if (output == null)
121
+ return null;
122
+ const text = typeof output === 'string' ? output : JSON.stringify(output, null, 2);
123
+ return text.length > 500 ? `${text.slice(0, 500)}...` : text;
124
+ }
125
+ //# sourceMappingURL=conversation-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-view.js","sourceRoot":"","sources":["../../src/sidebar/conversation-view.tsx"],"names":[],"mappings":"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"}