@burdenoff/microfe-vibecontrols 2026.601.11 → 2026.601.13

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 (290) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +5 -2
  2. package/dist/components/actions/ActionForm.js +270 -255
  3. package/dist/components/actions/ActionForm.js.map +1 -1
  4. package/dist/components/actions/RemoteExecutionEnableNotice.js +85 -0
  5. package/dist/components/actions/RemoteExecutionEnableNotice.js.map +1 -0
  6. package/dist/components/agents/AgentConnectionRecovery.js +123 -0
  7. package/dist/components/agents/AgentConnectionRecovery.js.map +1 -0
  8. package/dist/components/agents/RemoteTaskPermissionsCard.js +37 -36
  9. package/dist/components/agents/RemoteTaskPermissionsCard.js.map +1 -1
  10. package/dist/components/graph/MeshAgentNode.js +74 -0
  11. package/dist/components/graph/MeshAgentNode.js.map +1 -0
  12. package/dist/components/graph/MeshDeployWizard.js +393 -0
  13. package/dist/components/graph/MeshDeployWizard.js.map +1 -0
  14. package/dist/components/graph/MeshGraphView.js +190 -0
  15. package/dist/components/graph/MeshGraphView.js.map +1 -0
  16. package/dist/components/graph/MeshNodeActions.js +70 -0
  17. package/dist/components/graph/MeshNodeActions.js.map +1 -0
  18. package/dist/components/graph/MeshRequestPanel.js +240 -0
  19. package/dist/components/graph/MeshRequestPanel.js.map +1 -0
  20. package/dist/components/graph/meshTypes.js +11 -0
  21. package/dist/components/graph/meshTypes.js.map +1 -0
  22. package/dist/components/graph/nodeIcons.js +31 -0
  23. package/dist/components/graph/nodeIcons.js.map +1 -0
  24. package/dist/components/shared/EnableRemoteTaskDialog.js +48 -0
  25. package/dist/components/shared/EnableRemoteTaskDialog.js.map +1 -0
  26. package/dist/components/shared/index.js +1 -0
  27. package/dist/generated/global-operations.js +7 -12
  28. package/dist/generated/global-operations.js.map +1 -1
  29. package/dist/generated/wspace-operations.js +1896 -1649
  30. package/dist/generated/wspace-operations.js.map +1 -1
  31. package/dist/generated/wspace-types.js +14 -12
  32. package/dist/generated/wspace-types.js.map +1 -1
  33. package/dist/hooks/useAiCreditsQuota.js +27 -20
  34. package/dist/hooks/useAiCreditsQuota.js.map +1 -1
  35. package/dist/index.js +10 -10
  36. package/dist/node_modules/dagre/index.js +24 -0
  37. package/dist/node_modules/dagre/index.js.map +1 -0
  38. package/dist/node_modules/dagre/lib/acyclic.js +47 -0
  39. package/dist/node_modules/dagre/lib/acyclic.js.map +1 -0
  40. package/dist/node_modules/dagre/lib/add-border-segments.js +32 -0
  41. package/dist/node_modules/dagre/lib/add-border-segments.js.map +1 -0
  42. package/dist/node_modules/dagre/lib/coordinate-system.js +57 -0
  43. package/dist/node_modules/dagre/lib/coordinate-system.js.map +1 -0
  44. package/dist/node_modules/dagre/lib/data/list.js +30 -0
  45. package/dist/node_modules/dagre/lib/data/list.js.map +1 -0
  46. package/dist/node_modules/dagre/lib/debug.js +31 -0
  47. package/dist/node_modules/dagre/lib/debug.js.map +1 -0
  48. package/dist/node_modules/dagre/lib/graphlib.js +15 -0
  49. package/dist/node_modules/dagre/lib/graphlib.js.map +1 -0
  50. package/dist/node_modules/dagre/lib/greedy-fas.js +74 -0
  51. package/dist/node_modules/dagre/lib/greedy-fas.js.map +1 -0
  52. package/dist/node_modules/dagre/lib/layout.js +305 -0
  53. package/dist/node_modules/dagre/lib/layout.js.map +1 -0
  54. package/dist/node_modules/dagre/lib/lodash.js +67 -0
  55. package/dist/node_modules/dagre/lib/lodash.js.map +1 -0
  56. package/dist/node_modules/dagre/lib/nesting-graph.js +76 -0
  57. package/dist/node_modules/dagre/lib/nesting-graph.js.map +1 -0
  58. package/dist/node_modules/dagre/lib/normalize.js +45 -0
  59. package/dist/node_modules/dagre/lib/normalize.js.map +1 -0
  60. package/dist/node_modules/dagre/lib/order/add-subgraph-constraints.js +24 -0
  61. package/dist/node_modules/dagre/lib/order/add-subgraph-constraints.js.map +1 -0
  62. package/dist/node_modules/dagre/lib/order/barycenter.js +34 -0
  63. package/dist/node_modules/dagre/lib/order/barycenter.js.map +1 -0
  64. package/dist/node_modules/dagre/lib/order/build-layer-graph.js +32 -0
  65. package/dist/node_modules/dagre/lib/order/build-layer-graph.js.map +1 -0
  66. package/dist/node_modules/dagre/lib/order/cross-count.js +39 -0
  67. package/dist/node_modules/dagre/lib/order/cross-count.js.map +1 -0
  68. package/dist/node_modules/dagre/lib/order/index.js +50 -0
  69. package/dist/node_modules/dagre/lib/order/index.js.map +1 -0
  70. package/dist/node_modules/dagre/lib/order/init-order.js +28 -0
  71. package/dist/node_modules/dagre/lib/order/init-order.js.map +1 -0
  72. package/dist/node_modules/dagre/lib/order/resolve-conflicts.js +61 -0
  73. package/dist/node_modules/dagre/lib/order/resolve-conflicts.js.map +1 -0
  74. package/dist/node_modules/dagre/lib/order/sort-subgraph.js +50 -0
  75. package/dist/node_modules/dagre/lib/order/sort-subgraph.js.map +1 -0
  76. package/dist/node_modules/dagre/lib/order/sort.js +34 -0
  77. package/dist/node_modules/dagre/lib/order/sort.js.map +1 -0
  78. package/dist/node_modules/dagre/lib/parent-dummy-chains.js +50 -0
  79. package/dist/node_modules/dagre/lib/parent-dummy-chains.js.map +1 -0
  80. package/dist/node_modules/dagre/lib/position/bk.js +212 -0
  81. package/dist/node_modules/dagre/lib/position/bk.js.map +1 -0
  82. package/dist/node_modules/dagre/lib/position/index.js +30 -0
  83. package/dist/node_modules/dagre/lib/position/index.js.map +1 -0
  84. package/dist/node_modules/dagre/lib/rank/feasible-tree.js +39 -0
  85. package/dist/node_modules/dagre/lib/rank/feasible-tree.js.map +1 -0
  86. package/dist/node_modules/dagre/lib/rank/index.js +35 -0
  87. package/dist/node_modules/dagre/lib/rank/index.js.map +1 -0
  88. package/dist/node_modules/dagre/lib/rank/network-simplex.js +90 -0
  89. package/dist/node_modules/dagre/lib/rank/network-simplex.js.map +1 -0
  90. package/dist/node_modules/dagre/lib/rank/util.js +31 -0
  91. package/dist/node_modules/dagre/lib/rank/util.js.map +1 -0
  92. package/dist/node_modules/dagre/lib/util.js +151 -0
  93. package/dist/node_modules/dagre/lib/util.js.map +1 -0
  94. package/dist/node_modules/dagre/lib/version.js +10 -0
  95. package/dist/node_modules/dagre/lib/version.js.map +1 -0
  96. package/dist/node_modules/graphlib/index.js +19 -0
  97. package/dist/node_modules/graphlib/index.js.map +1 -0
  98. package/dist/node_modules/graphlib/lib/alg/components.js +21 -0
  99. package/dist/node_modules/graphlib/lib/alg/components.js.map +1 -0
  100. package/dist/node_modules/graphlib/lib/alg/dfs.js +25 -0
  101. package/dist/node_modules/graphlib/lib/alg/dfs.js.map +1 -0
  102. package/dist/node_modules/graphlib/lib/alg/dijkstra-all.js +18 -0
  103. package/dist/node_modules/graphlib/lib/alg/dijkstra-all.js.map +1 -0
  104. package/dist/node_modules/graphlib/lib/alg/dijkstra.js +31 -0
  105. package/dist/node_modules/graphlib/lib/alg/dijkstra.js.map +1 -0
  106. package/dist/node_modules/graphlib/lib/alg/find-cycles.js +18 -0
  107. package/dist/node_modules/graphlib/lib/alg/find-cycles.js.map +1 -0
  108. package/dist/node_modules/graphlib/lib/alg/floyd-warshall.js +41 -0
  109. package/dist/node_modules/graphlib/lib/alg/floyd-warshall.js.map +1 -0
  110. package/dist/node_modules/graphlib/lib/alg/index.js +33 -0
  111. package/dist/node_modules/graphlib/lib/alg/index.js.map +1 -0
  112. package/dist/node_modules/graphlib/lib/alg/is-acyclic.js +21 -0
  113. package/dist/node_modules/graphlib/lib/alg/is-acyclic.js.map +1 -0
  114. package/dist/node_modules/graphlib/lib/alg/postorder.js +15 -0
  115. package/dist/node_modules/graphlib/lib/alg/postorder.js.map +1 -0
  116. package/dist/node_modules/graphlib/lib/alg/preorder.js +15 -0
  117. package/dist/node_modules/graphlib/lib/alg/preorder.js.map +1 -0
  118. package/dist/node_modules/graphlib/lib/alg/prim.js +35 -0
  119. package/dist/node_modules/graphlib/lib/alg/prim.js.map +1 -0
  120. package/dist/node_modules/graphlib/lib/alg/tarjan.js +34 -0
  121. package/dist/node_modules/graphlib/lib/alg/tarjan.js.map +1 -0
  122. package/dist/node_modules/graphlib/lib/alg/topsort.js +23 -0
  123. package/dist/node_modules/graphlib/lib/alg/topsort.js.map +1 -0
  124. package/dist/node_modules/graphlib/lib/data/priority-queue.js +56 -0
  125. package/dist/node_modules/graphlib/lib/data/priority-queue.js.map +1 -0
  126. package/dist/node_modules/graphlib/lib/graph.js +196 -0
  127. package/dist/node_modules/graphlib/lib/graph.js.map +1 -0
  128. package/dist/node_modules/graphlib/lib/index.js +15 -0
  129. package/dist/node_modules/graphlib/lib/index.js.map +1 -0
  130. package/dist/node_modules/graphlib/lib/json.js +55 -0
  131. package/dist/node_modules/graphlib/lib/json.js.map +1 -0
  132. package/dist/node_modules/graphlib/lib/lodash.js +47 -0
  133. package/dist/node_modules/graphlib/lib/lodash.js.map +1 -0
  134. package/dist/node_modules/graphlib/lib/version.js +10 -0
  135. package/dist/node_modules/graphlib/lib/version.js.map +1 -0
  136. package/dist/node_modules/lodash/_arrayEach.js +14 -0
  137. package/dist/node_modules/lodash/_arrayEach.js.map +1 -0
  138. package/dist/node_modules/lodash/_arrayReduce.js +15 -0
  139. package/dist/node_modules/lodash/_arrayReduce.js.map +1 -0
  140. package/dist/node_modules/lodash/_asciiSize.js +11 -0
  141. package/dist/node_modules/lodash/_asciiSize.js.map +1 -0
  142. package/dist/node_modules/lodash/_assignMergeValue.js +16 -0
  143. package/dist/node_modules/lodash/_assignMergeValue.js.map +1 -0
  144. package/dist/node_modules/lodash/_assignValue.js +17 -0
  145. package/dist/node_modules/lodash/_assignValue.js.map +1 -0
  146. package/dist/node_modules/lodash/_baseAssign.js +16 -0
  147. package/dist/node_modules/lodash/_baseAssign.js.map +1 -0
  148. package/dist/node_modules/lodash/_baseAssignIn.js +16 -0
  149. package/dist/node_modules/lodash/_baseAssignIn.js.map +1 -0
  150. package/dist/node_modules/lodash/_baseClone.js +64 -0
  151. package/dist/node_modules/lodash/_baseClone.js.map +1 -0
  152. package/dist/node_modules/lodash/_baseCreate.js +21 -0
  153. package/dist/node_modules/lodash/_baseCreate.js.map +1 -0
  154. package/dist/node_modules/lodash/_baseFilter.js +18 -0
  155. package/dist/node_modules/lodash/_baseFilter.js.map +1 -0
  156. package/dist/node_modules/lodash/_baseHas.js +14 -0
  157. package/dist/node_modules/lodash/_baseHas.js.map +1 -0
  158. package/dist/node_modules/lodash/_baseIsMap.js +16 -0
  159. package/dist/node_modules/lodash/_baseIsMap.js.map +1 -0
  160. package/dist/node_modules/lodash/_baseIsSet.js +16 -0
  161. package/dist/node_modules/lodash/_baseIsSet.js.map +1 -0
  162. package/dist/node_modules/lodash/_baseKeysIn.js +20 -0
  163. package/dist/node_modules/lodash/_baseKeysIn.js.map +1 -0
  164. package/dist/node_modules/lodash/_baseMerge.js +27 -0
  165. package/dist/node_modules/lodash/_baseMerge.js.map +1 -0
  166. package/dist/node_modules/lodash/_baseMergeDeep.js +39 -0
  167. package/dist/node_modules/lodash/_baseMergeDeep.js.map +1 -0
  168. package/dist/node_modules/lodash/_basePick.js +18 -0
  169. package/dist/node_modules/lodash/_basePick.js.map +1 -0
  170. package/dist/node_modules/lodash/_basePickBy.js +21 -0
  171. package/dist/node_modules/lodash/_basePickBy.js.map +1 -0
  172. package/dist/node_modules/lodash/_baseReduce.js +15 -0
  173. package/dist/node_modules/lodash/_baseReduce.js.map +1 -0
  174. package/dist/node_modules/lodash/_baseSet.js +30 -0
  175. package/dist/node_modules/lodash/_baseSet.js.map +1 -0
  176. package/dist/node_modules/lodash/_baseValues.js +17 -0
  177. package/dist/node_modules/lodash/_baseValues.js.map +1 -0
  178. package/dist/node_modules/lodash/_baseZipObject.js +17 -0
  179. package/dist/node_modules/lodash/_baseZipObject.js.map +1 -0
  180. package/dist/node_modules/lodash/_castFunction.js +15 -0
  181. package/dist/node_modules/lodash/_castFunction.js.map +1 -0
  182. package/dist/node_modules/lodash/_cloneArrayBuffer.js +16 -0
  183. package/dist/node_modules/lodash/_cloneArrayBuffer.js.map +1 -0
  184. package/dist/node_modules/lodash/_cloneBuffer.js +17 -0
  185. package/dist/node_modules/lodash/_cloneBuffer.js.map +1 -0
  186. package/dist/node_modules/lodash/_cloneDataView.js +16 -0
  187. package/dist/node_modules/lodash/_cloneDataView.js.map +1 -0
  188. package/dist/node_modules/lodash/_cloneRegExp.js +15 -0
  189. package/dist/node_modules/lodash/_cloneRegExp.js.map +1 -0
  190. package/dist/node_modules/lodash/_cloneSymbol.js +15 -0
  191. package/dist/node_modules/lodash/_cloneSymbol.js.map +1 -0
  192. package/dist/node_modules/lodash/_cloneTypedArray.js +16 -0
  193. package/dist/node_modules/lodash/_cloneTypedArray.js.map +1 -0
  194. package/dist/node_modules/lodash/_copyArray.js +15 -0
  195. package/dist/node_modules/lodash/_copyArray.js.map +1 -0
  196. package/dist/node_modules/lodash/_copyObject.js +22 -0
  197. package/dist/node_modules/lodash/_copyObject.js.map +1 -0
  198. package/dist/node_modules/lodash/_copySymbols.js +16 -0
  199. package/dist/node_modules/lodash/_copySymbols.js.map +1 -0
  200. package/dist/node_modules/lodash/_copySymbolsIn.js +16 -0
  201. package/dist/node_modules/lodash/_copySymbolsIn.js.map +1 -0
  202. package/dist/node_modules/lodash/_createAssigner.js +23 -0
  203. package/dist/node_modules/lodash/_createAssigner.js.map +1 -0
  204. package/dist/node_modules/lodash/_flatRest.js +17 -0
  205. package/dist/node_modules/lodash/_flatRest.js.map +1 -0
  206. package/dist/node_modules/lodash/_getAllKeysIn.js +17 -0
  207. package/dist/node_modules/lodash/_getAllKeysIn.js.map +1 -0
  208. package/dist/node_modules/lodash/_getSymbolsIn.js +18 -0
  209. package/dist/node_modules/lodash/_getSymbolsIn.js.map +1 -0
  210. package/dist/node_modules/lodash/_initCloneArray.js +15 -0
  211. package/dist/node_modules/lodash/_initCloneArray.js.map +1 -0
  212. package/dist/node_modules/lodash/_initCloneByTag.js +40 -0
  213. package/dist/node_modules/lodash/_initCloneByTag.js.map +1 -0
  214. package/dist/node_modules/lodash/_initCloneObject.js +17 -0
  215. package/dist/node_modules/lodash/_initCloneObject.js.map +1 -0
  216. package/dist/node_modules/lodash/_nativeKeysIn.js +15 -0
  217. package/dist/node_modules/lodash/_nativeKeysIn.js.map +1 -0
  218. package/dist/node_modules/lodash/_safeGet.js +13 -0
  219. package/dist/node_modules/lodash/_safeGet.js.map +1 -0
  220. package/dist/node_modules/lodash/_stringSize.js +17 -0
  221. package/dist/node_modules/lodash/_stringSize.js.map +1 -0
  222. package/dist/node_modules/lodash/_unicodeSize.js +25 -0
  223. package/dist/node_modules/lodash/_unicodeSize.js.map +1 -0
  224. package/dist/node_modules/lodash/clone.js +15 -0
  225. package/dist/node_modules/lodash/clone.js.map +1 -0
  226. package/dist/node_modules/lodash/cloneDeep.js +15 -0
  227. package/dist/node_modules/lodash/cloneDeep.js.map +1 -0
  228. package/dist/node_modules/lodash/defaults.js +23 -0
  229. package/dist/node_modules/lodash/defaults.js.map +1 -0
  230. package/dist/node_modules/lodash/each.js +11 -0
  231. package/dist/node_modules/lodash/each.js.map +1 -0
  232. package/dist/node_modules/lodash/filter.js +18 -0
  233. package/dist/node_modules/lodash/filter.js.map +1 -0
  234. package/dist/node_modules/lodash/flatten.js +15 -0
  235. package/dist/node_modules/lodash/flatten.js.map +1 -0
  236. package/dist/node_modules/lodash/forEach.js +18 -0
  237. package/dist/node_modules/lodash/forEach.js.map +1 -0
  238. package/dist/node_modules/lodash/forIn.js +17 -0
  239. package/dist/node_modules/lodash/forIn.js.map +1 -0
  240. package/dist/node_modules/lodash/has.js +16 -0
  241. package/dist/node_modules/lodash/has.js.map +1 -0
  242. package/dist/node_modules/lodash/isArrayLikeObject.js +16 -0
  243. package/dist/node_modules/lodash/isArrayLikeObject.js.map +1 -0
  244. package/dist/node_modules/lodash/isEmpty.js +28 -0
  245. package/dist/node_modules/lodash/isEmpty.js.map +1 -0
  246. package/dist/node_modules/lodash/isMap.js +14 -0
  247. package/dist/node_modules/lodash/isMap.js.map +1 -0
  248. package/dist/node_modules/lodash/isSet.js +14 -0
  249. package/dist/node_modules/lodash/isSet.js.map +1 -0
  250. package/dist/node_modules/lodash/isUndefined.js +13 -0
  251. package/dist/node_modules/lodash/isUndefined.js.map +1 -0
  252. package/dist/node_modules/lodash/keysIn.js +17 -0
  253. package/dist/node_modules/lodash/keysIn.js.map +1 -0
  254. package/dist/node_modules/lodash/merge.js +15 -0
  255. package/dist/node_modules/lodash/merge.js.map +1 -0
  256. package/dist/node_modules/lodash/pick.js +15 -0
  257. package/dist/node_modules/lodash/pick.js.map +1 -0
  258. package/dist/node_modules/lodash/reduce.js +20 -0
  259. package/dist/node_modules/lodash/reduce.js.map +1 -0
  260. package/dist/node_modules/lodash/size.js +22 -0
  261. package/dist/node_modules/lodash/size.js.map +1 -0
  262. package/dist/node_modules/lodash/toPlainObject.js +16 -0
  263. package/dist/node_modules/lodash/toPlainObject.js.map +1 -0
  264. package/dist/node_modules/lodash/transform.js +31 -0
  265. package/dist/node_modules/lodash/transform.js.map +1 -0
  266. package/dist/node_modules/lodash/union.js +17 -0
  267. package/dist/node_modules/lodash/union.js.map +1 -0
  268. package/dist/node_modules/lodash/uniqueId.js +16 -0
  269. package/dist/node_modules/lodash/uniqueId.js.map +1 -0
  270. package/dist/node_modules/lodash/values.js +16 -0
  271. package/dist/node_modules/lodash/values.js.map +1 -0
  272. package/dist/node_modules/lodash/zipObject.js +16 -0
  273. package/dist/node_modules/lodash/zipObject.js.map +1 -0
  274. package/dist/pages/ActionsPage.js +269 -230
  275. package/dist/pages/ActionsPage.js.map +1 -1
  276. package/dist/pages/AgentDetailsPage.js +442 -436
  277. package/dist/pages/AgentDetailsPage.js.map +1 -1
  278. package/dist/pages/AgentGraphPage.js +251 -118
  279. package/dist/pages/AgentGraphPage.js.map +1 -1
  280. package/dist/pages/VibeDeckPage.js +268 -224
  281. package/dist/pages/VibeDeckPage.js.map +1 -1
  282. package/dist/services/agentRemoteTaskGates.js +29 -0
  283. package/dist/services/agentRemoteTaskGates.js.map +1 -0
  284. package/package.json +3 -1
  285. package/dist/components/graph/AgentGraphView.js +0 -237
  286. package/dist/components/graph/AgentGraphView.js.map +0 -1
  287. package/dist/components/graph/AgentNode.js +0 -54
  288. package/dist/components/graph/AgentNode.js.map +0 -1
  289. package/dist/components/graph/TargetNode.js +0 -76
  290. package/dist/components/graph/TargetNode.js.map +0 -1
@@ -1,73 +1,74 @@
1
- import { useAgentPluginsLazyQuery as e, useAgentSecretRevealLazyQuery as t, useCheckSessionHealthMutation as n, useCreateSessionMutation as r, useDeleteAgentMutation as i, useGetAgentQuery as a, useInstallAgentPluginMutation as ee, usePushAgentGatewayAuthMutation as te, useRemoveAgentPluginMutation as o, useSetupAgentGatewayAuthMutation as ne, useStartVibecontrolsAgentMutation as s, useStopVibecontrolsAgentMutation as re, useUpdateAgentMutation as ie, useUpdateAgentPluginMutation as c, useVibecontrolsAgentHealthProbeStreamSubscription as ae, useVibecontrolsAgentHealthProbesQuery as oe } from "../generated/wspace-operations.js";
2
- import { ConfirmDialog as se } from "../components/shared/ConfirmDialog.js";
3
- import { QuotaExhaustedDialog as ce } from "../components/shared/QuotaExhaustedDialog.js";
4
- import { getQuotaDialogContent as le, isQuotaExhaustedError as ue, markQuotaHandledLocally as de } from "../utils/quotaUtils.js";
5
- import { useVibeControls as fe, useVibeNavigate as l } from "../providers/VibeControlsProvider.js";
6
- import { useVibeControlsStore as pe } from "../store/vibeControlsStore.js";
7
- import { PageHeader as me } from "../components/shared/PageHeader.js";
8
- import { ErrorState as he } from "../components/shared/ErrorState.js";
9
- import { EntityTagPicker as ge } from "../components/shared/EntityTagPicker.js";
10
- import { EmptyState as _e } from "../components/shared/EmptyState.js";
11
- import { StatusBadge as ve } from "../components/shared/StatusBadge.js";
12
- import { Card as u } from "../components/shared/Card.js";
13
- import { useActiveAgentProfile as ye } from "../hooks/useActiveAgentProfile.js";
1
+ import { useAgentPluginsLazyQuery as e, useAgentSecretRevealLazyQuery as t, useCheckSessionHealthMutation as n, useCreateSessionMutation as r, useDeleteAgentMutation as i, useGetAgentQuery as a, useInstallAgentPluginMutation as ee, usePushAgentGatewayAuthMutation as te, useRemoveAgentPluginMutation as o, useSetupAgentGatewayAuthMutation as ne, useStartVibecontrolsAgentMutation as re, useStopVibecontrolsAgentMutation as ie, useUpdateAgentMutation as ae, useUpdateAgentPluginMutation as s, useVibecontrolsAgentHealthProbeStreamSubscription as oe, useVibecontrolsAgentHealthProbesQuery as se } from "../generated/wspace-operations.js";
2
+ import { ConfirmDialog as ce } from "../components/shared/ConfirmDialog.js";
3
+ import { QuotaExhaustedDialog as le } from "../components/shared/QuotaExhaustedDialog.js";
4
+ import { getQuotaDialogContent as ue, isQuotaExhaustedError as de, markQuotaHandledLocally as fe } from "../utils/quotaUtils.js";
5
+ import { useVibeControls as pe, useVibeNavigate as c } from "../providers/VibeControlsProvider.js";
6
+ import { useVibeControlsStore as me } from "../store/vibeControlsStore.js";
7
+ import { PageHeader as he } from "../components/shared/PageHeader.js";
8
+ import { ErrorState as ge } from "../components/shared/ErrorState.js";
9
+ import { EntityTagPicker as _e } from "../components/shared/EntityTagPicker.js";
10
+ import { EmptyState as ve } from "../components/shared/EmptyState.js";
11
+ import { StatusBadge as ye } from "../components/shared/StatusBadge.js";
12
+ import { Card as l } from "../components/shared/Card.js";
13
+ import { useActiveAgentProfile as be } from "../hooks/useActiveAgentProfile.js";
14
14
  import "../components/shared/index.js";
15
- import { isNative as be, nativeCopyText as xe, nativeToast as Se } from "../utils/nativeBridge.js";
16
- import { VIBE_PERMISSIONS as Ce } from "../constants/permissions.js";
17
- import { PageSkeleton as we } from "../components/shared/PageSkeleton.js";
18
- import { AgentBackupTab as Te } from "../components/agents/backup/AgentBackupTab.js";
19
- import { ConnectionLogPanel as Ee } from "../components/agents/ConnectionLogPanel.js";
20
- import { AgentMaintenanceTab as De } from "../components/agents/AgentMaintenanceTab.js";
21
- import { AliasManager as Oe } from "../components/aliases/AliasManager.js";
22
- import { AgentStatusBadge as ke } from "../components/agents/AgentStatusBadge.js";
23
- import { RemoteTaskPermissionsCard as Ae } from "../components/agents/RemoteTaskPermissionsCard.js";
24
- import { PluginUIPanel as je } from "../components/agents/PluginUIPanel.js";
25
- import { OpenInBrowserEditorButton as Me } from "../components/agents/OpenInBrowserEditorButton.js";
15
+ import { isNative as xe, nativeCopyText as Se, nativeToast as Ce } from "../utils/nativeBridge.js";
16
+ import { VIBE_PERMISSIONS as we } from "../constants/permissions.js";
17
+ import { PageSkeleton as Te } from "../components/shared/PageSkeleton.js";
18
+ import { AgentBackupTab as Ee } from "../components/agents/backup/AgentBackupTab.js";
19
+ import { ConnectionLogPanel as De } from "../components/agents/ConnectionLogPanel.js";
20
+ import { AgentMaintenanceTab as Oe } from "../components/agents/AgentMaintenanceTab.js";
21
+ import { AgentConnectionRecovery as ke } from "../components/agents/AgentConnectionRecovery.js";
22
+ import { AliasManager as Ae } from "../components/aliases/AliasManager.js";
23
+ import { AgentStatusBadge as je } from "../components/agents/AgentStatusBadge.js";
24
+ import { RemoteTaskPermissionsCard as Me } from "../components/agents/RemoteTaskPermissionsCard.js";
25
+ import { PluginUIPanel as Ne } from "../components/agents/PluginUIPanel.js";
26
+ import { OpenInBrowserEditorButton as Pe } from "../components/agents/OpenInBrowserEditorButton.js";
26
27
  import "../components/agents/index.js";
27
- import { deriveAgentStatus as Ne } from "../utils/agentStatus.js";
28
- import { LogViewer as Pe } from "../components/logs/LogViewer.js";
29
- import { ProfilesPanel as Fe } from "../components/agent-manager/ProfilesPanel.js";
28
+ import { deriveAgentStatus as Fe } from "../utils/agentStatus.js";
29
+ import { LogViewer as Ie } from "../components/logs/LogViewer.js";
30
+ import { ProfilesPanel as Le } from "../components/agent-manager/ProfilesPanel.js";
30
31
  import "../components/agent-manager/index.js";
31
- import { NotesTabPanel as Ie } from "../components/notes/NotesTabPanel.js";
32
+ import { NotesTabPanel as Re } from "../components/notes/NotesTabPanel.js";
32
33
  import "../components/notes/index.js";
33
- import { useQueryBackedTab as Le } from "../hooks/useQueryBackedTab.js";
34
- import { mintScopedIframeToken as Re } from "../services/iframeToken.js";
35
- import { AddTabDialog as ze } from "../components/plugins/AddTabDialog.js";
36
- import { PluginIframeMount as Be } from "../components/plugins/PluginIframeMount.js";
37
- import { useCallback as d, useEffect as f, useMemo as Ve, useRef as p, useState as m } from "react";
38
- import { useI18n as He } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
39
- import { ArrowLeft as Ue, ArrowUpCircle as We, Bot as Ge, Check as Ke, CheckCircle2 as qe, Clock as Je, Command as Ye, Copy as Xe, Cpu as Ze, Database as Qe, Download as $e, Edit3 as et, Eye as tt, EyeOff as nt, FileText as rt, HardDrive as it, Info as at, Key as ot, Link2 as h, Loader2 as g, Monitor as st, Play as ct, Plus as lt, Puzzle as ut, RefreshCw as dt, ScrollText as ft, Search as pt, Server as mt, Settings as ht, Shield as gt, Square as _t, Tag as vt, Terminal as yt, Trash2 as bt, Unlink as xt, Users as St, Wrench as Ct, X as _, Zap as wt } from "lucide-react";
40
- import { useParams as Tt } from "react-router-dom";
41
- import { usePermissions as Et } from "@burdenoff/fe-libs/shared/providers/shell";
42
- import { AnimatePresence as Dt, motion as v } from "framer-motion";
34
+ import { useQueryBackedTab as ze } from "../hooks/useQueryBackedTab.js";
35
+ import { mintScopedIframeToken as Be } from "../services/iframeToken.js";
36
+ import { AddTabDialog as Ve } from "../components/plugins/AddTabDialog.js";
37
+ import { PluginIframeMount as He } from "../components/plugins/PluginIframeMount.js";
38
+ import { useCallback as u, useEffect as d, useMemo as Ue, useRef as f, useState as p } from "react";
39
+ import { useI18n as We } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
40
+ import { ArrowLeft as m, ArrowUpCircle as Ge, Bot as Ke, Check as qe, CheckCircle2 as Je, Clock as Ye, Command as Xe, Copy as Ze, Cpu as Qe, Database as $e, Download as et, Edit3 as tt, Eye as nt, EyeOff as rt, FileText as it, HardDrive as at, Info as ot, Key as st, Link2 as h, Loader2 as g, Monitor as ct, Play as lt, Plus as ut, Puzzle as dt, RefreshCw as ft, ScrollText as pt, Search as mt, Server as ht, Settings as gt, Shield as _t, Square as vt, Tag as yt, Terminal as bt, Trash2 as xt, Unlink as St, Users as Ct, Wrench as wt, X as _, Zap as Tt } from "lucide-react";
41
+ import { useParams as Et } from "react-router-dom";
42
+ import { usePermissions as Dt } from "@burdenoff/fe-libs/shared/providers/shell";
43
+ import { AnimatePresence as Ot, motion as v } from "framer-motion";
43
44
  import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
44
- import { Checkbox as Ot } from "@burdenoff/fe-libs/ui";
45
- import { useFeatureFlagDetails as kt } from "@burdenoff/fe-libs/shared/feature-flags";
46
- import { PermissionButton as At } from "@burdenoff/fe-libs/shared/components";
47
- import { MotionPage as jt } from "@burdenoff/fe-libs/shared/motion";
48
- import { usePluginContributions as Mt } from "@burdenoff/fe-libs/shared/plugins";
45
+ import { Checkbox as kt } from "@burdenoff/fe-libs/ui";
46
+ import { useFeatureFlagDetails as At } from "@burdenoff/fe-libs/shared/feature-flags";
47
+ import { PermissionButton as jt } from "@burdenoff/fe-libs/shared/components";
48
+ import { MotionPage as Mt } from "@burdenoff/fe-libs/shared/motion";
49
+ import { usePluginContributions as Nt } from "@burdenoff/fe-libs/shared/plugins";
49
50
  //#region src/pages/AgentDetailsPage.tsx
50
- function Nt({ agent: e, onUpdate: t }) {
51
- let { t: n } = He(), [r] = ie(), [i] = ne(), [a, ee] = m(!1), [te, o] = m(null), [s, re] = m(!1), [c, ae] = m(null), [oe, se] = m(!1), [ce, le] = m(!1), [ue, de] = m(!1), fe = !!(e.appId && e.appClientId), l = (e, t, r) => {
51
+ function Pt({ agent: e, onUpdate: t }) {
52
+ let { t: n } = We(), [r] = ae(), [i] = ne(), [a, ee] = p(!1), [te, o] = p(null), [re, ie] = p(!1), [s, oe] = p(null), [se, ce] = p(!1), [le, ue] = p(!1), [de, fe] = p(!1), pe = !!(e.appId && e.appClientId), c = (e, t, r) => {
52
53
  let i = n(e, r), a = i === e ? t : i;
53
54
  return r ? Object.entries(r).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), a) : a;
54
- }, pe = e.metadata?.devportalApplicationId, me = async () => {
55
+ }, me = e.metadata?.devportalApplicationId, he = async () => {
55
56
  ee(!0), o(null);
56
57
  try {
57
58
  let { data: n } = await i({ variables: { input: { agentId: e.id } } }), r = n?.setupAgentGatewayAuth;
58
- if (!r) throw Error(l("agentDetails.gatewayAuthNoResultError", "No result returned from setupAgentGatewayAuth"));
59
- ae(r.clientSecret), r.error && o(r.error), t();
59
+ if (!r) throw Error(c("agentDetails.gatewayAuthNoResultError", "No result returned from setupAgentGatewayAuth"));
60
+ oe(r.clientSecret), r.error && o(r.error), t();
60
61
  } catch (e) {
61
- o(e instanceof Error ? e.message : l("agentDetails.failedSetupGatewayAuth", "Failed to set up gateway auth"));
62
+ o(e instanceof Error ? e.message : c("agentDetails.failedSetupGatewayAuth", "Failed to set up gateway auth"));
62
63
  } finally {
63
64
  ee(!1);
64
65
  }
65
66
  };
66
- return /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
67
+ return /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
67
68
  className: "p-4 border-b border-border-default",
68
69
  children: /* @__PURE__ */ x("h3", {
69
70
  className: "font-semibold text-text-primary flex items-center gap-2",
70
- children: [/* @__PURE__ */ b(gt, { className: "size-5" }), l("agentDetails.gatewayAuthTitle", "Gateway Auth (OAuth2)")]
71
+ children: [/* @__PURE__ */ b(_t, { className: "size-5" }), c("agentDetails.gatewayAuthTitle", "Gateway Auth (OAuth2)")]
71
72
  })
72
73
  }), /* @__PURE__ */ x("div", {
73
74
  className: "p-4 space-y-3",
@@ -86,7 +87,7 @@ function Nt({ agent: e, onUpdate: t }) {
86
87
  children: /* @__PURE__ */ b(_, { className: "size-3.5" })
87
88
  })
88
89
  ]
89
- }), fe ? /* @__PURE__ */ x(y, { children: [
90
+ }), pe ? /* @__PURE__ */ x(y, { children: [
90
91
  /* @__PURE__ */ x("div", {
91
92
  className: "flex items-start gap-3",
92
93
  children: [/* @__PURE__ */ b("div", {
@@ -96,15 +97,15 @@ function Nt({ agent: e, onUpdate: t }) {
96
97
  className: "flex-1 min-w-0 space-y-2",
97
98
  children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
98
99
  className: "text-sm font-medium text-text-primary",
99
- children: l("agentDetails.linkedToOauthApp", "Linked to OAuth App")
100
+ children: c("agentDetails.linkedToOauthApp", "Linked to OAuth App")
100
101
  }), /* @__PURE__ */ b("p", {
101
102
  className: "text-xs text-text-muted",
102
- children: l("agentDetails.gatewayAuthLinkedDescription", "This agent can authenticate with the API gateway using Client Credentials.")
103
+ children: c("agentDetails.gatewayAuthLinkedDescription", "This agent can authenticate with the API gateway using Client Credentials.")
103
104
  })] }), /* @__PURE__ */ x("div", {
104
105
  className: "grid grid-cols-1 sm:grid-cols-2 gap-3",
105
106
  children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
106
107
  className: "text-xs text-text-secondary mb-1",
107
- children: l("agentDetails.clientId", "Client ID")
108
+ children: c("agentDetails.clientId", "Client ID")
108
109
  }), /* @__PURE__ */ x("div", {
109
110
  className: "flex items-center gap-2",
110
111
  children: [/* @__PURE__ */ b("code", {
@@ -114,16 +115,16 @@ function Nt({ agent: e, onUpdate: t }) {
114
115
  type: "button",
115
116
  onClick: async () => {
116
117
  if (e.appClientId) try {
117
- await xe(e.appClientId), be() && Se("Copied"), le(!0), setTimeout(() => le(!1), 2e3);
118
+ await Se(e.appClientId), xe() && Ce("Copied"), ue(!0), setTimeout(() => ue(!1), 2e3);
118
119
  } catch {}
119
120
  },
120
121
  className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
121
- title: l("agentDetails.copyClientId", "Copy Client ID"),
122
- children: ce ? /* @__PURE__ */ b(Ke, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ b(Xe, { className: "size-3.5 text-text-secondary" })
122
+ title: c("agentDetails.copyClientId", "Copy Client ID"),
123
+ children: le ? /* @__PURE__ */ b(qe, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ b(Ze, { className: "size-3.5 text-text-secondary" })
123
124
  })]
124
125
  })] }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
125
126
  className: "text-xs text-text-secondary mb-1",
126
- children: l("agentDetails.appId", "App ID")
127
+ children: c("agentDetails.appId", "App ID")
127
128
  }), /* @__PURE__ */ b("code", {
128
129
  className: "text-xs font-mono text-text-muted bg-bg-sunken px-2 py-1 rounded truncate block",
129
130
  children: e.appId
@@ -131,39 +132,39 @@ function Nt({ agent: e, onUpdate: t }) {
131
132
  })]
132
133
  })]
133
134
  }),
134
- c && /* @__PURE__ */ x("div", {
135
+ s && /* @__PURE__ */ x("div", {
135
136
  className: "p-3 bg-status-warning-bg/20 border border-status-warning-text/20 rounded-lg space-y-2",
136
137
  children: [
137
138
  /* @__PURE__ */ b("p", {
138
139
  className: "text-sm font-medium text-status-warning-text",
139
- children: l("agentDetails.clientSecretOneTimeTitle", "Client Secret (one-time display)")
140
+ children: c("agentDetails.clientSecretOneTimeTitle", "Client Secret (one-time display)")
140
141
  }),
141
142
  /* @__PURE__ */ b("p", {
142
143
  className: "text-xs text-text-secondary",
143
- children: l("agentDetails.clientSecretOneTimeDescription", "This secret has been automatically sent to the agent. Save it now if you need it — it won't be shown again.")
144
+ children: c("agentDetails.clientSecretOneTimeDescription", "This secret has been automatically sent to the agent. Save it now if you need it — it won't be shown again.")
144
145
  }),
145
146
  /* @__PURE__ */ x("div", {
146
147
  className: "flex items-center gap-2",
147
148
  children: [
148
149
  /* @__PURE__ */ b("code", {
149
150
  className: "text-xs font-mono text-text-primary bg-bg-sunken px-2 py-1 rounded flex-1 truncate",
150
- children: s ? c : "•".repeat(32)
151
+ children: re ? s : "•".repeat(32)
151
152
  }),
152
153
  /* @__PURE__ */ b("button", {
153
154
  type: "button",
154
- onClick: () => re(!s),
155
+ onClick: () => ie(!re),
155
156
  className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
156
- children: b(s ? nt : tt, { className: "size-3.5 text-text-secondary" })
157
+ children: b(re ? rt : nt, { className: "size-3.5 text-text-secondary" })
157
158
  }),
158
159
  /* @__PURE__ */ b("button", {
159
160
  type: "button",
160
161
  onClick: async () => {
161
- if (c) try {
162
- await xe(c), be() && Se("Secret copied"), se(!0), setTimeout(() => se(!1), 2e3);
162
+ if (s) try {
163
+ await Se(s), xe() && Ce("Secret copied"), ce(!0), setTimeout(() => ce(!1), 2e3);
163
164
  } catch {}
164
165
  },
165
166
  className: "p-1 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
166
- children: oe ? /* @__PURE__ */ b(Ke, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ b(Xe, { className: "size-3.5 text-text-secondary" })
167
+ children: se ? /* @__PURE__ */ b(qe, { className: "size-3.5 text-status-success-text" }) : /* @__PURE__ */ b(Ze, { className: "size-3.5 text-text-secondary" })
167
168
  })
168
169
  ]
169
170
  })
@@ -172,24 +173,24 @@ function Nt({ agent: e, onUpdate: t }) {
172
173
  /* @__PURE__ */ x("div", {
173
174
  className: "flex items-center gap-2",
174
175
  children: [
175
- pe && /* @__PURE__ */ x("a", {
176
- href: `/devportal/apps/${pe}`,
176
+ me && /* @__PURE__ */ x("a", {
177
+ href: `/devportal/apps/${me}`,
177
178
  className: "flex items-center gap-2 px-3 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 hover:bg-action-primary-bg/20 rounded-md transition-colors",
178
- children: [/* @__PURE__ */ b(st, { className: "size-3" }), l("agentDetails.viewInDeveloperPortal", "View in Developer Portal")]
179
+ children: [/* @__PURE__ */ b(ct, { className: "size-3" }), c("agentDetails.viewInDeveloperPortal", "View in Developer Portal")]
179
180
  }),
180
181
  /* @__PURE__ */ x("button", {
181
182
  type: "button",
182
- onClick: me,
183
+ onClick: he,
183
184
  disabled: a,
184
185
  className: "flex items-center gap-2 px-3 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 hover:bg-action-primary-bg/20 rounded-md transition-colors disabled:opacity-50",
185
- title: l("agentDetails.repushCredentialsTitle", "Rotate the OAuth secret and push it to the agent. Use this if the agent shows degraded with \"boot state awaiting-config\"."),
186
- children: [a ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(dt, { className: "size-3" }), l("agentDetails.repushCredentials", "Re-push credentials")]
186
+ title: c("agentDetails.repushCredentialsTitle", "Rotate the OAuth secret and push it to the agent. Use this if the agent shows degraded with \"boot state awaiting-config\"."),
187
+ children: [a ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(ft, { className: "size-3" }), c("agentDetails.repushCredentials", "Re-push credentials")]
187
188
  }),
188
189
  /* @__PURE__ */ x("button", {
189
190
  type: "button",
190
191
  onClick: async () => {
191
- if (window.confirm(l("agentDetails.confirmUnlinkOauthApp", "Remove the linked OAuth app from this agent? The app will still exist in auth-svc."))) {
192
- de(!0), o(null);
192
+ if (window.confirm(c("agentDetails.confirmUnlinkOauthApp", "Remove the linked OAuth app from this agent? The app will still exist in auth-svc."))) {
193
+ fe(!0), o(null);
193
194
  try {
194
195
  await r({ variables: {
195
196
  id: e.id,
@@ -197,17 +198,17 @@ function Nt({ agent: e, onUpdate: t }) {
197
198
  appId: null,
198
199
  appClientId: null
199
200
  }
200
- } }), ae(null), t();
201
+ } }), oe(null), t();
201
202
  } catch (e) {
202
- o(e instanceof Error ? e.message : l("agentDetails.failedUnlinkApp", "Failed to unlink app"));
203
+ o(e instanceof Error ? e.message : c("agentDetails.failedUnlinkApp", "Failed to unlink app"));
203
204
  } finally {
204
- de(!1);
205
+ fe(!1);
205
206
  }
206
207
  }
207
208
  },
208
- disabled: ue,
209
+ disabled: de,
209
210
  className: "flex items-center gap-2 px-3 py-1.5 text-xs text-status-error-text hover:bg-status-error-bg rounded-md transition-colors disabled:opacity-50",
210
- children: [ue ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(xt, { className: "size-3" }), l("agentDetails.unlinkApp", "Unlink App")]
211
+ children: [de ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(St, { className: "size-3" }), c("agentDetails.unlinkApp", "Unlink App")]
211
212
  })
212
213
  ]
213
214
  })
@@ -215,27 +216,27 @@ function Nt({ agent: e, onUpdate: t }) {
215
216
  className: "flex items-start gap-3",
216
217
  children: [/* @__PURE__ */ b("div", {
217
218
  className: "size-8 rounded-lg bg-bg-sunken flex items-center justify-center flex-shrink-0 mt-0.5",
218
- children: /* @__PURE__ */ b(gt, { className: "size-4 text-text-muted" })
219
+ children: /* @__PURE__ */ b(_t, { className: "size-4 text-text-muted" })
219
220
  }), /* @__PURE__ */ x("div", {
220
221
  className: "flex-1",
221
222
  children: [/* @__PURE__ */ b("p", {
222
223
  className: "text-sm font-medium text-text-primary",
223
- children: l("agentDetails.noOauthAppLinked", "No OAuth App Linked")
224
+ children: c("agentDetails.noOauthAppLinked", "No OAuth App Linked")
224
225
  }), /* @__PURE__ */ b("p", {
225
226
  className: "text-xs text-text-muted mt-0.5",
226
- children: l("agentDetails.gatewayAuthSetupDescription", "Set up gateway auth to allow this agent to communicate with the API gateways using OAuth2 Client Credentials. This creates an OAuth app, registers it in the Developer Portal, and pushes the credentials to the agent.")
227
+ children: c("agentDetails.gatewayAuthSetupDescription", "Set up gateway auth to allow this agent to communicate with the API gateways using OAuth2 Client Credentials. This creates an OAuth app, registers it in the Developer Portal, and pushes the credentials to the agent.")
227
228
  })]
228
229
  })]
229
230
  }), /* @__PURE__ */ b("button", {
230
231
  type: "button",
231
- onClick: me,
232
+ onClick: he,
232
233
  disabled: a,
233
234
  className: "flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
234
- children: a ? /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(g, { className: "size-4 animate-spin" }), l("agentDetails.settingUp", "Setting up...")] }) : /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(h, { className: "size-4" }), l("agentDetails.setupGatewayAuth", "Setup Gateway Auth")] })
235
+ children: a ? /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(g, { className: "size-4 animate-spin" }), c("agentDetails.settingUp", "Setting up...")] }) : /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(h, { className: "size-4" }), c("agentDetails.setupGatewayAuth", "Setup Gateway Auth")] })
235
236
  })] })]
236
237
  })] });
237
238
  }
238
- var Pt = [
239
+ var Ft = [
239
240
  "overview",
240
241
  "profiles",
241
242
  "security",
@@ -249,11 +250,11 @@ var Pt = [
249
250
  "backup",
250
251
  "maintenance"
251
252
  ];
252
- function Ft() {
253
- let { t: ne } = He(), { id: h } = Tt(), { basePath: xt } = fe(), Ft = xt || "", S = l(), { hasPermission: It, isLoading: Lt, permissions: Rt } = Et(), C = d((e, t, n) => {
253
+ function It() {
254
+ let { t: ne } = We(), { id: h } = Et(), { basePath: St } = pe(), It = St || "", S = c(), { hasPermission: Lt, isLoading: Rt, permissions: zt } = Dt(), C = u((e, t, n) => {
254
255
  let r = ne(e, n), i = r === e ? t : r;
255
256
  return n ? Object.entries(n).reduce((e, [t, n]) => e.replace(`{{${t}}}`, String(n)), i) : i;
256
- }, [ne]), [zt] = ie({ refetchQueries: ["GetAgent"] }), [Bt] = i({
257
+ }, [ne]), [Bt] = ae({ refetchQueries: ["GetAgent"] }), [Vt] = i({
257
258
  refetchQueries: ["ListAgents", "VibeControlsInitialData"],
258
259
  awaitRefetchQueries: !0,
259
260
  update(e, t, { variables: n }) {
@@ -263,56 +264,56 @@ function Ft() {
263
264
  id: r
264
265
  }) }), e.gc());
265
266
  }
266
- }), [Vt] = n({ refetchQueries: ["GetAgent"] }), [Ht] = s(), [Ut] = re(), [w, Wt] = m(null), [Gt, Kt] = m(null), qt = pe((e) => e.setActiveAgentId);
267
- f(() => {
268
- h && qt(h);
269
- }, [h, qt]);
270
- let [Jt, Yt] = m(!1), [Xt, T] = m(null), [Zt, Qt] = m(!1), [$t, E] = m(null), [en, tn] = m(!1), [nn, rn] = m(!1), [an, on] = m(""), [D, sn] = m(!1), [cn, ln] = m(null), un = p(null), dn = p(null), fn = p(null), pn = p(null), mn = p(null), [hn, gn] = m(!1), [_n, vn] = m(!1), [O, yn] = m(null), [bn, xn] = m(!1), [Sn, Cn] = m(null), [wn] = t({ fetchPolicy: "network-only" }), [k, A] = m(!1), [Tn, j] = m(null), [M, En] = m(!1), N = p(null), Dn = p(null), On = p(null), kn = p(null), [An] = r({ refetchQueries: ["GetAgent", "ListSessions"] });
271
- f(() => {
267
+ }), [Ht] = n({ refetchQueries: ["GetAgent"] }), [Ut] = re(), [Wt] = ie(), [w, Gt] = p(null), [Kt, qt] = p(null), Jt = me((e) => e.setActiveAgentId);
268
+ d(() => {
269
+ h && Jt(h);
270
+ }, [h, Jt]);
271
+ let [Yt, Xt] = p(!1), [Zt, T] = p(null), [Qt, $t] = p(!1), [en, E] = p(null), [tn, nn] = p(!1), [rn, an] = p(!1), [on, sn] = p(""), [D, cn] = p(!1), [ln, un] = p(null), dn = f(null), fn = f(null), pn = f(null), mn = f(null), hn = f(null), [gn, _n] = p(!1), [vn, yn] = p(!1), [O, bn] = p(null), [xn, Sn] = p(!1), [Cn, wn] = p(null), [Tn] = t({ fetchPolicy: "network-only" }), [k, A] = p(!1), [En, j] = p(null), [M, Dn] = p(!1), N = f(null), On = f(null), kn = f(null), An = f(null), [jn] = r({ refetchQueries: ["GetAgent", "ListSessions"] });
272
+ d(() => {
272
273
  if (!k) return;
273
274
  let e = (e) => {
274
275
  e.key === "Escape" && !M && A(!1);
275
276
  };
276
277
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
277
- }, [k, M]), f(() => {
278
+ }, [k, M]), d(() => {
278
279
  if (!k) return;
279
280
  let e = requestAnimationFrame(() => N.current?.focus());
280
281
  return () => cancelAnimationFrame(e);
281
282
  }, [k]);
282
- let { data: jn, loading: Mn, error: Nn, refetch: P } = a({
283
+ let { data: Mn, loading: Nn, error: Pn, refetch: P } = a({
283
284
  variables: { id: h || "" },
284
285
  skip: !h,
285
286
  fetchPolicy: "cache-and-network"
286
- }), F = jn?.vibecontrolsAgent, I = oe({
287
+ }), F = Mn?.vibecontrolsAgent, I = se({
287
288
  fetchPolicy: "cache-and-network",
288
289
  nextFetchPolicy: "cache-first",
289
290
  notifyOnNetworkStatusChange: !0,
290
291
  skip: !h,
291
292
  pollInterval: 3e4
292
- }), { data: Pn } = ae({ skip: !h }), Fn = I.data === void 0 && Pn === void 0, L = Ve(() => {
293
- let e = /* @__PURE__ */ new Map(), t = Pn?.vibecontrolsAgentHealthProbeStream ?? I.data?.vibecontrolsAgentHealthProbes ?? [];
293
+ }), { data: Fn } = oe({ skip: !h }), In = I.data === void 0 && Fn === void 0, L = Ue(() => {
294
+ let e = /* @__PURE__ */ new Map(), t = Fn?.vibecontrolsAgentHealthProbeStream ?? I.data?.vibecontrolsAgentHealthProbes ?? [];
294
295
  for (let n of t) e.set(n.agentId, {
295
296
  agentId: n.agentId,
296
297
  healthy: n.healthy,
297
298
  errorMessage: n.errorMessage
298
299
  });
299
300
  return e;
300
- }, [I.data, Pn]), R = Ve(() => F ? Ne({
301
+ }, [I.data, Fn]), R = Ue(() => F ? Fe({
301
302
  id: F.id,
302
303
  isActive: F.isActive,
303
304
  metadata: F.metadata
304
- }, L, { probesLoading: Fn }) : "REGISTERING", [
305
+ }, L, { probesLoading: In }) : "REGISTERING", [
305
306
  F,
306
307
  L,
307
- Fn
308
- ]), In = R === "STOPPED" || R === "OFFLINE", { active: z } = ye(F?.id ?? null), B = kt("vibes.tabs.iframe-host")?.value === !0, Ln = Ve(() => {
308
+ In
309
+ ]), Ln = R === "STOPPED" || R === "OFFLINE", { active: z } = be(F?.id ?? null), B = At("vibes.tabs.iframe-host")?.value === !0, Rn = Ue(() => {
309
310
  if (!B || !F?.tunnelUrl) return [];
310
311
  let e = F.id, t = z ?? "default";
311
312
  return [{
312
313
  tunnelUrl: F.tunnelUrl,
313
314
  profile: t,
314
315
  label: F.name ?? F.id,
315
- mintIframeToken: async ({ pathPrefixes: n }) => Re(e, t, n)
316
+ mintIframeToken: async ({ pathPrefixes: n }) => Be(e, t, n)
316
317
  }];
317
318
  }, [
318
319
  B,
@@ -320,33 +321,33 @@ function Ft() {
320
321
  F?.tunnelUrl,
321
322
  F?.name,
322
323
  z
323
- ]), V = Mt(Ln, {
324
+ ]), V = Nt(Rn, {
324
325
  mountPoint: "agent.detailTab",
325
- enabled: B && Ln.length > 0
326
- }), [H, Rn] = Le(Ve(() => {
326
+ enabled: B && Rn.length > 0
327
+ }), [H, zn] = ze(Ue(() => {
327
328
  let e = V.data.filter((e) => e.contribution.mountPoint === "agent.detailTab").map((e) => e.contribution.id);
328
- return [...Pt, ...e];
329
- }, [V.data]), "overview"), [zn, Bn] = m(!1), Vn = p(!1);
330
- f(() => {
331
- F && !Vn.current && (Vn.current = !0, Vt().catch(() => {}));
332
- }, [F, Vt]);
333
- let [Hn] = te(), Un = p(!1);
334
- f(() => {
335
- if (!F || Un.current) return;
329
+ return [...Ft, ...e];
330
+ }, [V.data]), "overview"), [Bn, Vn] = p(!1), Hn = f(!1);
331
+ d(() => {
332
+ F && !Hn.current && (Hn.current = !0, Ht().catch(() => {}));
333
+ }, [F, Ht]);
334
+ let [Un] = te(), Wn = f(!1);
335
+ d(() => {
336
+ if (!F || Wn.current) return;
336
337
  let e = !!(F.appId && F.appClientId), t = !!F.tunnelUrl;
337
- !e || !t || (Un.current = !0, Hn({ variables: { input: { agentId: F.id } } }).then(() => {
338
+ !e || !t || (Wn.current = !0, Un({ variables: { input: { agentId: F.id } } }).then(() => {
338
339
  P().catch(() => {});
339
340
  }).catch(() => {}));
340
341
  }, [
341
342
  F,
342
- Hn,
343
+ Un,
343
344
  P
344
345
  ]);
345
- let [U, Wn] = m([]), [Gn, Kn] = m([]), [qn, Jn] = m(!0), [W, G] = m(null), [Yn, K] = m(null), [Xn, Zn] = m(!1), [Qn, $n] = m(!1), [er, tr] = m(!1), [nr, rr] = m(!1), [ir, ar] = m(!1), [or, sr] = m("plugin"), cr = p(null), [q, lr] = m("installed"), [J, ur] = m(""), [Y, dr] = m([]), [fr, pr] = m(!1), [mr, hr] = m(null), [gr, _r] = m(null), [vr] = e(), [yr] = ee(), [br] = o(), [xr] = c(), X = d(async () => {
346
+ let [U, Gn] = p([]), [Kn, qn] = p([]), [Jn, Yn] = p(!0), [W, G] = p(null), [Xn, K] = p(null), [Zn, Qn] = p(!1), [$n, er] = p(!1), [tr, nr] = p(!1), [rr, ir] = p(!1), [ar, or] = p(!1), [sr, cr] = p("plugin"), lr = f(null), [q, ur] = p("installed"), [J, dr] = p(""), [Y, fr] = p([]), [pr, mr] = p(!1), [hr, gr] = p(null), [_r, vr] = p(null), [yr] = e(), [br] = ee(), [xr] = o(), [Sr] = s(), X = u(async () => {
346
347
  if (F?.id) {
347
- Jn(!0), K(null);
348
+ Yn(!0), K(null);
348
349
  try {
349
- let { data: e } = await vr({ variables: {
350
+ let { data: e } = await yr({ variables: {
350
351
  agentId: F.id,
351
352
  profile: z
352
353
  } }), t = e?.agentPlugins;
@@ -376,41 +377,41 @@ function Ft() {
376
377
  tags: [...e.tags],
377
378
  installed: e.installed
378
379
  }));
379
- Wn(e), Kn(n), t.error && K(t.error);
380
+ Gn(e), qn(n), t.error && K(t.error);
380
381
  }
381
382
  } catch {
382
383
  K("Agent unreachable — unable to fetch plugin list");
383
384
  } finally {
384
- Jn(!1);
385
+ Yn(!1);
385
386
  }
386
387
  }
387
388
  }, [
388
389
  F?.id,
389
- vr,
390
+ yr,
390
391
  z
391
392
  ]);
392
- f(() => {
393
+ d(() => {
393
394
  if (!F?.id) return;
394
395
  let e = `${F.id}:${z}`;
395
- cr.current !== e && (cr.current = e, X());
396
+ lr.current !== e && (lr.current = e, X());
396
397
  }, [
397
398
  F?.id,
398
399
  z,
399
400
  X
400
401
  ]);
401
- let Sr = d(async (e) => {
402
+ let Cr = u(async (e) => {
402
403
  if (F?.id) {
403
404
  G(e);
404
405
  try {
405
- let { data: t } = await yr({ variables: {
406
+ let { data: t } = await br({ variables: {
406
407
  agentId: F.id,
407
408
  packageName: e
408
409
  } });
409
410
  if (t?.installAgentPlugin?.success) await X();
410
411
  else throw Error(t?.installAgentPlugin?.error || C("agentDetails.installFailed", "Install failed"));
411
412
  } catch (e) {
412
- if (ue(e)) {
413
- de(), sr("plugin"), ar(!0);
413
+ if (de(e)) {
414
+ fe(), cr("plugin"), or(!0);
414
415
  return;
415
416
  }
416
417
  K(e instanceof Error ? e.message : C("agentDetails.pluginInstallFailed", "Failed to install plugin")), setTimeout(() => K(null), 5e3);
@@ -420,14 +421,14 @@ function Ft() {
420
421
  }
421
422
  }, [
422
423
  F?.id,
423
- yr,
424
+ br,
424
425
  X,
425
426
  C
426
- ]), Cr = d(async (e) => {
427
+ ]), wr = u(async (e) => {
427
428
  if (F?.id && window.confirm(C("agentDetails.removePluginConfirm", "Remove plugin {{packageName}}?", { packageName: e }))) {
428
429
  G(e);
429
430
  try {
430
- let { data: t } = await br({ variables: {
431
+ let { data: t } = await xr({ variables: {
431
432
  agentId: F.id,
432
433
  packageName: e
433
434
  } });
@@ -441,17 +442,17 @@ function Ft() {
441
442
  }
442
443
  }, [
443
444
  F?.id,
444
- br,
445
+ xr,
445
446
  X,
446
447
  C
447
- ]), wr = d(async (e) => {
448
+ ]), Tr = u(async (e) => {
448
449
  if (!F?.id) return;
449
450
  let t = window.prompt(C("agentDetails.updatePluginPrompt", "Update {{packageName}} to which version? Leave blank for latest.", { packageName: e }));
450
451
  if (t === null) return;
451
452
  let n = t.trim() || void 0;
452
453
  G(e);
453
454
  try {
454
- let { data: t } = await xr({ variables: {
455
+ let { data: t } = await Sr({ variables: {
455
456
  agentId: F.id,
456
457
  packageName: e,
457
458
  version: n ?? null
@@ -465,11 +466,11 @@ function Ft() {
465
466
  }
466
467
  }, [
467
468
  F?.id,
468
- xr,
469
+ Sr,
469
470
  X,
470
471
  C
471
- ]), Z = F?.sessions || [], Q = F?.vibes || [], Tr = d(async () => {
472
- pr(!0), hr(null);
472
+ ]), Z = F?.sessions || [], Q = F?.vibes || [], Er = u(async () => {
473
+ mr(!0), gr(null);
473
474
  try {
474
475
  let e = await (await fetch(typeof window < "u" && window.__BURDENOFF_GLOBAL_GATEWAY__ || "/global/graphql", {
475
476
  method: "POST",
@@ -478,29 +479,29 @@ function Ft() {
478
479
  body: JSON.stringify({ query: "query MyStorePlugins {\n myEntitlements {\n id\n productId\n licenseKey\n product {\n id\n name\n slug\n icon\n description\n manifest\n }\n }\n }" })
479
480
  })).json();
480
481
  if (e.errors?.length) throw Error(e.errors[0]?.message ?? "Failed to load store plugins");
481
- dr((e.data?.myEntitlements ?? []).filter((e) => {
482
+ fr((e.data?.myEntitlements ?? []).filter((e) => {
482
483
  let t = e.product?.manifest;
483
484
  if (!t) return !1;
484
485
  let n = t.itemType?.toLowerCase();
485
486
  return n === "vibemodule" || n === "plugin";
486
487
  }));
487
488
  } catch (e) {
488
- hr(e instanceof Error ? e.message : "Failed to load store plugins");
489
+ gr(e instanceof Error ? e.message : "Failed to load store plugins");
489
490
  } finally {
490
- pr(!1);
491
+ mr(!1);
491
492
  }
492
493
  }, []);
493
- f(() => {
494
- q === "store" && Y.length === 0 && !fr && Tr();
494
+ d(() => {
495
+ q === "store" && Y.length === 0 && !pr && Er();
495
496
  }, [
496
497
  q,
497
498
  Y.length,
498
- fr,
499
- Tr
499
+ pr,
500
+ Er
500
501
  ]);
501
- let Er = d(async (e, t) => {
502
+ let Dr = u(async (e, t) => {
502
503
  if (F?.id) {
503
- _r(e);
504
+ vr(e);
504
505
  try {
505
506
  let n = await (await fetch(typeof window < "u" && window.__BURDENOFF_WSPACE_GATEWAY__ || "/workspaces/graphql", {
506
507
  method: "POST",
@@ -518,52 +519,52 @@ function Ft() {
518
519
  if (n.errors?.length) throw Error(n.errors[0]?.message ?? "Install failed");
519
520
  let r = n.data?.installStorePluginOnAgent;
520
521
  if (!r?.success) throw Error(r?.error ?? "Install failed");
521
- await X(), lr("installed");
522
+ await X(), ur("installed");
522
523
  } catch (e) {
523
- hr(e instanceof Error ? e.message : "Install failed");
524
+ gr(e instanceof Error ? e.message : "Install failed");
524
525
  } finally {
525
- _r(null);
526
+ vr(null);
526
527
  }
527
528
  }
528
529
  }, [F?.id, X]);
529
- f(() => {
530
+ d(() => {
530
531
  if (typeof window > "u" || !F?.id) return;
531
532
  let e = new URLSearchParams(window.location.search), t = e.get("install"), n = e.get("licenseKey");
532
- if (t && t !== gr) {
533
- lr("store"), Er(t, n);
533
+ if (t && t !== _r) {
534
+ ur("store"), Dr(t, n);
534
535
  let e = new URL(window.location.href);
535
536
  e.searchParams.delete("install"), e.searchParams.delete("licenseKey"), window.history.replaceState({}, "", e.toString());
536
537
  }
537
538
  }, [
538
539
  F?.id,
539
- Er,
540
- gr
540
+ Dr,
541
+ _r
541
542
  ]);
542
- let Dr = d(async () => {
543
+ let Or = u(async () => {
543
544
  if (!F?.id) return null;
544
545
  if (O) return O;
545
- xn(!0), Cn(null);
546
+ Sn(!0), wn(null);
546
547
  try {
547
- let e = (await wn({ variables: { agentId: F.id } })).data?.vibecontrolsAgentSecretReveal ?? null;
548
- return e ? (yn(e), e) : (Cn("No API key configured"), null);
548
+ let e = (await Tn({ variables: { agentId: F.id } })).data?.vibecontrolsAgentSecretReveal ?? null;
549
+ return e ? (bn(e), e) : (wn("No API key configured"), null);
549
550
  } catch (e) {
550
- return Cn(e instanceof Error ? e.message : "Reveal failed"), null;
551
+ return wn(e instanceof Error ? e.message : "Reveal failed"), null;
551
552
  } finally {
552
- xn(!1);
553
+ Sn(!1);
553
554
  }
554
555
  }, [
555
556
  F?.id,
556
557
  O,
557
- wn
558
+ Tn
558
559
  ]);
559
- if (Lt) return /* @__PURE__ */ b("div", {
560
+ if (Rt) return /* @__PURE__ */ b("div", {
560
561
  className: "flex items-center justify-center min-h-[400px]",
561
562
  children: /* @__PURE__ */ b("p", {
562
563
  className: "text-text-secondary",
563
564
  children: "Loading permissions…"
564
565
  })
565
566
  });
566
- if (Rt && (Rt.permissionStrings?.length ?? 0) > 0 && !It(Ce.AGENT_READ)) return /* @__PURE__ */ b("div", {
567
+ if (zt && (zt.permissionStrings?.length ?? 0) > 0 && !Lt(we.AGENT_READ)) return /* @__PURE__ */ b("div", {
567
568
  className: "flex items-center justify-center min-h-[400px]",
568
569
  children: /* @__PURE__ */ x("div", {
569
570
  className: "text-center space-y-2",
@@ -578,49 +579,49 @@ function Ft() {
578
579
  });
579
580
  let $ = () => {
580
581
  S("/agents");
581
- }, Or = async (e) => {
582
+ }, kr = async (e) => {
582
583
  if (!(!F?.id || w)) {
583
- Wt(e), Kt(null);
584
+ Gt(e), qt(null);
584
585
  try {
585
- let t = e === "start" ? await Ht({ variables: { agentId: F.id } }) : await Ut({ variables: { agentId: F.id } }), n = e === "start" ? t.data?.startVibecontrolsAgent : t.data?.stopVibecontrolsAgent;
586
+ let t = e === "start" ? await Ut({ variables: { agentId: F.id } }) : await Wt({ variables: { agentId: F.id } }), n = e === "start" ? t.data?.startVibecontrolsAgent : t.data?.stopVibecontrolsAgent;
586
587
  if (!n || n.success === !1) throw Error(n?.error || `Failed to ${e} agent`);
587
588
  E(e === "start" ? C("agentDetails.agentStarted", "Agent started") : C("agentDetails.agentStopped", "Agent stopped")), setTimeout(() => E(null), 3e3), await Promise.all([P(), I.refetch()]).catch(() => {});
588
589
  } catch (t) {
589
590
  let n = t instanceof Error ? t.message : "";
590
- Kt(/unable to connect|fetch failed|timed? ?out|ECONN|agent returned 5|network/i.test(n) ? C("agentDetails.agentUnreachable", `Couldn't reach the agent to ${e} it — it may be offline or its tunnel is down. Start it from the host with: vibe start`) : n || C("agentDetails.lifecycleFailed", `Failed to ${e} agent`)), setTimeout(() => Kt(null), 6e3);
591
+ qt(/unable to connect|fetch failed|timed? ?out|ECONN|agent returned 5|network/i.test(n) ? C("agentDetails.agentUnreachable", `Couldn't reach the agent to ${e} it — it may be offline or its tunnel is down. Start it from the host with: vibe start`) : n || C("agentDetails.lifecycleFailed", `Failed to ${e} agent`)), setTimeout(() => qt(null), 6e3);
591
592
  } finally {
592
- Wt(null);
593
+ Gt(null);
593
594
  }
594
595
  }
595
- }, kr = () => void Or("start"), Ar = () => void Or("stop"), jr = async () => {
596
+ }, Ar = () => void kr("start"), jr = () => void kr("stop"), Mr = async () => {
596
597
  await Promise.all([P(), I.refetch()]).catch(() => {}), S("/agents");
597
- }, Mr = () => {
598
- T(null), Yt(!0);
599
- }, Nr = async () => {
598
+ }, Nr = () => {
599
+ T(null), Xt(!0);
600
+ }, Pr = async () => {
600
601
  if (!F?.id) return;
601
- let e = an.trim();
602
+ let e = on.trim();
602
603
  if (!e || e === F.name) {
603
- rn(!1);
604
+ an(!1);
604
605
  return;
605
606
  }
606
- sn(!0), ln(null);
607
+ cn(!0), un(null);
607
608
  try {
608
- let t = await zt({ variables: {
609
+ let t = await Bt({ variables: {
609
610
  id: F.id,
610
611
  input: { name: e }
611
612
  } });
612
613
  if (t.error) throw t.error;
613
- rn(!1);
614
+ an(!1);
614
615
  } catch (e) {
615
- ln(e instanceof Error ? e.message : String(e));
616
+ un(e instanceof Error ? e.message : String(e));
616
617
  } finally {
617
- sn(!1);
618
+ cn(!1);
618
619
  }
619
- }, Pr = () => {
620
- rn(!1), on(""), ln(null);
621
- }, Fr = async () => {
620
+ }, Fr = () => {
621
+ an(!1), sn(""), un(null);
622
+ }, Ir = async () => {
622
623
  if (!F?.id) return;
623
- let e = dn.current?.value?.trim(), t = fn.current?.value?.trim(), n = pn.current?.value?.trim(), r = mn.current?.value?.trim();
624
+ let e = fn.current?.value?.trim(), t = pn.current?.value?.trim(), n = mn.current?.value?.trim(), r = hn.current?.value?.trim();
624
625
  if (!e) {
625
626
  T(C("agentDetails.agentNameRequired", "Agent name is required"));
626
627
  return;
@@ -632,9 +633,9 @@ function Ft() {
632
633
  T(C("agentDetails.metadataJsonRequired", "Metadata must be valid JSON"));
633
634
  return;
634
635
  }
635
- Qt(!0), T(null);
636
+ $t(!0), T(null);
636
637
  try {
637
- await zt({ variables: {
638
+ await Bt({ variables: {
638
639
  id: F.id,
639
640
  input: {
640
641
  name: e,
@@ -642,44 +643,44 @@ function Ft() {
642
643
  aiContext: n || null,
643
644
  metadata: i
644
645
  }
645
- } }), Yt(!1), E(C("agentDetails.configurationUpdated", "Agent configuration updated successfully")), setTimeout(() => E(null), 3e3);
646
+ } }), Xt(!1), E(C("agentDetails.configurationUpdated", "Agent configuration updated successfully")), setTimeout(() => E(null), 3e3);
646
647
  } catch (e) {
647
648
  T(e instanceof Error ? e.message : C("agentDetails.configurationUpdateFailed", "Failed to update agent configuration"));
648
649
  } finally {
649
- Qt(!1);
650
+ $t(!1);
650
651
  }
651
- }, Ir = async () => {
652
- let e = await Dr();
652
+ }, Lr = async () => {
653
+ let e = await Or();
653
654
  if (e) try {
654
- await xe(e), be() && Se("API key copied"), vn(!0), setTimeout(() => vn(!1), 2e3);
655
+ await Se(e), xe() && Ce("API key copied"), yn(!0), setTimeout(() => yn(!1), 2e3);
655
656
  } catch {
656
657
  console.error("Failed to copy API key");
657
658
  }
658
- }, Lr = async () => {
659
- hn || await Dr(), gn((e) => !e);
660
- }, Rr = () => {
661
- F?.id && ($n(!1), tr(!1), Zn(!0));
662
- }, zr = async () => {
659
+ }, Rr = async () => {
660
+ gn || await Or(), _n((e) => !e);
661
+ }, zr = () => {
662
+ F?.id && (er(!1), nr(!1), Qn(!0));
663
+ }, Br = async () => {
663
664
  if (F?.id) {
664
- rr(!0);
665
+ ir(!0);
665
666
  try {
666
- await Bt({ variables: {
667
+ await Vt({ variables: {
667
668
  id: F.id,
668
- uninstallFromTarget: Qn,
669
- deleteTarget: er
670
- } }), Zn(!1), $();
669
+ uninstallFromTarget: $n,
670
+ deleteTarget: tr
671
+ } }), Qn(!1), $();
671
672
  } catch (e) {
672
673
  console.error("Failed to remove agent:", e);
673
674
  } finally {
674
- rr(!1);
675
+ ir(!1);
675
676
  }
676
677
  }
677
- }, Br = (e) => {
678
+ }, Vr = (e) => {
678
679
  S(`/sessions/${e}`);
679
- }, Vr = () => {
680
+ }, Hr = () => {
680
681
  j(null), A(!0);
681
- }, Hr = async () => {
682
- let e = N.current?.value?.trim(), t = Dn.current?.value, n = On.current?.value?.trim() || void 0, r = kn.current?.value?.trim() || void 0;
682
+ }, Ur = async () => {
683
+ let e = N.current?.value?.trim(), t = On.current?.value, n = kn.current?.value?.trim() || void 0, r = An.current?.value?.trim() || void 0;
683
684
  if (!e) {
684
685
  j(C("vibeDetails.sessionNameRequired", "Session name is required"));
685
686
  return;
@@ -693,62 +694,62 @@ function Ft() {
693
694
  j(C("sessions.agentNotHealthy", "The selected agent isn’t fully reachable right now. Please wait for the agent badge to turn green and retry.") + (i.errorMessage ? ` (${i.errorMessage})` : ""));
694
695
  return;
695
696
  }
696
- En(!0), j(null);
697
+ Dn(!0), j(null);
697
698
  try {
698
- await An({ variables: { input: {
699
+ await jn({ variables: { input: {
699
700
  name: e,
700
701
  type: t || "TERMINAL",
701
702
  agentId: F.id,
702
703
  command: n,
703
704
  workingDirectory: r
704
- } } }), A(!1), N.current && (N.current.value = ""), Dn.current && (Dn.current.selectedIndex = 0), On.current && (On.current.value = ""), kn.current && (kn.current.value = ""), E(C("sessions.createdSuccess", "Session created successfully")), setTimeout(() => E(null), 3e3);
705
+ } } }), A(!1), N.current && (N.current.value = ""), On.current && (On.current.selectedIndex = 0), kn.current && (kn.current.value = ""), An.current && (An.current.value = ""), E(C("sessions.createdSuccess", "Session created successfully")), setTimeout(() => E(null), 3e3);
705
706
  } catch (e) {
706
- if (ue(e)) {
707
- A(!1), de(), sr("session"), ar(!0);
707
+ if (de(e)) {
708
+ A(!1), fe(), cr("session"), or(!0);
708
709
  return;
709
710
  }
710
711
  j(e instanceof Error ? e.message : C("sessions.failedCreate", "Failed to create session"));
711
712
  } finally {
712
- En(!1);
713
+ Dn(!1);
713
714
  }
714
- }, Ur = (e) => {
715
- S(`/vibes/${e}`);
716
715
  }, Wr = (e) => {
716
+ S(`/vibes/${e}`);
717
+ }, Gr = (e) => {
717
718
  if (!e) return C("health.never", "Never");
718
719
  let t = Date.now() - new Date(e).getTime();
719
720
  return t < 6e4 ? C("health.justNow", "Just now") : t < 36e5 ? C("agentDetails.minutesAgo", "{{count}}m ago", { count: Math.floor(t / 6e4) }) : t < 864e5 ? C("agentDetails.hoursAgo", "{{count}}h ago", { count: Math.floor(t / 36e5) }) : new Date(e).toLocaleDateString();
720
721
  };
721
- if (Mn && !F) return /* @__PURE__ */ x(jt, {
722
+ if (Nn && !F) return /* @__PURE__ */ x(Mt, {
722
723
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
723
724
  children: [/* @__PURE__ */ x("button", {
724
725
  type: "button",
725
726
  onClick: $,
726
727
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
727
- children: [/* @__PURE__ */ b(Ue, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
728
- }), /* @__PURE__ */ b(we, { variant: "detail" })]
728
+ children: [/* @__PURE__ */ b(m, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
729
+ }), /* @__PURE__ */ b(Te, { variant: "detail" })]
729
730
  });
730
- if (Nn && !F) return /* @__PURE__ */ x(jt, {
731
+ if (Pn && !F) return /* @__PURE__ */ x(Mt, {
731
732
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
732
733
  children: [/* @__PURE__ */ x("button", {
733
734
  type: "button",
734
735
  onClick: $,
735
736
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
736
- children: [/* @__PURE__ */ b(Ue, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
737
- }), /* @__PURE__ */ b(he, {
737
+ children: [/* @__PURE__ */ b(m, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
738
+ }), /* @__PURE__ */ b(ge, {
738
739
  title: C("agentDetails.failedLoad", "Failed to load agent"),
739
- message: Nn.message,
740
+ message: Pn.message,
740
741
  onRetry: () => P()
741
742
  })]
742
743
  });
743
- if (!F) return /* @__PURE__ */ x(jt, {
744
+ if (!F) return /* @__PURE__ */ x(Mt, {
744
745
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
745
746
  children: [/* @__PURE__ */ x("button", {
746
747
  type: "button",
747
748
  onClick: $,
748
749
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
749
- children: [/* @__PURE__ */ b(Ue, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
750
- }), /* @__PURE__ */ b(_e, {
751
- icon: /* @__PURE__ */ b(mt, { className: "size-8 text-text-secondary" }),
750
+ children: [/* @__PURE__ */ b(m, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
751
+ }), /* @__PURE__ */ b(ve, {
752
+ icon: /* @__PURE__ */ b(ht, { className: "size-8 text-text-secondary" }),
752
753
  title: C("agentDetails.notFound", "Agent not found"),
753
754
  description: `${C("agentDetails.notFoundDescriptionPrefix", "No agent with ID")} "${h}" ${C("agentDetails.notFoundDescriptionSuffix", "exists")}`,
754
755
  action: /* @__PURE__ */ b("button", {
@@ -759,94 +760,94 @@ function Ft() {
759
760
  })
760
761
  })]
761
762
  });
762
- let Gr = [
763
+ let Kr = [
763
764
  {
764
765
  id: "overview",
765
766
  label: C("nav.overview", "Overview"),
766
- icon: mt
767
+ icon: ht
767
768
  },
768
769
  {
769
770
  id: "profiles",
770
771
  label: C("agentDetails.profiles", "Profiles"),
771
- icon: St
772
+ icon: Ct
772
773
  },
773
774
  {
774
775
  id: "security",
775
776
  label: C("agentDetails.security", "Security"),
776
- icon: gt
777
+ icon: _t
777
778
  },
778
779
  {
779
780
  id: "plugins",
780
781
  label: C("agentDetails.plugins", "Plugins"),
781
- icon: ut,
782
+ icon: dt,
782
783
  badge: `${U.length}`
783
784
  },
784
785
  {
785
786
  id: "sessions",
786
787
  label: C("nav.sessions", "Sessions"),
787
- icon: yt,
788
+ icon: bt,
788
789
  badge: `${Z.length}`
789
790
  },
790
791
  {
791
792
  id: "logs",
792
793
  label: C("nav.logs", "Logs"),
793
- icon: ft
794
+ icon: pt
794
795
  },
795
796
  {
796
797
  id: "connection",
797
798
  label: C("agentDetails.connection", "Connection Log"),
798
- icon: ft
799
+ icon: pt
799
800
  },
800
801
  {
801
802
  id: "vibes",
802
803
  label: C("nav.vibes", "Vibes"),
803
- icon: wt,
804
+ icon: Tt,
804
805
  badge: `${Q.length}`
805
806
  },
806
807
  {
807
808
  id: "notes",
808
809
  label: C("vibeDetails.notes", "Notes"),
809
- icon: rt
810
+ icon: it
810
811
  },
811
812
  {
812
813
  id: "aliases",
813
814
  label: C("agentDetails.aliases", "Aliases"),
814
- icon: Ye
815
+ icon: Xe
815
816
  },
816
817
  {
817
818
  id: "backup",
818
819
  label: C("agentDetails.backup", "Backup"),
819
- icon: Qe
820
+ icon: $e
820
821
  },
821
822
  {
822
823
  id: "maintenance",
823
824
  label: C("agentDetails.maintenance.tab", "Maintenance"),
824
- icon: Ct
825
+ icon: wt
825
826
  }
826
- ], Kr = Z.filter((e) => e.status === "RUNNING").length;
827
- return F?.tunnelUrl, /* @__PURE__ */ x(jt, {
827
+ ], qr = Z.filter((e) => e.status === "RUNNING").length;
828
+ return F?.tunnelUrl, /* @__PURE__ */ x(Mt, {
828
829
  className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
829
830
  children: [
830
- $t && /* @__PURE__ */ b("div", {
831
+ en && /* @__PURE__ */ b("div", {
831
832
  className: "fixed top-4 left-4 right-4 sm:left-auto z-50 bg-status-success-bg text-status-success-text px-4 py-3 rounded-md shadow-lg",
832
- children: $t
833
+ children: en
833
834
  }),
834
- Gt && /* @__PURE__ */ b("div", {
835
+ Kt && /* @__PURE__ */ b("div", {
835
836
  className: "fixed top-16 left-4 right-4 sm:left-auto z-50 bg-status-error-bg text-status-error-text px-4 py-3 rounded-md shadow-lg",
836
- children: Gt
837
+ children: Kt
837
838
  }),
838
839
  /* @__PURE__ */ x("button", {
839
840
  type: "button",
840
841
  onClick: $,
841
842
  className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
842
- children: [/* @__PURE__ */ b(Ue, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
843
+ children: [/* @__PURE__ */ b(m, { className: "size-4" }), C("agentDetails.backToAgents", "Back to Agents")]
843
844
  }),
844
- /* @__PURE__ */ b(me, {
845
+ /* @__PURE__ */ b(he, {
845
846
  title: F.name,
846
847
  description: F.hostname || C("agentDetails.noHostnameConfigured", "No hostname configured"),
847
848
  breadcrumb: [{
848
849
  label: C("nav.agents", "Agents"),
849
- path: Ft ? `${Ft}/agents` : "/agents"
850
+ path: It ? `${It}/agents` : "/agents"
850
851
  }, { label: F.name }],
851
852
  actions: /* @__PURE__ */ x("div", {
852
853
  className: "flex flex-wrap items-center gap-2",
@@ -857,7 +858,7 @@ function Ft() {
857
858
  className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
858
859
  title: C("agentDetails.openAiChat", "Open AI chat with this agent"),
859
860
  "data-testid": "agent-open-ai-chat",
860
- children: [/* @__PURE__ */ b(Ge, { className: "size-4" }), /* @__PURE__ */ b("span", {
861
+ children: [/* @__PURE__ */ b(Ke, { className: "size-4" }), /* @__PURE__ */ b("span", {
861
862
  className: "hidden sm:inline",
862
863
  children: C("agentDetails.aiChat", "AI Chat")
863
864
  })]
@@ -865,65 +866,65 @@ function Ft() {
865
866
  /* @__PURE__ */ b("button", {
866
867
  type: "button",
867
868
  onClick: () => P(),
868
- disabled: Mn,
869
+ disabled: Nn,
869
870
  className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-50",
870
871
  title: C("common.refresh", "Refresh"),
871
- children: /* @__PURE__ */ b(dt, { className: `size-4 ${Mn ? "animate-spin" : ""}` })
872
+ children: /* @__PURE__ */ b(ft, { className: `size-4 ${Nn ? "animate-spin" : ""}` })
872
873
  }),
873
- In ? /* @__PURE__ */ x("button", {
874
+ Ln ? /* @__PURE__ */ x("button", {
874
875
  type: "button",
875
- onClick: kr,
876
+ onClick: Ar,
876
877
  disabled: w !== null,
877
878
  "aria-busy": w === "start",
878
879
  className: "flex items-center gap-2 px-3 py-2 bg-status-success-bg text-status-success-text rounded-md hover:opacity-80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
879
- children: [w === "start" ? /* @__PURE__ */ b(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ b(ct, { className: "size-4" }), w === "start" ? C("agentDetails.starting", "Starting…") : C("agentDetails.start", "Start")]
880
+ children: [w === "start" ? /* @__PURE__ */ b(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ b(lt, { className: "size-4" }), w === "start" ? C("agentDetails.starting", "Starting…") : C("agentDetails.start", "Start")]
880
881
  }) : /* @__PURE__ */ x("button", {
881
882
  type: "button",
882
- onClick: Ar,
883
+ onClick: jr,
883
884
  disabled: w !== null,
884
885
  "aria-busy": w === "stop",
885
886
  className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
886
- children: [w === "stop" ? /* @__PURE__ */ b(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ b(_t, { className: "size-4" }), w === "stop" ? C("agentDetails.stopping", "Stopping…") : C("sessions.stop", "Stop")]
887
+ children: [w === "stop" ? /* @__PURE__ */ b(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ b(vt, { className: "size-4" }), w === "stop" ? C("agentDetails.stopping", "Stopping…") : C("sessions.stop", "Stop")]
887
888
  }),
888
889
  R === "DEGRADED" && /* @__PURE__ */ x("button", {
889
890
  type: "button",
890
- onClick: kr,
891
+ onClick: Ar,
891
892
  disabled: w !== null,
892
893
  "aria-busy": w === "start",
893
894
  className: "flex items-center gap-2 px-3 py-2 bg-status-warning-bg text-status-warning-text rounded-md hover:opacity-80 transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
894
895
  title: L.get(F.id)?.errorMessage ? `Retry lifecycle/start — last error: ${L.get(F.id)?.errorMessage}` : "Retry lifecycle/start",
895
- children: [w === "start" ? /* @__PURE__ */ b(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ b(dt, { className: "size-4" }), w === "start" ? C("agentDetails.reconnecting", "Reconnecting…") : C("agentDetails.reconnect", "Reconnect")]
896
+ children: [w === "start" ? /* @__PURE__ */ b(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ b(ft, { className: "size-4" }), w === "start" ? C("agentDetails.reconnecting", "Reconnecting…") : C("agentDetails.reconnect", "Reconnect")]
896
897
  }),
897
- /* @__PURE__ */ b(Me, {
898
+ /* @__PURE__ */ b(Pe, {
898
899
  agentId: F.id,
899
900
  tunnelUrl: F.tunnelUrl || null,
900
901
  profile: z
901
902
  }),
902
903
  /* @__PURE__ */ x("button", {
903
904
  type: "button",
904
- onClick: Mr,
905
+ onClick: Nr,
905
906
  className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
906
- children: [/* @__PURE__ */ b(ht, { className: "size-4" }), C("agentDetails.configure", "Configure")]
907
+ children: [/* @__PURE__ */ b(gt, { className: "size-4" }), C("agentDetails.configure", "Configure")]
907
908
  }),
908
909
  /* @__PURE__ */ x("button", {
909
910
  type: "button",
910
- onClick: Rr,
911
+ onClick: zr,
911
912
  className: "flex items-center gap-2 px-3 py-2 bg-status-error-bg text-status-error-text rounded-md hover:opacity-80 transition-colors",
912
- children: [/* @__PURE__ */ b(bt, { className: "size-4" }), C("sessions.remove", "Remove")]
913
+ children: [/* @__PURE__ */ b(xt, { className: "size-4" }), C("sessions.remove", "Remove")]
913
914
  })
914
915
  ]
915
916
  })
916
917
  }),
917
918
  /* @__PURE__ */ b("div", {
918
919
  className: "flex items-center gap-2 -mt-2",
919
- children: nn ? /* @__PURE__ */ x(y, { children: [
920
+ children: rn ? /* @__PURE__ */ x(y, { children: [
920
921
  /* @__PURE__ */ b("input", {
921
- ref: un,
922
+ ref: dn,
922
923
  type: "text",
923
- value: an,
924
- onChange: (e) => on(e.target.value),
924
+ value: on,
925
+ onChange: (e) => sn(e.target.value),
925
926
  onKeyDown: (e) => {
926
- e.key === "Enter" && !D ? Nr() : e.key === "Escape" && Pr();
927
+ e.key === "Enter" && !D ? Pr() : e.key === "Escape" && Fr();
927
928
  },
928
929
  disabled: D,
929
930
  maxLength: 120,
@@ -934,34 +935,34 @@ function Ft() {
934
935
  }),
935
936
  /* @__PURE__ */ x("button", {
936
937
  type: "button",
937
- onClick: () => void Nr(),
938
- disabled: !an.trim() || an.trim() === F.name || D,
938
+ onClick: () => void Pr(),
939
+ disabled: !on.trim() || on.trim() === F.name || D,
939
940
  className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-60 disabled:cursor-not-allowed",
940
941
  "data-testid": "agent-details-rename-save",
941
- children: [D ? /* @__PURE__ */ b(g, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ b(Ke, { className: "size-3.5" }), C("agentDetails.saveName", "Save")]
942
+ children: [D ? /* @__PURE__ */ b(g, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ b(qe, { className: "size-3.5" }), C("agentDetails.saveName", "Save")]
942
943
  }),
943
944
  /* @__PURE__ */ b("button", {
944
945
  type: "button",
945
- onClick: Pr,
946
+ onClick: Fr,
946
947
  disabled: D,
947
948
  className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary disabled:opacity-60",
948
949
  "data-testid": "agent-details-rename-cancel",
949
950
  children: C("common.cancel", "Cancel")
950
951
  }),
951
- cn && /* @__PURE__ */ b("span", {
952
+ ln && /* @__PURE__ */ b("span", {
952
953
  className: "text-xs text-status-error-text",
953
954
  role: "alert",
954
- children: cn
955
+ children: ln
955
956
  })
956
957
  ] }) : /* @__PURE__ */ x("button", {
957
958
  type: "button",
958
959
  onClick: () => {
959
- ln(null), on(F.name), rn(!0), requestAnimationFrame(() => un.current?.select());
960
+ un(null), sn(F.name), an(!0), requestAnimationFrame(() => dn.current?.select());
960
961
  },
961
962
  className: "inline-flex items-center gap-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors",
962
963
  title: C("agentDetails.renameTooltip", "Rename this agent"),
963
964
  "data-testid": "agent-details-rename-trigger",
964
- children: [/* @__PURE__ */ b(et, { className: "size-3.5" }), C("agentDetails.rename", "Rename")]
965
+ children: [/* @__PURE__ */ b(tt, { className: "size-3.5" }), C("agentDetails.rename", "Rename")]
965
966
  })
966
967
  }),
967
968
  R === "DEGRADED" && /* @__PURE__ */ x("div", {
@@ -992,7 +993,7 @@ function Ft() {
992
993
  }),
993
994
  /* @__PURE__ */ b("button", {
994
995
  type: "button",
995
- onClick: () => Rn("connection"),
996
+ onClick: () => zn("connection"),
996
997
  className: "text-xs font-medium text-action-primary-text hover:underline flex-shrink-0",
997
998
  children: C("agentDetails.degradedBanner.viewLog", "View log →")
998
999
  })
@@ -1001,33 +1002,33 @@ function Ft() {
1001
1002
  /* @__PURE__ */ x("div", {
1002
1003
  className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
1003
1004
  children: [
1004
- /* @__PURE__ */ b(u, {
1005
+ /* @__PURE__ */ b(l, {
1005
1006
  className: "p-4",
1006
1007
  children: /* @__PURE__ */ x("div", {
1007
1008
  className: "flex items-center gap-3",
1008
1009
  children: [/* @__PURE__ */ b("div", {
1009
1010
  className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
1010
- children: /* @__PURE__ */ b(mt, { className: "size-5 text-text-secondary" })
1011
+ children: /* @__PURE__ */ b(ht, { className: "size-5 text-text-secondary" })
1011
1012
  }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
1012
1013
  className: "text-sm text-text-secondary",
1013
1014
  children: C("sessions.filterStatus", "Status")
1014
- }), /* @__PURE__ */ b(ke, {
1015
+ }), /* @__PURE__ */ b(je, {
1015
1016
  status: R,
1016
1017
  reason: L.get(F.id)?.errorMessage ?? (F.lastGatewayAuthPushStatus === "failed" ? F.lastGatewayAuthPushError ?? "Gateway-auth push failed" : null),
1017
1018
  linkTo: "?tab=connection",
1018
1019
  onClick: (e) => {
1019
- e.preventDefault(), Rn("connection");
1020
+ e.preventDefault(), zn("connection");
1020
1021
  }
1021
1022
  })] })]
1022
1023
  })
1023
1024
  }),
1024
- /* @__PURE__ */ b(u, {
1025
+ /* @__PURE__ */ b(l, {
1025
1026
  className: "p-4",
1026
1027
  children: /* @__PURE__ */ x("div", {
1027
1028
  className: "flex items-center gap-3",
1028
1029
  children: [/* @__PURE__ */ b("div", {
1029
1030
  className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
1030
- children: /* @__PURE__ */ b(Ze, { className: "size-5 text-text-secondary" })
1031
+ children: /* @__PURE__ */ b(Qe, { className: "size-5 text-text-secondary" })
1031
1032
  }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
1032
1033
  className: "text-sm text-text-secondary",
1033
1034
  children: C("analytics.platform", "Platform")
@@ -1041,13 +1042,13 @@ function Ft() {
1041
1042
  })] })]
1042
1043
  })
1043
1044
  }),
1044
- /* @__PURE__ */ b(u, {
1045
+ /* @__PURE__ */ b(l, {
1045
1046
  className: "p-4",
1046
1047
  children: /* @__PURE__ */ x("div", {
1047
1048
  className: "flex items-center gap-3",
1048
1049
  children: [/* @__PURE__ */ b("div", {
1049
1050
  className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
1050
- children: /* @__PURE__ */ b(it, { className: "size-5 text-text-secondary" })
1051
+ children: /* @__PURE__ */ b(at, { className: "size-5 text-text-secondary" })
1051
1052
  }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
1052
1053
  className: "text-sm text-text-secondary",
1053
1054
  children: C("agentDetails.version", "Version")
@@ -1057,20 +1058,20 @@ function Ft() {
1057
1058
  })] })]
1058
1059
  })
1059
1060
  }),
1060
- /* @__PURE__ */ b(u, {
1061
+ /* @__PURE__ */ b(l, {
1061
1062
  className: "p-4",
1062
1063
  children: /* @__PURE__ */ x("div", {
1063
1064
  className: "flex items-center gap-3",
1064
1065
  children: [/* @__PURE__ */ b("div", {
1065
1066
  className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
1066
- children: /* @__PURE__ */ b(yt, { className: "size-5 text-text-secondary" })
1067
+ children: /* @__PURE__ */ b(bt, { className: "size-5 text-text-secondary" })
1067
1068
  }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
1068
1069
  className: "text-sm text-text-secondary",
1069
1070
  children: C("nav.sessions", "Sessions")
1070
1071
  }), /* @__PURE__ */ x("p", {
1071
1072
  className: "font-semibold text-text-primary",
1072
1073
  children: [
1073
- Kr,
1074
+ qr,
1074
1075
  " ",
1075
1076
  C("health.active", "active")
1076
1077
  ]
@@ -1085,11 +1086,11 @@ function Ft() {
1085
1086
  className: "flex gap-1 -mb-px overflow-x-auto pb-1",
1086
1087
  "aria-label": C("agentDetails.tabsAriaLabel", "Agent tabs"),
1087
1088
  children: [
1088
- Gr.map((e) => {
1089
+ Kr.map((e) => {
1089
1090
  let t = e.icon, n = H === e.id;
1090
1091
  return /* @__PURE__ */ x("button", {
1091
1092
  type: "button",
1092
- onClick: () => Rn(e.id),
1093
+ onClick: () => zn(e.id),
1093
1094
  className: `flex shrink-0 items-center gap-1.5 px-3 py-2.5 text-xs sm:gap-2 sm:px-4 sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${n ? "border-action-primary-bg text-action-primary-bg" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
1094
1095
  "aria-selected": n,
1095
1096
  role: "tab",
@@ -1107,7 +1108,7 @@ function Ft() {
1107
1108
  let t = H === e.contribution.id;
1108
1109
  return /* @__PURE__ */ b("button", {
1109
1110
  type: "button",
1110
- onClick: () => Rn(e.contribution.id),
1111
+ onClick: () => zn(e.contribution.id),
1111
1112
  className: `flex shrink-0 items-center gap-1.5 px-3 py-2.5 text-xs sm:gap-2 sm:px-4 sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${t ? "border-action-primary-bg text-action-primary-bg" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
1112
1113
  "aria-selected": t,
1113
1114
  role: "tab",
@@ -1117,7 +1118,7 @@ function Ft() {
1117
1118
  }),
1118
1119
  B && F && /* @__PURE__ */ x("button", {
1119
1120
  type: "button",
1120
- onClick: () => Bn(!0),
1121
+ onClick: () => Vn(!0),
1121
1122
  className: "flex shrink-0 items-center gap-1 p-2 text-xs sm:text-sm border-b-2 border-transparent text-text-secondary hover:text-text-primary hover:border-border-default",
1122
1123
  title: "Install a UI plugin tab",
1123
1124
  "aria-label": "Add tab",
@@ -1132,7 +1133,7 @@ function Ft() {
1132
1133
  ]
1133
1134
  })
1134
1135
  }),
1135
- /* @__PURE__ */ x(Dt, {
1136
+ /* @__PURE__ */ x(Ot, {
1136
1137
  mode: "wait",
1137
1138
  children: [
1138
1139
  H === "overview" && /* @__PURE__ */ x(v.div, {
@@ -1151,11 +1152,11 @@ function Ft() {
1151
1152
  transition: { duration: .2 },
1152
1153
  className: "space-y-6",
1153
1154
  children: [
1154
- /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1155
+ /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1155
1156
  className: "p-4 border-b border-border-default",
1156
1157
  children: /* @__PURE__ */ x("h3", {
1157
1158
  className: "font-semibold text-text-primary flex items-center gap-2",
1158
- children: [/* @__PURE__ */ b(qe, { className: "size-5" }), C("agentDetails.capabilities", "Capabilities")]
1159
+ children: [/* @__PURE__ */ b(Je, { className: "size-5" }), C("agentDetails.capabilities", "Capabilities")]
1159
1160
  })
1160
1161
  }), /* @__PURE__ */ b("div", {
1161
1162
  className: "p-4",
@@ -1217,24 +1218,24 @@ function Ft() {
1217
1218
  })
1218
1219
  })
1219
1220
  })] }),
1220
- /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1221
+ /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1221
1222
  className: "p-4 border-b border-border-default",
1222
1223
  children: /* @__PURE__ */ x("h3", {
1223
1224
  className: "font-semibold text-text-primary flex items-center gap-2",
1224
- children: [/* @__PURE__ */ b(vt, { className: "size-5" }), "Tags"]
1225
+ children: [/* @__PURE__ */ b(yt, { className: "size-5" }), "Tags"]
1225
1226
  })
1226
1227
  }), /* @__PURE__ */ b("div", {
1227
1228
  className: "p-4",
1228
- children: /* @__PURE__ */ b(ge, {
1229
+ children: /* @__PURE__ */ b(_e, {
1229
1230
  entityType: "VIBECONTROLS_AGENT",
1230
1231
  entityId: F.id
1231
1232
  })
1232
1233
  })] }),
1233
- F.tunnelUrl && /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1234
+ F.tunnelUrl && /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1234
1235
  className: "p-4 border-b border-border-default",
1235
1236
  children: /* @__PURE__ */ x("h3", {
1236
1237
  className: "font-semibold text-text-primary flex items-center gap-2",
1237
- children: [/* @__PURE__ */ b(wt, { className: "size-5" }), C("health.tunnel", "Tunnel")]
1238
+ children: [/* @__PURE__ */ b(Tt, { className: "size-5" }), C("health.tunnel", "Tunnel")]
1238
1239
  })
1239
1240
  }), /* @__PURE__ */ b("div", {
1240
1241
  className: "p-4",
@@ -1252,11 +1253,11 @@ function Ft() {
1252
1253
  })]
1253
1254
  })
1254
1255
  })] }),
1255
- /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1256
+ /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1256
1257
  className: "p-4 border-b border-border-default",
1257
1258
  children: /* @__PURE__ */ x("h3", {
1258
1259
  className: "font-semibold text-text-primary flex items-center gap-2",
1259
- children: [/* @__PURE__ */ b(ht, { className: "size-5" }), C("agentDetails.configuration", "Configuration")]
1260
+ children: [/* @__PURE__ */ b(gt, { className: "size-5" }), C("agentDetails.configuration", "Configuration")]
1260
1261
  })
1261
1262
  }), /* @__PURE__ */ x("div", {
1262
1263
  className: "p-4 space-y-4",
@@ -1293,11 +1294,11 @@ function Ft() {
1293
1294
  children: F.aiContext
1294
1295
  })] })]
1295
1296
  })] }),
1296
- /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1297
+ /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1297
1298
  className: "p-4 border-b border-border-default",
1298
1299
  children: /* @__PURE__ */ x("h3", {
1299
1300
  className: "font-semibold text-text-primary flex items-center gap-2",
1300
- children: [/* @__PURE__ */ b(Je, { className: "size-5" }), C("vibeDetails.timeline", "Timeline")]
1301
+ children: [/* @__PURE__ */ b(Ye, { className: "size-5" }), C("vibeDetails.timeline", "Timeline")]
1301
1302
  })
1302
1303
  }), /* @__PURE__ */ b("div", {
1303
1304
  className: "p-4",
@@ -1309,21 +1310,21 @@ function Ft() {
1309
1310
  children: C("health.lastHeartbeat", "Last Heartbeat")
1310
1311
  }), /* @__PURE__ */ b("p", {
1311
1312
  className: "font-medium text-text-primary",
1312
- children: Wr(F.lastHeartbeat)
1313
+ children: Gr(F.lastHeartbeat)
1313
1314
  })] }),
1314
1315
  /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
1315
1316
  className: "text-text-secondary",
1316
1317
  children: C("vibeDetails.created", "Created")
1317
1318
  }), /* @__PURE__ */ b("p", {
1318
1319
  className: "font-medium text-text-primary",
1319
- children: Wr(F.createdAt)
1320
+ children: Gr(F.createdAt)
1320
1321
  })] }),
1321
1322
  /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
1322
1323
  className: "text-text-secondary",
1323
1324
  children: C("vibeDetails.updated", "Updated")
1324
1325
  }), /* @__PURE__ */ b("p", {
1325
1326
  className: "font-medium text-text-primary",
1326
- children: Wr(F.updatedAt)
1327
+ children: Gr(F.updatedAt)
1327
1328
  })] })
1328
1329
  ]
1329
1330
  })
@@ -1344,7 +1345,7 @@ function Ft() {
1344
1345
  y: -8
1345
1346
  },
1346
1347
  transition: { duration: .2 },
1347
- children: /* @__PURE__ */ b(Fe, { agentId: F.id })
1348
+ children: /* @__PURE__ */ b(Le, { agentId: F.id })
1348
1349
  }, "profiles"),
1349
1350
  H === "security" && /* @__PURE__ */ x(v.div, {
1350
1351
  initial: {
@@ -1362,11 +1363,11 @@ function Ft() {
1362
1363
  transition: { duration: .2 },
1363
1364
  className: "space-y-6",
1364
1365
  children: [
1365
- /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1366
+ /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1366
1367
  className: "p-4 border-b border-border-default",
1367
1368
  children: /* @__PURE__ */ x("h3", {
1368
1369
  className: "font-semibold text-text-primary flex items-center gap-2",
1369
- children: [/* @__PURE__ */ b(ot, { className: "size-5" }), C("agentDetails.agentApiKey", "Agent API Key")]
1370
+ children: [/* @__PURE__ */ b(st, { className: "size-5" }), C("agentDetails.agentApiKey", "Agent API Key")]
1370
1371
  })
1371
1372
  }), /* @__PURE__ */ x("div", {
1372
1373
  className: "p-4",
@@ -1377,26 +1378,26 @@ function Ft() {
1377
1378
  className: "flex-1 min-w-0",
1378
1379
  children: [/* @__PURE__ */ b("code", {
1379
1380
  className: "text-sm font-mono text-text-primary bg-bg-sunken px-3 py-2 rounded-md block truncate",
1380
- children: hn && O ? O : bn ? C("agentDetails.revealLoading", "Revealing…") : "•".repeat(32)
1381
- }), Sn && /* @__PURE__ */ b("p", {
1381
+ children: gn && O ? O : xn ? C("agentDetails.revealLoading", "Revealing…") : "•".repeat(32)
1382
+ }), Cn && /* @__PURE__ */ b("p", {
1382
1383
  className: "text-xs text-status-error-text mt-1",
1383
- children: Sn
1384
+ children: Cn
1384
1385
  })]
1385
1386
  }),
1386
1387
  /* @__PURE__ */ b("button", {
1387
1388
  type: "button",
1388
- onClick: () => void Lr(),
1389
- disabled: bn,
1389
+ onClick: () => void Rr(),
1390
+ disabled: xn,
1390
1391
  className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0 disabled:opacity-50",
1391
- title: hn ? C("agentDetails.hideApiKey", "Hide API key") : C("agentDetails.showApiKey", "Show API key"),
1392
- children: b(hn ? nt : tt, { className: "size-4 text-text-secondary" })
1392
+ title: gn ? C("agentDetails.hideApiKey", "Hide API key") : C("agentDetails.showApiKey", "Show API key"),
1393
+ children: b(gn ? rt : nt, { className: "size-4 text-text-secondary" })
1393
1394
  }),
1394
1395
  /* @__PURE__ */ b("button", {
1395
1396
  type: "button",
1396
- onClick: Ir,
1397
+ onClick: Lr,
1397
1398
  className: "p-2 rounded hover:bg-bg-sunken transition-colors flex-shrink-0",
1398
1399
  title: C("agentDetails.copyApiKey", "Copy API key"),
1399
- children: _n ? /* @__PURE__ */ b(Ke, { className: "size-4 text-status-success-text" }) : /* @__PURE__ */ b(Xe, { className: "size-4 text-text-secondary" })
1400
+ children: vn ? /* @__PURE__ */ b(qe, { className: "size-4 text-status-success-text" }) : /* @__PURE__ */ b(Ze, { className: "size-4 text-text-secondary" })
1400
1401
  })
1401
1402
  ]
1402
1403
  }) : /* @__PURE__ */ b("p", {
@@ -1407,41 +1408,46 @@ function Ft() {
1407
1408
  children: "This key authenticates requests sent to the agent. The key is revealed only on explicit operator action and every read is audited."
1408
1409
  })]
1409
1410
  })] }),
1410
- /* @__PURE__ */ b(Nt, {
1411
+ /* @__PURE__ */ b(ke, {
1412
+ agentId: F.id,
1413
+ currentTunnelUrl: F.tunnelUrl,
1414
+ onUpdated: () => P()
1415
+ }),
1416
+ /* @__PURE__ */ b(Pt, {
1411
1417
  agent: F,
1412
1418
  onUpdate: () => P()
1413
1419
  }),
1414
- /* @__PURE__ */ b(Ae, { agent: {
1420
+ /* @__PURE__ */ b(Me, { agent: {
1415
1421
  id: F.id,
1416
1422
  profile: z ?? "default"
1417
1423
  } })
1418
1424
  ]
1419
1425
  }, "security"),
1420
1426
  H === "plugins" && (() => {
1421
- let e = J.toLowerCase(), t = U.filter((t) => !e || t.pluginName.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e) || t.description?.toLowerCase().includes(e) || t.tags?.some((t) => t.toLowerCase().includes(e))), n = Gn.filter((t) => !t.installed && (!e || t.name.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e) || t.description.toLowerCase().includes(e))), r = U.filter((e) => e.hasUI), i = r.filter((t) => !e || t.pluginName.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e)), a = [
1427
+ let e = J.toLowerCase(), t = U.filter((t) => !e || t.pluginName.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e) || t.description?.toLowerCase().includes(e) || t.tags?.some((t) => t.toLowerCase().includes(e))), n = Kn.filter((t) => !t.installed && (!e || t.name.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e) || t.description.toLowerCase().includes(e))), r = U.filter((e) => e.hasUI), i = r.filter((t) => !e || t.pluginName.toLowerCase().includes(e) || t.packageName.toLowerCase().includes(e)), a = [
1422
1428
  {
1423
1429
  id: "installed",
1424
1430
  label: "Installed",
1425
1431
  count: t.length,
1426
- icon: ut
1432
+ icon: dt
1427
1433
  },
1428
1434
  {
1429
1435
  id: "available",
1430
1436
  label: "Available",
1431
1437
  count: n.length,
1432
- icon: $e
1438
+ icon: et
1433
1439
  },
1434
1440
  {
1435
1441
  id: "store",
1436
1442
  label: "Store",
1437
1443
  count: Y.length,
1438
- icon: $e
1444
+ icon: et
1439
1445
  },
1440
1446
  {
1441
1447
  id: "ui-plugins",
1442
1448
  label: "UI Plugins",
1443
1449
  count: i.length,
1444
- icon: st
1450
+ icon: ct
1445
1451
  }
1446
1452
  ];
1447
1453
  return /* @__PURE__ */ b(v.div, {
@@ -1459,7 +1465,7 @@ function Ft() {
1459
1465
  },
1460
1466
  transition: { duration: .2 },
1461
1467
  className: "space-y-6",
1462
- children: /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ x("div", {
1468
+ children: /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ x("div", {
1463
1469
  className: "p-4 border-b border-border-default space-y-3",
1464
1470
  children: [
1465
1471
  /* @__PURE__ */ x("div", {
@@ -1467,7 +1473,7 @@ function Ft() {
1467
1473
  children: [/* @__PURE__ */ x("h3", {
1468
1474
  className: "font-semibold text-text-primary flex items-center gap-2",
1469
1475
  children: [
1470
- /* @__PURE__ */ b(ut, { className: "size-5" }),
1476
+ /* @__PURE__ */ b(dt, { className: "size-5" }),
1471
1477
  "Plugins",
1472
1478
  U.length > 0 && /* @__PURE__ */ x("span", {
1473
1479
  className: "text-sm font-normal text-text-secondary",
@@ -1484,27 +1490,27 @@ function Ft() {
1484
1490
  }), /* @__PURE__ */ b("button", {
1485
1491
  type: "button",
1486
1492
  onClick: X,
1487
- disabled: qn,
1493
+ disabled: Jn,
1488
1494
  className: "p-1.5 text-text-secondary hover:bg-bg-sunken rounded transition-colors disabled:opacity-50",
1489
1495
  title: C("agentDetails.refreshPlugins", "Refresh plugins"),
1490
- children: /* @__PURE__ */ b(dt, { className: `size-4 ${qn ? "animate-spin" : ""}` })
1496
+ children: /* @__PURE__ */ b(ft, { className: `size-4 ${Jn ? "animate-spin" : ""}` })
1491
1497
  })]
1492
1498
  }),
1493
1499
  /* @__PURE__ */ x("div", {
1494
1500
  className: "relative",
1495
1501
  children: [
1496
- /* @__PURE__ */ b(pt, { className: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-text-muted" }),
1502
+ /* @__PURE__ */ b(mt, { className: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-text-muted" }),
1497
1503
  /* @__PURE__ */ b("input", {
1498
1504
  "aria-label": "control",
1499
1505
  type: "text",
1500
1506
  value: J,
1501
- onChange: (e) => ur(e.target.value),
1507
+ onChange: (e) => dr(e.target.value),
1502
1508
  placeholder: C("agentDetails.searchPluginsPlaceholder", "Search plugins by name, package, description, or tag..."),
1503
1509
  className: "w-full pl-9 pr-8 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-1 focus:ring-action-primary-bg focus:border-action-primary-bg"
1504
1510
  }),
1505
1511
  J && /* @__PURE__ */ b("button", {
1506
1512
  type: "button",
1507
- onClick: () => ur(""),
1513
+ onClick: () => dr(""),
1508
1514
  className: "absolute right-2 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-text-secondary rounded",
1509
1515
  children: /* @__PURE__ */ b(_, { className: "size-3.5" })
1510
1516
  })
@@ -1516,7 +1522,7 @@ function Ft() {
1516
1522
  let t = q === e.id, n = e.icon;
1517
1523
  return /* @__PURE__ */ x("button", {
1518
1524
  type: "button",
1519
- onClick: () => lr(e.id),
1525
+ onClick: () => ur(e.id),
1520
1526
  className: `flex shrink-0 items-center gap-1.5 px-3 py-2 text-xs sm:text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${t ? "border-action-primary-bg text-action-primary-bg" : "border-transparent text-text-secondary hover:text-text-primary hover:border-border-default"}`,
1521
1527
  children: [
1522
1528
  /* @__PURE__ */ b(n, { className: "size-3.5" }),
@@ -1533,13 +1539,13 @@ function Ft() {
1533
1539
  }), /* @__PURE__ */ x("div", {
1534
1540
  className: "p-4 space-y-4",
1535
1541
  children: [
1536
- Yn && /* @__PURE__ */ x("div", {
1542
+ Xn && /* @__PURE__ */ x("div", {
1537
1543
  className: "flex items-center gap-2 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
1538
1544
  children: [
1539
1545
  /* @__PURE__ */ b(_, { className: "size-4 flex-shrink-0" }),
1540
1546
  /* @__PURE__ */ b("span", {
1541
1547
  className: "flex-1",
1542
- children: Yn
1548
+ children: Xn
1543
1549
  }),
1544
1550
  /* @__PURE__ */ b("button", {
1545
1551
  type: "button",
@@ -1551,7 +1557,7 @@ function Ft() {
1551
1557
  }),
1552
1558
  !F?.isActive && /* @__PURE__ */ x("p", {
1553
1559
  className: "text-sm text-text-muted flex items-center gap-1.5",
1554
- children: [/* @__PURE__ */ b(at, { className: "size-4 flex-shrink-0" }), "Agent is offline — showing known plugin catalog. Live data will load when the agent is reachable."]
1560
+ children: [/* @__PURE__ */ b(ot, { className: "size-4 flex-shrink-0" }), "Agent is offline — showing known plugin catalog. Live data will load when the agent is reachable."]
1555
1561
  }),
1556
1562
  q === "installed" && /* @__PURE__ */ b(y, { children: t.length > 0 ? /* @__PURE__ */ b("div", {
1557
1563
  className: "space-y-2",
@@ -1634,25 +1640,25 @@ function Ft() {
1634
1640
  children: [
1635
1641
  e.hasUI && /* @__PURE__ */ x("button", {
1636
1642
  type: "button",
1637
- onClick: () => lr("ui-plugins"),
1643
+ onClick: () => ur("ui-plugins"),
1638
1644
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-action-primary-bg bg-action-primary-bg/10 rounded-md hover:bg-action-primary-bg/20 transition-colors border border-action-primary-bg/20",
1639
1645
  title: `Open ${e.pluginName} UI`,
1640
- children: [/* @__PURE__ */ b(st, { className: "size-3" }), "Open UI"]
1646
+ children: [/* @__PURE__ */ b(ct, { className: "size-3" }), "Open UI"]
1641
1647
  }),
1642
1648
  !e.isCore && /* @__PURE__ */ x("button", {
1643
1649
  type: "button",
1644
- onClick: () => wr(e.packageName),
1650
+ onClick: () => Tr(e.packageName),
1645
1651
  disabled: W === e.packageName,
1646
1652
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-text-primary bg-bg-secondary border border-border-default rounded-md hover:bg-bg-elevated transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
1647
1653
  title: C("agentDetails.updatePlugin", "Update plugin (latest or a specific version)"),
1648
- children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(We, { className: "size-3" }), C("agentDetails.update", "Update")]
1654
+ children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(Ge, { className: "size-3" }), C("agentDetails.update", "Update")]
1649
1655
  }),
1650
1656
  !e.isCore && /* @__PURE__ */ x("button", {
1651
1657
  type: "button",
1652
- onClick: () => Cr(e.packageName),
1658
+ onClick: () => wr(e.packageName),
1653
1659
  disabled: W === e.packageName,
1654
1660
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-status-error-text bg-status-error-bg/15 border border-status-error-border/40 rounded-md hover:bg-status-error-bg/25 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
1655
- children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(bt, { className: "size-3" }), C("sessions.remove", "Remove")]
1661
+ children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(xt, { className: "size-3" }), C("sessions.remove", "Remove")]
1656
1662
  })
1657
1663
  ]
1658
1664
  })]
@@ -1683,23 +1689,23 @@ function Ft() {
1683
1689
  ]
1684
1690
  }), /* @__PURE__ */ x("button", {
1685
1691
  type: "button",
1686
- onClick: () => Sr(e.packageName),
1692
+ onClick: () => Cr(e.packageName),
1687
1693
  disabled: W === e.packageName,
1688
1694
  className: "flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0 sm:ml-3",
1689
- children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b($e, { className: "size-3" }), "Install"]
1695
+ children: [W === e.packageName ? /* @__PURE__ */ b(g, { className: "size-3 animate-spin" }) : /* @__PURE__ */ b(et, { className: "size-3" }), "Install"]
1690
1696
  })]
1691
1697
  }, e.packageName))
1692
1698
  }) : /* @__PURE__ */ b("p", {
1693
1699
  className: "text-sm text-text-muted",
1694
- children: J ? "No available plugins match your search." : Gn.every((e) => e.installed) ? "All available plugins are already installed." : "No available plugins found."
1700
+ children: J ? "No available plugins match your search." : Kn.every((e) => e.installed) ? "All available plugins are already installed." : "No available plugins found."
1695
1701
  }) }),
1696
- q === "store" && /* @__PURE__ */ x(y, { children: [mr && /* @__PURE__ */ x("div", {
1702
+ q === "store" && /* @__PURE__ */ x(y, { children: [hr && /* @__PURE__ */ x("div", {
1697
1703
  className: "flex items-center gap-2 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
1698
1704
  children: [/* @__PURE__ */ b(_, { className: "size-4 flex-shrink-0" }), /* @__PURE__ */ b("span", {
1699
1705
  className: "flex-1",
1700
- children: mr
1706
+ children: hr
1701
1707
  })]
1702
- }), fr ? /* @__PURE__ */ b("p", {
1708
+ }), pr ? /* @__PURE__ */ b("p", {
1703
1709
  className: "text-sm text-text-muted",
1704
1710
  children: "Loading purchased plugins…"
1705
1711
  }) : Y.length === 0 ? /* @__PURE__ */ x("div", {
@@ -1726,7 +1732,7 @@ function Ft() {
1726
1732
  className: "size-10 rounded-md object-cover flex-shrink-0"
1727
1733
  }) : /* @__PURE__ */ b("div", {
1728
1734
  className: "size-10 flex-shrink-0 rounded-md bg-bg-secondary flex items-center justify-center",
1729
- children: /* @__PURE__ */ b(ut, { className: "size-5 text-text-muted" })
1735
+ children: /* @__PURE__ */ b(dt, { className: "size-5 text-text-muted" })
1730
1736
  }), /* @__PURE__ */ x("div", {
1731
1737
  className: "min-w-0 flex-1",
1732
1738
  children: [
@@ -1752,15 +1758,15 @@ function Ft() {
1752
1758
  })]
1753
1759
  }), /* @__PURE__ */ b("button", {
1754
1760
  type: "button",
1755
- onClick: () => void Er(e.productId, e.licenseKey),
1756
- disabled: r || gr === e.productId || !n,
1761
+ onClick: () => void Dr(e.productId, e.licenseKey),
1762
+ disabled: r || _r === e.productId || !n,
1757
1763
  className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold rounded-md bg-action-primary-bg text-action-primary-text hover:opacity-90 disabled:opacity-60 flex-shrink-0",
1758
- children: r ? "Installed" : gr === e.productId ? "Installing…" : "Install"
1764
+ children: r ? "Installed" : _r === e.productId ? "Installing…" : "Install"
1759
1765
  })]
1760
1766
  }, e.id);
1761
1767
  })
1762
1768
  })] }),
1763
- q === "ui-plugins" && /* @__PURE__ */ b(y, { children: r.length > 0 || F?.tunnelUrl ? /* @__PURE__ */ b(je, {
1769
+ q === "ui-plugins" && /* @__PURE__ */ b(y, { children: r.length > 0 || F?.tunnelUrl ? /* @__PURE__ */ b(Ne, {
1764
1770
  availablePlugins: [...F?.tunnelUrl ? [{
1765
1771
  pluginName: "code-server",
1766
1772
  displayName: "Code Server (VS Code)",
@@ -1780,7 +1786,7 @@ function Ft() {
1780
1786
  className: "text-sm text-text-muted",
1781
1787
  children: J ? "No UI plugins match your search." : "No plugins with UI are currently installed."
1782
1788
  }) }),
1783
- qn && U.length === 0 && /* @__PURE__ */ x("div", {
1789
+ Jn && U.length === 0 && /* @__PURE__ */ x("div", {
1784
1790
  className: "flex items-center gap-2 text-sm text-text-secondary",
1785
1791
  children: [/* @__PURE__ */ b(g, { className: "size-4 animate-spin" }), "Loading plugins..."]
1786
1792
  })
@@ -1802,26 +1808,26 @@ function Ft() {
1802
1808
  y: -8
1803
1809
  },
1804
1810
  transition: { duration: .2 },
1805
- children: /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ x("div", {
1811
+ children: /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ x("div", {
1806
1812
  className: "p-4 border-b border-border-default flex items-center justify-between gap-3 flex-wrap",
1807
1813
  children: [/* @__PURE__ */ x("h3", {
1808
1814
  className: "font-semibold text-text-primary flex items-center gap-2",
1809
1815
  children: [
1810
- /* @__PURE__ */ b(yt, { className: "size-5" }),
1816
+ /* @__PURE__ */ b(bt, { className: "size-5" }),
1811
1817
  C("nav.sessions", "Sessions"),
1812
1818
  " (",
1813
1819
  Z.length,
1814
1820
  ")"
1815
1821
  ]
1816
- }), /* @__PURE__ */ b(At, {
1817
- permission: Ce.SESSION_CREATE,
1822
+ }), /* @__PURE__ */ b(jt, {
1823
+ permission: we.SESSION_CREATE,
1818
1824
  deniedBehavior: "disable",
1819
1825
  deniedTooltip: "You don't have permission to create sessions",
1820
1826
  children: /* @__PURE__ */ x("button", {
1821
1827
  "data-testid": "create-session-btn",
1822
- onClick: Vr,
1828
+ onClick: Hr,
1823
1829
  className: "inline-flex items-center gap-2 px-3 py-1.5 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed",
1824
- children: [/* @__PURE__ */ b(lt, { className: "w-4 h-4" }), C("sessions.createSession", "Create Session")]
1830
+ children: [/* @__PURE__ */ b(ut, { className: "w-4 h-4" }), C("sessions.createSession", "Create Session")]
1825
1831
  })
1826
1832
  })]
1827
1833
  }), Z.length > 0 ? /* @__PURE__ */ b("div", {
@@ -1830,13 +1836,13 @@ function Ft() {
1830
1836
  role: "button",
1831
1837
  tabIndex: 0,
1832
1838
  onKeyDown: (t) => {
1833
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), Br(e.id));
1839
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), Vr(e.id));
1834
1840
  },
1835
- onClick: () => Br(e.id),
1841
+ onClick: () => Vr(e.id),
1836
1842
  className: "p-4 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 cursor-pointer hover:bg-bg-sunken/50 transition-colors",
1837
1843
  children: [/* @__PURE__ */ x("div", {
1838
1844
  className: "flex items-center gap-3 min-w-0",
1839
- children: [/* @__PURE__ */ b(yt, { className: "size-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ x("div", {
1845
+ children: [/* @__PURE__ */ b(bt, { className: "size-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ x("div", {
1840
1846
  className: "min-w-0",
1841
1847
  children: [/* @__PURE__ */ b("p", {
1842
1848
  className: "font-medium text-text-primary truncate",
@@ -1846,19 +1852,19 @@ function Ft() {
1846
1852
  children: e.type
1847
1853
  })]
1848
1854
  })]
1849
- }), /* @__PURE__ */ b(ve, { status: e.status })]
1855
+ }), /* @__PURE__ */ b(ye, { status: e.status })]
1850
1856
  }, e.id))
1851
1857
  }) : /* @__PURE__ */ x("div", {
1852
1858
  className: "p-6 text-center text-text-secondary flex flex-col items-center gap-3",
1853
- children: [/* @__PURE__ */ b("span", { children: C("agentDetails.noSessionsOnAgent", "No sessions on this agent") }), /* @__PURE__ */ b(At, {
1854
- permission: Ce.SESSION_CREATE,
1859
+ children: [/* @__PURE__ */ b("span", { children: C("agentDetails.noSessionsOnAgent", "No sessions on this agent") }), /* @__PURE__ */ b(jt, {
1860
+ permission: we.SESSION_CREATE,
1855
1861
  deniedBehavior: "disable",
1856
1862
  deniedTooltip: "You don't have permission to create sessions",
1857
1863
  children: /* @__PURE__ */ x("button", {
1858
1864
  "data-testid": "create-session-empty-btn",
1859
- onClick: Vr,
1865
+ onClick: Hr,
1860
1866
  className: "inline-flex items-center gap-2 px-3 py-1.5 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed",
1861
- children: [/* @__PURE__ */ b(lt, { className: "w-4 h-4" }), C("sessions.createSession", "Create Session")]
1867
+ children: [/* @__PURE__ */ b(ut, { className: "w-4 h-4" }), C("sessions.createSession", "Create Session")]
1862
1868
  })
1863
1869
  })]
1864
1870
  })] })
@@ -1877,9 +1883,9 @@ function Ft() {
1877
1883
  y: -8
1878
1884
  },
1879
1885
  transition: { duration: .2 },
1880
- children: /* @__PURE__ */ b(u, {
1886
+ children: /* @__PURE__ */ b(l, {
1881
1887
  className: "min-h-[60vh]",
1882
- children: /* @__PURE__ */ b(Ee, {
1888
+ children: /* @__PURE__ */ b(De, {
1883
1889
  agentId: F.id,
1884
1890
  agentName: F.name
1885
1891
  })
@@ -1899,15 +1905,15 @@ function Ft() {
1899
1905
  y: -8
1900
1906
  },
1901
1907
  transition: { duration: .2 },
1902
- children: /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1908
+ children: /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1903
1909
  className: "p-4 border-b border-border-default flex items-center justify-between",
1904
1910
  children: /* @__PURE__ */ x("h3", {
1905
1911
  className: "font-semibold text-text-primary flex items-center gap-2",
1906
- children: [/* @__PURE__ */ b(ft, { className: "size-5" }), C("nav.logs", "Logs")]
1912
+ children: [/* @__PURE__ */ b(pt, { className: "size-5" }), C("nav.logs", "Logs")]
1907
1913
  })
1908
1914
  }), /* @__PURE__ */ b("div", {
1909
1915
  className: "p-4",
1910
- children: /* @__PURE__ */ b(Pe, {
1916
+ children: /* @__PURE__ */ b(Ie, {
1911
1917
  agentId: F.id,
1912
1918
  profile: z,
1913
1919
  className: "min-h-[28rem]"
@@ -1928,12 +1934,12 @@ function Ft() {
1928
1934
  y: -8
1929
1935
  },
1930
1936
  transition: { duration: .2 },
1931
- children: /* @__PURE__ */ x(u, { children: [/* @__PURE__ */ b("div", {
1937
+ children: /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b("div", {
1932
1938
  className: "p-4 border-b border-border-default flex items-center justify-between",
1933
1939
  children: /* @__PURE__ */ x("h3", {
1934
1940
  className: "font-semibold text-text-primary flex items-center gap-2",
1935
1941
  children: [
1936
- /* @__PURE__ */ b(wt, { className: "size-5" }),
1942
+ /* @__PURE__ */ b(Tt, { className: "size-5" }),
1937
1943
  C("nav.vibes", "Vibes"),
1938
1944
  " (",
1939
1945
  Q.length,
@@ -1946,13 +1952,13 @@ function Ft() {
1946
1952
  role: "button",
1947
1953
  tabIndex: 0,
1948
1954
  onKeyDown: (t) => {
1949
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), Ur(e.id));
1955
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), Wr(e.id));
1950
1956
  },
1951
- onClick: () => Ur(e.id),
1957
+ onClick: () => Wr(e.id),
1952
1958
  className: "p-4 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 cursor-pointer hover:bg-bg-sunken/50 transition-colors",
1953
1959
  children: [/* @__PURE__ */ x("div", {
1954
1960
  className: "flex items-center gap-3 min-w-0",
1955
- children: [/* @__PURE__ */ b(wt, { className: "size-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ x("div", {
1961
+ children: [/* @__PURE__ */ b(Tt, { className: "size-5 text-text-secondary flex-shrink-0" }), /* @__PURE__ */ x("div", {
1956
1962
  className: "min-w-0",
1957
1963
  children: [/* @__PURE__ */ b("p", {
1958
1964
  className: "font-medium text-text-primary truncate",
@@ -1962,7 +1968,7 @@ function Ft() {
1962
1968
  children: e.type
1963
1969
  })]
1964
1970
  })]
1965
- }), /* @__PURE__ */ b(ve, { status: e.status })]
1971
+ }), /* @__PURE__ */ b(ye, { status: e.status })]
1966
1972
  }, e.id))
1967
1973
  }) : /* @__PURE__ */ b("div", {
1968
1974
  className: "p-6 text-center text-text-secondary",
@@ -1984,7 +1990,7 @@ function Ft() {
1984
1990
  },
1985
1991
  transition: { duration: .2 },
1986
1992
  className: "space-y-6",
1987
- children: /* @__PURE__ */ b(Ie, {
1993
+ children: /* @__PURE__ */ b(Re, {
1988
1994
  context: "agent",
1989
1995
  agentVibes: Q.map((e) => ({
1990
1996
  id: e.id,
@@ -2007,7 +2013,7 @@ function Ft() {
2007
2013
  },
2008
2014
  transition: { duration: .2 },
2009
2015
  className: "space-y-6",
2010
- children: /* @__PURE__ */ b(Oe, { agent: {
2016
+ children: /* @__PURE__ */ b(Ae, { agent: {
2011
2017
  id: F.id,
2012
2018
  profile: F.metadata?.profile ?? "default"
2013
2019
  } })
@@ -2026,7 +2032,7 @@ function Ft() {
2026
2032
  y: -8
2027
2033
  },
2028
2034
  transition: { duration: .2 },
2029
- children: /* @__PURE__ */ b(Te, {
2035
+ children: /* @__PURE__ */ b(Ee, {
2030
2036
  agentId: F.id,
2031
2037
  profile: z
2032
2038
  })
@@ -2045,10 +2051,10 @@ function Ft() {
2045
2051
  y: -8
2046
2052
  },
2047
2053
  transition: { duration: .2 },
2048
- children: /* @__PURE__ */ x(u, {
2054
+ children: /* @__PURE__ */ x(l, {
2049
2055
  className: "p-6 text-center text-text-secondary",
2050
2056
  children: [
2051
- /* @__PURE__ */ b(Qe, { className: "size-8 mx-auto mb-2 text-text-muted" }),
2057
+ /* @__PURE__ */ b($e, { className: "size-8 mx-auto mb-2 text-text-muted" }),
2052
2058
  /* @__PURE__ */ b("p", { children: C("agentDetails.backupRequiresTunnelAndApiKey", "Agent tunnel URL and API key are required for backup management.") }),
2053
2059
  /* @__PURE__ */ b("p", {
2054
2060
  className: "text-sm mt-1",
@@ -2071,10 +2077,10 @@ function Ft() {
2071
2077
  y: -8
2072
2078
  },
2073
2079
  transition: { duration: .2 },
2074
- children: /* @__PURE__ */ b(De, {
2080
+ children: /* @__PURE__ */ b(Oe, {
2075
2081
  agentId: F.id,
2076
2082
  agentVersion: F.version,
2077
- onAfterDestructiveNuke: jr
2083
+ onAfterDestructiveNuke: Mr
2078
2084
  })
2079
2085
  }, "maintenance"),
2080
2086
  B && (() => {
@@ -2094,9 +2100,9 @@ function Ft() {
2094
2100
  },
2095
2101
  transition: { duration: .2 },
2096
2102
  className: "space-y-6",
2097
- children: /* @__PURE__ */ b(u, { children: /* @__PURE__ */ b("div", {
2103
+ children: /* @__PURE__ */ b(l, { children: /* @__PURE__ */ b("div", {
2098
2104
  className: "p-0 h-[600px]",
2099
- children: /* @__PURE__ */ b(Be, {
2105
+ children: /* @__PURE__ */ b(He, {
2100
2106
  contribution: e,
2101
2107
  tunnel: e.tunnel,
2102
2108
  restPaths: e.capabilities.restPaths.length > 0 ? e.capabilities.restPaths : [`/ui/${e.pluginKey}`],
@@ -2116,9 +2122,9 @@ function Ft() {
2116
2122
  })()
2117
2123
  ]
2118
2124
  }),
2119
- B && F && /* @__PURE__ */ b(ze, {
2120
- isOpen: zn,
2121
- onClose: () => Bn(!1),
2125
+ B && F && /* @__PURE__ */ b(Ve, {
2126
+ isOpen: Bn,
2127
+ onClose: () => Vn(!1),
2122
2128
  mountPoint: "agent.detailTab",
2123
2129
  agentId: F.id,
2124
2130
  profile: z ?? "default",
@@ -2126,7 +2132,7 @@ function Ft() {
2126
2132
  V.refetch();
2127
2133
  }
2128
2134
  }),
2129
- Jt && /* @__PURE__ */ b("div", {
2135
+ Yt && /* @__PURE__ */ b("div", {
2130
2136
  className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-[100] p-4",
2131
2137
  children: /* @__PURE__ */ x("div", {
2132
2138
  className: "bg-bg-surface rounded-lg w-full max-w-lg max-h-[90vh] flex flex-col",
@@ -2144,9 +2150,9 @@ function Ft() {
2144
2150
  }),
2145
2151
  /* @__PURE__ */ x("div", {
2146
2152
  className: "px-6 py-4 overflow-y-auto flex-1",
2147
- children: [Xt && /* @__PURE__ */ b("div", {
2153
+ children: [Zt && /* @__PURE__ */ b("div", {
2148
2154
  className: "mb-4 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
2149
- children: Xt
2155
+ children: Zt
2150
2156
  }), /* @__PURE__ */ x("div", {
2151
2157
  className: "space-y-4",
2152
2158
  children: [
@@ -2155,7 +2161,7 @@ function Ft() {
2155
2161
  children: C("webhooks.name", "Name")
2156
2162
  }), /* @__PURE__ */ b("input", {
2157
2163
  "aria-label": "control",
2158
- ref: dn,
2164
+ ref: fn,
2159
2165
  type: "text",
2160
2166
  defaultValue: F.name,
2161
2167
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary"
@@ -2187,7 +2193,7 @@ function Ft() {
2187
2193
  }),
2188
2194
  /* @__PURE__ */ b("input", {
2189
2195
  "aria-label": "control",
2190
- ref: fn,
2196
+ ref: pn,
2191
2197
  type: "text",
2192
2198
  defaultValue: F.tunnelUrl ?? "",
2193
2199
  placeholder: C("agentDetails.tunnelUrlPlaceholder", "https://xxx.trycloudflare.com"),
@@ -2208,18 +2214,18 @@ function Ft() {
2208
2214
  className: "relative",
2209
2215
  children: [/* @__PURE__ */ b("button", {
2210
2216
  type: "button",
2211
- onClick: () => tn((e) => !e),
2217
+ onClick: () => nn((e) => !e),
2212
2218
  className: "p-0.5 rounded-full text-text-muted hover:text-text-secondary transition-colors",
2213
2219
  "aria-label": "What is AI Context?",
2214
- children: /* @__PURE__ */ b(at, { className: "size-3.5" })
2215
- }), en && /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("div", {
2220
+ children: /* @__PURE__ */ b(ot, { className: "size-3.5" })
2221
+ }), tn && /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("div", {
2216
2222
  role: "button",
2217
2223
  tabIndex: 0,
2218
2224
  onKeyDown: (e) => {
2219
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), tn(!1));
2225
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), nn(!1));
2220
2226
  },
2221
2227
  className: "fixed inset-0 z-10",
2222
- onClick: () => tn(!1)
2228
+ onClick: () => nn(!1)
2223
2229
  }), /* @__PURE__ */ x("div", {
2224
2230
  className: "absolute left-0 top-6 z-20 w-72 bg-bg-elevated border border-border-default rounded-lg shadow-xl p-3 text-xs text-text-secondary space-y-1.5",
2225
2231
  children: [
@@ -2238,7 +2244,7 @@ function Ft() {
2238
2244
  }), /* @__PURE__ */ b("textarea", {
2239
2245
  id: "agentdetailspage-58",
2240
2246
  "aria-label": "e.g. This agent runs on the billing server. Node 20, Docker installed. Do not modify files outside /src.",
2241
- ref: pn,
2247
+ ref: mn,
2242
2248
  defaultValue: F.aiContext ?? "",
2243
2249
  rows: 4,
2244
2250
  placeholder: "e.g. This agent runs on the billing server. Node 20, Docker installed. Do not modify files outside /src.",
@@ -2249,7 +2255,7 @@ function Ft() {
2249
2255
  children: C("agentDetails.metadataLabel", "Metadata (JSON)")
2250
2256
  }), /* @__PURE__ */ b("textarea", {
2251
2257
  "aria-label": "control",
2252
- ref: mn,
2258
+ ref: hn,
2253
2259
  defaultValue: F.metadata ? JSON.stringify(F.metadata, null, 2) : "{}",
2254
2260
  rows: 4,
2255
2261
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary font-mono text-sm"
@@ -2261,16 +2267,16 @@ function Ft() {
2261
2267
  className: "px-6 py-4 border-t border-border-default flex-shrink-0 flex flex-wrap justify-end gap-3",
2262
2268
  children: [/* @__PURE__ */ b("button", {
2263
2269
  type: "button",
2264
- onClick: () => Yt(!1),
2265
- disabled: Zt,
2270
+ onClick: () => Xt(!1),
2271
+ disabled: Qt,
2266
2272
  className: "px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50",
2267
2273
  children: C("common.cancel", "Cancel")
2268
2274
  }), /* @__PURE__ */ b("button", {
2269
2275
  type: "button",
2270
- onClick: Fr,
2271
- disabled: Zt,
2276
+ onClick: Ir,
2277
+ disabled: Qt,
2272
2278
  className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
2273
- children: Zt ? C("agentDetails.saving", "Saving...") : C("agentDetails.saveConfiguration", "Save Configuration")
2279
+ children: Qt ? C("agentDetails.saving", "Saving...") : C("agentDetails.saveConfiguration", "Save Configuration")
2274
2280
  })]
2275
2281
  })
2276
2282
  ]
@@ -2298,9 +2304,9 @@ function Ft() {
2298
2304
  F.name
2299
2305
  ]
2300
2306
  }),
2301
- Tn && /* @__PURE__ */ b("div", {
2307
+ En && /* @__PURE__ */ b("div", {
2302
2308
  className: "mb-4 p-3 bg-status-error-bg text-status-error-text rounded-md text-sm",
2303
- children: Tn
2309
+ children: En
2304
2310
  }),
2305
2311
  /* @__PURE__ */ x("div", {
2306
2312
  className: "space-y-4",
@@ -2319,7 +2325,7 @@ function Ft() {
2319
2325
  className: "block text-sm font-medium text-text-primary mb-1",
2320
2326
  children: C("sessions.filterType", "Type")
2321
2327
  }), /* @__PURE__ */ x("select", {
2322
- ref: Dn,
2328
+ ref: On,
2323
2329
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary",
2324
2330
  children: [
2325
2331
  /* @__PURE__ */ b("option", {
@@ -2348,7 +2354,7 @@ function Ft() {
2348
2354
  className: "block text-sm font-medium text-text-primary mb-1",
2349
2355
  children: C("sessions.command", "Command")
2350
2356
  }), /* @__PURE__ */ b("input", {
2351
- ref: On,
2357
+ ref: kn,
2352
2358
  type: "text",
2353
2359
  placeholder: C("vibeDetails.sessionCommandPlaceholder", "bash"),
2354
2360
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
@@ -2357,7 +2363,7 @@ function Ft() {
2357
2363
  className: "block text-sm font-medium text-text-primary mb-1",
2358
2364
  children: C("vibeDetails.workingDirectory", "Working Directory")
2359
2365
  }), /* @__PURE__ */ b("input", {
2360
- ref: kn,
2366
+ ref: An,
2361
2367
  type: "text",
2362
2368
  placeholder: "/home/user",
2363
2369
  className: "w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder"
@@ -2373,7 +2379,7 @@ function Ft() {
2373
2379
  children: C("common.cancel", "Cancel")
2374
2380
  }), /* @__PURE__ */ b("button", {
2375
2381
  "data-testid": "create-session-submit",
2376
- onClick: Hr,
2382
+ onClick: Ur,
2377
2383
  disabled: M,
2378
2384
  className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
2379
2385
  children: M ? C("sessions.creating", "Creating...") : C("sessions.createSession", "Create Session")
@@ -2382,34 +2388,34 @@ function Ft() {
2382
2388
  ]
2383
2389
  })
2384
2390
  }),
2385
- /* @__PURE__ */ b(ce, {
2386
- isOpen: ir,
2387
- onClose: () => ar(!1),
2391
+ /* @__PURE__ */ b(le, {
2392
+ isOpen: ar,
2393
+ onClose: () => or(!1),
2388
2394
  onConfirm: () => {
2389
- ar(!1), S("/billing/plans");
2395
+ or(!1), S("/billing/plans");
2390
2396
  },
2391
- title: le(or).title,
2392
- message: le(or).message
2397
+ title: ue(sr).title,
2398
+ message: ue(sr).message
2393
2399
  }),
2394
- /* @__PURE__ */ b(se, {
2395
- isOpen: Xn,
2400
+ /* @__PURE__ */ b(ce, {
2401
+ isOpen: Zn,
2396
2402
  onClose: () => {
2397
- nr || Zn(!1);
2403
+ rr || Qn(!1);
2398
2404
  },
2399
- onConfirm: zr,
2405
+ onConfirm: Br,
2400
2406
  title: C("agentDetails.removeAgentTitle", "Remove agent"),
2401
2407
  message: C("agentDetails.removeAgentMessage", "Remove “{{name}}” from this workspace.", { name: F.name }),
2402
2408
  confirmLabel: C("sessions.remove", "Remove"),
2403
2409
  variant: "danger",
2404
- isLoading: nr,
2410
+ isLoading: rr,
2405
2411
  children: /* @__PURE__ */ x("div", {
2406
2412
  className: "space-y-2",
2407
2413
  children: [/* @__PURE__ */ x("label", {
2408
2414
  className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
2409
- children: [/* @__PURE__ */ b(Ot, {
2410
- checked: Qn,
2411
- disabled: nr,
2412
- onCheckedChange: (e) => $n(e === !0),
2415
+ children: [/* @__PURE__ */ b(kt, {
2416
+ checked: $n,
2417
+ disabled: rr,
2418
+ onCheckedChange: (e) => er(e === !0),
2413
2419
  className: "mt-0.5"
2414
2420
  }), /* @__PURE__ */ x("span", {
2415
2421
  className: "min-w-0",
@@ -2423,10 +2429,10 @@ function Ft() {
2423
2429
  })]
2424
2430
  }), /* @__PURE__ */ x("label", {
2425
2431
  className: "flex items-start gap-3 p-3 rounded-md bg-bg-sunken border border-border-default cursor-pointer",
2426
- children: [/* @__PURE__ */ b(Ot, {
2427
- checked: er,
2428
- disabled: nr,
2429
- onCheckedChange: (e) => tr(e === !0),
2432
+ children: [/* @__PURE__ */ b(kt, {
2433
+ checked: tr,
2434
+ disabled: rr,
2435
+ onCheckedChange: (e) => nr(e === !0),
2430
2436
  className: "mt-0.5"
2431
2437
  }), /* @__PURE__ */ x("span", {
2432
2438
  className: "min-w-0",
@@ -2445,6 +2451,6 @@ function Ft() {
2445
2451
  });
2446
2452
  }
2447
2453
  //#endregion
2448
- export { Ft as AgentDetailsPage };
2454
+ export { It as AgentDetailsPage };
2449
2455
 
2450
2456
  //# sourceMappingURL=AgentDetailsPage.js.map