@mastra/playground-ui 7.0.0-beta.0 → 7.0.0-beta.1
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/CHANGELOG.md +17 -0
- package/dist/index.cjs.js +330 -598
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +334 -592
- package/dist/index.es.js.map +1 -1
- package/dist/src/components/syntax-highlighter.d.ts +2 -1
- package/dist/src/components/ui/elements/form-fields/index.d.ts +0 -4
- package/dist/src/components/ui/elements/headers/index.d.ts +0 -1
- package/dist/src/components/ui/elements/main-sidebar/main-sidebar.d.ts +1 -1
- package/dist/src/components/ui/input.d.ts +1 -1
- package/dist/src/components/ui/syntax-highlighter.d.ts +1 -1
- package/dist/src/components/ui/textarea.d.ts +1 -1
- package/dist/src/domains/agents/context/index.d.ts +0 -1
- package/dist/src/domains/agents/context/model-reset-context.d.ts +0 -4
- package/dist/src/domains/scores/hooks/use-scorers.d.ts +2 -6
- package/dist/src/domains/scores/index.d.ts +1 -1
- package/dist/src/domains/tools/components/ToolExecutor.d.ts +1 -1
- package/dist/src/domains/workflows/workflow/workflow-default-node.d.ts +4 -0
- package/dist/src/domains/workflows/workflow/workflow-nested-node.d.ts +4 -0
- package/dist/src/domains/workflows/workflow/workflow-node-badges.d.ts +55 -0
- package/dist/src/domains/workflows/workflow/workflow-step-action-bar.d.ts +2 -1
- package/dist/src/ds/components/Table/Cells.d.ts +0 -3
- package/dist/src/index.d.ts +1 -2
- package/package.json +11 -9
- package/dist/src/components/assistant-ui/thread-list.d.ts +0 -2
- package/dist/src/components/assistant-ui/tools/tool-approval.d.ts +0 -8
- package/dist/src/components/icons/agent-icon.d.ts +0 -3
- package/dist/src/components/icons/automation-icon.d.ts +0 -3
- package/dist/src/components/ui/copyable-content.d.ts +0 -7
- package/dist/src/components/ui/dropdown-menu.d.ts +0 -42
- package/dist/src/components/ui/elements/entry-list/entry-list-toolbar.d.ts +0 -6
- package/dist/src/components/ui/elements/form-fields/form-actions.d.ts +0 -12
- package/dist/src/components/ui/elements/form-fields/radio-group-field.d.ts +0 -21
- package/dist/src/components/ui/elements/form-fields/slider-field.d.ts +0 -15
- package/dist/src/components/ui/elements/form-fields/textarea-field.d.ts +0 -11
- package/dist/src/components/ui/elements/headers/entity-main-header.d.ts +0 -11
- package/dist/src/components/ui/elements/side-dialog/side-dialog-footer.d.ts +0 -10
- package/dist/src/components/ui/formatted-date.d.ts +0 -3
- package/dist/src/components/ui/resizable.d.ts +0 -23
- package/dist/src/components/ui/score-indicator.d.ts +0 -3
- package/dist/src/components/ui/toggle.d.ts +0 -12
- package/dist/src/domains/agents/components/agent-metadata/connection-dot.d.ts +0 -6
- package/dist/src/domains/agents/components/agent-metadata/models.d.ts +0 -5
- package/dist/src/domains/agents/components/agent-metadata/provider-status-indicator.d.ts +0 -7
- package/dist/src/domains/resizable-panel.d.ts +0 -11
- package/dist/src/domains/scores/components/score-table.d.ts +0 -11
- package/dist/src/domains/tools/components/tool-table/types.d.ts +0 -2
- package/dist/src/domains/workflows/workflow/workflow-result.d.ts +0 -5
- package/dist/src/hooks/use-resize-column.d.ts +0 -12
- package/dist/src/lib/mastra-client.d.ts +0 -2
- package/dist/src/lib/pagination/types.d.ts +0 -11
- package/dist/src/lib/polls.d.ts +0 -36
package/dist/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { useMessagePart, useMessage, MessagePrimitive, ActionBarPrimitive, useComposerRuntime, useAttachment, ComposerPrimitive, AttachmentPrimitive, useComposer, ThreadPrimitive, CompositeAttachmentAdapter, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, WebSpeechSynthesisAdapter, useExternalStoreRuntime, AssistantRuntimeProvider } from '@assistant-ui/react';
|
|
3
|
-
import { CheckIcon as CheckIcon$1, CopyIcon, InfoIcon as InfoIcon$1, AlertCircle, TriangleAlert, ChevronUpIcon, X, Share2, Check, Network, ChevronDown, PauseIcon, HourglassIcon, Loader2, CircleDashed, Footprints, CircleCheck, CircleX, Minus, Plus, Maximize,
|
|
3
|
+
import { CheckIcon as CheckIcon$1, CopyIcon, InfoIcon as InfoIcon$1, AlertCircle, TriangleAlert, ChevronUpIcon, X, Share2, Check, PlayCircle, Workflow, Layers, List, Clock as Clock$1, CalendarClock, Timer, CornerDownRight, GitBranch, RefreshCw, Repeat, Repeat1, Network, ChevronDown, PauseIcon, HourglassIcon, Loader2, CircleDashed, Footprints, CircleCheck, CircleX, Minus, Plus, Maximize, AlertCircleIcon, ChevronDownIcon, CirclePause, CalendarIcon, Braces, Brackets, PlusIcon, TrashIcon, Circle, StopCircle, SearchIcon, ChevronsUpDown, Search, BrainIcon, AudioLinesIcon, StopCircleIcon, FileText, CircleXIcon, Link, CloudUpload, Mic, ArrowUp, SaveIcon, ExternalLink, TriangleAlertIcon, ChevronRightIcon, ArrowLeftIcon, ArrowRightIcon, ChevronsRightIcon, AlignLeftIcon, AlignJustifyIcon, ArrowUpIcon, ArrowDownIcon, CircleAlertIcon, XIcon, PanelRightIcon, KeyboardIcon, GaugeIcon, EyeIcon, ChevronsLeftRightEllipsisIcon, CalculatorIcon, HashIcon, FileInputIcon, FileOutputIcon, ReceiptText, Info, RotateCcw, GripVertical, RefreshCcwIcon, AlertTriangleIcon, ChevronRight, NetworkIcon, WorkflowIcon as WorkflowIcon$1, PackageIcon, GitBranchIcon, PackageOpenIcon, OctagonXIcon, FrownIcon, ChevronsLeftRight, TimerIcon, ChevronsLeftRightIcon, ChevronFirstIcon, ChevronLastIcon, ArrowRightToLineIcon, CoinsIcon, BracesIcon, CircleGaugeIcon, PanelTopIcon, ListTreeIcon, PanelLeftIcon, CircleSlash } from 'lucide-react';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import React__default, { forwardRef, memo, useState, useEffect, useRef, useCallback, useMemo, createContext, useContext, Fragment as Fragment$1, useId, Suspense } from 'react';
|
|
6
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
@@ -15,7 +15,7 @@ import { coldarkDark } from 'react-syntax-highlighter/dist/cjs/styles/prism';
|
|
|
15
15
|
import { jsonLanguage, json } from '@codemirror/lang-json';
|
|
16
16
|
import { tags } from '@lezer/highlight';
|
|
17
17
|
import { draculaInit } from '@uiw/codemirror-theme-dracula';
|
|
18
|
-
import CodeMirror, { EditorView } from '@uiw/react-codemirror';
|
|
18
|
+
import CodeMirror, { EditorView as EditorView$1 } from '@uiw/react-codemirror';
|
|
19
19
|
import { toast as toast$1 } from 'sonner';
|
|
20
20
|
import './index.css';export { Toaster } from 'sonner';
|
|
21
21
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
@@ -25,6 +25,7 @@ import Dagre from '@dagrejs/dagre';
|
|
|
25
25
|
import { Highlight, themes } from 'prism-react-renderer';
|
|
26
26
|
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
|
27
27
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
28
|
+
import { EditorView } from '@codemirror/view';
|
|
28
29
|
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
29
30
|
import jsonSchemaToZod from 'json-schema-to-zod';
|
|
30
31
|
import { parse } from 'superjson';
|
|
@@ -4725,6 +4726,26 @@ const lodashTitleCase = (str) => {
|
|
|
4725
4726
|
return camelCased.replace(/([A-Z])/g, " $1").replace(/^./, (str2) => str2.toUpperCase()).trim();
|
|
4726
4727
|
};
|
|
4727
4728
|
|
|
4729
|
+
const formatMappingLabel = (stepId, prevStepIds, nextStepIds) => {
|
|
4730
|
+
if (!stepId.startsWith("mapping_")) {
|
|
4731
|
+
return stepId;
|
|
4732
|
+
}
|
|
4733
|
+
const capitalizeWords = (str) => {
|
|
4734
|
+
return str.split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
4735
|
+
};
|
|
4736
|
+
const formatStepName = (id) => {
|
|
4737
|
+
const cleaned = id.replace(/Step$/, "").replace(/[-_]/g, " ").trim();
|
|
4738
|
+
return capitalizeWords(cleaned);
|
|
4739
|
+
};
|
|
4740
|
+
const formatMultipleSteps = (ids, isTarget) => {
|
|
4741
|
+
if (ids.length === 0) return isTarget ? "End" : "Start";
|
|
4742
|
+
if (ids.length === 1) return formatStepName(ids[0]);
|
|
4743
|
+
return `${ids.length} Steps`;
|
|
4744
|
+
};
|
|
4745
|
+
const fromLabel = formatMultipleSteps(prevStepIds, false);
|
|
4746
|
+
const toLabel = formatMultipleSteps(nextStepIds, true);
|
|
4747
|
+
return `${fromLabel} → ${toLabel} Map`;
|
|
4748
|
+
};
|
|
4728
4749
|
const getLayoutedElements = (nodes, edges) => {
|
|
4729
4750
|
const g = new Dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));
|
|
4730
4751
|
g.setGraph({ rankdir: "TB" });
|
|
@@ -4821,12 +4842,15 @@ const getStepNodeAndEdge = ({
|
|
|
4821
4842
|
position: { x: xIndex * 300, y: (yIndex + (condition ? 1 : 0)) * 100 },
|
|
4822
4843
|
type: hasGraph ? "nested-node" : "default-node",
|
|
4823
4844
|
data: {
|
|
4824
|
-
label: stepFlow.step.id,
|
|
4845
|
+
label: formatMappingLabel(stepFlow.step.id, prevStepIds, nextStepIds),
|
|
4846
|
+
stepId: stepFlow.step.id,
|
|
4825
4847
|
description: stepFlow.step.description,
|
|
4826
4848
|
withoutTopHandle: condition ? false : !prevNodeIds.length,
|
|
4827
4849
|
withoutBottomHandle: !nextNodeIds.length,
|
|
4828
4850
|
stepGraph: hasGraph ? stepFlow.step.serializedStepFlow : void 0,
|
|
4829
|
-
mapConfig: stepFlow.step.mapConfig
|
|
4851
|
+
mapConfig: stepFlow.step.mapConfig,
|
|
4852
|
+
canSuspend: stepFlow.step.canSuspend,
|
|
4853
|
+
isForEach: stepFlow.type === "foreach"
|
|
4830
4854
|
}
|
|
4831
4855
|
}
|
|
4832
4856
|
];
|
|
@@ -4944,7 +4968,8 @@ const getStepNodeAndEdge = ({
|
|
|
4944
4968
|
description: _step.description,
|
|
4945
4969
|
withoutTopHandle: !prevNodeIds.length,
|
|
4946
4970
|
withoutBottomHandle: false,
|
|
4947
|
-
stepGraph: hasGraph ? _step.serializedStepFlow : void 0
|
|
4971
|
+
stepGraph: hasGraph ? _step.serializedStepFlow : void 0,
|
|
4972
|
+
canSuspend: _step.canSuspend
|
|
4948
4973
|
}
|
|
4949
4974
|
},
|
|
4950
4975
|
{
|
|
@@ -5006,7 +5031,14 @@ const getStepNodeAndEdge = ({
|
|
|
5006
5031
|
nextStepFlow,
|
|
5007
5032
|
allPrevNodeIds
|
|
5008
5033
|
});
|
|
5009
|
-
|
|
5034
|
+
const markedNodes = _nodes.map((node) => ({
|
|
5035
|
+
...node,
|
|
5036
|
+
data: {
|
|
5037
|
+
...node.data,
|
|
5038
|
+
isParallel: true
|
|
5039
|
+
}
|
|
5040
|
+
}));
|
|
5041
|
+
nodes.push(...markedNodes);
|
|
5010
5042
|
edges.push(..._edges);
|
|
5011
5043
|
nextPrevStepIds.push(..._nextPrevStepIds);
|
|
5012
5044
|
});
|
|
@@ -5122,6 +5154,90 @@ const CollapsibleTrigger = (props) => {
|
|
|
5122
5154
|
};
|
|
5123
5155
|
const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
|
|
5124
5156
|
|
|
5157
|
+
const BADGE_COLORS = {
|
|
5158
|
+
sleep: "#A855F7",
|
|
5159
|
+
// Purple
|
|
5160
|
+
forEach: "#F97316",
|
|
5161
|
+
// Orange
|
|
5162
|
+
map: "#F97316",
|
|
5163
|
+
// Orange
|
|
5164
|
+
parallel: "#3B82F6",
|
|
5165
|
+
// Blue
|
|
5166
|
+
suspend: "#EC4899",
|
|
5167
|
+
// Pink
|
|
5168
|
+
after: "#14B8A6",
|
|
5169
|
+
// Teal
|
|
5170
|
+
workflow: "#8B5CF6",
|
|
5171
|
+
// Purple
|
|
5172
|
+
// Condition colors
|
|
5173
|
+
when: "#ECB047",
|
|
5174
|
+
// Orange
|
|
5175
|
+
dountil: "#8B5CF6",
|
|
5176
|
+
// Purple
|
|
5177
|
+
dowhile: "#06B6D4",
|
|
5178
|
+
// Cyan
|
|
5179
|
+
until: "#F59E0B",
|
|
5180
|
+
// Amber
|
|
5181
|
+
while: "#10B981",
|
|
5182
|
+
// Green
|
|
5183
|
+
if: "#3B82F6",
|
|
5184
|
+
// Blue
|
|
5185
|
+
else: "#6B7280"
|
|
5186
|
+
// Gray
|
|
5187
|
+
};
|
|
5188
|
+
const BADGE_ICONS = {
|
|
5189
|
+
sleep: Timer,
|
|
5190
|
+
sleepUntil: CalendarClock,
|
|
5191
|
+
forEach: List,
|
|
5192
|
+
map: List,
|
|
5193
|
+
parallel: Workflow,
|
|
5194
|
+
suspend: PlayCircle,
|
|
5195
|
+
after: Clock$1,
|
|
5196
|
+
workflow: Layers,
|
|
5197
|
+
// Condition icons
|
|
5198
|
+
when: Network,
|
|
5199
|
+
dountil: Repeat1,
|
|
5200
|
+
dowhile: Repeat,
|
|
5201
|
+
until: Timer,
|
|
5202
|
+
while: RefreshCw,
|
|
5203
|
+
if: GitBranch,
|
|
5204
|
+
else: CornerDownRight
|
|
5205
|
+
};
|
|
5206
|
+
const getConditionIconAndColor = (type) => {
|
|
5207
|
+
switch (type) {
|
|
5208
|
+
case "when":
|
|
5209
|
+
return { icon: BADGE_ICONS.when, color: BADGE_COLORS.when };
|
|
5210
|
+
case "dountil":
|
|
5211
|
+
return { icon: BADGE_ICONS.dountil, color: BADGE_COLORS.dountil };
|
|
5212
|
+
case "dowhile":
|
|
5213
|
+
return { icon: BADGE_ICONS.dowhile, color: BADGE_COLORS.dowhile };
|
|
5214
|
+
case "until":
|
|
5215
|
+
return { icon: BADGE_ICONS.until, color: BADGE_COLORS.until };
|
|
5216
|
+
case "while":
|
|
5217
|
+
return { icon: BADGE_ICONS.while, color: BADGE_COLORS.while };
|
|
5218
|
+
case "if":
|
|
5219
|
+
return { icon: BADGE_ICONS.if, color: BADGE_COLORS.if };
|
|
5220
|
+
case "else":
|
|
5221
|
+
return { icon: BADGE_ICONS.else, color: BADGE_COLORS.else };
|
|
5222
|
+
default:
|
|
5223
|
+
return { icon: void 0, color: void 0 };
|
|
5224
|
+
}
|
|
5225
|
+
};
|
|
5226
|
+
const getNodeBadgeInfo = (data) => {
|
|
5227
|
+
const isSleepNode = Boolean(data.duration || data.date);
|
|
5228
|
+
const isForEachNode = Boolean(data.isForEach);
|
|
5229
|
+
const isMapNode = Boolean(data.mapConfig && !data.isForEach);
|
|
5230
|
+
const isNestedWorkflow = Boolean(data.stepGraph);
|
|
5231
|
+
const hasSpecialBadge = isSleepNode || data.canSuspend || data.isParallel || isForEachNode || isMapNode || isNestedWorkflow;
|
|
5232
|
+
return {
|
|
5233
|
+
isSleepNode,
|
|
5234
|
+
isForEachNode,
|
|
5235
|
+
isMapNode,
|
|
5236
|
+
isNestedWorkflow,
|
|
5237
|
+
hasSpecialBadge
|
|
5238
|
+
};
|
|
5239
|
+
};
|
|
5240
|
+
|
|
5125
5241
|
const useAutoscroll = (ref, { enabled = true }) => {
|
|
5126
5242
|
const shouldScrollRef = useRef(enabled);
|
|
5127
5243
|
React__default.useEffect(() => {
|
|
@@ -5218,8 +5334,8 @@ const useCurrentRun = () => {
|
|
|
5218
5334
|
};
|
|
5219
5335
|
|
|
5220
5336
|
const useCodemirrorTheme$1 = () => {
|
|
5221
|
-
return useMemo(
|
|
5222
|
-
|
|
5337
|
+
return useMemo(() => {
|
|
5338
|
+
const baseTheme = draculaInit({
|
|
5223
5339
|
settings: {
|
|
5224
5340
|
fontFamily: "var(--geist-mono)",
|
|
5225
5341
|
fontSize: "0.8rem",
|
|
@@ -5229,9 +5345,20 @@ const useCodemirrorTheme$1 = () => {
|
|
|
5229
5345
|
background: "transparent"
|
|
5230
5346
|
},
|
|
5231
5347
|
styles: [{ tag: [tags.className, tags.propertyName] }]
|
|
5232
|
-
})
|
|
5233
|
-
|
|
5234
|
-
|
|
5348
|
+
});
|
|
5349
|
+
const customLineNumberTheme = EditorView.theme({
|
|
5350
|
+
".cm-editor": {
|
|
5351
|
+
colorScheme: "dark",
|
|
5352
|
+
// ensures color scheme
|
|
5353
|
+
backgroundColor: "transparent"
|
|
5354
|
+
},
|
|
5355
|
+
".cm-lineNumbers .cm-gutterElement": {
|
|
5356
|
+
color: "#939393"
|
|
5357
|
+
// ← custom line number color
|
|
5358
|
+
}
|
|
5359
|
+
});
|
|
5360
|
+
return [baseTheme, customLineNumberTheme];
|
|
5361
|
+
}, []);
|
|
5235
5362
|
};
|
|
5236
5363
|
const SyntaxHighlighter$1 = ({ data }) => {
|
|
5237
5364
|
const formattedCode = JSON.stringify(data, null, 2);
|
|
@@ -5268,6 +5395,7 @@ const WorkflowStepActionBar = ({
|
|
|
5268
5395
|
error,
|
|
5269
5396
|
mapConfig,
|
|
5270
5397
|
stepName,
|
|
5398
|
+
stepId,
|
|
5271
5399
|
onShowNestedGraph,
|
|
5272
5400
|
status
|
|
5273
5401
|
}) => {
|
|
@@ -5294,10 +5422,13 @@ const WorkflowStepActionBar = ({
|
|
|
5294
5422
|
mapConfig && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5295
5423
|
/* @__PURE__ */ jsx(Button$1, { onClick: () => setIsMapConfigOpen(true), children: "Map config" }),
|
|
5296
5424
|
/* @__PURE__ */ jsx(Dialog, { open: isMapConfigOpen, onOpenChange: setIsMapConfigOpen, children: /* @__PURE__ */ jsxs(DialogContent, { className: dialogContentClass, children: [
|
|
5297
|
-
/* @__PURE__ */
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5425
|
+
/* @__PURE__ */ jsx(DialogTitle, { className: dialogTitleClass, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
5426
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
5427
|
+
stepName,
|
|
5428
|
+
" Map Config"
|
|
5429
|
+
] }),
|
|
5430
|
+
stepId && stepId !== stepName && /* @__PURE__ */ jsx("div", { className: "text-xs text-icon3 font-normal", children: stepId })
|
|
5431
|
+
] }) }),
|
|
5301
5432
|
/* @__PURE__ */ jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsx(CodeDialogContent, { data: mapConfig }) })
|
|
5302
5433
|
] }) })
|
|
5303
5434
|
] }),
|
|
@@ -5355,6 +5486,7 @@ function WorkflowConditionNode({ data }) {
|
|
|
5355
5486
|
const { steps } = useCurrentRun();
|
|
5356
5487
|
const previousStep = steps[previousStepId];
|
|
5357
5488
|
const nextStep = steps[nextStepId];
|
|
5489
|
+
const { icon: IconComponent, color } = getConditionIconAndColor(type);
|
|
5358
5490
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5359
5491
|
!withoutTopHandle && /* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Top, style: { visibility: "hidden" } }),
|
|
5360
5492
|
/* @__PURE__ */ jsxs(
|
|
@@ -5381,7 +5513,13 @@ function WorkflowConditionNode({ data }) {
|
|
|
5381
5513
|
},
|
|
5382
5514
|
children: [
|
|
5383
5515
|
/* @__PURE__ */ jsxs(CollapsibleTrigger, { className: "flex items-center justify-between w-full px-3 py-2", children: [
|
|
5384
|
-
/* @__PURE__ */ jsx(
|
|
5516
|
+
/* @__PURE__ */ jsx(
|
|
5517
|
+
Badge,
|
|
5518
|
+
{
|
|
5519
|
+
icon: IconComponent ? /* @__PURE__ */ jsx(IconComponent, { className: "text-current", ...color ? { style: { color } } : {} }) : null,
|
|
5520
|
+
children: type?.toUpperCase()
|
|
5521
|
+
}
|
|
5522
|
+
),
|
|
5385
5523
|
isCollapsible && /* @__PURE__ */ jsx(Icon, { children: /* @__PURE__ */ jsx(
|
|
5386
5524
|
ChevronDown,
|
|
5387
5525
|
{
|
|
@@ -5392,6 +5530,21 @@ function WorkflowConditionNode({ data }) {
|
|
|
5392
5530
|
) })
|
|
5393
5531
|
] }),
|
|
5394
5532
|
type === "else" ? null : /* @__PURE__ */ jsx(CollapsibleContent, { className: "flex flex-col gap-2 pb-2", children: conditions.map((condition, index) => {
|
|
5533
|
+
const conjType = condition.conj || type;
|
|
5534
|
+
const { icon: ConjIconComponent, color: conjColor } = getConditionIconAndColor(conjType);
|
|
5535
|
+
const conjBadge = index === 0 ? null : /* @__PURE__ */ jsx(
|
|
5536
|
+
Badge,
|
|
5537
|
+
{
|
|
5538
|
+
icon: ConjIconComponent ? /* @__PURE__ */ jsx(
|
|
5539
|
+
ConjIconComponent,
|
|
5540
|
+
{
|
|
5541
|
+
className: "text-current",
|
|
5542
|
+
...conjColor ? { style: { color: conjColor } } : {}
|
|
5543
|
+
}
|
|
5544
|
+
) : null,
|
|
5545
|
+
children: condition.conj?.toLocaleUpperCase() || "WHEN"
|
|
5546
|
+
}
|
|
5547
|
+
);
|
|
5395
5548
|
return condition.fnString ? /* @__PURE__ */ jsxs("div", { className: "px-3", children: [
|
|
5396
5549
|
/* @__PURE__ */ jsx(Highlight, { theme: themes.oneDark, code: String(condition.fnString).trim(), language: "javascript", children: ({ className, style, tokens, getLineProps, getTokenProps }) => /* @__PURE__ */ jsx(
|
|
5397
5550
|
"pre",
|
|
@@ -5437,7 +5590,7 @@ function WorkflowConditionNode({ data }) {
|
|
|
5437
5590
|
) })
|
|
5438
5591
|
] }) })
|
|
5439
5592
|
] }, `${condition.fnString}-${index}`) : /* @__PURE__ */ jsx(Fragment$1, { children: condition.ref?.step ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
5440
|
-
|
|
5593
|
+
conjBadge,
|
|
5441
5594
|
/* @__PURE__ */ jsxs(Text, { size: "xs", className: " text-mastra-el-3 flex-1", children: [
|
|
5442
5595
|
condition.ref.step.id || condition.ref.step,
|
|
5443
5596
|
"'s ",
|
|
@@ -5487,9 +5640,29 @@ const Clock = ({ startedAt, endedAt }) => {
|
|
|
5487
5640
|
|
|
5488
5641
|
function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
5489
5642
|
const { steps, runId } = useCurrentRun();
|
|
5490
|
-
const {
|
|
5491
|
-
|
|
5492
|
-
|
|
5643
|
+
const {
|
|
5644
|
+
label,
|
|
5645
|
+
stepId,
|
|
5646
|
+
description,
|
|
5647
|
+
withoutTopHandle,
|
|
5648
|
+
withoutBottomHandle,
|
|
5649
|
+
mapConfig,
|
|
5650
|
+
duration,
|
|
5651
|
+
date,
|
|
5652
|
+
isParallel,
|
|
5653
|
+
canSuspend,
|
|
5654
|
+
isForEach
|
|
5655
|
+
} = data;
|
|
5656
|
+
const stepKey = parentWorkflowName ? `${parentWorkflowName}.${stepId || label}` : stepId || label;
|
|
5657
|
+
const step = steps[stepKey];
|
|
5658
|
+
const { isSleepNode, isForEachNode, isMapNode, hasSpecialBadge } = getNodeBadgeInfo({
|
|
5659
|
+
duration,
|
|
5660
|
+
date,
|
|
5661
|
+
isForEach,
|
|
5662
|
+
mapConfig,
|
|
5663
|
+
canSuspend,
|
|
5664
|
+
isParallel
|
|
5665
|
+
});
|
|
5493
5666
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5494
5667
|
!withoutTopHandle && /* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Top, style: { visibility: "hidden" } }),
|
|
5495
5668
|
/* @__PURE__ */ jsxs(
|
|
@@ -5499,7 +5672,8 @@ function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
|
5499
5672
|
"data-workflow-step-status": step?.status ?? "idle",
|
|
5500
5673
|
"data-testid": "workflow-default-node",
|
|
5501
5674
|
className: cn(
|
|
5502
|
-
"bg-surface3 rounded-lg w-[274px] border-sm border-border1
|
|
5675
|
+
"bg-surface3 rounded-lg w-[274px] border-sm border-border1",
|
|
5676
|
+
hasSpecialBadge ? "pt-0" : "pt-2",
|
|
5503
5677
|
step?.status === "success" && "bg-accent1Darker",
|
|
5504
5678
|
step?.status === "failed" && "bg-accent2Darker",
|
|
5505
5679
|
step?.status === "suspended" && "bg-accent3Darker",
|
|
@@ -5507,6 +5681,19 @@ function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
|
5507
5681
|
step?.status === "running" && "bg-accent6Darker"
|
|
5508
5682
|
),
|
|
5509
5683
|
children: [
|
|
5684
|
+
hasSpecialBadge && /* @__PURE__ */ jsxs("div", { className: "px-3 pt-2 pb-1 flex gap-1.5 flex-wrap", children: [
|
|
5685
|
+
isSleepNode && /* @__PURE__ */ jsx(
|
|
5686
|
+
Badge,
|
|
5687
|
+
{
|
|
5688
|
+
icon: date ? /* @__PURE__ */ jsx(BADGE_ICONS.sleepUntil, { className: "text-current", style: { color: BADGE_COLORS.sleep } }) : /* @__PURE__ */ jsx(BADGE_ICONS.sleep, { className: "text-current", style: { color: BADGE_COLORS.sleep } }),
|
|
5689
|
+
children: date ? "SLEEP UNTIL" : "SLEEP"
|
|
5690
|
+
}
|
|
5691
|
+
),
|
|
5692
|
+
canSuspend && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.suspend, { className: "text-current", style: { color: BADGE_COLORS.suspend } }), children: "SUSPEND/RESUME" }),
|
|
5693
|
+
isParallel && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.parallel, { className: "text-current", style: { color: BADGE_COLORS.parallel } }), children: "PARALLEL" }),
|
|
5694
|
+
isForEachNode && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.forEach, { className: "text-current", style: { color: BADGE_COLORS.forEach } }), children: "FOREACH" }),
|
|
5695
|
+
isMapNode && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.map, { className: "text-current", style: { color: BADGE_COLORS.map } }), children: "MAP" })
|
|
5696
|
+
] }),
|
|
5510
5697
|
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 px-3", !description && "pb-2"), children: [
|
|
5511
5698
|
/* @__PURE__ */ jsxs(Icon, { children: [
|
|
5512
5699
|
step?.status === "failed" && /* @__PURE__ */ jsx(CrossIcon, { className: "text-accent2" }),
|
|
@@ -5538,6 +5725,7 @@ function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
|
5538
5725
|
WorkflowStepActionBar,
|
|
5539
5726
|
{
|
|
5540
5727
|
stepName: label,
|
|
5728
|
+
stepId,
|
|
5541
5729
|
input: step?.input,
|
|
5542
5730
|
resumeData: step?.resumeData,
|
|
5543
5731
|
output: step?.output,
|
|
@@ -5565,23 +5753,15 @@ function WorkflowAfterNode({ data }) {
|
|
|
5565
5753
|
children: [
|
|
5566
5754
|
/* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Top, style: { visibility: "hidden" } }),
|
|
5567
5755
|
/* @__PURE__ */ jsxs(CollapsibleTrigger, { className: "flex items-center justify-between w-full", children: [
|
|
5568
|
-
/* @__PURE__ */ jsx(
|
|
5569
|
-
|
|
5570
|
-
{
|
|
5571
|
-
size: "xs",
|
|
5572
|
-
weight: "medium",
|
|
5573
|
-
className: "text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px] w-fit",
|
|
5574
|
-
children: "AFTER"
|
|
5575
|
-
}
|
|
5576
|
-
),
|
|
5577
|
-
/* @__PURE__ */ jsx(
|
|
5756
|
+
/* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.after, { className: "text-current", style: { color: BADGE_COLORS.after } }), children: "AFTER" }),
|
|
5757
|
+
/* @__PURE__ */ jsx(Icon, { children: /* @__PURE__ */ jsx(
|
|
5578
5758
|
ChevronDown,
|
|
5579
5759
|
{
|
|
5580
|
-
className: cn("
|
|
5760
|
+
className: cn("transition-transform text-icon3", {
|
|
5581
5761
|
"transform rotate-180": open
|
|
5582
5762
|
})
|
|
5583
5763
|
}
|
|
5584
|
-
)
|
|
5764
|
+
) })
|
|
5585
5765
|
] }),
|
|
5586
5766
|
/* @__PURE__ */ jsx(CollapsibleContent, { className: "flex flex-col gap-2", children: steps.map((step) => /* @__PURE__ */ jsxs("div", { className: "text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2", children: [
|
|
5587
5767
|
/* @__PURE__ */ jsx(Footprints, { className: "text-current w-4 h-4" }),
|
|
@@ -5787,9 +5967,28 @@ function WorkflowNestedGraphProvider({ children }) {
|
|
|
5787
5967
|
function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
5788
5968
|
const { steps } = useCurrentRun();
|
|
5789
5969
|
const { showNestedGraph } = useContext(WorkflowNestedGraphContext);
|
|
5790
|
-
const {
|
|
5970
|
+
const {
|
|
5971
|
+
label,
|
|
5972
|
+
stepId,
|
|
5973
|
+
description,
|
|
5974
|
+
withoutTopHandle,
|
|
5975
|
+
withoutBottomHandle,
|
|
5976
|
+
stepGraph,
|
|
5977
|
+
mapConfig,
|
|
5978
|
+
isParallel,
|
|
5979
|
+
canSuspend,
|
|
5980
|
+
isForEach
|
|
5981
|
+
} = data;
|
|
5791
5982
|
const fullLabel = parentWorkflowName ? `${parentWorkflowName}.${label}` : label;
|
|
5792
|
-
const
|
|
5983
|
+
const stepKey = parentWorkflowName ? `${parentWorkflowName}.${stepId || label}` : stepId || label;
|
|
5984
|
+
const step = steps[stepKey];
|
|
5985
|
+
const { isForEachNode, isMapNode, isNestedWorkflow, hasSpecialBadge } = getNodeBadgeInfo({
|
|
5986
|
+
isForEach,
|
|
5987
|
+
mapConfig,
|
|
5988
|
+
canSuspend,
|
|
5989
|
+
isParallel,
|
|
5990
|
+
stepGraph
|
|
5991
|
+
});
|
|
5793
5992
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5794
5993
|
!withoutTopHandle && /* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Top, style: { visibility: "hidden" } }),
|
|
5795
5994
|
/* @__PURE__ */ jsxs(
|
|
@@ -5799,7 +5998,8 @@ function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
|
5799
5998
|
"data-workflow-node": true,
|
|
5800
5999
|
"data-workflow-step-status": step?.status,
|
|
5801
6000
|
className: cn(
|
|
5802
|
-
"bg-surface3 rounded-lg w-[274px] border-sm border-border1
|
|
6001
|
+
"bg-surface3 rounded-lg w-[274px] border-sm border-border1",
|
|
6002
|
+
hasSpecialBadge ? "pt-0" : "pt-2",
|
|
5803
6003
|
step?.status === "success" && "bg-accent1Darker",
|
|
5804
6004
|
step?.status === "failed" && "bg-accent2Darker",
|
|
5805
6005
|
step?.status === "suspended" && "bg-accent3Darker",
|
|
@@ -5807,6 +6007,13 @@ function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
|
5807
6007
|
step?.status === "running" && "bg-accent6Darker"
|
|
5808
6008
|
),
|
|
5809
6009
|
children: [
|
|
6010
|
+
hasSpecialBadge && /* @__PURE__ */ jsxs("div", { className: "px-3 pt-2 pb-1 flex gap-1.5 flex-wrap", children: [
|
|
6011
|
+
canSuspend && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.suspend, { className: "text-current", style: { color: BADGE_COLORS.suspend } }), children: "SUSPEND/RESUME" }),
|
|
6012
|
+
isParallel && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.parallel, { className: "text-current", style: { color: BADGE_COLORS.parallel } }), children: "PARALLEL" }),
|
|
6013
|
+
isNestedWorkflow && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.workflow, { className: "text-current", style: { color: BADGE_COLORS.workflow } }), children: "WORKFLOW" }),
|
|
6014
|
+
isForEachNode && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.forEach, { className: "text-current", style: { color: BADGE_COLORS.forEach } }), children: "FOREACH" }),
|
|
6015
|
+
isMapNode && /* @__PURE__ */ jsx(Badge, { icon: /* @__PURE__ */ jsx(BADGE_ICONS.map, { className: "text-current", style: { color: BADGE_COLORS.map } }), children: "MAP" })
|
|
6016
|
+
] }),
|
|
5810
6017
|
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 px-3", !description && "pb-2"), children: [
|
|
5811
6018
|
/* @__PURE__ */ jsxs(Icon, { children: [
|
|
5812
6019
|
step?.status === "failed" && /* @__PURE__ */ jsx(CrossIcon, { className: "text-accent2" }),
|
|
@@ -5827,6 +6034,7 @@ function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
|
5827
6034
|
WorkflowStepActionBar,
|
|
5828
6035
|
{
|
|
5829
6036
|
stepName: label,
|
|
6037
|
+
stepId,
|
|
5830
6038
|
input: step?.input,
|
|
5831
6039
|
resumeData: step?.resumeData,
|
|
5832
6040
|
output: step?.output,
|
|
@@ -7549,12 +7757,6 @@ const Cell = ({ className, children, ...props }) => {
|
|
|
7549
7757
|
const TxtCell = ({ className, children }) => {
|
|
7550
7758
|
return /* @__PURE__ */ jsx(Cell, { className, children: /* @__PURE__ */ jsx(Txt, { as: "span", variant: "ui-md", className: "w-full truncate", children }) });
|
|
7551
7759
|
};
|
|
7552
|
-
const UnitCell = ({ className, children, unit }) => {
|
|
7553
|
-
return /* @__PURE__ */ jsx(Cell, { className, children: /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center", children: [
|
|
7554
|
-
/* @__PURE__ */ jsx(Txt, { as: "span", variant: "ui-md", className: "shrink-0", children }),
|
|
7555
|
-
/* @__PURE__ */ jsx(Txt, { as: "span", variant: "ui-sm", className: "text-icon3 w-full truncate", children: unit })
|
|
7556
|
-
] }) });
|
|
7557
|
-
};
|
|
7558
7760
|
const DateTimeCell = ({ dateTime, ...props }) => {
|
|
7559
7761
|
const { day, time } = formatDateCell(dateTime);
|
|
7560
7762
|
return /* @__PURE__ */ jsx(Cell, { ...props, children: /* @__PURE__ */ jsxs("div", { className: "shrink-0", children: [
|
|
@@ -10440,32 +10642,6 @@ const useAgentSettings = () => {
|
|
|
10440
10642
|
return useContext(AgentSettingsContext);
|
|
10441
10643
|
};
|
|
10442
10644
|
|
|
10443
|
-
const ModelResetContext = createContext(null);
|
|
10444
|
-
function ModelResetProvider({ children }) {
|
|
10445
|
-
const resetFnRef = useRef(null);
|
|
10446
|
-
const registerResetFn = useCallback((fn) => {
|
|
10447
|
-
resetFnRef.current = fn;
|
|
10448
|
-
}, []);
|
|
10449
|
-
const triggerReset = useCallback(() => {
|
|
10450
|
-
if (resetFnRef.current) {
|
|
10451
|
-
resetFnRef.current();
|
|
10452
|
-
}
|
|
10453
|
-
}, []);
|
|
10454
|
-
return /* @__PURE__ */ jsx(ModelResetContext.Provider, { value: { registerResetFn, triggerReset }, children });
|
|
10455
|
-
}
|
|
10456
|
-
function useModelReset() {
|
|
10457
|
-
const context = useContext(ModelResetContext);
|
|
10458
|
-
if (!context) {
|
|
10459
|
-
return {
|
|
10460
|
-
registerResetFn: () => {
|
|
10461
|
-
},
|
|
10462
|
-
triggerReset: () => {
|
|
10463
|
-
}
|
|
10464
|
-
};
|
|
10465
|
-
}
|
|
10466
|
-
return context;
|
|
10467
|
-
}
|
|
10468
|
-
|
|
10469
10645
|
const resolveInstructionPart = (part) => {
|
|
10470
10646
|
if (typeof part === "string") {
|
|
10471
10647
|
return part.trim();
|
|
@@ -11826,104 +12002,6 @@ function InputField({
|
|
|
11826
12002
|
);
|
|
11827
12003
|
}
|
|
11828
12004
|
|
|
11829
|
-
function TextareaField({
|
|
11830
|
-
value,
|
|
11831
|
-
label,
|
|
11832
|
-
helpText,
|
|
11833
|
-
className,
|
|
11834
|
-
testId,
|
|
11835
|
-
type,
|
|
11836
|
-
disabled,
|
|
11837
|
-
...props
|
|
11838
|
-
}) {
|
|
11839
|
-
return /* @__PURE__ */ jsxs(
|
|
11840
|
-
"div",
|
|
11841
|
-
{
|
|
11842
|
-
className: cn(
|
|
11843
|
-
"grid gap-[.5rem] grid-rows-[auto_1fr]",
|
|
11844
|
-
{
|
|
11845
|
-
"grid-rows-[auto_1fr_auto]": helpText
|
|
11846
|
-
},
|
|
11847
|
-
className
|
|
11848
|
-
),
|
|
11849
|
-
children: [
|
|
11850
|
-
label && /* @__PURE__ */ jsx("label", { className: cn("text-[0.8125rem] text-icon3 flex justify-between items-center"), children: label }),
|
|
11851
|
-
/* @__PURE__ */ jsx(
|
|
11852
|
-
"textarea",
|
|
11853
|
-
{
|
|
11854
|
-
className: cn(
|
|
11855
|
-
"flex w-full items-center leading-[1.6] text-[0.875rem] text-[rgba(255,255,255,0.7)] border border-[rgba(255,255,255,0.15)] rounded-lg bg-transparent py-[0.5rem] px-[0.75rem] min-h-[6rem]",
|
|
11856
|
-
"focus:outline-none focus:shadow-[inset_0_0_0_1px_#18fb6f]",
|
|
11857
|
-
{ "cursor-not-allowed opacity-50": disabled }
|
|
11858
|
-
),
|
|
11859
|
-
"data-testid": testId,
|
|
11860
|
-
...props,
|
|
11861
|
-
children: value
|
|
11862
|
-
}
|
|
11863
|
-
),
|
|
11864
|
-
helpText && /* @__PURE__ */ jsx("p", { className: "text-icon3 text-[0.75rem]", children: helpText })
|
|
11865
|
-
]
|
|
11866
|
-
}
|
|
11867
|
-
);
|
|
11868
|
-
}
|
|
11869
|
-
|
|
11870
|
-
const Button = React__default.forwardRef(
|
|
11871
|
-
({ className, variant = "outline", ...props }, ref) => {
|
|
11872
|
-
return /* @__PURE__ */ jsx(
|
|
11873
|
-
"button",
|
|
11874
|
-
{
|
|
11875
|
-
ref,
|
|
11876
|
-
className: cn(
|
|
11877
|
-
"text-[.875rem] inline-flex items-center justify-center rounded-lg px-[1rem] gap-[.75rem] leading-0 border bg-transparent text-[rgba(255,255,255,0.7)] whitespace-nowrap",
|
|
11878
|
-
"[&:not(:disabled):hover]:border-[rgba(255,255,255,0.25)] [&:not(:disabled):hover]:text-[rgba(255,255,255,0.9)]",
|
|
11879
|
-
"[&>svg]:w-[1em] [&>svg]:h-[1em] [&>svg]:mx-[-0.3em] [&>svg]:opacity-70 [&>svg]:shrink-0",
|
|
11880
|
-
"focus:outline-none focus:shadow-[inset_0_0_0_1px_rgba(24,251,111,0.75)]",
|
|
11881
|
-
className,
|
|
11882
|
-
{
|
|
11883
|
-
"cursor-not-allowed opacity-50": props.disabled,
|
|
11884
|
-
"bg-ui-primaryBtnBg text-ui-primaryBtnText hover:bg-surface6 leading-[0] font-semibold": variant === "primary",
|
|
11885
|
-
"min-h-[2rem]": variant === "ghost",
|
|
11886
|
-
"min-h-[2.5rem]": variant !== "ghost",
|
|
11887
|
-
"border-[rgba(255,255,255,0.15)]": variant === "outline"
|
|
11888
|
-
}
|
|
11889
|
-
),
|
|
11890
|
-
...props
|
|
11891
|
-
}
|
|
11892
|
-
);
|
|
11893
|
-
}
|
|
11894
|
-
);
|
|
11895
|
-
Button.displayName = "Button";
|
|
11896
|
-
|
|
11897
|
-
function FormActions({
|
|
11898
|
-
children,
|
|
11899
|
-
onSubmit,
|
|
11900
|
-
onCancel,
|
|
11901
|
-
className,
|
|
11902
|
-
submitLabel,
|
|
11903
|
-
cancelLabel,
|
|
11904
|
-
isSubmitting,
|
|
11905
|
-
variant = "toLeft"
|
|
11906
|
-
}) {
|
|
11907
|
-
if (!children && (!onSubmit || !onCancel)) {
|
|
11908
|
-
console.warn("FormActions requires either children or onSubmit and onCancel props");
|
|
11909
|
-
return null;
|
|
11910
|
-
}
|
|
11911
|
-
return /* @__PURE__ */ jsx(
|
|
11912
|
-
"div",
|
|
11913
|
-
{
|
|
11914
|
-
className: cn(
|
|
11915
|
-
"flex gap-[1rem] items-center justify-start",
|
|
11916
|
-
{ "justify-end": variant === "toRight", "grid w-full grid-cols-[1fr_auto]": variant === "stretch" },
|
|
11917
|
-
className
|
|
11918
|
-
),
|
|
11919
|
-
children: children ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11920
|
-
/* @__PURE__ */ jsx(Button, { onClick: onSubmit, className: "min-w-[12rem]", disabled: isSubmitting, variant: "primary", children: submitLabel || "Submit" }),
|
|
11921
|
-
/* @__PURE__ */ jsx(Button, { onClick: onCancel, children: cancelLabel || "Cancel" })
|
|
11922
|
-
] })
|
|
11923
|
-
}
|
|
11924
|
-
);
|
|
11925
|
-
}
|
|
11926
|
-
|
|
11927
12005
|
function SelectField({
|
|
11928
12006
|
name,
|
|
11929
12007
|
value,
|
|
@@ -11972,158 +12050,6 @@ function SelectField({
|
|
|
11972
12050
|
);
|
|
11973
12051
|
}
|
|
11974
12052
|
|
|
11975
|
-
function SliderField({
|
|
11976
|
-
name,
|
|
11977
|
-
value,
|
|
11978
|
-
label,
|
|
11979
|
-
className,
|
|
11980
|
-
testId,
|
|
11981
|
-
required,
|
|
11982
|
-
disabled,
|
|
11983
|
-
helpMsg,
|
|
11984
|
-
errorMsg,
|
|
11985
|
-
onChange,
|
|
11986
|
-
...props
|
|
11987
|
-
}) {
|
|
11988
|
-
return /* @__PURE__ */ jsxs(
|
|
11989
|
-
"div",
|
|
11990
|
-
{
|
|
11991
|
-
className: cn(
|
|
11992
|
-
"grid gap-[.5rem] grid-rows-[auto_1fr]",
|
|
11993
|
-
{
|
|
11994
|
-
"grid-rows-[auto_1fr_auto]": helpMsg
|
|
11995
|
-
},
|
|
11996
|
-
className
|
|
11997
|
-
),
|
|
11998
|
-
children: [
|
|
11999
|
-
/* @__PURE__ */ jsxs("label", { className: cn("text-[0.8125rem] text-icon3 flex justify-between items-center"), children: [
|
|
12000
|
-
label,
|
|
12001
|
-
required && /* @__PURE__ */ jsx("i", { className: "text-icon2", children: "(required)" })
|
|
12002
|
-
] }),
|
|
12003
|
-
/* @__PURE__ */ jsxs("div", { className: cn("grid w-full items-center gap-[1rem] grid-cols-[1fr_auto]"), children: [
|
|
12004
|
-
/* @__PURE__ */ jsxs(
|
|
12005
|
-
SliderPrimitive.Root,
|
|
12006
|
-
{
|
|
12007
|
-
name,
|
|
12008
|
-
className: cn("relative flex w-full touch-none select-none items-center ", className),
|
|
12009
|
-
value,
|
|
12010
|
-
disabled,
|
|
12011
|
-
...props,
|
|
12012
|
-
children: [
|
|
12013
|
-
/* @__PURE__ */ jsx(SliderPrimitive.Track, { className: "relative h-[4px] w-full grow overflow-hidden rounded-full bg-gray-600", children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "absolute h-full bg-gray-400" }) }),
|
|
12014
|
-
/* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "block h-4 w-4 rounded-full bg-gray-400 shadow transition-colors focus:outline-none focus:bg-[#18fb6f] disabled:pointer-events-none disabled:opacity-50" })
|
|
12015
|
-
]
|
|
12016
|
-
}
|
|
12017
|
-
),
|
|
12018
|
-
/* @__PURE__ */ jsx("span", { className: "text-icon4 text-[0.875rem] flex justify-end", children: value })
|
|
12019
|
-
] }),
|
|
12020
|
-
helpMsg && /* @__PURE__ */ jsx("p", { className: "text-icon3 text-[0.75rem]", children: helpMsg }),
|
|
12021
|
-
errorMsg && /* @__PURE__ */ jsxs(
|
|
12022
|
-
"p",
|
|
12023
|
-
{
|
|
12024
|
-
className: cn(
|
|
12025
|
-
"text-[0.75rem] text-red-500 flex items-center gap-[.5rem]",
|
|
12026
|
-
"[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-70"
|
|
12027
|
-
),
|
|
12028
|
-
children: [
|
|
12029
|
-
/* @__PURE__ */ jsx(TriangleAlertIcon, {}),
|
|
12030
|
-
" ",
|
|
12031
|
-
errorMsg
|
|
12032
|
-
]
|
|
12033
|
-
}
|
|
12034
|
-
)
|
|
12035
|
-
]
|
|
12036
|
-
}
|
|
12037
|
-
);
|
|
12038
|
-
}
|
|
12039
|
-
|
|
12040
|
-
function RadioGroupField({
|
|
12041
|
-
name,
|
|
12042
|
-
value,
|
|
12043
|
-
label,
|
|
12044
|
-
className,
|
|
12045
|
-
testId,
|
|
12046
|
-
required,
|
|
12047
|
-
disabled,
|
|
12048
|
-
helpMsg,
|
|
12049
|
-
errorMsg,
|
|
12050
|
-
onChange,
|
|
12051
|
-
options = [],
|
|
12052
|
-
layout = "vertical",
|
|
12053
|
-
onValueChange,
|
|
12054
|
-
...props
|
|
12055
|
-
}) {
|
|
12056
|
-
const Wrapper = layout === "horizontal" ? "div" : "fieldset";
|
|
12057
|
-
return /* @__PURE__ */ jsxs(
|
|
12058
|
-
Wrapper,
|
|
12059
|
-
{
|
|
12060
|
-
className: cn(
|
|
12061
|
-
"w-full",
|
|
12062
|
-
{
|
|
12063
|
-
"flex items-center gap-[2rem]": layout === "horizontal"
|
|
12064
|
-
},
|
|
12065
|
-
className
|
|
12066
|
-
),
|
|
12067
|
-
role: layout === "horizontal" ? "radiogroup" : void 0,
|
|
12068
|
-
"aria-labelledby": layout === "horizontal" ? void 0 : `${name}-legend`,
|
|
12069
|
-
children: [
|
|
12070
|
-
/* @__PURE__ */ jsx("legend", { id: `${name}-legend`, className: cn("text-[0.8125rem] text-icon3"), children: label }),
|
|
12071
|
-
/* @__PURE__ */ jsxs(
|
|
12072
|
-
"div",
|
|
12073
|
-
{
|
|
12074
|
-
className: cn("grid gap-[2.5rem]", {
|
|
12075
|
-
"mt-[0.5rem]": layout === "vertical",
|
|
12076
|
-
"grid-rows-[1fr_auto]": helpMsg
|
|
12077
|
-
}),
|
|
12078
|
-
children: [
|
|
12079
|
-
/* @__PURE__ */ jsx(
|
|
12080
|
-
RadioGroupPrimitive.Root,
|
|
12081
|
-
{
|
|
12082
|
-
value,
|
|
12083
|
-
onValueChange,
|
|
12084
|
-
...props,
|
|
12085
|
-
className: cn({
|
|
12086
|
-
"grid gap-[0.5rem]": layout === "vertical",
|
|
12087
|
-
"flex gap-[1rem]": layout === "horizontal"
|
|
12088
|
-
}),
|
|
12089
|
-
children: options.map((option) => {
|
|
12090
|
-
return /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-[0.5rem] text-[0.875rem] text-icon4 ", children: [
|
|
12091
|
-
/* @__PURE__ */ jsx(
|
|
12092
|
-
RadioGroupPrimitive.Item,
|
|
12093
|
-
{
|
|
12094
|
-
className: "aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 ",
|
|
12095
|
-
value: option.value,
|
|
12096
|
-
children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) })
|
|
12097
|
-
}
|
|
12098
|
-
),
|
|
12099
|
-
option.label
|
|
12100
|
-
] }, option.value);
|
|
12101
|
-
})
|
|
12102
|
-
}
|
|
12103
|
-
),
|
|
12104
|
-
helpMsg && /* @__PURE__ */ jsx("p", { className: "text-icon3 text-[0.75rem]", children: helpMsg }),
|
|
12105
|
-
errorMsg && /* @__PURE__ */ jsxs(
|
|
12106
|
-
"p",
|
|
12107
|
-
{
|
|
12108
|
-
className: cn(
|
|
12109
|
-
"text-[0.75rem] text-red-500 flex items-center gap-[.5rem]",
|
|
12110
|
-
"[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-70"
|
|
12111
|
-
),
|
|
12112
|
-
children: [
|
|
12113
|
-
/* @__PURE__ */ jsx(TriangleAlertIcon, {}),
|
|
12114
|
-
" ",
|
|
12115
|
-
errorMsg
|
|
12116
|
-
]
|
|
12117
|
-
}
|
|
12118
|
-
)
|
|
12119
|
-
]
|
|
12120
|
-
}
|
|
12121
|
-
)
|
|
12122
|
-
]
|
|
12123
|
-
}
|
|
12124
|
-
);
|
|
12125
|
-
}
|
|
12126
|
-
|
|
12127
12053
|
function KeyValueList({ data, LinkComponent, className, labelsAreHidden, isLoading }) {
|
|
12128
12054
|
const { Link } = useLinkComponent();
|
|
12129
12055
|
const LabelWrapper = ({ children }) => {
|
|
@@ -12483,6 +12409,33 @@ function SideDialogRoot({
|
|
|
12483
12409
|
] }) });
|
|
12484
12410
|
}
|
|
12485
12411
|
|
|
12412
|
+
const Button = React__default.forwardRef(
|
|
12413
|
+
({ className, variant = "outline", ...props }, ref) => {
|
|
12414
|
+
return /* @__PURE__ */ jsx(
|
|
12415
|
+
"button",
|
|
12416
|
+
{
|
|
12417
|
+
ref,
|
|
12418
|
+
className: cn(
|
|
12419
|
+
"text-[.875rem] inline-flex items-center justify-center rounded-lg px-[1rem] gap-[.75rem] leading-0 border bg-transparent text-[rgba(255,255,255,0.7)] whitespace-nowrap",
|
|
12420
|
+
"[&:not(:disabled):hover]:border-[rgba(255,255,255,0.25)] [&:not(:disabled):hover]:text-[rgba(255,255,255,0.9)]",
|
|
12421
|
+
"[&>svg]:w-[1em] [&>svg]:h-[1em] [&>svg]:mx-[-0.3em] [&>svg]:opacity-70 [&>svg]:shrink-0",
|
|
12422
|
+
"focus:outline-none focus:shadow-[inset_0_0_0_1px_rgba(24,251,111,0.75)]",
|
|
12423
|
+
className,
|
|
12424
|
+
{
|
|
12425
|
+
"cursor-not-allowed opacity-50": props.disabled,
|
|
12426
|
+
"bg-ui-primaryBtnBg text-ui-primaryBtnText hover:bg-surface6 leading-[0] font-semibold": variant === "primary",
|
|
12427
|
+
"min-h-[2rem]": variant === "ghost",
|
|
12428
|
+
"min-h-[2.5rem]": variant !== "ghost",
|
|
12429
|
+
"border-[rgba(255,255,255,0.15)]": variant === "outline"
|
|
12430
|
+
}
|
|
12431
|
+
),
|
|
12432
|
+
...props
|
|
12433
|
+
}
|
|
12434
|
+
);
|
|
12435
|
+
}
|
|
12436
|
+
);
|
|
12437
|
+
Button.displayName = "Button";
|
|
12438
|
+
|
|
12486
12439
|
function MainContentLayout({
|
|
12487
12440
|
children,
|
|
12488
12441
|
className,
|
|
@@ -12614,7 +12567,7 @@ function SideDialogCodeSection({ codeStr = "", title, icon, simplified = false }
|
|
|
12614
12567
|
hasMultilineText && /* @__PURE__ */ jsx(Button, { variant: "ghost", onClick: () => setShowAsMultilineText(!showAsMultilineText), children: showAsMultilineText ? /* @__PURE__ */ jsx(AlignLeftIcon, {}) : /* @__PURE__ */ jsx(AlignJustifyIcon, {}) })
|
|
12615
12568
|
] })
|
|
12616
12569
|
] }),
|
|
12617
|
-
codeStr && /* @__PURE__ */ jsx("div", { className: "bg-black/20 p-[1rem] overflow-hidden rounded-xl border border-white/10 text-icon4 text-[0.875rem] break-all", children: simplified ? /* @__PURE__ */ jsx("div", { className: "text-icon4 font-mono break-all px-[0.5rem]", children: /* @__PURE__ */ jsx("pre", { className: "text-wrap", children: codeStr }) }) : /* @__PURE__ */ jsx(CodeMirror, { extensions: [json(), EditorView.lineWrapping], theme, value: finalCodeStr }) })
|
|
12570
|
+
codeStr && /* @__PURE__ */ jsx("div", { className: "bg-black/20 p-[1rem] overflow-hidden rounded-xl border border-white/10 text-icon4 text-[0.875rem] break-all", children: simplified ? /* @__PURE__ */ jsx("div", { className: "text-icon4 font-mono break-all px-[0.5rem]", children: /* @__PURE__ */ jsx("pre", { className: "text-wrap", children: codeStr }) }) : /* @__PURE__ */ jsx(CodeMirror, { extensions: [json(), EditorView$1.lineWrapping], theme, value: finalCodeStr }) })
|
|
12618
12571
|
] });
|
|
12619
12572
|
}
|
|
12620
12573
|
function containsInnerNewline(obj) {
|
|
@@ -12711,39 +12664,6 @@ const SideDialog = Object.assign(SideDialogRoot, {
|
|
|
12711
12664
|
Nav: SideDialogNav
|
|
12712
12665
|
});
|
|
12713
12666
|
|
|
12714
|
-
function EntityMainHeader({
|
|
12715
|
-
title,
|
|
12716
|
-
description,
|
|
12717
|
-
icon,
|
|
12718
|
-
children,
|
|
12719
|
-
isLoading,
|
|
12720
|
-
className,
|
|
12721
|
-
placement = "page"
|
|
12722
|
-
}) {
|
|
12723
|
-
return /* @__PURE__ */ jsxs(
|
|
12724
|
-
"header",
|
|
12725
|
-
{
|
|
12726
|
-
className: cn(
|
|
12727
|
-
"grid gap-[.5rem]",
|
|
12728
|
-
"[&>h1]:text-icon6 [&>h1]:text-[1.25rem] [&>h1]:font-normal [&>h1]:flex [&>h1]:items-center [&>h1]:gap-[0.5rem]",
|
|
12729
|
-
"[&_svg]:w-[1.4rem] [&_svg]:h-[1.4rem] [&_svg]:text-icon3",
|
|
12730
|
-
"[&>p]:text-icon4 [&>p]:text-[0.875rem] [&>p]:m-0",
|
|
12731
|
-
{ "pt-[2rem] pb-[2rem]": placement === "page" },
|
|
12732
|
-
{ "pt-[1.5em] pb-[1rem]": placement === "sidebar" },
|
|
12733
|
-
className
|
|
12734
|
-
),
|
|
12735
|
-
children: [
|
|
12736
|
-
/* @__PURE__ */ jsxs("h1", { children: [
|
|
12737
|
-
icon && icon,
|
|
12738
|
-
" ",
|
|
12739
|
-
title
|
|
12740
|
-
] }),
|
|
12741
|
-
description && /* @__PURE__ */ jsx("p", { children: description })
|
|
12742
|
-
]
|
|
12743
|
-
}
|
|
12744
|
-
);
|
|
12745
|
-
}
|
|
12746
|
-
|
|
12747
12667
|
function PageHeader({ title, description, icon, className }) {
|
|
12748
12668
|
const titleIsLoading = title === "loading";
|
|
12749
12669
|
const descriptionIsLoading = description === "loading";
|
|
@@ -13187,11 +13107,23 @@ function MainSidebarNavSeparator({ className }) {
|
|
|
13187
13107
|
function MainSidebarRoot({ children, className }) {
|
|
13188
13108
|
const { state, toggleSidebar } = useMainSidebar();
|
|
13189
13109
|
const isCollapsed = state === "collapsed";
|
|
13110
|
+
useEffect(() => {
|
|
13111
|
+
const handleKeyDown = (event) => {
|
|
13112
|
+
if (event.ctrlKey && event.key === "b") {
|
|
13113
|
+
event.preventDefault();
|
|
13114
|
+
toggleSidebar();
|
|
13115
|
+
}
|
|
13116
|
+
};
|
|
13117
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
13118
|
+
return () => {
|
|
13119
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
13120
|
+
};
|
|
13121
|
+
}, [toggleSidebar]);
|
|
13190
13122
|
return /* @__PURE__ */ jsxs(
|
|
13191
13123
|
"div",
|
|
13192
13124
|
{
|
|
13193
13125
|
className: cn(
|
|
13194
|
-
"flex flex-col h-full px-[1rem]
|
|
13126
|
+
"flex flex-col h-full px-[1rem] relative overflow-y-auto",
|
|
13195
13127
|
{
|
|
13196
13128
|
"lg:min-w-[13rem] xl:min-w-[14rem] 2xl:min-w-[15rem] 3xl:min-w-[16rem] 4xl:min-w-[17rem]": !isCollapsed
|
|
13197
13129
|
},
|
|
@@ -13199,30 +13131,41 @@ function MainSidebarRoot({ children, className }) {
|
|
|
13199
13131
|
),
|
|
13200
13132
|
children: [
|
|
13201
13133
|
children,
|
|
13202
|
-
/* @__PURE__ */
|
|
13203
|
-
|
|
13204
|
-
|
|
13205
|
-
|
|
13206
|
-
|
|
13207
|
-
className: cn(
|
|
13208
|
-
"inline-flex w-auto items-center text-icon3 h-[2rem] px-[0.75rem] rounded-md",
|
|
13209
|
-
"hover:bg-surface4",
|
|
13210
|
-
"[&_svg]:w-[1rem] [&_svg]:h-[1rem] [&_svg]:text-icon3",
|
|
13211
|
-
{
|
|
13212
|
-
"ml-auto": !isCollapsed
|
|
13213
|
-
}
|
|
13214
|
-
),
|
|
13215
|
-
"aria-label": "Toggle sidebar",
|
|
13216
|
-
children: /* @__PURE__ */ jsx(
|
|
13217
|
-
PanelRightIcon,
|
|
13134
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-surface1 grid sticky bottom-0 pb-[.75rem] ", children: [
|
|
13135
|
+
/* @__PURE__ */ jsx(MainSidebarNavSeparator, {}),
|
|
13136
|
+
/* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
13137
|
+
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
13138
|
+
"button",
|
|
13218
13139
|
{
|
|
13219
|
-
|
|
13220
|
-
|
|
13221
|
-
|
|
13140
|
+
onClick: toggleSidebar,
|
|
13141
|
+
className: cn(
|
|
13142
|
+
"inline-flex w-auto items-center text-icon3 h-[2rem] px-[0.75rem] rounded-md ml-auto",
|
|
13143
|
+
"hover:bg-surface4",
|
|
13144
|
+
"[&_svg]:w-[1rem] [&_svg]:h-[1rem] [&_svg]:text-icon3",
|
|
13145
|
+
{
|
|
13146
|
+
"ml-auto": !isCollapsed
|
|
13147
|
+
}
|
|
13148
|
+
),
|
|
13149
|
+
"aria-label": "Toggle sidebar",
|
|
13150
|
+
children: /* @__PURE__ */ jsx(
|
|
13151
|
+
PanelRightIcon,
|
|
13152
|
+
{
|
|
13153
|
+
className: cn({
|
|
13154
|
+
"rotate-180": isCollapsed
|
|
13155
|
+
})
|
|
13156
|
+
}
|
|
13157
|
+
)
|
|
13222
13158
|
}
|
|
13223
|
-
)
|
|
13224
|
-
|
|
13225
|
-
|
|
13159
|
+
) }),
|
|
13160
|
+
/* @__PURE__ */ jsxs(TooltipContent, { children: [
|
|
13161
|
+
"Toggle Sidebar",
|
|
13162
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 [&>svg]:w-[1em] [&>svg]:h-[1em]", children: [
|
|
13163
|
+
/* @__PURE__ */ jsx(KeyboardIcon, {}),
|
|
13164
|
+
" Ctrl+B"
|
|
13165
|
+
] })
|
|
13166
|
+
] })
|
|
13167
|
+
] })
|
|
13168
|
+
] }),
|
|
13226
13169
|
/* @__PURE__ */ jsx(
|
|
13227
13170
|
"button",
|
|
13228
13171
|
{
|
|
@@ -13626,31 +13569,6 @@ function ScoresTools({ onEntityChange, onReset, selectedEntity, entityOptions, i
|
|
|
13626
13569
|
] });
|
|
13627
13570
|
}
|
|
13628
13571
|
|
|
13629
|
-
const useScoresByEntityId = (entityId, entityType, page = 0) => {
|
|
13630
|
-
const client = useMastraClient();
|
|
13631
|
-
const [scores, setScores] = useState(null);
|
|
13632
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
13633
|
-
useEffect(() => {
|
|
13634
|
-
const fetchScores = async () => {
|
|
13635
|
-
setIsLoading(true);
|
|
13636
|
-
try {
|
|
13637
|
-
const res = await client.listScoresByEntityId({
|
|
13638
|
-
entityId,
|
|
13639
|
-
entityType,
|
|
13640
|
-
page: page || 0,
|
|
13641
|
-
perPage: 10
|
|
13642
|
-
});
|
|
13643
|
-
setScores(res);
|
|
13644
|
-
setIsLoading(false);
|
|
13645
|
-
} catch (error) {
|
|
13646
|
-
setScores(null);
|
|
13647
|
-
setIsLoading(false);
|
|
13648
|
-
}
|
|
13649
|
-
};
|
|
13650
|
-
fetchScores();
|
|
13651
|
-
}, [entityId, entityType, page]);
|
|
13652
|
-
return { scores, isLoading };
|
|
13653
|
-
};
|
|
13654
13572
|
const useScoresByScorerId = ({ scorerId, page = 0, entityId, entityType }) => {
|
|
13655
13573
|
const client = useMastraClient();
|
|
13656
13574
|
return useQuery({
|
|
@@ -13835,6 +13753,20 @@ const useTraceSpanScores = ({ traceId = "", spanId = "", page }) => {
|
|
|
13835
13753
|
});
|
|
13836
13754
|
};
|
|
13837
13755
|
|
|
13756
|
+
const ModelResetContext = createContext(null);
|
|
13757
|
+
function useModelReset() {
|
|
13758
|
+
const context = useContext(ModelResetContext);
|
|
13759
|
+
if (!context) {
|
|
13760
|
+
return {
|
|
13761
|
+
registerResetFn: () => {
|
|
13762
|
+
},
|
|
13763
|
+
triggerReset: () => {
|
|
13764
|
+
}
|
|
13765
|
+
};
|
|
13766
|
+
}
|
|
13767
|
+
return context;
|
|
13768
|
+
}
|
|
13769
|
+
|
|
13838
13770
|
const useAgentsModelProviders = () => {
|
|
13839
13771
|
const client = useMastraClient();
|
|
13840
13772
|
return useQuery({
|
|
@@ -14521,7 +14453,7 @@ const PromptEnhancer = ({ agentId }) => {
|
|
|
14521
14453
|
{
|
|
14522
14454
|
value: prompt,
|
|
14523
14455
|
editable: true,
|
|
14524
|
-
extensions: [markdown({ base: markdownLanguage, codeLanguages: languages }), EditorView.lineWrapping],
|
|
14456
|
+
extensions: [markdown({ base: markdownLanguage, codeLanguages: languages }), EditorView$1.lineWrapping],
|
|
14525
14457
|
onChange: setPrompt,
|
|
14526
14458
|
theme: githubDarkInit({
|
|
14527
14459
|
settings: {
|
|
@@ -18418,89 +18350,6 @@ const SpanScoring = ({ traceId, spanId, entityType }) => {
|
|
|
18418
18350
|
] });
|
|
18419
18351
|
};
|
|
18420
18352
|
|
|
18421
|
-
const useResizeColumn = ({
|
|
18422
|
-
defaultWidth,
|
|
18423
|
-
minimumWidth,
|
|
18424
|
-
maximumWidth,
|
|
18425
|
-
setCurrentWidth
|
|
18426
|
-
}) => {
|
|
18427
|
-
const [isDragging, setIsDragging] = useState(false);
|
|
18428
|
-
const [sidebarWidth, setSidebarWidth] = useState(defaultWidth);
|
|
18429
|
-
const containerRef = useRef(null);
|
|
18430
|
-
const dragStartXRef = useRef(0);
|
|
18431
|
-
const initialWidthRef = useRef(0);
|
|
18432
|
-
const handleMouseDown = (e) => {
|
|
18433
|
-
e.preventDefault();
|
|
18434
|
-
setIsDragging(true);
|
|
18435
|
-
dragStartXRef.current = e.clientX;
|
|
18436
|
-
initialWidthRef.current = sidebarWidth;
|
|
18437
|
-
};
|
|
18438
|
-
useEffect(() => {
|
|
18439
|
-
setSidebarWidth(defaultWidth);
|
|
18440
|
-
setCurrentWidth?.(defaultWidth);
|
|
18441
|
-
}, [defaultWidth]);
|
|
18442
|
-
useEffect(() => {
|
|
18443
|
-
const handleMouseMove = (e) => {
|
|
18444
|
-
if (!isDragging || !containerRef.current) return;
|
|
18445
|
-
const containerWidth = containerRef.current.offsetWidth;
|
|
18446
|
-
const deltaX = dragStartXRef.current - e.clientX;
|
|
18447
|
-
const deltaPercentage = deltaX / containerWidth * 100;
|
|
18448
|
-
const newWidth = Math.min(Math.max(initialWidthRef.current + deltaPercentage, minimumWidth), maximumWidth);
|
|
18449
|
-
setSidebarWidth(newWidth);
|
|
18450
|
-
setCurrentWidth?.(newWidth);
|
|
18451
|
-
};
|
|
18452
|
-
const handleMouseUp = () => {
|
|
18453
|
-
setIsDragging(false);
|
|
18454
|
-
};
|
|
18455
|
-
if (isDragging) {
|
|
18456
|
-
window.addEventListener("mousemove", handleMouseMove);
|
|
18457
|
-
window.addEventListener("mouseup", handleMouseUp);
|
|
18458
|
-
}
|
|
18459
|
-
return () => {
|
|
18460
|
-
window.removeEventListener("mousemove", handleMouseMove);
|
|
18461
|
-
window.removeEventListener("mouseup", handleMouseUp);
|
|
18462
|
-
};
|
|
18463
|
-
}, [isDragging]);
|
|
18464
|
-
return { sidebarWidth, isDragging, handleMouseDown, containerRef };
|
|
18465
|
-
};
|
|
18466
|
-
|
|
18467
|
-
const MastraResizablePanel = ({
|
|
18468
|
-
children,
|
|
18469
|
-
defaultWidth,
|
|
18470
|
-
minimumWidth,
|
|
18471
|
-
maximumWidth,
|
|
18472
|
-
className,
|
|
18473
|
-
disabled = false,
|
|
18474
|
-
setCurrentWidth,
|
|
18475
|
-
dividerPosition = "left"
|
|
18476
|
-
}) => {
|
|
18477
|
-
const { sidebarWidth, isDragging, handleMouseDown, containerRef } = useResizeColumn({
|
|
18478
|
-
defaultWidth: disabled ? 100 : defaultWidth,
|
|
18479
|
-
minimumWidth,
|
|
18480
|
-
maximumWidth,
|
|
18481
|
-
setCurrentWidth
|
|
18482
|
-
});
|
|
18483
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("w-full h-full relative", className), ref: containerRef, style: { width: `${sidebarWidth}%` }, children: [
|
|
18484
|
-
!disabled && dividerPosition === "left" ? /* @__PURE__ */ jsx(
|
|
18485
|
-
"div",
|
|
18486
|
-
{
|
|
18487
|
-
className: `w-px bg-border1 h-full cursor-col-resize hover:w-1.5 hover:bg-mastra-border-2 hover:bg-[#424242] active:bg-mastra-border-3 active:bg-[#3e3e3e] transition-colors absolute inset-y-0 z-10
|
|
18488
|
-
${isDragging ? "bg-border2 w-1.5 cursor- col-resize" : ""}`,
|
|
18489
|
-
onMouseDown: handleMouseDown
|
|
18490
|
-
}
|
|
18491
|
-
) : null,
|
|
18492
|
-
children,
|
|
18493
|
-
!disabled && dividerPosition === "right" ? /* @__PURE__ */ jsx(
|
|
18494
|
-
"div",
|
|
18495
|
-
{
|
|
18496
|
-
className: `w-px bg-border1 h-full cursor-col-resize hover:w-1.5 hover:bg-border2 active:bg-border3 transition-colors absolute inset-y-0 z-10
|
|
18497
|
-
${isDragging ? "bg-border2 w-1.5 cursor- col-resize" : ""}`,
|
|
18498
|
-
onMouseDown: handleMouseDown
|
|
18499
|
-
}
|
|
18500
|
-
) : null
|
|
18501
|
-
] });
|
|
18502
|
-
};
|
|
18503
|
-
|
|
18504
18353
|
const Breadcrumb = ({ children, label }) => {
|
|
18505
18354
|
return /* @__PURE__ */ jsx("nav", { "aria-label": label, children: /* @__PURE__ */ jsx("ol", { className: "gap-sm flex items-center", children }) });
|
|
18506
18355
|
};
|
|
@@ -18590,113 +18439,6 @@ const EntityContent = ({ children, className }) => {
|
|
|
18590
18439
|
return /* @__PURE__ */ jsx("div", { className, children });
|
|
18591
18440
|
};
|
|
18592
18441
|
|
|
18593
|
-
function usePolling({
|
|
18594
|
-
fetchFn,
|
|
18595
|
-
interval = 3e3,
|
|
18596
|
-
enabled = false,
|
|
18597
|
-
onSuccess,
|
|
18598
|
-
onError,
|
|
18599
|
-
shouldContinue = () => true,
|
|
18600
|
-
restartPolling = false
|
|
18601
|
-
}) {
|
|
18602
|
-
const [isPolling, setIsPolling] = useState(enabled);
|
|
18603
|
-
const [error, setError] = useState(null);
|
|
18604
|
-
const [data, setData] = useState(null);
|
|
18605
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
18606
|
-
const [firstCallLoading, setFirstCallLoading] = useState(false);
|
|
18607
|
-
const timeoutRef = useRef(null);
|
|
18608
|
-
const mountedRef = useRef(true);
|
|
18609
|
-
const [restart, setRestart] = useState(restartPolling);
|
|
18610
|
-
const cleanup = useCallback(() => {
|
|
18611
|
-
console.log("cleanup");
|
|
18612
|
-
if (timeoutRef.current) {
|
|
18613
|
-
clearTimeout(timeoutRef.current);
|
|
18614
|
-
timeoutRef.current = null;
|
|
18615
|
-
}
|
|
18616
|
-
}, []);
|
|
18617
|
-
const stopPolling = useCallback(() => {
|
|
18618
|
-
console.log("stopPolling");
|
|
18619
|
-
setIsPolling(false);
|
|
18620
|
-
cleanup();
|
|
18621
|
-
}, [cleanup]);
|
|
18622
|
-
const startPolling = useCallback(() => {
|
|
18623
|
-
console.log("startPolling");
|
|
18624
|
-
setIsPolling(true);
|
|
18625
|
-
setError(null);
|
|
18626
|
-
}, []);
|
|
18627
|
-
const executePoll = useCallback(
|
|
18628
|
-
async (refetch2 = true) => {
|
|
18629
|
-
if (!mountedRef.current) return;
|
|
18630
|
-
setIsLoading(true);
|
|
18631
|
-
try {
|
|
18632
|
-
const result = await fetchFn();
|
|
18633
|
-
setData(result);
|
|
18634
|
-
setError(null);
|
|
18635
|
-
onSuccess?.(result);
|
|
18636
|
-
if (shouldContinue(result) && refetch2) {
|
|
18637
|
-
timeoutRef.current = setTimeout(executePoll, interval);
|
|
18638
|
-
} else {
|
|
18639
|
-
stopPolling();
|
|
18640
|
-
}
|
|
18641
|
-
} catch (err) {
|
|
18642
|
-
if (!mountedRef.current) return;
|
|
18643
|
-
setError(err);
|
|
18644
|
-
onError?.(err);
|
|
18645
|
-
stopPolling();
|
|
18646
|
-
} finally {
|
|
18647
|
-
if (mountedRef.current) {
|
|
18648
|
-
setFirstCallLoading(false);
|
|
18649
|
-
setIsLoading(false);
|
|
18650
|
-
}
|
|
18651
|
-
}
|
|
18652
|
-
},
|
|
18653
|
-
[fetchFn, interval, onSuccess, onError, shouldContinue, stopPolling]
|
|
18654
|
-
);
|
|
18655
|
-
const refetch = useCallback(
|
|
18656
|
-
(withPolling = false) => {
|
|
18657
|
-
console.log("refetch", { withPolling });
|
|
18658
|
-
if (withPolling) {
|
|
18659
|
-
setIsPolling(true);
|
|
18660
|
-
} else {
|
|
18661
|
-
executePoll(false);
|
|
18662
|
-
}
|
|
18663
|
-
setError(null);
|
|
18664
|
-
},
|
|
18665
|
-
[executePoll]
|
|
18666
|
-
);
|
|
18667
|
-
useEffect(() => {
|
|
18668
|
-
mountedRef.current = true;
|
|
18669
|
-
if (enabled && isPolling) {
|
|
18670
|
-
executePoll(true);
|
|
18671
|
-
}
|
|
18672
|
-
return () => {
|
|
18673
|
-
console.log("cleanup poll");
|
|
18674
|
-
mountedRef.current = false;
|
|
18675
|
-
cleanup();
|
|
18676
|
-
};
|
|
18677
|
-
}, [enabled, isPolling, executePoll, cleanup]);
|
|
18678
|
-
useEffect(() => {
|
|
18679
|
-
setRestart(restartPolling);
|
|
18680
|
-
}, [restartPolling]);
|
|
18681
|
-
useEffect(() => {
|
|
18682
|
-
if (restart && !isPolling) {
|
|
18683
|
-
setIsPolling(true);
|
|
18684
|
-
executePoll();
|
|
18685
|
-
setRestart(false);
|
|
18686
|
-
}
|
|
18687
|
-
}, [restart]);
|
|
18688
|
-
return {
|
|
18689
|
-
isPolling,
|
|
18690
|
-
isLoading,
|
|
18691
|
-
error,
|
|
18692
|
-
data,
|
|
18693
|
-
startPolling,
|
|
18694
|
-
stopPolling,
|
|
18695
|
-
firstCallLoading,
|
|
18696
|
-
refetch
|
|
18697
|
-
};
|
|
18698
|
-
}
|
|
18699
|
-
|
|
18700
18442
|
const PlaygroundQueryClient = ({ children }) => {
|
|
18701
18443
|
const queryClient = new QueryClient();
|
|
18702
18444
|
return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children });
|
|
@@ -19171,5 +18913,5 @@ function MCPServerCombobox({
|
|
|
19171
18913
|
);
|
|
19172
18914
|
}
|
|
19173
18915
|
|
|
19174
|
-
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,
|
|
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 };
|
|
19175
18917
|
//# sourceMappingURL=index.es.js.map
|