veryfront 0.0.3 → 0.0.5

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.
@@ -0,0 +1,314 @@
1
+ // src/ai/react/primitives/chat-container.tsx
2
+ import * as React from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ var ChatContainer = React.forwardRef(
5
+ ({ className, children, ...props }, ref) => {
6
+ return /* @__PURE__ */ jsx(
7
+ "div",
8
+ {
9
+ ref,
10
+ className,
11
+ "data-chat-container": "",
12
+ ...props,
13
+ children
14
+ }
15
+ );
16
+ }
17
+ );
18
+ ChatContainer.displayName = "ChatContainer";
19
+
20
+ // src/ai/react/primitives/message-list.tsx
21
+ import * as React2 from "react";
22
+ import { jsx as jsx2 } from "react/jsx-runtime";
23
+ var MessageList = React2.forwardRef(
24
+ ({ className, children, ...props }, ref) => {
25
+ return /* @__PURE__ */ jsx2(
26
+ "div",
27
+ {
28
+ ref,
29
+ className,
30
+ "data-message-list": "",
31
+ role: "log",
32
+ "aria-live": "polite",
33
+ ...props,
34
+ children
35
+ }
36
+ );
37
+ }
38
+ );
39
+ MessageList.displayName = "MessageList";
40
+ var MessageItem = React2.forwardRef(
41
+ ({ className, role, content, children, ...props }, ref) => {
42
+ return /* @__PURE__ */ jsx2(
43
+ "div",
44
+ {
45
+ ref,
46
+ className,
47
+ "data-message-item": "",
48
+ "data-role": role,
49
+ ...props,
50
+ children: children || content
51
+ }
52
+ );
53
+ }
54
+ );
55
+ MessageItem.displayName = "MessageItem";
56
+ var MessageRole = React2.forwardRef(
57
+ ({ className, children, ...props }, ref) => {
58
+ return /* @__PURE__ */ jsx2(
59
+ "span",
60
+ {
61
+ ref,
62
+ className,
63
+ "data-message-role": "",
64
+ ...props,
65
+ children
66
+ }
67
+ );
68
+ }
69
+ );
70
+ MessageRole.displayName = "MessageRole";
71
+ var MessageContent = React2.forwardRef(({ className, children, ...props }, ref) => {
72
+ return /* @__PURE__ */ jsx2(
73
+ "div",
74
+ {
75
+ ref,
76
+ className,
77
+ "data-message-content": "",
78
+ ...props,
79
+ children
80
+ }
81
+ );
82
+ });
83
+ MessageContent.displayName = "MessageContent";
84
+
85
+ // src/ai/react/primitives/input-box.tsx
86
+ import * as React3 from "react";
87
+ import { jsx as jsx3 } from "react/jsx-runtime";
88
+ var InputBox = React3.forwardRef(({ className, value, onChange, onSubmit, multiline, ...props }, ref) => {
89
+ const handleKeyDown = (e) => {
90
+ if (e.key === "Enter" && !e.shiftKey && onSubmit) {
91
+ e.preventDefault();
92
+ onSubmit();
93
+ }
94
+ };
95
+ if (multiline) {
96
+ return /* @__PURE__ */ jsx3(
97
+ "textarea",
98
+ {
99
+ ref,
100
+ className,
101
+ value,
102
+ onChange,
103
+ onKeyDown: handleKeyDown,
104
+ "data-input-box": "",
105
+ "data-multiline": "true",
106
+ rows: 3,
107
+ ...props
108
+ }
109
+ );
110
+ }
111
+ return /* @__PURE__ */ jsx3(
112
+ "input",
113
+ {
114
+ ref,
115
+ type: "text",
116
+ className,
117
+ value,
118
+ onChange,
119
+ onKeyDown: handleKeyDown,
120
+ "data-input-box": "",
121
+ ...props
122
+ }
123
+ );
124
+ });
125
+ InputBox.displayName = "InputBox";
126
+ var SubmitButton = React3.forwardRef(({ className, isLoading, disabled, children, ...props }, ref) => {
127
+ return /* @__PURE__ */ jsx3(
128
+ "button",
129
+ {
130
+ ref,
131
+ type: "submit",
132
+ className,
133
+ disabled: disabled || isLoading,
134
+ "data-submit-button": "",
135
+ "data-loading": isLoading,
136
+ "aria-label": "Submit message",
137
+ ...props,
138
+ children: children || "Send"
139
+ }
140
+ );
141
+ });
142
+ SubmitButton.displayName = "SubmitButton";
143
+ var LoadingIndicator = React3.forwardRef(({ className, ...props }, ref) => {
144
+ return /* @__PURE__ */ jsx3(
145
+ "div",
146
+ {
147
+ ref,
148
+ className,
149
+ "data-loading-indicator": "",
150
+ role: "status",
151
+ "aria-label": "Loading",
152
+ ...props
153
+ }
154
+ );
155
+ });
156
+ LoadingIndicator.displayName = "LoadingIndicator";
157
+
158
+ // src/ai/react/primitives/agent-primitives.tsx
159
+ import * as React4 from "react";
160
+ import { jsx as jsx4 } from "react/jsx-runtime";
161
+ var AgentContainer = React4.forwardRef(({ className, children, ...props }, ref) => {
162
+ return /* @__PURE__ */ jsx4(
163
+ "div",
164
+ {
165
+ ref,
166
+ className,
167
+ "data-agent-container": "",
168
+ ...props,
169
+ children
170
+ }
171
+ );
172
+ });
173
+ AgentContainer.displayName = "AgentContainer";
174
+ var AgentStatus = React4.forwardRef(
175
+ ({ className, status, label, ...props }, ref) => {
176
+ const displayLabel = label || formatStatus(status);
177
+ return /* @__PURE__ */ jsx4(
178
+ "div",
179
+ {
180
+ ref,
181
+ className,
182
+ "data-agent-status": "",
183
+ "data-status": status,
184
+ role: "status",
185
+ "aria-label": `Agent status: ${displayLabel}`,
186
+ ...props,
187
+ children: displayLabel
188
+ }
189
+ );
190
+ }
191
+ );
192
+ AgentStatus.displayName = "AgentStatus";
193
+ var ThinkingIndicator = React4.forwardRef(({ className, children, ...props }, ref) => {
194
+ return /* @__PURE__ */ jsx4(
195
+ "div",
196
+ {
197
+ ref,
198
+ className,
199
+ "data-thinking-indicator": "",
200
+ role: "status",
201
+ "aria-live": "polite",
202
+ ...props,
203
+ children
204
+ }
205
+ );
206
+ });
207
+ ThinkingIndicator.displayName = "ThinkingIndicator";
208
+ function formatStatus(status) {
209
+ switch (status) {
210
+ case "idle":
211
+ return "Idle";
212
+ case "thinking":
213
+ return "Thinking...";
214
+ case "tool_execution":
215
+ return "Using tools...";
216
+ case "streaming":
217
+ return "Responding...";
218
+ case "completed":
219
+ return "Completed";
220
+ case "error":
221
+ return "Error";
222
+ default:
223
+ return String(status);
224
+ }
225
+ }
226
+
227
+ // src/ai/react/primitives/tool-primitives.tsx
228
+ import * as React5 from "react";
229
+ import { jsx as jsx5, jsxs } from "react/jsx-runtime";
230
+ var ToolInvocation = React5.forwardRef(({ className, name, args, status, children, ...props }, ref) => {
231
+ return /* @__PURE__ */ jsxs(
232
+ "div",
233
+ {
234
+ ref,
235
+ className,
236
+ "data-tool-invocation": "",
237
+ "data-tool-name": name,
238
+ "data-status": status,
239
+ ...props,
240
+ children: [
241
+ /* @__PURE__ */ jsxs("div", { "data-tool-header": "", children: [
242
+ /* @__PURE__ */ jsx5("span", { "data-tool-name": "", children: name }),
243
+ status && /* @__PURE__ */ jsxs("span", { "data-tool-status": "", children: [
244
+ "(",
245
+ status,
246
+ ")"
247
+ ] })
248
+ ] }),
249
+ args && /* @__PURE__ */ jsx5("div", { "data-tool-args": "", children: /* @__PURE__ */ jsx5("pre", { children: JSON.stringify(args, null, 2) }) }),
250
+ children
251
+ ]
252
+ }
253
+ );
254
+ });
255
+ ToolInvocation.displayName = "ToolInvocation";
256
+ var ToolResult = React5.forwardRef(
257
+ ({ className, result, renderResult, ...props }, ref) => {
258
+ const content = renderResult ? renderResult(result) : JSON.stringify(result, null, 2);
259
+ return /* @__PURE__ */ jsx5(
260
+ "div",
261
+ {
262
+ ref,
263
+ className,
264
+ "data-tool-result": "",
265
+ ...props,
266
+ children: typeof content === "string" ? /* @__PURE__ */ jsx5("pre", { children: content }) : content
267
+ }
268
+ );
269
+ }
270
+ );
271
+ ToolResult.displayName = "ToolResult";
272
+ var ToolList = React5.forwardRef(
273
+ ({ className, toolCalls, renderTool, ...props }, ref) => {
274
+ return /* @__PURE__ */ jsx5(
275
+ "div",
276
+ {
277
+ ref,
278
+ className,
279
+ "data-tool-list": "",
280
+ ...props,
281
+ children: toolCalls.map(
282
+ (tool) => renderTool ? /* @__PURE__ */ jsx5(React5.Fragment, { children: renderTool(tool) }, tool.id) : /* @__PURE__ */ jsx5(
283
+ ToolInvocation,
284
+ {
285
+ name: tool.name,
286
+ args: tool.args,
287
+ status: tool.status,
288
+ children: tool.result !== void 0 && /* @__PURE__ */ jsx5(ToolResult, { result: tool.result })
289
+ },
290
+ tool.id
291
+ )
292
+ )
293
+ }
294
+ );
295
+ }
296
+ );
297
+ ToolList.displayName = "ToolList";
298
+ export {
299
+ AgentContainer,
300
+ AgentStatus,
301
+ ChatContainer,
302
+ InputBox,
303
+ LoadingIndicator,
304
+ MessageContent,
305
+ MessageItem,
306
+ MessageList,
307
+ MessageRole,
308
+ SubmitButton,
309
+ ThinkingIndicator,
310
+ ToolInvocation,
311
+ ToolList,
312
+ ToolResult
313
+ };
314
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/ai/react/primitives/chat-container.tsx", "../../../src/ai/react/primitives/message-list.tsx", "../../../src/ai/react/primitives/input-box.tsx", "../../../src/ai/react/primitives/agent-primitives.tsx", "../../../src/ai/react/primitives/tool-primitives.tsx"],
4
+ "sourcesContent": ["/**\n * ChatContainer Primitive - Layer 2 (Unstyled)\n *\n * Root container for chat interfaces.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\n\nexport interface ChatContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * ChatContainer - Root chat component\n *\n * Provides minimal structure. Bring your own styles.\n *\n * @example\n * ```tsx\n * <ChatContainer className=\"flex flex-col h-screen\">\n * <YourHeader />\n * <MessageList messages={messages} />\n * <YourInput />\n * </ChatContainer>\n * ```\n */\nexport const ChatContainer = React.forwardRef<HTMLDivElement, ChatContainerProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-chat-container=\"\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nChatContainer.displayName = \"ChatContainer\";\n", "/**\n * MessageList & MessageItem Primitives - Layer 2 (Unstyled)\n *\n * Message rendering primitives.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\nimport type { Message } from \"../../types/agent.ts\";\n\nexport interface MessageListProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * MessageList - Container for messages\n *\n * @example\n * ```tsx\n * <MessageList className=\"flex-1 overflow-y-auto space-y-4\">\n * {messages.map((msg) => (\n * <MessageItem key={msg.id} role={msg.role}>\n * {msg.content}\n * </MessageItem>\n * ))}\n * </MessageList>\n * ```\n */\nexport const MessageList = React.forwardRef<HTMLDivElement, MessageListProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-message-list=\"\"\n role=\"log\"\n aria-live=\"polite\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nMessageList.displayName = \"MessageList\";\n\nexport interface MessageItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Message role */\n role: Message[\"role\"];\n\n /** Message content (can be children or prop) */\n content?: string;\n\n children?: React.ReactNode;\n}\n\n/**\n * MessageItem - Individual message\n *\n * @example\n * ```tsx\n * <MessageItem role=\"user\" className=\"flex justify-end\">\n * <div className=\"bg-blue-500 text-white rounded-lg px-4 py-2\">\n * {message.content}\n * </div>\n * </MessageItem>\n * ```\n */\nexport const MessageItem = React.forwardRef<HTMLDivElement, MessageItemProps>(\n ({ className, role, content, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-message-item=\"\"\n data-role={role}\n {...props}\n >\n {children || content}\n </div>\n );\n },\n);\n\nMessageItem.displayName = \"MessageItem\";\n\nexport interface MessageRoleProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n}\n\n/**\n * MessageRole - Role indicator\n *\n * @example\n * ```tsx\n * <MessageRole className=\"font-semibold text-sm\">\n * {message.role}\n * </MessageRole>\n * ```\n */\nexport const MessageRole = React.forwardRef<HTMLSpanElement, MessageRoleProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={className}\n data-message-role=\"\"\n {...props}\n >\n {children}\n </span>\n );\n },\n);\n\nMessageRole.displayName = \"MessageRole\";\n\nexport interface MessageContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * MessageContent - Message content wrapper\n *\n * @example\n * ```tsx\n * <MessageContent className=\"prose\">\n * {message.content}\n * </MessageContent>\n * ```\n */\nexport const MessageContent = React.forwardRef<\n HTMLDivElement,\n MessageContentProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-message-content=\"\"\n {...props}\n >\n {children}\n </div>\n );\n});\n\nMessageContent.displayName = \"MessageContent\";\n", "/**\n * InputBox & SubmitButton Primitives - Layer 2 (Unstyled)\n *\n * Input primitives for chat interfaces.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\n\nexport interface InputBoxProps extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement | HTMLTextAreaElement>,\n \"onChange\" | \"onSubmit\"\n > {\n /** Current value */\n value: string;\n\n /** Change handler */\n onChange: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n\n /** Submit handler */\n onSubmit?: () => void;\n\n /** Use textarea instead of input */\n multiline?: boolean;\n}\n\n/**\n * InputBox - Text input primitive\n *\n * @example\n * ```tsx\n * <InputBox\n * value={input}\n * onChange={(e) => setInput(e.target.value)}\n * onSubmit={handleSubmit}\n * placeholder=\"Type a message...\"\n * className=\"w-full px-4 py-2 border rounded-lg\"\n * />\n * ```\n */\nexport const InputBox = React.forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputBoxProps\n>(({ className, value, onChange, onSubmit, multiline, ...props }, ref) => {\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n if (e.key === \"Enter\" && !e.shiftKey && onSubmit) {\n e.preventDefault();\n onSubmit();\n }\n };\n\n if (multiline) {\n return (\n <textarea\n ref={ref as React.Ref<HTMLTextAreaElement>}\n className={className}\n value={value}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n data-input-box=\"\"\n data-multiline=\"true\"\n rows={3}\n {...(props as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n );\n }\n\n return (\n <input\n ref={ref as React.Ref<HTMLInputElement>}\n type=\"text\"\n className={className}\n value={value}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n data-input-box=\"\"\n {...props}\n />\n );\n});\n\nInputBox.displayName = \"InputBox\";\n\nexport interface SubmitButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Loading state */\n isLoading?: boolean;\n\n children?: React.ReactNode;\n}\n\n/**\n * SubmitButton - Submit button primitive\n *\n * @example\n * ```tsx\n * <SubmitButton\n * onClick={handleSubmit}\n * isLoading={isLoading}\n * disabled={!input.trim()}\n * className=\"px-4 py-2 bg-blue-600 text-white rounded-lg\"\n * >\n * Send\n * </SubmitButton>\n * ```\n */\nexport const SubmitButton = React.forwardRef<\n HTMLButtonElement,\n SubmitButtonProps\n>(({ className, isLoading, disabled, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type=\"submit\"\n className={className}\n disabled={disabled || isLoading}\n data-submit-button=\"\"\n data-loading={isLoading}\n aria-label=\"Submit message\"\n {...props}\n >\n {children || \"Send\"}\n </button>\n );\n});\n\nSubmitButton.displayName = \"SubmitButton\";\n\nexport interface LoadingIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * LoadingIndicator - Loading spinner primitive\n *\n * @example\n * ```tsx\n * {isLoading && (\n * <LoadingIndicator className=\"animate-spin h-4 w-4\" />\n * )}\n * ```\n */\nexport const LoadingIndicator = React.forwardRef<\n HTMLDivElement,\n LoadingIndicatorProps\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-loading-indicator=\"\"\n role=\"status\"\n aria-label=\"Loading\"\n {...props}\n />\n );\n});\n\nLoadingIndicator.displayName = \"LoadingIndicator\";\n", "/**\n * Agent Primitives - Layer 2 (Unstyled)\n *\n * Primitives for displaying agent status and execution.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\nimport type { AgentStatus as AgentStatusType } from \"../../types/agent.ts\";\n\nexport interface AgentContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * AgentContainer - Root agent UI container\n *\n * @example\n * ```tsx\n * <AgentContainer className=\"border rounded-lg p-4\">\n * <AgentStatus status={agent.status} />\n * <AgentMessages messages={agent.messages} />\n * </AgentContainer>\n * ```\n */\nexport const AgentContainer = React.forwardRef<\n HTMLDivElement,\n AgentContainerProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-agent-container=\"\"\n {...props}\n >\n {children}\n </div>\n );\n});\n\nAgentContainer.displayName = \"AgentContainer\";\n\nexport interface AgentStatusProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current agent status */\n status: AgentStatusType;\n\n /** Custom label */\n label?: string;\n}\n\n/**\n * AgentStatus - Status indicator\n *\n * @example\n * ```tsx\n * <AgentStatus\n * status={agent.status}\n * className=\"text-sm font-medium\"\n * />\n * ```\n */\nexport const AgentStatus = React.forwardRef<HTMLDivElement, AgentStatusProps>(\n ({ className, status, label, ...props }, ref) => {\n const displayLabel = label || formatStatus(status);\n\n return (\n <div\n ref={ref}\n className={className}\n data-agent-status=\"\"\n data-status={status}\n role=\"status\"\n aria-label={`Agent status: ${displayLabel}`}\n {...props}\n >\n {displayLabel}\n </div>\n );\n },\n);\n\nAgentStatus.displayName = \"AgentStatus\";\n\nexport interface ThinkingIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Thinking text */\n children?: React.ReactNode;\n}\n\n/**\n * ThinkingIndicator - Shows when agent is thinking\n *\n * @example\n * ```tsx\n * {agent.thinking && (\n * <ThinkingIndicator className=\"italic text-gray-600\">\n * {agent.thinking}\n * </ThinkingIndicator>\n * )}\n * ```\n */\nexport const ThinkingIndicator = React.forwardRef<\n HTMLDivElement,\n ThinkingIndicatorProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-thinking-indicator=\"\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n {children}\n </div>\n );\n});\n\nThinkingIndicator.displayName = \"ThinkingIndicator\";\n\n/**\n * Format status for display\n */\nfunction formatStatus(status: AgentStatusType): string {\n switch (status) {\n case \"idle\":\n return \"Idle\";\n case \"thinking\":\n return \"Thinking...\";\n case \"tool_execution\":\n return \"Using tools...\";\n case \"streaming\":\n return \"Responding...\";\n case \"completed\":\n return \"Completed\";\n case \"error\":\n return \"Error\";\n default:\n return String(status);\n }\n}\n", "/**\n * Tool Primitives - Layer 2 (Unstyled)\n *\n * Primitives for displaying tool invocations and results.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\nimport type { ToolCall } from \"../../types/agent.ts\";\n\nexport interface ToolInvocationProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Tool name */\n name: string;\n\n /** Tool arguments */\n args?: Record<string, unknown>;\n\n /** Tool status */\n status?: ToolCall[\"status\"];\n\n children?: React.ReactNode;\n}\n\n/**\n * ToolInvocation - Tool call display\n *\n * @example\n * ```tsx\n * <ToolInvocation\n * name={tool.name}\n * args={tool.args}\n * status={tool.status}\n * className=\"border-l-4 border-blue-500 pl-4\"\n * >\n * <ToolResult result={tool.result} />\n * </ToolInvocation>\n * ```\n */\nexport const ToolInvocation = React.forwardRef<\n HTMLDivElement,\n ToolInvocationProps\n>(({ className, name, args, status, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-tool-invocation=\"\"\n data-tool-name={name}\n data-status={status}\n {...props}\n >\n <div data-tool-header=\"\">\n <span data-tool-name=\"\">{name}</span>\n {status && <span data-tool-status=\"\">({status})</span>}\n </div>\n\n {args && (\n <div data-tool-args=\"\">\n <pre>{JSON.stringify(args, null, 2)}</pre>\n </div>\n )}\n\n {children}\n </div>\n );\n});\n\nToolInvocation.displayName = \"ToolInvocation\";\n\nexport interface ToolResultProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Tool result data */\n result: unknown;\n\n /** Custom renderer */\n renderResult?: (result: unknown) => React.ReactNode;\n}\n\n/**\n * ToolResult - Tool result display\n *\n * @example\n * ```tsx\n * <ToolResult\n * result={tool.result}\n * className=\"mt-2 p-2 bg-gray-100 rounded\"\n * />\n * ```\n */\nexport const ToolResult = React.forwardRef<HTMLDivElement, ToolResultProps>(\n ({ className, result, renderResult, ...props }, ref) => {\n const content = renderResult ? renderResult(result) : JSON.stringify(result, null, 2);\n\n return (\n <div\n ref={ref}\n className={className}\n data-tool-result=\"\"\n {...props}\n >\n {typeof content === \"string\" ? <pre>{content}</pre> : content}\n </div>\n );\n },\n);\n\nToolResult.displayName = \"ToolResult\";\n\nexport interface ToolListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Tool calls to display */\n toolCalls: ToolCall[];\n\n /** Render each tool */\n renderTool?: (toolCall: ToolCall) => React.ReactNode;\n}\n\n/**\n * ToolList - Display list of tool calls\n *\n * @example\n * ```tsx\n * <ToolList\n * toolCalls={agent.toolCalls}\n * className=\"space-y-2\"\n * renderTool={(tool) => (\n * <ToolInvocation {...tool}>\n * <ToolResult result={tool.result} />\n * </ToolInvocation>\n * )}\n * />\n * ```\n */\nexport const ToolList = React.forwardRef<HTMLDivElement, ToolListProps>(\n ({ className, toolCalls, renderTool, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-tool-list=\"\"\n {...props}\n >\n {toolCalls.map((tool) =>\n renderTool\n ? <React.Fragment key={tool.id}>{renderTool(tool)}</React.Fragment>\n : (\n <ToolInvocation\n key={tool.id}\n name={tool.name}\n args={tool.args}\n status={tool.status}\n >\n {tool.result !== undefined && <ToolResult result={tool.result} />}\n </ToolInvocation>\n )\n )}\n </div>\n );\n },\n);\n\nToolList.displayName = \"ToolList\";\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "jsx", "React", "jsx", "React", "jsx", "React", "jsx"]
7
+ }