bazilion 0.12.2 → 0.14.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 +2 -2
  2. package/dist/cli.js +795 -240
  3. package/dist/cli.js.map +1 -1
  4. package/dist/daemon.js +4555 -1280
  5. package/dist/daemon.js.map +1 -1
  6. package/dist/migrations/0001_init.sql +21 -0
  7. package/dist/web/client/assets/AgentTabs-BcmmwYJc.js +1 -0
  8. package/dist/web/client/assets/ConfigPage-BCLp-FUC.js +1 -0
  9. package/dist/web/client/assets/ConfirmDialog-CyL9A20V.js +1 -0
  10. package/dist/web/client/assets/FieldRow-D6REbYUa.js +1 -0
  11. package/dist/web/client/assets/Page-NV96O47A.js +1 -0
  12. package/dist/web/client/assets/ProductionTeamPolicyEditor-DBKnOezm.js +7 -0
  13. package/dist/web/client/assets/{ProfileCommunicationEditor-C43HvUe-.js → ProfileCommunicationEditor-4RK2laqO.js} +1 -1
  14. package/dist/web/client/assets/SectionTabs-4kCQXuFY.js +1 -0
  15. package/dist/web/client/assets/TeamTabs-CdtNEqt4.js +1 -0
  16. package/dist/web/client/assets/{TemplatesTabs-6Jd_xQj7.js → TemplatesTabs-CZyss2Y0.js} +1 -1
  17. package/dist/web/client/assets/UnsavedChangesGuard-CEoK-ZcN.js +1 -0
  18. package/dist/web/client/assets/_id-4ZS-w_Aj.js +1 -0
  19. package/dist/web/client/assets/{_id-AOAT0H_5.js → _id-DIqtdQij.js} +1 -1
  20. package/dist/web/client/assets/_id-DbcC2E7F.js +1 -0
  21. package/dist/web/client/assets/_id-f_r5M0p3.js +1 -0
  22. package/dist/web/client/assets/activity-CB9Ufth-.js +1 -0
  23. package/dist/web/client/assets/agents-D-JGXVg9.js +1 -0
  24. package/dist/web/client/assets/agents-DS2XafoA.js +1 -0
  25. package/dist/web/client/assets/approvals-Cke_mrJv.js +1 -0
  26. package/dist/web/client/assets/attention-PYwRM2wC.js +1 -0
  27. package/dist/web/client/assets/chevron-right-BG4OeFRQ.js +1 -0
  28. package/dist/web/client/assets/config-DF9Gqmfa.js +3 -0
  29. package/dist/web/client/assets/dm-sans-latin-400-normal-BwCSEQnW.woff +0 -0
  30. package/dist/web/client/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2 +0 -0
  31. package/dist/web/client/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2 +0 -0
  32. package/dist/web/client/assets/dm-sans-latin-500-normal-Dr3UlScf.woff +0 -0
  33. package/dist/web/client/assets/dm-sans-latin-600-normal-Aqo67rzb.woff2 +0 -0
  34. package/dist/web/client/assets/dm-sans-latin-600-normal-BmdmIIQ2.woff +0 -0
  35. package/dist/web/client/assets/dm-sans-latin-700-normal-CUSSCpQX.woff +0 -0
  36. package/dist/web/client/assets/dm-sans-latin-700-normal-DvUfVpUG.woff2 +0 -0
  37. package/dist/web/client/assets/dm-serif-display-latin-400-normal-C5_t9oOD.woff2 +0 -0
  38. package/dist/web/client/assets/dm-serif-display-latin-400-normal-_kVFYEpx.woff +0 -0
  39. package/dist/web/client/assets/{inbox-Bn1GbUsJ.js → inbox-DC_HdOfI.js} +1 -1
  40. package/dist/web/client/assets/index-Cofc7zhl.css +1 -0
  41. package/dist/web/client/assets/index-Cp6UHWr2.js +52 -0
  42. package/dist/web/client/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  43. package/dist/web/client/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  44. package/dist/web/client/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  45. package/dist/web/client/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  46. package/dist/web/client/assets/learning-BfrQ4YZY.js +1 -0
  47. package/dist/web/client/assets/login-D4n3AcBR.js +1 -0
  48. package/dist/web/client/assets/mcp-CnjQc_JJ.js +1 -0
  49. package/dist/web/client/assets/members-wxsVTJdW.js +1 -0
  50. package/dist/web/client/assets/memory-Du60O3pE.js +1 -0
  51. package/dist/web/client/assets/{policy-DaijITy7.js → policy-BOfnkJsL.js} +1 -1
  52. package/dist/web/client/assets/{preload-helper-mNuBjNXU.js → preload-helper-bztXdkDj.js} +1 -1
  53. package/dist/web/client/assets/routes-B9CuhzUW.js +1 -0
  54. package/dist/web/client/assets/services-DyvqJqM2.js +1 -0
  55. package/dist/web/client/assets/skills-DQo7ioW7.js +1 -0
  56. package/dist/web/client/assets/styles-B5vcgXln.css +2 -0
  57. package/dist/web/client/assets/{teams-D92R9Pb7.js → teams-DPggy97H.js} +1 -1
  58. package/dist/web/client/assets/teams-DdawcfNR.js +1 -0
  59. package/dist/web/client/assets/telegram-DcTeDpP5.js +1 -0
  60. package/dist/web/client/assets/tokens-CIEKwZXc.js +1 -0
  61. package/dist/web/client/assets/triggers-Bc2RrUPm.js +1 -0
  62. package/dist/web/client/assets/utils-B6KiDbIe.js +1 -0
  63. package/dist/web/client/assets/welcome-DlhNXUIa.js +1 -0
  64. package/dist/web/client/assets/wire-constants-BzdHSc6A.js +74 -0
  65. package/dist/web/client/assets/x-DAXGIe_Q.js +1 -0
  66. package/dist/web/server/assets/{AgentTabs-aXdsiiMp.js → AgentTabs-Dq8hDM2Q.js} +9 -2
  67. package/dist/web/server/assets/{ChatPane-Ba5wTsVk.js → ChatPane-CgSe7tsy.js} +81 -43
  68. package/dist/web/server/assets/{ConfigPage-BKlh5vOU.js → ConfigPage-CiQ-gxmJ.js} +3 -2
  69. package/dist/web/server/assets/ConfirmDialog-C-MPYYSU.js +99 -0
  70. package/dist/web/server/assets/FieldRow-DCOF07kl.js +160 -0
  71. package/dist/web/server/assets/{Page-LENulSXY.js → Page-Bz-ydB8j.js} +4 -10
  72. package/dist/web/server/assets/{ProductionTeamPolicyEditor-Y4mzFFvR.js → ProductionTeamPolicyEditor-DQSdP7Yx.js} +140 -123
  73. package/dist/web/server/assets/{SectionTabs-BJTPr5nU.js → SectionTabs-B2Yw81XN.js} +2 -2
  74. package/dist/web/server/assets/{Sidebar-DsRVCszF.js → Sidebar-DKyk7oIo.js} +563 -283
  75. package/dist/web/server/assets/{TeamTabs-zZzbP1t_.js → TeamTabs-Co3n2exj.js} +2 -6
  76. package/dist/web/server/assets/{TemplatesTabs-CcRxZhJe.js → TemplatesTabs-B0fA361R.js} +1 -1
  77. package/dist/web/server/assets/UnsavedChangesGuard-CiStXyBI.js +40 -0
  78. package/dist/web/server/assets/{_id-Dj1yZ3zJ.js → _id-BAA9KJBU.js} +4 -4
  79. package/dist/web/server/assets/{_id-LrvXU4Nr.js → _id-BM5m2FLT.js} +4 -4
  80. package/dist/web/server/assets/{_id-CwyGjJeP.js → _id-BYKpT2Tu.js} +4 -5
  81. package/dist/web/server/assets/{_id-BHYLL8M-.js → _id-BeKhPKw3.js} +350 -185
  82. package/dist/web/server/assets/{_id-C3HY4lWg.js → _id-BqWTB8Wl.js} +188 -86
  83. package/dist/web/server/assets/{_id-DinTp_7X.js → _id-BwvCtzlD.js} +3 -3
  84. package/dist/web/server/assets/{_id-D27T85mU.js → _id-DYU6uIBx.js} +4 -5
  85. package/dist/web/server/assets/{_id-IzadFZV9.js → _id-DvlDkk04.js} +4 -4
  86. package/dist/web/server/assets/{_id-BhOB8Umi.js → _id-DxCnEFpm.js} +4 -4
  87. package/dist/web/server/assets/{_id-tB47Vsfp.js → _id-HMy7jM3P.js} +3 -3
  88. package/dist/web/server/assets/{_id-D3Ap7zZA.js → _id-ndxFHx0t.js} +75 -71
  89. package/dist/web/server/assets/{_id-FcHdSocl.js → _id-sNu5aXZt.js} +5 -4
  90. package/dist/web/server/assets/{_tanstack-start-manifest_v-BGDBdnUs.js → _tanstack-start-manifest_v-C-OiOZeM.js} +118 -94
  91. package/dist/web/server/assets/{activity-DohitgwW.js → activity-9VP6QDTH.js} +3 -3
  92. package/dist/web/server/assets/{activity-BCI4mfNS.js → activity-BWv1goK6.js} +3 -3
  93. package/dist/web/server/assets/{activity-D9SMqBhy.js → activity-LjpblbDL.js} +3 -3
  94. package/dist/web/server/assets/{agents-C9xlWK0Z.js → agents-BDFGrU3o.js} +4 -4
  95. package/dist/web/server/assets/{agents-BY74v7fM.js → agents-BJAv919x.js} +3 -3
  96. package/dist/web/server/assets/{agents-BvttypqB.js → agents-CJk4pxKu.js} +3 -3
  97. package/dist/web/server/assets/{agents-CgZMHj80.js → agents-CYw1xHoY.js} +138 -16
  98. package/dist/web/server/assets/{agents-DZuFEj0D.js → agents-DfNKc_Q7.js} +52 -8
  99. package/dist/web/server/assets/{agents-BPKOshR5.js → agents-DjyQk94u.js} +4 -4
  100. package/dist/web/server/assets/{approvals-CWcFHlor.js → approvals-7JOoBchn.js} +3 -3
  101. package/dist/web/server/assets/{approvals-BGU-XGIO.js → approvals-BYi84gwl.js} +3 -3
  102. package/dist/web/server/assets/{approvals-DCaVw1Mz.js → approvals-Bz123liE.js} +59 -21
  103. package/dist/web/server/assets/{attention-BxkTf337.js → attention-B35JvhOL.js} +3 -3
  104. package/dist/web/server/assets/{attention-w21GQIGH.js → attention-C1pPWSXw.js} +3 -3
  105. package/dist/web/server/assets/{attention-CM-Ks1N9.js → attention-UhqPK_Ro.js} +3 -3
  106. package/dist/web/server/assets/{auth-byfSx6Ja.js → auth-7BHTH-KS.js} +5 -5
  107. package/dist/web/server/assets/{config-BDCJdtj2.js → config-BMiajTZP.js} +10 -5
  108. package/dist/web/server/assets/{config-1w2GiJUn.js → config-BlMkHStx.js} +3 -3
  109. package/dist/web/server/assets/config-ExacOzHX.js +958 -0
  110. package/dist/web/server/assets/{createServerRpc-pU-IQV2Y.js → createServerRpc-B7Yr1K8i.js} +1 -1
  111. package/dist/web/server/assets/{createSsrRpc-DFsIAfFd.js → createSsrRpc-6LHNEsSK.js} +1 -1
  112. package/dist/web/server/assets/{daemon-client-2NRMzlTr.js → daemon-client-CI5NHwNC.js} +16 -4
  113. package/dist/web/server/assets/{inbox-CzlKT9Wg.js → inbox-Dv55rGYq.js} +4 -4
  114. package/dist/web/server/assets/{inbox-BLUzA5sQ.js → inbox-RweGCV3D.js} +3 -3
  115. package/dist/web/server/assets/{inbox-ZvDNAjaM.js → inbox-cu3jLzNP.js} +4 -4
  116. package/dist/web/server/assets/{learning-B7PBkvER.js → learning-BaKM6qaw.js} +4 -4
  117. package/dist/web/server/assets/{learning-8zav4pIT.js → learning-C2upa1CE.js} +4 -4
  118. package/dist/web/server/assets/{learning-Cq7K2heb.js → learning-CbtNlqYo.js} +76 -23
  119. package/dist/web/server/assets/{login-CmWvxfTK.js → login-BNj3U6ok.js} +22 -12
  120. package/dist/web/server/assets/{login-Bx5LEyGP.js → login-Be8eP4Jp.js} +2 -2
  121. package/dist/web/server/assets/{mcp-DIWTogHM.js → mcp-B0goWO8Q.js} +3 -3
  122. package/dist/web/server/assets/{mcp-2pwT9HU8.js → mcp-BvnvlVFd.js} +3 -3
  123. package/dist/web/server/assets/mcp-CiBs8unU.js +332 -0
  124. package/dist/web/server/assets/members-BP3UTqu1.js +12 -0
  125. package/dist/web/server/assets/members-DHYTVgwb.js +100 -0
  126. package/dist/web/server/assets/members-DiYtr-zm.js +12 -0
  127. package/dist/web/server/assets/{memory-Dngc13Nw.js → memory-BqV-Afy1.js} +4 -4
  128. package/dist/web/server/assets/{memory-a8Kz57Kh.js → memory-CkXUgf5s.js} +150 -48
  129. package/dist/web/server/assets/{memory-pZ4pZT7p.js → memory-DTFEmfF3.js} +4 -4
  130. package/dist/web/server/assets/{policy-Bb-vEgqg.js → policy-18fdTFO4.js} +3 -3
  131. package/dist/web/server/assets/{policy-C30AeFIb.js → policy-BddK4xom.js} +3 -3
  132. package/dist/web/server/assets/{policy-BcGELcc9.js → policy-Bvvav8fh.js} +4 -4
  133. package/dist/web/server/assets/public-origin-xV0lm0Ty.js +25 -0
  134. package/dist/web/server/assets/router-pjH2t8Rl.js +813 -0
  135. package/dist/web/server/assets/{routes-B6cMLIPk.js → routes-BgHisAxH.js} +22 -5
  136. package/dist/web/server/assets/{routes-BrA-U_Hm.js → routes-COtkyZG1.js} +5 -5
  137. package/dist/web/server/assets/{routes-C19CMLZt.js → routes-DAU2g7Uz.js} +4 -4
  138. package/dist/web/server/assets/services-ClyGBU7W.js +83 -0
  139. package/dist/web/server/assets/{services-C4szdhPx.js → services-DgoU1udp.js} +3 -3
  140. package/dist/web/server/assets/{services-wG8I06oS.js → services-DozuJtzX.js} +3 -3
  141. package/dist/web/server/assets/{skills-BZdqiDig.js → skills-CYih9TJw.js} +47 -6
  142. package/dist/web/server/assets/{skills-a9VSWHWq.js → skills-DfGSJTCB.js} +3 -3
  143. package/dist/web/server/assets/{skills-C-UgkuCW.js → skills-Dw3cI3si.js} +3 -3
  144. package/dist/web/server/assets/start-D4Wq9iTa.js +70 -0
  145. package/dist/web/server/assets/{teams-OIkHuxy1.js → teams-BJuoNOTB.js} +3 -3
  146. package/dist/web/server/assets/{teams-CpQ0YgWf.js → teams-DF3RViAg.js} +3 -3
  147. package/dist/web/server/assets/{teams-DEpQR2QA.js → teams-DFnuc660.js} +3 -3
  148. package/dist/web/server/assets/{teams-DqfrEoH6.js → teams-DPnAX4wD.js} +4 -4
  149. package/dist/web/server/assets/{teams-jBtvnk59.js → teams-TV6nbEN_.js} +101 -10
  150. package/dist/web/server/assets/{teams-MjqgsmC3.js → teams-be05ci17.js} +3 -3
  151. package/dist/web/server/assets/{telegram-DNgCWebD.js → telegram-1AWL6lFw.js} +3 -3
  152. package/dist/web/server/assets/{telegram-XwyKSEtj.js → telegram-DbOFpTFm.js} +3 -3
  153. package/dist/web/server/assets/{telegram-CBF8SJzB.js → telegram-Dj4Wwhd6.js} +262 -43
  154. package/dist/web/server/assets/tokens-DDwtO15P.js +359 -0
  155. package/dist/web/server/assets/tokens-DjM8GsgS.js +19 -0
  156. package/dist/web/server/assets/{tokens-BnwFbV7T.js → tokens-_2hptHP6.js} +4 -4
  157. package/dist/web/server/assets/{triggers-BZPl5CHs.js → triggers-BvjYNmmY.js} +4 -4
  158. package/dist/web/server/assets/triggers-CHk9O3rU.js +367 -0
  159. package/dist/web/server/assets/{triggers-D79NoSXk.js → triggers-Nezfw-Bd.js} +4 -4
  160. package/dist/web/server/assets/utils-C_uf36nf.js +8 -0
  161. package/dist/web/server/assets/{welcome-DDB11L5j.js → welcome-B8nchXdF.js} +9 -8
  162. package/dist/web/server/server.js +29 -33
  163. package/dist/web-server.js +4 -0
  164. package/dist/web-server.js.map +1 -1
  165. package/dist/worker.js +1744 -362
  166. package/dist/worker.js.map +1 -1
  167. package/package.json +7 -6
  168. package/dist/web/client/assets/AgentTabs-R6gSjIj3.js +0 -1
  169. package/dist/web/client/assets/ConfigPage-BCwfgyjD.js +0 -1
  170. package/dist/web/client/assets/FieldRow-avAFLgYW.js +0 -1
  171. package/dist/web/client/assets/Page-CwNuDhWz.js +0 -1
  172. package/dist/web/client/assets/ProductionTeamPolicyEditor-CsWpTsy6.js +0 -7
  173. package/dist/web/client/assets/SectionTabs-DZzy01az.js +0 -1
  174. package/dist/web/client/assets/TeamTabs-DvqWieCq.js +0 -1
  175. package/dist/web/client/assets/_id-BUuz7Drv.js +0 -1
  176. package/dist/web/client/assets/_id-BegmVRmT.js +0 -1
  177. package/dist/web/client/assets/_id-BrA4Crh_.js +0 -1
  178. package/dist/web/client/assets/activity-n0Fw9_w3.js +0 -1
  179. package/dist/web/client/assets/agents-B33VQtbl.js +0 -1
  180. package/dist/web/client/assets/agents-C50pdxp7.js +0 -1
  181. package/dist/web/client/assets/approvals-DVW0hX8h.js +0 -1
  182. package/dist/web/client/assets/attention-B2490jcN.js +0 -1
  183. package/dist/web/client/assets/chevron-down-B0aNNOyn.js +0 -1
  184. package/dist/web/client/assets/config-CMMxxeX2.js +0 -3
  185. package/dist/web/client/assets/context-DcFzsfZ3.js +0 -1
  186. package/dist/web/client/assets/index-3nrK5iFr.js +0 -12
  187. package/dist/web/client/assets/learning-BUX1MFu2.js +0 -1
  188. package/dist/web/client/assets/login-CMWpGDKv.js +0 -1
  189. package/dist/web/client/assets/mcp-lZV08dqc.js +0 -1
  190. package/dist/web/client/assets/members-DAeaY2Cy.js +0 -1
  191. package/dist/web/client/assets/memory-HmMWxxdF.js +0 -1
  192. package/dist/web/client/assets/plus-CPzRJg1V.js +0 -1
  193. package/dist/web/client/assets/routes-BNk270AM.js +0 -1
  194. package/dist/web/client/assets/services-DtrpJrdo.js +0 -1
  195. package/dist/web/client/assets/skills-Cv93A3P3.js +0 -1
  196. package/dist/web/client/assets/styles-DMltY3su.css +0 -2
  197. package/dist/web/client/assets/teams-CCFnSNKi.js +0 -1
  198. package/dist/web/client/assets/telegram-BF1vdgDB.js +0 -1
  199. package/dist/web/client/assets/tokens-BXj6hWW-.js +0 -1
  200. package/dist/web/client/assets/triggers-NT24i4hZ.js +0 -1
  201. package/dist/web/client/assets/welcome-D0cy68eZ.js +0 -1
  202. package/dist/web/client/assets/wire-constants-BhVKOCQa.js +0 -74
  203. package/dist/web/server/assets/FieldRow-B4eTegH9.js +0 -94
  204. package/dist/web/server/assets/config-BmixCpz-.js +0 -372
  205. package/dist/web/server/assets/context-B-XDf6Ym.js +0 -12
  206. package/dist/web/server/assets/context-BXGo5Vfi.js +0 -12
  207. package/dist/web/server/assets/context-DrkrIWun.js +0 -47
  208. package/dist/web/server/assets/mcp-BJjLIdP0.js +0 -261
  209. package/dist/web/server/assets/members-CCv17cjQ.js +0 -46
  210. package/dist/web/server/assets/members-CW5aBe81.js +0 -12
  211. package/dist/web/server/assets/members-VdPwD6CE.js +0 -12
  212. package/dist/web/server/assets/router-CIVjTgNp.js +0 -537
  213. package/dist/web/server/assets/services-B9yBWDX0.js +0 -79
  214. package/dist/web/server/assets/start-WH8WzTL_.js +0 -4
  215. package/dist/web/server/assets/tokens-DPDMSN5O.js +0 -12
  216. package/dist/web/server/assets/tokens-yyTSfBSN.js +0 -186
  217. package/dist/web/server/assets/triggers-CSNNzRIi.js +0 -216
@@ -1,7 +1,7 @@
1
- import { t as Route } from "./activity-D9SMqBhy.js";
2
- import { r as PageShell } from "./Page-LENulSXY.js";
1
+ import { t as Route } from "./activity-LjpblbDL.js";
2
+ import { r as PageShell } from "./Page-Bz-ydB8j.js";
3
3
  import { t as Button } from "./Button-Dsnw22OF.js";
4
- import { t as TeamTabs } from "./TeamTabs-zZzbP1t_.js";
4
+ import { t as TeamTabs } from "./TeamTabs-Co3n2exj.js";
5
5
  import { useState } from "react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { ChevronDown } from "lucide-react";
@@ -1,9 +1,9 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/teams/$id/activity.tsx
5
5
  var $$splitErrorComponentImporter = () => import("./activity-CGCf8BQf.js");
6
- var $$splitComponentImporter = () => import("./activity-BCI4mfNS.js");
6
+ var $$splitComponentImporter = () => import("./activity-BWv1goK6.js");
7
7
  var fetchActivity = createServerFn({ method: "POST" }).validator((data) => data).handler(createSsrRpc("5cdb81f2b930818ee9ab1d626ac99828ea652ff447fcbfc21b24dea415f8b39e"));
8
8
  var Route = createFileRoute("/teams/$id/activity")({
9
9
  loader: ({ params }) => fetchActivity({ data: params }),
@@ -1,9 +1,9 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/agents/index.tsx
5
- var $$splitComponentImporter = () => import("./agents-CgZMHj80.js");
6
- var fetchAgents = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("f715bab0037380aa3db7e237e7cf1e74168c363f48a960bb1ddfa5560de3a74e"));
5
+ var $$splitComponentImporter = () => import("./agents-CYw1xHoY.js");
6
+ var fetchAgents = createServerFn({ method: "POST" }).validator((d) => d).handler(createSsrRpc("f715bab0037380aa3db7e237e7cf1e74168c363f48a960bb1ddfa5560de3a74e"));
7
7
  var Route = createFileRoute("/agents/")({
8
8
  validateSearch: (s) => ({ all: s.all === "1" ? "1" : void 0 }),
9
9
  loaderDeps: ({ search }) => ({ all: search.all === "1" }),
@@ -1,6 +1,6 @@
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";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
3
+ import { n as daemonClient } from "./daemon-client-CI5NHwNC.js";
4
4
  //#region src/routes/templates/agents/index.tsx?tss-serverfn-split
5
5
  var fetchProfiles_createServerFn_handler = createServerRpc({
6
6
  id: "bc31355f2be9889a616d03c35062d483ea77c3f967af9432d721626a81078ef3",
@@ -1,8 +1,8 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/templates/agents/index.tsx
5
- var $$splitComponentImporter = () => import("./agents-DZuFEj0D.js");
5
+ var $$splitComponentImporter = () => import("./agents-DfNKc_Q7.js");
6
6
  var fetchProfiles = createServerFn({ method: "GET" }).handler(createSsrRpc("bc31355f2be9889a616d03c35062d483ea77c3f967af9432d721626a81078ef3"));
7
7
  var Route = createFileRoute("/templates/agents/")({
8
8
  loader: () => fetchProfiles(),
@@ -1,33 +1,51 @@
1
- import { t as Route } from "./agents-C9xlWK0Z.js";
2
- import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-LENulSXY.js";
1
+ import { t as Route } from "./agents-BDFGrU3o.js";
2
+ import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-Bz-ydB8j.js";
3
3
  import { t as AgentAvatar } from "./AgentAvatar-8gTAy_tP.js";
4
4
  import { t as Button } from "./Button-Dsnw22OF.js";
5
+ import { t as ConfirmDialog } from "./ConfirmDialog-C-MPYYSU.js";
5
6
  import { useState } from "react";
6
7
  import { useRouter } from "@tanstack/react-router";
7
- import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
9
  //#region src/routes/agents/index.tsx?tsr-split=component
9
10
  function AgentsPage() {
10
11
  const { agents, profiles, teams, modelGroups } = Route.useLoaderData();
11
12
  const { all } = Route.useSearch();
12
13
  const showAll = all === "1";
13
14
  const router = useRouter();
15
+ const [pendingAction, setPendingAction] = useState(null);
16
+ const [actionError, setActionError] = useState(null);
14
17
  async function archive(id) {
15
- if (!confirm("archive this agent? (reversible)")) return;
16
- await fetch(`/api/agents/${id}/archive`, { method: "POST" });
18
+ const response = await fetch(`/api/agents/${encodeURIComponent(id)}/archive`, { method: "POST" });
19
+ if (!response.ok && response.status !== 204) {
20
+ const body = await response.json().catch(() => null);
21
+ throw new Error(body?.error ?? `Could not archive agent (${response.status})`);
22
+ }
17
23
  await router.invalidate();
18
24
  }
19
25
  async function unarchive(id) {
20
- await fetch(`/api/agents/${id}/unarchive`, { method: "POST" });
21
- await router.invalidate();
26
+ setActionError(null);
27
+ try {
28
+ const response = await fetch(`/api/agents/${encodeURIComponent(id)}/unarchive`, { method: "POST" });
29
+ if (!response.ok && response.status !== 204) {
30
+ const body = await response.json().catch(() => null);
31
+ throw new Error(body?.error ?? `Could not restore agent (${response.status})`);
32
+ }
33
+ await router.invalidate();
34
+ } catch (error) {
35
+ setActionError(error instanceof Error ? error.message : String(error));
36
+ }
22
37
  }
23
38
  async function del(id) {
24
- if (!confirm("permanently delete this agent and all its data?")) return;
25
39
  const agent = agents.find((candidate) => candidate.id === id);
26
- if (!agent) return;
40
+ if (!agent) throw new Error("The selected agent no longer exists.");
27
41
  const policyResponse = await fetch(`/api/teams/${encodeURIComponent(agent.teamId)}/policy`);
28
- if (!policyResponse.ok) return;
42
+ if (!policyResponse.ok) throw new Error("The current Team policy is unavailable. Nothing was deleted.");
29
43
  const policy = await policyResponse.json();
30
- await fetch(`/api/agents/${encodeURIComponent(id)}?expectedTeamRevision=${policy.teamPolicy.revision}`, { method: "DELETE" });
44
+ const response = await fetch(`/api/agents/${encodeURIComponent(id)}?expectedTeamRevision=${policy.teamPolicy.revision}`, { method: "DELETE" });
45
+ if (!response.ok && response.status !== 204) {
46
+ const body = await response.json().catch(() => null);
47
+ throw new Error(body?.error ?? `Could not delete agent (${response.status})`);
48
+ }
31
49
  await router.invalidate();
32
50
  }
33
51
  return /* @__PURE__ */ jsxs(PageShell, {
@@ -49,14 +67,19 @@ function AgentsPage() {
49
67
  modelGroups,
50
68
  onSpawned: router.invalidate
51
69
  }),
70
+ actionError && /* @__PURE__ */ jsx("p", {
71
+ role: "alert",
72
+ className: "err",
73
+ children: actionError
74
+ }),
52
75
  /* @__PURE__ */ jsx(SectionCard, {
53
76
  title: showAll ? "All agents" : "Current agents",
54
77
  description: showAll ? "Active and archived agents are shown together." : "Archived agents stay hidden until you choose to show them.",
55
78
  children: agents.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
56
79
  title: showAll ? "No agents yet" : "No current agents",
57
80
  description: "Spawn an agent above to give a team its first working member."
58
- }) : /* @__PURE__ */ jsx("div", {
59
- className: "overflow-x-auto",
81
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
82
+ className: "hidden overflow-x-auto md:block",
60
83
  children: /* @__PURE__ */ jsxs("table", {
61
84
  className: "min-w-[760px]",
62
85
  children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
@@ -96,7 +119,10 @@ function AgentsPage() {
96
119
  className: "flex justify-end gap-1.5",
97
120
  children: [a.status !== "archived" ? /* @__PURE__ */ jsx(Button, {
98
121
  variant: "ghost",
99
- onClick: () => archive(a.id),
122
+ onClick: () => setPendingAction({
123
+ kind: "archive",
124
+ agent: a
125
+ }),
100
126
  children: "Archive"
101
127
  }) : /* @__PURE__ */ jsx(Button, {
102
128
  variant: "ghost",
@@ -104,13 +130,108 @@ function AgentsPage() {
104
130
  children: "Restore"
105
131
  }), /* @__PURE__ */ jsx(Button, {
106
132
  variant: "danger",
107
- onClick: () => del(a.id),
133
+ onClick: () => setPendingAction({
134
+ kind: "delete",
135
+ agent: a
136
+ }),
108
137
  children: "Delete"
109
138
  })]
110
139
  }) })
111
140
  ] }, a.id)) })]
112
141
  })
113
- })
142
+ }), /* @__PURE__ */ jsx("div", {
143
+ className: "grid gap-3 md:hidden",
144
+ children: agents.map((agent) => /* @__PURE__ */ jsxs("article", {
145
+ className: "min-w-0 rounded-xl border border-border bg-muted/20 p-4",
146
+ children: [
147
+ /* @__PURE__ */ jsxs("div", {
148
+ className: "flex min-w-0 items-start gap-3",
149
+ children: [
150
+ /* @__PURE__ */ jsx(AgentAvatar, {
151
+ identity: agent.identity,
152
+ size: 36
153
+ }),
154
+ /* @__PURE__ */ jsxs("div", {
155
+ className: "min-w-0 flex-1",
156
+ children: [/* @__PURE__ */ jsx("a", {
157
+ href: `/agents/${agent.id}`,
158
+ className: "block truncate font-semibold text-foreground",
159
+ children: agent.name
160
+ }), /* @__PURE__ */ jsx("p", {
161
+ className: "mt-0.5 truncate text-xs text-muted-foreground",
162
+ children: agent.identity?.creature || agent.identity?.vibe ? [agent.identity?.creature, agent.identity?.vibe].filter(Boolean).join(" · ") : `Agent template: ${agent.profileId}`
163
+ })]
164
+ }),
165
+ /* @__PURE__ */ jsx(StatusBadge, {
166
+ variant: agent.status === "archived" ? "warning" : "success",
167
+ children: agent.status
168
+ })
169
+ ]
170
+ }),
171
+ /* @__PURE__ */ jsxs("dl", {
172
+ className: "mt-3 grid grid-cols-2 gap-2 text-xs",
173
+ children: [/* @__PURE__ */ jsxs("div", {
174
+ className: "min-w-0 rounded-lg bg-muted p-2",
175
+ children: [/* @__PURE__ */ jsx("dt", {
176
+ className: "font-semibold text-muted-foreground",
177
+ children: "ID"
178
+ }), /* @__PURE__ */ jsxs("dd", {
179
+ className: "mt-0.5 truncate font-mono",
180
+ title: agent.id,
181
+ children: [agent.id.slice(0, 12), "…"]
182
+ })]
183
+ }), /* @__PURE__ */ jsxs("div", {
184
+ className: "min-w-0 rounded-lg bg-muted p-2",
185
+ children: [/* @__PURE__ */ jsx("dt", {
186
+ className: "font-semibold text-muted-foreground",
187
+ children: "Agent template"
188
+ }), /* @__PURE__ */ jsx("dd", {
189
+ className: "mt-0.5 truncate font-mono",
190
+ title: agent.profileId,
191
+ children: agent.profileId
192
+ })]
193
+ })]
194
+ }),
195
+ /* @__PURE__ */ jsxs("div", {
196
+ className: "mt-3 flex flex-wrap gap-2",
197
+ children: [agent.status === "archived" ? /* @__PURE__ */ jsx(Button, {
198
+ variant: "ghost",
199
+ onClick: () => void unarchive(agent.id),
200
+ children: "Restore"
201
+ }) : /* @__PURE__ */ jsx(Button, {
202
+ variant: "ghost",
203
+ onClick: () => setPendingAction({
204
+ kind: "archive",
205
+ agent
206
+ }),
207
+ children: "Archive"
208
+ }), /* @__PURE__ */ jsx(Button, {
209
+ variant: "danger",
210
+ onClick: () => setPendingAction({
211
+ kind: "delete",
212
+ agent
213
+ }),
214
+ children: "Delete"
215
+ })]
216
+ })
217
+ ]
218
+ }, agent.id))
219
+ })] })
220
+ }),
221
+ /* @__PURE__ */ jsx(ConfirmDialog, {
222
+ open: pendingAction !== null,
223
+ onOpenChange: (open) => {
224
+ if (!open) setPendingAction(null);
225
+ },
226
+ title: pendingAction?.kind === "delete" ? `Delete ${pendingAction.agent.name} permanently?` : `Archive ${pendingAction?.agent.name ?? "agent"}?`,
227
+ description: pendingAction?.kind === "delete" ? /* @__PURE__ */ jsx("p", { children: "This permanently removes the Agent, its messages, triggers, skill attachments, sessions, and private on-disk directory. This cannot be undone." }) : /* @__PURE__ */ jsx("p", { children: "The Agent will stop appearing in current lists and cannot receive normal work. You can restore it later from “Show archived”." }),
228
+ confirmLabel: pendingAction?.kind === "delete" ? "Delete permanently" : "Archive agent",
229
+ confirmVariant: pendingAction?.kind === "delete" ? "danger" : "primary",
230
+ onConfirm: async () => {
231
+ if (!pendingAction) return;
232
+ if (pendingAction.kind === "delete") await del(pendingAction.agent.id);
233
+ else await archive(pendingAction.agent.id);
234
+ }
114
235
  })
115
236
  ]
116
237
  });
@@ -169,6 +290,7 @@ function SpawnForm({ profiles, teams, modelGroups, onSpawned }) {
169
290
  onSubmit: submit,
170
291
  children: [
171
292
  err && /* @__PURE__ */ jsx("div", {
293
+ role: "alert",
172
294
  className: "err",
173
295
  children: err
174
296
  }),
@@ -1,9 +1,11 @@
1
- import { t as Route } from "./agents-BvttypqB.js";
2
- import { n as PageHeader, r as PageShell } from "./Page-LENulSXY.js";
1
+ import { t as Route } from "./agents-CJk4pxKu.js";
2
+ import { n as PageHeader, r as PageShell } from "./Page-Bz-ydB8j.js";
3
3
  import { t as Button } from "./Button-Dsnw22OF.js";
4
+ import { t as ConfirmDialog } from "./ConfirmDialog-C-MPYYSU.js";
5
+ import { t as UnsavedChangesGuard } from "./UnsavedChangesGuard-CiStXyBI.js";
4
6
  import { t as DEFAULT_PROFILE_COMMUNICATION } from "./team-policy-vPG01onj.js";
5
7
  import { t as ProfileCommunicationEditor } from "./ProfileCommunicationEditor-C2RU-2QB.js";
6
- import { t as TemplatesTabs } from "./TemplatesTabs-CcRxZhJe.js";
8
+ import { t as TemplatesTabs } from "./TemplatesTabs-B0fA361R.js";
7
9
  import { useState } from "react";
8
10
  import { useRouter } from "@tanstack/react-router";
9
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -11,13 +13,13 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
13
  function ProfilesPage() {
12
14
  const { profiles, modelGroups, skills, templates } = Route.useLoaderData();
13
15
  const router = useRouter();
16
+ const [deleteTarget, setDeleteTarget] = useState(null);
17
+ const [deleteError, setDeleteError] = useState(null);
14
18
  async function del(id) {
15
- if (!confirm("delete profile and all its files?")) return;
16
- const res = await fetch(`/api/profiles/${id}`, { method: "DELETE" });
19
+ const res = await fetch(`/api/profiles/${encodeURIComponent(id)}`, { method: "DELETE" });
17
20
  if (!res.ok && res.status !== 204) {
18
21
  const body = await res.json().catch(() => null);
19
- alert(body?.error ?? res.statusText);
20
- return;
22
+ throw new Error(body?.error ?? res.statusText);
21
23
  }
22
24
  await router.invalidate();
23
25
  }
@@ -29,6 +31,11 @@ function ProfilesPage() {
29
31
  title: "Agent templates",
30
32
  description: "Define reusable identity, model, skills, and communication defaults for newly spawned agents."
31
33
  }),
34
+ deleteError && /* @__PURE__ */ jsx("p", {
35
+ role: "alert",
36
+ className: "err",
37
+ children: deleteError
38
+ }),
32
39
  /* @__PURE__ */ jsx(TemplatesTabs, {}),
33
40
  /* @__PURE__ */ jsx(CreateProfileForm, {
34
41
  modelGroups,
@@ -65,7 +72,10 @@ function ProfilesPage() {
65
72
  }),
66
73
  /* @__PURE__ */ jsx("td", { children: p.agentCount === 0 ? /* @__PURE__ */ jsx(Button, {
67
74
  variant: "danger",
68
- onClick: () => del(p.id),
75
+ onClick: () => {
76
+ setDeleteError(null);
77
+ setDeleteTarget(p);
78
+ },
69
79
  children: "delete"
70
80
  }) : /* @__PURE__ */ jsx("span", {
71
81
  className: "muted",
@@ -74,6 +84,31 @@ function ProfilesPage() {
74
84
  }) })
75
85
  ] }, p.id);
76
86
  })] })] })
87
+ }),
88
+ /* @__PURE__ */ jsx(ConfirmDialog, {
89
+ open: deleteTarget !== null,
90
+ title: `Delete Agent template ${deleteTarget?.name ?? ""}?`,
91
+ description: /* @__PURE__ */ jsxs("p", { children: [
92
+ "This permanently deletes ",
93
+ /* @__PURE__ */ jsx("code", {
94
+ className: "font-mono",
95
+ children: deleteTarget?.id
96
+ }),
97
+ " and all of its template files. It cannot be restored. Existing Agents keep their own copies."
98
+ ] }),
99
+ confirmLabel: "delete Agent template",
100
+ onConfirm: async () => {
101
+ if (!deleteTarget) return;
102
+ try {
103
+ await del(deleteTarget.id);
104
+ } catch (err) {
105
+ setDeleteError(err instanceof Error ? err.message : String(err));
106
+ throw err;
107
+ }
108
+ },
109
+ onOpenChange: (open) => {
110
+ if (!open) setDeleteTarget(null);
111
+ }
77
112
  })
78
113
  ]
79
114
  });
@@ -100,6 +135,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
100
135
  const [picked, setPicked] = useState(/* @__PURE__ */ new Set());
101
136
  const [error, setError] = useState(null);
102
137
  const [submitting, setSubmitting] = useState(false);
138
+ const dirty = id.length > 0 || name.length > 0 || model.length > 0 || soul !== templates.soul || identity !== templates.identity || bootstrap !== templates.bootstrap || !enableBootstrap || agentsTpl !== templates.agents || !enableAgents || toolsTpl !== templates.tools || !enableTools || skillsMode !== "all" || picked.size > 0 || JSON.stringify(communication) !== JSON.stringify(DEFAULT_PROFILE_COMMUNICATION);
103
139
  function togglePicked(name) {
104
140
  setPicked((prev) => {
105
141
  const next = new Set(prev);
@@ -146,6 +182,9 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
146
182
  setId("");
147
183
  setName("");
148
184
  setModel("");
185
+ setSoul(templates.soul);
186
+ setIdentity(templates.identity);
187
+ setBootstrap(templates.bootstrap);
149
188
  setEnableBootstrap(true);
150
189
  setAgentsTpl(templates.agents);
151
190
  setEnableAgents(true);
@@ -166,8 +205,13 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
166
205
  className: "card",
167
206
  onSubmit: submit,
168
207
  children: [
208
+ /* @__PURE__ */ jsx(UnsavedChangesGuard, {
209
+ when: dirty && !submitting,
210
+ subject: "Agent template draft"
211
+ }),
169
212
  /* @__PURE__ */ jsx("h3", { children: "create agent template" }),
170
213
  error && /* @__PURE__ */ jsx("div", {
214
+ role: "alert",
171
215
  className: "err",
172
216
  children: error
173
217
  }),
@@ -1,13 +1,13 @@
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";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
3
+ import { n as daemonClient } from "./daemon-client-CI5NHwNC.js";
4
4
  //#region src/routes/agents/index.tsx?tss-serverfn-split
5
5
  var fetchAgents_createServerFn_handler = createServerRpc({
6
6
  id: "f715bab0037380aa3db7e237e7cf1e74168c363f48a960bb1ddfa5560de3a74e",
7
7
  name: "fetchAgents",
8
8
  filename: "src/routes/agents/index.tsx"
9
9
  }, (opts) => fetchAgents.__executeServer(opts));
10
- var fetchAgents = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(fetchAgents_createServerFn_handler, async ({ data }) => {
10
+ var fetchAgents = createServerFn({ method: "POST" }).validator((d) => d).handler(fetchAgents_createServerFn_handler, async ({ data }) => {
11
11
  const c = daemonClient();
12
12
  const [agents, profiles, teams, models] = await Promise.all([
13
13
  c.get(`/api/agents?includeArchived=${data.all}`),
@@ -1,9 +1,9 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/approvals/index.tsx
5
5
  var $$splitErrorComponentImporter = () => import("./approvals-CbFXFvG8.js");
6
- var $$splitComponentImporter = () => import("./approvals-DCaVw1Mz.js");
6
+ var $$splitComponentImporter = () => import("./approvals-Bz123liE.js");
7
7
  var loadApprovals = createServerFn({ method: "GET" }).handler(createSsrRpc("816fcbc7b3c7f2952660d3a2c8f49bb0c91084627a284c185b333b1d418fadf8"));
8
8
  var Route = createFileRoute("/approvals/")({
9
9
  loader: () => loadApprovals(),
@@ -1,6 +1,6 @@
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";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
3
+ import { n as daemonClient } from "./daemon-client-CI5NHwNC.js";
4
4
  //#region src/routes/approvals/index.tsx?tss-serverfn-split
5
5
  var loadApprovals_createServerFn_handler = createServerRpc({
6
6
  id: "816fcbc7b3c7f2952660d3a2c8f49bb0c91084627a284c185b333b1d418fadf8",
@@ -1,8 +1,8 @@
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";
1
+ import { t as Route } from "./approvals-7JOoBchn.js";
2
+ import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-Bz-ydB8j.js";
3
3
  import { t as Button } from "./Button-Dsnw22OF.js";
4
4
  import { useState } from "react";
5
- import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/routes/approvals/index.tsx?tsr-split=component
7
7
  function ApprovalQueue() {
8
8
  const [approvals, setApprovals] = useState(Route.useLoaderData().approvals);
@@ -17,9 +17,13 @@ function ApprovalQueue() {
17
17
  setApprovals((await response.json()).approvals);
18
18
  };
19
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());
20
+ try {
21
+ const response = await fetch(`/api/approvals/${encodeURIComponent(id)}`);
22
+ if (!response.ok) throw new Error(`Could not load approval (${response.status})`);
23
+ setSelected(await response.json());
24
+ } catch (error) {
25
+ setNotice(error instanceof Error ? error.message : String(error));
26
+ }
23
27
  };
24
28
  const decide = async (action) => {
25
29
  if (!selected) return;
@@ -97,27 +101,21 @@ function ApprovalQueue() {
97
101
  children: visible.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
98
102
  title: "No matching approvals",
99
103
  description: "Try another status filter or return when a protected attempt needs review."
100
- }) : /* @__PURE__ */ jsx("div", {
101
- className: "overflow-x-auto",
104
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
105
+ className: "hidden overflow-x-auto md:block",
102
106
  children: /* @__PURE__ */ jsxs("table", {
103
107
  className: "m-0 min-w-[680px]",
104
108
  children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
105
109
  /* @__PURE__ */ jsx("th", { children: "Status" }),
106
110
  /* @__PURE__ */ jsx("th", { children: "Path" }),
107
111
  /* @__PURE__ */ jsx("th", { children: "Origin" }),
108
- /* @__PURE__ */ jsx("th", { children: "Expires" })
112
+ /* @__PURE__ */ jsx("th", { children: "Expires" }),
113
+ /* @__PURE__ */ jsx("th", { children: /* @__PURE__ */ jsx("span", {
114
+ className: "sr-only",
115
+ children: "Action"
116
+ }) })
109
117
  ] }) }), /* @__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
118
  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
119
  className: `cursor-pointer ${selected?.id === item.id ? "bg-accent/60" : ""}`,
122
120
  children: [
123
121
  /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(Status, { value: item.status }) }),
@@ -136,11 +134,51 @@ function ApprovalQueue() {
136
134
  dateTime: new Date(item.expiresAt).toISOString(),
137
135
  children: formatTimestamp(item.expiresAt)
138
136
  })
139
- })
137
+ }),
138
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(Button, {
139
+ variant: "ghost",
140
+ "aria-pressed": selected?.id === item.id,
141
+ onClick: (event) => {
142
+ event.stopPropagation();
143
+ inspect(item.id);
144
+ },
145
+ children: "Inspect"
146
+ }) })
140
147
  ]
141
148
  }, item.id)) })]
142
149
  })
143
- })
150
+ }), /* @__PURE__ */ jsx("div", {
151
+ className: "grid gap-3 md:hidden",
152
+ children: visible.map((item) => /* @__PURE__ */ jsxs("button", {
153
+ type: "button",
154
+ "aria-label": `Inspect ${item.attemptKind} approval`,
155
+ "aria-pressed": selected?.id === item.id,
156
+ onClick: () => void inspect(item.id),
157
+ className: `unstyled min-w-0 rounded-xl border p-4 text-left ${selected?.id === item.id ? "border-primary/40 bg-accent/60" : "border-border bg-muted/20"}`,
158
+ children: [
159
+ /* @__PURE__ */ jsxs("div", {
160
+ className: "flex flex-wrap items-center justify-between gap-2",
161
+ children: [/* @__PURE__ */ jsx(Status, { value: item.status }), /* @__PURE__ */ jsx("time", {
162
+ dateTime: new Date(item.expiresAt).toISOString(),
163
+ className: "text-xs text-muted-foreground",
164
+ children: formatTimestamp(item.expiresAt)
165
+ })]
166
+ }),
167
+ /* @__PURE__ */ jsxs("div", {
168
+ className: "mt-3 break-words text-sm font-semibold text-foreground",
169
+ children: [
170
+ endpoint(item.source),
171
+ " → ",
172
+ endpoint(item.target)
173
+ ]
174
+ }),
175
+ /* @__PURE__ */ jsxs("div", {
176
+ className: "mt-1 text-xs text-muted-foreground",
177
+ children: ["Origin: ", item.origin]
178
+ })
179
+ ]
180
+ }, item.id))
181
+ })] })
144
182
  }), /* @__PURE__ */ jsx("aside", {
145
183
  className: "min-w-0",
146
184
  "aria-label": "Approval details",
@@ -1,9 +1,9 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/attention/index.tsx
5
5
  var $$splitErrorComponentImporter = () => import("./attention-BW_6ddkj.js");
6
- var $$splitComponentImporter = () => import("./attention-w21GQIGH.js");
6
+ var $$splitComponentImporter = () => import("./attention-C1pPWSXw.js");
7
7
  var loadAttention = createServerFn({ method: "GET" }).handler(createSsrRpc("883b401299422096ee31ee824f9a24b49d06bdcedce398789778c4c549a92f3a"));
8
8
  var Route = createFileRoute("/attention/")({
9
9
  loader: () => loadAttention(),
@@ -1,5 +1,5 @@
1
- import { t as Route } from "./attention-BxkTf337.js";
2
- import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-LENulSXY.js";
1
+ import { t as Route } from "./attention-B35JvhOL.js";
2
+ import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-Bz-ydB8j.js";
3
3
  import { t as Button } from "./Button-Dsnw22OF.js";
4
4
  import { useMemo, useState } from "react";
5
5
  import { Link } from "@tanstack/react-router";
@@ -92,7 +92,7 @@ function AttentionCenter() {
92
92
  }),
93
93
  (degraded.length > 0 || summary.degraded.length > 0) && /* @__PURE__ */ jsxs("div", {
94
94
  role: "alert",
95
- className: "mb-5 rounded-lg border border-coral/40 bg-coral/10 p-4 text-sm",
95
+ className: "mb-5 rounded-lg border border-danger/40 bg-danger/10 p-4 text-sm",
96
96
  children: [
97
97
  /* @__PURE__ */ jsx("strong", { children: "Partial results." }),
98
98
  " ",
@@ -1,6 +1,6 @@
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";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
3
+ import { n as daemonClient } from "./daemon-client-CI5NHwNC.js";
4
4
  //#region src/routes/attention/index.tsx?tss-serverfn-split
5
5
  var loadAttention_createServerFn_handler = createServerRpc({
6
6
  id: "883b401299422096ee31ee824f9a24b49d06bdcedce398789778c4c549a92f3a",
@@ -1,6 +1,6 @@
1
- import { t as createServerFn } from "../server.js";
2
- import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
3
- import { n as daemonClient, r as ApiClientError } from "./daemon-client-2NRMzlTr.js";
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
3
+ import { n as daemonClient, r as ApiClientError } from "./daemon-client-CI5NHwNC.js";
4
4
  //#region src/lib/auth.ts?tss-serverfn-split
5
5
  var fetchAuthState_createServerFn_handler = createServerRpc({
6
6
  id: "a5d3825fc69573bb55bab6df578c750ebb0240dd394c3acee3adea02918a5dc2",
@@ -9,9 +9,9 @@ var fetchAuthState_createServerFn_handler = createServerRpc({
9
9
  }, (opts) => fetchAuthState.__executeServer(opts));
10
10
  var fetchAuthState = createServerFn({ method: "GET" }).handler(fetchAuthState_createServerFn_handler, async () => {
11
11
  try {
12
- const res = await daemonClient().get("/api/auth/me");
12
+ const res = await daemonClient().get("/api/auth/whoami");
13
13
  return {
14
- authed: res.authed,
14
+ authed: res.authenticated,
15
15
  setupComplete: res.setupComplete
16
16
  };
17
17
  } catch (err) {