opencami 1.3.2 → 1.5.0

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 (75) hide show
  1. package/README.md +60 -0
  2. package/dist/client/assets/CSPContext-EgWK8bIJ.js +1 -0
  3. package/dist/client/assets/DirectionContext-DXtY05YF.js +1 -0
  4. package/dist/client/assets/_sessionKey-B89e7G3y.js +100 -0
  5. package/dist/client/assets/agents-screen-1BiEZ9od.js +1 -0
  6. package/dist/client/assets/agents-x54ocA9z.js +2 -0
  7. package/dist/client/assets/bots-screen-BNQciUeJ.js +1 -0
  8. package/dist/client/assets/bots-x86ZHG4b.js +2 -0
  9. package/dist/client/assets/button-nDcsaNPl.js +1 -0
  10. package/dist/client/assets/{connect-CtDn993i.js → connect-w4lLOqiJ.js} +1 -1
  11. package/dist/client/assets/file-explorer-screen-CAsjd3w8.js +1 -0
  12. package/dist/client/assets/files-Bype5Mnb.js +2 -0
  13. package/dist/client/assets/{index-N9-2R5hZ.js → index-36G0WCxU.js} +1 -1
  14. package/dist/client/assets/index-BXkRE220.js +153 -0
  15. package/dist/client/assets/keyboard-shortcuts-dialog-BdCeXRjD.js +1 -0
  16. package/dist/client/assets/{main-DrVY5UJU.js → main-B3N0eQFg.js} +129 -17
  17. package/dist/client/assets/opencami-logo-DD0DPFRQ.js +1 -0
  18. package/dist/client/assets/{react-CzqI3gbN.js → react-B16OrBeM.js} +1 -1
  19. package/dist/client/assets/search-dialog-BjTPceEl.js +1 -0
  20. package/dist/client/assets/session-export-dialog-DtHKG2zW.js +1 -0
  21. package/dist/client/assets/settings-dialog-hiqdk_UD.js +1 -0
  22. package/dist/client/assets/skills-DhwyFq3y.js +2 -0
  23. package/dist/client/assets/skills-panel-BLUjzfjJ.js +5 -0
  24. package/dist/client/assets/styles-CHP4l6vZ.css +1 -0
  25. package/dist/client/assets/switch-J6wLIVu2.js +1 -0
  26. package/dist/client/assets/tabs-DvPgTz5I.js +1 -0
  27. package/dist/client/assets/tooltip-C14vdXHK.js +1 -0
  28. package/dist/client/assets/use-file-explorer-state-BnaJEqRP.js +12 -0
  29. package/dist/client/assets/useButton-Bnnac1eR.js +1 -0
  30. package/dist/client/assets/useCompositeItem-BgiEMKAt.js +1 -0
  31. package/dist/client/assets/useControlled-BhUuiHAm.js +1 -0
  32. package/dist/client/assets/useMutation-CFmVaBag.js +1 -0
  33. package/dist/client/assets/visuallyHidden-DCCICp6T.js +9 -0
  34. package/dist/server/assets/{_sessionKey-DVNrEYFh.js → _sessionKey-tRze5NLR.js} +493 -92
  35. package/dist/server/assets/_tanstack-start-manifest_v-CyfoMvUa.js +4 -0
  36. package/dist/server/assets/{agents-Dz_i76VW.js → agents-CmQ4vvXm.js} +1 -1
  37. package/dist/server/assets/{agents-screen-CqQPJndp.js → agents-screen-bmrIyFbk.js} +43 -35
  38. package/dist/server/assets/bots-Byt6jv0a.js +11 -0
  39. package/dist/server/assets/bots-screen-C2TGFv42.js +474 -0
  40. package/dist/server/assets/{button-DtQ3rV1m.js → button-CwY2OHFj.js} +2 -2
  41. package/dist/server/assets/{connect-CIDOw12K.js → connect-d3AqjAqe.js} +2 -2
  42. package/dist/server/assets/{file-explorer-screen-Cx0jiLRU.js → file-explorer-screen-CVlFiAFu.js} +39 -40
  43. package/dist/server/assets/{files-Trs1M5ba.js → files-BIEcSPGp.js} +1 -1
  44. package/dist/server/assets/{index-CmbNTqa2.js → index-CNIATlJ9.js} +93 -38
  45. package/dist/server/assets/{index-Dv2RXDa2.js → index-CRfLKh30.js} +2 -1
  46. package/dist/server/assets/{keyboard-shortcuts-dialog-7OEtXUlW.js → keyboard-shortcuts-dialog-CsNP85q8.js} +2 -2
  47. package/dist/server/assets/{router-OoQe2c20.js → router-rn7pJO_D.js} +515 -78
  48. package/dist/server/assets/{search-dialog-Bq0Pnxdb.js → search-dialog-Bz4Cu0KW.js} +23 -6
  49. package/dist/server/assets/{session-export-dialog-DRVbC8Q-.js → session-export-dialog-CwclV0Aj.js} +2 -2
  50. package/dist/server/assets/{settings-dialog-BsJsnMiu.js → settings-dialog-BBM7jCjE.js} +409 -95
  51. package/dist/server/assets/skills-Cy8xclXY.js +11 -0
  52. package/dist/server/assets/skills-panel-BnRNb7u9.js +762 -0
  53. package/dist/server/assets/{switch-DnX0MjGS.js → switch-BbkUeVDV.js} +1 -1
  54. package/dist/server/assets/tabs-DDFZob0m.js +67 -0
  55. package/dist/server/assets/{tooltip-gbV6rEVv.js → tooltip-DgsSPocE.js} +1 -1
  56. package/dist/server/assets/{use-file-explorer-state-DMHdtb7D.js → use-file-explorer-state-Il1LlBAe.js} +13 -1
  57. package/dist/server/server.js +2 -2
  58. package/package.json +6 -2
  59. package/dist/client/assets/_sessionKey-Z6Wcnj0N.js +0 -97
  60. package/dist/client/assets/agents-D8ZHVQ1Z.js +0 -2
  61. package/dist/client/assets/agents-screen-BVK0QTRH.js +0 -1
  62. package/dist/client/assets/button-CuH8u1uR.js +0 -1
  63. package/dist/client/assets/file-explorer-screen-DMUuR1uG.js +0 -1
  64. package/dist/client/assets/files-CDMLoJ0u.js +0 -2
  65. package/dist/client/assets/index-IGP-Igwt.js +0 -153
  66. package/dist/client/assets/keyboard-shortcuts-dialog-DW--4YLF.js +0 -1
  67. package/dist/client/assets/opencami-logo-ChD2XR2j.js +0 -1
  68. package/dist/client/assets/search-dialog-DYyFYJmw.js +0 -1
  69. package/dist/client/assets/session-export-dialog-BFizBmGb.js +0 -1
  70. package/dist/client/assets/settings-dialog-UvgVi2It.js +0 -1
  71. package/dist/client/assets/styles-BGTCU8mq.css +0 -1
  72. package/dist/client/assets/switch-DxW2OWPG.js +0 -1
  73. package/dist/client/assets/use-file-explorer-state-Cii59H70.js +0 -12
  74. package/dist/client/assets/useButton-hZdvKtl_.js +0 -9
  75. package/dist/server/assets/_tanstack-start-manifest_v-PwRq_yJS.js +0 -4
@@ -0,0 +1,4 @@
1
+ const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "/home/runner/work/opencami/opencami/src/routes/__root.tsx", "children": ["/", "/agents", "/bots", "/connect", "/files", "/new", "/skills", "/api/agents", "/api/cron", "/api/follow-ups", "/api/history", "/api/llm-features", "/api/models", "/api/paths", "/api/personas", "/api/ping", "/api/send", "/api/sessions", "/api/skills", "/api/stream", "/api/stt", "/api/tts", "/chat/$sessionKey", "/api/files/delete", "/api/files/download", "/api/files/info", "/api/files/list", "/api/files/mkdir", "/api/files/read", "/api/files/rename", "/api/files/save", "/api/files/upload"], "preloads": ["/assets/main-B3N0eQFg.js"], "assets": [] }, "/": { "filePath": "/home/runner/work/opencami/opencami/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-36G0WCxU.js"] }, "/agents": { "filePath": "/home/runner/work/opencami/opencami/src/routes/agents.tsx", "assets": [], "preloads": ["/assets/agents-x54ocA9z.js"] }, "/bots": { "filePath": "/home/runner/work/opencami/opencami/src/routes/bots.tsx", "assets": [], "preloads": ["/assets/bots-x86ZHG4b.js"] }, "/connect": { "filePath": "/home/runner/work/opencami/opencami/src/routes/connect.tsx", "assets": [], "preloads": ["/assets/connect-w4lLOqiJ.js", "/assets/index-BXkRE220.js", "/assets/button-nDcsaNPl.js", "/assets/react-B16OrBeM.js"] }, "/files": { "filePath": "/home/runner/work/opencami/opencami/src/routes/files.tsx", "assets": [], "preloads": ["/assets/files-Bype5Mnb.js"] }, "/new": { "filePath": "/home/runner/work/opencami/opencami/src/routes/new.tsx", "assets": [], "preloads": ["/assets/new-DLlBm66g.js"] }, "/skills": { "filePath": "/home/runner/work/opencami/opencami/src/routes/skills.tsx", "assets": [], "preloads": ["/assets/skills-DhwyFq3y.js"] }, "/api/agents": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/agents.ts" }, "/api/cron": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/cron.ts" }, "/api/follow-ups": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/follow-ups.ts" }, "/api/history": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/history.ts" }, "/api/llm-features": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/llm-features.ts" }, "/api/models": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/models.ts" }, "/api/paths": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/paths.ts" }, "/api/personas": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/personas.ts" }, "/api/ping": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/ping.ts" }, "/api/send": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/send.ts" }, "/api/sessions": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/sessions.ts" }, "/api/skills": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/skills.ts" }, "/api/stream": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/stream.ts" }, "/api/stt": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/stt.ts" }, "/api/tts": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/tts.ts" }, "/chat/$sessionKey": { "filePath": "/home/runner/work/opencami/opencami/src/routes/chat/$sessionKey.tsx", "assets": [], "preloads": ["/assets/_sessionKey-B89e7G3y.js", "/assets/visuallyHidden-DCCICp6T.js", "/assets/tooltip-C14vdXHK.js", "/assets/button-nDcsaNPl.js", "/assets/use-file-explorer-state-BnaJEqRP.js", "/assets/useButton-Bnnac1eR.js", "/assets/useControlled-BhUuiHAm.js", "/assets/DirectionContext-DXtY05YF.js", "/assets/CSPContext-EgWK8bIJ.js", "/assets/useMutation-CFmVaBag.js", "/assets/opencami-logo-DD0DPFRQ.js", "/assets/index-BXkRE220.js", "/assets/react-B16OrBeM.js"] }, "/api/files/delete": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/delete.ts" }, "/api/files/download": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/download.ts" }, "/api/files/info": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/info.ts" }, "/api/files/list": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/list.ts" }, "/api/files/mkdir": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/mkdir.ts" }, "/api/files/read": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/read.ts" }, "/api/files/rename": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/rename.ts" }, "/api/files/save": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/save.ts" }, "/api/files/upload": { "filePath": "/home/runner/work/opencami/opencami/src/routes/api/files/upload.ts" } }, "clientEntry": "/assets/main-B3N0eQFg.js" });
2
+ export {
3
+ tsrStartManifest
4
+ };
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { Suspense, lazy } from "react";
3
- const AgentsScreen = lazy(() => import("./agents-screen-CqQPJndp.js").then((m) => ({
3
+ const AgentsScreen = lazy(() => import("./agents-screen-bmrIyFbk.js").then((m) => ({
4
4
  default: m.AgentsScreen
5
5
  })));
6
6
  function AgentsRoute() {
@@ -4,10 +4,10 @@ import { useQueryClient, useQuery } from "@tanstack/react-query";
4
4
  import { HugeiconsIcon } from "@hugeicons/react";
5
5
  import { SidebarLeft01Icon, ArrowLeft01Icon, Add01Icon, Loading02Icon, PencilEdit01Icon, Delete01Icon, Cancel01Icon, Alert01Icon } from "@hugeicons/core-free-icons";
6
6
  import { motion, AnimatePresence } from "motion/react";
7
- import { c as cn, b as buttonVariants, B as Button } from "./button-DtQ3rV1m.js";
8
- import { S as Switch } from "./switch-DnX0MjGS.js";
7
+ import { c as cn, b as buttonVariants, B as Button } from "./button-CwY2OHFj.js";
8
+ import { S as Switch } from "./switch-BbkUeVDV.js";
9
9
  import { Link } from "@tanstack/react-router";
10
- import { d as chatUiQueryKey, g as getChatUiState, s as setChatUiState, T as TooltipProvider, a as TooltipRoot, b as TooltipTrigger, c as TooltipContent } from "./tooltip-gbV6rEVv.js";
10
+ import { d as chatUiQueryKey, g as getChatUiState, s as setChatUiState, T as TooltipProvider, a as TooltipRoot, b as TooltipTrigger, c as TooltipContent } from "./tooltip-DgsSPocE.js";
11
11
  import { O as OpenCamiLogo, a as OpenCamiText } from "./opencami-logo-C-43FL3R.js";
12
12
  import "@base-ui/react/merge-props";
13
13
  import "@base-ui/react/use-render";
@@ -38,45 +38,49 @@ function AgentCard({
38
38
  const isMain = agent.isDefault || agent.id === "main";
39
39
  const displayName = agent.name || agent.id.charAt(0).toUpperCase() + agent.id.slice(1);
40
40
  const shortModel = agent.model ? agent.model.split("/").pop() : void 0;
41
- return /* @__PURE__ */ jsx("div", { className: "rounded-xl border border-primary-200 bg-surface p-4 hover:border-primary-300 transition-colors", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
42
- /* @__PURE__ */ jsxs("div", { className: "relative flex size-12 shrink-0 items-center justify-center rounded-xl bg-primary-100 text-xl", children: [
41
+ return /* @__PURE__ */ jsx("div", { className: "group rounded-lg border border-primary-100 bg-surface p-4 transition-all duration-150 ease-out hover:border-primary-200 hover:shadow-sm", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
42
+ /* @__PURE__ */ jsxs("div", { className: "relative flex size-12 shrink-0 items-center justify-center rounded-lg bg-primary-50 text-xl", children: [
43
43
  agent.emoji || "🤖",
44
- isMain && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 size-3 rounded-full bg-green-500 ring-2 ring-surface" })
44
+ isMain && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 size-3 rounded-full bg-emerald-500 ring-2 ring-surface" })
45
45
  ] }),
46
46
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
47
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
48
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-primary-900 truncate", children: displayName }),
49
- displayName !== agent.id && /* @__PURE__ */ jsx("span", { className: "text-xs text-primary-400 font-mono", children: agent.id }),
50
- isMain && /* @__PURE__ */ jsx("span", { className: "rounded bg-green-500/15 px-1.5 py-0.5 text-[10px] font-medium text-green-600 dark:text-green-400", children: "PRIMARY" })
47
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3 mb-2", children: [
48
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [
49
+ /* @__PURE__ */ jsx("h4", { className: "text-[13px] font-semibold text-primary-900 leading-tight truncate", children: displayName }),
50
+ displayName !== agent.id && /* @__PURE__ */ jsx("span", { className: "text-[10px] font-mono text-primary-400 shrink-0", children: agent.id })
51
+ ] }),
52
+ isMain && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center px-2 py-0.5 text-[11px] font-medium rounded-full bg-emerald-50 text-emerald-600 border border-emerald-100 shrink-0", children: "Primary" })
51
53
  ] }),
52
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2 text-xs text-primary-500 mb-2", children: [
53
- shortModel && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center rounded-md bg-primary-100 px-2 py-0.5 font-mono text-[11px] text-primary-600 truncate max-w-[250px]", children: shortModel }),
54
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5 mb-3", children: [
55
+ shortModel && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center px-2 py-0.5 text-[10px] font-mono rounded-full bg-primary-50 text-primary-600 border border-primary-100 truncate max-w-[200px]", children: shortModel }),
54
56
  agent.sandbox !== void 0 && /* @__PURE__ */ jsx("span", { className: cn(
55
- "inline-flex items-center rounded-md px-2 py-0.5 text-[11px] font-medium",
56
- agent.sandbox ? "bg-amber-500/15 text-amber-600 dark:text-amber-400" : "bg-primary-100 text-primary-500"
57
- ), children: agent.sandbox ? "🔒 Sandbox" : "🔓 No sandbox" }),
58
- agent.sessionScope && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center rounded-md bg-primary-100 px-2 py-0.5 text-[11px] text-primary-500", children: agent.sessionScope === "per-sender" ? "👤 Per-sender" : "🌐 Global" })
57
+ "inline-flex items-center px-2 py-0.5 text-[10px] font-medium rounded-full border",
58
+ agent.sandbox ? "bg-amber-50 text-amber-600 border-amber-100" : "bg-primary-50 text-primary-500 border-primary-100"
59
+ ), children: agent.sandbox ? "🔒 Sandbox" : "🔓 Open" }),
60
+ agent.sessionScope && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center px-2 py-0.5 text-[10px] font-medium rounded-full bg-primary-50 text-primary-500 border border-primary-100", children: agent.sessionScope === "per-sender" ? "👤 Per-sender" : "🌐 Global" })
59
61
  ] }),
60
62
  agent.tools && agent.tools.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-1 mb-2", children: [
61
- agent.tools.slice(0, 8).map((tool) => /* @__PURE__ */ jsx("span", { className: "inline-flex items-center rounded bg-blue-500/10 px-1.5 py-0.5 text-[10px] font-mono text-blue-600 dark:text-blue-400", children: tool }, tool)),
62
- agent.tools.length > 8 && /* @__PURE__ */ jsxs("span", { className: "text-[10px] text-primary-400", children: [
63
+ agent.tools.slice(0, 6).map((tool) => /* @__PURE__ */ jsx("span", { className: "inline-flex items-center px-1.5 py-0.5 text-[10px] font-mono rounded bg-sky-50 text-sky-600 border border-sky-100", children: tool }, tool)),
64
+ agent.tools.length > 6 && /* @__PURE__ */ jsxs("span", { className: "text-[10px] text-primary-400", children: [
63
65
  "+",
64
- agent.tools.length - 8,
66
+ agent.tools.length - 6,
65
67
  " more"
66
68
  ] })
67
69
  ] }),
68
- agent.channelBindings && agent.channelBindings.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 mb-2", children: agent.channelBindings.map((ch) => /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center rounded bg-purple-500/10 px-1.5 py-0.5 text-[10px] text-purple-600 dark:text-purple-400", children: [
70
+ agent.channelBindings && agent.channelBindings.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 mb-2", children: agent.channelBindings.map((ch) => /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center px-1.5 py-0.5 text-[10px] rounded bg-violet-50 text-violet-600 border border-violet-100", children: [
69
71
  "#",
70
72
  ch
71
73
  ] }, ch)) }),
72
- agent.workspace && /* @__PURE__ */ jsx("div", { className: "text-[11px] font-mono text-primary-400 truncate", title: agent.workspace, children: agent.workspace }),
73
- agent.activeSessions !== void 0 && agent.activeSessions > 0 && /* @__PURE__ */ jsxs("div", { className: "text-[11px] text-primary-400 mt-1", children: [
74
- agent.activeSessions,
75
- " active session",
76
- agent.activeSessions !== 1 ? "s" : ""
74
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 pt-2 border-t border-primary-50", children: [
75
+ agent.workspace && /* @__PURE__ */ jsx("span", { className: "text-[11px] font-mono text-primary-400 truncate", title: agent.workspace, children: agent.workspace }),
76
+ agent.activeSessions !== void 0 && agent.activeSessions > 0 && /* @__PURE__ */ jsxs("span", { className: "text-[11px] text-primary-400", children: [
77
+ agent.activeSessions,
78
+ " active session",
79
+ agent.activeSessions !== 1 ? "s" : ""
80
+ ] })
77
81
  ] })
78
82
  ] }),
79
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 shrink-0", children: [
83
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 shrink-0 opacity-0 group-hover:opacity-100 transition-opacity duration-150", children: [
80
84
  /* @__PURE__ */ jsx(Button, { size: "icon-sm", variant: "ghost", onClick: onEdit, "aria-label": "Edit agent", children: /* @__PURE__ */ jsx(HugeiconsIcon, { icon: PencilEdit01Icon, size: 16, strokeWidth: 1.5 }) }),
81
85
  !isMain && /* @__PURE__ */ jsx(Button, { size: "icon-sm", variant: "ghost", onClick: onDelete, "aria-label": "Delete agent", className: "text-red-500 hover:text-red-600", children: /* @__PURE__ */ jsx(HugeiconsIcon, { icon: Delete01Icon, size: 16, strokeWidth: 1.5 }) })
82
86
  ] })
@@ -144,8 +148,8 @@ function AgentForm({
144
148
  /* @__PURE__ */ jsx(Button, { size: "icon-sm", variant: "ghost", onClick: onCancel, children: /* @__PURE__ */ jsx(HugeiconsIcon, { icon: Cancel01Icon, size: 18, strokeWidth: 1.5 }) })
145
149
  ] }),
146
150
  /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
147
- /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-primary-200 bg-surface p-4", children: [
148
- /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-500 uppercase tracking-wider mb-3", children: "Basic Info" }),
151
+ /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-primary-100 bg-surface p-4", children: [
152
+ /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-400 uppercase tracking-wider mb-3", children: "Basic Info" }),
149
153
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
150
154
  /* @__PURE__ */ jsxs("div", { className: "col-span-2 sm:col-span-1", children: [
151
155
  /* @__PURE__ */ jsx("label", { className: "block text-xs text-primary-600 mb-1", children: "Name" }),
@@ -185,8 +189,8 @@ function AgentForm({
185
189
  ] })
186
190
  ] })
187
191
  ] }),
188
- /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-primary-200 bg-surface p-4", children: [
189
- /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-500 uppercase tracking-wider mb-3", children: "Model & Config" }),
192
+ /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-primary-100 bg-surface p-4", children: [
193
+ /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-400 uppercase tracking-wider mb-3", children: "Model & Config" }),
190
194
  /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
191
195
  /* @__PURE__ */ jsxs("div", { children: [
192
196
  /* @__PURE__ */ jsx("label", { className: "block text-xs text-primary-600 mb-1", children: "Model" }),
@@ -236,8 +240,8 @@ function AgentForm({
236
240
  ] })
237
241
  ] })
238
242
  ] }),
239
- /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-primary-200 bg-surface p-4", children: [
240
- /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-500 uppercase tracking-wider mb-3", children: "Tools" }),
243
+ /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-primary-100 bg-surface p-4", children: [
244
+ /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-400 uppercase tracking-wider mb-3", children: "Tools" }),
241
245
  /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
242
246
  /* @__PURE__ */ jsx(
243
247
  TagInput,
@@ -259,8 +263,8 @@ function AgentForm({
259
263
  )
260
264
  ] })
261
265
  ] }),
262
- /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-primary-200 bg-surface p-4", children: [
263
- /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-500 uppercase tracking-wider mb-3", children: "Channel Bindings" }),
266
+ /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-primary-100 bg-surface p-4", children: [
267
+ /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-primary-400 uppercase tracking-wider mb-3", children: "Channel Bindings" }),
264
268
  /* @__PURE__ */ jsx(
265
269
  TagInput,
266
270
  {
@@ -549,7 +553,11 @@ function AgentsScreen() {
549
553
  },
550
554
  agent.id
551
555
  )),
552
- agents.length === 0 && /* @__PURE__ */ jsx("div", { className: "text-center py-16 text-sm text-primary-400", children: "No agents found. Create one to get started." })
556
+ agents.length === 0 && /* @__PURE__ */ jsxs("div", { className: "py-12 text-center", children: [
557
+ /* @__PURE__ */ jsx("div", { className: "inline-flex items-center justify-center w-12 h-12 rounded-lg bg-primary-50 mb-3", children: /* @__PURE__ */ jsx("span", { className: "text-2xl", children: "🤖" }) }),
558
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-primary-500", children: "No agents found" }),
559
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-primary-400 mt-1", children: "Create one to get started" })
560
+ ] })
553
561
  ] }) : view === "create" ? /* @__PURE__ */ jsx(
554
562
  AgentForm,
555
563
  {
@@ -0,0 +1,11 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Suspense, lazy } from "react";
3
+ const BotsScreen = lazy(() => import("./bots-screen-C2TGFv42.js").then((m) => ({
4
+ default: m.BotsScreen
5
+ })));
6
+ function BotsRoute() {
7
+ return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx("div", { className: "flex h-screen items-center justify-center text-sm text-primary-500", children: "Loading…" }), children: /* @__PURE__ */ jsx(BotsScreen, {}) });
8
+ }
9
+ export {
10
+ BotsRoute as component
11
+ };