@agentxjs/ui 0.0.9 → 0.1.2
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/dist/api/index.d.ts +2 -3
- package/dist/browser-Bab_T5G7.js +39 -0
- package/dist/browser-Bab_T5G7.js.map +1 -0
- package/dist/components/container/AgentList.d.ts +45 -0
- package/dist/components/container/Chat.d.ts +47 -0
- package/dist/components/container/ChatHeader.d.ts +41 -0
- package/dist/components/container/ToolCard.d.ts +69 -0
- package/dist/components/container/index.d.ts +24 -19
- package/dist/components/{message → container/message}/MessageList.d.ts +1 -1
- package/dist/components/{message → container/message}/index.d.ts +0 -1
- package/dist/components/{message → container/message}/items/AssistantMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ErrorAlert.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ToolCallMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ToolResultMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/ToolUseMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/UserMessage.d.ts +1 -1
- package/dist/components/{message → container/message}/items/index.d.ts +0 -1
- package/dist/components/{message → container/message}/parts/ToolResultContent.d.ts +1 -1
- package/dist/components/element/Badge.d.ts +1 -1
- package/dist/components/element/Button.d.ts +2 -2
- package/dist/components/element/EmojiPicker.d.ts +64 -0
- package/dist/components/element/MessageAvatar.d.ts +1 -1
- package/dist/components/element/Toast.d.ts +71 -0
- package/dist/components/element/index.d.ts +4 -0
- package/dist/components/pane/InputPane.d.ts +74 -0
- package/dist/components/pane/InputToolBar.d.ts +74 -0
- package/dist/components/pane/ListPane.d.ts +128 -0
- package/dist/components/pane/MessagePane.d.ts +111 -0
- package/dist/components/pane/NavBar.d.ts +71 -0
- package/dist/components/pane/index.d.ts +32 -0
- package/dist/components/studio/Studio.d.ts +23 -28
- package/dist/components/studio/index.d.ts +13 -6
- package/dist/globals.css +1 -200
- package/dist/hooks/index.d.ts +27 -13
- package/dist/hooks/useAgent.d.ts +44 -13
- package/dist/hooks/useAgentX.d.ts +7 -6
- package/dist/hooks/useImages.d.ts +84 -0
- package/dist/index.js +21508 -61
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/dist/components/container/AgentPane.d.ts +0 -56
- package/dist/components/container/ContainerView.d.ts +0 -119
- package/dist/components/container/DefinitionPane.d.ts +0 -27
- package/dist/components/container/InputPane.d.ts +0 -44
- package/dist/components/container/InputToolBar.d.ts +0 -22
- package/dist/components/container/MessagePane.d.ts +0 -32
- package/dist/components/container/SessionPane.d.ts +0 -35
- package/dist/components/container/types.d.ts +0 -67
- package/dist/components/input/InputBox.d.ts +0 -43
- package/dist/components/input/index.d.ts +0 -1
- package/dist/components/message/StatusIndicator.d.ts +0 -28
- package/dist/components/message/items/SystemMessage.d.ts +0 -25
- package/dist/hooks/useSession.d.ts +0 -79
- package/dist/index-B8Ijbzyc.js +0 -27676
- package/dist/index-B8Ijbzyc.js.map +0 -1
- package/dist/index-BtOS4F-X.js +0 -3013
- package/dist/index-BtOS4F-X.js.map +0 -1
- /package/dist/components/{message → container/message}/parts/FileContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/ImageContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/TextContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/ThinkingContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/ToolCallContent.d.ts +0 -0
- /package/dist/components/{message → container/message}/parts/index.d.ts +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InputToolBar - Toolbar buttons for input area
|
|
3
|
+
*
|
|
4
|
+
* A pure UI component for displaying toolbar buttons above or below
|
|
5
|
+
* an input area. Supports icon buttons, toggles, and dropdowns.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* <InputToolBar
|
|
10
|
+
* items={[
|
|
11
|
+
* { id: 'attach', icon: <Paperclip />, label: 'Attach file' },
|
|
12
|
+
* { id: 'emoji', icon: <Smile />, label: 'Add emoji' },
|
|
13
|
+
* ]}
|
|
14
|
+
* onItemClick={(id) => handleAction(id)}
|
|
15
|
+
* />
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import * as React from "react";
|
|
19
|
+
/**
|
|
20
|
+
* Toolbar item data
|
|
21
|
+
*/
|
|
22
|
+
export interface ToolBarItem {
|
|
23
|
+
/**
|
|
24
|
+
* Unique identifier
|
|
25
|
+
*/
|
|
26
|
+
id: string;
|
|
27
|
+
/**
|
|
28
|
+
* Icon element
|
|
29
|
+
*/
|
|
30
|
+
icon: React.ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Tooltip label
|
|
33
|
+
*/
|
|
34
|
+
label: string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the item is currently active/toggled
|
|
37
|
+
*/
|
|
38
|
+
active?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Whether the item is disabled
|
|
41
|
+
*/
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Visual variant
|
|
45
|
+
*/
|
|
46
|
+
variant?: "default" | "primary" | "danger";
|
|
47
|
+
}
|
|
48
|
+
export interface InputToolBarProps {
|
|
49
|
+
/**
|
|
50
|
+
* Toolbar items to display
|
|
51
|
+
*/
|
|
52
|
+
items: ToolBarItem[];
|
|
53
|
+
/**
|
|
54
|
+
* Items to display on the right side
|
|
55
|
+
*/
|
|
56
|
+
rightItems?: ToolBarItem[];
|
|
57
|
+
/**
|
|
58
|
+
* Callback when an item is clicked
|
|
59
|
+
*/
|
|
60
|
+
onItemClick?: (id: string) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Size of the toolbar buttons
|
|
63
|
+
* @default 'sm'
|
|
64
|
+
*/
|
|
65
|
+
size?: "xs" | "sm" | "md";
|
|
66
|
+
/**
|
|
67
|
+
* Additional class name
|
|
68
|
+
*/
|
|
69
|
+
className?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* InputToolBar component
|
|
73
|
+
*/
|
|
74
|
+
export declare const InputToolBar: React.ForwardRefExoticComponent<InputToolBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ListPane - Generic list panel component
|
|
3
|
+
*
|
|
4
|
+
* A pure UI component for displaying lists with:
|
|
5
|
+
* - Header with title and action button
|
|
6
|
+
* - Optional search input
|
|
7
|
+
* - Scrollable list of items
|
|
8
|
+
* - Empty state handling
|
|
9
|
+
* - Loading state
|
|
10
|
+
*
|
|
11
|
+
* This component knows nothing about business concepts like
|
|
12
|
+
* "Agent", "Image", "Session", etc. It only deals with generic
|
|
13
|
+
* "items" that have id, title, subtitle, etc.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <ListPane
|
|
18
|
+
* title="Conversations"
|
|
19
|
+
* items={items}
|
|
20
|
+
* selectedId={selectedId}
|
|
21
|
+
* onSelect={(id) => setSelectedId(id)}
|
|
22
|
+
* onDelete={(id) => handleDelete(id)}
|
|
23
|
+
* onNew={() => handleNew()}
|
|
24
|
+
* searchable
|
|
25
|
+
* />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import * as React from "react";
|
|
29
|
+
/**
|
|
30
|
+
* Item data for ListPane
|
|
31
|
+
*/
|
|
32
|
+
export interface ListPaneItem {
|
|
33
|
+
/**
|
|
34
|
+
* Unique identifier
|
|
35
|
+
*/
|
|
36
|
+
id: string;
|
|
37
|
+
/**
|
|
38
|
+
* Main title
|
|
39
|
+
*/
|
|
40
|
+
title: string;
|
|
41
|
+
/**
|
|
42
|
+
* Optional subtitle or description
|
|
43
|
+
*/
|
|
44
|
+
subtitle?: React.ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Optional leading content (icon, avatar, etc.)
|
|
47
|
+
*/
|
|
48
|
+
leading?: React.ReactNode;
|
|
49
|
+
/**
|
|
50
|
+
* Optional trailing content (badge, status, etc.)
|
|
51
|
+
*/
|
|
52
|
+
trailing?: React.ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* Whether this item is currently active
|
|
55
|
+
*/
|
|
56
|
+
active?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Timestamp for display
|
|
59
|
+
*/
|
|
60
|
+
timestamp?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface ListPaneProps {
|
|
63
|
+
/**
|
|
64
|
+
* Panel title displayed in header
|
|
65
|
+
*/
|
|
66
|
+
title?: string;
|
|
67
|
+
/**
|
|
68
|
+
* List of items to display
|
|
69
|
+
*/
|
|
70
|
+
items: ListPaneItem[];
|
|
71
|
+
/**
|
|
72
|
+
* Currently selected item ID
|
|
73
|
+
*/
|
|
74
|
+
selectedId?: string | null;
|
|
75
|
+
/**
|
|
76
|
+
* Whether the list is loading
|
|
77
|
+
*/
|
|
78
|
+
isLoading?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Enable search functionality
|
|
81
|
+
*/
|
|
82
|
+
searchable?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Placeholder for search input
|
|
85
|
+
*/
|
|
86
|
+
searchPlaceholder?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Show new item button in header
|
|
89
|
+
*/
|
|
90
|
+
showNewButton?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Label for new button (tooltip)
|
|
93
|
+
*/
|
|
94
|
+
newButtonLabel?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Empty state configuration
|
|
97
|
+
*/
|
|
98
|
+
emptyState?: {
|
|
99
|
+
icon?: React.ReactNode;
|
|
100
|
+
title: string;
|
|
101
|
+
description?: string;
|
|
102
|
+
actionLabel?: string;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Callback when an item is selected
|
|
106
|
+
*/
|
|
107
|
+
onSelect?: (id: string) => void;
|
|
108
|
+
/**
|
|
109
|
+
* Callback when delete is clicked on an item
|
|
110
|
+
*/
|
|
111
|
+
onDelete?: (id: string) => void;
|
|
112
|
+
/**
|
|
113
|
+
* Callback when new button is clicked
|
|
114
|
+
*/
|
|
115
|
+
onNew?: () => void;
|
|
116
|
+
/**
|
|
117
|
+
* Custom render function for item actions
|
|
118
|
+
*/
|
|
119
|
+
renderItemActions?: (item: ListPaneItem) => React.ReactNode;
|
|
120
|
+
/**
|
|
121
|
+
* Additional class name
|
|
122
|
+
*/
|
|
123
|
+
className?: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* ListPane component
|
|
127
|
+
*/
|
|
128
|
+
export declare const ListPane: React.ForwardRefExoticComponent<ListPaneProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { ToolStatus } from '../container/ToolCard';
|
|
2
|
+
/**
|
|
3
|
+
* MessagePane - Message display area component
|
|
4
|
+
*
|
|
5
|
+
* A pure UI component for displaying messages with:
|
|
6
|
+
* - User and assistant message bubbles
|
|
7
|
+
* - Streaming text indicator
|
|
8
|
+
* - Auto-scroll to bottom
|
|
9
|
+
* - Empty state
|
|
10
|
+
* - Markdown rendering support
|
|
11
|
+
*
|
|
12
|
+
* This component knows nothing about business concepts.
|
|
13
|
+
* It only deals with generic "messages" with role and content.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <MessagePane
|
|
18
|
+
* items={messages}
|
|
19
|
+
* streamingText="Currently typing..."
|
|
20
|
+
* renderContent={(content) => <Markdown>{content}</Markdown>}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import * as React from "react";
|
|
25
|
+
/**
|
|
26
|
+
* Tool metadata for ToolCard rendering
|
|
27
|
+
*/
|
|
28
|
+
export interface ToolMetadata {
|
|
29
|
+
/** Tool name (e.g., "Bash", "Read") */
|
|
30
|
+
toolName: string;
|
|
31
|
+
/** Tool call ID */
|
|
32
|
+
toolId?: string;
|
|
33
|
+
/** Tool status */
|
|
34
|
+
status: ToolStatus;
|
|
35
|
+
/** Tool input parameters */
|
|
36
|
+
input?: Record<string, unknown>;
|
|
37
|
+
/** Tool output */
|
|
38
|
+
output?: unknown;
|
|
39
|
+
/** Whether output is an error */
|
|
40
|
+
isError?: boolean;
|
|
41
|
+
/** Execution duration in seconds */
|
|
42
|
+
duration?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Message item data
|
|
46
|
+
*/
|
|
47
|
+
export interface MessagePaneItem {
|
|
48
|
+
/**
|
|
49
|
+
* Unique identifier
|
|
50
|
+
*/
|
|
51
|
+
id: string;
|
|
52
|
+
/**
|
|
53
|
+
* Message role
|
|
54
|
+
*/
|
|
55
|
+
role: "user" | "assistant" | "system" | "tool" | "error";
|
|
56
|
+
/**
|
|
57
|
+
* Message content (string for text, any for structured content)
|
|
58
|
+
*/
|
|
59
|
+
content: string | unknown;
|
|
60
|
+
/**
|
|
61
|
+
* Timestamp
|
|
62
|
+
*/
|
|
63
|
+
timestamp?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Optional metadata (tool info for role="tool", errorCode for role="error")
|
|
66
|
+
*/
|
|
67
|
+
metadata?: Record<string, unknown>;
|
|
68
|
+
/**
|
|
69
|
+
* Tool-specific metadata (for role="tool")
|
|
70
|
+
*/
|
|
71
|
+
toolMetadata?: ToolMetadata;
|
|
72
|
+
}
|
|
73
|
+
export interface MessagePaneProps {
|
|
74
|
+
/**
|
|
75
|
+
* Messages to display
|
|
76
|
+
*/
|
|
77
|
+
items: MessagePaneItem[];
|
|
78
|
+
/**
|
|
79
|
+
* Current streaming text (displays with typing indicator)
|
|
80
|
+
*/
|
|
81
|
+
streamingText?: string;
|
|
82
|
+
/**
|
|
83
|
+
* Whether currently loading/thinking
|
|
84
|
+
*/
|
|
85
|
+
isLoading?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Custom content renderer
|
|
88
|
+
* @default Uses MarkdownText for strings
|
|
89
|
+
*/
|
|
90
|
+
renderContent?: (content: unknown, item: MessagePaneItem) => React.ReactNode;
|
|
91
|
+
/**
|
|
92
|
+
* Custom avatar renderer
|
|
93
|
+
*/
|
|
94
|
+
renderAvatar?: (role: MessagePaneItem["role"]) => React.ReactNode;
|
|
95
|
+
/**
|
|
96
|
+
* Empty state configuration
|
|
97
|
+
*/
|
|
98
|
+
emptyState?: {
|
|
99
|
+
icon?: React.ReactNode;
|
|
100
|
+
title: string;
|
|
101
|
+
description?: string;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Additional class name
|
|
105
|
+
*/
|
|
106
|
+
className?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* MessagePane component
|
|
110
|
+
*/
|
|
111
|
+
export declare const MessagePane: React.ForwardRefExoticComponent<MessagePaneProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NavBar - Icon navigation bar component
|
|
3
|
+
*
|
|
4
|
+
* A simplified wrapper around ActivityBar for common navigation patterns.
|
|
5
|
+
* Pure UI component with no business logic.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* <NavBar
|
|
10
|
+
* items={[
|
|
11
|
+
* { id: 'chat', icon: <MessageSquare />, label: 'Chat' },
|
|
12
|
+
* { id: 'settings', icon: <Settings />, label: 'Settings' },
|
|
13
|
+
* ]}
|
|
14
|
+
* activeId="chat"
|
|
15
|
+
* onSelect={(id) => setActiveId(id)}
|
|
16
|
+
* />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import * as React from "react";
|
|
20
|
+
/**
|
|
21
|
+
* Item data for NavBar
|
|
22
|
+
*/
|
|
23
|
+
export interface NavBarItem {
|
|
24
|
+
/**
|
|
25
|
+
* Unique identifier
|
|
26
|
+
*/
|
|
27
|
+
id: string;
|
|
28
|
+
/**
|
|
29
|
+
* Icon element
|
|
30
|
+
*/
|
|
31
|
+
icon: React.ReactNode;
|
|
32
|
+
/**
|
|
33
|
+
* Tooltip label
|
|
34
|
+
*/
|
|
35
|
+
label: string;
|
|
36
|
+
/**
|
|
37
|
+
* Optional badge (notification count, etc.)
|
|
38
|
+
*/
|
|
39
|
+
badge?: string | number;
|
|
40
|
+
}
|
|
41
|
+
export interface NavBarProps {
|
|
42
|
+
/**
|
|
43
|
+
* Main navigation items (top section)
|
|
44
|
+
*/
|
|
45
|
+
items: NavBarItem[];
|
|
46
|
+
/**
|
|
47
|
+
* Bottom navigation items (settings, account, etc.)
|
|
48
|
+
*/
|
|
49
|
+
bottomItems?: NavBarItem[];
|
|
50
|
+
/**
|
|
51
|
+
* Currently active item ID
|
|
52
|
+
*/
|
|
53
|
+
activeId?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Callback when an item is selected
|
|
56
|
+
*/
|
|
57
|
+
onSelect?: (id: string) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Position of the nav bar
|
|
60
|
+
* @default 'left'
|
|
61
|
+
*/
|
|
62
|
+
position?: "left" | "right";
|
|
63
|
+
/**
|
|
64
|
+
* Additional class name
|
|
65
|
+
*/
|
|
66
|
+
className?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* NavBar component
|
|
70
|
+
*/
|
|
71
|
+
export declare const NavBar: React.ForwardRefExoticComponent<NavBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pane Components - Pure UI Layer
|
|
3
|
+
*
|
|
4
|
+
* Pure presentation components with NO business logic. They:
|
|
5
|
+
* - Accept data via props
|
|
6
|
+
* - Emit user actions via callbacks
|
|
7
|
+
* - Use layout and element components internally
|
|
8
|
+
* - Know nothing about AgentX, Image, Agent, etc.
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* ```
|
|
12
|
+
* layout/ → element/ → pane/ → container/ → studio/
|
|
13
|
+
* (HERE)
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Components:
|
|
17
|
+
* - NavBar: Icon navigation bar (wraps ActivityBar)
|
|
18
|
+
* - ListPane: Generic list panel with search and actions
|
|
19
|
+
* - MessagePane: Message display area
|
|
20
|
+
* - InputPane: Input area with toolbar
|
|
21
|
+
* - InputToolBar: Toolbar buttons for input
|
|
22
|
+
*/
|
|
23
|
+
export { NavBar } from './NavBar';
|
|
24
|
+
export type { NavBarProps, NavBarItem } from './NavBar';
|
|
25
|
+
export { ListPane } from './ListPane';
|
|
26
|
+
export type { ListPaneProps, ListPaneItem } from './ListPane';
|
|
27
|
+
export { MessagePane } from './MessagePane';
|
|
28
|
+
export type { MessagePaneProps, MessagePaneItem, ToolMetadata } from './MessagePane';
|
|
29
|
+
export { InputPane } from './InputPane';
|
|
30
|
+
export type { InputPaneProps } from './InputPane';
|
|
31
|
+
export { InputToolBar } from './InputToolBar';
|
|
32
|
+
export type { InputToolBarProps, ToolBarItem } from './InputToolBar';
|
|
@@ -1,47 +1,42 @@
|
|
|
1
|
-
import { AgentX } from '
|
|
2
|
-
import { SessionItem } from '../../hooks/useSession';
|
|
3
|
-
import { AgentDefinitionItem } from '../container/types';
|
|
4
|
-
/**
|
|
5
|
-
* Props for Studio component
|
|
6
|
-
*/
|
|
1
|
+
import { AgentX } from 'agentxjs';
|
|
7
2
|
export interface StudioProps {
|
|
8
3
|
/**
|
|
9
|
-
* AgentX instance
|
|
4
|
+
* AgentX instance
|
|
10
5
|
*/
|
|
11
|
-
agentx: AgentX;
|
|
6
|
+
agentx: AgentX | null;
|
|
12
7
|
/**
|
|
13
|
-
*
|
|
8
|
+
* Container ID for user isolation
|
|
9
|
+
* Each user should have their own container to isolate their conversations
|
|
10
|
+
* @default "default"
|
|
14
11
|
*/
|
|
15
|
-
|
|
12
|
+
containerId?: string;
|
|
16
13
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
14
|
+
* Width of the sidebar (AgentList)
|
|
15
|
+
* @default 280
|
|
19
16
|
*/
|
|
20
|
-
|
|
17
|
+
sidebarWidth?: number;
|
|
21
18
|
/**
|
|
22
|
-
*
|
|
19
|
+
* Enable search in AgentList
|
|
20
|
+
* @default true
|
|
23
21
|
*/
|
|
24
|
-
|
|
22
|
+
searchable?: boolean;
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
24
|
+
* Show save button in Chat (not needed in Image-First model)
|
|
25
|
+
* @default false
|
|
27
26
|
*/
|
|
28
|
-
|
|
27
|
+
showSaveButton?: boolean;
|
|
29
28
|
/**
|
|
30
|
-
*
|
|
29
|
+
* Input height ratio for Chat
|
|
30
|
+
* @default 0.25
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
inputHeightRatio?: number;
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* Additional class name
|
|
35
35
|
*/
|
|
36
36
|
className?: string;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Studio
|
|
40
|
-
*
|
|
41
|
-
* Integrates:
|
|
42
|
-
* - useSession for session management (maps to agentx.sessions)
|
|
43
|
-
* - useAgent for agent state (maps to agentx.agents)
|
|
44
|
-
* - ContainerView layout components
|
|
39
|
+
* Studio component
|
|
45
40
|
*/
|
|
46
|
-
export declare function Studio({ agentx,
|
|
47
|
-
|
|
41
|
+
export declare function Studio({ agentx, containerId, sidebarWidth, searchable, showSaveButton, // Default to false in Image-First model
|
|
42
|
+
inputHeightRatio, className, }: StudioProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Studio -
|
|
2
|
+
* Studio Components - Top-level Workspace
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
4
|
+
* Orchestration layer that:
|
|
5
|
+
* - Manages AgentX connection
|
|
6
|
+
* - Coordinates between containers
|
|
7
|
+
* - Handles global state (current agent, current image)
|
|
8
|
+
* - Provides ready-to-use interface
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* ```
|
|
12
|
+
* container/ (AgentList + Chat) = studio/ (complete workspace)
|
|
13
|
+
* ```
|
|
8
14
|
*/
|
|
9
|
-
export { Studio
|
|
15
|
+
export { Studio } from './Studio';
|
|
16
|
+
export type { StudioProps } from './Studio';
|