@1mcp/agent 0.35.0-beta.4 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/build/admin/assets/{admin-AboutRuntimeWorkspace-CM2ZafTJ.js → admin-AboutRuntimeWorkspace-DH2QC2nJ.js} +1 -1
  2. package/build/admin/assets/admin-BackendLogsWorkspace-BKavXT9B.js +1 -0
  3. package/build/admin/assets/admin-InstructionTemplatesWorkspace-CvG4EPdZ.js +1 -0
  4. package/build/admin/assets/admin-OAuthServicesWorkspace-BCGj2hP4.js +1 -0
  5. package/build/admin/assets/admin-PresetAuthoringWorkspace-BboJVBFl.js +1 -0
  6. package/build/admin/assets/admin-console-D6jyI73o.css +1 -0
  7. package/build/admin/assets/admin-console-xbgqUjbT.js +3 -0
  8. package/build/admin/assets/admin-icons-CYGTDZA5.js +1 -0
  9. package/build/admin/assets/admin-mantine-xwbfu5Gd.js +53 -0
  10. package/build/admin/index.html +4 -4
  11. package/build/auth/sdkOAuthClientProvider.d.ts +4 -0
  12. package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
  13. package/build/auth/sdkOAuthClientProvider.js +29 -0
  14. package/build/auth/sdkOAuthClientProvider.js.map +1 -1
  15. package/build/commands/instructions/instructions.d.ts.map +1 -1
  16. package/build/commands/instructions/instructions.js +56 -1
  17. package/build/commands/instructions/instructions.js.map +1 -1
  18. package/build/commands/mcp/add.js +2 -2
  19. package/build/commands/mcp/add.js.map +1 -1
  20. package/build/commands/mcp/list.js +1 -1
  21. package/build/commands/mcp/list.js.map +1 -1
  22. package/build/commands/mcp/update.js +1 -1
  23. package/build/commands/mcp/update.js.map +1 -1
  24. package/build/commands/shared/serveTargetResolver.d.ts.map +1 -1
  25. package/build/commands/shared/serveTargetResolver.js +17 -22
  26. package/build/commands/shared/serveTargetResolver.js.map +1 -1
  27. package/build/config/configContext.d.ts +2 -0
  28. package/build/config/configContext.d.ts.map +1 -1
  29. package/build/config/configContext.js +5 -0
  30. package/build/config/configContext.js.map +1 -1
  31. package/build/config/configLoader.d.ts +8 -0
  32. package/build/config/configLoader.d.ts.map +1 -1
  33. package/build/config/configLoader.js +35 -11
  34. package/build/config/configLoader.js.map +1 -1
  35. package/build/config/configManager.d.ts +16 -1
  36. package/build/config/configManager.d.ts.map +1 -1
  37. package/build/config/configManager.js +77 -0
  38. package/build/config/configManager.js.map +1 -1
  39. package/build/config/configWatcher.d.ts +2 -0
  40. package/build/config/configWatcher.d.ts.map +1 -1
  41. package/build/config/configWatcher.js +9 -4
  42. package/build/config/configWatcher.js.map +1 -1
  43. package/build/config/configuredServerTargets.d.ts +3 -0
  44. package/build/config/configuredServerTargets.d.ts.map +1 -0
  45. package/build/config/configuredServerTargets.js +8 -0
  46. package/build/config/configuredServerTargets.js.map +1 -0
  47. package/build/config/envProcessor.d.ts +2 -1
  48. package/build/config/envProcessor.d.ts.map +1 -1
  49. package/build/config/envProcessor.js +16 -9
  50. package/build/config/envProcessor.js.map +1 -1
  51. package/build/config/mcpConfigManager.d.ts +3 -0
  52. package/build/config/mcpConfigManager.d.ts.map +1 -1
  53. package/build/config/mcpConfigManager.js +15 -0
  54. package/build/config/mcpConfigManager.js.map +1 -1
  55. package/build/config/runtimeScopeEnv.d.ts +15 -0
  56. package/build/config/runtimeScopeEnv.d.ts.map +1 -0
  57. package/build/config/runtimeScopeEnv.js +231 -0
  58. package/build/config/runtimeScopeEnv.js.map +1 -0
  59. package/build/config/runtimeTargetFingerprint.d.ts +3 -0
  60. package/build/config/runtimeTargetFingerprint.d.ts.map +1 -0
  61. package/build/config/runtimeTargetFingerprint.js +66 -0
  62. package/build/config/runtimeTargetFingerprint.js.map +1 -0
  63. package/build/config/types.d.ts +5 -0
  64. package/build/config/types.d.ts.map +1 -1
  65. package/build/config/types.js +1 -0
  66. package/build/config/types.js.map +1 -1
  67. package/build/constants/api.d.ts +1 -0
  68. package/build/constants/api.d.ts.map +1 -1
  69. package/build/constants/api.js +1 -0
  70. package/build/constants/api.js.map +1 -1
  71. package/build/constants/mcp.d.ts +1 -1
  72. package/build/constants/mcp.d.ts.map +1 -1
  73. package/build/constants/mcp.js +1 -1
  74. package/build/constants/mcp.js.map +1 -1
  75. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -1
  76. package/build/core/capabilities/capabilityAggregator.js +33 -14
  77. package/build/core/capabilities/capabilityAggregator.js.map +1 -1
  78. package/build/core/capabilities/capabilityCatalog.d.ts +1 -1
  79. package/build/core/capabilities/capabilityCatalog.d.ts.map +1 -1
  80. package/build/core/capabilities/capabilityCatalog.js +19 -7
  81. package/build/core/capabilities/capabilityCatalog.js.map +1 -1
  82. package/build/core/capabilities/capabilityPagination.d.ts.map +1 -1
  83. package/build/core/capabilities/capabilityPagination.js +7 -4
  84. package/build/core/capabilities/capabilityPagination.js.map +1 -1
  85. package/build/core/capabilities/configuredToolSnapshot.d.ts +34 -0
  86. package/build/core/capabilities/configuredToolSnapshot.d.ts.map +1 -0
  87. package/build/core/capabilities/configuredToolSnapshot.js +137 -0
  88. package/build/core/capabilities/configuredToolSnapshot.js.map +1 -0
  89. package/build/core/capabilities/lazyLoadingOrchestrator.d.ts.map +1 -1
  90. package/build/core/capabilities/lazyLoadingOrchestrator.js +8 -4
  91. package/build/core/capabilities/lazyLoadingOrchestrator.js.map +1 -1
  92. package/build/core/capabilities/metaToolProvider.js +3 -3
  93. package/build/core/capabilities/metaToolProvider.js.map +1 -1
  94. package/build/core/client/clientManager.d.ts.map +1 -1
  95. package/build/core/client/clientManager.js +31 -19
  96. package/build/core/client/clientManager.js.map +1 -1
  97. package/build/core/client/connectionHandler.d.ts.map +1 -1
  98. package/build/core/client/connectionHandler.js +9 -6
  99. package/build/core/client/connectionHandler.js.map +1 -1
  100. package/build/core/client/postAuthOAuthRecovery.d.ts +6 -0
  101. package/build/core/client/postAuthOAuthRecovery.d.ts.map +1 -0
  102. package/build/core/client/postAuthOAuthRecovery.js +74 -0
  103. package/build/core/client/postAuthOAuthRecovery.js.map +1 -0
  104. package/build/core/configChangeHandler.d.ts +5 -0
  105. package/build/core/configChangeHandler.d.ts.map +1 -1
  106. package/build/core/configChangeHandler.js +58 -14
  107. package/build/core/configChangeHandler.js.map +1 -1
  108. package/build/core/instructions/effectiveServerInstructions.d.ts +17 -0
  109. package/build/core/instructions/effectiveServerInstructions.d.ts.map +1 -0
  110. package/build/core/instructions/effectiveServerInstructions.js +12 -0
  111. package/build/core/instructions/effectiveServerInstructions.js.map +1 -0
  112. package/build/core/instructions/instructionAggregator.d.ts +51 -2
  113. package/build/core/instructions/instructionAggregator.d.ts.map +1 -1
  114. package/build/core/instructions/instructionAggregator.js +191 -30
  115. package/build/core/instructions/instructionAggregator.js.map +1 -1
  116. package/build/core/instructions/instructionsDistribution.d.ts +53 -0
  117. package/build/core/instructions/instructionsDistribution.d.ts.map +1 -1
  118. package/build/core/instructions/instructionsDistribution.js +25 -0
  119. package/build/core/instructions/instructionsDistribution.js.map +1 -1
  120. package/build/core/instructions/templateTypes.d.ts +25 -3
  121. package/build/core/instructions/templateTypes.d.ts.map +1 -1
  122. package/build/core/instructions/templateTypes.js +45 -0
  123. package/build/core/instructions/templateTypes.js.map +1 -1
  124. package/build/core/loading/mcpLoadingManager.d.ts.map +1 -1
  125. package/build/core/loading/mcpLoadingManager.js +5 -3
  126. package/build/core/loading/mcpLoadingManager.js.map +1 -1
  127. package/build/core/protocol/requestHandlerUtils.d.ts.map +1 -1
  128. package/build/core/protocol/requestHandlerUtils.js +3 -3
  129. package/build/core/protocol/requestHandlerUtils.js.map +1 -1
  130. package/build/core/protocol/toolRequestHandlers.d.ts.map +1 -1
  131. package/build/core/protocol/toolRequestHandlers.js +18 -5
  132. package/build/core/protocol/toolRequestHandlers.js.map +1 -1
  133. package/build/core/server/backendStdioSupervisor.d.ts.map +1 -1
  134. package/build/core/server/backendStdioSupervisor.js +2 -1
  135. package/build/core/server/backendStdioSupervisor.js.map +1 -1
  136. package/build/core/server/clientInstanceFactory.d.ts +2 -1
  137. package/build/core/server/clientInstanceFactory.d.ts.map +1 -1
  138. package/build/core/server/clientInstanceFactory.js +9 -2
  139. package/build/core/server/clientInstanceFactory.js.map +1 -1
  140. package/build/core/server/clientInstancePool.d.ts +1 -0
  141. package/build/core/server/clientInstancePool.d.ts.map +1 -1
  142. package/build/core/server/clientInstancePool.js +92 -55
  143. package/build/core/server/clientInstancePool.js.map +1 -1
  144. package/build/core/server/clientInstancePoolTypes.d.ts +2 -0
  145. package/build/core/server/clientInstancePoolTypes.d.ts.map +1 -1
  146. package/build/core/server/disabledTools.d.ts +2 -0
  147. package/build/core/server/disabledTools.d.ts.map +1 -1
  148. package/build/core/server/disabledTools.js +7 -4
  149. package/build/core/server/disabledTools.js.map +1 -1
  150. package/build/core/server/mcpServerLifecycleManager.d.ts +0 -4
  151. package/build/core/server/mcpServerLifecycleManager.d.ts.map +1 -1
  152. package/build/core/server/mcpServerLifecycleManager.js +18 -40
  153. package/build/core/server/mcpServerLifecycleManager.js.map +1 -1
  154. package/build/core/server/serverManager.d.ts +1 -0
  155. package/build/core/server/serverManager.d.ts.map +1 -1
  156. package/build/core/server/serverManager.js +32 -0
  157. package/build/core/server/serverManager.js.map +1 -1
  158. package/build/core/server/templateIdentity.d.ts +1 -0
  159. package/build/core/server/templateIdentity.d.ts.map +1 -1
  160. package/build/core/server/templateIdentity.js +11 -1
  161. package/build/core/server/templateIdentity.js.map +1 -1
  162. package/build/core/server/templateServerManager.d.ts +13 -1
  163. package/build/core/server/templateServerManager.d.ts.map +1 -1
  164. package/build/core/server/templateServerManager.js +68 -13
  165. package/build/core/server/templateServerManager.js.map +1 -1
  166. package/build/core/server/toolDescriptionOverrides.d.ts +9 -0
  167. package/build/core/server/toolDescriptionOverrides.d.ts.map +1 -0
  168. package/build/core/server/toolDescriptionOverrides.js +44 -0
  169. package/build/core/server/toolDescriptionOverrides.js.map +1 -0
  170. package/build/core/tools/handlers/serverManagementHandler.d.ts +22 -8
  171. package/build/core/tools/handlers/serverManagementHandler.d.ts.map +1 -1
  172. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts +3 -1
  173. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts.map +1 -1
  174. package/build/core/tools/internal/schemas/discovery.d.ts +1 -1
  175. package/build/core/tools/internal/schemas/index.d.ts +3 -3
  176. package/build/core/tools/internal/schemas/management.d.ts +2 -2
  177. package/build/core/types/transport.d.ts +39 -6
  178. package/build/core/types/transport.d.ts.map +1 -1
  179. package/build/core/types/transport.js +61 -2
  180. package/build/core/types/transport.js.map +1 -1
  181. package/build/domains/admin/adminConfiguredServerService.d.ts +65 -4
  182. package/build/domains/admin/adminConfiguredServerService.d.ts.map +1 -1
  183. package/build/domains/admin/adminConfiguredServerService.js +292 -49
  184. package/build/domains/admin/adminConfiguredServerService.js.map +1 -1
  185. package/build/domains/admin/adminDomain.d.ts +19 -0
  186. package/build/domains/admin/adminDomain.d.ts.map +1 -1
  187. package/build/domains/admin/adminDomain.js +17 -0
  188. package/build/domains/admin/adminDomain.js.map +1 -1
  189. package/build/domains/admin/adminInstructionPreviewRuntime.d.ts +7 -0
  190. package/build/domains/admin/adminInstructionPreviewRuntime.d.ts.map +1 -0
  191. package/build/domains/admin/adminInstructionPreviewRuntime.js +154 -0
  192. package/build/domains/admin/adminInstructionPreviewRuntime.js.map +1 -0
  193. package/build/domains/admin/adminInstructionTemplateService.d.ts +169 -0
  194. package/build/domains/admin/adminInstructionTemplateService.d.ts.map +1 -0
  195. package/build/domains/admin/adminInstructionTemplateService.js +181 -0
  196. package/build/domains/admin/adminInstructionTemplateService.js.map +1 -0
  197. package/build/domains/admin/configuredToolInventory.d.ts +64 -0
  198. package/build/domains/admin/configuredToolInventory.d.ts.map +1 -0
  199. package/build/domains/admin/configuredToolInventory.js +182 -0
  200. package/build/domains/admin/configuredToolInventory.js.map +1 -0
  201. package/build/domains/admin/runtimeConfiguredToolInspectionService.d.ts +21 -0
  202. package/build/domains/admin/runtimeConfiguredToolInspectionService.d.ts.map +1 -0
  203. package/build/domains/admin/runtimeConfiguredToolInspectionService.js +255 -0
  204. package/build/domains/admin/runtimeConfiguredToolInspectionService.js.map +1 -0
  205. package/build/domains/config-change/configChange.d.ts +1 -1
  206. package/build/domains/config-change/configChange.d.ts.map +1 -1
  207. package/build/domains/config-change/configChange.js +153 -13
  208. package/build/domains/config-change/configChange.js.map +1 -1
  209. package/build/domains/config-change/types.d.ts +30 -2
  210. package/build/domains/config-change/types.d.ts.map +1 -1
  211. package/build/domains/instruction-template/instructionTemplateManager.d.ts +58 -0
  212. package/build/domains/instruction-template/instructionTemplateManager.d.ts.map +1 -0
  213. package/build/domains/instruction-template/instructionTemplateManager.js +167 -0
  214. package/build/domains/instruction-template/instructionTemplateManager.js.map +1 -0
  215. package/build/domains/runtime-targets/runtimeIdentityVerification.d.ts +1 -0
  216. package/build/domains/runtime-targets/runtimeIdentityVerification.d.ts.map +1 -1
  217. package/build/domains/runtime-targets/runtimeIdentityVerification.js +6 -5
  218. package/build/domains/runtime-targets/runtimeIdentityVerification.js.map +1 -1
  219. package/build/transport/http/routes/adminRoutes.d.ts +2 -0
  220. package/build/transport/http/routes/adminRoutes.d.ts.map +1 -1
  221. package/build/transport/http/routes/adminRoutes.js +345 -9
  222. package/build/transport/http/routes/adminRoutes.js.map +1 -1
  223. package/build/transport/http/routes/apiRoutes.d.ts.map +1 -1
  224. package/build/transport/http/routes/apiRoutes.js +2 -0
  225. package/build/transport/http/routes/apiRoutes.js.map +1 -1
  226. package/build/transport/http/routes/inspectRequestContext.d.ts +2 -0
  227. package/build/transport/http/routes/inspectRequestContext.d.ts.map +1 -1
  228. package/build/transport/http/routes/inspectRequestContext.js +2 -2
  229. package/build/transport/http/routes/inspectRequestContext.js.map +1 -1
  230. package/build/transport/http/routes/inspectRoutes.d.ts +9 -0
  231. package/build/transport/http/routes/inspectRoutes.d.ts.map +1 -1
  232. package/build/transport/http/routes/inspectRoutes.js +15 -10
  233. package/build/transport/http/routes/inspectRoutes.js.map +1 -1
  234. package/build/transport/http/routes/instructionsRoutes.d.ts +4 -0
  235. package/build/transport/http/routes/instructionsRoutes.d.ts.map +1 -0
  236. package/build/transport/http/routes/instructionsRoutes.js +147 -0
  237. package/build/transport/http/routes/instructionsRoutes.js.map +1 -0
  238. package/build/transport/http/routes/toolRoutes.d.ts.map +1 -1
  239. package/build/transport/http/routes/toolRoutes.js +5 -4
  240. package/build/transport/http/routes/toolRoutes.js.map +1 -1
  241. package/build/transport/http/server.d.ts.map +1 -1
  242. package/build/transport/http/server.js +16 -0
  243. package/build/transport/http/server.js.map +1 -1
  244. package/build/transport/transportFactory.d.ts.map +1 -1
  245. package/build/transport/transportFactory.js +34 -12
  246. package/build/transport/transportFactory.js.map +1 -1
  247. package/build/utils/validation/discoveredServer.d.ts +15 -0
  248. package/build/utils/validation/discoveredServer.d.ts.map +1 -0
  249. package/build/utils/validation/discoveredServer.js +2 -0
  250. package/build/utils/validation/discoveredServer.js.map +1 -0
  251. package/build/utils/validation/urlDetection.d.ts +4 -5
  252. package/build/utils/validation/urlDetection.d.ts.map +1 -1
  253. package/build/utils/validation/urlDetection.js +94 -25
  254. package/build/utils/validation/urlDetection.js.map +1 -1
  255. package/package.json +7 -2
  256. package/build/admin/assets/admin-BackendLogsWorkspace-CvJs1npx.js +0 -1
  257. package/build/admin/assets/admin-OAuthServicesWorkspace-BswG57Gm.js +0 -1
  258. package/build/admin/assets/admin-PresetAuthoringWorkspace-BIIRs_EN.js +0 -1
  259. package/build/admin/assets/admin-console-Brz9bnhv.css +0 -1
  260. package/build/admin/assets/admin-console-MT8QZmIC.js +0 -3
  261. package/build/admin/assets/admin-icons-D-JtMXSq.js +0 -1
  262. package/build/admin/assets/admin-mantine-DSFdoMaN.js +0 -53
@@ -1 +1 @@
1
- import{C as e,O as t,S as n,o as r,s as i,t as a}from"./admin-mantine-DSFdoMaN.js";import{r as o}from"./admin-react-BSaWeqgv.js";var s=o();function c({state:o}){let c=o.status?.about;return c?(0,s.jsxs)(`section`,{"aria-labelledby":`about-title`,className:`operations-workspace`,children:[(0,s.jsx)(n,{className:`eyebrow`,size:`xs`,children:`Product and protocol metadata`}),(0,s.jsxs)(a,{id:`about-title`,order:2,children:[`About `,c.productName]}),c.protocolCompatible?null:(0,s.jsxs)(e,{color:`red`,title:`Admin UI protocol incompatibility`,children:[`This Admin UI build expects protocol `,c.adminUiProtocolVersion??`Unavailable`,`, but the runtime exposes`,` `,c.adminApiProtocolVersion,`.`]}),(0,s.jsxs)(i,{cols:{base:1,md:2},mt:`md`,children:[(0,s.jsx)(l,{title:`Versions`,values:[[`Runtime Version`,c.runtimeVersion],[`Admin UI Build Version`,c.adminUiBuildVersion??`Unavailable`],[`Admin API Protocol Version`,c.adminApiProtocolVersion],[`Admin UI Protocol Version`,c.adminUiProtocolVersion??`Unavailable`]]}),(0,s.jsx)(l,{title:`Runtime Scope`,values:[[`Runtime Scope ID`,c.runtime.runtimeScopeId],[`External URL`,c.runtime.externalUrl??`Unavailable`]]}),(0,s.jsx)(l,{title:`Build`,values:[[`Commit`,c.build.commit??`Unavailable`],[`Build timestamp`,c.build.timestamp??`Unavailable`]]}),(0,s.jsxs)(t,{withBorder:!0,p:`md`,children:[(0,s.jsx)(a,{order:3,children:`Project`}),(0,s.jsxs)(r,{gap:`xs`,mt:`sm`,children:[c.project.repository?(0,s.jsx)(u,{label:`Repository`,href:c.project.repository}):(0,s.jsx)(n,{children:`Repository · Unavailable`}),c.project.documentation?(0,s.jsx)(u,{label:`Documentation`,href:c.project.documentation}):(0,s.jsx)(n,{children:`Documentation · Unavailable`}),c.project.issues?(0,s.jsx)(u,{label:`Report an issue`,href:c.project.issues}):(0,s.jsx)(n,{children:`Issue reporting · Unavailable`}),(0,s.jsxs)(n,{children:[`License · `,c.project.license??`Unavailable`]})]})]})]})]}):(0,s.jsx)(e,{children:`About metadata is unavailable.`})}function l({title:e,values:i}){return(0,s.jsxs)(t,{withBorder:!0,p:`md`,children:[(0,s.jsx)(a,{order:3,children:e}),(0,s.jsx)(r,{gap:`xs`,mt:`sm`,children:i.map(([e,t])=>(0,s.jsxs)(`div`,{children:[(0,s.jsx)(n,{size:`xs`,c:`dimmed`,children:e}),(0,s.jsx)(n,{children:t})]},e))})]})}function u({label:e,href:t}){return(0,s.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`${e} (opens in a new tab)`,children:e})}export{c as AboutRuntimeWorkspace};
1
+ import{E as e,T as t,c as n,j as r,s as i,t as a}from"./admin-mantine-xwbfu5Gd.js";import{r as o}from"./admin-react-BSaWeqgv.js";var s=o();function c({state:o}){let c=o.status?.about;return c?(0,s.jsxs)(`section`,{"aria-labelledby":`about-title`,className:`operations-workspace`,children:[(0,s.jsx)(t,{className:`eyebrow`,size:`xs`,children:`Product and protocol metadata`}),(0,s.jsxs)(a,{id:`about-title`,order:2,children:[`About `,c.productName]}),c.protocolCompatible?null:(0,s.jsxs)(e,{color:`red`,title:`Admin UI protocol incompatibility`,children:[`This Admin UI build expects protocol `,c.adminUiProtocolVersion??`Unavailable`,`, but the runtime exposes`,` `,c.adminApiProtocolVersion,`.`]}),(0,s.jsxs)(n,{cols:{base:1,md:2},mt:`md`,children:[(0,s.jsx)(l,{title:`Versions`,values:[[`Runtime Version`,c.runtimeVersion],[`Admin UI Build Version`,c.adminUiBuildVersion??`Unavailable`],[`Admin API Protocol Version`,c.adminApiProtocolVersion],[`Admin UI Protocol Version`,c.adminUiProtocolVersion??`Unavailable`]]}),(0,s.jsx)(l,{title:`Runtime Scope`,values:[[`Runtime Scope ID`,c.runtime.runtimeScopeId],[`External URL`,c.runtime.externalUrl??`Unavailable`]]}),(0,s.jsx)(l,{title:`Build`,values:[[`Commit`,c.build.commit??`Unavailable`],[`Build timestamp`,c.build.timestamp??`Unavailable`]]}),(0,s.jsxs)(r,{withBorder:!0,p:`md`,children:[(0,s.jsx)(a,{order:3,children:`Project`}),(0,s.jsxs)(i,{gap:`xs`,mt:`sm`,children:[c.project.repository?(0,s.jsx)(u,{label:`Repository`,href:c.project.repository}):(0,s.jsx)(t,{children:`Repository · Unavailable`}),c.project.documentation?(0,s.jsx)(u,{label:`Documentation`,href:c.project.documentation}):(0,s.jsx)(t,{children:`Documentation · Unavailable`}),c.project.issues?(0,s.jsx)(u,{label:`Report an issue`,href:c.project.issues}):(0,s.jsx)(t,{children:`Issue reporting · Unavailable`}),(0,s.jsxs)(t,{children:[`License · `,c.project.license??`Unavailable`]})]})]})]})]}):(0,s.jsx)(e,{children:`About metadata is unavailable.`})}function l({title:e,values:n}){return(0,s.jsxs)(r,{withBorder:!0,p:`md`,children:[(0,s.jsx)(a,{order:3,children:e}),(0,s.jsx)(i,{gap:`xs`,mt:`sm`,children:n.map(([e,n])=>(0,s.jsxs)(`div`,{children:[(0,s.jsx)(t,{size:`xs`,c:`dimmed`,children:e}),(0,s.jsx)(t,{children:n})]},e))})]})}function u({label:e,href:t}){return(0,s.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`${e} (opens in a new tab)`,children:e})}export{c as AboutRuntimeWorkspace};
@@ -0,0 +1 @@
1
+ import{D as e,M as t,S as n,T as r,b as i,s as a,t as o}from"./admin-mantine-xwbfu5Gd.js";import{r as s}from"./admin-react-BSaWeqgv.js";import{h as c}from"./admin-icons-CYGTDZA5.js";var l=s();function u({logs:t,configureServer:s}){let u=t.sources.find(e=>e.id===t.selectedSourceId)??null,p=t.sources.length>0;return(0,l.jsxs)(`section`,{"aria-label":`Backend logs`,className:`operations-workspace backend-logs-workspace`,children:[(0,l.jsx)(`header`,{className:`workspace-heading backend-logs-heading`,children:(0,l.jsxs)(e,{justify:`space-between`,align:`flex-end`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(r,{className:`eyebrow`,size:`xs`,children:`Runtime diagnostics`}),(0,l.jsx)(o,{order:2,children:`Backend logs`})]}),(0,l.jsx)(n,{color:v(t.connection),variant:`light`,children:_(t.connection,p)})]})}),t.sources.length===0?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`status`,children:t.connection===`loading`?`Loading backend log sources...`:(0,l.jsxs)(a,{gap:`sm`,align:`center`,className:`actionable-empty-state`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(r,{fw:800,children:`No backend log sources`}),(0,l.jsx)(r,{c:`dimmed`,size:`sm`,children:`Configure a stdio server to capture and inspect managed stderr here.`})]}),(0,l.jsx)(i,{component:`a`,href:`/admin/servers/new`,leftSection:(0,l.jsx)(c,{size:16}),onClick:e=>{d(e)&&(e.preventDefault(),s())},children:`Configure stdio server`})]})}):(0,l.jsxs)(`div`,{className:`backend-log-layout`,children:[(0,l.jsx)(`nav`,{"aria-label":`Backend log sources`,className:`backend-log-sources`,children:t.sources.map(e=>(0,l.jsx)(f,{source:e,active:e.id===t.selectedSourceId,unread:t.unread[e.id]??0,onSelect:()=>void t.select(e.id)},e.id))}),(0,l.jsx)(`div`,{className:`backend-log-inspector`,children:u?(0,l.jsx)(m,{source:u,logs:t}):null})]})]})}function d(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function f({source:e,active:i,unread:a,onSelect:o}){return(0,l.jsxs)(t,{"aria-label":`${e.displayName}, ${p(e)}`,"aria-current":i?`page`:void 0,className:`backend-log-source${i?` backend-log-source-active`:``}`,onClick:o,children:[(0,l.jsxs)(`span`,{className:`backend-log-source-copy`,children:[(0,l.jsx)(r,{component:`span`,fw:800,size:`sm`,children:e.displayName}),(0,l.jsx)(r,{component:`span`,c:`dimmed`,size:`xs`,children:p(e)})]}),a>0?(0,l.jsx)(n,{size:`xs`,color:`orange`,children:a>99?`99+`:a}):null]})}function p(e){return e.capture===`not-captured`?`Not captured`:e.lifecycle===`ended`?`Ended`:`Managed stderr`}function m({source:t,logs:i}){let a=i.entries;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(e,{className:`backend-log-source-header`,justify:`space-between`,wrap:`nowrap`,children:[(0,l.jsxs)(`div`,{className:`truncate`,children:[(0,l.jsx)(r,{fw:900,children:t.displayName}),(0,l.jsx)(r,{className:`backend-log-canonical truncate`,size:`xs`,children:t.canonicalName})]}),(0,l.jsx)(n,{color:t.capture===`not-captured`?`red`:t.lifecycle===`ended`?`orange`:`teal`,children:t.capture===`not-captured`?`Unavailable`:t.lifecycle===`ended`?`Ended`:`Live`})]}),t.capture===`not-captured`?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`status`,children:`This server sends stderr to an explicit destination, so the runtime does not capture it.`}):i.selectionLoading?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`status`,children:`Loading retained log history...`}):i.selectionError?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`alert`,children:i.selectionError}):a.length===0?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`status`,children:t.lifecycle===`ended`?`This source ended without retained log entries.`:`No captured stderr in retained runtime history.`}):(0,l.jsx)(`div`,{"aria-label":`${t.displayName} retained log entries`,className:`backend-log-well`,role:`log`,children:a.map(e=>(0,l.jsx)(h,{entry:e},e.sequence))})]})}function h({entry:e}){return(0,l.jsxs)(`div`,{className:`backend-log-row backend-log-row-${e.kind}`,children:[(0,l.jsxs)(`span`,{className:`backend-log-rail`,children:[(0,l.jsxs)(`span`,{children:[`#`,e.sequence]}),(0,l.jsx)(`time`,{dateTime:e.timestamp,children:g(e.timestamp)})]}),(0,l.jsx)(`span`,{className:`backend-log-content`,children:e.content})]})}function g(e){let t=new Date(e);return Number.isNaN(t.valueOf())?e:t.toLocaleTimeString([],{hour12:!1})}function _(e,t){return e===`reconnecting`?`Reconnecting`:e===`active`?t?`Live stream`:`Waiting for sources`:e===`loading`?`Connecting`:`Inactive`}function v(e){return e===`active`?`teal`:e===`reconnecting`?`orange`:`gray`}export{u as BackendLogsWorkspace};
@@ -0,0 +1 @@
1
+ import{n as e}from"./admin-rolldown-runtime-Bh1tDfsg.js";import{C as t,D as n,E as r,S as i,T as a,b as o,i as s,n as c,s as l,t as u,u as d,v as f,y as p}from"./admin-mantine-xwbfu5Gd.js";import{i as m,r as h}from"./admin-react-BSaWeqgv.js";import{D as g,T as _,c as v,f as y,g as b,k as x,m as S,r as C,w}from"./admin-icons-CYGTDZA5.js";var T=e(m(),1),E=h();function D({model:e,runtimeScopeId:t}){let m=e.items.find(t=>t.identity===e.selectedIdentity),[h,D]=(0,T.useState)(``),[k,N]=(0,T.useState)(`legacy`),P=m?.validation.valid!==!1,F=!!(e.activationValidation&&!e.dirty&&P);return(0,E.jsxs)(`section`,{"aria-labelledby":`instruction-templates-title`,className:`operations-workspace`,children:[(0,E.jsxs)(n,{justify:`space-between`,align:`flex-start`,className:`workspace-heading`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(a,{className:`eyebrow`,size:`xs`,children:[`Runtime Scope / `,t??`unavailable`]}),(0,E.jsx)(u,{id:`instruction-templates-title`,order:2,children:`Instruction templates`}),(0,E.jsx)(a,{c:`dimmed`,size:`sm`,children:`Author the initialization and CLI instructions used by new client surfaces.`})]}),(0,E.jsxs)(n,{gap:`xs`,children:[(0,E.jsx)(i,{color:e.selectionExplicit?`teal`:`gray`,variant:`light`,children:e.selectionExplicit?`Active: ${e.activeIdentity??`none`}`:`Legacy selection`}),(0,E.jsx)(o,{"aria-label":`Refresh instruction templates`,leftSection:(0,E.jsx)(S,{size:15}),variant:`default`,loading:e.busy,onClick:()=>void e.load(),children:`Refresh`}),(0,E.jsx)(o,{leftSection:(0,E.jsx)(w,{size:15}),onClick:e.newDraft,children:`New template`})]})]}),e.error?(0,E.jsx)(r,{color:`red`,role:`alert`,mb:`md`,children:e.error}):null,e.reloadWarning?(0,E.jsx)(r,{color:`yellow`,role:`status`,mb:`md`,title:`Runtime reload needs attention`,children:e.reloadWarning}):null,Object.values(e.renderFailures).map(e=>(0,E.jsxs)(r,{color:`yellow`,mb:`sm`,role:`status`,children:[M(e.surface),` rendering fell back to the built-in template for `,e.templateIdentity,`.`,(0,E.jsxs)(a,{component:`span`,size:`xs`,c:`dimmed`,children:[` `,e.code]})]},e.surface)),(0,E.jsxs)(`div`,{className:`instruction-workspace-grid`,children:[(0,E.jsxs)(`aside`,{className:`instruction-template-list`,"aria-label":`Instruction template library`,children:[(0,E.jsxs)(n,{justify:`space-between`,className:`instruction-pane-heading`,children:[(0,E.jsx)(a,{fw:800,children:`Template library`}),(0,E.jsx)(i,{variant:`outline`,children:e.items.length})]}),(0,E.jsxs)(l,{gap:4,className:`instruction-template-scroll`,children:[e.items.map(t=>(0,E.jsxs)(`button`,{type:`button`,className:`instruction-template-row${t.identity===e.selectedIdentity?` instruction-template-row-active`:``}`,"aria-pressed":t.identity===e.selectedIdentity,onClick:()=>e.select(t.identity),children:[(0,E.jsx)(`span`,{className:`instruction-template-identity`,children:t.identity}),(0,E.jsxs)(`span`,{className:`instruction-template-badges`,children:[t.active?(0,E.jsx)(i,{color:`teal`,children:`Active`}):null,t.protected?(0,E.jsx)(i,{variant:`outline`,children:`Built-in`}):null,(0,E.jsx)(i,{color:t.validation.valid?`teal`:`red`,variant:`light`,children:t.validation.valid?`valid`:`invalid`})]})]},t.identity)),!e.busy&&e.items.length===0?(0,E.jsx)(a,{c:`dimmed`,size:`sm`,p:`sm`,children:`No managed templates in this Runtime Scope.`}):null]}),e.selectedIdentity?(0,E.jsxs)(l,{gap:`xs`,className:`instruction-library-actions`,children:[(0,E.jsx)(c,{label:`Clone as`,placeholder:`template-copy`,value:h,onChange:e=>D(e.currentTarget.value)}),(0,E.jsx)(o,{leftSection:(0,E.jsx)(g,{size:14}),variant:`default`,disabled:!h.trim()||e.busy,onClick:()=>void e.clone(h.trim()).then(()=>D(``)),children:`Clone template`})]}):null,e.legacyAvailable?(0,E.jsxs)(l,{gap:`xs`,className:`instruction-library-actions`,children:[(0,E.jsx)(c,{label:`Import legacy as`,value:k,onChange:e=>N(e.currentTarget.value)}),(0,E.jsx)(o,{leftSection:(0,E.jsx)(_,{size:14}),variant:`default`,disabled:!k.trim()||e.busy,onClick:()=>void e.importLegacy(k.trim()),children:`Import legacy template`})]}):null]}),(0,E.jsxs)(`main`,{className:`instruction-editor-pane`,children:[(0,E.jsxs)(n,{justify:`space-between`,align:`flex-start`,className:`instruction-pane-heading`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(a,{className:`eyebrow`,size:`xs`,children:e.selectedIdentity?`Managed draft`:`New managed draft`}),(0,E.jsx)(u,{order:3,children:e.selectedIdentity??`Untitled template`})]}),(0,E.jsxs)(n,{gap:`xs`,children:[m?.protected?(0,E.jsx)(i,{variant:`outline`,children:`Protected built-in`}):null,m?(0,E.jsx)(i,{color:P?`teal`:`red`,variant:`light`,children:P?`Valid draft`:`Invalid draft`}):null,(0,E.jsx)(i,{color:e.dirty?`yellow`:`gray`,variant:e.dirty?`light`:`outline`,children:e.dirty?`Unsaved changes`:`Saved`})]})]}),(0,E.jsx)(c,{label:`Template name`,value:e.draft.identity,disabled:!!e.selectedIdentity,onChange:t=>e.changeIdentity(t.currentTarget.value)}),(0,E.jsxs)(s,{value:e.surface,onChange:t=>t&&e.changeSurface(t),children:[(0,E.jsxs)(s.List,{grow:!0,children:[(0,E.jsx)(s.Tab,{value:`initialize`,children:`Initialization`}),(0,E.jsx)(s.Tab,{value:`cli`,children:`CLI`})]}),[`initialize`,`cli`].map(t=>(0,E.jsx)(s.Panel,{value:t,pt:`sm`,children:(0,E.jsx)(f,{className:`instruction-template-editor`,"aria-label":`${t===`cli`?`CLI`:`Initialization`} template`,autosize:!0,minRows:12,maxRows:24,disabled:m?.protected,value:e.draft.variants[t===`initialize`?`initialization`:`cli`],onChange:n=>e.changeVariant(t,n.currentTarget.value)})},t))]}),m&&!m.validation.valid?(0,E.jsxs)(r,{color:`red`,title:`Draft validation`,children:[m.validation.initialization.error?(0,E.jsxs)(a,{size:`sm`,children:[`Initialization: `,m.validation.initialization.error]}):null,m.validation.cli.error?(0,E.jsxs)(a,{size:`sm`,children:[`CLI: `,m.validation.cli.error]}):null]}):null,(0,E.jsxs)(n,{justify:`space-between`,className:`instruction-editor-actions`,children:[(0,E.jsx)(o,{"aria-label":`Delete template`,color:`red`,leftSection:(0,E.jsx)(C,{size:15}),variant:`light`,disabled:!e.selectedIdentity||m?.protected||e.busy,onClick:()=>void e.deleteSelected(),children:`Delete`}),(0,E.jsx)(o,{leftSection:(0,E.jsx)(y,{size:15}),disabled:!e.draft.identity.trim()||!e.dirty||m?.protected||e.busy,loading:e.busy,onClick:()=>void e.saveDraft(),children:`Save draft`})]})]}),(0,E.jsxs)(`aside`,{className:`instruction-preview-pane`,"aria-label":`Template preview`,children:[(0,E.jsxs)(n,{justify:`space-between`,className:`instruction-pane-heading`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(a,{fw:800,children:`Effective preview`}),(0,E.jsxs)(a,{size:`xs`,c:`dimmed`,children:[M(e.surface),` surface`]})]}),e.previewStale?(0,E.jsx)(i,{color:`yellow`,children:`Preview is stale`}):null]}),(0,E.jsx)(d,{fullWidth:!0,"aria-label":`Preview target selection`,value:e.selection.mode,onChange:t=>e.changeSelection(j(t)),data:[{value:`all`,label:`All`},{value:`preset`,label:`Preset`},{value:`tags`,label:`Tags`},{value:`tag-filter`,label:`Filter`}]}),(0,E.jsx)(A,{selection:e.selection,onChange:e.changeSelection}),(0,E.jsx)(O,{value:e.requestContext,onChange:e.changeRequestContext}),(0,E.jsxs)(o,{leftSection:(0,E.jsx)(b,{size:15}),disabled:!e.selectedIdentity||e.dirty||e.busy,loading:e.busy,onClick:()=>void e.previewDraft(),children:[`Preview `,e.surface]}),(0,E.jsx)(`div`,{className:`instruction-preview-output`,"aria-live":`polite`,children:e.preview?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(n,{justify:`space-between`,children:[(0,E.jsx)(i,{color:e.preview.validation?`yellow`:`teal`,variant:`light`,children:e.preview.validation?`Preview failed`:`Rendered`}),(0,E.jsx)(a,{size:`xs`,c:`dimmed`,children:`One-shot preview`})]}),(0,E.jsx)(p,{block:!0,children:e.preview.rendered??e.preview.validation?.message??`(suppressed)`}),e.preview.unresolvedTemplates.length>0?(0,E.jsxs)(r,{color:`yellow`,title:`Context required`,role:`status`,children:[`Unresolved Template Servers: `,e.preview.unresolvedTemplates.join(`, `)]}):null,(0,E.jsxs)(l,{gap:4,"aria-label":`Effective servers`,children:[(0,E.jsxs)(n,{justify:`space-between`,children:[(0,E.jsx)(a,{size:`xs`,fw:800,children:`Effective servers`}),(0,E.jsx)(i,{variant:`outline`,children:e.preview.effectiveServers.length})]}),e.preview.effectiveServers.map(e=>(0,E.jsxs)(n,{justify:`space-between`,wrap:`nowrap`,children:[(0,E.jsxs)(a,{size:`xs`,children:[(0,E.jsxs)(a,{component:`span`,c:`dimmed`,inherit:!0,children:[e.target.source,` /`]}),` `,e.target.name]}),(0,E.jsx)(i,{color:e.hasInstructions?`teal`:`gray`,variant:`light`,children:e.hasInstructions?`Instructions`:`No instructions`})]},`${e.target.source}:${e.target.name}`)),e.preview.effectiveServers.length===0?(0,E.jsx)(a,{size:`xs`,c:`dimmed`,children:`No effective servers matched this selection.`}):null]})]}):(0,E.jsxs)(l,{align:`center`,gap:4,className:`instruction-preview-empty`,children:[(0,E.jsx)(x,{size:20}),(0,E.jsx)(a,{size:`sm`,fw:700,children:`Save, then preview this surface`}),(0,E.jsx)(a,{size:`xs`,c:`dimmed`,ta:`center`,children:`Changing the draft, surface, target selection, or request context expires the preview.`})]})}),(0,E.jsx)(o,{variant:`default`,disabled:!e.selectedIdentity||e.dirty||e.busy,onClick:()=>void e.validateDraft(),children:`Validate both surfaces`}),(0,E.jsx)(o,{leftSection:(0,E.jsx)(v,{size:15}),disabled:!F||e.busy,onClick:()=>void e.activate(),children:`Activate template`})]})]})]})}function O({value:e,onChange:n}){let r=k(e),i=e.trim().length>0,a=e=>n(JSON.stringify({...r,...e}));return(0,E.jsxs)(l,{gap:`xs`,children:[(0,E.jsx)(t,{label:`Use explicit request context`,checked:i,onChange:e=>n(e.currentTarget.checked?JSON.stringify({project:{},user:{},environment:{}}):``)}),i?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(c,{label:`Project name`,value:r.project.name??``,onChange:e=>a({project:{name:e.currentTarget.value}})}),(0,E.jsx)(c,{label:`User name`,value:r.user.name??``,onChange:e=>a({user:{name:e.currentTarget.value}})}),(0,E.jsx)(c,{label:`Environment prefixes`,description:`Comma-separated`,value:(r.environment.prefixes??[]).join(`, `),onChange:e=>a({environment:{prefixes:e.currentTarget.value.split(`,`).map(e=>e.trim()).filter(Boolean)}})})]}):null]})}function k(e){if(!e.trim())return{project:{},user:{},environment:{}};try{let t=JSON.parse(e);return{project:t.project??{},user:t.user??{},environment:t.environment??{}}}catch{return{project:{},user:{},environment:{}}}}function A({selection:e,onChange:t}){return e.mode===`all`?null:e.mode===`preset`?(0,E.jsx)(c,{label:`Preset`,value:e.preset,onChange:e=>t({mode:`preset`,preset:e.currentTarget.value})}):e.mode===`tags`?(0,E.jsx)(c,{label:`Tags`,description:`Comma-separated`,value:e.tags.join(`, `),onChange:e=>t({mode:`tags`,tags:e.currentTarget.value.split(`,`).map(e=>e.trim()).filter(Boolean)})}):(0,E.jsx)(c,{label:`Tag filter`,value:e.expression,onChange:e=>t({mode:`tag-filter`,expression:e.currentTarget.value})})}function j(e){return e===`preset`?{mode:e,preset:``}:e===`tags`?{mode:e,tags:[]}:e===`tag-filter`?{mode:e,expression:``}:{mode:`all`}}function M(e){return e===`cli`?`CLI`:`Initialization`}export{D as InstructionTemplatesWorkspace};
@@ -0,0 +1 @@
1
+ import{n as e}from"./admin-rolldown-runtime-Bh1tDfsg.js";import{D as t,E as n,S as r,T as i,b as a,j as o,s,y as c}from"./admin-mantine-xwbfu5Gd.js";import{i as l,r as u}from"./admin-react-BSaWeqgv.js";import{O as d,h as f,p,x as m}from"./admin-icons-CYGTDZA5.js";import{t as h}from"./admin-console-xbgqUjbT.js";var g=e(l(),1),_=u();function v({model:e,oauth:t,configureServer:r}){let{state:c,configuredServers:l}=e,u=c.status?.oauth.services??[],[d,p]=(0,g.useState)(null);async function m(e){try{await l.copy(`serviceId`,e.id),p(`Service id copied.`)}catch{p(`Could not copy service id. Select the value manually.`)}}return(0,_.jsxs)(`section`,{"aria-label":`OAuth services`,className:`operations-workspace`,children:[(0,_.jsx)(h,{title:`OAuth services`,description:`${u.length} reported services · runtime status ${c.status?.oauth.status??`unavailable`}`}),t.callbackFeedback?(0,_.jsx)(S,{feedback:t.callbackFeedback}):null,t.operationFeedback?(0,_.jsx)(S,{feedback:t.operationFeedback}):null,u.length===0?(0,_.jsx)(o,{className:`operations-panel`,withBorder:!0,children:(0,_.jsxs)(s,{gap:`sm`,className:`actionable-empty-state`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(i,{fw:800,children:`No OAuth services reported`}),(0,_.jsx)(i,{c:`dimmed`,size:`sm`,children:`OAuth services appear when a configured server requires provider authorization.`})]}),(0,_.jsx)(a,{component:`a`,href:`/admin/servers/new`,leftSection:(0,_.jsx)(f,{size:16}),onClick:e=>{y(e)&&(e.preventDefault(),r())},children:`Configure server`})]})}):(0,_.jsx)(s,{gap:`sm`,children:u.map(e=>(0,_.jsx)(b,{service:e,busy:t.busy?.serviceId===e.id?t.busy.action:null,operationBlocked:t.busy!==null,onCopy:()=>void m(e),onOperate:n=>void t.operate(e.id,n)},e.id))}),d?(0,_.jsx)(n,{"aria-live":`polite`,color:d.startsWith(`Could not`)?`red`:`teal`,mt:`sm`,children:d}):null]})}function y(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function b({service:e,busy:n,operationBlocked:l,onCopy:u,onOperate:f}){let h=x(e),g=h===`authorize`?`Authorize`:`Restart`;return(0,_.jsx)(o,{component:`article`,className:`oauth-service-row`,withBorder:!0,children:(0,_.jsxs)(t,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,children:[(0,_.jsxs)(`div`,{className:`oauth-service-main`,children:[(0,_.jsxs)(t,{gap:`xs`,children:[(0,_.jsx)(i,{fw:800,children:e.displayName}),(0,_.jsx)(r,{color:e.status===`connected`?`teal`:`yellow`,variant:`light`,children:e.status})]}),(0,_.jsx)(i,{size:`xs`,c:`dimmed`,children:e.requiresOAuth?`OAuth required`:`No OAuth action required`}),e.lastError?(0,_.jsx)(i,{size:`sm`,c:`red`,children:e.lastError}):null,(0,_.jsxs)(`details`,{className:`oauth-service-identity`,children:[(0,_.jsx)(`summary`,{children:`Full service ID`}),(0,_.jsxs)(t,{gap:`xs`,wrap:`nowrap`,children:[(0,_.jsx)(c,{className:`oauth-service-id`,children:e.id}),(0,_.jsx)(a,{"aria-label":`Copy full service ID for ${e.displayName}`,size:`compact-xs`,variant:`subtle`,onClick:u,children:(0,_.jsx)(d,{size:14,"aria-hidden":`true`})})]})]})]}),h?(0,_.jsxs)(s,{gap:4,align:`flex-end`,className:`oauth-service-action`,children:[(0,_.jsx)(a,{"aria-label":`${g} ${e.displayName}`,leftSection:h===`authorize`?(0,_.jsx)(m,{size:15}):(0,_.jsx)(p,{size:15}),loading:n===h,disabled:l,onClick:()=>f(h),children:g}),(0,_.jsx)(i,{size:`xs`,c:`dimmed`,"aria-live":`polite`,children:n?n===`authorize`?`Starting authorization...`:`Restarting authorization...`:``})]}):null]})})}function x(e){return e.requiresOAuth?e.status===`awaiting_oauth`?`authorize`:`restart`:null}function S({feedback:e}){return(0,_.jsx)(n,{color:e.kind===`success`?`teal`:`red`,role:e.kind===`success`?`status`:`alert`,mb:`sm`,children:e.message})}export{v as OAuthServicesWorkspace};
@@ -0,0 +1 @@
1
+ import{n as e}from"./admin-rolldown-runtime-Bh1tDfsg.js";import{D as t,E as n,S as r,T as i,b as a,j as o,n as s,s as c,t as l,u,v as d}from"./admin-mantine-xwbfu5Gd.js";import{i as f,r as p}from"./admin-react-BSaWeqgv.js";import{A as m,d as h,f as g,r as _,s as v}from"./admin-icons-CYGTDZA5.js";var y=e(f(),1);function b(e,t){let n=E(e,`include`),r=E(e,`exclude`),i=[];return n.length===1&&i.push({tag:n[0]}),n.length>1&&i.push({[t===`or`?`$or`:`$and`]:n.map(e=>({tag:e}))}),i.push(...r.map(e=>({$not:{tag:e}}))),i.length===0?{}:i.length===1?i[0]:{$and:i}}function x(e,t){return e.tag?t.includes(e.tag):e.$or?e.$or.some(e=>x(e,t)):e.$and?e.$and.every(e=>x(e,t)):e.$not?!x(e.$not,t):e.$in?e.$in.some(e=>t.includes(e)):!1}function S(e){let t={},n=C(e,t);return n?{strategy:n,states:t}:null}function C(e,t){if(typeof e.tag==`string`&&Object.keys(e).length===1)return t[e.tag]=`include`,`or`;if(e.$not&&Object.keys(e).length===1&&T(e.$not))return t[T(e.$not)]=`exclude`,`or`;if(e.$or&&Object.keys(e).length===1&&w(e.$or,t))return`or`;if(e.$and&&Object.keys(e).length===1){let n=e.$and,r=n.filter(e=>e.tag||e.$or||e.$and),i=n.filter(e=>e.$not);if(n.length!==r.length+i.length)return null;let a=`and`;if(r.length>1){if(!w(r,t))return null}else{let e=r[0];if(e?.tag)t[e.tag]=`include`;else if(e?.$or&&w(e.$or,t))a=`or`;else if(e?.$and&&w(e.$and,t))a=`and`;else if(e)return null}for(let e of i){let n=e.$not?T(e.$not):null;if(!n)return null;t[n]=`exclude`}return a}return Object.keys(e).length===0?`or`:null}function w(e,t){for(let n of e){let e=T(n);if(!e)return!1;t[e]=`include`}return!0}function T(e){return typeof e.tag==`string`&&Object.keys(e).length===1?e.tag:null}function E(e,t){return Object.entries(e).filter(([,e])=>e===t).map(([e])=>e)}var D=p();function O({model:e,runtimeScopeId:r}){let{items:u,targets:f,busy:p,load:m,preview:h,save:x,delete:C}=e,[w,T]=(0,y.useState)(),[E,O]=(0,y.useState)(``),[N,F]=(0,y.useState)(``),[I,L]=(0,y.useState)(`or`),[R,z]=(0,y.useState)({}),[B,V]=(0,y.useState)(`{}`),[H,U]=(0,y.useState)(null),[W,G]=(0,y.useState)(null),[K,q]=(0,y.useState)({lossless:!0}),J=k(E),Y=I!==`advanced`||A(B),X=!!J||!Y||p;function Z(e,t=!1){T(e.name),O(t?`${e.name}-copy`:e.name),F(e.description??``);let n=S(e.tagQuery);L(n?n.strategy:`advanced`),V(JSON.stringify(e.tagQuery,null,2));let r=n?{tags:Object.keys(n.states)}:null;z(n?.states??{}),q(r?{lossless:!0,strategy:n?.strategy,tags:r.tags,states:n?.states}:{lossless:!1,reason:`This advanced query cannot be represented losslessly in structured mode.`}),U(null)}function Q(){let e;if(I===`advanced`){let t=JSON.parse(B);if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`Advanced JSON must be an object.`);e=t}else e=b(R,I);return{name:E,description:N||void 0,strategy:I,tagQuery:e}}async function $(){try{let e=await h(Q(),w);U(e),q(e.structuredConversion),G(null)}catch(e){G(e instanceof Error?e.message:`Preset preview failed.`)}}async function ee(){if(!H)return;let e=w?w===H.draft.name?`update`:`duplicate`:`create`;await x({action:e,sourceName:w,preview:H})&&(U(null),G(`Preset ${H.draft.name} saved.`))}return(0,D.jsxs)(`section`,{"aria-labelledby":`presets-title`,className:`operations-workspace`,children:[(0,D.jsxs)(t,{justify:`space-between`,align:`flex-start`,className:`workspace-heading`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(i,{className:`eyebrow`,size:`xs`,children:[`Runtime Scope / `,r??`unavailable`]}),(0,D.jsx)(l,{id:`presets-title`,order:2,children:`Presets`}),(0,D.jsx)(i,{c:`dimmed`,size:`sm`,children:`Manage the preset store owned by this running Runtime Scope.`})]}),(0,D.jsxs)(t,{children:[(0,D.jsx)(a,{variant:`default`,onClick:()=>void m(),loading:p,children:`Refresh`}),u.length>0?(0,D.jsx)(a,{onClick:()=>{T(void 0),O(``),F(``),L(`or`),z({}),V(`{}`),U(null)},children:`New preset`}):null]})]}),(0,D.jsxs)(`div`,{className:`workspace-grid preset-workspace-grid${u.length===0?` preset-workspace-grid-empty`:``}`,children:[u.length>0?(0,D.jsx)(o,{withBorder:!0,p:`md`,children:(0,D.jsx)(c,{gap:`sm`,children:u.map(e=>(0,D.jsx)(o,{withBorder:!0,p:`sm`,children:(0,D.jsxs)(t,{justify:`space-between`,align:`flex-start`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(i,{fw:800,children:e.name}),(0,D.jsx)(i,{size:`sm`,c:`dimmed`,children:e.description||`No description`}),(0,D.jsxs)(i,{size:`xs`,children:[e.strategy.toUpperCase(),` · `,e.querySummary||`empty query`,` · `,e.matchCount,` `,`matches`]})]}),(0,D.jsxs)(t,{gap:`xs`,children:[(0,D.jsx)(a,{size:`xs`,variant:`default`,onClick:()=>Z(e),children:`Edit`}),(0,D.jsx)(a,{size:`xs`,variant:`default`,onClick:()=>Z(e,!0),children:`Duplicate`}),(0,D.jsx)(a,{size:`xs`,color:`red`,variant:`light`,leftSection:(0,D.jsx)(_,{size:14}),onClick:()=>void C(e.name),children:`Delete`})]})]})},e.name))})}):null,(0,D.jsx)(o,{withBorder:!0,p:`md`,children:(0,D.jsxs)(c,{gap:`sm`,children:[(0,D.jsx)(l,{order:3,children:w?`Edit ${w}`:`Create preset`}),(0,D.jsx)(s,{label:`Preset name`,value:E,disabled:!!(w&&w===E),onChange:e=>{O(e.currentTarget.value),U(null)},error:J??void 0,description:`Use letters, numbers, hyphens, or underscores; maximum 50 characters.`}),(0,D.jsx)(s,{label:`Description`,value:N,onChange:e=>{F(e.currentTarget.value),U(null)}}),(0,D.jsxs)(t,{children:[(0,D.jsx)(a,{variant:I===`or`?`filled`:`default`,"aria-pressed":I===`or`,disabled:I===`advanced`&&!K.lossless,title:I===`advanced`&&!K.lossless?K.reason:void 0,onClick:()=>{L(`or`),K.states?z(K.states):K.tags&&z(P(K.tags)),U(null)},children:`Match any included tag`}),(0,D.jsx)(a,{variant:I===`and`?`filled`:`default`,"aria-pressed":I===`and`,disabled:I===`advanced`&&!K.lossless,title:I===`advanced`&&!K.lossless?K.reason:void 0,onClick:()=>{L(`and`),K.states?z(K.states):K.tags&&z(P(K.tags)),U(null)},children:`Match all included tags`}),(0,D.jsx)(a,{variant:I===`advanced`?`filled`:`default`,"aria-pressed":I===`advanced`,onClick:()=>{V(JSON.stringify(b(R,I===`and`?`and`:`or`),null,2)),L(`advanced`),U(null)},children:`Advanced JSON`})]}),I===`advanced`?(0,D.jsx)(d,{label:`Advanced JSON`,minRows:8,error:Y?void 0:`Advanced JSON must be a valid object before previewing matches.`,value:B,onChange:e=>{let t=e.currentTarget.value;V(t);try{let e=JSON.parse(t);if(e&&typeof e==`object`&&!Array.isArray(e)){let t=S(e);q(t?{lossless:!0,strategy:t.strategy,tags:Object.keys(t.states),states:t.states}:{lossless:!1,reason:`This advanced query cannot be represented losslessly.`})}else q({lossless:!1,reason:`Advanced JSON must be an object.`})}catch{q({lossless:!1,reason:`Advanced JSON must be valid before conversion.`})}U(null)}}):(0,D.jsx)(M,{targets:f,strategy:I,states:R,onChange:e=>{z(e),U(null)}}),u.length===0?(0,D.jsx)(n,{color:`blue`,variant:`light`,children:`Create the first preset for this Runtime Scope. An empty tag query is allowed and will be shown as a warning.`}):null,(0,D.jsx)(a,{leftSection:(0,D.jsx)(v,{size:16}),disabled:X,onClick:()=>void $(),children:`Preview matches`}),H?(0,D.jsxs)(o,{withBorder:!0,p:`sm`,children:[(0,D.jsxs)(i,{fw:800,children:[H.matchCount,` current matches`]}),H.validation.globalErrors.map(e=>(0,D.jsx)(i,{c:`red`,children:e},e)),H.validation.fieldErrors.map(e=>(0,D.jsxs)(i,{c:`red`,children:[e.field,`: `,e.message]},`${e.field}-${e.message}`)),H.validation.warnings.map(e=>(0,D.jsx)(i,{c:`yellow`,children:j(e)},e)),H.matches.map(e=>(0,D.jsxs)(i,{size:`sm`,children:[e.matched?`✓`:`–`,` `,e.name,` · `,e.enabled?`enabled`:`disabled`,` · `,e.reason]},e.name)),(0,D.jsx)(a,{mt:`sm`,disabled:H.validation.status===`invalid`,leftSection:(0,D.jsx)(g,{size:16}),onClick:()=>void ee(),children:`Confirm and save`})]}):null,W?(0,D.jsx)(n,{children:j(W)}):null]})})]})]})}function k(e){return e.trim()?e.length>50?`Preset name must be 50 characters or less.`:/^[a-zA-Z0-9_-]+$/.test(e)?null:`Use only letters, numbers, hyphens, and underscores.`:`Enter a preset name before previewing matches.`}function A(e){try{let t=JSON.parse(e);return!!(t&&typeof t==`object`&&!Array.isArray(t))}catch{return!1}}function j(e){return/name: Preset name is required/i.test(e)?`Enter a preset name before previewing matches.`:/Tag query produces no meaningful filter/i.test(e)?`No tag criteria selected; this preset will not filter servers.`:e}function M({targets:e,strategy:n,states:o,onChange:d}){let f=N(e,o),p=b(o,n),g=e.filter(e=>x(p,e.tags)),_=f.filter(({tag:e})=>(o[e]??`neutral`)!==`neutral`),v=g.filter(e=>e.enabled).length,S=g.length-v,[C,w]=(0,y.useState)(``),[T,E]=(0,y.useState)(`all`),[O,k]=(0,y.useState)({}),A=C.trim().toLocaleLowerCase(),j=f.filter(({tag:e,servers:t})=>{let n=o[e]??`neutral`,r=T===`all`||n===T,i=!A||e.toLocaleLowerCase().includes(A)||t.some(e=>e.toLocaleLowerCase().includes(A));return r&&i});function M(e,t){d({...o,[e]:t})}return(0,D.jsxs)(`section`,{className:`preset-tag-builder`,"aria-labelledby":`preset-tag-matrix-title`,children:[(0,D.jsxs)(t,{justify:`space-between`,align:`flex-start`,gap:`md`,className:`preset-tag-header`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(l,{id:`preset-tag-matrix-title`,order:4,children:`Tag matrix`}),(0,D.jsx)(i,{size:`sm`,c:`dimmed`,children:`Discover tags from configured targets. Include tags select servers; exclude tags remove them.`})]}),(0,D.jsxs)(r,{variant:`light`,color:g.length>0?`teal`:`yellow`,children:[g.length,` / `,e.length,` match`]})]}),(0,D.jsxs)(t,{align:`flex-end`,gap:`sm`,mt:`md`,className:`preset-tag-toolbar`,children:[(0,D.jsx)(s,{"aria-label":`Search tags and servers`,className:`preset-tag-search`,label:`Search tags`,leftSection:(0,D.jsx)(h,{size:16}),placeholder:`Tag or server name`,type:`search`,value:C,onChange:e=>w(e.currentTarget.value)}),(0,D.jsx)(u,{"aria-label":`Filter tags by state`,data:[{label:`All`,value:`all`},{label:`Included`,value:`include`},{label:`Excluded`,value:`exclude`}],value:T,onChange:e=>E(e)})]}),(0,D.jsxs)(c,{gap:`xs`,mt:`sm`,className:`preset-tag-list`,children:[j.map(({tag:e,servers:n,enabledCount:s,disabledCount:c,discovered:l})=>{let d=o[e]??`neutral`,f=O[e]===!0,p=f?n:n.slice(0,2);return(0,D.jsxs)(`article`,{className:`preset-tag-row preset-tag-${d}`,"data-tag":e,children:[(0,D.jsxs)(`div`,{className:`preset-tag-identity`,children:[(0,D.jsxs)(t,{gap:`xs`,wrap:`wrap`,children:[(0,D.jsx)(i,{fw:800,children:e}),l?null:(0,D.jsx)(r,{color:`gray`,size:`xs`,variant:`light`,children:`Retired`})]}),(0,D.jsxs)(t,{gap:`sm`,mt:3,className:`preset-tag-counts`,children:[(0,D.jsxs)(i,{size:`xs`,c:`dimmed`,children:[n.length,` `,n.length===1?`server`:`servers`]}),(0,D.jsxs)(i,{size:`xs`,c:`dimmed`,children:[s,` enabled`]}),(0,D.jsxs)(i,{size:`xs`,c:`dimmed`,children:[c,` disabled`]})]})]}),(0,D.jsx)(`div`,{className:`preset-tag-state`,role:`group`,"aria-label":`${e} tag state`,children:(0,D.jsx)(u,{"aria-label":`Set ${e} tag state`,fullWidth:!0,data:[{label:`Neutral`,value:`neutral`},{label:`Include`,value:`include`},{label:`Exclude`,value:`exclude`}],value:d,onChange:t=>M(e,t)})}),(0,D.jsxs)(`div`,{className:`preset-tag-servers`,children:[(0,D.jsx)(i,{size:`xs`,c:`dimmed`,component:`span`,children:p.length>0?p.join(`, `):`No current targets`}),n.length>2?(0,D.jsx)(a,{"aria-expanded":f,"aria-label":`${f?`Collapse`:`Show all`} servers tagged ${e}`,className:`preset-tag-expand`,rightSection:(0,D.jsx)(m,{className:f?`rotate-180`:void 0,size:13}),size:`compact-xs`,variant:`subtle`,onClick:()=>k(t=>({...t,[e]:!f})),children:f?`Collapse`:`+${n.length-2}`}):null]})]},e)}),j.length===0?(0,D.jsx)(i,{c:`dimmed`,className:`preset-tag-empty`,children:f.length===0?`No configured target tags are available.`:`No tags match the current search.`}):null]}),(0,D.jsxs)(`div`,{className:`preset-query-strip`,children:[(0,D.jsxs)(t,{justify:`space-between`,align:`flex-start`,gap:`md`,className:`preset-impact-header`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(i,{size:`xs`,fw:800,tt:`uppercase`,children:`Live impact`}),(0,D.jsxs)(i,{size:`sm`,mt:3,children:[(0,D.jsx)(`strong`,{children:g.length}),` of `,e.length,` targets match · `,v,` enabled ·`,` `,S,` disabled`]})]}),(0,D.jsxs)(t,{gap:6,className:`preset-active-tags`,children:[_.length===0?(0,D.jsx)(i,{c:`dimmed`,children:`No criteria selected`}):null,_.map(({tag:e})=>(0,D.jsxs)(r,{color:o[e]===`exclude`?`red`:`teal`,variant:`light`,children:[o[e]===`exclude`?`EXCLUDE`:`INCLUDE`,` `,e]},e))]})]}),(0,D.jsxs)(`details`,{className:`preset-impact-details`,children:[(0,D.jsx)(`summary`,{children:`View target evaluation`}),(0,D.jsx)(c,{gap:3,mt:`xs`,children:e.map(e=>{let t=g.some(t=>t.name===e.name);return(0,D.jsxs)(i,{size:`xs`,c:t?void 0:`dimmed`,children:[t?`Match`:`No match`,` · `,e.name,` · `,e.enabled?`enabled`:`disabled`,` ·`,` `,e.tags.join(`, `)||`untagged`]},e.name)})})]})]})]})}function N(e,t){let n=new Map;for(let t of e)for(let e of t.tags){let r=n.get(e)??{servers:[],enabledCount:0,disabledCount:0};r.servers.push(t.name),t.enabled?r.enabledCount+=1:r.disabledCount+=1,n.set(e,r)}for(let e of Object.keys(t))n.has(e)||n.set(e,{servers:[],enabledCount:0,disabledCount:0});return Array.from(n,([e,t])=>({tag:e,...t,discovered:t.servers.length>0})).sort((e,t)=>e.tag.localeCompare(t.tag))}function P(e){return Object.fromEntries(e.map(e=>[e,`include`]))}export{O as PresetAuthoringWorkspace};
@@ -0,0 +1 @@
1
+ :root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--admin-ink:#1c2421;--admin-surface:#f4f6f5;--admin-panel:#fff;--admin-panel-subtle:#f8faf9;--admin-hover:#eef3f1;--admin-line:#d9dfdc;--admin-muted:#63716c;--admin-teal:#2c7f65;--admin-teal-soft:#e6f3ee;--admin-blue-soft:#eaf2fb;--admin-yellow-soft:#fff4d6;--admin-red-soft:#fdeceb;--admin-graphite:#161b1a;--admin-graphite-soft:#222927;--admin-nav-text:#b9c2be;--admin-nav-muted:#87928e;--admin-shadow:#17201d14;--admin-log:#151719;--admin-log-raised:#1d211f;--admin-log-line:#343a38;--admin-log-ink:#e7ece9}[data-mantine-color-scheme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--admin-ink:#e7ece9;--admin-surface:#141817;--admin-panel:#1b201e;--admin-panel-subtle:#202623;--admin-hover:#29312e;--admin-line:#343d39;--admin-muted:#a2aea9;--admin-teal:#62b596;--admin-teal-soft:#183b30;--admin-blue-soft:#1b3247;--admin-yellow-soft:#3d3219;--admin-red-soft:#432625;--admin-graphite:#101312;--admin-graphite-soft:#252c29;--admin-nav-text:#c1cac6;--admin-nav-muted:#87938e;--admin-shadow:#00000047}*{box-sizing:border-box}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}body{background:var(--admin-surface);color:var(--admin-ink);margin:0;font-size:14px}.skip-link{z-index:1000;background:var(--admin-panel);color:var(--admin-ink);box-shadow:0 4px 16px var(--admin-shadow);border-radius:6px;padding:9px 12px;position:fixed;top:8px;left:8px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.confirmation-overlay{z-index:400;background:#12181694;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.confirmation-dialog{width:min(520px,100%);max-height:calc(100dvh - 48px);padding:24px;overflow-y:auto;box-shadow:0 18px 48px #1218163d}button,input{font:inherit}.admin-app-shell{min-height:100vh}.admin-app-header{border-bottom:1px solid var(--admin-line);background:var(--admin-panel)}.admin-shell-main{background:0 0;min-width:0}.mobile-navigation-toggle{flex:none;display:none}.admin-app-navbar{background:var(--admin-graphite);color:#f3f5f2;border-right:0;flex-direction:column;justify-content:space-between;padding:22px 14px 16px;display:flex}.brand-mark{background:var(--admin-teal);color:#fff;border-radius:8px;place-items:center;width:34px;height:34px;font-weight:900;display:grid}.command-eyebrow{color:var(--admin-muted)}.runtime-live{color:#246653;background:#edf7f2;border:1px solid #cfe0d9;border-radius:6px;align-items:center;gap:7px;padding:6px 9px;display:flex}[data-mantine-color-scheme=dark] .runtime-live{background:var(--admin-teal-soft);color:#a8dcc8;border-color:#356b58}.runtime-live-dot{background:#2c9b70;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #2c9b7024}.operator-identity{min-width:0;color:var(--admin-muted);align-items:center;gap:7px;padding:0 4px 0 8px;display:flex}.nav-stack{flex:1}.nav-section-label{color:var(--admin-nav-muted);letter-spacing:.1em;text-transform:uppercase;padding:0 10px;font-size:10px;font-weight:800}.nav-item{min-height:40px;color:var(--admin-nav-text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:0 10px;text-decoration:none;display:flex}.nav-item:hover{color:#f3f5f2;background:#1d2422}.nav-item:focus-visible{outline-offset:2px;outline:2px solid #7fc8ae}.nav-item-active{background:var(--admin-graphite-soft);color:#fff;box-shadow:inset 3px 0 0 var(--admin-teal)}.nav-runtime-card{background:#1b211f;border:1px solid #313936;border-radius:8px;padding:13px 11px}.nav-runtime-card .nav-section-label{padding:0}.nav-scope{color:#7fc8ae;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.admin-auth-shell{background:var(--admin-surface);place-items:center;min-height:100dvh;padding:24px;display:grid}.auth-theme-control{position:fixed;top:18px;right:18px}.admin-auth-card{width:min(640px,100%)}.admin-console{width:min(1560px,100%);margin:0 auto;padding:26px 28px 36px}.eyebrow,.status-label{color:var(--admin-muted);letter-spacing:0;text-transform:uppercase;font-size:11px;font-weight:800}.operations-workspace{min-width:0}.overview-section-target{min-width:0;scroll-margin-top:82px}.overview-section-target:focus-visible{outline:2px solid var(--admin-teal);outline-offset:3px}.workspace-heading{padding:2px 2px 18px}.workspace-grid{grid-template-columns:minmax(0,1.25fr) minmax(420px,1fr);gap:16px;margin-top:16px;display:grid}.instruction-workspace-grid{border:1px solid var(--admin-line);background:var(--admin-panel);border-radius:8px;grid-template-columns:minmax(210px,.55fr) minmax(420px,1.15fr) minmax(300px,.8fr);min-height:640px;display:grid;overflow:hidden}.instruction-template-list,.instruction-editor-pane,.instruction-preview-pane{min-width:0;padding:16px}.instruction-template-list,.instruction-editor-pane{border-right:1px solid var(--admin-line)}.instruction-template-list{flex-direction:column;padding-inline:0;display:flex}.instruction-template-list>*{margin-inline:14px}.instruction-template-scroll{border-bottom:1px solid var(--admin-line);max-height:330px;margin:10px 0 0;padding:0 8px 10px;overflow-y:auto}.instruction-template-row{width:100%;min-height:58px;color:var(--admin-ink);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:6px;gap:5px;padding:9px 10px;display:grid}.instruction-template-row:hover{background:var(--admin-hover)}.instruction-template-row:focus-visible{outline:2px solid var(--admin-teal);outline-offset:1px}.instruction-template-row-active{background:var(--admin-teal-soft);border-color:#acd2c3}.instruction-template-identity{text-overflow:ellipsis;white-space:nowrap;font-weight:800;overflow:hidden}.instruction-template-badges{flex-wrap:wrap;gap:4px;display:flex}.instruction-template-badges .mantine-Badge-root{height:18px;padding-inline:6px;font-size:9px}.instruction-library-actions{padding-top:14px}.instruction-editor-pane,.instruction-preview-pane{align-content:start;gap:14px;display:grid}.instruction-pane-heading{min-height:42px}.instruction-template-editor textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;line-height:1.55}.instruction-editor-actions{border-top:1px solid var(--admin-line);padding-top:12px}.instruction-preview-pane{background:var(--admin-panel-subtle)}.instruction-preview-output{border:1px solid var(--admin-line);border-left:3px solid var(--admin-teal);background:var(--admin-panel);border-radius:6px;min-height:230px;padding:12px;overflow:auto}.instruction-preview-output .mantine-Code-root{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:10px}.instruction-preview-empty{min-height:200px;color:var(--admin-muted);justify-content:center}.inventory-column,.inspector-column{align-content:start;gap:16px;min-width:0;display:grid}.server-browse-workspace,.server-task-workspace{margin-top:16px}.server-browse-workspace[hidden]{display:none}.inspector-column{position:sticky;top:84px}.operations-panel,.login-panel,.summary-counter{border-color:var(--admin-line);background:var(--admin-panel);border-radius:8px}.operations-panel{padding:16px;box-shadow:0 1px #17201d08}.runtime-status-strip{border:1px solid var(--admin-line);background:var(--admin-panel);border-radius:6px;justify-content:space-between;align-items:center;gap:16px;min-height:48px;margin-bottom:12px;padding:9px 12px;display:flex}.runtime-status-main{min-width:0}.runtime-status-facts strong{color:var(--admin-ink)}.dashboard-grid{grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr);gap:16px;margin-top:16px;display:grid}.attention-panel{border:1px solid var(--admin-line);background:var(--admin-panel);border-radius:8px;min-width:0;padding:16px}.attention-list{border-top:1px solid var(--admin-line)}.attention-row{border-bottom:1px solid var(--admin-line);min-height:58px;color:inherit;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 4px;text-decoration:none;display:grid}.attention-row:hover{background:var(--admin-hover)}.attention-row:focus-visible{outline:2px solid var(--admin-teal);outline-offset:2px}.attention-icon{background:var(--admin-yellow-soft);color:#996b14;border-radius:6px;place-items:center;width:30px;height:30px;display:grid}[data-mantine-color-scheme=dark] .attention-icon{color:#ebc468}.attention-copy{min-width:0;display:grid}.attention-clear{min-height:72px;color:var(--admin-teal);align-items:center;gap:10px;display:flex}.summary-link{color:inherit;text-decoration:none;transition:border-color .12s,transform .12s}.summary-link:hover{border-color:var(--admin-teal);transform:translateY(-1px)}.summary-link:focus-visible{outline:2px solid var(--admin-teal);outline-offset:3px}.oauth-service-row{border-color:var(--admin-line);background:var(--admin-panel);border-radius:8px;min-width:0;padding:16px}.oauth-service-main{min-width:0}.oauth-service-identity{color:var(--admin-muted);margin-top:10px;font-size:12px}.oauth-service-identity summary{cursor:pointer;width:fit-content;font-weight:700}.oauth-service-id{text-overflow:ellipsis;white-space:nowrap;max-width:min(520px,60vw);display:block;overflow:hidden}.oauth-service-action{flex:none}.login-panel{width:min(420px,100%);margin:0 auto;padding:18px}.summary-counter{border-top-width:3px;min-height:96px;padding:15px 16px}.summary-value{font-variant-numeric:tabular-nums;margin-top:7px;font-size:32px;font-weight:800;line-height:1}.summary-index{color:#17201d47;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:800}.summary-good{border-top-color:var(--admin-teal);background:var(--admin-panel)}.summary-warn{background:var(--admin-panel);border-top-color:#d49b24}.summary-bad{background:var(--admin-panel);border-top-color:#c75852}.server-filter-row{align-items:flex-end}.server-search{flex:1;min-width:min(300px,100%)}.admin-table{table-layout:fixed}.admin-table th,.admin-table td{text-overflow:ellipsis;vertical-align:top;overflow:hidden}.admin-table th:last-child,.admin-table td:last-child{width:190px}.server-table-view{min-width:0;max-width:100%;overflow:hidden}.server-mobile-list{display:none}.server-mobile-card{border:1px solid var(--admin-line);background:var(--admin-panel-subtle);border-radius:6px;gap:12px;min-width:0;padding:13px;display:grid}.server-mobile-actions,.server-state-control{min-height:44px}.server-mobile-identity{overflow-wrap:anywhere;min-width:0}.server-mobile-facts{gap:8px;margin:0;display:grid}.server-mobile-facts div{min-width:0}.server-mobile-facts dt{color:var(--admin-muted);text-transform:uppercase;font-size:11px;font-weight:800}.server-mobile-facts dd{overflow-wrap:anywhere;margin:2px 0 0}.detail-row{border:1px solid var(--admin-line);background:var(--admin-panel-subtle);border-radius:6px;min-height:46px;padding:8px 10px}.detail-row-main{flex:1;min-width:0}.detail-row-value-wrap{overflow-wrap:anywhere;word-break:break-word}.detail-row>.mantine-Button-root{flex-shrink:0}.runtime-identity-grid .detail-row{align-items:flex-start}.runtime-identity-grid .detail-row>.mantine-Button-root{min-width:44px;min-height:44px}.actionable-empty-state{align-items:flex-start;padding:12px 0 4px}.actionable-empty-state .mantine-Button-root{min-height:44px}.advanced-settings{border:1px solid var(--admin-line);background:var(--admin-panel-subtle);border-radius:6px;padding:12px}.advanced-settings>summary{cursor:pointer;min-height:44px;font-weight:800;line-height:44px}.advanced-settings>summary:focus-visible{outline:2px solid var(--admin-teal);outline-offset:2px}.secret-editor,.preview-result,.identity-details,.preview-diff-entry,.connectivity-card{background:var(--admin-panel-subtle);border-radius:8px;padding:10px}.preview-fingerprint{text-overflow:ellipsis;max-width:min(100%,280px);overflow:hidden}.connectivity-passed{background:var(--admin-teal-soft);border-color:#9dceb9}.connectivity-failed{background:var(--admin-red-soft);border-color:#f0b4b0}.connectivity-skipped{background:var(--admin-yellow-soft);border-color:#f0d58d}.preview-diff-entry{border-color:var(--admin-line)}.edit-empty-state,.edit-section,.draft-action-bar{background:var(--admin-panel-subtle);border-radius:8px;padding:10px}.edit-empty-state,.draft-action-bar{border:1px dashed var(--admin-line)}.draft-action-bar{align-items:center}.edit-section{border-color:var(--admin-line)}.record-editor{border:1px solid var(--admin-line);background:var(--admin-panel-subtle);border-radius:8px;padding:10px}.record-editor-value{flex:1;min-width:0}.server-action-busy{background:var(--admin-blue-soft)}.server-action-succeeded{background:var(--admin-teal-soft)}.server-action-failed{background:var(--admin-red-soft)}.truncate{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.backend-log-layout{border:1px solid var(--admin-line);background:var(--admin-panel);border-radius:8px;grid-template-columns:minmax(210px,260px) minmax(0,1fr);min-height:min(650px,100dvh - 190px);display:grid;overflow:hidden}.backend-log-sources{border-right:1px solid var(--admin-line);background:var(--admin-panel-subtle);overflow-y:auto}.backend-log-source{border-bottom:1px solid var(--admin-line);width:100%;min-height:58px;color:var(--admin-ink);text-align:left;justify-content:space-between;align-items:center;gap:8px;padding:9px 11px;display:flex}.backend-log-source:hover{background:var(--admin-hover)}.backend-log-source:focus-visible{z-index:1;outline:2px solid var(--admin-teal);outline-offset:-2px;position:relative}.backend-log-source-active{background:var(--admin-teal-soft);box-shadow:inset 3px 0 0 var(--admin-teal)}.backend-log-source-copy{gap:1px;min-width:0;display:grid}.backend-log-source-copy>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.backend-log-inspector{background:var(--admin-log);grid-template-rows:auto minmax(0,1fr);min-width:0;display:grid}.backend-log-source-header{border-bottom:1px solid var(--admin-log-line);background:var(--admin-panel-subtle);min-height:64px;padding:11px 15px}.backend-log-canonical{color:#68736f;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.backend-log-well{min-width:0;color:var(--admin-log-ink);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.55;overflow:auto}.backend-log-row{border-bottom:1px solid #242927;grid-template-columns:154px minmax(0,1fr);min-height:30px;display:grid}.backend-log-row-repeated,.backend-log-row-suppressed{color:#f1cf83}.backend-log-rail{border-right:1px solid var(--admin-log-line);background:var(--admin-log-raised);color:#8fa099;white-space:nowrap;grid-template-columns:58px 1fr;gap:8px;padding:5px 9px;display:grid}.backend-log-content{overflow-wrap:anywhere;white-space:pre-wrap;min-width:0;padding:5px 11px}.backend-log-empty{background:var(--admin-panel);min-height:180px;color:var(--admin-muted);text-align:center;place-items:center;padding:24px;display:grid}.preset-workspace-grid-empty{grid-template-columns:minmax(0,1fr)}.login-panel .mantine-PasswordInput-visibilityToggle{min-width:44px;min-height:44px}.login-panel .mantine-PasswordInput-visibilityToggle:focus-visible{outline:2px solid var(--admin-teal);outline-offset:2px}@media (width<=1399px){.workspace-grid{grid-template-columns:1fr}.inspector-column{position:static}.dashboard-grid{grid-template-columns:1fr}.instruction-workspace-grid{grid-template-columns:minmax(0,.55fr) minmax(0,1.15fr)}.instruction-editor-pane{border-right:0}.instruction-preview-pane{border-top:1px solid var(--admin-line);grid-column:1/-1}}@media (width<=991px){.mobile-navigation-toggle{display:block}.admin-app-navbar{z-index:300;box-shadow:8px 0 24px #161b1a38}.nav-stack{align-content:start;display:grid}}@media (width<=620px){.admin-auth-shell{padding:16px}.admin-console{padding:18px 12px 28px}.command-bar{padding-inline:12px!important}.command-eyebrow,.runtime-live,.global-view-badge,.operator-name{display:none}.operator-identity{padding:0}.runtime-status-strip,.runtime-status-facts{align-items:flex-start}.runtime-status-strip{flex-direction:column}.runtime-status-facts{justify-content:space-between;width:100%}.workspace-heading{gap:12px}.workspace-heading>.mantine-Group-root{width:100%}.workspace-heading button{flex:1}.server-filter-row{align-items:stretch}.server-filter-row .mantine-SegmentedControl-root{width:100%}.server-table-view{display:none}.server-mobile-list{gap:10px;display:grid}.operations-panel{min-width:0;padding:13px}.instruction-workspace-grid{grid-template-columns:minmax(0,1fr)}.instruction-template-list,.instruction-editor-pane{border-right:0;border-bottom:1px solid var(--admin-line)}.instruction-preview-pane{border-top:0;grid-column:auto}.instruction-template-scroll{max-height:240px}.backend-log-layout{grid-template-rows:auto minmax(420px,1fr);grid-template-columns:1fr;min-height:560px}.backend-log-sources{border-right:0;border-bottom:1px solid var(--admin-line);max-width:100%;display:flex;overflow-x:auto}.backend-log-source{border-bottom:0;border-right:1px solid #e5e8e3;width:min(210px,72vw);min-width:min(210px,72vw)}.backend-log-row{grid-template-columns:122px minmax(0,1fr)}.backend-log-rail{grid-template-columns:42px 1fr;padding-inline:7px}}.preset-tag-builder{border:1px solid var(--admin-line);background:var(--admin-panel-subtle);border-radius:8px;padding:14px;container-type:inline-size}.preset-tag-list{min-width:0}.preset-tag-row{border:1px solid var(--admin-line);background:var(--admin-panel);border-left-width:4px;border-radius:6px;grid-template-columns:minmax(150px,.9fr) minmax(250px,1.1fr);grid-template-areas:"identity state""servers state";align-items:center;gap:8px 16px;min-height:92px;padding:12px;transition:border-color .12s,background .12s;display:grid}.preset-tag-neutral{border-left-color:#c7cec9}.preset-tag-include{border-color:#93c9b5;border-left-color:var(--admin-teal);background:var(--admin-teal-soft)}.preset-tag-exclude{background:var(--admin-red-soft);border-color:#e6aaa6 #e6aaa6 #e6aaa6 #c75852}.preset-tag-identity{grid-area:identity;min-width:0}.preset-tag-counts{min-width:0}.preset-tag-state{grid-area:state;justify-self:end;width:100%;max-width:310px}.preset-tag-state .mantine-SegmentedControl-root,.preset-tag-state .mantine-SegmentedControl-label{min-height:44px}.preset-tag-servers{overflow-wrap:anywhere;grid-area:servers;align-items:center;gap:4px;min-width:0;display:flex}.preset-tag-expand{flex:none}.rotate-180{transform:rotate(180deg)}.preset-tag-toolbar{flex-wrap:nowrap}.preset-tag-search{flex:1;min-width:0}.preset-tag-empty{padding:20px 4px}.preset-query-strip{border:1px solid var(--admin-line);border-left:3px solid var(--admin-teal);background:var(--admin-panel);border-radius:6px;margin-top:12px;padding:12px}.preset-impact-header{min-width:0}.preset-active-tags{justify-content:flex-end;max-width:54%}.preset-impact-details{border-top:1px solid var(--admin-line);margin-top:10px;padding-top:8px}.preset-impact-details summary{cursor:pointer;width:fit-content;color:var(--admin-muted);font-size:13px;font-weight:700}.configured-tool-table{container-type:inline-size}.configured-tool-rows{border-top:1px solid var(--admin-line)}.configured-tool-row{border-bottom:1px solid var(--admin-line);min-width:0;padding:12px 0}.configured-tool-identity,.configured-tool-description-input{flex:1;min-width:0}.configured-tool-identity .mantine-Text-root{overflow-wrap:anywhere}@container (width<=620px){.configured-tool-table>.mantine-Group-root{flex-direction:column;align-items:stretch}.configured-tool-table .mantine-SegmentedControl-root{width:100%}}@container (width<=520px){.preset-tag-header,.preset-impact-header,.preset-tag-toolbar{flex-direction:column;align-items:stretch}.preset-tag-toolbar .mantine-SegmentedControl-root{width:100%}.preset-tag-row{grid-template-columns:1fr;grid-template-areas:"identity""servers""state";align-items:stretch}.preset-tag-state{justify-self:stretch;max-width:none}.preset-tag-counts{gap:8px}.preset-active-tags{justify-content:flex-start;max-width:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/admin-AboutRuntimeWorkspace-DH2QC2nJ.js","assets/admin-mantine-xwbfu5Gd.js","assets/admin-rolldown-runtime-Bh1tDfsg.js","assets/admin-react-BSaWeqgv.js","assets/admin-console-DmRyrCWD.css","assets/admin-BackendLogsWorkspace-BKavXT9B.js","assets/admin-icons-CYGTDZA5.js","assets/admin-InstructionTemplatesWorkspace-CvG4EPdZ.js","assets/admin-OAuthServicesWorkspace-BCGj2hP4.js","assets/admin-PresetAuthoringWorkspace-BboJVBFl.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./admin-rolldown-runtime-Bh1tDfsg.js";import{A as t,D as n,E as r,F as i,I as a,L as o,N as s,O as c,P as l,S as u,T as d,_ as f,a as p,b as m,c as h,d as g,f as _,g as v,h as y,j as b,k as x,l as S,m as C,n as w,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P}from"./admin-mantine-xwbfu5Gd.js";import{i as ee,n as F,r as I,t as te}from"./admin-react-BSaWeqgv.js";import{C as L,E as R,M as z,N as B,O as V,S as H,_ as U,a as ne,b as re,c as W,d as G,h as K,i as ie,j as ae,k as oe,l as se,m as ce,n as le,o as ue,p as de,r as fe,s as pe,t as me,u as he,v as ge,w as _e,x as ve,y as ye}from"./admin-icons-CYGTDZA5.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var be=te(),q=class extends Error{status;body;failure;constructor(e,t,n,r){super(n),this.status=e,this.body=t,this.name=`AdminApiError`,this.failure=r??xe(this)}};function xe(e){let t=Me(e),n=Ne(e.body),r=n?`${Pe(e,t)} Request ID: ${n}`:Pe(e,t);return e.status===401?{kind:`unauthenticated`,adminStatus:je(e.body),code:t,message:r,requestId:n,status:401}:e.status===404&&t===`configured_server_not_found`?{kind:`configuredServerNotFound`,code:t,message:r,requestId:n,status:404}:{kind:`rejected`,code:t,message:r,requestId:n,status:e.status}}function Se(e={}){let t=Oe(e.fetch??fetch),n=e.idempotencyKey??Ie,r=e.eventSource??(e=>new EventSource(e));return{login(e){return t(`/admin/api/session/login`,{method:`POST`,body:JSON.stringify(e)})},getSession(){return t(`/admin/api/session`)},logout(e){return t(`/admin/api/session/logout`,{method:`POST`,headers:{"X-CSRF-Token":e}})},getStatus(){return t(`/admin/api/status`)},getBackendLogSnapshot(e){let n=e?`?sourceId=${encodeURIComponent(e)}`:``;return t(`/admin/api/logs/snapshot${n}`)},openBackendLogStream(e){let t=t=>{try{return JSON.parse(t.data)}catch{e.onError();return}},n=r(`/admin/api/logs/stream`);return n.addEventListener(`snapshot`,n=>{let r=t(n);r&&e.onSnapshot(r)}),n.addEventListener(`gap`,n=>{let r=t(n);r&&e.onGap(r)}),n.addEventListener(`entry`,n=>{let r=t(n);r&&e.onEntry(r)}),n.addEventListener(`sources`,n=>{let r=t(n);r&&e.onSources(r)}),n.addEventListener(`source`,n=>{let r=t(n);r&&e.onSourceUpdate(r)}),n.onopen=()=>e.onOpen(),n.onerror=()=>e.onError(),()=>n.close()},async authorizeOAuthService(e){return(await t(`/admin/api/oauth/${encodeURIComponent(e.serviceId)}/authorize`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":n({action:`oauth-authorize`,targetName:e.serviceId})},body:`{}`})).result},async restartOAuthService(e){return(await t(`/admin/api/oauth/${encodeURIComponent(e.serviceId)}/restart`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":n({action:`oauth-restart`,targetName:e.serviceId})},body:`{}`})).result},async listPresets(){return(await t(`/admin/api/presets`)).result},async getPreset(e){return(await t(`/admin/api/presets/${encodeURIComponent(e)}`)).result},async previewPreset(e){return(await t(`/admin/api/presets/preview`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify({draft:e.draft,sourceName:e.sourceName})})).result},mutatePreset(e){let n=e.action===`create`?`/admin/api/presets`:`/admin/api/presets/${encodeURIComponent(e.sourceName??``)}/${e.action===`duplicate`?`duplicate`:`update`}`;return t(n,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":De(e.action,e.draft.name)},body:JSON.stringify({draft:e.draft,revision:e.revision,previewFingerprint:e.previewFingerprint,confirmationFacts:e.confirmations})})},async previewPresetDelete(e){return(await t(`/admin/api/presets/${encodeURIComponent(e.name)}/delete-preview`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify({revision:e.revision})})).result},deletePreset(e){return t(`/admin/api/presets/${encodeURIComponent(e.name)}`,{method:`DELETE`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":De(`delete`,e.name)},body:JSON.stringify({revision:e.revision,previewFingerprint:e.previewFingerprint,confirmationFacts:{previewConfirmed:e.previewFingerprint,presetNameConfirmed:e.name}})})},async getConfiguredServerCatalog(){let e=await t(`/admin/api/configured-servers`);return{servers:e.servers??[],configFingerprint:e.configFingerprint??``}},async listConfiguredServers(){return(await t(`/admin/api/configured-servers`)).servers??[]},getConfiguredServerCreateContract(){return t(`/admin/api/configured-servers/create-contract`)},previewConfiguredServerCreate(e){return t(`/admin/api/configured-servers/create-preview`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify({draft:e.draft,...e.connectivityCheck?{connectivityCheck:e.connectivityCheck}:{}})})},createConfiguredServer(e){return t(`/admin/api/configured-servers`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":e.idempotencyKey},body:JSON.stringify({draft:e.draft,previewFingerprint:e.previewFingerprint,confirmationFacts:e.confirmationFacts})})},getConfiguredServerDetail(e,n){let r=n?`?model=${encodeURIComponent(n)}`:``;return t(`${Ce(e)}${r}`)},refreshConfiguredToolInventory(e){return t(`${Ce(e.target)}/tool-inventory/refresh`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify(e.model?{model:e.model}:{})})},async listInstructionTemplates(){return(await t(`/admin/api/instruction-templates`)).result},async getInstructionTemplate(e){return(await t(J(e))).result},saveInstructionTemplate(e){let n=e.action===`create`?`/admin/api/instruction-templates`:`${J(e.draft.identity)}/update`;return t(n,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":e.idempotencyKey},body:JSON.stringify({...e.action===`create`?{identity:e.draft.identity}:{},variants:e.draft.variants,...e.expectedConfigFingerprint?{expectedConfigFingerprint:e.expectedConfigFingerprint}:{}})})},cloneInstructionTemplate(e){return t(`${J(e.sourceIdentity)}/clone`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":e.idempotencyKey},body:JSON.stringify({identity:e.identity,expectedConfigFingerprint:e.expectedConfigFingerprint})})},async validateInstructionTemplate(e){return(await t(`${J(e.identity)}/validate`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify({expectedConfigFingerprint:e.expectedConfigFingerprint})})).result},async previewInstructionTemplate(e){return(await t(`${J(e.identity)}/preview`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify({surface:e.surface,selection:e.selection,...e.requestContext?{requestContext:e.requestContext}:{}})})).result},activateInstructionTemplate(e){return t(`${J(e.identity)}/activate`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":e.idempotencyKey},body:JSON.stringify({expectedConfigFingerprint:e.expectedConfigFingerprint,previewFingerprint:e.previewFingerprint})})},importLegacyInstructionTemplate(e){return t(`/admin/api/instruction-templates/import-legacy`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":e.idempotencyKey},body:JSON.stringify({identity:e.identity,expectedConfigFingerprint:e.expectedConfigFingerprint})})},async previewInstructionTemplateDelete(e){return(await t(`${J(e.identity)}/delete-preview`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify({expectedConfigFingerprint:e.expectedConfigFingerprint})})).result},deleteInstructionTemplate(e){return t(J(e.identity),{method:`DELETE`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":e.idempotencyKey},body:JSON.stringify({expectedConfigFingerprint:e.expectedConfigFingerprint,previewFingerprint:e.previewFingerprint})})},previewConfiguredServerEdit(e){return t(`${Ce(e.target)}/preview`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken},body:JSON.stringify({edit:e.edit,...e.connectivityCheck?{connectivityCheck:e.connectivityCheck}:{},...e.model?{model:e.model}:{}})})},applyConfiguredServerEdit(e){return t(`${Ce(e.target)}/apply`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":e.idempotencyKey},body:JSON.stringify({edit:e.edit,previewFingerprint:e.previewFingerprint,confirmationFacts:e.confirmationFacts,...e.model?{model:e.model}:{}})})},setConfiguredServerEnabled(e){let r=e.enabled?`enable`:`disable`;return t(`/admin/api/configured-servers/${encodeURIComponent(e.name)}/${r}`,{method:`POST`,headers:{"X-CSRF-Token":e.csrfToken,"Idempotency-Key":n({action:r,targetName:e.name})},body:`{}`})}}}function J(e){return`/admin/api/instruction-templates/${encodeURIComponent(e)}`}function Ce(e){return typeof e==`string`?`/admin/api/configured-servers/${encodeURIComponent(e)}`:`/admin/api/configured-servers/${e.source}/${encodeURIComponent(e.id)}`}function we(e){return`admin-console-server-apply-${Le(e)}-${Date.now()}-${crypto.getRandomValues(new Uint32Array(2)).join(`-`)}`}function Te(e){return`admin-console-server-create-${Le(e)}-${Date.now()}-${crypto.getRandomValues(new Uint32Array(2)).join(`-`)}`}function Ee(e,t){return`admin-console-instruction-template-${Le(e)}-${Le(t)}-${Date.now()}-${crypto.getRandomValues(new Uint32Array(2)).join(`-`)}`}function De(e,t){return`admin-console-preset-${e}-${Le(t)}-${Date.now()}-${crypto.getRandomValues(new Uint32Array(2)).join(`-`)}`}function Oe(e){return async function(t,n={}){let r={"Content-Type":`application/json`,"X-Admin-UI-Build-Version":`0.36.0`,"X-Admin-UI-Protocol-Version":`1`,...n.headers??{}},i;try{i=await e(t,{...n,headers:r})}catch{let e=`The Admin Console could not reach the runtime. Check that the runtime is still available, then refresh.`;throw new q(0,{},e,{kind:`unavailable`,message:e})}let a=await ke(i);if(!i.ok)throw new q(i.status,a,Ae(a,i.statusText));return a}}async function ke(e){try{return await e.json()}catch{return{}}}function Ae(e,t){if(e&&typeof e==`object`){let t=e;if(typeof t.error==`string`)return t.error;if(typeof t.code==`string`)return t.code;let n=t.error;if(n&&typeof n.code==`string`)return n.code}return t||`Admin API request failed`}function je(e){return e&&typeof e==`object`&&e.adminStatus===`setupRequired`?`setupRequired`:`loginRequired`}function Me(e){if(e.body&&typeof e.body==`object`){let t=e.body;if(typeof t.error==`string`)return t.error;if(typeof t.code==`string`)return t.code;if(t.error&&typeof t.error==`object`){let e=t.error;if(typeof e.code==`string`)return e.code}}return e.message}function Ne(e){if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.requestId==`string`)return t.requestId;if(t.error&&typeof t.error==`object`){let e=t.error;if(typeof e.requestId==`string`)return e.requestId}return null}function Pe(e,t){switch(t){case`invalid_credentials`:return`Check the admin username and password, then try again.`;case`csrf_required`:return`Refresh the page to renew the admin session, then retry the action.`;case`admin_login_rate_limited`:return`Too many failed login attempts. Wait before trying again.`;case`idempotency_conflict`:return`This action was already retried with different inputs. Refresh the console and try again.`;case`idempotency_key_required`:return`Refresh the console and retry the action with a new request.`;case`admin_configured_servers_unavailable`:return`Configured-server operations are not available on this runtime.`;case`backend_oauth_service_not_found`:return`The OAuth service is no longer available. Refresh the OAuth status and try again.`;case`backend_oauth_runtime_unavailable`:return`Backend OAuth operations are not available on this runtime.`;case`backend_oauth_authorization_start_failed`:return`The runtime could not start backend OAuth authorization. Refresh the OAuth status and try again.`;case`mutation_failed`:return`The runtime could not apply the server change. Refresh the console and inspect the current state.`;case`configured_server_stale_preview`:return`The server changed after this preview. Preview the edit again before applying.`;case`configured_server_destination_conflict`:return`The requested server name is already in use. Choose another target name and preview again.`;case`configured_server_connectivity_blocked`:return`Connectivity validation did not pass. Fix the connection settings and rerun connectivity before applying.`;case`configured_server_edit_invalid`:return`The server edit is invalid. Review the field errors and preview again.`;case`configured_server_edit_unchanged`:return`The preview no longer contains a change. Refresh the server detail before editing again.`;case`configured_server_not_found`:return`The configured server no longer exists. Return to the inventory and refresh it.`;case`configured_server_reload_failed`:return`The configuration was written, but the runtime reload failed. Inspect runtime health before continuing.`;case`configured_server_apply_failed`:return`The server edit could not be written. Refresh the detail and inspect runtime health before retrying.`;case`operation_in_progress`:return`Another admin operation is still running. Wait for it to finish, then refresh the console.`;case`operation_state_unknown`:return`The runtime could not confirm the operation result. Refresh the console and inspect the current state before retrying.`;case`admin_operation_journal_unavailable`:return`The runtime cannot record admin operations right now. Check runtime health before retrying.`;case`runtime_scope_mismatch`:return`The runtime identity changed. Stop using this session and verify the selected runtime before retrying.`;case`mutation_confirmation_required`:return`This operation needs an explicit confirmation flow that is not available in the console yet.`;default:if(e.status===401)return`The admin session is no longer valid. Log in again.`;if(e.status===403)return`The admin session cannot perform this action. Refresh the page and try again.`;if(e.status===429)return`The runtime is rate limiting this request. Wait before trying again.`;if(t.startsWith(`configured_server_`)){let t=Fe(e.body);if(t)return t}return`The Admin Console request failed. Refresh the console and try again.`}}function Fe(e){if(!e||typeof e!=`object`)return null;let t=e.message;return typeof t==`string`&&t.trim().length>0?t.trim():null}function Ie(e){let t=crypto.getRandomValues(new Uint32Array(2)).join(`-`);return`admin-console-${e.action}-${Le(e.targetName)}-${Date.now()}-${t}`}function Le(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}var Y=e(ee(),1);function Re(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>{let t=!r||e.id.toLowerCase().includes(r)||We(e).some(e=>e.toLowerCase().includes(r))||Ue(e).toLowerCase().includes(r)||He(e.transport).toLowerCase().includes(r),i=n===`all`||n===`enabled`&&e.enabled||n===`disabled`&&!e.enabled;return t&&i})}function ze(e){return e.filter(e=>e.enabled).length}function Be(e){return e.filter(e=>!e.enabled).length}function Ve(e){return!!e.requiresOAuth&&(e.status!==`connected`||!!e.lastError)}function He(e){return typeof e.command==`string`?e.command:typeof e.url==`string`?e.url:typeof e.type==`string`?e.type:`configured`}function Ue(e){return e.transportSummary?.label??He(e.transport)}function We(e){return Array.isArray(e.tags)?e.tags:[]}function Ge(e){return e.mutationAvailability?.available??!0}function Ke(e,t){return e.actionState?.[t]??{available:!0,label:t===`enable`?`Enable ${e.id}`:`Disable ${e.id}`}}function qe(e){let t=e.connectivityCheck;return t.status===`skipped`?Ye(t.reason):t.status===`failed`?t.message:t.checkedAt?`Checked at ${t.checkedAt}`:void 0}function Je(e){return e.status===`passed`?`Bounded dry-run connectivity check passed.`:e.status===`failed`?`Connectivity check failed. Apply remains blocked until the check passes or a later override path is available.`:`Connectivity check was skipped for this preview.`}function Ye(e){switch(e){case`connection_critical_fields_unchanged`:return`Connection-critical fields are unchanged. Rerun connectivity if you want an explicit check.`;case`target_disabled`:return`Target is disabled, so automatic connectivity was skipped.`;case`validation_failed`:return`Validation failed before a connectivity check could run.`;case`local_stdio_transport`:return`Local stdio transport does not use remote connectivity checks.`;case`checker_unavailable`:return`Connectivity checker is unavailable on this runtime.`;case`endpoint_changed_with_preserved_secrets`:return`Endpoint changed while secrets stayed preserved. Supply replacements or rerun after updating secrets.`;default:return e}}function Xe(e){switch(e){case`rename`:return`violet`;case`connection_critical`:return`red`;case`secret`:return`grape`;case`template_risk`:return`orange`;case`tool_visibility`:return`yellow`;case`tool_metadata`:return`blue`;default:return`gray`}}function Ze(e){switch(e){case`rename`:return`rename`;case`connection_critical`:return`connection critical`;case`secret`:return`secret`;case`template_risk`:return`template risk`;case`tool_visibility`:return`tool visibility`;case`tool_metadata`:return`tool metadata`;default:return e}}function Qe(e){return e.secretInputs.length===0?`No secret inputs`:`${e.secretInputs.length} redacted`}function $e(e){return e?.runtimeVersion??`unknown`}function et(e){return e?.externalUrl??`not reported`}function tt(e){return e.view===`setupRequired`?`Setup required`:e.view}function nt(e){return e.view===`setupRequired`?`yellow`:e.view===`console`?`teal`:`gray`}function rt(e){return e.replace(/([A-Z])/g,` $1`).toLowerCase()}var X=I();function Z({label:e,value:t,meta:r,description:i,copyLabel:a,copyValue:o,onCopyText:s,wrapValue:c=!1}){let l=o??t;return(0,X.jsxs)(n,{className:`detail-row`,justify:`space-between`,wrap:`nowrap`,children:[(0,X.jsxs)(`div`,{className:`detail-row-main`,children:[(0,X.jsx)(d,{fw:700,children:e}),(0,X.jsx)(d,{className:c?`detail-row-value-wrap`:`truncate`,size:`sm`,children:t}),r?(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:r}):null,i?(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:i}):null]}),a&&l!==`-`?(0,X.jsx)(m,{"aria-label":`Copy ${rt(a)}`,size:`compact-xs`,variant:`subtle`,leftSection:(0,X.jsx)(V,{size:14}),onClick:()=>void s?.(a,l),children:`Copy`}):null]})}function Q({title:e,utility:t,icon:r,children:i}){return(0,X.jsx)(b,{component:`section`,className:`operations-panel`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`center`,children:[(0,X.jsxs)(n,{gap:`xs`,children:[r,(0,X.jsx)(k,{order:3,children:e})]}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:t})]}),i]})})}function it({message:e}){return(0,X.jsx)(d,{c:`dimmed`,children:e})}function at(e){let t=(0,Y.useRef)(e),n=(0,Y.useRef)(0),r=(0,Y.useRef)(0),i=(0,Y.useRef)(0),a=(0,Y.useRef)(!1),o=(0,Y.useRef)();return t.current=e,{loadRequestRef:n,previewRequestRef:r,applyRequestRef:i,applyInteractionRef:a,applyAttemptRef:o,invalidatePreview:(0,Y.useCallback)(()=>{r.current+=1,o.current=void 0},[]),invalidateApply:(0,Y.useCallback)(()=>{i.current+=1,o.current=void 0},[]),reset:(0,Y.useCallback)(()=>{n.current+=1,r.current+=1,i.current+=1,a.current=!1,o.current=void 0,t.current()},[])}}function ot(e,t,n,r,i,a=[]){let o={},s={};for(let r of e)for(let e of r.fields){if(e.control===`secret`||!e.editable||e.control===`readonly`||!lt(e,i))continue;let r=$(e.fieldPath),a=ht(e,t[r]);if(_t(a)===_t(ht(e,n[r])))continue;let c=e.fieldPath[0];c===`id`?o.id=String(a??``):c===`enabled`?o.enabled=!!a:c===`tags`?o.tags=ut(a):c===`transport`&&e.fieldPath.length>1?gt(s,e.fieldPath.slice(1),a):c&&gt(o,e.fieldPath,a)}let c=Object.values(r).filter(t=>{let n=e.flatMap(e=>e.fields).find(e=>$(e.fieldPath)===$(t.fieldPath));return!n||lt(n,i)}).filter(e=>e.action!==`preserve`).map(e=>({fieldPath:e.fieldPath,action:e.action,...e.action===`replace`?{replacement:{kind:e.replacementKind,value:e.replacementValue}}:{}}));return{...o,...Object.keys(s).length>0?{transport:s}:{},...c.length>0?{secrets:c}:{},...a.length>0?{clearTransportOverrides:a}:{}}}function $(e){return e.join(`\0`)}function st(e){return ht(e,e.value)}function ct(e,t){let n=e[$([`transport`,`type`])]??t;return n===`stdio`||n===`http`||n===`sse`||n===`streamableHttp`?n:void 0}function lt(e,t){return!t||!e.applicableTransportTypes||e.applicableTransportTypes.includes(t)}function ut(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function dt(e){return e.split(/\r?\n/u).map(e=>e.trim()).filter(Boolean)}function ft(e){return!e||typeof e!=`object`||Array.isArray(e)?{}:{...e}}function pt(e){return Array.isArray(e)?e.join(`, `):e&&typeof e==`object`?Object.keys(e).length>0?Object.keys(e).join(`, `):`-`:String(e??`-`)}function mt(e){if(e==null)return`-`;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return String(e);if(Array.isArray(e))return e.map(mt).join(`, `);if(typeof e!=`object`)return`-`;let t=e;return t.secret===!0||t.value===`[REDACTED]`?`[REDACTED]`:t.kind===`inlineSecret`?`inline secret: [REDACTED]`:typeof t.kind==`string`&&typeof t.value==`string`?`${yt(t.kind)}: ${t.value}`:Object.entries(t).map(([e,t])=>`${e}: ${vt(e)?`[REDACTED]`:mt(t)}`).join(`; `)}function ht(e,t){return e.control===`switch`?!!t:e.control===`tag-list`||e.control===`string-list`?ut(t):e.control===`record`?ft(t):e.control===`number`?typeof t==`number`?t:void 0:e.control===`text`||e.control===`select`?String(t??``):t}function gt(e,t,n){let r=e;for(let e of t.slice(0,-1)){let t=r[e];(!t||typeof t!=`object`||Array.isArray(t))&&(r[e]={}),r=r[e]}let i=t.at(-1);i&&(r[i]=n)}function _t(e){return JSON.stringify(e)}function vt(e){return/authorization|password|secret|token/iu.test(e)}function yt(e){return e.replace(/([A-Z])/g,` $1`).toLowerCase()}function bt(){return{status:`idle`}}function xt(e,t){switch(t.type){case`closed`:return{status:`idle`};case`contractLoadStarted`:return{status:`loading`};case`contractLoaded`:{let e={};for(let n of t.contract.createContract.fieldGroups.flatMap(e=>e.fields))e[$(n.fieldPath)]=st(n);let n=$([`transport`,`type`]);return[`stdio`,`http`,`sse`].includes(String(e[n]??``))||(e[n]=`stdio`),{status:`editing`,contract:t.contract,fieldDraft:e,secrets:[],dirty:!1,previewBusy:!1,applyBusy:!1}}case`contractFailed`:return{status:`failed`,message:t.message};case`fieldChanged`:return e.status!==`editing`||e.applyBusy?e:Ct(e,{fieldDraft:{...e.fieldDraft,[$(t.fieldPath)]:t.value}});case`secretAdded`:return e.status!==`editing`||e.applyBusy?e:Ct(e,{secrets:[...e.secrets,t.secret]});case`secretChanged`:return e.status!==`editing`||e.applyBusy?e:Ct(e,{secrets:e.secrets.map(e=>e.id===t.secret.id?t.secret:e)});case`secretRemoved`:return e.status!==`editing`||e.applyBusy?e:Ct(e,{secrets:e.secrets.filter(e=>e.id!==t.id)});case`previewStarted`:return e.status===`editing`?{...e,previewBusy:!0,previewError:void 0}:e;case`previewSucceeded`:return e.status===`editing`?{...e,preview:t.preview,previewBusy:!1,previewError:void 0}:e;case`previewFailed`:return e.status===`editing`?{...e,previewBusy:!1,previewError:t.message}:e;case`applyStarted`:return e.status===`editing`?{...e,applyBusy:!0,applyError:void 0}:e;case`applyFailed`:return e.status===`editing`?{...e,applyBusy:!1,applyError:t.message,preview:t.clearPreview?void 0:e.preview}:e;case`applySucceeded`:return{status:`committed`,serverId:t.response.result.targetName,result:t.response.result,warning:t.response.result.configChange.reload.status===`failed`?t.response.result.configChange.reload.error??`Runtime reload failed after configuration was written.`:void 0}}}function St(e){if(e.status!==`editing`)return null;let t=e.fieldDraft[$([`transport`,`type`])];if(t!==`stdio`&&t!==`http`&&t!==`sse`)return null;let n={type:t};for(let r of e.contract.createContract.fieldGroups.flatMap(e=>e.fields)){if(r.fieldPath[0]!==`transport`||r.fieldPath.length!==2||!lt(r,t))continue;let i=r.fieldPath[1];if(i===`type`)continue;let a=e.fieldDraft[$(r.fieldPath)];r.control===`string-list`?n[i]=ut(a):r.control===`record`?n[i]=ft(a):a!==``&&a!==void 0&&(n[i]=a)}let r=t===`stdio`?`env`:`headers`,i=e.secrets.filter(e=>e.container===r&&e.key.trim()&&e.replacementValue.trim()).map(e=>({fieldPath:[e.container,e.key.trim()],action:`replace`,replacement:{kind:e.replacementKind,value:e.replacementValue}}));return{name:String(e.fieldDraft[$([`name`])]??``),enabled:!!e.fieldDraft[$([`enabled`])],tags:ut(e.fieldDraft[$([`tags`])]),transport:n,...i.length>0?{secrets:i}:{}}}function Ct(e,t){return{...e,...t,dirty:!0,preview:void 0,previewBusy:!1,previewError:void 0,applyError:void 0}}function wt({api:e,session:t,browser:n,onUnauthenticated:r,onCreated:i,onOpenCreated:a,onPathCommitted:o}){let[s,c]=(0,Y.useReducer)(xt,void 0,bt),l=(0,Y.useRef)(s),u=(0,Y.useRef)(e),d=(0,Y.useRef)(t),f=(0,Y.useRef)(r);u.current=e,d.current=t,f.current=r;let p=(0,Y.useCallback)(e=>{let t=xt(l.current,e);l.current=t,c(e)},[]),{loadRequestRef:m,previewRequestRef:h,applyRequestRef:g,applyInteractionRef:_,applyAttemptRef:v,invalidatePreview:y,reset:b}=at(()=>p({type:`closed`})),x=(0,Y.useCallback)(e=>!(e instanceof q)||e.failure.kind!==`unauthenticated`?!1:(b(),f.current(e.failure.adminStatus),!0),[b]),S=(0,Y.useCallback)(async()=>{let e=d.current;if(!e)return;let t=m.current+1;m.current=t;let n=e.csrfToken;p({type:`contractLoadStarted`});try{let e=await u.current.getConfiguredServerCreateContract();if(t!==m.current||d.current?.csrfToken!==n)return;p({type:`contractLoaded`,contract:e})}catch(e){if(t!==m.current||d.current?.csrfToken!==n)return;x(e)||p({type:`contractFailed`,message:Ot(e)})}},[p,x]),C=(0,Y.useCallback)(async()=>{let e=l.current;e.status===`editing`&&e.dirty&&!await Et(n)||(b(),n.push(`/admin/servers/new`),o?.(`/admin/servers/new`),await S())},[n,S,o,b]),w=(0,Y.useCallback)(async(e=`/admin/servers`)=>{let t=l.current;return t.status===`editing`&&t.dirty&&!await Et(n)?!1:(b(),n.push(e),o?.(e),!0)},[n,o,b]),T=(0,Y.useCallback)(async e=>{await w(`/admin/servers`)&&await a?.(e)},[w,a]),E=(0,Y.useCallback)((e,t)=>{y(),p({type:`fieldChanged`,fieldPath:e,value:t})},[p,y]),D=(0,Y.useCallback)(e=>{y(),p({type:`secretAdded`,secret:e})},[p,y]),O=(0,Y.useCallback)(e=>{y(),p({type:`secretChanged`,secret:e})},[p,y]),k=(0,Y.useCallback)(e=>{y(),p({type:`secretRemoved`,id:e})},[p,y]),A=(0,Y.useCallback)(async(e=`auto`)=>{let t=d.current,n=l.current,r=St(n);if(!t||n.status!==`editing`||!r)return;let i=h.current+1;h.current=i;let a=t.csrfToken;p({type:`previewStarted`});try{let t=await u.current.previewConfiguredServerCreate({draft:r,csrfToken:a,connectivityCheck:e});if(i!==h.current||d.current?.csrfToken!==a)return;v.current?.previewFingerprint!==t.preview.previewFingerprint&&(v.current=void 0),p({type:`previewSucceeded`,preview:t.preview})}catch(e){if(i!==h.current||d.current?.csrfToken!==a)return;x(e)||p({type:`previewFailed`,message:`Preview failed: ${Ot(e)}`})}},[p,x]),j=(0,Y.useCallback)(async()=>{if(_.current)return;let e=d.current,t=l.current,r=St(t);if(!(!e||t.status!==`editing`||!t.preview||!r)&&Tt(t).eligible){_.current=!0;try{let o=t.preview,s=o.connectivityCheck.status===`failed`;if(!await n.confirm({title:s?`Create ${r.name} despite failed connectivity?`:`Create configured server ${r.name}?`,message:s?`The bounded connectivity check failed. Creating this target may leave it unavailable.`:`This writes a new static target and reloads the Runtime Scope.`,confirmLabel:s?`Create despite failure`:`Create server`,tone:s?`danger`:void 0,details:[{label:`Target`,value:r.name},{label:`Transport`,value:r.transport.type},{label:`Connectivity`,value:o.connectivityCheck.status},{label:`Existing target`,value:`Must remain absent`}]}))return;let c=v.current?.previewFingerprint===o.previewFingerprint?v.current:{previewFingerprint:o.previewFingerprint,idempotencyKey:Te(r.name)};v.current=c;let l=g.current+1;g.current=l;let f=e.csrfToken;p({type:`applyStarted`});try{let e=await u.current.createConfiguredServer({draft:r,csrfToken:f,idempotencyKey:c.idempotencyKey,previewFingerprint:o.previewFingerprint,confirmationFacts:{previewConfirmed:o.previewFingerprint,targetNameConfirmed:r.name,connectionCriticalConfirmed:!0,...o.diff.some(e=>e.riskFlags.includes(`secret`))?{secretChangeConfirmed:!0}:{},...s?{connectivityFailureOverrideConfirmed:!0}:{}}});if(l!==g.current||d.current?.csrfToken!==f)return;v.current=void 0,p({type:`applySucceeded`,response:e}),await i?.(),await a?.(e.result.targetName),e.result.configChange.reload.status!==`failed`&&p({type:`closed`})}catch(e){if(l!==g.current||d.current?.csrfToken!==f)return;if(!x(e)){let t=Dt(e);t&&(v.current=void 0),p({type:`applyFailed`,message:`Create failed: ${Ot(e)}`,clearPreview:t})}}}finally{_.current=!1}}},[n,p,x,i,a]);return(0,Y.useEffect)(()=>{if(!t){b();return}n.pathname()===`/admin/servers/new`&&S()},[n,S,b,t?.csrfToken]),(0,Y.useEffect)(()=>n.subscribePopState(()=>{(async()=>{let e=n.pathname(),t=l.current;if(t.status===`editing`&&t.dirty){if(n.replace(`/admin/servers/new`),!await Et(n)){o?.(`/admin/servers/new`);return}n.replace(e)}b(),o?.(e)})()}),[n,o,b]),{state:s,open:C,close:w,editExisting:T,changeField:E,addSecret:D,changeSecret:O,removeSecret:k,preview:A,apply:j}}function Tt(e){if(e.status!==`editing`||!e.preview)return{eligible:!1,reason:`Preview this server first.`};if(!e.contract.createContract.capabilities.apply.supported)return{eligible:!1,reason:`Creation is unavailable.`};if(e.preview.validation.status!==`valid`)return{eligible:!1,reason:`Resolve validation issues.`};if(!e.preview.configChange.changed||e.preview.diff.length===0)return{eligible:!1,reason:`The preview contains no changes.`};let t=St(e);if(!t)return{eligible:!1,reason:`Complete the server configuration.`};let n=e.preview.diff.some(e=>e.riskFlags.includes(`connection_critical`));return t.enabled&&t.transport.type!==`stdio`&&n&&e.preview.connectivityCheck.status!==`passed`&&e.preview.connectivityCheck.status!==`failed`&&!(e.preview.connectivityCheck.status===`skipped`&&e.preview.connectivityCheck.reason===`checker_unavailable`)?{eligible:!1,reason:`A connectivity check must run before creation.`}:{eligible:!0}}function Et(e){return e.confirm({title:`Discard custom server?`,message:`The configured-server draft, preview, and secret replacements will be lost.`,confirmLabel:`Discard draft`,tone:`danger`})}function Dt(e){return e instanceof q&&e.failure.kind===`rejected`&&e.failure.code===`configured_server_stale_preview`}function Ot(e){if(e instanceof q)return e.failure.message;throw e}function kt(e){return e===`identity`?`Rename or enable this target before previewing.`:e===`secrets`?`Choose preserve, replace, or clear without revealing current values.`:e===`transport`?`Change how the runtime connects to this server.`:`Edit normalized fields owned by the Admin Domain.`}function At({field:e,value:t,onChange:n}){return!e.editable||e.control===`readonly`?(0,X.jsx)(Z,{label:e.label,value:pt(t)}):e.control===`switch`?(0,X.jsx)(T,{label:e.label,checked:!!t,onChange:e=>n(e.currentTarget.checked)}):e.control===`tag-list`?(0,X.jsx)(D,{label:e.label,value:ut(t),onChange:n}):e.control===`select`?(0,X.jsx)(y,{label:e.label,value:String(t??``),data:e.options??[],onChange:e=>n(e.currentTarget.value)}):e.control===`number`?(0,X.jsx)(C,{label:e.label,value:typeof t==`number`?t:``,onChange:e=>n(e===``?void 0:e)}):e.control===`string-list`?(0,X.jsx)(j,{label:e.label,value:ut(t).join(`
3
+ `),autosize:!0,minRows:2,onChange:e=>n(dt(e.currentTarget.value))}):e.control===`record`?(0,X.jsx)(jt,{label:e.label,value:ft(t),onChange:n}):(0,X.jsx)(w,{label:e.label,value:String(t??``),onChange:e=>n(e.currentTarget.value)})}function jt({label:e,value:t,onChange:r}){let[i,a]=(0,Y.useState)(``),[o,s]=(0,Y.useState)(``);function c(e,n){r({...t,[e]:n})}function l(e){let n={...t};delete n[e],r(n)}function u(){let e=i.trim();e&&(r({...t,[e]:o}),a(``),s(``))}return(0,X.jsxs)(O,{className:`record-editor`,gap:`xs`,children:[(0,X.jsx)(d,{fw:700,children:e}),Object.entries(t).map(([t,r])=>(0,X.jsxs)(n,{gap:`xs`,align:`flex-end`,wrap:`nowrap`,children:[(0,X.jsx)(w,{className:`record-editor-value`,label:`${e} ${t}`,value:String(r??``),onChange:e=>c(t,e.currentTarget.value)}),(0,X.jsx)(m,{"aria-label":`Remove ${e} ${t}`,size:`compact-xs`,variant:`subtle`,color:`red`,onClick:()=>l(t),children:`Remove`})]},t)),(0,X.jsxs)(n,{gap:`xs`,align:`flex-end`,children:[(0,X.jsx)(w,{label:`New ${e} key`,value:i,onChange:e=>a(e.currentTarget.value)}),(0,X.jsx)(w,{label:`New ${e} value`,value:o,onChange:e=>s(e.currentTarget.value)}),(0,X.jsx)(m,{variant:`default`,onClick:u,children:`Add entry`})]})]})}function Mt({field:e,draft:t,onChange:i}){let a=t??{fieldPath:e.fieldPath,action:`preserve`,replacementKind:e.secret?.environmentReference.supported===!1?`inlineSecret`:`environmentReference`,replacementValue:``},o=e.secret?.allowedActions??[`preserve`,`replace`,`clear`],s=e.secret?.environmentReference.supported??!0,c=e.secret?.environmentReference.recommended??s,l=e.secret?.inlineReplacement.supported??!1;return(0,X.jsx)(b,{className:`secret-editor`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:700,children:e.label}),(0,X.jsx)(d,{size:`xs`,c:`dimmed`,children:e.secret?.environmentReference.guidance??`Store only an environment variable name or substitution expression when possible.`})]}),(0,X.jsxs)(n,{gap:4,children:[(0,X.jsx)(u,{variant:`light`,children:`redacted`}),c?(0,X.jsx)(u,{color:`teal`,variant:`light`,children:`env reference recommended`}):null]})]}),(0,X.jsx)(_.Group,{value:a.action,onChange:e=>i({...a,action:e}),children:(0,X.jsx)(n,{gap:`sm`,children:o.map(t=>(0,X.jsx)(_,{value:t,label:Nt(t,e.label)},t))})}),a.action===`replace`?(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsx)(r,{color:`teal`,variant:`light`,children:`Recommended: keep secret material outside 1MCP config by writing only an environment variable name or substitution expression.`}),(0,X.jsx)(_.Group,{label:`Replacement source`,value:a.replacementKind,onChange:e=>i({...a,replacementKind:e}),children:(0,X.jsx)(n,{gap:`sm`,children:(0,X.jsx)(_,{disabled:!s,value:`environmentReference`,label:`Environment variable (recommended)`})})}),a.replacementKind===`environmentReference`?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(w,{label:`Environment variable for ${e.label}`,description:"Example: GITHUB_TOKEN or ${GITHUB_TOKEN}",value:a.replacementValue,onChange:e=>i({...a,replacementValue:e.currentTarget.value})}),l?(0,X.jsx)(m,{size:`compact-sm`,variant:`subtle`,color:`yellow`,onClick:()=>i({...a,replacementKind:`inlineSecret`,replacementValue:``}),children:`Use advanced inline secret instead`}):null]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(r,{color:`yellow`,role:`alert`,children:`Advanced path: inline replacement stores secret material in configuration. Prefer an environment reference unless the deployment cannot provide one.`}),(0,X.jsx)(E,{label:`Inline secret for ${e.label}`,value:a.replacementValue,onChange:e=>i({...a,replacementValue:e.currentTarget.value})}),s?(0,X.jsx)(m,{size:`compact-sm`,variant:`subtle`,onClick:()=>i({...a,replacementKind:`environmentReference`,replacementValue:``}),children:`Use environment variable instead`}):null]}),(0,X.jsx)(d,{size:`xs`,c:`dimmed`,children:a.replacementKind===`environmentReference`?e.secret?.environmentReference.guidance:e.secret?.inlineReplacement.guidance})]}):null]})})}function Nt(e,t){return e===`preserve`?`Preserve existing ${t}`:e===`replace`?`Replace ${t}`:`Clear saved ${t}`}function Pt({preview:e}){let t=e.connectivityCheck,i=e.validation.status===`valid`?`teal`:`red`,a=t.status===`passed`?`teal`:t.status===`failed`?`red`:`yellow`;return(0,X.jsx)(b,{className:`preview-result`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:`Preview result`}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Domain facts only. No config has been written.`})]}),(0,X.jsx)(P,{className:`preview-fingerprint`,children:e.previewFingerprint})]}),(0,X.jsx)(r,{color:`blue`,variant:`light`,children:`Preview only - no config has been written.`}),(0,X.jsxs)(h,{cols:{base:1,sm:2},spacing:`xs`,children:[(0,X.jsx)(Z,{label:`Target`,value:e.targetName,meta:`Proposed: ${e.proposedTargetName??e.targetName}`}),(0,X.jsx)(Z,{label:`Validation`,value:e.validation.status,meta:e.validation.errors.length>0?`${e.validation.errors.length} field issue${e.validation.errors.length===1?``:`s`}`:`Ready to apply after confirmation`}),(0,X.jsx)(Z,{label:`Config change`,value:e.configChange.status,meta:`${e.configChange.operation} / ${e.configChange.changed?`changed`:`unchanged`}`}),`expectedReload`in e?(0,X.jsx)(Z,{label:`Expected reload`,value:`Checked after creation`,meta:`The runtime reports the reload outcome after configuration is written.`}):(0,X.jsx)(Z,{label:`Reload`,value:e.configChange.reload.status,meta:e.configChange.reload.error}),(0,X.jsx)(Z,{label:`Backup`,value:e.configChange.backup.created?`created`:`not created`,meta:e.configChange.backup.path}),(0,X.jsx)(b,{className:`connectivity-card connectivity-${t.status}`,withBorder:!0,children:(0,X.jsxs)(O,{gap:4,children:[(0,X.jsxs)(n,{justify:`space-between`,gap:`xs`,children:[(0,X.jsx)(d,{fw:700,children:`Connectivity`}),(0,X.jsx)(u,{color:a,variant:`light`,children:t.status})]}),(0,X.jsx)(d,{size:`sm`,children:Je(t)}),qe(e)?(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:qe(e)}):null]})})]}),e.toolSelection?(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(d,{fw:800,children:`Tool impact`}),(0,X.jsx)(u,{variant:`outline`,children:e.toolSelection.model})]}),(0,X.jsxs)(h,{cols:{base:1,sm:3},spacing:`xs`,children:[(0,X.jsx)(Z,{label:`Selection`,value:`${e.toolSelection.counts.enabled} enabled / ${e.toolSelection.counts.disabled} disabled`,meta:`${e.toolSelection.counts.unresolved} unresolved`}),(0,X.jsx)(Z,{label:`Approximate tokens`,value:`${e.toolSelection.approximateTokens.before} to ${e.toolSelection.approximateTokens.after}`,meta:`Savings: ${e.toolSelection.approximateTokens.savings}`}),(0,X.jsx)(Z,{label:`Runtime effect`,value:e.toolSelection.effect===`immediate`?`Immediate`:`Deferred`,meta:`${e.toolSelection.changedTools.length} changed tools`})]}),e.toolSelection.requiresZeroEnabledConfirmation?(0,X.jsx)(r,{color:`red`,role:`alert`,children:`Applying this preview disables every currently observed tool.`}):null]}):null,e.configChange.warnings?.map(e=>(0,X.jsx)(Z,{label:`Warning`,value:e},`warning:${e}`)),e.configChange.retentionCleanup.warnings.map(e=>(0,X.jsx)(Z,{label:`Retention warning`,value:e},`retention:${e}`)),e.validation.errors.length>0?(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(d,{fw:800,children:`Validation issues`}),(0,X.jsx)(u,{color:i,variant:`light`,children:e.validation.errors.length})]}),e.validation.errors.map(e=>(0,X.jsx)(Z,{label:e.fieldPath.join(`.`)||`form`,value:e.code,meta:e.message},`${$(e.fieldPath)}:${e.code}`))]}):null,e.diff.length>0?(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(d,{fw:800,children:`Redacted diff`}),(0,X.jsxs)(u,{variant:`outline`,children:[e.diff.length,` change`,e.diff.length===1?``:`s`]})]}),e.diff.map(e=>(0,X.jsx)(b,{className:`preview-diff-entry`,withBorder:!0,children:(0,X.jsxs)(O,{gap:6,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,gap:`xs`,children:[(0,X.jsx)(d,{fw:700,children:e.fieldPath.join(`.`)}),(0,X.jsxs)(n,{gap:4,children:[e.secretAction?(0,X.jsxs)(u,{color:`grape`,variant:`light`,children:[`secret: `,e.secretAction]}):null,e.riskFlags.map(e=>(0,X.jsx)(u,{color:Xe(e),variant:`light`,children:Ze(e)},e))]})]}),(0,X.jsxs)(d,{size:`sm`,children:[(0,X.jsxs)(d,{span:!0,c:`dimmed`,children:[`from`,` `]}),mt(e.oldValue),(0,X.jsxs)(d,{span:!0,c:`dimmed`,children:[` `,`to`,` `]}),mt(e.newValue)]})]})},$(e.fieldPath)))]}):(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`No field-level changes were reported by preview.`})]})})}function Ft({model:e}){let{state:t}=e,i=(0,Y.useRef)(null),a=t.status===`editing`&&!!t.preview?.validation.errors.some(e=>!It(e.fieldPath));if((0,Y.useEffect)(()=>{a&&i.current&&(i.current.open=!0)},[a]),t.status===`idle`)return null;if(t.status===`loading`)return(0,X.jsx)(Q,{title:`Configure custom server`,utility:`loading`,icon:(0,X.jsx)(he,{size:17}),children:(0,X.jsx)(it,{message:`Loading creation controls.`})});if(t.status===`failed`)return(0,X.jsx)(Q,{title:`Configure custom server`,utility:`unavailable`,icon:(0,X.jsx)(he,{size:17}),children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsx)(r,{color:`red`,role:`alert`,children:t.message}),(0,X.jsxs)(n,{children:[(0,X.jsx)(m,{onClick:()=>void e.open(),children:`Retry loading`}),(0,X.jsx)(m,{variant:`default`,onClick:()=>void e.close(),children:`Back to servers`})]})]})});if(t.status===`committed`)return(0,X.jsx)(Q,{title:`Configured server created`,utility:t.serverId,icon:(0,X.jsx)(W,{size:17}),children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsxs)(r,{color:`teal`,role:`status`,children:[`Created `,t.serverId,`.`]}),t.warning?(0,X.jsx)(r,{color:`yellow`,children:t.warning}):null,(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`Refreshing the inventory and opening the created target.`}),(0,X.jsx)(m,{onClick:()=>void e.close(`/admin/servers/${encodeURIComponent(t.serverId)}`),children:`Open server detail`})]})});let o=t.fieldDraft[$([`transport`,`type`])],s=o===`http`||o===`sse`?o:`stdio`,c=t.contract.createContract.fieldGroups.map(e=>({...e,fields:e.fields.filter(e=>lt(e,s))})).filter(e=>e.fields.length>0),l=c.map(e=>({...e,fields:e.fields.filter(e=>It(e.fieldPath))})).filter(e=>e.fields.length>0),f=c.flatMap(e=>e.fields).filter(e=>!It(e.fieldPath)),p=Tt(t),h=t.preview?.configChange.target.source===`mcpServers`&&t.preview.validation.errors.some(e=>[`configured_server_name_conflict`,`configured_server_destination_conflict`].includes(e.code));return(0,X.jsx)(Q,{title:`Configure custom server`,utility:`new static target`,icon:(0,X.jsx)(K,{size:17}),children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{className:`eyebrow`,size:`xs`,children:`Configured Server Target`}),(0,X.jsx)(k,{order:2,children:`New custom server`}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`Configure -> Preview -> Confirm creation`})]}),(0,X.jsx)(m,{variant:`default`,onClick:()=>void e.close(),children:`Back`})]}),s===`sse`?(0,X.jsx)(r,{color:`yellow`,title:`Legacy transport`,children:`SSE is deprecated. Use HTTP for new remote servers when the endpoint supports it.`}):null,l.map(r=>(0,X.jsx)(b,{className:`edit-section`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:r.label}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:kt(r.id)})]}),(0,X.jsxs)(u,{variant:`outline`,children:[r.fields.length,` fields`]})]}),r.fields.map(n=>Lt(n,t.fieldDraft,e.changeField))]})},r.id)),(0,X.jsxs)(`details`,{ref:i,className:`advanced-settings`,children:[(0,X.jsx)(`summary`,{children:`Advanced settings`}),(0,X.jsxs)(O,{gap:`sm`,mt:`sm`,children:[f.length>0?(0,X.jsx)(b,{className:`edit-section`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsx)(d,{fw:800,children:`Optional transport settings`}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Timeouts use milliseconds. Prefer Connection Timeout and Request Timeout over Deprecated Timeout.`}),f.map(n=>Lt(n,t.fieldDraft,e.changeField))]})}):null,(0,X.jsx)(Rt,{transport:s,secrets:t.secrets,inlineSupported:!!t.contract.createContract.secretPolicy.inlineReplacement&&t.contract.createContract.secretPolicy.allowedActions.includes(`replace`),onAdd:e.addSecret,onChange:e.changeSecret,onRemove:e.removeSecret})]})]}),(0,X.jsxs)(n,{className:`draft-action-bar`,justify:`space-between`,gap:`sm`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(u,{color:t.dirty?`yellow`:`gray`,variant:t.dirty?`light`:`outline`,children:t.dirty?`Unpreviewed draft`:`Complete the server details`}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Preview validates the new target without writing configuration.`})]}),(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(m,{loading:t.previewBusy,disabled:!t.dirty||t.previewBusy||t.applyBusy,onClick:()=>void e.preview(`auto`),children:`Preview server`}),t.preview?(0,X.jsx)(m,{variant:`default`,disabled:t.applyBusy,onClick:()=>void e.preview(`manual`),children:`Rerun connectivity`}):null]})]}),t.previewError?(0,X.jsx)(r,{color:`red`,role:`alert`,children:t.previewError}):null,t.applyError?(0,X.jsx)(r,{color:`red`,role:`alert`,children:t.applyError}):null,t.preview?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(n,{justify:`flex-end`,align:`center`,children:[h?(0,X.jsx)(m,{leftSection:(0,X.jsx)(U,{size:16}),variant:`default`,onClick:()=>void e.editExisting(t.preview?.targetName??``),children:`Edit existing server`}):null,p.eligible?null:(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:p.reason}),(0,X.jsx)(m,{leftSection:(0,X.jsx)(W,{size:16}),loading:t.applyBusy,disabled:!p.eligible||t.applyBusy,onClick:()=>void e.apply(),children:`Create server`})]}),(0,X.jsx)(Pt,{preview:t.preview})]}):null]})})}function It(e){return e[0]===`secrets`?!1:e[0]!==`transport`||[`type`,`command`,`args`,`url`].includes(e[1]??``)}function Lt(e,t,n){let r=$(e.fieldPath);return(0,X.jsx)(At,{field:[`timeout`,`connectionTimeout`,`requestTimeout`].includes(e.fieldPath[1]??``)?{...e,label:`${e.label} (ms)`}:e,value:t[r],onChange:t=>n(e.fieldPath,t)},r)}function Rt({transport:e,secrets:t,inlineSupported:i,onAdd:a,onChange:o,onRemove:s}){let c=e===`stdio`?`env`:`headers`,l=t.filter(e=>e.container===c),u=c===`env`?`Environment secrets`:`Header secrets`;return(0,X.jsx)(b,{className:`edit-section`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{justify:`space-between`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:u}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Environment Secret Reference is recommended. Only the reference is stored in configuration.`})]}),(0,X.jsx)(m,{size:`compact-sm`,variant:`default`,leftSection:(0,X.jsx)(K,{size:14}),onClick:()=>a({id:Bt(),container:c,key:``,replacementKind:`environmentReference`,replacementValue:``}),children:`Add secret`})]}),l.length===0?(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`No secret inputs configured.`}):l.map(e=>(0,X.jsx)(b,{className:`secret-editor`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{align:`flex-end`,wrap:`nowrap`,children:[(0,X.jsx)(w,{label:c===`env`?`Environment variable`:`Header name`,value:e.key,onChange:t=>o({...e,key:t.currentTarget.value})}),(0,X.jsx)(y,{label:`Secret source`,value:e.replacementKind,data:[{value:`environmentReference`,label:`Environment Secret Reference`},...i?[{value:`inlineSecret`,label:`Advanced inline secret`}]:[]],onChange:t=>o({...e,replacementKind:t.currentTarget.value,replacementValue:``})}),(0,X.jsx)(m,{"aria-label":`Remove ${e.key||`secret`} input`,variant:`subtle`,color:`red`,onClick:()=>s(e.id),children:(0,X.jsx)(fe,{size:16})})]}),e.replacementKind===`environmentReference`?(0,X.jsx)(w,{label:`Environment reference for ${e.key||u}`,placeholder:"MY_SECRET or ${MY_SECRET}",value:e.replacementValue,onChange:t=>o({...e,replacementValue:t.currentTarget.value})}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(r,{color:`yellow`,children:`Advanced path: inline replacement stores secret material in configuration. Prefer an Environment Secret Reference.`}),(0,X.jsx)(E,{label:`Inline secret for ${e.key||u}`,value:e.replacementValue,onChange:t=>o({...e,replacementValue:t.currentTarget.value})})]})]})},e.id))]})})}var zt=0;function Bt(){return zt+=1,`create-secret-${zt}`}function Vt(){return{status:`list`}}function Ht(e){if(e.status!==`loaded`)return{};let t=ct(e.fieldDraft,e.detail.server.transport.type),n=ot(e.detail.editContract.fieldGroups,e.fieldDraft,e.initialFieldDraft,e.secretDraft,t,e.clearedTransportOverrides),r=e.instructionOverride,i=e.initialInstructionOverride;return(r.mode!==i.mode||r.mode===`replace`&&r.value!==i.value)&&(n.instructionOverride=r.mode===`upstream`?{action:`remove`}:{action:`set`,value:r.mode===`suppress`?``:r.value}),JSON.stringify(e.toolDraft)!==JSON.stringify(e.initialToolDraft)&&(n.disabledTools=Object.entries(e.toolDraft).filter(([,e])=>!e.enabled).map(([e])=>e).sort((e,t)=>e.localeCompare(t)),n.toolDescriptionOverrides=Object.fromEntries(Object.entries(e.toolDraft).map(([e,t])=>[e,t.descriptionOverride.trim()]).filter(([,e])=>e.length>0).sort(([e],[t])=>e.localeCompare(t)))),n}function Ut(e,t){switch(t.type){case`closed`:return Vt();case`detailLoadStarted`:return{status:`loading`,serverId:t.serverId};case`detailLoaded`:return Wt(t.serverId,t.detail);case`detailMissing`:return{status:`missing`,serverId:t.serverId};case`detailFailed`:return{status:`failed`,serverId:t.serverId,message:t.message};case`fieldChanged`:return e.status!==`loaded`||e.applyBusy||e.detail.server.source===`mcpTemplates`?e:Gt(e,{fieldDraft:{...e.fieldDraft,[$(t.fieldPath)]:t.value},clearedTransportOverrides:t.fieldPath[0]===`transport`&&t.fieldPath[1]?e.clearedTransportOverrides.filter(e=>e!==t.fieldPath[1]):e.clearedTransportOverrides});case`secretChanged`:return e.status!==`loaded`||e.applyBusy||e.detail.server.source===`mcpTemplates`?e:Gt(e,{secretDraft:{...e.secretDraft,[$(t.fieldPath)]:t.value}});case`transportOverrideChanged`:return e.status!==`loaded`||e.applyBusy||e.detail.server.source===`mcpTemplates`?e:Gt(e,{clearedTransportOverrides:t.clear?Array.from(new Set([...e.clearedTransportOverrides,t.key])):e.clearedTransportOverrides.filter(e=>e!==t.key)});case`instructionOverrideChanged`:return e.status!==`loaded`||e.applyBusy?e:Gt(e,{instructionOverride:{mode:t.mode,value:t.mode===`replace`?t.value??e.instructionOverride.value:e.instructionOverride.value}});case`toolChanged`:{if(e.status!==`loaded`||e.applyBusy)return e;let n=e.toolDraft[t.name];return n?Gt(e,{toolDraft:{...e.toolDraft,[t.name]:{enabled:t.enabled??n.enabled,descriptionOverride:t.descriptionOverride??n.descriptionOverride}}}):e}case`toolsBulkChanged`:return e.status!==`loaded`||e.applyBusy?e:Gt(e,{toolDraft:Object.fromEntries(Object.entries(e.toolDraft).map(([e,n])=>[e,t.names.includes(e)?{...n,enabled:t.enabled}:n]))});case`toolInventoryRequestStarted`:return e.status!==`loaded`||e.applyBusy||e.toolInventoryBusy?e:{...e,toolInventoryBusy:!0,toolInventoryError:void 0,...t.clearPreview?{preview:void 0,previewBusy:!1,previewError:void 0,applyError:void 0}:{}};case`toolInventoryReceived`:{if(e.status!==`loaded`)return e;let n={...e.toolDraft},r={...e.initialToolDraft};for(let e of t.inventory.rows)n[e.name]??={enabled:e.enabled,descriptionOverride:e.descriptionOverride??``},r[e.name]??={enabled:e.enabled,descriptionOverride:e.descriptionOverride??``};let i=e.detail.toolInventory?.generation!==t.inventory.generation,a={...e,detail:{...e.detail,toolInventory:t.inventory},toolDraft:n,initialToolDraft:r,toolModel:t.inventory.model,toolInventoryBusy:!1,toolInventoryError:void 0,...t.clearPreview===`always`||i?{preview:void 0,previewBusy:!1,previewError:void 0,applyError:void 0}:{}};return{...a,dirty:Object.keys(Ht(a)).length>0}}case`toolInventoryRequestFailed`:return e.status===`loaded`?{...e,toolInventoryBusy:!1,toolInventoryError:t.message}:e;case`previewStarted`:return e.status===`loaded`?{...e,previewBusy:!0,previewError:void 0}:e;case`previewSucceeded`:return e.status===`loaded`?{...e,preview:t.preview,previewBusy:!1,previewError:void 0}:e;case`previewFailed`:return e.status===`loaded`?{...e,previewBusy:!1,previewError:t.message}:e;case`applyStarted`:return e.status===`loaded`?{...e,applyBusy:!0,applyError:void 0,applySuccess:void 0}:e;case`applyCommitted`:return e.status===`loaded`?{status:`committed`,serverId:t.serverId,success:`Changes applied to ${t.result.targetName}.`,warning:qt(t.result)}:e;case`applySucceeded`:return{...Wt(t.serverId,t.detail),applySuccess:`Changes applied to ${t.result.targetName}.`,applyWarning:qt(t.result)};case`applyFailed`:return e.status===`loaded`?{...e,preview:t.clearPreview?void 0:e.preview,applyBusy:!1,applyError:t.message}:e;case`applyRefreshFailed`:return e.status===`committed`?{...e,status:`committedRefreshFailed`,message:t.message}:e}}function Wt(e,t){let n={},r={};for(let e of t.editContract.fieldGroups)for(let t of e.fields){let e=$(t.fieldPath);t.control===`secret`?r[e]={fieldPath:t.fieldPath,action:t.secret?.defaultAction??`preserve`,replacementKind:t.secret?.environmentReference.supported===!1?`inlineSecret`:`environmentReference`,replacementValue:``}:n[e]=st(t)}let i=Object.fromEntries((t.toolInventory?.rows??[]).map(e=>[e.name,{enabled:e.enabled,descriptionOverride:e.descriptionOverride??``}]));return{status:`loaded`,serverId:e,detail:t,fieldDraft:n,initialFieldDraft:n,secretDraft:r,clearedTransportOverrides:[],instructionOverride:Kt(t.server.instructionOverride),initialInstructionOverride:Kt(t.server.instructionOverride),toolDraft:i,initialToolDraft:i,toolModel:t.toolInventory?.model??`gpt-4o`,toolInventoryBusy:!1,dirty:!1,previewBusy:!1,applyBusy:!1}}function Gt(e,t){let n={...e,...t,preview:void 0,previewBusy:!1,previewError:void 0,applyError:void 0,applyWarning:void 0,applySuccess:void 0};return{...n,dirty:Object.keys(Ht(n)).length>0}}function Kt(e){return e?.state===`replace`?{mode:`replace`,value:e.value}:e?.state===`suppress`?{mode:`suppress`,value:``}:{mode:`upstream`,value:``}}function qt(e){if(e.configChange.reload.status===`failed`)return e.configChange.reload.error?`Configuration was written, but runtime reload failed: ${e.configChange.reload.error}`:`Configuration was written, but runtime reload failed. Inspect runtime health before continuing.`}function Jt({api:e,session:t,browser:n,onUnauthenticated:r,onApplied:i,onPathCommitted:a}){let[o,s]=(0,Y.useReducer)(Ut,void 0,Vt),c=(0,Y.useRef)(o),l=(0,Y.useRef)(t),u=(0,Y.useRef)(e),d=(0,Y.useRef)(r),f=(0,Y.useRef)(0),p=(0,Y.useRef)(!1),m=(0,Y.useRef)();c.current=o,l.current=t,u.current=e,d.current=r;let{loadRequestRef:h,previewRequestRef:g,applyRequestRef:_,applyInteractionRef:v,applyAttemptRef:y,invalidatePreview:b,invalidateApply:x,reset:S}=at(()=>s({type:`closed`})),C=(0,Y.useCallback)(()=>{f.current+=1,p.current=!1,m.current=void 0},[]),w=(0,Y.useCallback)(()=>{C(),S()},[C,S]),T=(0,Y.useCallback)(e=>!(e instanceof q)||e.failure.kind!==`unauthenticated`?!1:(w(),d.current(e.failure.adminStatus),!0),[w]),E=(0,Y.useCallback)(async(e,t)=>{let n=l.current;if(!n||p.current)return;p.current=!0;let r=n.csrfToken,i=f.current+1;f.current=i,s({type:`toolInventoryRequestStarted`,clearPreview:!1});try{let n=await u.current.refreshConfiguredToolInventory({target:e,csrfToken:r,model:t});if(i!==f.current||l.current?.csrfToken!==r)return;let a=c.current;if(a.status!==`loaded`||!Zt(a,e))return;a.detail.toolInventory?.generation!==n.toolInventory.generation&&b(),s({type:`toolInventoryReceived`,inventory:n.toolInventory,clearPreview:`generationChanged`})}catch(e){if(i!==f.current||l.current?.csrfToken!==r)return;T(e)||s({type:`toolInventoryRequestFailed`,message:`Tool refresh failed: ${en(e)}`})}finally{i===f.current&&(p.current=!1)}},[T,b]),D=(0,Y.useCallback)(async e=>{let t=typeof e==`string`?e:e.id,n=l.current;if(!n)return;x(),C();let r=n.csrfToken,i=h.current+1;h.current=i,b(),s({type:`detailLoadStarted`,serverId:t});try{let n=await u.current.getConfiguredServerDetail(e);if(i!==h.current||l.current?.csrfToken!==r)return;m.current=n.toolInventory?.freshness===`unavailable`?{target:n.server.target,model:n.toolInventory.model}:void 0,s({type:`detailLoaded`,serverId:t,detail:n})}catch(e){if(i!==h.current||l.current?.csrfToken!==r||T(e))return;if(e instanceof q&&e.failure.kind===`configuredServerNotFound`){s({type:`detailMissing`,serverId:t});return}s({type:`detailFailed`,serverId:t,message:`Server detail failed: ${en(e)}`})}},[T,x,b,C]),O=(0,Y.useCallback)(async e=>{let t=c.current;t.status===`loaded`&&!Zt(t,e)&&t.dirty&&!await $t(n)||(n.push(tn(e)),await D(e))},[n,D]),k=(0,Y.useCallback)(async(e=`/admin`)=>{let t=c.current;return t.status===`loaded`&&t.dirty&&!await $t(n)?!1:(n.push(e),w(),!0)},[n,w]),A=(0,Y.useCallback)((e,t)=>{b(),s({type:`fieldChanged`,fieldPath:e,value:t})},[b]),j=(0,Y.useCallback)((e,t)=>{b(),s({type:`secretChanged`,fieldPath:e,value:t})},[b]),M=(0,Y.useCallback)((e,t)=>{b(),s({type:`transportOverrideChanged`,key:e,clear:t})},[b]),N=(0,Y.useCallback)((e,t)=>{b(),s({type:`instructionOverrideChanged`,mode:e,value:t})},[b]),P=(0,Y.useCallback)((e,t)=>{b(),s({type:`toolChanged`,name:e,...t})},[b]),ee=(0,Y.useCallback)((e,t)=>{b(),s({type:`toolsBulkChanged`,names:e,enabled:t})},[b]),F=(0,Y.useCallback)(async e=>{let t=c.current;if(t.status!==`loaded`||t.applyBusy||t.toolInventoryBusy||p.current||v.current||e===t.toolModel)return;let n=l.current;if(!n)return;let r=n.csrfToken;p.current=!0;let i=f.current+1;f.current=i,b(),s({type:`toolInventoryRequestStarted`,clearPreview:!0});try{let n=await u.current.getConfiguredServerDetail(Xt(t),e);if(i!==f.current||l.current?.csrfToken!==r||c.current.status!==`loaded`||!Zt(c.current,Xt(t)))return;n.toolInventory?s({type:`toolInventoryReceived`,inventory:n.toolInventory,clearPreview:`always`}):s({type:`toolInventoryRequestFailed`,message:`Token estimate failed: inventory unavailable.`})}catch(e){if(i!==f.current||l.current?.csrfToken!==r)return;T(e)||s({type:`toolInventoryRequestFailed`,message:`Token estimate failed: ${en(e)}`})}finally{i===f.current&&(p.current=!1)}},[T,b]),I=(0,Y.useCallback)(()=>{let e=c.current;if(!(e.status!==`loaded`||e.applyBusy||e.toolInventoryBusy||v.current))return E(Xt(e),e.toolModel)},[E]);(0,Y.useEffect)(()=>{if(o.status!==`loaded`)return;let e=m.current;!e||!Zt(o,e.target)||(m.current=void 0,E(e.target,e.model))},[E,o]);let te=(0,Y.useCallback)(async(e=`auto`)=>{let t=l.current,n=c.current;if(!t||n.status!==`loaded`||n.toolInventoryBusy||p.current)return;let r=t.csrfToken,i=n.serverId,a=g.current+1;g.current=a,s({type:`previewStarted`});try{let t=await u.current.previewConfiguredServerEdit({target:Xt(n),csrfToken:r,connectivityCheck:e,...n.detail.toolInventory?{model:n.toolModel}:{},edit:Ht(n)});if(a!==g.current||l.current?.csrfToken!==r)return;let o=c.current;if(o.status!==`loaded`||o.serverId!==i)return;y.current?.previewFingerprint!==t.preview.previewFingerprint&&(y.current=void 0),s({type:`previewSucceeded`,preview:t.preview})}catch(e){if(a!==g.current||l.current?.csrfToken!==r)return;T(e)||s({type:`previewFailed`,message:`Preview failed: ${en(e)}`})}},[T]),L=(0,Y.useCallback)(async()=>{if(v.current)return;let e=l.current,t=c.current;if(!(!e||t.status!==`loaded`||!t.preview||t.toolInventoryBusy||p.current)&&Yt(t).eligible){v.current=!0;try{let r=t.preview,a=Array.from(new Set(r.diff.flatMap(e=>e.riskFlags))),o=r.connectivityCheck.status===`failed`,d=r.toolSelection?.requiresZeroEnabledConfirmation===!0;if(!await n.confirm({title:d?`Disable all observed tools for ${r.proposedTargetName}?`:o?`Apply despite failed connectivity to ${r.proposedTargetName}?`:`Apply changes to ${r.proposedTargetName}?`,message:d?`No currently observed tools will remain enabled. Newly discovered tools will still be enabled by default.`:o?`The bounded connectivity check failed. Applying may make this configured server unavailable.`:`This writes the validated configuration and reloads the Runtime Scope.`,confirmLabel:d?`Disable all tools`:o?`Apply despite failure`:`Apply changes`,tone:d||o?`danger`:void 0,details:[{label:`Current target`,value:r.targetName},{label:`Final target`,value:r.proposedTargetName},{label:`Changes`,value:String(r.diff.length)},{label:`Risk flags`,value:a.join(`, `)||`none`},{label:`Connectivity`,value:r.connectivityCheck.status},{label:`Backup`,value:`Created before the config write`}]}))return;let f=c.current;if(f.status!==`loaded`||f.toolInventoryBusy||p.current||f.preview?.previewFingerprint!==r.previewFingerprint)return;let m=e.csrfToken,h=t.serverId,g=_.current+1;_.current=g;let v=y.current?.previewFingerprint===r.previewFingerprint?y.current:{previewFingerprint:r.previewFingerprint,idempotencyKey:we(h)};y.current=v,s({type:`applyStarted`});let b;try{b=await u.current.applyConfiguredServerEdit({target:Xt(t),csrfToken:m,idempotencyKey:v.idempotencyKey,edit:Ht(t),previewFingerprint:r.previewFingerprint,...t.detail.toolInventory?{model:t.toolModel}:{},confirmationFacts:{previewConfirmed:r.previewFingerprint,...r.proposedTargetName===r.targetName?{}:{targetNameConfirmed:r.proposedTargetName},...a.includes(`connection_critical`)?{connectionCriticalConfirmed:!0}:{},...a.includes(`secret`)?{secretChangeConfirmed:!0}:{},...o?{connectivityFailureOverrideConfirmed:!0}:{},...r.toolSelection?.requiresZeroEnabledConfirmation?{zeroEnabledToolsConfirmed:!0}:{}}})}catch(e){if(g!==_.current||l.current?.csrfToken!==m)return;if(!T(e)){let t=Qt(e);t&&(y.current=void 0),s({type:`applyFailed`,message:`Apply failed: ${en(e)}`,clearPreview:t})}return}if(g!==_.current||l.current?.csrfToken!==m)return;y.current=void 0;let x=b.result.targetName;x!==h&&n.replace(tn(x)),s({type:`applyCommitted`,serverId:x,result:b.result});try{await i?.()}catch{}try{let e=await u.current.getConfiguredServerDetail(t.detail.server.source===`mcpTemplates`?{source:`mcpTemplates`,id:x}:{source:`mcpServers`,id:x});if(g!==_.current||l.current?.csrfToken!==m)return;s({type:`applySucceeded`,serverId:x,detail:e,result:b.result})}catch(e){if(g!==_.current||l.current?.csrfToken!==m)return;T(e)||s({type:`applyRefreshFailed`,message:`Changes were applied, but server detail could not be refreshed: ${en(e)}`})}}finally{v.current=!1}}},[n,T,i]);return(0,Y.useEffect)(()=>{if(!t){w();return}let e=nn(n.pathname());e?D(e):w()},[n,D,w,t?.csrfToken]),(0,Y.useEffect)(()=>n.subscribePopState(()=>{(async()=>{let e=c.current,t=n.pathname(),r=nn(t);if(e.status===`loaded`&&!Zt(e,r)&&e.dirty){if(n.replace(tn(e.detail.server.target)),!await $t(n))return;n.replace(t)}r?D(r):w(),a?.(t)})()}),[n,D,a,w]),{state:o,open:O,close:k,changeField:A,changeSecret:j,changeTransportOverride:M,changeInstructionOverride:N,changeTool:P,changeVisibleTools:ee,changeToolModel:F,refreshToolInventory:I,preview:te,apply:L}}function Yt(e){if(e.status!==`loaded`||!e.preview)return{eligible:!1,reason:`Preview changes first.`};if(e.toolInventoryBusy)return{eligible:!1,reason:`Wait for the tool inventory refresh to finish.`};if(!e.detail.editContract.capabilities.apply.supported)return{eligible:!1,reason:`This runtime does not support applying server edits.`};if(e.preview.validation.status!==`valid`)return{eligible:!1,reason:`Resolve validation issues.`};if(!e.preview.configChange.changed||e.preview.diff.length===0)return{eligible:!1,reason:`The preview contains no changes.`};if(e.detail.server.source===`mcpTemplates`&&e.preview.diff.some(e=>e.fieldPath.join(`.`)!==`instructionOverride`))return{eligible:!1,reason:`Template targets only support instruction overrides.`};let t=e.preview.diff.some(e=>e.riskFlags.includes(`connection_critical`)),n=ct(e.fieldDraft,e.detail.server.transport.type);return(Ht(e).enabled??e.detail.server.enabled)&&n!==`stdio`&&t&&e.preview.connectivityCheck.status!==`passed`&&e.preview.connectivityCheck.status!==`failed`?{eligible:!1,reason:`A connectivity check must run before applying these changes.`}:{eligible:!0}}function Xt(e){return{source:e.detail.server.source,id:e.serverId}}function Zt(e,t){if(!t)return!1;let n=typeof t==`string`?`mcpServers`:t.source,r=typeof t==`string`?t:t.id;return e.serverId===r&&e.detail.server.source===n}function Qt(e){return e instanceof q&&e.failure.kind===`rejected`&&e.failure.code===`configured_server_stale_preview`}function $t(e){return e.confirm({title:`Discard unsaved changes?`,message:`Your configured-server draft and preview will be lost.`,confirmLabel:`Discard changes`,tone:`danger`})}function en(e){if(e instanceof q)return e.failure.message;throw e}function tn(e){return typeof e==`string`?`/admin/servers/${encodeURIComponent(e)}`:e.source===`mcpServers`?`/admin/servers/${encodeURIComponent(e.id)}`:`/admin/servers/${e.source}/${encodeURIComponent(e.id)}`}function nn(e){if(!e.startsWith(`/admin/servers/`))return null;let t=e.slice(15).split(`#`,1)[0];if(!t)return null;let n;try{n=decodeURIComponent(t)}catch{n=t}if(n===`new`)return null;let[r,...i]=n.split(`/`);return(r===`mcpServers`||r===`mcpTemplates`)&&i.length>0?{source:r,id:i.join(`/`)}:n}function rn({inventory:e,draft:t,disabled:r,refreshBusy:i,refreshError:a,onToolChange:o,onBulkChange:s,onModelChange:l,onRefresh:f}){let[p,h]=(0,Y.useState)(``),[_,v]=(0,Y.useState)(`all`),y=(0,Y.useMemo)(()=>{let n=p.trim().toLowerCase();return e.rows.filter(e=>{let r=t[e.name]??{enabled:e.enabled,descriptionOverride:e.descriptionOverride??``},i=!n||e.name.toLowerCase().includes(n)||e.effectiveDescription?.toLowerCase().includes(n)||e.upstreamDescription?.toLowerCase().includes(n),a=_===`all`||_===`enabled`&&r.enabled||_===`disabled`&&!r.enabled||_===`unresolved`&&e.unresolved;return i&&a})},[t,_,e.rows,p]),b=y.map(e=>e.name),x=(0,Y.useMemo)(()=>Array.from(new Set([`gpt-4o`,`gpt-4o-mini`,`gpt-3.5-turbo`,e.model].filter(Boolean))),[e.model]),C=(0,Y.useMemo)(()=>{let n=0,r=0;for(let i of e.rows)t[i.name]?.enabled??i.enabled?r+=i.approximateTokens:n+=1;return{disabled:n,enabledTokens:r}},[t,e.rows]),E=on(e,a),D=an(e),k=!!a||e.inspection?.retryable===!0;return(0,X.jsxs)(O,{className:`configured-tool-table`,gap:`sm`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-end`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:`Configured Tool Selection`}),(0,X.jsxs)(d,{c:`dimmed`,size:`xs`,children:[e.counts.observed,` observed, `,C.disabled,` disabled, `,e.counts.unresolved,` `,`unresolved`]}),E?(0,X.jsxs)(`div`,{role:a||e.inspection?.status===`failed`?`alert`:`status`,"aria-live":a||e.inspection?.status===`failed`?void 0:`polite`,children:[(0,X.jsx)(d,{c:a||e.inspection?.status===`failed`?`red`:`yellow`,size:`xs`,children:E}),D.length>0?(0,X.jsx)(O,{component:`ul`,gap:2,m:0,pl:`md`,children:D.map(e=>(0,X.jsxs)(d,{component:`li`,c:`red`,size:`xs`,style:{overflowWrap:`anywhere`},children:[e.instanceId,`: `,e.error]},`${e.instanceId}:${e.error}`))}):null]}):null]}),(0,X.jsxs)(n,{align:`flex-end`,gap:`xs`,children:[(0,X.jsx)(m,{variant:`default`,leftSection:(0,X.jsx)(ce,{size:15}),loading:i,disabled:r||i,onClick:()=>void f(),children:k?`Retry`:`Refresh`}),(0,X.jsx)(S,{label:`Estimate model`,"aria-label":`Token estimate model`,value:e.model,data:x,allowDeselect:!1,disabled:r||i,onChange:e=>{e&&l(e)}})]})]}),(0,X.jsxs)(n,{align:`flex-end`,grow:!0,children:[(0,X.jsx)(w,{label:`Search tools`,leftSection:(0,X.jsx)(G,{size:15}),value:p,onChange:e=>h(e.currentTarget.value)}),(0,X.jsx)(A,{"aria-label":`Tool status filter`,value:_,onChange:e=>v(e),data:[{label:`All`,value:`all`},{label:`Enabled`,value:`enabled`},{label:`Disabled`,value:`disabled`},{label:`Unresolved`,value:`unresolved`}]})]}),(0,X.jsxs)(n,{justify:`space-between`,children:[(0,X.jsxs)(d,{c:`dimmed`,size:`xs`,children:[y.length,` visible tools, approximately `,C.enabledTokens,` enabled tokens`]}),(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsxs)(m,{size:`compact-xs`,variant:`default`,disabled:r||b.length===0,onClick:()=>s(b,!0),children:[`Enable visible (`,b.length,`)`]}),(0,X.jsxs)(m,{size:`compact-xs`,variant:`default`,disabled:r||b.length===0,onClick:()=>s(b,!1),children:[`Disable visible (`,b.length,`)`]})]})]}),(0,X.jsx)(`div`,{className:`configured-tool-rows`,children:y.map(e=>{let i=t[e.name]??{enabled:e.enabled,descriptionOverride:e.descriptionOverride??``};return(0,X.jsxs)(`div`,{className:`configured-tool-row`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,children:[(0,X.jsxs)(`div`,{className:`configured-tool-identity`,children:[(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(d,{fw:700,children:e.name}),e.stale?(0,X.jsx)(u,{color:`orange`,children:`last observed`}):null,e.unresolved?(0,X.jsx)(u,{color:`yellow`,children:`unresolved`}):null,e.observedInSomeInstances?(0,X.jsxs)(u,{variant:`outline`,children:[e.observedInstanceCount,`/`,e.activeInstanceCount,` instances`]}):null,(0,X.jsxs)(u,{variant:`outline`,children:[`~`,e.approximateTokens,` tokens`]})]}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:e.effectiveDescription??`No upstream description`}),e.descriptionOverridden&&e.upstreamDescription?(0,X.jsxs)(d,{c:`dimmed`,size:`xs`,children:[`Upstream: `,e.upstreamDescription]}):null]}),(0,X.jsx)(T,{"aria-label":`Enable ${e.name}`,checked:i.enabled,disabled:r,onChange:t=>o(e.name,{enabled:t.currentTarget.checked})})]}),(0,X.jsxs)(n,{mt:`xs`,align:`flex-end`,wrap:`nowrap`,children:[(0,X.jsx)(w,{className:`configured-tool-description-input`,label:`Description override`,placeholder:e.upstreamDescription??`Add a description`,value:i.descriptionOverride,disabled:r,onChange:t=>o(e.name,{descriptionOverride:t.currentTarget.value})}),(0,X.jsx)(g,{label:`Reset to upstream description`,children:(0,X.jsx)(c,{"aria-label":`Reset ${e.name} description`,variant:`default`,disabled:r||!i.descriptionOverride,onClick:()=>o(e.name,{descriptionOverride:``}),children:(0,X.jsx)(de,{size:16})})})]})]},e.name)})}),e.targetEnabled?null:(0,X.jsx)(d,{c:`yellow`,size:`xs`,children:`This target is disabled. Tool changes will take effect when the target is enabled.`}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Selection uses a denylist. Tools discovered later are enabled unless explicitly disabled.`})]})}function an(e){return(e.inspection?.instances??[]).flatMap(e=>{let t=e.error?.trim();return e.status===`complete`||!t?[]:[{instanceId:e.instanceId,error:t.length>240?`${t.slice(0,237)}...`:t}]}).slice(0,5)}function on(e,t){if(t)return t;let n=e.inspection;if(n?.status===`in_progress`)return`Refreshing live tool inventory from connected instances.`;if(!(n?.status===`complete`&&e.freshness===`live`))switch(n?.reason){case`target_disabled`:return`This target is disabled, so live tool inventory cannot be refreshed.`;case`target_disconnected`:return`This configured server is disconnected. Reconnect it before refreshing live tool inventory.`;case`no_active_instances`:return`This Template Server has no active instances to inspect.`;case`active_instance_unavailable`:return`An active instance became unavailable before its tools could be inspected.`;case`inspection_failed`:return`Live tool inspection failed for one or more active instances.`;case`snapshot_unavailable`:return`No complete live tool snapshot is available yet.`;case`active_instances_changed`:return`The active instance set changed during inspection. Retry to inspect the current instances.`;default:return e.freshness===`unavailable`?`Live inventory is unavailable. Rows may come from the last complete snapshot or stored configuration.`:void 0}}function sn({model:e}){let{state:t}=e,i=(0,Y.useRef)(null),a=t.status===`loaded`&&!!t.preview?.validation.errors.some(e=>t.detail.editContract.fieldGroups.flatMap(e=>e.fields).some(t=>$(t.fieldPath)===$(e.fieldPath)&&!cn(t)));if((0,Y.useEffect)(()=>{a&&i.current&&(i.current.open=!0)},[a]),t.status===`list`)return(0,X.jsx)(Q,{title:`Edit server`,utility:`select a target`,icon:(0,X.jsx)(U,{size:17}),children:(0,X.jsxs)(O,{className:`edit-empty-state`,gap:`xs`,children:[(0,X.jsx)(d,{fw:700,children:`Select Edit server to change target settings.`}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`Edit fields -> Preview change -> Review result`})]})});if(t.status===`loading`)return(0,X.jsx)(Q,{title:`Server detail`,utility:t.serverId,icon:(0,X.jsx)(he,{size:17}),children:(0,X.jsx)(it,{message:`Loading server detail.`})});if(t.status===`committed`||t.status===`committedRefreshFailed`)return(0,X.jsx)(Q,{title:`Server detail`,utility:t.serverId,icon:(0,X.jsx)(he,{size:17}),children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsx)(r,{color:`teal`,role:`status`,children:t.success}),t.warning?(0,X.jsx)(r,{color:`yellow`,role:`status`,children:t.warning}):null,t.status===`committed`?(0,X.jsx)(it,{message:`Refreshing the committed server detail.`}):(0,X.jsx)(r,{color:`yellow`,role:`status`,children:t.message}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`Editing stays unavailable until the runtime returns a fresh server detail model.`}),(0,X.jsxs)(n,{children:[t.status===`committedRefreshFailed`?(0,X.jsx)(m,{onClick:()=>void e.open(t.serverId),children:`Retry detail`}):null,(0,X.jsx)(m,{variant:`default`,onClick:()=>void e.close(`/admin/servers`),children:`Back to servers`})]})]})});if(t.status===`missing`)return(0,X.jsx)(Q,{title:`Server detail`,utility:t.serverId,icon:(0,X.jsx)(he,{size:17}),children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsx)(k,{order:3,children:`Server target not found`}),(0,X.jsxs)(d,{c:`dimmed`,children:[t.serverId,` is no longer available. It may have been renamed or removed. Return to the list, refresh, and open the current target ID if a rename succeeded.`]}),(0,X.jsx)(r,{color:`yellow`,variant:`light`,children:`Old detail URLs are not aliases. Use the server list after a rename instead of bookmarking the previous ID.`}),(0,X.jsx)(m,{variant:`default`,onClick:()=>e.close(`/admin/servers`),children:`Back to servers`})]})});if(t.status===`failed`)return(0,X.jsx)(Q,{title:`Server detail`,utility:t.serverId,icon:(0,X.jsx)(he,{size:17}),children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsx)(r,{color:`red`,role:`alert`,children:t.message}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`Refresh the console or return to the server list, then retry. Preserve any non-secret request ID from the error when asking for support.`}),(0,X.jsx)(m,{variant:`default`,onClick:()=>e.close(`/admin/servers`),children:`Back to servers`})]})});let o=ct(t.fieldDraft,t.detail.server.transport.type),s=(t.detail.server.source===`mcpTemplates`?[]:t.detail.editContract.fieldGroups).map(e=>({...e,fields:e.fields.filter(e=>lt(e,o))})).filter(e=>e.fields.length>0),c=s.map(e=>({...e,fields:e.fields.filter(cn)})).filter(e=>e.fields.length>0),l=s.flatMap(e=>e.fields).filter(e=>!cn(e)),f=Yt(t),p=r=>{let i=r.fieldPath[0]===`transport`?r.fieldPath[1]:r.fieldPath[0],a=!!(i&&t.clearedTransportOverrides.includes(i)),o=[`timeout`,`connectionTimeout`,`requestTimeout`].includes(r.fieldPath[1]??``)?{...r,label:`${r.label} (ms)`}:r;return(0,X.jsxs)(O,{gap:4,children:[r.control===`secret`?(0,X.jsx)(Mt,{field:o,draft:t.secretDraft[$(r.fieldPath)],onChange:t=>e.changeSecret(r.fieldPath,t)}):(0,X.jsx)(At,{field:o,value:t.fieldDraft[$(r.fieldPath)],onChange:t=>e.changeField(r.fieldPath,t)}),r.overrideSupported&&i?(0,X.jsxs)(n,{justify:`space-between`,gap:`xs`,children:[(0,X.jsx)(u,{variant:`outline`,children:a?`will inherit`:r.source===`inherited`?`inherited`:r.source}),r.clearOverrideSupported?(0,X.jsx)(m,{size:`compact-xs`,variant:`subtle`,onClick:()=>e.changeTransportOverride(i,!a),children:a?`Restore override`:`Clear override`}):null]}):null]},$(r.fieldPath))};return(0,X.jsx)(Q,{title:`Edit server`,utility:t.detail.server.enabled?`enabled`:`disabled`,icon:(0,X.jsx)(U,{size:17}),children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{className:`eyebrow`,size:`xs`,children:`Configured Server Target`}),(0,X.jsxs)(n,{gap:`xs`,align:`center`,children:[(0,X.jsx)(k,{order:2,children:t.detail.server.id}),(0,X.jsx)(u,{color:t.detail.server.enabled?`teal`:`yellow`,variant:`light`,children:t.detail.server.enabled?`enabled`:`disabled`})]}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:Ue(t.detail.server)}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Draft changes stay local until preview.`})]}),(0,X.jsx)(m,{variant:`default`,onClick:()=>e.close(`/admin/servers`),children:`Back`})]}),c.map(e=>(0,X.jsx)(b,{className:`edit-section`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:e.label}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:kt(e.id)})]}),(0,X.jsxs)(u,{variant:`outline`,children:[e.fields.length,` fields`]})]}),e.fields.map(p)]})},e.id)),t.detail.toolInventory?(0,X.jsx)(b,{className:`edit-section`,withBorder:!0,children:(0,X.jsx)(rn,{inventory:t.detail.toolInventory,draft:t.toolDraft,disabled:t.applyBusy,refreshBusy:t.toolInventoryBusy,refreshError:t.toolInventoryError,onToolChange:e.changeTool,onBulkChange:e.changeVisibleTools,onModelChange:e.changeToolModel,onRefresh:()=>e.refreshToolInventory?.()})}):null,l.length>0?(0,X.jsxs)(`details`,{ref:i,className:`advanced-settings`,children:[(0,X.jsx)(`summary`,{children:`Advanced settings`}),(0,X.jsxs)(O,{gap:`sm`,mt:`sm`,children:[(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Timeouts use milliseconds. Prefer Connection Timeout and Request Timeout over Deprecated Timeout.`}),l.map(p)]})]}):null,(0,X.jsx)(b,{className:`edit-section instruction-override-editor`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`xs`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:`Server instructions`}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Choose whether clients receive upstream instructions, an operator replacement, or no instructions.`})]}),(0,X.jsxs)(u,{variant:`outline`,children:[`Effective:`,` `,t.instructionOverride.mode===`replace`?`replacement`:t.instructionOverride.mode]})]}),(0,X.jsx)(A,{fullWidth:!0,"aria-label":`Instruction override outcome`,value:t.instructionOverride.mode,onChange:t=>e.changeInstructionOverride(t),data:[{value:`upstream`,label:`Use upstream`},{value:`replace`,label:`Replace`},{value:`suppress`,label:`Suppress`}]}),t.instructionOverride.mode===`replace`?(0,X.jsx)(j,{label:`Replacement instructions`,minRows:5,value:t.instructionOverride.value,onChange:t=>e.changeInstructionOverride(`replace`,t.currentTarget.value)}):(0,X.jsx)(d,{size:`sm`,className:`instruction-override-readonly`,children:t.instructionOverride.mode===`upstream`?`Upstream state is preserved. Effective instructions are resolved when the server connects.`:`Effective instructions are an intentional empty value.`})]})}),(0,X.jsxs)(n,{className:`draft-action-bar`,justify:`space-between`,gap:`sm`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(u,{color:t.dirty?`yellow`:`gray`,variant:t.dirty?`light`:`outline`,children:t.dirty?`Unsaved changes`:`No changes yet`}),(0,X.jsx)(d,{c:`dimmed`,size:`xs`,children:`Preview validates the draft without writing config. Leaving this page with unsaved changes asks for confirmation.`})]}),(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(m,{loading:t.previewBusy,disabled:!t.dirty||t.previewBusy||t.applyBusy||t.toolInventoryBusy,onClick:()=>void e.preview(`auto`),children:`Preview change`}),t.preview?(0,X.jsx)(m,{variant:`default`,loading:t.previewBusy,disabled:t.applyBusy||t.toolInventoryBusy,onClick:()=>void e.preview(`manual`),children:`Rerun connectivity`}):null]})]}),t.previewError?(0,X.jsx)(r,{color:`red`,role:`alert`,children:t.previewError}):null,t.applyError?(0,X.jsx)(r,{color:`red`,role:`alert`,children:t.applyError}):null,t.applyWarning?(0,X.jsx)(r,{color:`yellow`,role:`status`,children:t.applyWarning}):null,t.applySuccess?(0,X.jsx)(r,{color:`teal`,role:`status`,children:t.applySuccess}):null,t.preview?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(n,{justify:`flex-end`,align:`center`,children:[f.eligible?null:(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:f.reason}),(0,X.jsx)(m,{leftSection:(0,X.jsx)(W,{size:16}),loading:t.applyBusy,disabled:!f.eligible||t.applyBusy||t.toolInventoryBusy,onClick:()=>void e.apply(),children:`Apply changes`})]}),(0,X.jsx)(Pt,{preview:t.preview})]}):null]})})}function cn(e){return e.control===`secret`?!1:e.fieldPath[0]!==`transport`||[`type`,`command`,`args`,`url`].includes(e.fieldPath[1]??``)}function ln({state:e,onServerAction:t,onOpenServerDetail:r,onConfigureCustomServer:i}){let[a,s]=(0,Y.useState)(``),[c,l]=(0,Y.useState)(`all`),u=o(`(max-width: 620px)`,!1),f=(0,Y.useMemo)(()=>Re(e.configuredServers,a,c),[c,a,e.configuredServers]),h=e.configuredServers.length===0;return(0,X.jsxs)(Q,{title:`Server inventory`,utility:`${f.length} of ${e.configuredServers.length} targets`,icon:(0,X.jsx)(he,{size:17}),children:[h?null:(0,X.jsxs)(n,{align:`flex-end`,gap:`sm`,className:`server-filter-row`,children:[(0,X.jsx)(w,{className:`server-search`,leftSection:(0,X.jsx)(G,{size:16}),label:`Search servers`,type:`search`,value:a,onChange:e=>s(e.currentTarget.value)}),(0,X.jsx)(A,{"aria-label":`Server status filter`,value:c,onChange:e=>l(e),data:[{label:`All`,value:`all`},{label:`Enabled`,value:`enabled`},{label:`Disabled`,value:`disabled`}]}),(0,X.jsx)(m,{leftSection:(0,X.jsx)(K,{size:16}),onClick:()=>void i?.(),children:`Configure Custom Server`})]}),h?(0,X.jsxs)(O,{gap:`sm`,className:`actionable-empty-state`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:`No servers configured`}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`Configure a target to start routing MCP capabilities and observing runtime activity.`})]}),(0,X.jsx)(m,{leftSection:(0,X.jsx)(K,{size:16}),onClick:()=>void i?.(),children:`Configure server`})]}):f.length===0?(0,X.jsxs)(O,{gap:`sm`,className:`actionable-empty-state`,children:[(0,X.jsx)(it,{message:`No servers match the current search and status filter.`}),(0,X.jsx)(m,{variant:`default`,onClick:()=>{s(``),l(`all`)},children:`Clear filters`})]}):u?(0,X.jsx)(`div`,{className:`server-mobile-list`,children:f.map(n=>(0,X.jsx)(un,{server:n,mutation:e.serverMutations[n.id],onServerAction:t,onOpenServerDetail:r},`${n.source}:${n.id}`))}):(0,X.jsx)(`div`,{className:`server-table-view`,children:(0,X.jsx)(p.ScrollContainer,{minWidth:720,children:(0,X.jsxs)(p,{className:`admin-table`,verticalSpacing:`xs`,children:[(0,X.jsx)(p.Thead,{children:(0,X.jsxs)(p.Tr,{children:[(0,X.jsx)(p.Th,{children:`Server`}),(0,X.jsx)(p.Th,{children:`Status`}),(0,X.jsx)(p.Th,{children:`Transport`}),(0,X.jsx)(p.Th,{children:`Secrets`}),(0,X.jsx)(p.Th,{children:`Action`})]})}),(0,X.jsx)(p.Tbody,{children:f.map(n=>(0,X.jsx)(dn,{server:n,mutation:e.serverMutations[n.id],onServerAction:t,onOpenServerDetail:r},`${n.source}:${n.id}`))})]})})})]})}function un({server:e,mutation:t,onServerAction:r,onOpenServerDetail:i}){let a=e.enabled?`disable`:`enable`,o=t?.state===`busy`,s=We(e),l=Ke(e,a),f=!Ge(e)||!l.available;return(0,X.jsxs)(`article`,{className:`server-mobile-card${t?` server-action-${t.state}`:``}`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,children:[(0,X.jsxs)(`div`,{className:`server-mobile-identity`,children:[(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(d,{fw:700,children:e.id}),(0,X.jsx)(u,{size:`xs`,variant:`outline`,children:e.source===`mcpTemplates`?`Template`:`Static`})]}),s.length>0?(0,X.jsx)(d,{size:`xs`,c:`dimmed`,children:s.join(` / `)}):null]}),(0,X.jsx)(u,{color:e.enabled?`teal`:`yellow`,variant:`light`,children:e.enabled?`enabled`:`disabled`})]}),(0,X.jsxs)(`dl`,{className:`server-mobile-facts`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Transport`}),(0,X.jsx)(`dd`,{children:Ue(e)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Secrets`}),(0,X.jsx)(`dd`,{children:Qe(e)})]})]}),t?.message?(0,X.jsx)(d,{size:`xs`,c:t.state===`failed`?`red`:`dimmed`,children:t.message}):null,(0,X.jsxs)(n,{gap:`sm`,justify:`space-between`,wrap:`nowrap`,className:`server-mobile-actions`,children:[(0,X.jsx)(g,{label:`Edit ${e.id}`,children:(0,X.jsx)(c,{"aria-label":`Edit ${e.source===`mcpTemplates`?`template`:`static`} ${e.id} server`,size:`lg`,variant:`default`,onClick:()=>void i?.({source:e.source,id:e.id}),children:(0,X.jsx)(U,{size:16})})}),e.source===`mcpServers`?(0,X.jsx)(fn,{server:e,busy:o,action:a,actionLabel:l.label,disabled:o||f,onChange:()=>void r?.(e.id,a)}):null]})]})}function dn({server:e,mutation:t,onServerAction:r,onOpenServerDetail:i}){let a=e.enabled?`disable`:`enable`,o=t?.state===`busy`,s=We(e),l=Ke(e,a),f=!Ge(e)||!l.available;return(0,X.jsxs)(p.Tr,{className:t?`server-action-${t.state}`:void 0,children:[(0,X.jsxs)(p.Td,{children:[(0,X.jsxs)(n,{gap:`xs`,children:[(0,X.jsx)(d,{fw:700,children:e.id}),(0,X.jsx)(u,{size:`xs`,variant:`outline`,children:e.source===`mcpTemplates`?`Template`:`Static`})]}),s.length>0?(0,X.jsx)(d,{size:`xs`,c:`dimmed`,children:s.join(` / `)}):null,t?.message?(0,X.jsx)(d,{size:`xs`,c:t.state===`failed`?`red`:`dimmed`,children:t.message}):null]}),(0,X.jsx)(p.Td,{children:(0,X.jsx)(u,{color:e.enabled?`teal`:`yellow`,variant:`light`,children:e.enabled?`enabled`:`disabled`})}),(0,X.jsx)(p.Td,{children:Ue(e)}),(0,X.jsx)(p.Td,{children:Qe(e)}),(0,X.jsx)(p.Td,{children:(0,X.jsxs)(n,{gap:`sm`,wrap:`nowrap`,justify:`flex-end`,children:[(0,X.jsx)(g,{label:`Edit ${e.id}`,children:(0,X.jsx)(c,{"aria-label":`Edit ${e.source===`mcpTemplates`?`template`:`static`} ${e.id} server`,size:`lg`,variant:`default`,onClick:()=>void i?.({source:e.source,id:e.id}),children:(0,X.jsx)(U,{size:16})})}),e.source===`mcpServers`?(0,X.jsx)(fn,{server:e,busy:o,action:a,actionLabel:l.label,disabled:o||f,onChange:()=>void r?.(e.id,a)}):null]})})]})}function fn({server:e,busy:t,action:r,actionLabel:i,disabled:a,onChange:o}){return(0,X.jsxs)(n,{gap:7,wrap:`nowrap`,className:`server-state-control`,children:[t?(0,X.jsx)(x,{"aria-label":`Updating ${e.id}`,size:14}):null,(0,X.jsx)(T,{"aria-label":i,checked:e.enabled,color:`teal`,disabled:a,onChange:o,styles:{input:{cursor:`pointer`,zIndex:1}}}),(0,X.jsx)(d,{className:`server-state-label`,size:`xs`,fw:700,children:r===`disable`?`Enabled`:`Disabled`})]})}function pn({facts:e,onCopyText:t}){return(0,X.jsx)(Q,{title:`Recent audit facts`,utility:`redacted`,icon:(0,X.jsx)(le,{size:17}),children:e.length===0?(0,X.jsx)(it,{message:`No recent admin audit facts.`}):(0,X.jsx)(O,{gap:`xs`,children:e.map(e=>(0,X.jsx)(Z,{label:e.operationName,value:e.result,meta:e.target?.id??e.operationId??`-`,description:e.timestamp,copyLabel:e.request?.requestId?`requestId`:void 0,copyValue:e.request?.requestId,onCopyText:t},e.operationId??`${e.operationName}-${e.timestamp}`))})})}function mn({model:e,navigate:t}){let{state:r,configuredServers:i}=e,a=(r.status?.audit.facts??[]).filter(e=>e.result===`failed`).length,o=(r.status?.oauth.services??[]).filter(Ve).length,s=Be(r.configuredServers),[c,l]=(0,Y.useState)(null),u=r.status?.runtime;async function f(){await i.create.open()}async function p(e,t){try{await i.copy(e,t),l(`${rt(e)} copied.`)}catch{l(`Could not copy ${rt(e)}. Select the value manually.`)}}return(0,X.jsxs)(`section`,{"aria-labelledby":`runtime-operations-title`,className:`operations-workspace`,children:[(0,X.jsx)(k,{id:`runtime-operations-title`,order:2,className:`sr-only`,children:`Runtime operations`}),(0,X.jsx)(_n,{title:`Overview`,description:`Runtime summaries for ${r.session?.account.username??`operator`} · updated ${r.lastUpdatedAt??`never`}`}),(0,X.jsxs)(`div`,{className:`runtime-status-strip`,role:`status`,"aria-label":`Runtime status and freshness`,children:[(0,X.jsxs)(n,{gap:`xs`,wrap:`nowrap`,className:`runtime-status-main`,children:[(0,X.jsx)(`span`,{className:`runtime-live-dot`}),(0,X.jsx)(d,{fw:800,size:`sm`,children:`Runtime online`}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,className:`truncate`,children:u?.externalUrl??`Local runtime`})]}),(0,X.jsxs)(n,{gap:`lg`,wrap:`nowrap`,className:`runtime-status-facts`,children:[(0,X.jsxs)(d,{size:`xs`,c:`dimmed`,children:[`Version `,(0,X.jsx)(`strong`,{children:u?.runtimeVersion??`unavailable`})]}),(0,X.jsxs)(d,{size:`xs`,c:`dimmed`,children:[`Updated `,(0,X.jsx)(`strong`,{children:r.lastUpdatedAt??`never`})]})]})]}),(0,X.jsxs)(h,{cols:{base:2,sm:4},spacing:`sm`,className:`summary-grid`,children:[(0,X.jsx)(yn,{label:`Enabled servers`,value:ze(r.configuredServers),tone:`good`,icon:`01`,href:`/admin/servers`,onNavigate:()=>t(`servers`)}),(0,X.jsx)(yn,{label:`Disabled servers`,value:s,tone:`warn`,icon:`02`,href:`/admin/servers`,onNavigate:()=>t(`servers`)}),(0,X.jsx)(yn,{label:`OAuth attention`,value:o,tone:o>0?`warn`:`good`,icon:`03`,href:`/admin/oauth`,onNavigate:()=>t(`oauth`)}),(0,X.jsx)(yn,{label:`Failed audits`,value:a,tone:a>0?`bad`:`good`,icon:`04`,href:`/admin/audit`,onNavigate:()=>t(`audit`)})]}),(0,X.jsxs)(`div`,{className:`dashboard-grid`,children:[(0,X.jsxs)(`section`,{className:`attention-panel`,"aria-labelledby":`attention-title`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,mb:`sm`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{className:`eyebrow`,size:`xs`,children:`Triage`}),(0,X.jsx)(k,{id:`attention-title`,order:3,children:`Needs attention`})]}),(0,X.jsx)(m,{leftSection:(0,X.jsx)(K,{size:16}),onClick:()=>void f(),children:`Configure server`})]}),(0,X.jsxs)(O,{gap:0,className:`attention-list`,children:[s>0?(0,X.jsx)(vn,{icon:(0,X.jsx)(se,{size:17}),label:`${s} disabled ${s===1?`server`:`servers`}`,detail:`Review availability before enabling a target.`,href:`/admin/servers`,onNavigate:()=>t(`servers`)}):null,o>0?(0,X.jsx)(vn,{icon:(0,X.jsx)(ve,{size:17}),label:`${o} OAuth ${o===1?`service needs`:`services need`} action`,detail:`Authorization or restart is required.`,href:`/admin/oauth`,onNavigate:()=>t(`oauth`)}):null,a>0?(0,X.jsx)(vn,{icon:(0,X.jsx)(le,{size:17}),label:`${a} failed ${a===1?`operation`:`operations`}`,detail:`Inspect recent redacted audit facts.`,href:`/admin/audit`,onNavigate:()=>t(`audit`)}):null,s===0&&o===0&&a===0?(0,X.jsxs)(`div`,{className:`attention-clear`,children:[(0,X.jsx)(oe,{size:18}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{fw:800,children:`No action required`}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:`Configured servers and runtime services report a clear state.`})]})]}):null]})]}),(0,X.jsx)(Q,{title:`Runtime identity`,utility:`current target`,icon:(0,X.jsx)(`span`,{className:`runtime-live-dot`}),children:u?(0,X.jsxs)(h,{cols:1,spacing:`sm`,className:`runtime-identity-grid`,children:[(0,X.jsx)(Z,{label:`Version`,value:u.runtimeVersion}),(0,X.jsx)(Z,{label:`External URL`,value:u.externalUrl??`-`,copyLabel:`externalUrl`,onCopyText:p,wrapValue:!0}),(0,X.jsx)(Z,{label:`Runtime scope`,value:u.runtimeScopeId,copyLabel:`runtimeScopeId`,onCopyText:p,wrapValue:!0})]}):(0,X.jsx)(d,{c:`dimmed`,children:`Runtime status has not loaded.`})})]}),(0,X.jsx)(bn,{message:c})]})}function hn({model:e}){let{state:t,configuredServers:n}=e,r=n.create.state.status!==`idle`,i=n.edit.state.status!==`list`;return(0,X.jsxs)(`section`,{"aria-labelledby":`servers-workspace-title`,className:`operations-workspace`,children:[(0,X.jsx)(_n,{title:`Configured servers`,titleId:`servers-workspace-title`,description:`${t.configuredServers.length} configured targets · updated ${t.lastUpdatedAt??`never`}`}),(0,X.jsx)(`div`,{className:`inventory-column server-browse-workspace`,hidden:r||i,children:(0,X.jsx)(ln,{state:t,onServerAction:n.mutate,onOpenServerDetail:n.edit.open,onConfigureCustomServer:n.create.open})}),r||i?(0,X.jsx)(`div`,{className:`server-task-workspace`,children:r?(0,X.jsx)(Ft,{model:n.create}):(0,X.jsx)(sn,{model:n.edit})}):null]})}function gn({model:e}){let{state:t,configuredServers:n}=e,[r,i]=(0,Y.useState)(null);async function a(e,t){try{await n.copy(e,t),i(`${rt(e)} copied.`)}catch{i(`Could not copy ${rt(e)}. Select the value manually.`)}}return(0,X.jsxs)(`section`,{"aria-labelledby":`audit-workspace-title`,className:`operations-workspace`,children:[(0,X.jsx)(_n,{title:`Audit trail`,titleId:`audit-workspace-title`,description:`Recent redacted Admin Operations · updated ${t.lastUpdatedAt??`never`}`}),(0,X.jsx)(pn,{facts:t.status?.audit.facts??[],onCopyText:a}),(0,X.jsx)(bn,{message:r})]})}function _n({title:e,titleId:t,description:r}){return(0,X.jsx)(n,{justify:`space-between`,align:`flex-start`,className:`workspace-heading`,children:(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{className:`eyebrow`,size:`xs`,children:`Operator workspace / live`}),(0,X.jsx)(k,{id:t,order:2,children:e}),(0,X.jsx)(d,{c:`dimmed`,size:`sm`,children:r})]})})}function vn({icon:e,label:t,detail:n,href:r,onNavigate:i}){return(0,X.jsxs)(`a`,{className:`attention-row`,href:r,onClick:e=>{xn(e)&&(e.preventDefault(),i())},children:[(0,X.jsx)(`span`,{className:`attention-icon`,children:e}),(0,X.jsxs)(`span`,{className:`attention-copy`,children:[(0,X.jsx)(d,{component:`span`,fw:800,size:`sm`,children:t}),(0,X.jsx)(d,{component:`span`,c:`dimmed`,size:`xs`,children:n})]}),(0,X.jsx)(B,{size:16})]})}function yn({label:e,value:t,tone:r,icon:i,href:a,onNavigate:o}){return(0,X.jsx)(b,{component:`a`,href:a,className:`summary-counter summary-link summary-${r}`,withBorder:!0,onClick:e=>{xn(e)&&(e.preventDefault(),o())},children:(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{size:`xs`,c:`dimmed`,fw:800,tt:`uppercase`,children:e}),(0,X.jsx)(d,{className:`summary-value`,children:t})]}),(0,X.jsxs)(O,{gap:4,align:`flex-end`,children:[(0,X.jsx)(d,{className:`summary-index`,children:i}),(0,X.jsx)(B,{size:15,"aria-hidden":`true`})]})]})})}function bn({message:e}){return(0,X.jsx)(`div`,{"aria-live":`polite`,children:e?(0,X.jsx)(r,{color:e.startsWith(`Could not`)?`red`:`teal`,mt:`sm`,children:e}):null})}function xn(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var Sn=`modulepreload`,Cn=function(e){return`/admin/`+e},wn={},Tn=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}r=o(t.map(t=>{if(t=Cn(t,n),t=s(t),t in wn)return;wn[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Sn,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},En=(0,Y.lazy)(()=>Tn(()=>import(`./admin-AboutRuntimeWorkspace-DH2QC2nJ.js`).then(e=>({default:e.AboutRuntimeWorkspace})),__vite__mapDeps([0,1,2,3,4]))),Dn=(0,Y.lazy)(()=>Tn(()=>import(`./admin-BackendLogsWorkspace-BKavXT9B.js`).then(e=>({default:e.BackendLogsWorkspace})),__vite__mapDeps([5,1,2,3,4,6]))),On=(0,Y.lazy)(()=>Tn(()=>import(`./admin-InstructionTemplatesWorkspace-CvG4EPdZ.js`).then(e=>({default:e.InstructionTemplatesWorkspace})),__vite__mapDeps([7,2,1,3,4,6]))),kn=(0,Y.lazy)(()=>Tn(()=>import(`./admin-OAuthServicesWorkspace-BCGj2hP4.js`).then(e=>({default:e.OAuthServicesWorkspace})),__vite__mapDeps([8,2,1,3,4,6]))),An=(0,Y.lazy)(()=>Tn(()=>import(`./admin-PresetAuthoringWorkspace-BboJVBFl.js`).then(e=>({default:e.PresetAuthoringWorkspace})),__vite__mapDeps([9,2,1,3,4,6])));function jn({session:e}){let{state:t,loginBusy:r,navigation:i}=e,a=i.route,[o,s]=(0,Y.useState)(!1);if(t.view!==`console`)return(0,X.jsxs)(In,{state:t,children:[t.view===`setupRequired`?(0,X.jsx)(Rn,{}):null,t.view===`loading`||t.view===`login`?(0,X.jsx)(zn,{loading:t.view===`loading`||r,onLogin:e.login}):null]});return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`a`,{className:`skip-link`,href:`#admin-main`,children:`Skip to main content`}),(0,X.jsxs)(M,{className:`admin-app-shell`,header:{height:66},navbar:{width:232,breakpoint:`md`,collapsed:{mobile:!o}},padding:0,children:[(0,X.jsx)(M.Header,{"aria-label":`Admin Console`,className:`admin-app-header`,children:(0,X.jsxs)(n,{h:`100%`,px:`lg`,justify:`space-between`,wrap:`nowrap`,className:`command-bar`,children:[(0,X.jsxs)(n,{gap:`sm`,wrap:`nowrap`,children:[(0,X.jsx)(N,{"aria-label":o?`Close operations navigation`:`Open operations navigation`,className:`mobile-navigation-toggle`,color:`var(--admin-ink)`,opened:o,size:`sm`,onClick:()=>s(e=>!e)}),(0,X.jsx)(`div`,{className:`brand-mark`,"aria-hidden":`true`,children:`1`}),(0,X.jsxs)(`div`,{className:`command-brand-copy`,children:[(0,X.jsx)(d,{className:`eyebrow command-eyebrow`,size:`xs`,children:`1MCP control plane`}),(0,X.jsx)(k,{order:1,size:`h4`,children:`Admin Console`})]})]}),(0,X.jsxs)(n,{gap:`xs`,wrap:`nowrap`,className:`global-actions`,children:[(0,X.jsxs)(`div`,{className:`runtime-live`,"aria-label":`Runtime online`,children:[(0,X.jsx)(`span`,{className:`runtime-live-dot`}),(0,X.jsx)(d,{size:`xs`,fw:800,children:`Runtime online`})]}),(0,X.jsx)(u,{className:`global-view-badge`,variant:`light`,color:nt(t),children:tt(t)}),(0,X.jsx)(g,{label:`Refresh runtime data`,children:(0,X.jsx)(c,{"aria-label":`Refresh runtime data`,color:`gray`,size:`lg`,variant:`subtle`,onClick:()=>void e.refresh(),children:(0,X.jsx)(ce,{size:17})})}),(0,X.jsx)(Ln,{}),(0,X.jsxs)(`div`,{className:`operator-identity`,title:t.session?.account.role??`Admin session`,children:[(0,X.jsx)(me,{size:16}),(0,X.jsx)(d,{className:`operator-name`,fw:700,size:`sm`,children:t.session?.account.username??`Operator`})]}),(0,X.jsx)(g,{label:`Log out`,children:(0,X.jsx)(c,{"aria-label":`Log out`,color:`red`,size:`lg`,variant:`subtle`,onClick:()=>void e.logout(),children:(0,X.jsx)(re,{size:17})})})]})]})}),(0,X.jsxs)(M.Navbar,{className:`admin-app-navbar`,"aria-label":`Operations navigation`,children:[(0,X.jsxs)(O,{gap:`lg`,className:`nav-stack`,children:[(0,X.jsxs)(O,{gap:4,children:[(0,X.jsx)(d,{className:`nav-section-label`,children:`Manage`}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(L,{size:17}),label:`Overview`,href:`/admin`,active:a===`dashboard`,onNavigate:()=>l(`dashboard`)}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(z,{size:17}),label:`Server inventory`,href:`/admin/servers`,active:a===`servers`,onNavigate:()=>l(`servers`)}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(pe,{size:17}),label:`Presets`,href:`/admin/presets`,active:a===`presets`,onNavigate:()=>l(`presets`)}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(_e,{size:17}),label:`Instructions`,href:`/admin/instructions`,active:a===`instructions`,onNavigate:()=>l(`instructions`)})]}),(0,X.jsxs)(O,{gap:4,children:[(0,X.jsx)(d,{className:`nav-section-label`,children:`Observe`}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(W,{size:17}),label:`OAuth services`,href:`/admin/oauth`,active:a===`oauth`,onNavigate:()=>l(`oauth`)}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(R,{size:17}),label:`Audit trail`,href:`/admin/audit`,active:a===`audit`,onNavigate:()=>l(`audit`)}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(ue,{size:17}),label:`Backend logs`,href:`/admin/logs`,active:a===`logs`,onNavigate:()=>l(`logs`)})]}),(0,X.jsxs)(O,{gap:4,children:[(0,X.jsx)(d,{className:`nav-section-label`,children:`System`}),(0,X.jsx)(Pn,{icon:(0,X.jsx)(H,{size:17}),label:`About`,href:`/admin/about`,active:a===`about`,onNavigate:()=>l(`about`)})]})]}),(0,X.jsxs)(O,{gap:`xs`,className:`nav-runtime-card`,children:[(0,X.jsx)(d,{className:`nav-section-label`,children:`Runtime target`}),(0,X.jsx)(d,{fw:800,className:`truncate`,children:$e(t.status?.runtime)}),(0,X.jsx)(d,{size:`xs`,c:`dimmed`,className:`truncate`,children:et(t.status?.runtime)}),(0,X.jsx)(d,{size:`xs`,className:`nav-scope truncate`,children:t.status?.runtime.runtimeScopeId??`scope unavailable`})]})]}),(0,X.jsx)(M.Main,{id:`admin-main`,className:`admin-shell-main`,children:(0,X.jsxs)(O,{gap:`md`,className:`admin-console`,children:[(0,X.jsx)(Bn,{state:t}),(0,X.jsx)(Y.Suspense,{fallback:(0,X.jsx)(Mn,{}),children:(0,X.jsx)(Nn,{session:e})})]})})]})]});function l(e){i.navigate(e),s(!1)}}function Mn(){return(0,X.jsx)(b,{className:`operations-panel`,role:`status`,withBorder:!0,children:(0,X.jsx)(d,{c:`dimmed`,children:`Loading workspace...`})})}function Nn({session:e}){let{state:t,navigation:n,configuredServers:r,presets:i}=e,a={state:t,logout:e.logout,refresh:e.refresh,configuredServers:r};switch(n.route){case`servers`:return(0,X.jsx)(hn,{model:a});case`oauth`:return(0,X.jsx)(kn,{model:a,oauth:e.oauth,configureServer:a.configuredServers.create.open});case`audit`:return(0,X.jsx)(gn,{model:a});case`presets`:return(0,X.jsx)(An,{model:{...i,targets:i.targets.length>0?i.targets:t.configuredServers.map(e=>({name:e.id,tags:e.tags,enabled:e.enabled}))},runtimeScopeId:t.status?.runtime.runtimeScopeId});case`instructions`:return(0,X.jsx)(On,{model:e.instructions,runtimeScopeId:t.status?.runtime.runtimeScopeId});case`logs`:return(0,X.jsx)(Dn,{logs:e.logs,configureServer:a.configuredServers.create.open});case`about`:return(0,X.jsx)(En,{state:t});case`dashboard`:return(0,X.jsx)(mn,{model:a,navigate:n.navigate})}}function Pn({icon:e,label:t,href:n,active:r=!1,onNavigate:i}){return(0,X.jsxs)(`a`,{href:n,"aria-current":r?`page`:void 0,className:`nav-item${r?` nav-item-active`:``}`,onClick:e=>{Fn(e)&&(e.preventDefault(),i?.())},children:[e,(0,X.jsx)(d,{size:`sm`,fw:700,children:t})]})}function Fn(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function In({state:e,children:t}){return(0,X.jsxs)(`main`,{className:`admin-auth-shell`,"aria-label":`Admin authentication`,children:[(0,X.jsx)(`div`,{className:`auth-theme-control`,children:(0,X.jsx)(Ln,{})}),(0,X.jsxs)(O,{gap:`md`,className:`admin-auth-card`,children:[(0,X.jsx)(Bn,{state:e}),t]})]})}function Ln(){let{colorScheme:e,setColorScheme:t}=l(),n=[{value:`auto`,label:`System`,icon:(0,X.jsx)(ye,{size:16})},{value:`light`,label:`Light`,icon:(0,X.jsx)(ie,{size:16})},{value:`dark`,label:`Dark`,icon:(0,X.jsx)(ge,{size:16})}];return(0,X.jsxs)(v,{position:`bottom-end`,shadow:`md`,width:170,children:[(0,X.jsx)(v.Target,{children:(0,X.jsx)(c,{"aria-label":`Choose color theme`,color:`gray`,size:`lg`,title:`Color theme`,variant:`subtle`,children:(0,X.jsx)(ne,{size:17})})}),(0,X.jsxs)(v.Dropdown,{children:[(0,X.jsx)(v.Label,{children:`Color theme`}),n.map(n=>(0,X.jsx)(v.Item,{"aria-label":`${n.label} theme${e===n.value?`, selected`:``}`,leftSection:n.icon,rightSection:e===n.value?(0,X.jsx)(ae,{size:14}):null,onClick:()=>t(n.value),children:n.label},n.value))]})]})}function Rn(){return(0,X.jsx)(b,{component:`section`,className:`operations-panel`,"aria-labelledby":`setup-required-title`,withBorder:!0,children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{className:`eyebrow`,size:`xs`,children:`Runtime gate`}),(0,X.jsx)(k,{id:`setup-required-title`,order:2,children:`Setup required`})]}),(0,X.jsx)(u,{color:`yellow`,variant:`filled`,children:`No Admin Account`})]}),(0,X.jsx)(d,{c:`dimmed`,children:`Run CLI bootstrap from the runtime host, then refresh this page. The browser setup page does not create admin accounts.`}),(0,X.jsx)(P,{block:!0,children:`1mcp admin bootstrap --username operator --password 'use-a-long-random-password'`})]})})}function zn({loading:e,onLogin:t}){let[r,i]=(0,Y.useState)(``),[a,o]=(0,Y.useState)(``),[s,c]=(0,Y.useState)(!1);return(0,X.jsx)(b,{component:`section`,className:`login-panel`,"aria-labelledby":`login-title`,withBorder:!0,children:(0,X.jsx)(`form`,{onSubmit:n=>{n.preventDefault(),e||t?.({username:r,password:a})},children:(0,X.jsxs)(O,{gap:`sm`,children:[(0,X.jsxs)(n,{justify:`space-between`,align:`flex-start`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(d,{className:`eyebrow`,size:`xs`,children:`Admin Session`}),(0,X.jsx)(k,{id:`login-title`,order:2,children:`Operator login`})]}),(0,X.jsx)(u,{variant:`light`,children:e?`Checking session`:`Login required`})]}),(0,X.jsx)(w,{label:`Username`,autoComplete:`username`,disabled:e,value:r,onChange:e=>i(e.currentTarget.value),required:!0}),(0,X.jsx)(E,{label:`Password`,autoComplete:`current-password`,disabled:e,value:a,onChange:e=>o(e.currentTarget.value),visible:s,onVisibilityChange:()=>c(e=>!e),visibilityToggleButtonProps:{"aria-label":s?`Hide password`:`Show password`,"aria-pressed":s,tabIndex:0,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),c(e=>!e))}},required:!0}),(0,X.jsx)(m,{type:`submit`,loading:e,disabled:e,children:e?`Checking`:`Log in`})]})})})}function Bn({state:e}){let t=e.banner??(e.error?{kind:`error`,message:e.error}:null);return t?(0,X.jsx)(r,{color:t.kind===`error`?`red`:`teal`,role:t.kind===`error`?`alert`:`status`,children:t.message}):null}var Vn=e(F(),1),Hn=(0,Y.createContext)(null);function Un({children:e}){let[r,i]=(0,Y.useState)(null),a=(0,Y.useRef)(null),o=(0,Y.useRef)([]),s=(0,Y.useRef)(new WeakSet),c=(0,Y.useRef)(!1),l=(0,Y.useRef)(null),u=(0,Y.useRef)(null),p=(0,Y.useCallback)(e=>new Promise(t=>{let n={...e,resolve:t};if(a.current){o.current.push(n);return}u.current=document.activeElement instanceof HTMLElement?document.activeElement:null,a.current=n,(0,Vn.flushSync)(()=>i(n))}),[]),h=(0,Y.useCallback)(e=>{let t=a.current;if(!t||c.current||s.current.has(t))return;c.current=!0,s.current.add(t),t.resolve(e);let n=o.current.shift()??null;a.current=n,(0,Vn.flushSync)(()=>i(n)),window.setTimeout(()=>{c.current=!1,n?l.current?.focus():u.current?.focus()},0)},[]),g=(0,Y.useMemo)(()=>p,[p]);return(0,Y.useEffect)(()=>{r&&l.current?.focus()},[r]),(0,X.jsxs)(Hn.Provider,{value:g,children:[e,r?(0,X.jsx)(`div`,{className:`confirmation-overlay`,role:`presentation`,children:(0,X.jsx)(t,{active:!0,children:(0,X.jsx)(b,{className:`confirmation-dialog`,withBorder:!0,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`admin-confirmation-title`,"aria-describedby":`admin-confirmation-message`,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),h(!1))},children:(0,X.jsxs)(O,{gap:`md`,children:[(0,X.jsx)(k,{id:`admin-confirmation-title`,order:3,children:r.title}),(0,X.jsx)(d,{id:`admin-confirmation-message`,children:r.message}),r.details?.length?(0,X.jsx)(f,{spacing:`xs`,size:`sm`,children:r.details.map(e=>(0,X.jsxs)(f.Item,{children:[(0,X.jsxs)(d,{span:!0,fw:700,children:[e.label,`:`,` `]}),(0,X.jsx)(d,{span:!0,children:e.value})]},`${e.label}:${e.value}`))}):null,(0,X.jsxs)(n,{justify:`flex-end`,children:[(0,X.jsx)(m,{ref:l,variant:`default`,onClick:()=>h(!1),children:r.cancelLabel??`Cancel`}),(0,X.jsx)(m,{color:r.tone===`danger`?`red`:void 0,onClick:()=>h(!0),children:r.confirmLabel??`Confirm`})]})]})})})}):null]})}function Wn(){let e=(0,Y.useContext)(Hn);if(!e)throw Error(`useConfirmationDialog must be used within ConfirmationDialogProvider`);return e}var Gn={identity:``,variants:{initialization:``,cli:``}};function Kn({api:e,active:t,csrfToken:n,confirm:r,onUnauthenticated:i}){let[a,o]=(0,Y.useState)([]),[s,c]=(0,Y.useState)(),[l,u]=(0,Y.useState)(!1),[d,f]=(0,Y.useState)(``),[p,m]=(0,Y.useState)(!1),[h,g]=(0,Y.useState)({}),[_,v]=(0,Y.useState)(),[y,b]=(0,Y.useState)(Gn),[x,S]=(0,Y.useState)(`initialize`),[C,w]=(0,Y.useState)({mode:`all`}),[T,E]=(0,Y.useState)(``),[D,O]=(0,Y.useState)(null),[k,A]=(0,Y.useState)(null),[j,M]=(0,Y.useState)(!1),[N,P]=(0,Y.useState)(!1),[ee,F]=(0,Y.useState)(null),[I,te]=(0,Y.useState)(null),L=(0,Y.useRef)(!1),R=(0,Y.useRef)(0),z=(0,Y.useRef)(n),B=(0,Y.useRef)(),V=(0,Y.useCallback)((e,t)=>{if(e instanceof q&&e.failure.kind===`unauthenticated`){L.current=!1,i?.(e.failure.adminStatus);return}F(Jn(e,t))},[i]),H=(0,Y.useMemo)(()=>a.find(e=>e.identity===_),[a,_]),U=H?H.identity!==y.identity||JSON.stringify(H.variants)!==JSON.stringify(y.variants):!!(y.identity||y.variants.initialization||y.variants.cli),ne=(0,Y.useCallback)(()=>{B.current=void 0,O(e=>(e&&M(!0),null)),A(null)},[]),re=(0,Y.useCallback)(async()=>{if(!n)return;let t=R.current,r=n;P(!0),F(null);try{let i=await e.listInstructionTemplates();if(t!==R.current||r!==n)return;o(i.templates),c(i.activeIdentity),u(i.selectionExplicit),f(i.configFingerprint),m(i.legacyImportAvailable),g(i.renderFailures),L.current=!0}catch(e){if(t!==R.current||r!==n)return;V(e,`Instruction templates could not be loaded.`)}finally{t===R.current&&r===n&&P(!1)}},[e,n,V]);(0,Y.useEffect)(()=>{z.current!==n&&(z.current=n,R.current+=1,L.current=!1),!n&&(o([]),v(void 0),b(Gn),O(null),A(null),P(!1))},[n]),(0,Y.useEffect)(()=>{t&&n&&!L.current&&re()},[t,n,re]);let W=(0,Y.useCallback)(e=>{v(e);let t=a.find(t=>t.identity===e);b(t?{identity:t.identity,variants:{...t.variants}}:Gn),O(null),A(null),M(!1),F(null)},[a]),G=(0,Y.useCallback)(async(e,t)=>{if(!n)return!1;let r=B.current?.signature===e?B.current:{signature:e,idempotencyKey:Ee(e,y.identity)};B.current=r,P(!0),F(null);try{let e=await t(r.idempotencyKey);return te(e.result.reload?.status===`failed`?e.result.reload.error?`Configuration was written, but runtime reload failed: ${e.result.reload.error}`:`Configuration was written, but runtime reload failed. Inspect runtime health before continuing.`:null),B.current=void 0,L.current=!1,await re(),!0}catch(e){return V(e,`Instruction template operation failed.`),!1}finally{P(!1)}},[n,y.identity,re,V]);return{items:a,activeIdentity:s,selectionExplicit:l,configFingerprint:d,legacyAvailable:p,renderFailures:h,selectedIdentity:_,draft:y,surface:x,selection:C,requestContext:T,preview:D,activationValidation:k,previewStale:j,dirty:U,busy:N,error:ee,reloadWarning:I,select:W,newDraft:()=>W(void 0),changeIdentity:e=>{b(t=>({...t,identity:e})),ne()},changeVariant:(e,t)=>{let n=e===`initialize`?`initialization`:`cli`;b(e=>({...e,variants:{...e.variants,[n]:t}})),ne()},changeSurface:e=>{S(e),ne()},changeSelection:e=>{w(e),ne()},changeRequestContext:e=>{E(e),ne()},load:re,async saveDraft(){if(!n||!y.identity.trim())return!1;let t=await G(`save:${_?`update`:`create`}:${d}:${JSON.stringify(y)}`,t=>e.saveInstructionTemplate({action:_?`update`:`create`,draft:y,expectedConfigFingerprint:d,csrfToken:n,idempotencyKey:t}));return t&&v(y.identity),t},async previewDraft(){if(!n||!y.identity)return;let t=R.current,r=n;P(!0),F(null);try{let i;T.trim()&&(i=qn(JSON.parse(T)));let a=await e.previewInstructionTemplate({identity:y.identity,surface:x,selection:C,...i?{requestContext:i}:{},csrfToken:n});if(t!==R.current||r!==n)return;O(a),M(!1)}catch(e){if(t!==R.current||r!==n)return;V(e,`Instruction template preview failed.`)}finally{t===R.current&&r===n&&P(!1)}},async validateDraft(){if(!n||!_||U)return;let t=R.current,r=n;P(!0),F(null);try{let i=await e.validateInstructionTemplate({identity:_,expectedConfigFingerprint:d,csrfToken:n});if(t!==R.current||r!==n)return;A(i)}catch(e){if(t!==R.current||r!==n)return;V(e,`Instruction template validation failed.`)}finally{t===R.current&&r===n&&P(!1)}},async activate(){!n||!k||k.identity!==y.identity||await G(`activate:${y.identity}:${k.expectedConfigFingerprint}:${k.previewFingerprint}`,t=>e.activateInstructionTemplate({identity:y.identity,expectedConfigFingerprint:k.expectedConfigFingerprint,previewFingerprint:k.previewFingerprint,csrfToken:n,idempotencyKey:t}))&&(O(null),A(null))},async clone(t){!n||!_||await G(`clone:${_}:${t}:${d}`,r=>e.cloneInstructionTemplate({sourceIdentity:_,identity:t,expectedConfigFingerprint:d,csrfToken:n,idempotencyKey:r}))},async importLegacy(t){n&&await G(`import:${t}:${d}`,r=>e.importLegacyInstructionTemplate({identity:t,expectedConfigFingerprint:d,csrfToken:n,idempotencyKey:r}))},async deleteSelected(){if(!(!n||!_||H?.protected))try{let t=await e.previewInstructionTemplateDelete({identity:_,expectedConfigFingerprint:d,csrfToken:n});if(!t.allowed){F(t.reason===`active_conflict`?`Activate another template before deleting this one.`:`This template cannot be deleted.`);return}if(!await r({title:`Delete ${t.identity}?`,message:`This permanently removes the managed template from the current Runtime Scope.`,confirmLabel:`Delete template`,tone:`danger`,details:[{label:`Template`,value:t.identity},{label:`Reason`,value:t.reason??`Template is inactive and not protected`}]}))return;await G(`delete:${_}:${t.expectedConfigFingerprint}:${t.previewFingerprint}`,r=>e.deleteInstructionTemplate({identity:_,expectedConfigFingerprint:t.expectedConfigFingerprint,previewFingerprint:t.previewFingerprint,csrfToken:n,idempotencyKey:r}))&&W(void 0)}catch(e){V(e,`Instruction template deletion could not be prepared.`)}}}}function qn(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Request context must include project, user, and environment objects.`);let t=e;for(let e of[`project`,`user`,`environment`]){let n=t[e];if(!n||typeof n!=`object`||Array.isArray(n))throw Error(`Request context must include project, user, and environment objects.`)}return t}function Jn(e,t){return e instanceof q?e.failure.message:e instanceof Error?e.message:t}function Yn(){return{view:`loading`,session:null,status:null,configuredServers:[],serverMutations:{},banner:null,error:null,lastUpdatedAt:null}}function Xn(e,t){switch(t.type){case`sessionLoaded`:return{...e,view:`console`,session:t.session,banner:null,error:null};case`sessionUnauthenticated`:return{...Yn(),view:t.adminStatus===`setupRequired`?`setupRequired`:`login`,session:null};case`refreshSucceeded`:return{...e,view:`console`,status:t.status,configuredServers:t.configuredServers,lastUpdatedAt:t.updatedAt,banner:e.banner?.kind===`error`?null:e.banner,error:null};case`refreshFailed`:case`loginFailed`:return{...e,error:t.message,banner:{kind:`error`,message:t.message}};case`logoutSucceeded`:return{...Yn(),view:`login`};case`mutationStarted`:return Zn(e,t.serverId,{state:`busy`,action:t.action});case`mutationSucceeded`:return Zn(e,t.serverId,{state:`succeeded`,action:t.action,message:`Server ${t.action} completed.`});case`mutationFailed`:return Zn(e,t.serverId,{state:`failed`,action:t.action,message:t.message});case`clearBanner`:return{...e,banner:null,error:null}}}function Zn(e,t,n){return{...e,serverMutations:{...e.serverMutations,[t]:n},banner:n.state===`failed`?{kind:`error`,message:n.message??``}:e.banner}}var Qn=5e3,$n=6e4;function er(e){return e===`visible`?Qn:$n}function tr(e){return e.view===`console`&&!!e.session?.csrfToken}var nr=5e3,rr=512*1024,ir={connection:`idle`,sources:[],selectedSourceId:null,entries:[],unread:{},cursors:{},selectionLoading:!1,selectionError:null};function ar(e){let[t,n]=(0,Y.useState)(ir),r=(0,Y.useRef)(t),i=(0,Y.useRef)([]),a=(0,Y.useRef)(e.onUnauthenticated),o=(0,Y.useRef)(0);(0,Y.useEffect)(()=>{r.current=t},[t]),(0,Y.useEffect)(()=>{a.current=e.onUnauthenticated},[e.onUnauthenticated]);let s=(0,Y.useCallback)(e=>{i.current=e.sources,n(t=>{let n=e.sources.some(e=>e.id===t.selectedSourceId)?t.selectedSourceId:e.sources[0]?.id??null;return{connection:`active`,sources:e.sources,selectedSourceId:n,entries:n?fr(e.entries.filter(e=>e.sourceId===n)):[],unread:dr(e,n),cursors:cr(e.entries),selectionLoading:!1,selectionError:null}})},[]),c=(0,Y.useCallback)(async t=>{let r=++o.current;n(e=>({...e,selectedSourceId:t,entries:[],unread:{...e.unread,[t]:0},selectionLoading:!0,selectionError:null}));try{let i=await e.api.getBackendLogSnapshot(t);if(o.current!==r)return;n(e=>{if(e.selectedSourceId!==t)return e;let n=i.entries.filter(e=>e.sourceId===t),r=e.entries.filter(e=>e.sequence>i.sequence);return{...e,entries:fr([...n,...r]),selectionLoading:!1,selectionError:null}})}catch(e){if(o.current!==r)return;if(e instanceof q&&e.failure.kind===`unauthenticated`){a.current();return}n(e=>e.selectedSourceId===t?{...e,selectionLoading:!1,selectionError:`Failed to load retained backend logs. Live entries will continue to appear.`}:e)}},[e.api]);(0,Y.useEffect)(()=>{if(!e.active||!e.authenticated){o.current+=1,i.current=[],n(ir);return}return n(e=>({...e,connection:`loading`})),e.api.openBackendLogStream({onSnapshot:s,onGap:s,onEntry:e=>{i.current.some(t=>t.id===e.sourceId)||(i.current=[...i.current,sr(e)]),n(t=>or(t,e))},onSources:e=>{i.current=e;let t=r.current,a=e.some(e=>e.id===t.selectedSourceId)?t.selectedSourceId:e[0]?.id??null;n(t=>lr(t,e,a)),a&&a!==t.selectedSourceId&&c(a)},onSourceUpdate:e=>{let t=r.current,a=e.removed?i.current.filter(t=>t.id!==e.sourceId):[...i.current.filter(t=>t.id!==e.sourceId),e.source].sort((e,t)=>e.id.localeCompare(t.id));i.current=a;let o=a.some(e=>e.id===t.selectedSourceId)?t.selectedSourceId:a[0]?.id??null;n(e=>lr(e,a,o)),o&&o!==t.selectedSourceId&&c(o)},onOpen:()=>n(e=>({...e,connection:e.sources.length?`active`:`loading`})),onError:()=>n(e=>({...e,connection:`reconnecting`}))})},[s,e.active,e.api,e.authenticated,c]);let l=(0,Y.useCallback)(e=>c(e),[c]);return{...t,select:l}}function or(e,t){let n=e.sources.some(e=>e.id===t.sourceId)?e.sources:[...e.sources,sr(t)];return e.selectedSourceId===null?{...e,connection:`active`,sources:n,selectedSourceId:t.sourceId,entries:[t],unread:{...e.unread,[t.sourceId]:0},cursors:{...e.cursors,[t.sourceId]:t.sequence},selectionLoading:!1,selectionError:null}:t.sourceId===e.selectedSourceId?{...e,connection:`active`,sources:n,entries:fr([...e.entries,t]),cursors:{...e.cursors,[t.sourceId]:t.sequence}}:{...e,connection:`active`,sources:n,unread:{...e.unread,[t.sourceId]:(e.unread[t.sourceId]??0)+1},cursors:{...e.cursors,[t.sourceId]:t.sequence}}}function sr(e){return{id:e.sourceId,canonicalName:e.canonicalName,displayName:e.displayName,kind:e.sourceKind,capture:`managed`,lifecycle:`active`}}function cr(e){let t={};for(let n of e)t[n.sourceId]=n.sequence;return t}function lr(e,t,n){let r=new Set(t.map(e=>e.id)),i=n!==e.selectedSourceId;return{...e,sources:t,selectedSourceId:n,entries:i?[]:e.entries,unread:ur(e.unread,r),cursors:ur(e.cursors,r),selectionLoading:i&&n!==null,selectionError:i?null:e.selectionError}}function ur(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>t.has(e)))}function dr(e,t){let n={};for(let r of e.entries)r.sourceId!==t&&(n[r.sourceId]=(n[r.sourceId]??0)+1);return n}function fr(e){let t=0,n=[];for(let r=e.length-1;r>=0&&n.length<nr;r--){let i=e[r];if(t+=i.content.length,t>rr&&n.length>0)break;n.push(i)}return n.reverse()}var pr={access_denied:`OAuth authorization was denied.`,missing_code:`The OAuth provider callback did not include an authorization code.`,callback_failed:`The runtime could not complete the OAuth provider callback.`,runtime_unavailable:`The OAuth runtime became unavailable during the callback.`};function mr(e){if(e instanceof q)return e.failure.message;throw e}function hr({api:e,documentRef:t=document,windowRef:n=window,nowLabel:r}){return(0,X.jsx)(Un,{children:(0,X.jsx)(gr,{api:e,documentRef:t,windowRef:n,nowLabel:r})})}function gr({api:e,documentRef:t,windowRef:n,nowLabel:r}){return(0,X.jsx)(jn,{session:_r({api:e,documentRef:t,windowRef:n,nowLabel:r,confirm:Wn()})})}function _r({api:e,documentRef:t,windowRef:n,nowLabel:r,confirm:i}){let[a,o]=(0,Y.useState)(Yn),[s,c]=(0,Y.useState)(!1),[l,u]=(0,Y.useState)(()=>yr(n.location?.pathname??`/admin`)),[d,f]=(0,Y.useState)(null),[p]=(0,Y.useState)(()=>{let e=xr(n.location?.search??``);return e&&n.history?.replaceState(null,``,`/admin/oauth`),e}),[m,h]=(0,Y.useState)(null),[g,_]=(0,Y.useState)([]),[v,y]=(0,Y.useState)([]),[b,x]=(0,Y.useState)(``),[S,C]=(0,Y.useState)(!1),w=(0,Y.useRef)(a),T=(0,Y.useRef)(null),E=(0,Y.useRef)(),D=(0,Y.useRef)(),O=(0,Y.useRef)(!1),k=(0,Y.useRef)(!1),A=(0,Y.useRef)(!1),j=(0,Y.useRef)(0),M=(0,Y.useCallback)(()=>r?.()??new Date().toLocaleTimeString(),[r]),N=(0,Y.useCallback)(e=>{let t=Xn(w.current,e);w.current=t,o(t)},[]);(0,Y.useEffect)(()=>{w.current=a},[a]);let P=(0,Y.useCallback)(()=>{T.current!==null&&(n.clearTimeout(T.current),T.current=null)},[n]),ee=(0,Y.useCallback)(()=>{j.current+=1,A.current=!1,f(null),h(null)},[]),F=(0,Y.useCallback)(e=>{P(),ee(),N({type:`sessionUnauthenticated`,adminStatus:e})},[P,N,ee]),I=(0,Y.useCallback)(e=>{let t=e instanceof q?e.failure:null;return t?.kind===`unauthenticated`?(F(t.adminStatus),!0):!1},[F]),te=(0,Y.useMemo)(()=>({pathname:()=>n.location?.pathname??`/admin`,push:e=>n.history?.pushState(null,``,e),replace:e=>n.history?.replaceState(null,``,e),confirm:i,subscribePopState:e=>(n.addEventListener?.(`popstate`,e),()=>n.removeEventListener?.(`popstate`,e))}),[i,n]),L=(0,Y.useCallback)(e=>{u(yr(e))},[]),R=Jt({api:e,session:a.session,browser:te,onUnauthenticated:F,onApplied:()=>E.current?.(),onPathCommitted:L}),z=wt({api:e,session:a.session,browser:te,onUnauthenticated:F,onCreated:()=>D.current?.(),onOpenCreated:R.open,onPathCommitted:L}),B=ar({api:e,active:l===`logs`,authenticated:!!a.session,onUnauthenticated:()=>F(`loginRequired`)}),V=Kn({api:e,active:l===`instructions`,csrfToken:a.session?.csrfToken,confirm:i,onUnauthenticated:F}),H=(0,Y.useCallback)(e=>w.current.session?.csrfToken===e,[]),U=(0,Y.useCallback)(async()=>{if(w.current.session){C(!0);try{let t=await e.listPresets();_(t.presets),y(t.targets??[]),x(t.revision)}finally{C(!1)}}},[e]);(0,Y.useEffect)(()=>{l===`presets`&&a.session&&U()},[U,l,a.session]);let ne=(0,Y.useCallback)(async(t,n)=>{let r=w.current.session?.csrfToken;if(!r)throw Error(`admin_session_required`);return e.previewPreset({draft:t,sourceName:n,csrfToken:r})},[e]),re=(0,Y.useCallback)(async t=>{if(O.current)return!1;O.current=!0;try{let n=w.current.session?.csrfToken;return!n||!await i({title:`${vr(t.action)} ${t.preview.draft.name}?`,message:`The preview must still match the current preset store when this change is saved.`,confirmLabel:`${vr(t.action)} preset`,details:[{label:`Preset`,value:t.preview.draft.name},{label:`Current matches`,value:String(t.preview.matchCount)},...t.preview.matchCount===0?[{label:`Attention`,value:`This preset currently matches no configured servers.`}]:[]]})?!1:(await e.mutatePreset({action:t.action,sourceName:t.sourceName,draft:t.preview.draft,revision:t.preview.revision,previewFingerprint:t.preview.previewFingerprint,confirmations:{previewConfirmed:t.preview.previewFingerprint,...t.preview.matchCount===0?{zeroMatchConfirmed:!0}:{}},csrfToken:n}),await U(),!0)}finally{O.current=!1}},[e,i,U]),W=(0,Y.useCallback)(async t=>{if(!k.current){k.current=!0;try{let n=w.current.session?.csrfToken;if(!n)return;let r=await e.previewPresetDelete({name:t,revision:b,csrfToken:n}),a=r.matches.filter(e=>e.matched).map(e=>e.name);if(!await i({title:`Delete ${t}?`,message:`This removes the preset from the current Runtime Scope.`,confirmLabel:`Delete preset`,tone:`danger`,details:[{label:`Preset`,value:t},{label:`Current matches`,value:a.join(`, `)||`none`},{label:`Consequence`,value:r.consequence}]}))return;await e.deletePreset({name:t,revision:b,previewFingerprint:r.previewFingerprint,csrfToken:n}),await U()}finally{k.current=!1}}},[e,i,U,b]),G=(0,Y.useCallback)(async e=>{let t=br(e);if(z.state.status!==`idle`){if(!await z.close(t))return;u(e);return}await R.close(t)&&u(e)},[z,R]),K=(0,Y.useCallback)(async(t,n)=>{let r=n??w.current.session;if(!r)return;let i=r.csrfToken;try{let[t,n]=await Promise.all([e.getStatus(),e.listConfiguredServers()]);if(!H(i))return;N({type:`refreshSucceeded`,status:t,configuredServers:n,updatedAt:M()})}catch(e){if(!H(i))return;I(e)||N({type:`refreshFailed`,message:`${t}${mr(e)}`})}},[e,N,M,I,H]);E.current=()=>K(``),D.current=()=>K(``);let ie=(0,Y.useCallback)(()=>{P(),tr(w.current)&&(T.current=n.setTimeout(()=>{K(``).finally(ie)},er(t.visibilityState)))},[P,t,K,n]),ae=(0,Y.useCallback)(async()=>{try{let t=await e.getSession();if(!t.authenticated){F(t.adminStatus??`loginRequired`);return}N({type:`sessionLoaded`,session:t}),await K(`Session loaded, but refresh failed: `,t)}catch(e){I(e)||N({type:`refreshFailed`,message:`Session check failed: ${mr(e)}`})}finally{ie()}},[e,N,I,F,K,ie]),oe=(0,Y.useCallback)(async t=>{if(!s){c(!0);try{let n=await e.login(t);N({type:`sessionLoaded`,session:n}),await K(`Login succeeded, but refresh failed: `,n)}catch(e){N({type:`loginFailed`,message:`Login failed: ${mr(e)}`})}finally{c(!1),ie()}}},[e,N,s,K,ie]),se=(0,Y.useCallback)(async(t,n)=>{let r=w.current.session;if(!r)return;let i=r.csrfToken;N({type:`mutationStarted`,serverId:t,action:n});try{if(await e.setConfiguredServerEnabled({name:t,enabled:n===`enable`,csrfToken:i}),!H(i))return;N({type:`mutationSucceeded`,serverId:t,action:n}),await K(``)}catch(e){if(!H(i))return;I(e)||N({type:`mutationFailed`,serverId:t,action:n,message:`Server ${n} failed: ${mr(e)}`})}},[e,N,I,H,K]),ce=(0,Y.useCallback)(async(t,r)=>{if(A.current)return;let i=w.current.session;if(!i)return;A.current=!0;let a=j.current+1;j.current=a;let o=i.csrfToken;f({serviceId:t,action:r}),h(null);try{let i=r===`authorize`?await e.authorizeOAuthService({serviceId:t,csrfToken:o}):await e.restartOAuthService({serviceId:t,csrfToken:o});if(!H(o))return;h({kind:`success`,message:`${r===`authorize`?`Authorization`:`Authorization restart`} started. Opening the provider.`}),n.location?.assign(i.redirectUrl)}catch(e){if(!H(o))return;I(e)||h({kind:`error`,message:mr(e)})}finally{j.current===a&&(A.current=!1,H(o)&&f(null))}},[e,I,H,n]),le=(0,Y.useCallback)(async()=>{let t=w.current.session?.csrfToken;try{t&&await e.logout(t)}finally{P(),ee(),N({type:`logoutSucceeded`})}},[e,P,N,ee]),ue=(0,Y.useCallback)(async(e,t)=>{if(!navigator.clipboard?.writeText)throw Error(`clipboard_unavailable`);await navigator.clipboard.writeText(t)},[]);return(0,Y.useEffect)(()=>(ae(),P),[P,ae]),(0,Y.useEffect)(()=>{let e=()=>ie();return t.addEventListener?.(`visibilitychange`,e),()=>t.removeEventListener?.(`visibilitychange`,e)},[t,ie]),{state:a,loginBusy:s,login:oe,logout:le,refresh:()=>K(`Manual refresh failed: `),navigation:{route:l,navigate:G},configuredServers:{create:{...z,open:async()=>{if(z.state.status!==`idle`){await z.open();return}await R.close(`/admin/servers`)&&await z.open()}},edit:R,mutate:se,copy:ue},oauth:{busy:d,callbackFeedback:p,operationFeedback:m,operate:ce},logs:B,presets:{items:g,targets:v,revision:b,busy:S,load:U,preview:ne,save:re,delete:W},instructions:V}}function vr(e){return e===`create`?`Create`:e===`duplicate`?`Duplicate`:`Update`}function yr(e){return e===`/admin/servers`||e.startsWith(`/admin/servers/`)?`servers`:e===`/admin/oauth`||e.startsWith(`/admin/oauth/`)?`oauth`:e===`/admin/audit`||e.startsWith(`/admin/audit/`)?`audit`:e.startsWith(`/admin/presets`)?`presets`:e.startsWith(`/admin/instructions`)?`instructions`:e.startsWith(`/admin/logs`)?`logs`:e.startsWith(`/admin/about`)?`about`:`dashboard`}function br(e){return e===`dashboard`?`/admin`:`/admin/${e}`}function xr(e){let t=new URLSearchParams(e);if(t.get(`success`)===`1`)return{kind:`success`,message:`OAuth authorization completed.`};let n=t.get(`error`);return n?{kind:`error`,message:Object.hasOwn(pr,n)?pr[n]:`OAuth authorization did not complete.`}:null}var Sr=s({primaryColor:`conduit`,defaultRadius:`sm`,fontFamily:`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,headings:{fontFamily:`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,fontWeight:`760`},defaultGradient:{from:`conduit.7`,to:`conduit.5`,deg:90},colors:{conduit:[`#eef7f4`,`#d7eee7`,`#acdccc`,`#7fc8ae`,`#59b393`,`#3a9d7b`,`#2c7f65`,`#246653`,`#1d5244`,`#123229`]}}),Cr=document.querySelector(`#admin-root`),wr=a({key:`1mcp-admin-color-scheme`});if(!Cr)throw Error(`Admin Console root element was not found`);(0,be.createRoot)(Cr).render((0,X.jsx)(i,{theme:Sr,defaultColorScheme:`auto`,colorSchemeManager:wr,children:(0,X.jsx)(hr,{api:Se()})}));export{_n as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./admin-rolldown-runtime-Bh1tDfsg.js";import{i as t}from"./admin-react-BSaWeqgv.js";var n=e(t(),1),r=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),i=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),o=e=>{let t=a(e);return t.charAt(0).toUpperCase()+t.slice(1)},s={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},c=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},l=(0,n.createContext)({}),u=()=>(0,n.useContext)(l),d=(0,n.forwardRef)(({color:e,size:t,strokeWidth:i,absoluteStrokeWidth:a,className:o=``,children:l,iconNode:d,...f},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,color:_=`currentColor`,className:v=``}=u()??{},y=a??g?Number(i??h)*24/Number(t??m):i??h;return(0,n.createElement)(`svg`,{ref:p,...s,width:t??m??s.width,height:t??m??s.height,stroke:e??_,strokeWidth:y,className:r(`lucide`,v,o),...!l&&!c(f)&&{"aria-hidden":`true`},...f},[...d.map(([e,t])=>(0,n.createElement)(e,t)),...Array.isArray(l)?l:[l]])}),f=(e,t)=>{let a=(0,n.forwardRef)(({className:a,...s},c)=>(0,n.createElement)(d,{ref:c,iconNode:t,className:r(`lucide-${i(o(e))}`,`lucide-${e}`,a),...s}));return a.displayName=o(e),a},p=f(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),m=f(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),h=f(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),g=f(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),_=f(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),v=f(`clipboard`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]),y=f(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),b=f(`file-clock`,[[`path`,{d:`M16 22h2a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v2.85`,key:`ryk6xj`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 14v2.2l1.6 1`,key:`6m4bie`}],[`circle`,{cx:`8`,cy:`16`,r:`6`,key:`10v15b`}]]),x=f(`file-input`,[[`path`,{d:`M4 11V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1`,key:`1q9hii`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M2 15h10`,key:`jfw4w8`}],[`path`,{d:`m9 18 3-3-3-3`,key:`112psh`}]]),S=f(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),C=f(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),w=f(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),T=f(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),E=f(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),D=f(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),O=f(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),k=f(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),A=f(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),j=f(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),M=f(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),N=f(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),P=f(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),F=f(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),I=f(`server-cog`,[[`path`,{d:`m10.852 14.772-.383.923`,key:`11vil6`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`,key:`1v3clb`}],[`path`,{d:`m13.148 9.228.383-.923`,key:`t2zzyc`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`,key:`1bxfiv`}],[`path`,{d:`m14.772 10.852.923-.383`,key:`k9m8cz`}],[`path`,{d:`m14.772 13.148.923.383`,key:`1xvhww`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`,key:`tn8das`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`,key:`1g2pve`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`M6 6h.01`,key:`1utrut`}],[`path`,{d:`m9.228 10.852-.923-.383`,key:`1wtb30`}],[`path`,{d:`m9.228 13.148-.923.383`,key:`1a830x`}]]),L=f(`server-off`,[[`path`,{d:`M7 2h13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-5`,key:`bt2siv`}],[`path`,{d:`M10 10 2.5 2.5C2 2 2 2.5 2 5v3a2 2 0 0 0 2 2h6z`,key:`1hjrv1`}],[`path`,{d:`M22 17v-1a2 2 0 0 0-2-2h-1`,key:`1iynyr`}],[`path`,{d:`M4 14a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16.5l1-.5.5.5-8-8H4z`,key:`161ggg`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),R=f(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),z=f(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),B=f(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]),V=f(`sun-moon`,[[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715`,key:`xlf6rm`}],[`path`,{d:`M16 12a4 4 0 0 0-4-4`,key:`6vsxu`}],[`path`,{d:`m19 5-1.256 1.256`,key:`1yg6a6`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}]]),H=f(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),U=f(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),W=f(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),G=f(`user-round`,[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]]);export{g as A,C,y as D,b as E,m as M,p as N,v as O,w as S,x as T,k as _,V as a,E as b,R as c,F as d,P as f,A as g,j as h,H as i,h as j,_ as k,L as l,M as m,W as n,B as o,N as p,U as r,z as s,G as t,I as u,O as v,S as w,T as x,D as y};