@contractspec/example.agent-console 3.7.6 → 3.8.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.
Files changed (288) hide show
  1. package/.turbo/turbo-build.log +126 -105
  2. package/AGENTS.md +52 -31
  3. package/CHANGELOG.md +29 -0
  4. package/README.md +112 -83
  5. package/dist/agent/agent.event.js +1 -1
  6. package/dist/agent/agent.handler.d.ts +3 -0
  7. package/dist/agent/agent.handler.js +730 -1
  8. package/dist/agent/agent.operation.js +1 -1
  9. package/dist/agent/index.d.ts +5 -5
  10. package/dist/agent/index.js +74 -73
  11. package/dist/agent.feature.js +179 -0
  12. package/dist/browser/agent/agent.event.js +1 -1
  13. package/dist/browser/agent/agent.handler.js +730 -1
  14. package/dist/browser/agent/agent.operation.js +1 -1
  15. package/dist/browser/agent/index.js +74 -73
  16. package/dist/browser/agent.feature.js +179 -0
  17. package/dist/browser/docs/agent-console.docblock.js +11 -8
  18. package/dist/browser/docs/index.js +11 -8
  19. package/dist/browser/example.js +2 -3
  20. package/dist/browser/handlers/agent.handlers.js +1883 -2
  21. package/dist/browser/handlers/index.js +2142 -8
  22. package/dist/browser/index.js +4075 -3161
  23. package/dist/browser/presentations/index.js +51 -51
  24. package/dist/browser/run/index.js +380 -374
  25. package/dist/browser/run/run.event.js +2 -2
  26. package/dist/browser/run/run.handler.js +666 -1
  27. package/dist/browser/run/run.presentation.js +2 -2
  28. package/dist/browser/shared/index.js +293 -1
  29. package/dist/browser/shared/mock-runs.js +5 -0
  30. package/dist/browser/tool/index.js +161 -161
  31. package/dist/browser/tool/tool.event.js +1 -1
  32. package/dist/browser/tool/tool.handler.js +479 -3
  33. package/dist/browser/tool/tool.presentation.js +2 -2
  34. package/dist/browser/ui/AgentDashboard.js +1816 -931
  35. package/dist/browser/ui/AgentDashboard.visualizations.js +217 -0
  36. package/dist/browser/ui/AgentRunList.js +360 -128
  37. package/dist/browser/ui/AgentToolRegistry.js +9 -9
  38. package/dist/browser/ui/hooks/index.js +611 -161
  39. package/dist/browser/ui/hooks/useAgentList.js +1 -1
  40. package/dist/browser/ui/hooks/useAgentMutations.js +444 -9
  41. package/dist/browser/ui/hooks/useRunList.js +26 -11
  42. package/dist/browser/ui/hooks/useToolList.js +1 -1
  43. package/dist/browser/ui/index.js +2161 -1258
  44. package/dist/browser/ui/modals/AgentActionsModal.js +13 -13
  45. package/dist/browser/ui/modals/CreateAgentModal.js +15 -15
  46. package/dist/browser/ui/modals/index.js +297 -297
  47. package/dist/browser/ui/renderers/agent-list.markdown.js +14 -5
  48. package/dist/browser/ui/renderers/agent-list.renderer.js +7 -7
  49. package/dist/browser/ui/renderers/dashboard.markdown.js +207 -36
  50. package/dist/browser/ui/renderers/index.js +359 -163
  51. package/dist/browser/ui/renderers/run-list.markdown.js +9 -4
  52. package/dist/browser/ui/renderers/tool-registry.markdown.js +15 -4
  53. package/dist/browser/ui/views/AgentListView.js +7 -7
  54. package/dist/browser/ui/views/RunDataTable.js +326 -0
  55. package/dist/browser/ui/views/RunListView.js +360 -128
  56. package/dist/browser/ui/views/ToolRegistryView.js +9 -9
  57. package/dist/browser/ui/views/index.js +478 -246
  58. package/dist/browser/ui/views/run-data-table.columns.js +271 -0
  59. package/dist/browser/ui/views/run-list.shared.js +177 -0
  60. package/dist/browser/visualizations/catalog.js +134 -0
  61. package/dist/browser/visualizations/index.js +187 -0
  62. package/dist/browser/visualizations/selectors.js +181 -0
  63. package/dist/docs/agent-console.docblock.js +11 -8
  64. package/dist/docs/index.js +11 -8
  65. package/dist/example.js +2 -3
  66. package/dist/example.test.d.ts +1 -0
  67. package/dist/handlers/agent.handlers.d.ts +2 -0
  68. package/dist/handlers/agent.handlers.js +1883 -2
  69. package/dist/handlers/index.d.ts +2 -4
  70. package/dist/handlers/index.js +2142 -8
  71. package/dist/handlers/mock-handlers.test.d.ts +1 -0
  72. package/dist/index.d.ts +6 -4
  73. package/dist/index.js +4075 -3161
  74. package/dist/node/agent/agent.event.js +1 -1
  75. package/dist/node/agent/agent.handler.js +730 -1
  76. package/dist/node/agent/agent.operation.js +1 -1
  77. package/dist/node/agent/index.js +74 -73
  78. package/dist/node/agent.feature.js +179 -0
  79. package/dist/node/docs/agent-console.docblock.js +11 -8
  80. package/dist/node/docs/index.js +11 -8
  81. package/dist/node/example.js +2 -3
  82. package/dist/node/handlers/agent.handlers.js +1883 -2
  83. package/dist/node/handlers/index.js +2142 -8
  84. package/dist/node/index.js +4075 -3161
  85. package/dist/node/presentations/index.js +51 -51
  86. package/dist/node/run/index.js +380 -374
  87. package/dist/node/run/run.event.js +2 -2
  88. package/dist/node/run/run.handler.js +666 -1
  89. package/dist/node/run/run.presentation.js +2 -2
  90. package/dist/node/shared/index.js +293 -1
  91. package/dist/node/shared/mock-runs.js +5 -0
  92. package/dist/node/tool/index.js +161 -161
  93. package/dist/node/tool/tool.event.js +1 -1
  94. package/dist/node/tool/tool.handler.js +479 -3
  95. package/dist/node/tool/tool.presentation.js +2 -2
  96. package/dist/node/ui/AgentDashboard.js +1816 -931
  97. package/dist/node/ui/AgentDashboard.visualizations.js +217 -0
  98. package/dist/node/ui/AgentRunList.js +360 -128
  99. package/dist/node/ui/AgentToolRegistry.js +9 -9
  100. package/dist/node/ui/hooks/index.js +611 -161
  101. package/dist/node/ui/hooks/useAgentList.js +1 -1
  102. package/dist/node/ui/hooks/useAgentMutations.js +444 -9
  103. package/dist/node/ui/hooks/useRunList.js +26 -11
  104. package/dist/node/ui/hooks/useToolList.js +1 -1
  105. package/dist/node/ui/index.js +2161 -1258
  106. package/dist/node/ui/modals/AgentActionsModal.js +13 -13
  107. package/dist/node/ui/modals/CreateAgentModal.js +15 -15
  108. package/dist/node/ui/modals/index.js +297 -297
  109. package/dist/node/ui/renderers/agent-list.markdown.js +14 -5
  110. package/dist/node/ui/renderers/agent-list.renderer.js +7 -7
  111. package/dist/node/ui/renderers/dashboard.markdown.js +207 -36
  112. package/dist/node/ui/renderers/index.js +359 -163
  113. package/dist/node/ui/renderers/run-list.markdown.js +9 -4
  114. package/dist/node/ui/renderers/tool-registry.markdown.js +15 -4
  115. package/dist/node/ui/views/AgentListView.js +7 -7
  116. package/dist/node/ui/views/RunDataTable.js +326 -0
  117. package/dist/node/ui/views/RunListView.js +360 -128
  118. package/dist/node/ui/views/ToolRegistryView.js +9 -9
  119. package/dist/node/ui/views/index.js +478 -246
  120. package/dist/node/ui/views/run-data-table.columns.js +271 -0
  121. package/dist/node/ui/views/run-list.shared.js +177 -0
  122. package/dist/node/visualizations/catalog.js +134 -0
  123. package/dist/node/visualizations/index.js +187 -0
  124. package/dist/node/visualizations/selectors.js +181 -0
  125. package/dist/presentations/index.d.ts +3 -5
  126. package/dist/presentations/index.js +51 -51
  127. package/dist/proof/index.d.ts +2 -0
  128. package/dist/proof/meetup-proof.d.ts +10 -0
  129. package/dist/proof/meetup-proof.runtime.d.ts +22 -0
  130. package/dist/proof/meetup-proof.scenario.d.ts +2 -0
  131. package/dist/proof/meetup-proof.suite.d.ts +1 -0
  132. package/dist/proof/meetup-proof.test.d.ts +1 -0
  133. package/dist/run/index.d.ts +7 -7
  134. package/dist/run/index.js +380 -374
  135. package/dist/run/run.event.js +2 -2
  136. package/dist/run/run.handler.d.ts +7 -0
  137. package/dist/run/run.handler.js +666 -1
  138. package/dist/run/run.presentation.js +2 -2
  139. package/dist/shared/demo-dashboard-data.d.ts +16 -0
  140. package/dist/shared/demo-runtime-seed.d.ts +17 -0
  141. package/dist/shared/demo-runtime.d.ts +8 -0
  142. package/dist/shared/demo-runtime.test.d.ts +1 -0
  143. package/dist/shared/index.d.ts +4 -1
  144. package/dist/shared/index.js +293 -1
  145. package/dist/shared/mock-runs.d.ts +4 -0
  146. package/dist/shared/mock-runs.js +5 -0
  147. package/dist/tool/index.d.ts +7 -7
  148. package/dist/tool/index.js +161 -161
  149. package/dist/tool/tool.event.js +1 -1
  150. package/dist/tool/tool.handler.d.ts +3 -0
  151. package/dist/tool/tool.handler.js +479 -3
  152. package/dist/tool/tool.presentation.js +2 -2
  153. package/dist/ui/AgentDashboard.js +1816 -931
  154. package/dist/ui/AgentDashboard.sandbox.test.d.ts +1 -0
  155. package/dist/ui/AgentDashboard.visualizations.d.ts +4 -0
  156. package/dist/ui/AgentDashboard.visualizations.js +218 -0
  157. package/dist/ui/AgentRunList.js +360 -128
  158. package/dist/ui/AgentToolRegistry.js +9 -9
  159. package/dist/ui/hooks/index.d.ts +4 -4
  160. package/dist/ui/hooks/index.js +611 -161
  161. package/dist/ui/hooks/useAgentList.d.ts +5 -0
  162. package/dist/ui/hooks/useAgentList.js +1 -1
  163. package/dist/ui/hooks/useAgentMutations.d.ts +9 -2
  164. package/dist/ui/hooks/useAgentMutations.js +444 -9
  165. package/dist/ui/hooks/useRunList.d.ts +13 -2
  166. package/dist/ui/hooks/useRunList.js +26 -11
  167. package/dist/ui/hooks/useToolList.d.ts +5 -0
  168. package/dist/ui/hooks/useToolList.js +1 -1
  169. package/dist/ui/index.d.ts +3 -3
  170. package/dist/ui/index.js +2161 -1258
  171. package/dist/ui/modals/AgentActionsModal.js +13 -13
  172. package/dist/ui/modals/CreateAgentModal.js +15 -15
  173. package/dist/ui/modals/index.d.ts +1 -1
  174. package/dist/ui/modals/index.js +297 -297
  175. package/dist/ui/renderers/agent-list.markdown.d.ts +5 -0
  176. package/dist/ui/renderers/agent-list.markdown.js +14 -5
  177. package/dist/ui/renderers/agent-list.renderer.js +7 -7
  178. package/dist/ui/renderers/dashboard.markdown.d.ts +5 -0
  179. package/dist/ui/renderers/dashboard.markdown.js +207 -36
  180. package/dist/ui/renderers/index.d.ts +2 -2
  181. package/dist/ui/renderers/index.js +359 -163
  182. package/dist/ui/renderers/run-list.markdown.d.ts +5 -0
  183. package/dist/ui/renderers/run-list.markdown.js +9 -4
  184. package/dist/ui/renderers/tool-registry.markdown.d.ts +6 -1
  185. package/dist/ui/renderers/tool-registry.markdown.js +15 -4
  186. package/dist/ui/views/AgentListView.js +7 -7
  187. package/dist/ui/views/RunDataTable.d.ts +18 -0
  188. package/dist/ui/views/RunDataTable.js +327 -0
  189. package/dist/ui/views/RunListView.js +360 -128
  190. package/dist/ui/views/ToolRegistryView.js +9 -9
  191. package/dist/ui/views/index.js +478 -246
  192. package/dist/ui/views/run-data-table.columns.d.ts +3 -0
  193. package/dist/ui/views/run-data-table.columns.js +272 -0
  194. package/dist/ui/views/run-list.shared.d.ts +14 -0
  195. package/dist/ui/views/run-list.shared.js +178 -0
  196. package/dist/visualizations/catalog.d.ts +10 -0
  197. package/dist/visualizations/catalog.js +135 -0
  198. package/dist/visualizations/index.d.ts +2 -0
  199. package/dist/visualizations/index.js +188 -0
  200. package/dist/visualizations/selectors.d.ts +3 -0
  201. package/dist/visualizations/selectors.js +182 -0
  202. package/dist/visualizations/selectors.test.d.ts +1 -0
  203. package/package.json +114 -12
  204. package/proofs/agent-console-meetup.replay.json +220 -0
  205. package/src/agent/agent.entity.ts +111 -111
  206. package/src/agent/agent.enum.ts +12 -12
  207. package/src/agent/agent.event.ts +91 -91
  208. package/src/agent/agent.handler.ts +144 -127
  209. package/src/agent/agent.operation.ts +400 -400
  210. package/src/agent/agent.presentation.ts +62 -62
  211. package/src/agent/agent.schema.ts +175 -175
  212. package/src/agent/agent.test-spec.ts +48 -48
  213. package/src/agent/index.ts +46 -51
  214. package/src/agent.capability.ts +11 -11
  215. package/src/agent.feature.ts +134 -131
  216. package/src/docs/agent-console.docblock.ts +52 -49
  217. package/src/example.test.ts +75 -0
  218. package/src/example.ts +34 -35
  219. package/src/handlers/agent.handlers.ts +576 -522
  220. package/src/handlers/index.ts +30 -14
  221. package/src/handlers/mock-handlers.test.ts +77 -0
  222. package/src/index.ts +10 -9
  223. package/src/presentations/index.ts +11 -13
  224. package/src/proof/index.ts +2 -0
  225. package/src/proof/meetup-proof.runtime.ts +196 -0
  226. package/src/proof/meetup-proof.scenario.ts +99 -0
  227. package/src/proof/meetup-proof.suite.ts +29 -0
  228. package/src/proof/meetup-proof.test.ts +28 -0
  229. package/src/proof/meetup-proof.ts +130 -0
  230. package/src/run/index.ts +49 -54
  231. package/src/run/run.entity.ts +137 -137
  232. package/src/run/run.enum.ts +18 -18
  233. package/src/run/run.event.ts +174 -174
  234. package/src/run/run.handler.ts +113 -96
  235. package/src/run/run.operation.ts +474 -474
  236. package/src/run/run.presentation.ts +42 -42
  237. package/src/run/run.schema.ts +126 -126
  238. package/src/run/run.test-spec.ts +48 -48
  239. package/src/seeders/index.ts +21 -21
  240. package/src/shared/demo-dashboard-data.ts +58 -0
  241. package/src/shared/demo-runtime-seed.ts +139 -0
  242. package/src/shared/demo-runtime.test.ts +169 -0
  243. package/src/shared/demo-runtime.ts +260 -0
  244. package/src/shared/index.ts +12 -1
  245. package/src/shared/mock-agents.ts +76 -76
  246. package/src/shared/mock-runs.ts +107 -102
  247. package/src/shared/mock-tools.ts +140 -140
  248. package/src/shared/overlay-types.ts +23 -23
  249. package/src/tool/index.ts +39 -44
  250. package/src/tool/tool.entity.ts +73 -73
  251. package/src/tool/tool.enum.ts +13 -13
  252. package/src/tool/tool.event.ts +80 -80
  253. package/src/tool/tool.handler.ts +124 -107
  254. package/src/tool/tool.operation.ts +328 -328
  255. package/src/tool/tool.presentation.ts +43 -43
  256. package/src/tool/tool.schema.ts +106 -106
  257. package/src/tool/tool.test-spec.ts +48 -48
  258. package/src/ui/AgentDashboard.sandbox.test.tsx +312 -0
  259. package/src/ui/AgentDashboard.tsx +351 -348
  260. package/src/ui/AgentDashboard.visualizations.tsx +35 -0
  261. package/src/ui/hooks/index.ts +7 -7
  262. package/src/ui/hooks/useAgentList.ts +57 -56
  263. package/src/ui/hooks/useAgentMutations.ts +168 -159
  264. package/src/ui/hooks/useRunList.ts +90 -57
  265. package/src/ui/hooks/useToolList.ts +102 -101
  266. package/src/ui/index.ts +6 -9
  267. package/src/ui/modals/AgentActionsModal.tsx +262 -262
  268. package/src/ui/modals/CreateAgentModal.tsx +232 -232
  269. package/src/ui/modals/index.ts +1 -1
  270. package/src/ui/overlays/demo-overlays.ts +52 -52
  271. package/src/ui/renderers/agent-list.markdown.ts +81 -61
  272. package/src/ui/renderers/agent-list.renderer.tsx +14 -14
  273. package/src/ui/renderers/dashboard.markdown.ts +135 -139
  274. package/src/ui/renderers/index.ts +3 -4
  275. package/src/ui/renderers/run-list.markdown.ts +56 -47
  276. package/src/ui/renderers/tool-registry.markdown.ts +79 -66
  277. package/src/ui/views/AgentListView.tsx +90 -90
  278. package/src/ui/views/RunDataTable.tsx +74 -0
  279. package/src/ui/views/RunListView.tsx +84 -158
  280. package/src/ui/views/ToolRegistryView.tsx +113 -113
  281. package/src/ui/views/run-data-table.columns.tsx +102 -0
  282. package/src/ui/views/run-list.shared.tsx +139 -0
  283. package/src/visualizations/catalog.ts +132 -0
  284. package/src/visualizations/index.ts +2 -0
  285. package/src/visualizations/selectors.test.ts +12 -0
  286. package/src/visualizations/selectors.ts +70 -0
  287. package/tsconfig.json +7 -8
  288. package/tsdown.config.js +24 -3
@@ -1,250 +1,9 @@
1
1
  // @bun
2
- // src/ui/modals/CreateAgentModal.tsx
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] = useState2("menu");
273
- const [message, setMessage] = useState2("");
274
- const [confirmAction, setConfirmAction] = useState2(null);
275
- const [error, setError] = useState2(null);
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__ */ jsxDEV2("div", {
83
+ return /* @__PURE__ */ jsxDEV("div", {
325
84
  className: "fixed inset-0 z-50 flex items-center justify-center",
326
85
  children: [
327
- /* @__PURE__ */ jsxDEV2("div", {
328
- className: "bg-background/80 absolute inset-0 backdrop-blur-sm",
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__ */ jsxDEV2("div", {
339
- className: "bg-card border-border relative z-10 w-full max-w-md rounded-xl border p-6 shadow-xl",
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__ */ jsxDEV2("div", {
342
- className: "border-border mb-4 border-b pb-4",
100
+ /* @__PURE__ */ jsxDEV("div", {
101
+ className: "mb-4 border-border border-b pb-4",
343
102
  children: [
344
- /* @__PURE__ */ jsxDEV2("h2", {
345
- className: "text-xl font-semibold",
103
+ /* @__PURE__ */ jsxDEV("h2", {
104
+ className: "font-semibold text-xl",
346
105
  children: agent.name
347
106
  }, undefined, false, undefined, this),
348
- /* @__PURE__ */ jsxDEV2("div", {
107
+ /* @__PURE__ */ jsxDEV("div", {
349
108
  className: "mt-1 flex items-center gap-2",
350
109
  children: [
351
- /* @__PURE__ */ jsxDEV2("span", {
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__ */ jsxDEV2("span", {
360
- className: `rounded-full px-2 py-0.5 text-xs font-medium ${getStatusColor(agent.status)}`,
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__ */ jsxDEV2("p", {
366
- className: "text-muted-foreground mt-2 text-sm",
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__ */ jsxDEV2("div", {
130
+ mode === "menu" && /* @__PURE__ */ jsxDEV("div", {
372
131
  className: "space-y-3",
373
132
  children: [
374
- agent.status === "ACTIVE" && /* @__PURE__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2("span", {
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__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2("span", {
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__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2("span", {
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__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2("span", {
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__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2("span", {
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__ */ jsxDEV2("div", {
441
- className: "bg-destructive/10 text-destructive rounded-md p-3 text-sm",
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__ */ jsxDEV2("div", {
203
+ /* @__PURE__ */ jsxDEV("div", {
445
204
  className: "border-border border-t pt-3",
446
- children: /* @__PURE__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2("div", {
214
+ mode === "execute" && /* @__PURE__ */ jsxDEV("div", {
456
215
  className: "space-y-4",
457
216
  children: [
458
- /* @__PURE__ */ jsxDEV2("div", {
217
+ /* @__PURE__ */ jsxDEV("div", {
459
218
  children: [
460
- /* @__PURE__ */ jsxDEV2("label", {
219
+ /* @__PURE__ */ jsxDEV("label", {
461
220
  htmlFor: "execute-message",
462
- className: "text-muted-foreground mb-1 block text-sm font-medium",
221
+ className: "mb-1 block font-medium text-muted-foreground text-sm",
463
222
  children: "Message *"
464
223
  }, undefined, false, undefined, this),
465
- /* @__PURE__ */ jsxDEV2("textarea", {
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: "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"
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__ */ jsxDEV2("div", {
477
- className: "bg-destructive/10 text-destructive rounded-md p-3 text-sm",
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__ */ jsxDEV2("div", {
239
+ /* @__PURE__ */ jsxDEV("div", {
481
240
  className: "flex justify-end gap-3 pt-2",
482
241
  children: [
483
- /* @__PURE__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2(Button2, {
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__ */ jsxDEV2("div", {
257
+ mode === "confirm" && confirmAction === "archive" && /* @__PURE__ */ jsxDEV("div", {
499
258
  className: "space-y-4",
500
259
  children: [
501
- /* @__PURE__ */ jsxDEV2("p", {
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__ */ jsxDEV2("span", {
507
- className: "text-foreground font-medium",
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__ */ jsxDEV2("p", {
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 text-destructive rounded-md p-3 text-sm",
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: () => setMode("menu"),
526
+ onPress: onClose,
527
527
  disabled: isLoading,
528
528
  children: "Cancel"
529
529
  }, undefined, false, undefined, this),
530
530
  /* @__PURE__ */ jsxDEV2(Button2, {
531
- onPress: () => handleStatusChange("archive"),
531
+ type: "submit",
532
532
  disabled: isLoading,
533
- children: isLoading ? "Archiving..." : "\uD83D\uDCE6 Archive"
533
+ children: isLoading ? "Creating..." : "Create Agent"
534
534
  }, undefined, false, undefined, this)
535
535
  ]
536
536
  }, undefined, true, undefined, this)