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,280 @@
1
+ import { t as Route } from "./approvals-CWcFHlor.js";
2
+ import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-LENulSXY.js";
3
+ import { t as Button } from "./Button-Dsnw22OF.js";
4
+ import { useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/routes/approvals/index.tsx?tsr-split=component
7
+ function ApprovalQueue() {
8
+ const [approvals, setApprovals] = useState(Route.useLoaderData().approvals);
9
+ const [status, setStatus] = useState("pending");
10
+ const [selected, setSelected] = useState(null);
11
+ const [busy, setBusy] = useState(false);
12
+ const [notice, setNotice] = useState(null);
13
+ const visible = approvals.filter((item) => status === "all" || item.status === status);
14
+ const refresh = async () => {
15
+ const response = await fetch("/api/approvals?limit=100");
16
+ if (!response.ok) throw new Error(`Could not refresh approvals (${response.status})`);
17
+ setApprovals((await response.json()).approvals);
18
+ };
19
+ const inspect = async (id) => {
20
+ const response = await fetch(`/api/approvals/${encodeURIComponent(id)}`);
21
+ if (!response.ok) throw new Error(`Could not load approval (${response.status})`);
22
+ setSelected(await response.json());
23
+ };
24
+ const decide = async (action) => {
25
+ if (!selected) return;
26
+ setBusy(true);
27
+ setNotice(null);
28
+ try {
29
+ const response = await fetch(`/api/approvals/${encodeURIComponent(selected.id)}/${action}`, {
30
+ method: "POST",
31
+ headers: { "content-type": "application/json" },
32
+ body: JSON.stringify({ reason: action === "deny" ? "Denied by operator" : void 0 })
33
+ });
34
+ const body = await response.json();
35
+ if (!response.ok) throw new Error(body.error ?? `Decision failed (${response.status})`);
36
+ await refresh();
37
+ await inspect(selected.id);
38
+ setNotice(action === "approve" ? "Approved and delivered once." : "Denied.");
39
+ } catch (error) {
40
+ setNotice(error instanceof Error ? error.message : String(error));
41
+ await refresh();
42
+ await inspect(selected.id);
43
+ } finally {
44
+ setBusy(false);
45
+ }
46
+ };
47
+ return /* @__PURE__ */ jsxs(PageShell, {
48
+ size: "wide",
49
+ children: [/* @__PURE__ */ jsx(PageHeader, {
50
+ eyebrow: "Policy operations",
51
+ title: "Communication approvals",
52
+ description: "One durable queue for policy-protected attempts. Approval authorizes only the captured attempt.",
53
+ actions: /* @__PURE__ */ jsxs("label", {
54
+ className: "m-0 block w-full text-sm sm:w-52",
55
+ children: ["Status", /* @__PURE__ */ jsxs("select", {
56
+ value: status,
57
+ onChange: (event) => setStatus(event.target.value),
58
+ className: "mt-1",
59
+ children: [
60
+ /* @__PURE__ */ jsx("option", {
61
+ value: "pending",
62
+ children: "Pending"
63
+ }),
64
+ /* @__PURE__ */ jsx("option", {
65
+ value: "all",
66
+ children: "All history"
67
+ }),
68
+ /* @__PURE__ */ jsx("option", {
69
+ value: "delivered",
70
+ children: "Delivered"
71
+ }),
72
+ /* @__PURE__ */ jsx("option", {
73
+ value: "denied",
74
+ children: "Denied"
75
+ }),
76
+ /* @__PURE__ */ jsx("option", {
77
+ value: "expired",
78
+ children: "Expired"
79
+ }),
80
+ /* @__PURE__ */ jsx("option", {
81
+ value: "cancelled",
82
+ children: "Cancelled"
83
+ }),
84
+ /* @__PURE__ */ jsx("option", {
85
+ value: "delivery_failed",
86
+ children: "Delivery failed"
87
+ })
88
+ ]
89
+ })]
90
+ })
91
+ }), /* @__PURE__ */ jsxs("div", {
92
+ className: "grid min-w-0 gap-5 lg:grid-cols-[minmax(0,1.15fr)_minmax(320px,0.85fr)]",
93
+ children: [/* @__PURE__ */ jsx(SectionCard, {
94
+ title: "Approval queue",
95
+ description: `${visible.length} matching attempt${visible.length === 1 ? "" : "s"}`,
96
+ className: "min-w-0",
97
+ children: visible.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
98
+ title: "No matching approvals",
99
+ description: "Try another status filter or return when a protected attempt needs review."
100
+ }) : /* @__PURE__ */ jsx("div", {
101
+ className: "overflow-x-auto",
102
+ children: /* @__PURE__ */ jsxs("table", {
103
+ className: "m-0 min-w-[680px]",
104
+ children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
105
+ /* @__PURE__ */ jsx("th", { children: "Status" }),
106
+ /* @__PURE__ */ jsx("th", { children: "Path" }),
107
+ /* @__PURE__ */ jsx("th", { children: "Origin" }),
108
+ /* @__PURE__ */ jsx("th", { children: "Expires" })
109
+ ] }) }), /* @__PURE__ */ jsx("tbody", { children: visible.map((item) => /* @__PURE__ */ jsxs("tr", {
110
+ tabIndex: 0,
111
+ role: "button",
112
+ "aria-label": `Inspect ${item.attemptKind} approval`,
113
+ "aria-current": selected?.id === item.id ? "true" : void 0,
114
+ onClick: () => void inspect(item.id),
115
+ onKeyDown: (event) => {
116
+ if (event.key === "Enter" || event.key === " ") {
117
+ event.preventDefault();
118
+ inspect(item.id);
119
+ }
120
+ },
121
+ className: `cursor-pointer ${selected?.id === item.id ? "bg-accent/60" : ""}`,
122
+ children: [
123
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(Status, { value: item.status }) }),
124
+ /* @__PURE__ */ jsxs("td", {
125
+ className: "min-w-56",
126
+ children: [
127
+ endpoint(item.source),
128
+ " → ",
129
+ endpoint(item.target)
130
+ ]
131
+ }),
132
+ /* @__PURE__ */ jsx("td", { children: item.origin }),
133
+ /* @__PURE__ */ jsx("td", {
134
+ className: "whitespace-nowrap",
135
+ children: /* @__PURE__ */ jsx("time", {
136
+ dateTime: new Date(item.expiresAt).toISOString(),
137
+ children: formatTimestamp(item.expiresAt)
138
+ })
139
+ })
140
+ ]
141
+ }, item.id)) })]
142
+ })
143
+ })
144
+ }), /* @__PURE__ */ jsx("aside", {
145
+ className: "min-w-0",
146
+ "aria-label": "Approval details",
147
+ children: /* @__PURE__ */ jsx(SectionCard, {
148
+ title: "Attempt details",
149
+ actions: selected ? /* @__PURE__ */ jsx(Status, { value: selected.status }) : void 0,
150
+ children: !selected ? /* @__PURE__ */ jsx(EmptyState, {
151
+ title: "No attempt selected",
152
+ description: "Select an attempt from the queue to inspect its policy and audit history.",
153
+ className: "min-h-56"
154
+ }) : /* @__PURE__ */ jsxs("div", {
155
+ className: "space-y-5",
156
+ children: [
157
+ /* @__PURE__ */ jsxs("dl", {
158
+ className: "grid gap-3 text-sm sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2",
159
+ children: [
160
+ /* @__PURE__ */ jsx(Fact, {
161
+ label: "Attempt",
162
+ value: `${selected.attemptKind}:${selected.attemptId}`
163
+ }),
164
+ /* @__PURE__ */ jsx(Fact, {
165
+ label: "Operation",
166
+ value: selected.operation
167
+ }),
168
+ /* @__PURE__ */ jsx(Fact, {
169
+ label: "Path",
170
+ value: `${endpoint(selected.source)} → ${endpoint(selected.target)}`
171
+ }),
172
+ /* @__PURE__ */ jsx(Fact, {
173
+ label: "Policy",
174
+ value: selected.policyRefs.map((ref) => `${ref.teamId}@${ref.revision}`).join(", ")
175
+ }),
176
+ /* @__PURE__ */ jsx(Fact, {
177
+ label: "Expires",
178
+ value: formatTimestamp(selected.expiresAt)
179
+ })
180
+ ]
181
+ }),
182
+ /* @__PURE__ */ jsxs("details", {
183
+ className: "rounded-lg border border-border bg-muted/30 p-3",
184
+ children: [/* @__PURE__ */ jsx("summary", {
185
+ className: "cursor-pointer text-sm font-semibold",
186
+ children: "Sensitive payload"
187
+ }), /* @__PURE__ */ jsx("pre", {
188
+ className: "mt-3 max-h-48 overflow-auto rounded-lg bg-background p-3 text-xs",
189
+ children: JSON.stringify(selected.payload, null, 2)
190
+ })]
191
+ }),
192
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
193
+ className: "m-0 font-body text-sm font-semibold text-foreground",
194
+ children: "Audit history"
195
+ }), /* @__PURE__ */ jsx("ol", {
196
+ className: "mt-2 divide-y divide-border rounded-lg border border-border text-xs",
197
+ children: selected.events.map((item) => /* @__PURE__ */ jsxs("li", {
198
+ className: "px-3 py-2 leading-5",
199
+ children: [
200
+ formatTimestamp(item.createdAt),
201
+ " · ",
202
+ item.event,
203
+ " · ",
204
+ item.actor
205
+ ]
206
+ }, item.id))
207
+ })] }),
208
+ notice && /* @__PURE__ */ jsx("p", {
209
+ role: "status",
210
+ className: "rounded-lg bg-muted px-3 py-2 text-sm",
211
+ children: notice
212
+ }),
213
+ selected.status === "pending" && /* @__PURE__ */ jsxs("div", {
214
+ className: "flex flex-wrap gap-2",
215
+ children: [/* @__PURE__ */ jsx(Button, {
216
+ variant: "primary",
217
+ disabled: busy,
218
+ onClick: () => void decide("approve"),
219
+ children: "Approve once"
220
+ }), /* @__PURE__ */ jsx(Button, {
221
+ variant: "danger",
222
+ disabled: busy,
223
+ onClick: () => void decide("deny"),
224
+ children: "Deny"
225
+ })]
226
+ })
227
+ ]
228
+ })
229
+ })
230
+ })]
231
+ })]
232
+ });
233
+ }
234
+ function Status({ value }) {
235
+ return /* @__PURE__ */ jsx(StatusBadge, {
236
+ variant: statusVariant(value),
237
+ children: statusLabel(value)
238
+ });
239
+ }
240
+ function statusVariant(value) {
241
+ switch (value) {
242
+ case "pending": return "warning";
243
+ case "approved":
244
+ case "delivering": return "info";
245
+ case "delivered": return "success";
246
+ case "denied":
247
+ case "delivery_failed": return "danger";
248
+ case "expired":
249
+ case "cancelled": return "neutral";
250
+ }
251
+ }
252
+ function statusLabel(value) {
253
+ const label = value.replaceAll("_", " ");
254
+ return `${label.charAt(0).toUpperCase()}${label.slice(1)}`;
255
+ }
256
+ function endpoint(value) {
257
+ return value.kind === "agent" ? `Agent ${value.id}` : value.kind === "user" ? "User" : `Outside ${value.teamId}`;
258
+ }
259
+ function Fact({ label, value }) {
260
+ return /* @__PURE__ */ jsxs("div", {
261
+ className: "rounded-lg bg-muted/40 p-3",
262
+ children: [/* @__PURE__ */ jsx("dt", {
263
+ className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground",
264
+ children: label
265
+ }), /* @__PURE__ */ jsx("dd", {
266
+ className: "mt-1 break-all text-foreground",
267
+ children: value
268
+ })]
269
+ });
270
+ }
271
+ var timestampFormatter = new Intl.DateTimeFormat("en-GB", {
272
+ dateStyle: "medium",
273
+ timeStyle: "medium",
274
+ timeZone: "UTC"
275
+ });
276
+ function formatTimestamp(value) {
277
+ return `${timestampFormatter.format(new Date(value))} UTC`;
278
+ }
279
+ //#endregion
280
+ export { ApprovalQueue as component };
@@ -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/lib/auth.ts?tss-serverfn-split
5
5
  var fetchAuthState_createServerFn_handler = createServerRpc({
@@ -19,7 +19,11 @@ var fetchAuthState = createServerFn({ method: "GET" }).handler(fetchAuthState_cr
19
19
  authed: false,
20
20
  setupComplete: false
21
21
  };
22
- throw err;
22
+ return {
23
+ authed: true,
24
+ setupComplete: true,
25
+ degraded: true
26
+ };
23
27
  }
24
28
  });
25
29
  //#endregion
@@ -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 } from "./daemon-client-2NRMzlTr.js";
4
4
  //#region src/routes/config/index.tsx?tss-serverfn-split
5
5
  var fetchProvidersData_createServerFn_handler = createServerRpc({
@@ -1,6 +1,6 @@
1
- import { t as Route } from "./config-Bq3o924J.js";
2
- import { t as ConfigTabs } from "./ConfigTabs-CyuxzesF.js";
3
- import { t as FieldRow } from "./FieldRow-DwyqycWI.js";
1
+ import { t as Route } from "./config-TeIoyYYc.js";
2
+ import { t as ConfigPage } from "./ConfigPage-BKlh5vOU.js";
3
+ import { t as FieldRow } from "./FieldRow-B4eTegH9.js";
4
4
  import { useState } from "react";
5
5
  import { useRouter } from "@tanstack/react-router";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -8,41 +8,20 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  function ProvidersPage() {
9
9
  const { providers, openaiCodex } = Route.useLoaderData();
10
10
  const setupComplete = providers.some((p) => p.enabled && p.curated.length > 0);
11
- return /* @__PURE__ */ jsxs("main", {
12
- className: "mx-auto max-w-5xl px-6 py-8",
13
- children: [
14
- /* @__PURE__ */ jsx("h1", {
15
- className: "font-serif text-3xl text-foreground mb-2",
16
- children: "config"
17
- }),
18
- /* @__PURE__ */ jsx(ConfigTabs, { active: "providers" }),
19
- !setupComplete && /* @__PURE__ */ jsx(SetupBlockerBanner, {
20
- providers,
21
- openaiCodex
22
- }),
23
- /* @__PURE__ */ jsxs("p", {
24
- className: "text-muted-foreground text-sm mb-6",
25
- children: [
26
- "Each card configures one LLM provider end to end: credentials (encrypted in the",
27
- " ",
28
- /* @__PURE__ */ jsx("code", {
29
- className: "font-mono",
30
- children: "secrets"
31
- }),
32
- " table), URLs and IDs (plaintext in the",
33
- " ",
34
- /* @__PURE__ */ jsx("code", {
35
- className: "font-mono",
36
- children: "config"
37
- }),
38
- " table), and the curated model list that powers profile / agent dropdowns."
39
- ]
40
- }),
41
- providers.map((p) => /* @__PURE__ */ jsx(ProviderCard, {
11
+ return /* @__PURE__ */ jsxs(ConfigPage, {
12
+ active: "providers",
13
+ title: "Providers",
14
+ description: /* @__PURE__ */ jsx(Fragment, { children: "Configure credentials, endpoints, and the curated model lists used by agent templates and running agents. Secrets are encrypted; URLs and IDs remain inspectable configuration." }),
15
+ children: [!setupComplete && /* @__PURE__ */ jsx(SetupBlockerBanner, {
16
+ providers,
17
+ openaiCodex
18
+ }), /* @__PURE__ */ jsx("div", {
19
+ className: "space-y-3",
20
+ children: providers.map((p) => /* @__PURE__ */ jsx(ProviderCard, {
42
21
  p,
43
22
  openaiCodexStatus: p.id === "openai-codex" ? openaiCodex : void 0
44
23
  }, p.id))
45
- ]
24
+ })]
46
25
  });
47
26
  }
48
27
  function SetupBlockerBanner({ providers, openaiCodex }) {
@@ -54,14 +33,14 @@ function SetupBlockerBanner({ providers, openaiCodex }) {
54
33
  }
55
34
  const enabledCount = providers.filter((p) => p.enabled).length;
56
35
  return /* @__PURE__ */ jsxs("div", {
57
- className: "rounded-md border-2 border-amber-400 bg-amber-50 px-4 py-3 mb-4 text-sm",
36
+ className: "rounded-md border-2 border-warning/25 bg-warning/10 px-4 py-3 text-sm",
58
37
  children: [
59
38
  /* @__PURE__ */ jsx("div", {
60
- className: "font-semibold text-amber-900 mb-1",
39
+ className: "font-semibold text-warning mb-1",
61
40
  children: "First-run setup is not complete"
62
41
  }),
63
42
  /* @__PURE__ */ jsxs("p", {
64
- className: "text-amber-900 mb-2",
43
+ className: "text-warning mb-2",
65
44
  children: [
66
45
  "The rest of the app stays on the Welcome screen until at least one provider is",
67
46
  " ",
@@ -72,10 +51,10 @@ function SetupBlockerBanner({ providers, openaiCodex }) {
72
51
  ]
73
52
  }),
74
53
  issues.length > 0 ? /* @__PURE__ */ jsx("ul", {
75
- className: "list-disc pl-5 text-amber-900 space-y-0.5",
54
+ className: "list-disc pl-5 text-warning space-y-0.5",
76
55
  children: issues.map((i) => /* @__PURE__ */ jsx("li", { children: i }, i))
77
56
  }) : enabledCount === 0 ? /* @__PURE__ */ jsx("p", {
78
- className: "text-amber-900",
57
+ className: "text-warning",
79
58
  children: "No providers are enabled yet — pick one below, flip the toggle on, set credentials, and save at least one model name."
80
59
  }) : null
81
60
  ]
@@ -124,9 +103,9 @@ function ProviderCard({ p, openaiCodexStatus }) {
124
103
  }
125
104
  }
126
105
  return /* @__PURE__ */ jsxs("section", {
127
- className: "rounded-lg border bg-card mb-3 overflow-hidden",
106
+ className: "overflow-hidden rounded-lg border bg-card",
128
107
  children: [/* @__PURE__ */ jsxs("header", {
129
- className: "flex items-center gap-3 px-4 py-3",
108
+ className: "flex flex-wrap items-center gap-3 px-4 py-3",
130
109
  children: [
131
110
  /* @__PURE__ */ jsx("span", {
132
111
  className: "font-mono font-semibold",
@@ -144,12 +123,12 @@ function ProviderCard({ p, openaiCodexStatus }) {
144
123
  onChange: (e) => toggle(e.target.checked),
145
124
  className: "size-4"
146
125
  }), /* @__PURE__ */ jsx("span", {
147
- className: enabled ? "text-emerald-700" : "text-muted-foreground",
126
+ className: enabled ? "text-success" : "text-muted-foreground",
148
127
  children: enabled ? "enabled" : "disabled"
149
128
  })]
150
129
  }),
151
130
  /* @__PURE__ */ jsxs("span", {
152
- className: "ml-auto text-xs text-muted-foreground",
131
+ className: "w-full text-xs text-muted-foreground sm:ml-auto sm:w-auto",
153
132
  children: [
154
133
  p.curated.length > 0 && /* @__PURE__ */ jsxs("span", { children: [p.curated.length, " curated"] }),
155
134
  p.catalog.length > 0 && /* @__PURE__ */ jsxs("span", { children: [
@@ -186,7 +165,7 @@ function ProviderCard({ p, openaiCodexStatus }) {
186
165
  children: "curated models (one per line)"
187
166
  }),
188
167
  p.curated.length === 0 && /* @__PURE__ */ jsxs("p", {
189
- className: "mb-2 text-xs font-medium text-amber-700",
168
+ className: "mb-2 text-xs font-medium text-warning",
190
169
  children: [
191
170
  "First-run setup needs at least one model name here — type one (e.g.",
192
171
  " ",
@@ -236,7 +215,7 @@ function ProviderCard({ p, openaiCodexStatus }) {
236
215
  onPick: (name) => setModels((m) => m.includes(name) ? m : `${m}\n${name}`.trim())
237
216
  })] }),
238
217
  p.live?.error && /* @__PURE__ */ jsxs("p", {
239
- className: "text-xs text-rose-700 mt-2",
218
+ className: "text-xs text-danger mt-2",
240
219
  children: ["could not fetch: ", p.live.error]
241
220
  })
242
221
  ]
@@ -245,8 +224,8 @@ function ProviderCard({ p, openaiCodexStatus }) {
245
224
  }
246
225
  function exampleModelFor(providerId) {
247
226
  switch (providerId) {
248
- case "openai-codex": return "gpt-5.3-codex-spark";
249
- case "openai": return "gpt-5.5";
227
+ case "openai-codex": return "gpt-5.6-luna";
228
+ case "openai": return "gpt-5.6-luna";
250
229
  case "anthropic": return "claude-opus-4-8";
251
230
  case "google": return "gemini-3-pro-preview";
252
231
  case "google-vertex": return "gemini-3.1-pro-preview";
@@ -278,7 +257,7 @@ function exampleModelFor(providerId) {
278
257
  case "opencode": return "claude-opus-4-8";
279
258
  case "opencode-go": return "kimi-k2.7-code";
280
259
  case "zai-coding-cn": return "glm-5.2";
281
- case "azure-openai": return "gpt-5.5";
260
+ case "azure-openai": return "gpt-5.6-luna";
282
261
  case "bedrock": return "anthropic.claude-opus-4-8";
283
262
  case "ollama": return "llama3.3";
284
263
  case "lmstudio": return "qwen3-coder-30b";
@@ -335,7 +314,7 @@ function OpenAICodexCard({ status }) {
335
314
  className: "flex flex-wrap gap-2 items-center mb-2",
336
315
  children: [
337
316
  /* @__PURE__ */ jsx("span", {
338
- className: "rounded-full bg-emerald-100 text-emerald-800 px-2 py-0.5 text-xs font-semibold uppercase",
317
+ className: "rounded-full bg-success/10 text-success px-2 py-0.5 text-xs font-semibold uppercase",
339
318
  children: "connected"
340
319
  }),
341
320
  status.accountId && /* @__PURE__ */ jsxs("span", {
@@ -358,7 +337,7 @@ function OpenAICodexCard({ status }) {
358
337
  type: "button",
359
338
  onClick: disconnect,
360
339
  disabled: busy,
361
- className: "rounded-md border px-3 py-1.5 text-sm text-rose-700 hover:bg-rose-50 disabled:opacity-50",
340
+ className: "rounded-md border px-3 py-1.5 text-sm text-danger hover:bg-danger/10 disabled:opacity-50",
362
341
  children: "disconnect"
363
342
  })] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("p", {
364
343
  className: "text-xs text-muted-foreground mb-2",
@@ -382,7 +361,7 @@ function OpenAICodexCard({ status }) {
382
361
  className: "rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground disabled:opacity-50",
383
362
  children: busy ? "opening browser…" : "Connect ChatGPT →"
384
363
  })] }), err && /* @__PURE__ */ jsx("p", {
385
- className: "text-sm text-rose-700 mt-2",
364
+ className: "text-sm text-danger mt-2",
386
365
  children: err
387
366
  })]
388
367
  });
@@ -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/config/index.tsx
5
- var $$splitComponentImporter = () => import("./config-CdVjqjin.js");
5
+ var $$splitComponentImporter = () => import("./config-D2LAsud2.js");
6
6
  var fetchProvidersData = createServerFn({ method: "GET" }).handler(createSsrRpc("b18a227687dba45b99ea5a2ac7a5bf8efcd9bc54387bc279cd87510fd2f83f7e"));
7
7
  var Route = createFileRoute("/config/")({
8
8
  loader: () => fetchProvidersData(),
@@ -0,0 +1,12 @@
1
+ import { t as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
3
+ import { n as daemonClient } from "./daemon-client-2NRMzlTr.js";
4
+ //#region src/routes/teams/$id/context.tsx?tss-serverfn-split
5
+ var fetchContext_createServerFn_handler = createServerRpc({
6
+ id: "b859e1340a80871c50b0d3e60bd3f3b48fe3c66b083f8ff9d5b2981720d36a81",
7
+ name: "fetchContext",
8
+ filename: "src/routes/teams/$id/context.tsx"
9
+ }, (opts) => fetchContext.__executeServer(opts));
10
+ var fetchContext = createServerFn({ method: "POST" }).inputValidator((data) => data).handler(fetchContext_createServerFn_handler, ({ data }) => daemonClient().get(`/api/teams/${encodeURIComponent(data.id)}`));
11
+ //#endregion
12
+ export { fetchContext_createServerFn_handler };
@@ -0,0 +1,12 @@
1
+ import { t as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
3
+ import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
+ //#region src/routes/teams/$id/context.tsx
5
+ var $$splitComponentImporter = () => import("./context-DrkrIWun.js");
6
+ var fetchContext = createServerFn({ method: "POST" }).inputValidator((data) => data).handler(createSsrRpc("b859e1340a80871c50b0d3e60bd3f3b48fe3c66b083f8ff9d5b2981720d36a81"));
7
+ var Route = createFileRoute("/teams/$id/context")({
8
+ loader: ({ params }) => fetchContext({ data: params }),
9
+ component: lazyRouteComponent($$splitComponentImporter, "component")
10
+ });
11
+ //#endregion
12
+ export { Route as t };
@@ -0,0 +1,47 @@
1
+ import { t as Route } from "./context-BXGo5Vfi.js";
2
+ import { r as PageShell } from "./Page-LENulSXY.js";
3
+ import { t as TeamTabs } from "./TeamTabs-zZzbP1t_.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/routes/teams/$id/context.tsx?tsr-split=component
6
+ function ContextPage() {
7
+ const team = Route.useLoaderData();
8
+ return /* @__PURE__ */ jsxs(PageShell, { children: [
9
+ /* @__PURE__ */ jsx("h1", { children: "Team context" }),
10
+ /* @__PURE__ */ jsx("p", {
11
+ className: "muted",
12
+ children: "Workspace, operator context, and integrations owned by this Team."
13
+ }),
14
+ /* @__PURE__ */ jsx(TeamTabs, { teamId: team.id }),
15
+ /* @__PURE__ */ jsxs("section", {
16
+ className: "card",
17
+ children: [/* @__PURE__ */ jsxs("dl", {
18
+ className: "grid gap-4 sm:grid-cols-2",
19
+ children: [
20
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
21
+ className: "muted",
22
+ children: "workspace path"
23
+ }), /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("code", { children: team.path }) })] }),
24
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
25
+ className: "muted",
26
+ children: "Telegram topic format"
27
+ }), /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("code", { children: team.telegramTopicNameFormat ?? "built-in naming" }) })] }),
28
+ /* @__PURE__ */ jsxs("div", {
29
+ className: "sm:col-span-2",
30
+ children: [/* @__PURE__ */ jsx("dt", {
31
+ className: "muted",
32
+ children: "USER.md"
33
+ }), /* @__PURE__ */ jsx("dd", {
34
+ className: "mt-2 whitespace-pre-wrap rounded-md border border-frost bg-ivory p-3 text-sm",
35
+ children: team.userMd || "No operator context configured."
36
+ })]
37
+ })
38
+ ]
39
+ }), /* @__PURE__ */ jsx("p", {
40
+ className: "mt-4 text-sm text-mocha",
41
+ children: "Edit USER.md and Telegram naming from Overview during this transition. This route is the canonical context projection."
42
+ })]
43
+ })
44
+ ] });
45
+ }
46
+ //#endregion
47
+ export { ContextPage as component };
@@ -1,5 +1,5 @@
1
1
  import { n as TSS_SERVER_FUNCTION } from "../server.js";
2
- //#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.15/node_modules/@tanstack/start-server-core/dist/esm/createServerRpc.js
2
+ //#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.17/node_modules/@tanstack/start-server-core/dist/esm/createServerRpc.js
3
3
  var createServerRpc = (serverFnMeta, splitImportFn) => {
4
4
  const url = "/_serverFn/" + serverFnMeta.id;
5
5
  return Object.assign(splitImportFn, {
@@ -1,5 +1,5 @@
1
1
  import { n as TSS_SERVER_FUNCTION, r as getServerFnById } from "../server.js";
2
- //#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.15/node_modules/@tanstack/start-server-core/dist/esm/createSsrRpc.js
2
+ //#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.17/node_modules/@tanstack/start-server-core/dist/esm/createSsrRpc.js
3
3
  var createSsrRpc = (functionId) => {
4
4
  const url = "/_serverFn/" + functionId;
5
5
  const serverFnMeta = { id: functionId };
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.15/node_modules/@tanstack/start-server-core/dist/esm/empty-plugin-adapters.js
1
+ //#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.17/node_modules/@tanstack/start-server-core/dist/esm/empty-plugin-adapters.js
2
2
  var pluginSerializationAdapters = [];
3
3
  var hasPluginAdapters = false;
4
4
  //#endregion
@@ -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/inbox.tsx?tss-serverfn-split
5
5
  var fetchInbox_createServerFn_handler = createServerRpc({
@@ -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, redirect } from "@tanstack/react-router";
4
4
  //#region src/routes/agents/$id/inbox.tsx
5
- var $$splitComponentImporter = () => import("./inbox-DU27iHv_.js");
5
+ var $$splitComponentImporter = () => import("./inbox-CUIyf9MT.js");
6
6
  var fetchInbox = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("2cd8c6ec40e2e2d9518b5f127a518ecd83a2222d85665cc61d5144bcf59ed4fb"));
7
7
  var Route = createFileRoute("/agents/$id/inbox")({
8
8
  validateSearch: (s) => ({