@supyagent/sdk 0.1.21 → 0.1.23
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/react.cjs +270 -81
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +12 -2
- package/dist/react.d.ts +12 -2
- package/dist/react.js +270 -82
- package/dist/react.js.map +1 -1
- package/package.json +10 -10
package/dist/react.d.cts
CHANGED
|
@@ -21,7 +21,7 @@ declare function getProviderLabel(provider: string): string;
|
|
|
21
21
|
/**
|
|
22
22
|
* Determine which formatter to use based on tool name prefix.
|
|
23
23
|
*/
|
|
24
|
-
type FormatterType = "email" | "calendar" | "slack" | "github" | "drive" | "search" | "docs" | "sheets" | "slides" | "hubspot" | "linear" | "pipedrive" | "compute" | "resend" | "inbox" | "discord" | "notion" | "twitter" | "telegram" | "stripe" | "jira" | "salesforce" | "brevo" | "calendly" | "twilio" | "linkedin" | "bash" | "image" | "audio" | "video" | "generic";
|
|
24
|
+
type FormatterType = "email" | "calendar" | "slack" | "github" | "drive" | "search" | "docs" | "sheets" | "slides" | "hubspot" | "linear" | "pipedrive" | "compute" | "resend" | "inbox" | "discord" | "notion" | "twitter" | "telegram" | "stripe" | "jira" | "salesforce" | "brevo" | "calendly" | "twilio" | "linkedin" | "bash" | "image" | "audio" | "video" | "whatsapp" | "browser" | "generic";
|
|
25
25
|
declare function getFormatterType(toolName: string): FormatterType;
|
|
26
26
|
/**
|
|
27
27
|
* Resolve a virtual tool name for rendering purposes.
|
|
@@ -267,4 +267,14 @@ interface LinkedInFormatterProps {
|
|
|
267
267
|
}
|
|
268
268
|
declare function LinkedInFormatter({ data }: LinkedInFormatterProps): react_jsx_runtime.JSX.Element;
|
|
269
269
|
|
|
270
|
-
|
|
270
|
+
interface WhatsAppFormatterProps {
|
|
271
|
+
data: unknown;
|
|
272
|
+
}
|
|
273
|
+
declare function WhatsAppFormatter({ data }: WhatsAppFormatterProps): react_jsx_runtime.JSX.Element;
|
|
274
|
+
|
|
275
|
+
interface BrowserFormatterProps {
|
|
276
|
+
data: unknown;
|
|
277
|
+
}
|
|
278
|
+
declare function BrowserFormatter({ data }: BrowserFormatterProps): react_jsx_runtime.JSX.Element;
|
|
279
|
+
|
|
280
|
+
export { BrevoFormatter, BrowserFormatter, CalendarEventFormatter, CalendlyFormatter, CollapsibleResult, type CollapsibleResultProps, ComputeFormatter, DiscordFormatter, DocsFormatter, DriveFileFormatter, EmailFormatter, type FormatterType, GenericFormatter, GithubFormatter, HubspotFormatter, InboxFormatter, JiraFormatter, LinearFormatter, LinkedInFormatter, NotionFormatter, PROVIDER_LABELS, PipedriveFormatter, ProviderIcon, ResendFormatter, SalesforceFormatter, SearchFormatter, SheetsFormatter, SlackMessageFormatter, SlidesFormatter, StripeFormatter, type SummaryResult, SupyagentToolAction, SupyagentToolCall, SupyagentToolResult, TelegramFormatter, ToolInput, type ToolResultPart, TwilioFormatter, TwitterFormatter, WhatsAppFormatter, extractArgs, extractResult, extractState, extractToolName, getFormatterType, getProviderFromToolName, getProviderLabel, getSummary, humanizeToolName, maybeNormalize, normalizeMicrosoftCalendar, normalizeMicrosoftDrive, normalizeMicrosoftMail, resolveToolName, unwrapSupyagentResult };
|
package/dist/react.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ declare function getProviderLabel(provider: string): string;
|
|
|
21
21
|
/**
|
|
22
22
|
* Determine which formatter to use based on tool name prefix.
|
|
23
23
|
*/
|
|
24
|
-
type FormatterType = "email" | "calendar" | "slack" | "github" | "drive" | "search" | "docs" | "sheets" | "slides" | "hubspot" | "linear" | "pipedrive" | "compute" | "resend" | "inbox" | "discord" | "notion" | "twitter" | "telegram" | "stripe" | "jira" | "salesforce" | "brevo" | "calendly" | "twilio" | "linkedin" | "bash" | "image" | "audio" | "video" | "generic";
|
|
24
|
+
type FormatterType = "email" | "calendar" | "slack" | "github" | "drive" | "search" | "docs" | "sheets" | "slides" | "hubspot" | "linear" | "pipedrive" | "compute" | "resend" | "inbox" | "discord" | "notion" | "twitter" | "telegram" | "stripe" | "jira" | "salesforce" | "brevo" | "calendly" | "twilio" | "linkedin" | "bash" | "image" | "audio" | "video" | "whatsapp" | "browser" | "generic";
|
|
25
25
|
declare function getFormatterType(toolName: string): FormatterType;
|
|
26
26
|
/**
|
|
27
27
|
* Resolve a virtual tool name for rendering purposes.
|
|
@@ -267,4 +267,14 @@ interface LinkedInFormatterProps {
|
|
|
267
267
|
}
|
|
268
268
|
declare function LinkedInFormatter({ data }: LinkedInFormatterProps): react_jsx_runtime.JSX.Element;
|
|
269
269
|
|
|
270
|
-
|
|
270
|
+
interface WhatsAppFormatterProps {
|
|
271
|
+
data: unknown;
|
|
272
|
+
}
|
|
273
|
+
declare function WhatsAppFormatter({ data }: WhatsAppFormatterProps): react_jsx_runtime.JSX.Element;
|
|
274
|
+
|
|
275
|
+
interface BrowserFormatterProps {
|
|
276
|
+
data: unknown;
|
|
277
|
+
}
|
|
278
|
+
declare function BrowserFormatter({ data }: BrowserFormatterProps): react_jsx_runtime.JSX.Element;
|
|
279
|
+
|
|
280
|
+
export { BrevoFormatter, BrowserFormatter, CalendarEventFormatter, CalendlyFormatter, CollapsibleResult, type CollapsibleResultProps, ComputeFormatter, DiscordFormatter, DocsFormatter, DriveFileFormatter, EmailFormatter, type FormatterType, GenericFormatter, GithubFormatter, HubspotFormatter, InboxFormatter, JiraFormatter, LinearFormatter, LinkedInFormatter, NotionFormatter, PROVIDER_LABELS, PipedriveFormatter, ProviderIcon, ResendFormatter, SalesforceFormatter, SearchFormatter, SheetsFormatter, SlackMessageFormatter, SlidesFormatter, StripeFormatter, type SummaryResult, SupyagentToolAction, SupyagentToolCall, SupyagentToolResult, TelegramFormatter, ToolInput, type ToolResultPart, TwilioFormatter, TwitterFormatter, WhatsAppFormatter, extractArgs, extractResult, extractState, extractToolName, getFormatterType, getProviderFromToolName, getProviderLabel, getSummary, humanizeToolName, maybeNormalize, normalizeMicrosoftCalendar, normalizeMicrosoftDrive, normalizeMicrosoftMail, resolveToolName, unwrapSupyagentResult };
|
package/dist/react.js
CHANGED
|
@@ -45,7 +45,14 @@ var PROVIDER_LABELS = {
|
|
|
45
45
|
twilio: "Twilio",
|
|
46
46
|
image: "Image",
|
|
47
47
|
audio: "Audio",
|
|
48
|
-
video: "Video"
|
|
48
|
+
video: "Video",
|
|
49
|
+
shopify: "Shopify",
|
|
50
|
+
sap: "SAP",
|
|
51
|
+
jobs: "Jobs",
|
|
52
|
+
browser: "Browser",
|
|
53
|
+
files: "Files",
|
|
54
|
+
db: "Database",
|
|
55
|
+
radar: "Radar"
|
|
49
56
|
};
|
|
50
57
|
function getProviderLabel(provider) {
|
|
51
58
|
return PROVIDER_LABELS[provider] || provider.charAt(0).toUpperCase() + provider.slice(1);
|
|
@@ -117,6 +124,16 @@ function getFormatterType(toolName) {
|
|
|
117
124
|
return "twilio";
|
|
118
125
|
case "linkedin":
|
|
119
126
|
return "linkedin";
|
|
127
|
+
case "whatsapp":
|
|
128
|
+
return "whatsapp";
|
|
129
|
+
case "browser":
|
|
130
|
+
return "browser";
|
|
131
|
+
case "db":
|
|
132
|
+
return "compute";
|
|
133
|
+
case "files":
|
|
134
|
+
return "drive";
|
|
135
|
+
case "radar":
|
|
136
|
+
return "search";
|
|
120
137
|
case "image":
|
|
121
138
|
return "image";
|
|
122
139
|
case "tts":
|
|
@@ -172,7 +189,8 @@ import {
|
|
|
172
189
|
Phone,
|
|
173
190
|
MessageCircle,
|
|
174
191
|
UserCircle,
|
|
175
|
-
Monitor
|
|
192
|
+
Monitor,
|
|
193
|
+
Globe
|
|
176
194
|
} from "lucide-react";
|
|
177
195
|
import { jsx } from "react/jsx-runtime";
|
|
178
196
|
var ICON_MAP = {
|
|
@@ -204,7 +222,9 @@ var ICON_MAP = {
|
|
|
204
222
|
microsoft: Monitor,
|
|
205
223
|
outlook: Mail,
|
|
206
224
|
onedrive: HardDrive,
|
|
207
|
-
telegram: Send
|
|
225
|
+
telegram: Send,
|
|
226
|
+
whatsapp: MessageCircle,
|
|
227
|
+
browser: Globe
|
|
208
228
|
};
|
|
209
229
|
function ProviderIcon({ toolName, className = "h-4 w-4" }) {
|
|
210
230
|
const provider = getProviderFromToolName(toolName);
|
|
@@ -622,6 +642,40 @@ function getVideoSummary(data, toolName) {
|
|
|
622
642
|
}
|
|
623
643
|
return { text: isUnderstand ? "Video analysis" : "Video generation" };
|
|
624
644
|
}
|
|
645
|
+
function getWhatsappSummary(data, toolName) {
|
|
646
|
+
const action = actionFromToolName(toolName);
|
|
647
|
+
if (action === "send") {
|
|
648
|
+
const to = typeof data === "object" && data !== null && "to" in data ? String(data.to) : void 0;
|
|
649
|
+
return { text: to ? `Sent message to ${to}` : "Sent message", badge: { text: "Sent", variant: "success" } };
|
|
650
|
+
}
|
|
651
|
+
const n = countItems(data, "messages");
|
|
652
|
+
if (n > 0) return { text: `${n} messages`, badge: countBadge(n) };
|
|
653
|
+
if (typeof data === "object" && data !== null && "body" in data) {
|
|
654
|
+
const body = String(data.body);
|
|
655
|
+
return { text: body.length > 60 ? body.slice(0, 60) + "..." : body };
|
|
656
|
+
}
|
|
657
|
+
return { text: "WhatsApp result" };
|
|
658
|
+
}
|
|
659
|
+
function getBrowserSummary(data, toolName) {
|
|
660
|
+
if (typeof data === "object" && data !== null) {
|
|
661
|
+
const d = data;
|
|
662
|
+
if (d.url && typeof d.url === "string") {
|
|
663
|
+
try {
|
|
664
|
+
const hostname = new URL(d.url).hostname.replace("www.", "");
|
|
665
|
+
return { text: `Visited ${hostname}` };
|
|
666
|
+
} catch {
|
|
667
|
+
return { text: `Visited ${d.url}` };
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
if (d.screenshot_url || d.screenshot) {
|
|
671
|
+
return { text: "Page screenshot captured" };
|
|
672
|
+
}
|
|
673
|
+
if (d.content || d.text || d.markdown) {
|
|
674
|
+
return { text: "Page content extracted" };
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
return { text: humanizeToolName(toolName) };
|
|
678
|
+
}
|
|
625
679
|
function getBashSummary(data) {
|
|
626
680
|
if (typeof data !== "object" || data === null) return { text: "Command executed" };
|
|
627
681
|
const d = data;
|
|
@@ -664,6 +718,8 @@ var SUMMARY_MAP = {
|
|
|
664
718
|
image: getImageSummary,
|
|
665
719
|
audio: getAudioSummary,
|
|
666
720
|
video: getVideoSummary,
|
|
721
|
+
whatsapp: getWhatsappSummary,
|
|
722
|
+
browser: getBrowserSummary,
|
|
667
723
|
bash: getBashSummary,
|
|
668
724
|
generic: getGenericSummary
|
|
669
725
|
};
|
|
@@ -1370,7 +1426,7 @@ import {
|
|
|
1370
1426
|
Building2,
|
|
1371
1427
|
Mail as Mail3,
|
|
1372
1428
|
Phone as Phone2,
|
|
1373
|
-
Globe,
|
|
1429
|
+
Globe as Globe2,
|
|
1374
1430
|
Briefcase as Briefcase2,
|
|
1375
1431
|
DollarSign,
|
|
1376
1432
|
Calendar as Calendar3
|
|
@@ -1474,7 +1530,7 @@ function CompanyCard({ company }) {
|
|
|
1474
1530
|
] }),
|
|
1475
1531
|
/* @__PURE__ */ jsxs11("div", { className: "flex flex-wrap gap-x-4 gap-y-1 pl-6 text-xs text-muted-foreground", children: [
|
|
1476
1532
|
domain && /* @__PURE__ */ jsxs11("span", { className: "flex items-center gap-1", children: [
|
|
1477
|
-
/* @__PURE__ */ jsx12(
|
|
1533
|
+
/* @__PURE__ */ jsx12(Globe2, { className: "h-3 w-3" }),
|
|
1478
1534
|
domain
|
|
1479
1535
|
] }),
|
|
1480
1536
|
phone && /* @__PURE__ */ jsxs11("span", { className: "flex items-center gap-1", children: [
|
|
@@ -3016,17 +3072,143 @@ function LinkedInFormatter({ data }) {
|
|
|
3016
3072
|
return /* @__PURE__ */ jsx28("pre", { className: "rounded-lg border border-border bg-background p-3 text-xs text-foreground overflow-x-auto max-h-96 overflow-y-auto", children: JSON.stringify(data, null, 2) });
|
|
3017
3073
|
}
|
|
3018
3074
|
|
|
3075
|
+
// src/ui/formatters/whatsapp.tsx
|
|
3076
|
+
import { MessageCircle as MessageCircle3, User as User7, Clock as Clock10 } from "lucide-react";
|
|
3077
|
+
import { jsx as jsx29, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3078
|
+
function isWhatsAppMessage(data) {
|
|
3079
|
+
return typeof data === "object" && data !== null && ("body" in data || "text" in data || "from" in data);
|
|
3080
|
+
}
|
|
3081
|
+
function formatTimestamp3(ts) {
|
|
3082
|
+
try {
|
|
3083
|
+
const date = typeof ts === "number" ? new Date(ts > 1e12 ? ts : ts * 1e3) : new Date(ts);
|
|
3084
|
+
const now = /* @__PURE__ */ new Date();
|
|
3085
|
+
const diffMs = now.getTime() - date.getTime();
|
|
3086
|
+
const diffMins = Math.floor(diffMs / 6e4);
|
|
3087
|
+
const diffHours = Math.floor(diffMs / 36e5);
|
|
3088
|
+
const diffDays = Math.floor(diffMs / 864e5);
|
|
3089
|
+
if (diffMins < 1) return "Just now";
|
|
3090
|
+
if (diffMins < 60) return `${diffMins}m ago`;
|
|
3091
|
+
if (diffHours < 24) return `${diffHours}h ago`;
|
|
3092
|
+
if (diffDays < 7) return `${diffDays}d ago`;
|
|
3093
|
+
return date.toLocaleDateString(void 0, { month: "short", day: "numeric" });
|
|
3094
|
+
} catch {
|
|
3095
|
+
return String(ts);
|
|
3096
|
+
}
|
|
3097
|
+
}
|
|
3098
|
+
function MessageCard4({ message }) {
|
|
3099
|
+
const sender = message.profile_name || message.contact_name || message.from;
|
|
3100
|
+
const body = message.body || message.text;
|
|
3101
|
+
return /* @__PURE__ */ jsxs28("div", { className: "rounded-lg border border-border bg-card p-3 space-y-1.5", children: [
|
|
3102
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-2", children: [
|
|
3103
|
+
/* @__PURE__ */ jsx29(MessageCircle3, { className: "h-4 w-4 text-muted-foreground shrink-0" }),
|
|
3104
|
+
sender && /* @__PURE__ */ jsxs28("span", { className: "flex items-center gap-1 text-xs font-medium text-foreground", children: [
|
|
3105
|
+
/* @__PURE__ */ jsx29(User7, { className: "h-3 w-3" }),
|
|
3106
|
+
sender
|
|
3107
|
+
] }),
|
|
3108
|
+
message.type && message.type !== "text" && /* @__PURE__ */ jsx29("span", { className: "inline-flex rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground", children: message.type }),
|
|
3109
|
+
message.status && /* @__PURE__ */ jsx29("span", { className: `inline-flex rounded-full px-2 py-0.5 text-xs ${message.status === "delivered" || message.status === "read" ? "text-green-500 bg-green-500/10" : "text-muted-foreground bg-muted"}`, children: message.status }),
|
|
3110
|
+
message.timestamp && /* @__PURE__ */ jsxs28("span", { className: "flex items-center gap-1 text-xs text-muted-foreground ml-auto", children: [
|
|
3111
|
+
/* @__PURE__ */ jsx29(Clock10, { className: "h-3 w-3" }),
|
|
3112
|
+
formatTimestamp3(message.timestamp)
|
|
3113
|
+
] })
|
|
3114
|
+
] }),
|
|
3115
|
+
body && /* @__PURE__ */ jsx29("p", { className: "text-sm text-foreground line-clamp-3", children: body })
|
|
3116
|
+
] });
|
|
3117
|
+
}
|
|
3118
|
+
function WhatsAppFormatter({ data }) {
|
|
3119
|
+
if (typeof data === "object" && data !== null && "messages" in data) {
|
|
3120
|
+
const msgs = data.messages;
|
|
3121
|
+
if (Array.isArray(msgs)) {
|
|
3122
|
+
return /* @__PURE__ */ jsx29("div", { className: "space-y-2", children: msgs.filter(isWhatsAppMessage).map((m, i) => /* @__PURE__ */ jsx29(MessageCard4, { message: m }, m.id || i)) });
|
|
3123
|
+
}
|
|
3124
|
+
}
|
|
3125
|
+
if (isWhatsAppMessage(data)) return /* @__PURE__ */ jsx29(MessageCard4, { message: data });
|
|
3126
|
+
if (Array.isArray(data)) {
|
|
3127
|
+
const msgs = data.filter(isWhatsAppMessage);
|
|
3128
|
+
if (msgs.length > 0) {
|
|
3129
|
+
return /* @__PURE__ */ jsx29("div", { className: "space-y-2", children: msgs.map((m, i) => /* @__PURE__ */ jsx29(MessageCard4, { message: m }, m.id || i)) });
|
|
3130
|
+
}
|
|
3131
|
+
}
|
|
3132
|
+
return /* @__PURE__ */ jsx29("pre", { className: "rounded-lg border border-border bg-background p-3 text-xs text-foreground overflow-x-auto max-h-96 overflow-y-auto", children: JSON.stringify(data, null, 2) });
|
|
3133
|
+
}
|
|
3134
|
+
|
|
3135
|
+
// src/ui/formatters/browser.tsx
|
|
3136
|
+
import { Globe as Globe3, ExternalLink as ExternalLink8, FileText as FileText7, Image as Image2 } from "lucide-react";
|
|
3137
|
+
import { jsx as jsx30, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3138
|
+
function isBrowserData(data) {
|
|
3139
|
+
if (typeof data !== "object" || data === null) return false;
|
|
3140
|
+
return "url" in data || "content" in data || "text" in data || "markdown" in data || "screenshot_url" in data || "screenshot" in data;
|
|
3141
|
+
}
|
|
3142
|
+
function getDomain2(url) {
|
|
3143
|
+
try {
|
|
3144
|
+
return new URL(url).hostname.replace("www.", "");
|
|
3145
|
+
} catch {
|
|
3146
|
+
return url;
|
|
3147
|
+
}
|
|
3148
|
+
}
|
|
3149
|
+
function BrowserFormatter({ data }) {
|
|
3150
|
+
if (!isBrowserData(data)) {
|
|
3151
|
+
return /* @__PURE__ */ jsx30("pre", { className: "rounded-lg border border-border bg-background p-3 text-xs text-foreground overflow-x-auto max-h-96 overflow-y-auto", children: JSON.stringify(data, null, 2) });
|
|
3152
|
+
}
|
|
3153
|
+
const content = data.content || data.text || data.markdown || "";
|
|
3154
|
+
const screenshotUrl = data.screenshot_url || data.screenshot;
|
|
3155
|
+
return /* @__PURE__ */ jsxs29("div", { className: "space-y-2", children: [
|
|
3156
|
+
data.url && /* @__PURE__ */ jsx30("div", { className: "rounded-lg border border-border bg-card overflow-hidden", children: /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2 px-3 py-2", children: [
|
|
3157
|
+
/* @__PURE__ */ jsx30(Globe3, { className: "h-4 w-4 text-muted-foreground shrink-0" }),
|
|
3158
|
+
/* @__PURE__ */ jsxs29("div", { className: "min-w-0 flex-1", children: [
|
|
3159
|
+
data.title && /* @__PURE__ */ jsx30("p", { className: "text-sm font-medium text-foreground truncate", children: data.title }),
|
|
3160
|
+
/* @__PURE__ */ jsx30("p", { className: "text-xs text-muted-foreground truncate", children: getDomain2(data.url) })
|
|
3161
|
+
] }),
|
|
3162
|
+
data.status && /* @__PURE__ */ jsx30("span", { className: `inline-flex rounded-full px-2 py-0.5 text-xs ${Number(data.status) >= 200 && Number(data.status) < 300 ? "text-green-500 bg-green-500/10" : Number(data.status) >= 400 ? "text-destructive bg-destructive/10" : "text-muted-foreground bg-muted"}`, children: data.status }),
|
|
3163
|
+
/* @__PURE__ */ jsx30("a", { href: data.url, target: "_blank", rel: "noopener noreferrer", className: "shrink-0 text-muted-foreground hover:text-foreground", children: /* @__PURE__ */ jsx30(ExternalLink8, { className: "h-3.5 w-3.5" }) })
|
|
3164
|
+
] }) }),
|
|
3165
|
+
screenshotUrl && /* @__PURE__ */ jsxs29("div", { className: "rounded-lg border border-border bg-background overflow-hidden", children: [
|
|
3166
|
+
/* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-1.5 px-3 py-1.5 bg-muted border-b border-border", children: [
|
|
3167
|
+
/* @__PURE__ */ jsx30(Image2, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
3168
|
+
/* @__PURE__ */ jsx30("span", { className: "text-xs text-muted-foreground", children: "Screenshot" })
|
|
3169
|
+
] }),
|
|
3170
|
+
/* @__PURE__ */ jsx30("div", { className: "p-2", children: /* @__PURE__ */ jsx30(
|
|
3171
|
+
"img",
|
|
3172
|
+
{
|
|
3173
|
+
src: screenshotUrl,
|
|
3174
|
+
alt: data.title || "Page screenshot",
|
|
3175
|
+
className: "w-full rounded border border-border"
|
|
3176
|
+
}
|
|
3177
|
+
) })
|
|
3178
|
+
] }),
|
|
3179
|
+
content && /* @__PURE__ */ jsxs29("div", { className: "rounded-lg border border-border bg-background overflow-hidden", children: [
|
|
3180
|
+
/* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-1.5 px-3 py-1.5 bg-muted border-b border-border", children: [
|
|
3181
|
+
/* @__PURE__ */ jsx30(FileText7, { className: "h-3.5 w-3.5 text-muted-foreground" }),
|
|
3182
|
+
/* @__PURE__ */ jsx30("span", { className: "text-xs text-muted-foreground", children: "Extracted content" })
|
|
3183
|
+
] }),
|
|
3184
|
+
/* @__PURE__ */ jsx30("pre", { className: "p-3 text-xs text-foreground overflow-x-auto max-h-80 overflow-y-auto font-mono whitespace-pre-wrap", children: content })
|
|
3185
|
+
] }),
|
|
3186
|
+
data.links && data.links.length > 0 && /* @__PURE__ */ jsxs29("div", { className: "rounded-lg border border-border bg-card p-3 space-y-1", children: [
|
|
3187
|
+
/* @__PURE__ */ jsxs29("p", { className: "text-xs font-medium text-muted-foreground mb-1.5", children: [
|
|
3188
|
+
"Links (",
|
|
3189
|
+
data.links.length,
|
|
3190
|
+
")"
|
|
3191
|
+
] }),
|
|
3192
|
+
/* @__PURE__ */ jsx30("div", { className: "space-y-1 max-h-40 overflow-y-auto", children: data.links.slice(0, 20).map((link, i) => /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-1.5", children: [
|
|
3193
|
+
/* @__PURE__ */ jsx30(ExternalLink8, { className: "h-3 w-3 text-muted-foreground shrink-0" }),
|
|
3194
|
+
link.href ? /* @__PURE__ */ jsx30("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "text-xs text-primary hover:underline truncate", children: link.text || link.href }) : /* @__PURE__ */ jsx30("span", { className: "text-xs text-foreground truncate", children: link.text })
|
|
3195
|
+
] }, i)) })
|
|
3196
|
+
] }),
|
|
3197
|
+
!data.url && !content && !screenshotUrl && /* @__PURE__ */ jsx30("pre", { className: "rounded-lg border border-border bg-background p-3 text-xs text-foreground overflow-x-auto max-h-96 overflow-y-auto", children: JSON.stringify(data, null, 2) })
|
|
3198
|
+
] });
|
|
3199
|
+
}
|
|
3200
|
+
|
|
3019
3201
|
// src/ui/formatters/generic.tsx
|
|
3020
|
-
import { jsx as
|
|
3202
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
3021
3203
|
function GenericFormatter({ data }) {
|
|
3022
3204
|
if (data === null || data === void 0) {
|
|
3023
|
-
return /* @__PURE__ */
|
|
3205
|
+
return /* @__PURE__ */ jsx31("p", { className: "text-sm text-muted-foreground italic", children: "No data returned" });
|
|
3024
3206
|
}
|
|
3025
|
-
return /* @__PURE__ */
|
|
3207
|
+
return /* @__PURE__ */ jsx31("pre", { className: "rounded-lg border border-border bg-background p-3 text-xs text-foreground overflow-x-auto max-h-96 overflow-y-auto", children: JSON.stringify(data, null, 2) });
|
|
3026
3208
|
}
|
|
3027
3209
|
|
|
3028
3210
|
// src/ui/tool-result.tsx
|
|
3029
|
-
import { jsx as
|
|
3211
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
3030
3212
|
function extractToolName(part) {
|
|
3031
3213
|
if (part.type.startsWith("tool-") && part.type !== "tool-invocation") {
|
|
3032
3214
|
return part.type.slice(5);
|
|
@@ -3079,59 +3261,63 @@ function maybeNormalize(toolName, formatterType, data) {
|
|
|
3079
3261
|
function renderFormatter(formatterType, data) {
|
|
3080
3262
|
switch (formatterType) {
|
|
3081
3263
|
case "email":
|
|
3082
|
-
return /* @__PURE__ */
|
|
3264
|
+
return /* @__PURE__ */ jsx32(EmailFormatter, { data });
|
|
3083
3265
|
case "calendar":
|
|
3084
|
-
return /* @__PURE__ */
|
|
3266
|
+
return /* @__PURE__ */ jsx32(CalendarEventFormatter, { data });
|
|
3085
3267
|
case "slack":
|
|
3086
|
-
return /* @__PURE__ */
|
|
3268
|
+
return /* @__PURE__ */ jsx32(SlackMessageFormatter, { data });
|
|
3087
3269
|
case "github":
|
|
3088
|
-
return /* @__PURE__ */
|
|
3270
|
+
return /* @__PURE__ */ jsx32(GithubFormatter, { data });
|
|
3089
3271
|
case "drive":
|
|
3090
|
-
return /* @__PURE__ */
|
|
3272
|
+
return /* @__PURE__ */ jsx32(DriveFileFormatter, { data });
|
|
3091
3273
|
case "search":
|
|
3092
|
-
return /* @__PURE__ */
|
|
3274
|
+
return /* @__PURE__ */ jsx32(SearchFormatter, { data });
|
|
3093
3275
|
case "docs":
|
|
3094
|
-
return /* @__PURE__ */
|
|
3276
|
+
return /* @__PURE__ */ jsx32(DocsFormatter, { data });
|
|
3095
3277
|
case "sheets":
|
|
3096
|
-
return /* @__PURE__ */
|
|
3278
|
+
return /* @__PURE__ */ jsx32(SheetsFormatter, { data });
|
|
3097
3279
|
case "slides":
|
|
3098
|
-
return /* @__PURE__ */
|
|
3280
|
+
return /* @__PURE__ */ jsx32(SlidesFormatter, { data });
|
|
3099
3281
|
case "hubspot":
|
|
3100
|
-
return /* @__PURE__ */
|
|
3282
|
+
return /* @__PURE__ */ jsx32(HubspotFormatter, { data });
|
|
3101
3283
|
case "linear":
|
|
3102
|
-
return /* @__PURE__ */
|
|
3284
|
+
return /* @__PURE__ */ jsx32(LinearFormatter, { data });
|
|
3103
3285
|
case "pipedrive":
|
|
3104
|
-
return /* @__PURE__ */
|
|
3286
|
+
return /* @__PURE__ */ jsx32(PipedriveFormatter, { data });
|
|
3105
3287
|
case "compute":
|
|
3106
|
-
return /* @__PURE__ */
|
|
3288
|
+
return /* @__PURE__ */ jsx32(ComputeFormatter, { data });
|
|
3107
3289
|
case "resend":
|
|
3108
|
-
return /* @__PURE__ */
|
|
3290
|
+
return /* @__PURE__ */ jsx32(ResendFormatter, { data });
|
|
3109
3291
|
case "inbox":
|
|
3110
|
-
return /* @__PURE__ */
|
|
3292
|
+
return /* @__PURE__ */ jsx32(InboxFormatter, { data });
|
|
3111
3293
|
case "discord":
|
|
3112
|
-
return /* @__PURE__ */
|
|
3294
|
+
return /* @__PURE__ */ jsx32(DiscordFormatter, { data });
|
|
3113
3295
|
case "notion":
|
|
3114
|
-
return /* @__PURE__ */
|
|
3296
|
+
return /* @__PURE__ */ jsx32(NotionFormatter, { data });
|
|
3115
3297
|
case "twitter":
|
|
3116
|
-
return /* @__PURE__ */
|
|
3298
|
+
return /* @__PURE__ */ jsx32(TwitterFormatter, { data });
|
|
3117
3299
|
case "telegram":
|
|
3118
|
-
return /* @__PURE__ */
|
|
3300
|
+
return /* @__PURE__ */ jsx32(TelegramFormatter, { data });
|
|
3119
3301
|
case "stripe":
|
|
3120
|
-
return /* @__PURE__ */
|
|
3302
|
+
return /* @__PURE__ */ jsx32(StripeFormatter, { data });
|
|
3121
3303
|
case "jira":
|
|
3122
|
-
return /* @__PURE__ */
|
|
3304
|
+
return /* @__PURE__ */ jsx32(JiraFormatter, { data });
|
|
3123
3305
|
case "salesforce":
|
|
3124
|
-
return /* @__PURE__ */
|
|
3306
|
+
return /* @__PURE__ */ jsx32(SalesforceFormatter, { data });
|
|
3125
3307
|
case "brevo":
|
|
3126
|
-
return /* @__PURE__ */
|
|
3308
|
+
return /* @__PURE__ */ jsx32(BrevoFormatter, { data });
|
|
3127
3309
|
case "calendly":
|
|
3128
|
-
return /* @__PURE__ */
|
|
3310
|
+
return /* @__PURE__ */ jsx32(CalendlyFormatter, { data });
|
|
3129
3311
|
case "twilio":
|
|
3130
|
-
return /* @__PURE__ */
|
|
3312
|
+
return /* @__PURE__ */ jsx32(TwilioFormatter, { data });
|
|
3131
3313
|
case "linkedin":
|
|
3132
|
-
return /* @__PURE__ */
|
|
3314
|
+
return /* @__PURE__ */ jsx32(LinkedInFormatter, { data });
|
|
3315
|
+
case "whatsapp":
|
|
3316
|
+
return /* @__PURE__ */ jsx32(WhatsAppFormatter, { data });
|
|
3317
|
+
case "browser":
|
|
3318
|
+
return /* @__PURE__ */ jsx32(BrowserFormatter, { data });
|
|
3133
3319
|
default:
|
|
3134
|
-
return /* @__PURE__ */
|
|
3320
|
+
return /* @__PURE__ */ jsx32(GenericFormatter, { data });
|
|
3135
3321
|
}
|
|
3136
3322
|
}
|
|
3137
3323
|
function SupyagentToolResult({ part }) {
|
|
@@ -3146,7 +3332,7 @@ function SupyagentToolResult({ part }) {
|
|
|
3146
3332
|
const formatterType = getFormatterType(toolName);
|
|
3147
3333
|
const data = maybeNormalize(toolName, formatterType, result);
|
|
3148
3334
|
const summary = getSummary(formatterType, data, toolName);
|
|
3149
|
-
return /* @__PURE__ */
|
|
3335
|
+
return /* @__PURE__ */ jsx32(
|
|
3150
3336
|
CollapsibleResult,
|
|
3151
3337
|
{
|
|
3152
3338
|
toolName,
|
|
@@ -3159,7 +3345,7 @@ function SupyagentToolResult({ part }) {
|
|
|
3159
3345
|
|
|
3160
3346
|
// src/ui/tool-input.tsx
|
|
3161
3347
|
import React2 from "react";
|
|
3162
|
-
import { jsx as
|
|
3348
|
+
import { jsx as jsx33, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3163
3349
|
function formatValue(value) {
|
|
3164
3350
|
if (value === null || value === void 0) {
|
|
3165
3351
|
return { text: "null", muted: true };
|
|
@@ -3193,11 +3379,11 @@ function formatValue(value) {
|
|
|
3193
3379
|
}
|
|
3194
3380
|
function ToolInput({ args }) {
|
|
3195
3381
|
if (!args || Object.keys(args).length === 0) return null;
|
|
3196
|
-
return /* @__PURE__ */
|
|
3382
|
+
return /* @__PURE__ */ jsx33("div", { className: "grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm", children: Object.entries(args).map(([key, value]) => {
|
|
3197
3383
|
const formatted = formatValue(value);
|
|
3198
|
-
return /* @__PURE__ */
|
|
3199
|
-
/* @__PURE__ */
|
|
3200
|
-
/* @__PURE__ */
|
|
3384
|
+
return /* @__PURE__ */ jsxs30(React2.Fragment, { children: [
|
|
3385
|
+
/* @__PURE__ */ jsx33("span", { className: "text-muted-foreground select-none", children: key }),
|
|
3386
|
+
/* @__PURE__ */ jsx33("span", { className: formatted.muted ? "text-muted-foreground" : "text-foreground", children: formatted.text })
|
|
3201
3387
|
] }, key);
|
|
3202
3388
|
}) });
|
|
3203
3389
|
}
|
|
@@ -3205,7 +3391,7 @@ function ToolInput({ args }) {
|
|
|
3205
3391
|
// src/ui/tool-action.tsx
|
|
3206
3392
|
import { useState as useState2 } from "react";
|
|
3207
3393
|
import { ChevronDown as ChevronDown2, ChevronRight as ChevronRight2, Check as Check3, AlertCircle, Loader2 } from "lucide-react";
|
|
3208
|
-
import { Fragment, jsx as
|
|
3394
|
+
import { Fragment, jsx as jsx34, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3209
3395
|
var BADGE_STYLES2 = {
|
|
3210
3396
|
default: "bg-muted text-muted-foreground",
|
|
3211
3397
|
success: "bg-green-500/10 text-green-500",
|
|
@@ -3238,59 +3424,59 @@ function SupyagentToolAction({ part, defaultExpanded = false }) {
|
|
|
3238
3424
|
const hasArgs = args && Object.keys(args).length > 0;
|
|
3239
3425
|
const hasExpandableContent = hasArgs || formatterOutput;
|
|
3240
3426
|
const canExpand = !isStreaming && hasExpandableContent;
|
|
3241
|
-
return /* @__PURE__ */
|
|
3427
|
+
return /* @__PURE__ */ jsxs31(
|
|
3242
3428
|
"div",
|
|
3243
3429
|
{
|
|
3244
3430
|
className: "rounded-lg border border-border bg-card overflow-hidden",
|
|
3245
3431
|
"data-state": isDone ? "done" : isError ? "error" : isStreaming ? "streaming" : "pending",
|
|
3246
3432
|
children: [
|
|
3247
|
-
/* @__PURE__ */
|
|
3433
|
+
/* @__PURE__ */ jsxs31(
|
|
3248
3434
|
"button",
|
|
3249
3435
|
{
|
|
3250
3436
|
type: "button",
|
|
3251
3437
|
onClick: () => canExpand && setExpanded(!expanded),
|
|
3252
3438
|
className: `flex items-center gap-2 w-full px-3 py-2 text-left transition-colors ${canExpand ? "hover:bg-muted cursor-pointer" : "cursor-default"}`,
|
|
3253
3439
|
children: [
|
|
3254
|
-
/* @__PURE__ */
|
|
3255
|
-
/* @__PURE__ */
|
|
3256
|
-
isStreaming && /* @__PURE__ */
|
|
3440
|
+
/* @__PURE__ */ jsxs31("div", { className: "relative shrink-0", children: [
|
|
3441
|
+
/* @__PURE__ */ jsx34(ProviderIcon, { toolName, className: "h-4 w-4 text-muted-foreground" }),
|
|
3442
|
+
isStreaming && /* @__PURE__ */ jsx34(Loader2, { className: "absolute -top-1 -right-1 h-3 w-3 text-primary animate-spin" })
|
|
3257
3443
|
] }),
|
|
3258
|
-
/* @__PURE__ */
|
|
3259
|
-
/* @__PURE__ */
|
|
3260
|
-
summary && /* @__PURE__ */
|
|
3261
|
-
/* @__PURE__ */
|
|
3262
|
-
/* @__PURE__ */
|
|
3444
|
+
/* @__PURE__ */ jsx34("span", { className: "text-xs text-muted-foreground", children: providerLabel }),
|
|
3445
|
+
/* @__PURE__ */ jsx34("span", { className: "text-sm text-foreground", children: actionLabel }),
|
|
3446
|
+
summary && /* @__PURE__ */ jsxs31(Fragment, { children: [
|
|
3447
|
+
/* @__PURE__ */ jsx34("span", { className: "text-muted-foreground text-xs", children: "\xB7" }),
|
|
3448
|
+
/* @__PURE__ */ jsx34("span", { className: "text-sm text-muted-foreground flex-1 truncate", children: summary.text })
|
|
3263
3449
|
] }),
|
|
3264
|
-
!summary && /* @__PURE__ */
|
|
3265
|
-
summary?.badge && /* @__PURE__ */
|
|
3450
|
+
!summary && /* @__PURE__ */ jsx34("span", { className: "flex-1" }),
|
|
3451
|
+
summary?.badge && /* @__PURE__ */ jsx34(
|
|
3266
3452
|
"span",
|
|
3267
3453
|
{
|
|
3268
3454
|
className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium shrink-0 ${BADGE_STYLES2[summary.badge.variant || "default"]}`,
|
|
3269
3455
|
children: summary.badge.text
|
|
3270
3456
|
}
|
|
3271
3457
|
),
|
|
3272
|
-
isDone && /* @__PURE__ */
|
|
3273
|
-
isError && /* @__PURE__ */
|
|
3274
|
-
/* @__PURE__ */
|
|
3458
|
+
isDone && /* @__PURE__ */ jsx34(Check3, { className: "h-3.5 w-3.5 text-green-500 shrink-0" }),
|
|
3459
|
+
isError && /* @__PURE__ */ jsxs31("span", { className: "inline-flex items-center gap-1 rounded-full bg-destructive/10 px-2 py-0.5 text-xs text-destructive shrink-0", children: [
|
|
3460
|
+
/* @__PURE__ */ jsx34(AlertCircle, { className: "h-3 w-3" }),
|
|
3275
3461
|
"Error"
|
|
3276
3462
|
] }),
|
|
3277
|
-
isStreaming && /* @__PURE__ */
|
|
3278
|
-
canExpand && (expanded ? /* @__PURE__ */
|
|
3463
|
+
isStreaming && /* @__PURE__ */ jsx34("span", { className: "inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-xs text-primary animate-pulse shrink-0", children: "Calling..." }),
|
|
3464
|
+
canExpand && (expanded ? /* @__PURE__ */ jsx34(ChevronDown2, { className: "h-3.5 w-3.5 text-muted-foreground shrink-0" }) : /* @__PURE__ */ jsx34(ChevronRight2, { className: "h-3.5 w-3.5 text-muted-foreground shrink-0" }))
|
|
3279
3465
|
]
|
|
3280
3466
|
}
|
|
3281
3467
|
),
|
|
3282
|
-
/* @__PURE__ */
|
|
3468
|
+
/* @__PURE__ */ jsx34(
|
|
3283
3469
|
"div",
|
|
3284
3470
|
{
|
|
3285
3471
|
className: "grid transition-[grid-template-rows] duration-200 ease-out",
|
|
3286
3472
|
style: { gridTemplateRows: expanded ? "1fr" : "0fr" },
|
|
3287
|
-
children: /* @__PURE__ */
|
|
3288
|
-
args && Object.keys(args).length > 0 && /* @__PURE__ */
|
|
3289
|
-
/* @__PURE__ */
|
|
3290
|
-
/* @__PURE__ */
|
|
3473
|
+
children: /* @__PURE__ */ jsx34("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsxs31("div", { className: "border-t border-border px-3 py-2 space-y-3", children: [
|
|
3474
|
+
args && Object.keys(args).length > 0 && /* @__PURE__ */ jsxs31("div", { children: [
|
|
3475
|
+
/* @__PURE__ */ jsx34("p", { className: "text-[10px] font-medium uppercase tracking-wider text-muted-foreground mb-1.5", children: "Input" }),
|
|
3476
|
+
/* @__PURE__ */ jsx34(ToolInput, { args })
|
|
3291
3477
|
] }),
|
|
3292
|
-
formatterOutput && /* @__PURE__ */
|
|
3293
|
-
/* @__PURE__ */
|
|
3478
|
+
formatterOutput && /* @__PURE__ */ jsxs31("div", { children: [
|
|
3479
|
+
/* @__PURE__ */ jsx34("p", { className: "text-[10px] font-medium uppercase tracking-wider text-muted-foreground mb-1.5", children: "Output" }),
|
|
3294
3480
|
formatterOutput
|
|
3295
3481
|
] })
|
|
3296
3482
|
] }) })
|
|
@@ -3304,7 +3490,7 @@ function SupyagentToolAction({ part, defaultExpanded = false }) {
|
|
|
3304
3490
|
// src/ui/tool-call.tsx
|
|
3305
3491
|
import { useState as useState3 } from "react";
|
|
3306
3492
|
import { ChevronDown as ChevronDown3, ChevronRight as ChevronRight3, Check as Check4, AlertCircle as AlertCircle2, Loader2 as Loader22 } from "lucide-react";
|
|
3307
|
-
import { jsx as
|
|
3493
|
+
import { jsx as jsx35, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3308
3494
|
function extractToolName2(part) {
|
|
3309
3495
|
if (part.type.startsWith("tool-") && part.type !== "tool-invocation") {
|
|
3310
3496
|
return part.type.slice(5);
|
|
@@ -3333,45 +3519,46 @@ function SupyagentToolCall({ part }) {
|
|
|
3333
3519
|
const isStreaming = state === "input-streaming";
|
|
3334
3520
|
const isError = state === "output-error";
|
|
3335
3521
|
const isDone = state === "output-available";
|
|
3336
|
-
return /* @__PURE__ */
|
|
3522
|
+
return /* @__PURE__ */ jsxs32(
|
|
3337
3523
|
"div",
|
|
3338
3524
|
{
|
|
3339
3525
|
className: "rounded-lg border border-border bg-card overflow-hidden",
|
|
3340
3526
|
"data-state": isDone ? "done" : isError ? "error" : isStreaming ? "streaming" : "pending",
|
|
3341
3527
|
children: [
|
|
3342
|
-
/* @__PURE__ */
|
|
3528
|
+
/* @__PURE__ */ jsxs32(
|
|
3343
3529
|
"button",
|
|
3344
3530
|
{
|
|
3345
3531
|
type: "button",
|
|
3346
3532
|
onClick: () => args && setExpanded(!expanded),
|
|
3347
3533
|
className: "flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-muted transition-colors",
|
|
3348
3534
|
children: [
|
|
3349
|
-
/* @__PURE__ */
|
|
3350
|
-
/* @__PURE__ */
|
|
3351
|
-
isStreaming && /* @__PURE__ */
|
|
3535
|
+
/* @__PURE__ */ jsxs32("div", { className: "relative", children: [
|
|
3536
|
+
/* @__PURE__ */ jsx35(ProviderIcon, { toolName, className: "h-4 w-4 text-muted-foreground" }),
|
|
3537
|
+
isStreaming && /* @__PURE__ */ jsx35(Loader22, { className: "absolute -top-1 -right-1 h-3 w-3 text-primary animate-spin" })
|
|
3352
3538
|
] }),
|
|
3353
|
-
/* @__PURE__ */
|
|
3354
|
-
/* @__PURE__ */
|
|
3355
|
-
isDone && /* @__PURE__ */
|
|
3356
|
-
/* @__PURE__ */
|
|
3539
|
+
/* @__PURE__ */ jsx35("span", { className: "text-xs text-muted-foreground", children: providerLabel }),
|
|
3540
|
+
/* @__PURE__ */ jsx35("span", { className: "text-sm text-foreground flex-1", children: actionLabel }),
|
|
3541
|
+
isDone && /* @__PURE__ */ jsxs32("span", { className: "inline-flex items-center gap-1 rounded-full bg-green-500/10 px-2 py-0.5 text-xs text-green-500", children: [
|
|
3542
|
+
/* @__PURE__ */ jsx35(Check4, { className: "h-3 w-3" }),
|
|
3357
3543
|
"Completed"
|
|
3358
3544
|
] }),
|
|
3359
|
-
isError && /* @__PURE__ */
|
|
3360
|
-
/* @__PURE__ */
|
|
3545
|
+
isError && /* @__PURE__ */ jsxs32("span", { className: "inline-flex items-center gap-1 rounded-full bg-destructive/10 px-2 py-0.5 text-xs text-destructive", children: [
|
|
3546
|
+
/* @__PURE__ */ jsx35(AlertCircle2, { className: "h-3 w-3" }),
|
|
3361
3547
|
"Error"
|
|
3362
3548
|
] }),
|
|
3363
|
-
isStreaming && /* @__PURE__ */
|
|
3364
|
-
args && (expanded ? /* @__PURE__ */
|
|
3549
|
+
isStreaming && /* @__PURE__ */ jsx35("span", { className: "inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-xs text-primary animate-pulse", children: "Calling..." }),
|
|
3550
|
+
args && (expanded ? /* @__PURE__ */ jsx35(ChevronDown3, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsx35(ChevronRight3, { className: "h-3.5 w-3.5 text-muted-foreground" }))
|
|
3365
3551
|
]
|
|
3366
3552
|
}
|
|
3367
3553
|
),
|
|
3368
|
-
expanded && args && /* @__PURE__ */
|
|
3554
|
+
expanded && args && /* @__PURE__ */ jsx35("div", { className: "border-t border-border px-3 py-2", children: /* @__PURE__ */ jsx35("pre", { className: "text-xs text-muted-foreground overflow-x-auto", children: JSON.stringify(args, null, 2) }) })
|
|
3369
3555
|
]
|
|
3370
3556
|
}
|
|
3371
3557
|
);
|
|
3372
3558
|
}
|
|
3373
3559
|
export {
|
|
3374
3560
|
BrevoFormatter,
|
|
3561
|
+
BrowserFormatter,
|
|
3375
3562
|
CalendarEventFormatter,
|
|
3376
3563
|
CalendlyFormatter,
|
|
3377
3564
|
CollapsibleResult,
|
|
@@ -3405,6 +3592,7 @@ export {
|
|
|
3405
3592
|
ToolInput,
|
|
3406
3593
|
TwilioFormatter,
|
|
3407
3594
|
TwitterFormatter,
|
|
3595
|
+
WhatsAppFormatter,
|
|
3408
3596
|
extractArgs,
|
|
3409
3597
|
extractResult,
|
|
3410
3598
|
extractState,
|