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

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 (180) hide show
  1. package/build/admin/assets/admin-AboutRuntimeWorkspace-CM2ZafTJ.js +1 -0
  2. package/build/admin/assets/admin-BackendLogsWorkspace-CvJs1npx.js +1 -0
  3. package/build/admin/assets/admin-OAuthServicesWorkspace-BswG57Gm.js +1 -0
  4. package/build/admin/assets/admin-PresetAuthoringWorkspace-BIIRs_EN.js +1 -0
  5. package/build/admin/assets/admin-console-Brz9bnhv.css +1 -0
  6. package/build/admin/assets/{admin-console-Bbil6BQU.css → admin-console-DmRyrCWD.css} +1 -1
  7. package/build/admin/assets/admin-console-MT8QZmIC.js +3 -0
  8. package/build/admin/assets/admin-icons-D-JtMXSq.js +1 -0
  9. package/build/admin/assets/admin-mantine-DSFdoMaN.js +53 -0
  10. package/build/admin/assets/admin-react-BSaWeqgv.js +8 -0
  11. package/build/admin/assets/admin-rolldown-runtime-Bh1tDfsg.js +1 -0
  12. package/build/admin/favicon.svg +4 -0
  13. package/build/admin/index.html +8 -2
  14. package/build/auth/sessionTypes.d.ts +2 -0
  15. package/build/auth/sessionTypes.d.ts.map +1 -1
  16. package/build/auth/sessionTypes.js.map +1 -1
  17. package/build/commands/inspect/inspect.d.ts +1 -0
  18. package/build/commands/inspect/inspect.d.ts.map +1 -1
  19. package/build/commands/inspect/inspect.js +4 -1
  20. package/build/commands/inspect/inspect.js.map +1 -1
  21. package/build/commands/proxy/proxy.d.ts.map +1 -1
  22. package/build/commands/proxy/proxy.js +2 -0
  23. package/build/commands/proxy/proxy.js.map +1 -1
  24. package/build/commands/run/run.d.ts +1 -0
  25. package/build/commands/run/run.d.ts.map +1 -1
  26. package/build/commands/run/run.js +4 -1
  27. package/build/commands/run/run.js.map +1 -1
  28. package/build/commands/serve/index.d.ts +10 -0
  29. package/build/commands/serve/index.d.ts.map +1 -1
  30. package/build/commands/serve/index.js +10 -0
  31. package/build/commands/serve/index.js.map +1 -1
  32. package/build/commands/serve/serve.d.ts +3 -0
  33. package/build/commands/serve/serve.d.ts.map +1 -1
  34. package/build/commands/serve/serve.js +20 -0
  35. package/build/commands/serve/serve.js.map +1 -1
  36. package/build/commands/serve/serveBackground.d.ts.map +1 -1
  37. package/build/commands/serve/serveBackground.js +2 -0
  38. package/build/commands/serve/serveBackground.js.map +1 -1
  39. package/build/commands/serve/templateContextTrust.d.ts +12 -0
  40. package/build/commands/serve/templateContextTrust.d.ts.map +1 -0
  41. package/build/commands/serve/templateContextTrust.js +23 -0
  42. package/build/commands/serve/templateContextTrust.js.map +1 -0
  43. package/build/commands/shared/apiClient.d.ts +3 -0
  44. package/build/commands/shared/apiClient.d.ts.map +1 -1
  45. package/build/commands/shared/apiClient.js +6 -0
  46. package/build/commands/shared/apiClient.js.map +1 -1
  47. package/build/commands/shared/clientSurfaceAttachment.d.ts +11 -0
  48. package/build/commands/shared/clientSurfaceAttachment.d.ts.map +1 -1
  49. package/build/commands/shared/clientSurfaceAttachment.js +64 -6
  50. package/build/commands/shared/clientSurfaceAttachment.js.map +1 -1
  51. package/build/commands/shared/inspectApiSchemas.d.ts +8 -8
  52. package/build/commands/shared/serveClient.d.ts +2 -1
  53. package/build/commands/shared/serveClient.d.ts.map +1 -1
  54. package/build/commands/shared/serveClient.js +3 -1
  55. package/build/commands/shared/serveClient.js.map +1 -1
  56. package/build/commands/shared/serveTargetResolver.d.ts +4 -0
  57. package/build/commands/shared/serveTargetResolver.d.ts.map +1 -1
  58. package/build/commands/shared/serveTargetResolver.js +6 -1
  59. package/build/commands/shared/serveTargetResolver.js.map +1 -1
  60. package/build/commands/wait/wait.d.ts.map +1 -1
  61. package/build/commands/wait/wait.js +1 -0
  62. package/build/commands/wait/wait.js.map +1 -1
  63. package/build/constants/mcp.d.ts +1 -1
  64. package/build/constants/mcp.js +1 -1
  65. package/build/core/capabilities/capabilityCatalog.d.ts +23 -1
  66. package/build/core/capabilities/capabilityCatalog.d.ts.map +1 -1
  67. package/build/core/capabilities/capabilityCatalog.js +63 -1
  68. package/build/core/capabilities/capabilityCatalog.js.map +1 -1
  69. package/build/core/capabilities/capabilityPagination.d.ts +40 -0
  70. package/build/core/capabilities/capabilityPagination.d.ts.map +1 -0
  71. package/build/core/capabilities/capabilityPagination.js +285 -0
  72. package/build/core/capabilities/capabilityPagination.js.map +1 -0
  73. package/build/core/capabilities/capabilityVisibility.d.ts +2 -1
  74. package/build/core/capabilities/capabilityVisibility.d.ts.map +1 -1
  75. package/build/core/capabilities/capabilityVisibility.js +2 -1
  76. package/build/core/capabilities/capabilityVisibility.js.map +1 -1
  77. package/build/core/client/clientManager.d.ts.map +1 -1
  78. package/build/core/client/clientManager.js +5 -0
  79. package/build/core/client/clientManager.js.map +1 -1
  80. package/build/core/context/templateContextTrust.d.ts +66 -0
  81. package/build/core/context/templateContextTrust.d.ts.map +1 -0
  82. package/build/core/context/templateContextTrust.js +184 -0
  83. package/build/core/context/templateContextTrust.js.map +1 -0
  84. package/build/core/protocol/notificationHandlers.d.ts.map +1 -1
  85. package/build/core/protocol/notificationHandlers.js +26 -4
  86. package/build/core/protocol/notificationHandlers.js.map +1 -1
  87. package/build/core/protocol/promptRequestHandlers.d.ts.map +1 -1
  88. package/build/core/protocol/promptRequestHandlers.js +20 -11
  89. package/build/core/protocol/promptRequestHandlers.js.map +1 -1
  90. package/build/core/protocol/requestHandlerUtils.d.ts +4 -0
  91. package/build/core/protocol/requestHandlerUtils.d.ts.map +1 -1
  92. package/build/core/protocol/requestHandlerUtils.js +22 -2
  93. package/build/core/protocol/requestHandlerUtils.js.map +1 -1
  94. package/build/core/protocol/resourceRequestHandlers.d.ts.map +1 -1
  95. package/build/core/protocol/resourceRequestHandlers.js +38 -18
  96. package/build/core/protocol/resourceRequestHandlers.js.map +1 -1
  97. package/build/core/protocol/toolRequestHandlers.d.ts.map +1 -1
  98. package/build/core/protocol/toolRequestHandlers.js +62 -19
  99. package/build/core/protocol/toolRequestHandlers.js.map +1 -1
  100. package/build/core/server/agentConfig.d.ts +4 -0
  101. package/build/core/server/agentConfig.d.ts.map +1 -1
  102. package/build/core/server/agentConfig.js +3 -0
  103. package/build/core/server/agentConfig.js.map +1 -1
  104. package/build/core/server/connectionManager.d.ts.map +1 -1
  105. package/build/core/server/connectionManager.js +2 -0
  106. package/build/core/server/connectionManager.js.map +1 -1
  107. package/build/core/server/requestContextPreparation.d.ts +2 -1
  108. package/build/core/server/requestContextPreparation.d.ts.map +1 -1
  109. package/build/core/server/requestContextPreparation.js.map +1 -1
  110. package/build/core/server/runtimeScopeOwnership.js +1 -1
  111. package/build/core/server/runtimeScopeOwnership.js.map +1 -1
  112. package/build/core/server/templateServerManager.d.ts.map +1 -1
  113. package/build/core/server/templateServerManager.js +2 -0
  114. package/build/core/server/templateServerManager.js.map +1 -1
  115. package/build/core/tools/internal/schemas/discovery.d.ts +1 -1
  116. package/build/core/tools/internal/schemas/index.d.ts +7 -7
  117. package/build/core/tools/internal/schemas/installation.d.ts +3 -3
  118. package/build/core/tools/internal/schemas/management.d.ts +3 -3
  119. package/build/core/types/server.d.ts +2 -0
  120. package/build/core/types/server.d.ts.map +1 -1
  121. package/build/core/types/server.js.map +1 -1
  122. package/build/core/types/transport.d.ts +10 -0
  123. package/build/core/types/transport.d.ts.map +1 -1
  124. package/build/core/types/transport.js +5 -0
  125. package/build/core/types/transport.js.map +1 -1
  126. package/build/domains/admin/adminConfiguredServerService.d.ts +80 -0
  127. package/build/domains/admin/adminConfiguredServerService.d.ts.map +1 -1
  128. package/build/domains/admin/adminConfiguredServerService.js +507 -1
  129. package/build/domains/admin/adminConfiguredServerService.js.map +1 -1
  130. package/build/domains/backend-logs/backendLogSource.d.ts.map +1 -1
  131. package/build/domains/backend-logs/backendLogSource.js.map +1 -1
  132. package/build/domains/config-change/configChange.d.ts +2 -1
  133. package/build/domains/config-change/configChange.d.ts.map +1 -1
  134. package/build/domains/config-change/configChange.js +88 -0
  135. package/build/domains/config-change/configChange.js.map +1 -1
  136. package/build/domains/config-change/types.d.ts +5 -1
  137. package/build/domains/config-change/types.d.ts.map +1 -1
  138. package/build/domains/installation/serverInstallationSourceResolution.js +2 -0
  139. package/build/domains/installation/serverInstallationSourceResolution.js.map +1 -1
  140. package/build/domains/installation/serverInstallationTypes.d.ts +8 -0
  141. package/build/domains/installation/serverInstallationTypes.d.ts.map +1 -1
  142. package/build/domains/installation/serverInstallationWorkflow.js +16 -3
  143. package/build/domains/installation/serverInstallationWorkflow.js.map +1 -1
  144. package/build/transport/http/middlewares/httpRequestLogger.d.ts.map +1 -1
  145. package/build/transport/http/middlewares/httpRequestLogger.js +3 -2
  146. package/build/transport/http/middlewares/httpRequestLogger.js.map +1 -1
  147. package/build/transport/http/routes/adminRoutes.d.ts.map +1 -1
  148. package/build/transport/http/routes/adminRoutes.js +129 -14
  149. package/build/transport/http/routes/adminRoutes.js.map +1 -1
  150. package/build/transport/http/routes/inspectRequestContext.d.ts.map +1 -1
  151. package/build/transport/http/routes/inspectRequestContext.js +13 -4
  152. package/build/transport/http/routes/inspectRequestContext.js.map +1 -1
  153. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  154. package/build/transport/http/routes/streamableHttpRoutes.js +13 -4
  155. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  156. package/build/transport/http/storage/streamableSessionRepository.d.ts.map +1 -1
  157. package/build/transport/http/storage/streamableSessionRepository.js +2 -0
  158. package/build/transport/http/storage/streamableSessionRepository.js.map +1 -1
  159. package/build/transport/http/streamableSessionLifecycle.d.ts +3 -1
  160. package/build/transport/http/streamableSessionLifecycle.d.ts.map +1 -1
  161. package/build/transport/http/streamableSessionLifecycle.js +23 -6
  162. package/build/transport/http/streamableSessionLifecycle.js.map +1 -1
  163. package/build/transport/http/utils/contextExtractor.d.ts +14 -16
  164. package/build/transport/http/utils/contextExtractor.d.ts.map +1 -1
  165. package/build/transport/http/utils/contextExtractor.js +124 -33
  166. package/build/transport/http/utils/contextExtractor.js.map +1 -1
  167. package/build/transport/http/utils/templateContextAuthority.d.ts +13 -0
  168. package/build/transport/http/utils/templateContextAuthority.d.ts.map +1 -0
  169. package/build/transport/http/utils/templateContextAuthority.js +121 -0
  170. package/build/transport/http/utils/templateContextAuthority.js.map +1 -0
  171. package/build/transport/stdioProxyTransport.d.ts +3 -0
  172. package/build/transport/stdioProxyTransport.d.ts.map +1 -1
  173. package/build/transport/stdioProxyTransport.js +7 -2
  174. package/build/transport/stdioProxyTransport.js.map +1 -1
  175. package/package.json +1 -1
  176. package/build/admin/assets/admin-console-BOl7XR0p.js +0 -61
  177. package/build/utils/ui/pagination.d.ts +0 -35
  178. package/build/utils/ui/pagination.d.ts.map +0 -1
  179. package/build/utils/ui/pagination.js +0 -166
  180. package/build/utils/ui/pagination.js.map +0 -1
@@ -0,0 +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};
@@ -0,0 +1 @@
1
+ import{S as e,b as t,k as n,o as r,t as i,v as a,w as o}from"./admin-mantine-DSFdoMaN.js";import{r as s}from"./admin-react-BSaWeqgv.js";import{h as c}from"./admin-icons-D-JtMXSq.js";var l=s();function u({logs:n,configureServer:s}){let u=n.sources.find(e=>e.id===n.selectedSourceId)??null,p=n.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)(o,{justify:`space-between`,align:`flex-end`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(e,{className:`eyebrow`,size:`xs`,children:`Runtime diagnostics`}),(0,l.jsx)(i,{order:2,children:`Backend logs`})]}),(0,l.jsx)(t,{color:v(n.connection),variant:`light`,children:_(n.connection,p)})]})}),n.sources.length===0?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`status`,children:n.connection===`loading`?`Loading backend log sources...`:(0,l.jsxs)(r,{gap:`sm`,align:`center`,className:`actionable-empty-state`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(e,{fw:800,children:`No backend log sources`}),(0,l.jsx)(e,{c:`dimmed`,size:`sm`,children:`Configure a stdio server to capture and inspect managed stderr here.`})]}),(0,l.jsx)(a,{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:n.sources.map(e=>(0,l.jsx)(f,{source:e,active:e.id===n.selectedSourceId,unread:n.unread[e.id]??0,onSelect:()=>void n.select(e.id)},e.id))}),(0,l.jsx)(`div`,{className:`backend-log-inspector`,children:u?(0,l.jsx)(m,{source:u,logs:n}):null})]})]})}function d(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function f({source:r,active:i,unread:a,onSelect:o}){return(0,l.jsxs)(n,{"aria-label":`${r.displayName}, ${p(r)}`,"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)(e,{component:`span`,fw:800,size:`sm`,children:r.displayName}),(0,l.jsx)(e,{component:`span`,c:`dimmed`,size:`xs`,children:p(r)})]}),a>0?(0,l.jsx)(t,{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:n,logs:r}){let i=r.entries;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(o,{className:`backend-log-source-header`,justify:`space-between`,wrap:`nowrap`,children:[(0,l.jsxs)(`div`,{className:`truncate`,children:[(0,l.jsx)(e,{fw:900,children:n.displayName}),(0,l.jsx)(e,{className:`backend-log-canonical truncate`,size:`xs`,children:n.canonicalName})]}),(0,l.jsx)(t,{color:n.capture===`not-captured`?`red`:n.lifecycle===`ended`?`orange`:`teal`,children:n.capture===`not-captured`?`Unavailable`:n.lifecycle===`ended`?`Ended`:`Live`})]}),n.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.`}):r.selectionLoading?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`status`,children:`Loading retained log history...`}):r.selectionError?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`alert`,children:r.selectionError}):i.length===0?(0,l.jsx)(`div`,{className:`backend-log-empty`,role:`status`,children:n.lifecycle===`ended`?`This source ended without retained log entries.`:`No captured stderr in retained runtime history.`}):(0,l.jsx)(`div`,{"aria-label":`${n.displayName} retained log entries`,className:`backend-log-well`,role:`log`,children:i.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,O as n,S as r,_ as i,b as a,o,v as s,w as c}from"./admin-mantine-DSFdoMaN.js";import{i as l,r as u}from"./admin-react-BSaWeqgv.js";import{b as d,h as f,p,w as m}from"./admin-icons-D-JtMXSq.js";import{t as h}from"./admin-console-MT8QZmIC.js";var g=e(l(),1),_=u();function v({model:e,oauth:i,configureServer:a}){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`}`}),i.callbackFeedback?(0,_.jsx)(S,{feedback:i.callbackFeedback}):null,i.operationFeedback?(0,_.jsx)(S,{feedback:i.operationFeedback}):null,u.length===0?(0,_.jsx)(n,{className:`operations-panel`,withBorder:!0,children:(0,_.jsxs)(o,{gap:`sm`,className:`actionable-empty-state`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(r,{fw:800,children:`No OAuth services reported`}),(0,_.jsx)(r,{c:`dimmed`,size:`sm`,children:`OAuth services appear when a configured server requires provider authorization.`})]}),(0,_.jsx)(s,{component:`a`,href:`/admin/servers/new`,leftSection:(0,_.jsx)(f,{size:16}),onClick:e=>{y(e)&&(e.preventDefault(),a())},children:`Configure server`})]})}):(0,_.jsx)(o,{gap:`sm`,children:u.map(e=>(0,_.jsx)(b,{service:e,busy:i.busy?.serviceId===e.id?i.busy.action:null,operationBlocked:i.busy!==null,onCopy:()=>void m(e),onOperate:t=>void i.operate(e.id,t)},e.id))}),d?(0,_.jsx)(t,{"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:t,operationBlocked:l,onCopy:u,onOperate:f}){let h=x(e),g=h===`authorize`?`Authorize`:`Restart`;return(0,_.jsx)(n,{component:`article`,className:`oauth-service-row`,withBorder:!0,children:(0,_.jsxs)(c,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,children:[(0,_.jsxs)(`div`,{className:`oauth-service-main`,children:[(0,_.jsxs)(c,{gap:`xs`,children:[(0,_.jsx)(r,{fw:800,children:e.displayName}),(0,_.jsx)(a,{color:e.status===`connected`?`teal`:`yellow`,variant:`light`,children:e.status})]}),(0,_.jsx)(r,{size:`xs`,c:`dimmed`,children:e.requiresOAuth?`OAuth required`:`No OAuth action required`}),e.lastError?(0,_.jsx)(r,{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)(c,{gap:`xs`,wrap:`nowrap`,children:[(0,_.jsx)(i,{className:`oauth-service-id`,children:e.id}),(0,_.jsx)(s,{"aria-label":`Copy full service ID for ${e.displayName}`,size:`compact-xs`,variant:`subtle`,onClick:u,children:(0,_.jsx)(m,{size:14,"aria-hidden":`true`})})]})]})]}),h?(0,_.jsxs)(o,{gap:4,align:`flex-end`,className:`oauth-service-action`,children:[(0,_.jsx)(s,{"aria-label":`${g} ${e.displayName}`,leftSection:h===`authorize`?(0,_.jsx)(d,{size:15}):(0,_.jsx)(p,{size:15}),loading:t===h,disabled:l,onClick:()=>f(h),children:g}),(0,_.jsx)(r,{size:`xs`,c:`dimmed`,"aria-live":`polite`,children:t?t===`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)(t,{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{C as t,O as n,S as r,b as i,c as a,g as o,n as s,o as c,t as l,v as u,w as d}from"./admin-mantine-DSFdoMaN.js";import{i as f,r as p}from"./admin-react-BSaWeqgv.js";import{E as m,d as h,f as g,r as _,s as v}from"./admin-icons-D-JtMXSq.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:i}){let{items:a,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)(d,{justify:`space-between`,align:`flex-start`,className:`workspace-heading`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(r,{className:`eyebrow`,size:`xs`,children:[`Runtime Scope / `,i??`unavailable`]}),(0,D.jsx)(l,{id:`presets-title`,order:2,children:`Presets`}),(0,D.jsx)(r,{c:`dimmed`,size:`sm`,children:`Manage the preset store owned by this running Runtime Scope.`})]}),(0,D.jsxs)(d,{children:[(0,D.jsx)(u,{variant:`default`,onClick:()=>void m(),loading:p,children:`Refresh`}),a.length>0?(0,D.jsx)(u,{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${a.length===0?` preset-workspace-grid-empty`:``}`,children:[a.length>0?(0,D.jsx)(n,{withBorder:!0,p:`md`,children:(0,D.jsx)(c,{gap:`sm`,children:a.map(e=>(0,D.jsx)(n,{withBorder:!0,p:`sm`,children:(0,D.jsxs)(d,{justify:`space-between`,align:`flex-start`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(r,{fw:800,children:e.name}),(0,D.jsx)(r,{size:`sm`,c:`dimmed`,children:e.description||`No description`}),(0,D.jsxs)(r,{size:`xs`,children:[e.strategy.toUpperCase(),` · `,e.querySummary||`empty query`,` · `,e.matchCount,` `,`matches`]})]}),(0,D.jsxs)(d,{gap:`xs`,children:[(0,D.jsx)(u,{size:`xs`,variant:`default`,onClick:()=>Z(e),children:`Edit`}),(0,D.jsx)(u,{size:`xs`,variant:`default`,onClick:()=>Z(e,!0),children:`Duplicate`}),(0,D.jsx)(u,{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)(n,{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)(d,{children:[(0,D.jsx)(u,{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)(u,{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)(u,{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)(o,{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)}}),a.length===0?(0,D.jsx)(t,{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)(u,{leftSection:(0,D.jsx)(v,{size:16}),disabled:X,onClick:()=>void $(),children:`Preview matches`}),H?(0,D.jsxs)(n,{withBorder:!0,p:`sm`,children:[(0,D.jsxs)(r,{fw:800,children:[H.matchCount,` current matches`]}),H.validation.globalErrors.map(e=>(0,D.jsx)(r,{c:`red`,children:e},e)),H.validation.fieldErrors.map(e=>(0,D.jsxs)(r,{c:`red`,children:[e.field,`: `,e.message]},`${e.field}-${e.message}`)),H.validation.warnings.map(e=>(0,D.jsx)(r,{c:`yellow`,children:j(e)},e)),H.matches.map(e=>(0,D.jsxs)(r,{size:`sm`,children:[e.matched?`✓`:`–`,` `,e.name,` · `,e.enabled?`enabled`:`disabled`,` · `,e.reason]},e.name)),(0,D.jsx)(u,{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)(t,{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:t,states:n,onChange:o}){let f=N(e,n),p=b(n,t),g=e.filter(e=>x(p,e.tags)),_=f.filter(({tag:e})=>(n[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 r=n[e]??`neutral`,i=T===`all`||r===T,a=!A||e.toLocaleLowerCase().includes(A)||t.some(e=>e.toLocaleLowerCase().includes(A));return i&&a});function M(e,t){o({...n,[e]:t})}return(0,D.jsxs)(`section`,{className:`preset-tag-builder`,"aria-labelledby":`preset-tag-matrix-title`,children:[(0,D.jsxs)(d,{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)(r,{size:`sm`,c:`dimmed`,children:`Discover tags from configured targets. Include tags select servers; exclude tags remove them.`})]}),(0,D.jsxs)(i,{variant:`light`,color:g.length>0?`teal`:`yellow`,children:[g.length,` / `,e.length,` match`]})]}),(0,D.jsxs)(d,{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)(a,{"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:t,enabledCount:o,disabledCount:s,discovered:c})=>{let l=n[e]??`neutral`,f=O[e]===!0,p=f?t:t.slice(0,2);return(0,D.jsxs)(`article`,{className:`preset-tag-row preset-tag-${l}`,"data-tag":e,children:[(0,D.jsxs)(`div`,{className:`preset-tag-identity`,children:[(0,D.jsxs)(d,{gap:`xs`,wrap:`wrap`,children:[(0,D.jsx)(r,{fw:800,children:e}),c?null:(0,D.jsx)(i,{color:`gray`,size:`xs`,variant:`light`,children:`Retired`})]}),(0,D.jsxs)(d,{gap:`sm`,mt:3,className:`preset-tag-counts`,children:[(0,D.jsxs)(r,{size:`xs`,c:`dimmed`,children:[t.length,` `,t.length===1?`server`:`servers`]}),(0,D.jsxs)(r,{size:`xs`,c:`dimmed`,children:[o,` enabled`]}),(0,D.jsxs)(r,{size:`xs`,c:`dimmed`,children:[s,` disabled`]})]})]}),(0,D.jsx)(`div`,{className:`preset-tag-state`,role:`group`,"aria-label":`${e} tag state`,children:(0,D.jsx)(a,{"aria-label":`Set ${e} tag state`,fullWidth:!0,data:[{label:`Neutral`,value:`neutral`},{label:`Include`,value:`include`},{label:`Exclude`,value:`exclude`}],value:l,onChange:t=>M(e,t)})}),(0,D.jsxs)(`div`,{className:`preset-tag-servers`,children:[(0,D.jsx)(r,{size:`xs`,c:`dimmed`,component:`span`,children:p.length>0?p.join(`, `):`No current targets`}),t.length>2?(0,D.jsx)(u,{"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`:`+${t.length-2}`}):null]})]},e)}),j.length===0?(0,D.jsx)(r,{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)(d,{justify:`space-between`,align:`flex-start`,gap:`md`,className:`preset-impact-header`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(r,{size:`xs`,fw:800,tt:`uppercase`,children:`Live impact`}),(0,D.jsxs)(r,{size:`sm`,mt:3,children:[(0,D.jsx)(`strong`,{children:g.length}),` of `,e.length,` targets match · `,v,` enabled ·`,` `,S,` disabled`]})]}),(0,D.jsxs)(d,{gap:6,className:`preset-active-tags`,children:[_.length===0?(0,D.jsx)(r,{c:`dimmed`,children:`No criteria selected`}):null,_.map(({tag:e})=>(0,D.jsxs)(i,{color:n[e]===`exclude`?`red`:`teal`,variant:`light`,children:[n[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)(r,{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}.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}}@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}.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}@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}}