agim-cli 1.3.4 → 1.3.7

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 (257) hide show
  1. package/CHANGELOG.md +20 -6
  2. package/dist/cli-ui/tui/app.js +1 -1
  3. package/dist/cli-ui/tui/app.js.map +1 -1
  4. package/dist/cli.js +25 -4
  5. package/dist/cli.js.map +1 -1
  6. package/dist/core/a2a.d.ts.map +1 -1
  7. package/dist/core/a2a.js +6 -0
  8. package/dist/core/a2a.js.map +1 -1
  9. package/dist/core/access-token.d.ts.map +1 -1
  10. package/dist/core/access-token.js +16 -4
  11. package/dist/core/access-token.js.map +1 -1
  12. package/dist/core/approval-bus.d.ts +5 -0
  13. package/dist/core/approval-bus.d.ts.map +1 -1
  14. package/dist/core/approval-bus.js +32 -0
  15. package/dist/core/approval-bus.js.map +1 -1
  16. package/dist/core/commands/job.d.ts.map +1 -1
  17. package/dist/core/commands/job.js +10 -3
  18. package/dist/core/commands/job.js.map +1 -1
  19. package/dist/core/goal-rpc.d.ts +7 -0
  20. package/dist/core/goal-rpc.d.ts.map +1 -1
  21. package/dist/core/goal-rpc.js +47 -3
  22. package/dist/core/goal-rpc.js.map +1 -1
  23. package/dist/core/llm/exec-dispatcher.d.ts +2 -0
  24. package/dist/core/llm/exec-dispatcher.d.ts.map +1 -1
  25. package/dist/core/llm/exec-dispatcher.js +60 -6
  26. package/dist/core/llm/exec-dispatcher.js.map +1 -1
  27. package/dist/core/llm/fs-dispatcher.d.ts +3 -0
  28. package/dist/core/llm/fs-dispatcher.d.ts.map +1 -1
  29. package/dist/core/llm/fs-dispatcher.js +31 -12
  30. package/dist/core/llm/fs-dispatcher.js.map +1 -1
  31. package/dist/core/llm/imhub-dispatcher.d.ts.map +1 -1
  32. package/dist/core/llm/imhub-dispatcher.js +9 -5
  33. package/dist/core/llm/imhub-dispatcher.js.map +1 -1
  34. package/dist/core/llm/model-catalog.js +1 -1
  35. package/dist/core/llm/model-catalog.js.map +1 -1
  36. package/dist/core/llm/policy-approval-gate.d.ts.map +1 -1
  37. package/dist/core/llm/policy-approval-gate.js +17 -4
  38. package/dist/core/llm/policy-approval-gate.js.map +1 -1
  39. package/dist/core/llm/registry.d.ts +2 -2
  40. package/dist/core/llm/registry.js +1 -1
  41. package/dist/core/llm/web-dispatcher.d.ts +20 -0
  42. package/dist/core/llm/web-dispatcher.d.ts.map +1 -1
  43. package/dist/core/llm/web-dispatcher.js +70 -5
  44. package/dist/core/llm/web-dispatcher.js.map +1 -1
  45. package/dist/core/registry.d.ts.map +1 -1
  46. package/dist/core/registry.js +5 -19
  47. package/dist/core/registry.js.map +1 -1
  48. package/dist/core/router.js +1 -1
  49. package/dist/core/router.js.map +1 -1
  50. package/dist/core/schedule.d.ts.map +1 -1
  51. package/dist/core/schedule.js +6 -2
  52. package/dist/core/schedule.js.map +1 -1
  53. package/dist/core/skills/loader.js +3 -3
  54. package/dist/core/skills/loader.js.map +1 -1
  55. package/dist/core/types.d.ts +3 -0
  56. package/dist/core/types.d.ts.map +1 -1
  57. package/dist/plugins/agents/native/index.d.ts +0 -146
  58. package/dist/plugins/agents/native/index.d.ts.map +1 -1
  59. package/dist/plugins/agents/native/index.js +41 -1291
  60. package/dist/plugins/agents/native/index.js.map +1 -1
  61. package/dist/plugins/agents/pi-native/approval.d.ts.map +1 -1
  62. package/dist/plugins/agents/pi-native/approval.js +2 -3
  63. package/dist/plugins/agents/pi-native/approval.js.map +1 -1
  64. package/dist/plugins/agents/pi-native/factory.d.ts +3 -4
  65. package/dist/plugins/agents/pi-native/factory.d.ts.map +1 -1
  66. package/dist/plugins/agents/pi-native/factory.js +8 -14
  67. package/dist/plugins/agents/pi-native/factory.js.map +1 -1
  68. package/dist/plugins/agents/pi-native/index.d.ts +8 -8
  69. package/dist/plugins/agents/pi-native/index.d.ts.map +1 -1
  70. package/dist/plugins/agents/pi-native/index.js +78 -13
  71. package/dist/plugins/agents/pi-native/index.js.map +1 -1
  72. package/dist/plugins/agents/pi-native/provider-resolver.d.ts +4 -4
  73. package/dist/plugins/agents/pi-native/provider-resolver.d.ts.map +1 -1
  74. package/dist/plugins/agents/pi-native/provider-resolver.js +1 -1
  75. package/dist/plugins/agents/pi-native/provider-resolver.js.map +1 -1
  76. package/dist/plugins/agents/pi-native/tool-bridge.js +1 -1
  77. package/dist/plugins/agents/pi-native/tool-bridge.js.map +1 -1
  78. package/dist/plugins/agents/pi-native/tools.d.ts +3 -4
  79. package/dist/plugins/agents/pi-native/tools.d.ts.map +1 -1
  80. package/dist/plugins/agents/pi-native/tools.js +7 -9
  81. package/dist/plugins/agents/pi-native/tools.js.map +1 -1
  82. package/dist/plugins/messengers/discord/discord-adapter.d.ts.map +1 -1
  83. package/dist/plugins/messengers/discord/discord-adapter.js +14 -2
  84. package/dist/plugins/messengers/discord/discord-adapter.js.map +1 -1
  85. package/dist/web/public/assets/{a2a-Y30Sn8pc.js → a2a-Bk51ozUt.js} +2 -2
  86. package/dist/web/public/assets/{a2a-Y30Sn8pc.js.map → a2a-Bk51ozUt.js.map} +1 -1
  87. package/dist/web/public/assets/{activity--oN7qxFJ.js → activity-DzKONPpA.js} +2 -2
  88. package/dist/web/public/assets/{activity--oN7qxFJ.js.map → activity-DzKONPpA.js.map} +1 -1
  89. package/dist/web/public/assets/{admins-DONiT3ld.js → admins-CmZ4eQnt.js} +2 -2
  90. package/dist/web/public/assets/{admins-DONiT3ld.js.map → admins-CmZ4eQnt.js.map} +1 -1
  91. package/dist/web/public/assets/{agents-DRbQOH0K.js → agents-lj76gn9U.js} +2 -2
  92. package/dist/web/public/assets/{agents-DRbQOH0K.js.map → agents-lj76gn9U.js.map} +1 -1
  93. package/dist/web/public/assets/{approvals-C5jd7Wf9.js → approvals-C5-3WBcb.js} +2 -2
  94. package/dist/web/public/assets/{approvals-C5jd7Wf9.js.map → approvals-C5-3WBcb.js.map} +1 -1
  95. package/dist/web/public/assets/{arrow-down-x-Lq92tn.js → arrow-down-DAjYgwW2.js} +2 -2
  96. package/dist/web/public/assets/{arrow-down-x-Lq92tn.js.map → arrow-down-DAjYgwW2.js.map} +1 -1
  97. package/dist/web/public/assets/{arrow-up-Cc28qbjN.js → arrow-up-Cba9TuAO.js} +2 -2
  98. package/dist/web/public/assets/{arrow-up-Cc28qbjN.js.map → arrow-up-Cba9TuAO.js.map} +1 -1
  99. package/dist/web/public/assets/{asks-CeVcu8SD.js → asks-qlttx_de.js} +2 -2
  100. package/dist/web/public/assets/{asks-CeVcu8SD.js.map → asks-qlttx_de.js.map} +1 -1
  101. package/dist/web/public/assets/{audit-Dc9_FDkW.js → audit-CSjpfK6P.js} +2 -2
  102. package/dist/web/public/assets/{audit-Dc9_FDkW.js.map → audit-CSjpfK6P.js.map} +1 -1
  103. package/dist/web/public/assets/{bell-CxPf_Xzs.js → bell-Dm9oEZR5.js} +2 -2
  104. package/dist/web/public/assets/{bell-CxPf_Xzs.js.map → bell-Dm9oEZR5.js.map} +1 -1
  105. package/dist/web/public/assets/{bgjobs-CYjmAJgs.js → bgjobs-IOX_MrKV.js} +2 -2
  106. package/dist/web/public/assets/{bgjobs-CYjmAJgs.js.map → bgjobs-IOX_MrKV.js.map} +1 -1
  107. package/dist/web/public/assets/{brain-DjCfwBAT.js → brain-D24bSBeM.js} +2 -2
  108. package/dist/web/public/assets/{brain-DjCfwBAT.js.map → brain-D24bSBeM.js.map} +1 -1
  109. package/dist/web/public/assets/{briefcase-Br1bd_VG.js → briefcase-BrIzC9EZ.js} +2 -2
  110. package/dist/web/public/assets/{briefcase-Br1bd_VG.js.map → briefcase-BrIzC9EZ.js.map} +1 -1
  111. package/dist/web/public/assets/{chat-uqxuXn2X.js → chat-DXki5zbL.js} +2 -2
  112. package/dist/web/public/assets/{chat-uqxuXn2X.js.map → chat-DXki5zbL.js.map} +1 -1
  113. package/dist/web/public/assets/{chevron-left-CN-4SIfi.js → chevron-left-C8Ha_lMZ.js} +2 -2
  114. package/dist/web/public/assets/{chevron-left-CN-4SIfi.js.map → chevron-left-C8Ha_lMZ.js.map} +1 -1
  115. package/dist/web/public/assets/{chevron-right-BhSTLH2K.js → chevron-right-LF_j8BGd.js} +2 -2
  116. package/dist/web/public/assets/{chevron-right-BhSTLH2K.js.map → chevron-right-LF_j8BGd.js.map} +1 -1
  117. package/dist/web/public/assets/{circle-check-B4UdHmdJ.js → circle-check-CpSR3rJi.js} +2 -2
  118. package/dist/web/public/assets/{circle-check-B4UdHmdJ.js.map → circle-check-CpSR3rJi.js.map} +1 -1
  119. package/dist/web/public/assets/{circle-check-big-CvXnDqiF.js → circle-check-big-Dbz0XziN.js} +2 -2
  120. package/dist/web/public/assets/{circle-check-big-CvXnDqiF.js.map → circle-check-big-Dbz0XziN.js.map} +1 -1
  121. package/dist/web/public/assets/{circle-x-B8y8mLHr.js → circle-x-XWMjbfp5.js} +2 -2
  122. package/dist/web/public/assets/{circle-x-B8y8mLHr.js.map → circle-x-XWMjbfp5.js.map} +1 -1
  123. package/dist/web/public/assets/{clock-CK2KO_Rc.js → clock-BjVFYz37.js} +2 -2
  124. package/dist/web/public/assets/{clock-CK2KO_Rc.js.map → clock-BjVFYz37.js.map} +1 -1
  125. package/dist/web/public/assets/{confirm-dialog-GZyIzSwj.js → confirm-dialog-C8nuBNh3.js} +2 -2
  126. package/dist/web/public/assets/{confirm-dialog-GZyIzSwj.js.map → confirm-dialog-C8nuBNh3.js.map} +1 -1
  127. package/dist/web/public/assets/{copy-CDCgL5Yq.js → copy-BUxvUnbP.js} +2 -2
  128. package/dist/web/public/assets/{copy-CDCgL5Yq.js.map → copy-BUxvUnbP.js.map} +1 -1
  129. package/dist/web/public/assets/{data-table-1cGunUIX.js → data-table-BHctKsHM.js} +2 -2
  130. package/dist/web/public/assets/{data-table-1cGunUIX.js.map → data-table-BHctKsHM.js.map} +1 -1
  131. package/dist/web/public/assets/{download-CuLP0G-q.js → download-C0hikBL7.js} +2 -2
  132. package/dist/web/public/assets/{download-CuLP0G-q.js.map → download-C0hikBL7.js.map} +1 -1
  133. package/dist/web/public/assets/{email-Q-SY9qC9.js → email-D940p9kF.js} +2 -2
  134. package/dist/web/public/assets/{email-Q-SY9qC9.js.map → email-D940p9kF.js.map} +1 -1
  135. package/dist/web/public/assets/{empty-state-BRsb30K6.js → empty-state-BzzUgjlL.js} +2 -2
  136. package/dist/web/public/assets/{empty-state-BRsb30K6.js.map → empty-state-BzzUgjlL.js.map} +1 -1
  137. package/dist/web/public/assets/{external-link-D-E90Kfw.js → external-link-Cjuz11n7.js} +2 -2
  138. package/dist/web/public/assets/{external-link-D-E90Kfw.js.map → external-link-Cjuz11n7.js.map} +1 -1
  139. package/dist/web/public/assets/{eye-DSu_4mW2.js → eye-DVQjbb2Z.js} +2 -2
  140. package/dist/web/public/assets/{eye-DSu_4mW2.js.map → eye-DVQjbb2Z.js.map} +1 -1
  141. package/dist/web/public/assets/{facts-pmGTfGmv.js → facts-C4hVaO6t.js} +2 -2
  142. package/dist/web/public/assets/{facts-pmGTfGmv.js.map → facts-C4hVaO6t.js.map} +1 -1
  143. package/dist/web/public/assets/{goals-DpRm9-av.js → goals-89sYO75m.js} +2 -2
  144. package/dist/web/public/assets/{goals-DpRm9-av.js.map → goals-89sYO75m.js.map} +1 -1
  145. package/dist/web/public/assets/{health-mqoH7KDV.js → health-CKfZBddX.js} +2 -2
  146. package/dist/web/public/assets/{health-mqoH7KDV.js.map → health-CKfZBddX.js.map} +1 -1
  147. package/dist/web/public/assets/{heart-pulse-CrCHhXtC.js → heart-pulse-BfYs3KFD.js} +2 -2
  148. package/dist/web/public/assets/{heart-pulse-CrCHhXtC.js.map → heart-pulse-BfYs3KFD.js.map} +1 -1
  149. package/dist/web/public/assets/{heartbeat-EGjLHWU0.js → heartbeat-oKkyHWgV.js} +2 -2
  150. package/dist/web/public/assets/{heartbeat-EGjLHWU0.js.map → heartbeat-oKkyHWgV.js.map} +1 -1
  151. package/dist/web/public/assets/{hot-B9x1_5yx.js → hot-Cas_nZv9.js} +2 -2
  152. package/dist/web/public/assets/{hot-B9x1_5yx.js.map → hot-Cas_nZv9.js.map} +1 -1
  153. package/dist/web/public/assets/{index-BIBWEKxu.js → index-B795P_3p.js} +34 -34
  154. package/dist/web/public/assets/index-B795P_3p.js.map +1 -0
  155. package/dist/web/public/assets/{index-Bc0H0I1S.css → index-CokfQGcz.css} +1 -1
  156. package/dist/web/public/assets/{injection-CDx5n-mk.js → injection-DksSjIsi.js} +2 -2
  157. package/dist/web/public/assets/{injection-CDx5n-mk.js.map → injection-DksSjIsi.js.map} +1 -1
  158. package/dist/web/public/assets/{installed-DV7X4wfv.js → installed-DWq0Eluy.js} +2 -2
  159. package/dist/web/public/assets/{installed-DV7X4wfv.js.map → installed-DWq0Eluy.js.map} +1 -1
  160. package/dist/web/public/assets/{jobs-zAigElCl.js → jobs-CqY-xtBr.js} +2 -2
  161. package/dist/web/public/assets/{jobs-zAigElCl.js.map → jobs-CqY-xtBr.js.map} +1 -1
  162. package/dist/web/public/assets/{layout-B0RjH6M2.js → layout-BiAVhWgU.js} +2 -2
  163. package/dist/web/public/assets/{layout-B0RjH6M2.js.map → layout-BiAVhWgU.js.map} +1 -1
  164. package/dist/web/public/assets/{layout-DOSpVfND.js → layout-BodTIhhE.js} +2 -2
  165. package/dist/web/public/assets/{layout-DOSpVfND.js.map → layout-BodTIhhE.js.map} +1 -1
  166. package/dist/web/public/assets/{layout-CzjqlPxW.js → layout-Cltp3ikG.js} +2 -2
  167. package/dist/web/public/assets/{layout-CzjqlPxW.js.map → layout-Cltp3ikG.js.map} +1 -1
  168. package/dist/web/public/assets/{layout-C6q-GbBZ.js → layout-CqgDOB5t.js} +2 -2
  169. package/dist/web/public/assets/{layout-C6q-GbBZ.js.map → layout-CqgDOB5t.js.map} +1 -1
  170. package/dist/web/public/assets/{layout-7wcifbsm.js → layout-DsoDxB0i.js} +2 -2
  171. package/dist/web/public/assets/{layout-7wcifbsm.js.map → layout-DsoDxB0i.js.map} +1 -1
  172. package/dist/web/public/assets/{llm-DwZX5fwY.js → llm-D3Kd9gqa.js} +2 -2
  173. package/dist/web/public/assets/{llm-DwZX5fwY.js.map → llm-D3Kd9gqa.js.map} +1 -1
  174. package/dist/web/public/assets/{loader-circle-BQkLEJZw.js → loader-circle-DsLQMvHE.js} +2 -2
  175. package/dist/web/public/assets/{loader-circle-BQkLEJZw.js.map → loader-circle-DsLQMvHE.js.map} +1 -1
  176. package/dist/web/public/assets/{map-pin-B-IMY07m.js → map-pin-e694Eet6.js} +2 -2
  177. package/dist/web/public/assets/{map-pin-B-IMY07m.js.map → map-pin-e694Eet6.js.map} +1 -1
  178. package/dist/web/public/assets/{mcp-K0P3-b6q.js → mcp-BoWJqog4.js} +2 -2
  179. package/dist/web/public/assets/{mcp-K0P3-b6q.js.map → mcp-BoWJqog4.js.map} +1 -1
  180. package/dist/web/public/assets/{memos-DcpDEVN8.js → memos-C81bimPJ.js} +2 -2
  181. package/dist/web/public/assets/{memos-DcpDEVN8.js.map → memos-C81bimPJ.js.map} +1 -1
  182. package/dist/web/public/assets/{messengers-DmrNvPMS.js → messengers-CGcjXUeJ.js} +2 -2
  183. package/dist/web/public/assets/{messengers-DmrNvPMS.js.map → messengers-CGcjXUeJ.js.map} +1 -1
  184. package/dist/web/public/assets/{mobile-a-oUiAoR.js → mobile-Duy_If5A.js} +2 -2
  185. package/dist/web/public/assets/{mobile-a-oUiAoR.js.map → mobile-Duy_If5A.js.map} +1 -1
  186. package/dist/web/public/assets/{network-Bbh3j5ew.js → network-DnBhCncp.js} +2 -2
  187. package/dist/web/public/assets/{network-Bbh3j5ew.js.map → network-DnBhCncp.js.map} +1 -1
  188. package/dist/web/public/assets/{outbox-BP_hfANb.js → outbox-DrReVtHr.js} +2 -2
  189. package/dist/web/public/assets/{outbox-BP_hfANb.js.map → outbox-DrReVtHr.js.map} +1 -1
  190. package/dist/web/public/assets/{pagination-CPLj3V0r.js → pagination-DgS8vaZM.js} +2 -2
  191. package/dist/web/public/assets/{pagination-CPLj3V0r.js.map → pagination-DgS8vaZM.js.map} +1 -1
  192. package/dist/web/public/assets/{persona-CT38dLd4.js → persona-NTg-RuPa.js} +2 -2
  193. package/dist/web/public/assets/{persona-CT38dLd4.js.map → persona-NTg-RuPa.js.map} +1 -1
  194. package/dist/web/public/assets/{plans-Msw85XkI.js → plans-CUsr4aMb.js} +2 -2
  195. package/dist/web/public/assets/{plans-Msw85XkI.js.map → plans-CUsr4aMb.js.map} +1 -1
  196. package/dist/web/public/assets/{play-tH2nb1Kt.js → play-G96k2QBR.js} +2 -2
  197. package/dist/web/public/assets/{play-tH2nb1Kt.js.map → play-G96k2QBR.js.map} +1 -1
  198. package/dist/web/public/assets/{plus-6MNGQidu.js → plus-6RZ3XScp.js} +2 -2
  199. package/dist/web/public/assets/{plus-6MNGQidu.js.map → plus-6RZ3XScp.js.map} +1 -1
  200. package/dist/web/public/assets/{policy-BJ7zORVG.js → policy-BFlQnPo5.js} +2 -2
  201. package/dist/web/public/assets/{policy-BJ7zORVG.js.map → policy-BFlQnPo5.js.map} +1 -1
  202. package/dist/web/public/assets/{qr-code-DfsxFxoa.js → qr-code-L7ClZ31U.js} +2 -2
  203. package/dist/web/public/assets/{qr-code-DfsxFxoa.js.map → qr-code-L7ClZ31U.js.map} +1 -1
  204. package/dist/web/public/assets/{refresh-ccw-CFPE6zD1.js → refresh-ccw-S3sFYfDb.js} +2 -2
  205. package/dist/web/public/assets/{refresh-ccw-CFPE6zD1.js.map → refresh-ccw-S3sFYfDb.js.map} +1 -1
  206. package/dist/web/public/assets/{reminders-CAUNAuDy.js → reminders-DVzHdBpK.js} +2 -2
  207. package/dist/web/public/assets/{reminders-CAUNAuDy.js.map → reminders-DVzHdBpK.js.map} +1 -1
  208. package/dist/web/public/assets/{save-CNUmUMEf.js → save-DetwgDjo.js} +2 -2
  209. package/dist/web/public/assets/{save-CNUmUMEf.js.map → save-DetwgDjo.js.map} +1 -1
  210. package/dist/web/public/assets/{schedules-C25NyoGh.js → schedules-CslP2Ntr.js} +2 -2
  211. package/dist/web/public/assets/{schedules-C25NyoGh.js.map → schedules-CslP2Ntr.js.map} +1 -1
  212. package/dist/web/public/assets/{search-D9TZs0bG.js → search-Bx2TNvqF.js} +2 -2
  213. package/dist/web/public/assets/{search-D9TZs0bG.js.map → search-Bx2TNvqF.js.map} +1 -1
  214. package/dist/web/public/assets/{search-CaRTqZw1.js → search-ByHc__pY.js} +2 -2
  215. package/dist/web/public/assets/{search-CaRTqZw1.js.map → search-ByHc__pY.js.map} +1 -1
  216. package/dist/web/public/assets/{security-BMGGzEwr.js → security-B4dw2-ZU.js} +2 -2
  217. package/dist/web/public/assets/{security-BMGGzEwr.js.map → security-B4dw2-ZU.js.map} +1 -1
  218. package/dist/web/public/assets/{service-BQBoddcT.js → service-LujRx8DT.js} +2 -2
  219. package/dist/web/public/assets/{service-BQBoddcT.js.map → service-LujRx8DT.js.map} +1 -1
  220. package/dist/web/public/assets/{shield-alert-eOBoc2yc.js → shield-alert-BM2sbwiD.js} +2 -2
  221. package/dist/web/public/assets/{shield-alert-eOBoc2yc.js.map → shield-alert-BM2sbwiD.js.map} +1 -1
  222. package/dist/web/public/assets/{status-badge-CF1Cya26.js → status-badge-Bz0a-nE1.js} +2 -2
  223. package/dist/web/public/assets/{status-badge-CF1Cya26.js.map → status-badge-Bz0a-nE1.js.map} +1 -1
  224. package/dist/web/public/assets/{subtasks-CEPB2TSV.js → subtasks-BEAppda9.js} +2 -2
  225. package/dist/web/public/assets/{subtasks-CEPB2TSV.js.map → subtasks-BEAppda9.js.map} +1 -1
  226. package/dist/web/public/assets/{table-Dww-k14l.js → table-Dl8Faxz-.js} +2 -2
  227. package/dist/web/public/assets/{table-Dww-k14l.js.map → table-Dl8Faxz-.js.map} +1 -1
  228. package/dist/web/public/assets/{topn-DwgKlIxc.js → topn-CXTn3Qdn.js} +2 -2
  229. package/dist/web/public/assets/{topn-DwgKlIxc.js.map → topn-CXTn3Qdn.js.map} +1 -1
  230. package/dist/web/public/assets/{trash-2-BF98SY8M.js → trash-2-DUSLukqd.js} +2 -2
  231. package/dist/web/public/assets/{trash-2-BF98SY8M.js.map → trash-2-DUSLukqd.js.map} +1 -1
  232. package/dist/web/public/assets/{use-agim-skills-kDpiSMBP.js → use-agim-skills-BD1AIi8d.js} +2 -2
  233. package/dist/web/public/assets/{use-agim-skills-kDpiSMBP.js.map → use-agim-skills-BD1AIi8d.js.map} +1 -1
  234. package/dist/web/public/assets/{use-background-tasks-B1Pxq3JU.js → use-background-tasks-FuodO-_C.js} +2 -2
  235. package/dist/web/public/assets/{use-background-tasks-B1Pxq3JU.js.map → use-background-tasks-FuodO-_C.js.map} +1 -1
  236. package/dist/web/public/assets/{use-memory-w-EY79Zm.js → use-memory-4xOyJX4L.js} +2 -2
  237. package/dist/web/public/assets/{use-memory-w-EY79Zm.js.map → use-memory-4xOyJX4L.js.map} +1 -1
  238. package/dist/web/public/assets/{use-observability-Cd2dUHb7.js → use-observability-DMebP5-1.js} +2 -2
  239. package/dist/web/public/assets/{use-observability-Cd2dUHb7.js.map → use-observability-DMebP5-1.js.map} +1 -1
  240. package/dist/web/public/assets/{use-settings-DG1rm9KU.js → use-settings-GPajsGBB.js} +2 -2
  241. package/dist/web/public/assets/{use-settings-DG1rm9KU.js.map → use-settings-GPajsGBB.js.map} +1 -1
  242. package/dist/web/public/assets/{use-workspace-DvW_xOmj.js → use-workspace-C6qix-sY.js} +2 -2
  243. package/dist/web/public/assets/{use-workspace-DvW_xOmj.js.map → use-workspace-C6qix-sY.js.map} +1 -1
  244. package/dist/web/public/assets/{vector-CDJ4p6UI.js → vector-hGc2RFNQ.js} +2 -2
  245. package/dist/web/public/assets/{vector-CDJ4p6UI.js.map → vector-hGc2RFNQ.js.map} +1 -1
  246. package/dist/web/public/assets/{viewer-Bje5-HtQ.js → viewer-YkLMRkmd.js} +2 -2
  247. package/dist/web/public/assets/{viewer-Bje5-HtQ.js.map → viewer-YkLMRkmd.js.map} +1 -1
  248. package/dist/web/public/assets/{workspace-B7QYGLix.js → workspace-0GRMLd5j.js} +2 -2
  249. package/dist/web/public/assets/{workspace-B7QYGLix.js.map → workspace-0GRMLd5j.js.map} +1 -1
  250. package/dist/web/public/assets/{workspaces-BlodF0DP.js → workspaces-DPa7ByRm.js} +2 -2
  251. package/dist/web/public/assets/{workspaces-BlodF0DP.js.map → workspaces-DPa7ByRm.js.map} +1 -1
  252. package/dist/web/public/index.html +2 -2
  253. package/dist/web/server.d.ts.map +1 -1
  254. package/dist/web/server.js +4 -2
  255. package/dist/web/server.js.map +1 -1
  256. package/package.json +1 -1
  257. package/dist/web/public/assets/index-BIBWEKxu.js.map +0 -1
@@ -1,13 +1,11 @@
1
- // Assembles the SAME tool surface agim's legacy native engine exposes
2
- // (builtin / fs / web / exec / todo / plan-exit / imhub / external-MCP) for a
3
- // pi-native turn, by reusing native's single-source assembleNativeTools. The
4
- // pi adapter then bridges these ToolDef[] + dispatcher onto pi AgentTool[].
1
+ // Assembles the Agim Agent tool surface (builtin / fs / web / exec / todo /
2
+ // plan-exit / imhub / external-MCP), then bridges ToolDef[] + dispatcher onto
3
+ // pi AgentTool[].
5
4
  import { resolveAgentCwd, defaultAgentCwd } from '../../../core/agent-cwd.js';
6
5
  import { threadKey as makeThreadKey } from '../../../core/approval-bus.js';
7
6
  import { effectivePlanModeOn } from '../../../core/plan-mode-state.js';
8
7
  import { assembleNativeTools } from '../native/tool-registry.js';
9
- /** Build the per-turn agim tool surface for a pi-native run. Mirrors the
10
- * context the legacy native adapter passes to assembleNativeTools. */
8
+ /** Build the per-turn Agim Agent tool surface. */
11
9
  export function assembleToolsForPi(opts, sessionId) {
12
10
  const o = opts ?? {};
13
11
  const planThreadKey = o.platform && o.threadId ? makeThreadKey(o.platform, o.channelId ?? '', o.threadId) : undefined;
@@ -16,7 +14,7 @@ export function assembleToolsForPi(opts, sessionId) {
16
14
  channelId: o.channelId || 'default',
17
15
  threadId: o.threadId || sessionId,
18
16
  userId: o.userId || 'unknown',
19
- callerAgent: 'pi-native',
17
+ callerAgent: 'native',
20
18
  callerDepth: o.callDepth ?? 0,
21
19
  // Link A2A callee rows to the parent turn so the web A2A views can see them.
22
20
  ...(typeof o.parentJobId === 'number' ? { parentJobId: o.parentJobId } : {}),
@@ -31,9 +29,9 @@ export function assembleToolsForPi(opts, sessionId) {
31
29
  rpcCtx: o.platform && o.threadId
32
30
  ? { platform: o.platform, channelId: o.channelId ?? '', threadId: o.threadId, userId: o.userId ?? '' }
33
31
  : undefined,
34
- todoThreadKey: planThreadKey ?? `pi-native:${sessionId}`,
32
+ todoThreadKey: planThreadKey ?? `native:${sessionId}`,
35
33
  planExitCtx: {
36
- threadKey: planThreadKey ?? `pi-native:${sessionId}`,
34
+ threadKey: planThreadKey ?? `native:${sessionId}`,
37
35
  runId: sessionId,
38
36
  platform: o.platform,
39
37
  channelId: o.channelId,
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/tools.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,8EAA8E;AAC9E,6EAA6E;AAC7E,4EAA4E;AAE5E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAG1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAQhE;uEACuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,IAA+B,EAAE,SAAiB;IACnF,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAA;IACpB,MAAM,aAAa,GACjB,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEjG,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,cAAc;QACtC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;QACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS;QACjC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;QAC7B,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC;QAC7B,6EAA6E;QAC7E,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,yEAAyE;QACzE,2EAA2E;QAC3E,iDAAiD;QACjD,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;KACpG,CAAA;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAA;IAErE,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACpC,GAAG;QACH,MAAM,EACJ,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ;YACtB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;YACtG,CAAC,CAAC,SAAS;QACf,aAAa,EAAE,aAAa,IAAI,aAAa,SAAS,EAAE;QACxD,WAAW,EAAE;YACX,SAAS,EAAE,aAAa,IAAI,aAAa,SAAS,EAAE;YACpD,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB;QACD,iBAAiB,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC1E,QAAQ;KACT,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KAC1F,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/tools.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,8EAA8E;AAC9E,kBAAkB;AAElB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAG1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAQhE,kDAAkD;AAClD,MAAM,UAAU,kBAAkB,CAAC,IAA+B,EAAE,SAAiB;IACnF,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAA;IACpB,MAAM,aAAa,GACjB,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEjG,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,cAAc;QACtC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;QACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS;QACjC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;QAC7B,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC;QAC7B,6EAA6E;QAC7E,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,yEAAyE;QACzE,2EAA2E;QAC3E,iDAAiD;QACjD,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;KACpG,CAAA;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAA;IAErE,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACpC,GAAG;QACH,MAAM,EACJ,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ;YACtB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;YACtG,CAAC,CAAC,SAAS;QACf,aAAa,EAAE,aAAa,IAAI,UAAU,SAAS,EAAE;QACrD,WAAW,EAAE;YACX,SAAS,EAAE,aAAa,IAAI,UAAU,SAAS,EAAE;YACjD,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB;QACD,iBAAiB,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC1E,QAAQ;KACT,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KAC1F,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"discord-adapter.d.ts","sourceRoot":"","sources":["../../../../src/plugins/messengers/discord/discord-adapter.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAW,MAAM,wBAAwB,CAAA;AAWvF,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,IAAI,aAAY;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwC;IAC/D,OAAO,CAAC,eAAe,CAAoD;IAC3E;;6DAEyD;IACzD,OAAO,CAAC,sBAAsB,CAAqC;IAE7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0DtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI1D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YA4DtD,oBAAoB;YAcpB,oBAAoB;CAyDnC;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
1
+ {"version":3,"file":"discord-adapter.d.ts","sourceRoot":"","sources":["../../../../src/plugins/messengers/discord/discord-adapter.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAW,MAAM,wBAAwB,CAAA;AAWvF,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,IAAI,aAAY;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwC;IAC/D,OAAO,CAAC,eAAe,CAAoD;IAC3E;;6DAEyD;IACzD,OAAO,CAAC,sBAAsB,CAAqC;IAE7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0DtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI1D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YA4DtD,oBAAoB;YAcpB,oBAAoB;CAoEnC;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
@@ -187,8 +187,20 @@ export class DiscordAdapter {
187
187
  return;
188
188
  }
189
189
  // Guild whitelist filter
190
- if (this.config?.allowedGuilds?.length && message.guildId) {
191
- if (!this.config.allowedGuilds.includes(message.guildId)) {
190
+ if (this.config?.allowedGuilds?.length) {
191
+ // v1.3.7 (F12) — DMs have no guildId. Previously the guild check was
192
+ // skipped entirely for DMs (the `&& message.guildId` guard), so an
193
+ // operator who restricted the bot to specific guilds would still
194
+ // accept unsolicited DMs from anyone. Treat a DM as outside the
195
+ // allowed-guild scope unless a channel allowlist explicitly permits
196
+ // its DM channel below.
197
+ if (!message.guildId) {
198
+ if (!this.config?.allowedChannels?.length) {
199
+ log.debug({ channelId: message.channelId }, 'DM ignored — allowedGuilds set but no allowedChannels permits DMs');
200
+ return;
201
+ }
202
+ }
203
+ else if (!this.config.allowedGuilds.includes(message.guildId)) {
192
204
  log.debug({ guildId: message.guildId }, 'Message from non-whitelisted guild, ignoring');
193
205
  return;
194
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discord-adapter.js","sourceRoot":"","sources":["../../../../src/plugins/messengers/discord/discord-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discord-adapter.js","sourceRoot":"","sources":["../../../../src/plugins/messengers/discord/discord-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import{o as p,a as f,b as o,d as m,u as g,j as t,c as x,B as j}from"./index-BIBWEKxu.js";import{r as N}from"./react-DlP5eolq.js";import{D as y}from"./data-table-1cGunUIX.js";import{E as b}from"./empty-state-BRsb30K6.js";import{S as w}from"./status-badge-CF1Cya26.js";import{u as v}from"./use-event-stream-I1lMFEfh.js";import{L as A}from"./loader-circle-BQkLEJZw.js";import{R as S}from"./refresh-ccw-CFPE6zD1.js";import"./table-Dww-k14l.js";import"./arrow-up-Cc28qbjN.js";import"./arrow-down-x-Lq92tn.js";/**
1
+ import{o as p,a as f,b as o,d as m,u as g,j as t,c as x,B as j}from"./index-B795P_3p.js";import{r as N}from"./react-DlP5eolq.js";import{D as y}from"./data-table-BHctKsHM.js";import{E as b}from"./empty-state-BzzUgjlL.js";import{S as w}from"./status-badge-Bz0a-nE1.js";import{u as v}from"./use-event-stream-I1lMFEfh.js";import{L as A}from"./loader-circle-DsLQMvHE.js";import{R as S}from"./refresh-ccw-S3sFYfDb.js";import"./table-Dl8Faxz-.js";import"./arrow-up-Cba9TuAO.js";import"./arrow-down-DAjYgwW2.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const C=p("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]),l={all:["a2a"],stats:["a2a","stats"],recent:e=>["a2a","recent",e]};function T(){return o({queryKey:l.stats,queryFn:()=>m.getA2AStats()})}function q(e){return o({queryKey:l.recent(e),queryFn:()=>m.getA2ARecent(e)})}function E(){const e=f();return()=>e.invalidateQueries({queryKey:l.all})}const L={connected:"text-success",connecting:"text-text-dim",reconnecting:"text-warning",closed:"text-text-muted"};function U(){const{t:e}=g(["tasks","common"]),s=E(),n=T(),r=q({limit:50}),u=r.data?.rows??[],i=n.data,d=v({job:()=>s()}),h=N.useMemo(()=>[{id:"id",header:e("a2a.col.id"),cell:a=>t.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",a.id]}),headClassName:"w-16"},{id:"agent",header:e("a2a.col.agent"),cell:a=>t.jsx("span",{className:"font-medium",children:a.agent}),headClassName:"w-32"},{id:"parent",header:e("a2a.col.parent"),cell:a=>a.parent_id!=null?t.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",a.parent_id]}):t.jsx("span",{className:"text-text-muted",children:"—"}),headClassName:"w-20"},{id:"depth",header:e("a2a.col.depth"),cell:a=>t.jsx("span",{className:"tabular-nums text-text-dim",children:a.call_depth}),headClassName:"w-16",hideOnMobile:!0},{id:"status",header:e("a2a.col.status"),cell:a=>t.jsx(w,{status:a.status,children:a.status}),headClassName:"w-28"},{id:"prompt",header:e("a2a.col.prompt"),cell:a=>t.jsx("span",{className:"line-clamp-2 text-text-dim",children:a.prompt??"—"}),asCardTitle:!0},{id:"createdAt",header:e("a2a.col.createdAt"),cell:a=>t.jsx("span",{className:"text-text-dim",children:R(a.created_at)}),headClassName:"w-40",hideOnMobile:!0}],[e]);return t.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[t.jsxs("header",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsx("h1",{className:"text-xl font-semibold",children:e("a2a.title")}),t.jsx("span",{className:x("text-xs font-medium tabular-nums",L[d]),children:e(`jobs.live.${d}`)}),t.jsxs(j,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>{r.refetch(),n.refetch()},disabled:r.isFetching||n.isFetching,"aria-label":e("actions.refresh",{ns:"common"}),children:[r.isFetching?t.jsx(A,{className:"h-4 w-4 animate-spin"}):t.jsx(S,{className:"h-4 w-4"}),t.jsx("span",{className:"hidden sm:inline",children:e("actions.refresh",{ns:"common"})})]})]}),t.jsx("p",{className:"text-sm text-text-dim",children:e("a2a.subtitle")})]}),i&&t.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[t.jsx(c,{label:e("a2a.stats.total"),value:i.total,tone:"info"}),t.jsx(c,{label:e("a2a.stats.recent24h"),value:i.recent24h,tone:"success"}),t.jsx(c,{label:e("a2a.stats.maxDepth"),value:i.maxDepth,tone:"warning"})]}),t.jsx(y,{columns:h,rows:u,getRowId:a=>String(a.id),loading:r.isLoading,emptyState:t.jsx(b,{icon:t.jsx(C,{}),title:e("a2a.empty.title"),description:e("a2a.empty.description")})})]})}const k={info:"border-info/30 text-info",success:"border-success/30 text-success",warning:"border-warning/30 text-warning",danger:"border-danger/30 text-danger"};function c({label:e,value:s,tone:n}){return t.jsxs("div",{className:x("rounded-md border bg-surface px-3 py-2",k[n]),children:[t.jsx("div",{className:"text-xs uppercase tracking-wide text-text-dim",children:e}),t.jsx("div",{className:"text-2xl font-semibold tabular-nums",children:s})]})}function R(e){try{const s=new Date(e);return Number.isNaN(s.getTime())?e:s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return e}}export{U as default};
7
- //# sourceMappingURL=a2a-Y30Sn8pc.js.map
7
+ //# sourceMappingURL=a2a-Bk51ozUt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-Y30Sn8pc.js","sources":["../../node_modules/lucide-react/dist/esm/icons/git-branch.js","../../src/hooks/use-a2a.ts","../../src/routes/tasks/a2a.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitBranch = createLucideIcon(\"GitBranch\", [\n [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n]);\n\nexport { GitBranch as default };\n//# sourceMappingURL=git-branch.js.map\n","/**\n * useA2A* — react-query wrappers for the Agent-to-Agent inline-job\n * view. Read-only; data lives in jobs.db and is exposed via:\n *\n * GET /api/a2a/stats → totals, recent24h, maxDepth, byStatus/byAgent\n * GET /api/a2a/recent → recent rows (truncated prompt + result)\n *\n * SSE: subscribes to the `job` event so a freshly-completed inline\n * sub-invocation shows up without manual refresh.\n */\n\nimport { useQueryClient, useQuery } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type { A2AStats, ListA2ARecentQuery, ListA2ARecentResponse } from '@/types/api'\n\nexport const a2aKeys = {\n all: ['a2a'] as const,\n stats: ['a2a', 'stats'] as const,\n recent: (q: ListA2ARecentQuery) => ['a2a', 'recent', q] as const,\n}\n\nexport function useA2AStats() {\n return useQuery<A2AStats>({\n queryKey: a2aKeys.stats,\n queryFn: () => api.getA2AStats(),\n })\n}\n\nexport function useA2ARecent(query: ListA2ARecentQuery) {\n return useQuery<ListA2ARecentResponse>({\n queryKey: a2aKeys.recent(query),\n queryFn: () => api.getA2ARecent(query),\n })\n}\n\nexport function useInvalidateA2A() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: a2aKeys.all })\n}\n","/**\n * /tasks/a2a — Agent ↔ Agent inline-call history.\n *\n * Splits into stats KPI cards (total / recent24h / maxDepth) +\n * recent-rows table. Subscribes to the SSE `job` event so a fresh\n * agent-to-agent call appears live.\n */\n\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GitBranch, Loader2, RefreshCcw } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { StatusBadge } from '@/components/common/status-badge'\nimport { Button } from '@/components/ui/button'\nimport { useA2ARecent, useA2AStats, useInvalidateA2A } from '@/hooks/use-a2a'\nimport { useEventStream, type SseStatus } from '@/hooks/use-event-stream'\nimport type { A2ARow } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nconst LIVE_STATUS_CLASS: Record<SseStatus, string> = {\n connected: 'text-success',\n connecting: 'text-text-dim',\n reconnecting: 'text-warning',\n closed: 'text-text-muted',\n}\n\nexport default function A2ARoute(): JSX.Element {\n const { t } = useTranslation(['tasks', 'common'])\n const invalidate = useInvalidateA2A()\n\n const statsQuery = useA2AStats()\n const recentQuery = useA2ARecent({ limit: 50 })\n const rows = recentQuery.data?.rows ?? []\n const stats = statsQuery.data\n\n const live = useEventStream({\n job: () => invalidate(),\n })\n\n const columns: DataTableColumn<A2ARow>[] = useMemo(\n () => [\n {\n id: 'id',\n header: t('a2a.col.id'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">#{r.id}</span>,\n headClassName: 'w-16',\n },\n {\n id: 'agent',\n header: t('a2a.col.agent'),\n cell: (r) => <span className=\"font-medium\">{r.agent}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'parent',\n header: t('a2a.col.parent'),\n cell: (r) =>\n r.parent_id != null ? (\n <span className=\"tabular-nums text-text-dim\">#{r.parent_id}</span>\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-20',\n },\n {\n id: 'depth',\n header: t('a2a.col.depth'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">{r.call_depth}</span>,\n headClassName: 'w-16',\n hideOnMobile: true,\n },\n {\n id: 'status',\n header: t('a2a.col.status'),\n cell: (r) => <StatusBadge status={r.status}>{r.status}</StatusBadge>,\n headClassName: 'w-28',\n },\n {\n id: 'prompt',\n header: t('a2a.col.prompt'),\n cell: (r) => (\n <span className=\"line-clamp-2 text-text-dim\">{r.prompt ?? '—'}</span>\n ),\n asCardTitle: true,\n },\n {\n id: 'createdAt',\n header: t('a2a.col.createdAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.created_at)}</span>,\n headClassName: 'w-40',\n hideOnMobile: true,\n },\n ],\n [t],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('a2a.title')}</h1>\n <span className={cn('text-xs font-medium tabular-nums', LIVE_STATUS_CLASS[live])}>\n {t(`jobs.live.${live}`)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => {\n void recentQuery.refetch()\n void statsQuery.refetch()\n }}\n disabled={recentQuery.isFetching || statsQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {recentQuery.isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('a2a.subtitle')}</p>\n </header>\n\n {stats && (\n <div className=\"grid grid-cols-3 gap-2\">\n <StatCard label={t('a2a.stats.total')} value={stats.total} tone=\"info\" />\n <StatCard label={t('a2a.stats.recent24h')} value={stats.recent24h} tone=\"success\" />\n <StatCard label={t('a2a.stats.maxDepth')} value={stats.maxDepth} tone=\"warning\" />\n </div>\n )}\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => String(r.id)}\n loading={recentQuery.isLoading}\n emptyState={\n <EmptyState\n icon={<GitBranch />}\n title={t('a2a.empty.title')}\n description={t('a2a.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\ninterface StatCardProps {\n label: string\n value: number\n tone: 'info' | 'success' | 'warning' | 'danger'\n}\n\nconst TONE_STYLES: Record<StatCardProps['tone'], string> = {\n info: 'border-info/30 text-info',\n success: 'border-success/30 text-success',\n warning: 'border-warning/30 text-warning',\n danger: 'border-danger/30 text-danger',\n}\n\nfunction StatCard({ label, value, tone }: StatCardProps): JSX.Element {\n return (\n <div\n className={cn(\n 'rounded-md border bg-surface px-3 py-2',\n TONE_STYLES[tone],\n )}\n >\n <div className=\"text-xs uppercase tracking-wide text-text-dim\">{label}</div>\n <div className=\"text-2xl font-semibold tabular-nums\">{value}</div>\n </div>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["GitBranch","createLucideIcon","a2aKeys","q","useA2AStats","useQuery","api","useA2ARecent","query","useInvalidateA2A","qc","useQueryClient","LIVE_STATUS_CLASS","A2ARoute","t","useTranslation","invalidate","statsQuery","recentQuery","rows","stats","live","useEventStream","columns","useMemo","r","jsxs","jsx","StatusBadge","formatTime","cn","Button","Loader2","RefreshCcw","StatCard","DataTable","EmptyState","TONE_STYLES","label","value","tone","iso","d"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"a2a-Bk51ozUt.js","sources":["../../node_modules/lucide-react/dist/esm/icons/git-branch.js","../../src/hooks/use-a2a.ts","../../src/routes/tasks/a2a.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitBranch = createLucideIcon(\"GitBranch\", [\n [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n]);\n\nexport { GitBranch as default };\n//# sourceMappingURL=git-branch.js.map\n","/**\n * useA2A* — react-query wrappers for the Agent-to-Agent inline-job\n * view. Read-only; data lives in jobs.db and is exposed via:\n *\n * GET /api/a2a/stats → totals, recent24h, maxDepth, byStatus/byAgent\n * GET /api/a2a/recent → recent rows (truncated prompt + result)\n *\n * SSE: subscribes to the `job` event so a freshly-completed inline\n * sub-invocation shows up without manual refresh.\n */\n\nimport { useQueryClient, useQuery } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type { A2AStats, ListA2ARecentQuery, ListA2ARecentResponse } from '@/types/api'\n\nexport const a2aKeys = {\n all: ['a2a'] as const,\n stats: ['a2a', 'stats'] as const,\n recent: (q: ListA2ARecentQuery) => ['a2a', 'recent', q] as const,\n}\n\nexport function useA2AStats() {\n return useQuery<A2AStats>({\n queryKey: a2aKeys.stats,\n queryFn: () => api.getA2AStats(),\n })\n}\n\nexport function useA2ARecent(query: ListA2ARecentQuery) {\n return useQuery<ListA2ARecentResponse>({\n queryKey: a2aKeys.recent(query),\n queryFn: () => api.getA2ARecent(query),\n })\n}\n\nexport function useInvalidateA2A() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: a2aKeys.all })\n}\n","/**\n * /tasks/a2a — Agent ↔ Agent inline-call history.\n *\n * Splits into stats KPI cards (total / recent24h / maxDepth) +\n * recent-rows table. Subscribes to the SSE `job` event so a fresh\n * agent-to-agent call appears live.\n */\n\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GitBranch, Loader2, RefreshCcw } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { StatusBadge } from '@/components/common/status-badge'\nimport { Button } from '@/components/ui/button'\nimport { useA2ARecent, useA2AStats, useInvalidateA2A } from '@/hooks/use-a2a'\nimport { useEventStream, type SseStatus } from '@/hooks/use-event-stream'\nimport type { A2ARow } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nconst LIVE_STATUS_CLASS: Record<SseStatus, string> = {\n connected: 'text-success',\n connecting: 'text-text-dim',\n reconnecting: 'text-warning',\n closed: 'text-text-muted',\n}\n\nexport default function A2ARoute(): JSX.Element {\n const { t } = useTranslation(['tasks', 'common'])\n const invalidate = useInvalidateA2A()\n\n const statsQuery = useA2AStats()\n const recentQuery = useA2ARecent({ limit: 50 })\n const rows = recentQuery.data?.rows ?? []\n const stats = statsQuery.data\n\n const live = useEventStream({\n job: () => invalidate(),\n })\n\n const columns: DataTableColumn<A2ARow>[] = useMemo(\n () => [\n {\n id: 'id',\n header: t('a2a.col.id'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">#{r.id}</span>,\n headClassName: 'w-16',\n },\n {\n id: 'agent',\n header: t('a2a.col.agent'),\n cell: (r) => <span className=\"font-medium\">{r.agent}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'parent',\n header: t('a2a.col.parent'),\n cell: (r) =>\n r.parent_id != null ? (\n <span className=\"tabular-nums text-text-dim\">#{r.parent_id}</span>\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-20',\n },\n {\n id: 'depth',\n header: t('a2a.col.depth'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">{r.call_depth}</span>,\n headClassName: 'w-16',\n hideOnMobile: true,\n },\n {\n id: 'status',\n header: t('a2a.col.status'),\n cell: (r) => <StatusBadge status={r.status}>{r.status}</StatusBadge>,\n headClassName: 'w-28',\n },\n {\n id: 'prompt',\n header: t('a2a.col.prompt'),\n cell: (r) => (\n <span className=\"line-clamp-2 text-text-dim\">{r.prompt ?? '—'}</span>\n ),\n asCardTitle: true,\n },\n {\n id: 'createdAt',\n header: t('a2a.col.createdAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.created_at)}</span>,\n headClassName: 'w-40',\n hideOnMobile: true,\n },\n ],\n [t],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('a2a.title')}</h1>\n <span className={cn('text-xs font-medium tabular-nums', LIVE_STATUS_CLASS[live])}>\n {t(`jobs.live.${live}`)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => {\n void recentQuery.refetch()\n void statsQuery.refetch()\n }}\n disabled={recentQuery.isFetching || statsQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {recentQuery.isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('a2a.subtitle')}</p>\n </header>\n\n {stats && (\n <div className=\"grid grid-cols-3 gap-2\">\n <StatCard label={t('a2a.stats.total')} value={stats.total} tone=\"info\" />\n <StatCard label={t('a2a.stats.recent24h')} value={stats.recent24h} tone=\"success\" />\n <StatCard label={t('a2a.stats.maxDepth')} value={stats.maxDepth} tone=\"warning\" />\n </div>\n )}\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => String(r.id)}\n loading={recentQuery.isLoading}\n emptyState={\n <EmptyState\n icon={<GitBranch />}\n title={t('a2a.empty.title')}\n description={t('a2a.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\ninterface StatCardProps {\n label: string\n value: number\n tone: 'info' | 'success' | 'warning' | 'danger'\n}\n\nconst TONE_STYLES: Record<StatCardProps['tone'], string> = {\n info: 'border-info/30 text-info',\n success: 'border-success/30 text-success',\n warning: 'border-warning/30 text-warning',\n danger: 'border-danger/30 text-danger',\n}\n\nfunction StatCard({ label, value, tone }: StatCardProps): JSX.Element {\n return (\n <div\n className={cn(\n 'rounded-md border bg-surface px-3 py-2',\n TONE_STYLES[tone],\n )}\n >\n <div className=\"text-xs uppercase tracking-wide text-text-dim\">{label}</div>\n <div className=\"text-2xl font-semibold tabular-nums\">{value}</div>\n </div>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["GitBranch","createLucideIcon","a2aKeys","q","useA2AStats","useQuery","api","useA2ARecent","query","useInvalidateA2A","qc","useQueryClient","LIVE_STATUS_CLASS","A2ARoute","t","useTranslation","invalidate","statsQuery","recentQuery","rows","stats","live","useEventStream","columns","useMemo","r","jsxs","jsx","StatusBadge","formatTime","cn","Button","Loader2","RefreshCcw","StatCard","DataTable","EmptyState","TONE_STYLES","label","value","tone","iso","d"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,7 +1,7 @@
1
- import{o as t}from"./index-BIBWEKxu.js";/**
1
+ import{o as t}from"./index-B795P_3p.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const c=t("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);export{c as A};
7
- //# sourceMappingURL=activity--oN7qxFJ.js.map
7
+ //# sourceMappingURL=activity-DzKONPpA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity--oN7qxFJ.js","sources":["../../node_modules/lucide-react/dist/esm/icons/activity.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Activity = createLucideIcon(\"Activity\", [\n [\n \"path\",\n {\n d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\",\n key: \"169zse\"\n }\n ]\n]);\n\nexport { Activity as default };\n//# sourceMappingURL=activity.js.map\n"],"names":["Activity","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,WAAY,CAC5C,CACE,OACA,CACE,EAAG,6HACH,IAAK,QACX,CACA,CACA,CAAC","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"activity-DzKONPpA.js","sources":["../../node_modules/lucide-react/dist/esm/icons/activity.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Activity = createLucideIcon(\"Activity\", [\n [\n \"path\",\n {\n d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\",\n key: \"169zse\"\n }\n ]\n]);\n\nexport { Activity as default };\n//# sourceMappingURL=activity.js.map\n"],"names":["Activity","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,WAAY,CAC5C,CACE,OACA,CACE,EAAG,6HACH,IAAK,QACX,CACA,CACA,CAAC","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import{o as u,u as I,j as s,B as h,l as f,m,n as y}from"./index-BIBWEKxu.js";import{r as g}from"./react-DlP5eolq.js";import{C as S}from"./confirm-dialog-GZyIzSwj.js";import{E as w}from"./empty-state-BRsb30K6.js";import{T as N,a as v,b as d,c as t,d as b,e as r}from"./table-Dww-k14l.js";import{n as R,o as L,p as U}from"./use-settings-DG1rm9KU.js";import{L as k}from"./loader-circle-BQkLEJZw.js";import{R as M}from"./refresh-ccw-CFPE6zD1.js";import{T as P}from"./trash-2-BF98SY8M.js";/**
1
+ import{o as u,u as I,j as s,B as h,l as f,m,n as y}from"./index-B795P_3p.js";import{r as g}from"./react-DlP5eolq.js";import{C as S}from"./confirm-dialog-C8nuBNh3.js";import{E as w}from"./empty-state-BzzUgjlL.js";import{T as N,a as v,b as d,c as t,d as b,e as r}from"./table-Dl8Faxz-.js";import{n as R,o as L,p as U}from"./use-settings-GPajsGBB.js";import{L as k}from"./loader-circle-DsLQMvHE.js";import{R as M}from"./refresh-ccw-S3sFYfDb.js";import{T as P}from"./trash-2-DUSLukqd.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -14,4 +14,4 @@ import{o as u,u as I,j as s,B as h,l as f,m,n as y}from"./index-BIBWEKxu.js";imp
14
14
  * This source code is licensed under the ISC license.
15
15
  * See the LICENSE file in the root directory of this source tree.
16
16
  */const H=u("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);function z(e){const i=new Date(e);return Number.isNaN(i.getTime())?e:i.toLocaleString()}function J(){const{t:e}=I(["settings","common"]),i=R(),a=i.data,c=L(),j=U(),[x,p]=g.useState(null),A=g.useMemo(()=>new Set((a?.admins??[]).map(n=>`${n.platform}:${n.userId}`)),[a?.admins]);async function C(n){try{await c.mutateAsync({platform:n.platform,userId:n.userId}),m.success(e("admins.toast.added"))}catch(l){m.error(y(l,e).message)}}async function T(){if(x)try{await j.mutateAsync(x),m.success(e("admins.toast.removed"))}catch(n){throw m.error(y(n,e).message),n}}return s.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-4",children:[s.jsxs("header",{className:"flex flex-col gap-1",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[s.jsx("h1",{className:"text-xl font-semibold",children:e("admins.title")}),s.jsxs(h,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>i.refetch(),disabled:i.isFetching,"aria-label":e("actions.refresh",{ns:"common"}),children:[i.isFetching?s.jsx(k,{className:"h-4 w-4 animate-spin"}):s.jsx(M,{className:"h-4 w-4"}),s.jsx("span",{className:"hidden sm:inline",children:e("actions.refresh",{ns:"common"})})]})]}),s.jsx("p",{className:"text-sm text-text-dim",children:e("admins.subtitle")})]}),a&&s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.configured?s.jsx(f,{variant:"success",children:e("admins.configured")}):s.jsx(f,{variant:"warning",children:e("admins.notConfigured")}),s.jsx(f,{variant:"info",children:e("admins.known.count",{count:a.knownUsers.length})})]}),i.isLoading?s.jsx("div",{className:"h-32 rounded-md bg-surface-2 animate-pulse"}):a&&a.admins.length===0?s.jsx(w,{icon:s.jsx($,{}),title:e("admins.empty")}):a?s.jsxs(N,{children:[s.jsx(v,{children:s.jsxs(d,{children:[s.jsx(t,{className:"w-40",children:e("admins.col.platform")}),s.jsx(t,{children:e("admins.col.userId")}),s.jsx(t,{className:"w-24"})]})}),s.jsx(b,{children:a.admins.map(n=>s.jsxs(d,{children:[s.jsx(r,{className:"font-mono",children:n.platform}),s.jsx(r,{className:"font-mono text-xs",children:n.userId}),s.jsx(r,{children:s.jsxs(h,{variant:"ghost",size:"sm",onClick:()=>p(n),disabled:j.isPending,"aria-label":e("admins.remove.label"),children:[s.jsx(P,{className:"h-3 w-3"}),s.jsx("span",{className:"sr-only sm:not-sr-only sm:ml-1",children:e("admins.remove.label")})]})})]},`${n.platform}:${n.userId}`))})]}):null,s.jsxs("section",{className:"rounded-md border border-border bg-surface p-4",children:[s.jsxs("div",{className:"mb-3 flex flex-col gap-1",children:[s.jsx("div",{className:"text-sm font-medium",children:e("admins.known.title")}),s.jsx("div",{className:"text-xs text-text-dim",children:e("admins.known.hint")})]}),i.isLoading?s.jsx("div",{className:"h-20 rounded-md bg-surface-2 animate-pulse"}):a&&a.knownUsers.length===0?s.jsx(w,{icon:s.jsx(H,{}),title:e("admins.known.empty"),description:e("admins.known.emptyHint")}):a?s.jsxs(N,{children:[s.jsx(v,{children:s.jsxs(d,{children:[s.jsx(t,{className:"w-40",children:e("admins.col.platform")}),s.jsx(t,{children:e("admins.col.userId")}),s.jsx(t,{className:"w-48",children:e("admins.known.col.lastSeen")}),s.jsx(t,{className:"w-32"})]})}),s.jsx(b,{children:a.knownUsers.map(n=>{const l=`${n.platform}:${n.userId}`,o=A.has(l);return s.jsxs(d,{children:[s.jsx(r,{className:"font-mono",children:n.platform}),s.jsx(r,{className:"font-mono text-xs",children:n.userId}),s.jsx(r,{className:"text-xs text-text-dim",children:z(n.lastSeenAt)}),s.jsx(r,{children:s.jsxs(h,{size:"sm",variant:o?"ghost":"outline",disabled:o||c.isPending,onClick:()=>void C(n),"aria-label":e(o?"admins.known.alreadyAdmin":"admins.known.promote"),children:[c.isPending?s.jsx(k,{className:"h-4 w-4 animate-spin"}):s.jsx(E,{className:"h-4 w-4"}),e(o?"admins.known.alreadyAdmin":"admins.known.promote")]})})]},l)})})]}):null]}),s.jsx(S,{open:x!=null,onOpenChange:n=>{n||p(null)},title:e("admins.remove.confirmTitle"),description:e("admins.remove.confirmDescription"),intent:"danger",confirmLabel:e("admins.remove.label"),onConfirm:T})]})}export{J as default};
17
- //# sourceMappingURL=admins-DONiT3ld.js.map
17
+ //# sourceMappingURL=admins-CmZ4eQnt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admins-DONiT3ld.js","sources":["../../node_modules/lucide-react/dist/esm/icons/shield.js","../../node_modules/lucide-react/dist/esm/icons/user-plus.js","../../node_modules/lucide-react/dist/esm/icons/users.js","../../src/routes/settings/admins.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Shield = createLucideIcon(\"Shield\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ]\n]);\n\nexport { Shield as default };\n//# sourceMappingURL=shield.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst UserPlus = createLucideIcon(\"UserPlus\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n]);\n\nexport { UserPlus as default };\n//# sourceMappingURL=user-plus.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Users = createLucideIcon(\"Users\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\", key: \"kshegd\" }],\n [\"path\", { d: \"M16 3.13a4 4 0 0 1 0 7.75\", key: \"1da9ce\" }]\n]);\n\nexport { Users as default };\n//# sourceMappingURL=users.js.map\n","/**\n * /settings/admins — manage IM administrators via known IM users.\n *\n * Candidate users are auto-discovered from real inbound IM messages.\n * Operators grant admin from the discovered list (no manual userId typing).\n */\n\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { Loader2, RefreshCcw, Shield, Trash2, UserPlus, Users } from 'lucide-react'\n\nimport { ConfirmDialog } from '@/components/common/confirm-dialog'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table'\nimport {\n useAddAdmin,\n useAdminAllowlist,\n useRemoveAdmin,\n} from '@/hooks/use-settings'\nimport { describeError } from '@/lib/api/errors'\nimport type { AdminEntry, KnownImUser } from '@/types/api'\n\nfunction formatSeenAt(value: string): string {\n const dt = new Date(value)\n if (Number.isNaN(dt.getTime())) return value\n return dt.toLocaleString()\n}\n\nexport default function SettingsAdminsRoute(): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const listQuery = useAdminAllowlist()\n const data = listQuery.data\n\n const addAdmin = useAddAdmin()\n const removeAdmin = useRemoveAdmin()\n\n const [removeTarget, setRemoveTarget] = useState<AdminEntry | null>(null)\n const adminKeys = useMemo(\n () => new Set((data?.admins ?? []).map((row) => `${row.platform}:${row.userId}`)),\n [data?.admins],\n )\n\n async function onPromote(user: KnownImUser): Promise<void> {\n try {\n await addAdmin.mutateAsync({ platform: user.platform, userId: user.userId })\n toast.success(t('admins.toast.added'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n }\n }\n\n async function onConfirmRemove(): Promise<void> {\n if (!removeTarget) return\n try {\n await removeAdmin.mutateAsync(removeTarget)\n toast.success(t('admins.toast.removed'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n throw err\n }\n }\n\n return (\n <div className=\"mx-auto flex max-w-4xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('admins.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => listQuery.refetch()}\n disabled={listQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {listQuery.isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('admins.subtitle')}</p>\n </header>\n\n {data && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {data.configured ? (\n <Badge variant=\"success\">{t('admins.configured')}</Badge>\n ) : (\n <Badge variant=\"warning\">{t('admins.notConfigured')}</Badge>\n )}\n <Badge variant=\"info\">{t('admins.known.count', { count: data.knownUsers.length })}</Badge>\n </div>\n )}\n\n {listQuery.isLoading ? (\n <div className=\"h-32 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.admins.length === 0 ? (\n <EmptyState icon={<Shield />} title={t('admins.empty')} />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-24\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.admins.map((a) => (\n <TableRow key={`${a.platform}:${a.userId}`}>\n <TableCell className=\"font-mono\">{a.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{a.userId}</TableCell>\n <TableCell>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setRemoveTarget(a)}\n disabled={removeAdmin.isPending}\n aria-label={t('admins.remove.label')}\n >\n <Trash2 className=\"h-3 w-3\" />\n <span className=\"sr-only sm:not-sr-only sm:ml-1\">{t('admins.remove.label')}</span>\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n ) : null}\n\n <section className=\"rounded-md border border-border bg-surface p-4\">\n <div className=\"mb-3 flex flex-col gap-1\">\n <div className=\"text-sm font-medium\">{t('admins.known.title')}</div>\n <div className=\"text-xs text-text-dim\">{t('admins.known.hint')}</div>\n </div>\n {listQuery.isLoading ? (\n <div className=\"h-20 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.knownUsers.length === 0 ? (\n <EmptyState\n icon={<Users />}\n title={t('admins.known.empty')}\n description={t('admins.known.emptyHint')}\n />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-48\">{t('admins.known.col.lastSeen')}</TableHead>\n <TableHead className=\"w-32\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.knownUsers.map((u) => {\n const key = `${u.platform}:${u.userId}`\n const alreadyAdmin = adminKeys.has(key)\n return (\n <TableRow key={key}>\n <TableCell className=\"font-mono\">{u.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{u.userId}</TableCell>\n <TableCell className=\"text-xs text-text-dim\">{formatSeenAt(u.lastSeenAt)}</TableCell>\n <TableCell>\n <Button\n size=\"sm\"\n variant={alreadyAdmin ? 'ghost' : 'outline'}\n disabled={alreadyAdmin || addAdmin.isPending}\n onClick={() => void onPromote(u)}\n aria-label={alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n >\n {addAdmin.isPending ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <UserPlus className=\"h-4 w-4\" />}\n {alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n </Button>\n </TableCell>\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n ) : null}\n </section>\n\n <ConfirmDialog\n open={removeTarget != null}\n onOpenChange={(open) => { if (!open) setRemoveTarget(null) }}\n title={t('admins.remove.confirmTitle')}\n description={t('admins.remove.confirmDescription')}\n intent=\"danger\"\n confirmLabel={t('admins.remove.label')}\n onConfirm={onConfirmRemove}\n />\n </div>\n )\n}\n"],"names":["Shield","createLucideIcon","UserPlus","Users","formatSeenAt","value","dt","SettingsAdminsRoute","t","useTranslation","listQuery","useAdminAllowlist","data","addAdmin","useAddAdmin","removeAdmin","useRemoveAdmin","removeTarget","setRemoveTarget","useState","adminKeys","useMemo","row","onPromote","user","toast","err","describeError","onConfirmRemove","jsxs","jsx","Button","Loader2","RefreshCcw","Badge","EmptyState","Table","TableHeader","TableRow","TableHead","TableBody","a","TableCell","Trash2","u","key","alreadyAdmin","ConfirmDialog","open"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"admins-CmZ4eQnt.js","sources":["../../node_modules/lucide-react/dist/esm/icons/shield.js","../../node_modules/lucide-react/dist/esm/icons/user-plus.js","../../node_modules/lucide-react/dist/esm/icons/users.js","../../src/routes/settings/admins.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Shield = createLucideIcon(\"Shield\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ]\n]);\n\nexport { Shield as default };\n//# sourceMappingURL=shield.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst UserPlus = createLucideIcon(\"UserPlus\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n]);\n\nexport { UserPlus as default };\n//# sourceMappingURL=user-plus.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Users = createLucideIcon(\"Users\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\", key: \"kshegd\" }],\n [\"path\", { d: \"M16 3.13a4 4 0 0 1 0 7.75\", key: \"1da9ce\" }]\n]);\n\nexport { Users as default };\n//# sourceMappingURL=users.js.map\n","/**\n * /settings/admins — manage IM administrators via known IM users.\n *\n * Candidate users are auto-discovered from real inbound IM messages.\n * Operators grant admin from the discovered list (no manual userId typing).\n */\n\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { Loader2, RefreshCcw, Shield, Trash2, UserPlus, Users } from 'lucide-react'\n\nimport { ConfirmDialog } from '@/components/common/confirm-dialog'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table'\nimport {\n useAddAdmin,\n useAdminAllowlist,\n useRemoveAdmin,\n} from '@/hooks/use-settings'\nimport { describeError } from '@/lib/api/errors'\nimport type { AdminEntry, KnownImUser } from '@/types/api'\n\nfunction formatSeenAt(value: string): string {\n const dt = new Date(value)\n if (Number.isNaN(dt.getTime())) return value\n return dt.toLocaleString()\n}\n\nexport default function SettingsAdminsRoute(): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const listQuery = useAdminAllowlist()\n const data = listQuery.data\n\n const addAdmin = useAddAdmin()\n const removeAdmin = useRemoveAdmin()\n\n const [removeTarget, setRemoveTarget] = useState<AdminEntry | null>(null)\n const adminKeys = useMemo(\n () => new Set((data?.admins ?? []).map((row) => `${row.platform}:${row.userId}`)),\n [data?.admins],\n )\n\n async function onPromote(user: KnownImUser): Promise<void> {\n try {\n await addAdmin.mutateAsync({ platform: user.platform, userId: user.userId })\n toast.success(t('admins.toast.added'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n }\n }\n\n async function onConfirmRemove(): Promise<void> {\n if (!removeTarget) return\n try {\n await removeAdmin.mutateAsync(removeTarget)\n toast.success(t('admins.toast.removed'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n throw err\n }\n }\n\n return (\n <div className=\"mx-auto flex max-w-4xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('admins.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => listQuery.refetch()}\n disabled={listQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {listQuery.isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n <p className=\"text-sm text-text-dim\">{t('admins.subtitle')}</p>\n </header>\n\n {data && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {data.configured ? (\n <Badge variant=\"success\">{t('admins.configured')}</Badge>\n ) : (\n <Badge variant=\"warning\">{t('admins.notConfigured')}</Badge>\n )}\n <Badge variant=\"info\">{t('admins.known.count', { count: data.knownUsers.length })}</Badge>\n </div>\n )}\n\n {listQuery.isLoading ? (\n <div className=\"h-32 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.admins.length === 0 ? (\n <EmptyState icon={<Shield />} title={t('admins.empty')} />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-24\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.admins.map((a) => (\n <TableRow key={`${a.platform}:${a.userId}`}>\n <TableCell className=\"font-mono\">{a.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{a.userId}</TableCell>\n <TableCell>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setRemoveTarget(a)}\n disabled={removeAdmin.isPending}\n aria-label={t('admins.remove.label')}\n >\n <Trash2 className=\"h-3 w-3\" />\n <span className=\"sr-only sm:not-sr-only sm:ml-1\">{t('admins.remove.label')}</span>\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n ) : null}\n\n <section className=\"rounded-md border border-border bg-surface p-4\">\n <div className=\"mb-3 flex flex-col gap-1\">\n <div className=\"text-sm font-medium\">{t('admins.known.title')}</div>\n <div className=\"text-xs text-text-dim\">{t('admins.known.hint')}</div>\n </div>\n {listQuery.isLoading ? (\n <div className=\"h-20 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.knownUsers.length === 0 ? (\n <EmptyState\n icon={<Users />}\n title={t('admins.known.empty')}\n description={t('admins.known.emptyHint')}\n />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-48\">{t('admins.known.col.lastSeen')}</TableHead>\n <TableHead className=\"w-32\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.knownUsers.map((u) => {\n const key = `${u.platform}:${u.userId}`\n const alreadyAdmin = adminKeys.has(key)\n return (\n <TableRow key={key}>\n <TableCell className=\"font-mono\">{u.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{u.userId}</TableCell>\n <TableCell className=\"text-xs text-text-dim\">{formatSeenAt(u.lastSeenAt)}</TableCell>\n <TableCell>\n <Button\n size=\"sm\"\n variant={alreadyAdmin ? 'ghost' : 'outline'}\n disabled={alreadyAdmin || addAdmin.isPending}\n onClick={() => void onPromote(u)}\n aria-label={alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n >\n {addAdmin.isPending ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <UserPlus className=\"h-4 w-4\" />}\n {alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n </Button>\n </TableCell>\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n ) : null}\n </section>\n\n <ConfirmDialog\n open={removeTarget != null}\n onOpenChange={(open) => { if (!open) setRemoveTarget(null) }}\n title={t('admins.remove.confirmTitle')}\n description={t('admins.remove.confirmDescription')}\n intent=\"danger\"\n confirmLabel={t('admins.remove.label')}\n onConfirm={onConfirmRemove}\n />\n </div>\n )\n}\n"],"names":["Shield","createLucideIcon","UserPlus","Users","formatSeenAt","value","dt","SettingsAdminsRoute","t","useTranslation","listQuery","useAdminAllowlist","data","addAdmin","useAddAdmin","removeAdmin","useRemoveAdmin","removeTarget","setRemoveTarget","useState","adminKeys","useMemo","row","onPromote","user","toast","err","describeError","onConfirmRemove","jsxs","jsx","Button","Loader2","RefreshCcw","Badge","EmptyState","Table","TableHeader","TableRow","TableHead","TableBody","a","TableCell","Trash2","u","key","alreadyAdmin","ConfirmDialog","open"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -1,7 +1,7 @@
1
- import{o as re,u as U,j as e,B as v,a7 as G,L as $,S as Z,g as X,h as Y,i as J,k as V,l as B,X as oe,m as f,n as I,c as K,I as P}from"./index-BIBWEKxu.js";import{r as g}from"./react-DlP5eolq.js";import{E as de}from"./empty-state-BRsb30K6.js";import{u as me}from"./use-workspace-DvW_xOmj.js";import{b as xe,c as ue,h as pe,i as ge}from"./use-settings-DG1rm9KU.js";import{L as R}from"./loader-circle-BQkLEJZw.js";import{R as he}from"./refresh-ccw-CFPE6zD1.js";import{S as fe}from"./save-CNUmUMEf.js";import{N as Q}from"./network-Bbh3j5ew.js";import{S as F}from"./search-D9TZs0bG.js";import{P as je}from"./plus-6MNGQidu.js";import{T as be}from"./trash-2-BF98SY8M.js";/**
1
+ import{o as re,u as U,j as e,B as v,a7 as G,L as $,S as Z,g as X,h as Y,i as J,k as V,l as B,X as oe,m as f,n as I,c as K,I as P}from"./index-B795P_3p.js";import{r as g}from"./react-DlP5eolq.js";import{E as de}from"./empty-state-BzzUgjlL.js";import{u as me}from"./use-workspace-C6qix-sY.js";import{b as xe,c as ue,h as pe,i as ge}from"./use-settings-GPajsGBB.js";import{L as R}from"./loader-circle-DsLQMvHE.js";import{R as he}from"./refresh-ccw-S3sFYfDb.js";import{S as fe}from"./save-DetwgDjo.js";import{N as Q}from"./network-DnBhCncp.js";import{S as F}from"./search-Bx2TNvqF.js";import{P as je}from"./plus-6RZ3XScp.js";import{T as be}from"./trash-2-DUSLukqd.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const Ne=re("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),L={"claude-code":{aliases:["cc","claude"],pkg:"@anthropic-ai/claude-code",kind:"cli",scope:"bridged"},codex:{aliases:["cx"],pkg:"@openai/codex",kind:"cli",scope:"bridged"},opencode:{aliases:["oc"],pkg:"opencode-ai",kind:"cli",scope:"bridged"},cursor:{aliases:["cs","cur"],pkg:"cursor-agent (curl https://cursor.com/install)",kind:"cli",scope:"bridged"},native:{aliases:["agim","na","llm","native-llm"],pkg:"in-process",kind:"in-process",scope:"agim"}},W=Object.keys(L),ve=W.filter(s=>L[s]?.scope==="bridged");function Ue(){const{t:s}=U(["settings","common"]),r=xe(),t=me(),c=ue(),n=r.data,d=t.data??{},[p,o]=g.useState(null),[m,x]=g.useState(null),[S,j]=g.useState(null);g.useEffect(()=>{n&&p==null&&o(n.agents??[]),n&&m==null&&x(n.defaultAgent??""),n&&S==null&&j(n.acpAgents??[])},[n,p,m,S]);const h=p??n?.agents??[],b=m??n?.defaultAgent??"",w=S??n?.acpAgents??[],O=g.useMemo(()=>{if(!n)return!1;const i=h.length===(n.agents?.length??0)&&h.every(y=>n.agents?.includes(y)),N=b===(n.defaultAgent??""),k=Ae(w,n.acpAgents??[]);return!i||!N||!k},[n,h,b,w]),C=g.useMemo(()=>W.filter(i=>(L[i].kind==="in-process"?!0:h.includes(i))&&d[i]),[h,d]);function _(i,N){const k=N?Array.from(new Set([...h,i])):h.filter(y=>y!==i);o(k),!N&&i===b&&x("")}async function M(){if(n)try{await c.mutateAsync({...n,agents:h,defaultAgent:b||n.defaultAgent,acpAgents:w}),f.success(s("agents.toast.saved")),o(null),x(null),j(null)}catch(i){f.error(I(i,s).message)}}function T(){o(null),x(null),j(null)}function z(i){j(i)}return e.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-4",children:[e.jsxs("header",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("h1",{className:"text-xl font-semibold",children:s("agents.title")}),e.jsxs(v,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>{r.refetch(),t.refetch()},disabled:r.isFetching||t.isFetching,"aria-label":s("actions.refresh",{ns:"common"}),children:[r.isFetching||t.isFetching?e.jsx(R,{className:"h-4 w-4 animate-spin"}):e.jsx(he,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("actions.refresh",{ns:"common"})})]})]}),e.jsx("p",{className:"text-sm text-text-dim",children:s("agents.subtitle")})]}),r.isLoading?e.jsx("div",{className:"h-64 rounded-md bg-surface-2 animate-pulse"}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex flex-col divide-y divide-border rounded-md border border-border bg-surface",children:ve.map(i=>{const N=L[i],k=!!d[i],y=h.includes(i);return e.jsx(ke,{displayName:G(i),aliases:N.aliases,pkg:N.pkg,kind:N.kind,installed:k,enabled:y,onToggle:H=>_(i,H)},i)})}),e.jsxs("section",{className:"rounded-md border border-border bg-surface p-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s("agents.agimAgentCardTitle")}),e.jsx("p",{className:"mt-1 text-xs text-text-dim",children:s("agents.agimAgentCardDesc")}),e.jsx(v,{className:"mt-3",variant:"secondary",size:"sm",onClick:()=>{window.location.assign("/settings/llm")},children:s("agents.agimAgentCardAction")})]}),e.jsxs("section",{className:"rounded-md border border-border bg-surface p-4",children:[e.jsx($,{htmlFor:"default-agent",className:"text-sm font-medium",children:s("agents.defaultAgent")}),e.jsx("p",{className:"mt-1 text-xs text-text-dim",children:s("agents.defaultAgentHint")}),e.jsxs(Z,{value:b||"__none__",onValueChange:i=>x(i==="__none__"?"":i),disabled:C.length===0,children:[e.jsx(X,{id:"default-agent",className:"mt-2 w-64",children:e.jsx(Y,{placeholder:s("agents.noEligible")})}),e.jsx(J,{children:C.length===0?e.jsx(V,{value:"__none__",disabled:!0,children:s("agents.noEligible")}):C.map(i=>e.jsx(V,{value:i,children:G(i)},i))})]})]}),n?.features?.remoteAgent?e.jsx(Se,{agents:w,onChange:z}):null,O&&e.jsxs("div",{className:"sticky bottom-0 flex items-center gap-2 rounded-md border border-border bg-surface px-4 py-2 shadow-md",children:[e.jsx(B,{variant:"info",children:s("agents.dirtyHint")}),e.jsxs(v,{variant:"secondary",size:"sm",onClick:T,disabled:c.isPending,children:[e.jsx(oe,{className:"h-4 w-4"}),s("agents.discard")]}),e.jsxs(v,{size:"sm",onClick:()=>void M(),disabled:c.isPending,children:[c.isPending?e.jsx(R,{className:"h-4 w-4 animate-spin"}):e.jsx(fe,{className:"h-4 w-4"}),c.isPending?s("agents.saving"):s("agents.saveBtn")]})]})]})]})}function ke({displayName:s,aliases:r,pkg:t,kind:c,installed:n,enabled:d,onToggle:p}){const{t:o}=U("settings"),m=c==="in-process";return e.jsxs("div",{className:"flex items-start gap-3 px-3 py-3",children:[e.jsx("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-surface-2 text-text-dim",children:e.jsx(Ne,{className:"h-4 w-4"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:s}),e.jsxs(B,{variant:n?"success":"outline",className:"text-[10px]",children:[e.jsx("span",{className:K("inline-block h-1.5 w-1.5 rounded-full",n?"bg-success":"bg-text-muted")}),o(n?"agents.online":"agents.offline")]}),m&&e.jsx(B,{variant:"outline",className:"text-[10px]",title:o("agents.inProcessHint"),children:o("agents.inProcessBadge")})]}),e.jsxs("p",{className:"mt-0.5 text-xs text-text-dim",children:[e.jsxs("span",{className:"text-text-muted",children:[o("agents.aliasesLabel"),": "]}),e.jsx("span",{className:"font-mono",children:r.map(x=>`/${x}`).join(", ")})]}),!n&&e.jsx("p",{className:"mt-1 text-xs text-warning",children:m?o("agents.nativeInstallHint"):o("agents.installHint",{pkg:t})})]}),e.jsx("input",{type:"checkbox",checked:d,onChange:x=>p(x.target.checked),className:"h-4 w-4 mt-2 accent-accent cursor-pointer"})]})}const ye=["none","apikey","bearer"],we=/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;function Ae(s,r){if(s.length!==r.length)return!1;for(let t=0;t<s.length;t++){const c=s[t],n=r[t];if(c.name!==n.name||c.endpoint!==n.endpoint||(c.enabled??!0)!==(n.enabled??!0))return!1;const d=(c.aliases??[]).join(","),p=(n.aliases??[]).join(",");if(d!==p)return!1;const o=c.auth?.type??"none",m=n.auth?.type??"none";if(o!==m||(c.auth?.token??"")!==(n.auth?.token??""))return!1}return!0}function Se({agents:s,onChange:r}){const{t}=U(["settings","common"]),c=pe(),n=ge(),[d,p]=g.useState(""),[o,m]=g.useState(""),[x,S]=g.useState(""),[j,h]=g.useState("none"),[b,w]=g.useState(""),[O,C]=g.useState(!1),[_,M]=g.useState(""),T=d.trim(),z=T.length>0&&we.test(T),i=s.some(a=>a.name===T),k=!(j!=="none")||b.trim().length>0,y=z&&x.trim().length>0&&k&&!i,H=x.trim().length>0&&k;function ee(){p(""),m(""),S(""),h("none"),w("")}function se(a){return a.split(",").map(l=>l.trim()).filter(Boolean)}function q(a,l){if(a==="none")return{type:"none"};const u=l.trim();return u?{type:a,token:u}:{type:a}}async function te(){if(!y)return;const a={name:T,endpoint:x.trim(),aliases:se(o),auth:q(j,b),enabled:!0};r([...s,a]),ee(),f.success(t("agents.acp.toast.staged"))}async function ae(){if(H)try{const a=await c.mutateAsync({endpoint:x.trim(),auth:q(j,b)});f.success(t("agents.acp.toast.testOk",{name:a.name}))}catch(a){f.error(I(a,t).message)}}async function ne(a){const l=s[a];if(l){if(l.auth?.type!=="none"&&l.auth?.token&&Te(l.auth.token)){f.error(t("agents.acp.toast.testMasked"));return}try{const u=await c.mutateAsync({endpoint:l.endpoint,auth:l.auth});f.success(t("agents.acp.toast.testOk",{name:u.name}))}catch(u){f.error(I(u,t).message)}}}function ie(a,l){const u=s.map((E,A)=>A===a?{...E,enabled:l}:E);r(u)}function ce(a){r(s.filter((l,u)=>u!==a))}async function le(){const a=_.trim();if(a)try{const l=await n.mutateAsync({baseUrl:a,register:!1}),u=new Set(s.map(A=>A.name)),E=l.agents.filter(A=>!u.has(A.name));if(E.length===0){f.info(t("agents.acp.toast.discoverEmpty"));return}r([...s,...E.map(A=>({...A,enabled:!0}))]),f.success(t("agents.acp.toast.discoverAdded",{count:E.length})),M(""),C(!1)}catch(l){f.error(I(l,t).message)}}return e.jsxs("section",{className:"rounded-md border border-border bg-surface",children:[e.jsxs("header",{className:"flex items-center gap-2 border-b border-border px-4 py-3",children:[e.jsx(Q,{className:"h-4 w-4 text-text-dim"}),e.jsx("h2",{className:"text-sm font-semibold",children:t("agents.acp.title")}),e.jsx(B,{variant:"outline",className:"text-[10px]",children:s.length}),e.jsxs(v,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>C(a=>!a),children:[e.jsx(F,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:t("agents.acp.discoverBtn")})]})]}),e.jsx("p",{className:"px-4 pt-2 text-xs text-text-dim",children:t("agents.acp.subtitle")}),O&&e.jsxs("div",{className:"border-t border-border bg-surface-2 px-4 py-3",children:[e.jsx($,{htmlFor:"acp-baseurl",className:"text-xs font-medium",children:t("agents.acp.baseUrl")}),e.jsx("p",{className:"mt-1 text-[11px] text-text-dim",children:t("agents.acp.baseUrlHint")}),e.jsxs("div",{className:"mt-2 flex flex-wrap gap-2",children:[e.jsx(P,{id:"acp-baseurl",value:_,onChange:a=>M(a.target.value),placeholder:"https://agents.example.com",className:"flex-1 min-w-[200px] font-mono text-xs"}),e.jsxs(v,{variant:"secondary",size:"sm",onClick:()=>void le(),disabled:!_.trim()||n.isPending,children:[n.isPending?e.jsx(R,{className:"h-4 w-4 animate-spin"}):e.jsx(F,{className:"h-4 w-4"}),t("agents.acp.runDiscover")]})]})]}),s.length===0?e.jsx("div",{className:"px-4 py-6",children:e.jsx(de,{icon:e.jsx(Q,{}),title:t("agents.acp.empty.title"),description:t("agents.acp.empty.description")})}):e.jsx("ul",{className:"divide-y divide-border",children:s.map((a,l)=>e.jsx(Ce,{agent:a,onToggle:u=>ie(l,u),onTest:()=>void ne(l),onRemove:()=>ce(l),testing:c.isPending},a.name))}),e.jsxs("div",{className:"border-t border-border px-4 py-3",children:[e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-text-dim",children:t("agents.acp.addTitle")}),e.jsxs("div",{className:"mt-2 grid grid-cols-1 gap-2 sm:grid-cols-2",children:[e.jsx(D,{label:t("agents.acp.name"),hint:t("agents.acp.nameHint"),children:e.jsx(P,{value:d,onChange:a=>p(a.target.value),placeholder:"my-agent","aria-invalid":d.length>0&&!z})}),e.jsx(D,{label:t("agents.acp.aliases"),hint:t("agents.acp.aliasesHint"),children:e.jsx(P,{value:o,onChange:a=>m(a.target.value),placeholder:"ma, agent1"})}),e.jsx(D,{label:t("agents.acp.endpoint"),hint:t("agents.acp.endpointHint"),children:e.jsx(P,{value:x,onChange:a=>S(a.target.value),placeholder:"https://example.com/agents/weather",className:"font-mono text-xs"})}),e.jsx(D,{label:t("agents.acp.authType"),children:e.jsxs(Z,{value:j,onValueChange:a=>h(a),children:[e.jsx(X,{children:e.jsx(Y,{})}),e.jsx(J,{children:ye.map(a=>e.jsx(V,{value:a,children:t(`agents.acp.auth.${a}`)},a))})]})}),j!=="none"&&e.jsx(D,{label:t("agents.acp.token"),className:"sm:col-span-2",children:e.jsx(P,{type:"password",value:b,onChange:a=>w(a.target.value),placeholder:t("agents.acp.tokenPlaceholder"),autoComplete:"new-password"})})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(v,{variant:"secondary",size:"sm",onClick:()=>void ae(),disabled:!H||c.isPending,children:[c.isPending?e.jsx(R,{className:"h-4 w-4 animate-spin"}):e.jsx(F,{className:"h-4 w-4"}),t("agents.acp.testBtn")]}),e.jsxs(v,{size:"sm",onClick:()=>void te(),disabled:!y,children:[e.jsx(je,{className:"h-4 w-4"}),t("agents.acp.addBtn")]}),i&&e.jsx("span",{className:"self-center text-xs text-warning",children:t("agents.acp.dupName")})]})]})]})}function Ce({agent:s,onToggle:r,onTest:t,onRemove:c,testing:n}){const{t:d}=U("settings"),p=s.enabled!==!1,o=s.auth?.type??"none";return e.jsxs("li",{className:"flex flex-wrap items-center gap-3 px-4 py-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:s.name}),e.jsx(B,{variant:"outline",className:"text-[10px] uppercase",children:d(`agents.acp.auth.${o}`)}),s.aliases&&s.aliases.length>0&&e.jsx("span",{className:"text-xs text-text-muted font-mono",children:s.aliases.map(m=>`/${m}`).join(", ")})]}),e.jsx("p",{className:"mt-0.5 truncate font-mono text-xs text-text-dim",title:s.endpoint,children:s.endpoint})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-xs text-text-dim",children:[e.jsx("input",{type:"checkbox",checked:p,onChange:m=>r(m.target.checked),className:"h-4 w-4 accent-accent cursor-pointer"}),d(p?"agents.acp.on":"agents.acp.off")]}),e.jsx(v,{variant:"ghost",size:"sm",onClick:t,disabled:n,"aria-label":d("agents.acp.testBtn"),children:n?e.jsx(R,{className:"h-4 w-4 animate-spin"}):e.jsx(F,{className:"h-4 w-4"})}),e.jsx(v,{variant:"ghost",size:"sm",onClick:c,"aria-label":d("agents.acp.removeBtn"),className:"text-danger hover:text-danger",children:e.jsx(be,{className:"h-4 w-4"})})]})}function D({label:s,hint:r,className:t,children:c}){return e.jsxs("div",{className:K("flex flex-col gap-1",t),children:[e.jsx($,{className:"text-xs font-medium",children:s}),c,r&&e.jsx("p",{className:"text-[11px] text-text-dim",children:r})]})}function Te(s){return/\*{3,}/.test(s)}export{Ue as default};
7
- //# sourceMappingURL=agents-DRbQOH0K.js.map
7
+ //# sourceMappingURL=agents-lj76gn9U.js.map