bazilion 0.8.0 → 0.10.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 (217) hide show
  1. package/README.md +47 -5
  2. package/dist/cli.js +1190 -640
  3. package/dist/cli.js.map +1 -1
  4. package/dist/daemon.js +5165 -1598
  5. package/dist/daemon.js.map +1 -1
  6. package/dist/migrations/0001_init.sql +318 -88
  7. package/dist/web/client/assets/AgentTabs-B3hq5a3e.js +1 -0
  8. package/dist/web/client/assets/ConfigPage-BCwfgyjD.js +1 -0
  9. package/dist/web/client/assets/FieldRow-avAFLgYW.js +1 -0
  10. package/dist/web/client/assets/Page-CwNuDhWz.js +1 -0
  11. package/dist/web/client/assets/ProductionTeamPolicyEditor-CiQ-VVDo.js +7 -0
  12. package/dist/web/client/assets/ProductionTeamPolicyEditor-DLioOiRN.css +1 -0
  13. package/dist/web/client/assets/ProfileCommunicationEditor-D84F5yfr.js +1 -0
  14. package/dist/web/client/assets/RecoveryState-QfMSuwy3.js +1 -0
  15. package/dist/web/client/assets/SectionTabs-DZzy01az.js +1 -0
  16. package/dist/web/client/assets/TeamTabs-Btoe_FAE.js +1 -0
  17. package/dist/web/client/assets/TemplatesTabs-CAYY03F5.js +1 -0
  18. package/dist/web/client/assets/_id-BeauECmk.js +1 -0
  19. package/dist/web/client/assets/_id-BqU2BodK.js +1 -0
  20. package/dist/web/client/assets/_id-CKtoio3t.js +1 -0
  21. package/dist/web/client/assets/_id-DGyKURCp.js +1 -0
  22. package/dist/web/client/assets/_id-Q98Of6k9.js +1 -0
  23. package/dist/web/client/assets/activity-DJuhhQCb.js +1 -0
  24. package/dist/web/client/assets/activity-DXN_N85w.js +1 -0
  25. package/dist/web/client/assets/agents-C5Xsdge1.js +1 -0
  26. package/dist/web/client/assets/agents-Cgxo4H5G.js +1 -0
  27. package/dist/web/client/assets/approvals-BnG7fbw-.js +1 -0
  28. package/dist/web/client/assets/approvals-DGi0PSx8.js +1 -0
  29. package/dist/web/client/assets/chevron-down-BhcBspw3.js +1 -0
  30. package/dist/web/client/assets/config-xw4NyrXF.js +3 -0
  31. package/dist/web/client/assets/context-D2V1Oi4z.js +1 -0
  32. package/dist/web/client/assets/inbox-DK6hWCMp.js +1 -0
  33. package/dist/web/client/assets/index-VdURSoM4.js +12 -0
  34. package/dist/web/client/assets/login-CvptUoMR.js +1 -0
  35. package/dist/web/client/assets/mcp-BDFM_sW-.js +1 -0
  36. package/dist/web/client/assets/members-BJvph_TR.js +1 -0
  37. package/dist/web/client/assets/memory-DRytqZCD.js +1 -0
  38. package/dist/web/client/assets/plus-C9ee3SIO.js +1 -0
  39. package/dist/web/client/assets/policy-CGP50OtQ.js +1 -0
  40. package/dist/web/client/assets/policy-K4hIbbIN.js +1 -0
  41. package/dist/web/client/assets/preload-helper-mNuBjNXU.js +1 -0
  42. package/dist/web/client/assets/react-3W8R1pOO.js +1 -0
  43. package/dist/web/client/assets/routes-DJnWYvC9.js +1 -0
  44. package/dist/web/client/assets/services-DHheiv7L.js +1 -0
  45. package/dist/web/client/assets/skills-DmsitluU.js +1 -0
  46. package/dist/web/client/assets/styles-B5eQAwLP.css +2 -0
  47. package/dist/web/client/assets/team-policy-D0jpnn2b.js +1 -0
  48. package/dist/web/client/assets/teams-BdC4gthq.js +1 -0
  49. package/dist/web/client/assets/teams-CSNyLz3l.js +1 -0
  50. package/dist/web/client/assets/teams-CbxSaorm.js +1 -0
  51. package/dist/web/client/assets/telegram-D61G_alO.js +1 -0
  52. package/dist/web/client/assets/tokens-CjRplDrJ.js +1 -0
  53. package/dist/web/client/assets/triggers-MLzTm_DM.js +1 -0
  54. package/dist/web/client/assets/welcome-wBfX9dAd.js +1 -0
  55. package/dist/web/client/assets/{ChatPane-DzEgOEqS.js → wire-constants-BxfyUMXB.js} +4 -4
  56. package/dist/web/server/assets/{AgentTabs-BOjTN7QF.js → AgentTabs-DoMDJBXH.js} +10 -7
  57. package/dist/web/server/assets/{ChatPane-BvpswYvF.js → ChatPane-eUY_dga3.js} +38 -20
  58. package/dist/web/server/assets/ConfigPage-BKlh5vOU.js +68 -0
  59. package/dist/web/server/assets/{FieldRow-DwyqycWI.js → FieldRow-B4eTegH9.js} +5 -5
  60. package/dist/web/server/assets/Page-LENulSXY.js +111 -0
  61. package/dist/web/server/assets/ProductionTeamPolicyEditor-Y4mzFFvR.js +1009 -0
  62. package/dist/web/server/assets/ProfileCommunicationEditor-C2RU-2QB.js +107 -0
  63. package/dist/web/server/assets/RecoveryState-B2SG-mrY.js +37 -0
  64. package/dist/web/server/assets/SectionTabs-BJTPr5nU.js +8 -0
  65. package/dist/web/server/assets/Sidebar-O_CH1-JD.js +964 -0
  66. package/dist/web/server/assets/TeamTabs-zZzbP1t_.js +51 -0
  67. package/dist/web/server/assets/{TemplatesTabs---7h5GYa.js → TemplatesTabs-CcRxZhJe.js} +9 -8
  68. package/dist/web/server/assets/_id-A8Xiv6Lc.js +11 -0
  69. package/dist/web/server/assets/{_id-Sjw0zhA6.js → _id-BhOB8Umi.js} +5 -5
  70. package/dist/web/server/assets/{_id-DDixKEud.js → _id-C3HY4lWg.js} +77 -20
  71. package/dist/web/server/assets/{_id-BdRiQb2H.js → _id-ClN9hY2x.js} +132 -39
  72. package/dist/web/server/assets/{_id-BqnDy_Ca.js → _id-CwyGjJeP.js} +7 -6
  73. package/dist/web/server/assets/{_id-D8duqgd5.js → _id-D27T85mU.js} +6 -5
  74. package/dist/web/server/assets/_id-D3Ap7zZA.js +377 -0
  75. package/dist/web/server/assets/_id-DinTp_7X.js +14 -0
  76. package/dist/web/server/assets/{_id-CnQflrRv.js → _id-Dj1yZ3zJ.js} +6 -6
  77. package/dist/web/server/assets/{_id-DUIrFV3G.js → _id-DkYodSkG.js} +10 -2
  78. package/dist/web/server/assets/{_id-D_Ew11ED.js → _id-IzadFZV9.js} +9 -9
  79. package/dist/web/server/assets/_id-LrvXU4Nr.js +45 -0
  80. package/dist/web/server/assets/_id-tB47Vsfp.js +42 -0
  81. package/dist/web/server/assets/_tanstack-start-manifest_v-D09Xu_6u.js +286 -0
  82. package/dist/web/server/assets/activity-BCI4mfNS.js +168 -0
  83. package/dist/web/server/assets/activity-CGCf8BQf.js +11 -0
  84. package/dist/web/server/assets/activity-D9SMqBhy.js +14 -0
  85. package/dist/web/server/assets/activity-DohitgwW.js +12 -0
  86. package/dist/web/server/assets/{agents-k5QURC4I.js → agents-BPKOshR5.js} +5 -5
  87. package/dist/web/server/assets/{profiles-C6a3RKgu.js → agents-BY74v7fM.js} +5 -5
  88. package/dist/web/server/assets/{profiles-CZ5NkmVw.js → agents-BvttypqB.js} +5 -5
  89. package/dist/web/server/assets/{agents-ChcAJUI5.js → agents-C9xlWK0Z.js} +2 -2
  90. package/dist/web/server/assets/agents-CgZMHj80.js +265 -0
  91. package/dist/web/server/assets/{profiles-LxcC_L6n.js → agents-DZuFEj0D.js} +87 -79
  92. package/dist/web/server/assets/approvals-BGU-XGIO.js +12 -0
  93. package/dist/web/server/assets/approvals-CWcFHlor.js +14 -0
  94. package/dist/web/server/assets/approvals-CbFXFvG8.js +11 -0
  95. package/dist/web/server/assets/approvals-DCaVw1Mz.js +280 -0
  96. package/dist/web/server/assets/{auth-DzRAMwVt.js → auth-byfSx6Ja.js} +6 -2
  97. package/dist/web/server/assets/{config-CHaCv89D.js → config-BDCJdtj2.js} +1 -1
  98. package/dist/web/server/assets/{config-CdVjqjin.js → config-D2LAsud2.js} +31 -52
  99. package/dist/web/server/assets/{config-Bq3o924J.js → config-TeIoyYYc.js} +2 -2
  100. package/dist/web/server/assets/context-B-XDf6Ym.js +12 -0
  101. package/dist/web/server/assets/context-BXGo5Vfi.js +12 -0
  102. package/dist/web/server/assets/context-DrkrIWun.js +47 -0
  103. package/dist/web/server/assets/{createServerRpc-CeKECg65.js → createServerRpc-pU-IQV2Y.js} +1 -1
  104. package/dist/web/server/assets/{createSsrRpc-ZBGxhl8t.js → createSsrRpc-DFsIAfFd.js} +1 -1
  105. package/dist/web/server/assets/{empty-plugin-adapters-DKUlnwwl.js → empty-plugin-adapters-Cq4--YW-.js} +1 -1
  106. package/dist/web/server/assets/{inbox-CkiSvD14.js → inbox-B3-TRsNI.js} +1 -1
  107. package/dist/web/server/assets/{inbox-Bxb3W04M.js → inbox-BardsGyy.js} +2 -2
  108. package/dist/web/server/assets/inbox-CUIyf9MT.js +131 -0
  109. package/dist/web/server/assets/login-Bx5LEyGP.js +118 -0
  110. package/dist/web/server/assets/login-CmWvxfTK.js +136 -0
  111. package/dist/web/server/assets/{mcp-BsFKEoXt.js → mcp-2pwT9HU8.js} +1 -1
  112. package/dist/web/server/assets/{mcp-BU_kKENi.js → mcp-BJjLIdP0.js} +105 -112
  113. package/dist/web/server/assets/{mcp-CKqwG4mt.js → mcp-DIWTogHM.js} +2 -2
  114. package/dist/web/server/assets/members-CCv17cjQ.js +46 -0
  115. package/dist/web/server/assets/members-CW5aBe81.js +12 -0
  116. package/dist/web/server/assets/members-VdPwD6CE.js +12 -0
  117. package/dist/web/server/assets/{memory-BaYnfm7K.js → memory-Dngc13Nw.js} +9 -9
  118. package/dist/web/server/assets/{memory-CQaqWnyM.js → memory-a8Kz57Kh.js} +22 -19
  119. package/dist/web/server/assets/{memory-Ns2-Z31p.js → memory-pZ4pZT7p.js} +6 -6
  120. package/dist/web/server/assets/policy-BYVXqsan.js +11 -0
  121. package/dist/web/server/assets/policy-Bb-vEgqg.js +40 -0
  122. package/dist/web/server/assets/policy-BcGELcc9.js +490 -0
  123. package/dist/web/server/assets/policy-C30AeFIb.js +21 -0
  124. package/dist/web/server/assets/router-DIdp8ZNt.js +504 -0
  125. package/dist/web/server/assets/{routes-C61gBiXa.js → routes-CXz4hTAr.js} +6 -6
  126. package/dist/web/server/assets/{routes-Ce2VWrU9.js → routes-Jb0zjKav.js} +16 -13
  127. package/dist/web/server/assets/{routes-V9URcp1v.js → routes-lIclH9Br.js} +2 -2
  128. package/dist/web/server/assets/services-B9yBWDX0.js +79 -0
  129. package/dist/web/server/assets/{services-Ccc5s2bS.js → services-C4szdhPx.js} +4 -4
  130. package/dist/web/server/assets/{services-DhRiNeq0.js → services-wG8I06oS.js} +1 -1
  131. package/dist/web/server/assets/skills-BZdqiDig.js +358 -0
  132. package/dist/web/server/assets/{skills-l2cyQ3zS.js → skills-C-UgkuCW.js} +2 -2
  133. package/dist/web/server/assets/{skills-CFIWVg32.js → skills-a9VSWHWq.js} +1 -1
  134. package/dist/web/server/assets/{start-CYDpZ6cb.js → start-WH8WzTL_.js} +1 -1
  135. package/dist/web/server/assets/team-policy-vPG01onj.js +180 -0
  136. package/dist/web/server/assets/teams-3im0oQnS.js +11 -0
  137. package/dist/web/server/assets/teams-CpQ0YgWf.js +112 -0
  138. package/dist/web/server/assets/teams-DEpQR2QA.js +14 -0
  139. package/dist/web/server/assets/teams-DqfrEoH6.js +36 -0
  140. package/dist/web/server/assets/teams-MjqgsmC3.js +12 -0
  141. package/dist/web/server/assets/teams-OIkHuxy1.js +12 -0
  142. package/dist/web/server/assets/teams-jBtvnk59.js +193 -0
  143. package/dist/web/server/assets/{telegram-DfAddLdv.js → telegram-7ub--6xz.js} +44 -56
  144. package/dist/web/server/assets/{telegram-T3l9KtiE.js → telegram-Bazhmpr4.js} +2 -2
  145. package/dist/web/server/assets/{telegram-BdaUIjvs.js → telegram-DNgCWebD.js} +1 -1
  146. package/dist/web/server/assets/{tokens-DdpnfV_Y.js → tokens-BnwFbV7T.js} +2 -2
  147. package/dist/web/server/assets/{tokens-BCz3PSoT.js → tokens-DPDMSN5O.js} +1 -1
  148. package/dist/web/server/assets/tokens-yyTSfBSN.js +186 -0
  149. package/dist/web/server/assets/{triggers-BzJG1nN5.js → triggers-BMpHsGIr.js} +5 -4
  150. package/dist/web/server/assets/{triggers-BcH_6PW1.js → triggers-C_0y6QV9.js} +1 -1
  151. package/dist/web/server/assets/{triggers-BcTTwMfy.js → triggers-Ca57_qym.js} +2 -2
  152. package/dist/web/server/assets/{welcome-CP4CZ9B6.js → welcome-IYHGurWx.js} +23 -15
  153. package/dist/web/server/assets/{wire-constants-Deb4NxBb.js → wire-constants-C8nBJcU3.js} +3 -3
  154. package/dist/web/server/server.js +126 -95
  155. package/dist/worker.js +185 -146
  156. package/dist/worker.js.map +1 -1
  157. package/package.json +8 -7
  158. package/dist/migrations/0002_profile_groups.sql +0 -38
  159. package/dist/migrations/0003_agent_telegram.sql +0 -40
  160. package/dist/migrations/0004_agent_mirror_mode.sql +0 -17
  161. package/dist/migrations/0005_group_topic_name_format.sql +0 -15
  162. package/dist/migrations/0006_telegram_acl.sql +0 -18
  163. package/dist/migrations/0007_mcp_servers.sql +0 -30
  164. package/dist/migrations/0008_seed_user_md.sql +0 -39
  165. package/dist/web/client/assets/AgentTabs-DioGqUVR.js +0 -1
  166. package/dist/web/client/assets/ConfigTabs-pY-V0Rie.js +0 -1
  167. package/dist/web/client/assets/FieldRow-CNKma5LE.js +0 -1
  168. package/dist/web/client/assets/MembersEditor-C6UpqDdV.js +0 -1
  169. package/dist/web/client/assets/SpawnTeamModal-BEkNCKXm.js +0 -1
  170. package/dist/web/client/assets/TemplatesTabs-UM04RMO9.js +0 -1
  171. package/dist/web/client/assets/_id-BNJapCT4.js +0 -1
  172. package/dist/web/client/assets/_id-CjGoV8Mr.js +0 -1
  173. package/dist/web/client/assets/_id-DehuCHUw.js +0 -1
  174. package/dist/web/client/assets/_id-Dz9fjcCM.js +0 -1
  175. package/dist/web/client/assets/agents-M6omAXcZ.js +0 -1
  176. package/dist/web/client/assets/config-DIuEc5bm.js +0 -3
  177. package/dist/web/client/assets/groups-DpE2d2zZ.js +0 -1
  178. package/dist/web/client/assets/inbox-BPnLsRNf.js +0 -1
  179. package/dist/web/client/assets/index-MAJuXnie.js +0 -12
  180. package/dist/web/client/assets/login-CawJX16E.js +0 -1
  181. package/dist/web/client/assets/mcp-DIrh9-v_.js +0 -1
  182. package/dist/web/client/assets/memory-BpHbdKsd.js +0 -1
  183. package/dist/web/client/assets/preload-helper-CvnapA2_.js +0 -1
  184. package/dist/web/client/assets/profile-groups-ByoKak0c.js +0 -1
  185. package/dist/web/client/assets/profiles-BEjv8LGo.js +0 -1
  186. package/dist/web/client/assets/routes-D2COHy7v.js +0 -1
  187. package/dist/web/client/assets/services-D212jSK_.js +0 -1
  188. package/dist/web/client/assets/skills-Da0MURjY.js +0 -1
  189. package/dist/web/client/assets/styles-BgE5bCHA.css +0 -2
  190. package/dist/web/client/assets/telegram-Czh2MdVm.js +0 -1
  191. package/dist/web/client/assets/tokens-E_JvO5JN.js +0 -1
  192. package/dist/web/client/assets/triggers-BBRZQOm7.js +0 -1
  193. package/dist/web/client/assets/welcome-Dn-zvmBE.js +0 -1
  194. package/dist/web/client/assets/wire-constants-BkT5-597.js +0 -1
  195. package/dist/web/server/assets/ConfigTabs-CyuxzesF.js +0 -41
  196. package/dist/web/server/assets/MembersEditor-BWQztvrX.js +0 -131
  197. package/dist/web/server/assets/Sidebar-DmEiewRN.js +0 -529
  198. package/dist/web/server/assets/SpawnTeamModal-dSN421k_.js +0 -107
  199. package/dist/web/server/assets/_id-BKev9H1p.js +0 -12
  200. package/dist/web/server/assets/_id-BNwlbWHP.js +0 -24
  201. package/dist/web/server/assets/_id-CRqqi8IE.js +0 -161
  202. package/dist/web/server/assets/_id-CXg-Blec.js +0 -367
  203. package/dist/web/server/assets/_tanstack-start-manifest_v-D9FLKShQ.js +0 -178
  204. package/dist/web/server/assets/agents-C7SBPN0M.js +0 -210
  205. package/dist/web/server/assets/groups-CbSwND2r.js +0 -12
  206. package/dist/web/server/assets/groups-CeRRlZaZ.js +0 -150
  207. package/dist/web/server/assets/groups-pk4CYSuf.js +0 -21
  208. package/dist/web/server/assets/inbox-DU27iHv_.js +0 -133
  209. package/dist/web/server/assets/login-CNznncgA.js +0 -58
  210. package/dist/web/server/assets/login-CQybKk7Y.js +0 -74
  211. package/dist/web/server/assets/profile-groups-CiU06yN1.js +0 -28
  212. package/dist/web/server/assets/profile-groups-D21MYoLM.js +0 -208
  213. package/dist/web/server/assets/profile-groups-aoJleXHP.js +0 -12
  214. package/dist/web/server/assets/router-BrDascdO.js +0 -460
  215. package/dist/web/server/assets/services-B91w2f-X.js +0 -94
  216. package/dist/web/server/assets/skills-D89ND2kR.js +0 -321
  217. package/dist/web/server/assets/tokens-CkKqrtk-.js +0 -193
@@ -0,0 +1,504 @@
1
+ import { i as getCookie, t as createServerFn } from "../server.js";
2
+ import { t as DAEMON_BASE_URL } from "./daemon-client-2NRMzlTr.js";
3
+ import { i as BaziuLogo, n as ThemeToggle, r as PawIcon, t as Route$4 } from "./login-Bx5LEyGP.js";
4
+ import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
5
+ import { t as Route$5 } from "./routes-lIclH9Br.js";
6
+ import { t as Route$6 } from "./teams-DEpQR2QA.js";
7
+ import { t as Route$7 } from "./skills-C-UgkuCW.js";
8
+ import { t as Route$8 } from "./config-TeIoyYYc.js";
9
+ import { t as Route$9 } from "./approvals-CWcFHlor.js";
10
+ import { t as Route$10 } from "./agents-C9xlWK0Z.js";
11
+ import { t as Route$11 } from "./tokens-BnwFbV7T.js";
12
+ import { t as Route$12 } from "./services-C4szdhPx.js";
13
+ import { t as Route$13 } from "./mcp-DIWTogHM.js";
14
+ import { t as Route$14 } from "./teams-OIkHuxy1.js";
15
+ import { t as Route$15 } from "./agents-BvttypqB.js";
16
+ import { t as Route$16 } from "./_id-Dj1yZ3zJ.js";
17
+ import { t as Route$17 } from "./_id-DkYodSkG.js";
18
+ import { t as Route$18 } from "./policy-C30AeFIb.js";
19
+ import { t as Route$19 } from "./memory-pZ4pZT7p.js";
20
+ import { t as Route$20 } from "./members-VdPwD6CE.js";
21
+ import { t as Route$21 } from "./context-BXGo5Vfi.js";
22
+ import { t as Route$22 } from "./activity-D9SMqBhy.js";
23
+ import { t as Route$23 } from "./telegram-Bazhmpr4.js";
24
+ import { t as Route$24 } from "./triggers-Ca57_qym.js";
25
+ import { t as Route$25 } from "./inbox-BardsGyy.js";
26
+ import { t as Route$26 } from "./_id-DinTp_7X.js";
27
+ import { t as Route$27 } from "./_id-CwyGjJeP.js";
28
+ import { HeadContent, Link, Outlet, Scripts, createFileRoute, createRootRoute, createRouter, lazyRouteComponent, redirect, useRouterState } from "@tanstack/react-router";
29
+ import { jsx, jsxs } from "react/jsx-runtime";
30
+ import { Bot, LayoutTemplate, Settings2, ShieldCheck, Sparkles, UsersRound } from "lucide-react";
31
+ //#region src/components/Footer.tsx
32
+ function Footer() {
33
+ return /* @__PURE__ */ jsxs("footer", {
34
+ className: "mx-auto mt-14 flex w-full max-w-[1500px] shrink-0 flex-col items-center justify-between gap-3 border-t border-frost py-5 text-xs text-mocha-light sm:flex-row",
35
+ children: [/* @__PURE__ */ jsxs(Link, {
36
+ to: "/",
37
+ className: "team inline-flex items-center gap-2 rounded-lg text-charcoal transition-opacity hover:text-charcoal hover:opacity-80",
38
+ children: [/* @__PURE__ */ jsx(BaziuLogo, { className: "h-6 w-6 transition-transform duration-300 team-hover:rotate-[-8deg]" }), /* @__PURE__ */ jsx("span", {
39
+ className: "font-display text-sm tracking-[-0.01em]",
40
+ children: "bazilion"
41
+ })]
42
+ }), /* @__PURE__ */ jsxs("span", {
43
+ className: "inline-flex items-center gap-1.5",
44
+ children: ["dedicated to Baziu", /* @__PURE__ */ jsx(PawIcon, {
45
+ className: "h-3 w-3 text-rose-baziu opacity-60",
46
+ "aria-hidden": "true"
47
+ })]
48
+ })]
49
+ });
50
+ }
51
+ //#endregion
52
+ //#region src/components/TopNav.tsx
53
+ var NAV_LINKS = [
54
+ {
55
+ to: "/templates",
56
+ label: "templates",
57
+ icon: LayoutTemplate
58
+ },
59
+ {
60
+ to: "/agents",
61
+ label: "agents",
62
+ icon: Bot
63
+ },
64
+ {
65
+ to: "/teams",
66
+ label: "teams",
67
+ icon: UsersRound
68
+ },
69
+ {
70
+ to: "/approvals",
71
+ label: "approvals",
72
+ icon: ShieldCheck
73
+ },
74
+ {
75
+ to: "/skills",
76
+ label: "skills",
77
+ icon: Sparkles
78
+ },
79
+ {
80
+ to: "/config",
81
+ label: "config",
82
+ icon: Settings2
83
+ }
84
+ ];
85
+ function TopNav() {
86
+ const pathname = useRouterState({ select: (state) => state.location.pathname });
87
+ return /* @__PURE__ */ jsxs("nav", {
88
+ "aria-label": "Primary navigation",
89
+ className: "mx-auto grid w-full max-w-[1500px] shrink-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-2 border-b border-frost py-3 md:flex md:gap-2 md:py-4",
90
+ children: [
91
+ /* @__PURE__ */ jsxs(Link, {
92
+ to: "/",
93
+ "aria-current": pathname === "/" ? "page" : void 0,
94
+ className: "logo team flex min-w-0 items-center gap-2 rounded-lg text-charcoal transition-opacity hover:text-charcoal hover:opacity-80",
95
+ children: [/* @__PURE__ */ jsx(BaziuLogo, { className: "logo-paw h-8 w-8 shrink-0 transition-transform duration-300 team-hover:rotate-[-8deg] team-hover:scale-[1.08]" }), /* @__PURE__ */ jsx("span", {
96
+ className: "truncate font-display text-[1.35rem] tracking-[-0.02em]",
97
+ children: "bazilion"
98
+ })]
99
+ }),
100
+ /* @__PURE__ */ jsx("div", {
101
+ className: "col-span-2 row-start-2 flex min-w-0 items-center justify-between gap-1 md:col-auto md:row-auto md:ml-4 md:flex-1 md:justify-start",
102
+ children: NAV_LINKS.map((link) => {
103
+ const active = pathname === link.to || pathname.startsWith(`${link.to}/`);
104
+ const Icon = link.icon;
105
+ return /* @__PURE__ */ jsxs(Link, {
106
+ to: link.to,
107
+ "aria-current": active ? "page" : void 0,
108
+ "aria-label": link.label,
109
+ title: link.label,
110
+ className: `inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-lg border px-2.5 text-sm font-medium transition-all md:min-w-10 lg:px-3 ${active ? "border-sapphire-light bg-sapphire-glow text-sapphire shadow-baziu-sm" : "border-transparent text-mocha hover:border-frost hover:bg-ivory hover:text-sapphire"}`,
111
+ children: [/* @__PURE__ */ jsx(Icon, {
112
+ className: "h-[1.05rem] w-[1.05rem] shrink-0",
113
+ "aria-hidden": "true"
114
+ }), /* @__PURE__ */ jsx("span", {
115
+ className: "hidden lg:inline",
116
+ children: link.label
117
+ })]
118
+ }, link.to);
119
+ })
120
+ }),
121
+ /* @__PURE__ */ jsx("div", {
122
+ className: "col-start-2 row-start-1 md:col-auto md:row-auto md:ml-auto",
123
+ children: /* @__PURE__ */ jsx(ThemeToggle, {})
124
+ })
125
+ ]
126
+ });
127
+ }
128
+ //#endregion
129
+ //#region src/lib/auth.ts
130
+ var fetchAuthState = createServerFn({ method: "GET" }).handler(createSsrRpc("a5d3825fc69573bb55bab6df578c750ebb0240dd394c3acee3adea02918a5dc2"));
131
+ var PUBLIC_PATHS = new Set(["/login"]);
132
+ var SETUP_OPEN_PREFIXES = ["/welcome", "/config"];
133
+ function isSetupOpen(path) {
134
+ for (const prefix of SETUP_OPEN_PREFIXES) if (path === prefix || path.startsWith(`${prefix}/`)) return true;
135
+ return false;
136
+ }
137
+ //#endregion
138
+ //#region src/styles.css?url
139
+ var styles_default = "/assets/styles-B5eQAwLP.css";
140
+ //#endregion
141
+ //#region src/routes/__root.tsx
142
+ var THEME_INIT_SCRIPT = `(function(){try{var t=localStorage.getItem('baziu-theme');var sd=window.matchMedia&&window.matchMedia('(prefers-color-scheme: dark)').matches;var d=t==='dark'||((t===null||t==='system')&&sd);document.documentElement.classList.toggle('dark',d);}catch(e){}})();`;
143
+ var Route$3 = createRootRoute({
144
+ beforeLoad: async ({ location }) => {
145
+ const path = location.pathname;
146
+ if (PUBLIC_PATHS.has(path)) return;
147
+ if (path.startsWith("/api/")) return;
148
+ const auth = await fetchAuthState();
149
+ if (!auth.authed) throw redirect({
150
+ to: "/login",
151
+ search: {}
152
+ });
153
+ if (!isSetupOpen(path) && !auth.setupComplete) throw redirect({ to: "/welcome" });
154
+ },
155
+ head: () => ({
156
+ meta: [
157
+ { charSet: "utf-8" },
158
+ {
159
+ name: "viewport",
160
+ content: "width=device-width, initial-scale=1"
161
+ },
162
+ { title: "bazilion" }
163
+ ],
164
+ links: [
165
+ {
166
+ rel: "icon",
167
+ type: "image/svg+xml",
168
+ href: "/baziu.svg"
169
+ },
170
+ {
171
+ rel: "preconnect",
172
+ href: "https://fonts.googleapis.com"
173
+ },
174
+ {
175
+ rel: "preconnect",
176
+ href: "https://fonts.gstatic.com",
177
+ crossOrigin: ""
178
+ },
179
+ {
180
+ rel: "stylesheet",
181
+ href: "https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:ital,opsz,wght@0,9..40,300..700;1,9..40,300..700&family=JetBrains+Mono:wght@400;500&display=swap"
182
+ },
183
+ {
184
+ rel: "stylesheet",
185
+ href: styles_default
186
+ }
187
+ ]
188
+ }),
189
+ component: RootComponent,
190
+ notFoundComponent: NotFound
191
+ });
192
+ function NotFound() {
193
+ const pathname = useRouterState({ select: (s) => s.location.pathname });
194
+ return /* @__PURE__ */ jsx("div", {
195
+ className: "mx-auto max-w-2xl",
196
+ children: /* @__PURE__ */ jsxs("div", {
197
+ className: "card",
198
+ children: [
199
+ /* @__PURE__ */ jsx("h1", { children: "Not found" }),
200
+ /* @__PURE__ */ jsxs("p", {
201
+ className: "muted my-3",
202
+ children: [
203
+ "Nothing lives at ",
204
+ /* @__PURE__ */ jsx("code", { children: pathname }),
205
+ "."
206
+ ]
207
+ }),
208
+ /* @__PURE__ */ jsx(Link, {
209
+ to: "/",
210
+ children: "Back to home"
211
+ })
212
+ ]
213
+ })
214
+ });
215
+ }
216
+ function RootComponent() {
217
+ const pathname = useRouterState({ select: (s) => s.location.pathname });
218
+ const isLogin = pathname === "/login";
219
+ const isWorkspace = pathname === "/";
220
+ return /* @__PURE__ */ jsxs("html", {
221
+ lang: "en",
222
+ "data-layout": isWorkspace ? "workspace" : "page",
223
+ suppressHydrationWarning: true,
224
+ children: [/* @__PURE__ */ jsxs("head", { children: [/* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: THEME_INIT_SCRIPT } }), /* @__PURE__ */ jsx(HeadContent, {})] }), /* @__PURE__ */ jsxs("body", {
225
+ "data-layout": isWorkspace ? "workspace" : "page",
226
+ children: [isLogin ? /* @__PURE__ */ jsx(Outlet, {}) : isWorkspace ? /* @__PURE__ */ jsxs("div", {
227
+ className: "flex h-dvh flex-col",
228
+ children: [/* @__PURE__ */ jsx("div", {
229
+ className: "px-3 sm:px-5",
230
+ children: /* @__PURE__ */ jsx(TopNav, {})
231
+ }), /* @__PURE__ */ jsx("main", {
232
+ className: "mx-auto min-h-0 w-full max-w-[1600px] flex-1 overflow-hidden px-3 pb-3 sm:px-5 sm:pb-5",
233
+ children: /* @__PURE__ */ jsx(Outlet, {})
234
+ })]
235
+ }) : /* @__PURE__ */ jsxs("div", {
236
+ className: "flex min-h-dvh flex-col",
237
+ children: [
238
+ /* @__PURE__ */ jsx("div", {
239
+ className: "px-3 sm:px-5",
240
+ children: /* @__PURE__ */ jsx(TopNav, {})
241
+ }),
242
+ /* @__PURE__ */ jsx("main", {
243
+ className: "mx-auto w-full max-w-[1500px] flex-1 px-4 py-9 sm:px-6 sm:py-12",
244
+ children: /* @__PURE__ */ jsx(Outlet, {})
245
+ }),
246
+ /* @__PURE__ */ jsx("div", {
247
+ className: "px-4 sm:px-6",
248
+ children: /* @__PURE__ */ jsx(Footer, {})
249
+ })
250
+ ]
251
+ }), /* @__PURE__ */ jsx(Scripts, {})]
252
+ })]
253
+ });
254
+ }
255
+ //#endregion
256
+ //#region src/routes/welcome.tsx
257
+ var $$splitComponentImporter = () => import("./welcome-IYHGurWx.js");
258
+ var Route$2 = createFileRoute("/welcome")({
259
+ beforeLoad: async () => {
260
+ if ((await fetchAuthState()).setupComplete) throw redirect({ to: "/" });
261
+ },
262
+ component: lazyRouteComponent($$splitComponentImporter, "component")
263
+ });
264
+ //#endregion
265
+ //#region src/routes/templates/index.tsx
266
+ var Route$1 = createFileRoute("/templates/")({ beforeLoad: () => {
267
+ throw redirect({ to: "/templates/agents" });
268
+ } });
269
+ //#endregion
270
+ //#region src/routes/api/$.ts
271
+ var STRIP_REQUEST_HEADERS = new Set([
272
+ "host",
273
+ "connection",
274
+ "keep-alive",
275
+ "proxy-authenticate",
276
+ "proxy-authorization",
277
+ "te",
278
+ "trailer",
279
+ "transfer-encoding",
280
+ "upgrade",
281
+ "cookie"
282
+ ]);
283
+ var STRIP_RESPONSE_HEADERS = new Set([
284
+ "connection",
285
+ "keep-alive",
286
+ "proxy-authenticate",
287
+ "proxy-authorization",
288
+ "te",
289
+ "trailer",
290
+ "transfer-encoding",
291
+ "upgrade"
292
+ ]);
293
+ async function proxy(request) {
294
+ const incoming = new URL(request.url);
295
+ const target = `${DAEMON_BASE_URL}${incoming.pathname}${incoming.search}`;
296
+ const headers = new Headers();
297
+ for (const [k, v] of request.headers) if (!STRIP_REQUEST_HEADERS.has(k.toLowerCase())) headers.set(k, v);
298
+ if (!headers.has("authorization")) {
299
+ const token = getCookie("bz_token");
300
+ if (token) headers.set("authorization", `Bearer ${token}`);
301
+ }
302
+ headers.set("origin", DAEMON_BASE_URL);
303
+ const init = {
304
+ method: request.method,
305
+ headers,
306
+ redirect: "manual"
307
+ };
308
+ if (request.method !== "GET" && request.method !== "HEAD") {
309
+ init.body = request.body;
310
+ init.duplex = "half";
311
+ }
312
+ const upstream = await fetch(target, init);
313
+ const respHeaders = new Headers();
314
+ for (const [k, v] of upstream.headers) if (!STRIP_RESPONSE_HEADERS.has(k.toLowerCase())) respHeaders.set(k, v);
315
+ return new Response(upstream.body, {
316
+ status: upstream.status,
317
+ statusText: upstream.statusText,
318
+ headers: respHeaders
319
+ });
320
+ }
321
+ var Route = createFileRoute("/api/$")({ server: { handlers: {
322
+ GET: ({ request }) => proxy(request),
323
+ POST: ({ request }) => proxy(request),
324
+ PUT: ({ request }) => proxy(request),
325
+ PATCH: ({ request }) => proxy(request),
326
+ DELETE: ({ request }) => proxy(request)
327
+ } } });
328
+ //#endregion
329
+ //#region src/routeTree.gen.ts
330
+ var WelcomeRoute = Route$2.update({
331
+ id: "/welcome",
332
+ path: "/welcome",
333
+ getParentRoute: () => Route$3
334
+ });
335
+ var LoginRoute = Route$4.update({
336
+ id: "/login",
337
+ path: "/login",
338
+ getParentRoute: () => Route$3
339
+ });
340
+ var IndexRoute = Route$5.update({
341
+ id: "/",
342
+ path: "/",
343
+ getParentRoute: () => Route$3
344
+ });
345
+ var TemplatesIndexRoute = Route$1.update({
346
+ id: "/templates/",
347
+ path: "/templates/",
348
+ getParentRoute: () => Route$3
349
+ });
350
+ var TeamsIndexRoute = Route$6.update({
351
+ id: "/teams/",
352
+ path: "/teams/",
353
+ getParentRoute: () => Route$3
354
+ });
355
+ var SkillsIndexRoute = Route$7.update({
356
+ id: "/skills/",
357
+ path: "/skills/",
358
+ getParentRoute: () => Route$3
359
+ });
360
+ var ConfigIndexRoute = Route$8.update({
361
+ id: "/config/",
362
+ path: "/config/",
363
+ getParentRoute: () => Route$3
364
+ });
365
+ var ApprovalsIndexRoute = Route$9.update({
366
+ id: "/approvals/",
367
+ path: "/approvals/",
368
+ getParentRoute: () => Route$3
369
+ });
370
+ var AgentsIndexRoute = Route$10.update({
371
+ id: "/agents/",
372
+ path: "/agents/",
373
+ getParentRoute: () => Route$3
374
+ });
375
+ var ConfigTokensRoute = Route$11.update({
376
+ id: "/config/tokens",
377
+ path: "/config/tokens",
378
+ getParentRoute: () => Route$3
379
+ });
380
+ var ConfigServicesRoute = Route$12.update({
381
+ id: "/config/services",
382
+ path: "/config/services",
383
+ getParentRoute: () => Route$3
384
+ });
385
+ var ConfigMcpRoute = Route$13.update({
386
+ id: "/config/mcp",
387
+ path: "/config/mcp",
388
+ getParentRoute: () => Route$3
389
+ });
390
+ var ApiSplatRoute = Route.update({
391
+ id: "/api/$",
392
+ path: "/api/$",
393
+ getParentRoute: () => Route$3
394
+ });
395
+ var TemplatesTeamsIndexRoute = Route$14.update({
396
+ id: "/templates/teams/",
397
+ path: "/templates/teams/",
398
+ getParentRoute: () => Route$3
399
+ });
400
+ var TemplatesAgentsIndexRoute = Route$15.update({
401
+ id: "/templates/agents/",
402
+ path: "/templates/agents/",
403
+ getParentRoute: () => Route$3
404
+ });
405
+ var TeamsIdIndexRoute = Route$16.update({
406
+ id: "/teams/$id/",
407
+ path: "/teams/$id/",
408
+ getParentRoute: () => Route$3
409
+ });
410
+ var AgentsIdIndexRoute = Route$17.update({
411
+ id: "/agents/$id/",
412
+ path: "/agents/$id/",
413
+ getParentRoute: () => Route$3
414
+ });
415
+ var TeamsIdPolicyRoute = Route$18.update({
416
+ id: "/teams/$id/policy",
417
+ path: "/teams/$id/policy",
418
+ getParentRoute: () => Route$3
419
+ });
420
+ var TeamsIdMemoryRoute = Route$19.update({
421
+ id: "/teams/$id/memory",
422
+ path: "/teams/$id/memory",
423
+ getParentRoute: () => Route$3
424
+ });
425
+ var TeamsIdMembersRoute = Route$20.update({
426
+ id: "/teams/$id/members",
427
+ path: "/teams/$id/members",
428
+ getParentRoute: () => Route$3
429
+ });
430
+ var TeamsIdContextRoute = Route$21.update({
431
+ id: "/teams/$id/context",
432
+ path: "/teams/$id/context",
433
+ getParentRoute: () => Route$3
434
+ });
435
+ var TeamsIdActivityRoute = Route$22.update({
436
+ id: "/teams/$id/activity",
437
+ path: "/teams/$id/activity",
438
+ getParentRoute: () => Route$3
439
+ });
440
+ var ConfigIntegrationsTelegramRoute = Route$23.update({
441
+ id: "/config/integrations/telegram",
442
+ path: "/config/integrations/telegram",
443
+ getParentRoute: () => Route$3
444
+ });
445
+ var AgentsIdTriggersRoute = Route$24.update({
446
+ id: "/agents/$id/triggers",
447
+ path: "/agents/$id/triggers",
448
+ getParentRoute: () => Route$3
449
+ });
450
+ var AgentsIdInboxRoute = Route$25.update({
451
+ id: "/agents/$id/inbox",
452
+ path: "/agents/$id/inbox",
453
+ getParentRoute: () => Route$3
454
+ });
455
+ var TemplatesTeamsIdIndexRoute = Route$26.update({
456
+ id: "/templates/teams/$id/",
457
+ path: "/templates/teams/$id/",
458
+ getParentRoute: () => Route$3
459
+ });
460
+ var rootRouteChildren = {
461
+ IndexRoute,
462
+ LoginRoute,
463
+ WelcomeRoute,
464
+ ApiSplatRoute,
465
+ ConfigMcpRoute,
466
+ ConfigServicesRoute,
467
+ ConfigTokensRoute,
468
+ AgentsIndexRoute,
469
+ ApprovalsIndexRoute,
470
+ ConfigIndexRoute,
471
+ SkillsIndexRoute,
472
+ TeamsIndexRoute,
473
+ TemplatesIndexRoute,
474
+ AgentsIdInboxRoute,
475
+ AgentsIdTriggersRoute,
476
+ ConfigIntegrationsTelegramRoute,
477
+ TeamsIdActivityRoute,
478
+ TeamsIdContextRoute,
479
+ TeamsIdMembersRoute,
480
+ TeamsIdMemoryRoute,
481
+ TeamsIdPolicyRoute,
482
+ AgentsIdIndexRoute,
483
+ TeamsIdIndexRoute,
484
+ TemplatesAgentsIndexRoute,
485
+ TemplatesTeamsIndexRoute,
486
+ TemplatesAgentsIdIndexRoute: Route$27.update({
487
+ id: "/templates/agents/$id/",
488
+ path: "/templates/agents/$id/",
489
+ getParentRoute: () => Route$3
490
+ }),
491
+ TemplatesTeamsIdIndexRoute
492
+ };
493
+ var routeTree = Route$3._addFileChildren(rootRouteChildren)._addFileTypes();
494
+ //#endregion
495
+ //#region src/router.tsx
496
+ function getRouter() {
497
+ return createRouter({
498
+ routeTree,
499
+ scrollRestoration: true,
500
+ defaultPreload: "intent"
501
+ });
502
+ }
503
+ //#endregion
504
+ export { getRouter };
@@ -1,7 +1,7 @@
1
1
  import { i as getCookie, 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
- import { t as SIDEBAR_OPEN_GROUPS_COOKIE } from "./Sidebar-DmEiewRN.js";
4
+ import { t as SIDEBAR_OPEN_GROUPS_COOKIE } from "./Sidebar-O_CH1-JD.js";
5
5
  //#region src/routes/index.tsx?tss-serverfn-split
6
6
  function parseOpenGroupsCookie(raw) {
7
7
  if (!raw) return {};
@@ -23,11 +23,11 @@ var fetchHomeData_createServerFn_handler = createServerRpc({
23
23
  }, (opts) => fetchHomeData.__executeServer(opts));
24
24
  var fetchHomeData = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(fetchHomeData_createServerFn_handler, async ({ data }) => {
25
25
  const client = daemonClient();
26
- const [agents, profiles, profileGroups, groups] = await Promise.all([
26
+ const [agents, profiles, profileGroups, teams] = await Promise.all([
27
27
  client.get("/api/agents?includeArchived=false"),
28
28
  client.get("/api/profiles"),
29
- client.get("/api/profile-groups"),
30
- client.get("/api/groups")
29
+ client.get("/api/team-templates"),
30
+ client.get("/api/teams")
31
31
  ]);
32
32
  const initialOpenGroups = parseOpenGroupsCookie(getCookie(SIDEBAR_OPEN_GROUPS_COOKIE));
33
33
  let selected = null;
@@ -48,7 +48,7 @@ var fetchHomeData = createServerFn({ method: "POST" }).inputValidator((d) => d).
48
48
  agents,
49
49
  profiles,
50
50
  profileGroups,
51
- groups,
51
+ teams,
52
52
  selected,
53
53
  initialOpenGroups
54
54
  };
@@ -1,22 +1,25 @@
1
- import { t as Route } from "./routes-V9URcp1v.js";
2
- import { t as ChatPane } from "./ChatPane-BvpswYvF.js";
3
- import { n as Sidebar } from "./Sidebar-DmEiewRN.js";
1
+ import { t as Route } from "./routes-lIclH9Br.js";
2
+ import { t as ChatPane } from "./ChatPane-eUY_dga3.js";
3
+ import { n as Sidebar } from "./Sidebar-O_CH1-JD.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region src/routes/index.tsx?tsr-split=component
6
6
  function HomePage() {
7
7
  const data = Route.useLoaderData();
8
8
  const selectedAgentId = data.selected?.resolved.agent.id ?? null;
9
9
  return /* @__PURE__ */ jsxs("div", {
10
- className: "grid h-full grid-cols-1 gap-3 py-3 sm:grid-cols-[16rem_minmax(0,1fr)]",
11
- children: [/* @__PURE__ */ jsx(Sidebar, {
12
- agents: data.agents,
13
- groups: data.groups,
14
- profiles: data.profiles,
15
- profileGroups: data.profileGroups,
16
- selectedAgentId,
17
- initialOpenGroups: data.initialOpenGroups
18
- }), /* @__PURE__ */ jsx("main", {
19
- className: "overflow-hidden",
10
+ className: "grid h-full min-h-0 grid-cols-1 gap-3 py-3 lg:grid-cols-[18rem_minmax(0,1fr)]",
11
+ children: [/* @__PURE__ */ jsx("div", {
12
+ className: `min-h-0 ${data.selected ? "hidden lg:block" : ""}`,
13
+ children: /* @__PURE__ */ jsx(Sidebar, {
14
+ agents: data.agents,
15
+ teams: data.teams,
16
+ profiles: data.profiles,
17
+ profileGroups: data.profileGroups,
18
+ selectedAgentId,
19
+ initialOpenGroups: data.initialOpenGroups
20
+ })
21
+ }), /* @__PURE__ */ jsx("section", {
22
+ className: `min-h-0 overflow-hidden ${data.selected ? "" : "hidden lg:block"}`,
20
23
  children: data.selected ? /* @__PURE__ */ jsx(ChatPane, {
21
24
  agentId: data.selected.resolved.agent.id,
22
25
  agentName: data.selected.resolved.agent.name,
@@ -1,8 +1,8 @@
1
1
  import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/index.tsx
5
- var $$splitComponentImporter = () => import("./routes-Ce2VWrU9.js");
5
+ var $$splitComponentImporter = () => import("./routes-Jb0zjKav.js");
6
6
  var fetchHomeData = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("26dbbcbe40063e8aedfd343cf1dfd4dfe5589f24591c0ba35e80c611d7c57c7c"));
7
7
  var Route = createFileRoute("/")({
8
8
  validateSearch: (s) => ({ agent: typeof s.agent === "string" ? s.agent : void 0 }),
@@ -0,0 +1,79 @@
1
+ import { t as Route } from "./services-C4szdhPx.js";
2
+ import { t as ConfigPage } from "./ConfigPage-BKlh5vOU.js";
3
+ import { t as FieldRow } from "./FieldRow-B4eTegH9.js";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/routes/config/services.tsx?tsr-split=component
6
+ var UNGROUPED_LABEL = "Other";
7
+ /**
8
+ * Bucket services into teams while preserving the order each team first
9
+ * appears in the daemon's SERVICES list. Cards without a `team` field land
10
+ * in an "Other" bucket at the end.
11
+ */
12
+ function groupServices(services) {
13
+ const buckets = /* @__PURE__ */ new Map();
14
+ for (const s of services) {
15
+ const key = s.team ?? UNGROUPED_LABEL;
16
+ const bucket = buckets.get(key) ?? [];
17
+ bucket.push(s);
18
+ buckets.set(key, bucket);
19
+ }
20
+ const entries = Array.from(buckets, ([team, items]) => ({
21
+ team,
22
+ items
23
+ }));
24
+ if (entries.length > 1) entries.sort((a, b) => {
25
+ if (a.team === UNGROUPED_LABEL) return 1;
26
+ if (b.team === UNGROUPED_LABEL) return -1;
27
+ return 0;
28
+ });
29
+ return entries;
30
+ }
31
+ function ServicesPage() {
32
+ const { services } = Route.useLoaderData();
33
+ const grouped = groupServices(services);
34
+ return /* @__PURE__ */ jsxs(ConfigPage, {
35
+ active: "services",
36
+ title: "Services",
37
+ description: /* @__PURE__ */ jsxs(Fragment, { children: [
38
+ "Configure non-LLM integrations such as web search and crawlers. Secret fields are encrypted in the ",
39
+ /* @__PURE__ */ jsx("code", {
40
+ className: "font-mono",
41
+ children: "secrets"
42
+ }),
43
+ " table; URLs and IDs live in the ",
44
+ /* @__PURE__ */ jsx("code", {
45
+ className: "font-mono",
46
+ children: "config"
47
+ }),
48
+ " table."
49
+ ] }),
50
+ children: [services.length === 0 && /* @__PURE__ */ jsx("p", {
51
+ className: "text-muted-foreground italic",
52
+ children: "(no services registered)"
53
+ }), grouped.map(({ team, items }) => /* @__PURE__ */ jsxs("section", { children: [/* @__PURE__ */ jsx("h2", {
54
+ className: "mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",
55
+ children: team
56
+ }), items.map((s) => /* @__PURE__ */ jsxs("section", {
57
+ className: "rounded-lg border bg-card p-5 mb-3",
58
+ children: [
59
+ /* @__PURE__ */ jsxs("header", {
60
+ className: "mb-3 flex flex-wrap items-center gap-2",
61
+ children: [/* @__PURE__ */ jsx("span", {
62
+ className: "font-mono font-semibold",
63
+ children: s.id
64
+ }), /* @__PURE__ */ jsxs("span", {
65
+ className: "text-muted-foreground text-sm",
66
+ children: ["· ", s.displayName]
67
+ })]
68
+ }),
69
+ s.hint && /* @__PURE__ */ jsx("p", {
70
+ className: "text-xs text-muted-foreground mb-2",
71
+ children: s.hint
72
+ }),
73
+ s.fields.map((f) => /* @__PURE__ */ jsx(FieldRow, { field: f }, f.envVar))
74
+ ]
75
+ }, s.id))] }, team))]
76
+ });
77
+ }
78
+ //#endregion
79
+ export { ServicesPage as component };
@@ -1,16 +1,16 @@
1
1
  import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/config/services.tsx
5
- var $$splitComponentImporter = () => import("./services-B91w2f-X.js");
5
+ var $$splitComponentImporter = () => import("./services-B9yBWDX0.js");
6
6
  var fetchServices = createServerFn({ method: "GET" }).handler(createSsrRpc("6afd81bef0ee381d6e3641cd8e269968429c874e2f9d56c8f818cc9d180ee477"));
7
7
  var Route = createFileRoute("/config/services")({
8
8
  loader: () => fetchServices(),
9
9
  component: lazyRouteComponent($$splitComponentImporter, "component")
10
10
  });
11
11
  /**
12
- * Bucket services into groups while preserving the order each group first
13
- * appears in the daemon's SERVICES list. Cards without a `group` field land
12
+ * Bucket services into teams while preserving the order each team first
13
+ * appears in the daemon's SERVICES list. Cards without a `team` field land
14
14
  * in an "Other" bucket at the end.
15
15
  */
16
16
  //#endregion