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,51 @@
1
+ import { n as sectionTabClass, t as SECTION_TABS_CLASS } from "./SectionTabs-BJTPr5nU.js";
2
+ import { Link, useRouterState } from "@tanstack/react-router";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/components/TeamTabs.tsx
5
+ var TABS = [
6
+ {
7
+ suffix: "",
8
+ label: "Overview",
9
+ exact: true
10
+ },
11
+ {
12
+ suffix: "/members",
13
+ label: "Members"
14
+ },
15
+ {
16
+ suffix: "/policy",
17
+ label: "Policy"
18
+ },
19
+ {
20
+ suffix: "/memory",
21
+ label: "Memory"
22
+ },
23
+ {
24
+ suffix: "/context",
25
+ label: "Context"
26
+ },
27
+ {
28
+ suffix: "/activity",
29
+ label: "Activity"
30
+ }
31
+ ];
32
+ function TeamTabs({ teamId }) {
33
+ const pathname = useRouterState({ select: (state) => state.location.pathname });
34
+ const base = `/teams/${encodeURIComponent(teamId)}`;
35
+ return /* @__PURE__ */ jsx("nav", {
36
+ "aria-label": "Team sections",
37
+ className: SECTION_TABS_CLASS,
38
+ children: TABS.map((tab) => {
39
+ const href = `${base}${tab.suffix}`;
40
+ const active = "exact" in tab && tab.exact ? pathname === base || pathname === `${base}/` : pathname.startsWith(href);
41
+ return /* @__PURE__ */ jsx(Link, {
42
+ to: href,
43
+ "aria-current": active ? "page" : void 0,
44
+ className: sectionTabClass(active),
45
+ children: tab.label
46
+ }, tab.label);
47
+ })
48
+ });
49
+ }
50
+ //#endregion
51
+ export { TeamTabs as t };
@@ -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,22 +6,22 @@ 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
- to: "/profiles",
11
- label: "profiles",
12
- match: (p) => p.startsWith("/profiles")
11
+ to: "/templates/agents",
12
+ label: "Agent templates",
13
+ match: (p) => p.startsWith("/templates/agents")
13
14
  }, {
14
- to: "/profile-groups",
15
- label: "profile groups",
16
- match: (p) => p.startsWith("/profile-groups")
15
+ to: "/templates/teams",
16
+ label: "Team templates",
17
+ match: (p) => p.startsWith("/templates/teams")
17
18
  }].map((t) => {
18
19
  const active = t.match(pathname);
19
20
  return /* @__PURE__ */ jsx(Link, {
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
  })
@@ -0,0 +1,11 @@
1
+ import { t as RecoveryState } from "./RecoveryState-B2SG-mrY.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/routes/templates/teams/$id/index.tsx?tsr-split=errorComponent
4
+ var SplitErrorComponent = ({ error, reset }) => /* @__PURE__ */ jsx(RecoveryState, {
5
+ title: "Team template unavailable",
6
+ error,
7
+ reset,
8
+ fallbackHref: "/templates/teams"
9
+ });
10
+ //#endregion
11
+ export { SplitErrorComponent as errorComponent };
@@ -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({
@@ -16,10 +16,10 @@ var fetchAgent = createServerFn({ method: "POST" }).inputValidator((d) => d).han
16
16
  if (err instanceof ApiClientError && err.status === 404) return null;
17
17
  throw err;
18
18
  }
19
- const [msgs, head, groups, skills, models, telegramConfig] = await Promise.all([
19
+ const [msgs, head, teams, skills, models, telegramConfig] = await Promise.all([
20
20
  c.get(`/api/agents/${encodeURIComponent(resolved.agent.id)}/sessions/messages`),
21
21
  c.get(`/api/agents/${encodeURIComponent(resolved.agent.id)}/sessions/head`),
22
- c.get("/api/groups"),
22
+ c.get("/api/teams"),
23
23
  c.get("/api/skills"),
24
24
  c.get("/api/config/available-models"),
25
25
  c.get("/api/config/telegram").catch(() => ({ configured: false }))
@@ -28,9 +28,9 @@ var fetchAgent = createServerFn({ method: "POST" }).inputValidator((d) => d).han
28
28
  resolved,
29
29
  initialMessages: msgs.messages,
30
30
  sessionHead: head,
31
- groups,
31
+ teams,
32
32
  skills,
33
- modelGroups: models.groups,
33
+ modelGroups: models.teams,
34
34
  telegramConfigured: telegramConfig.configured
35
35
  };
36
36
  });
@@ -1,19 +1,24 @@
1
- import { t as Route } from "./_id-BqnDy_Ca.js";
1
+ import { t as Route } from "./_id-CwyGjJeP.js";
2
+ import { r as PageShell } from "./Page-LENulSXY.js";
3
+ import { t as DEFAULT_PROFILE_COMMUNICATION } from "./team-policy-vPG01onj.js";
4
+ import { t as ProfileCommunicationEditor } from "./ProfileCommunicationEditor-C2RU-2QB.js";
5
+ import { t as TemplatesTabs } from "./TemplatesTabs-CcRxZhJe.js";
2
6
  import { useState } from "react";
3
7
  import { useRouter } from "@tanstack/react-router";
4
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
- //#region src/routes/profiles/$id.tsx?tsr-split=component
9
+ //#region src/routes/templates/agents/$id/index.tsx?tsr-split=component
6
10
  function ProfileDetailPage() {
7
11
  const { loaded, modelGroups, skills } = Route.useLoaderData();
8
12
  const [tab, setTab] = useState("basics");
9
- return /* @__PURE__ */ jsxs("div", { children: [
13
+ return /* @__PURE__ */ jsxs(PageShell, { children: [
14
+ /* @__PURE__ */ jsx(TemplatesTabs, {}),
10
15
  /* @__PURE__ */ jsxs("header", {
11
16
  className: "mb-1",
12
17
  children: [
13
18
  /* @__PURE__ */ jsx("a", {
14
- href: "/profiles",
19
+ href: "/templates/agents",
15
20
  className: "mb-1 inline-block text-[0.85em] text-mocha-light hover:text-sapphire",
16
- children: "← profiles"
21
+ children: "← agent templates"
17
22
  }),
18
23
  /* @__PURE__ */ jsx("h1", { children: loaded.profile.name }),
19
24
  /* @__PURE__ */ jsxs("div", {
@@ -29,20 +34,27 @@ function ProfileDetailPage() {
29
34
  /* @__PURE__ */ jsxs("p", {
30
35
  className: "muted my-6",
31
36
  children: [
32
- "These settings and files seed every agent spawned from this profile going forward.",
37
+ "These settings and files seed every agent spawned from this Agent template going forward.",
33
38
  " ",
34
39
  /* @__PURE__ */ jsx("strong", { children: "Existing agents keep their own copies" }),
35
40
  " — edits here don't propagate to already-spawned agents."
36
41
  ]
37
42
  }),
38
43
  /* @__PURE__ */ jsx(Tabs, {
39
- items: [{
40
- id: "basics",
41
- label: "1. basics"
42
- }, {
43
- id: "skills",
44
- label: "2. skills"
45
- }],
44
+ items: [
45
+ {
46
+ id: "basics",
47
+ label: "1. basics"
48
+ },
49
+ {
50
+ id: "skills",
51
+ label: "2. skills"
52
+ },
53
+ {
54
+ id: "communication",
55
+ label: "3. communication"
56
+ }
57
+ ],
46
58
  active: tab,
47
59
  onChange: (t) => setTab(t)
48
60
  }),
@@ -91,12 +103,6 @@ function ProfileDetailPage() {
91
103
  file: "TOOLS.md",
92
104
  initialContent: loaded.files.tools,
93
105
  hint: "Tool playbook. Agent-specific usage notes that go beyond the generic tool descriptions."
94
- }),
95
- /* @__PURE__ */ jsx(OptionalFileCard, {
96
- profileId: loaded.profile.id,
97
- file: "HEARTBEAT.md",
98
- initialContent: loaded.files.heartbeat,
99
- hint: "Tasks the agent should check on scheduled wake-ups. Pair with a trigger whose message is the canned heartbeat prompt."
100
106
  })
101
107
  ] }),
102
108
  tab === "skills" && /* @__PURE__ */ jsx(SkillsCard, {
@@ -104,9 +110,60 @@ function ProfileDetailPage() {
104
110
  initialMode: loaded.profile.skillsMode,
105
111
  initialPicked: new Set(loaded.defaultSkills),
106
112
  skills
113
+ }),
114
+ tab === "communication" && /* @__PURE__ */ jsx(ProfileCommunicationCard, {
115
+ profileId: loaded.profile.id,
116
+ initial: loaded.profile.communicationDefaults ?? DEFAULT_PROFILE_COMMUNICATION
107
117
  })
108
118
  ] });
109
119
  }
120
+ function ProfileCommunicationCard({ profileId, initial }) {
121
+ const [value, setValue] = useState(initial);
122
+ const [savedAt, setSavedAt] = useState(null);
123
+ const dirty = JSON.stringify(value) !== JSON.stringify(initial);
124
+ const save = async () => {
125
+ const response = await fetch(`/api/profiles/${encodeURIComponent(profileId)}`, {
126
+ method: "PATCH",
127
+ headers: { "content-type": "application/json" },
128
+ body: JSON.stringify({ communicationDefaults: value })
129
+ });
130
+ if (!response.ok) throw new Error((await response.json().catch(() => null))?.error ?? response.statusText);
131
+ setSavedAt(Date.now());
132
+ };
133
+ return /* @__PURE__ */ jsxs("section", {
134
+ className: "rounded-md border border-frost bg-snow p-5 shadow-baziu-sm",
135
+ children: [
136
+ /* @__PURE__ */ jsx("div", {
137
+ className: "mb-2 flex flex-wrap items-center gap-2",
138
+ children: /* @__PURE__ */ jsx("h3", {
139
+ className: "m-0 font-body text-[0.95rem] font-semibold normal-case text-chocolate",
140
+ children: "Communication defaults"
141
+ })
142
+ }),
143
+ /* @__PURE__ */ jsx("p", {
144
+ className: "muted mb-4",
145
+ children: "Materialized into new Team and Team policy snapshots after preset resolution. Existing snapshots never inherit later changes. Stored by the daemon."
146
+ }),
147
+ /* @__PURE__ */ jsx(ProfileCommunicationEditor, {
148
+ value,
149
+ onChange: setValue
150
+ }),
151
+ /* @__PURE__ */ jsxs("div", {
152
+ className: "mt-4 flex items-center gap-3",
153
+ children: [/* @__PURE__ */ jsx("button", {
154
+ type: "button",
155
+ className: "btn-primary",
156
+ disabled: !dirty,
157
+ onClick: save,
158
+ children: "save communication defaults"
159
+ }), savedAt && /* @__PURE__ */ jsx("span", {
160
+ className: "text-xs text-sapphire",
161
+ children: "saved to daemon"
162
+ })]
163
+ })
164
+ ]
165
+ });
166
+ }
110
167
  function Tabs({ items, active, onChange }) {
111
168
  return /* @__PURE__ */ jsx("nav", {
112
169
  role: "tablist",
@@ -123,7 +180,7 @@ function Tabs({ items, active, onChange }) {
123
180
  }
124
181
  function statusColor(kind) {
125
182
  if (kind === "saved") return "text-sapphire";
126
- if (kind === "error") return "text-[#9B3D3D]";
183
+ if (kind === "error") return "text-danger";
127
184
  if (kind === "dirty") return "text-mocha";
128
185
  return "text-mocha-light";
129
186
  }
@@ -1,11 +1,13 @@
1
- import { t as Route } from "./_id-DUIrFV3G.js";
2
- import { t as AgentTabs } from "./AgentTabs-BOjTN7QF.js";
1
+ import { t as Route } from "./_id-DkYodSkG.js";
2
+ import { r as PageShell } from "./Page-LENulSXY.js";
3
+ import { t as AgentTabs } from "./AgentTabs-DoMDJBXH.js";
3
4
  import { t as AgentAvatar } from "./AgentAvatar-8gTAy_tP.js";
4
- import { t as ChatPane } from "./ChatPane-BvpswYvF.js";
5
- import { r as REASONING_LEVELS } from "./wire-constants-Deb4NxBb.js";
5
+ import { t as ChatPane } from "./ChatPane-eUY_dga3.js";
6
+ import { r as REASONING_LEVELS } from "./wire-constants-C8nBJcU3.js";
6
7
  import { useState } from "react";
7
8
  import { useRouter } from "@tanstack/react-router";
8
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+ import { ArrowLeft } from "lucide-react";
9
11
  //#region src/components/CopyButton.tsx
10
12
  function CopyButton({ value, className, ariaLabel = "Copy to clipboard", title = "Copy to clipboard" }) {
11
13
  const [copied, setCopied] = useState(false);
@@ -48,7 +50,8 @@ function CopyButton({ value, className, ariaLabel = "Copy to clipboard", title =
48
50
  //#endregion
49
51
  //#region src/routes/agents/$id/index.tsx?tsr-split=component
50
52
  function AgentDetailPage() {
51
- const { resolved, initialMessages, sessionHead, groups, skills, modelGroups, telegramConfigured } = Route.useLoaderData();
53
+ const { resolved, initialMessages, sessionHead, teams, skills, modelGroups, telegramConfigured } = Route.useLoaderData();
54
+ const search = Route.useSearch();
52
55
  const router = useRouter();
53
56
  async function archive() {
54
57
  if (!confirm(`archive "${resolved.agent.name}"? (reversible)`)) return;
@@ -62,14 +65,31 @@ function AgentDetailPage() {
62
65
  async function del() {
63
66
  const msg = `Permanently delete agent "${resolved.agent.name}"?\n\nThis removes the DB rows (messages, triggers, skill attachments) AND the agent's on-disk directory (memory, templates, state, sessions). This cannot be undone.`;
64
67
  if (!confirm(msg)) return;
65
- const res = await fetch(`/api/agents/${resolved.agent.id}`, { method: "DELETE" });
68
+ const policyResponse = await fetch(`/api/teams/${encodeURIComponent(resolved.team.id)}/policy`);
69
+ if (!policyResponse.ok) {
70
+ alert("The current Team policy is unavailable. Nothing was deleted.");
71
+ return;
72
+ }
73
+ const current = await policyResponse.json();
74
+ const res = await fetch(`/api/agents/${resolved.agent.id}?expectedTeamRevision=${current.teamPolicy.revision}`, { method: "DELETE" });
66
75
  if (res.ok || res.status === 204) window.location.assign("/agents");
67
76
  else alert(`failed: ${res.statusText}`);
68
77
  }
69
- return /* @__PURE__ */ jsxs("div", { children: [
78
+ return /* @__PURE__ */ jsxs(PageShell, { children: [
70
79
  /* @__PURE__ */ jsxs("header", {
71
80
  className: "mb-8",
72
81
  children: [
82
+ search.teamPolicy && /* @__PURE__ */ jsxs("div", {
83
+ className: "mb-4 flex flex-wrap items-center gap-2",
84
+ children: [/* @__PURE__ */ jsxs("a", {
85
+ href: `/teams/${encodeURIComponent(search.teamPolicy)}/policy?view=${search.view ?? "flow"}&selected=${encodeURIComponent(search.selected ?? "")}&vx=${search.vx ?? 0}&vy=${search.vy ?? 0}&vz=${search.vz ?? .9}`,
86
+ className: "ghost-btn",
87
+ children: [/* @__PURE__ */ jsx(ArrowLeft, { className: "h-4 w-4" }), " back to Team policy"]
88
+ }), /* @__PURE__ */ jsx("span", {
89
+ className: "text-xs text-mocha-light",
90
+ children: "Returns to the same projection, viewport, and selection."
91
+ })]
92
+ }),
73
93
  /* @__PURE__ */ jsxs("div", {
74
94
  className: "flex items-center gap-3",
75
95
  children: [/* @__PURE__ */ jsx(AgentAvatar, {
@@ -103,18 +123,18 @@ function AgentDetailPage() {
103
123
  children: resolved.profile.id
104
124
  })] }),
105
125
  /* @__PURE__ */ jsxs(Tag, { children: [
106
- "group:",
126
+ "team:",
107
127
  " ",
108
128
  /* @__PURE__ */ jsx("a", {
109
- href: `/groups/${encodeURIComponent(resolved.group.id)}`,
129
+ href: `/teams/${encodeURIComponent(resolved.team.id)}`,
110
130
  className: "ml-1 bg-transparent px-0 font-mono underline",
111
- children: resolved.group.id
131
+ children: resolved.team.id
112
132
  }),
113
133
  " ",
114
134
  "·",
115
135
  " ",
116
136
  /* @__PURE__ */ jsx("a", {
117
- href: `/groups/${encodeURIComponent(resolved.group.id)}/memory`,
137
+ href: `/teams/${encodeURIComponent(resolved.team.id)}/memory`,
118
138
  className: "ml-0.5 underline",
119
139
  children: "shared memory →"
120
140
  })
@@ -148,7 +168,7 @@ function AgentDetailPage() {
148
168
  }), /* @__PURE__ */ jsx("button", {
149
169
  type: "button",
150
170
  onClick: del,
151
- className: "ghost-btn border-[rgba(196,135,138,0.4)] text-[#9B3D3D] hover:bg-[rgba(196,135,138,0.08)]",
171
+ className: "ghost-btn border-[rgba(196,135,138,0.4)] text-danger hover:bg-[rgba(196,135,138,0.08)]",
152
172
  children: "delete permanently"
153
173
  })]
154
174
  }),
@@ -165,7 +185,7 @@ function AgentDetailPage() {
165
185
  className: "mb-4 rounded-md border border-frost bg-fawn/35 px-4 py-2 text-[0.9em] text-chocolate",
166
186
  children: [
167
187
  /* @__PURE__ */ jsx("strong", {
168
- className: "text-[#7a4e2a]",
188
+ className: "text-warning",
169
189
  children: "This agent is archived."
170
190
  }),
171
191
  " It's hidden from the default agent list; use ",
@@ -198,29 +218,29 @@ function AgentDetailPage() {
198
218
  /* @__PURE__ */ jsxs("section", {
199
219
  className: "mt-10",
200
220
  children: [
201
- /* @__PURE__ */ jsx(SectionTitle, { children: "Group" }),
221
+ /* @__PURE__ */ jsx(SectionTitle, { children: "Team" }),
202
222
  /* @__PURE__ */ jsxs("p", {
203
223
  className: "text-[0.9em] text-mocha-light",
204
224
  children: [
205
- "Current group: ",
206
- /* @__PURE__ */ jsx("code", { children: resolved.group.id }),
225
+ "Current team: ",
226
+ /* @__PURE__ */ jsx("code", { children: resolved.team.id }),
207
227
  " (",
208
- resolved.group.name,
228
+ resolved.team.name,
209
229
  ") —",
210
230
  " ",
211
- /* @__PURE__ */ jsx("code", { children: resolved.group.path }),
231
+ /* @__PURE__ */ jsx("code", { children: resolved.team.path }),
212
232
  ".",
213
233
  " ",
214
234
  /* @__PURE__ */ jsx("a", {
215
- href: `/groups/${resolved.group.id}`,
235
+ href: `/teams/${resolved.team.id}`,
216
236
  children: "view / edit USER.md"
217
237
  })
218
238
  ]
219
239
  }),
220
240
  /* @__PURE__ */ jsx(MoveGroupForm, {
221
241
  agentId: resolved.agent.id,
222
- currentGroupId: resolved.group.id,
223
- groups
242
+ currentTeamId: resolved.team.id,
243
+ teams
224
244
  })
225
245
  ]
226
246
  }),
@@ -349,28 +369,57 @@ function SettingsDetails({ agentId, currentModelOverride, profileDefaultModel, c
349
369
  children: "saved ✓"
350
370
  }),
351
371
  error && /* @__PURE__ */ jsx("span", {
352
- className: "text-[0.85em] text-[#9B3D3D]",
372
+ className: "text-[0.85em] text-danger",
353
373
  children: error
354
374
  })
355
375
  ]
356
376
  })]
357
377
  });
358
378
  }
359
- function MoveGroupForm({ agentId, currentGroupId, groups }) {
379
+ function MoveGroupForm({ agentId, currentTeamId, teams }) {
360
380
  const router = useRouter();
361
- const [groupId, setGroupId] = useState(currentGroupId);
381
+ const [teamId, setTeamId] = useState(currentTeamId);
362
382
  const [moving, setMoving] = useState(false);
383
+ const [placement, setPlacement] = useState("profile_defaults");
363
384
  const [err, setErr] = useState(null);
385
+ const [preview, setPreview] = useState(null);
364
386
  async function move(e) {
365
387
  e.preventDefault();
366
- if (groupId === currentGroupId) return;
388
+ if (teamId === currentTeamId) return;
367
389
  setMoving(true);
368
390
  setErr(null);
369
391
  try {
370
- const res = await fetch(`/api/agents/${encodeURIComponent(agentId)}/group`, {
392
+ const [sourceResponse, destinationResponse] = await Promise.all([fetch(`/api/teams/${encodeURIComponent(currentTeamId)}/policy`), fetch(`/api/teams/${encodeURIComponent(teamId)}/policy`)]);
393
+ if (!sourceResponse.ok || !destinationResponse.ok) throw new Error("A Team policy is unavailable. Nothing was moved.");
394
+ const source = await sourceResponse.json();
395
+ const destination = await destinationResponse.json();
396
+ const request = {
397
+ teamId,
398
+ sourceExpectedRevision: source.teamPolicy.revision,
399
+ destinationExpectedRevision: destination.teamPolicy.revision,
400
+ placement
401
+ };
402
+ if (!preview) {
403
+ const response = await fetch(`/api/agents/${encodeURIComponent(agentId)}/team/preview`, {
404
+ method: "POST",
405
+ headers: { "content-type": "application/json" },
406
+ body: JSON.stringify(request)
407
+ });
408
+ if (!response.ok) {
409
+ const body = await response.json().catch(() => null);
410
+ throw new Error(body?.error ?? response.statusText);
411
+ }
412
+ setPreview(await response.json());
413
+ return;
414
+ }
415
+ const res = await fetch(`/api/agents/${encodeURIComponent(agentId)}/team`, {
371
416
  method: "PATCH",
372
417
  headers: { "content-type": "application/json" },
373
- body: JSON.stringify({ groupId })
418
+ body: JSON.stringify({
419
+ ...request,
420
+ sourceExpectedRevision: preview.source.currentRevision,
421
+ destinationExpectedRevision: preview.destination.currentRevision
422
+ })
374
423
  });
375
424
  if (!res.ok) {
376
425
  const body = await res.json().catch(() => null);
@@ -390,10 +439,13 @@ function MoveGroupForm({ agentId, currentGroupId, groups }) {
390
439
  /* @__PURE__ */ jsxs("label", {
391
440
  className: "flex flex-col gap-1 text-[0.85em] text-mocha-light",
392
441
  children: ["move to:", /* @__PURE__ */ jsx("select", {
393
- value: groupId,
394
- onChange: (e) => setGroupId(e.target.value),
442
+ value: teamId,
443
+ onChange: (e) => {
444
+ setTeamId(e.target.value);
445
+ setPreview(null);
446
+ },
395
447
  className: "min-w-[18rem] rounded-sm border border-frost bg-snow px-2 py-1.5",
396
- children: groups.map((g) => /* @__PURE__ */ jsxs("option", {
448
+ children: teams.map((g) => /* @__PURE__ */ jsxs("option", {
397
449
  value: g.id,
398
450
  children: [
399
451
  g.id,
@@ -403,14 +455,55 @@ function MoveGroupForm({ agentId, currentGroupId, groups }) {
403
455
  }, g.id))
404
456
  })]
405
457
  }),
458
+ /* @__PURE__ */ jsxs("label", {
459
+ className: "flex flex-col gap-1 text-[0.85em] text-mocha-light",
460
+ children: ["destination placement:", /* @__PURE__ */ jsxs("select", {
461
+ value: placement,
462
+ onChange: (e) => {
463
+ setPlacement(e.target.value);
464
+ setPreview(null);
465
+ },
466
+ className: "rounded-sm border border-frost bg-snow px-2 py-1.5",
467
+ children: [/* @__PURE__ */ jsx("option", {
468
+ value: "profile_defaults",
469
+ children: "Agent-template defaults"
470
+ }), /* @__PURE__ */ jsx("option", {
471
+ value: "isolated",
472
+ children: "isolated"
473
+ })]
474
+ })]
475
+ }),
406
476
  /* @__PURE__ */ jsx("button", {
407
477
  type: "submit",
408
- disabled: moving || groupId === currentGroupId,
409
- children: moving ? "moving…" : "move"
478
+ disabled: moving || teamId === currentTeamId,
479
+ children: moving ? "working…" : preview ? "commit reviewed move" : "review move"
410
480
  }),
411
481
  err && /* @__PURE__ */ jsx("span", {
412
- className: "text-[0.85em] text-[#9B3D3D]",
482
+ className: "text-[0.85em] text-danger",
413
483
  children: err
484
+ }),
485
+ preview && /* @__PURE__ */ jsxs("div", {
486
+ className: "basis-full rounded-md border border-sapphire-light bg-sapphire-glow p-3 text-sm",
487
+ children: [/* @__PURE__ */ jsxs("p", { children: [
488
+ "Source revision ",
489
+ preview.source.currentRevision,
490
+ " → ",
491
+ /* @__PURE__ */ jsx("strong", { children: preview.source.resultingRevision }),
492
+ ", removing ",
493
+ preview.source.removedEdges.length,
494
+ " incident edges. Destination revision ",
495
+ preview.destination.currentRevision,
496
+ " → ",
497
+ /* @__PURE__ */ jsx("strong", { children: preview.destination.resultingRevision }),
498
+ ", adding ",
499
+ preview.destination.addedEdges.length,
500
+ " edges to ",
501
+ preview.destination.existingEdges.length,
502
+ " existing edges."
503
+ ] }), /* @__PURE__ */ jsx("p", {
504
+ className: "mt-1 muted",
505
+ children: preview.lineage
506
+ })]
414
507
  })
415
508
  ]
416
509
  });
@@ -465,7 +558,7 @@ function SkillsTable({ agentId, attached, all }) {
465
558
  children: "no skills installed"
466
559
  });
467
560
  return /* @__PURE__ */ jsxs(Fragment, { children: [err && /* @__PURE__ */ jsx("p", {
468
- className: "mb-2 text-[0.85em] text-[#9B3D3D]",
561
+ className: "mb-2 text-[0.85em] text-danger",
469
562
  children: err
470
563
  }), /* @__PURE__ */ jsxs("table", { children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
471
564
  /* @__PURE__ */ jsx("th", { children: "name" }),
@@ -506,7 +599,7 @@ function SkillFindingSummary({ findings }) {
506
599
  return /* @__PURE__ */ jsxs("details", {
507
600
  className: "text-[0.82em]",
508
601
  children: [/* @__PURE__ */ jsxs("summary", {
509
- className: findings.some((f) => f.severity === "danger") ? "cursor-pointer text-[#9B3D3D]" : "cursor-pointer text-mocha",
602
+ className: findings.some((f) => f.severity === "danger") ? "cursor-pointer text-danger" : "cursor-pointer text-mocha",
510
603
  children: [
511
604
  findings.length,
512
605
  " finding",
@@ -603,7 +696,7 @@ function TelegramSection({ agent }) {
603
696
  className: "mb-3 flex items-center gap-3",
604
697
  children: isBound ? /* @__PURE__ */ jsxs(Fragment, { children: [
605
698
  /* @__PURE__ */ jsx("span", {
606
- className: "rounded-full bg-emerald-100 px-2 py-0.5 text-xs font-semibold text-emerald-800",
699
+ className: "rounded-full bg-success/10 px-2 py-0.5 text-xs font-semibold text-success",
607
700
  children: "bound"
608
701
  }),
609
702
  /* @__PURE__ */ jsxs("span", {
@@ -622,11 +715,11 @@ function TelegramSection({ agent }) {
622
715
  type: "button",
623
716
  onClick: unbind,
624
717
  disabled: busy,
625
- className: "ghost-btn border-[rgba(196,135,138,0.4)] text-[#9B3D3D] hover:bg-[rgba(196,135,138,0.08)]",
718
+ className: "ghost-btn border-[rgba(196,135,138,0.4)] text-danger hover:bg-[rgba(196,135,138,0.08)]",
626
719
  children: "unbind"
627
720
  })
628
721
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
629
- className: "rounded-full bg-amber-100 px-2 py-0.5 text-xs font-semibold text-amber-800",
722
+ className: "rounded-full bg-warning/10 px-2 py-0.5 text-xs font-semibold text-warning",
630
723
  children: "unbound"
631
724
  }), /* @__PURE__ */ jsx("button", {
632
725
  type: "button",
@@ -685,7 +778,7 @@ function TelegramSection({ agent }) {
685
778
  ]
686
779
  }),
687
780
  error && /* @__PURE__ */ jsx("p", {
688
- className: "mt-2 text-sm text-rose-700",
781
+ className: "mt-2 text-sm text-danger",
689
782
  children: error
690
783
  }),
691
784
  /* @__PURE__ */ jsx("p", {
@@ -1,13 +1,14 @@
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
+ import "react";
3
4
  import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
4
- //#region src/routes/profiles/$id.tsx
5
- var $$splitComponentImporter = () => import("./_id-DDixKEud.js");
6
- var fetchProfile = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("280ae44073f538bf230afd3a1407fc41f9c78cd0cf71b6a06fb0cceff0872d1c"));
7
- var Route = createFileRoute("/profiles/$id")({
5
+ //#region src/routes/templates/agents/$id/index.tsx
6
+ var $$splitComponentImporter = () => import("./_id-C3HY4lWg.js");
7
+ var fetchProfile = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("032d74b7d41c718191dbdde6b06ba44993340ce1154af1fa6723a6d4f7a7236e"));
8
+ var Route = createFileRoute("/templates/agents/$id/")({
8
9
  loader: async ({ params }) => {
9
10
  const data = await fetchProfile({ data: { id: params.id } });
10
- if (!data) throw redirect({ to: "/profiles" });
11
+ if (!data) throw redirect({ to: "/templates/agents" });
11
12
  return data;
12
13
  },
13
14
  component: lazyRouteComponent($$splitComponentImporter, "component")
@@ -1,11 +1,12 @@
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
- //#region src/routes/profiles/$id.tsx?tss-serverfn-split
4
+ import "react";
5
+ //#region src/routes/templates/agents/$id/index.tsx?tss-serverfn-split
5
6
  var fetchProfile_createServerFn_handler = createServerRpc({
6
- id: "280ae44073f538bf230afd3a1407fc41f9c78cd0cf71b6a06fb0cceff0872d1c",
7
+ id: "032d74b7d41c718191dbdde6b06ba44993340ce1154af1fa6723a6d4f7a7236e",
7
8
  name: "fetchProfile",
8
- filename: "src/routes/profiles/$id.tsx"
9
+ filename: "src/routes/templates/agents/$id/index.tsx"
9
10
  }, (opts) => fetchProfile.__executeServer(opts));
10
11
  var fetchProfile = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(fetchProfile_createServerFn_handler, async ({ data }) => {
11
12
  const c = daemonClient();
@@ -19,7 +20,7 @@ var fetchProfile = createServerFn({ method: "POST" }).inputValidator((d) => d).h
19
20
  const [models, skills] = await Promise.all([c.get("/api/config/available-models"), c.get("/api/skills")]);
20
21
  return {
21
22
  loaded,
22
- modelGroups: models.groups,
23
+ modelGroups: models.teams,
23
24
  skills
24
25
  };
25
26
  });