@llamaindex/workflow-debugger 0.1.8 → 0.2.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/CHANGELOG.md +205 -0
- package/eslint.config.js +26 -0
- package/{dist/index.html → index.html} +1 -2
- package/package.json +11 -17
- package/postcss.config.js +6 -0
- package/src/App.tsx +18 -0
- package/src/components/code-block.tsx +48 -0
- package/src/components/error-boundary.tsx +85 -0
- package/src/components/json-schema-editor.tsx +291 -0
- package/src/components/run-details-panel.tsx +290 -0
- package/src/components/run-list-panel.tsx +83 -0
- package/src/components/send-event-dialog.tsx +299 -0
- package/src/components/workflow-config-panel.tsx +247 -0
- package/src/components/workflow-debugger.tsx +342 -0
- package/src/components/workflow-visualization.tsx +720 -0
- package/src/index.css +86 -0
- package/src/main.tsx +24 -0
- package/tailwind.config.js +9 -0
- package/tests/json-schema-editor.test.tsx +62 -0
- package/tests/test-setup.ts +1 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +16 -0
- package/ui_sample.png +0 -0
- package/vite.config.ts +46 -0
- package/vitest.config.ts +16 -0
- package/dist/app.css +0 -1
- package/dist/app.js +0 -294
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# @llamaindex/workflow-debugger
|
|
2
|
+
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7538c69: Publish workflow-debugger to npm for serving via jsdelivr
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [68edbac]
|
|
12
|
+
- Updated dependencies [68edbac]
|
|
13
|
+
- Updated dependencies [68edbac]
|
|
14
|
+
- Updated dependencies [68edbac]
|
|
15
|
+
- Updated dependencies [68edbac]
|
|
16
|
+
- Updated dependencies [f67ae7c]
|
|
17
|
+
- @llamaindex/ui@3.3.2
|
|
18
|
+
- @llamaindex/workflows-client@1.8.2
|
|
19
|
+
|
|
20
|
+
## 0.1.4
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [e2481f0]
|
|
25
|
+
- Updated dependencies [e2481f0]
|
|
26
|
+
- Updated dependencies [8c994a5]
|
|
27
|
+
- @llamaindex/ui@3.3.1
|
|
28
|
+
|
|
29
|
+
## 0.1.3
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- bf1f472: Add support for agent workflow in debugger
|
|
34
|
+
- Updated dependencies [bf1f472]
|
|
35
|
+
- @llamaindex/ui@3.3.0
|
|
36
|
+
|
|
37
|
+
## 0.1.2
|
|
38
|
+
|
|
39
|
+
### Patch Changes
|
|
40
|
+
|
|
41
|
+
- Updated dependencies [accf7eb]
|
|
42
|
+
- @llamaindex/ui@3.2.2
|
|
43
|
+
|
|
44
|
+
## 0.1.1
|
|
45
|
+
|
|
46
|
+
### Patch Changes
|
|
47
|
+
|
|
48
|
+
- Updated dependencies [5c395e6]
|
|
49
|
+
- @llamaindex/ui@3.2.1
|
|
50
|
+
|
|
51
|
+
## 0.1.0
|
|
52
|
+
|
|
53
|
+
### Minor Changes
|
|
54
|
+
|
|
55
|
+
- 8544bc4: Add more functionality to workflow hooks
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- Updated dependencies [8544bc4]
|
|
60
|
+
- Updated dependencies [2641426]
|
|
61
|
+
- @llamaindex/ui@3.2.0
|
|
62
|
+
- @llamaindex/workflows-client@1.8.1
|
|
63
|
+
|
|
64
|
+
## 0.0.8
|
|
65
|
+
|
|
66
|
+
### Patch Changes
|
|
67
|
+
|
|
68
|
+
- Updated dependencies [029e2ea]
|
|
69
|
+
- Updated dependencies [35b0ca2]
|
|
70
|
+
- Updated dependencies [3b11809]
|
|
71
|
+
- @llamaindex/ui@3.1.1
|
|
72
|
+
- @llamaindex/workflows-client@1.8.0
|
|
73
|
+
|
|
74
|
+
## 0.0.7
|
|
75
|
+
|
|
76
|
+
### Patch Changes
|
|
77
|
+
|
|
78
|
+
- Updated dependencies [ac461c9]
|
|
79
|
+
- Updated dependencies [3658344]
|
|
80
|
+
- Updated dependencies [ac461c9]
|
|
81
|
+
- @llamaindex/ui@3.1.0
|
|
82
|
+
|
|
83
|
+
## 0.0.6
|
|
84
|
+
|
|
85
|
+
### Patch Changes
|
|
86
|
+
|
|
87
|
+
- 5578071: refactor workflow/handler store
|
|
88
|
+
- d3423fd: Upgrade to better support react 19
|
|
89
|
+
- Updated dependencies [acb31b5]
|
|
90
|
+
- Updated dependencies [5578071]
|
|
91
|
+
- Updated dependencies [ee7de57]
|
|
92
|
+
- Updated dependencies [1d56861]
|
|
93
|
+
- Updated dependencies [d3423fd]
|
|
94
|
+
- Updated dependencies [31a2a69]
|
|
95
|
+
- Updated dependencies [659ebae]
|
|
96
|
+
- @llamaindex/workflows-client@1.7.0
|
|
97
|
+
- @llamaindex/ui@3.0.0
|
|
98
|
+
|
|
99
|
+
## 0.0.5
|
|
100
|
+
|
|
101
|
+
### Patch Changes
|
|
102
|
+
|
|
103
|
+
- Updated dependencies [542f658]
|
|
104
|
+
- @llamaindex/workflows-client@1.6.2
|
|
105
|
+
- @llamaindex/ui@2.1.8
|
|
106
|
+
|
|
107
|
+
## 0.0.4
|
|
108
|
+
|
|
109
|
+
### Patch Changes
|
|
110
|
+
|
|
111
|
+
- 762c881: bump version
|
|
112
|
+
|
|
113
|
+
## 0.0.3
|
|
114
|
+
|
|
115
|
+
### Patch Changes
|
|
116
|
+
|
|
117
|
+
- 1d776f7: bump version
|
|
118
|
+
|
|
119
|
+
## 0.0.2
|
|
120
|
+
|
|
121
|
+
### Patch Changes
|
|
122
|
+
|
|
123
|
+
- 1d5b72c: use cloudflare as cdn
|
|
124
|
+
|
|
125
|
+
## 0.1.9
|
|
126
|
+
|
|
127
|
+
### Patch Changes
|
|
128
|
+
|
|
129
|
+
- Updated dependencies [db491f1]
|
|
130
|
+
- @llamaindex/workflows-client@1.6.1
|
|
131
|
+
- @llamaindex/ui@2.1.8
|
|
132
|
+
|
|
133
|
+
## 0.1.8
|
|
134
|
+
|
|
135
|
+
### Patch Changes
|
|
136
|
+
|
|
137
|
+
- Updated dependencies [aad82ca]
|
|
138
|
+
- @llamaindex/ui@2.1.8
|
|
139
|
+
|
|
140
|
+
## 0.1.7
|
|
141
|
+
|
|
142
|
+
### Patch Changes
|
|
143
|
+
|
|
144
|
+
- Updated dependencies [b4e70ab]
|
|
145
|
+
- @llamaindex/workflows-client@1.6.0
|
|
146
|
+
- @llamaindex/ui@2.1.7
|
|
147
|
+
|
|
148
|
+
## 0.1.6
|
|
149
|
+
|
|
150
|
+
### Patch Changes
|
|
151
|
+
|
|
152
|
+
- Updated dependencies [ef43b90]
|
|
153
|
+
- @llamaindex/ui@2.1.7
|
|
154
|
+
|
|
155
|
+
## 0.1.5
|
|
156
|
+
|
|
157
|
+
### Patch Changes
|
|
158
|
+
|
|
159
|
+
- Updated dependencies [0a795fb]
|
|
160
|
+
- @llamaindex/ui@2.1.6
|
|
161
|
+
|
|
162
|
+
## 0.1.4
|
|
163
|
+
|
|
164
|
+
### Patch Changes
|
|
165
|
+
|
|
166
|
+
- 45ab264: Make workflow handler internal event inclusion configurable
|
|
167
|
+
- Updated dependencies [45ab264]
|
|
168
|
+
- Updated dependencies [45ab264]
|
|
169
|
+
- Updated dependencies [b9f5d60]
|
|
170
|
+
- @llamaindex/ui@2.1.5
|
|
171
|
+
- @llamaindex/workflows-client@1.5.0
|
|
172
|
+
|
|
173
|
+
## 0.1.3
|
|
174
|
+
|
|
175
|
+
### Patch Changes
|
|
176
|
+
|
|
177
|
+
- 50ceb5f: Add toggle to hide/show internal events
|
|
178
|
+
- 4277687: Fix json editor for complex start event fields
|
|
179
|
+
|
|
180
|
+
## 0.1.2
|
|
181
|
+
|
|
182
|
+
### Patch Changes
|
|
183
|
+
|
|
184
|
+
- Updated dependencies [5f61fdf]
|
|
185
|
+
- @llamaindex/ui@2.1.4
|
|
186
|
+
|
|
187
|
+
## 0.1.1
|
|
188
|
+
|
|
189
|
+
### Patch Changes
|
|
190
|
+
|
|
191
|
+
- cadb023: improve debugger interface
|
|
192
|
+
- Updated dependencies [90216b7]
|
|
193
|
+
- @llamaindex/workflows-client@1.4.0
|
|
194
|
+
- @llamaindex/ui@2.1.3
|
|
195
|
+
|
|
196
|
+
## 0.1.0
|
|
197
|
+
|
|
198
|
+
### Minor Changes
|
|
199
|
+
|
|
200
|
+
- 2e17c68: Add workflow debugger, and fix minor bugs in workflow hooks
|
|
201
|
+
|
|
202
|
+
### Patch Changes
|
|
203
|
+
|
|
204
|
+
- Updated dependencies [2e17c68]
|
|
205
|
+
- @llamaindex/ui@2.1.3
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import js from "@eslint/js";
|
|
2
|
+
import globals from "globals";
|
|
3
|
+
import reactHooks from "eslint-plugin-react-hooks";
|
|
4
|
+
import reactRefresh from "eslint-plugin-react-refresh";
|
|
5
|
+
import tseslint from "typescript-eslint";
|
|
6
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
7
|
+
|
|
8
|
+
export default defineConfig([
|
|
9
|
+
globalIgnores(["dist"]),
|
|
10
|
+
{
|
|
11
|
+
files: ["src/**/*.{ts,tsx}"],
|
|
12
|
+
extends: [
|
|
13
|
+
js.configs.recommended,
|
|
14
|
+
tseslint.configs.recommended,
|
|
15
|
+
reactHooks.configs["recommended-latest"],
|
|
16
|
+
reactRefresh.configs.vite,
|
|
17
|
+
],
|
|
18
|
+
languageOptions: {
|
|
19
|
+
ecmaVersion: 2020,
|
|
20
|
+
globals: globals.browser,
|
|
21
|
+
parserOptions: {
|
|
22
|
+
tsconfigRootDir: import.meta.dirname,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
]);
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>workflow-debugger</title>
|
|
7
|
-
<script type="module" crossorigin src="/app.js"></script>
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/app.css">
|
|
9
7
|
</head>
|
|
10
8
|
<body>
|
|
11
9
|
<div id="root"></div>
|
|
10
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
12
11
|
</body>
|
|
13
12
|
</html>
|
package/package.json
CHANGED
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llamaindex/workflow-debugger",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"private": false,
|
|
4
5
|
"type": "module",
|
|
5
|
-
"files": [
|
|
6
|
-
"dist/*"
|
|
7
|
-
],
|
|
8
|
-
"publishConfig": {
|
|
9
|
-
"access": "public"
|
|
10
|
-
},
|
|
11
6
|
"dependencies": {
|
|
12
7
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
13
8
|
"@xyflow/react": "^12.8.5",
|
|
14
9
|
"lucide-react": "^0.514.0",
|
|
15
|
-
"react": "
|
|
16
|
-
"react-dom": "
|
|
10
|
+
"react": "19.2.0",
|
|
11
|
+
"react-dom": "19.2.0",
|
|
17
12
|
"react-syntax-highlighter": "^15.6.6",
|
|
18
|
-
"@llamaindex/ui": "
|
|
19
|
-
"@llamaindex/workflows-client": "1.
|
|
13
|
+
"@llamaindex/ui": "3.3.2",
|
|
14
|
+
"@llamaindex/workflows-client": "1.8.2"
|
|
20
15
|
},
|
|
21
16
|
"devDependencies": {
|
|
22
17
|
"@eslint/js": "^9.36.0",
|
|
23
18
|
"@tailwindcss/postcss": "^4.1.13",
|
|
24
|
-
"@types/react": "
|
|
25
|
-
"@types/react-dom": "
|
|
19
|
+
"@types/react": "19.2.2",
|
|
20
|
+
"@types/react-dom": "19.2.2",
|
|
26
21
|
"@vitejs/plugin-react-swc": "^4.1.0",
|
|
27
22
|
"@vitest/coverage-v8": "^3.2.4",
|
|
28
23
|
"autoprefixer": "^10.4.21",
|
|
@@ -31,13 +26,12 @@
|
|
|
31
26
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
32
27
|
"globals": "^16.4.0",
|
|
33
28
|
"postcss": "^8.5.6",
|
|
34
|
-
"prettier": "^3.6.2",
|
|
35
29
|
"tailwindcss": "^4.1.13",
|
|
36
30
|
"typescript": "~5.8.3",
|
|
37
31
|
"typescript-eslint": "^8.44.0",
|
|
38
|
-
"vite": "^
|
|
39
|
-
"@llamaindex/ui": "
|
|
40
|
-
"@llamaindex/workflows-client": "1.
|
|
32
|
+
"vite": "^6.3.5",
|
|
33
|
+
"@llamaindex/ui": "3.3.2",
|
|
34
|
+
"@llamaindex/workflows-client": "1.8.2"
|
|
41
35
|
},
|
|
42
36
|
"scripts": {
|
|
43
37
|
"dev": "vite",
|
package/src/App.tsx
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ApiProvider, createWorkflowsClient } from "@llamaindex/ui";
|
|
2
|
+
import { WorkflowDebugger } from "./components/workflow-debugger";
|
|
3
|
+
import { ErrorBoundary } from "./components/error-boundary";
|
|
4
|
+
|
|
5
|
+
function App() {
|
|
6
|
+
const url = "http://localhost:8000";
|
|
7
|
+
const client = createWorkflowsClient({ baseUrl: url });
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<ErrorBoundary>
|
|
11
|
+
<ApiProvider clients={{ workflowsClient: client }}>
|
|
12
|
+
<WorkflowDebugger />
|
|
13
|
+
</ApiProvider>
|
|
14
|
+
</ErrorBoundary>
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default App;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { CSSProperties } from "react";
|
|
2
|
+
import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
|
|
3
|
+
import {
|
|
4
|
+
oneDark,
|
|
5
|
+
oneLight,
|
|
6
|
+
} from "react-syntax-highlighter/dist/esm/styles/prism";
|
|
7
|
+
|
|
8
|
+
const customStyle: CSSProperties = {
|
|
9
|
+
margin: 0,
|
|
10
|
+
fontSize: "12px",
|
|
11
|
+
padding: "12px",
|
|
12
|
+
borderRadius: "6px",
|
|
13
|
+
width: "100%",
|
|
14
|
+
boxSizing: "border-box",
|
|
15
|
+
maxHeight: "none",
|
|
16
|
+
overflow: "visible",
|
|
17
|
+
};
|
|
18
|
+
export interface CodeBlockProps {
|
|
19
|
+
language: string;
|
|
20
|
+
value: string;
|
|
21
|
+
wrapLongLines?: boolean;
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function CodeBlock({
|
|
26
|
+
language,
|
|
27
|
+
value,
|
|
28
|
+
wrapLongLines = false,
|
|
29
|
+
className,
|
|
30
|
+
}: CodeBlockProps) {
|
|
31
|
+
const isDark =
|
|
32
|
+
typeof document !== "undefined" &&
|
|
33
|
+
document.documentElement.classList.contains("dark");
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<div className={className}>
|
|
37
|
+
<SyntaxHighlighter
|
|
38
|
+
language={language}
|
|
39
|
+
style={isDark ? oneDark : oneLight}
|
|
40
|
+
customStyle={customStyle}
|
|
41
|
+
wrapLongLines={wrapLongLines}
|
|
42
|
+
showLineNumbers={false}
|
|
43
|
+
>
|
|
44
|
+
{value}
|
|
45
|
+
</SyntaxHighlighter>
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
interface ErrorBoundaryState {
|
|
4
|
+
hasError: boolean;
|
|
5
|
+
error?: Error;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface ErrorBoundaryProps {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
fallback?: React.ComponentType<{ error: Error; resetError: () => void }>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class ErrorBoundary extends React.Component<
|
|
14
|
+
ErrorBoundaryProps,
|
|
15
|
+
ErrorBoundaryState
|
|
16
|
+
> {
|
|
17
|
+
constructor(props: ErrorBoundaryProps) {
|
|
18
|
+
super(props);
|
|
19
|
+
this.state = { hasError: false };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static getDerivedStateFromError(error: Error): ErrorBoundaryState {
|
|
23
|
+
return { hasError: true, error };
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
|
|
27
|
+
console.error("ErrorBoundary caught an error:", error, errorInfo);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
resetError = () => {
|
|
31
|
+
this.setState({ hasError: false, error: undefined });
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
render() {
|
|
35
|
+
if (this.state.hasError && this.state.error) {
|
|
36
|
+
if (this.props.fallback) {
|
|
37
|
+
const FallbackComponent = this.props.fallback;
|
|
38
|
+
return (
|
|
39
|
+
<FallbackComponent
|
|
40
|
+
error={this.state.error}
|
|
41
|
+
resetError={this.resetError}
|
|
42
|
+
/>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<div className="min-h-screen flex items-center justify-center bg-background">
|
|
48
|
+
<div className="max-w-md p-6 bg-card border border-border rounded-lg shadow-sm">
|
|
49
|
+
<h2 className="text-lg font-semibold text-destructive mb-2">
|
|
50
|
+
Something went wrong
|
|
51
|
+
</h2>
|
|
52
|
+
<p className="text-sm text-muted-foreground mb-4">
|
|
53
|
+
The workflow debugger encountered an error. This might happen if
|
|
54
|
+
the workflow server is unreachable.
|
|
55
|
+
</p>
|
|
56
|
+
<details className="mb-4">
|
|
57
|
+
<summary className="text-sm font-medium cursor-pointer hover:text-foreground">
|
|
58
|
+
Error Details
|
|
59
|
+
</summary>
|
|
60
|
+
<pre className="mt-2 text-xs bg-muted p-3 rounded border overflow-auto">
|
|
61
|
+
{this.state.error.message}
|
|
62
|
+
</pre>
|
|
63
|
+
</details>
|
|
64
|
+
<div className="flex gap-2">
|
|
65
|
+
<button
|
|
66
|
+
onClick={this.resetError}
|
|
67
|
+
className="px-3 py-2 text-sm bg-primary text-primary-foreground rounded hover:bg-primary/90 transition-colors"
|
|
68
|
+
>
|
|
69
|
+
Try Again
|
|
70
|
+
</button>
|
|
71
|
+
<button
|
|
72
|
+
onClick={() => window.location.reload()}
|
|
73
|
+
className="px-3 py-2 text-sm bg-secondary text-secondary-foreground rounded hover:bg-secondary/90 transition-colors"
|
|
74
|
+
>
|
|
75
|
+
Reload Page
|
|
76
|
+
</button>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return this.props.children;
|
|
84
|
+
}
|
|
85
|
+
}
|