bazilion 0.9.0 → 0.11.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 (189) hide show
  1. package/dist/cli.js +1257 -150
  2. package/dist/cli.js.map +1 -1
  3. package/dist/daemon.js +3049 -471
  4. package/dist/daemon.js.map +1 -1
  5. package/dist/migrations/0001_init.sql +20 -0
  6. package/dist/web/client/assets/AgentTabs-B3hq5a3e.js +1 -0
  7. package/dist/web/client/assets/ConfigPage-BCwfgyjD.js +1 -0
  8. package/dist/web/client/assets/FieldRow-avAFLgYW.js +1 -0
  9. package/dist/web/client/assets/Page-CwNuDhWz.js +1 -0
  10. package/dist/web/client/assets/ProductionTeamPolicyEditor-B6dbpuYy.js +7 -0
  11. package/dist/web/client/assets/{ProfileCommunicationEditor-D1OZ8WE5.js → ProfileCommunicationEditor-Bf8UvmZT.js} +1 -1
  12. package/dist/web/client/assets/SectionTabs-DZzy01az.js +1 -0
  13. package/dist/web/client/assets/TeamTabs-sQBHChtd.js +1 -0
  14. package/dist/web/client/assets/TemplatesTabs-DPsuwsWB.js +1 -0
  15. package/dist/web/client/assets/_id-C9rkCclz.js +1 -0
  16. package/dist/web/client/assets/_id-D65IzC8H.js +1 -0
  17. package/dist/web/client/assets/_id-DE4IY5bL.js +1 -0
  18. package/dist/web/client/assets/_id-DYASsGQ8.js +1 -0
  19. package/dist/web/client/assets/activity-C7o6-xHg.js +1 -0
  20. package/dist/web/client/assets/agents-UroO4d25.js +1 -0
  21. package/dist/web/client/assets/agents-h8yWXQ2H.js +1 -0
  22. package/dist/web/client/assets/approvals-DKhF0YLC.js +1 -0
  23. package/dist/web/client/assets/chevron-down-BK6NPMMP.js +1 -0
  24. package/dist/web/client/assets/config-q8JDresK.js +3 -0
  25. package/dist/web/client/assets/context-CBucAoi6.js +1 -0
  26. package/dist/web/client/assets/inbox-BwoRikj1.js +1 -0
  27. package/dist/web/client/assets/index-DUXAevpZ.js +12 -0
  28. package/dist/web/client/assets/login-CNAV9Wer.js +1 -0
  29. package/dist/web/client/assets/mcp-BKdEFwHO.js +1 -0
  30. package/dist/web/client/assets/members-BDqZQh26.js +1 -0
  31. package/dist/web/client/assets/memory-DVdEVr6L.js +1 -0
  32. package/dist/web/client/assets/plus-b4yFXP0O.js +1 -0
  33. package/dist/web/client/assets/policy-DdDctqvg.js +1 -0
  34. package/dist/web/client/assets/preload-helper-mNuBjNXU.js +1 -0
  35. package/dist/web/client/assets/react-3W8R1pOO.js +1 -0
  36. package/dist/web/client/assets/routes-BEfALSZv.js +1 -0
  37. package/dist/web/client/assets/services-DZP2ybzb.js +1 -0
  38. package/dist/web/client/assets/skills-DoeIjITs.js +1 -0
  39. package/dist/web/client/assets/styles-BYM0UGdF.css +2 -0
  40. package/dist/web/client/assets/team-policy-D0jpnn2b.js +1 -0
  41. package/dist/web/client/assets/teams-DlHRnrQw.js +1 -0
  42. package/dist/web/client/assets/teams-W3j-UoJ9.js +1 -0
  43. package/dist/web/client/assets/telegram-2OdeGv4E.js +1 -0
  44. package/dist/web/client/assets/tokens-MuBfmgue.js +1 -0
  45. package/dist/web/client/assets/triggers-CX7RMQFQ.js +1 -0
  46. package/dist/web/client/assets/welcome-CvNr5IMi.js +1 -0
  47. package/dist/web/client/assets/wire-constants-BhVKOCQa.js +74 -0
  48. package/dist/web/server/assets/{AgentTabs-BOjTN7QF.js → AgentTabs-DoMDJBXH.js} +10 -7
  49. package/dist/web/server/assets/{ChatPane-Dh3qxzdb.js → ChatPane-Ba5wTsVk.js} +340 -44
  50. package/dist/web/server/assets/ConfigPage-BKlh5vOU.js +68 -0
  51. package/dist/web/server/assets/{FieldRow-DwyqycWI.js → FieldRow-B4eTegH9.js} +5 -5
  52. package/dist/web/server/assets/Page-LENulSXY.js +111 -0
  53. package/dist/web/server/assets/{ProductionTeamPolicyEditor-Bke5doyl.js → ProductionTeamPolicyEditor-Y4mzFFvR.js} +4 -4
  54. package/dist/web/server/assets/SectionTabs-BJTPr5nU.js +8 -0
  55. package/dist/web/server/assets/{Sidebar-CGmtCnYU.js → Sidebar-DsRVCszF.js} +229 -118
  56. package/dist/web/server/assets/{TeamTabs-BPxDBfqy.js → TeamTabs-zZzbP1t_.js} +9 -8
  57. package/dist/web/server/assets/{TemplatesTabs-zf4YhStd.js → TemplatesTabs-CcRxZhJe.js} +5 -4
  58. package/dist/web/server/assets/{_id-fpFQ9_Ya.js → _id-BhOB8Umi.js} +1 -1
  59. package/dist/web/server/assets/{_id-CCHA0gdR.js → _id-C3HY4lWg.js} +7 -10
  60. package/dist/web/server/assets/{_id-B6g9wmPR.js → _id-Cg7x6q3g.js} +22 -28
  61. package/dist/web/server/assets/{_id-B04VaQlh.js → _id-CwyGjJeP.js} +2 -2
  62. package/dist/web/server/assets/{_id-_nFwi9gD.js → _id-D27T85mU.js} +1 -1
  63. package/dist/web/server/assets/{_id-5lLzLwcv.js → _id-D3Ap7zZA.js} +142 -144
  64. package/dist/web/server/assets/{_id-ButXHnRH.js → _id-DinTp_7X.js} +2 -2
  65. package/dist/web/server/assets/{_id-DdC9wpNN.js → _id-Dj1yZ3zJ.js} +2 -2
  66. package/dist/web/server/assets/{_id-DkFgCIb-.js → _id-DqON-59C.js} +2 -2
  67. package/dist/web/server/assets/{_id-CUWgTqMS.js → _id-IzadFZV9.js} +1 -1
  68. package/dist/web/server/assets/{_id-C4AOhstq.js → _id-LrvXU4Nr.js} +6 -5
  69. package/dist/web/server/assets/{_id-DJkzwHjM.js → _id-tB47Vsfp.js} +1 -1
  70. package/dist/web/server/assets/{_tanstack-start-manifest_v-Div-TukY.js → _tanstack-start-manifest_v-BXauUXg6.js} +96 -51
  71. package/dist/web/server/assets/{activity-C2ZKg1Q9.js → activity-BCI4mfNS.js} +28 -30
  72. package/dist/web/server/assets/{activity-DedraoFj.js → activity-D9SMqBhy.js} +2 -2
  73. package/dist/web/server/assets/{activity-GPx8NCeB.js → activity-DohitgwW.js} +1 -1
  74. package/dist/web/server/assets/{agents-BR2qXlXF.js → agents-BPKOshR5.js} +1 -1
  75. package/dist/web/server/assets/{agents-LHowEI6S.js → agents-BY74v7fM.js} +1 -1
  76. package/dist/web/server/assets/{agents-B8kinIPW.js → agents-BvttypqB.js} +2 -2
  77. package/dist/web/server/assets/{agents-Bp1nsVs2.js → agents-C9xlWK0Z.js} +2 -2
  78. package/dist/web/server/assets/agents-CgZMHj80.js +265 -0
  79. package/dist/web/server/assets/{agents-CUQmWhTp.js → agents-DZuFEj0D.js} +59 -77
  80. package/dist/web/server/assets/{approvals-VPc0YpLN.js → approvals-BGU-XGIO.js} +1 -1
  81. package/dist/web/server/assets/{approvals-Dw2LJoSA.js → approvals-CWcFHlor.js} +2 -2
  82. package/dist/web/server/assets/{approvals-DHgARzd8.js → approvals-DCaVw1Mz.js} +116 -78
  83. package/dist/web/server/assets/{auth-l-Vf8wlu.js → auth-byfSx6Ja.js} +1 -1
  84. package/dist/web/server/assets/{config-CHaCv89D.js → config-BDCJdtj2.js} +1 -1
  85. package/dist/web/server/assets/{config-BvKctDOX.js → config-D2LAsud2.js} +28 -49
  86. package/dist/web/server/assets/{config-QvHaxGlP.js → config-TeIoyYYc.js} +2 -2
  87. package/dist/web/server/assets/{context-5lrf2ame.js → context-B-XDf6Ym.js} +1 -1
  88. package/dist/web/server/assets/{context-D3Egm-vY.js → context-BXGo5Vfi.js} +2 -2
  89. package/dist/web/server/assets/context-DrkrIWun.js +47 -0
  90. package/dist/web/server/assets/{createServerRpc-CeKECg65.js → createServerRpc-pU-IQV2Y.js} +1 -1
  91. package/dist/web/server/assets/{createSsrRpc-ZBGxhl8t.js → createSsrRpc-DFsIAfFd.js} +1 -1
  92. package/dist/web/server/assets/{empty-plugin-adapters-DKUlnwwl.js → empty-plugin-adapters-Cq4--YW-.js} +1 -1
  93. package/dist/web/server/assets/{inbox-CkiSvD14.js → inbox-B3-TRsNI.js} +1 -1
  94. package/dist/web/server/assets/{inbox-Bxb3W04M.js → inbox-BardsGyy.js} +2 -2
  95. package/dist/web/server/assets/inbox-CUIyf9MT.js +131 -0
  96. package/dist/web/server/assets/login-Bx5LEyGP.js +118 -0
  97. package/dist/web/server/assets/login-CmWvxfTK.js +136 -0
  98. package/dist/web/server/assets/{mcp-BsFKEoXt.js → mcp-2pwT9HU8.js} +1 -1
  99. package/dist/web/server/assets/{mcp-BU_kKENi.js → mcp-BJjLIdP0.js} +105 -112
  100. package/dist/web/server/assets/{mcp-CKqwG4mt.js → mcp-DIWTogHM.js} +2 -2
  101. package/dist/web/server/assets/members-CCv17cjQ.js +46 -0
  102. package/dist/web/server/assets/{members-DlGBKZNl.js → members-CW5aBe81.js} +1 -1
  103. package/dist/web/server/assets/{members-ksELRsyk.js → members-VdPwD6CE.js} +2 -2
  104. package/dist/web/server/assets/{memory-CO0jKGzJ.js → memory-Dngc13Nw.js} +1 -1
  105. package/dist/web/server/assets/memory-a8Kz57Kh.js +287 -0
  106. package/dist/web/server/assets/{memory-B5moRnnp.js → memory-pZ4pZT7p.js} +2 -2
  107. package/dist/web/server/assets/{policy-Dxs78_GO.js → policy-Bb-vEgqg.js} +1 -1
  108. package/dist/web/server/assets/{policy-Dr55y-Mh.js → policy-BcGELcc9.js} +16 -22
  109. package/dist/web/server/assets/{policy-DNcGZLOB.js → policy-C30AeFIb.js} +2 -2
  110. package/dist/web/server/assets/{router-_izWQUeG.js → router-C5_NjTsP.js} +100 -111
  111. package/dist/web/server/assets/{routes-BSSKp3Rv.js → routes-B6cMLIPk.js} +16 -13
  112. package/dist/web/server/assets/{routes-BrTOoeth.js → routes-BrA-U_Hm.js} +2 -2
  113. package/dist/web/server/assets/{routes-DOj6ljcm.js → routes-C19CMLZt.js} +2 -2
  114. package/dist/web/server/assets/services-B9yBWDX0.js +79 -0
  115. package/dist/web/server/assets/{services-Pv_V88VA.js → services-C4szdhPx.js} +2 -2
  116. package/dist/web/server/assets/{services-DhRiNeq0.js → services-wG8I06oS.js} +1 -1
  117. package/dist/web/server/assets/skills-BZdqiDig.js +358 -0
  118. package/dist/web/server/assets/{skills-l2cyQ3zS.js → skills-C-UgkuCW.js} +2 -2
  119. package/dist/web/server/assets/{skills-CFIWVg32.js → skills-a9VSWHWq.js} +1 -1
  120. package/dist/web/server/assets/{start-DlHq0RaQ.js → start-WH8WzTL_.js} +1 -1
  121. package/dist/web/server/assets/{team-policy-Csvc5EDd.js → team-policy-vPG01onj.js} +3 -3
  122. package/dist/web/server/assets/{teams-B9O-WDH5.js → teams-CpQ0YgWf.js} +38 -34
  123. package/dist/web/server/assets/{teams-35Oprf6e.js → teams-DEpQR2QA.js} +2 -2
  124. package/dist/web/server/assets/{teams-DFkN7ic7.js → teams-DqfrEoH6.js} +1 -1
  125. package/dist/web/server/assets/{teams-B5IF65p2.js → teams-MjqgsmC3.js} +1 -1
  126. package/dist/web/server/assets/{teams-DH1CvWmT.js → teams-OIkHuxy1.js} +2 -2
  127. package/dist/web/server/assets/teams-jBtvnk59.js +193 -0
  128. package/dist/web/server/assets/{telegram-C9sQFwWj.js → telegram-CBF8SJzB.js} +36 -71
  129. package/dist/web/server/assets/{telegram-BdaUIjvs.js → telegram-DNgCWebD.js} +1 -1
  130. package/dist/web/server/assets/{telegram-mTnJCOmn.js → telegram-XwyKSEtj.js} +2 -2
  131. package/dist/web/server/assets/{tokens-DdpnfV_Y.js → tokens-BnwFbV7T.js} +2 -2
  132. package/dist/web/server/assets/{tokens-BCz3PSoT.js → tokens-DPDMSN5O.js} +1 -1
  133. package/dist/web/server/assets/tokens-yyTSfBSN.js +186 -0
  134. package/dist/web/server/assets/{triggers-BcTTwMfy.js → triggers-CBl4yMyw.js} +2 -2
  135. package/dist/web/server/assets/{triggers-BcH_6PW1.js → triggers-D79NoSXk.js} +4 -3
  136. package/dist/web/server/assets/{triggers-BzJG1nN5.js → triggers-_3rdhwSN.js} +31 -6
  137. package/dist/web/server/assets/{welcome-CDGE2Sdk.js → welcome-IYHGurWx.js} +21 -13
  138. package/dist/web/server/server.js +82 -73
  139. package/dist/worker.js +1614 -153
  140. package/dist/worker.js.map +1 -1
  141. package/package.json +5 -3
  142. package/dist/web/client/assets/AgentTabs-DioGqUVR.js +0 -1
  143. package/dist/web/client/assets/ConfigTabs-pY-V0Rie.js +0 -1
  144. package/dist/web/client/assets/FieldRow-DmwAFfbF.js +0 -1
  145. package/dist/web/client/assets/ProductionTeamPolicyEditor-1a5jQqUB.js +0 -7
  146. package/dist/web/client/assets/TeamTabs-BViZ4sti.js +0 -1
  147. package/dist/web/client/assets/TemplatesTabs-DVcY9pMD.js +0 -1
  148. package/dist/web/client/assets/_id-8P7brhGy.js +0 -1
  149. package/dist/web/client/assets/_id-C3o3MHq8.js +0 -1
  150. package/dist/web/client/assets/_id-DGRrSF1e.js +0 -1
  151. package/dist/web/client/assets/_id-KnJe-aW9.js +0 -1
  152. package/dist/web/client/assets/activity-WWvJSo4t.js +0 -1
  153. package/dist/web/client/assets/agents-C32T1voV.js +0 -1
  154. package/dist/web/client/assets/agents-nH4m4gZ1.js +0 -1
  155. package/dist/web/client/assets/approvals-l8jIZjqz.js +0 -1
  156. package/dist/web/client/assets/config-C7wvi1nR.js +0 -3
  157. package/dist/web/client/assets/context-BEGWE3RC.js +0 -1
  158. package/dist/web/client/assets/inbox--4aBaAgG.js +0 -1
  159. package/dist/web/client/assets/index-BCXoh1c8.js +0 -12
  160. package/dist/web/client/assets/login-Bk2wwIHQ.js +0 -1
  161. package/dist/web/client/assets/mcp-vM7xgh9e.js +0 -1
  162. package/dist/web/client/assets/members-cPKfnrSL.js +0 -1
  163. package/dist/web/client/assets/memory-BOcsaemD.js +0 -1
  164. package/dist/web/client/assets/policy-BGLCJYvS.js +0 -1
  165. package/dist/web/client/assets/preload-helper-eOOCz1Fu.js +0 -1
  166. package/dist/web/client/assets/routes-DnrP3dwv.js +0 -1
  167. package/dist/web/client/assets/services-C2_O3ifw.js +0 -1
  168. package/dist/web/client/assets/skills-B__fLZjx.js +0 -1
  169. package/dist/web/client/assets/styles-Dn24-ZvP.css +0 -2
  170. package/dist/web/client/assets/team-policy-BdX340m4.js +0 -1
  171. package/dist/web/client/assets/teams-DZMB4_iw.js +0 -1
  172. package/dist/web/client/assets/teams-rpaYKNIb.js +0 -1
  173. package/dist/web/client/assets/telegram-B1O4Ko0V.js +0 -1
  174. package/dist/web/client/assets/tokens-D7FH9VgA.js +0 -1
  175. package/dist/web/client/assets/triggers-3PLy2_Fo.js +0 -1
  176. package/dist/web/client/assets/welcome-B-QQobzq.js +0 -1
  177. package/dist/web/client/assets/wire-constants-BY9Q9Z7d.js +0 -74
  178. package/dist/web/server/assets/ConfigTabs-CyuxzesF.js +0 -41
  179. package/dist/web/server/assets/agents-DU9Hqs58.js +0 -249
  180. package/dist/web/server/assets/context-CEr4-xiA.js +0 -49
  181. package/dist/web/server/assets/inbox-DU27iHv_.js +0 -133
  182. package/dist/web/server/assets/login-CNznncgA.js +0 -58
  183. package/dist/web/server/assets/login-CQybKk7Y.js +0 -74
  184. package/dist/web/server/assets/members-40DxRdVj.js +0 -48
  185. package/dist/web/server/assets/memory-CiTl4cN9.js +0 -289
  186. package/dist/web/server/assets/services-CHe4ihJk.js +0 -94
  187. package/dist/web/server/assets/skills-D89ND2kR.js +0 -321
  188. package/dist/web/server/assets/teams-zcm9XaQU.js +0 -174
  189. package/dist/web/server/assets/tokens-CkKqrtk-.js +0 -193
@@ -1,8 +1,9 @@
1
- import "./wire-constants-C8nBJcU3.js";
2
1
  import { t as Button } from "./Button-Dsnw22OF.js";
2
+ import "./wire-constants-C8nBJcU3.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { Link, useNavigate, useRouter } from "@tanstack/react-router";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { Archive, Bot, ChevronDown, ChevronRight, Pencil, Plus, Send, UsersRound } from "lucide-react";
6
7
  //#region src/components/CreateTeamDialog.tsx
7
8
  function CreateTeamDialog({ onClose }) {
8
9
  const router = useRouter();
@@ -41,15 +42,22 @@ function CreateTeamDialog({ onClose }) {
41
42
  }
42
43
  return /* @__PURE__ */ jsx("div", {
43
44
  onClick: onClose,
44
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/30 backdrop-blur-[1px]",
45
+ onKeyDown: (event) => {
46
+ if (event.key === "Escape") onClose();
47
+ },
48
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-charcoal/45 p-4 backdrop-blur-sm",
45
49
  children: /* @__PURE__ */ jsxs("form", {
50
+ role: "dialog",
51
+ "aria-modal": "true",
52
+ "aria-labelledby": "create-team-title",
46
53
  onSubmit: submit,
47
54
  onClick: (e) => e.stopPropagation(),
48
- className: "w-full max-w-md rounded-2xl border bg-card p-6 shadow-lg",
55
+ className: "max-h-[calc(100dvh-2rem)] w-full max-w-lg overflow-y-auto rounded-3xl border border-frost bg-card p-6 shadow-baziu-lg sm:p-7",
49
56
  children: [
50
- /* @__PURE__ */ jsx("h3", {
51
- className: "font-serif text-xl text-foreground mb-1",
52
- children: "Create a new team"
57
+ /* @__PURE__ */ jsx("h2", {
58
+ id: "create-team-title",
59
+ className: "font-serif text-2xl text-foreground",
60
+ children: "Create a team"
53
61
  }),
54
62
  /* @__PURE__ */ jsxs("p", {
55
63
  className: "text-sm text-muted-foreground mb-4",
@@ -63,7 +71,7 @@ function CreateTeamDialog({ onClose }) {
63
71
  ]
64
72
  }),
65
73
  /* @__PURE__ */ jsxs("div", {
66
- className: "grid grid-cols-2 gap-3 mb-3",
74
+ className: "mb-3 grid gap-3 sm:grid-cols-2",
67
75
  children: [/* @__PURE__ */ jsxs("label", {
68
76
  className: "block text-sm",
69
77
  children: ["ID (slug)", /* @__PURE__ */ jsx("input", {
@@ -116,20 +124,19 @@ function CreateTeamDialog({ onClose }) {
116
124
  ]
117
125
  }),
118
126
  err && /* @__PURE__ */ jsx("p", {
119
- className: "mt-2 text-sm text-rose-700",
127
+ className: "err mt-2",
120
128
  children: err
121
129
  }),
122
130
  /* @__PURE__ */ jsxs("div", {
123
131
  className: "mt-5 flex justify-end gap-2",
124
- children: [/* @__PURE__ */ jsx("button", {
125
- type: "button",
132
+ children: [/* @__PURE__ */ jsx(Button, {
133
+ variant: "ghost",
126
134
  onClick: onClose,
127
- className: "rounded-md border px-3 py-2 text-sm text-foreground hover:bg-accent",
128
135
  children: "Cancel"
129
- }), /* @__PURE__ */ jsx("button", {
136
+ }), /* @__PURE__ */ jsx(Button, {
137
+ variant: "primary",
130
138
  type: "submit",
131
139
  disabled: busy,
132
- className: "rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50",
133
140
  children: busy ? "Creating…" : "Create"
134
141
  })]
135
142
  })
@@ -225,7 +232,7 @@ function SpawnDialog({ profileId, teamHint, teams, onClose }) {
225
232
  "aria-modal": "true",
226
233
  "aria-labelledby": "spawn-agent-title",
227
234
  onSubmit: submit,
228
- className: "w-full max-w-md rounded-2xl border bg-card p-6 shadow-lg",
235
+ className: "max-h-[calc(100dvh-2rem)] w-full max-w-lg overflow-y-auto rounded-3xl border border-frost bg-card p-6 shadow-baziu-lg sm:p-7",
229
236
  onClick: (e) => e.stopPropagation(),
230
237
  children: [
231
238
  /* @__PURE__ */ jsx("h3", {
@@ -270,20 +277,13 @@ function SpawnDialog({ profileId, teamHint, teams, onClose }) {
270
277
  setPreview(null);
271
278
  },
272
279
  className: "mt-1 block w-full rounded-md border bg-background px-3 py-2",
273
- children: [
274
- /* @__PURE__ */ jsx("option", {
275
- value: "profile_defaults",
276
- children: "agent-template defaults"
277
- }),
278
- /* @__PURE__ */ jsx("option", {
279
- value: "isolated",
280
- children: "isolated"
281
- }),
282
- /* @__PURE__ */ jsx("option", {
283
- value: "open",
284
- children: "open to current members and boundaries"
285
- })
286
- ]
280
+ children: [/* @__PURE__ */ jsx("option", {
281
+ value: "profile_defaults",
282
+ children: "Agent-template defaults"
283
+ }), /* @__PURE__ */ jsx("option", {
284
+ value: "isolated",
285
+ children: "isolated"
286
+ })]
287
287
  }),
288
288
  /* @__PURE__ */ jsx("span", {
289
289
  className: "mt-1 block text-xs text-muted-foreground",
@@ -307,7 +307,7 @@ function SpawnDialog({ profileId, teamHint, teams, onClose }) {
307
307
  })]
308
308
  }),
309
309
  err && /* @__PURE__ */ jsx("p", {
310
- className: "mt-2 text-sm text-rose-700",
310
+ className: "err mt-2",
311
311
  children: err
312
312
  }),
313
313
  preview && /* @__PURE__ */ jsxs("div", {
@@ -342,15 +342,14 @@ function SpawnDialog({ profileId, teamHint, teams, onClose }) {
342
342
  }),
343
343
  /* @__PURE__ */ jsxs("div", {
344
344
  className: "mt-5 flex justify-end gap-2",
345
- children: [/* @__PURE__ */ jsx("button", {
346
- type: "button",
345
+ children: [/* @__PURE__ */ jsx(Button, {
346
+ variant: "ghost",
347
347
  onClick: onClose,
348
- className: "rounded-md border px-3 py-2 text-sm text-foreground hover:bg-accent",
349
348
  children: "Cancel"
350
- }), /* @__PURE__ */ jsx("button", {
349
+ }), /* @__PURE__ */ jsx(Button, {
350
+ variant: "primary",
351
351
  type: "submit",
352
352
  disabled: busy,
353
- className: "rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50",
354
353
  children: busy ? "Working…" : preview ? "Commit reviewed creation" : "Review exact policy"
355
354
  })]
356
355
  })
@@ -364,7 +363,7 @@ function Backdrop({ children, onClose }) {
364
363
  onKeyDown: (event) => {
365
364
  if (event.key === "Escape") onClose();
366
365
  },
367
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/30 backdrop-blur-[1px]",
366
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-charcoal/45 p-4 backdrop-blur-sm",
368
367
  children
369
368
  });
370
369
  }
@@ -446,7 +445,8 @@ function SpawnTeamModal({ profileGroup: team, teams, onClose, onSpawned }) {
446
445
  return /* @__PURE__ */ jsx("div", {
447
446
  role: "dialog",
448
447
  "aria-modal": "true",
449
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
448
+ "aria-labelledby": "spawn-team-title",
449
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-charcoal/45 p-4 backdrop-blur-sm",
450
450
  onClick: onClose,
451
451
  onKeyDown: (event) => {
452
452
  if (event.key === "Escape") onClose();
@@ -454,14 +454,17 @@ function SpawnTeamModal({ profileGroup: team, teams, onClose, onSpawned }) {
454
454
  children: /* @__PURE__ */ jsxs("div", {
455
455
  ref: dialogRef,
456
456
  tabIndex: -1,
457
- className: "card w-full max-w-lg",
457
+ className: "max-h-[calc(100dvh-2rem)] w-full max-w-lg overflow-y-auto rounded-3xl border border-frost bg-card p-6 shadow-baziu-lg sm:p-7",
458
458
  role: "document",
459
459
  onClick: (event) => event.stopPropagation(),
460
460
  onKeyDown: (event) => {
461
461
  if (event.key !== "Escape") event.stopPropagation();
462
462
  },
463
463
  children: [
464
- /* @__PURE__ */ jsxs("h3", { children: ["spawn team — ", team.name] }),
464
+ /* @__PURE__ */ jsxs("h2", {
465
+ id: "spawn-team-title",
466
+ children: ["Spawn team — ", team.name]
467
+ }),
465
468
  error && /* @__PURE__ */ jsx("div", {
466
469
  className: "err",
467
470
  children: error
@@ -622,42 +625,75 @@ function Sidebar({ agents, teams, profiles, profileGroups, selectedAgentId, init
622
625
  }
623
626
  const selectedTeamId = agents.find((a) => a.id === selectedAgentId)?.teamId ?? null;
624
627
  return /* @__PURE__ */ jsxs("aside", {
625
- className: "flex h-full flex-col rounded-lg border bg-card overflow-hidden",
628
+ className: "flex h-full flex-col overflow-hidden rounded-2xl border border-border bg-card shadow-baziu-sm",
626
629
  children: [
627
630
  /* @__PURE__ */ jsxs("header", {
628
- className: "flex items-center justify-between border-b px-3 py-2.5 bg-muted/30",
629
- children: [/* @__PURE__ */ jsx("span", {
630
- className: "font-serif text-base text-foreground",
631
- children: "agents"
631
+ className: "flex items-center justify-between gap-3 border-b border-border bg-muted/30 px-3 py-2.5",
632
+ children: [/* @__PURE__ */ jsxs("div", {
633
+ className: "min-w-0",
634
+ children: [/* @__PURE__ */ jsxs("div", {
635
+ className: "flex items-center gap-2 text-sm font-semibold text-foreground",
636
+ children: [/* @__PURE__ */ jsx("span", {
637
+ className: "flex size-7 items-center justify-center rounded-lg bg-accent text-accent-foreground",
638
+ children: /* @__PURE__ */ jsx(Bot, {
639
+ className: "size-4",
640
+ "aria-hidden": "true"
641
+ })
642
+ }), /* @__PURE__ */ jsx("span", { children: "Agents" })]
643
+ }), /* @__PURE__ */ jsxs("p", {
644
+ className: "mt-0.5 truncate pl-9 text-[0.7rem] text-muted-foreground",
645
+ children: [
646
+ agents.length,
647
+ " agent",
648
+ agents.length === 1 ? "" : "s",
649
+ " across ",
650
+ teams.length,
651
+ " team",
652
+ teams.length === 1 ? "" : "s"
653
+ ]
654
+ })]
632
655
  }), /* @__PURE__ */ jsxs("div", {
633
656
  className: "relative",
634
- children: [/* @__PURE__ */ jsx("button", {
657
+ children: [/* @__PURE__ */ jsxs("button", {
635
658
  ref: newButtonRef,
636
659
  type: "button",
637
660
  onClick: () => setMenuOpen((v) => !v),
638
- className: "rounded-md border px-2 py-1 text-xs text-muted-foreground hover:text-foreground hover:border-foreground/30",
639
- children: "+ new ▾"
661
+ "aria-expanded": menuOpen,
662
+ "aria-haspopup": "menu",
663
+ className: "unstyled inline-flex h-8 items-center gap-1 rounded-lg border border-border bg-card px-2.5 text-xs font-semibold text-foreground shadow-baziu-sm transition-colors hover:border-primary/30 hover:bg-accent hover:text-accent-foreground",
664
+ children: [
665
+ /* @__PURE__ */ jsx(Plus, {
666
+ className: "size-3.5",
667
+ "aria-hidden": "true"
668
+ }),
669
+ "New",
670
+ /* @__PURE__ */ jsx(ChevronDown, {
671
+ className: `size-3.5 text-muted-foreground transition-transform ${menuOpen ? "rotate-180" : ""}`,
672
+ "aria-hidden": "true"
673
+ })
674
+ ]
640
675
  }), menuOpen && /* @__PURE__ */ jsxs("div", {
641
676
  role: "menu",
642
- className: "absolute right-0 top-[calc(100%+0.3rem)] z-20 min-w-[14rem] rounded-md border bg-popover p-1 shadow-md",
677
+ className: "absolute right-0 top-[calc(100%+0.4rem)] z-20 w-60 overflow-hidden rounded-xl border border-border bg-popover p-1.5 text-popover-foreground shadow-baziu-lg",
643
678
  onMouseLeave: () => setMenuOpen(false),
644
679
  children: [
645
680
  profiles.length === 0 ? /* @__PURE__ */ jsxs("div", {
646
- className: "px-3 py-2 text-sm text-muted-foreground",
681
+ className: "rounded-lg bg-muted/40 px-3 py-2.5 text-xs leading-5 text-muted-foreground",
647
682
  children: [
648
- "No profiles yet.",
649
- /* @__PURE__ */ jsx("br", {}),
683
+ "No Agent templates yet.",
684
+ " ",
650
685
  /* @__PURE__ */ jsx("a", {
651
686
  href: "/templates/agents",
652
687
  className: "text-primary underline",
653
- children: "Create one"
654
- }),
655
- " ",
656
- "to spawn agents."
688
+ children: "Create one to spawn agents."
689
+ })
657
690
  ]
658
- }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
659
- className: "px-3 pt-1 pb-0.5 text-[0.7em] uppercase tracking-wide text-muted-foreground",
660
- children: "spawn agent from template"
691
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
692
+ className: "flex items-center gap-1.5 px-2.5 pb-1 pt-1 text-[0.68rem] font-semibold uppercase tracking-[0.1em] text-muted-foreground",
693
+ children: [/* @__PURE__ */ jsx(Bot, {
694
+ className: "size-3",
695
+ "aria-hidden": "true"
696
+ }), "Agent templates"]
661
697
  }), sortedProfiles.map((p) => /* @__PURE__ */ jsxs("button", {
662
698
  type: "button",
663
699
  role: "menuitem",
@@ -665,19 +701,35 @@ function Sidebar({ agents, teams, profiles, profileGroups, selectedAgentId, init
665
701
  setMenuOpen(false);
666
702
  setSpawnFor({ profileId: p.id });
667
703
  },
668
- className: "flex w-full items-center justify-between rounded-sm px-3 py-1.5 text-sm hover:bg-accent",
669
- children: [/* @__PURE__ */ jsx("span", { children: p.name || p.id }), p.id === "default" && /* @__PURE__ */ jsx("span", {
670
- className: "rounded bg-muted px-1 text-[0.7em] text-muted-foreground",
671
- children: "default"
672
- })]
704
+ className: "unstyled flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-sm text-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
705
+ children: [
706
+ /* @__PURE__ */ jsx("span", {
707
+ className: "flex size-6 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground",
708
+ children: /* @__PURE__ */ jsx(Bot, {
709
+ className: "size-3.5",
710
+ "aria-hidden": "true"
711
+ })
712
+ }),
713
+ /* @__PURE__ */ jsx("span", {
714
+ className: "min-w-0 flex-1 truncate",
715
+ children: p.name || p.id
716
+ }),
717
+ p.id === "default" && /* @__PURE__ */ jsx("span", {
718
+ className: "rounded-full border border-border bg-muted px-1.5 py-0.5 text-[0.65rem] font-semibold text-muted-foreground",
719
+ children: "Default"
720
+ })
721
+ ]
673
722
  }, p.id))] }),
674
- /* @__PURE__ */ jsx("div", { className: "my-1 h-px bg-border" }),
675
- /* @__PURE__ */ jsx("div", {
676
- className: "px-3 pt-1 pb-0.5 text-[0.7em] uppercase tracking-wide text-muted-foreground",
677
- children: "spawn team from template"
723
+ /* @__PURE__ */ jsx("div", { className: "my-1.5 h-px bg-border" }),
724
+ /* @__PURE__ */ jsxs("div", {
725
+ className: "flex items-center gap-1.5 px-2.5 pb-1 pt-1 text-[0.68rem] font-semibold uppercase tracking-[0.1em] text-muted-foreground",
726
+ children: [/* @__PURE__ */ jsx(UsersRound, {
727
+ className: "size-3",
728
+ "aria-hidden": "true"
729
+ }), "Team templates"]
678
730
  }),
679
731
  profileGroups.length === 0 ? /* @__PURE__ */ jsxs("div", {
680
- className: "px-3 py-1.5 text-xs text-muted-foreground",
732
+ className: "rounded-lg bg-muted/40 px-3 py-2 text-xs leading-5 text-muted-foreground",
681
733
  children: [
682
734
  "No team templates yet.",
683
735
  " ",
@@ -692,45 +744,76 @@ function Sidebar({ agents, teams, profiles, profileGroups, selectedAgentId, init
692
744
  type: "button",
693
745
  role: "menuitem",
694
746
  disabled: pg.slotCount === 0,
695
- title: pg.slotCount === 0 ? "add at least one member before spawning" : void 0,
747
+ title: pg.slotCount === 0 ? "Add at least one member before spawning" : void 0,
696
748
  onClick: () => {
697
749
  setMenuOpen(false);
698
750
  setSpawnTeamFor(pg);
699
751
  },
700
- className: "flex w-full items-center justify-between rounded-sm px-3 py-1.5 text-sm hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent",
701
- children: [/* @__PURE__ */ jsx("span", { children: pg.name || pg.id }), /* @__PURE__ */ jsx("span", {
702
- className: "font-mono text-[0.7em] text-muted-foreground",
703
- children: pg.slotCount
704
- })]
752
+ className: "unstyled flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-sm text-foreground transition-colors hover:bg-accent hover:text-accent-foreground disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent",
753
+ children: [
754
+ /* @__PURE__ */ jsx("span", {
755
+ className: "flex size-6 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground",
756
+ children: /* @__PURE__ */ jsx(UsersRound, {
757
+ className: "size-3.5",
758
+ "aria-hidden": "true"
759
+ })
760
+ }),
761
+ /* @__PURE__ */ jsx("span", {
762
+ className: "min-w-0 flex-1 truncate",
763
+ children: pg.name || pg.id
764
+ }),
765
+ /* @__PURE__ */ jsx("span", {
766
+ className: "inline-flex min-w-6 items-center justify-center rounded-full bg-muted px-1.5 font-mono text-[0.68rem] text-muted-foreground",
767
+ children: pg.slotCount
768
+ })
769
+ ]
705
770
  }, pg.id)),
706
- /* @__PURE__ */ jsx("div", { className: "my-1 h-px bg-border" }),
707
- /* @__PURE__ */ jsx("button", {
771
+ /* @__PURE__ */ jsx("div", { className: "my-1.5 h-px bg-border" }),
772
+ /* @__PURE__ */ jsxs("button", {
708
773
  type: "button",
709
774
  onClick: () => {
710
775
  setMenuOpen(false);
711
776
  setCreateGroupOpen(true);
712
777
  },
713
- className: "block w-full text-left rounded-sm px-3 py-1.5 text-xs text-muted-foreground hover:bg-accent",
714
- children: "+ create team"
778
+ className: "unstyled flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-xs font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
779
+ children: [/* @__PURE__ */ jsx(Plus, {
780
+ className: "size-3.5",
781
+ "aria-hidden": "true"
782
+ }), "Create a team"]
715
783
  })
716
784
  ]
717
785
  })]
718
786
  })]
719
787
  }),
720
788
  /* @__PURE__ */ jsx("nav", {
721
- className: "flex-1 overflow-y-auto p-1",
789
+ className: "flex-1 overflow-y-auto p-1.5",
790
+ "aria-label": "Teams and agents",
722
791
  children: agents.length === 0 && teams.length === 0 ? /* @__PURE__ */ jsxs("div", {
723
- className: "p-4 text-sm text-muted-foreground",
792
+ className: "m-1 flex flex-col items-center rounded-xl border border-dashed border-border bg-muted/30 px-4 py-6 text-center",
724
793
  children: [
725
- "No agents yet.",
726
- " ",
727
- /* @__PURE__ */ jsx("a", {
728
- href: "/agents",
729
- className: "text-primary underline",
730
- children: "Spawn one"
794
+ /* @__PURE__ */ jsx("span", {
795
+ className: "mb-2 flex size-9 items-center justify-center rounded-full bg-accent text-accent-foreground",
796
+ children: /* @__PURE__ */ jsx(Bot, {
797
+ className: "size-4",
798
+ "aria-hidden": "true"
799
+ })
731
800
  }),
732
- " ",
733
- "to start chatting."
801
+ /* @__PURE__ */ jsx("p", {
802
+ className: "text-sm font-semibold text-foreground",
803
+ children: "No agents yet"
804
+ }),
805
+ /* @__PURE__ */ jsx("p", {
806
+ className: "mt-1 text-xs leading-5 text-muted-foreground",
807
+ children: "Spawn your first agent to start a conversation."
808
+ }),
809
+ /* @__PURE__ */ jsxs("a", {
810
+ href: "/agents",
811
+ className: "mt-3 inline-flex items-center gap-1 text-xs font-semibold text-primary hover:text-primary/80",
812
+ children: ["Open agent setup", /* @__PURE__ */ jsx(ChevronRight, {
813
+ className: "size-3.5",
814
+ "aria-hidden": "true"
815
+ })]
816
+ })
734
817
  ]
735
818
  }) : sortedGroups.map((g) => {
736
819
  const teamAgents = agentsByGroup.get(g.id) ?? [];
@@ -751,66 +834,94 @@ function Sidebar({ agents, teams, profiles, profileGroups, selectedAgentId, init
751
834
  },
752
835
  className: "team/details mb-1 last:mb-0",
753
836
  children: [/* @__PURE__ */ jsxs("summary", {
754
- className: "flex cursor-pointer list-none items-center gap-1.5 rounded-sm px-2 py-1.5 text-xs uppercase tracking-wide text-muted-foreground hover:bg-accent",
837
+ className: `flex min-h-8 cursor-pointer list-none items-center gap-1.5 rounded-lg px-2 py-1.5 text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${containsSelected ? "bg-muted/60 text-foreground" : "text-muted-foreground"}`,
755
838
  children: [
839
+ /* @__PURE__ */ jsx(ChevronRight, {
840
+ className: "size-3.5 shrink-0 transition-transform team-open/details:rotate-90",
841
+ "aria-hidden": "true"
842
+ }),
756
843
  /* @__PURE__ */ jsx("span", {
757
- className: "w-3 text-xs transition-transform team-open/details:rotate-90 inline-block",
758
- children: "▸"
844
+ className: "flex size-5 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground",
845
+ children: /* @__PURE__ */ jsx(UsersRound, {
846
+ className: "size-3",
847
+ "aria-hidden": "true"
848
+ })
759
849
  }),
760
850
  /* @__PURE__ */ jsx("span", {
761
- className: "flex-1 truncate font-semibold",
851
+ className: "min-w-0 flex-1 truncate font-medium",
762
852
  children: g.name
763
853
  }),
854
+ g.id === "default" && /* @__PURE__ */ jsx("span", {
855
+ className: "text-[0.62rem] font-semibold uppercase tracking-wide text-muted-foreground",
856
+ children: "Default"
857
+ }),
764
858
  /* @__PURE__ */ jsx("span", {
765
- className: "font-mono text-xs rounded bg-muted px-1 min-w-[1.4em] text-center",
859
+ className: "inline-flex min-w-6 items-center justify-center rounded-full border border-border bg-card px-1.5 font-mono text-[0.68rem] text-muted-foreground",
766
860
  children: teamAgents.length
767
861
  })
768
862
  ]
769
863
  }), teamAgents.length === 0 ? /* @__PURE__ */ jsx("div", {
770
- className: "pl-6 py-1 text-xs italic text-muted-foreground",
771
- children: "no agents"
864
+ className: "py-2 pl-12 pr-2 text-xs text-muted-foreground",
865
+ children: "No agents in this team"
772
866
  }) : /* @__PURE__ */ jsx("div", {
773
- className: "pl-2",
867
+ className: "space-y-0.5 py-0.5 pl-2",
774
868
  children: teamAgents.map((a) => /* @__PURE__ */ jsxs("div", {
775
- className: "team/row relative",
869
+ className: "team/row relative rounded-lg",
776
870
  children: [/* @__PURE__ */ jsxs(Link, {
777
871
  to: "/",
778
872
  search: { agent: a.id },
779
- className: `block rounded-sm border-l-2 px-3 py-1.5 pr-14 hover:bg-accent ${a.id === selectedAgentId ? "border-primary bg-accent" : "border-transparent"}`,
873
+ "aria-current": a.id === selectedAgentId ? "page" : void 0,
874
+ className: `block min-h-11 rounded-lg border border-transparent py-1.5 pl-2.5 pr-[4.6rem] transition-colors hover:bg-accent/70 ${a.id === selectedAgentId ? "border-primary/20 bg-accent text-accent-foreground shadow-baziu-sm" : "text-foreground"}`,
780
875
  children: [/* @__PURE__ */ jsxs("div", {
781
- className: "flex items-center gap-1.5 truncate text-sm font-medium",
782
- children: [/* @__PURE__ */ jsx("span", {
783
- className: "truncate",
784
- children: a.name
785
- }), a.telegramTopicId !== null && /* @__PURE__ */ jsx("span", {
786
- className: "text-xs",
787
- title: `Telegram topic #${a.telegramTopicId}`,
788
- "aria-label": `Bound to Telegram topic ${a.telegramTopicId}`,
789
- children: "✈"
790
- })]
876
+ className: "flex items-center gap-1.5 text-sm font-medium",
877
+ children: [
878
+ /* @__PURE__ */ jsx("span", {
879
+ className: `size-1.5 shrink-0 rounded-full ${a.id === selectedAgentId ? "bg-primary" : "bg-border"}`,
880
+ "aria-hidden": "true"
881
+ }),
882
+ /* @__PURE__ */ jsx("span", {
883
+ className: "min-w-0 flex-1 truncate",
884
+ children: a.name
885
+ }),
886
+ a.telegramTopicId !== null && /* @__PURE__ */ jsx("span", {
887
+ className: "shrink-0 text-primary",
888
+ title: `Telegram topic #${a.telegramTopicId}`,
889
+ "aria-label": `Bound to Telegram topic ${a.telegramTopicId}`,
890
+ children: /* @__PURE__ */ jsx(Send, {
891
+ className: "size-3",
892
+ "aria-hidden": "true"
893
+ })
894
+ })
895
+ ]
791
896
  }), /* @__PURE__ */ jsxs("div", {
792
- className: "flex gap-2 font-mono text-[0.7em] text-muted-foreground",
897
+ className: "mt-0.5 flex gap-2 pl-3 font-mono text-[0.65rem] text-muted-foreground",
793
898
  children: [/* @__PURE__ */ jsx("span", {
794
899
  className: "uppercase tracking-wide",
795
900
  children: a.status
796
- }), /* @__PURE__ */ jsx("code", { children: a.id.slice(0, 8) })]
901
+ }), /* @__PURE__ */ jsx("span", { children: a.id.slice(0, 8) })]
797
902
  })]
798
903
  }), /* @__PURE__ */ jsxs("div", {
799
- className: "absolute right-1 top-1 flex gap-0.5 opacity-0 transition-opacity team-hover/row:opacity-100 focus-within:opacity-100",
904
+ className: "absolute right-1 top-1/2 z-10 flex -translate-y-1/2 gap-0.5",
800
905
  children: [/* @__PURE__ */ jsx("button", {
801
906
  type: "button",
802
907
  onClick: () => rename(a),
803
- title: "rename",
804
- "aria-label": `rename ${a.name}`,
805
- className: "unstyled flex h-6 w-6 items-center justify-center rounded-sm text-mocha-light hover:bg-snow hover:text-sapphire",
806
- children: "✎"
908
+ title: "Rename",
909
+ "aria-label": `Rename ${a.name}`,
910
+ className: "unstyled flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-card hover:text-primary focus-visible:bg-card",
911
+ children: /* @__PURE__ */ jsx(Pencil, {
912
+ className: "size-3.5",
913
+ "aria-hidden": "true"
914
+ })
807
915
  }), /* @__PURE__ */ jsx("button", {
808
916
  type: "button",
809
917
  onClick: () => archive(a),
810
- title: "archive",
811
- "aria-label": `archive ${a.name}`,
812
- className: "unstyled flex h-6 w-6 items-center justify-center rounded-sm text-mocha-light hover:bg-snow hover:text-[#9B3D3D]",
813
- children: "×"
918
+ title: "Archive",
919
+ "aria-label": `Archive ${a.name}`,
920
+ className: "unstyled flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive focus-visible:bg-destructive/10 focus-visible:text-destructive",
921
+ children: /* @__PURE__ */ jsx(Archive, {
922
+ className: "size-3.5",
923
+ "aria-hidden": "true"
924
+ })
814
925
  })]
815
926
  })]
816
927
  }, a.id))
@@ -1,31 +1,32 @@
1
+ import { n as sectionTabClass, t as SECTION_TABS_CLASS } from "./SectionTabs-BJTPr5nU.js";
1
2
  import { Link, useRouterState } from "@tanstack/react-router";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  //#region src/components/TeamTabs.tsx
4
5
  var TABS = [
5
6
  {
6
7
  suffix: "",
7
- label: "overview",
8
+ label: "Overview",
8
9
  exact: true
9
10
  },
10
11
  {
11
12
  suffix: "/members",
12
- label: "members"
13
+ label: "Members"
13
14
  },
14
15
  {
15
16
  suffix: "/policy",
16
- label: "policy"
17
+ label: "Policy"
17
18
  },
18
19
  {
19
20
  suffix: "/memory",
20
- label: "memory"
21
+ label: "Memory"
21
22
  },
22
23
  {
23
24
  suffix: "/context",
24
- label: "context"
25
+ label: "Context"
25
26
  },
26
27
  {
27
28
  suffix: "/activity",
28
- label: "activity"
29
+ label: "Activity"
29
30
  }
30
31
  ];
31
32
  function TeamTabs({ teamId }) {
@@ -33,14 +34,14 @@ function TeamTabs({ teamId }) {
33
34
  const base = `/teams/${encodeURIComponent(teamId)}`;
34
35
  return /* @__PURE__ */ jsx("nav", {
35
36
  "aria-label": "Team sections",
36
- className: "-mb-px mb-5 flex flex-wrap gap-1 border-b border-frost",
37
+ className: SECTION_TABS_CLASS,
37
38
  children: TABS.map((tab) => {
38
39
  const href = `${base}${tab.suffix}`;
39
40
  const active = "exact" in tab && tab.exact ? pathname === base || pathname === `${base}/` : pathname.startsWith(href);
40
41
  return /* @__PURE__ */ jsx(Link, {
41
42
  to: href,
42
43
  "aria-current": active ? "page" : void 0,
43
- className: `whitespace-nowrap border-b-2 px-3 py-2 text-sm font-medium ${active ? "border-sapphire text-sapphire" : "border-transparent text-mocha hover:text-sapphire"}`,
44
+ className: sectionTabClass(active),
44
45
  children: tab.label
45
46
  }, tab.label);
46
47
  })
@@ -1,3 +1,4 @@
1
+ import { n as sectionTabClass, t as SECTION_TABS_CLASS } from "./SectionTabs-BJTPr5nU.js";
1
2
  import { Link, useRouterState } from "@tanstack/react-router";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  //#region src/components/TemplatesTabs.tsx
@@ -5,14 +6,14 @@ function TemplatesTabs() {
5
6
  const pathname = useRouterState({ select: (s) => s.location.pathname });
6
7
  return /* @__PURE__ */ jsx("nav", {
7
8
  role: "tablist",
8
- className: "-mb-px mb-5 flex gap-1 border-b border-frost",
9
+ className: SECTION_TABS_CLASS,
9
10
  children: [{
10
11
  to: "/templates/agents",
11
- label: "agent templates",
12
+ label: "Agent templates",
12
13
  match: (p) => p.startsWith("/templates/agents")
13
14
  }, {
14
15
  to: "/templates/teams",
15
- label: "team templates",
16
+ label: "Team templates",
16
17
  match: (p) => p.startsWith("/templates/teams")
17
18
  }].map((t) => {
18
19
  const active = t.match(pathname);
@@ -20,7 +21,7 @@ function TemplatesTabs() {
20
21
  to: t.to,
21
22
  role: "tab",
22
23
  "aria-selected": active,
23
- className: `unstyled cursor-pointer border-b-2 bg-transparent px-4 py-2 text-[0.9em] font-medium transition-colors ${active ? "border-sapphire text-sapphire" : "border-transparent text-mocha hover:text-sapphire"}`,
24
+ className: sectionTabClass(active),
24
25
  children: t.label
25
26
  }, t.to);
26
27
  })
@@ -1,5 +1,5 @@
1
1
  import { t as createServerFn } from "../server.js";
2
- import { t as createServerRpc } from "./createServerRpc-CeKECg65.js";
2
+ import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
3
3
  import { n as daemonClient, r as ApiClientError } from "./daemon-client-2NRMzlTr.js";
4
4
  //#region src/routes/agents/$id/index.tsx?tss-serverfn-split
5
5
  var fetchAgent_createServerFn_handler = createServerRpc({