@mastra/playground-ui 7.0.0-beta.1 → 7.0.0-beta.3

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/index.es.js CHANGED
@@ -3129,10 +3129,18 @@ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
3129
3129
  const TooltipIconButton = forwardRef(
3130
3130
  ({ children, tooltip, side = "bottom", className, ...rest }, ref) => {
3131
3131
  return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [
3132
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button$2, { variant: "ghost", size: "icon", ...rest, className: cn("size-6 p-1", className), ref, children: [
3133
- children,
3134
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: tooltip })
3135
- ] }) }),
3132
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
3133
+ Button$2,
3134
+ {
3135
+ variant: "ghost",
3136
+ size: "icon",
3137
+ ...rest,
3138
+ className: cn("size-6 p-1", className),
3139
+ ref,
3140
+ "aria-label": tooltip,
3141
+ children
3142
+ }
3143
+ ) }),
3136
3144
  /* @__PURE__ */ jsx(TooltipContent, { side, children: tooltip })
3137
3145
  ] }) });
3138
3146
  }
@@ -4648,6 +4656,8 @@ function convertWorkflowRunStateToStreamResult(runState) {
4648
4656
  status: result.status,
4649
4657
  output: "output" in result ? result.output : void 0,
4650
4658
  payload: "payload" in result ? result.payload : void 0,
4659
+ suspendPayload: "suspendPayload" in result ? result.suspendPayload : void 0,
4660
+ suspendOutput: "suspendOutput" in result ? result.suspendOutput : void 0,
4651
4661
  resumePayload: "resumePayload" in result ? result.resumePayload : void 0,
4652
4662
  error: "error" in result ? result.error : void 0,
4653
4663
  startedAt: "startedAt" in result ? result.startedAt : Date.now(),
@@ -5326,7 +5336,9 @@ const useCurrentRun = () => {
5326
5336
  status: value.status,
5327
5337
  output: "output" in value ? value.output : void 0,
5328
5338
  input: value.payload,
5329
- resumeData: "resumePayload" in value ? value.resumePayload : void 0
5339
+ resumeData: "resumePayload" in value ? value.resumePayload : void 0,
5340
+ suspendOutput: "suspendOutput" in value ? value.suspendOutput : void 0,
5341
+ suspendPayload: "suspendPayload" in value ? value.suspendPayload : void 0
5330
5342
  }
5331
5343
  };
5332
5344
  }, {});
@@ -5392,6 +5404,7 @@ const WorkflowStepActionBar = ({
5392
5404
  input,
5393
5405
  output,
5394
5406
  resumeData,
5407
+ suspendOutput,
5395
5408
  error,
5396
5409
  mapConfig,
5397
5410
  stepName,
@@ -5452,14 +5465,14 @@ const WorkflowStepActionBar = ({
5452
5465
  /* @__PURE__ */ jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsx(CodeDialogContent, { data: resumeData }) })
5453
5466
  ] }) })
5454
5467
  ] }),
5455
- output && /* @__PURE__ */ jsxs(Fragment, { children: [
5468
+ (output ?? suspendOutput) && /* @__PURE__ */ jsxs(Fragment, { children: [
5456
5469
  /* @__PURE__ */ jsx(Button$1, { onClick: () => setIsOutputOpen(true), children: "Output" }),
5457
5470
  /* @__PURE__ */ jsx(Dialog, { open: isOutputOpen, onOpenChange: setIsOutputOpen, children: /* @__PURE__ */ jsxs(DialogContent, { className: dialogContentClass, children: [
5458
5471
  /* @__PURE__ */ jsxs(DialogTitle, { className: dialogTitleClass, children: [
5459
5472
  stepName,
5460
5473
  " output"
5461
5474
  ] }),
5462
- /* @__PURE__ */ jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsx(CodeDialogContent, { data: output }) })
5475
+ /* @__PURE__ */ jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsx(CodeDialogContent, { data: output ?? suspendOutput }) })
5463
5476
  ] }) })
5464
5477
  ] }),
5465
5478
  error && /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -5639,7 +5652,7 @@ const Clock = ({ startedAt, endedAt }) => {
5639
5652
  };
5640
5653
 
5641
5654
  function WorkflowDefaultNode({ data, parentWorkflowName }) {
5642
- const { steps, runId } = useCurrentRun();
5655
+ const { steps } = useCurrentRun();
5643
5656
  const {
5644
5657
  label,
5645
5658
  stepId,
@@ -5729,6 +5742,7 @@ function WorkflowDefaultNode({ data, parentWorkflowName }) {
5729
5742
  input: step?.input,
5730
5743
  resumeData: step?.resumeData,
5731
5744
  output: step?.output,
5745
+ suspendOutput: step?.suspendOutput,
5732
5746
  error: step?.error,
5733
5747
  mapConfig,
5734
5748
  status: step?.status
@@ -6038,6 +6052,7 @@ function WorkflowNestedNode({ data, parentWorkflowName }) {
6038
6052
  input: step?.input,
6039
6053
  resumeData: step?.resumeData,
6040
6054
  output: step?.output,
6055
+ suspendOutput: step?.suspendOutput,
6041
6056
  error: step?.error,
6042
6057
  mapConfig,
6043
6058
  onShowNestedGraph: () => showNestedGraph({ label, fullStep: fullLabel, stepGraph }),
@@ -7467,10 +7482,10 @@ function WorkflowTrigger({
7467
7482
  setCancelResponse(response);
7468
7483
  };
7469
7484
  const streamResultToUse = result ?? streamResult;
7470
- const suspendedSteps = Object.entries(streamResultToUse?.steps || {}).filter(([_, { status }]) => status === "suspended").map(([stepId, { payload: payload2 }]) => ({
7485
+ const suspendedSteps = Object.entries(streamResultToUse?.steps || {}).filter(([_, { status }]) => status === "suspended").map(([stepId, { suspendPayload }]) => ({
7471
7486
  stepId,
7472
7487
  runId: innerRunId,
7473
- suspendPayload: payload2,
7488
+ suspendPayload,
7474
7489
  isLoading: false
7475
7490
  }));
7476
7491
  useEffect(() => {
@@ -7581,11 +7596,23 @@ function WorkflowTrigger({
7581
7596
  /* @__PURE__ */ jsx(Text, { variant: "secondary", className: "px-4 text-mastra-el-3", size: "xs", children: "Status" }),
7582
7597
  /* @__PURE__ */ jsx("div", { className: "px-4 flex flex-col gap-4", children: Object.entries(workflowActivePaths).filter(([key, _]) => key !== "input" && !key.endsWith(".input")).map(([stepId, step]) => {
7583
7598
  const { status } = step;
7584
- let output = {};
7599
+ let output = void 0;
7600
+ let suspendOutput = void 0;
7601
+ if (step.status === "suspended") {
7602
+ suspendOutput = step.suspendOutput;
7603
+ }
7585
7604
  if (step.status === "success") {
7586
7605
  output = step.output;
7587
7606
  }
7588
- return /* @__PURE__ */ jsx(WorkflowStatus, { stepId, status, result: output }, stepId);
7607
+ return /* @__PURE__ */ jsx(
7608
+ WorkflowStatus,
7609
+ {
7610
+ stepId,
7611
+ status,
7612
+ result: output ?? suspendOutput ?? {}
7613
+ },
7614
+ stepId
7615
+ );
7589
7616
  }) })
7590
7617
  ] })
7591
7618
  ] })
@@ -11532,6 +11559,102 @@ const AgentAdvancedSettings = () => {
11532
11559
  ] }) });
11533
11560
  };
11534
11561
 
11562
+ const useAgent = (agentId) => {
11563
+ const client = useMastraClient();
11564
+ const { requestContext } = usePlaygroundStore();
11565
+ return useQuery({
11566
+ queryKey: ["agent", agentId, JSON.stringify(requestContext)],
11567
+ queryFn: () => agentId ? client.getAgent(agentId).details(requestContext) : null,
11568
+ retry: false,
11569
+ enabled: Boolean(agentId)
11570
+ });
11571
+ };
11572
+
11573
+ const useMemory = (agentId) => {
11574
+ const client = useMastraClient();
11575
+ const { requestContext } = usePlaygroundStore();
11576
+ return useQuery({
11577
+ queryKey: ["memory", agentId],
11578
+ queryFn: () => agentId ? client.getMemoryStatus(agentId, requestContext) : null,
11579
+ enabled: Boolean(agentId),
11580
+ staleTime: 5 * 60 * 1e3,
11581
+ // 5 minutes
11582
+ gcTime: 10 * 60 * 1e3,
11583
+ // 10 minutes
11584
+ retry: false
11585
+ });
11586
+ };
11587
+ const useMemoryConfig = (agentId) => {
11588
+ const client = useMastraClient();
11589
+ const { requestContext } = usePlaygroundStore();
11590
+ return useQuery({
11591
+ queryKey: ["memory", "config", agentId],
11592
+ queryFn: () => agentId ? client.getMemoryConfig({ agentId, requestContext }) : null,
11593
+ enabled: Boolean(agentId),
11594
+ staleTime: 5 * 60 * 1e3,
11595
+ // 5 minutes
11596
+ gcTime: 10 * 60 * 1e3,
11597
+ // 10 minutes
11598
+ retry: false,
11599
+ refetchOnWindowFocus: false
11600
+ });
11601
+ };
11602
+ const useThreads = ({
11603
+ resourceId,
11604
+ agentId,
11605
+ isMemoryEnabled
11606
+ }) => {
11607
+ const client = useMastraClient();
11608
+ const { requestContext } = usePlaygroundStore();
11609
+ return useQuery({
11610
+ queryKey: ["memory", "threads", resourceId, agentId],
11611
+ queryFn: async () => {
11612
+ if (!isMemoryEnabled) return null;
11613
+ const result = await client.listMemoryThreads({ resourceId, agentId, requestContext });
11614
+ return result.threads;
11615
+ },
11616
+ enabled: Boolean(isMemoryEnabled),
11617
+ staleTime: 0,
11618
+ gcTime: 0,
11619
+ retry: false,
11620
+ refetchOnWindowFocus: false
11621
+ });
11622
+ };
11623
+ const useDeleteThread = () => {
11624
+ const client = useMastraClient();
11625
+ const queryClient = useQueryClient();
11626
+ const { requestContext } = usePlaygroundStore();
11627
+ return useMutation({
11628
+ mutationFn: ({ threadId, agentId }) => {
11629
+ const thread = client.getMemoryThread({ threadId, agentId });
11630
+ return thread.delete({ requestContext });
11631
+ },
11632
+ onSuccess: (_, variables) => {
11633
+ const { agentId } = variables;
11634
+ if (agentId) {
11635
+ queryClient.invalidateQueries({ queryKey: ["memory", "threads", agentId, agentId] });
11636
+ }
11637
+ toast$1.success("Chat deleted successfully");
11638
+ },
11639
+ onError: () => {
11640
+ toast$1.error("Failed to delete chat");
11641
+ }
11642
+ });
11643
+ };
11644
+ const useMemorySearch = ({
11645
+ agentId,
11646
+ resourceId,
11647
+ threadId
11648
+ }) => {
11649
+ const { requestContext } = usePlaygroundStore();
11650
+ const client = useMastraClient();
11651
+ return useMutation({
11652
+ mutationFn: async ({ searchQuery, memoryConfig }) => {
11653
+ return client.searchMemory({ agentId, resourceId, threadId, searchQuery, memoryConfig, requestContext });
11654
+ }
11655
+ });
11656
+ };
11657
+
11535
11658
  const NetworkCheckbox = ({ hasMemory, hasSubAgents }) => {
11536
11659
  const isNetworkAvailable = hasMemory && hasSubAgents;
11537
11660
  const radio = /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
@@ -11564,8 +11687,19 @@ const NetworkCheckbox = ({ hasMemory, hasSubAgents }) => {
11564
11687
  ] }) })
11565
11688
  ] });
11566
11689
  };
11567
- const AgentSettings = ({ modelVersion, hasMemory = false, hasSubAgents = false }) => {
11690
+ const AgentSettings = ({ agentId }) => {
11691
+ const { data: agent, isLoading } = useAgent(agentId);
11692
+ const { data: memory, isLoading: isMemoryLoading } = useMemory(agentId);
11568
11693
  const { settings, setSettings, resetAll } = useAgentSettings();
11694
+ if (isLoading || isMemoryLoading) {
11695
+ return /* @__PURE__ */ jsx(Skeleton, { className: "h-full" });
11696
+ }
11697
+ if (!agent) {
11698
+ return /* @__PURE__ */ jsx("div", { children: "Agent not found" });
11699
+ }
11700
+ const hasMemory = Boolean(memory?.result);
11701
+ const hasSubAgents = Boolean(Object.keys(agent.agents || {}).length > 0);
11702
+ const modelVersion = agent.modelVersion;
11569
11703
  let radioValue;
11570
11704
  if (modelVersion === "v2") {
11571
11705
  if (settings?.modelSettings?.chatWithNetwork) {
@@ -13058,10 +13192,18 @@ function getShortId(id) {
13058
13192
  return id.slice(0, 8);
13059
13193
  }
13060
13194
 
13061
- function Notification({ children, className, isVisible, autoDismiss = true, dismissTime = 5e3 }) {
13195
+ function Notification({
13196
+ children,
13197
+ className,
13198
+ isVisible,
13199
+ autoDismiss = true,
13200
+ dismissTime = 5e3,
13201
+ dismissible = true,
13202
+ type = "info"
13203
+ }) {
13062
13204
  const [localIsVisible, setLocalIsVisible] = useState(isVisible);
13063
13205
  useEffect(() => {
13064
- if (autoDismiss && isVisible) {
13206
+ if (dismissible && autoDismiss && isVisible) {
13065
13207
  const timer = setTimeout(() => {
13066
13208
  setLocalIsVisible(false);
13067
13209
  }, dismissTime);
@@ -13076,13 +13218,27 @@ function Notification({ children, className, isVisible, autoDismiss = true, dism
13076
13218
  "div",
13077
13219
  {
13078
13220
  className: cn(
13079
- "grid grid-cols-[1fr_auto] gap-[0.5rem] rounded-l bg-white/5 p-[1.5rem] py-[1rem] text-[0.875rem] text-icon3 items-center",
13080
- "[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-50",
13221
+ "grid grid-cols-[1fr_auto] gap-[0.5rem] rounded-lg bg-white/5 p-[1.5rem] py-[1rem] text-[0.875rem] text-icon3 items-center",
13222
+ {
13223
+ "bg-red-900/10 border border-red-900": type === "error"
13224
+ },
13081
13225
  className
13082
13226
  ),
13083
13227
  children: [
13084
- /* @__PURE__ */ jsx("div", { className: "flex gap-[0.5rem] items-center", children }),
13085
- /* @__PURE__ */ jsxs(Button, { variant: "ghost", onClick: () => setLocalIsVisible(false), children: [
13228
+ /* @__PURE__ */ jsx(
13229
+ "div",
13230
+ {
13231
+ className: cn(
13232
+ "flex gap-[0.5rem] items-start",
13233
+ "[&>svg]:w-[1.2em] [&>svg]:h-[1.2em] [&>svg]:opacity-70 [&>svg]:translate-y-[0.2em]",
13234
+ {
13235
+ "[&>svg]:text-red-400": type === "error"
13236
+ }
13237
+ ),
13238
+ children
13239
+ }
13240
+ ),
13241
+ dismissible && /* @__PURE__ */ jsxs(Button, { variant: "ghost", onClick: () => setLocalIsVisible(false), children: [
13086
13242
  /* @__PURE__ */ jsx(XIcon, {}),
13087
13243
  /* @__PURE__ */ jsx(VisuallyHidden$1, { children: "Dismiss" })
13088
13244
  ] })
@@ -14492,6 +14648,67 @@ const PromptEnhancerTextarea = ({ agentId }) => {
14492
14648
  ] });
14493
14649
  };
14494
14650
 
14651
+ const useAgents = () => {
14652
+ const client = useMastraClient();
14653
+ const { requestContext } = usePlaygroundStore();
14654
+ return useQuery({
14655
+ queryKey: ["agents", JSON.stringify(requestContext)],
14656
+ queryFn: () => client.listAgents(requestContext)
14657
+ });
14658
+ };
14659
+ const useUpdateAgentModel = (agentId) => {
14660
+ const client = useMastraClient();
14661
+ const queryClient = useQueryClient();
14662
+ return useMutation({
14663
+ mutationFn: async (payload) => client.getAgent(agentId).updateModel(payload),
14664
+ onSuccess: () => {
14665
+ queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14666
+ },
14667
+ onError: (err) => {
14668
+ console.error("Error updating model", err);
14669
+ }
14670
+ });
14671
+ };
14672
+ const useReorderModelList = (agentId) => {
14673
+ const client = useMastraClient();
14674
+ const queryClient = useQueryClient();
14675
+ return useMutation({
14676
+ mutationFn: async (payload) => client.getAgent(agentId).reorderModelList(payload),
14677
+ onSuccess: () => {
14678
+ queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14679
+ },
14680
+ onError: (err) => {
14681
+ console.error("Error reordering model list", err);
14682
+ }
14683
+ });
14684
+ };
14685
+ const useUpdateModelInModelList = (agentId) => {
14686
+ const client = useMastraClient();
14687
+ const queryClient = useQueryClient();
14688
+ return useMutation({
14689
+ mutationFn: async (payload) => client.getAgent(agentId).updateModelInModelList(payload),
14690
+ onSuccess: () => {
14691
+ queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14692
+ },
14693
+ onError: (err) => {
14694
+ console.error("Error updating model in model list", err);
14695
+ }
14696
+ });
14697
+ };
14698
+ const useResetAgentModel = (agentId) => {
14699
+ const client = useMastraClient();
14700
+ const queryClient = useQueryClient();
14701
+ return useMutation({
14702
+ mutationFn: async () => client.getAgent(agentId).resetModel(),
14703
+ onSuccess: () => {
14704
+ queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14705
+ },
14706
+ onError: (err) => {
14707
+ console.error("Error resetting model", err);
14708
+ }
14709
+ });
14710
+ };
14711
+
14495
14712
  const AgentMetadataNetworkList = ({ agents }) => {
14496
14713
  const { Link, paths } = useLinkComponent();
14497
14714
  if (agents.length === 0) {
@@ -14499,16 +14716,20 @@ const AgentMetadataNetworkList = ({ agents }) => {
14499
14716
  }
14500
14717
  return /* @__PURE__ */ jsx(AgentMetadataList, { children: agents.map((agent) => /* @__PURE__ */ jsx(AgentMetadataListItem, { children: /* @__PURE__ */ jsx(Link, { href: paths.agentLink(agent.id), "data-testid": "agent-badge", children: /* @__PURE__ */ jsx(Badge, { variant: "success", icon: /* @__PURE__ */ jsx(AgentIcon, {}), children: agent.name }) }) }, agent.id)) });
14501
14718
  };
14502
- const AgentMetadata = ({
14503
- agentId,
14504
- agent,
14505
- hasMemoryEnabled,
14506
- updateModel,
14507
- resetModel,
14508
- updateModelInModelList,
14509
- reorderModelList,
14510
- modelVersion
14511
- }) => {
14719
+ const AgentMetadata = ({ agentId }) => {
14720
+ const { data: agent, isLoading } = useAgent(agentId);
14721
+ const { data: memory, isLoading: isMemoryLoading } = useMemory(agentId);
14722
+ const { mutate: reorderModelList } = useReorderModelList(agentId);
14723
+ const { mutateAsync: resetModel } = useResetAgentModel(agentId);
14724
+ const { mutateAsync: updateModelInModelList } = useUpdateModelInModelList(agentId);
14725
+ const { mutateAsync: updateModel } = useUpdateAgentModel(agentId);
14726
+ const hasMemoryEnabled = Boolean(memory?.result);
14727
+ if (isLoading || isMemoryLoading) {
14728
+ return /* @__PURE__ */ jsx(Skeleton, { className: "h-full" });
14729
+ }
14730
+ if (!agent) {
14731
+ return /* @__PURE__ */ jsx("div", { children: "Agent not found" });
14732
+ }
14512
14733
  const networkAgentsMap = agent.agents ?? {};
14513
14734
  const networkAgents = Object.keys(networkAgentsMap).map((key) => ({ ...networkAgentsMap[key], id: key }));
14514
14735
  const agentTools = agent.tools ?? {};
@@ -14527,7 +14748,7 @@ const AgentMetadata = ({
14527
14748
  AgentMetadataSection,
14528
14749
  {
14529
14750
  title: "Model",
14530
- hint: modelVersion === "v2" ? void 0 : {
14751
+ hint: agent.modelVersion === "v2" ? void 0 : {
14531
14752
  link: "https://mastra.ai/guides/migrations/vnext-to-standard-apis",
14532
14753
  title: "You are using a legacy v1 model",
14533
14754
  icon: /* @__PURE__ */ jsx(AlertTriangleIcon, { fontSize: 14, className: "mb-0.5" })
@@ -14644,8 +14865,10 @@ const AgentMetadataScorerList = ({ entityId, entityType }) => {
14644
14865
  return /* @__PURE__ */ jsx(AgentMetadataList, { children: scorerList.map((scorer) => /* @__PURE__ */ jsx(AgentMetadataListItem, { children: /* @__PURE__ */ jsx(Link, { href: paths.scorerLink(scorer.id), "data-testid": "scorer-badge", children: /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(GaugeIcon, { className: "text-icon3" }), children: scorer.scorer.config.name }) }) }, scorer.id)) });
14645
14866
  };
14646
14867
 
14647
- const AgentEntityHeader = ({ agentId, isLoading, agentName }) => {
14868
+ const AgentEntityHeader = ({ agentId }) => {
14869
+ const { data: agent, isLoading } = useAgent(agentId);
14648
14870
  const { handleCopy } = useCopyToClipboard({ text: agentId });
14871
+ const agentName = agent?.name || "";
14649
14872
  return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(EntityHeader, { icon: /* @__PURE__ */ jsx(AgentIcon, {}), title: agentName, isLoading, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
14650
14873
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx("button", { onClick: handleCopy, className: "h-badge-default shrink-0", children: /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(CopyIcon, {}), variant: "default", children: agentId }) }) }),
14651
14874
  /* @__PURE__ */ jsx(TooltipContent, { children: "Copy Agent ID for use in code" })
@@ -14849,67 +15072,6 @@ const formatDay = (date) => {
14849
15072
  return new Date(date).toLocaleString("en-us", options).replace(",", " at");
14850
15073
  };
14851
15074
 
14852
- const useAgents = () => {
14853
- const client = useMastraClient();
14854
- const { requestContext } = usePlaygroundStore();
14855
- return useQuery({
14856
- queryKey: ["agents", JSON.stringify(requestContext)],
14857
- queryFn: () => client.listAgents(requestContext)
14858
- });
14859
- };
14860
- const useUpdateAgentModel = (agentId) => {
14861
- const client = useMastraClient();
14862
- const queryClient = useQueryClient();
14863
- return useMutation({
14864
- mutationFn: async (payload) => client.getAgent(agentId).updateModel(payload),
14865
- onSuccess: () => {
14866
- queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14867
- },
14868
- onError: (err) => {
14869
- console.error("Error updating model", err);
14870
- }
14871
- });
14872
- };
14873
- const useReorderModelList = (agentId) => {
14874
- const client = useMastraClient();
14875
- const queryClient = useQueryClient();
14876
- return useMutation({
14877
- mutationFn: async (payload) => client.getAgent(agentId).reorderModelList(payload),
14878
- onSuccess: () => {
14879
- queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14880
- },
14881
- onError: (err) => {
14882
- console.error("Error reordering model list", err);
14883
- }
14884
- });
14885
- };
14886
- const useUpdateModelInModelList = (agentId) => {
14887
- const client = useMastraClient();
14888
- const queryClient = useQueryClient();
14889
- return useMutation({
14890
- mutationFn: async (payload) => client.getAgent(agentId).updateModelInModelList(payload),
14891
- onSuccess: () => {
14892
- queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14893
- },
14894
- onError: (err) => {
14895
- console.error("Error updating model in model list", err);
14896
- }
14897
- });
14898
- };
14899
- const useResetAgentModel = (agentId) => {
14900
- const client = useMastraClient();
14901
- const queryClient = useQueryClient();
14902
- return useMutation({
14903
- mutationFn: async () => client.getAgent(agentId).resetModel(),
14904
- onSuccess: () => {
14905
- queryClient.invalidateQueries({ queryKey: ["agent", agentId] });
14906
- },
14907
- onError: (err) => {
14908
- console.error("Error resetting model", err);
14909
- }
14910
- });
14911
- };
14912
-
14913
15075
  function AgentCombobox({
14914
15076
  value,
14915
15077
  onValueChange,
@@ -14957,17 +15119,6 @@ function AgentCombobox({
14957
15119
  );
14958
15120
  }
14959
15121
 
14960
- const useAgent = (agentId) => {
14961
- const client = useMastraClient();
14962
- const { requestContext } = usePlaygroundStore();
14963
- return useQuery({
14964
- queryKey: ["agent", agentId, JSON.stringify(requestContext)],
14965
- queryFn: () => agentId ? client.getAgent(agentId).details(requestContext) : null,
14966
- retry: false,
14967
- enabled: Boolean(agentId)
14968
- });
14969
- };
14970
-
14971
15122
  const useExecuteAgentTool = () => {
14972
15123
  const client = useMastraClient();
14973
15124
  return useMutation({
@@ -15075,91 +15226,6 @@ const AgentToolPanel = ({ toolId, agentId }) => {
15075
15226
  );
15076
15227
  };
15077
15228
 
15078
- const useMemory = (agentId) => {
15079
- const client = useMastraClient();
15080
- const { requestContext } = usePlaygroundStore();
15081
- return useQuery({
15082
- queryKey: ["memory", agentId],
15083
- queryFn: () => agentId ? client.getMemoryStatus(agentId, requestContext) : null,
15084
- enabled: Boolean(agentId),
15085
- staleTime: 5 * 60 * 1e3,
15086
- // 5 minutes
15087
- gcTime: 10 * 60 * 1e3,
15088
- // 10 minutes
15089
- retry: false
15090
- });
15091
- };
15092
- const useMemoryConfig = (agentId) => {
15093
- const client = useMastraClient();
15094
- const { requestContext } = usePlaygroundStore();
15095
- return useQuery({
15096
- queryKey: ["memory", "config", agentId],
15097
- queryFn: () => agentId ? client.getMemoryConfig({ agentId, requestContext }) : null,
15098
- enabled: Boolean(agentId),
15099
- staleTime: 5 * 60 * 1e3,
15100
- // 5 minutes
15101
- gcTime: 10 * 60 * 1e3,
15102
- // 10 minutes
15103
- retry: false,
15104
- refetchOnWindowFocus: false
15105
- });
15106
- };
15107
- const useThreads = ({
15108
- resourceId,
15109
- agentId,
15110
- isMemoryEnabled
15111
- }) => {
15112
- const client = useMastraClient();
15113
- const { requestContext } = usePlaygroundStore();
15114
- return useQuery({
15115
- queryKey: ["memory", "threads", resourceId, agentId],
15116
- queryFn: async () => {
15117
- if (!isMemoryEnabled) return null;
15118
- const result = await client.listMemoryThreads({ resourceId, agentId, requestContext });
15119
- return result.threads;
15120
- },
15121
- enabled: Boolean(isMemoryEnabled),
15122
- staleTime: 0,
15123
- gcTime: 0,
15124
- retry: false,
15125
- refetchOnWindowFocus: false
15126
- });
15127
- };
15128
- const useDeleteThread = () => {
15129
- const client = useMastraClient();
15130
- const queryClient = useQueryClient();
15131
- const { requestContext } = usePlaygroundStore();
15132
- return useMutation({
15133
- mutationFn: ({ threadId, agentId }) => {
15134
- const thread = client.getMemoryThread({ threadId, agentId });
15135
- return thread.delete({ requestContext });
15136
- },
15137
- onSuccess: (_, variables) => {
15138
- const { agentId } = variables;
15139
- if (agentId) {
15140
- queryClient.invalidateQueries({ queryKey: ["memory", "threads", agentId, agentId] });
15141
- }
15142
- toast$1.success("Chat deleted successfully");
15143
- },
15144
- onError: () => {
15145
- toast$1.error("Failed to delete chat");
15146
- }
15147
- });
15148
- };
15149
- const useMemorySearch = ({
15150
- agentId,
15151
- resourceId,
15152
- threadId
15153
- }) => {
15154
- const { requestContext } = usePlaygroundStore();
15155
- const client = useMastraClient();
15156
- return useMutation({
15157
- mutationFn: async ({ searchQuery, memoryConfig }) => {
15158
- return client.searchMemory({ agentId, resourceId, threadId, searchQuery, memoryConfig, requestContext });
15159
- }
15160
- });
15161
- };
15162
-
15163
15229
  function MarkdownRenderer({ children }) {
15164
15230
  const processedText = children.replace(/\\n/g, "\n");
15165
15231
  return /* @__PURE__ */ jsx(Markdown, { remarkPlugins: [remarkGfm], components: COMPONENTS, className: "space-y-3", children: processedText });
@@ -15941,14 +16007,24 @@ const TabContent$1 = ({ children, value }) => {
15941
16007
  };
15942
16008
 
15943
16009
  function AgentInformation({ agentId, threadId }) {
15944
- const { data: agent, isLoading } = useAgent(agentId);
15945
- const { mutateAsync: updateModel } = useUpdateAgentModel(agentId);
15946
- const { mutateAsync: resetModel } = useResetAgentModel(agentId);
15947
- const { mutate: reorderModelList } = useReorderModelList(agentId);
15948
- const { mutateAsync: updateModelInModelList } = useUpdateModelInModelList(agentId);
15949
- const { data: memory, isLoading: isMemoryLoading } = useMemory(agentId);
15950
- const { settings, setSettings } = useAgentSettings();
15951
- const STORAGE_KEY = "agent-info-selected-tab";
16010
+ const { data: memory } = useMemory(agentId);
16011
+ const hasMemory = Boolean(memory?.result);
16012
+ return /* @__PURE__ */ jsxs(AgentInformationLayout, { agentId, children: [
16013
+ /* @__PURE__ */ jsx(AgentEntityHeader, { agentId }),
16014
+ /* @__PURE__ */ jsxs(AgentInformationTabLayout, { agentId, children: [
16015
+ /* @__PURE__ */ jsxs(TabList$1, { children: [
16016
+ /* @__PURE__ */ jsx(Tab$1, { value: "overview", children: "Overview" }),
16017
+ /* @__PURE__ */ jsx(Tab$1, { value: "model-settings", children: "Model Settings" }),
16018
+ hasMemory && /* @__PURE__ */ jsx(Tab$1, { value: "memory", children: "Memory" })
16019
+ ] }),
16020
+ /* @__PURE__ */ jsx(TabContent$1, { value: "overview", children: /* @__PURE__ */ jsx(AgentMetadata, { agentId }) }),
16021
+ /* @__PURE__ */ jsx(TabContent$1, { value: "model-settings", children: /* @__PURE__ */ jsx(AgentSettings, { agentId }) }),
16022
+ hasMemory && /* @__PURE__ */ jsx(TabContent$1, { value: "memory", children: /* @__PURE__ */ jsx(AgentMemory, { agentId, threadId }) })
16023
+ ] })
16024
+ ] });
16025
+ }
16026
+ const STORAGE_KEY = "agent-info-selected-tab";
16027
+ const useAgentInformationTab = ({ isMemoryLoading, hasMemory }) => {
15952
16028
  const [selectedTab, setSelectedTab] = useState(() => {
15953
16029
  return sessionStorage.getItem(STORAGE_KEY) || "overview";
15954
16030
  });
@@ -15957,7 +16033,20 @@ function AgentInformation({ agentId, threadId }) {
15957
16033
  sessionStorage.setItem(STORAGE_KEY, value);
15958
16034
  };
15959
16035
  useEffect(() => {
15960
- if (agent?.modelId?.includes("gpt-5")) {
16036
+ if (!isMemoryLoading && !hasMemory && selectedTab === "memory") {
16037
+ setSelectedTab("overview");
16038
+ sessionStorage.setItem(STORAGE_KEY, "overview");
16039
+ }
16040
+ }, [isMemoryLoading, hasMemory, selectedTab]);
16041
+ return {
16042
+ selectedTab,
16043
+ handleTabChange
16044
+ };
16045
+ };
16046
+ const useAgentInformationSettings = ({ modelId }) => {
16047
+ const { settings, setSettings } = useAgentSettings();
16048
+ useEffect(() => {
16049
+ if (modelId?.includes("gpt-5")) {
15961
16050
  setSettings({
15962
16051
  ...settings || {},
15963
16052
  modelSettings: {
@@ -15966,51 +16055,26 @@ function AgentInformation({ agentId, threadId }) {
15966
16055
  }
15967
16056
  });
15968
16057
  }
15969
- }, [agent]);
15970
- useEffect(() => {
15971
- if (!isMemoryLoading && !memory?.result && selectedTab === "memory") {
15972
- handleTabChange("overview");
15973
- }
15974
- }, [isMemoryLoading, memory?.result, selectedTab]);
15975
- return /* @__PURE__ */ jsxs("div", { className: "grid grid-rows-[auto_1fr] h-full items-start overflow-y-auto border-l-sm border-border1", children: [
15976
- /* @__PURE__ */ jsx(AgentEntityHeader, { agentId, isLoading: isMemoryLoading, agentName: agent?.name || "" }),
15977
- /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden border-t-sm border-border1 flex flex-col", children: /* @__PURE__ */ jsxs(PlaygroundTabs, { defaultTab: "overview", value: selectedTab, onValueChange: handleTabChange, children: [
15978
- /* @__PURE__ */ jsxs(TabList$1, { children: [
15979
- /* @__PURE__ */ jsx(Tab$1, { value: "overview", children: "Overview" }),
15980
- /* @__PURE__ */ jsx(Tab$1, { value: "model-settings", children: "Model Settings" }),
15981
- memory?.result && /* @__PURE__ */ jsx(Tab$1, { value: "memory", children: "Memory" })
15982
- ] }),
15983
- /* @__PURE__ */ jsxs(TabContent$1, { value: "overview", children: [
15984
- isLoading && /* @__PURE__ */ jsx(Skeleton, { className: "h-full" }),
15985
- agent && /* @__PURE__ */ jsx(
15986
- AgentMetadata,
15987
- {
15988
- agentId,
15989
- agent,
15990
- updateModel,
15991
- resetModel,
15992
- updateModelInModelList,
15993
- reorderModelList,
15994
- hasMemoryEnabled: Boolean(memory?.result),
15995
- modelVersion: agent.modelVersion
15996
- }
15997
- )
15998
- ] }),
15999
- /* @__PURE__ */ jsxs(TabContent$1, { value: "model-settings", children: [
16000
- isLoading && /* @__PURE__ */ jsx(Skeleton, { className: "h-full" }),
16001
- agent && /* @__PURE__ */ jsx(
16002
- AgentSettings,
16003
- {
16004
- modelVersion: agent.modelVersion,
16005
- hasMemory: Boolean(memory?.result),
16006
- hasSubAgents: Boolean(Object.keys(agent.agents || {}).length > 0)
16007
- }
16008
- )
16009
- ] }),
16010
- /* @__PURE__ */ jsx(TabContent$1, { value: "memory", children: isLoading ? /* @__PURE__ */ jsx(Skeleton, { className: "h-full" }) : /* @__PURE__ */ jsx(AgentMemory, { agentId, threadId }) })
16011
- ] }) })
16012
- ] });
16013
- }
16058
+ }, [modelId]);
16059
+ return {
16060
+ settings,
16061
+ setSettings
16062
+ };
16063
+ };
16064
+ const AgentInformationLayout = ({ children, agentId }) => {
16065
+ const { data: agent } = useAgent(agentId);
16066
+ useAgentInformationSettings({ modelId: agent?.modelId || "" });
16067
+ return /* @__PURE__ */ jsx("div", { className: "grid grid-rows-[auto_1fr] h-full items-start overflow-y-auto border-l-sm border-border1", children });
16068
+ };
16069
+ const AgentInformationTabLayout = ({ children, agentId }) => {
16070
+ const { data: memory, isLoading: isMemoryLoading } = useMemory(agentId);
16071
+ const hasMemory = Boolean(memory?.result);
16072
+ const { selectedTab, handleTabChange } = useAgentInformationTab({
16073
+ isMemoryLoading,
16074
+ hasMemory
16075
+ });
16076
+ return /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden border-t-sm border-border1 flex flex-col", children: /* @__PURE__ */ jsx(PlaygroundTabs, { defaultTab: "overview", value: selectedTab, onValueChange: handleTabChange, children }) });
16077
+ };
16014
16078
 
16015
16079
  const NameCell$1 = ({ row }) => {
16016
16080
  const { Link, paths } = useLinkComponent();
@@ -17684,7 +17748,15 @@ function SpanTabs({
17684
17748
  /* @__PURE__ */ jsx(CircleGaugeIcon, {}),
17685
17749
  " Scoring"
17686
17750
  ] }) }),
17687
- /* @__PURE__ */ jsx(SpanScoring, { traceId: trace?.traceId, spanId: span?.spanId, entityType })
17751
+ /* @__PURE__ */ jsx(
17752
+ SpanScoring,
17753
+ {
17754
+ traceId: trace?.traceId,
17755
+ isTopLevelSpan: span?.parentSpanId === null,
17756
+ spanId: span?.spanId,
17757
+ entityType
17758
+ }
17759
+ )
17688
17760
  ] }),
17689
17761
  /* @__PURE__ */ jsxs(Section, { children: [
17690
17762
  /* @__PURE__ */ jsx(Section.Header, { children: /* @__PURE__ */ jsxs(Section.Heading, { children: [
@@ -18281,8 +18353,8 @@ const useTriggerScorer = () => {
18281
18353
  });
18282
18354
  };
18283
18355
 
18284
- const SpanScoring = ({ traceId, spanId, entityType }) => {
18285
- const { data: scorers = {}, isLoading } = useScorers();
18356
+ const SpanScoring = ({ traceId, spanId, entityType, isTopLevelSpan }) => {
18357
+ const { data: scorers = {}, isLoading, error } = useScorers();
18286
18358
  const [selectedScorer, setSelectedScorer] = useState(null);
18287
18359
  const { mutate: triggerScorer, isPending, isSuccess } = useTriggerScorer();
18288
18360
  const [notificationIsVisible, setNotificationIsVisible] = useState(false);
@@ -18298,7 +18370,7 @@ const SpanScoring = ({ traceId, spanId, entityType }) => {
18298
18370
  isRegistered: scorer.isRegistered,
18299
18371
  type: scorer.scorer.config.type
18300
18372
  })).filter((scorer) => scorer.isRegistered);
18301
- if (entityType !== "Agent" || spanId) {
18373
+ if (entityType !== "Agent" || !isTopLevelSpan) {
18302
18374
  scorerList = scorerList.filter((scorer) => scorer.type !== "agent");
18303
18375
  }
18304
18376
  const isWaiting = isPending || isLoading;
@@ -18317,6 +18389,19 @@ const SpanScoring = ({ traceId, spanId, entityType }) => {
18317
18389
  setNotificationIsVisible(false);
18318
18390
  };
18319
18391
  const selectedScorerDescription = scorerList.find((s) => s.name === selectedScorer)?.description || "";
18392
+ if (error) {
18393
+ return /* @__PURE__ */ jsxs(Notification, { isVisible: true, autoDismiss: false, type: "error", children: [
18394
+ /* @__PURE__ */ jsx(InfoIcon$1, {}),
18395
+ " ",
18396
+ error?.message ? error.message : "Failed to load scorers."
18397
+ ] });
18398
+ }
18399
+ if (scorerList.length === 0) {
18400
+ return /* @__PURE__ */ jsxs(Notification, { isVisible: true, dismissible: false, children: [
18401
+ /* @__PURE__ */ jsx(InfoIcon$1, {}),
18402
+ " No eligible scorers have been defined to run."
18403
+ ] });
18404
+ }
18320
18405
  return /* @__PURE__ */ jsxs("div", { children: [
18321
18406
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[3fr_1fr] gap-[1rem] items-start", children: [
18322
18407
  /* @__PURE__ */ jsxs("div", { className: "grid gap-[0.5rem]", children: [
@@ -18913,5 +18998,5 @@ function MCPServerCombobox({
18913
18998
  );
18914
18999
  }
18915
19000
 
18916
- export { AgentChat, AgentCoinIcon, AgentCombobox, AgentEntityHeader, AgentIcon, AgentInformation, AgentMetadata, AgentMetadataList, AgentMetadataListEmpty, AgentMetadataListItem, AgentMetadataNetworkList, AgentMetadataScorerList, AgentMetadataSection, AgentMetadataToolList, AgentMetadataWorkflowList, AgentMetadataWrapper, AgentNetworkCoinIcon, AgentPromptExperimentProvider, AgentSettings, AgentSettingsContext, AgentSettingsProvider, AgentToolPanel, AgentsTable, AiIcon, Alert$1 as Alert, AlertDescription$1 as AlertDescription, AlertDialog, AlertTitle$1 as AlertTitle, ApiIcon, Badge, BranchIcon, Breadcrumb, Button$1 as Button, ButtonsGroup, Cell, ChatThreads, CheckIcon, ChevronIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, CommitIcon, CrossIcon, Crumb, DateTimeCell, DateTimePicker, DateTimePickerContent, DbIcon, DebugIcon, DefaultTrigger, DeploymentIcon, DividerIcon, DocsIcon, DynamicForm, EmptyState, Entity, EntityContent, EntityDescription, EntityHeader, EntityIcon, EntityName, Entry, EntryCell, EntryList, EntryListSkeleton, EnvIcon, FiltersIcon, FolderIcon, GithubCoinIcon, GithubIcon, GoogleIcon, Header, HeaderAction, HeaderGroup, HeaderTitle, HomeIcon, Icon, InfoIcon, InputField, JudgeIcon, Kbd, KeyValueList, LatencyIcon, LinkComponentProvider, LogoWithoutText, LogsIcon, MCPDetail, MCPServerCombobox, MCPTable, MCPToolPanel, MainContentContent, MainContentLayout, MainSidebar, MainSidebarProvider, McpCoinIcon, McpServerIcon, MemoryIcon, MemorySearch, Notification, OpenAIIcon, PageHeader, PlaygroundQueryClient, PlaygroundTabs, PromptIcon, RadioGroup, RadioGroupItem, RepoIcon, RequestContext, RequestContextWrapper, Row, ScoreDialog, ScorerCombobox, ScorersTable, ScoresList, ScoresTools, SearchField, Searchbar, SearchbarWrapper, Section, Sections, SelectField, SettingsIcon, SideDialog, Skeleton, SlashIcon, SpanScoreList, SpanScoring, SpanTabs, Tab$1 as Tab, TabContent$1 as TabContent, TabList$1 as TabList, Table, Tbody, TemplateFailure, TemplateForm, TemplateInfo, TemplateInstallation, TemplateSuccess, TemplatesList, TemplatesTools, TextAndIcon, Th, Thead, ThreadDeleteButton, ThreadInputProvider, ThreadItem, ThreadLink, ThreadList, Threads, ToolCoinIcon, ToolCombobox, ToolFallback, ToolIconMap, ToolInformation, ToolPanel, ToolTable, ToolsIcon, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TraceDialog, TraceIcon, TraceTimeline, TraceTimelineLegend, TraceTimelineSpan, TracesList, TracesTools, TsIcon, Txt, TxtCell, VariablesIcon, WorkflowCoinIcon, WorkflowCombobox, WorkflowGraph, WorkflowIcon, WorkflowInformation, WorkflowRunContext, WorkflowRunDetail, WorkflowRunList, WorkflowRunProvider, WorkflowTable, WorkflowTrigger, WorkingMemoryContext, WorkingMemoryProvider, convertWorkflowRunStateToStreamResult, extractPrompt, formatHierarchicalSpans, getColumnTemplate, getShortId, getSpanTypeUi, getToNextEntryFn, getToPreviousEntryFn, parseError, providerMapToIcon, scoresListColumns, spanTypePrefixes, toast, traceScoresListColumns, tracesListColumns, useAgent, useAgentPromptExperiment, useAgentSettings, useAgents, useCancelWorkflowRun, useCurrentRun, useDeleteThread, useExecuteAgentTool, useExecuteMCPTool, useExecuteTool, useExecuteWorkflow, useInView, useLinkComponent, useMCPServerTool, useMCPServerTools, useMCPServers, useMainSidebar, useMemory, useMemoryConfig, useMemorySearch, usePlaygroundStore, useReorderModelList, useResetAgentModel, useScorer, useScorers, useScoresByScorerId, useSpeechRecognition, useStreamWorkflow, useThreadInput, useThreads, useTool, useTools, useTraceSpanScores, useUpdateAgentModel, useUpdateModelInModelList, useWorkflow, useWorkflowRunExecutionResult, useWorkflowRuns, useWorkflows, useWorkingMemory };
19001
+ export { AgentChat, AgentCoinIcon, AgentCombobox, AgentEntityHeader, AgentIcon, AgentInformation, AgentInformationLayout, AgentInformationTabLayout, AgentMemory, AgentMetadata, AgentMetadataList, AgentMetadataListEmpty, AgentMetadataListItem, AgentMetadataNetworkList, AgentMetadataScorerList, AgentMetadataSection, AgentMetadataToolList, AgentMetadataWorkflowList, AgentMetadataWrapper, AgentNetworkCoinIcon, AgentPromptExperimentProvider, AgentSettings, AgentSettingsContext, AgentSettingsProvider, AgentToolPanel, AgentsTable, AiIcon, Alert$1 as Alert, AlertDescription$1 as AlertDescription, AlertDialog, AlertTitle$1 as AlertTitle, ApiIcon, Badge, BranchIcon, Breadcrumb, Button$1 as Button, ButtonsGroup, Cell, ChatThreads, CheckIcon, ChevronIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, CommitIcon, CrossIcon, Crumb, DateTimeCell, DateTimePicker, DateTimePickerContent, DbIcon, DebugIcon, DefaultTrigger, DeploymentIcon, DividerIcon, DocsIcon, DynamicForm, EmptyState, Entity, EntityContent, EntityDescription, EntityHeader, EntityIcon, EntityName, Entry, EntryCell, EntryList, EntryListSkeleton, EnvIcon, FiltersIcon, FolderIcon, GithubCoinIcon, GithubIcon, GoogleIcon, Header, HeaderAction, HeaderGroup, HeaderTitle, HomeIcon, Icon, InfoIcon, InputField, JudgeIcon, Kbd, KeyValueList, LatencyIcon, LinkComponentProvider, LogoWithoutText, LogsIcon, MCPDetail, MCPServerCombobox, MCPTable, MCPToolPanel, MainContentContent, MainContentLayout, MainSidebar, MainSidebarProvider, McpCoinIcon, McpServerIcon, MemoryIcon, MemorySearch, Notification, OpenAIIcon, PageHeader, PlaygroundQueryClient, PlaygroundTabs, PromptIcon, RadioGroup, RadioGroupItem, RepoIcon, RequestContext, RequestContextWrapper, Row, ScoreDialog, ScorerCombobox, ScorersTable, ScoresList, ScoresTools, SearchField, Searchbar, SearchbarWrapper, Section, Sections, SelectField, SettingsIcon, SideDialog, Skeleton, SlashIcon, SpanScoreList, SpanScoring, SpanTabs, Tab$1 as Tab, TabContent$1 as TabContent, TabList$1 as TabList, Table, Tbody, TemplateFailure, TemplateForm, TemplateInfo, TemplateInstallation, TemplateSuccess, TemplatesList, TemplatesTools, TextAndIcon, Th, Thead, ThreadDeleteButton, ThreadInputProvider, ThreadItem, ThreadLink, ThreadList, Threads, ToolCoinIcon, ToolCombobox, ToolFallback, ToolIconMap, ToolInformation, ToolPanel, ToolTable, ToolsIcon, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TraceDialog, TraceIcon, TraceTimeline, TraceTimelineLegend, TraceTimelineSpan, TracesList, TracesTools, TsIcon, Txt, TxtCell, VariablesIcon, WorkflowCoinIcon, WorkflowCombobox, WorkflowGraph, WorkflowIcon, WorkflowInformation, WorkflowRunContext, WorkflowRunDetail, WorkflowRunList, WorkflowRunProvider, WorkflowTable, WorkflowTrigger, WorkingMemoryContext, WorkingMemoryProvider, convertWorkflowRunStateToStreamResult, extractPrompt, formatHierarchicalSpans, getColumnTemplate, getShortId, getSpanTypeUi, getToNextEntryFn, getToPreviousEntryFn, parseError, providerMapToIcon, scoresListColumns, spanTypePrefixes, toast, traceScoresListColumns, tracesListColumns, useAgent, useAgentInformationSettings, useAgentInformationTab, useAgentPromptExperiment, useAgentSettings, useAgents, useCancelWorkflowRun, useCurrentRun, useDeleteThread, useExecuteAgentTool, useExecuteMCPTool, useExecuteTool, useExecuteWorkflow, useInView, useLinkComponent, useMCPServerTool, useMCPServerTools, useMCPServers, useMainSidebar, useMemory, useMemoryConfig, useMemorySearch, usePlaygroundStore, useReorderModelList, useResetAgentModel, useScorer, useScorers, useScoresByScorerId, useSpeechRecognition, useStreamWorkflow, useThreadInput, useThreads, useTool, useTools, useTraceSpanScores, useUpdateAgentModel, useUpdateModelInModelList, useWorkflow, useWorkflowRunExecutionResult, useWorkflowRuns, useWorkflows, useWorkingMemory };
18917
19002
  //# sourceMappingURL=index.es.js.map