nextclaw 0.58.0 → 0.59.0-beta.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 (180) hide show
  1. package/dist/cli/app/index.js +1 -1
  2. package/dist/{nextclaw-cli-app-CsrOxQJR.js → nextclaw-cli-app-gSbcxswD.js} +20 -3
  3. package/dist/{nextclaw-cli-app-CsrOxQJR.js.map → nextclaw-cli-app-gSbcxswD.js.map} +1 -1
  4. package/package.json +11 -11
  5. package/resources/native/darwin-arm64/nextclaw-wasmtime-runner +4 -0
  6. package/ui-dist/.vite/manifest.json +45 -45
  7. package/ui-dist/.vite/manifest.json.gz +0 -0
  8. package/ui-dist/assets/abnfDiagram-VRR7QNED-BT0_ycaq.js.gz +0 -0
  9. package/ui-dist/assets/{account-panel-Cfx3ocPY.js → account-panel-DgqicWMm.js} +1 -1
  10. package/ui-dist/assets/account-panel-DgqicWMm.js.gz +0 -0
  11. package/ui-dist/assets/{agents-BdeFtIOV.js → agents-CTSR4ZKb.js} +1 -1
  12. package/ui-dist/assets/agents-CTSR4ZKb.js.gz +0 -0
  13. package/ui-dist/assets/agents-i7167DcF.js +1 -0
  14. package/ui-dist/assets/aiden0z-pptx-renderer.es-ClCaf_Wh.js.gz +0 -0
  15. package/ui-dist/assets/api-CXWxExzS.js.gz +0 -0
  16. package/ui-dist/assets/app-presenter-provider-D3BuuOyZ.css.gz +0 -0
  17. package/ui-dist/assets/{app-presenter-provider-BB3Xl8b0.js → app-presenter-provider-DdD2Q7jZ.js} +17 -16
  18. package/ui-dist/assets/app-presenter-provider-DdD2Q7jZ.js.gz +0 -0
  19. package/ui-dist/assets/{appearance-settings-page-DiSRSDN3.js → appearance-settings-page-CSWYLrsR.js} +1 -1
  20. package/ui-dist/assets/appearance-settings-page-CSWYLrsR.js.gz +0 -0
  21. package/ui-dist/assets/apps-DUP3aPpu.js +1 -0
  22. package/ui-dist/assets/arc-cmSdpq1Z.js.gz +0 -0
  23. package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-aYglVeoS.js.gz +0 -0
  24. package/ui-dist/assets/blockDiagram-677ZJIJ3-Di_PBl5q.js.gz +0 -0
  25. package/ui-dist/assets/c4Diagram-LMCZKHZV-CfuxybOL.js.gz +0 -0
  26. package/ui-dist/assets/card-eFBmxYiI.js.gz +0 -0
  27. package/ui-dist/assets/channels-list-page-lQOINLW8.js.gz +0 -0
  28. package/ui-dist/assets/chunk-32BRIVSS-CCGc4qg4.js.gz +0 -0
  29. package/ui-dist/assets/chunk-52WLFC77-aJoxU2Ow.js.gz +0 -0
  30. package/ui-dist/assets/chunk-5JV3BV7I-DnabINcd.js.gz +0 -0
  31. package/ui-dist/assets/chunk-5TONJI2A-BhpKv1k2.js.gz +0 -0
  32. package/ui-dist/assets/chunk-7BUUIJ7U-CgDQOLnC.js.gz +0 -0
  33. package/ui-dist/assets/chunk-C7G6YPKG-CNGFAFYL.js.gz +0 -0
  34. package/ui-dist/assets/chunk-DF37yw5_.js.gz +0 -0
  35. package/ui-dist/assets/chunk-EX3LRPZG-D8Jf4kc2.js.gz +0 -0
  36. package/ui-dist/assets/chunk-FWX5IMBZ-BdHymAs0.js.gz +0 -0
  37. package/ui-dist/assets/chunk-HOUHSVGY-Dd_Ycn9Z.js.gz +0 -0
  38. package/ui-dist/assets/chunk-ICXQ74PX-BRPUu3ff.js.gz +0 -0
  39. package/ui-dist/assets/chunk-JG7HCLWE-DnCasQja.js.gz +0 -0
  40. package/ui-dist/assets/chunk-KEIR6QF5-BOAXXeyv.js.gz +0 -0
  41. package/ui-dist/assets/chunk-MOJQB5TN-Pi--K4-1.js.gz +0 -0
  42. package/ui-dist/assets/chunk-PUDLZKDR-Cy4G8SjV.js.gz +0 -0
  43. package/ui-dist/assets/chunk-Q4XR5HBZ-UYxXzi7_.js.gz +0 -0
  44. package/ui-dist/assets/chunk-R7FJI6CG-C5kVJus8.js.gz +0 -0
  45. package/ui-dist/assets/chunk-RYQCIY6F-C6cuuEBn.js.gz +0 -0
  46. package/ui-dist/assets/chunk-U6XO7XAA-CM0EK7Y0.js.gz +0 -0
  47. package/ui-dist/assets/chunk-V7JOEXUC-DWJZIsME.js.gz +0 -0
  48. package/ui-dist/assets/chunk-WYO6CB5R-B30N3ZP8.js.gz +0 -0
  49. package/ui-dist/assets/chunk-ZGVPDNZ5-BN5NX5qA.js.gz +0 -0
  50. package/ui-dist/assets/chunk-ZIRB5QZD-DcDXK29L.js.gz +0 -0
  51. package/ui-dist/assets/config-split-page-BaHtm9OW.js.gz +0 -0
  52. package/ui-dist/assets/context-menu-C0qywo73.js.gz +0 -0
  53. package/ui-dist/assets/context-menu-DEcVZfaU.css.gz +0 -0
  54. package/ui-dist/assets/cose-bilkent-JH36ORCC-CmeJVoTw.js.gz +0 -0
  55. package/ui-dist/assets/cron-DPBUHn7j.js +1 -0
  56. package/ui-dist/assets/cynefinDiagram-TSTJHNR4-DGOUMgPP.js.gz +0 -0
  57. package/ui-dist/assets/cytoscape.esm-j4J9a91l.js.gz +0 -0
  58. package/ui-dist/assets/dagre-CMxSkbJJ.js.gz +0 -0
  59. package/ui-dist/assets/dagre-VKFMJZFB-3YUBEXwo.js.gz +0 -0
  60. package/ui-dist/assets/defaultLocale-Bmxjp-V_.js.gz +0 -0
  61. package/ui-dist/assets/desktop-capabilities-page-CKq2Miye.js.gz +0 -0
  62. package/ui-dist/assets/desktop-update-config-C_SBtjA1.js.gz +0 -0
  63. package/ui-dist/assets/diagram-FQU43EPY-Br1g--ww.js.gz +0 -0
  64. package/ui-dist/assets/diagram-G47NLZAW-D1wJCBgr.js.gz +0 -0
  65. package/ui-dist/assets/diagram-NH7WQ7WH-Cgg2auLH.js.gz +0 -0
  66. package/ui-dist/assets/diagram-OA4YK3LP-R-wHiWqh.js.gz +0 -0
  67. package/ui-dist/assets/diagram-WEI45ONY-CsNnKV0P.js.gz +0 -0
  68. package/ui-dist/assets/dialog-DMKYZDFu.js.gz +0 -0
  69. package/ui-dist/assets/dist-D9h2cWk3.js.gz +0 -0
  70. package/ui-dist/assets/dist-DwLj1Wg5.js.gz +0 -0
  71. package/ui-dist/assets/doc-browser-C7kvXGc_.js +1 -0
  72. package/ui-dist/assets/doc-browser-context-CoVMIiU8.js.gz +0 -0
  73. package/ui-dist/assets/docx-preview-kPn_EtAr.js.gz +0 -0
  74. package/ui-dist/assets/ebnfDiagram-CCIWWBDH-DCyhIPdi.js.gz +0 -0
  75. package/ui-dist/assets/erDiagram-Q63AITRT-D0ZJYAUf.js.gz +0 -0
  76. package/ui-dist/assets/extensions-DXDFcRVC.js.gz +0 -0
  77. package/ui-dist/assets/ganttDiagram-NO4QXBWP-CiXDcXZD.js.gz +0 -0
  78. package/ui-dist/assets/gitGraphDiagram-IHSO6WYX-BSiIV48S.js.gz +0 -0
  79. package/ui-dist/assets/graphlib-CC0HTn1v.js.gz +0 -0
  80. package/ui-dist/assets/i18n-ByVUrt9w.js.gz +0 -0
  81. package/ui-dist/assets/inbox-C09MQO9k.js +1 -0
  82. package/ui-dist/assets/ishikawaDiagram-FXEZZL3T-nQ_baN5u.js.gz +0 -0
  83. package/ui-dist/assets/journeyDiagram-5HDEW3XC-ABueIPzj.js.gz +0 -0
  84. package/ui-dist/assets/jszip.min-DQvBVV_R.js.gz +0 -0
  85. package/ui-dist/assets/kanban-definition-HUTT4EX6-8FKS3fmQ.js.gz +0 -0
  86. package/ui-dist/assets/katex-BzT-4KBu.js.gz +0 -0
  87. package/ui-dist/assets/{keyboard-shortcuts-settings-page-BFBXVf20.js → keyboard-shortcuts-settings-page-BCxB9m69.js} +1 -1
  88. package/ui-dist/assets/linear-D7CWUHTF.js.gz +0 -0
  89. package/ui-dist/assets/login-page--Njgbmpm.js.gz +0 -0
  90. package/ui-dist/assets/{main-Bp1iozNB.js → main-C6VGoYNO.js} +2 -2
  91. package/ui-dist/assets/main-C6VGoYNO.js.gz +0 -0
  92. package/ui-dist/assets/main-i18n-catalog.config-_4gMZaNz.js.gz +0 -0
  93. package/ui-dist/assets/main-kp_0b1bg.css.gz +0 -0
  94. package/ui-dist/assets/map-CDu47gTf.js.gz +0 -0
  95. package/ui-dist/assets/{marketplace-BTDWnHP7.js → marketplace-CXCLbyho.js} +1 -1
  96. package/ui-dist/assets/mcp-marketplace-page-ZAm380SB.js +1 -0
  97. package/ui-dist/assets/mermaid-parser.core-Cc9wjl82.js.gz +0 -0
  98. package/ui-dist/assets/mermaid.core-GWlaVWz1.js.gz +0 -0
  99. package/ui-dist/assets/middleware-B--6mAUM.js.gz +0 -0
  100. package/ui-dist/assets/mindmap-definition-LN4V7U3C-oqnKsz-R.js.gz +0 -0
  101. package/ui-dist/assets/model-config-page-CeVvZ29o.js.gz +0 -0
  102. package/ui-dist/assets/navigation-history-CCnxsAKR.js.gz +0 -0
  103. package/ui-dist/assets/navigation-link-O9Wm0epj.js.gz +0 -0
  104. package/ui-dist/assets/ordinal-DImbxqBz.js.gz +0 -0
  105. package/ui-dist/assets/panel-app-BBTg0tVp.js.gz +0 -0
  106. package/ui-dist/assets/panel-apps-BQlyeAId.js +1 -0
  107. package/ui-dist/assets/panelStandalone-DomappXm.js.gz +0 -0
  108. package/ui-dist/assets/panelStandalone-XRlWxbRS.css.gz +0 -0
  109. package/ui-dist/assets/path-4azsBPZv.js.gz +0 -0
  110. package/ui-dist/assets/pegDiagram-2B236MQR-DYAB8CEz.js.gz +0 -0
  111. package/ui-dist/assets/pieDiagram-ENE6RG2P-DGsH0Kk5.js.gz +0 -0
  112. package/ui-dist/assets/preload-helper-DWTEM3RW.js.gz +0 -0
  113. package/ui-dist/assets/privacy-settings-page-CHDv9ppI.js.gz +0 -0
  114. package/ui-dist/assets/{projects-fPTOn2Wz.js → projects-BWM-oEo0.js} +1 -1
  115. package/ui-dist/assets/projects-BWM-oEo0.js.gz +0 -0
  116. package/ui-dist/assets/provider-models-D8WOdsdu.js.gz +0 -0
  117. package/ui-dist/assets/provider-scoped-model-input-BOPkUOtD.js.gz +0 -0
  118. package/ui-dist/assets/providers-config-page-BilPL0kF.js.gz +0 -0
  119. package/ui-dist/assets/pwa-Cp7pPvsZ.js.gz +0 -0
  120. package/ui-dist/assets/quadrantDiagram-ABIIQ3AL-BegGcT3l.js.gz +0 -0
  121. package/ui-dist/assets/railroadDiagram-RFXS5EU6-B3yJ2yxE.js.gz +0 -0
  122. package/ui-dist/assets/remote-DngM8iep.js +1 -0
  123. package/ui-dist/assets/requirementDiagram-TGXJPOKE-DtEyoEXG.js.gz +0 -0
  124. package/ui-dist/assets/rough.esm-w1lBArN6.js.gz +0 -0
  125. package/ui-dist/assets/{runtime-config-page-P5RUq3YK.js → runtime-config-page-Dx6lWn3_.js} +1 -1
  126. package/ui-dist/assets/runtime-config-page-Dx6lWn3_.js.gz +0 -0
  127. package/ui-dist/assets/sankeyDiagram-HTMAVEWB-h9AYS2UB.js.gz +0 -0
  128. package/ui-dist/assets/search-config-page-DevSv1ZK.js.gz +0 -0
  129. package/ui-dist/assets/secrets-config-page-B4jWTV6V.js.gz +0 -0
  130. package/ui-dist/assets/select-BJ-EjmCz.js.gz +0 -0
  131. package/ui-dist/assets/sequenceDiagram-DBY2YBRQ-D-uxCkob.js.gz +0 -0
  132. package/ui-dist/assets/{service-apps-panel-BReYr_ni.js → service-apps-panel-9khaUSFI.js} +1 -1
  133. package/ui-dist/assets/service-apps-panel-9khaUSFI.js.gz +0 -0
  134. package/ui-dist/assets/src-zrGbZsfc.js.gz +0 -0
  135. package/ui-dist/assets/stateDiagram-2N3HPSRC-DyDy7AHq.js.gz +0 -0
  136. package/ui-dist/assets/status-dot-DlELD18e.js.gz +0 -0
  137. package/ui-dist/assets/swimlanes-5IMT3BWC-BzOduS38.js.gz +0 -0
  138. package/ui-dist/assets/tag-chip-DFzDSvcF.js.gz +0 -0
  139. package/ui-dist/assets/theme-provider-BsJ6HxeX.js.gz +0 -0
  140. package/ui-dist/assets/timeline-definition-FHXFAJF6-CmgnEF2t.js.gz +0 -0
  141. package/ui-dist/assets/use-config-M1L4xn8c.js.gz +0 -0
  142. package/ui-dist/assets/use-desktop-capabilities-BO_2CXgu.js.gz +0 -0
  143. package/ui-dist/assets/use-viewport-layout-Bnm5W5Qz.js.gz +0 -0
  144. package/ui-dist/assets/vennDiagram-L72KCM5P-DwS7D2kg.js.gz +0 -0
  145. package/ui-dist/assets/wardleyDiagram-EHGQE667-B4X8OOL4.js.gz +0 -0
  146. package/ui-dist/assets/x-waP-WLuT.js.gz +0 -0
  147. package/ui-dist/assets/xlsx--SB9KlFl.js.gz +0 -0
  148. package/ui-dist/assets/xychartDiagram-FW5EYKEG-BjRQ_0nx.js.gz +0 -0
  149. package/ui-dist/index.html +3 -3
  150. package/ui-dist/index.html.gz +0 -0
  151. package/ui-dist/logos/discord.svg.gz +0 -0
  152. package/ui-dist/logos/feishu.svg.gz +0 -0
  153. package/ui-dist/logos/gemini.svg.gz +0 -0
  154. package/ui-dist/logos/mimo.svg.gz +0 -0
  155. package/ui-dist/logos/openai.svg.gz +0 -0
  156. package/ui-dist/logos/slack.svg.gz +0 -0
  157. package/ui-dist/logos/vllm.svg.gz +0 -0
  158. package/ui-dist/logos/weixin.svg.gz +0 -0
  159. package/ui-dist/logos/whatsapp.svg.gz +0 -0
  160. package/ui-dist/logos/zhipu.svg.gz +0 -0
  161. package/ui-dist/offline.html.gz +0 -0
  162. package/ui-dist/panel-standalone.html.gz +0 -0
  163. package/ui-dist/runtime-icons/codex-openai.svg.gz +0 -0
  164. package/ui-dist/sw.js.gz +0 -0
  165. package/ui-dist/assets/account-panel-Cfx3ocPY.js.gz +0 -0
  166. package/ui-dist/assets/agents-BdeFtIOV.js.gz +0 -0
  167. package/ui-dist/assets/agents-p_wcGhC3.js +0 -1
  168. package/ui-dist/assets/app-presenter-provider-BB3Xl8b0.js.gz +0 -0
  169. package/ui-dist/assets/appearance-settings-page-DiSRSDN3.js.gz +0 -0
  170. package/ui-dist/assets/apps-CKFrWb00.js +0 -1
  171. package/ui-dist/assets/cron-UqsFT41c.js +0 -1
  172. package/ui-dist/assets/doc-browser-2VjSkax1.js +0 -1
  173. package/ui-dist/assets/inbox-D62apR2j.js +0 -1
  174. package/ui-dist/assets/main-Bp1iozNB.js.gz +0 -0
  175. package/ui-dist/assets/mcp-marketplace-page-oHCbBkS-.js +0 -1
  176. package/ui-dist/assets/panel-apps-CniMi7QW.js +0 -1
  177. package/ui-dist/assets/projects-fPTOn2Wz.js.gz +0 -0
  178. package/ui-dist/assets/remote-CsJMF8OR.js +0 -1
  179. package/ui-dist/assets/runtime-config-page-P5RUq3YK.js.gz +0 -0
  180. package/ui-dist/assets/service-apps-panel-BReYr_ni.js.gz +0 -0
@@ -1 +1 @@
1
- import{i as e}from"./chunk-DF37yw5_.js";import{r as t}from"./pwa-Cp7pPvsZ.js";import{Gt as n,Jt as r,Kt as i,Ut as a,Xn as o,Yt as s,Zt as c,dn as l,ln as u,pn as d,qt as f,sn as p,ur as m,xr as h}from"./api-CXWxExzS.js";import{L as g,R as _,Zt as v,ft as y}from"./app-presenter-provider-BB3Xl8b0.js";import{X as b}from"./context-menu-C0qywo73.js";import{i as x}from"./x-waP-WLuT.js";import{t as S}from"./plus-C42o6xrD.js";import{t as C}from"./rotate-cw-CWFIat29.js";import{t as w}from"./save-C1G0ZU-G.js";import{t as T}from"./trash-2-BVQs-0ji.js";import{s as E}from"./i18n-ByVUrt9w.js";import{a as D,i as O,n as k,r as A,t as j}from"./select-BJ-EjmCz.js";import{b as M,t as ee}from"./use-config-M1L4xn8c.js";import{t as te}from"./form-actions-CZxcWXSm.js";var N=e(h(),1),P=m(),F={healthy:`runtimeControlHealthy`,"starting-service":`runtimeControlStartingService`,"restarting-service":`runtimeControlRestartingService`,"stopping-service":`runtimeControlStoppingService`,"restarting-app":`runtimeControlRestartingApp`,recovering:`runtimeControlRecovering`,failed:`runtimeControlFailed`},I={running:`runtimeControlServiceRunning`,stopped:`runtimeControlServiceStopped`,starting:`runtimeControlServiceStarting`,stopping:`runtimeControlServiceStopping`,restarting:`runtimeControlServiceRestarting`},L={"desktop-embedded":`runtimeControlEnvironmentDesktop`,"managed-local-service":`runtimeControlEnvironmentManagedService`,"self-hosted-web":`runtimeControlEnvironmentSelfHosted`,"shared-web":`runtimeControlEnvironmentSharedWeb`};function R(e){return E(F[e]??`runtimeControlUnavailable`)}function z(e){return E(I[e]??`runtimeControlServiceUnknown`)}function B(e){return E(L[e.environment])}function V(e,t){return t===`start-service`?e?.canStartService:t===`stop-service`?e?.canStopService:e?.canRestartService}function H(e){return e?[{action:`start-service`,capability:e.canStartService,label:E(`runtimeControlStartService`),icon:`play`},{action:`restart-service`,capability:e.canRestartService,label:E(`runtimeControlRestartService`),icon:`rotate`},{action:`stop-service`,capability:e.canStopService,label:E(`runtimeControlStopService`),icon:`square`,variant:`destructive`},{action:`restart-app`,capability:e.canRestartApp,label:E(`runtimeControlRestartApp`),icon:`rotate`,variant:`secondary`}].filter(e=>e.capability.available||!!e.capability.reasonIfUnavailable):[]}function U(e){let{busy:t,icon:n}=e;return t?(0,P.jsx)(x,{className:`mr-2 h-4 w-4 animate-spin`}):n===`play`?(0,P.jsx)(b,{className:`mr-2 h-4 w-4`}):n===`square`?(0,P.jsx)(v,{className:`mr-2 h-4 w-4`}):(0,P.jsx)(C,{className:`mr-2 h-4 w-4`})}function W(){let{busy:e,busyAction:t,controlView:n,errorMessage:i,pendingRestart:a,visibleLifecycle:c,visibleMessage:u,visibleServiceState:m}=p(),h=H(n??void 0),g=async e=>{let t=V(n,e);if(!t?.available){o.error(d(t?.reasonIfUnavailable)??E(`runtimeControlLoadFailed`));return}if(!(e===`stop-service`&&t.requiresConfirmation&&!window.confirm(E(`runtimeControlStopServiceConfirm`))))try{let t=await l.runRuntimeControlAction(e);o.success(d(t.message)??t.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}},_=async()=>{if(!n?.canRestartApp.available){o.error(d(n?.canRestartApp.reasonIfUnavailable)??E(`runtimeRestartAppUnavailable`));return}if(window.confirm(E(`runtimeControlRestartAppConfirm`)))try{let e=await l.runRuntimeControlAction(`restart-app`);o.success(d(e.message)??e.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}};return(0,P.jsx)(r,{title:E(`runtimeControlTitle`),description:E(`runtimeControlDescription`),children:(0,P.jsxs)(f,{children:[(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-center md:justify-between`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:z(m)}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:n?B(n):E(`runtimeControlLoading`)})]}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:u}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:R(c)}),n?.managementHint?(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(n.managementHint)}):null,i&&!e?(0,P.jsx)(`p`,{className:`text-sm text-amber-700`,children:i}):null]}),a?(0,P.jsxs)(`div`,{className:`space-y-3 bg-amber-50/75 p-4 dark:bg-amber-950/20`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-amber-900`,children:E(`runtimeControlPendingRestartTitle`)}),(0,P.jsx)(`p`,{className:`text-sm text-amber-800`,children:E(`runtimeControlPendingRestartDescription`)}),a.changedPaths.length>0?(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.08em] text-amber-700`,children:E(`runtimeControlPendingRestartPaths`)}),(0,P.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a.changedPaths.map(e=>(0,P.jsx)(`span`,{className:`rounded-full bg-background/80 px-2.5 py-1 text-xs text-amber-800 dark:text-amber-300`,children:e},e))})]}):null]}):null,(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsx)(`div`,{className:`flex flex-col gap-3 md:flex-row md:flex-wrap`,children:h.map(n=>(0,P.jsxs)(s,{type:`button`,variant:n.variant??`default`,onClick:()=>{if(n.action===`restart-app`){_();return}g(n.action)},disabled:!n.capability.available||e,children:[(0,P.jsx)(U,{icon:n.icon,busy:t===n.action}),n.label]},n.action))}),h.filter(e=>!e.capability.available&&e.capability.reasonIfUnavailable).map(e=>(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(e.capability.reasonIfUnavailable)},`${e.action}-reason`))]})]})})}function G(e){let{description:t,title:n}=e;return(0,P.jsx)(y,{tone:`neutral`,title:n,description:t})}function K(e){let{children:t}=e;return(0,P.jsx)(r,{title:E(`runtimePresenceTitle`),description:E(`runtimePresenceDescription`),children:(0,P.jsx)(f,{children:t})})}function q(){let e=u().runtimeControlView?.environment,t=_(e=>e.supported),n=_(e=>e.initialized),r=_(e=>e.busyAction),o=_(e=>e.snapshot);return(0,N.useEffect)(()=>{if(e===`desktop-embedded`){g.start();return}g.markUnsupported()},[e]),e===`desktop-embedded`?(0,P.jsxs)(K,{children:[(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(y,{tone:`neutral`,title:E(`runtimePresenceBehaviorLabel`),description:o?.closeToBackground?E(`runtimePresenceBehaviorBackground`):E(`runtimePresenceBehaviorQuit`),className:`rounded-xl`})}),!n||t&&!o?(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)}):null,o?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(i,{title:E(`runtimePresenceCloseToBackground`),description:E(`runtimePresenceCloseToBackgroundHelp`),control:(0,P.jsx)(a,{id:`runtime-presence-close-background`,"aria-label":E(`runtimePresenceCloseToBackground`),checked:o.closeToBackground,disabled:r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({closeToBackground:e})}})}),(0,P.jsx)(i,{title:E(`runtimePresenceLaunchAtLogin`),description:o.supportsLaunchAtLogin?E(`runtimePresenceLaunchAtLoginHelp`):o.launchAtLoginReason??E(`runtimePresenceLaunchAtLoginUnavailable`),control:(0,P.jsx)(a,{id:`runtime-presence-launch-login`,"aria-label":E(`runtimePresenceLaunchAtLogin`),checked:o.launchAtLogin,disabled:!o.supportsLaunchAtLogin||r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({launchAtLogin:e})}})})]}):null]}):e===`managed-local-service`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceManagedLocalTitle`),description:E(`runtimePresenceManagedLocalDescription`)})})}):e===`self-hosted-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSelfHostedTitle`),description:E(`runtimePresenceSelfHostedDescription`)})})}):e===`shared-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSharedTitle`),description:E(`runtimePresenceSharedDescription`)})})}):(0,P.jsx)(K,{children:(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)})})}function J(){return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(W,{}),(0,P.jsx)(q,{}),(0,P.jsx)(t,{})]})}var Y={wireDialect:`acp`,processScope:`per-session`,command:``,args:[`acp`],env:{},cwd:``,startupTimeoutMs:8e3,probeTimeoutMs:3e3,requestTimeoutMs:12e4};function X(){return{id:``,default:!1,workspace:``,model:``,runtime:``,contextTokens:void 0}}function Z(){return{agentId:``,match:{channel:``,accountId:``}}}function Q(){return{id:``,enabled:!0,label:``,type:`narp-stdio`,config:Y,configText:JSON.stringify(Y,null,2)}}function ne(e){return{id:e.id??``,default:!!e.default,displayName:e.displayName??``,description:e.description??``,avatar:e.avatar??``,workspace:e.workspace??``,model:e.model??``,runtime:e.runtime??e.engine??``,contextTokens:e.contextTokens}}function re(e){return{agentId:e.agentId??``,match:{channel:e.match?.channel??``,accountId:e.match?.accountId??``,peer:e.match?.peer?{kind:e.match.peer.kind,id:e.match.peer.id}:void 0}}}function ie(e){let t=e.trim();if(!t)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function ae(e){return{companionEnabled:e.companion?.enabled===!0,agents:(e.agents.list??[]).map(ne),bindings:(e.bindings??[]).map(re),runtimeEntries:Object.entries(e.agents.runtimes?.entries??{}).map(([e,t])=>({id:e,enabled:t.enabled!==!1,label:t.label??``,type:t.type,config:t.config??{},configText:JSON.stringify(t.config??{},null,2)})),dmScope:e.session?.dmScope??`per-channel-peer`,defaultContextTokens:e.agents.defaults.contextTokens??2e5,defaultEngine:e.agents.defaults.engine??`native`}}function oe(e){let t={id:e.id.trim()};e.default&&(t.default=!0),e.displayName?.trim()&&(t.displayName=e.displayName.trim()),e.description?.trim()&&(t.description=e.description.trim()),e.avatar?.trim()&&(t.avatar=e.avatar.trim()),e.workspace?.trim()&&(t.workspace=e.workspace.trim()),e.model?.trim()&&(t.model=e.model.trim());let n=e.runtime?.trim()??e.engine?.trim();return n&&(t.engine=n),typeof e.contextTokens==`number`&&(t.contextTokens=Math.max(1e3,e.contextTokens)),t}function $(e){let t=e.agents.map((e,t)=>{if(!e.id.trim())throw Error(E(`agentIdRequiredError`).replace(`{index}`,String(t)));return oe(e)}),n=t.map(e=>e.id).filter((e,t,n)=>n.indexOf(e)!==t);if(n.length>0)throw Error(`${E(`duplicateAgentId`)}: ${n[0]}`);let r=e.bindings.map((t,n)=>{let r=t.agentId.trim(),i=t.match.channel.trim(),a=t.match.accountId?.trim()??``,o=t.match.peer?.kind,s=t.match.peer?.id?.trim()??``;if(!r)throw Error(E(`bindingAgentIdRequired`).replace(`{index}`,String(n)));if(!e.knownAgentIds.has(r))throw Error(`${E(`bindingAgentIdNotFound`).replace(`{index}`,String(n))}: ${r}`);if(!i)throw Error(E(`bindingChannelRequired`).replace(`{index}`,String(n)));let c={agentId:r,match:{channel:i}};if(a&&(c.match.accountId=a),o){if(!s)throw Error(E(`bindingPeerIdRequired`).replace(`{index}`,String(n)));c.match.peer={kind:o,id:s}}return c}),i=e.runtimeEntries.reduce((e,t,n)=>{let r=t.id.trim(),i=t.type.trim();if(!r)throw Error(E(`runtimeEntryIdRequired`).replace(`{index}`,String(n)));if(!i)throw Error(E(`runtimeEntryTypeRequired`).replace(`{id}`,r));if(e[r])throw Error(`${E(`runtimeEntryDuplicate`)}: ${r}`);let a=t.configText.trim()?JSON.parse(t.configText):{};if(a&&(typeof a!=`object`||Array.isArray(a)))throw Error(E(`runtimeEntryConfigObjectRequired`).replace(`{id}`,r));return e[r]={enabled:t.enabled!==!1,...t.label?.trim()?{label:t.label.trim()}:{},type:i,config:a??{}},e},{});return{companion:{enabled:e.companionEnabled},agents:{defaults:{contextTokens:Math.max(1e3,e.defaultContextTokens),engine:e.defaultEngine.trim()||`native`},list:t,runtimes:{entries:i}},bindings:r,session:{dmScope:e.dmScope}}}function se({agents:e,onAddAgent:t,onRemoveAgent:i,onSetDefaultAgent:o,onUpdateAgent:c}){return(0,P.jsx)(r,{title:E(`agentList`),description:E(`agentListHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addAgent`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>c(t,{id:e.target.value}),placeholder:E(`agentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.workspace??``,onChange:e=>c(t,{workspace:e.target.value}),placeholder:E(`workspaceOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.model??``,onChange:e=>c(t,{model:e.target.value}),placeholder:E(`modelOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.runtime??e.engine??``,onChange:e=>c(t,{runtime:e.target.value}),placeholder:E(`engineOverridePlaceholder`)}),(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:e.contextTokens??``,onChange:e=>c(t,{contextTokens:ie(e.target.value)}),placeholder:E(`contextTokensPlaceholder`)})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,P.jsx)(a,{checked:!!e.default,onCheckedChange:e=>o(t,e)}),(0,P.jsx)(`span`,{children:E(`defaultAgent`)})]}),(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})]})]},`${t}-${e.id}`))})})}function ce({bindings:e,onAddBinding:t,onRemoveBinding:i,onUpdateBinding:a}){return(0,P.jsx)(r,{title:E(`bindings`),description:E(`bindingsHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addBinding`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>{let r=e.match.peer?.kind??``;return(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3`,children:[(0,P.jsx)(n,{value:e.agentId,onChange:n=>a(t,{...e,agentId:n.target.value}),placeholder:E(`targetAgentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.match.channel,onChange:n=>a(t,{...e,match:{...e.match,channel:n.target.value}}),placeholder:E(`channelPlaceholder`)}),(0,P.jsx)(n,{value:e.match.accountId??``,onChange:n=>a(t,{...e,match:{...e.match,accountId:n.target.value}}),placeholder:E(`accountIdOptionalPlaceholder`)}),(0,P.jsxs)(j,{value:r||`__none__`,onValueChange:n=>{let r=n===`__none__`?``:n;a(t,r?{...e,match:{...e.match,peer:{kind:r,id:e.match.peer?.id??``}}}:{...e,match:{...e.match,peer:void 0}})},children:[(0,P.jsx)(O,{children:(0,P.jsx)(D,{})}),(0,P.jsxs)(k,{children:[(0,P.jsx)(A,{value:`__none__`,children:E(`peerKindOptional`)}),(0,P.jsx)(A,{value:`direct`,children:E(`peerKindDirect`)}),(0,P.jsx)(A,{value:`group`,children:E(`peerKindGroup`)}),(0,P.jsx)(A,{value:`channel`,children:E(`peerKindChannel`)})]})]}),(0,P.jsx)(n,{value:e.match.peer?.id??``,onChange:n=>a(t,{...e,match:{...e.match,peer:r?{kind:r,id:n.target.value}:void 0}}),placeholder:E(`peerIdPlaceholder`)})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})})]},`${t}-${e.agentId}`)})})})}function le({entries:e,onAddEntry:t,onRemoveEntry:i,onUpdateEntry:o}){return(0,P.jsx)(r,{title:E(`runtimeEntries`),description:E(`runtimeEntriesHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addRuntimeEntry`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>o(t,{id:e.target.value}),placeholder:E(`runtimeEntryIdPlaceholder`)}),(0,P.jsx)(n,{value:e.label??``,onChange:e=>o(t,{label:e.target.value}),placeholder:E(`runtimeEntryLabelPlaceholder`)}),(0,P.jsx)(n,{value:e.type,onChange:e=>o(t,{type:e.target.value}),placeholder:E(`runtimeEntryTypePlaceholder`)}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg bg-background/65 px-3 py-2`,children:[(0,P.jsx)(`span`,{className:`text-sm text-foreground`,children:E(`enabled`)}),(0,P.jsx)(a,{checked:e.enabled!==!1,onCheckedChange:e=>o(t,{enabled:e})})]})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`label`,{className:`text-sm font-medium text-foreground`,children:E(`runtimeEntryConfigJson`)}),(0,P.jsx)(`textarea`,{className:`min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-sm`,value:e.configText,onChange:e=>o(t,{configText:e.target.value}),spellCheck:!1})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`mr-2 h-4 w-4`}),E(`delete`)]})})]},`${t}-${e.id||`runtime-entry`}`))})})}var ue=[{value:`main`,labelKey:`dmScopeMain`},{value:`per-peer`,labelKey:`dmScopePerPeer`},{value:`per-channel-peer`,labelKey:`dmScopePerChannelPeer`},{value:`per-account-channel-peer`,labelKey:`dmScopePerAccountChannelPeer`}];function de({companionEnabled:e,defaultContextTokens:t,defaultEngine:o,dmScope:s,onCompanionEnabledChange:c,onDefaultContextTokensChange:l,onDefaultEngineChange:u,onDmScopeChange:d}){return(0,P.jsx)(r,{title:E(`dmScope`),description:E(`dmScopeHelp`),children:(0,P.jsxs)(f,{children:[(0,P.jsx)(i,{title:E(`runtimeCompanionEnabled`),description:E(`runtimeCompanionEnabledHelp`),control:(0,P.jsx)(a,{checked:e,onCheckedChange:c})}),(0,P.jsx)(i,{title:E(`defaultContextTokens`),description:E(`defaultContextTokensHelp`),control:(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:t,onChange:e=>l(Math.max(1e3,Number.parseInt(e.target.value,10)||1e3)),className:`w-36`})}),(0,P.jsx)(i,{title:E(`defaultEngine`),description:E(`defaultEngineHelp`),control:(0,P.jsx)(n,{value:o,onChange:e=>u(e.target.value),placeholder:E(`defaultEnginePlaceholder`),className:`w-56`})}),(0,P.jsx)(i,{title:E(`dmScope`),control:(0,P.jsxs)(j,{value:s,onValueChange:e=>d(e),children:[(0,P.jsx)(O,{className:`w-56`,children:(0,P.jsx)(D,{})}),(0,P.jsx)(k,{children:ue.map(e=>(0,P.jsx)(A,{value:e.value,children:E(e.labelKey)},e.value))})]})})]})})}function fe({config:e,updateRuntime:t}){let n=(0,N.useMemo)(()=>ae(e),[e]),[r,i]=(0,N.useState)(n.agents),[a,l]=(0,N.useState)(n.bindings),[u,d]=(0,N.useState)(n.runtimeEntries),[f,p]=(0,N.useState)(n.dmScope),[m,h]=(0,N.useState)(n.companionEnabled),[g,_]=(0,N.useState)(n.defaultContextTokens),[v,y]=(0,N.useState)(n.defaultEngine),b=(0,N.useMemo)(()=>{let e=new Set([`main`]);return r.forEach(t=>{let n=t.id.trim();n&&e.add(n)}),e},[r]);return(0,P.jsxs)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:[(0,P.jsx)(J,{}),(0,P.jsx)(de,{companionEnabled:m,dmScope:f,defaultContextTokens:g,defaultEngine:v,onCompanionEnabledChange:h,onDmScopeChange:p,onDefaultContextTokensChange:_,onDefaultEngineChange:y}),(0,P.jsx)(le,{entries:u,onUpdateEntry:(e,t)=>d(n=>n.map((n,r)=>r===e?{...n,...t}:n)),onRemoveEntry:e=>d(t=>t.filter((t,n)=>n!==e)),onAddEntry:()=>d(e=>[...e,Q()])}),(0,P.jsx)(se,{agents:r,onUpdateAgent:(e,t)=>{i(n=>n.map((n,r)=>r===e?{...n,...t}:n))},onRemoveAgent:e=>i(t=>t.filter((t,n)=>n!==e)),onAddAgent:()=>i(e=>[...e,X()]),onSetDefaultAgent:(e,t)=>i(n=>t?n.map((t,n)=>({...t,default:n===e})):n.map((t,n)=>n===e?{...t,default:!1}:t))}),(0,P.jsx)(ce,{bindings:a,onUpdateBinding:(e,t)=>{l(n=>n.map((n,r)=>r===e?t:n))},onRemoveBinding:e=>l(t=>t.filter((t,n)=>n!==e)),onAddBinding:()=>l(e=>[...e,Z()])}),(0,P.jsx)(te,{children:(0,P.jsxs)(s,{type:`button`,size:`sm`,onClick:()=>{try{let e=$({companionEnabled:m,agents:r,bindings:a,runtimeEntries:u,dmScope:f,defaultContextTokens:g,defaultEngine:v,knownAgentIds:b});t.mutate({data:e})}catch(e){o.error(e instanceof Error?e.message:String(e))}},disabled:t.isPending,children:[(0,P.jsx)(w,{className:`mr-1.5 h-3.5 w-3.5`}),t.isPending?E(`saving`):E(`saveRuntimeSettings`)]})})]})}function pe(){let{data:e,isLoading:t}=ee(),n=M();return t||!e?(0,P.jsx)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:(0,P.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:E(`runtimeLoading`)})}):(0,P.jsx)(fe,{config:e,updateRuntime:n})}export{pe as RuntimeConfig};
1
+ import{i as e}from"./chunk-DF37yw5_.js";import{r as t}from"./pwa-Cp7pPvsZ.js";import{Gt as n,Jt as r,Kt as i,Ut as a,Xn as o,Yt as s,Zt as c,dn as l,ln as u,pn as d,qt as f,sn as p,ur as m,xr as h}from"./api-CXWxExzS.js";import{L as g,R as _,Zt as v,ft as y}from"./app-presenter-provider-DdD2Q7jZ.js";import{X as b}from"./context-menu-C0qywo73.js";import{i as x}from"./x-waP-WLuT.js";import{t as S}from"./plus-C42o6xrD.js";import{t as C}from"./rotate-cw-CWFIat29.js";import{t as w}from"./save-C1G0ZU-G.js";import{t as T}from"./trash-2-BVQs-0ji.js";import{s as E}from"./i18n-ByVUrt9w.js";import{a as D,i as O,n as k,r as A,t as j}from"./select-BJ-EjmCz.js";import{b as M,t as ee}from"./use-config-M1L4xn8c.js";import{t as te}from"./form-actions-CZxcWXSm.js";var N=e(h(),1),P=m(),F={healthy:`runtimeControlHealthy`,"starting-service":`runtimeControlStartingService`,"restarting-service":`runtimeControlRestartingService`,"stopping-service":`runtimeControlStoppingService`,"restarting-app":`runtimeControlRestartingApp`,recovering:`runtimeControlRecovering`,failed:`runtimeControlFailed`},I={running:`runtimeControlServiceRunning`,stopped:`runtimeControlServiceStopped`,starting:`runtimeControlServiceStarting`,stopping:`runtimeControlServiceStopping`,restarting:`runtimeControlServiceRestarting`},L={"desktop-embedded":`runtimeControlEnvironmentDesktop`,"managed-local-service":`runtimeControlEnvironmentManagedService`,"self-hosted-web":`runtimeControlEnvironmentSelfHosted`,"shared-web":`runtimeControlEnvironmentSharedWeb`};function R(e){return E(F[e]??`runtimeControlUnavailable`)}function z(e){return E(I[e]??`runtimeControlServiceUnknown`)}function B(e){return E(L[e.environment])}function V(e,t){return t===`start-service`?e?.canStartService:t===`stop-service`?e?.canStopService:e?.canRestartService}function H(e){return e?[{action:`start-service`,capability:e.canStartService,label:E(`runtimeControlStartService`),icon:`play`},{action:`restart-service`,capability:e.canRestartService,label:E(`runtimeControlRestartService`),icon:`rotate`},{action:`stop-service`,capability:e.canStopService,label:E(`runtimeControlStopService`),icon:`square`,variant:`destructive`},{action:`restart-app`,capability:e.canRestartApp,label:E(`runtimeControlRestartApp`),icon:`rotate`,variant:`secondary`}].filter(e=>e.capability.available||!!e.capability.reasonIfUnavailable):[]}function U(e){let{busy:t,icon:n}=e;return t?(0,P.jsx)(x,{className:`mr-2 h-4 w-4 animate-spin`}):n===`play`?(0,P.jsx)(b,{className:`mr-2 h-4 w-4`}):n===`square`?(0,P.jsx)(v,{className:`mr-2 h-4 w-4`}):(0,P.jsx)(C,{className:`mr-2 h-4 w-4`})}function W(){let{busy:e,busyAction:t,controlView:n,errorMessage:i,pendingRestart:a,visibleLifecycle:c,visibleMessage:u,visibleServiceState:m}=p(),h=H(n??void 0),g=async e=>{let t=V(n,e);if(!t?.available){o.error(d(t?.reasonIfUnavailable)??E(`runtimeControlLoadFailed`));return}if(!(e===`stop-service`&&t.requiresConfirmation&&!window.confirm(E(`runtimeControlStopServiceConfirm`))))try{let t=await l.runRuntimeControlAction(e);o.success(d(t.message)??t.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}},_=async()=>{if(!n?.canRestartApp.available){o.error(d(n?.canRestartApp.reasonIfUnavailable)??E(`runtimeRestartAppUnavailable`));return}if(window.confirm(E(`runtimeControlRestartAppConfirm`)))try{let e=await l.runRuntimeControlAction(`restart-app`);o.success(d(e.message)??e.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}};return(0,P.jsx)(r,{title:E(`runtimeControlTitle`),description:E(`runtimeControlDescription`),children:(0,P.jsxs)(f,{children:[(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-center md:justify-between`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:z(m)}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:n?B(n):E(`runtimeControlLoading`)})]}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:u}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:R(c)}),n?.managementHint?(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(n.managementHint)}):null,i&&!e?(0,P.jsx)(`p`,{className:`text-sm text-amber-700`,children:i}):null]}),a?(0,P.jsxs)(`div`,{className:`space-y-3 bg-amber-50/75 p-4 dark:bg-amber-950/20`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-amber-900`,children:E(`runtimeControlPendingRestartTitle`)}),(0,P.jsx)(`p`,{className:`text-sm text-amber-800`,children:E(`runtimeControlPendingRestartDescription`)}),a.changedPaths.length>0?(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.08em] text-amber-700`,children:E(`runtimeControlPendingRestartPaths`)}),(0,P.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a.changedPaths.map(e=>(0,P.jsx)(`span`,{className:`rounded-full bg-background/80 px-2.5 py-1 text-xs text-amber-800 dark:text-amber-300`,children:e},e))})]}):null]}):null,(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsx)(`div`,{className:`flex flex-col gap-3 md:flex-row md:flex-wrap`,children:h.map(n=>(0,P.jsxs)(s,{type:`button`,variant:n.variant??`default`,onClick:()=>{if(n.action===`restart-app`){_();return}g(n.action)},disabled:!n.capability.available||e,children:[(0,P.jsx)(U,{icon:n.icon,busy:t===n.action}),n.label]},n.action))}),h.filter(e=>!e.capability.available&&e.capability.reasonIfUnavailable).map(e=>(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(e.capability.reasonIfUnavailable)},`${e.action}-reason`))]})]})})}function G(e){let{description:t,title:n}=e;return(0,P.jsx)(y,{tone:`neutral`,title:n,description:t})}function K(e){let{children:t}=e;return(0,P.jsx)(r,{title:E(`runtimePresenceTitle`),description:E(`runtimePresenceDescription`),children:(0,P.jsx)(f,{children:t})})}function q(){let e=u().runtimeControlView?.environment,t=_(e=>e.supported),n=_(e=>e.initialized),r=_(e=>e.busyAction),o=_(e=>e.snapshot);return(0,N.useEffect)(()=>{if(e===`desktop-embedded`){g.start();return}g.markUnsupported()},[e]),e===`desktop-embedded`?(0,P.jsxs)(K,{children:[(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(y,{tone:`neutral`,title:E(`runtimePresenceBehaviorLabel`),description:o?.closeToBackground?E(`runtimePresenceBehaviorBackground`):E(`runtimePresenceBehaviorQuit`),className:`rounded-xl`})}),!n||t&&!o?(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)}):null,o?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(i,{title:E(`runtimePresenceCloseToBackground`),description:E(`runtimePresenceCloseToBackgroundHelp`),control:(0,P.jsx)(a,{id:`runtime-presence-close-background`,"aria-label":E(`runtimePresenceCloseToBackground`),checked:o.closeToBackground,disabled:r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({closeToBackground:e})}})}),(0,P.jsx)(i,{title:E(`runtimePresenceLaunchAtLogin`),description:o.supportsLaunchAtLogin?E(`runtimePresenceLaunchAtLoginHelp`):o.launchAtLoginReason??E(`runtimePresenceLaunchAtLoginUnavailable`),control:(0,P.jsx)(a,{id:`runtime-presence-launch-login`,"aria-label":E(`runtimePresenceLaunchAtLogin`),checked:o.launchAtLogin,disabled:!o.supportsLaunchAtLogin||r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({launchAtLogin:e})}})})]}):null]}):e===`managed-local-service`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceManagedLocalTitle`),description:E(`runtimePresenceManagedLocalDescription`)})})}):e===`self-hosted-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSelfHostedTitle`),description:E(`runtimePresenceSelfHostedDescription`)})})}):e===`shared-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSharedTitle`),description:E(`runtimePresenceSharedDescription`)})})}):(0,P.jsx)(K,{children:(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)})})}function J(){return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(W,{}),(0,P.jsx)(q,{}),(0,P.jsx)(t,{})]})}var Y={wireDialect:`acp`,processScope:`per-session`,command:``,args:[`acp`],env:{},cwd:``,startupTimeoutMs:8e3,probeTimeoutMs:3e3,requestTimeoutMs:12e4};function X(){return{id:``,default:!1,workspace:``,model:``,runtime:``,contextTokens:void 0}}function Z(){return{agentId:``,match:{channel:``,accountId:``}}}function Q(){return{id:``,enabled:!0,label:``,type:`narp-stdio`,config:Y,configText:JSON.stringify(Y,null,2)}}function ne(e){return{id:e.id??``,default:!!e.default,displayName:e.displayName??``,description:e.description??``,avatar:e.avatar??``,workspace:e.workspace??``,model:e.model??``,runtime:e.runtime??e.engine??``,contextTokens:e.contextTokens}}function re(e){return{agentId:e.agentId??``,match:{channel:e.match?.channel??``,accountId:e.match?.accountId??``,peer:e.match?.peer?{kind:e.match.peer.kind,id:e.match.peer.id}:void 0}}}function ie(e){let t=e.trim();if(!t)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function ae(e){return{companionEnabled:e.companion?.enabled===!0,agents:(e.agents.list??[]).map(ne),bindings:(e.bindings??[]).map(re),runtimeEntries:Object.entries(e.agents.runtimes?.entries??{}).map(([e,t])=>({id:e,enabled:t.enabled!==!1,label:t.label??``,type:t.type,config:t.config??{},configText:JSON.stringify(t.config??{},null,2)})),dmScope:e.session?.dmScope??`per-channel-peer`,defaultContextTokens:e.agents.defaults.contextTokens??2e5,defaultEngine:e.agents.defaults.engine??`native`}}function oe(e){let t={id:e.id.trim()};e.default&&(t.default=!0),e.displayName?.trim()&&(t.displayName=e.displayName.trim()),e.description?.trim()&&(t.description=e.description.trim()),e.avatar?.trim()&&(t.avatar=e.avatar.trim()),e.workspace?.trim()&&(t.workspace=e.workspace.trim()),e.model?.trim()&&(t.model=e.model.trim());let n=e.runtime?.trim()??e.engine?.trim();return n&&(t.engine=n),typeof e.contextTokens==`number`&&(t.contextTokens=Math.max(1e3,e.contextTokens)),t}function $(e){let t=e.agents.map((e,t)=>{if(!e.id.trim())throw Error(E(`agentIdRequiredError`).replace(`{index}`,String(t)));return oe(e)}),n=t.map(e=>e.id).filter((e,t,n)=>n.indexOf(e)!==t);if(n.length>0)throw Error(`${E(`duplicateAgentId`)}: ${n[0]}`);let r=e.bindings.map((t,n)=>{let r=t.agentId.trim(),i=t.match.channel.trim(),a=t.match.accountId?.trim()??``,o=t.match.peer?.kind,s=t.match.peer?.id?.trim()??``;if(!r)throw Error(E(`bindingAgentIdRequired`).replace(`{index}`,String(n)));if(!e.knownAgentIds.has(r))throw Error(`${E(`bindingAgentIdNotFound`).replace(`{index}`,String(n))}: ${r}`);if(!i)throw Error(E(`bindingChannelRequired`).replace(`{index}`,String(n)));let c={agentId:r,match:{channel:i}};if(a&&(c.match.accountId=a),o){if(!s)throw Error(E(`bindingPeerIdRequired`).replace(`{index}`,String(n)));c.match.peer={kind:o,id:s}}return c}),i=e.runtimeEntries.reduce((e,t,n)=>{let r=t.id.trim(),i=t.type.trim();if(!r)throw Error(E(`runtimeEntryIdRequired`).replace(`{index}`,String(n)));if(!i)throw Error(E(`runtimeEntryTypeRequired`).replace(`{id}`,r));if(e[r])throw Error(`${E(`runtimeEntryDuplicate`)}: ${r}`);let a=t.configText.trim()?JSON.parse(t.configText):{};if(a&&(typeof a!=`object`||Array.isArray(a)))throw Error(E(`runtimeEntryConfigObjectRequired`).replace(`{id}`,r));return e[r]={enabled:t.enabled!==!1,...t.label?.trim()?{label:t.label.trim()}:{},type:i,config:a??{}},e},{});return{companion:{enabled:e.companionEnabled},agents:{defaults:{contextTokens:Math.max(1e3,e.defaultContextTokens),engine:e.defaultEngine.trim()||`native`},list:t,runtimes:{entries:i}},bindings:r,session:{dmScope:e.dmScope}}}function se({agents:e,onAddAgent:t,onRemoveAgent:i,onSetDefaultAgent:o,onUpdateAgent:c}){return(0,P.jsx)(r,{title:E(`agentList`),description:E(`agentListHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addAgent`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>c(t,{id:e.target.value}),placeholder:E(`agentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.workspace??``,onChange:e=>c(t,{workspace:e.target.value}),placeholder:E(`workspaceOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.model??``,onChange:e=>c(t,{model:e.target.value}),placeholder:E(`modelOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.runtime??e.engine??``,onChange:e=>c(t,{runtime:e.target.value}),placeholder:E(`engineOverridePlaceholder`)}),(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:e.contextTokens??``,onChange:e=>c(t,{contextTokens:ie(e.target.value)}),placeholder:E(`contextTokensPlaceholder`)})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,P.jsx)(a,{checked:!!e.default,onCheckedChange:e=>o(t,e)}),(0,P.jsx)(`span`,{children:E(`defaultAgent`)})]}),(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})]})]},`${t}-${e.id}`))})})}function ce({bindings:e,onAddBinding:t,onRemoveBinding:i,onUpdateBinding:a}){return(0,P.jsx)(r,{title:E(`bindings`),description:E(`bindingsHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addBinding`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>{let r=e.match.peer?.kind??``;return(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3`,children:[(0,P.jsx)(n,{value:e.agentId,onChange:n=>a(t,{...e,agentId:n.target.value}),placeholder:E(`targetAgentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.match.channel,onChange:n=>a(t,{...e,match:{...e.match,channel:n.target.value}}),placeholder:E(`channelPlaceholder`)}),(0,P.jsx)(n,{value:e.match.accountId??``,onChange:n=>a(t,{...e,match:{...e.match,accountId:n.target.value}}),placeholder:E(`accountIdOptionalPlaceholder`)}),(0,P.jsxs)(j,{value:r||`__none__`,onValueChange:n=>{let r=n===`__none__`?``:n;a(t,r?{...e,match:{...e.match,peer:{kind:r,id:e.match.peer?.id??``}}}:{...e,match:{...e.match,peer:void 0}})},children:[(0,P.jsx)(O,{children:(0,P.jsx)(D,{})}),(0,P.jsxs)(k,{children:[(0,P.jsx)(A,{value:`__none__`,children:E(`peerKindOptional`)}),(0,P.jsx)(A,{value:`direct`,children:E(`peerKindDirect`)}),(0,P.jsx)(A,{value:`group`,children:E(`peerKindGroup`)}),(0,P.jsx)(A,{value:`channel`,children:E(`peerKindChannel`)})]})]}),(0,P.jsx)(n,{value:e.match.peer?.id??``,onChange:n=>a(t,{...e,match:{...e.match,peer:r?{kind:r,id:n.target.value}:void 0}}),placeholder:E(`peerIdPlaceholder`)})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})})]},`${t}-${e.agentId}`)})})})}function le({entries:e,onAddEntry:t,onRemoveEntry:i,onUpdateEntry:o}){return(0,P.jsx)(r,{title:E(`runtimeEntries`),description:E(`runtimeEntriesHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addRuntimeEntry`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>o(t,{id:e.target.value}),placeholder:E(`runtimeEntryIdPlaceholder`)}),(0,P.jsx)(n,{value:e.label??``,onChange:e=>o(t,{label:e.target.value}),placeholder:E(`runtimeEntryLabelPlaceholder`)}),(0,P.jsx)(n,{value:e.type,onChange:e=>o(t,{type:e.target.value}),placeholder:E(`runtimeEntryTypePlaceholder`)}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg bg-background/65 px-3 py-2`,children:[(0,P.jsx)(`span`,{className:`text-sm text-foreground`,children:E(`enabled`)}),(0,P.jsx)(a,{checked:e.enabled!==!1,onCheckedChange:e=>o(t,{enabled:e})})]})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`label`,{className:`text-sm font-medium text-foreground`,children:E(`runtimeEntryConfigJson`)}),(0,P.jsx)(`textarea`,{className:`min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-sm`,value:e.configText,onChange:e=>o(t,{configText:e.target.value}),spellCheck:!1})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`mr-2 h-4 w-4`}),E(`delete`)]})})]},`${t}-${e.id||`runtime-entry`}`))})})}var ue=[{value:`main`,labelKey:`dmScopeMain`},{value:`per-peer`,labelKey:`dmScopePerPeer`},{value:`per-channel-peer`,labelKey:`dmScopePerChannelPeer`},{value:`per-account-channel-peer`,labelKey:`dmScopePerAccountChannelPeer`}];function de({companionEnabled:e,defaultContextTokens:t,defaultEngine:o,dmScope:s,onCompanionEnabledChange:c,onDefaultContextTokensChange:l,onDefaultEngineChange:u,onDmScopeChange:d}){return(0,P.jsx)(r,{title:E(`dmScope`),description:E(`dmScopeHelp`),children:(0,P.jsxs)(f,{children:[(0,P.jsx)(i,{title:E(`runtimeCompanionEnabled`),description:E(`runtimeCompanionEnabledHelp`),control:(0,P.jsx)(a,{checked:e,onCheckedChange:c})}),(0,P.jsx)(i,{title:E(`defaultContextTokens`),description:E(`defaultContextTokensHelp`),control:(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:t,onChange:e=>l(Math.max(1e3,Number.parseInt(e.target.value,10)||1e3)),className:`w-36`})}),(0,P.jsx)(i,{title:E(`defaultEngine`),description:E(`defaultEngineHelp`),control:(0,P.jsx)(n,{value:o,onChange:e=>u(e.target.value),placeholder:E(`defaultEnginePlaceholder`),className:`w-56`})}),(0,P.jsx)(i,{title:E(`dmScope`),control:(0,P.jsxs)(j,{value:s,onValueChange:e=>d(e),children:[(0,P.jsx)(O,{className:`w-56`,children:(0,P.jsx)(D,{})}),(0,P.jsx)(k,{children:ue.map(e=>(0,P.jsx)(A,{value:e.value,children:E(e.labelKey)},e.value))})]})})]})})}function fe({config:e,updateRuntime:t}){let n=(0,N.useMemo)(()=>ae(e),[e]),[r,i]=(0,N.useState)(n.agents),[a,l]=(0,N.useState)(n.bindings),[u,d]=(0,N.useState)(n.runtimeEntries),[f,p]=(0,N.useState)(n.dmScope),[m,h]=(0,N.useState)(n.companionEnabled),[g,_]=(0,N.useState)(n.defaultContextTokens),[v,y]=(0,N.useState)(n.defaultEngine),b=(0,N.useMemo)(()=>{let e=new Set([`main`]);return r.forEach(t=>{let n=t.id.trim();n&&e.add(n)}),e},[r]);return(0,P.jsxs)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:[(0,P.jsx)(J,{}),(0,P.jsx)(de,{companionEnabled:m,dmScope:f,defaultContextTokens:g,defaultEngine:v,onCompanionEnabledChange:h,onDmScopeChange:p,onDefaultContextTokensChange:_,onDefaultEngineChange:y}),(0,P.jsx)(le,{entries:u,onUpdateEntry:(e,t)=>d(n=>n.map((n,r)=>r===e?{...n,...t}:n)),onRemoveEntry:e=>d(t=>t.filter((t,n)=>n!==e)),onAddEntry:()=>d(e=>[...e,Q()])}),(0,P.jsx)(se,{agents:r,onUpdateAgent:(e,t)=>{i(n=>n.map((n,r)=>r===e?{...n,...t}:n))},onRemoveAgent:e=>i(t=>t.filter((t,n)=>n!==e)),onAddAgent:()=>i(e=>[...e,X()]),onSetDefaultAgent:(e,t)=>i(n=>t?n.map((t,n)=>({...t,default:n===e})):n.map((t,n)=>n===e?{...t,default:!1}:t))}),(0,P.jsx)(ce,{bindings:a,onUpdateBinding:(e,t)=>{l(n=>n.map((n,r)=>r===e?t:n))},onRemoveBinding:e=>l(t=>t.filter((t,n)=>n!==e)),onAddBinding:()=>l(e=>[...e,Z()])}),(0,P.jsx)(te,{children:(0,P.jsxs)(s,{type:`button`,size:`sm`,onClick:()=>{try{let e=$({companionEnabled:m,agents:r,bindings:a,runtimeEntries:u,dmScope:f,defaultContextTokens:g,defaultEngine:v,knownAgentIds:b});t.mutate({data:e})}catch(e){o.error(e instanceof Error?e.message:String(e))}},disabled:t.isPending,children:[(0,P.jsx)(w,{className:`mr-1.5 h-3.5 w-3.5`}),t.isPending?E(`saving`):E(`saveRuntimeSettings`)]})})]})}function pe(){let{data:e,isLoading:t}=ee(),n=M();return t||!e?(0,P.jsx)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:(0,P.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:E(`runtimeLoading`)})}):(0,P.jsx)(fe,{config:e,updateRuntime:n})}export{pe as RuntimeConfig};
@@ -1 +1 @@
1
- import{i as e}from"./chunk-DF37yw5_.js";import{S as t}from"./theme-provider-BsJ6HxeX.js";import{Lt as n,Qn as r,Yt as i,Zn as a,_n as o,lr as s,ur as c,xr as l}from"./api-CXWxExzS.js";import{$t as u,Ft as d,Nt as f,Pt as p,d as m,en as h,m as g,rn as _,zt as ee}from"./app-presenter-provider-BB3Xl8b0.js";import{t as v}from"./createLucideIcon-C3LSyx-e.js";import{G as y,W as b,g as x,h as S,ut as C,yt as w}from"./context-menu-C0qywo73.js";import{z as T}from"./dist-D9h2cWk3.js";import{t as E}from"./circle-dashed-KGwElDWV.js";import{i as D}from"./x-waP-WLuT.js";import{t as O}from"./refresh-cw-DOg2pWGu.js";import{t as k}from"./trash-2-BVQs-0ji.js";import{s as A}from"./i18n-ByVUrt9w.js";import{a as j,d as M,f as N,i as P,l as F,n as I,o as L,r as R,t as z,u as B}from"./dialog-DMKYZDFu.js";import{g as V,h as H,p as U}from"./provider-models-D8WOdsdu.js";var W=v(`CirclePause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),te=v(`Radar`,[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`,key:`z3du51`}],[`path`,{d:`M4 6h.01`,key:`oypzma`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`,key:`qzzz0`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`,key:`1yjesh`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`,key:`1u2y91`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`m13.41 10.59 5.66-5.66`,key:`mhq4k0`}]]),G=v(`ShieldPlus`,[[`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 12h6`,key:`1c52cq`}],[`path`,{d:`M12 9v6`,key:`199k2o`}]]),ne=v(`Unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),K=e(l(),1),q=c();function re({appId:e,appTitle:t,dataEntry:n,dataLoading:r,deleteError:a,deletePending:o,open:s,purgeData:c,onDelete:l,onOpenChange:u,onPurgeDataChange:f}){let m=(0,K.useRef)(null);(0,K.useEffect)(()=>{a&&m.current?.focus()},[a]);let h=()=>u(!1);return(0,q.jsx)(z,{open:s,onOpenChange:e=>!o&&u(e),children:(0,q.jsxs)(I,{className:`max-w-md`,onEscapeKeyDown:e=>o&&e.preventDefault(),onInteractOutside:e=>o&&e.preventDefault(),children:[(0,q.jsxs)(j,{showClose:!1,children:[(0,q.jsx)(L,{children:A(`serviceAppsDeleteConfirmTitle`)}),(0,q.jsxs)(R,{children:[A(`serviceAppsDeleteConfirmDescription`),` `,t]})]}),(0,q.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,q.jsx)(d,{checked:!c,description:A(`serviceAppsKeepDataDescription`),label:A(`appPackagesKeepData`),onClick:()=>f(!1)}),(0,q.jsx)(d,{checked:c,destructive:!0,disabled:!n||r,description:A(`serviceAppsDeleteDataDescription`),label:A(`appPackagesDeleteData`),onClick:()=>f(!0)})]}),n?(0,q.jsx)(`div`,{className:`mt-3`,children:(0,q.jsx)(p,{storage:n.storage,usage:n.usage})}):(0,q.jsx)(`p`,{role:`status`,className:`mt-3 text-xs text-muted-foreground`,children:A(r?`appPackagesLoading`:`serviceAppsDataUnavailable`)}),a?(0,q.jsx)(`p`,{ref:m,role:`alert`,tabIndex:-1,className:`mt-3 text-xs text-destructive`,children:a instanceof Error?a.message:A(`appPackagesActionFailed`)}):null,(0,q.jsxs)(P,{className:`mt-5 gap-2 sm:gap-0`,children:[(0,q.jsx)(i,{autoFocus:!0,type:`button`,variant:`outline`,disabled:o,onClick:h,children:A(`cancel`)}),(0,q.jsxs)(i,{type:`button`,variant:c?`destructive`:`default`,disabled:o||c&&!n,onClick:()=>l(e,c,h),children:[o?(0,q.jsx)(D,{className:`mr-1.5 h-3.5 w-3.5 animate-spin`}):null,A(c?`appDataDeletePermanently`:`serviceAppsDelete`)]})]})]})})}function ie({action:e,grants:t,agents:n,grantAgentPending:r,onGrantAgent:i,onRevoke:a}){let[o,s]=(0,K.useState)(!1),c=new Set(t.flatMap(e=>e.caller.surface===`agent`?[e.caller.agentId]:[])),l=n.filter(e=>!c.has(e.id));return(0,q.jsxs)(`div`,{className:`py-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`flex h-6 w-6 shrink-0 items-center justify-center text-muted-foreground`,children:(0,q.jsx)(b,{className:`h-3.5 w-3.5`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-xs font-medium text-foreground`,children:e.title??e.name}),e.description?(0,q.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:e.description}):null]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[e.runtimeState?(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:A(`serviceAppsRuntimeState_${e.runtimeState}`)}):null,(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e.risk}),(0,q.jsxs)(U,{open:o,onOpenChange:s,children:[(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,disabled:r||l.length===0,className:`ml-1 rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:cursor-not-allowed disabled:opacity-40`,title:A(`serviceAppsGrantToAgent`),"aria-label":A(`serviceAppsGrantToAgent`),children:(0,q.jsx)(G,{className:`h-3.5 w-3.5`})})}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`px-2 py-1.5 text-[11px] font-medium text-muted-foreground`,children:A(`serviceAppsGrantToAgent`)}),l.map(t=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{i(e.id,t.id),s(!1)},className:`${x} text-foreground ${S.item}`,children:[(0,q.jsx)(w,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`min-w-0 truncate`,children:t.displayName?.trim()||t.id})]},t.id))]})]})]})]}),t.map(e=>(0,q.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between gap-2 pl-8`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(u,{className:`h-3 w-3 shrink-0 text-emerald-500`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[A(`serviceAppsGrantedTo`),` `,J(e)]})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>a(e),className:`rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-rose-600 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,title:A(`serviceAppsRevokeGrant`),"aria-label":A(`serviceAppsRevokeGrant`),children:(0,q.jsx)(k,{className:`h-3 w-3`})})]},`${e.caller.surface}:${J(e)}:${e.actionId}`))]})}function J(e){return e.caller.surface===`panel-app`?e.caller.appId:e.caller.agentId}function Y({app:e,actions:n,actionsOpen:r,grants:i,agents:a,deletePending:s,deleteError:c,dataEntry:l,dataLoading:u,isDiscovering:d,onActionsOpenChange:f,onDiscover:p,onManagePackage:_,onDelete:ee,onResetDelete:v,onRestart:y,onRevoke:b,onGrantAgent:x,grantAgentPending:S}){let[w,E]=(0,K.useState)(!1),[O,j]=(0,K.useState)(!1),[P,I]=(0,K.useState)(!1),[L,R]=(0,K.useState)(!1),z=e.status!==`starting`&&e.status!==`stopped`,W=e.status===`running`||e.status===`failed`,G=e.sourceKind===`package`?e.packageId:void 0,J=se(e),Y=()=>{E(!1),R(!1),v(),j(!0)};return(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(`section`,{className:`group bg-card transition-colors hover:bg-[var(--interaction-hover)]`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-3 px-4 py-3.5`,children:[(0,q.jsx)(`div`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-4 w-4`})}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:e.title}),(0,q.jsx)(ae,{status:e.status})]}),e.description?(0,q.jsx)(`div`,{className:`mt-1 truncate text-xs leading-5 text-muted-foreground`,children:e.description}):null,e.lastError?(0,q.jsx)(`div`,{className:`mt-1.5 truncate text-xs text-rose-600`,title:e.lastError,children:e.lastError}):null]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[z?(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`button`,{type:`button`,disabled:d,className:`inline-flex h-7 items-center gap-1.5 rounded-md bg-foreground px-2.5 text-xs font-medium text-background transition-colors hover:bg-foreground/85 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-foreground/40 disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":A(`serviceAppsDiscoverActions`),onClick:()=>p(e.id),children:[d?(0,q.jsx)(D,{className:`h-3.5 w-3.5 animate-spin`}):(0,q.jsx)(te,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{children:A(`serviceAppsConnect`)})]})}),(0,q.jsx)(B,{side:`bottom`,className:`max-w-56 text-xs`,children:A(`serviceAppsDiscoverActionsHint`)})]}):null,(0,q.jsxs)(U,{open:w,onOpenChange:E,children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:opacity-50`,"aria-label":A(`serviceAppsMoreActions`),disabled:s,children:(0,q.jsx)(C,{className:`h-3.5 w-3.5`})})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsMoreActions`)})]}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(X,{disabled:!W,icon:ne,label:A(`serviceAppsDisconnectRuntime`),onClick:()=>{E(!1),y(e.id)}}),G?(0,q.jsx)(X,{icon:t,label:A(`serviceAppsManagePackage`),onClick:()=>{E(!1),_(G)}}):(0,q.jsx)(X,{destructive:!0,disabled:s,icon:k,label:A(`serviceAppsDelete`),onClick:Y}),(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(m,{page:g(`service-app`,e.id,e.title),onSelect:()=>E(!1)})]})]})]})]}),(0,q.jsxs)(`div`,{className:`border-t border-border/60`,children:[(0,q.jsxs)(`div`,{className:`flex items-stretch`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!r),className:`flex min-w-0 flex-1 items-center justify-between gap-2 px-4 py-2 text-left text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":r,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsActionsSection`)}),(0,q.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:n.length})]}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 shrink-0 text-muted-foreground/70 transition-transform`,r&&`rotate-180`)})]}),J.length>0?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>I(e=>!e),className:`flex shrink-0 items-center gap-1 border-l border-border/60 px-3 text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":P,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsDetails`)}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 transition-transform`,P&&`rotate-180`)})]}):null]}),r?(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:n.length===0?(0,q.jsx)(`div`,{className:`py-1 text-xs text-muted-foreground`,children:A(`serviceAppsActionsEmpty`)}):(0,q.jsx)(`div`,{className:`divide-y divide-border/50`,children:n.map(e=>(0,q.jsx)(ie,{action:e,grants:i.filter(t=>t.actionId===e.id),agents:a,grantAgentPending:S,onGrantAgent:x,onRevoke:b},e.id))})}):null,P?(0,q.jsx)(ce,{rows:J}):null]}),e.sourceKind===`package`?null:(0,q.jsx)(re,{appId:e.id,appTitle:e.title,dataEntry:l,dataLoading:u,deleteError:c,deletePending:s,open:O,purgeData:L,onDelete:ee,onOpenChange:j,onPurgeDataChange:R})]})})}function ae({status:e}){let t=oe(e),n=t.icon;return(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`span`,{className:o(`inline-flex shrink-0 items-center gap-1 text-xs`,t.className),"aria-label":t.label,children:[(0,q.jsx)(n,{className:o(`h-3 w-3`,t.iconClassName)}),(0,q.jsx)(`span`,{children:t.label})]})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:t.tooltip})]})}function oe(e){switch(e){case`running`:return{className:`text-emerald-700`,icon:_,label:A(`serviceAppsStatus_running`),tooltip:A(`serviceAppsStatusHint_running`)};case`starting`:return{className:`text-blue-700`,icon:D,iconClassName:`animate-spin`,label:A(`serviceAppsStatus_starting`),tooltip:A(`serviceAppsStatusHint_starting`)};case`failed`:return{className:`text-rose-700`,icon:y,label:A(`serviceAppsStatus_failed`),tooltip:A(`serviceAppsStatusHint_failed`)};case`stopped`:return{className:`text-muted-foreground`,icon:W,label:A(`serviceAppsStatus_stopped`),tooltip:A(`serviceAppsStatusHint_stopped`)};default:return{className:`text-muted-foreground`,icon:E,label:A(`serviceAppsStatus_idle`),tooltip:A(`serviceAppsStatusHint_idle`)}}}function X({destructive:e=!1,disabled:t=!1,icon:n,label:r,onClick:i}){return(0,q.jsxs)(`button`,{type:`button`,className:o(x,e?S.destructive:`text-foreground ${S.item}`),disabled:t,onClick:i,children:[(0,q.jsx)(n,{className:o(`h-4 w-4 shrink-0`,!e&&`text-muted-foreground`)}),(0,q.jsx)(`span`,{children:r})]})}function se(e){let t=[e.command,...e.args??[]].filter(e=>!!e?.trim()).join(` `);return[{label:A(`serviceAppsCommand`),value:t},{label:A(`serviceAppsCwd`),value:e.cwd},{label:A(`serviceAppsManifest`),value:e.manifestPath},{label:A(`serviceAppsLastStarted`),value:e.lastStartedAt},{label:A(`serviceAppsLastReady`),value:e.lastReadyAt},{label:A(`serviceAppsLastFailed`),value:e.lastFailedAt}].filter(e=>e.value)}function ce({rows:e}){return(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:(0,q.jsx)(`dl`,{className:`grid grid-cols-[4.75rem_minmax(0,1fr)] gap-x-3 gap-y-1.5 text-xs`,children:e.map(e=>(0,q.jsx)(le,{label:e.label,value:e.value},e.label))})})}function le({label:e,value:t}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:`text-muted-foreground/70`,children:e}),(0,q.jsx)(`dd`,{className:`min-w-0 truncate font-mono text-muted-foreground`,title:t,children:t})]})}var Z=[`service-apps`],Q=[`service-actions`],$=[`service-action-grants`],ue=[`app-data`];function de(){return r({queryKey:Z,queryFn:()=>n.serviceApps.listServiceApps()})}function fe(){return r({queryKey:Q,queryFn:()=>n.serviceApps.listServiceActions()})}function pe(){return r({queryKey:$,queryFn:()=>n.serviceApps.listServiceActionGrants()})}function me(){let e=s();return a({mutationFn:e=>n.serviceApps.restartServiceApp(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q})])}})}function he(){let e=s();return a({mutationFn:e=>n.serviceApps.deleteServiceApp(e.appId,e.purgeData),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$}),e.invalidateQueries({queryKey:ue})])}})}function ge(){let e=s();return a({mutationFn:e=>n.serviceApps.discoverServiceAppActions(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:Z})}})}function _e(){let e=s();return a({mutationFn:e=>n.serviceApps.revokeServiceActionGrant(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ve(){let e=s();return a({mutationFn:e=>n.serviceApps.grantAgentServiceActions(e.agentId,e.actionIds),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ye({onManagePackage:e,resourceId:t}){let n=de(),r=f(),i=fe(),a=pe(),o=ee(),s=he(),c=me(),l=ge(),u=_e(),d=ve(),[p,m]=(0,K.useState)({}),[g,_]=(0,K.useState)({}),v=()=>{n.refetch(),i.refetch(),a.refetch(),r.refetch()};if(n.isLoading||i.isLoading||a.isLoading)return(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-muted-foreground`,children:A(`serviceAppsLoading`)});if(n.isError||i.isError||a.isError){let e=n.error??i.error??a.error;return(0,q.jsx)(`div`,{className:`p-4 text-sm text-rose-600`,children:e instanceof Error?e.message:A(`serviceAppsLoadFailed`)})}let y=(n.data?.entries??[]).filter(e=>!t||e.id===t);if(t&&!y.length)return(0,q.jsx)(`p`,{role:`alert`,className:`p-4`,children:A(`resourceNotFound`)});let b=n.data?.diagnostics??[],x=i.data?.actions??[],S=a.data?.grants??[],C=e=>{l.mutateAsync(e).then(t=>{m(n=>({...n,[e]:t.actions})),_(t=>({...t,[e]:!0}))})},w=(r.data?.entries??[]).filter(e=>e.source===`workspace-service`&&e.lifecycle===`active`);return(0,q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card text-card-foreground`,children:[(0,q.jsx)(`div`,{className:`flex min-h-12 shrink-0 items-center justify-end border-b border-border/60 px-4 py-2`,children:(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-label":A(`serviceAppsRefresh`),onClick:v,children:(0,q.jsx)(O,{className:`h-3.5 w-3.5`})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsRefresh`)})]})})}),b.length>0?(0,q.jsxs)(`div`,{role:`alert`,className:`mx-3 mt-3 rounded-xl border border-destructive/20 bg-destructive/5 px-3 py-2.5 text-xs text-destructive sm:mx-4`,children:[(0,q.jsx)(`div`,{className:`font-medium`,children:A(`serviceAppsLoadFailed`)}),(0,q.jsx)(`ul`,{className:`mt-1 space-y-1`,children:b.map(e=>(0,q.jsxs)(`li`,{className:`break-words`,children:[e.appId,`: `,e.message]},e.stagedPath))})]}):null,y.length===0?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 py-8 text-center`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-xs`,children:[(0,q.jsx)(`div`,{className:`mx-auto flex h-10 w-10 items-center justify-center rounded-xl bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-5 w-5`})}),(0,q.jsx)(`h2`,{className:`mt-3 text-sm font-semibold text-foreground`,children:A(`serviceAppsEmptyTitle`)}),(0,q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:A(`serviceAppsEmptyDescription`)})]})}):(0,q.jsx)(`div`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto p-3 sm:p-4`,children:(0,q.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-border/70 bg-card`,children:y.map(n=>(0,q.jsx)(Y,{app:n,actions:p[n.id]??x.filter(e=>e.appId===n.id),actionsOpen:g[n.id]??!!t,grants:S,agents:o.data?.agents??[],deletePending:s.isPending,deleteError:s.error,dataEntry:w.find(e=>e.appId===n.id),dataLoading:r.isLoading,isDiscovering:l.isPending,onActionsOpenChange:e=>_(t=>({...t,[n.id]:e})),onDiscover:C,onManagePackage:e,onDelete:(e,t,n)=>void s.mutate({appId:e,purgeData:t},{onSuccess:n}),onResetDelete:s.reset,onRestart:e=>void c.mutate(e),onRevoke:e=>void u.mutate({actionId:e.actionId,caller:e.caller}),onGrantAgent:(e,t)=>void d.mutate({actionIds:[e],agentId:t}),grantAgentPending:d.isPending},n.id))})})]})}export{ye as ServiceAppsPanel};
1
+ import{i as e}from"./chunk-DF37yw5_.js";import{S as t}from"./theme-provider-BsJ6HxeX.js";import{Lt as n,Qn as r,Yt as i,Zn as a,_n as o,lr as s,ur as c,xr as l}from"./api-CXWxExzS.js";import{$t as u,Ft as d,Nt as f,Pt as p,d as m,en as h,m as g,rn as _,zt as ee}from"./app-presenter-provider-DdD2Q7jZ.js";import{t as v}from"./createLucideIcon-C3LSyx-e.js";import{G as y,W as b,g as x,h as S,ut as C,yt as w}from"./context-menu-C0qywo73.js";import{z as T}from"./dist-D9h2cWk3.js";import{t as E}from"./circle-dashed-KGwElDWV.js";import{i as D}from"./x-waP-WLuT.js";import{t as O}from"./refresh-cw-DOg2pWGu.js";import{t as k}from"./trash-2-BVQs-0ji.js";import{s as A}from"./i18n-ByVUrt9w.js";import{a as j,d as M,f as N,i as P,l as F,n as I,o as L,r as R,t as z,u as B}from"./dialog-DMKYZDFu.js";import{g as V,h as H,p as U}from"./provider-models-D8WOdsdu.js";var W=v(`CirclePause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),te=v(`Radar`,[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`,key:`z3du51`}],[`path`,{d:`M4 6h.01`,key:`oypzma`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`,key:`qzzz0`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`,key:`1yjesh`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`,key:`1u2y91`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`m13.41 10.59 5.66-5.66`,key:`mhq4k0`}]]),G=v(`ShieldPlus`,[[`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 12h6`,key:`1c52cq`}],[`path`,{d:`M12 9v6`,key:`199k2o`}]]),ne=v(`Unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),K=e(l(),1),q=c();function re({appId:e,appTitle:t,dataEntry:n,dataLoading:r,deleteError:a,deletePending:o,open:s,purgeData:c,onDelete:l,onOpenChange:u,onPurgeDataChange:f}){let m=(0,K.useRef)(null);(0,K.useEffect)(()=>{a&&m.current?.focus()},[a]);let h=()=>u(!1);return(0,q.jsx)(z,{open:s,onOpenChange:e=>!o&&u(e),children:(0,q.jsxs)(I,{className:`max-w-md`,onEscapeKeyDown:e=>o&&e.preventDefault(),onInteractOutside:e=>o&&e.preventDefault(),children:[(0,q.jsxs)(j,{showClose:!1,children:[(0,q.jsx)(L,{children:A(`serviceAppsDeleteConfirmTitle`)}),(0,q.jsxs)(R,{children:[A(`serviceAppsDeleteConfirmDescription`),` `,t]})]}),(0,q.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,q.jsx)(d,{checked:!c,description:A(`serviceAppsKeepDataDescription`),label:A(`appPackagesKeepData`),onClick:()=>f(!1)}),(0,q.jsx)(d,{checked:c,destructive:!0,disabled:!n||r,description:A(`serviceAppsDeleteDataDescription`),label:A(`appPackagesDeleteData`),onClick:()=>f(!0)})]}),n?(0,q.jsx)(`div`,{className:`mt-3`,children:(0,q.jsx)(p,{storage:n.storage,usage:n.usage})}):(0,q.jsx)(`p`,{role:`status`,className:`mt-3 text-xs text-muted-foreground`,children:A(r?`appPackagesLoading`:`serviceAppsDataUnavailable`)}),a?(0,q.jsx)(`p`,{ref:m,role:`alert`,tabIndex:-1,className:`mt-3 text-xs text-destructive`,children:a instanceof Error?a.message:A(`appPackagesActionFailed`)}):null,(0,q.jsxs)(P,{className:`mt-5 gap-2 sm:gap-0`,children:[(0,q.jsx)(i,{autoFocus:!0,type:`button`,variant:`outline`,disabled:o,onClick:h,children:A(`cancel`)}),(0,q.jsxs)(i,{type:`button`,variant:c?`destructive`:`default`,disabled:o||c&&!n,onClick:()=>l(e,c,h),children:[o?(0,q.jsx)(D,{className:`mr-1.5 h-3.5 w-3.5 animate-spin`}):null,A(c?`appDataDeletePermanently`:`serviceAppsDelete`)]})]})]})})}function ie({action:e,grants:t,agents:n,grantAgentPending:r,onGrantAgent:i,onRevoke:a}){let[o,s]=(0,K.useState)(!1),c=new Set(t.flatMap(e=>e.caller.surface===`agent`?[e.caller.agentId]:[])),l=n.filter(e=>!c.has(e.id));return(0,q.jsxs)(`div`,{className:`py-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`flex h-6 w-6 shrink-0 items-center justify-center text-muted-foreground`,children:(0,q.jsx)(b,{className:`h-3.5 w-3.5`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-xs font-medium text-foreground`,children:e.title??e.name}),e.description?(0,q.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:e.description}):null]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[e.runtimeState?(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:A(`serviceAppsRuntimeState_${e.runtimeState}`)}):null,(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e.risk}),(0,q.jsxs)(U,{open:o,onOpenChange:s,children:[(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,disabled:r||l.length===0,className:`ml-1 rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:cursor-not-allowed disabled:opacity-40`,title:A(`serviceAppsGrantToAgent`),"aria-label":A(`serviceAppsGrantToAgent`),children:(0,q.jsx)(G,{className:`h-3.5 w-3.5`})})}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`px-2 py-1.5 text-[11px] font-medium text-muted-foreground`,children:A(`serviceAppsGrantToAgent`)}),l.map(t=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{i(e.id,t.id),s(!1)},className:`${x} text-foreground ${S.item}`,children:[(0,q.jsx)(w,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`min-w-0 truncate`,children:t.displayName?.trim()||t.id})]},t.id))]})]})]})]}),t.map(e=>(0,q.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between gap-2 pl-8`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(u,{className:`h-3 w-3 shrink-0 text-emerald-500`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[A(`serviceAppsGrantedTo`),` `,J(e)]})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>a(e),className:`rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-rose-600 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,title:A(`serviceAppsRevokeGrant`),"aria-label":A(`serviceAppsRevokeGrant`),children:(0,q.jsx)(k,{className:`h-3 w-3`})})]},`${e.caller.surface}:${J(e)}:${e.actionId}`))]})}function J(e){return e.caller.surface===`panel-app`?e.caller.appId:e.caller.agentId}function Y({app:e,actions:n,actionsOpen:r,grants:i,agents:a,deletePending:s,deleteError:c,dataEntry:l,dataLoading:u,isDiscovering:d,onActionsOpenChange:f,onDiscover:p,onManagePackage:_,onDelete:ee,onResetDelete:v,onRestart:y,onRevoke:b,onGrantAgent:x,grantAgentPending:S}){let[w,E]=(0,K.useState)(!1),[O,j]=(0,K.useState)(!1),[P,I]=(0,K.useState)(!1),[L,R]=(0,K.useState)(!1),z=e.status!==`starting`&&e.status!==`stopped`,W=e.status===`running`||e.status===`failed`,G=e.sourceKind===`package`?e.packageId:void 0,J=se(e),Y=()=>{E(!1),R(!1),v(),j(!0)};return(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(`section`,{className:`group bg-card transition-colors hover:bg-[var(--interaction-hover)]`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-3 px-4 py-3.5`,children:[(0,q.jsx)(`div`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-4 w-4`})}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:e.title}),(0,q.jsx)(ae,{status:e.status})]}),e.description?(0,q.jsx)(`div`,{className:`mt-1 truncate text-xs leading-5 text-muted-foreground`,children:e.description}):null,e.lastError?(0,q.jsx)(`div`,{className:`mt-1.5 truncate text-xs text-rose-600`,title:e.lastError,children:e.lastError}):null]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[z?(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`button`,{type:`button`,disabled:d,className:`inline-flex h-7 items-center gap-1.5 rounded-md bg-foreground px-2.5 text-xs font-medium text-background transition-colors hover:bg-foreground/85 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-foreground/40 disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":A(`serviceAppsDiscoverActions`),onClick:()=>p(e.id),children:[d?(0,q.jsx)(D,{className:`h-3.5 w-3.5 animate-spin`}):(0,q.jsx)(te,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{children:A(`serviceAppsConnect`)})]})}),(0,q.jsx)(B,{side:`bottom`,className:`max-w-56 text-xs`,children:A(`serviceAppsDiscoverActionsHint`)})]}):null,(0,q.jsxs)(U,{open:w,onOpenChange:E,children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:opacity-50`,"aria-label":A(`serviceAppsMoreActions`),disabled:s,children:(0,q.jsx)(C,{className:`h-3.5 w-3.5`})})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsMoreActions`)})]}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(X,{disabled:!W,icon:ne,label:A(`serviceAppsDisconnectRuntime`),onClick:()=>{E(!1),y(e.id)}}),G?(0,q.jsx)(X,{icon:t,label:A(`serviceAppsManagePackage`),onClick:()=>{E(!1),_(G)}}):(0,q.jsx)(X,{destructive:!0,disabled:s,icon:k,label:A(`serviceAppsDelete`),onClick:Y}),(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(m,{page:g(`service-app`,e.id,e.title),onSelect:()=>E(!1)})]})]})]})]}),(0,q.jsxs)(`div`,{className:`border-t border-border/60`,children:[(0,q.jsxs)(`div`,{className:`flex items-stretch`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!r),className:`flex min-w-0 flex-1 items-center justify-between gap-2 px-4 py-2 text-left text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":r,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsActionsSection`)}),(0,q.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:n.length})]}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 shrink-0 text-muted-foreground/70 transition-transform`,r&&`rotate-180`)})]}),J.length>0?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>I(e=>!e),className:`flex shrink-0 items-center gap-1 border-l border-border/60 px-3 text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":P,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsDetails`)}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 transition-transform`,P&&`rotate-180`)})]}):null]}),r?(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:n.length===0?(0,q.jsx)(`div`,{className:`py-1 text-xs text-muted-foreground`,children:A(`serviceAppsActionsEmpty`)}):(0,q.jsx)(`div`,{className:`divide-y divide-border/50`,children:n.map(e=>(0,q.jsx)(ie,{action:e,grants:i.filter(t=>t.actionId===e.id),agents:a,grantAgentPending:S,onGrantAgent:x,onRevoke:b},e.id))})}):null,P?(0,q.jsx)(ce,{rows:J}):null]}),e.sourceKind===`package`?null:(0,q.jsx)(re,{appId:e.id,appTitle:e.title,dataEntry:l,dataLoading:u,deleteError:c,deletePending:s,open:O,purgeData:L,onDelete:ee,onOpenChange:j,onPurgeDataChange:R})]})})}function ae({status:e}){let t=oe(e),n=t.icon;return(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`span`,{className:o(`inline-flex shrink-0 items-center gap-1 text-xs`,t.className),"aria-label":t.label,children:[(0,q.jsx)(n,{className:o(`h-3 w-3`,t.iconClassName)}),(0,q.jsx)(`span`,{children:t.label})]})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:t.tooltip})]})}function oe(e){switch(e){case`running`:return{className:`text-emerald-700`,icon:_,label:A(`serviceAppsStatus_running`),tooltip:A(`serviceAppsStatusHint_running`)};case`starting`:return{className:`text-blue-700`,icon:D,iconClassName:`animate-spin`,label:A(`serviceAppsStatus_starting`),tooltip:A(`serviceAppsStatusHint_starting`)};case`failed`:return{className:`text-rose-700`,icon:y,label:A(`serviceAppsStatus_failed`),tooltip:A(`serviceAppsStatusHint_failed`)};case`stopped`:return{className:`text-muted-foreground`,icon:W,label:A(`serviceAppsStatus_stopped`),tooltip:A(`serviceAppsStatusHint_stopped`)};default:return{className:`text-muted-foreground`,icon:E,label:A(`serviceAppsStatus_idle`),tooltip:A(`serviceAppsStatusHint_idle`)}}}function X({destructive:e=!1,disabled:t=!1,icon:n,label:r,onClick:i}){return(0,q.jsxs)(`button`,{type:`button`,className:o(x,e?S.destructive:`text-foreground ${S.item}`),disabled:t,onClick:i,children:[(0,q.jsx)(n,{className:o(`h-4 w-4 shrink-0`,!e&&`text-muted-foreground`)}),(0,q.jsx)(`span`,{children:r})]})}function se(e){let t=[e.command,...e.args??[]].filter(e=>!!e?.trim()).join(` `);return[{label:A(`serviceAppsCommand`),value:t},{label:A(`serviceAppsCwd`),value:e.cwd},{label:A(`serviceAppsManifest`),value:e.manifestPath},{label:A(`serviceAppsLastStarted`),value:e.lastStartedAt},{label:A(`serviceAppsLastReady`),value:e.lastReadyAt},{label:A(`serviceAppsLastFailed`),value:e.lastFailedAt}].filter(e=>e.value)}function ce({rows:e}){return(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:(0,q.jsx)(`dl`,{className:`grid grid-cols-[4.75rem_minmax(0,1fr)] gap-x-3 gap-y-1.5 text-xs`,children:e.map(e=>(0,q.jsx)(le,{label:e.label,value:e.value},e.label))})})}function le({label:e,value:t}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:`text-muted-foreground/70`,children:e}),(0,q.jsx)(`dd`,{className:`min-w-0 truncate font-mono text-muted-foreground`,title:t,children:t})]})}var Z=[`service-apps`],Q=[`service-actions`],$=[`service-action-grants`],ue=[`app-data`];function de(){return r({queryKey:Z,queryFn:()=>n.serviceApps.listServiceApps()})}function fe(){return r({queryKey:Q,queryFn:()=>n.serviceApps.listServiceActions()})}function pe(){return r({queryKey:$,queryFn:()=>n.serviceApps.listServiceActionGrants()})}function me(){let e=s();return a({mutationFn:e=>n.serviceApps.restartServiceApp(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q})])}})}function he(){let e=s();return a({mutationFn:e=>n.serviceApps.deleteServiceApp(e.appId,e.purgeData),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$}),e.invalidateQueries({queryKey:ue})])}})}function ge(){let e=s();return a({mutationFn:e=>n.serviceApps.discoverServiceAppActions(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:Z})}})}function _e(){let e=s();return a({mutationFn:e=>n.serviceApps.revokeServiceActionGrant(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ve(){let e=s();return a({mutationFn:e=>n.serviceApps.grantAgentServiceActions(e.agentId,e.actionIds),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ye({onManagePackage:e,resourceId:t}){let n=de(),r=f(),i=fe(),a=pe(),o=ee(),s=he(),c=me(),l=ge(),u=_e(),d=ve(),[p,m]=(0,K.useState)({}),[g,_]=(0,K.useState)({}),v=()=>{n.refetch(),i.refetch(),a.refetch(),r.refetch()};if(n.isLoading||i.isLoading||a.isLoading)return(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-muted-foreground`,children:A(`serviceAppsLoading`)});if(n.isError||i.isError||a.isError){let e=n.error??i.error??a.error;return(0,q.jsx)(`div`,{className:`p-4 text-sm text-rose-600`,children:e instanceof Error?e.message:A(`serviceAppsLoadFailed`)})}let y=(n.data?.entries??[]).filter(e=>!t||e.id===t);if(t&&!y.length)return(0,q.jsx)(`p`,{role:`alert`,className:`p-4`,children:A(`resourceNotFound`)});let b=n.data?.diagnostics??[],x=i.data?.actions??[],S=a.data?.grants??[],C=e=>{l.mutateAsync(e).then(t=>{m(n=>({...n,[e]:t.actions})),_(t=>({...t,[e]:!0}))})},w=(r.data?.entries??[]).filter(e=>e.source===`workspace-service`&&e.lifecycle===`active`);return(0,q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card text-card-foreground`,children:[(0,q.jsx)(`div`,{className:`flex min-h-12 shrink-0 items-center justify-end border-b border-border/60 px-4 py-2`,children:(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-label":A(`serviceAppsRefresh`),onClick:v,children:(0,q.jsx)(O,{className:`h-3.5 w-3.5`})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsRefresh`)})]})})}),b.length>0?(0,q.jsxs)(`div`,{role:`alert`,className:`mx-3 mt-3 rounded-xl border border-destructive/20 bg-destructive/5 px-3 py-2.5 text-xs text-destructive sm:mx-4`,children:[(0,q.jsx)(`div`,{className:`font-medium`,children:A(`serviceAppsLoadFailed`)}),(0,q.jsx)(`ul`,{className:`mt-1 space-y-1`,children:b.map(e=>(0,q.jsxs)(`li`,{className:`break-words`,children:[e.appId,`: `,e.message]},e.stagedPath))})]}):null,y.length===0?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 py-8 text-center`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-xs`,children:[(0,q.jsx)(`div`,{className:`mx-auto flex h-10 w-10 items-center justify-center rounded-xl bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-5 w-5`})}),(0,q.jsx)(`h2`,{className:`mt-3 text-sm font-semibold text-foreground`,children:A(`serviceAppsEmptyTitle`)}),(0,q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:A(`serviceAppsEmptyDescription`)})]})}):(0,q.jsx)(`div`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto p-3 sm:p-4`,children:(0,q.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-border/70 bg-card`,children:y.map(n=>(0,q.jsx)(Y,{app:n,actions:p[n.id]??x.filter(e=>e.appId===n.id),actionsOpen:g[n.id]??!!t,grants:S,agents:o.data?.agents??[],deletePending:s.isPending,deleteError:s.error,dataEntry:w.find(e=>e.appId===n.id),dataLoading:r.isLoading,isDiscovering:l.isPending,onActionsOpenChange:e=>_(t=>({...t,[n.id]:e})),onDiscover:C,onManagePackage:e,onDelete:(e,t,n)=>void s.mutate({appId:e,purgeData:t},{onSuccess:n}),onResetDelete:s.reset,onRestart:e=>void c.mutate(e),onRevoke:e=>void u.mutate({actionId:e.actionId,caller:e.caller}),onGrantAgent:(e,t)=>void d.mutate({actionIds:[e],agentId:t}),grantAgentPending:d.isPending},n.id))})})]})}export{ye as ServiceAppsPanel};
Binary file
Binary file
Binary file
@@ -192,7 +192,7 @@
192
192
  })();
193
193
  </script>
194
194
  <title>NextClaw</title>
195
- <script type="module" crossorigin src="/assets/main-Bp1iozNB.js"></script>
195
+ <script type="module" crossorigin src="/assets/main-C6VGoYNO.js"></script>
196
196
  <link rel="modulepreload" crossorigin href="/assets/chunk-DF37yw5_.js">
197
197
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-DWTEM3RW.js">
198
198
  <link rel="modulepreload" crossorigin href="/assets/i18n-ByVUrt9w.js">
@@ -228,10 +228,10 @@
228
228
  <link rel="modulepreload" crossorigin href="/assets/provider-models-D8WOdsdu.js">
229
229
  <link rel="modulepreload" crossorigin href="/assets/select-BJ-EjmCz.js">
230
230
  <link rel="modulepreload" crossorigin href="/assets/use-config-M1L4xn8c.js">
231
- <link rel="modulepreload" crossorigin href="/assets/app-presenter-provider-BB3Xl8b0.js">
231
+ <link rel="modulepreload" crossorigin href="/assets/app-presenter-provider-DdD2Q7jZ.js">
232
232
  <link rel="modulepreload" crossorigin href="/assets/provider-scoped-model-input-BOPkUOtD.js">
233
233
  <link rel="modulepreload" crossorigin href="/assets/settings-2-D3-m8a3v.js">
234
- <link rel="modulepreload" crossorigin href="/assets/agents-BdeFtIOV.js">
234
+ <link rel="modulepreload" crossorigin href="/assets/agents-CTSR4ZKb.js">
235
235
  <link rel="modulepreload" crossorigin href="/assets/pwa-Cp7pPvsZ.js">
236
236
  <link rel="modulepreload" crossorigin href="/assets/login-page--Njgbmpm.js">
237
237
  <link rel="stylesheet" crossorigin href="/assets/context-menu-DEcVZfaU.css">
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/ui-dist/sw.js.gz CHANGED
Binary file
@@ -1 +0,0 @@
1
- import{t as e}from"./agents-BdeFtIOV.js";export{e as AgentsPage};
@@ -1 +0,0 @@
1
- import{ot as e}from"./app-presenter-provider-BB3Xl8b0.js";export{e as AppsPanel};
@@ -1 +0,0 @@
1
- import{K as e}from"./app-presenter-provider-BB3Xl8b0.js";export{e as CronJobResource};
@@ -1 +0,0 @@
1
- import{St as e}from"./app-presenter-provider-BB3Xl8b0.js";export{e as DocBrowser};
@@ -1 +0,0 @@
1
- import{z as e}from"./app-presenter-provider-BB3Xl8b0.js";export{e as InboxPage};
Binary file
@@ -1 +0,0 @@
1
- import{st as e}from"./app-presenter-provider-BB3Xl8b0.js";export{e as McpMarketplacePage};
@@ -1 +0,0 @@
1
- import{s as e,v as t}from"./theme-provider-BsJ6HxeX.js";import"./app-presenter-provider-BB3Xl8b0.js";export{t as PanelAppHostProvider,e as PanelAppRuntimeSurface};
@@ -1 +0,0 @@
1
- import{F as e}from"./app-presenter-provider-BB3Xl8b0.js";export{e as RemoteAccessPage};