footprint-explainable-ui 0.25.4 → 0.26.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.
- package/README.md +22 -14
- package/dist/flowchart.cjs +4 -4
- package/dist/flowchart.cjs.map +1 -1
- package/dist/flowchart.js +4 -4
- package/dist/flowchart.js.map +1 -1
- package/dist/index.cjs +43 -69
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -3
- package/dist/index.d.ts +2 -3
- package/dist/index.js +43 -69
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
Themeable React components for visualizing [footprintjs](https://github.com/footprintjs/footPrint) pipeline execution — time-travel debugging, flowchart overlays, subflow drill-down, and collapsible detail panels.
|
|
12
12
|
|
|
13
|
+
> Part of the **[footprintjs ecosystem](https://footprintjs.github.io/)** — the self-explaining stack.
|
|
14
|
+
|
|
13
15
|
## Install
|
|
14
16
|
|
|
15
17
|
```bash
|
|
@@ -52,25 +54,16 @@ const snapshots = toVisualizationSnapshots(
|
|
|
52
54
|
|
|
53
55
|
```tsx
|
|
54
56
|
import { ExplainableShell } from "footprint-explainable-ui";
|
|
55
|
-
import { TracedFlowchartView } from "footprint-explainable-ui/flowchart";
|
|
56
57
|
|
|
57
|
-
function DebugView({ snapshots,
|
|
58
|
+
function DebugView({ snapshots, narrativeEntries, traceGraph, runtimeOverlay }) {
|
|
58
59
|
return (
|
|
59
60
|
<ExplainableShell
|
|
60
61
|
snapshots={snapshots}
|
|
61
|
-
spec={spec}
|
|
62
|
-
narrative={narrative}
|
|
63
62
|
narrativeEntries={narrativeEntries}
|
|
63
|
+
traceGraph={traceGraph}
|
|
64
|
+
runtimeOverlay={runtimeOverlay}
|
|
64
65
|
title="My Pipeline"
|
|
65
66
|
panelLabels={{ topology: "What Ran", details: "What Happened", timeline: "How Long" }}
|
|
66
|
-
renderFlowchart={({ spec, snapshots, selectedIndex, onNodeClick }) => (
|
|
67
|
-
<TracedFlowchartView
|
|
68
|
-
spec={spec}
|
|
69
|
-
snapshots={snapshots}
|
|
70
|
-
snapshotIndex={selectedIndex}
|
|
71
|
-
onNodeClick={onNodeClick}
|
|
72
|
-
/>
|
|
73
|
-
)}
|
|
74
67
|
/>
|
|
75
68
|
);
|
|
76
69
|
}
|
|
@@ -132,7 +125,8 @@ The all-in-one orchestrator. Handles time-travel, subflow drill-down, memory/nar
|
|
|
132
125
|
| Prop | Type | Default | Description |
|
|
133
126
|
|---|---|---|---|
|
|
134
127
|
| `snapshots` | `StageSnapshot[]` | required | Visualization snapshots |
|
|
135
|
-
| `
|
|
128
|
+
| `traceGraph` | `TraceGraph \| null` | — | Build-time graph — drives the flowchart + subflow drill-down |
|
|
129
|
+
| `runtimeOverlay` | `RuntimeOverlay` | — | Per-step execution overlay — lights the executed path |
|
|
136
130
|
| `title` | `string` | `"Flowchart"` | Breadcrumb root label |
|
|
137
131
|
| `narrative` | `string[]` | — | Flat narrative lines |
|
|
138
132
|
| `narrativeEntries` | `NarrativeEntry[]` | — | Structured narrative (rich rendering) |
|
|
@@ -164,7 +158,7 @@ Control which panels start open. Desktop default: details panel open (flowchart
|
|
|
164
158
|
|
|
165
159
|
```tsx
|
|
166
160
|
// Desktop (default) — memory panel open
|
|
167
|
-
<ExplainableShell snapshots={...}
|
|
161
|
+
<ExplainableShell snapshots={...} traceGraph={...} runtimeOverlay={...} />
|
|
168
162
|
|
|
169
163
|
// Mobile — all collapsed, flowchart fills screen
|
|
170
164
|
<ExplainableShell
|
|
@@ -378,6 +372,20 @@ pipeline and snapshot-asserts the outputs in `test/golden/__snapshots__/`.
|
|
|
378
372
|
`footprintjs` is a devDependency used ONLY by the generator — the published
|
|
379
373
|
library still has zero footprintjs dependency (it consumes plain JSON shapes).
|
|
380
374
|
|
|
375
|
+
## The footprintjs ecosystem
|
|
376
|
+
|
|
377
|
+
The self-explaining stack — from backend pipelines to AI agents. → **[overview](https://footprintjs.github.io/)**
|
|
378
|
+
|
|
379
|
+
| Project | Role |
|
|
380
|
+
|---|---|
|
|
381
|
+
| [footprintjs](https://footprintjs.github.io/footPrint/) | the flowchart pattern (core engine) |
|
|
382
|
+
| [agentfootprint](https://footprintjs.github.io/agentfootprint/) | build self-explaining AI agents |
|
|
383
|
+
| **Explainable UI** ← you are here | visualize a footprintjs run |
|
|
384
|
+
| [Lens](https://github.com/footprintjs/agentfootprint-lens) | debug an agentfootprint run |
|
|
385
|
+
| [Thinking UI](https://footprintjs.github.io/agentThinkingUI/) | replay an agent run for non-devs |
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
381
389
|
## License
|
|
382
390
|
|
|
383
391
|
MIT
|
package/dist/flowchart.cjs
CHANGED
|
@@ -375,10 +375,10 @@ var StageNode = (0, import_react3.memo)(function StageNode2({
|
|
|
375
375
|
const restingBg = isHero ? `color-mix(in srgb, ${theme.nodeMain} 12%, ${theme.bgSecondary})` : theme.bgSecondary;
|
|
376
376
|
const restingBorder = isHero ? theme.nodeMain : theme.border;
|
|
377
377
|
const restingShadow = isHero ? `0 0 10px color-mix(in srgb, ${theme.nodeMain} 22%, transparent)` : `0 2px 8px rgba(0,0,0,0.15)`;
|
|
378
|
-
const bg = active ? theme.nodeCursor : done ? theme.nodeVisited : error ? theme.error : restingBg;
|
|
379
|
-
const borderColor = active ? theme.nodeCursor : done ? theme.nodeVisited : error ? theme.error : restingBorder;
|
|
380
|
-
const shadow = active ? `0 0 22px color-mix(in srgb, ${theme.nodeCursor} 55%, transparent)` : done ? `0 0 8px color-mix(in srgb, ${theme.nodeVisited} 20%, transparent)` : error ? `0 0 12px color-mix(in srgb, ${theme.error} 30%, transparent)` : restingShadow;
|
|
381
|
-
const textColor = active
|
|
378
|
+
const bg = active ? theme.nodeCursor : isHero && done ? theme.nodeMain : done ? theme.nodeVisited : error ? theme.error : restingBg;
|
|
379
|
+
const borderColor = active ? theme.nodeCursor : isHero && done ? theme.nodeMain : done ? theme.nodeVisited : error ? theme.error : restingBorder;
|
|
380
|
+
const shadow = active ? `0 0 22px color-mix(in srgb, ${theme.nodeCursor} 55%, transparent)` : isHero && done ? `0 0 12px color-mix(in srgb, ${theme.nodeMain} 30%, transparent)` : done ? `0 0 8px color-mix(in srgb, ${theme.nodeVisited} 20%, transparent)` : error ? `0 0 12px color-mix(in srgb, ${theme.error} 30%, transparent)` : restingShadow;
|
|
381
|
+
const textColor = active ? "#1a1a1a" : done || error ? "#fff" : theme.textPrimary;
|
|
382
382
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
|
383
383
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react4.Handle, { type: "target", position: import_react4.Position.Top, style: { opacity: 0 } }),
|
|
384
384
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { width: "100%", display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|