@mastra/playground-ui 5.1.21-alpha.0 → 5.1.21-alpha.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/dist/index.cjs.js +379 -83
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +378 -82
- package/dist/index.es.js.map +1 -1
- package/dist/src/components/ui/elements/buttons/button.d.ts +12 -0
- package/dist/src/components/ui/elements/buttons/button.stories.d.ts +13 -0
- package/dist/src/components/ui/elements/buttons/index.d.ts +1 -0
- package/dist/src/components/ui/elements/entry-list/entry-list-cell.d.ts +3 -0
- package/dist/src/components/ui/elements/entry-list/entry-list-item.d.ts +8 -0
- package/dist/src/components/ui/elements/entry-list/entry-list-page-header.d.ts +8 -0
- package/dist/src/components/ui/elements/entry-list/entry-list-toolbar.d.ts +6 -0
- package/dist/src/components/ui/elements/entry-list/entry-list.d.ts +15 -0
- package/dist/src/components/ui/elements/entry-list/index.d.ts +6 -0
- package/dist/src/components/ui/elements/entry-list/shared.d.ts +6 -0
- package/dist/src/components/ui/elements/form-fields/form-actions.d.ts +12 -0
- package/dist/src/components/ui/elements/form-fields/index.d.ts +7 -0
- package/dist/src/components/ui/elements/form-fields/input-field.d.ts +14 -0
- package/dist/src/components/ui/elements/form-fields/input-field.stories.d.ts +15 -0
- package/dist/src/components/ui/elements/form-fields/radio-group-field.d.ts +21 -0
- package/dist/src/components/ui/elements/form-fields/search-field.d.ts +2 -0
- package/dist/src/components/ui/elements/form-fields/select-field.d.ts +19 -0
- package/dist/src/components/ui/elements/form-fields/select-field.stories.d.ts +13 -0
- package/dist/src/components/ui/elements/form-fields/slider-field.d.ts +15 -0
- package/dist/src/components/ui/elements/form-fields/textarea-field.d.ts +11 -0
- package/dist/src/components/ui/elements/headers/entity-main-header.d.ts +11 -0
- package/dist/src/components/ui/elements/headers/index.d.ts +1 -0
- package/dist/src/components/ui/elements/index.d.ts +2 -0
- package/dist/src/components/ui/elements/key-value-list/index.d.ts +1 -0
- package/dist/src/components/ui/elements/key-value-list/key-value-list.d.ts +24 -0
- package/dist/src/components/ui/elements/key-value-list/key-value-list.stories.d.ts +12 -0
- package/dist/src/components/ui/elements/select/index.d.ts +1 -0
- package/dist/src/components/ui/elements/select/select.d.ts +10 -0
- package/dist/src/components/ui/elements/side-dialog/index.d.ts +5 -0
- package/dist/src/components/ui/elements/side-dialog/side-dialog-content.d.ts +21 -0
- package/dist/src/components/ui/elements/side-dialog/side-dialog-footer.d.ts +10 -0
- package/dist/src/components/ui/elements/side-dialog/side-dialog-header.d.ts +5 -0
- package/dist/src/components/ui/elements/side-dialog/side-dialog-top.d.ts +7 -0
- package/dist/src/components/ui/elements/side-dialog/side-dialog.d.ts +10 -0
- package/dist/src/components/ui/elements/tabs/index.d.ts +1 -0
- package/dist/src/components/ui/elements/tabs/tabs.d.ts +40 -0
- package/dist/src/domains/agents/components/agent-metadata/agent-metadata-model-switcher.d.ts +11 -0
- package/dist/src/domains/agents/components/agent-metadata/agent-metadata.d.ts +4 -1
- package/dist/src/domains/agents/components/agent-metadata/models.d.ts +5 -0
- package/package.json +12 -5
package/dist/index.cjs.js
CHANGED
|
@@ -37,6 +37,8 @@ const prettierPluginBabel = require('prettier/plugins/babel');
|
|
|
37
37
|
const prettierPluginEstree = require('prettier/plugins/estree');
|
|
38
38
|
const colors = require('./colors-DLwJ7rFA.cjs');
|
|
39
39
|
const reactTable = require('@tanstack/react-table');
|
|
40
|
+
const SelectPrimitive = require('@radix-ui/react-select');
|
|
41
|
+
const PopoverPrimitive = require('@radix-ui/react-popover');
|
|
40
42
|
const AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
|
|
41
43
|
const uiUtils = require('@ai-sdk/ui-utils');
|
|
42
44
|
const Markdown = require('react-markdown');
|
|
@@ -54,8 +56,6 @@ const z = require('zod');
|
|
|
54
56
|
const react$3 = require('@autoform/react');
|
|
55
57
|
const CheckboxPrimitive = require('@radix-ui/react-checkbox');
|
|
56
58
|
const reactDayPicker = require('react-day-picker');
|
|
57
|
-
const PopoverPrimitive = require('@radix-ui/react-popover');
|
|
58
|
-
const SelectPrimitive = require('@radix-ui/react-select');
|
|
59
59
|
const zod = require('@autoform/zod');
|
|
60
60
|
const reactCodeBlock = require('react-code-block');
|
|
61
61
|
const reactQuery = require('@tanstack/react-query');
|
|
@@ -86,11 +86,11 @@ const SliderPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(SliderP
|
|
|
86
86
|
const LabelPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(LabelPrimitive);
|
|
87
87
|
const RadioGroupPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(RadioGroupPrimitive);
|
|
88
88
|
const CollapsiblePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(CollapsiblePrimitive);
|
|
89
|
+
const SelectPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(SelectPrimitive);
|
|
90
|
+
const PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(PopoverPrimitive);
|
|
89
91
|
const AlertDialogPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(AlertDialogPrimitive);
|
|
90
92
|
const ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(ScrollAreaPrimitive);
|
|
91
93
|
const CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(CheckboxPrimitive);
|
|
92
|
-
const PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(PopoverPrimitive);
|
|
93
|
-
const SelectPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(SelectPrimitive);
|
|
94
94
|
|
|
95
95
|
const createMastraClient = (baseUrl, mastraClientHeaders = {}) => {
|
|
96
96
|
return new clientJs.MastraClient({
|
|
@@ -7823,20 +7823,365 @@ const ScorerEntity = ({ scorer }) => {
|
|
|
7823
7823
|
] });
|
|
7824
7824
|
};
|
|
7825
7825
|
|
|
7826
|
+
const openaiModels = [
|
|
7827
|
+
"o1",
|
|
7828
|
+
"o1-2024-12-17",
|
|
7829
|
+
"o3-mini",
|
|
7830
|
+
"o3-mini-2025-01-31",
|
|
7831
|
+
"o3",
|
|
7832
|
+
"o3-2025-04-16",
|
|
7833
|
+
"o4-mini",
|
|
7834
|
+
"o4-mini-2025-04-16",
|
|
7835
|
+
"codex-mini-latest",
|
|
7836
|
+
"computer-use-preview",
|
|
7837
|
+
"gpt-4.1",
|
|
7838
|
+
"gpt-4.1-2025-04-14",
|
|
7839
|
+
"gpt-4.1-mini",
|
|
7840
|
+
"gpt-4.1-mini-2025-04-14",
|
|
7841
|
+
"gpt-4.1-nano",
|
|
7842
|
+
"gpt-4.1-nano-2025-04-14",
|
|
7843
|
+
"gpt-4o",
|
|
7844
|
+
"gpt-4o-2024-05-13",
|
|
7845
|
+
"gpt-4o-2024-08-06",
|
|
7846
|
+
"gpt-4o-2024-11-20",
|
|
7847
|
+
"gpt-4o-audio-preview",
|
|
7848
|
+
"gpt-4o-audio-preview-2024-10-01",
|
|
7849
|
+
"gpt-4o-audio-preview-2024-12-17",
|
|
7850
|
+
"gpt-4o-search-preview",
|
|
7851
|
+
"gpt-4o-search-preview-2025-03-11",
|
|
7852
|
+
"gpt-4o-mini-search-preview",
|
|
7853
|
+
"gpt-4o-mini-search-preview-2025-03-11",
|
|
7854
|
+
"gpt-4o-mini",
|
|
7855
|
+
"gpt-4o-mini-2024-07-18",
|
|
7856
|
+
"gpt-4-turbo",
|
|
7857
|
+
"gpt-4-turbo-2024-04-09",
|
|
7858
|
+
"gpt-4-turbo-preview",
|
|
7859
|
+
"gpt-4-0125-preview",
|
|
7860
|
+
"gpt-4-1106-preview",
|
|
7861
|
+
"gpt-4",
|
|
7862
|
+
"gpt-4-0613",
|
|
7863
|
+
"gpt-4.5-preview",
|
|
7864
|
+
"gpt-4.5-preview-2025-02-27",
|
|
7865
|
+
"gpt-3.5-turbo-0125",
|
|
7866
|
+
"gpt-3.5-turbo",
|
|
7867
|
+
"gpt-3.5-turbo-1106",
|
|
7868
|
+
"chatgpt-4o-latest",
|
|
7869
|
+
"gpt-5",
|
|
7870
|
+
"gpt-5-2025-08-07",
|
|
7871
|
+
"gpt-5-mini",
|
|
7872
|
+
"gpt-5-mini-2025-08-07",
|
|
7873
|
+
"gpt-5-nano",
|
|
7874
|
+
"gpt-5-nano-2025-08-07",
|
|
7875
|
+
"gpt-5-chat-latest"
|
|
7876
|
+
];
|
|
7877
|
+
const anthropicModels = [
|
|
7878
|
+
"claude-opus-4-20250514",
|
|
7879
|
+
"claude-sonnet-4-20250514",
|
|
7880
|
+
"claude-3-7-sonnet-20250219",
|
|
7881
|
+
"claude-3-5-sonnet-latest",
|
|
7882
|
+
"claude-3-5-sonnet-20241022",
|
|
7883
|
+
"claude-3-5-sonnet-20240620",
|
|
7884
|
+
"claude-3-5-haiku-latest",
|
|
7885
|
+
"claude-3-5-haiku-20241022",
|
|
7886
|
+
"claude-3-opus-latest",
|
|
7887
|
+
"claude-3-opus-20240229",
|
|
7888
|
+
"claude-3-sonnet-20240229",
|
|
7889
|
+
"claude-3-haiku-20240307"
|
|
7890
|
+
];
|
|
7891
|
+
const googleModels = [
|
|
7892
|
+
"gemini-1.5-flash",
|
|
7893
|
+
"gemini-1.5-flash-latest",
|
|
7894
|
+
"gemini-1.5-flash-001",
|
|
7895
|
+
"gemini-1.5-flash-002",
|
|
7896
|
+
"gemini-1.5-flash-8b",
|
|
7897
|
+
"gemini-1.5-flash-8b-latest",
|
|
7898
|
+
"gemini-1.5-flash-8b-001",
|
|
7899
|
+
"gemini-1.5-pro",
|
|
7900
|
+
"gemini-1.5-pro-latest",
|
|
7901
|
+
"gemini-1.5-pro-001",
|
|
7902
|
+
"gemini-1.5-pro-002",
|
|
7903
|
+
"gemini-2.0-flash",
|
|
7904
|
+
"gemini-2.0-flash-001",
|
|
7905
|
+
"gemini-2.0-flash-live-001",
|
|
7906
|
+
"gemini-2.0-flash-lite",
|
|
7907
|
+
"gemini-2.0-pro-exp-02-05",
|
|
7908
|
+
"gemini-2.0-flash-thinking-exp-01-21",
|
|
7909
|
+
"gemini-2.0-flash-exp",
|
|
7910
|
+
"gemini-2.5-pro",
|
|
7911
|
+
"gemini-2.5-flash",
|
|
7912
|
+
"gemini-2.5-flash-lite",
|
|
7913
|
+
"gemini-2.5-pro-exp-03-25",
|
|
7914
|
+
"gemini-2.5-flash-preview-04-17",
|
|
7915
|
+
"gemini-exp-1206",
|
|
7916
|
+
"gemma-3-12b-it",
|
|
7917
|
+
"gemma-3-27b-it"
|
|
7918
|
+
];
|
|
7919
|
+
const xAIModels = [
|
|
7920
|
+
"grok-4",
|
|
7921
|
+
"grok-4-0709",
|
|
7922
|
+
"grok-4-latest",
|
|
7923
|
+
"grok-3",
|
|
7924
|
+
"grok-3-latest",
|
|
7925
|
+
"grok-3-fast",
|
|
7926
|
+
"grok-3-fast-latest",
|
|
7927
|
+
"grok-3-mini",
|
|
7928
|
+
"grok-3-mini-latest",
|
|
7929
|
+
"grok-3-mini-fast",
|
|
7930
|
+
"grok-3-mini-fast-latest",
|
|
7931
|
+
"grok-2-vision-1212",
|
|
7932
|
+
"grok-2-vision",
|
|
7933
|
+
"grok-2-vision-latest",
|
|
7934
|
+
"grok-2-image-1212",
|
|
7935
|
+
"grok-2-image",
|
|
7936
|
+
"grok-2-image-latest",
|
|
7937
|
+
"grok-2-1212",
|
|
7938
|
+
"grok-2",
|
|
7939
|
+
"grok-2-latest",
|
|
7940
|
+
"grok-vision-beta",
|
|
7941
|
+
"grok-beta"
|
|
7942
|
+
];
|
|
7943
|
+
const groqModels = [
|
|
7944
|
+
"gemma2-9b-it",
|
|
7945
|
+
"llama-3.1-8b-instant",
|
|
7946
|
+
"llama-3.3-70b-versatile",
|
|
7947
|
+
"meta-llama/llama-guard-4-12b",
|
|
7948
|
+
"openai/gpt-oss-120b",
|
|
7949
|
+
"openai/gpt-oss-20b",
|
|
7950
|
+
"deepseek-r1-distill-llama-70b",
|
|
7951
|
+
"meta-llama/llama-4-maverick-17b-128e-instruct",
|
|
7952
|
+
"meta-llama/llama-4-scout-17b-16e-instruct",
|
|
7953
|
+
"meta-llama/llama-prompt-guard-2-22m",
|
|
7954
|
+
"meta-llama/llama-prompt-guard-2-86m",
|
|
7955
|
+
"mistral-saba-24b",
|
|
7956
|
+
"moonshotai/kimi-k2-instruct",
|
|
7957
|
+
"qwen/qwen3-32b",
|
|
7958
|
+
"llama-guard-3-8b",
|
|
7959
|
+
"llama3-70b-8192",
|
|
7960
|
+
"llama3-8b-8192",
|
|
7961
|
+
"mixtral-8x7b-32768",
|
|
7962
|
+
"qwen-qwq-32b",
|
|
7963
|
+
"qwen-2.5-32b",
|
|
7964
|
+
"deepseek-r1-distill-qwen-32b"
|
|
7965
|
+
];
|
|
7966
|
+
|
|
7967
|
+
const Select = SelectPrimitive__namespace.Root;
|
|
7968
|
+
const SelectValue = SelectPrimitive__namespace.Value;
|
|
7969
|
+
const SelectTrigger = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7970
|
+
SelectPrimitive__namespace.Trigger,
|
|
7971
|
+
{
|
|
7972
|
+
ref,
|
|
7973
|
+
className: cn(
|
|
7974
|
+
"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
7975
|
+
className
|
|
7976
|
+
),
|
|
7977
|
+
...props,
|
|
7978
|
+
children: [
|
|
7979
|
+
children,
|
|
7980
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
7981
|
+
]
|
|
7982
|
+
}
|
|
7983
|
+
));
|
|
7984
|
+
SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
|
|
7985
|
+
const SelectContent = React__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7986
|
+
SelectPrimitive__namespace.Content,
|
|
7987
|
+
{
|
|
7988
|
+
ref,
|
|
7989
|
+
className: cn(
|
|
7990
|
+
"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
7991
|
+
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
7992
|
+
className
|
|
7993
|
+
),
|
|
7994
|
+
position,
|
|
7995
|
+
...props,
|
|
7996
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7997
|
+
SelectPrimitive__namespace.Viewport,
|
|
7998
|
+
{
|
|
7999
|
+
className: cn(
|
|
8000
|
+
"p-1",
|
|
8001
|
+
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
8002
|
+
),
|
|
8003
|
+
children
|
|
8004
|
+
}
|
|
8005
|
+
)
|
|
8006
|
+
}
|
|
8007
|
+
) }));
|
|
8008
|
+
SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
|
|
8009
|
+
const SelectItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8010
|
+
SelectPrimitive__namespace.Item,
|
|
8011
|
+
{
|
|
8012
|
+
ref,
|
|
8013
|
+
className: cn(
|
|
8014
|
+
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-mastra-el-5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
8015
|
+
className
|
|
8016
|
+
),
|
|
8017
|
+
...props,
|
|
8018
|
+
children: [
|
|
8019
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
|
|
8020
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
|
|
8021
|
+
]
|
|
8022
|
+
}
|
|
8023
|
+
));
|
|
8024
|
+
SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
|
|
8025
|
+
|
|
8026
|
+
const Popover = PopoverPrimitive__namespace.Root;
|
|
8027
|
+
const PopoverTrigger = PopoverPrimitive__namespace.Trigger;
|
|
8028
|
+
const PopoverContent = React__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8029
|
+
PopoverPrimitive__namespace.Content,
|
|
8030
|
+
{
|
|
8031
|
+
ref,
|
|
8032
|
+
align,
|
|
8033
|
+
sideOffset,
|
|
8034
|
+
className: cn(
|
|
8035
|
+
"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
8036
|
+
className
|
|
8037
|
+
),
|
|
8038
|
+
...props
|
|
8039
|
+
}
|
|
8040
|
+
) }));
|
|
8041
|
+
PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
|
|
8042
|
+
|
|
8043
|
+
const Models = {
|
|
8044
|
+
openai: {
|
|
8045
|
+
models: openaiModels?.map((model) => ({ provider: "openai", model, icon: "openai.chat" })),
|
|
8046
|
+
icon: "openai.chat"
|
|
8047
|
+
},
|
|
8048
|
+
anthropic: {
|
|
8049
|
+
models: anthropicModels?.map((model) => ({ provider: "anthropic", model, icon: "anthropic.chat" })),
|
|
8050
|
+
icon: "anthropic.chat"
|
|
8051
|
+
},
|
|
8052
|
+
google: {
|
|
8053
|
+
models: googleModels?.map((model) => ({ provider: "google", model, icon: "GOOGLE" })),
|
|
8054
|
+
icon: "GOOGLE"
|
|
8055
|
+
},
|
|
8056
|
+
xAi: {
|
|
8057
|
+
models: xAIModels?.map((model) => ({ provider: "xai", model, icon: "X_GROK" })),
|
|
8058
|
+
icon: "X_GROK"
|
|
8059
|
+
},
|
|
8060
|
+
groq: {
|
|
8061
|
+
models: groqModels?.map((model) => ({ provider: "groq", model, icon: "GROQ" })),
|
|
8062
|
+
icon: "GROQ"
|
|
8063
|
+
}
|
|
8064
|
+
};
|
|
8065
|
+
const AgentMetadataModelSwitcher = ({
|
|
8066
|
+
defaultProvider,
|
|
8067
|
+
defaultModel,
|
|
8068
|
+
updateModel,
|
|
8069
|
+
closeEditor,
|
|
8070
|
+
modelProviders
|
|
8071
|
+
}) => {
|
|
8072
|
+
const [selectedModel, setSelectedModel] = React.useState(defaultModel);
|
|
8073
|
+
const [showSuggestions, setShowSuggestions] = React.useState(false);
|
|
8074
|
+
const [selectedProvider, setSelectedProvider] = React.useState(() => {
|
|
8075
|
+
if (defaultProvider) {
|
|
8076
|
+
const providerOnly = defaultProvider.split(".")[0];
|
|
8077
|
+
return providerOnly;
|
|
8078
|
+
}
|
|
8079
|
+
return "";
|
|
8080
|
+
});
|
|
8081
|
+
const [loading, setLoading] = React.useState(false);
|
|
8082
|
+
const modelsList = Object.entries(Models).filter(([provider]) => modelProviders.includes(provider));
|
|
8083
|
+
const allModels = modelsList.flatMap(([_, { models }]) => models);
|
|
8084
|
+
const providersList = modelsList.map(([provider, { icon }]) => ({ provider, icon }));
|
|
8085
|
+
const model = allModels.find((model2) => model2.model === selectedModel);
|
|
8086
|
+
const handleSave = async () => {
|
|
8087
|
+
setLoading(true);
|
|
8088
|
+
const providerToUse = model?.provider ?? selectedProvider;
|
|
8089
|
+
await updateModel({ provider: providerToUse, modelId: selectedModel });
|
|
8090
|
+
setLoading(false);
|
|
8091
|
+
closeEditor();
|
|
8092
|
+
};
|
|
8093
|
+
const filteredModels = allModels.filter((model2) => model2.model.includes(selectedModel));
|
|
8094
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8095
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8096
|
+
Select,
|
|
8097
|
+
{
|
|
8098
|
+
value: model?.provider ?? selectedProvider,
|
|
8099
|
+
onValueChange: setSelectedProvider,
|
|
8100
|
+
disabled: !!model?.provider,
|
|
8101
|
+
children: [
|
|
8102
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectTrigger, { className: "max-w-[150px]", children: /* @__PURE__ */ jsxRuntime.jsx(SelectValue, { placeholder: "Select provider" }) }),
|
|
8103
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectContent, { children: providersList.map((provider) => /* @__PURE__ */ jsxRuntime.jsx(SelectItem, { value: provider.provider, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8104
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { children: providerMapToIcon[provider.icon] }),
|
|
8105
|
+
provider.provider
|
|
8106
|
+
] }) }, provider.provider)) })
|
|
8107
|
+
]
|
|
8108
|
+
}
|
|
8109
|
+
),
|
|
8110
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: showSuggestions, children: [
|
|
8111
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8112
|
+
Input,
|
|
8113
|
+
{
|
|
8114
|
+
id: "model-input",
|
|
8115
|
+
list: "model-suggestions",
|
|
8116
|
+
className: "flex-1",
|
|
8117
|
+
type: "text",
|
|
8118
|
+
value: selectedModel,
|
|
8119
|
+
onChange: (e) => {
|
|
8120
|
+
setSelectedModel(e.target.value);
|
|
8121
|
+
setShowSuggestions(true);
|
|
8122
|
+
},
|
|
8123
|
+
placeholder: "Enter model name or select from suggestions..."
|
|
8124
|
+
}
|
|
8125
|
+
) }),
|
|
8126
|
+
filteredModels.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8127
|
+
PopoverContent,
|
|
8128
|
+
{
|
|
8129
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
8130
|
+
className: "flex flex-col gap-2 w-[var(--radix-popover-trigger-width)] max-h-[calc(var(--radix-popover-content-available-height)-50px)] overflow-y-auto",
|
|
8131
|
+
children: filteredModels.map((model2) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8132
|
+
"div",
|
|
8133
|
+
{
|
|
8134
|
+
className: "flex items-center gap-2 cursor-pointer hover:bg-surface5 p-2",
|
|
8135
|
+
onClick: () => {
|
|
8136
|
+
setSelectedModel(model2.model);
|
|
8137
|
+
setShowSuggestions(false);
|
|
8138
|
+
},
|
|
8139
|
+
children: [
|
|
8140
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { children: providerMapToIcon[model2.icon] }),
|
|
8141
|
+
model2.model
|
|
8142
|
+
]
|
|
8143
|
+
},
|
|
8144
|
+
model2.provider + model2.model
|
|
8145
|
+
))
|
|
8146
|
+
}
|
|
8147
|
+
)
|
|
8148
|
+
] }),
|
|
8149
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
|
|
8150
|
+
/* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: handleSave, className: "text-icon3 hover:text-icon6", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: loading ? /* @__PURE__ */ jsxRuntime.jsx(Spinner, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, {}) }) }) }),
|
|
8151
|
+
/* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { children: loading ? "Saving..." : "Save new model" })
|
|
8152
|
+
] })
|
|
8153
|
+
] }) });
|
|
8154
|
+
};
|
|
8155
|
+
|
|
7826
8156
|
const AgentMetadata = ({
|
|
7827
8157
|
agent,
|
|
7828
8158
|
promptSlot,
|
|
7829
8159
|
hasMemoryEnabled,
|
|
7830
8160
|
computeToolLink,
|
|
7831
|
-
computeWorkflowLink
|
|
8161
|
+
computeWorkflowLink,
|
|
8162
|
+
updateModel,
|
|
8163
|
+
modelProviders
|
|
7832
8164
|
}) => {
|
|
8165
|
+
const [isEditingModel, setIsEditingModel] = React.useState(false);
|
|
7833
8166
|
const providerIcon = providerMapToIcon[agent.provider || "openai.chat"];
|
|
7834
8167
|
const agentTools = agent.tools ?? {};
|
|
7835
8168
|
const tools = Object.keys(agentTools).map((key) => agentTools[key]);
|
|
7836
8169
|
const agentWorkflows = agent.workflows ?? {};
|
|
7837
8170
|
const workflows = Object.keys(agentWorkflows).map((key) => agentWorkflows[key]);
|
|
7838
8171
|
return /* @__PURE__ */ jsxRuntime.jsxs(AgentMetadataWrapper, { children: [
|
|
7839
|
-
/* @__PURE__ */ jsxRuntime.jsx(AgentMetadataSection, { title: "Model", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8172
|
+
/* @__PURE__ */ jsxRuntime.jsx(AgentMetadataSection, { title: "Model", children: isEditingModel ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8173
|
+
AgentMetadataModelSwitcher,
|
|
8174
|
+
{
|
|
8175
|
+
defaultProvider: agent.provider,
|
|
8176
|
+
defaultModel: agent.modelId,
|
|
8177
|
+
updateModel,
|
|
8178
|
+
closeEditor: () => setIsEditingModel(false),
|
|
8179
|
+
modelProviders
|
|
8180
|
+
}
|
|
8181
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8182
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge$1, { icon: providerIcon, className: "font-medium", children: agent.modelId || "N/A" }),
|
|
8183
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { onClick: () => setIsEditingModel(true), className: "text-icon3 hover:text-icon6", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EditIcon, {}) }) })
|
|
8184
|
+
] }) }),
|
|
7840
8185
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7841
8186
|
AgentMetadataSection,
|
|
7842
8187
|
{
|
|
@@ -11907,23 +12252,6 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
11907
12252
|
}
|
|
11908
12253
|
Calendar.displayName = "Calendar";
|
|
11909
12254
|
|
|
11910
|
-
const Popover = PopoverPrimitive__namespace.Root;
|
|
11911
|
-
const PopoverTrigger = PopoverPrimitive__namespace.Trigger;
|
|
11912
|
-
const PopoverContent = React__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11913
|
-
PopoverPrimitive__namespace.Content,
|
|
11914
|
-
{
|
|
11915
|
-
ref,
|
|
11916
|
-
align,
|
|
11917
|
-
sideOffset,
|
|
11918
|
-
className: cn(
|
|
11919
|
-
"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
11920
|
-
className
|
|
11921
|
-
),
|
|
11922
|
-
...props
|
|
11923
|
-
}
|
|
11924
|
-
) }));
|
|
11925
|
-
PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
|
|
11926
|
-
|
|
11927
12255
|
const DatePicker = ({
|
|
11928
12256
|
value,
|
|
11929
12257
|
setValue,
|
|
@@ -12109,65 +12437,6 @@ const DateField = ({ inputProps, field, error, id }) => {
|
|
|
12109
12437
|
);
|
|
12110
12438
|
};
|
|
12111
12439
|
|
|
12112
|
-
const Select = SelectPrimitive__namespace.Root;
|
|
12113
|
-
const SelectValue = SelectPrimitive__namespace.Value;
|
|
12114
|
-
const SelectTrigger = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12115
|
-
SelectPrimitive__namespace.Trigger,
|
|
12116
|
-
{
|
|
12117
|
-
ref,
|
|
12118
|
-
className: cn(
|
|
12119
|
-
"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
12120
|
-
className
|
|
12121
|
-
),
|
|
12122
|
-
...props,
|
|
12123
|
-
children: [
|
|
12124
|
-
children,
|
|
12125
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
12126
|
-
]
|
|
12127
|
-
}
|
|
12128
|
-
));
|
|
12129
|
-
SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
|
|
12130
|
-
const SelectContent = React__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12131
|
-
SelectPrimitive__namespace.Content,
|
|
12132
|
-
{
|
|
12133
|
-
ref,
|
|
12134
|
-
className: cn(
|
|
12135
|
-
"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
12136
|
-
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
12137
|
-
className
|
|
12138
|
-
),
|
|
12139
|
-
position,
|
|
12140
|
-
...props,
|
|
12141
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12142
|
-
SelectPrimitive__namespace.Viewport,
|
|
12143
|
-
{
|
|
12144
|
-
className: cn(
|
|
12145
|
-
"p-1",
|
|
12146
|
-
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
12147
|
-
),
|
|
12148
|
-
children
|
|
12149
|
-
}
|
|
12150
|
-
)
|
|
12151
|
-
}
|
|
12152
|
-
) }));
|
|
12153
|
-
SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
|
|
12154
|
-
const SelectItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12155
|
-
SelectPrimitive__namespace.Item,
|
|
12156
|
-
{
|
|
12157
|
-
ref,
|
|
12158
|
-
className: cn(
|
|
12159
|
-
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-mastra-el-5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
12160
|
-
className
|
|
12161
|
-
),
|
|
12162
|
-
...props,
|
|
12163
|
-
children: [
|
|
12164
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
|
|
12165
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
|
|
12166
|
-
]
|
|
12167
|
-
}
|
|
12168
|
-
));
|
|
12169
|
-
SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
|
|
12170
|
-
|
|
12171
12440
|
const SelectField = ({ field, inputProps, error, id, value }) => {
|
|
12172
12441
|
const { key, ...props } = inputProps;
|
|
12173
12442
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -12385,11 +12654,38 @@ function inferFieldType(schema, fieldConfig) {
|
|
|
12385
12654
|
return "string";
|
|
12386
12655
|
}
|
|
12387
12656
|
|
|
12657
|
+
function extractNumberConstraints(schema) {
|
|
12658
|
+
const constraints = {};
|
|
12659
|
+
let baseSchema = getBaseSchema(schema);
|
|
12660
|
+
if (baseSchema._def && baseSchema._def.checks) {
|
|
12661
|
+
for (const check of baseSchema._def.checks) {
|
|
12662
|
+
if (check.kind === "min" && check.inclusive) {
|
|
12663
|
+
constraints.min = check.value;
|
|
12664
|
+
} else if (check.kind === "max" && check.inclusive) {
|
|
12665
|
+
constraints.max = check.value;
|
|
12666
|
+
} else if (check.kind === "multipleOf") {
|
|
12667
|
+
constraints.step = check.value;
|
|
12668
|
+
}
|
|
12669
|
+
}
|
|
12670
|
+
}
|
|
12671
|
+
return constraints;
|
|
12672
|
+
}
|
|
12388
12673
|
function parseField(key, schema) {
|
|
12389
12674
|
const baseSchema = getBaseSchema(schema);
|
|
12390
|
-
|
|
12675
|
+
let fieldConfig = zod.getFieldConfigInZodStack(schema);
|
|
12391
12676
|
const type = inferFieldType(baseSchema, fieldConfig);
|
|
12392
12677
|
const defaultValue = zod.getDefaultValueInZodStack(schema);
|
|
12678
|
+
if (type === "number" && baseSchema instanceof z.z.ZodNumber) {
|
|
12679
|
+
const constraints = extractNumberConstraints(schema);
|
|
12680
|
+
if (Object.keys(constraints).length > 0) {
|
|
12681
|
+
if (!fieldConfig) {
|
|
12682
|
+
fieldConfig = {};
|
|
12683
|
+
}
|
|
12684
|
+
if (typeof fieldConfig === "object") {
|
|
12685
|
+
fieldConfig.inputProps = { ...fieldConfig?.inputProps, ...constraints };
|
|
12686
|
+
}
|
|
12687
|
+
}
|
|
12688
|
+
}
|
|
12393
12689
|
const options = baseSchema._def?.values;
|
|
12394
12690
|
let optionValues = [];
|
|
12395
12691
|
if (options) {
|