@principal-ai/principal-view-react 0.7.39 → 0.7.41

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 (54) hide show
  1. package/dist/components/EdgeInfoPanel.d.ts.map +1 -1
  2. package/dist/components/EdgeInfoPanel.js +18 -12
  3. package/dist/components/EdgeInfoPanel.js.map +1 -1
  4. package/dist/components/NodeInfoPanel.d.ts.map +1 -1
  5. package/dist/components/NodeInfoPanel.js +46 -30
  6. package/dist/components/NodeInfoPanel.js.map +1 -1
  7. package/dist/components/NodeTooltip.d.ts.map +1 -1
  8. package/dist/components/NodeTooltip.js +11 -6
  9. package/dist/components/NodeTooltip.js.map +1 -1
  10. package/dist/components/SelectionSidebar.d.ts.map +1 -1
  11. package/dist/components/SelectionSidebar.js +24 -13
  12. package/dist/components/SelectionSidebar.js.map +1 -1
  13. package/dist/edges/CustomEdge.d.ts.map +1 -1
  14. package/dist/edges/CustomEdge.js +8 -4
  15. package/dist/edges/CustomEdge.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/nodes/CustomNode.d.ts.map +1 -1
  21. package/dist/nodes/CustomNode.js +32 -19
  22. package/dist/nodes/CustomNode.js.map +1 -1
  23. package/dist/utils/orientationUtils.d.ts +19 -0
  24. package/dist/utils/orientationUtils.d.ts.map +1 -0
  25. package/dist/utils/orientationUtils.js +62 -0
  26. package/dist/utils/orientationUtils.js.map +1 -0
  27. package/package.json +1 -2
  28. package/src/components/EdgeInfoPanel.tsx +20 -14
  29. package/src/components/NodeInfoPanel.tsx +48 -32
  30. package/src/components/NodeTooltip.tsx +11 -6
  31. package/src/components/SelectionSidebar.tsx +24 -13
  32. package/src/edges/CustomEdge.tsx +8 -4
  33. package/src/index.ts +5 -0
  34. package/src/nodes/CustomNode.tsx +32 -19
  35. package/src/stories/GraphOrientation.stories.tsx +500 -0
  36. package/src/utils/orientationUtils.ts +73 -0
  37. package/dist/components/NarrativeRenderer.d.ts +0 -19
  38. package/dist/components/NarrativeRenderer.d.ts.map +0 -1
  39. package/dist/components/NarrativeRenderer.js +0 -103
  40. package/dist/components/NarrativeRenderer.js.map +0 -1
  41. package/dist/components/TestEventPanel.d.ts +0 -44
  42. package/dist/components/TestEventPanel.d.ts.map +0 -1
  43. package/dist/components/TestEventPanel.js +0 -277
  44. package/dist/components/TestEventPanel.js.map +0 -1
  45. package/dist/utils/narrative-converter.d.ts +0 -45
  46. package/dist/utils/narrative-converter.d.ts.map +0 -1
  47. package/dist/utils/narrative-converter.js +0 -121
  48. package/dist/utils/narrative-converter.js.map +0 -1
  49. package/dist/utils/narrative-loader.d.ts +0 -53
  50. package/dist/utils/narrative-loader.d.ts.map +0 -1
  51. package/dist/utils/narrative-loader.js +0 -163
  52. package/dist/utils/narrative-loader.js.map +0 -1
  53. package/src/stories/RealTestExecution.stories.tsx +0 -404
  54. package/src/stories/ValidatedExecution.stories.tsx +0 -158
@@ -1 +0,0 @@
1
- {"version":3,"file":"NarrativeRenderer.js","sourceRoot":"","sources":["../../src/components/NarrativeRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- import React from 'react';
2
- import type { NarrativeTemplate, JsonValue } from '@principal-ai/principal-view-core/browser';
3
- interface SpanEvent {
4
- time: number;
5
- name: string;
6
- attributes: Record<string, string | number | boolean>;
7
- }
8
- interface TestSpan {
9
- id: string;
10
- name: string;
11
- startTime: number;
12
- endTime?: number;
13
- duration?: number;
14
- attributes: Record<string, string | number | boolean>;
15
- events: SpanEvent[];
16
- status: 'OK' | 'ERROR';
17
- errorMessage?: string;
18
- }
19
- export type OtelSeverity = 'TRACE' | 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'FATAL';
20
- export interface OtelLog {
21
- timestamp: number;
22
- severity: OtelSeverity;
23
- body: string | Record<string, unknown>;
24
- resource: Record<string, string | number>;
25
- attributes?: Record<string, JsonValue>;
26
- traceId?: string;
27
- spanId?: string;
28
- }
29
- export type ViewMode = 'raw' | 'narrative';
30
- export interface TestEventPanelProps {
31
- spans: TestSpan[];
32
- logs?: OtelLog[];
33
- currentSpanIndex: number;
34
- currentEventIndex: number;
35
- highlightedPhase?: string;
36
- onSpanIndexChange?: (index: number) => void;
37
- viewMode?: ViewMode;
38
- narrativeTemplate?: NarrativeTemplate;
39
- onViewModeChange?: (mode: ViewMode) => void;
40
- showNarrativeMetadata?: boolean;
41
- }
42
- export declare const TestEventPanel: React.FC<TestEventPanelProps>;
43
- export {};
44
- //# sourceMappingURL=TestEventPanel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestEventPanel.d.ts","sourceRoot":"","sources":["../../src/components/TestEventPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAI9F,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACvD;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgBD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAG5C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA2BD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4exD,CAAC"}
@@ -1,277 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useMemo } from 'react';
3
- import { useTheme } from '@principal-ade/industry-theme';
4
- import { HelpCircle } from 'lucide-react';
5
- import yaml from 'js-yaml';
6
- import { NarrativeRenderer } from './NarrativeRenderer';
7
- import { convertToOtelEvents } from '../utils/narrative-converter';
8
- // Helper functions for log severity
9
- function getSeverityColor(severity) {
10
- const colors = {
11
- TRACE: '#6b7280',
12
- DEBUG: '#60a5fa',
13
- INFO: '#4ade80',
14
- WARN: '#fbbf24',
15
- ERROR: '#f87171',
16
- FATAL: '#dc2626',
17
- };
18
- return colors[severity] || '#9ca3af';
19
- }
20
- function getSeverityIcon(severity) {
21
- const icons = {
22
- TRACE: '○',
23
- DEBUG: '◐',
24
- INFO: '●',
25
- WARN: '⚠',
26
- ERROR: '✕',
27
- FATAL: '☠',
28
- };
29
- return icons[severity] || '•';
30
- }
31
- export const TestEventPanel = ({ spans, logs = [], currentSpanIndex, currentEventIndex, highlightedPhase, onSpanIndexChange, viewMode = 'raw', narrativeTemplate, onViewModeChange, showNarrativeMetadata = false, }) => {
32
- const { theme } = useTheme();
33
- const [showHelp, setShowHelp] = useState(false);
34
- const currentSpan = spans[currentSpanIndex];
35
- // Convert current span to OtelEvents for narrative rendering
36
- const otelEvents = useMemo(() => {
37
- if (!currentSpan || viewMode !== 'narrative')
38
- return [];
39
- return convertToOtelEvents(currentSpan, logs);
40
- }, [currentSpan, logs, viewMode]);
41
- const handlePrevTest = () => {
42
- if (currentSpanIndex > 0 && onSpanIndexChange) {
43
- onSpanIndexChange(currentSpanIndex - 1);
44
- }
45
- };
46
- const handleNextTest = () => {
47
- if (currentSpanIndex < spans.length - 1 && onSpanIndexChange) {
48
- onSpanIndexChange(currentSpanIndex + 1);
49
- }
50
- };
51
- // Build interleaved timeline
52
- const timeline = useMemo(() => {
53
- if (!currentSpan)
54
- return [];
55
- const items = [
56
- // Span events
57
- ...currentSpan.events.slice(0, currentEventIndex + 1).map((event) => ({
58
- type: 'event',
59
- time: event.time,
60
- name: event.name,
61
- attributes: event.attributes,
62
- })),
63
- // Correlated logs (matching current span's traceId)
64
- ...logs
65
- .filter((log) => log.traceId === currentSpan.id)
66
- .map((log) => ({
67
- type: 'log',
68
- time: typeof log.timestamp === 'number' ? log.timestamp : new Date(log.timestamp).getTime(),
69
- severity: log.severity,
70
- body: log.body,
71
- resource: log.resource,
72
- attributes: log.attributes,
73
- })),
74
- ].sort((a, b) => a.time - b.time);
75
- return items;
76
- }, [currentSpan, currentEventIndex, logs]);
77
- return (_jsxs("div", { style: {
78
- width: '100%',
79
- height: '100%',
80
- backgroundColor: theme.colors.background,
81
- color: theme.colors.text,
82
- fontFamily: theme.fonts.monospace,
83
- fontSize: '14px',
84
- boxSizing: 'border-box',
85
- display: 'flex',
86
- flexDirection: 'column',
87
- }, children: [_jsxs("div", { style: {
88
- padding: '20px 20px 0 20px',
89
- backgroundColor: theme.colors.background,
90
- borderBottom: `1px solid ${theme.colors.border}`,
91
- flexShrink: 0,
92
- }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '12px' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '12px' }, children: [_jsx("button", { onClick: handlePrevTest, disabled: currentSpanIndex === 0, style: {
93
- padding: '4px 12px',
94
- background: theme.colors.surface,
95
- border: `1px solid ${theme.colors.border}`,
96
- borderRadius: '4px',
97
- color: currentSpanIndex === 0 ? theme.colors.textMuted : theme.colors.text,
98
- cursor: currentSpanIndex === 0 ? 'not-allowed' : 'pointer',
99
- fontSize: '14px',
100
- opacity: currentSpanIndex === 0 ? 0.5 : 1,
101
- }, children: "\u2190 Prev" }), _jsxs("div", { style: { fontSize: '14px', fontWeight: 'bold' }, children: ["Test ", currentSpanIndex + 1, " of ", spans.length] }), _jsx("button", { onClick: handleNextTest, disabled: currentSpanIndex === spans.length - 1, style: {
102
- padding: '4px 12px',
103
- background: theme.colors.surface,
104
- border: `1px solid ${theme.colors.border}`,
105
- borderRadius: '4px',
106
- color: currentSpanIndex === spans.length - 1 ? theme.colors.textMuted : theme.colors.text,
107
- cursor: currentSpanIndex === spans.length - 1 ? 'not-allowed' : 'pointer',
108
- fontSize: '14px',
109
- opacity: currentSpanIndex === spans.length - 1 ? 0.5 : 1,
110
- }, children: "Next \u2192" })] }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '12px' }, children: [_jsx("div", { style: { fontSize: '13px', color: theme.colors.textMuted }, children: _jsx("span", { style: { color: '#4ade80' }, children: "All Passed \u2713" }) }), _jsx("button", { onClick: () => setShowHelp(true), style: {
111
- background: 'transparent',
112
- border: 'none',
113
- cursor: 'pointer',
114
- padding: '4px',
115
- display: 'flex',
116
- alignItems: 'center',
117
- color: theme.colors.textMuted,
118
- }, onMouseEnter: (e) => {
119
- e.currentTarget.style.color = theme.colors.text;
120
- }, onMouseLeave: (e) => {
121
- e.currentTarget.style.color = theme.colors.textMuted;
122
- }, children: _jsx(HelpCircle, { size: 20 }) })] })] }), narrativeTemplate && onViewModeChange && (_jsxs("div", { style: { display: 'flex', gap: '8px', marginBottom: '12px' }, children: [_jsx("button", { onClick: () => onViewModeChange('raw'), style: {
123
- padding: '6px 12px',
124
- background: viewMode === 'raw' ? theme.colors.primary : theme.colors.surface,
125
- border: `1px solid ${theme.colors.border}`,
126
- borderRadius: '4px',
127
- color: viewMode === 'raw' ? '#ffffff' : theme.colors.text,
128
- cursor: 'pointer',
129
- fontSize: '13px',
130
- fontWeight: viewMode === 'raw' ? 'bold' : 'normal',
131
- }, children: "Raw Events" }), _jsx("button", { onClick: () => onViewModeChange('narrative'), style: {
132
- padding: '6px 12px',
133
- background: viewMode === 'narrative' ? theme.colors.primary : theme.colors.surface,
134
- border: `1px solid ${theme.colors.border}`,
135
- borderRadius: '4px',
136
- color: viewMode === 'narrative' ? '#ffffff' : theme.colors.text,
137
- cursor: 'pointer',
138
- fontSize: '13px',
139
- fontWeight: viewMode === 'narrative' ? 'bold' : 'normal',
140
- }, children: "Narrative" })] })), _jsxs("div", { style: { fontSize: '13px', color: theme.colors.textMuted, marginBottom: '15px' }, children: ["Test: ", currentSpan?.name || 'Loading...'] })] }), showHelp && (_jsx("div", { style: {
141
- position: 'fixed',
142
- top: 0,
143
- left: 0,
144
- right: 0,
145
- bottom: 0,
146
- backgroundColor: 'rgba(0, 0, 0, 0.7)',
147
- display: 'flex',
148
- alignItems: 'center',
149
- justifyContent: 'center',
150
- zIndex: 9999,
151
- }, onClick: () => setShowHelp(false), children: _jsxs("div", { style: {
152
- backgroundColor: theme.colors.background,
153
- color: theme.colors.text,
154
- padding: '24px',
155
- borderRadius: '8px',
156
- maxWidth: '600px',
157
- border: `1px solid ${theme.colors.border}`,
158
- }, onClick: (e) => e.stopPropagation(), children: [_jsx("div", { style: { fontWeight: 'bold', fontSize: '18px', marginBottom: '16px' }, children: "How to Read This Panel" }), _jsxs("div", { style: { fontSize: '14px', marginBottom: '16px', lineHeight: '1.6' }, children: [_jsx("p", { style: { marginBottom: '12px' }, children: _jsx("strong", { children: "Timeline shows both events and logs:" }) }), _jsxs("ul", { style: { marginLeft: '20px', marginBottom: '16px' }, children: [_jsxs("li", { style: { marginBottom: '8px' }, children: [_jsx("span", { style: { color: '#f59e0b' }, children: "\uD83D\uDFE7 Events" }), " - Structured lifecycle points"] }), _jsxs("li", { style: { marginBottom: '8px' }, children: [_jsx("span", { style: { color: '#4ade80' }, children: "\u25CF Logs" }), " - Standalone log records (color = severity)"] }), _jsx("li", { style: { marginBottom: '8px' }, children: _jsx("span", { style: { color: '#60a5fa' }, children: "Blue = Test file" }) }), _jsx("li", { children: _jsx("span", { style: { color: '#4ade80' }, children: "Green \u2192 Code under test" }) })] })] }), _jsx("button", { onClick: () => setShowHelp(false), style: {
159
- padding: '8px 16px',
160
- backgroundColor: theme.colors.primary,
161
- color: '#ffffff',
162
- border: 'none',
163
- borderRadius: '4px',
164
- cursor: 'pointer',
165
- fontSize: '14px',
166
- fontWeight: 500,
167
- }, children: "Got it" })] }) })), _jsxs("div", { style: {
168
- flex: 1,
169
- overflow: 'auto',
170
- padding: viewMode === 'narrative' ? '0' : '20px',
171
- }, children: [viewMode === 'narrative' && narrativeTemplate && currentSpan ? (_jsx(NarrativeRenderer, { template: narrativeTemplate, events: otelEvents, showMetadata: showNarrativeMetadata })) : viewMode === 'narrative' && !narrativeTemplate ? (_jsxs("div", { style: {
172
- padding: '40px 20px',
173
- textAlign: 'center',
174
- color: theme.colors.textMuted,
175
- }, children: [_jsx("div", { style: { fontSize: '16px', marginBottom: '12px' }, children: "\u24D8 No narrative template available" }), _jsxs("div", { style: { fontSize: '14px', lineHeight: '1.6' }, children: ["Create a narrative template to see a human-readable", _jsx("br", {}), "summary of this test execution."] }), _jsx("button", { onClick: () => onViewModeChange?.('raw'), style: {
176
- marginTop: '20px',
177
- padding: '8px 16px',
178
- background: theme.colors.primary,
179
- color: '#ffffff',
180
- border: 'none',
181
- borderRadius: '4px',
182
- cursor: 'pointer',
183
- fontSize: '14px',
184
- }, children: "View Raw Events" })] })) : null, viewMode === 'raw' && currentSpan && (_jsx("div", { children: timeline.map((item, idx) => {
185
- if (item.type === 'event') {
186
- // SPAN EVENT RENDERING
187
- const filepath = item.attributes?.['code.filepath'];
188
- const lineno = item.attributes?.['code.lineno'];
189
- const isCodeUnderTest = filepath && filepath !== 'GraphConverter.test.ts';
190
- // Determine which phase this event belongs to
191
- const eventPhase = item.name?.split('.')[0]; // 'setup', 'execution', 'assertion'
192
- const isHighlighted = highlightedPhase === eventPhase;
193
- return (_jsxs("div", { style: {
194
- marginBottom: '12px',
195
- paddingBottom: '12px',
196
- paddingLeft: '12px',
197
- borderBottom: idx < timeline.length - 1 ? `1px solid ${theme.colors.border}` : 'none',
198
- borderLeft: '3px solid #f59e0b',
199
- opacity: highlightedPhase && !isHighlighted ? 0.4 : 1,
200
- transition: 'opacity 0.2s ease',
201
- transform: isHighlighted ? 'scale(1.02)' : 'scale(1)',
202
- backgroundColor: isHighlighted ? theme.colors.surface : 'transparent',
203
- padding: isHighlighted ? '8px 8px 8px 12px' : '0 0 12px 12px',
204
- borderRadius: '4px',
205
- }, children: [_jsxs("div", { style: {
206
- display: 'flex',
207
- justifyContent: 'space-between',
208
- alignItems: 'center',
209
- marginBottom: '4px',
210
- gap: '8px',
211
- }, children: [_jsxs("div", { style: { color: '#f59e0b', fontSize: '13px', fontWeight: 'bold', flexShrink: 0 }, children: ["EVENT: ", item.name] }), filepath && (_jsxs("div", { style: {
212
- fontSize: '12px',
213
- color: isCodeUnderTest ? '#4ade80' : '#60a5fa',
214
- fontFamily: 'monospace',
215
- background: isCodeUnderTest ? '#064e3b' : '#1e3a8a',
216
- padding: '2px 6px',
217
- borderRadius: '3px',
218
- flexShrink: 1,
219
- minWidth: 0,
220
- overflow: 'hidden',
221
- textOverflow: 'ellipsis',
222
- whiteSpace: 'nowrap',
223
- }, children: [isCodeUnderTest && '→ ', filepath, ":", lineno] }))] }), _jsx("pre", { style: {
224
- background: theme.colors.surface,
225
- padding: '8px',
226
- borderRadius: '4px',
227
- margin: 0,
228
- fontSize: '13px',
229
- lineHeight: '1.5',
230
- overflow: 'auto',
231
- maxWidth: '100%',
232
- }, children: yaml.dump(Object.fromEntries(Object.entries(item.attributes || {}).filter(([key]) => key !== 'code.filepath' && key !== 'code.lineno')), { indent: 2, lineWidth: -1 }) })] }, idx));
233
- }
234
- else {
235
- // OTEL LOG RENDERING
236
- const serviceName = item.resource?.['service.name'];
237
- const severityColor = getSeverityColor(item.severity);
238
- return (_jsxs("div", { style: {
239
- marginBottom: '12px',
240
- paddingBottom: '12px',
241
- paddingLeft: '12px',
242
- borderBottom: idx < timeline.length - 1 ? `1px solid ${theme.colors.border}` : 'none',
243
- borderLeft: `3px solid ${severityColor}`,
244
- }, children: [_jsxs("div", { style: {
245
- display: 'flex',
246
- justifyContent: 'space-between',
247
- alignItems: 'center',
248
- marginBottom: '4px',
249
- }, children: [_jsxs("div", { style: { display: 'flex', gap: '8px', alignItems: 'center' }, children: [_jsx("span", { style: { fontSize: '16px' }, children: getSeverityIcon(item.severity) }), _jsxs("span", { style: {
250
- color: severityColor,
251
- fontSize: '13px',
252
- fontWeight: 'bold',
253
- }, children: ["LOG: ", item.severity] })] }), serviceName && (_jsx("div", { style: {
254
- fontSize: '12px',
255
- color: '#9ca3af',
256
- background: '#1e293b',
257
- padding: '2px 6px',
258
- borderRadius: '3px',
259
- }, children: serviceName }))] }), _jsx("div", { style: {
260
- background: theme.colors.surface,
261
- padding: '8px',
262
- borderRadius: '4px',
263
- marginBottom: item.attributes && Object.keys(item.attributes).length > 0 ? '8px' : '0',
264
- fontSize: '13px',
265
- }, children: typeof item.body === 'string' ? (item.body) : (_jsx("pre", { style: { margin: 0, fontSize: '13px', lineHeight: '1.5' }, children: yaml.dump(item.body, { indent: 2, lineWidth: -1 }) })) }), item.attributes && Object.keys(item.attributes).length > 0 && (_jsx("pre", { style: {
266
- background: theme.colors.surface,
267
- padding: '8px',
268
- borderRadius: '4px',
269
- margin: 0,
270
- fontSize: '12px',
271
- lineHeight: '1.5',
272
- opacity: 0.8,
273
- }, children: yaml.dump(item.attributes, { indent: 2, lineWidth: -1 }) }))] }, idx));
274
- }
275
- }) }))] })] }));
276
- };
277
- //# sourceMappingURL=TestEventPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestEventPanel.js","sourceRoot":"","sources":["../../src/components/TestEventPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Utilities for converting TestEventPanel data to OtelEvent format
3
- * for use with the narrative renderer
4
- */
5
- import type { OtelEvent } from '@principal-ai/principal-view-core/browser';
6
- import type { OtelLog } from '../components/TestEventPanel';
7
- interface SpanEvent {
8
- time: number;
9
- name: string;
10
- attributes: Record<string, string | number | boolean>;
11
- }
12
- interface TestSpan {
13
- id: string;
14
- name: string;
15
- startTime: number;
16
- endTime?: number;
17
- duration?: number;
18
- attributes: Record<string, string | number | boolean>;
19
- events: SpanEvent[];
20
- status: 'OK' | 'ERROR';
21
- errorMessage?: string;
22
- }
23
- /**
24
- * Convert TestSpan and OtelLogs to OtelEvent array
25
- *
26
- * @param span - The test span to convert
27
- * @param logs - Optional OTEL logs to include
28
- * @returns Array of OtelEvents in chronological order
29
- */
30
- export declare function convertToOtelEvents(span: TestSpan, logs?: OtelLog[]): OtelEvent[];
31
- /**
32
- * Convert all TestSpans to OtelEvents
33
- *
34
- * @param spans - Array of test spans
35
- * @param logs - Optional OTEL logs to include
36
- * @returns Array of OtelEvents for all spans
37
- */
38
- export declare function convertAllSpansToOtelEvents(spans: TestSpan[], logs?: OtelLog[]): OtelEvent[];
39
- /**
40
- * Extract test result attributes from TestSpan
41
- * Useful for narrative templates that check assertions
42
- */
43
- export declare function extractTestAttributes(span: TestSpan): Record<string, unknown>;
44
- export {};
45
- //# sourceMappingURL=narrative-converter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"narrative-converter.d.ts","sourceRoot":"","sources":["../../src/utils/narrative-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,8BAA8B,CAAC;AAG1E,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACvD;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA6DD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAO,EAAO,GAAG,SAAS,EAAE,CAerF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAE,OAAO,EAAO,GAAG,SAAS,EAAE,CAchG;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmB7E"}
@@ -1,121 +0,0 @@
1
- /**
2
- * Utilities for converting TestEventPanel data to OtelEvent format
3
- * for use with the narrative renderer
4
- */
5
- /**
6
- * Convert OtelSeverity to severity number (OpenTelemetry spec)
7
- */
8
- function severityToNumber(severity) {
9
- const severityMap = {
10
- TRACE: 1,
11
- DEBUG: 5,
12
- INFO: 9,
13
- WARN: 13,
14
- ERROR: 17,
15
- FATAL: 21,
16
- };
17
- return severityMap[severity] || 9;
18
- }
19
- /**
20
- * Convert TestSpan events to OtelEvent spans
21
- */
22
- function convertSpanEvents(span) {
23
- return span.events.map((event) => ({
24
- name: event.name,
25
- timestamp: event.time,
26
- type: 'span',
27
- spanId: span.id,
28
- traceId: span.id,
29
- attributes: event.attributes,
30
- }));
31
- }
32
- /**
33
- * Convert OtelLogs to OtelEvent logs
34
- */
35
- function convertLogs(logs) {
36
- return logs.map((log) => {
37
- // Filter out null values from attributes (OtelAttributeValue doesn't include null)
38
- const filterNullValues = (obj) => {
39
- if (!obj)
40
- return {};
41
- return Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== null));
42
- };
43
- return {
44
- name: 'log',
45
- timestamp: typeof log.timestamp === 'number' ? log.timestamp : new Date(log.timestamp).getTime(),
46
- type: 'log',
47
- spanId: log.spanId,
48
- traceId: log.traceId,
49
- severityText: log.severity,
50
- severityNumber: severityToNumber(log.severity),
51
- body: typeof log.body === 'string' ? log.body : JSON.stringify(log.body),
52
- attributes: {
53
- ...filterNullValues(log.attributes),
54
- ...filterNullValues(log.resource),
55
- },
56
- };
57
- });
58
- }
59
- /**
60
- * Convert TestSpan and OtelLogs to OtelEvent array
61
- *
62
- * @param span - The test span to convert
63
- * @param logs - Optional OTEL logs to include
64
- * @returns Array of OtelEvents in chronological order
65
- */
66
- export function convertToOtelEvents(span, logs = []) {
67
- const spanEvents = convertSpanEvents(span);
68
- // Filter logs for this specific span
69
- const spanLogs = logs.filter((log) => log.spanId === span.id || log.traceId === span.id);
70
- const logEvents = convertLogs(spanLogs);
71
- // Combine and sort by timestamp
72
- const allEvents = [...spanEvents, ...logEvents].sort((a, b) => {
73
- const aTime = typeof a.timestamp === 'number' ? a.timestamp : new Date(a.timestamp).getTime();
74
- const bTime = typeof b.timestamp === 'number' ? b.timestamp : new Date(b.timestamp).getTime();
75
- return aTime - bTime;
76
- });
77
- return allEvents;
78
- }
79
- /**
80
- * Convert all TestSpans to OtelEvents
81
- *
82
- * @param spans - Array of test spans
83
- * @param logs - Optional OTEL logs to include
84
- * @returns Array of OtelEvents for all spans
85
- */
86
- export function convertAllSpansToOtelEvents(spans, logs = []) {
87
- const allEvents = [];
88
- for (const span of spans) {
89
- const spanEvents = convertToOtelEvents(span, logs);
90
- allEvents.push(...spanEvents);
91
- }
92
- // Sort all events chronologically
93
- return allEvents.sort((a, b) => {
94
- const aTime = typeof a.timestamp === 'number' ? a.timestamp : new Date(a.timestamp).getTime();
95
- const bTime = typeof b.timestamp === 'number' ? b.timestamp : new Date(b.timestamp).getTime();
96
- return aTime - bTime;
97
- });
98
- }
99
- /**
100
- * Extract test result attributes from TestSpan
101
- * Useful for narrative templates that check assertions
102
- */
103
- export function extractTestAttributes(span) {
104
- // Find assertion.complete event
105
- const assertionComplete = span.events.find((e) => e.name === 'assertion.complete');
106
- if (assertionComplete) {
107
- return {
108
- 'assertions.passed': assertionComplete.attributes['assertions.passed'] || 0,
109
- 'assertions.failed': assertionComplete.attributes['assertions.failed'] || 0,
110
- 'test.status': span.status,
111
- 'test.name': span.name,
112
- ...span.attributes,
113
- };
114
- }
115
- return {
116
- 'test.status': span.status,
117
- 'test.name': span.name,
118
- ...span.attributes,
119
- };
120
- }
121
- //# sourceMappingURL=narrative-converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"narrative-converter.js","sourceRoot":"","sources":["../../src/utils/narrative-converter.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Utilities for loading and managing narrative templates
3
- */
4
- import type { NarrativeTemplate } from '@principal-ai/principal-view-core/browser';
5
- /**
6
- * Load a narrative template from a URL or file path
7
- *
8
- * Note: In most cases, you should import templates directly:
9
- * import template from './my-template.narrative.json';
10
- *
11
- * This function is useful when you need to dynamically load templates.
12
- *
13
- * @param path - Path to the narrative template JSON file
14
- * @returns Promise resolving to the narrative template, or null if not found
15
- */
16
- export declare function loadNarrativeTemplate(path: string): Promise<NarrativeTemplate | null>;
17
- /**
18
- * Auto-discover narrative template for a given canvas path
19
- *
20
- * Example:
21
- * Canvas: "/path/to/graph-converter.otel.canvas"
22
- * Narrative: "/path/to/graph-converter.narrative.json"
23
- *
24
- * @param canvasPath - Path to the .otel.canvas file
25
- * @returns Promise resolving to the narrative template, or null if not found
26
- */
27
- export declare function discoverNarrativeTemplate(canvasPath: string): Promise<NarrativeTemplate | null>;
28
- /**
29
- * Validate a narrative template has required fields
30
- *
31
- * @param template - Template to validate
32
- * @returns True if valid, false otherwise
33
- */
34
- export declare function validateNarrativeTemplate(template: unknown): template is NarrativeTemplate;
35
- /**
36
- * Get a user-friendly error message for invalid templates
37
- *
38
- * @param template - Template to check
39
- * @returns Error message, or null if valid
40
- */
41
- export declare function getNarrativeTemplateError(template: unknown): string | null;
42
- /**
43
- * React hook for loading narrative templates
44
- *
45
- * @param templatePath - Path to template, or null to skip loading
46
- * @returns {template, loading, error}
47
- */
48
- export declare function useNarrativeTemplate(templatePath: string | null): {
49
- template: NarrativeTemplate | null;
50
- loading: boolean;
51
- error: string | null;
52
- };
53
- //# sourceMappingURL=narrative-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"narrative-loader.d.ts","sourceRoot":"","sources":["../../src/utils/narrative-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAa3F;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAGrG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,iBAAiB,CAyB1F;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA+B1E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;;;;EA0C/D"}