@railtownai/railtracks-visualizer 0.0.19 → 0.0.21
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 +0 -9
- package/dist/cjs/index.js +410 -303
- package/dist/esm/index.js +410 -303
- package/dist/types/components/AgenticFlowVisualizer.d.ts +1 -0
- package/dist/types/components/Node.d.ts +3 -4
- package/dist/types/components/Visualizer.d.ts +1 -1
- package/dist/types/components/nodes/AgentNode.d.ts +22 -0
- package/dist/types/components/nodes/CoordinatorNode.d.ts +22 -0
- package/dist/types/components/nodes/ExpandableTextarea.d.ts +9 -0
- package/dist/types/components/nodes/NodeDetailsPopover.d.ts +23 -0
- package/dist/types/components/nodes/ToolNode.d.ts +22 -0
- package/dist/types/components/nodes/index.d.ts +5 -0
- package/dist/types/components/ui/badge.d.ts +7 -4
- package/dist/types/components/ui/tooltip.d.ts +9 -0
- package/dist/types/hooks/index.d.ts +0 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/lib/SafeThemeProvider.d.ts +19 -0
- package/dist/types/lib/ThemeProvider.d.ts +1 -0
- package/dist/types/lib/index.d.ts +2 -0
- package/dist/types/lib/safeStyled.d.ts +41 -0
- package/dist/types/lib/utils.d.ts +32 -2
- package/package.json +3 -2
- package/dist/types/hooks/useTheme.d.ts +0 -7
|
@@ -14,6 +14,7 @@ export interface AgenticFlowVisualizerProps {
|
|
|
14
14
|
disableAutoFit?: boolean;
|
|
15
15
|
showTimeline?: boolean;
|
|
16
16
|
minNodeSpacing?: number;
|
|
17
|
+
onInspect?: (nodeData: any) => void;
|
|
17
18
|
}
|
|
18
19
|
declare const AgenticFlowVisualizer: React.FC<AgenticFlowVisualizerProps>;
|
|
19
20
|
export default AgenticFlowVisualizer;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { AgentRunNode } from "../dto/AgentRunNode";
|
|
3
|
-
import { AgentRunEdge } from "../dto/AgentRunEdge";
|
|
4
2
|
type NodeType = "Tool" | "Agent" | "Coordinator";
|
|
5
3
|
interface NodeData {
|
|
6
4
|
label: string;
|
|
7
5
|
nodeType?: NodeType;
|
|
8
|
-
details?:
|
|
6
|
+
details?: any;
|
|
9
7
|
id?: string;
|
|
10
|
-
edges?:
|
|
8
|
+
edges?: any[];
|
|
11
9
|
edgeDetails?: {
|
|
12
10
|
input_args?: any[];
|
|
13
11
|
input_kwargs?: any;
|
|
@@ -15,6 +13,7 @@ interface NodeData {
|
|
|
15
13
|
state?: string;
|
|
16
14
|
status?: string;
|
|
17
15
|
}[];
|
|
16
|
+
onInspect?: (nodeData: NodeData) => void;
|
|
18
17
|
}
|
|
19
18
|
interface NodeProps {
|
|
20
19
|
data: NodeData;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { AgenticFlowVisualizerProps } from "./AgenticFlowVisualizer";
|
|
3
3
|
/**
|
|
4
|
-
* Visualizer component that wraps AgenticFlowVisualizer with ReactFlowProvider
|
|
4
|
+
* Visualizer component that wraps AgenticFlowVisualizer with ReactFlowProvider.
|
|
5
5
|
* This is the main component that should be imported from the npm package.
|
|
6
6
|
*/
|
|
7
7
|
declare const Visualizer: React.FC<AgenticFlowVisualizerProps>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface NodeData {
|
|
3
|
+
label: string;
|
|
4
|
+
nodeType?: "Tool" | "Agent" | "Coordinator";
|
|
5
|
+
details?: any;
|
|
6
|
+
id?: string;
|
|
7
|
+
edges?: any[];
|
|
8
|
+
edgeDetails?: {
|
|
9
|
+
input_args?: any[];
|
|
10
|
+
input_kwargs?: any;
|
|
11
|
+
output?: any;
|
|
12
|
+
state?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
}[];
|
|
15
|
+
}
|
|
16
|
+
interface AgentNodeProps {
|
|
17
|
+
data: NodeData;
|
|
18
|
+
id: string;
|
|
19
|
+
onInspect?: (nodeData: NodeData) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const AgentNode: React.FC<AgentNodeProps>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface NodeData {
|
|
3
|
+
label: string;
|
|
4
|
+
nodeType?: "Tool" | "Agent" | "Coordinator";
|
|
5
|
+
details?: any;
|
|
6
|
+
id?: string;
|
|
7
|
+
edges?: any[];
|
|
8
|
+
edgeDetails?: {
|
|
9
|
+
input_args?: any[];
|
|
10
|
+
input_kwargs?: any;
|
|
11
|
+
output?: any;
|
|
12
|
+
state?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
}[];
|
|
15
|
+
}
|
|
16
|
+
interface CoordinatorNodeProps {
|
|
17
|
+
data: NodeData;
|
|
18
|
+
id: string;
|
|
19
|
+
onInspect?: (nodeData: NodeData) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const CoordinatorNode: React.FC<CoordinatorNodeProps>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface NodeData {
|
|
3
|
+
label: string;
|
|
4
|
+
nodeType?: "Tool" | "Agent" | "Coordinator";
|
|
5
|
+
details?: any;
|
|
6
|
+
id?: string;
|
|
7
|
+
edges?: any[];
|
|
8
|
+
edgeDetails?: {
|
|
9
|
+
input_args?: any[];
|
|
10
|
+
input_kwargs?: any;
|
|
11
|
+
output?: any;
|
|
12
|
+
state?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
}[];
|
|
15
|
+
}
|
|
16
|
+
interface NodeDetailsPopoverProps {
|
|
17
|
+
isVisible: boolean;
|
|
18
|
+
onClose: () => void;
|
|
19
|
+
nodeData: NodeData;
|
|
20
|
+
triggerRef: React.RefObject<HTMLDivElement>;
|
|
21
|
+
}
|
|
22
|
+
export declare const NodeDetailsPopover: React.FC<NodeDetailsPopoverProps>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface NodeData {
|
|
3
|
+
label: string;
|
|
4
|
+
nodeType?: "Tool" | "Agent" | "Coordinator";
|
|
5
|
+
details?: any;
|
|
6
|
+
id?: string;
|
|
7
|
+
edges?: any[];
|
|
8
|
+
edgeDetails?: {
|
|
9
|
+
input_args?: any[];
|
|
10
|
+
input_kwargs?: any;
|
|
11
|
+
output?: any;
|
|
12
|
+
state?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
}[];
|
|
15
|
+
}
|
|
16
|
+
interface ToolNodeProps {
|
|
17
|
+
data: NodeData;
|
|
18
|
+
id: string;
|
|
19
|
+
onInspect?: (nodeData: NodeData) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const ToolNode: React.FC<ToolNodeProps>;
|
|
22
|
+
export {};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
variant?:
|
|
2
|
+
interface BadgeProps {
|
|
3
|
+
variant?: string;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
title?: string;
|
|
6
|
+
placement?: "top" | "bottom" | "left" | "right" | "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom";
|
|
4
7
|
}
|
|
5
|
-
declare
|
|
6
|
-
export {
|
|
8
|
+
export declare const Badge: React.FC<BadgeProps>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface TooltipProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
content: React.ReactNode;
|
|
5
|
+
placement?: "top" | "bottom" | "left" | "right" | "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom";
|
|
6
|
+
delay?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare const Tooltip: React.FC<TooltipProps>;
|
|
9
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { useApi } from "./useApi";
|
|
2
2
|
export { useFlowData } from "./useFlowData";
|
|
3
|
-
export { useTheme } from "./useTheme";
|
|
4
3
|
export type { JsonFile, ApiError } from "./useApi";
|
|
5
4
|
export type { FlowDataState } from "./useFlowData";
|
|
6
5
|
export type { AgentRunNode } from "../dto/AgentRunNode";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -15,3 +15,5 @@ export type { AgentRunNode } from "./dto/AgentRunNode";
|
|
|
15
15
|
export type { AgentRunEdge } from "./dto/AgentRunEdge";
|
|
16
16
|
export { OpenAIIcon, AnthropicIcon, GoogleIcon } from "./components/icons";
|
|
17
17
|
export * from "./lib";
|
|
18
|
+
export { SafeThemeProvider, useSafeTheme } from "./lib/SafeThemeProvider";
|
|
19
|
+
export { createSafeTheme, getSafeColor, getSafeSpacing, getSafeThemeValue } from "./lib/utils";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { Theme } from "./theme";
|
|
3
|
+
interface SafeThemeProviderProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
theme?: Theme;
|
|
6
|
+
fallbackTheme?: Theme;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Safe Theme Provider that ensures components always have access to a valid theme
|
|
10
|
+
* This prevents the "Cannot read properties of undefined (reading 'card')" error
|
|
11
|
+
* when the package is used in applications that don't provide a theme context
|
|
12
|
+
*/
|
|
13
|
+
export declare const SafeThemeProvider: React.FC<SafeThemeProviderProps>;
|
|
14
|
+
/**
|
|
15
|
+
* Hook that provides a safe theme context
|
|
16
|
+
* Returns a theme object that is guaranteed to have all required properties
|
|
17
|
+
*/
|
|
18
|
+
export declare const useSafeTheme: () => Theme;
|
|
19
|
+
export {};
|
|
@@ -11,4 +11,5 @@ interface ThemeProviderProps {
|
|
|
11
11
|
export declare const ThemeProvider: React.FC<ThemeProviderProps>;
|
|
12
12
|
export declare const useTheme: () => ThemeContextType;
|
|
13
13
|
export declare const useThemeValue: () => Theme;
|
|
14
|
+
export declare const useComponentTheme: (themeProp?: Theme) => Theme;
|
|
14
15
|
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe styled-components wrapper that prevents undefined theme errors
|
|
3
|
+
* This wrapper ensures that styled components always have access to a valid theme
|
|
4
|
+
*/
|
|
5
|
+
export declare const safeStyled: {
|
|
6
|
+
div: (template: TemplateStringsArray, ...args: any[]) => import("@emotion/styled").StyledComponent<{
|
|
7
|
+
theme?: import("@emotion/react").Theme;
|
|
8
|
+
as?: React.ElementType;
|
|
9
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
10
|
+
button: (template: TemplateStringsArray, ...args: any[]) => import("@emotion/styled").StyledComponent<{
|
|
11
|
+
theme?: import("@emotion/react").Theme;
|
|
12
|
+
as?: React.ElementType;
|
|
13
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
14
|
+
span: (template: TemplateStringsArray, ...args: any[]) => import("@emotion/styled").StyledComponent<{
|
|
15
|
+
theme?: import("@emotion/react").Theme;
|
|
16
|
+
as?: React.ElementType;
|
|
17
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
18
|
+
h3: (template: TemplateStringsArray, ...args: any[]) => import("@emotion/styled").StyledComponent<{
|
|
19
|
+
theme?: import("@emotion/react").Theme;
|
|
20
|
+
as?: React.ElementType;
|
|
21
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, {}>;
|
|
22
|
+
textarea: (template: TemplateStringsArray, ...args: any[]) => import("@emotion/styled").StyledComponent<{
|
|
23
|
+
theme?: import("@emotion/react").Theme;
|
|
24
|
+
as?: React.ElementType;
|
|
25
|
+
}, import("react").DetailedHTMLProps<import("react").TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, {}>;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Safe theme color accessor for styled-components
|
|
29
|
+
* Usage: color: ${safeThemeColor('card')}
|
|
30
|
+
*/
|
|
31
|
+
export declare const safeThemeColor: (colorKey: string, fallback?: string) => (props: any) => string;
|
|
32
|
+
/**
|
|
33
|
+
* Safe theme spacing accessor for styled-components
|
|
34
|
+
* Usage: padding: ${safeThemeSpacing('md')}
|
|
35
|
+
*/
|
|
36
|
+
export declare const safeThemeSpacing: (spacingKey: string, fallback?: string) => (props: any) => string;
|
|
37
|
+
/**
|
|
38
|
+
* Safe theme value accessor for styled-components
|
|
39
|
+
* Usage: box-shadow: ${safeThemeValue('shadows.md', 'none')}
|
|
40
|
+
*/
|
|
41
|
+
export declare const safeThemeValue: (path: string, fallback?: any) => (props: any) => string;
|
|
@@ -14,10 +14,10 @@ export declare function toTitleCase(str: string): string;
|
|
|
14
14
|
export declare function formatCurrency(value: number | null | undefined): string;
|
|
15
15
|
/**
|
|
16
16
|
* Formats latency in a human-readable format
|
|
17
|
-
* @param
|
|
17
|
+
* @param latency - Latency in seconds
|
|
18
18
|
* @returns The formatted latency string
|
|
19
19
|
*/
|
|
20
|
-
export declare function formatLatency(
|
|
20
|
+
export declare function formatLatency(latency: number): string;
|
|
21
21
|
/**
|
|
22
22
|
* Truncates text to a specified length
|
|
23
23
|
* @param text - The text to truncate
|
|
@@ -47,3 +47,33 @@ export declare function getSpacing(theme: any, size: keyof typeof theme.spacing)
|
|
|
47
47
|
* @returns The color value
|
|
48
48
|
*/
|
|
49
49
|
export declare function getColor(theme: any, colorKey: keyof typeof theme.colors): string;
|
|
50
|
+
/**
|
|
51
|
+
* Safe theme access utility - prevents undefined theme errors
|
|
52
|
+
* @param theme - The theme object (can be undefined)
|
|
53
|
+
* @param colorKey - The color key to access
|
|
54
|
+
* @param fallback - Fallback color if theme or color is undefined
|
|
55
|
+
* @returns The color value or fallback
|
|
56
|
+
*/
|
|
57
|
+
export declare function getSafeColor(theme: any, colorKey: string, fallback?: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Safe theme access utility for spacing
|
|
60
|
+
* @param theme - The theme object (can be undefined)
|
|
61
|
+
* @param spacingKey - The spacing key to access
|
|
62
|
+
* @param fallback - Fallback spacing if theme or spacing is undefined
|
|
63
|
+
* @returns The spacing value or fallback
|
|
64
|
+
*/
|
|
65
|
+
export declare function getSafeSpacing(theme: any, spacingKey: string, fallback?: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Safe theme access utility for any theme property
|
|
68
|
+
* @param theme - The theme object (can be undefined)
|
|
69
|
+
* @param path - The path to the property (e.g., 'colors.card', 'spacing.md')
|
|
70
|
+
* @param fallback - Fallback value if theme or property is undefined
|
|
71
|
+
* @returns The property value or fallback
|
|
72
|
+
*/
|
|
73
|
+
export declare function getSafeThemeValue(theme: any, path: string, fallback: any): any;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a safe theme object with fallbacks for all required properties
|
|
76
|
+
* @param theme - The theme object (can be undefined)
|
|
77
|
+
* @returns A safe theme object with fallbacks
|
|
78
|
+
*/
|
|
79
|
+
export declare function createSafeTheme(theme?: any): any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@railtownai/railtracks-visualizer",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Railtown AI",
|
|
6
6
|
"description": "A visualizer for RailTracks agentic flows",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"@radix-ui/react-dialog": "1.1.15",
|
|
44
44
|
"@radix-ui/react-select": "2.2.6",
|
|
45
45
|
"lucide-react": "0.525.0",
|
|
46
|
+
"react-countup": "6.5.3",
|
|
46
47
|
"reactflow": "11.11.4",
|
|
47
48
|
"vaul": "1.1.2"
|
|
48
49
|
},
|
|
@@ -61,7 +62,7 @@
|
|
|
61
62
|
"storybook:preview": "npx http-server ./storybook-static",
|
|
62
63
|
"storybook:deploy": "gh-pages -d storybook-static",
|
|
63
64
|
"test:ui": "vitest --ui",
|
|
64
|
-
"test": "vitest run",
|
|
65
|
+
"test": "vitest run --silent",
|
|
65
66
|
"up": "ncu -u -x react -x react-dom -x @types/react -x @types/react-dom && npm install"
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|