@contractspec/example.agent-console 3.7.6 → 3.7.7
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/.turbo/turbo-build.log +18 -18
- package/AGENTS.md +50 -31
- package/README.md +69 -77
- package/dist/agent/agent.event.js +1 -1
- package/dist/agent/agent.operation.js +1 -1
- package/dist/agent/index.d.ts +5 -5
- package/dist/agent/index.js +1 -1
- package/dist/browser/agent/agent.event.js +1 -1
- package/dist/browser/agent/agent.operation.js +1 -1
- package/dist/browser/agent/index.js +1 -1
- package/dist/browser/index.js +2145 -2145
- package/dist/browser/presentations/index.js +4 -4
- package/dist/browser/run/index.js +536 -536
- package/dist/browser/run/run.event.js +2 -2
- package/dist/browser/run/run.presentation.js +2 -2
- package/dist/browser/tool/index.js +260 -260
- package/dist/browser/tool/tool.event.js +1 -1
- package/dist/browser/tool/tool.presentation.js +2 -2
- package/dist/browser/ui/AgentDashboard.js +956 -956
- package/dist/browser/ui/AgentRunList.js +16 -16
- package/dist/browser/ui/AgentToolRegistry.js +9 -9
- package/dist/browser/ui/hooks/index.js +153 -153
- package/dist/browser/ui/hooks/useAgentList.js +1 -1
- package/dist/browser/ui/hooks/useAgentMutations.js +1 -1
- package/dist/browser/ui/hooks/useRunList.js +1 -1
- package/dist/browser/ui/hooks/useToolList.js +1 -1
- package/dist/browser/ui/index.js +1222 -1222
- package/dist/browser/ui/modals/AgentActionsModal.js +13 -13
- package/dist/browser/ui/modals/CreateAgentModal.js +15 -15
- package/dist/browser/ui/modals/index.js +297 -297
- package/dist/browser/ui/renderers/agent-list.renderer.js +7 -7
- package/dist/browser/ui/renderers/index.js +157 -157
- package/dist/browser/ui/views/AgentListView.js +7 -7
- package/dist/browser/ui/views/RunListView.js +16 -16
- package/dist/browser/ui/views/ToolRegistryView.js +9 -9
- package/dist/browser/ui/views/index.js +97 -97
- package/dist/handlers/index.d.ts +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2145 -2145
- package/dist/node/agent/agent.event.js +1 -1
- package/dist/node/agent/agent.operation.js +1 -1
- package/dist/node/agent/index.js +1 -1
- package/dist/node/index.js +2145 -2145
- package/dist/node/presentations/index.js +4 -4
- package/dist/node/run/index.js +536 -536
- package/dist/node/run/run.event.js +2 -2
- package/dist/node/run/run.presentation.js +2 -2
- package/dist/node/tool/index.js +260 -260
- package/dist/node/tool/tool.event.js +1 -1
- package/dist/node/tool/tool.presentation.js +2 -2
- package/dist/node/ui/AgentDashboard.js +956 -956
- package/dist/node/ui/AgentRunList.js +16 -16
- package/dist/node/ui/AgentToolRegistry.js +9 -9
- package/dist/node/ui/hooks/index.js +153 -153
- package/dist/node/ui/hooks/useAgentList.js +1 -1
- package/dist/node/ui/hooks/useAgentMutations.js +1 -1
- package/dist/node/ui/hooks/useRunList.js +1 -1
- package/dist/node/ui/hooks/useToolList.js +1 -1
- package/dist/node/ui/index.js +1222 -1222
- package/dist/node/ui/modals/AgentActionsModal.js +13 -13
- package/dist/node/ui/modals/CreateAgentModal.js +15 -15
- package/dist/node/ui/modals/index.js +297 -297
- package/dist/node/ui/renderers/agent-list.renderer.js +7 -7
- package/dist/node/ui/renderers/index.js +157 -157
- package/dist/node/ui/views/AgentListView.js +7 -7
- package/dist/node/ui/views/RunListView.js +16 -16
- package/dist/node/ui/views/ToolRegistryView.js +9 -9
- package/dist/node/ui/views/index.js +97 -97
- package/dist/presentations/index.d.ts +3 -5
- package/dist/presentations/index.js +4 -4
- package/dist/run/index.d.ts +7 -7
- package/dist/run/index.js +536 -536
- package/dist/run/run.event.js +2 -2
- package/dist/run/run.handler.d.ts +3 -0
- package/dist/run/run.presentation.js +2 -2
- package/dist/shared/index.d.ts +1 -1
- package/dist/tool/index.d.ts +7 -7
- package/dist/tool/index.js +260 -260
- package/dist/tool/tool.event.js +1 -1
- package/dist/tool/tool.handler.d.ts +1 -1
- package/dist/tool/tool.presentation.js +2 -2
- package/dist/ui/AgentDashboard.js +956 -956
- package/dist/ui/AgentRunList.js +16 -16
- package/dist/ui/AgentToolRegistry.js +9 -9
- package/dist/ui/hooks/index.d.ts +4 -4
- package/dist/ui/hooks/index.js +153 -153
- package/dist/ui/hooks/useAgentList.d.ts +5 -0
- package/dist/ui/hooks/useAgentList.js +1 -1
- package/dist/ui/hooks/useAgentMutations.d.ts +9 -2
- package/dist/ui/hooks/useAgentMutations.js +1 -1
- package/dist/ui/hooks/useRunList.d.ts +5 -0
- package/dist/ui/hooks/useRunList.js +1 -1
- package/dist/ui/hooks/useToolList.d.ts +5 -0
- package/dist/ui/hooks/useToolList.js +1 -1
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.js +1222 -1222
- package/dist/ui/modals/AgentActionsModal.js +13 -13
- package/dist/ui/modals/CreateAgentModal.js +15 -15
- package/dist/ui/modals/index.d.ts +1 -1
- package/dist/ui/modals/index.js +297 -297
- package/dist/ui/renderers/agent-list.markdown.d.ts +5 -0
- package/dist/ui/renderers/agent-list.renderer.js +7 -7
- package/dist/ui/renderers/dashboard.markdown.d.ts +5 -0
- package/dist/ui/renderers/index.d.ts +2 -2
- package/dist/ui/renderers/index.js +157 -157
- package/dist/ui/renderers/run-list.markdown.d.ts +5 -0
- package/dist/ui/renderers/tool-registry.markdown.d.ts +5 -0
- package/dist/ui/views/AgentListView.js +7 -7
- package/dist/ui/views/RunListView.js +16 -16
- package/dist/ui/views/ToolRegistryView.js +9 -9
- package/dist/ui/views/index.js +97 -97
- package/package.json +6 -6
- package/src/agent/agent.entity.ts +111 -111
- package/src/agent/agent.enum.ts +12 -12
- package/src/agent/agent.event.ts +91 -91
- package/src/agent/agent.handler.ts +123 -123
- package/src/agent/agent.operation.ts +400 -400
- package/src/agent/agent.presentation.ts +62 -62
- package/src/agent/agent.schema.ts +175 -175
- package/src/agent/agent.test-spec.ts +48 -48
- package/src/agent/index.ts +46 -51
- package/src/agent.capability.ts +11 -11
- package/src/agent.feature.ts +131 -131
- package/src/docs/agent-console.docblock.ts +42 -42
- package/src/example.ts +35 -35
- package/src/handlers/agent.handlers.ts +522 -521
- package/src/handlers/index.ts +12 -12
- package/src/index.ts +8 -9
- package/src/presentations/index.ts +11 -13
- package/src/run/index.ts +49 -54
- package/src/run/run.entity.ts +137 -137
- package/src/run/run.enum.ts +18 -18
- package/src/run/run.event.ts +174 -174
- package/src/run/run.handler.ts +92 -91
- package/src/run/run.operation.ts +474 -474
- package/src/run/run.presentation.ts +42 -42
- package/src/run/run.schema.ts +126 -126
- package/src/run/run.test-spec.ts +48 -48
- package/src/seeders/index.ts +21 -21
- package/src/shared/index.ts +1 -1
- package/src/shared/mock-agents.ts +76 -76
- package/src/shared/mock-runs.ts +102 -102
- package/src/shared/mock-tools.ts +140 -140
- package/src/shared/overlay-types.ts +23 -23
- package/src/tool/index.ts +39 -44
- package/src/tool/tool.entity.ts +73 -73
- package/src/tool/tool.enum.ts +13 -13
- package/src/tool/tool.event.ts +80 -80
- package/src/tool/tool.handler.ts +102 -102
- package/src/tool/tool.operation.ts +328 -328
- package/src/tool/tool.presentation.ts +43 -43
- package/src/tool/tool.schema.ts +106 -106
- package/src/tool/tool.test-spec.ts +48 -48
- package/src/ui/AgentDashboard.tsx +348 -348
- package/src/ui/hooks/index.ts +7 -7
- package/src/ui/hooks/useAgentList.ts +57 -56
- package/src/ui/hooks/useAgentMutations.ts +160 -159
- package/src/ui/hooks/useRunList.ts +58 -57
- package/src/ui/hooks/useToolList.ts +102 -101
- package/src/ui/index.ts +6 -9
- package/src/ui/modals/AgentActionsModal.tsx +262 -262
- package/src/ui/modals/CreateAgentModal.tsx +232 -232
- package/src/ui/modals/index.ts +1 -1
- package/src/ui/overlays/demo-overlays.ts +52 -52
- package/src/ui/renderers/agent-list.markdown.ts +61 -60
- package/src/ui/renderers/agent-list.renderer.tsx +14 -14
- package/src/ui/renderers/dashboard.markdown.ts +140 -139
- package/src/ui/renderers/index.ts +3 -4
- package/src/ui/renderers/run-list.markdown.ts +48 -47
- package/src/ui/renderers/tool-registry.markdown.ts +66 -65
- package/src/ui/views/AgentListView.tsx +90 -90
- package/src/ui/views/RunListView.tsx +141 -141
- package/src/ui/views/ToolRegistryView.tsx +113 -113
- package/tsconfig.json +7 -8
- package/tsdown.config.js +7 -3
package/dist/ui/modals/index.js
CHANGED
|
@@ -1,250 +1,9 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// src/ui/modals/
|
|
2
|
+
// src/ui/modals/AgentActionsModal.tsx
|
|
3
|
+
import { Button } from "@contractspec/lib.design-system";
|
|
3
4
|
import { useState } from "react";
|
|
4
|
-
import { Button, Input } from "@contractspec/lib.design-system";
|
|
5
5
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
6
6
|
"use client";
|
|
7
|
-
var MODEL_PROVIDERS = [
|
|
8
|
-
{
|
|
9
|
-
value: "openai",
|
|
10
|
-
label: "OpenAI",
|
|
11
|
-
models: ["gpt-5.4", "gpt-5-mini", "gpt-4o", "gpt-4-turbo", "gpt-3.5-turbo"]
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
value: "anthropic",
|
|
15
|
-
label: "Anthropic",
|
|
16
|
-
models: ["claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5"]
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
value: "google",
|
|
20
|
-
label: "Google",
|
|
21
|
-
models: [
|
|
22
|
-
"gemini-2.5-flash",
|
|
23
|
-
"gemini-2.5-pro",
|
|
24
|
-
"gemini-pro",
|
|
25
|
-
"gemini-ultra"
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
value: "mistral",
|
|
30
|
-
label: "Mistral",
|
|
31
|
-
models: [
|
|
32
|
-
"mistral-large-2512",
|
|
33
|
-
"mistral-large-latest",
|
|
34
|
-
"mistral-medium-latest",
|
|
35
|
-
"mistral-small-latest"
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
];
|
|
39
|
-
function CreateAgentModal({
|
|
40
|
-
isOpen,
|
|
41
|
-
onClose,
|
|
42
|
-
onSubmit,
|
|
43
|
-
isLoading = false
|
|
44
|
-
}) {
|
|
45
|
-
const [name, setName] = useState("");
|
|
46
|
-
const [description, setDescription] = useState("");
|
|
47
|
-
const [modelProvider, setModelProvider] = useState("openai");
|
|
48
|
-
const [modelName, setModelName] = useState("gpt-5.4");
|
|
49
|
-
const [systemPrompt, setSystemPrompt] = useState("");
|
|
50
|
-
const [error, setError] = useState(null);
|
|
51
|
-
const selectedProvider = MODEL_PROVIDERS.find((p) => p.value === modelProvider);
|
|
52
|
-
const handleSubmit = async (e) => {
|
|
53
|
-
e.preventDefault();
|
|
54
|
-
setError(null);
|
|
55
|
-
if (!name.trim()) {
|
|
56
|
-
setError("Agent name is required");
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
try {
|
|
60
|
-
await onSubmit({
|
|
61
|
-
name: name.trim(),
|
|
62
|
-
description: description.trim() || undefined,
|
|
63
|
-
modelProvider,
|
|
64
|
-
modelName,
|
|
65
|
-
systemPrompt: systemPrompt.trim() || undefined
|
|
66
|
-
});
|
|
67
|
-
setName("");
|
|
68
|
-
setDescription("");
|
|
69
|
-
setModelProvider("openai");
|
|
70
|
-
setModelName("gpt-5.4");
|
|
71
|
-
setSystemPrompt("");
|
|
72
|
-
onClose();
|
|
73
|
-
} catch (err) {
|
|
74
|
-
setError(err instanceof Error ? err.message : "Failed to create agent");
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
const handleProviderChange = (provider) => {
|
|
78
|
-
setModelProvider(provider);
|
|
79
|
-
const providerConfig = MODEL_PROVIDERS.find((p) => p.value === provider);
|
|
80
|
-
if (providerConfig) {
|
|
81
|
-
setModelName(providerConfig.models[0]);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
if (!isOpen)
|
|
85
|
-
return null;
|
|
86
|
-
return /* @__PURE__ */ jsxDEV("div", {
|
|
87
|
-
className: "fixed inset-0 z-50 flex items-center justify-center",
|
|
88
|
-
children: [
|
|
89
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
90
|
-
className: "bg-background/80 absolute inset-0 backdrop-blur-sm",
|
|
91
|
-
onClick: onClose,
|
|
92
|
-
role: "button",
|
|
93
|
-
tabIndex: 0,
|
|
94
|
-
onKeyDown: (e) => {
|
|
95
|
-
if (e.key === "Enter" || e.key === " ")
|
|
96
|
-
onClose();
|
|
97
|
-
},
|
|
98
|
-
"aria-label": "Close modal"
|
|
99
|
-
}, undefined, false, undefined, this),
|
|
100
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
101
|
-
className: "bg-card border-border relative z-10 max-h-[90vh] w-full max-w-lg overflow-y-auto rounded-xl border p-6 shadow-xl",
|
|
102
|
-
children: [
|
|
103
|
-
/* @__PURE__ */ jsxDEV("h2", {
|
|
104
|
-
className: "mb-4 text-xl font-semibold",
|
|
105
|
-
children: "Create New Agent"
|
|
106
|
-
}, undefined, false, undefined, this),
|
|
107
|
-
/* @__PURE__ */ jsxDEV("form", {
|
|
108
|
-
onSubmit: handleSubmit,
|
|
109
|
-
className: "space-y-4",
|
|
110
|
-
children: [
|
|
111
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
112
|
-
children: [
|
|
113
|
-
/* @__PURE__ */ jsxDEV("label", {
|
|
114
|
-
htmlFor: "agent-name",
|
|
115
|
-
className: "text-muted-foreground mb-1 block text-sm font-medium",
|
|
116
|
-
children: "Agent Name *"
|
|
117
|
-
}, undefined, false, undefined, this),
|
|
118
|
-
/* @__PURE__ */ jsxDEV(Input, {
|
|
119
|
-
id: "agent-name",
|
|
120
|
-
value: name,
|
|
121
|
-
onChange: (e) => setName(e.target.value),
|
|
122
|
-
placeholder: "e.g., Customer Support Bot",
|
|
123
|
-
disabled: isLoading
|
|
124
|
-
}, undefined, false, undefined, this)
|
|
125
|
-
]
|
|
126
|
-
}, undefined, true, undefined, this),
|
|
127
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
128
|
-
children: [
|
|
129
|
-
/* @__PURE__ */ jsxDEV("label", {
|
|
130
|
-
htmlFor: "agent-description",
|
|
131
|
-
className: "text-muted-foreground mb-1 block text-sm font-medium",
|
|
132
|
-
children: "Description"
|
|
133
|
-
}, undefined, false, undefined, this),
|
|
134
|
-
/* @__PURE__ */ jsxDEV("textarea", {
|
|
135
|
-
id: "agent-description",
|
|
136
|
-
value: description,
|
|
137
|
-
onChange: (e) => setDescription(e.target.value),
|
|
138
|
-
placeholder: "Describe what this agent does...",
|
|
139
|
-
rows: 2,
|
|
140
|
-
disabled: isLoading,
|
|
141
|
-
className: "border-input bg-background focus:ring-ring w-full rounded-md border px-3 py-2 text-sm focus:ring-2 focus:outline-none disabled:opacity-50"
|
|
142
|
-
}, undefined, false, undefined, this)
|
|
143
|
-
]
|
|
144
|
-
}, undefined, true, undefined, this),
|
|
145
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
146
|
-
className: "flex gap-3",
|
|
147
|
-
children: [
|
|
148
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
149
|
-
className: "flex-1",
|
|
150
|
-
children: [
|
|
151
|
-
/* @__PURE__ */ jsxDEV("label", {
|
|
152
|
-
htmlFor: "model-provider",
|
|
153
|
-
className: "text-muted-foreground mb-1 block text-sm font-medium",
|
|
154
|
-
children: "Provider *"
|
|
155
|
-
}, undefined, false, undefined, this),
|
|
156
|
-
/* @__PURE__ */ jsxDEV("select", {
|
|
157
|
-
id: "model-provider",
|
|
158
|
-
value: modelProvider,
|
|
159
|
-
onChange: (e) => handleProviderChange(e.target.value),
|
|
160
|
-
disabled: isLoading,
|
|
161
|
-
className: "border-input bg-background focus:ring-ring h-10 w-full rounded-md border px-3 py-2 text-sm focus:ring-2 focus:outline-none disabled:opacity-50",
|
|
162
|
-
children: MODEL_PROVIDERS.map((p) => /* @__PURE__ */ jsxDEV("option", {
|
|
163
|
-
value: p.value,
|
|
164
|
-
children: p.label
|
|
165
|
-
}, p.value, false, undefined, this))
|
|
166
|
-
}, undefined, false, undefined, this)
|
|
167
|
-
]
|
|
168
|
-
}, undefined, true, undefined, this),
|
|
169
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
170
|
-
className: "flex-1",
|
|
171
|
-
children: [
|
|
172
|
-
/* @__PURE__ */ jsxDEV("label", {
|
|
173
|
-
htmlFor: "model-name",
|
|
174
|
-
className: "text-muted-foreground mb-1 block text-sm font-medium",
|
|
175
|
-
children: "Model *"
|
|
176
|
-
}, undefined, false, undefined, this),
|
|
177
|
-
/* @__PURE__ */ jsxDEV("select", {
|
|
178
|
-
id: "model-name",
|
|
179
|
-
value: modelName,
|
|
180
|
-
onChange: (e) => setModelName(e.target.value),
|
|
181
|
-
disabled: isLoading,
|
|
182
|
-
className: "border-input bg-background focus:ring-ring h-10 w-full rounded-md border px-3 py-2 text-sm focus:ring-2 focus:outline-none disabled:opacity-50",
|
|
183
|
-
children: selectedProvider?.models.map((m) => /* @__PURE__ */ jsxDEV("option", {
|
|
184
|
-
value: m,
|
|
185
|
-
children: m
|
|
186
|
-
}, m, false, undefined, this))
|
|
187
|
-
}, undefined, false, undefined, this)
|
|
188
|
-
]
|
|
189
|
-
}, undefined, true, undefined, this)
|
|
190
|
-
]
|
|
191
|
-
}, undefined, true, undefined, this),
|
|
192
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
193
|
-
children: [
|
|
194
|
-
/* @__PURE__ */ jsxDEV("label", {
|
|
195
|
-
htmlFor: "system-prompt",
|
|
196
|
-
className: "text-muted-foreground mb-1 block text-sm font-medium",
|
|
197
|
-
children: "System Prompt"
|
|
198
|
-
}, undefined, false, undefined, this),
|
|
199
|
-
/* @__PURE__ */ jsxDEV("textarea", {
|
|
200
|
-
id: "system-prompt",
|
|
201
|
-
value: systemPrompt,
|
|
202
|
-
onChange: (e) => setSystemPrompt(e.target.value),
|
|
203
|
-
placeholder: "You are a helpful assistant that...",
|
|
204
|
-
rows: 4,
|
|
205
|
-
disabled: isLoading,
|
|
206
|
-
className: "border-input bg-background focus:ring-ring w-full rounded-md border px-3 py-2 font-mono text-sm focus:ring-2 focus:outline-none disabled:opacity-50"
|
|
207
|
-
}, undefined, false, undefined, this),
|
|
208
|
-
/* @__PURE__ */ jsxDEV("p", {
|
|
209
|
-
className: "text-muted-foreground mt-1 text-xs",
|
|
210
|
-
children: "Instructions that define the agent's behavior"
|
|
211
|
-
}, undefined, false, undefined, this)
|
|
212
|
-
]
|
|
213
|
-
}, undefined, true, undefined, this),
|
|
214
|
-
error && /* @__PURE__ */ jsxDEV("div", {
|
|
215
|
-
className: "bg-destructive/10 text-destructive rounded-md p-3 text-sm",
|
|
216
|
-
children: error
|
|
217
|
-
}, undefined, false, undefined, this),
|
|
218
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
219
|
-
className: "flex justify-end gap-3 pt-2",
|
|
220
|
-
children: [
|
|
221
|
-
/* @__PURE__ */ jsxDEV(Button, {
|
|
222
|
-
type: "button",
|
|
223
|
-
variant: "ghost",
|
|
224
|
-
onPress: onClose,
|
|
225
|
-
disabled: isLoading,
|
|
226
|
-
children: "Cancel"
|
|
227
|
-
}, undefined, false, undefined, this),
|
|
228
|
-
/* @__PURE__ */ jsxDEV(Button, {
|
|
229
|
-
type: "submit",
|
|
230
|
-
disabled: isLoading,
|
|
231
|
-
children: isLoading ? "Creating..." : "Create Agent"
|
|
232
|
-
}, undefined, false, undefined, this)
|
|
233
|
-
]
|
|
234
|
-
}, undefined, true, undefined, this)
|
|
235
|
-
]
|
|
236
|
-
}, undefined, true, undefined, this)
|
|
237
|
-
]
|
|
238
|
-
}, undefined, true, undefined, this)
|
|
239
|
-
]
|
|
240
|
-
}, undefined, true, undefined, this);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// src/ui/modals/AgentActionsModal.tsx
|
|
244
|
-
import { useState as useState2 } from "react";
|
|
245
|
-
import { Button as Button2 } from "@contractspec/lib.design-system";
|
|
246
|
-
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
247
|
-
"use client";
|
|
248
7
|
function getStatusColor(status) {
|
|
249
8
|
switch (status) {
|
|
250
9
|
case "ACTIVE":
|
|
@@ -269,10 +28,10 @@ function AgentActionsModal({
|
|
|
269
28
|
onExecute,
|
|
270
29
|
isLoading = false
|
|
271
30
|
}) {
|
|
272
|
-
const [mode, setMode] =
|
|
273
|
-
const [message, setMessage] =
|
|
274
|
-
const [confirmAction, setConfirmAction] =
|
|
275
|
-
const [error, setError] =
|
|
31
|
+
const [mode, setMode] = useState("menu");
|
|
32
|
+
const [message, setMessage] = useState("");
|
|
33
|
+
const [confirmAction, setConfirmAction] = useState(null);
|
|
34
|
+
const [error, setError] = useState(null);
|
|
276
35
|
const resetForm = () => {
|
|
277
36
|
setMode("menu");
|
|
278
37
|
setMessage("");
|
|
@@ -321,11 +80,11 @@ function AgentActionsModal({
|
|
|
321
80
|
};
|
|
322
81
|
if (!isOpen || !agent)
|
|
323
82
|
return null;
|
|
324
|
-
return /* @__PURE__ */
|
|
83
|
+
return /* @__PURE__ */ jsxDEV("div", {
|
|
325
84
|
className: "fixed inset-0 z-50 flex items-center justify-center",
|
|
326
85
|
children: [
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
className: "bg-background/80
|
|
86
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
87
|
+
className: "absolute inset-0 bg-background/80 backdrop-blur-sm",
|
|
329
88
|
onClick: handleClose,
|
|
330
89
|
role: "button",
|
|
331
90
|
tabIndex: 0,
|
|
@@ -335,20 +94,20 @@ function AgentActionsModal({
|
|
|
335
94
|
},
|
|
336
95
|
"aria-label": "Close modal"
|
|
337
96
|
}, undefined, false, undefined, this),
|
|
338
|
-
/* @__PURE__ */
|
|
339
|
-
className: "
|
|
97
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
98
|
+
className: "relative z-10 w-full max-w-md rounded-xl border border-border bg-card p-6 shadow-xl",
|
|
340
99
|
children: [
|
|
341
|
-
/* @__PURE__ */
|
|
342
|
-
className: "
|
|
100
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
101
|
+
className: "mb-4 border-border border-b pb-4",
|
|
343
102
|
children: [
|
|
344
|
-
/* @__PURE__ */
|
|
345
|
-
className: "text-xl
|
|
103
|
+
/* @__PURE__ */ jsxDEV("h2", {
|
|
104
|
+
className: "font-semibold text-xl",
|
|
346
105
|
children: agent.name
|
|
347
106
|
}, undefined, false, undefined, this),
|
|
348
|
-
/* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
349
108
|
className: "mt-1 flex items-center gap-2",
|
|
350
109
|
children: [
|
|
351
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
352
111
|
className: "text-muted-foreground text-sm",
|
|
353
112
|
children: [
|
|
354
113
|
agent.modelProvider,
|
|
@@ -356,60 +115,60 @@ function AgentActionsModal({
|
|
|
356
115
|
agent.modelName
|
|
357
116
|
]
|
|
358
117
|
}, undefined, true, undefined, this),
|
|
359
|
-
/* @__PURE__ */
|
|
360
|
-
className: `rounded-full px-2 py-0.5 text-xs
|
|
118
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
119
|
+
className: `rounded-full px-2 py-0.5 font-medium text-xs ${getStatusColor(agent.status)}`,
|
|
361
120
|
children: agent.status
|
|
362
121
|
}, undefined, false, undefined, this)
|
|
363
122
|
]
|
|
364
123
|
}, undefined, true, undefined, this),
|
|
365
|
-
agent.description && /* @__PURE__ */
|
|
366
|
-
className: "text-muted-foreground
|
|
124
|
+
agent.description && /* @__PURE__ */ jsxDEV("p", {
|
|
125
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
367
126
|
children: agent.description
|
|
368
127
|
}, undefined, false, undefined, this)
|
|
369
128
|
]
|
|
370
129
|
}, undefined, true, undefined, this),
|
|
371
|
-
mode === "menu" && /* @__PURE__ */
|
|
130
|
+
mode === "menu" && /* @__PURE__ */ jsxDEV("div", {
|
|
372
131
|
className: "space-y-3",
|
|
373
132
|
children: [
|
|
374
|
-
agent.status === "ACTIVE" && /* @__PURE__ */
|
|
133
|
+
agent.status === "ACTIVE" && /* @__PURE__ */ jsxDEV(Button, {
|
|
375
134
|
className: "w-full justify-start",
|
|
376
135
|
variant: "ghost",
|
|
377
136
|
onPress: () => setMode("execute"),
|
|
378
137
|
children: [
|
|
379
|
-
/* @__PURE__ */
|
|
138
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
380
139
|
className: "mr-2",
|
|
381
140
|
children: "\u25B6\uFE0F"
|
|
382
141
|
}, undefined, false, undefined, this),
|
|
383
142
|
" Execute Agent"
|
|
384
143
|
]
|
|
385
144
|
}, undefined, true, undefined, this),
|
|
386
|
-
(agent.status === "DRAFT" || agent.status === "PAUSED") && /* @__PURE__ */
|
|
145
|
+
(agent.status === "DRAFT" || agent.status === "PAUSED") && /* @__PURE__ */ jsxDEV(Button, {
|
|
387
146
|
className: "w-full justify-start",
|
|
388
147
|
variant: "ghost",
|
|
389
148
|
onPress: () => handleStatusChange("activate"),
|
|
390
149
|
disabled: isLoading,
|
|
391
150
|
children: [
|
|
392
|
-
/* @__PURE__ */
|
|
151
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
393
152
|
className: "mr-2",
|
|
394
153
|
children: "\uD83D\uDFE2"
|
|
395
154
|
}, undefined, false, undefined, this),
|
|
396
155
|
" Activate Agent"
|
|
397
156
|
]
|
|
398
157
|
}, undefined, true, undefined, this),
|
|
399
|
-
agent.status === "ACTIVE" && /* @__PURE__ */
|
|
158
|
+
agent.status === "ACTIVE" && /* @__PURE__ */ jsxDEV(Button, {
|
|
400
159
|
className: "w-full justify-start",
|
|
401
160
|
variant: "ghost",
|
|
402
161
|
onPress: () => handleStatusChange("pause"),
|
|
403
162
|
disabled: isLoading,
|
|
404
163
|
children: [
|
|
405
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
406
165
|
className: "mr-2",
|
|
407
166
|
children: "\u23F8\uFE0F"
|
|
408
167
|
}, undefined, false, undefined, this),
|
|
409
168
|
" Pause Agent"
|
|
410
169
|
]
|
|
411
170
|
}, undefined, true, undefined, this),
|
|
412
|
-
agent.status !== "ARCHIVED" && /* @__PURE__ */
|
|
171
|
+
agent.status !== "ARCHIVED" && /* @__PURE__ */ jsxDEV(Button, {
|
|
413
172
|
className: "w-full justify-start text-yellow-600 hover:text-yellow-700",
|
|
414
173
|
variant: "ghost",
|
|
415
174
|
onPress: () => {
|
|
@@ -417,33 +176,33 @@ function AgentActionsModal({
|
|
|
417
176
|
setMode("confirm");
|
|
418
177
|
},
|
|
419
178
|
children: [
|
|
420
|
-
/* @__PURE__ */
|
|
179
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
421
180
|
className: "mr-2",
|
|
422
181
|
children: "\uD83D\uDCE6"
|
|
423
182
|
}, undefined, false, undefined, this),
|
|
424
183
|
" Archive Agent"
|
|
425
184
|
]
|
|
426
185
|
}, undefined, true, undefined, this),
|
|
427
|
-
agent.status === "ARCHIVED" && /* @__PURE__ */
|
|
186
|
+
agent.status === "ARCHIVED" && /* @__PURE__ */ jsxDEV(Button, {
|
|
428
187
|
className: "w-full justify-start",
|
|
429
188
|
variant: "ghost",
|
|
430
189
|
onPress: () => handleStatusChange("activate"),
|
|
431
190
|
disabled: isLoading,
|
|
432
191
|
children: [
|
|
433
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
434
193
|
className: "mr-2",
|
|
435
194
|
children: "\uD83D\uDD04"
|
|
436
195
|
}, undefined, false, undefined, this),
|
|
437
196
|
" Restore Agent"
|
|
438
197
|
]
|
|
439
198
|
}, undefined, true, undefined, this),
|
|
440
|
-
error && /* @__PURE__ */
|
|
441
|
-
className: "bg-destructive/10
|
|
199
|
+
error && /* @__PURE__ */ jsxDEV("div", {
|
|
200
|
+
className: "rounded-md bg-destructive/10 p-3 text-destructive text-sm",
|
|
442
201
|
children: error
|
|
443
202
|
}, undefined, false, undefined, this),
|
|
444
|
-
/* @__PURE__ */
|
|
203
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
445
204
|
className: "border-border border-t pt-3",
|
|
446
|
-
children: /* @__PURE__ */
|
|
205
|
+
children: /* @__PURE__ */ jsxDEV(Button, {
|
|
447
206
|
className: "w-full",
|
|
448
207
|
variant: "outline",
|
|
449
208
|
onPress: handleClose,
|
|
@@ -452,41 +211,41 @@ function AgentActionsModal({
|
|
|
452
211
|
}, undefined, false, undefined, this)
|
|
453
212
|
]
|
|
454
213
|
}, undefined, true, undefined, this),
|
|
455
|
-
mode === "execute" && /* @__PURE__ */
|
|
214
|
+
mode === "execute" && /* @__PURE__ */ jsxDEV("div", {
|
|
456
215
|
className: "space-y-4",
|
|
457
216
|
children: [
|
|
458
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
459
218
|
children: [
|
|
460
|
-
/* @__PURE__ */
|
|
219
|
+
/* @__PURE__ */ jsxDEV("label", {
|
|
461
220
|
htmlFor: "execute-message",
|
|
462
|
-
className: "
|
|
221
|
+
className: "mb-1 block font-medium text-muted-foreground text-sm",
|
|
463
222
|
children: "Message *"
|
|
464
223
|
}, undefined, false, undefined, this),
|
|
465
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ jsxDEV("textarea", {
|
|
466
225
|
id: "execute-message",
|
|
467
226
|
value: message,
|
|
468
227
|
onChange: (e) => setMessage(e.target.value),
|
|
469
228
|
placeholder: "Enter your message to the agent...",
|
|
470
229
|
rows: 4,
|
|
471
230
|
disabled: isLoading,
|
|
472
|
-
className: "
|
|
231
|
+
className: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50"
|
|
473
232
|
}, undefined, false, undefined, this)
|
|
474
233
|
]
|
|
475
234
|
}, undefined, true, undefined, this),
|
|
476
|
-
error && /* @__PURE__ */
|
|
477
|
-
className: "bg-destructive/10
|
|
235
|
+
error && /* @__PURE__ */ jsxDEV("div", {
|
|
236
|
+
className: "rounded-md bg-destructive/10 p-3 text-destructive text-sm",
|
|
478
237
|
children: error
|
|
479
238
|
}, undefined, false, undefined, this),
|
|
480
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
481
240
|
className: "flex justify-end gap-3 pt-2",
|
|
482
241
|
children: [
|
|
483
|
-
/* @__PURE__ */
|
|
242
|
+
/* @__PURE__ */ jsxDEV(Button, {
|
|
484
243
|
variant: "ghost",
|
|
485
244
|
onPress: () => setMode("menu"),
|
|
486
245
|
disabled: isLoading,
|
|
487
246
|
children: "Back"
|
|
488
247
|
}, undefined, false, undefined, this),
|
|
489
|
-
/* @__PURE__ */
|
|
248
|
+
/* @__PURE__ */ jsxDEV(Button, {
|
|
490
249
|
onPress: handleExecute,
|
|
491
250
|
disabled: isLoading,
|
|
492
251
|
children: isLoading ? "Executing..." : "\u25B6\uFE0F Execute"
|
|
@@ -495,42 +254,283 @@ function AgentActionsModal({
|
|
|
495
254
|
}, undefined, true, undefined, this)
|
|
496
255
|
]
|
|
497
256
|
}, undefined, true, undefined, this),
|
|
498
|
-
mode === "confirm" && confirmAction === "archive" && /* @__PURE__ */
|
|
257
|
+
mode === "confirm" && confirmAction === "archive" && /* @__PURE__ */ jsxDEV("div", {
|
|
499
258
|
className: "space-y-4",
|
|
500
259
|
children: [
|
|
501
|
-
/* @__PURE__ */
|
|
260
|
+
/* @__PURE__ */ jsxDEV("p", {
|
|
502
261
|
className: "text-muted-foreground",
|
|
503
262
|
children: [
|
|
504
263
|
"Are you sure you want to archive",
|
|
505
264
|
" ",
|
|
506
|
-
/* @__PURE__ */
|
|
507
|
-
className: "text-foreground
|
|
265
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
266
|
+
className: "font-medium text-foreground",
|
|
508
267
|
children: agent.name
|
|
509
268
|
}, undefined, false, undefined, this),
|
|
510
269
|
"?"
|
|
511
270
|
]
|
|
512
271
|
}, undefined, true, undefined, this),
|
|
513
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ jsxDEV("p", {
|
|
514
273
|
className: "text-muted-foreground text-sm",
|
|
515
274
|
children: "Archived agents cannot be executed but can be restored later."
|
|
516
275
|
}, undefined, false, undefined, this),
|
|
276
|
+
error && /* @__PURE__ */ jsxDEV("div", {
|
|
277
|
+
className: "rounded-md bg-destructive/10 p-3 text-destructive text-sm",
|
|
278
|
+
children: error
|
|
279
|
+
}, undefined, false, undefined, this),
|
|
280
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
281
|
+
className: "flex justify-end gap-3 pt-2",
|
|
282
|
+
children: [
|
|
283
|
+
/* @__PURE__ */ jsxDEV(Button, {
|
|
284
|
+
variant: "ghost",
|
|
285
|
+
onPress: () => setMode("menu"),
|
|
286
|
+
disabled: isLoading,
|
|
287
|
+
children: "Cancel"
|
|
288
|
+
}, undefined, false, undefined, this),
|
|
289
|
+
/* @__PURE__ */ jsxDEV(Button, {
|
|
290
|
+
onPress: () => handleStatusChange("archive"),
|
|
291
|
+
disabled: isLoading,
|
|
292
|
+
children: isLoading ? "Archiving..." : "\uD83D\uDCE6 Archive"
|
|
293
|
+
}, undefined, false, undefined, this)
|
|
294
|
+
]
|
|
295
|
+
}, undefined, true, undefined, this)
|
|
296
|
+
]
|
|
297
|
+
}, undefined, true, undefined, this)
|
|
298
|
+
]
|
|
299
|
+
}, undefined, true, undefined, this)
|
|
300
|
+
]
|
|
301
|
+
}, undefined, true, undefined, this);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// src/ui/modals/CreateAgentModal.tsx
|
|
305
|
+
import { Button as Button2, Input } from "@contractspec/lib.design-system";
|
|
306
|
+
import { useState as useState2 } from "react";
|
|
307
|
+
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
308
|
+
"use client";
|
|
309
|
+
var MODEL_PROVIDERS = [
|
|
310
|
+
{
|
|
311
|
+
value: "openai",
|
|
312
|
+
label: "OpenAI",
|
|
313
|
+
models: ["gpt-5.4", "gpt-5-mini", "gpt-4o", "gpt-4-turbo", "gpt-3.5-turbo"]
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
value: "anthropic",
|
|
317
|
+
label: "Anthropic",
|
|
318
|
+
models: ["claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5"]
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
value: "google",
|
|
322
|
+
label: "Google",
|
|
323
|
+
models: [
|
|
324
|
+
"gemini-2.5-flash",
|
|
325
|
+
"gemini-2.5-pro",
|
|
326
|
+
"gemini-pro",
|
|
327
|
+
"gemini-ultra"
|
|
328
|
+
]
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
value: "mistral",
|
|
332
|
+
label: "Mistral",
|
|
333
|
+
models: [
|
|
334
|
+
"mistral-large-2512",
|
|
335
|
+
"mistral-large-latest",
|
|
336
|
+
"mistral-medium-latest",
|
|
337
|
+
"mistral-small-latest"
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
];
|
|
341
|
+
function CreateAgentModal({
|
|
342
|
+
isOpen,
|
|
343
|
+
onClose,
|
|
344
|
+
onSubmit,
|
|
345
|
+
isLoading = false
|
|
346
|
+
}) {
|
|
347
|
+
const [name, setName] = useState2("");
|
|
348
|
+
const [description, setDescription] = useState2("");
|
|
349
|
+
const [modelProvider, setModelProvider] = useState2("openai");
|
|
350
|
+
const [modelName, setModelName] = useState2("gpt-5.4");
|
|
351
|
+
const [systemPrompt, setSystemPrompt] = useState2("");
|
|
352
|
+
const [error, setError] = useState2(null);
|
|
353
|
+
const selectedProvider = MODEL_PROVIDERS.find((p) => p.value === modelProvider);
|
|
354
|
+
const handleSubmit = async (e) => {
|
|
355
|
+
e.preventDefault();
|
|
356
|
+
setError(null);
|
|
357
|
+
if (!name.trim()) {
|
|
358
|
+
setError("Agent name is required");
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
try {
|
|
362
|
+
await onSubmit({
|
|
363
|
+
name: name.trim(),
|
|
364
|
+
description: description.trim() || undefined,
|
|
365
|
+
modelProvider,
|
|
366
|
+
modelName,
|
|
367
|
+
systemPrompt: systemPrompt.trim() || undefined
|
|
368
|
+
});
|
|
369
|
+
setName("");
|
|
370
|
+
setDescription("");
|
|
371
|
+
setModelProvider("openai");
|
|
372
|
+
setModelName("gpt-5.4");
|
|
373
|
+
setSystemPrompt("");
|
|
374
|
+
onClose();
|
|
375
|
+
} catch (err) {
|
|
376
|
+
setError(err instanceof Error ? err.message : "Failed to create agent");
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
const handleProviderChange = (provider) => {
|
|
380
|
+
setModelProvider(provider);
|
|
381
|
+
const providerConfig = MODEL_PROVIDERS.find((p) => p.value === provider);
|
|
382
|
+
if (providerConfig) {
|
|
383
|
+
setModelName(providerConfig.models[0]);
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
if (!isOpen)
|
|
387
|
+
return null;
|
|
388
|
+
return /* @__PURE__ */ jsxDEV2("div", {
|
|
389
|
+
className: "fixed inset-0 z-50 flex items-center justify-center",
|
|
390
|
+
children: [
|
|
391
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
392
|
+
className: "absolute inset-0 bg-background/80 backdrop-blur-sm",
|
|
393
|
+
onClick: onClose,
|
|
394
|
+
role: "button",
|
|
395
|
+
tabIndex: 0,
|
|
396
|
+
onKeyDown: (e) => {
|
|
397
|
+
if (e.key === "Enter" || e.key === " ")
|
|
398
|
+
onClose();
|
|
399
|
+
},
|
|
400
|
+
"aria-label": "Close modal"
|
|
401
|
+
}, undefined, false, undefined, this),
|
|
402
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
403
|
+
className: "relative z-10 max-h-[90vh] w-full max-w-lg overflow-y-auto rounded-xl border border-border bg-card p-6 shadow-xl",
|
|
404
|
+
children: [
|
|
405
|
+
/* @__PURE__ */ jsxDEV2("h2", {
|
|
406
|
+
className: "mb-4 font-semibold text-xl",
|
|
407
|
+
children: "Create New Agent"
|
|
408
|
+
}, undefined, false, undefined, this),
|
|
409
|
+
/* @__PURE__ */ jsxDEV2("form", {
|
|
410
|
+
onSubmit: handleSubmit,
|
|
411
|
+
className: "space-y-4",
|
|
412
|
+
children: [
|
|
413
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
414
|
+
children: [
|
|
415
|
+
/* @__PURE__ */ jsxDEV2("label", {
|
|
416
|
+
htmlFor: "agent-name",
|
|
417
|
+
className: "mb-1 block font-medium text-muted-foreground text-sm",
|
|
418
|
+
children: "Agent Name *"
|
|
419
|
+
}, undefined, false, undefined, this),
|
|
420
|
+
/* @__PURE__ */ jsxDEV2(Input, {
|
|
421
|
+
id: "agent-name",
|
|
422
|
+
value: name,
|
|
423
|
+
onChange: (e) => setName(e.target.value),
|
|
424
|
+
placeholder: "e.g., Customer Support Bot",
|
|
425
|
+
disabled: isLoading
|
|
426
|
+
}, undefined, false, undefined, this)
|
|
427
|
+
]
|
|
428
|
+
}, undefined, true, undefined, this),
|
|
429
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
430
|
+
children: [
|
|
431
|
+
/* @__PURE__ */ jsxDEV2("label", {
|
|
432
|
+
htmlFor: "agent-description",
|
|
433
|
+
className: "mb-1 block font-medium text-muted-foreground text-sm",
|
|
434
|
+
children: "Description"
|
|
435
|
+
}, undefined, false, undefined, this),
|
|
436
|
+
/* @__PURE__ */ jsxDEV2("textarea", {
|
|
437
|
+
id: "agent-description",
|
|
438
|
+
value: description,
|
|
439
|
+
onChange: (e) => setDescription(e.target.value),
|
|
440
|
+
placeholder: "Describe what this agent does...",
|
|
441
|
+
rows: 2,
|
|
442
|
+
disabled: isLoading,
|
|
443
|
+
className: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50"
|
|
444
|
+
}, undefined, false, undefined, this)
|
|
445
|
+
]
|
|
446
|
+
}, undefined, true, undefined, this),
|
|
447
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
448
|
+
className: "flex gap-3",
|
|
449
|
+
children: [
|
|
450
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
451
|
+
className: "flex-1",
|
|
452
|
+
children: [
|
|
453
|
+
/* @__PURE__ */ jsxDEV2("label", {
|
|
454
|
+
htmlFor: "model-provider",
|
|
455
|
+
className: "mb-1 block font-medium text-muted-foreground text-sm",
|
|
456
|
+
children: "Provider *"
|
|
457
|
+
}, undefined, false, undefined, this),
|
|
458
|
+
/* @__PURE__ */ jsxDEV2("select", {
|
|
459
|
+
id: "model-provider",
|
|
460
|
+
value: modelProvider,
|
|
461
|
+
onChange: (e) => handleProviderChange(e.target.value),
|
|
462
|
+
disabled: isLoading,
|
|
463
|
+
className: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50",
|
|
464
|
+
children: MODEL_PROVIDERS.map((p) => /* @__PURE__ */ jsxDEV2("option", {
|
|
465
|
+
value: p.value,
|
|
466
|
+
children: p.label
|
|
467
|
+
}, p.value, false, undefined, this))
|
|
468
|
+
}, undefined, false, undefined, this)
|
|
469
|
+
]
|
|
470
|
+
}, undefined, true, undefined, this),
|
|
471
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
472
|
+
className: "flex-1",
|
|
473
|
+
children: [
|
|
474
|
+
/* @__PURE__ */ jsxDEV2("label", {
|
|
475
|
+
htmlFor: "model-name",
|
|
476
|
+
className: "mb-1 block font-medium text-muted-foreground text-sm",
|
|
477
|
+
children: "Model *"
|
|
478
|
+
}, undefined, false, undefined, this),
|
|
479
|
+
/* @__PURE__ */ jsxDEV2("select", {
|
|
480
|
+
id: "model-name",
|
|
481
|
+
value: modelName,
|
|
482
|
+
onChange: (e) => setModelName(e.target.value),
|
|
483
|
+
disabled: isLoading,
|
|
484
|
+
className: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50",
|
|
485
|
+
children: selectedProvider?.models.map((m) => /* @__PURE__ */ jsxDEV2("option", {
|
|
486
|
+
value: m,
|
|
487
|
+
children: m
|
|
488
|
+
}, m, false, undefined, this))
|
|
489
|
+
}, undefined, false, undefined, this)
|
|
490
|
+
]
|
|
491
|
+
}, undefined, true, undefined, this)
|
|
492
|
+
]
|
|
493
|
+
}, undefined, true, undefined, this),
|
|
494
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
495
|
+
children: [
|
|
496
|
+
/* @__PURE__ */ jsxDEV2("label", {
|
|
497
|
+
htmlFor: "system-prompt",
|
|
498
|
+
className: "mb-1 block font-medium text-muted-foreground text-sm",
|
|
499
|
+
children: "System Prompt"
|
|
500
|
+
}, undefined, false, undefined, this),
|
|
501
|
+
/* @__PURE__ */ jsxDEV2("textarea", {
|
|
502
|
+
id: "system-prompt",
|
|
503
|
+
value: systemPrompt,
|
|
504
|
+
onChange: (e) => setSystemPrompt(e.target.value),
|
|
505
|
+
placeholder: "You are a helpful assistant that...",
|
|
506
|
+
rows: 4,
|
|
507
|
+
disabled: isLoading,
|
|
508
|
+
className: "w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50"
|
|
509
|
+
}, undefined, false, undefined, this),
|
|
510
|
+
/* @__PURE__ */ jsxDEV2("p", {
|
|
511
|
+
className: "mt-1 text-muted-foreground text-xs",
|
|
512
|
+
children: "Instructions that define the agent's behavior"
|
|
513
|
+
}, undefined, false, undefined, this)
|
|
514
|
+
]
|
|
515
|
+
}, undefined, true, undefined, this),
|
|
517
516
|
error && /* @__PURE__ */ jsxDEV2("div", {
|
|
518
|
-
className: "bg-destructive/10
|
|
517
|
+
className: "rounded-md bg-destructive/10 p-3 text-destructive text-sm",
|
|
519
518
|
children: error
|
|
520
519
|
}, undefined, false, undefined, this),
|
|
521
520
|
/* @__PURE__ */ jsxDEV2("div", {
|
|
522
521
|
className: "flex justify-end gap-3 pt-2",
|
|
523
522
|
children: [
|
|
524
523
|
/* @__PURE__ */ jsxDEV2(Button2, {
|
|
524
|
+
type: "button",
|
|
525
525
|
variant: "ghost",
|
|
526
|
-
onPress:
|
|
526
|
+
onPress: onClose,
|
|
527
527
|
disabled: isLoading,
|
|
528
528
|
children: "Cancel"
|
|
529
529
|
}, undefined, false, undefined, this),
|
|
530
530
|
/* @__PURE__ */ jsxDEV2(Button2, {
|
|
531
|
-
|
|
531
|
+
type: "submit",
|
|
532
532
|
disabled: isLoading,
|
|
533
|
-
children: isLoading ? "
|
|
533
|
+
children: isLoading ? "Creating..." : "Create Agent"
|
|
534
534
|
}, undefined, false, undefined, this)
|
|
535
535
|
]
|
|
536
536
|
}, undefined, true, undefined, this)
|