@mastra/playground-ui 7.0.0-beta.0 → 7.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/index.cjs.js +357 -606
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +361 -600
- 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/context/use-current-run.d.ts +2 -0
- 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 +3 -1
- package/dist/src/ds/components/Table/Cells.d.ts +0 -3
- package/dist/src/index.d.ts +1 -2
- package/package.json +12 -10
- 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.cjs.js
CHANGED
|
@@ -26,6 +26,7 @@ const Dagre = require('@dagrejs/dagre');
|
|
|
26
26
|
const prismReactRenderer = require('prism-react-renderer');
|
|
27
27
|
const CollapsiblePrimitive = require('@radix-ui/react-collapsible');
|
|
28
28
|
const ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
|
|
29
|
+
const view = require('@codemirror/view');
|
|
29
30
|
const SliderPrimitive = require('@radix-ui/react-slider');
|
|
30
31
|
const jsonSchemaToZod = require('json-schema-to-zod');
|
|
31
32
|
const superjson = require('superjson');
|
|
@@ -4681,6 +4682,8 @@ function convertWorkflowRunStateToStreamResult(runState) {
|
|
|
4681
4682
|
status: result.status,
|
|
4682
4683
|
output: "output" in result ? result.output : void 0,
|
|
4683
4684
|
payload: "payload" in result ? result.payload : void 0,
|
|
4685
|
+
suspendPayload: "suspendPayload" in result ? result.suspendPayload : void 0,
|
|
4686
|
+
suspendOutput: "suspendOutput" in result ? result.suspendOutput : void 0,
|
|
4684
4687
|
resumePayload: "resumePayload" in result ? result.resumePayload : void 0,
|
|
4685
4688
|
error: "error" in result ? result.error : void 0,
|
|
4686
4689
|
startedAt: "startedAt" in result ? result.startedAt : Date.now(),
|
|
@@ -4759,6 +4762,26 @@ const lodashTitleCase = (str) => {
|
|
|
4759
4762
|
return camelCased.replace(/([A-Z])/g, " $1").replace(/^./, (str2) => str2.toUpperCase()).trim();
|
|
4760
4763
|
};
|
|
4761
4764
|
|
|
4765
|
+
const formatMappingLabel = (stepId, prevStepIds, nextStepIds) => {
|
|
4766
|
+
if (!stepId.startsWith("mapping_")) {
|
|
4767
|
+
return stepId;
|
|
4768
|
+
}
|
|
4769
|
+
const capitalizeWords = (str) => {
|
|
4770
|
+
return str.split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
4771
|
+
};
|
|
4772
|
+
const formatStepName = (id) => {
|
|
4773
|
+
const cleaned = id.replace(/Step$/, "").replace(/[-_]/g, " ").trim();
|
|
4774
|
+
return capitalizeWords(cleaned);
|
|
4775
|
+
};
|
|
4776
|
+
const formatMultipleSteps = (ids, isTarget) => {
|
|
4777
|
+
if (ids.length === 0) return isTarget ? "End" : "Start";
|
|
4778
|
+
if (ids.length === 1) return formatStepName(ids[0]);
|
|
4779
|
+
return `${ids.length} Steps`;
|
|
4780
|
+
};
|
|
4781
|
+
const fromLabel = formatMultipleSteps(prevStepIds, false);
|
|
4782
|
+
const toLabel = formatMultipleSteps(nextStepIds, true);
|
|
4783
|
+
return `${fromLabel} → ${toLabel} Map`;
|
|
4784
|
+
};
|
|
4762
4785
|
const getLayoutedElements = (nodes, edges) => {
|
|
4763
4786
|
const g = new Dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));
|
|
4764
4787
|
g.setGraph({ rankdir: "TB" });
|
|
@@ -4855,12 +4878,15 @@ const getStepNodeAndEdge = ({
|
|
|
4855
4878
|
position: { x: xIndex * 300, y: (yIndex + (condition ? 1 : 0)) * 100 },
|
|
4856
4879
|
type: hasGraph ? "nested-node" : "default-node",
|
|
4857
4880
|
data: {
|
|
4858
|
-
label: stepFlow.step.id,
|
|
4881
|
+
label: formatMappingLabel(stepFlow.step.id, prevStepIds, nextStepIds),
|
|
4882
|
+
stepId: stepFlow.step.id,
|
|
4859
4883
|
description: stepFlow.step.description,
|
|
4860
4884
|
withoutTopHandle: condition ? false : !prevNodeIds.length,
|
|
4861
4885
|
withoutBottomHandle: !nextNodeIds.length,
|
|
4862
4886
|
stepGraph: hasGraph ? stepFlow.step.serializedStepFlow : void 0,
|
|
4863
|
-
mapConfig: stepFlow.step.mapConfig
|
|
4887
|
+
mapConfig: stepFlow.step.mapConfig,
|
|
4888
|
+
canSuspend: stepFlow.step.canSuspend,
|
|
4889
|
+
isForEach: stepFlow.type === "foreach"
|
|
4864
4890
|
}
|
|
4865
4891
|
}
|
|
4866
4892
|
];
|
|
@@ -4978,7 +5004,8 @@ const getStepNodeAndEdge = ({
|
|
|
4978
5004
|
description: _step.description,
|
|
4979
5005
|
withoutTopHandle: !prevNodeIds.length,
|
|
4980
5006
|
withoutBottomHandle: false,
|
|
4981
|
-
stepGraph: hasGraph ? _step.serializedStepFlow : void 0
|
|
5007
|
+
stepGraph: hasGraph ? _step.serializedStepFlow : void 0,
|
|
5008
|
+
canSuspend: _step.canSuspend
|
|
4982
5009
|
}
|
|
4983
5010
|
},
|
|
4984
5011
|
{
|
|
@@ -5040,7 +5067,14 @@ const getStepNodeAndEdge = ({
|
|
|
5040
5067
|
nextStepFlow,
|
|
5041
5068
|
allPrevNodeIds
|
|
5042
5069
|
});
|
|
5043
|
-
|
|
5070
|
+
const markedNodes = _nodes.map((node) => ({
|
|
5071
|
+
...node,
|
|
5072
|
+
data: {
|
|
5073
|
+
...node.data,
|
|
5074
|
+
isParallel: true
|
|
5075
|
+
}
|
|
5076
|
+
}));
|
|
5077
|
+
nodes.push(...markedNodes);
|
|
5044
5078
|
edges.push(..._edges);
|
|
5045
5079
|
nextPrevStepIds.push(..._nextPrevStepIds);
|
|
5046
5080
|
});
|
|
@@ -5156,6 +5190,90 @@ const CollapsibleTrigger = (props) => {
|
|
|
5156
5190
|
};
|
|
5157
5191
|
const CollapsibleContent = CollapsiblePrimitive__namespace.CollapsibleContent;
|
|
5158
5192
|
|
|
5193
|
+
const BADGE_COLORS = {
|
|
5194
|
+
sleep: "#A855F7",
|
|
5195
|
+
// Purple
|
|
5196
|
+
forEach: "#F97316",
|
|
5197
|
+
// Orange
|
|
5198
|
+
map: "#F97316",
|
|
5199
|
+
// Orange
|
|
5200
|
+
parallel: "#3B82F6",
|
|
5201
|
+
// Blue
|
|
5202
|
+
suspend: "#EC4899",
|
|
5203
|
+
// Pink
|
|
5204
|
+
after: "#14B8A6",
|
|
5205
|
+
// Teal
|
|
5206
|
+
workflow: "#8B5CF6",
|
|
5207
|
+
// Purple
|
|
5208
|
+
// Condition colors
|
|
5209
|
+
when: "#ECB047",
|
|
5210
|
+
// Orange
|
|
5211
|
+
dountil: "#8B5CF6",
|
|
5212
|
+
// Purple
|
|
5213
|
+
dowhile: "#06B6D4",
|
|
5214
|
+
// Cyan
|
|
5215
|
+
until: "#F59E0B",
|
|
5216
|
+
// Amber
|
|
5217
|
+
while: "#10B981",
|
|
5218
|
+
// Green
|
|
5219
|
+
if: "#3B82F6",
|
|
5220
|
+
// Blue
|
|
5221
|
+
else: "#6B7280"
|
|
5222
|
+
// Gray
|
|
5223
|
+
};
|
|
5224
|
+
const BADGE_ICONS = {
|
|
5225
|
+
sleep: lucideReact.Timer,
|
|
5226
|
+
sleepUntil: lucideReact.CalendarClock,
|
|
5227
|
+
forEach: lucideReact.List,
|
|
5228
|
+
map: lucideReact.List,
|
|
5229
|
+
parallel: lucideReact.Workflow,
|
|
5230
|
+
suspend: lucideReact.PlayCircle,
|
|
5231
|
+
after: lucideReact.Clock,
|
|
5232
|
+
workflow: lucideReact.Layers,
|
|
5233
|
+
// Condition icons
|
|
5234
|
+
when: lucideReact.Network,
|
|
5235
|
+
dountil: lucideReact.Repeat1,
|
|
5236
|
+
dowhile: lucideReact.Repeat,
|
|
5237
|
+
until: lucideReact.Timer,
|
|
5238
|
+
while: lucideReact.RefreshCw,
|
|
5239
|
+
if: lucideReact.GitBranch,
|
|
5240
|
+
else: lucideReact.CornerDownRight
|
|
5241
|
+
};
|
|
5242
|
+
const getConditionIconAndColor = (type) => {
|
|
5243
|
+
switch (type) {
|
|
5244
|
+
case "when":
|
|
5245
|
+
return { icon: BADGE_ICONS.when, color: BADGE_COLORS.when };
|
|
5246
|
+
case "dountil":
|
|
5247
|
+
return { icon: BADGE_ICONS.dountil, color: BADGE_COLORS.dountil };
|
|
5248
|
+
case "dowhile":
|
|
5249
|
+
return { icon: BADGE_ICONS.dowhile, color: BADGE_COLORS.dowhile };
|
|
5250
|
+
case "until":
|
|
5251
|
+
return { icon: BADGE_ICONS.until, color: BADGE_COLORS.until };
|
|
5252
|
+
case "while":
|
|
5253
|
+
return { icon: BADGE_ICONS.while, color: BADGE_COLORS.while };
|
|
5254
|
+
case "if":
|
|
5255
|
+
return { icon: BADGE_ICONS.if, color: BADGE_COLORS.if };
|
|
5256
|
+
case "else":
|
|
5257
|
+
return { icon: BADGE_ICONS.else, color: BADGE_COLORS.else };
|
|
5258
|
+
default:
|
|
5259
|
+
return { icon: void 0, color: void 0 };
|
|
5260
|
+
}
|
|
5261
|
+
};
|
|
5262
|
+
const getNodeBadgeInfo = (data) => {
|
|
5263
|
+
const isSleepNode = Boolean(data.duration || data.date);
|
|
5264
|
+
const isForEachNode = Boolean(data.isForEach);
|
|
5265
|
+
const isMapNode = Boolean(data.mapConfig && !data.isForEach);
|
|
5266
|
+
const isNestedWorkflow = Boolean(data.stepGraph);
|
|
5267
|
+
const hasSpecialBadge = isSleepNode || data.canSuspend || data.isParallel || isForEachNode || isMapNode || isNestedWorkflow;
|
|
5268
|
+
return {
|
|
5269
|
+
isSleepNode,
|
|
5270
|
+
isForEachNode,
|
|
5271
|
+
isMapNode,
|
|
5272
|
+
isNestedWorkflow,
|
|
5273
|
+
hasSpecialBadge
|
|
5274
|
+
};
|
|
5275
|
+
};
|
|
5276
|
+
|
|
5159
5277
|
const useAutoscroll = (ref, { enabled = true }) => {
|
|
5160
5278
|
const shouldScrollRef = React.useRef(enabled);
|
|
5161
5279
|
React.useEffect(() => {
|
|
@@ -5244,7 +5362,9 @@ const useCurrentRun = () => {
|
|
|
5244
5362
|
status: value.status,
|
|
5245
5363
|
output: "output" in value ? value.output : void 0,
|
|
5246
5364
|
input: value.payload,
|
|
5247
|
-
resumeData: "resumePayload" in value ? value.resumePayload : void 0
|
|
5365
|
+
resumeData: "resumePayload" in value ? value.resumePayload : void 0,
|
|
5366
|
+
suspendOutput: "suspendOutput" in value ? value.suspendOutput : void 0,
|
|
5367
|
+
suspendPayload: "suspendPayload" in value ? value.suspendPayload : void 0
|
|
5248
5368
|
}
|
|
5249
5369
|
};
|
|
5250
5370
|
}, {});
|
|
@@ -5252,8 +5372,8 @@ const useCurrentRun = () => {
|
|
|
5252
5372
|
};
|
|
5253
5373
|
|
|
5254
5374
|
const useCodemirrorTheme$1 = () => {
|
|
5255
|
-
return React.useMemo(
|
|
5256
|
-
|
|
5375
|
+
return React.useMemo(() => {
|
|
5376
|
+
const baseTheme = codemirrorThemeDracula.draculaInit({
|
|
5257
5377
|
settings: {
|
|
5258
5378
|
fontFamily: "var(--geist-mono)",
|
|
5259
5379
|
fontSize: "0.8rem",
|
|
@@ -5263,9 +5383,20 @@ const useCodemirrorTheme$1 = () => {
|
|
|
5263
5383
|
background: "transparent"
|
|
5264
5384
|
},
|
|
5265
5385
|
styles: [{ tag: [highlight$1.tags.className, highlight$1.tags.propertyName] }]
|
|
5266
|
-
})
|
|
5267
|
-
|
|
5268
|
-
|
|
5386
|
+
});
|
|
5387
|
+
const customLineNumberTheme = view.EditorView.theme({
|
|
5388
|
+
".cm-editor": {
|
|
5389
|
+
colorScheme: "dark",
|
|
5390
|
+
// ensures color scheme
|
|
5391
|
+
backgroundColor: "transparent"
|
|
5392
|
+
},
|
|
5393
|
+
".cm-lineNumbers .cm-gutterElement": {
|
|
5394
|
+
color: "#939393"
|
|
5395
|
+
// ← custom line number color
|
|
5396
|
+
}
|
|
5397
|
+
});
|
|
5398
|
+
return [baseTheme, customLineNumberTheme];
|
|
5399
|
+
}, []);
|
|
5269
5400
|
};
|
|
5270
5401
|
const SyntaxHighlighter$1 = ({ data }) => {
|
|
5271
5402
|
const formattedCode = JSON.stringify(data, null, 2);
|
|
@@ -5299,9 +5430,11 @@ const WorkflowStepActionBar = ({
|
|
|
5299
5430
|
input,
|
|
5300
5431
|
output,
|
|
5301
5432
|
resumeData,
|
|
5433
|
+
suspendOutput,
|
|
5302
5434
|
error,
|
|
5303
5435
|
mapConfig,
|
|
5304
5436
|
stepName,
|
|
5437
|
+
stepId,
|
|
5305
5438
|
onShowNestedGraph,
|
|
5306
5439
|
status
|
|
5307
5440
|
}) => {
|
|
@@ -5328,10 +5461,13 @@ const WorkflowStepActionBar = ({
|
|
|
5328
5461
|
mapConfig && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5329
5462
|
/* @__PURE__ */ jsxRuntime.jsx(Button$1, { onClick: () => setIsMapConfigOpen(true), children: "Map config" }),
|
|
5330
5463
|
/* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isMapConfigOpen, onOpenChange: setIsMapConfigOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: dialogContentClass, children: [
|
|
5331
|
-
/* @__PURE__ */ jsxRuntime.
|
|
5332
|
-
|
|
5333
|
-
|
|
5334
|
-
|
|
5464
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { className: dialogTitleClass, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
5465
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
5466
|
+
stepName,
|
|
5467
|
+
" Map Config"
|
|
5468
|
+
] }),
|
|
5469
|
+
stepId && stepId !== stepName && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-icon3 font-normal", children: stepId })
|
|
5470
|
+
] }) }),
|
|
5335
5471
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(CodeDialogContent, { data: mapConfig }) })
|
|
5336
5472
|
] }) })
|
|
5337
5473
|
] }),
|
|
@@ -5355,14 +5491,14 @@ const WorkflowStepActionBar = ({
|
|
|
5355
5491
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(CodeDialogContent, { data: resumeData }) })
|
|
5356
5492
|
] }) })
|
|
5357
5493
|
] }),
|
|
5358
|
-
output && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5494
|
+
(output ?? suspendOutput) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5359
5495
|
/* @__PURE__ */ jsxRuntime.jsx(Button$1, { onClick: () => setIsOutputOpen(true), children: "Output" }),
|
|
5360
5496
|
/* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isOutputOpen, onOpenChange: setIsOutputOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: dialogContentClass, children: [
|
|
5361
5497
|
/* @__PURE__ */ jsxRuntime.jsxs(DialogTitle, { className: dialogTitleClass, children: [
|
|
5362
5498
|
stepName,
|
|
5363
5499
|
" output"
|
|
5364
5500
|
] }),
|
|
5365
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(CodeDialogContent, { data: output }) })
|
|
5501
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(CodeDialogContent, { data: output ?? suspendOutput }) })
|
|
5366
5502
|
] }) })
|
|
5367
5503
|
] }),
|
|
5368
5504
|
error && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -5389,6 +5525,7 @@ function WorkflowConditionNode({ data }) {
|
|
|
5389
5525
|
const { steps } = useCurrentRun();
|
|
5390
5526
|
const previousStep = steps[previousStepId];
|
|
5391
5527
|
const nextStep = steps[nextStepId];
|
|
5528
|
+
const { icon: IconComponent, color } = getConditionIconAndColor(type);
|
|
5392
5529
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5393
5530
|
!withoutTopHandle && /* @__PURE__ */ jsxRuntime.jsx(react$1.Handle, { type: "target", position: react$1.Position.Top, style: { visibility: "hidden" } }),
|
|
5394
5531
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -5415,7 +5552,13 @@ function WorkflowConditionNode({ data }) {
|
|
|
5415
5552
|
},
|
|
5416
5553
|
children: [
|
|
5417
5554
|
/* @__PURE__ */ jsxRuntime.jsxs(CollapsibleTrigger, { className: "flex items-center justify-between w-full px-3 py-2", children: [
|
|
5418
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5555
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5556
|
+
Badge,
|
|
5557
|
+
{
|
|
5558
|
+
icon: IconComponent ? /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "text-current", ...color ? { style: { color } } : {} }) : null,
|
|
5559
|
+
children: type?.toUpperCase()
|
|
5560
|
+
}
|
|
5561
|
+
),
|
|
5419
5562
|
isCollapsible && /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5420
5563
|
lucideReact.ChevronDown,
|
|
5421
5564
|
{
|
|
@@ -5426,6 +5569,21 @@ function WorkflowConditionNode({ data }) {
|
|
|
5426
5569
|
) })
|
|
5427
5570
|
] }),
|
|
5428
5571
|
type === "else" ? null : /* @__PURE__ */ jsxRuntime.jsx(CollapsibleContent, { className: "flex flex-col gap-2 pb-2", children: conditions.map((condition, index) => {
|
|
5572
|
+
const conjType = condition.conj || type;
|
|
5573
|
+
const { icon: ConjIconComponent, color: conjColor } = getConditionIconAndColor(conjType);
|
|
5574
|
+
const conjBadge = index === 0 ? null : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5575
|
+
Badge,
|
|
5576
|
+
{
|
|
5577
|
+
icon: ConjIconComponent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5578
|
+
ConjIconComponent,
|
|
5579
|
+
{
|
|
5580
|
+
className: "text-current",
|
|
5581
|
+
...conjColor ? { style: { color: conjColor } } : {}
|
|
5582
|
+
}
|
|
5583
|
+
) : null,
|
|
5584
|
+
children: condition.conj?.toLocaleUpperCase() || "WHEN"
|
|
5585
|
+
}
|
|
5586
|
+
);
|
|
5429
5587
|
return condition.fnString ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-3", children: [
|
|
5430
5588
|
/* @__PURE__ */ jsxRuntime.jsx(prismReactRenderer.Highlight, { theme: prismReactRenderer.themes.oneDark, code: String(condition.fnString).trim(), language: "javascript", children: ({ className, style, tokens, getLineProps, getTokenProps }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5431
5589
|
"pre",
|
|
@@ -5471,7 +5629,7 @@ function WorkflowConditionNode({ data }) {
|
|
|
5471
5629
|
) })
|
|
5472
5630
|
] }) })
|
|
5473
5631
|
] }, `${condition.fnString}-${index}`) : /* @__PURE__ */ jsxRuntime.jsx(React.Fragment, { children: condition.ref?.step ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
5474
|
-
|
|
5632
|
+
conjBadge,
|
|
5475
5633
|
/* @__PURE__ */ jsxRuntime.jsxs(Text, { size: "xs", className: " text-mastra-el-3 flex-1", children: [
|
|
5476
5634
|
condition.ref.step.id || condition.ref.step,
|
|
5477
5635
|
"'s ",
|
|
@@ -5520,10 +5678,30 @@ const Clock = ({ startedAt, endedAt }) => {
|
|
|
5520
5678
|
};
|
|
5521
5679
|
|
|
5522
5680
|
function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
5523
|
-
const { steps
|
|
5524
|
-
const {
|
|
5525
|
-
|
|
5526
|
-
|
|
5681
|
+
const { steps } = useCurrentRun();
|
|
5682
|
+
const {
|
|
5683
|
+
label,
|
|
5684
|
+
stepId,
|
|
5685
|
+
description,
|
|
5686
|
+
withoutTopHandle,
|
|
5687
|
+
withoutBottomHandle,
|
|
5688
|
+
mapConfig,
|
|
5689
|
+
duration,
|
|
5690
|
+
date,
|
|
5691
|
+
isParallel,
|
|
5692
|
+
canSuspend,
|
|
5693
|
+
isForEach
|
|
5694
|
+
} = data;
|
|
5695
|
+
const stepKey = parentWorkflowName ? `${parentWorkflowName}.${stepId || label}` : stepId || label;
|
|
5696
|
+
const step = steps[stepKey];
|
|
5697
|
+
const { isSleepNode, isForEachNode, isMapNode, hasSpecialBadge } = getNodeBadgeInfo({
|
|
5698
|
+
duration,
|
|
5699
|
+
date,
|
|
5700
|
+
isForEach,
|
|
5701
|
+
mapConfig,
|
|
5702
|
+
canSuspend,
|
|
5703
|
+
isParallel
|
|
5704
|
+
});
|
|
5527
5705
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5528
5706
|
!withoutTopHandle && /* @__PURE__ */ jsxRuntime.jsx(react$1.Handle, { type: "target", position: react$1.Position.Top, style: { visibility: "hidden" } }),
|
|
5529
5707
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -5533,7 +5711,8 @@ function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
|
5533
5711
|
"data-workflow-step-status": step?.status ?? "idle",
|
|
5534
5712
|
"data-testid": "workflow-default-node",
|
|
5535
5713
|
className: cn(
|
|
5536
|
-
"bg-surface3 rounded-lg w-[274px] border-sm border-border1
|
|
5714
|
+
"bg-surface3 rounded-lg w-[274px] border-sm border-border1",
|
|
5715
|
+
hasSpecialBadge ? "pt-0" : "pt-2",
|
|
5537
5716
|
step?.status === "success" && "bg-accent1Darker",
|
|
5538
5717
|
step?.status === "failed" && "bg-accent2Darker",
|
|
5539
5718
|
step?.status === "suspended" && "bg-accent3Darker",
|
|
@@ -5541,6 +5720,19 @@ function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
|
5541
5720
|
step?.status === "running" && "bg-accent6Darker"
|
|
5542
5721
|
),
|
|
5543
5722
|
children: [
|
|
5723
|
+
hasSpecialBadge && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-3 pt-2 pb-1 flex gap-1.5 flex-wrap", children: [
|
|
5724
|
+
isSleepNode && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5725
|
+
Badge,
|
|
5726
|
+
{
|
|
5727
|
+
icon: date ? /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.sleepUntil, { className: "text-current", style: { color: BADGE_COLORS.sleep } }) : /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.sleep, { className: "text-current", style: { color: BADGE_COLORS.sleep } }),
|
|
5728
|
+
children: date ? "SLEEP UNTIL" : "SLEEP"
|
|
5729
|
+
}
|
|
5730
|
+
),
|
|
5731
|
+
canSuspend && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.suspend, { className: "text-current", style: { color: BADGE_COLORS.suspend } }), children: "SUSPEND/RESUME" }),
|
|
5732
|
+
isParallel && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.parallel, { className: "text-current", style: { color: BADGE_COLORS.parallel } }), children: "PARALLEL" }),
|
|
5733
|
+
isForEachNode && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.forEach, { className: "text-current", style: { color: BADGE_COLORS.forEach } }), children: "FOREACH" }),
|
|
5734
|
+
isMapNode && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.map, { className: "text-current", style: { color: BADGE_COLORS.map } }), children: "MAP" })
|
|
5735
|
+
] }),
|
|
5544
5736
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 px-3", !description && "pb-2"), children: [
|
|
5545
5737
|
/* @__PURE__ */ jsxRuntime.jsxs(Icon, { children: [
|
|
5546
5738
|
step?.status === "failed" && /* @__PURE__ */ jsxRuntime.jsx(CrossIcon, { className: "text-accent2" }),
|
|
@@ -5572,9 +5764,11 @@ function WorkflowDefaultNode({ data, parentWorkflowName }) {
|
|
|
5572
5764
|
WorkflowStepActionBar,
|
|
5573
5765
|
{
|
|
5574
5766
|
stepName: label,
|
|
5767
|
+
stepId,
|
|
5575
5768
|
input: step?.input,
|
|
5576
5769
|
resumeData: step?.resumeData,
|
|
5577
5770
|
output: step?.output,
|
|
5771
|
+
suspendOutput: step?.suspendOutput,
|
|
5578
5772
|
error: step?.error,
|
|
5579
5773
|
mapConfig,
|
|
5580
5774
|
status: step?.status
|
|
@@ -5599,23 +5793,15 @@ function WorkflowAfterNode({ data }) {
|
|
|
5599
5793
|
children: [
|
|
5600
5794
|
/* @__PURE__ */ jsxRuntime.jsx(react$1.Handle, { type: "target", position: react$1.Position.Top, style: { visibility: "hidden" } }),
|
|
5601
5795
|
/* @__PURE__ */ jsxRuntime.jsxs(CollapsibleTrigger, { className: "flex items-center justify-between w-full", children: [
|
|
5602
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5603
|
-
|
|
5604
|
-
{
|
|
5605
|
-
size: "xs",
|
|
5606
|
-
weight: "medium",
|
|
5607
|
-
className: "text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px] w-fit",
|
|
5608
|
-
children: "AFTER"
|
|
5609
|
-
}
|
|
5610
|
-
),
|
|
5611
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5796
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.after, { className: "text-current", style: { color: BADGE_COLORS.after } }), children: "AFTER" }),
|
|
5797
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5612
5798
|
lucideReact.ChevronDown,
|
|
5613
5799
|
{
|
|
5614
|
-
className: cn("
|
|
5800
|
+
className: cn("transition-transform text-icon3", {
|
|
5615
5801
|
"transform rotate-180": open
|
|
5616
5802
|
})
|
|
5617
5803
|
}
|
|
5618
|
-
)
|
|
5804
|
+
) })
|
|
5619
5805
|
] }),
|
|
5620
5806
|
/* @__PURE__ */ jsxRuntime.jsx(CollapsibleContent, { className: "flex flex-col gap-2", children: steps.map((step) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2", children: [
|
|
5621
5807
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Footprints, { className: "text-current w-4 h-4" }),
|
|
@@ -5821,9 +6007,28 @@ function WorkflowNestedGraphProvider({ children }) {
|
|
|
5821
6007
|
function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
5822
6008
|
const { steps } = useCurrentRun();
|
|
5823
6009
|
const { showNestedGraph } = React.useContext(WorkflowNestedGraphContext);
|
|
5824
|
-
const {
|
|
6010
|
+
const {
|
|
6011
|
+
label,
|
|
6012
|
+
stepId,
|
|
6013
|
+
description,
|
|
6014
|
+
withoutTopHandle,
|
|
6015
|
+
withoutBottomHandle,
|
|
6016
|
+
stepGraph,
|
|
6017
|
+
mapConfig,
|
|
6018
|
+
isParallel,
|
|
6019
|
+
canSuspend,
|
|
6020
|
+
isForEach
|
|
6021
|
+
} = data;
|
|
5825
6022
|
const fullLabel = parentWorkflowName ? `${parentWorkflowName}.${label}` : label;
|
|
5826
|
-
const
|
|
6023
|
+
const stepKey = parentWorkflowName ? `${parentWorkflowName}.${stepId || label}` : stepId || label;
|
|
6024
|
+
const step = steps[stepKey];
|
|
6025
|
+
const { isForEachNode, isMapNode, isNestedWorkflow, hasSpecialBadge } = getNodeBadgeInfo({
|
|
6026
|
+
isForEach,
|
|
6027
|
+
mapConfig,
|
|
6028
|
+
canSuspend,
|
|
6029
|
+
isParallel,
|
|
6030
|
+
stepGraph
|
|
6031
|
+
});
|
|
5827
6032
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5828
6033
|
!withoutTopHandle && /* @__PURE__ */ jsxRuntime.jsx(react$1.Handle, { type: "target", position: react$1.Position.Top, style: { visibility: "hidden" } }),
|
|
5829
6034
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -5833,7 +6038,8 @@ function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
|
5833
6038
|
"data-workflow-node": true,
|
|
5834
6039
|
"data-workflow-step-status": step?.status,
|
|
5835
6040
|
className: cn(
|
|
5836
|
-
"bg-surface3 rounded-lg w-[274px] border-sm border-border1
|
|
6041
|
+
"bg-surface3 rounded-lg w-[274px] border-sm border-border1",
|
|
6042
|
+
hasSpecialBadge ? "pt-0" : "pt-2",
|
|
5837
6043
|
step?.status === "success" && "bg-accent1Darker",
|
|
5838
6044
|
step?.status === "failed" && "bg-accent2Darker",
|
|
5839
6045
|
step?.status === "suspended" && "bg-accent3Darker",
|
|
@@ -5841,6 +6047,13 @@ function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
|
5841
6047
|
step?.status === "running" && "bg-accent6Darker"
|
|
5842
6048
|
),
|
|
5843
6049
|
children: [
|
|
6050
|
+
hasSpecialBadge && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-3 pt-2 pb-1 flex gap-1.5 flex-wrap", children: [
|
|
6051
|
+
canSuspend && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.suspend, { className: "text-current", style: { color: BADGE_COLORS.suspend } }), children: "SUSPEND/RESUME" }),
|
|
6052
|
+
isParallel && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.parallel, { className: "text-current", style: { color: BADGE_COLORS.parallel } }), children: "PARALLEL" }),
|
|
6053
|
+
isNestedWorkflow && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.workflow, { className: "text-current", style: { color: BADGE_COLORS.workflow } }), children: "WORKFLOW" }),
|
|
6054
|
+
isForEachNode && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.forEach, { className: "text-current", style: { color: BADGE_COLORS.forEach } }), children: "FOREACH" }),
|
|
6055
|
+
isMapNode && /* @__PURE__ */ jsxRuntime.jsx(Badge, { icon: /* @__PURE__ */ jsxRuntime.jsx(BADGE_ICONS.map, { className: "text-current", style: { color: BADGE_COLORS.map } }), children: "MAP" })
|
|
6056
|
+
] }),
|
|
5844
6057
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 px-3", !description && "pb-2"), children: [
|
|
5845
6058
|
/* @__PURE__ */ jsxRuntime.jsxs(Icon, { children: [
|
|
5846
6059
|
step?.status === "failed" && /* @__PURE__ */ jsxRuntime.jsx(CrossIcon, { className: "text-accent2" }),
|
|
@@ -5861,9 +6074,11 @@ function WorkflowNestedNode({ data, parentWorkflowName }) {
|
|
|
5861
6074
|
WorkflowStepActionBar,
|
|
5862
6075
|
{
|
|
5863
6076
|
stepName: label,
|
|
6077
|
+
stepId,
|
|
5864
6078
|
input: step?.input,
|
|
5865
6079
|
resumeData: step?.resumeData,
|
|
5866
6080
|
output: step?.output,
|
|
6081
|
+
suspendOutput: step?.suspendOutput,
|
|
5867
6082
|
error: step?.error,
|
|
5868
6083
|
mapConfig,
|
|
5869
6084
|
onShowNestedGraph: () => showNestedGraph({ label, fullStep: fullLabel, stepGraph }),
|
|
@@ -7293,10 +7508,10 @@ function WorkflowTrigger({
|
|
|
7293
7508
|
setCancelResponse(response);
|
|
7294
7509
|
};
|
|
7295
7510
|
const streamResultToUse = result ?? streamResult;
|
|
7296
|
-
const suspendedSteps = Object.entries(streamResultToUse?.steps || {}).filter(([_, { status }]) => status === "suspended").map(([stepId, {
|
|
7511
|
+
const suspendedSteps = Object.entries(streamResultToUse?.steps || {}).filter(([_, { status }]) => status === "suspended").map(([stepId, { suspendPayload }]) => ({
|
|
7297
7512
|
stepId,
|
|
7298
7513
|
runId: innerRunId,
|
|
7299
|
-
suspendPayload
|
|
7514
|
+
suspendPayload,
|
|
7300
7515
|
isLoading: false
|
|
7301
7516
|
}));
|
|
7302
7517
|
React.useEffect(() => {
|
|
@@ -7407,11 +7622,23 @@ function WorkflowTrigger({
|
|
|
7407
7622
|
/* @__PURE__ */ jsxRuntime.jsx(Text, { variant: "secondary", className: "px-4 text-mastra-el-3", size: "xs", children: "Status" }),
|
|
7408
7623
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 flex flex-col gap-4", children: Object.entries(workflowActivePaths).filter(([key, _]) => key !== "input" && !key.endsWith(".input")).map(([stepId, step]) => {
|
|
7409
7624
|
const { status } = step;
|
|
7410
|
-
let output =
|
|
7625
|
+
let output = void 0;
|
|
7626
|
+
let suspendOutput = void 0;
|
|
7627
|
+
if (step.status === "suspended") {
|
|
7628
|
+
suspendOutput = step.suspendOutput;
|
|
7629
|
+
}
|
|
7411
7630
|
if (step.status === "success") {
|
|
7412
7631
|
output = step.output;
|
|
7413
7632
|
}
|
|
7414
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7633
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7634
|
+
WorkflowStatus,
|
|
7635
|
+
{
|
|
7636
|
+
stepId,
|
|
7637
|
+
status,
|
|
7638
|
+
result: output ?? suspendOutput ?? {}
|
|
7639
|
+
},
|
|
7640
|
+
stepId
|
|
7641
|
+
);
|
|
7415
7642
|
}) })
|
|
7416
7643
|
] })
|
|
7417
7644
|
] })
|
|
@@ -7583,12 +7810,6 @@ const Cell = ({ className, children, ...props }) => {
|
|
|
7583
7810
|
const TxtCell = ({ className, children }) => {
|
|
7584
7811
|
return /* @__PURE__ */ jsxRuntime.jsx(Cell, { className, children: /* @__PURE__ */ jsxRuntime.jsx(Txt, { as: "span", variant: "ui-md", className: "w-full truncate", children }) });
|
|
7585
7812
|
};
|
|
7586
|
-
const UnitCell = ({ className, children, unit }) => {
|
|
7587
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Cell, { className, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center", children: [
|
|
7588
|
-
/* @__PURE__ */ jsxRuntime.jsx(Txt, { as: "span", variant: "ui-md", className: "shrink-0", children }),
|
|
7589
|
-
/* @__PURE__ */ jsxRuntime.jsx(Txt, { as: "span", variant: "ui-sm", className: "text-icon3 w-full truncate", children: unit })
|
|
7590
|
-
] }) });
|
|
7591
|
-
};
|
|
7592
7813
|
const DateTimeCell = ({ dateTime, ...props }) => {
|
|
7593
7814
|
const { day, time } = formatDateCell(dateTime);
|
|
7594
7815
|
return /* @__PURE__ */ jsxRuntime.jsx(Cell, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "shrink-0", children: [
|
|
@@ -10474,32 +10695,6 @@ const useAgentSettings = () => {
|
|
|
10474
10695
|
return React.useContext(AgentSettingsContext);
|
|
10475
10696
|
};
|
|
10476
10697
|
|
|
10477
|
-
const ModelResetContext = React.createContext(null);
|
|
10478
|
-
function ModelResetProvider({ children }) {
|
|
10479
|
-
const resetFnRef = React.useRef(null);
|
|
10480
|
-
const registerResetFn = React.useCallback((fn) => {
|
|
10481
|
-
resetFnRef.current = fn;
|
|
10482
|
-
}, []);
|
|
10483
|
-
const triggerReset = React.useCallback(() => {
|
|
10484
|
-
if (resetFnRef.current) {
|
|
10485
|
-
resetFnRef.current();
|
|
10486
|
-
}
|
|
10487
|
-
}, []);
|
|
10488
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ModelResetContext.Provider, { value: { registerResetFn, triggerReset }, children });
|
|
10489
|
-
}
|
|
10490
|
-
function useModelReset() {
|
|
10491
|
-
const context = React.useContext(ModelResetContext);
|
|
10492
|
-
if (!context) {
|
|
10493
|
-
return {
|
|
10494
|
-
registerResetFn: () => {
|
|
10495
|
-
},
|
|
10496
|
-
triggerReset: () => {
|
|
10497
|
-
}
|
|
10498
|
-
};
|
|
10499
|
-
}
|
|
10500
|
-
return context;
|
|
10501
|
-
}
|
|
10502
|
-
|
|
10503
10698
|
const resolveInstructionPart = (part) => {
|
|
10504
10699
|
if (typeof part === "string") {
|
|
10505
10700
|
return part.trim();
|
|
@@ -11860,104 +12055,6 @@ function InputField({
|
|
|
11860
12055
|
);
|
|
11861
12056
|
}
|
|
11862
12057
|
|
|
11863
|
-
function TextareaField({
|
|
11864
|
-
value,
|
|
11865
|
-
label,
|
|
11866
|
-
helpText,
|
|
11867
|
-
className,
|
|
11868
|
-
testId,
|
|
11869
|
-
type,
|
|
11870
|
-
disabled,
|
|
11871
|
-
...props
|
|
11872
|
-
}) {
|
|
11873
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11874
|
-
"div",
|
|
11875
|
-
{
|
|
11876
|
-
className: cn(
|
|
11877
|
-
"grid gap-[.5rem] grid-rows-[auto_1fr]",
|
|
11878
|
-
{
|
|
11879
|
-
"grid-rows-[auto_1fr_auto]": helpText
|
|
11880
|
-
},
|
|
11881
|
-
className
|
|
11882
|
-
),
|
|
11883
|
-
children: [
|
|
11884
|
-
label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: cn("text-[0.8125rem] text-icon3 flex justify-between items-center"), children: label }),
|
|
11885
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11886
|
-
"textarea",
|
|
11887
|
-
{
|
|
11888
|
-
className: cn(
|
|
11889
|
-
"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]",
|
|
11890
|
-
"focus:outline-none focus:shadow-[inset_0_0_0_1px_#18fb6f]",
|
|
11891
|
-
{ "cursor-not-allowed opacity-50": disabled }
|
|
11892
|
-
),
|
|
11893
|
-
"data-testid": testId,
|
|
11894
|
-
...props,
|
|
11895
|
-
children: value
|
|
11896
|
-
}
|
|
11897
|
-
),
|
|
11898
|
-
helpText && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-icon3 text-[0.75rem]", children: helpText })
|
|
11899
|
-
]
|
|
11900
|
-
}
|
|
11901
|
-
);
|
|
11902
|
-
}
|
|
11903
|
-
|
|
11904
|
-
const Button = React.forwardRef(
|
|
11905
|
-
({ className, variant = "outline", ...props }, ref) => {
|
|
11906
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11907
|
-
"button",
|
|
11908
|
-
{
|
|
11909
|
-
ref,
|
|
11910
|
-
className: cn(
|
|
11911
|
-
"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",
|
|
11912
|
-
"[&:not(:disabled):hover]:border-[rgba(255,255,255,0.25)] [&:not(:disabled):hover]:text-[rgba(255,255,255,0.9)]",
|
|
11913
|
-
"[&>svg]:w-[1em] [&>svg]:h-[1em] [&>svg]:mx-[-0.3em] [&>svg]:opacity-70 [&>svg]:shrink-0",
|
|
11914
|
-
"focus:outline-none focus:shadow-[inset_0_0_0_1px_rgba(24,251,111,0.75)]",
|
|
11915
|
-
className,
|
|
11916
|
-
{
|
|
11917
|
-
"cursor-not-allowed opacity-50": props.disabled,
|
|
11918
|
-
"bg-ui-primaryBtnBg text-ui-primaryBtnText hover:bg-surface6 leading-[0] font-semibold": variant === "primary",
|
|
11919
|
-
"min-h-[2rem]": variant === "ghost",
|
|
11920
|
-
"min-h-[2.5rem]": variant !== "ghost",
|
|
11921
|
-
"border-[rgba(255,255,255,0.15)]": variant === "outline"
|
|
11922
|
-
}
|
|
11923
|
-
),
|
|
11924
|
-
...props
|
|
11925
|
-
}
|
|
11926
|
-
);
|
|
11927
|
-
}
|
|
11928
|
-
);
|
|
11929
|
-
Button.displayName = "Button";
|
|
11930
|
-
|
|
11931
|
-
function FormActions({
|
|
11932
|
-
children,
|
|
11933
|
-
onSubmit,
|
|
11934
|
-
onCancel,
|
|
11935
|
-
className,
|
|
11936
|
-
submitLabel,
|
|
11937
|
-
cancelLabel,
|
|
11938
|
-
isSubmitting,
|
|
11939
|
-
variant = "toLeft"
|
|
11940
|
-
}) {
|
|
11941
|
-
if (!children && (!onSubmit || !onCancel)) {
|
|
11942
|
-
console.warn("FormActions requires either children or onSubmit and onCancel props");
|
|
11943
|
-
return null;
|
|
11944
|
-
}
|
|
11945
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11946
|
-
"div",
|
|
11947
|
-
{
|
|
11948
|
-
className: cn(
|
|
11949
|
-
"flex gap-[1rem] items-center justify-start",
|
|
11950
|
-
{ "justify-end": variant === "toRight", "grid w-full grid-cols-[1fr_auto]": variant === "stretch" },
|
|
11951
|
-
className
|
|
11952
|
-
),
|
|
11953
|
-
children: children ? children : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11954
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onSubmit, className: "min-w-[12rem]", disabled: isSubmitting, variant: "primary", children: submitLabel || "Submit" }),
|
|
11955
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onCancel, children: cancelLabel || "Cancel" })
|
|
11956
|
-
] })
|
|
11957
|
-
}
|
|
11958
|
-
);
|
|
11959
|
-
}
|
|
11960
|
-
|
|
11961
12058
|
function SelectField({
|
|
11962
12059
|
name,
|
|
11963
12060
|
value,
|
|
@@ -12006,158 +12103,6 @@ function SelectField({
|
|
|
12006
12103
|
);
|
|
12007
12104
|
}
|
|
12008
12105
|
|
|
12009
|
-
function SliderField({
|
|
12010
|
-
name,
|
|
12011
|
-
value,
|
|
12012
|
-
label,
|
|
12013
|
-
className,
|
|
12014
|
-
testId,
|
|
12015
|
-
required,
|
|
12016
|
-
disabled,
|
|
12017
|
-
helpMsg,
|
|
12018
|
-
errorMsg,
|
|
12019
|
-
onChange,
|
|
12020
|
-
...props
|
|
12021
|
-
}) {
|
|
12022
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12023
|
-
"div",
|
|
12024
|
-
{
|
|
12025
|
-
className: cn(
|
|
12026
|
-
"grid gap-[.5rem] grid-rows-[auto_1fr]",
|
|
12027
|
-
{
|
|
12028
|
-
"grid-rows-[auto_1fr_auto]": helpMsg
|
|
12029
|
-
},
|
|
12030
|
-
className
|
|
12031
|
-
),
|
|
12032
|
-
children: [
|
|
12033
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: cn("text-[0.8125rem] text-icon3 flex justify-between items-center"), children: [
|
|
12034
|
-
label,
|
|
12035
|
-
required && /* @__PURE__ */ jsxRuntime.jsx("i", { className: "text-icon2", children: "(required)" })
|
|
12036
|
-
] }),
|
|
12037
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid w-full items-center gap-[1rem] grid-cols-[1fr_auto]"), children: [
|
|
12038
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12039
|
-
SliderPrimitive__namespace.Root,
|
|
12040
|
-
{
|
|
12041
|
-
name,
|
|
12042
|
-
className: cn("relative flex w-full touch-none select-none items-center ", className),
|
|
12043
|
-
value,
|
|
12044
|
-
disabled,
|
|
12045
|
-
...props,
|
|
12046
|
-
children: [
|
|
12047
|
-
/* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-[4px] w-full grow overflow-hidden rounded-full bg-gray-600", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "absolute h-full bg-gray-400" }) }),
|
|
12048
|
-
/* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.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" })
|
|
12049
|
-
]
|
|
12050
|
-
}
|
|
12051
|
-
),
|
|
12052
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-icon4 text-[0.875rem] flex justify-end", children: value })
|
|
12053
|
-
] }),
|
|
12054
|
-
helpMsg && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-icon3 text-[0.75rem]", children: helpMsg }),
|
|
12055
|
-
errorMsg && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12056
|
-
"p",
|
|
12057
|
-
{
|
|
12058
|
-
className: cn(
|
|
12059
|
-
"text-[0.75rem] text-red-500 flex items-center gap-[.5rem]",
|
|
12060
|
-
"[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-70"
|
|
12061
|
-
),
|
|
12062
|
-
children: [
|
|
12063
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlertIcon, {}),
|
|
12064
|
-
" ",
|
|
12065
|
-
errorMsg
|
|
12066
|
-
]
|
|
12067
|
-
}
|
|
12068
|
-
)
|
|
12069
|
-
]
|
|
12070
|
-
}
|
|
12071
|
-
);
|
|
12072
|
-
}
|
|
12073
|
-
|
|
12074
|
-
function RadioGroupField({
|
|
12075
|
-
name,
|
|
12076
|
-
value,
|
|
12077
|
-
label,
|
|
12078
|
-
className,
|
|
12079
|
-
testId,
|
|
12080
|
-
required,
|
|
12081
|
-
disabled,
|
|
12082
|
-
helpMsg,
|
|
12083
|
-
errorMsg,
|
|
12084
|
-
onChange,
|
|
12085
|
-
options = [],
|
|
12086
|
-
layout = "vertical",
|
|
12087
|
-
onValueChange,
|
|
12088
|
-
...props
|
|
12089
|
-
}) {
|
|
12090
|
-
const Wrapper = layout === "horizontal" ? "div" : "fieldset";
|
|
12091
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12092
|
-
Wrapper,
|
|
12093
|
-
{
|
|
12094
|
-
className: cn(
|
|
12095
|
-
"w-full",
|
|
12096
|
-
{
|
|
12097
|
-
"flex items-center gap-[2rem]": layout === "horizontal"
|
|
12098
|
-
},
|
|
12099
|
-
className
|
|
12100
|
-
),
|
|
12101
|
-
role: layout === "horizontal" ? "radiogroup" : void 0,
|
|
12102
|
-
"aria-labelledby": layout === "horizontal" ? void 0 : `${name}-legend`,
|
|
12103
|
-
children: [
|
|
12104
|
-
/* @__PURE__ */ jsxRuntime.jsx("legend", { id: `${name}-legend`, className: cn("text-[0.8125rem] text-icon3"), children: label }),
|
|
12105
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12106
|
-
"div",
|
|
12107
|
-
{
|
|
12108
|
-
className: cn("grid gap-[2.5rem]", {
|
|
12109
|
-
"mt-[0.5rem]": layout === "vertical",
|
|
12110
|
-
"grid-rows-[1fr_auto]": helpMsg
|
|
12111
|
-
}),
|
|
12112
|
-
children: [
|
|
12113
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12114
|
-
RadioGroupPrimitive__namespace.Root,
|
|
12115
|
-
{
|
|
12116
|
-
value,
|
|
12117
|
-
onValueChange,
|
|
12118
|
-
...props,
|
|
12119
|
-
className: cn({
|
|
12120
|
-
"grid gap-[0.5rem]": layout === "vertical",
|
|
12121
|
-
"flex gap-[1rem]": layout === "horizontal"
|
|
12122
|
-
}),
|
|
12123
|
-
children: options.map((option) => {
|
|
12124
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-[0.5rem] text-[0.875rem] text-icon4 ", children: [
|
|
12125
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12126
|
-
RadioGroupPrimitive__namespace.Item,
|
|
12127
|
-
{
|
|
12128
|
-
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 ",
|
|
12129
|
-
value: option.value,
|
|
12130
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(RadioGroupPrimitive__namespace.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) })
|
|
12131
|
-
}
|
|
12132
|
-
),
|
|
12133
|
-
option.label
|
|
12134
|
-
] }, option.value);
|
|
12135
|
-
})
|
|
12136
|
-
}
|
|
12137
|
-
),
|
|
12138
|
-
helpMsg && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-icon3 text-[0.75rem]", children: helpMsg }),
|
|
12139
|
-
errorMsg && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12140
|
-
"p",
|
|
12141
|
-
{
|
|
12142
|
-
className: cn(
|
|
12143
|
-
"text-[0.75rem] text-red-500 flex items-center gap-[.5rem]",
|
|
12144
|
-
"[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-70"
|
|
12145
|
-
),
|
|
12146
|
-
children: [
|
|
12147
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.TriangleAlertIcon, {}),
|
|
12148
|
-
" ",
|
|
12149
|
-
errorMsg
|
|
12150
|
-
]
|
|
12151
|
-
}
|
|
12152
|
-
)
|
|
12153
|
-
]
|
|
12154
|
-
}
|
|
12155
|
-
)
|
|
12156
|
-
]
|
|
12157
|
-
}
|
|
12158
|
-
);
|
|
12159
|
-
}
|
|
12160
|
-
|
|
12161
12106
|
function KeyValueList({ data, LinkComponent, className, labelsAreHidden, isLoading }) {
|
|
12162
12107
|
const { Link } = useLinkComponent();
|
|
12163
12108
|
const LabelWrapper = ({ children }) => {
|
|
@@ -12517,6 +12462,33 @@ function SideDialogRoot({
|
|
|
12517
12462
|
] }) });
|
|
12518
12463
|
}
|
|
12519
12464
|
|
|
12465
|
+
const Button = React.forwardRef(
|
|
12466
|
+
({ className, variant = "outline", ...props }, ref) => {
|
|
12467
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12468
|
+
"button",
|
|
12469
|
+
{
|
|
12470
|
+
ref,
|
|
12471
|
+
className: cn(
|
|
12472
|
+
"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",
|
|
12473
|
+
"[&:not(:disabled):hover]:border-[rgba(255,255,255,0.25)] [&:not(:disabled):hover]:text-[rgba(255,255,255,0.9)]",
|
|
12474
|
+
"[&>svg]:w-[1em] [&>svg]:h-[1em] [&>svg]:mx-[-0.3em] [&>svg]:opacity-70 [&>svg]:shrink-0",
|
|
12475
|
+
"focus:outline-none focus:shadow-[inset_0_0_0_1px_rgba(24,251,111,0.75)]",
|
|
12476
|
+
className,
|
|
12477
|
+
{
|
|
12478
|
+
"cursor-not-allowed opacity-50": props.disabled,
|
|
12479
|
+
"bg-ui-primaryBtnBg text-ui-primaryBtnText hover:bg-surface6 leading-[0] font-semibold": variant === "primary",
|
|
12480
|
+
"min-h-[2rem]": variant === "ghost",
|
|
12481
|
+
"min-h-[2.5rem]": variant !== "ghost",
|
|
12482
|
+
"border-[rgba(255,255,255,0.15)]": variant === "outline"
|
|
12483
|
+
}
|
|
12484
|
+
),
|
|
12485
|
+
...props
|
|
12486
|
+
}
|
|
12487
|
+
);
|
|
12488
|
+
}
|
|
12489
|
+
);
|
|
12490
|
+
Button.displayName = "Button";
|
|
12491
|
+
|
|
12520
12492
|
function MainContentLayout({
|
|
12521
12493
|
children,
|
|
12522
12494
|
className,
|
|
@@ -12745,39 +12717,6 @@ const SideDialog = Object.assign(SideDialogRoot, {
|
|
|
12745
12717
|
Nav: SideDialogNav
|
|
12746
12718
|
});
|
|
12747
12719
|
|
|
12748
|
-
function EntityMainHeader({
|
|
12749
|
-
title,
|
|
12750
|
-
description,
|
|
12751
|
-
icon,
|
|
12752
|
-
children,
|
|
12753
|
-
isLoading,
|
|
12754
|
-
className,
|
|
12755
|
-
placement = "page"
|
|
12756
|
-
}) {
|
|
12757
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12758
|
-
"header",
|
|
12759
|
-
{
|
|
12760
|
-
className: cn(
|
|
12761
|
-
"grid gap-[.5rem]",
|
|
12762
|
-
"[&>h1]:text-icon6 [&>h1]:text-[1.25rem] [&>h1]:font-normal [&>h1]:flex [&>h1]:items-center [&>h1]:gap-[0.5rem]",
|
|
12763
|
-
"[&_svg]:w-[1.4rem] [&_svg]:h-[1.4rem] [&_svg]:text-icon3",
|
|
12764
|
-
"[&>p]:text-icon4 [&>p]:text-[0.875rem] [&>p]:m-0",
|
|
12765
|
-
{ "pt-[2rem] pb-[2rem]": placement === "page" },
|
|
12766
|
-
{ "pt-[1.5em] pb-[1rem]": placement === "sidebar" },
|
|
12767
|
-
className
|
|
12768
|
-
),
|
|
12769
|
-
children: [
|
|
12770
|
-
/* @__PURE__ */ jsxRuntime.jsxs("h1", { children: [
|
|
12771
|
-
icon && icon,
|
|
12772
|
-
" ",
|
|
12773
|
-
title
|
|
12774
|
-
] }),
|
|
12775
|
-
description && /* @__PURE__ */ jsxRuntime.jsx("p", { children: description })
|
|
12776
|
-
]
|
|
12777
|
-
}
|
|
12778
|
-
);
|
|
12779
|
-
}
|
|
12780
|
-
|
|
12781
12720
|
function PageHeader({ title, description, icon, className }) {
|
|
12782
12721
|
const titleIsLoading = title === "loading";
|
|
12783
12722
|
const descriptionIsLoading = description === "loading";
|
|
@@ -13221,11 +13160,23 @@ function MainSidebarNavSeparator({ className }) {
|
|
|
13221
13160
|
function MainSidebarRoot({ children, className }) {
|
|
13222
13161
|
const { state, toggleSidebar } = useMainSidebar();
|
|
13223
13162
|
const isCollapsed = state === "collapsed";
|
|
13163
|
+
React.useEffect(() => {
|
|
13164
|
+
const handleKeyDown = (event) => {
|
|
13165
|
+
if (event.ctrlKey && event.key === "b") {
|
|
13166
|
+
event.preventDefault();
|
|
13167
|
+
toggleSidebar();
|
|
13168
|
+
}
|
|
13169
|
+
};
|
|
13170
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
13171
|
+
return () => {
|
|
13172
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
13173
|
+
};
|
|
13174
|
+
}, [toggleSidebar]);
|
|
13224
13175
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13225
13176
|
"div",
|
|
13226
13177
|
{
|
|
13227
13178
|
className: cn(
|
|
13228
|
-
"flex flex-col h-full px-[1rem]
|
|
13179
|
+
"flex flex-col h-full px-[1rem] relative overflow-y-auto",
|
|
13229
13180
|
{
|
|
13230
13181
|
"lg:min-w-[13rem] xl:min-w-[14rem] 2xl:min-w-[15rem] 3xl:min-w-[16rem] 4xl:min-w-[17rem]": !isCollapsed
|
|
13231
13182
|
},
|
|
@@ -13233,30 +13184,41 @@ function MainSidebarRoot({ children, className }) {
|
|
|
13233
13184
|
),
|
|
13234
13185
|
children: [
|
|
13235
13186
|
children,
|
|
13236
|
-
/* @__PURE__ */ jsxRuntime.
|
|
13237
|
-
|
|
13238
|
-
|
|
13239
|
-
|
|
13240
|
-
|
|
13241
|
-
className: cn(
|
|
13242
|
-
"inline-flex w-auto items-center text-icon3 h-[2rem] px-[0.75rem] rounded-md",
|
|
13243
|
-
"hover:bg-surface4",
|
|
13244
|
-
"[&_svg]:w-[1rem] [&_svg]:h-[1rem] [&_svg]:text-icon3",
|
|
13245
|
-
{
|
|
13246
|
-
"ml-auto": !isCollapsed
|
|
13247
|
-
}
|
|
13248
|
-
),
|
|
13249
|
-
"aria-label": "Toggle sidebar",
|
|
13250
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13251
|
-
lucideReact.PanelRightIcon,
|
|
13187
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-surface1 grid sticky bottom-0 pb-[.75rem] ", children: [
|
|
13188
|
+
/* @__PURE__ */ jsxRuntime.jsx(MainSidebarNavSeparator, {}),
|
|
13189
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
|
|
13190
|
+
/* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13191
|
+
"button",
|
|
13252
13192
|
{
|
|
13253
|
-
|
|
13254
|
-
|
|
13255
|
-
|
|
13193
|
+
onClick: toggleSidebar,
|
|
13194
|
+
className: cn(
|
|
13195
|
+
"inline-flex w-auto items-center text-icon3 h-[2rem] px-[0.75rem] rounded-md ml-auto",
|
|
13196
|
+
"hover:bg-surface4",
|
|
13197
|
+
"[&_svg]:w-[1rem] [&_svg]:h-[1rem] [&_svg]:text-icon3",
|
|
13198
|
+
{
|
|
13199
|
+
"ml-auto": !isCollapsed
|
|
13200
|
+
}
|
|
13201
|
+
),
|
|
13202
|
+
"aria-label": "Toggle sidebar",
|
|
13203
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13204
|
+
lucideReact.PanelRightIcon,
|
|
13205
|
+
{
|
|
13206
|
+
className: cn({
|
|
13207
|
+
"rotate-180": isCollapsed
|
|
13208
|
+
})
|
|
13209
|
+
}
|
|
13210
|
+
)
|
|
13256
13211
|
}
|
|
13257
|
-
)
|
|
13258
|
-
|
|
13259
|
-
|
|
13212
|
+
) }),
|
|
13213
|
+
/* @__PURE__ */ jsxRuntime.jsxs(TooltipContent, { children: [
|
|
13214
|
+
"Toggle Sidebar",
|
|
13215
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 [&>svg]:w-[1em] [&>svg]:h-[1em]", children: [
|
|
13216
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyboardIcon, {}),
|
|
13217
|
+
" Ctrl+B"
|
|
13218
|
+
] })
|
|
13219
|
+
] })
|
|
13220
|
+
] })
|
|
13221
|
+
] }),
|
|
13260
13222
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13261
13223
|
"button",
|
|
13262
13224
|
{
|
|
@@ -13660,31 +13622,6 @@ function ScoresTools({ onEntityChange, onReset, selectedEntity, entityOptions, i
|
|
|
13660
13622
|
] });
|
|
13661
13623
|
}
|
|
13662
13624
|
|
|
13663
|
-
const useScoresByEntityId = (entityId, entityType, page = 0) => {
|
|
13664
|
-
const client = react$3.useMastraClient();
|
|
13665
|
-
const [scores, setScores] = React.useState(null);
|
|
13666
|
-
const [isLoading, setIsLoading] = React.useState(true);
|
|
13667
|
-
React.useEffect(() => {
|
|
13668
|
-
const fetchScores = async () => {
|
|
13669
|
-
setIsLoading(true);
|
|
13670
|
-
try {
|
|
13671
|
-
const res = await client.listScoresByEntityId({
|
|
13672
|
-
entityId,
|
|
13673
|
-
entityType,
|
|
13674
|
-
page: page || 0,
|
|
13675
|
-
perPage: 10
|
|
13676
|
-
});
|
|
13677
|
-
setScores(res);
|
|
13678
|
-
setIsLoading(false);
|
|
13679
|
-
} catch (error) {
|
|
13680
|
-
setScores(null);
|
|
13681
|
-
setIsLoading(false);
|
|
13682
|
-
}
|
|
13683
|
-
};
|
|
13684
|
-
fetchScores();
|
|
13685
|
-
}, [entityId, entityType, page]);
|
|
13686
|
-
return { scores, isLoading };
|
|
13687
|
-
};
|
|
13688
13625
|
const useScoresByScorerId = ({ scorerId, page = 0, entityId, entityType }) => {
|
|
13689
13626
|
const client = react$3.useMastraClient();
|
|
13690
13627
|
return reactQuery.useQuery({
|
|
@@ -13869,6 +13806,20 @@ const useTraceSpanScores = ({ traceId = "", spanId = "", page }) => {
|
|
|
13869
13806
|
});
|
|
13870
13807
|
};
|
|
13871
13808
|
|
|
13809
|
+
const ModelResetContext = React.createContext(null);
|
|
13810
|
+
function useModelReset() {
|
|
13811
|
+
const context = React.useContext(ModelResetContext);
|
|
13812
|
+
if (!context) {
|
|
13813
|
+
return {
|
|
13814
|
+
registerResetFn: () => {
|
|
13815
|
+
},
|
|
13816
|
+
triggerReset: () => {
|
|
13817
|
+
}
|
|
13818
|
+
};
|
|
13819
|
+
}
|
|
13820
|
+
return context;
|
|
13821
|
+
}
|
|
13822
|
+
|
|
13872
13823
|
const useAgentsModelProviders = () => {
|
|
13873
13824
|
const client = react$3.useMastraClient();
|
|
13874
13825
|
return reactQuery.useQuery({
|
|
@@ -18452,89 +18403,6 @@ const SpanScoring = ({ traceId, spanId, entityType }) => {
|
|
|
18452
18403
|
] });
|
|
18453
18404
|
};
|
|
18454
18405
|
|
|
18455
|
-
const useResizeColumn = ({
|
|
18456
|
-
defaultWidth,
|
|
18457
|
-
minimumWidth,
|
|
18458
|
-
maximumWidth,
|
|
18459
|
-
setCurrentWidth
|
|
18460
|
-
}) => {
|
|
18461
|
-
const [isDragging, setIsDragging] = React.useState(false);
|
|
18462
|
-
const [sidebarWidth, setSidebarWidth] = React.useState(defaultWidth);
|
|
18463
|
-
const containerRef = React.useRef(null);
|
|
18464
|
-
const dragStartXRef = React.useRef(0);
|
|
18465
|
-
const initialWidthRef = React.useRef(0);
|
|
18466
|
-
const handleMouseDown = (e) => {
|
|
18467
|
-
e.preventDefault();
|
|
18468
|
-
setIsDragging(true);
|
|
18469
|
-
dragStartXRef.current = e.clientX;
|
|
18470
|
-
initialWidthRef.current = sidebarWidth;
|
|
18471
|
-
};
|
|
18472
|
-
React.useEffect(() => {
|
|
18473
|
-
setSidebarWidth(defaultWidth);
|
|
18474
|
-
setCurrentWidth?.(defaultWidth);
|
|
18475
|
-
}, [defaultWidth]);
|
|
18476
|
-
React.useEffect(() => {
|
|
18477
|
-
const handleMouseMove = (e) => {
|
|
18478
|
-
if (!isDragging || !containerRef.current) return;
|
|
18479
|
-
const containerWidth = containerRef.current.offsetWidth;
|
|
18480
|
-
const deltaX = dragStartXRef.current - e.clientX;
|
|
18481
|
-
const deltaPercentage = deltaX / containerWidth * 100;
|
|
18482
|
-
const newWidth = Math.min(Math.max(initialWidthRef.current + deltaPercentage, minimumWidth), maximumWidth);
|
|
18483
|
-
setSidebarWidth(newWidth);
|
|
18484
|
-
setCurrentWidth?.(newWidth);
|
|
18485
|
-
};
|
|
18486
|
-
const handleMouseUp = () => {
|
|
18487
|
-
setIsDragging(false);
|
|
18488
|
-
};
|
|
18489
|
-
if (isDragging) {
|
|
18490
|
-
window.addEventListener("mousemove", handleMouseMove);
|
|
18491
|
-
window.addEventListener("mouseup", handleMouseUp);
|
|
18492
|
-
}
|
|
18493
|
-
return () => {
|
|
18494
|
-
window.removeEventListener("mousemove", handleMouseMove);
|
|
18495
|
-
window.removeEventListener("mouseup", handleMouseUp);
|
|
18496
|
-
};
|
|
18497
|
-
}, [isDragging]);
|
|
18498
|
-
return { sidebarWidth, isDragging, handleMouseDown, containerRef };
|
|
18499
|
-
};
|
|
18500
|
-
|
|
18501
|
-
const MastraResizablePanel = ({
|
|
18502
|
-
children,
|
|
18503
|
-
defaultWidth,
|
|
18504
|
-
minimumWidth,
|
|
18505
|
-
maximumWidth,
|
|
18506
|
-
className,
|
|
18507
|
-
disabled = false,
|
|
18508
|
-
setCurrentWidth,
|
|
18509
|
-
dividerPosition = "left"
|
|
18510
|
-
}) => {
|
|
18511
|
-
const { sidebarWidth, isDragging, handleMouseDown, containerRef } = useResizeColumn({
|
|
18512
|
-
defaultWidth: disabled ? 100 : defaultWidth,
|
|
18513
|
-
minimumWidth,
|
|
18514
|
-
maximumWidth,
|
|
18515
|
-
setCurrentWidth
|
|
18516
|
-
});
|
|
18517
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("w-full h-full relative", className), ref: containerRef, style: { width: `${sidebarWidth}%` }, children: [
|
|
18518
|
-
!disabled && dividerPosition === "left" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18519
|
-
"div",
|
|
18520
|
-
{
|
|
18521
|
-
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
|
|
18522
|
-
${isDragging ? "bg-border2 w-1.5 cursor- col-resize" : ""}`,
|
|
18523
|
-
onMouseDown: handleMouseDown
|
|
18524
|
-
}
|
|
18525
|
-
) : null,
|
|
18526
|
-
children,
|
|
18527
|
-
!disabled && dividerPosition === "right" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
18528
|
-
"div",
|
|
18529
|
-
{
|
|
18530
|
-
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
|
|
18531
|
-
${isDragging ? "bg-border2 w-1.5 cursor- col-resize" : ""}`,
|
|
18532
|
-
onMouseDown: handleMouseDown
|
|
18533
|
-
}
|
|
18534
|
-
) : null
|
|
18535
|
-
] });
|
|
18536
|
-
};
|
|
18537
|
-
|
|
18538
18406
|
const Breadcrumb = ({ children, label }) => {
|
|
18539
18407
|
return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": label, children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "gap-sm flex items-center", children }) });
|
|
18540
18408
|
};
|
|
@@ -18624,113 +18492,6 @@ const EntityContent = ({ children, className }) => {
|
|
|
18624
18492
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, children });
|
|
18625
18493
|
};
|
|
18626
18494
|
|
|
18627
|
-
function usePolling({
|
|
18628
|
-
fetchFn,
|
|
18629
|
-
interval = 3e3,
|
|
18630
|
-
enabled = false,
|
|
18631
|
-
onSuccess,
|
|
18632
|
-
onError,
|
|
18633
|
-
shouldContinue = () => true,
|
|
18634
|
-
restartPolling = false
|
|
18635
|
-
}) {
|
|
18636
|
-
const [isPolling, setIsPolling] = React.useState(enabled);
|
|
18637
|
-
const [error, setError] = React.useState(null);
|
|
18638
|
-
const [data, setData] = React.useState(null);
|
|
18639
|
-
const [isLoading, setIsLoading] = React.useState(false);
|
|
18640
|
-
const [firstCallLoading, setFirstCallLoading] = React.useState(false);
|
|
18641
|
-
const timeoutRef = React.useRef(null);
|
|
18642
|
-
const mountedRef = React.useRef(true);
|
|
18643
|
-
const [restart, setRestart] = React.useState(restartPolling);
|
|
18644
|
-
const cleanup = React.useCallback(() => {
|
|
18645
|
-
console.log("cleanup");
|
|
18646
|
-
if (timeoutRef.current) {
|
|
18647
|
-
clearTimeout(timeoutRef.current);
|
|
18648
|
-
timeoutRef.current = null;
|
|
18649
|
-
}
|
|
18650
|
-
}, []);
|
|
18651
|
-
const stopPolling = React.useCallback(() => {
|
|
18652
|
-
console.log("stopPolling");
|
|
18653
|
-
setIsPolling(false);
|
|
18654
|
-
cleanup();
|
|
18655
|
-
}, [cleanup]);
|
|
18656
|
-
const startPolling = React.useCallback(() => {
|
|
18657
|
-
console.log("startPolling");
|
|
18658
|
-
setIsPolling(true);
|
|
18659
|
-
setError(null);
|
|
18660
|
-
}, []);
|
|
18661
|
-
const executePoll = React.useCallback(
|
|
18662
|
-
async (refetch2 = true) => {
|
|
18663
|
-
if (!mountedRef.current) return;
|
|
18664
|
-
setIsLoading(true);
|
|
18665
|
-
try {
|
|
18666
|
-
const result = await fetchFn();
|
|
18667
|
-
setData(result);
|
|
18668
|
-
setError(null);
|
|
18669
|
-
onSuccess?.(result);
|
|
18670
|
-
if (shouldContinue(result) && refetch2) {
|
|
18671
|
-
timeoutRef.current = setTimeout(executePoll, interval);
|
|
18672
|
-
} else {
|
|
18673
|
-
stopPolling();
|
|
18674
|
-
}
|
|
18675
|
-
} catch (err) {
|
|
18676
|
-
if (!mountedRef.current) return;
|
|
18677
|
-
setError(err);
|
|
18678
|
-
onError?.(err);
|
|
18679
|
-
stopPolling();
|
|
18680
|
-
} finally {
|
|
18681
|
-
if (mountedRef.current) {
|
|
18682
|
-
setFirstCallLoading(false);
|
|
18683
|
-
setIsLoading(false);
|
|
18684
|
-
}
|
|
18685
|
-
}
|
|
18686
|
-
},
|
|
18687
|
-
[fetchFn, interval, onSuccess, onError, shouldContinue, stopPolling]
|
|
18688
|
-
);
|
|
18689
|
-
const refetch = React.useCallback(
|
|
18690
|
-
(withPolling = false) => {
|
|
18691
|
-
console.log("refetch", { withPolling });
|
|
18692
|
-
if (withPolling) {
|
|
18693
|
-
setIsPolling(true);
|
|
18694
|
-
} else {
|
|
18695
|
-
executePoll(false);
|
|
18696
|
-
}
|
|
18697
|
-
setError(null);
|
|
18698
|
-
},
|
|
18699
|
-
[executePoll]
|
|
18700
|
-
);
|
|
18701
|
-
React.useEffect(() => {
|
|
18702
|
-
mountedRef.current = true;
|
|
18703
|
-
if (enabled && isPolling) {
|
|
18704
|
-
executePoll(true);
|
|
18705
|
-
}
|
|
18706
|
-
return () => {
|
|
18707
|
-
console.log("cleanup poll");
|
|
18708
|
-
mountedRef.current = false;
|
|
18709
|
-
cleanup();
|
|
18710
|
-
};
|
|
18711
|
-
}, [enabled, isPolling, executePoll, cleanup]);
|
|
18712
|
-
React.useEffect(() => {
|
|
18713
|
-
setRestart(restartPolling);
|
|
18714
|
-
}, [restartPolling]);
|
|
18715
|
-
React.useEffect(() => {
|
|
18716
|
-
if (restart && !isPolling) {
|
|
18717
|
-
setIsPolling(true);
|
|
18718
|
-
executePoll();
|
|
18719
|
-
setRestart(false);
|
|
18720
|
-
}
|
|
18721
|
-
}, [restart]);
|
|
18722
|
-
return {
|
|
18723
|
-
isPolling,
|
|
18724
|
-
isLoading,
|
|
18725
|
-
error,
|
|
18726
|
-
data,
|
|
18727
|
-
startPolling,
|
|
18728
|
-
stopPolling,
|
|
18729
|
-
firstCallLoading,
|
|
18730
|
-
refetch
|
|
18731
|
-
};
|
|
18732
|
-
}
|
|
18733
|
-
|
|
18734
18495
|
const PlaygroundQueryClient = ({ children }) => {
|
|
18735
18496
|
const queryClient = new reactQuery.QueryClient();
|
|
18736
18497
|
return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children });
|
|
@@ -19270,7 +19031,6 @@ exports.EntityContent = EntityContent;
|
|
|
19270
19031
|
exports.EntityDescription = EntityDescription;
|
|
19271
19032
|
exports.EntityHeader = EntityHeader;
|
|
19272
19033
|
exports.EntityIcon = EntityIcon;
|
|
19273
|
-
exports.EntityMainHeader = EntityMainHeader;
|
|
19274
19034
|
exports.EntityName = EntityName;
|
|
19275
19035
|
exports.Entry = Entry;
|
|
19276
19036
|
exports.EntryCell = EntryCell;
|
|
@@ -19279,7 +19039,6 @@ exports.EntryListSkeleton = EntryListSkeleton;
|
|
|
19279
19039
|
exports.EnvIcon = EnvIcon;
|
|
19280
19040
|
exports.FiltersIcon = FiltersIcon;
|
|
19281
19041
|
exports.FolderIcon = FolderIcon;
|
|
19282
|
-
exports.FormActions = FormActions;
|
|
19283
19042
|
exports.GithubCoinIcon = GithubCoinIcon;
|
|
19284
19043
|
exports.GithubIcon = GithubIcon;
|
|
19285
19044
|
exports.GoogleIcon = GoogleIcon;
|
|
@@ -19306,12 +19065,10 @@ exports.MainContentContent = MainContentContent;
|
|
|
19306
19065
|
exports.MainContentLayout = MainContentLayout;
|
|
19307
19066
|
exports.MainSidebar = MainSidebar;
|
|
19308
19067
|
exports.MainSidebarProvider = MainSidebarProvider;
|
|
19309
|
-
exports.MastraResizablePanel = MastraResizablePanel;
|
|
19310
19068
|
exports.McpCoinIcon = McpCoinIcon;
|
|
19311
19069
|
exports.McpServerIcon = McpServerIcon;
|
|
19312
19070
|
exports.MemoryIcon = MemoryIcon;
|
|
19313
19071
|
exports.MemorySearch = MemorySearch;
|
|
19314
|
-
exports.ModelResetProvider = ModelResetProvider;
|
|
19315
19072
|
exports.Notification = Notification;
|
|
19316
19073
|
exports.OpenAIIcon = OpenAIIcon;
|
|
19317
19074
|
exports.PageHeader = PageHeader;
|
|
@@ -19319,7 +19076,6 @@ exports.PlaygroundQueryClient = PlaygroundQueryClient;
|
|
|
19319
19076
|
exports.PlaygroundTabs = PlaygroundTabs;
|
|
19320
19077
|
exports.PromptIcon = PromptIcon;
|
|
19321
19078
|
exports.RadioGroup = RadioGroup;
|
|
19322
|
-
exports.RadioGroupField = RadioGroupField;
|
|
19323
19079
|
exports.RadioGroupItem = RadioGroupItem;
|
|
19324
19080
|
exports.RepoIcon = RepoIcon;
|
|
19325
19081
|
exports.RequestContext = RequestContext;
|
|
@@ -19338,8 +19094,8 @@ exports.Sections = Sections;
|
|
|
19338
19094
|
exports.SelectField = SelectField;
|
|
19339
19095
|
exports.SettingsIcon = SettingsIcon;
|
|
19340
19096
|
exports.SideDialog = SideDialog;
|
|
19097
|
+
exports.Skeleton = Skeleton;
|
|
19341
19098
|
exports.SlashIcon = SlashIcon;
|
|
19342
|
-
exports.SliderField = SliderField;
|
|
19343
19099
|
exports.SpanScoreList = SpanScoreList;
|
|
19344
19100
|
exports.SpanScoring = SpanScoring;
|
|
19345
19101
|
exports.SpanTabs = SpanTabs;
|
|
@@ -19356,7 +19112,6 @@ exports.TemplateSuccess = TemplateSuccess;
|
|
|
19356
19112
|
exports.TemplatesList = TemplatesList;
|
|
19357
19113
|
exports.TemplatesTools = TemplatesTools;
|
|
19358
19114
|
exports.TextAndIcon = TextAndIcon;
|
|
19359
|
-
exports.TextareaField = TextareaField;
|
|
19360
19115
|
exports.Th = Th;
|
|
19361
19116
|
exports.Thead = Thead;
|
|
19362
19117
|
exports.ThreadDeleteButton = ThreadDeleteButton;
|
|
@@ -19387,7 +19142,6 @@ exports.TracesTools = TracesTools;
|
|
|
19387
19142
|
exports.TsIcon = TsIcon;
|
|
19388
19143
|
exports.Txt = Txt;
|
|
19389
19144
|
exports.TxtCell = TxtCell;
|
|
19390
|
-
exports.UnitCell = UnitCell;
|
|
19391
19145
|
exports.VariablesIcon = VariablesIcon;
|
|
19392
19146
|
exports.WorkflowCoinIcon = WorkflowCoinIcon;
|
|
19393
19147
|
exports.WorkflowCombobox = WorkflowCombobox;
|
|
@@ -19437,14 +19191,11 @@ exports.useMainSidebar = useMainSidebar;
|
|
|
19437
19191
|
exports.useMemory = useMemory;
|
|
19438
19192
|
exports.useMemoryConfig = useMemoryConfig;
|
|
19439
19193
|
exports.useMemorySearch = useMemorySearch;
|
|
19440
|
-
exports.useModelReset = useModelReset;
|
|
19441
19194
|
exports.usePlaygroundStore = usePlaygroundStore;
|
|
19442
|
-
exports.usePolling = usePolling;
|
|
19443
19195
|
exports.useReorderModelList = useReorderModelList;
|
|
19444
19196
|
exports.useResetAgentModel = useResetAgentModel;
|
|
19445
19197
|
exports.useScorer = useScorer;
|
|
19446
19198
|
exports.useScorers = useScorers;
|
|
19447
|
-
exports.useScoresByEntityId = useScoresByEntityId;
|
|
19448
19199
|
exports.useScoresByScorerId = useScoresByScorerId;
|
|
19449
19200
|
exports.useSpeechRecognition = useSpeechRecognition;
|
|
19450
19201
|
exports.useStreamWorkflow = useStreamWorkflow;
|