footprint-explainable-ui 0.3.2 → 0.5.0

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 (161) hide show
  1. package/README.md +42 -3
  2. package/dist/adapters/fromRuntimeSnapshot.d.ts +52 -0
  3. package/dist/adapters/fromRuntimeSnapshot.d.ts.map +1 -0
  4. package/dist/adapters/fromRuntimeSnapshot.js +97 -0
  5. package/dist/adapters/fromRuntimeSnapshot.js.map +1 -0
  6. package/dist/components/ExplainableShell/ExplainableShell.d.ts +26 -0
  7. package/dist/components/ExplainableShell/ExplainableShell.d.ts.map +1 -0
  8. package/dist/components/ExplainableShell/ExplainableShell.js +94 -0
  9. package/dist/components/ExplainableShell/ExplainableShell.js.map +1 -0
  10. package/dist/components/ExplainableShell/index.d.ts +3 -0
  11. package/dist/components/ExplainableShell/index.d.ts.map +1 -0
  12. package/dist/components/ExplainableShell/index.js +2 -0
  13. package/dist/components/ExplainableShell/index.js.map +1 -0
  14. package/dist/components/FlowchartView/FlowchartView.d.ts +20 -0
  15. package/dist/components/FlowchartView/FlowchartView.d.ts.map +1 -0
  16. package/dist/components/FlowchartView/FlowchartView.js +80 -0
  17. package/dist/components/FlowchartView/FlowchartView.js.map +1 -0
  18. package/dist/components/FlowchartView/SubflowBreadcrumb.d.ts +11 -0
  19. package/dist/components/FlowchartView/SubflowBreadcrumb.d.ts.map +1 -0
  20. package/dist/components/FlowchartView/SubflowBreadcrumb.js +49 -0
  21. package/dist/components/FlowchartView/SubflowBreadcrumb.js.map +1 -0
  22. package/dist/components/FlowchartView/SubflowTree.d.ts +36 -0
  23. package/dist/components/FlowchartView/SubflowTree.d.ts.map +1 -0
  24. package/dist/components/FlowchartView/SubflowTree.js +143 -0
  25. package/dist/components/FlowchartView/SubflowTree.js.map +1 -0
  26. package/dist/components/FlowchartView/TracedFlowchartView.d.ts +20 -0
  27. package/dist/components/FlowchartView/TracedFlowchartView.d.ts.map +1 -0
  28. package/dist/components/FlowchartView/TracedFlowchartView.js +101 -0
  29. package/dist/components/FlowchartView/TracedFlowchartView.js.map +1 -0
  30. package/dist/components/FlowchartView/index.d.ts +11 -0
  31. package/dist/components/FlowchartView/index.d.ts.map +1 -0
  32. package/dist/components/FlowchartView/index.js +6 -0
  33. package/dist/components/FlowchartView/index.js.map +1 -0
  34. package/dist/components/FlowchartView/specToReactFlow.d.ts +56 -0
  35. package/dist/components/FlowchartView/specToReactFlow.d.ts.map +1 -0
  36. package/dist/components/FlowchartView/specToReactFlow.js +202 -0
  37. package/dist/components/FlowchartView/specToReactFlow.js.map +1 -0
  38. package/dist/components/FlowchartView/useSubflowNavigation.d.ts +35 -0
  39. package/dist/components/FlowchartView/useSubflowNavigation.d.ts.map +1 -0
  40. package/dist/components/FlowchartView/useSubflowNavigation.js +80 -0
  41. package/dist/components/FlowchartView/useSubflowNavigation.js.map +1 -0
  42. package/dist/components/GanttTimeline/GanttTimeline.d.ts +18 -0
  43. package/dist/components/GanttTimeline/GanttTimeline.d.ts.map +1 -0
  44. package/dist/components/GanttTimeline/GanttTimeline.js +123 -0
  45. package/dist/components/GanttTimeline/GanttTimeline.js.map +1 -0
  46. package/dist/components/GanttTimeline/index.d.ts +3 -0
  47. package/dist/components/GanttTimeline/index.d.ts.map +1 -0
  48. package/dist/components/GanttTimeline/index.js +2 -0
  49. package/dist/components/GanttTimeline/index.js.map +1 -0
  50. package/dist/components/MemoryInspector/MemoryInspector.d.ts +19 -0
  51. package/dist/components/MemoryInspector/MemoryInspector.d.ts.map +1 -0
  52. package/dist/components/MemoryInspector/MemoryInspector.js +95 -0
  53. package/dist/components/MemoryInspector/MemoryInspector.js.map +1 -0
  54. package/dist/components/MemoryInspector/index.d.ts +3 -0
  55. package/dist/components/MemoryInspector/index.d.ts.map +1 -0
  56. package/dist/components/MemoryInspector/index.js +2 -0
  57. package/dist/components/MemoryInspector/index.js.map +1 -0
  58. package/dist/components/NarrativeLog/NarrativeLog.d.ts +15 -0
  59. package/dist/components/NarrativeLog/NarrativeLog.d.ts.map +1 -0
  60. package/dist/components/NarrativeLog/NarrativeLog.js +65 -0
  61. package/dist/components/NarrativeLog/NarrativeLog.js.map +1 -0
  62. package/dist/components/NarrativeLog/index.d.ts +3 -0
  63. package/dist/components/NarrativeLog/index.d.ts.map +1 -0
  64. package/dist/components/NarrativeLog/index.js +2 -0
  65. package/dist/components/NarrativeLog/index.js.map +1 -0
  66. package/dist/components/NarrativeTrace/NarrativeTrace.d.ts +13 -0
  67. package/dist/components/NarrativeTrace/NarrativeTrace.d.ts.map +1 -0
  68. package/dist/components/NarrativeTrace/NarrativeTrace.js +127 -0
  69. package/dist/components/NarrativeTrace/NarrativeTrace.js.map +1 -0
  70. package/dist/components/NarrativeTrace/index.d.ts +3 -0
  71. package/dist/components/NarrativeTrace/index.d.ts.map +1 -0
  72. package/dist/components/NarrativeTrace/index.js +2 -0
  73. package/dist/components/NarrativeTrace/index.js.map +1 -0
  74. package/dist/components/ResultPanel/ResultPanel.d.ts +11 -0
  75. package/dist/components/ResultPanel/ResultPanel.d.ts.map +1 -0
  76. package/dist/components/ResultPanel/ResultPanel.js +54 -0
  77. package/dist/components/ResultPanel/ResultPanel.js.map +1 -0
  78. package/dist/components/ResultPanel/index.d.ts +3 -0
  79. package/dist/components/ResultPanel/index.d.ts.map +1 -0
  80. package/dist/components/ResultPanel/index.js +2 -0
  81. package/dist/components/ResultPanel/index.js.map +1 -0
  82. package/dist/components/ScopeDiff/ScopeDiff.d.ts +17 -0
  83. package/dist/components/ScopeDiff/ScopeDiff.d.ts.map +1 -0
  84. package/dist/components/ScopeDiff/ScopeDiff.js +87 -0
  85. package/dist/components/ScopeDiff/ScopeDiff.js.map +1 -0
  86. package/dist/components/ScopeDiff/index.d.ts +3 -0
  87. package/dist/components/ScopeDiff/index.d.ts.map +1 -0
  88. package/dist/components/ScopeDiff/index.js +2 -0
  89. package/dist/components/ScopeDiff/index.js.map +1 -0
  90. package/dist/components/SnapshotPanel/SnapshotPanel.d.ts +17 -0
  91. package/dist/components/SnapshotPanel/SnapshotPanel.d.ts.map +1 -0
  92. package/dist/components/SnapshotPanel/SnapshotPanel.js +85 -0
  93. package/dist/components/SnapshotPanel/SnapshotPanel.js.map +1 -0
  94. package/dist/components/SnapshotPanel/index.d.ts +3 -0
  95. package/dist/components/SnapshotPanel/index.d.ts.map +1 -0
  96. package/dist/components/SnapshotPanel/index.js +2 -0
  97. package/dist/components/SnapshotPanel/index.js.map +1 -0
  98. package/dist/components/StageNode/StageNode.d.ts +31 -0
  99. package/dist/components/StageNode/StageNode.d.ts.map +1 -0
  100. package/dist/components/StageNode/StageNode.js +134 -0
  101. package/dist/components/StageNode/StageNode.js.map +1 -0
  102. package/dist/components/StageNode/index.d.ts +3 -0
  103. package/dist/components/StageNode/index.d.ts.map +1 -0
  104. package/dist/components/StageNode/index.js +2 -0
  105. package/dist/components/StageNode/index.js.map +1 -0
  106. package/dist/components/TimeTravelControls/TimeTravelControls.d.ts +13 -0
  107. package/dist/components/TimeTravelControls/TimeTravelControls.d.ts.map +1 -0
  108. package/dist/components/TimeTravelControls/TimeTravelControls.js +104 -0
  109. package/dist/components/TimeTravelControls/TimeTravelControls.js.map +1 -0
  110. package/dist/components/TimeTravelControls/index.d.ts +3 -0
  111. package/dist/components/TimeTravelControls/index.d.ts.map +1 -0
  112. package/dist/components/TimeTravelControls/index.js +2 -0
  113. package/dist/components/TimeTravelControls/index.js.map +1 -0
  114. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts +22 -0
  115. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts.map +1 -0
  116. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js +104 -0
  117. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js.map +1 -0
  118. package/dist/components/TimeTravelDebugger/index.d.ts +3 -0
  119. package/dist/components/TimeTravelDebugger/index.d.ts.map +1 -0
  120. package/dist/components/TimeTravelDebugger/index.js +2 -0
  121. package/dist/components/TimeTravelDebugger/index.js.map +1 -0
  122. package/dist/flowchart.cjs +704 -220
  123. package/dist/flowchart.cjs.map +1 -1
  124. package/dist/flowchart.d.cts +55 -1
  125. package/dist/flowchart.d.ts +55 -1
  126. package/dist/flowchart.d.ts.map +1 -0
  127. package/dist/flowchart.js +700 -214
  128. package/dist/flowchart.js.map +1 -1
  129. package/dist/index.cjs +849 -76
  130. package/dist/index.cjs.map +1 -1
  131. package/dist/index.d.cts +95 -3
  132. package/dist/index.d.ts +95 -3
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +851 -80
  135. package/dist/index.js.map +1 -1
  136. package/dist/theme/ThemeProvider.d.ts +13 -0
  137. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  138. package/dist/theme/ThemeProvider.js +16 -0
  139. package/dist/theme/ThemeProvider.js.map +1 -0
  140. package/dist/theme/index.d.ts +7 -0
  141. package/dist/theme/index.d.ts.map +1 -0
  142. package/dist/theme/index.js +5 -0
  143. package/dist/theme/index.js.map +1 -0
  144. package/dist/theme/presets.d.ts +15 -0
  145. package/dist/theme/presets.d.ts.map +1 -0
  146. package/dist/theme/presets.js +70 -0
  147. package/dist/theme/presets.js.map +1 -0
  148. package/dist/theme/styles.d.ts +32 -0
  149. package/dist/theme/styles.d.ts.map +1 -0
  150. package/dist/theme/styles.js +37 -0
  151. package/dist/theme/styles.js.map +1 -0
  152. package/dist/theme/tokens.d.ts +28 -0
  153. package/dist/theme/tokens.d.ts.map +1 -0
  154. package/dist/theme/tokens.js +58 -0
  155. package/dist/theme/tokens.js.map +1 -0
  156. package/dist/tsconfig.tsbuildinfo +1 -0
  157. package/dist/types.d.ts +35 -0
  158. package/dist/types.d.ts.map +1 -0
  159. package/dist/types.js +2 -0
  160. package/dist/types.js.map +1 -0
  161. package/package.json +10 -4
@@ -0,0 +1,127 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback, useMemo, useEffect, useRef } from "react";
3
+ import { theme, fontSize, padding } from "../../theme";
4
+ // ---------------------------------------------------------------------------
5
+ // Helpers
6
+ // ---------------------------------------------------------------------------
7
+ function parseGroups(lines) {
8
+ const groups = [];
9
+ let current = null;
10
+ for (let i = 0; i < lines.length; i++) {
11
+ const line = lines[i];
12
+ const trimmed = line.trimStart();
13
+ const isStep = trimmed.startsWith("Step ") || /^\s/.test(line);
14
+ if (!isStep || !current) {
15
+ current = { header: line, headerIdx: i, steps: [] };
16
+ groups.push(current);
17
+ }
18
+ else {
19
+ current.steps.push({ text: trimmed, idx: i });
20
+ }
21
+ }
22
+ return groups;
23
+ }
24
+ // ---------------------------------------------------------------------------
25
+ // Component
26
+ // ---------------------------------------------------------------------------
27
+ export function NarrativeTrace({ narrative, revealedCount, defaultCollapsed = false, onStageClick, size = "default", unstyled = false, className, style, }) {
28
+ const revealed = revealedCount != null ? narrative.slice(0, revealedCount) : narrative;
29
+ const future = revealedCount != null ? narrative.slice(revealedCount) : [];
30
+ const revealedGroups = useMemo(() => parseGroups(revealed), [revealed]);
31
+ const futureGroups = useMemo(() => parseGroups(future), [future]);
32
+ const [collapsedSet, setCollapsedSet] = useState(() => {
33
+ if (!defaultCollapsed)
34
+ return new Set();
35
+ return new Set(parseGroups(narrative).map((g) => g.headerIdx));
36
+ });
37
+ const latestRef = useRef(null);
38
+ useEffect(() => {
39
+ latestRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
40
+ }, [revealedGroups.length]);
41
+ const toggle = useCallback((idx) => {
42
+ setCollapsedSet((prev) => {
43
+ const next = new Set(prev);
44
+ if (next.has(idx))
45
+ next.delete(idx);
46
+ else
47
+ next.add(idx);
48
+ return next;
49
+ });
50
+ }, []);
51
+ const lastIdx = revealedGroups.length - 1;
52
+ const fs = fontSize[size];
53
+ const pad = padding[size];
54
+ // ── Unstyled mode ──
55
+ if (unstyled) {
56
+ return (_jsxs("div", { className: className, style: style, "data-fp": "narrative-trace", children: [revealedGroups.map((group, gi) => (_jsxs("div", { "data-fp": "narrative-group", "data-latest": gi === lastIdx, children: [_jsx("div", { "data-fp": "narrative-header", "data-collapsible": group.steps.length > 0, "data-collapsed": collapsedSet.has(group.headerIdx), onClick: () => {
57
+ if (group.steps.length > 0)
58
+ toggle(group.headerIdx);
59
+ onStageClick?.(group.headerIdx);
60
+ }, children: group.header }), !collapsedSet.has(group.headerIdx) &&
61
+ group.steps.map((step) => (_jsx("div", { "data-fp": "narrative-step", children: step.text }, step.idx)))] }, group.headerIdx))), futureGroups.map((group) => (_jsxs("div", { "data-fp": "narrative-group", "data-future": true, children: [_jsx("div", { "data-fp": "narrative-header", children: group.header }), group.steps.map((step) => (_jsx("div", { "data-fp": "narrative-step", children: step.text }, `f-${step.idx}`)))] }, `f-${group.headerIdx}`)))] }));
62
+ }
63
+ // ── Styled mode ──
64
+ return (_jsxs("div", { className: className, style: {
65
+ flex: 1,
66
+ overflow: "auto",
67
+ padding: pad,
68
+ fontFamily: theme.fontMono,
69
+ ...style,
70
+ }, "data-fp": "narrative-trace", children: [revealedGroups.map((group, gi) => {
71
+ const isLatest = gi === lastIdx;
72
+ const isCollapsed = collapsedSet.has(group.headerIdx);
73
+ const hasSteps = group.steps.length > 0;
74
+ return (_jsxs("div", { ref: isLatest ? latestRef : undefined, style: { marginBottom: 2 }, "data-fp": "narrative-group", children: [_jsxs("div", { onClick: () => {
75
+ if (hasSteps)
76
+ toggle(group.headerIdx);
77
+ onStageClick?.(group.headerIdx);
78
+ }, style: {
79
+ fontSize: fs.body,
80
+ lineHeight: 1.7,
81
+ color: isLatest ? theme.textPrimary : theme.textSecondary,
82
+ padding: `4px ${pad - 4}px`,
83
+ borderRadius: 4,
84
+ background: isLatest ? theme.bgTertiary : "transparent",
85
+ borderLeft: isLatest
86
+ ? `3px solid ${theme.primary}`
87
+ : `3px solid ${theme.success}`,
88
+ cursor: hasSteps ? "pointer" : "default",
89
+ fontWeight: 600,
90
+ display: "flex",
91
+ alignItems: "center",
92
+ gap: 6,
93
+ userSelect: "none",
94
+ transition: "all 0.15s ease",
95
+ }, children: [hasSteps && (_jsx("span", { style: {
96
+ fontSize: fs.small - 1,
97
+ color: theme.textMuted,
98
+ transition: "transform 0.15s ease",
99
+ transform: isCollapsed ? "rotate(-90deg)" : "rotate(0deg)",
100
+ display: "inline-block",
101
+ width: 10,
102
+ flexShrink: 0,
103
+ }, children: "\u25BC" })), !hasSteps && _jsx("span", { style: { width: 10, flexShrink: 0 } }), _jsx("span", { children: group.header })] }), !isCollapsed &&
104
+ group.steps.map((step) => (_jsx("div", { style: {
105
+ fontSize: fs.small,
106
+ lineHeight: 1.6,
107
+ color: isLatest ? theme.textSecondary : theme.textMuted,
108
+ padding: `2px ${pad - 4}px 2px ${pad + 20}px`,
109
+ opacity: isLatest ? 0.9 : 0.7,
110
+ transition: "all 0.15s ease",
111
+ }, "data-fp": "narrative-step", children: step.text }, step.idx)))] }, group.headerIdx));
112
+ }), futureGroups.length > 0 && (_jsx("div", { style: { opacity: 0.2 }, children: futureGroups.map((group) => (_jsxs("div", { style: { marginBottom: 2 }, children: [_jsx("div", { style: {
113
+ fontSize: fs.body,
114
+ lineHeight: 1.7,
115
+ color: theme.textMuted,
116
+ padding: `4px ${pad - 4}px`,
117
+ borderLeft: `3px solid ${theme.border}`,
118
+ fontWeight: 600,
119
+ paddingLeft: pad + 12,
120
+ }, children: group.header }), group.steps.map((step) => (_jsx("div", { style: {
121
+ fontSize: fs.small,
122
+ lineHeight: 1.6,
123
+ color: theme.textMuted,
124
+ padding: `2px ${pad - 4}px 2px ${pad + 20}px`,
125
+ }, children: step.text }, `f-${step.idx}`)))] }, `f-${group.headerIdx}`))) }))] }));
126
+ }
127
+ //# sourceMappingURL=NarrativeTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NarrativeTrace.js","sourceRoot":"","sources":["../../../src/components/NarrativeTrace/NarrativeTrace.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { NarrativeTrace } from "./NarrativeTrace";
2
+ export type { NarrativeTraceProps } from "./NarrativeTrace";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NarrativeTrace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { NarrativeTrace } from "./NarrativeTrace";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/NarrativeTrace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { BaseComponentProps } from "../../types";
2
+ export interface ResultPanelProps extends BaseComponentProps {
3
+ /** Final pipeline output / shared state */
4
+ data: Record<string, unknown> | null;
5
+ /** Optional console log lines */
6
+ logs?: string[];
7
+ /** Hide console section (default: false) */
8
+ hideConsole?: boolean;
9
+ }
10
+ export declare function ResultPanel({ data, logs, hideConsole, size, unstyled, className, style, }: ResultPanelProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=ResultPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultPanel.d.ts","sourceRoot":"","sources":["../../../src/components/ResultPanel/ResultPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,IAAS,EACT,WAAmB,EACnB,IAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,gBAAgB,2CAiHlB"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { theme, fontSize, padding } from "../../theme";
3
+ export function ResultPanel({ data, logs = [], hideConsole = false, size = "default", unstyled = false, className, style, }) {
4
+ const fs = fontSize[size];
5
+ const pad = padding[size];
6
+ if (unstyled) {
7
+ return (_jsxs("div", { className: className, style: style, "data-fp": "result-panel", children: [_jsx("div", { "data-fp": "result-data", children: _jsx("pre", { children: data ? JSON.stringify(data, null, 2) : "No data" }) }), !hideConsole && (_jsx("div", { "data-fp": "result-console", children: logs.map((line, i) => (_jsx("div", { "data-fp": "console-line", "data-error": line.startsWith("ERROR"), children: line }, i))) }))] }));
8
+ }
9
+ return (_jsxs("div", { className: className, style: {
10
+ height: "100%",
11
+ display: "flex",
12
+ flexDirection: "column",
13
+ overflow: "hidden",
14
+ ...style,
15
+ }, "data-fp": "result-panel", children: [data && (_jsxs("div", { style: { flex: 1, overflow: "auto", padding: pad }, children: [_jsx("div", { style: {
16
+ fontSize: fs.label,
17
+ fontWeight: 600,
18
+ color: theme.textMuted,
19
+ textTransform: "uppercase",
20
+ letterSpacing: "0.08em",
21
+ marginBottom: 8,
22
+ }, children: size === "compact" ? "Result" : "Business Result (Scope)" }), _jsx("pre", { style: {
23
+ fontSize: fs.body,
24
+ fontFamily: theme.fontMono,
25
+ color: theme.textPrimary,
26
+ background: theme.bgSecondary,
27
+ padding: pad,
28
+ borderRadius: theme.radius,
29
+ overflow: "auto",
30
+ margin: 0,
31
+ }, children: JSON.stringify(data, null, 2) })] })), !hideConsole && (_jsxs("div", { style: {
32
+ borderTop: `1px solid ${theme.border}`,
33
+ padding: pad,
34
+ overflow: "auto",
35
+ maxHeight: "40%",
36
+ flexShrink: 0,
37
+ }, children: [_jsx("div", { style: {
38
+ fontSize: fs.label,
39
+ fontWeight: 600,
40
+ color: theme.textMuted,
41
+ textTransform: "uppercase",
42
+ letterSpacing: "0.08em",
43
+ marginBottom: 8,
44
+ }, children: "Console" }), logs.length === 0 && (_jsx("div", { style: { fontSize: fs.body, color: theme.textMuted, fontStyle: "italic" }, children: "No console output" })), logs.map((line, i) => (_jsx("div", { style: {
45
+ fontSize: fs.body,
46
+ fontFamily: theme.fontMono,
47
+ color: line.startsWith("ERROR") ? theme.error : theme.textPrimary,
48
+ padding: "2px 0",
49
+ borderBottom: `1px solid ${theme.bgSecondary}`,
50
+ whiteSpace: "pre-wrap",
51
+ wordBreak: "break-word",
52
+ }, children: line }, i)))] }))] }));
53
+ }
54
+ //# sourceMappingURL=ResultPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultPanel.js","sourceRoot":"","sources":["../../../src/components/ResultPanel/ResultPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ResultPanel } from "./ResultPanel";
2
+ export type { ResultPanelProps } from "./ResultPanel";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ResultPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ResultPanel } from "./ResultPanel";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ResultPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { BaseComponentProps } from "../../types";
2
+ export interface DiffEntry {
3
+ key: string;
4
+ type: "added" | "removed" | "changed" | "unchanged";
5
+ oldValue?: unknown;
6
+ newValue?: unknown;
7
+ }
8
+ export interface ScopeDiffProps extends BaseComponentProps {
9
+ /** Memory state before the current stage */
10
+ previous: Record<string, unknown> | null;
11
+ /** Memory state after the current stage */
12
+ current: Record<string, unknown>;
13
+ /** Hide unchanged keys (default: false) */
14
+ hideUnchanged?: boolean;
15
+ }
16
+ export declare function ScopeDiff({ previous, current, hideUnchanged, size, unstyled, className, style, }: ScopeDiffProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=ScopeDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeDiff.d.ts","sourceRoot":"","sources":["../../../src/components/ScopeDiff/ScopeDiff.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,2CAA2C;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAoDD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,OAAO,EACP,aAAqB,EACrB,IAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,cAAc,2CA4GhB"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { theme, fontSize, padding } from "../../theme";
4
+ // ---------------------------------------------------------------------------
5
+ // Helpers
6
+ // ---------------------------------------------------------------------------
7
+ function computeDiff(prev, curr) {
8
+ const entries = [];
9
+ const allKeys = new Set([...Object.keys(prev ?? {}), ...Object.keys(curr)]);
10
+ for (const key of allKeys) {
11
+ const inPrev = prev != null && key in prev;
12
+ const inCurr = key in curr;
13
+ const oldVal = prev?.[key];
14
+ const newVal = curr[key];
15
+ if (!inPrev && inCurr) {
16
+ entries.push({ key, type: "added", newValue: newVal });
17
+ }
18
+ else if (inPrev && !inCurr) {
19
+ entries.push({ key, type: "removed", oldValue: oldVal });
20
+ }
21
+ else if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {
22
+ entries.push({ key, type: "changed", oldValue: oldVal, newValue: newVal });
23
+ }
24
+ else {
25
+ entries.push({ key, type: "unchanged", newValue: newVal });
26
+ }
27
+ }
28
+ const order = { added: 0, changed: 1, removed: 2, unchanged: 3 };
29
+ entries.sort((a, b) => order[a.type] - order[b.type]);
30
+ return entries;
31
+ }
32
+ function fmt(v) {
33
+ if (typeof v === "string")
34
+ return `"${v}"`;
35
+ if (typeof v === "object" && v !== null)
36
+ return JSON.stringify(v, null, 2);
37
+ return String(v);
38
+ }
39
+ const diffColors = {
40
+ added: { bg: "rgba(34,197,94,0.10)", fg: "#22c55e", icon: "+" },
41
+ removed: { bg: "rgba(239,68,68,0.10)", fg: "#ef4444", icon: "-" },
42
+ changed: { bg: "rgba(245,158,11,0.10)", fg: "#f59e0b", icon: "~" },
43
+ unchanged: { bg: "transparent", fg: "", icon: " " },
44
+ };
45
+ // ---------------------------------------------------------------------------
46
+ // Component
47
+ // ---------------------------------------------------------------------------
48
+ export function ScopeDiff({ previous, current, hideUnchanged = false, size = "default", unstyled = false, className, style, }) {
49
+ const entries = useMemo(() => computeDiff(previous, current), [previous, current]);
50
+ const visible = hideUnchanged ? entries.filter((e) => e.type !== "unchanged") : entries;
51
+ const fs = fontSize[size];
52
+ const pad = padding[size];
53
+ if (unstyled) {
54
+ return (_jsx("div", { className: className, style: style, "data-fp": "scope-diff", children: visible.map((e) => (_jsxs("div", { "data-fp": "diff-entry", "data-type": e.type, children: [_jsx("span", { "data-fp": "diff-key", children: e.key }), e.type === "changed" && (_jsxs(_Fragment, { children: [_jsx("span", { "data-fp": "diff-old", children: fmt(e.oldValue) }), _jsx("span", { "data-fp": "diff-new", children: fmt(e.newValue) })] })), (e.type === "added" || e.type === "unchanged") && (_jsx("span", { "data-fp": "diff-value", children: fmt(e.newValue) })), e.type === "removed" && (_jsx("span", { "data-fp": "diff-value", children: fmt(e.oldValue) }))] }, e.key))) }));
55
+ }
56
+ return (_jsxs("div", { className: className, style: { padding: pad, fontFamily: theme.fontMono, ...style }, "data-fp": "scope-diff", children: [visible.length === 0 && (_jsx("div", { style: { fontSize: fs.body, color: theme.textMuted, fontStyle: "italic" }, children: "No changes" })), visible.map((entry) => {
57
+ const dc = diffColors[entry.type];
58
+ return (_jsxs("div", { style: {
59
+ display: "flex",
60
+ alignItems: "flex-start",
61
+ gap: 8,
62
+ padding: `4px ${pad - 4}px`,
63
+ marginBottom: 2,
64
+ borderRadius: 4,
65
+ background: dc.bg,
66
+ fontSize: fs.body,
67
+ lineHeight: 1.5,
68
+ }, "data-fp": "diff-entry", children: [_jsx("span", { style: {
69
+ width: 16,
70
+ flexShrink: 0,
71
+ fontWeight: 700,
72
+ color: dc.fg || theme.textMuted,
73
+ textAlign: "center",
74
+ }, children: dc.icon }), _jsx("span", { style: { color: theme.primary, fontWeight: 600, flexShrink: 0 }, children: entry.key }), _jsx("span", { style: { color: theme.textMuted }, children: "=" }), entry.type === "changed" ? (_jsxs("span", { children: [_jsx("span", { style: {
75
+ color: theme.error,
76
+ textDecoration: "line-through",
77
+ opacity: 0.7,
78
+ }, children: fmt(entry.oldValue) }), _jsx("span", { style: { color: theme.textMuted, margin: "0 4px" }, children: "\u2192" }), _jsx("span", { style: { color: theme.success }, children: fmt(entry.newValue) })] })) : (_jsx("span", { style: {
79
+ color: entry.type === "added"
80
+ ? theme.success
81
+ : entry.type === "removed"
82
+ ? theme.error
83
+ : theme.textPrimary,
84
+ }, children: fmt(entry.type === "removed" ? entry.oldValue : entry.newValue) }))] }, entry.key));
85
+ })] }));
86
+ }
87
+ //# sourceMappingURL=ScopeDiff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeDiff.js","sourceRoot":"","sources":["../../../src/components/ScopeDiff/ScopeDiff.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ScopeDiff } from "./ScopeDiff";
2
+ export type { ScopeDiffProps, DiffEntry } from "./ScopeDiff";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ScopeDiff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ScopeDiff } from "./ScopeDiff";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ScopeDiff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { StageSnapshot, BaseComponentProps } from "../../types";
2
+ export interface SnapshotPanelProps extends BaseComponentProps {
3
+ /** Stage snapshots from pipeline execution */
4
+ snapshots: StageSnapshot[];
5
+ /** Show the Gantt timeline */
6
+ showGantt?: boolean;
7
+ /** Show the time-travel scrubber */
8
+ showScrubber?: boolean;
9
+ /** Title override */
10
+ title?: string;
11
+ }
12
+ /**
13
+ * All-in-one panel: time-travel scrubber + memory inspector + narrative log + gantt.
14
+ * Drop this into any page to make a pipeline run inspectable.
15
+ */
16
+ export declare function SnapshotPanel({ snapshots, showGantt, showScrubber, title, size, unstyled, className, style, }: SnapshotPanelProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=SnapshotPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapshotPanel.d.ts","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/SnapshotPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMrE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,8CAA8C;IAC9C,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAgB,EAChB,YAAmB,EACnB,KAA4B,EAC5B,IAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,2CAoLpB"}
@@ -0,0 +1,85 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { theme, fontSize, padding } from "../../theme";
4
+ import { MemoryInspector } from "../MemoryInspector";
5
+ import { NarrativeLog } from "../NarrativeLog";
6
+ import { GanttTimeline } from "../GanttTimeline";
7
+ /**
8
+ * All-in-one panel: time-travel scrubber + memory inspector + narrative log + gantt.
9
+ * Drop this into any page to make a pipeline run inspectable.
10
+ */
11
+ export function SnapshotPanel({ snapshots, showGantt = true, showScrubber = true, title = "Pipeline Inspector", size = "default", unstyled = false, className, style, }) {
12
+ const [selectedIndex, setSelectedIndex] = useState(0);
13
+ const fs = fontSize[size];
14
+ const pad = padding[size];
15
+ if (snapshots.length === 0) {
16
+ return (_jsx("div", { className: className, style: {
17
+ padding: pad * 2,
18
+ textAlign: "center",
19
+ color: unstyled ? undefined : theme.textMuted,
20
+ fontSize: fs.body,
21
+ ...style,
22
+ }, "data-fp": "snapshot-panel", children: "No snapshots to display" }));
23
+ }
24
+ if (unstyled) {
25
+ return (_jsxs("div", { className: className, style: style, "data-fp": "snapshot-panel", children: [_jsx("h3", { children: title }), showScrubber && (_jsx("input", { type: "range", min: 0, max: snapshots.length - 1, value: selectedIndex, onChange: (e) => setSelectedIndex(parseInt(e.target.value)) })), _jsx(MemoryInspector, { snapshots: snapshots, selectedIndex: selectedIndex, unstyled: true }), _jsx(NarrativeLog, { snapshots: snapshots, selectedIndex: selectedIndex, unstyled: true }), showGantt && (_jsx(GanttTimeline, { snapshots: snapshots, selectedIndex: selectedIndex, onSelect: setSelectedIndex, unstyled: true }))] }));
26
+ }
27
+ return (_jsxs("div", { className: className, style: {
28
+ display: "flex",
29
+ flexDirection: "column",
30
+ height: "100%",
31
+ background: theme.bgPrimary,
32
+ fontFamily: theme.fontSans,
33
+ overflow: "hidden",
34
+ ...style,
35
+ }, "data-fp": "snapshot-panel", children: [_jsxs("div", { style: {
36
+ padding: `${pad}px ${pad + 4}px`,
37
+ borderBottom: `1px solid ${theme.border}`,
38
+ background: theme.bgSecondary,
39
+ flexShrink: 0,
40
+ }, children: [_jsxs("div", { style: {
41
+ display: "flex",
42
+ alignItems: "center",
43
+ gap: 8,
44
+ marginBottom: showScrubber ? 8 : 0,
45
+ }, children: [_jsx("span", { style: {
46
+ fontSize: fs.body + 2,
47
+ fontWeight: 600,
48
+ color: theme.textPrimary,
49
+ }, children: title }), _jsxs("span", { style: {
50
+ fontSize: fs.small,
51
+ color: theme.textMuted,
52
+ fontFamily: theme.fontMono,
53
+ }, children: [selectedIndex + 1, "/", snapshots.length] })] }), showScrubber && (_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [_jsx(ScrubButton, { label: "\\u25C0", disabled: selectedIndex === 0, onClick: () => setSelectedIndex((i) => Math.max(0, i - 1)) }), _jsx("input", { type: "range", min: 0, max: snapshots.length - 1, value: selectedIndex, onChange: (e) => setSelectedIndex(parseInt(e.target.value)), style: {
54
+ flex: 1,
55
+ height: 4,
56
+ accentColor: theme.primary,
57
+ cursor: "pointer",
58
+ } }), _jsx(ScrubButton, { label: "\\u25B6", disabled: selectedIndex === snapshots.length - 1, onClick: () => setSelectedIndex((i) => Math.min(snapshots.length - 1, i + 1)) })] }))] }), _jsxs("div", { style: { flex: 1, overflow: "auto" }, children: [_jsx(MemoryInspector, { snapshots: snapshots, selectedIndex: selectedIndex, size: size }), _jsx("div", { style: {
59
+ height: 1,
60
+ background: theme.border,
61
+ margin: `0 ${pad}px`,
62
+ } }), _jsx(NarrativeLog, { snapshots: snapshots, selectedIndex: selectedIndex, size: size })] }), showGantt && (_jsx("div", { style: {
63
+ borderTop: `1px solid ${theme.border}`,
64
+ background: theme.bgSecondary,
65
+ flexShrink: 0,
66
+ }, children: _jsx(GanttTimeline, { snapshots: snapshots, selectedIndex: selectedIndex, onSelect: setSelectedIndex, size: size }) }))] }));
67
+ }
68
+ function ScrubButton({ label, disabled, onClick, }) {
69
+ return (_jsx("button", { onClick: onClick, disabled: disabled, style: {
70
+ background: theme.bgTertiary,
71
+ border: `1px solid ${theme.border}`,
72
+ color: disabled ? theme.textMuted : theme.textPrimary,
73
+ borderRadius: 6,
74
+ width: 28,
75
+ height: 28,
76
+ display: "flex",
77
+ alignItems: "center",
78
+ justifyContent: "center",
79
+ cursor: disabled ? "not-allowed" : "pointer",
80
+ opacity: disabled ? 0.5 : 1,
81
+ fontSize: 12,
82
+ flexShrink: 0,
83
+ }, children: label }));
84
+ }
85
+ //# sourceMappingURL=SnapshotPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnapshotPanel.js","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/SnapshotPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { SnapshotPanel } from "./SnapshotPanel";
2
+ export type { SnapshotPanelProps } from "./SnapshotPanel";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SnapshotPanel } from "./SnapshotPanel";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SnapshotPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,31 @@
1
+ export interface StageNodeData {
2
+ label: string;
3
+ active?: boolean;
4
+ done?: boolean;
5
+ error?: boolean;
6
+ linked?: boolean;
7
+ /** Step numbers in execution order (shown as badges — multiple when revisited via loops) */
8
+ stepNumbers?: number[];
9
+ /** Node was not executed (dim it) */
10
+ dimmed?: boolean;
11
+ /** Node is a subflow root (show nested indicator) */
12
+ isSubflow?: boolean;
13
+ /** Human-readable description of what this stage does */
14
+ description?: string;
15
+ /** Subflow identifier — set when this node belongs to a subflow */
16
+ subflowId?: string;
17
+ [key: string]: unknown;
18
+ }
19
+ /**
20
+ * Custom ReactFlow node for pipeline stages.
21
+ * All colors and fonts come from `--fp-*` CSS variables (via theme).
22
+ * Shows execution state via color, icon, step badge, and pulse animation.
23
+ */
24
+ export declare const StageNode: import("react").NamedExoticComponent<Pick<import("@xyflow/react").Node<Record<string, unknown>, string | undefined>, "id" | "data" | "width" | "height" | "sourcePosition" | "targetPosition" | "dragHandle" | "parentId"> & Required<Pick<import("@xyflow/react").Node<Record<string, unknown>, string | undefined>, "type" | "dragging" | "zIndex" | "selectable" | "deletable" | "selected" | "draggable">> & {
25
+ isConnectable: boolean;
26
+ positionAbsoluteX: number;
27
+ positionAbsoluteY: number;
28
+ } & {
29
+ data: StageNodeData;
30
+ }>;
31
+ //# sourceMappingURL=StageNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../src/components/StageNode/StageNode.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;UAEC,aAAa;EAgOlC,CAAC"}