nextclaw 0.55.0 → 0.56.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 (161) hide show
  1. package/package.json +8 -8
  2. package/ui-dist/.vite/manifest.json +361 -361
  3. package/ui-dist/.vite/manifest.json.gz +0 -0
  4. package/ui-dist/assets/{account-panel-DVi_jhkG.js → account-panel-BAH7FW6z.js} +1 -1
  5. package/ui-dist/assets/account-panel-BAH7FW6z.js.gz +0 -0
  6. package/ui-dist/assets/{api-BZvNpFOS.js → api-DjiZvIa0.js} +1 -1
  7. package/ui-dist/assets/api-DjiZvIa0.js.gz +0 -0
  8. package/ui-dist/assets/app-presenter-provider-CCRFsFYr.js +232 -0
  9. package/ui-dist/assets/app-presenter-provider-CCRFsFYr.js.gz +0 -0
  10. package/ui-dist/assets/{appearance-settings-page-AZNBzLmT.js → appearance-settings-page-CdP86QJ7.js} +1 -1
  11. package/ui-dist/assets/appearance-settings-page-CdP86QJ7.js.gz +0 -0
  12. package/ui-dist/assets/{book-open-CmRdT3N1.js → book-open-Bcnn2_uV.js} +1 -1
  13. package/ui-dist/assets/{card-CdRBL1E0.js → card-Cqs73hGI.js} +1 -1
  14. package/ui-dist/assets/card-Cqs73hGI.js.gz +0 -0
  15. package/ui-dist/assets/{channels-list-page-eZN74FN3.js → channels-list-page-5qGagKuE.js} +1 -1
  16. package/ui-dist/assets/channels-list-page-5qGagKuE.js.gz +0 -0
  17. package/ui-dist/assets/{circle-dashed-HOgt3gIJ.js → circle-dashed-EY1ScSMe.js} +1 -1
  18. package/ui-dist/assets/{client-DKKbdJ6Q.js → client-CH7w6yRV.js} +1 -1
  19. package/ui-dist/assets/{config-split-page-BA3V6b3Q.js → config-split-page-CuEGQL8Z.js} +1 -1
  20. package/ui-dist/assets/config-split-page-CuEGQL8Z.js.gz +0 -0
  21. package/ui-dist/assets/{confirm-dialog-8vqYZ0wy.js → confirm-dialog-CxfecBzO.js} +1 -1
  22. package/ui-dist/assets/confirm-dialog-CxfecBzO.js.gz +0 -0
  23. package/ui-dist/assets/{context-menu-DHVVdHzN.js → context-menu-BsCj2fRs.js} +1 -1
  24. package/ui-dist/assets/context-menu-BsCj2fRs.js.gz +0 -0
  25. package/ui-dist/assets/{createLucideIcon-DE0sB9Nu.js → createLucideIcon-Cfo2ySi5.js} +1 -1
  26. package/ui-dist/assets/{desktop-capabilities-page-B9-B9k1A.js → desktop-capabilities-page-BDYITStl.js} +1 -1
  27. package/ui-dist/assets/desktop-capabilities-page-BDYITStl.js.gz +0 -0
  28. package/ui-dist/assets/{desktop-update-config-Cfr3IRUe.js → desktop-update-config-e-zhkJuS.js} +1 -1
  29. package/ui-dist/assets/desktop-update-config-e-zhkJuS.js.gz +0 -0
  30. package/ui-dist/assets/{dialog-BUfWO8hr.js → dialog-QjQoKbIV.js} +1 -1
  31. package/ui-dist/assets/dialog-QjQoKbIV.js.gz +0 -0
  32. package/ui-dist/assets/doc-browser-CLEdkH9z.js +1 -0
  33. package/ui-dist/assets/{doc-browser-context-ClLgMbxd.js → doc-browser-context-DwgG6wrz.js} +1 -1
  34. package/ui-dist/assets/doc-browser-context-DwgG6wrz.js.gz +0 -0
  35. package/ui-dist/assets/{download-CKqS1Ksj.js → download-BoaKzDJk.js} +1 -1
  36. package/ui-dist/assets/{es2015-BiB05Sav.js → es2015-Bp6cuSGh.js} +1 -1
  37. package/ui-dist/assets/es2015-Bp6cuSGh.js.gz +0 -0
  38. package/ui-dist/assets/{extensions-vPD4dGqt.js → extensions-CgShSIkd.js} +1 -1
  39. package/ui-dist/assets/extensions-CgShSIkd.js.gz +0 -0
  40. package/ui-dist/assets/{eye-bKzylu3p.js → eye-kisejBFH.js} +1 -1
  41. package/ui-dist/assets/{form-actions-CCoxz33Q.js → form-actions-D9JWSFQu.js} +1 -1
  42. package/ui-dist/assets/{i18n-OGmF0Ws_.js → i18n-Bm3Ov7Fy.js} +2 -2
  43. package/ui-dist/assets/i18n-Bm3Ov7Fy.js.gz +0 -0
  44. package/ui-dist/assets/{keyboard-shortcuts-settings-page-D8rosOVh.js → keyboard-shortcuts-settings-page-DZ8A1iLg.js} +1 -1
  45. package/ui-dist/assets/loader-circle-Bd1fTm-x.js +1 -0
  46. package/ui-dist/assets/{login-page-BT3GV3Sb.js → login-page-C-DvcG3L.js} +1 -1
  47. package/ui-dist/assets/login-page-C-DvcG3L.js.gz +0 -0
  48. package/ui-dist/assets/login-page-D99JjH9F.js +1 -0
  49. package/ui-dist/assets/{main-bEWCGDHr.js → main-Bt5r6b21.js} +2 -2
  50. package/ui-dist/assets/main-Bt5r6b21.js.gz +0 -0
  51. package/ui-dist/assets/main-DXd_aKJV.css +1 -0
  52. package/ui-dist/assets/main-DXd_aKJV.css.gz +0 -0
  53. package/ui-dist/assets/main-i18n-catalog.config-D0Ll36J_.js +1 -0
  54. package/ui-dist/assets/main-i18n-catalog.config-D0Ll36J_.js.gz +0 -0
  55. package/ui-dist/assets/mcp-marketplace-page-DUoGfSmY.js +1 -0
  56. package/ui-dist/assets/{model-config-page-D21a-BO0.js → model-config-page-9NNf-mzK.js} +1 -1
  57. package/ui-dist/assets/model-config-page-9NNf-mzK.js.gz +0 -0
  58. package/ui-dist/assets/{navigation-link-DC-Pku0Y.js → navigation-link-CjxNC8aT.js} +1 -1
  59. package/ui-dist/assets/navigation-link-CjxNC8aT.js.gz +0 -0
  60. package/ui-dist/assets/panel-app-i18n-catalog.config-Ddf2Kv8A.js +1 -0
  61. package/ui-dist/assets/{panelStandalone-CX8X2hjh.js → panelStandalone-BaUzY8Wy.js} +2 -2
  62. package/ui-dist/assets/panelStandalone-BaUzY8Wy.js.gz +0 -0
  63. package/ui-dist/assets/{privacy-settings-page-e0LFHZJm.js → privacy-settings-page-CVMBFuak.js} +1 -1
  64. package/ui-dist/assets/privacy-settings-page-CVMBFuak.js.gz +0 -0
  65. package/ui-dist/assets/projects-BEsU3box.js +1 -0
  66. package/ui-dist/assets/projects-BEsU3box.js.gz +0 -0
  67. package/ui-dist/assets/{provider-models-DFQgF4hS.js → provider-models-Dm-pmWAA.js} +1 -1
  68. package/ui-dist/assets/provider-models-Dm-pmWAA.js.gz +0 -0
  69. package/ui-dist/assets/{provider-scoped-model-input-DaONL0j_.js → provider-scoped-model-input-CzrXg4cX.js} +1 -1
  70. package/ui-dist/assets/provider-scoped-model-input-CzrXg4cX.js.gz +0 -0
  71. package/ui-dist/assets/{providers-config-page-CEOhQlMe.js → providers-config-page-839uUADZ.js} +1 -1
  72. package/ui-dist/assets/providers-config-page-839uUADZ.js.gz +0 -0
  73. package/ui-dist/assets/{puzzle-D_TiFXOv.js → puzzle-BGvD2DPZ.js} +1 -1
  74. package/ui-dist/assets/{pwa-C9ac_1dg.js → pwa-DNNK_8E9.js} +1 -1
  75. package/ui-dist/assets/pwa-DNNK_8E9.js.gz +0 -0
  76. package/ui-dist/assets/{refresh-cw-BG8VfcdA.js → refresh-cw-BlXDrVP0.js} +1 -1
  77. package/ui-dist/assets/remote-B5qIuUbT.js +1 -0
  78. package/ui-dist/assets/{rotate-cw-DPEegUU2.js → rotate-cw-ei6rPD6z.js} +1 -1
  79. package/ui-dist/assets/{runtime-config-page-DDT1dVLt.js → runtime-config-page-Bf-4JYxQ.js} +1 -1
  80. package/ui-dist/assets/runtime-config-page-Bf-4JYxQ.js.gz +0 -0
  81. package/ui-dist/assets/{save-CPlctBjT.js → save-DdF-bXgC.js} +1 -1
  82. package/ui-dist/assets/{search-config-page-CDwmd6eX.js → search-config-page-C0qA3j-T.js} +1 -1
  83. package/ui-dist/assets/search-config-page-C0qA3j-T.js.gz +0 -0
  84. package/ui-dist/assets/{secrets-config-page-1OvgmwPv.js → secrets-config-page-DxfZWpnk.js} +1 -1
  85. package/ui-dist/assets/secrets-config-page-DxfZWpnk.js.gz +0 -0
  86. package/ui-dist/assets/security-config-CItfIQZ4.js +1 -0
  87. package/ui-dist/assets/{select-Y9IEbx9x.js → select-CWyjnar7.js} +1 -1
  88. package/ui-dist/assets/select-CWyjnar7.js.gz +0 -0
  89. package/ui-dist/assets/{service-apps-panel-DPrLeF3N.js → service-apps-panel-D3SOkRVv.js} +1 -1
  90. package/ui-dist/assets/service-apps-panel-D3SOkRVv.js.gz +0 -0
  91. package/ui-dist/assets/{settings-2-CrGx9_De.js → settings-2-CrNhfInU.js} +1 -1
  92. package/ui-dist/assets/{status-dot-Cb8ewlUr.js → status-dot-C3SRFEta.js} +1 -1
  93. package/ui-dist/assets/status-dot-C3SRFEta.js.gz +0 -0
  94. package/ui-dist/assets/{tag-chip-D-6aPuuh.js → tag-chip-BIuavK2K.js} +1 -1
  95. package/ui-dist/assets/tag-chip-BIuavK2K.js.gz +0 -0
  96. package/ui-dist/assets/{theme-provider-BjF1Eowc.js → theme-provider-CWUz4yO9.js} +1 -1
  97. package/ui-dist/assets/theme-provider-CWUz4yO9.js.gz +0 -0
  98. package/ui-dist/assets/{trash-2-DER2EJKK.js → trash-2-hAbJh9VZ.js} +1 -1
  99. package/ui-dist/assets/{use-config-BM5jC65L.js → use-config-evzage09.js} +1 -1
  100. package/ui-dist/assets/use-config-evzage09.js.gz +0 -0
  101. package/ui-dist/assets/{use-desktop-capabilities-ezKJwKqg.js → use-desktop-capabilities-BYDjFlpt.js} +1 -1
  102. package/ui-dist/assets/use-desktop-capabilities-BYDjFlpt.js.gz +0 -0
  103. package/ui-dist/assets/{use-viewport-layout-vmbQUNT6.js → use-viewport-layout-D_9XWGDV.js} +1 -1
  104. package/ui-dist/assets/use-viewport-layout-D_9XWGDV.js.gz +0 -0
  105. package/ui-dist/assets/x-ChPbNv39.js +1 -0
  106. package/ui-dist/index.html +34 -34
  107. package/ui-dist/index.html.gz +0 -0
  108. package/ui-dist/panel-standalone.html +10 -10
  109. package/ui-dist/panel-standalone.html.gz +0 -0
  110. package/ui-dist/assets/account-panel-DVi_jhkG.js.gz +0 -0
  111. package/ui-dist/assets/api-BZvNpFOS.js.gz +0 -0
  112. package/ui-dist/assets/app-presenter-provider-BcYL-VNe.js +0 -124
  113. package/ui-dist/assets/app-presenter-provider-BcYL-VNe.js.gz +0 -0
  114. package/ui-dist/assets/appearance-settings-page-AZNBzLmT.js.gz +0 -0
  115. package/ui-dist/assets/card-CdRBL1E0.js.gz +0 -0
  116. package/ui-dist/assets/channels-list-page-eZN74FN3.js.gz +0 -0
  117. package/ui-dist/assets/config-split-page-BA3V6b3Q.js.gz +0 -0
  118. package/ui-dist/assets/confirm-dialog-8vqYZ0wy.js.gz +0 -0
  119. package/ui-dist/assets/context-menu-DHVVdHzN.js.gz +0 -0
  120. package/ui-dist/assets/desktop-capabilities-page-B9-B9k1A.js.gz +0 -0
  121. package/ui-dist/assets/desktop-update-config-Cfr3IRUe.js.gz +0 -0
  122. package/ui-dist/assets/dialog-BUfWO8hr.js.gz +0 -0
  123. package/ui-dist/assets/doc-browser-context-ClLgMbxd.js.gz +0 -0
  124. package/ui-dist/assets/doc-browser-w8q1j0jL.js +0 -1
  125. package/ui-dist/assets/es2015-BiB05Sav.js.gz +0 -0
  126. package/ui-dist/assets/extensions-vPD4dGqt.js.gz +0 -0
  127. package/ui-dist/assets/i18n-OGmF0Ws_.js.gz +0 -0
  128. package/ui-dist/assets/loader-circle-Clq1Gtb1.js +0 -1
  129. package/ui-dist/assets/login-page-BT3GV3Sb.js.gz +0 -0
  130. package/ui-dist/assets/login-page-DKId3By8.js +0 -1
  131. package/ui-dist/assets/main-bEWCGDHr.js.gz +0 -0
  132. package/ui-dist/assets/main-i18n-catalog.config-Bpu5GcwF.js +0 -1
  133. package/ui-dist/assets/main-i18n-catalog.config-Bpu5GcwF.js.gz +0 -0
  134. package/ui-dist/assets/main-kqMRTwOs.css +0 -1
  135. package/ui-dist/assets/main-kqMRTwOs.css.gz +0 -0
  136. package/ui-dist/assets/mcp-marketplace-page-CZIP6j3L.js +0 -1
  137. package/ui-dist/assets/model-config-page-D21a-BO0.js.gz +0 -0
  138. package/ui-dist/assets/navigation-link-DC-Pku0Y.js.gz +0 -0
  139. package/ui-dist/assets/panel-app-i18n-catalog.config-D44qmtfk.js +0 -1
  140. package/ui-dist/assets/panelStandalone-CX8X2hjh.js.gz +0 -0
  141. package/ui-dist/assets/privacy-settings-page-e0LFHZJm.js.gz +0 -0
  142. package/ui-dist/assets/projects-Rki7Fmth.js +0 -1
  143. package/ui-dist/assets/projects-Rki7Fmth.js.gz +0 -0
  144. package/ui-dist/assets/provider-models-DFQgF4hS.js.gz +0 -0
  145. package/ui-dist/assets/provider-scoped-model-input-DaONL0j_.js.gz +0 -0
  146. package/ui-dist/assets/providers-config-page-CEOhQlMe.js.gz +0 -0
  147. package/ui-dist/assets/pwa-C9ac_1dg.js.gz +0 -0
  148. package/ui-dist/assets/remote-DkSx5x4R.js +0 -1
  149. package/ui-dist/assets/runtime-config-page-DDT1dVLt.js.gz +0 -0
  150. package/ui-dist/assets/search-config-page-CDwmd6eX.js.gz +0 -0
  151. package/ui-dist/assets/secrets-config-page-1OvgmwPv.js.gz +0 -0
  152. package/ui-dist/assets/security-config-Pv4CM-kw.js +0 -1
  153. package/ui-dist/assets/select-Y9IEbx9x.js.gz +0 -0
  154. package/ui-dist/assets/service-apps-panel-DPrLeF3N.js.gz +0 -0
  155. package/ui-dist/assets/status-dot-Cb8ewlUr.js.gz +0 -0
  156. package/ui-dist/assets/tag-chip-D-6aPuuh.js.gz +0 -0
  157. package/ui-dist/assets/theme-provider-BjF1Eowc.js.gz +0 -0
  158. package/ui-dist/assets/use-config-BM5jC65L.js.gz +0 -0
  159. package/ui-dist/assets/use-desktop-capabilities-ezKJwKqg.js.gz +0 -0
  160. package/ui-dist/assets/use-viewport-layout-vmbQUNT6.js.gz +0 -0
  161. package/ui-dist/assets/x-DSz9cGhy.js +0 -1
@@ -1 +1 @@
1
- import{i as e}from"./chunk-DF37yw5_.js";import{Jn as t,Lt as n,Sn as r,Xn as i,Yn as a,Yt as o,cr as s,gn as c,pn as ee,sr as l,yr as te}from"./api-BZvNpFOS.js";import{t as u}from"./createLucideIcon-DE0sB9Nu.js";import{d,f,l as p,p as ne,s as m}from"./i18n-OGmF0Ws_.js";import{a as re,i as ie,n as ae,o as oe,r as se,t as ce}from"./dialog-BUfWO8hr.js";import{n as h}from"./navigation-history-CzErJuPG.js";var g=u(`Boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),_=u(`RotateCcw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),v=u(`ShieldAlert`,[[`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:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),le=class{constructor(e){this.authorizationManager=e,this.handleIframeMessage=({event:e,iframe:t})=>{this.isBridgeRequest(e.data)&&(!t?.contentWindow||e.source!==t.contentWindow||this.handleBridgeRequest({event:e,iframe:t},e.data))},this.handleBridgeRequest=async(e,t)=>{try{let n=this.getBridgeContext(t),r=await this.dispatchRequest(n,t);this.postResponse(e,{type:`nextclaw:panel-app-service-actions:response`,requestId:t.requestId,ok:!0,data:r})}catch(n){this.postResponse(e,{type:`nextclaw:panel-app-service-actions:response`,requestId:t.requestId,ok:!1,error:this.toBridgeError(n)})}},this.dispatchRequest=async(e,t)=>{switch(t.method){case`list`:return await n.serviceApps.listServiceActions({bridgeSessionToken:e.token});case`requestGrant`:return await this.confirmAndGrant(e,this.requireActionId(t));case`revokeGrant`:return await n.serviceApps.revokeServiceAction(this.requireActionId(t),{bridgeSessionToken:e.token});case`invoke`:return await this.invokeWithAuthorization(e,t);case`agent.send`:return await this.sendAgentMessageWithAuthorization(e,t);case`agent.generateObject`:return await this.generateAgentObjectWithAuthorization(e,t);case`verification.list`:return await n.serviceApps.listVerificationRecords({acceptanceId:t.payload?.acceptanceId,appId:t.payload?.appId,limit:t.payload?.limit,bridgeSessionToken:e.token});case`acceptance.status`:return await n.serviceApps.getPortableRuntimeAcceptanceStatus({appId:t.payload?.appId,locale:t.payload?.locale,bridgeSessionToken:e.token});case`acceptance.export`:return await n.serviceApps.exportPortableRuntimeAcceptance({appId:t.payload?.appId,locale:t.payload?.locale,bridgeSessionToken:e.token});default:throw Error(`Unsupported panel bridge method: ${String(t.method)}`)}},this.invokeWithAuthorization=async(e,t)=>{let r=this.requireActionId(t);try{return await n.serviceApps.invokeServiceAction(r,this.readOptionalRecord(t.payload?.input),{bridgeSessionToken:e.token})}catch(i){if(!(i instanceof c)||i.code!==`AUTHORIZATION_REQUIRED`)throw i;return await this.confirmAndGrant(e,r,this.readOptionalRecord(t.payload?.input)),await n.serviceApps.invokeServiceAction(r,this.readOptionalRecord(t.payload?.input),{bridgeSessionToken:e.token})}},this.sendAgentMessageWithAuthorization=async(e,t)=>{try{return await n.panelApps.sendAgentMessage(this.readAgentSendRequest(t),{bridgeSessionToken:e.token})}catch(r){if(!(r instanceof c)||r.code!==`AUTHORIZATION_REQUIRED`)throw r;return await this.confirmAndGrantAgentCapability(e,`agent:send`),await n.panelApps.sendAgentMessage(this.readAgentSendRequest(t),{bridgeSessionToken:e.token})}},this.generateAgentObjectWithAuthorization=async(e,t)=>{try{return await n.panelApps.generateAgentObject(this.readGenerateObjectRequest(t),{bridgeSessionToken:e.token})}catch(r){if(!(r instanceof c)||r.code!==`AUTHORIZATION_REQUIRED`)throw r;return await this.confirmAndGrantAgentCapability(e,`agent:generateObject`),await n.panelApps.generateAgentObject(this.readGenerateObjectRequest(t),{bridgeSessionToken:e.token})}},this.confirmAndGrantAgentCapability=async(e,t)=>{if(!await this.authorizationManager.requestAuthorization({panelAppId:e.appId,actions:[{actionId:t,actionTitle:t===`agent:send`?`Send agent message`:`Generate object`,actionDescription:t===`agent:send`?`Send a message to a NextClaw Agent session.`:`Send context to a NextClaw Agent session and receive a structured object.`,risk:`write`}]}))throw new c({code:`AUTHORIZATION_REJECTED`,message:`Permission rejected for ${t}.`});return await n.panelApps.grantAgentCapability(t,{bridgeSessionToken:e.token})},this.confirmAndGrant=async(e,t,r)=>{let i=await this.listGrantCandidateActions(e,t);if(!await this.authorizationManager.requestAuthorization({panelAppId:e.appId,actions:i.map(e=>({actionId:e.id,actionTitle:e.title,actionDescription:e.description,risk:e.risk})),inputPreview:this.createInputPreview(r)}))throw new c({code:`AUTHORIZATION_REJECTED`,message:`Permission rejected for ${t}.`});let a=await n.serviceApps.grantServiceActions(i.map(e=>e.id),{bridgeSessionToken:e.token}),o=a.grants.find(e=>e.actionId===t)??a.grants[0];if(!o)throw Error(`No permission grant returned for ${t}.`);return o},this.listGrantCandidateActions=async(e,t)=>{let r=await n.serviceApps.listServiceActions({bridgeSessionToken:e.token}),i=r.actions.find(e=>e.id===t);if(i&&i.grantState!==`not-granted`)return[i];let a=r.actions.filter(e=>e.grantState===`not-granted`),o=[...a.filter(e=>e.id===t),...a.filter(e=>e.id!==t)];return o.length>0?o:[{appId:i?.appId??t.split(`.`)[0]??t,description:i?.description,id:t,name:i?.name??t,risk:i?.risk??`dangerous`,title:i?.title}]},this.createInputPreview=e=>{if(!(!e||Object.keys(e).length===0))try{let t=JSON.stringify(e,null,2);return t.length>500?`${t.slice(0,500)}...`:t}catch{return`[unserializable input]`}},this.getBridgeContext=e=>({appId:e.appId,token:e.runtimeToken}),this.requireActionId=e=>{let t=e.payload?.actionId?.trim();if(!t)throw Error(`Panel bridge actionId is required.`);return t},this.readOptionalRecord=e=>{if(e!==void 0)return this.requireRecord(e,`input`)},this.readAgentSendRequest=e=>({payload:this.requireRecord(e.payload?.request,`agent.send request`)}),this.readGenerateObjectRequest=e=>({input:this.requireRecord(e.payload?.input,`generateObject input`)}),this.requireRecord=(e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} is required.`);return e},this.postResponse=(e,t)=>{e.iframe?.contentWindow?.postMessage(t,`*`)},this.toBridgeError=e=>e instanceof c?{code:e.code,message:e.message,details:e.details}:{message:e instanceof Error?e.message:String(e)},this.isBridgeRequest=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`nextclaw:panel-app-service-actions:request`&&typeof t.requestId==`string`&&typeof t.runtimeToken==`string`&&typeof t.appId==`string`&&(t.method===`invoke`||t.method===`agent.send`||t.method===`agent.generateObject`||t.method===`acceptance.export`||t.method===`acceptance.status`||t.method===`list`||t.method===`requestGrant`||t.method===`revokeGrant`||t.method===`verification.list`)}}};function y(){return`service-action-auth-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}var b=ee((e,t)=>({pending:null,requestAuthorization:async n=>await new Promise(r=>{t().pending?.resolve(!1),e({pending:{id:y(),...n,resolve:r}})}),resolveAuthorization:n=>{let{pending:r}=t();r&&(r.resolve(n),e({pending:null}))}})),ue=class{constructor(){this.requestAuthorization=async e=>await b.getState().requestAuthorization(e)}},x=class{constructor(){this.serviceActionAuthorizationManager=new ue,this.panelAppBridgeManager=new le(this.serviceActionAuthorizationManager)}},S=e(te(),1),C=s(),w=globalThis,T=w.__NEXTCLAW_PANEL_APP_HOST_CONTEXT__??(0,S.createContext)(null);w.__NEXTCLAW_PANEL_APP_HOST_CONTEXT__=T;function de({children:e,presenter:t}){let n=(0,S.useMemo)(()=>t??new x,[t]);return(0,C.jsx)(T.Provider,{value:n,children:e})}function E(){let e=(0,S.useContext)(T);if(!e)throw Error(`usePanelAppHostPresenter must be used inside PanelAppHostProvider`);return e}var D=[`panel-apps`],O=[`panel-app`];function k(e,t){return e.id===t||e.appId===t}function A(e,t,n){return e&&{...e,entries:e.entries.map(e=>k(e,t)?n(e):e)}}function j(e,t){return A(e,t.id,()=>t)}function fe(e,t){let n=e?.entries.reduce((e,t)=>Math.max(e,t.mainSidebarOrder??-1),-1)??-1;return A(e,t.id,e=>({...e,...typeof t.preferences.favorite==`boolean`?{favorite:t.preferences.favorite}:{},...typeof t.preferences.mainSidebar==`boolean`?t.preferences.mainSidebar?{mainSidebar:!0,mainSidebarOrder:e.mainSidebar?e.mainSidebarOrder:n+1}:{mainSidebar:!1,mainSidebarOrder:void 0}:{}}))}function pe(e={}){return i({queryKey:D,queryFn:()=>n.panelApps.listPanelApps(),enabled:e.enabled??!0,staleTime:0})}function M(e,t={}){return i({queryKey:[...O,e],queryFn:()=>n.panelApps.getPanelApp(e),enabled:!!e&&(t.enabled??!0),staleTime:5e3})}function me(){let e=l();return a({mutationFn:({id:e,preferences:t})=>n.panelApps.updatePanelAppPreferences(e,t),onMutate:async t=>{await e.cancelQueries({queryKey:D});let n=e.getQueryData(D)?.entries.find(e=>k(e,t.id));return e.setQueryData(D,e=>fe(e,t)),{previousEntry:n}},onSuccess:t=>{e.setQueryData(D,e=>j(e,t)),e.setQueryData([...O,t.appId],t)},onError:(n,r,i)=>{let a=i?.previousEntry;a&&e.setQueryData(D,e=>A(e,r.id,()=>a));let o=n instanceof Error?n.message:String(n);t.error(`${m(`panelAppsPreferenceUpdateFailed`)}: ${o}`)}})}function N(){let e=l();return a({mutationFn:e=>n.panelApps.recordPanelAppOpened(e),onSuccess:t=>{e.setQueryData(D,e=>j(e,t)),e.setQueryData([...O,t.appId],t)}})}function P(){let e=l();return a({mutationFn:e=>n.panelApps.grantClient(e),onSuccess:()=>{e.invalidateQueries({queryKey:D}),e.invalidateQueries({queryKey:O})}})}function F(){let e=l();return a({mutationFn:e=>n.panelApps.deletePanelApp(e),onSuccess:()=>{e.invalidateQueries({queryKey:D}),e.invalidateQueries({queryKey:O})}})}function I(){let e=E(),{isPending:t,mutateAsync:n}=P(),r=(0,S.useRef)(new Map);return{ensurePanelAppClientGrant:(0,S.useCallback)(async t=>{if(!t.clientDeclared||t.clientGranted)return!0;let i=r.current.get(t.appId);if(i)return await i;let a=(async()=>await e.serviceActionAuthorizationManager.requestAuthorization({panelAppId:t.appId,actions:[{actionId:`nextclaw.client`,actionTitle:m(`panelAppsClientGrantTitle`),actionDescription:m(`panelAppsClientGrantDescription`),risk:`dangerous`}]})?(await n(t.appId),!0):!1)();r.current.set(t.appId,a);try{return await a}finally{r.current.delete(t.appId)}},[n,e]),isPending:t}}function L(e){let t=l(),r=(0,S.useId)(),{ensurePanelAppClientGrant:a}=I(),o=!!(e?.clientDeclared&&!e.clientGranted),s=i({queryKey:[`panel-app-client-grant`,e?.appId??`none`,e?.clientGranted??!1],queryFn:async()=>await a(e),enabled:o,gcTime:0,retry:!1,staleTime:1/0}),c=e?o?s.isError?`error`:s.isPending?`checking`:s.data?`allowed`:`denied`:`allowed`:`idle`;return i({queryKey:[`panel-app-open`,r,e?.appId??`none`],queryFn:async()=>{let r=await n.panelApps.recordPanelAppOpened(e.id);return t.setQueryData(D,e=>j(e,r)),t.setQueryData([...O,r.appId],r),r},enabled:!!(e&&c===`allowed`),retry:!1,staleTime:1/0}),{retryClientGrant:s.refetch,state:c}}var R=`allow-scripts allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-downloads allow-pointer-lock allow-presentation`;function z(e){e?.focus({preventScroll:!0}),e?.contentWindow?.focus()}function B(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.kind===`document`?!0:t.kind===`element`&&Array.isArray(t.path)&&t.path.length>0&&t.path.length<=30&&t.path.every(e=>typeof e?.index==`number`&&Number.isInteger(e.index)&&e.index>=0&&e.index<=1e3&&typeof e.tagName==`string`&&e.tagName.length>0&&e.tagName.length<=32)}function he(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.currentUrl==`string`&&B(t.target)}function ge(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===r.scrollMessageType&&t.version===r.version&&B(t.target)&&typeof t.x==`number`&&Number.isFinite(t.x)&&t.x>=0&&typeof t.y==`number`&&Number.isFinite(t.y)&&t.y>=0}function V({currentUrl:e,iframeRef:t,isEnabled:n,restorationKey:i}){let a=i&&e?JSON.stringify([i,e]):null;return(0,S.useEffect)(()=>{if(!e||!n||!a)return;let r=a,i=n=>{n.source!==t.current?.contentWindow||!ge(n.data)||h.save(r,{x:n.data.x,y:n.data.y,payload:{currentUrl:e,target:n.data.target}})};return window.addEventListener(`message`,i),()=>window.removeEventListener(`message`,i)},[e,t,n,a]),(0,S.useCallback)(()=>{if(!e||!n||!a)return;let i=h.read(a);!i||!he(i.payload)||i.payload.currentUrl!==e||t.current?.contentWindow?.postMessage({type:r.restoreScrollMessageType,version:r.version,target:i.payload.target,x:i.x,y:i.y},`*`)},[e,t,n,a])}function H({appId:e,restorationScope:t,unavailableAction:n}){let r=E(),i=M(e),a=(0,S.useRef)(null),o=(0,S.useMemo)(()=>i.data,[i.data]),s=L(o),c=V({currentUrl:o?.contentPath??null,iframeRef:a,isEnabled:!!o,restorationKey:o?`panel-app:${t}:${o.appId}`:null});return(0,S.useEffect)(()=>{let e=e=>{r.panelAppBridgeManager.handleIframeMessage({event:e,iframe:a.current})};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[r]),i.isLoading?(0,C.jsx)(U,{message:m(`panelAppsLoading`)}):i.isError?(0,C.jsx)(U,{message:i.error instanceof Error?i.error.message:m(`panelAppsLoadFailed`),actionLabel:m(`panelAppsTryAgain`),onAction:()=>void i.refetch()}):o?s.state===`checking`||s.state===`idle`?(0,C.jsx)(U,{message:m(`panelAppsCheckingPermission`)}):s.state===`denied`||s.state===`error`?(0,C.jsx)(U,{message:s.state===`denied`?m(`panelAppsPermissionDenied`):m(`panelAppsPermissionFailed`),actionLabel:m(`panelAppsTryAgain`),onAction:()=>void s.retryClientGrant()}):(0,C.jsx)(`div`,{className:`h-full min-h-0 bg-background`,children:(0,C.jsx)(`iframe`,{ref:a,src:o.contentPath,title:o.title,sandbox:R,className:`block h-full w-full border-0 bg-background`,onLoad:c,onPointerOver:e=>z(e.currentTarget)},o.appId)}):(0,C.jsx)(U,{message:m(`panelAppsMainUnavailable`),actionLabel:n?.label,onAction:n?.onAction})}function U({actionLabel:e,message:t,onAction:n}){return(0,C.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-background px-6 text-center`,children:(0,C.jsxs)(`div`,{className:`max-w-sm`,children:[(0,C.jsx)(`div`,{className:`mx-auto flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground`,children:n?(0,C.jsx)(_,{className:`h-5 w-5`}):(0,C.jsx)(g,{className:`h-5 w-5`})}),(0,C.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-muted-foreground`,children:t}),e&&n?(0,C.jsx)(`button`,{type:`button`,className:`mt-4 rounded-md border border-border px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:n,children:e}):null]})})}var W=(0,S.createContext)(null);function G({children:e}){let[t,n]=(0,S.useState)(()=>d());(0,S.useEffect)(()=>ne(e=>{n(e)}),[]);let r=(0,S.useCallback)(e=>{f(e),n(p())},[]),i=(0,S.useCallback)(()=>{r(t===`en`?`zh`:`en`)},[t,r]),a=(0,S.useMemo)(()=>({language:t,setLanguage:r,toggleLanguage:i}),[t,r,i]);return(0,C.jsx)(W.Provider,{value:a,children:e})}function _e(){let e=(0,S.useContext)(W);if(!e)throw Error(`useI18n must be used within I18nProvider`);return{...e,t:m}}function ve({appId:e}){let t=M(e),n=(0,S.useMemo)(()=>t.data,[t.data]);return(0,S.useEffect)(()=>{let e=document.title;return document.title=`${n?.title??m(`panelAppsTitle`)} · NextClaw`,()=>{document.title=e}},[n?.title]),(0,C.jsx)(`main`,{className:`h-dvh min-h-0 w-full overflow-hidden bg-background`,children:(0,C.jsx)(H,{appId:e,restorationScope:`standalone`})})}function ye(){let e=b(e=>e.pending),t=b(e=>e.resolveAuthorization);return(0,C.jsx)(ce,{open:!!e,onOpenChange:e=>{e||t(!1)},children:(0,C.jsxs)(ae,{className:`[&>:last-child]:hidden`,children:[(0,C.jsxs)(re,{children:[(0,C.jsxs)(oe,{className:`flex items-center gap-2`,children:[(0,C.jsx)(v,{className:`h-4 w-4 text-amber-600`}),m(`serviceActionAuthorizationTitle`)]}),(0,C.jsx)(se,{children:m(`serviceActionAuthorizationDescription`)})]}),e?(0,C.jsxs)(`div`,{className:`space-y-3 rounded-md border border-border bg-muted/60 p-3 text-sm`,children:[(0,C.jsx)(K,{label:m(`serviceActionAuthorizationSource`),value:e.panelAppId}),(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:m(`serviceActionAuthorizationActions`)}),(0,C.jsx)(`div`,{className:`max-h-64 space-y-2 overflow-auto`,children:e.actions.map(e=>(0,C.jsx)(be,{action:e},e.actionId))})]}),e.inputPreview?(0,C.jsx)(K,{label:m(`serviceActionAuthorizationInput`),value:e.inputPreview}):null]}):null,(0,C.jsxs)(ie,{className:`gap-2 sm:gap-0`,children:[(0,C.jsx)(o,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:m(`serviceActionAuthorizationReject`)}),(0,C.jsx)(o,{type:`button`,onClick:()=>t(!0),children:m(`serviceActionAuthorizationAllow`)})]})]})})}function be({action:e}){return(0,C.jsxs)(`div`,{className:`space-y-1 rounded border border-border bg-card px-3 py-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,C.jsx)(`div`,{className:`min-w-0 break-words text-xs font-medium text-foreground`,children:e.actionTitle??e.actionId}),(0,C.jsx)(`div`,{className:`shrink-0 rounded bg-amber-50 px-1.5 py-0.5 text-[11px] font-medium text-amber-700`,children:e.risk??`dangerous`})]}),(0,C.jsx)(`div`,{className:`break-words text-[11px] text-muted-foreground`,children:e.actionId}),e.actionDescription?(0,C.jsx)(`div`,{className:`break-words text-xs text-muted-foreground`,children:e.actionDescription}):null]})}function K({label:e,value:t}){return(0,C.jsxs)(`div`,{className:`grid grid-cols-[5rem_minmax(0,1fr)] gap-3`,children:[(0,C.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:e}),(0,C.jsx)(`div`,{className:`min-w-0 break-words text-xs text-foreground`,children:t})]})}var q=`nextclaw.ui.theme`,J=`work`,Y=[{value:`work`,labelKey:`themeWork`,appearance:`light`},{value:`night`,labelKey:`themeNight`,appearance:`dark`},{value:`charcoal`,labelKey:`themeCharcoal`,appearance:`dark`},{value:`island`,labelKey:`themeIsland`,appearance:`light`},{value:`natural`,labelKey:`themeNatural`,appearance:`light`},{value:`minimal`,labelKey:`themeMinimal`,appearance:`light`},{value:`warm`,labelKey:`themeWarm`,appearance:`light`},{value:`cool`,labelKey:`themeCool`,appearance:`light`},{value:`dawn`,labelKey:`themeDawn`,appearance:`light`},{value:`graphite`,labelKey:`themeGraphite`,appearance:`light`},{value:`probe`,labelKey:`themeProbe`,appearance:`light`}],xe=Y.map(({value:e})=>e),Se=Y.map(({value:e,labelKey:t})=>({value:e,labelKey:t}));function X(e){return typeof e==`string`?xe.includes(e)?e:e===`leaf`?`warm`:null:null}function Z(e){return Y.find(t=>t.value===e)?.appearance??`light`}var Q=new class{constructor(){this.activeTheme=J,this.initialized=!1,this.listeners=new Set,this.resolveInitialTheme=()=>{if(typeof window>`u`)return J;try{let e=X(window.localStorage.getItem(q));if(e)return e}catch{}return J},this.initializeTheme=()=>(this.initialized||=(this.activeTheme=this.resolveInitialTheme(),this.applyThemeAttribute(this.activeTheme),!0),this.activeTheme),this.getTheme=()=>this.initialized?this.activeTheme:this.initializeTheme(),this.setTheme=e=>{this.initializeTheme(),e!==this.activeTheme&&(this.activeTheme=e,this.applyThemeAttribute(this.activeTheme),this.saveTheme(this.activeTheme),this.listeners.forEach(e=>e(this.activeTheme)))},this.subscribeThemeChange=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.applyThemeAttribute=e=>{if(typeof document>`u`)return;let t=Z(e);document.documentElement.setAttribute(`data-theme`,e),document.documentElement.setAttribute(`data-theme-appearance`,t),document.documentElement.style.colorScheme=t},this.saveTheme=e=>{if(!(typeof window>`u`))try{window.localStorage.setItem(q,e)}catch{}}}};function Ce(){return Q.initializeTheme()}function we(){return Q.getTheme()}function Te(e){Q.setTheme(e)}function Ee(e){return Q.subscribeThemeChange(e)}var $=(0,S.createContext)(null);function De({children:e}){let[t,n]=(0,S.useState)(()=>Ce());(0,S.useEffect)(()=>Ee(e=>{n(e)}),[]);let r=(0,S.useCallback)(e=>{Te(e),n(we())},[]),i=(0,S.useMemo)(()=>({theme:t,setTheme:r}),[t,r]);return(0,C.jsx)($.Provider,{value:i,children:e})}function Oe(){let e=(0,S.useContext)($);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}export{v as C,x as S,g as T,P as _,Z as a,me as b,ve as c,H as d,V as f,F as g,I as h,Se as i,G as l,z as m,Oe as n,X as o,R as p,J as r,ye as s,De as t,_e as u,pe as v,_ as w,de as x,N as y};
1
+ import{i as e}from"./chunk-DF37yw5_.js";import{Jn as t,Lt as n,Sn as r,Xn as i,Yn as a,Yt as o,cr as s,gn as c,pn as ee,sr as l,yr as te}from"./api-DjiZvIa0.js";import{t as u}from"./createLucideIcon-Cfo2ySi5.js";import{d,f,l as p,p as ne,s as m}from"./i18n-Bm3Ov7Fy.js";import{a as re,i as ie,n as ae,o as oe,r as se,t as ce}from"./dialog-QjQoKbIV.js";import{n as h}from"./navigation-history-CzErJuPG.js";var g=u(`Boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),_=u(`RotateCcw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),v=u(`ShieldAlert`,[[`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:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),le=class{constructor(e){this.authorizationManager=e,this.handleIframeMessage=({event:e,iframe:t})=>{this.isBridgeRequest(e.data)&&(!t?.contentWindow||e.source!==t.contentWindow||this.handleBridgeRequest({event:e,iframe:t},e.data))},this.handleBridgeRequest=async(e,t)=>{try{let n=this.getBridgeContext(t),r=await this.dispatchRequest(n,t);this.postResponse(e,{type:`nextclaw:panel-app-service-actions:response`,requestId:t.requestId,ok:!0,data:r})}catch(n){this.postResponse(e,{type:`nextclaw:panel-app-service-actions:response`,requestId:t.requestId,ok:!1,error:this.toBridgeError(n)})}},this.dispatchRequest=async(e,t)=>{switch(t.method){case`list`:return await n.serviceApps.listServiceActions({bridgeSessionToken:e.token});case`requestGrant`:return await this.confirmAndGrant(e,this.requireActionId(t));case`revokeGrant`:return await n.serviceApps.revokeServiceAction(this.requireActionId(t),{bridgeSessionToken:e.token});case`invoke`:return await this.invokeWithAuthorization(e,t);case`agent.send`:return await this.sendAgentMessageWithAuthorization(e,t);case`agent.generateObject`:return await this.generateAgentObjectWithAuthorization(e,t);case`verification.list`:return await n.serviceApps.listVerificationRecords({acceptanceId:t.payload?.acceptanceId,appId:t.payload?.appId,limit:t.payload?.limit,bridgeSessionToken:e.token});case`acceptance.status`:return await n.serviceApps.getPortableRuntimeAcceptanceStatus({appId:t.payload?.appId,locale:t.payload?.locale,bridgeSessionToken:e.token});case`acceptance.export`:return await n.serviceApps.exportPortableRuntimeAcceptance({appId:t.payload?.appId,locale:t.payload?.locale,bridgeSessionToken:e.token});default:throw Error(`Unsupported panel bridge method: ${String(t.method)}`)}},this.invokeWithAuthorization=async(e,t)=>{let r=this.requireActionId(t);try{return await n.serviceApps.invokeServiceAction(r,this.readOptionalRecord(t.payload?.input),{bridgeSessionToken:e.token})}catch(i){if(!(i instanceof c)||i.code!==`AUTHORIZATION_REQUIRED`)throw i;return await this.confirmAndGrant(e,r,this.readOptionalRecord(t.payload?.input)),await n.serviceApps.invokeServiceAction(r,this.readOptionalRecord(t.payload?.input),{bridgeSessionToken:e.token})}},this.sendAgentMessageWithAuthorization=async(e,t)=>{try{return await n.panelApps.sendAgentMessage(this.readAgentSendRequest(t),{bridgeSessionToken:e.token})}catch(r){if(!(r instanceof c)||r.code!==`AUTHORIZATION_REQUIRED`)throw r;return await this.confirmAndGrantAgentCapability(e,`agent:send`),await n.panelApps.sendAgentMessage(this.readAgentSendRequest(t),{bridgeSessionToken:e.token})}},this.generateAgentObjectWithAuthorization=async(e,t)=>{try{return await n.panelApps.generateAgentObject(this.readGenerateObjectRequest(t),{bridgeSessionToken:e.token})}catch(r){if(!(r instanceof c)||r.code!==`AUTHORIZATION_REQUIRED`)throw r;return await this.confirmAndGrantAgentCapability(e,`agent:generateObject`),await n.panelApps.generateAgentObject(this.readGenerateObjectRequest(t),{bridgeSessionToken:e.token})}},this.confirmAndGrantAgentCapability=async(e,t)=>{if(!await this.authorizationManager.requestAuthorization({panelAppId:e.appId,actions:[{actionId:t,actionTitle:t===`agent:send`?`Send agent message`:`Generate object`,actionDescription:t===`agent:send`?`Send a message to a NextClaw Agent session.`:`Send context to a NextClaw Agent session and receive a structured object.`,risk:`write`}]}))throw new c({code:`AUTHORIZATION_REJECTED`,message:`Permission rejected for ${t}.`});return await n.panelApps.grantAgentCapability(t,{bridgeSessionToken:e.token})},this.confirmAndGrant=async(e,t,r)=>{let i=await this.listGrantCandidateActions(e,t);if(!await this.authorizationManager.requestAuthorization({panelAppId:e.appId,actions:i.map(e=>({actionId:e.id,actionTitle:e.title,actionDescription:e.description,risk:e.risk})),inputPreview:this.createInputPreview(r)}))throw new c({code:`AUTHORIZATION_REJECTED`,message:`Permission rejected for ${t}.`});let a=await n.serviceApps.grantServiceActions(i.map(e=>e.id),{bridgeSessionToken:e.token}),o=a.grants.find(e=>e.actionId===t)??a.grants[0];if(!o)throw Error(`No permission grant returned for ${t}.`);return o},this.listGrantCandidateActions=async(e,t)=>{let r=await n.serviceApps.listServiceActions({bridgeSessionToken:e.token}),i=r.actions.find(e=>e.id===t);if(i&&i.grantState!==`not-granted`)return[i];let a=r.actions.filter(e=>e.grantState===`not-granted`),o=[...a.filter(e=>e.id===t),...a.filter(e=>e.id!==t)];return o.length>0?o:[{appId:i?.appId??t.split(`.`)[0]??t,description:i?.description,id:t,name:i?.name??t,risk:i?.risk??`dangerous`,title:i?.title}]},this.createInputPreview=e=>{if(!(!e||Object.keys(e).length===0))try{let t=JSON.stringify(e,null,2);return t.length>500?`${t.slice(0,500)}...`:t}catch{return`[unserializable input]`}},this.getBridgeContext=e=>({appId:e.appId,token:e.runtimeToken}),this.requireActionId=e=>{let t=e.payload?.actionId?.trim();if(!t)throw Error(`Panel bridge actionId is required.`);return t},this.readOptionalRecord=e=>{if(e!==void 0)return this.requireRecord(e,`input`)},this.readAgentSendRequest=e=>({payload:this.requireRecord(e.payload?.request,`agent.send request`)}),this.readGenerateObjectRequest=e=>({input:this.requireRecord(e.payload?.input,`generateObject input`)}),this.requireRecord=(e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} is required.`);return e},this.postResponse=(e,t)=>{e.iframe?.contentWindow?.postMessage(t,`*`)},this.toBridgeError=e=>e instanceof c?{code:e.code,message:e.message,details:e.details}:{message:e instanceof Error?e.message:String(e)},this.isBridgeRequest=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`nextclaw:panel-app-service-actions:request`&&typeof t.requestId==`string`&&typeof t.runtimeToken==`string`&&typeof t.appId==`string`&&(t.method===`invoke`||t.method===`agent.send`||t.method===`agent.generateObject`||t.method===`acceptance.export`||t.method===`acceptance.status`||t.method===`list`||t.method===`requestGrant`||t.method===`revokeGrant`||t.method===`verification.list`)}}};function y(){return`service-action-auth-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}var b=ee((e,t)=>({pending:null,requestAuthorization:async n=>await new Promise(r=>{t().pending?.resolve(!1),e({pending:{id:y(),...n,resolve:r}})}),resolveAuthorization:n=>{let{pending:r}=t();r&&(r.resolve(n),e({pending:null}))}})),ue=class{constructor(){this.requestAuthorization=async e=>await b.getState().requestAuthorization(e)}},x=class{constructor(){this.serviceActionAuthorizationManager=new ue,this.panelAppBridgeManager=new le(this.serviceActionAuthorizationManager)}},S=e(te(),1),C=s(),w=globalThis,T=w.__NEXTCLAW_PANEL_APP_HOST_CONTEXT__??(0,S.createContext)(null);w.__NEXTCLAW_PANEL_APP_HOST_CONTEXT__=T;function de({children:e,presenter:t}){let n=(0,S.useMemo)(()=>t??new x,[t]);return(0,C.jsx)(T.Provider,{value:n,children:e})}function E(){let e=(0,S.useContext)(T);if(!e)throw Error(`usePanelAppHostPresenter must be used inside PanelAppHostProvider`);return e}var D=[`panel-apps`],O=[`panel-app`];function k(e,t){return e.id===t||e.appId===t}function A(e,t,n){return e&&{...e,entries:e.entries.map(e=>k(e,t)?n(e):e)}}function j(e,t){return A(e,t.id,()=>t)}function fe(e,t){let n=e?.entries.reduce((e,t)=>Math.max(e,t.mainSidebarOrder??-1),-1)??-1;return A(e,t.id,e=>({...e,...typeof t.preferences.favorite==`boolean`?{favorite:t.preferences.favorite}:{},...typeof t.preferences.mainSidebar==`boolean`?t.preferences.mainSidebar?{mainSidebar:!0,mainSidebarOrder:e.mainSidebar?e.mainSidebarOrder:n+1}:{mainSidebar:!1,mainSidebarOrder:void 0}:{}}))}function pe(e={}){return i({queryKey:D,queryFn:()=>n.panelApps.listPanelApps(),enabled:e.enabled??!0,staleTime:0})}function M(e,t={}){return i({queryKey:[...O,e],queryFn:()=>n.panelApps.getPanelApp(e),enabled:!!e&&(t.enabled??!0),staleTime:5e3})}function me(){let e=l();return a({mutationFn:({id:e,preferences:t})=>n.panelApps.updatePanelAppPreferences(e,t),onMutate:async t=>{await e.cancelQueries({queryKey:D});let n=e.getQueryData(D)?.entries.find(e=>k(e,t.id));return e.setQueryData(D,e=>fe(e,t)),{previousEntry:n}},onSuccess:t=>{e.setQueryData(D,e=>j(e,t)),e.setQueryData([...O,t.appId],t)},onError:(n,r,i)=>{let a=i?.previousEntry;a&&e.setQueryData(D,e=>A(e,r.id,()=>a));let o=n instanceof Error?n.message:String(n);t.error(`${m(`panelAppsPreferenceUpdateFailed`)}: ${o}`)}})}function N(){let e=l();return a({mutationFn:e=>n.panelApps.recordPanelAppOpened(e),onSuccess:t=>{e.setQueryData(D,e=>j(e,t)),e.setQueryData([...O,t.appId],t)}})}function P(){let e=l();return a({mutationFn:e=>n.panelApps.grantClient(e),onSuccess:()=>{e.invalidateQueries({queryKey:D}),e.invalidateQueries({queryKey:O})}})}function F(){let e=l();return a({mutationFn:e=>n.panelApps.deletePanelApp(e),onSuccess:()=>{e.invalidateQueries({queryKey:D}),e.invalidateQueries({queryKey:O})}})}function I(){let e=E(),{isPending:t,mutateAsync:n}=P(),r=(0,S.useRef)(new Map);return{ensurePanelAppClientGrant:(0,S.useCallback)(async t=>{if(!t.clientDeclared||t.clientGranted)return!0;let i=r.current.get(t.appId);if(i)return await i;let a=(async()=>await e.serviceActionAuthorizationManager.requestAuthorization({panelAppId:t.appId,actions:[{actionId:`nextclaw.client`,actionTitle:m(`panelAppsClientGrantTitle`),actionDescription:m(`panelAppsClientGrantDescription`),risk:`dangerous`}]})?(await n(t.appId),!0):!1)();r.current.set(t.appId,a);try{return await a}finally{r.current.delete(t.appId)}},[n,e]),isPending:t}}function L(e){let t=l(),r=(0,S.useId)(),{ensurePanelAppClientGrant:a}=I(),o=!!(e?.clientDeclared&&!e.clientGranted),s=i({queryKey:[`panel-app-client-grant`,e?.appId??`none`,e?.clientGranted??!1],queryFn:async()=>await a(e),enabled:o,gcTime:0,retry:!1,staleTime:1/0}),c=e?o?s.isError?`error`:s.isPending?`checking`:s.data?`allowed`:`denied`:`allowed`:`idle`;return i({queryKey:[`panel-app-open`,r,e?.appId??`none`],queryFn:async()=>{let r=await n.panelApps.recordPanelAppOpened(e.id);return t.setQueryData(D,e=>j(e,r)),t.setQueryData([...O,r.appId],r),r},enabled:!!(e&&c===`allowed`),retry:!1,staleTime:1/0}),{retryClientGrant:s.refetch,state:c}}var R=`allow-scripts allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-downloads allow-pointer-lock allow-presentation`;function z(e){e?.focus({preventScroll:!0}),e?.contentWindow?.focus()}function B(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.kind===`document`?!0:t.kind===`element`&&Array.isArray(t.path)&&t.path.length>0&&t.path.length<=30&&t.path.every(e=>typeof e?.index==`number`&&Number.isInteger(e.index)&&e.index>=0&&e.index<=1e3&&typeof e.tagName==`string`&&e.tagName.length>0&&e.tagName.length<=32)}function he(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.currentUrl==`string`&&B(t.target)}function ge(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===r.scrollMessageType&&t.version===r.version&&B(t.target)&&typeof t.x==`number`&&Number.isFinite(t.x)&&t.x>=0&&typeof t.y==`number`&&Number.isFinite(t.y)&&t.y>=0}function V({currentUrl:e,iframeRef:t,isEnabled:n,restorationKey:i}){let a=i&&e?JSON.stringify([i,e]):null;return(0,S.useEffect)(()=>{if(!e||!n||!a)return;let r=a,i=n=>{n.source!==t.current?.contentWindow||!ge(n.data)||h.save(r,{x:n.data.x,y:n.data.y,payload:{currentUrl:e,target:n.data.target}})};return window.addEventListener(`message`,i),()=>window.removeEventListener(`message`,i)},[e,t,n,a]),(0,S.useCallback)(()=>{if(!e||!n||!a)return;let i=h.read(a);!i||!he(i.payload)||i.payload.currentUrl!==e||t.current?.contentWindow?.postMessage({type:r.restoreScrollMessageType,version:r.version,target:i.payload.target,x:i.x,y:i.y},`*`)},[e,t,n,a])}function H({appId:e,restorationScope:t,unavailableAction:n}){let r=E(),i=M(e),a=(0,S.useRef)(null),o=(0,S.useMemo)(()=>i.data,[i.data]),s=L(o),c=V({currentUrl:o?.contentPath??null,iframeRef:a,isEnabled:!!o,restorationKey:o?`panel-app:${t}:${o.appId}`:null});return(0,S.useEffect)(()=>{let e=e=>{r.panelAppBridgeManager.handleIframeMessage({event:e,iframe:a.current})};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[r]),i.isLoading?(0,C.jsx)(U,{message:m(`panelAppsLoading`)}):i.isError?(0,C.jsx)(U,{message:i.error instanceof Error?i.error.message:m(`panelAppsLoadFailed`),actionLabel:m(`panelAppsTryAgain`),onAction:()=>void i.refetch()}):o?s.state===`checking`||s.state===`idle`?(0,C.jsx)(U,{message:m(`panelAppsCheckingPermission`)}):s.state===`denied`||s.state===`error`?(0,C.jsx)(U,{message:s.state===`denied`?m(`panelAppsPermissionDenied`):m(`panelAppsPermissionFailed`),actionLabel:m(`panelAppsTryAgain`),onAction:()=>void s.retryClientGrant()}):(0,C.jsx)(`div`,{className:`h-full min-h-0 bg-background`,children:(0,C.jsx)(`iframe`,{ref:a,src:o.contentPath,title:o.title,sandbox:R,className:`block h-full w-full border-0 bg-background`,onLoad:c,onPointerOver:e=>z(e.currentTarget)},o.appId)}):(0,C.jsx)(U,{message:m(`panelAppsMainUnavailable`),actionLabel:n?.label,onAction:n?.onAction})}function U({actionLabel:e,message:t,onAction:n}){return(0,C.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-background px-6 text-center`,children:(0,C.jsxs)(`div`,{className:`max-w-sm`,children:[(0,C.jsx)(`div`,{className:`mx-auto flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground`,children:n?(0,C.jsx)(_,{className:`h-5 w-5`}):(0,C.jsx)(g,{className:`h-5 w-5`})}),(0,C.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-muted-foreground`,children:t}),e&&n?(0,C.jsx)(`button`,{type:`button`,className:`mt-4 rounded-md border border-border px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:n,children:e}):null]})})}var W=(0,S.createContext)(null);function G({children:e}){let[t,n]=(0,S.useState)(()=>d());(0,S.useEffect)(()=>ne(e=>{n(e)}),[]);let r=(0,S.useCallback)(e=>{f(e),n(p())},[]),i=(0,S.useCallback)(()=>{r(t===`en`?`zh`:`en`)},[t,r]),a=(0,S.useMemo)(()=>({language:t,setLanguage:r,toggleLanguage:i}),[t,r,i]);return(0,C.jsx)(W.Provider,{value:a,children:e})}function _e(){let e=(0,S.useContext)(W);if(!e)throw Error(`useI18n must be used within I18nProvider`);return{...e,t:m}}function ve({appId:e}){let t=M(e),n=(0,S.useMemo)(()=>t.data,[t.data]);return(0,S.useEffect)(()=>{let e=document.title;return document.title=`${n?.title??m(`panelAppsTitle`)} · NextClaw`,()=>{document.title=e}},[n?.title]),(0,C.jsx)(`main`,{className:`h-dvh min-h-0 w-full overflow-hidden bg-background`,children:(0,C.jsx)(H,{appId:e,restorationScope:`standalone`})})}function ye(){let e=b(e=>e.pending),t=b(e=>e.resolveAuthorization);return(0,C.jsx)(ce,{open:!!e,onOpenChange:e=>{e||t(!1)},children:(0,C.jsxs)(ae,{className:`[&>:last-child]:hidden`,children:[(0,C.jsxs)(re,{children:[(0,C.jsxs)(oe,{className:`flex items-center gap-2`,children:[(0,C.jsx)(v,{className:`h-4 w-4 text-amber-600`}),m(`serviceActionAuthorizationTitle`)]}),(0,C.jsx)(se,{children:m(`serviceActionAuthorizationDescription`)})]}),e?(0,C.jsxs)(`div`,{className:`space-y-3 rounded-md border border-border bg-muted/60 p-3 text-sm`,children:[(0,C.jsx)(K,{label:m(`serviceActionAuthorizationSource`),value:e.panelAppId}),(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:m(`serviceActionAuthorizationActions`)}),(0,C.jsx)(`div`,{className:`max-h-64 space-y-2 overflow-auto`,children:e.actions.map(e=>(0,C.jsx)(be,{action:e},e.actionId))})]}),e.inputPreview?(0,C.jsx)(K,{label:m(`serviceActionAuthorizationInput`),value:e.inputPreview}):null]}):null,(0,C.jsxs)(ie,{className:`gap-2 sm:gap-0`,children:[(0,C.jsx)(o,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:m(`serviceActionAuthorizationReject`)}),(0,C.jsx)(o,{type:`button`,onClick:()=>t(!0),children:m(`serviceActionAuthorizationAllow`)})]})]})})}function be({action:e}){return(0,C.jsxs)(`div`,{className:`space-y-1 rounded border border-border bg-card px-3 py-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,C.jsx)(`div`,{className:`min-w-0 break-words text-xs font-medium text-foreground`,children:e.actionTitle??e.actionId}),(0,C.jsx)(`div`,{className:`shrink-0 rounded bg-amber-50 px-1.5 py-0.5 text-[11px] font-medium text-amber-700`,children:e.risk??`dangerous`})]}),(0,C.jsx)(`div`,{className:`break-words text-[11px] text-muted-foreground`,children:e.actionId}),e.actionDescription?(0,C.jsx)(`div`,{className:`break-words text-xs text-muted-foreground`,children:e.actionDescription}):null]})}function K({label:e,value:t}){return(0,C.jsxs)(`div`,{className:`grid grid-cols-[5rem_minmax(0,1fr)] gap-3`,children:[(0,C.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:e}),(0,C.jsx)(`div`,{className:`min-w-0 break-words text-xs text-foreground`,children:t})]})}var q=`nextclaw.ui.theme`,J=`work`,Y=[{value:`work`,labelKey:`themeWork`,appearance:`light`},{value:`night`,labelKey:`themeNight`,appearance:`dark`},{value:`charcoal`,labelKey:`themeCharcoal`,appearance:`dark`},{value:`island`,labelKey:`themeIsland`,appearance:`light`},{value:`natural`,labelKey:`themeNatural`,appearance:`light`},{value:`minimal`,labelKey:`themeMinimal`,appearance:`light`},{value:`warm`,labelKey:`themeWarm`,appearance:`light`},{value:`cool`,labelKey:`themeCool`,appearance:`light`},{value:`dawn`,labelKey:`themeDawn`,appearance:`light`},{value:`graphite`,labelKey:`themeGraphite`,appearance:`light`},{value:`probe`,labelKey:`themeProbe`,appearance:`light`}],xe=Y.map(({value:e})=>e),Se=Y.map(({value:e,labelKey:t})=>({value:e,labelKey:t}));function X(e){return typeof e==`string`?xe.includes(e)?e:e===`leaf`?`warm`:null:null}function Z(e){return Y.find(t=>t.value===e)?.appearance??`light`}var Q=new class{constructor(){this.activeTheme=J,this.initialized=!1,this.listeners=new Set,this.resolveInitialTheme=()=>{if(typeof window>`u`)return J;try{let e=X(window.localStorage.getItem(q));if(e)return e}catch{}return J},this.initializeTheme=()=>(this.initialized||=(this.activeTheme=this.resolveInitialTheme(),this.applyThemeAttribute(this.activeTheme),!0),this.activeTheme),this.getTheme=()=>this.initialized?this.activeTheme:this.initializeTheme(),this.setTheme=e=>{this.initializeTheme(),e!==this.activeTheme&&(this.activeTheme=e,this.applyThemeAttribute(this.activeTheme),this.saveTheme(this.activeTheme),this.listeners.forEach(e=>e(this.activeTheme)))},this.subscribeThemeChange=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.applyThemeAttribute=e=>{if(typeof document>`u`)return;let t=Z(e);document.documentElement.setAttribute(`data-theme`,e),document.documentElement.setAttribute(`data-theme-appearance`,t),document.documentElement.style.colorScheme=t},this.saveTheme=e=>{if(!(typeof window>`u`))try{window.localStorage.setItem(q,e)}catch{}}}};function Ce(){return Q.initializeTheme()}function we(){return Q.getTheme()}function Te(e){Q.setTheme(e)}function Ee(e){return Q.subscribeThemeChange(e)}var $=(0,S.createContext)(null);function De({children:e}){let[t,n]=(0,S.useState)(()=>Ce());(0,S.useEffect)(()=>Ee(e=>{n(e)}),[]);let r=(0,S.useCallback)(e=>{Te(e),n(we())},[]),i=(0,S.useMemo)(()=>({theme:t,setTheme:r}),[t,r]);return(0,C.jsx)($.Provider,{value:i,children:e})}function Oe(){let e=(0,S.useContext)($);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}export{v as C,x as S,g as T,P as _,Z as a,me as b,ve as c,H as d,V as f,F as g,I as h,Se as i,G as l,z as m,Oe as n,X as o,R as p,J as r,ye as s,De as t,_e as u,pe as v,_ as w,de as x,N as y};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-DE0sB9Nu.js";var t=e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),n=e(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]);export{t as n,n as t};
1
+ import{t as e}from"./createLucideIcon-Cfo2ySi5.js";var t=e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),n=e(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]);export{t as n,n as t};
@@ -1 +1 @@
1
- import{At as e,Ct as t,Dt as n,Et as r,Jn as i,Ot as a,St as o,Tt as s,Xn as c,Yn as l,_t as u,at as d,dt as f,gt as p,ht as m,kt as h,lt as g,mt as _,ot as v,rt as y,sr as b,st as x,ut as S,vt as C,wt as w,yt as T}from"./api-BZvNpFOS.js";import{s as E}from"./i18n-OGmF0Ws_.js";function D(){return c({queryKey:[`config`],queryFn:g,staleTime:3e4,refetchOnWindowFocus:!0})}function O(){return c({queryKey:[`config-meta`],queryFn:S,staleTime:1/0})}function k(){return c({queryKey:[`product-analytics-status`],queryFn:_,staleTime:15e3,refetchOnWindowFocus:!0})}function A(){return c({queryKey:[`providers`],queryFn:u,staleTime:3e4,refetchOnWindowFocus:!0})}function j(){return c({queryKey:[`provider-templates`],queryFn:p,staleTime:1/0})}function M(e={}){return c({queryKey:[`provider-model-catalog`],queryFn:m,staleTime:3e4,refetchInterval:t=>e.pollWhileRefreshing&&t.state.data?.refreshing?1e3:!1,refetchOnMount:e.refreshOnMount?`always`:!0,refetchOnWindowFocus:!0})}function N(){return c({queryKey:[`config-schema`],queryFn:f,staleTime:1/0})}function P(){let e=b();return l({mutationFn:s,onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function F(){let e=b();return l({mutationFn:({data:e})=>r(e),onSuccess:t=>{e.setQueryData([`config`],e=>e&&{...e,productAnalytics:t}),e.invalidateQueries({queryKey:[`product-analytics-status`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(`${E(`configSaveFailed`)}: ${e.message}`)}})}function I(){let e=b();return l({mutationFn:({data:e})=>h(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function L(){let e=b();return l({mutationFn:({provider:e,data:t})=>n(e,t),onSuccess:(t,n)=>{e.setQueryData([`providers`],e=>e&&{providers:{...e.providers,[n.provider]:t}}),e.invalidateQueries({queryKey:[`providers`]}),e.invalidateQueries({queryKey:[`config`]}),n.silentSuccess||i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function R(){let e=b();return l({mutationFn:({data:e})=>y(e??{}),onSuccess:()=>{e.invalidateQueries({queryKey:[`providers`]}),e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function z(){let e=b();return l({mutationFn:({provider:e})=>d(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`providers`]}),e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function B(){return l({mutationFn:({provider:e,data:n})=>t(e,n)})}function V(){return l({mutationFn:({provider:e,data:t})=>v(e,t)})}function H(){return l({mutationFn:({provider:e,data:t})=>o(e,t)})}function U(){return l({mutationFn:({provider:e,data:t})=>T(e,t)})}function W(){return l({mutationFn:({provider:e})=>C(e)})}function G(){let e=b();return l({mutationFn:({channel:e,data:t})=>w(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),i.success(E(`configSavedApplying`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function K(){let e=b();return l({mutationFn:({data:e})=>a(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function q(){let t=b();return l({mutationFn:({data:t})=>e(t),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function J(){return l({mutationFn:({actionId:e,data:t})=>x(e,t),onError:e=>{i.error(E(`error`)+`: `+e.message)}})}export{q as S,P as _,z as a,K as b,W as c,M as d,j as f,G as g,B as h,R as i,U as l,H as m,O as n,V as o,A as p,N as r,J as s,D as t,k as u,F as v,I as x,L as y};
1
+ import{At as e,Ct as t,Dt as n,Et as r,Jn as i,Ot as a,St as o,Tt as s,Xn as c,Yn as l,_t as u,at as d,dt as f,gt as p,ht as m,kt as h,lt as g,mt as _,ot as v,rt as y,sr as b,st as x,ut as S,vt as C,wt as w,yt as T}from"./api-DjiZvIa0.js";import{s as E}from"./i18n-Bm3Ov7Fy.js";function D(){return c({queryKey:[`config`],queryFn:g,staleTime:3e4,refetchOnWindowFocus:!0})}function O(){return c({queryKey:[`config-meta`],queryFn:S,staleTime:1/0})}function k(){return c({queryKey:[`product-analytics-status`],queryFn:_,staleTime:15e3,refetchOnWindowFocus:!0})}function A(){return c({queryKey:[`providers`],queryFn:u,staleTime:3e4,refetchOnWindowFocus:!0})}function j(){return c({queryKey:[`provider-templates`],queryFn:p,staleTime:1/0})}function M(e={}){return c({queryKey:[`provider-model-catalog`],queryFn:m,staleTime:3e4,refetchInterval:t=>e.pollWhileRefreshing&&t.state.data?.refreshing?1e3:!1,refetchOnMount:e.refreshOnMount?`always`:!0,refetchOnWindowFocus:!0})}function N(){return c({queryKey:[`config-schema`],queryFn:f,staleTime:1/0})}function P(){let e=b();return l({mutationFn:s,onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function F(){let e=b();return l({mutationFn:({data:e})=>r(e),onSuccess:t=>{e.setQueryData([`config`],e=>e&&{...e,productAnalytics:t}),e.invalidateQueries({queryKey:[`product-analytics-status`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(`${E(`configSaveFailed`)}: ${e.message}`)}})}function I(){let e=b();return l({mutationFn:({data:e})=>h(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function L(){let e=b();return l({mutationFn:({provider:e,data:t})=>n(e,t),onSuccess:(t,n)=>{e.setQueryData([`providers`],e=>e&&{providers:{...e.providers,[n.provider]:t}}),e.invalidateQueries({queryKey:[`providers`]}),e.invalidateQueries({queryKey:[`config`]}),n.silentSuccess||i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function R(){let e=b();return l({mutationFn:({data:e})=>y(e??{}),onSuccess:()=>{e.invalidateQueries({queryKey:[`providers`]}),e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function z(){let e=b();return l({mutationFn:({provider:e})=>d(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`providers`]}),e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSaved`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function B(){return l({mutationFn:({provider:e,data:n})=>t(e,n)})}function V(){return l({mutationFn:({provider:e,data:t})=>v(e,t)})}function H(){return l({mutationFn:({provider:e,data:t})=>o(e,t)})}function U(){return l({mutationFn:({provider:e,data:t})=>T(e,t)})}function W(){return l({mutationFn:({provider:e})=>C(e)})}function G(){let e=b();return l({mutationFn:({channel:e,data:t})=>w(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),i.success(E(`configSavedApplying`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function K(){let e=b();return l({mutationFn:({data:e})=>a(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function q(){let t=b();return l({mutationFn:({data:t})=>e(t),onSuccess:()=>{t.invalidateQueries({queryKey:[`config`]}),i.success(E(`configSavedApplied`))},onError:e=>{i.error(E(`configSaveFailed`)+`: `+e.message)}})}function J(){return l({mutationFn:({actionId:e,data:t})=>x(e,t),onError:e=>{i.error(E(`error`)+`: `+e.message)}})}export{q as S,P as _,z as a,K as b,W as c,M as d,j as f,G as g,B as h,R as i,U as l,H as m,O as n,V as o,A as p,N as r,J as s,D as t,k as u,F as v,I as x,L as y};
@@ -1 +1 @@
1
- import{Lt as e,Xn as t,Yn as n,sr as r}from"./api-BZvNpFOS.js";var i=new class{constructor(){this.getStatus=async()=>await e.capabilityAccess.getDesktopStatus(),this.listGrants=async()=>await e.capabilityAccess.listDesktopGrants(),this.grantAccess=async t=>await e.capabilityAccess.grantDesktopAccess(t),this.requestSystemPermission=async()=>await e.capabilityAccess.requestDesktopPermissions(),this.openSystemSettings=async()=>await e.capabilityAccess.openDesktopPermissionSettings(),this.revokeGrant=async t=>await e.capabilityAccess.revokeDesktopAccess(t)}},a=[`feature-controls`];function o(){return t({queryKey:a,queryFn:e.featureControls.get})}var s=[`desktop-capability`,`status`],c=[`desktop-capability`,`grants`];function l(){return t({queryKey:s,queryFn:i.getStatus})}function u(){return d(o().data)}function d(e){return e?.desktopAutomation.available===!0}function f(){return t({queryKey:c,queryFn:i.listGrants})}function p(){let e=r();return n({mutationFn:i.requestSystemPermission,onSuccess:async()=>{await e.invalidateQueries({queryKey:s})}})}function m(){return n({mutationFn:i.openSystemSettings})}function h(){let e=r();return n({mutationFn:async e=>await i.revokeGrant(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:c})}})}export{p as a,m as i,f as n,h as o,l as r,i as s,u as t};
1
+ import{Lt as e,Xn as t,Yn as n,sr as r}from"./api-DjiZvIa0.js";var i=new class{constructor(){this.getStatus=async()=>await e.capabilityAccess.getDesktopStatus(),this.listGrants=async()=>await e.capabilityAccess.listDesktopGrants(),this.grantAccess=async t=>await e.capabilityAccess.grantDesktopAccess(t),this.requestSystemPermission=async()=>await e.capabilityAccess.requestDesktopPermissions(),this.openSystemSettings=async()=>await e.capabilityAccess.openDesktopPermissionSettings(),this.revokeGrant=async t=>await e.capabilityAccess.revokeDesktopAccess(t)}},a=[`feature-controls`];function o(){return t({queryKey:a,queryFn:e.featureControls.get})}var s=[`desktop-capability`,`status`],c=[`desktop-capability`,`grants`];function l(){return t({queryKey:s,queryFn:i.getStatus})}function u(){return d(o().data)}function d(e){return e?.desktopAutomation.available===!0}function f(){return t({queryKey:c,queryFn:i.listGrants})}function p(){let e=r();return n({mutationFn:i.requestSystemPermission,onSuccess:async()=>{await e.invalidateQueries({queryKey:s})}})}function m(){return n({mutationFn:i.openSystemSettings})}function h(){let e=r();return n({mutationFn:async e=>await i.revokeGrant(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:c})}})}export{p as a,m as i,f as n,h as o,l as r,i as s,u as t};
@@ -1 +1 @@
1
- import{i as e}from"./chunk-DF37yw5_.js";import{pn as t,yr as n}from"./api-BZvNpFOS.js";import{t as r}from"./createLucideIcon-DE0sB9Nu.js";import{n as i,t as a}from"./middleware-B--6mAUM.js";var o=r(`ArrowLeft`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),s=r(`KeyRound`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),c=r(`Search`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),l=`nextclaw.app.viewport-layout`,u=1;function d(e){return typeof e!=`number`||!Number.isFinite(e)?`desktop`:e<=767?`mobile`:`desktop`}function f(){let e=typeof window>`u`?null:window.innerWidth??null;return{mode:d(e),width:e,isSidebarCollapsed:!1,isMainSidebarAppGroupCollapsed:!1}}function p(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`boolean`?n:null}var m=t()(i(()=>f(),{name:l,version:u,storage:a(()=>window.localStorage),partialize:e=>({isSidebarCollapsed:e.isSidebarCollapsed,isMainSidebarAppGroupCollapsed:e.isMainSidebarAppGroupCollapsed}),merge:(e,t)=>{let n=p(e,`isSidebarCollapsed`),r=p(e,`isMainSidebarAppGroupCollapsed`);return{...t,...n===null?{}:{isSidebarCollapsed:n},...r===null?{}:{isMainSidebarAppGroupCollapsed:r}}}})),h=new class{constructor(){this.consumerCount=0,this.started=!1,this.attach=()=>(this.consumerCount+=1,this.consumerCount===1&&this.start(),()=>{this.consumerCount=Math.max(0,this.consumerCount-1),this.consumerCount===0&&this.stop()}),this.start=()=>{this.started||typeof window>`u`||(this.started=!0,window.addEventListener(`resize`,this.handleViewportChange),window.addEventListener(`orientationchange`,this.handleViewportChange),this.syncFromWindow())},this.stop=()=>{!this.started||typeof window>`u`||(window.removeEventListener(`resize`,this.handleViewportChange),window.removeEventListener(`orientationchange`,this.handleViewportChange),this.started=!1)},this.getSnapshot=()=>m.getState(),this.setSidebarCollapsed=e=>{m.setState({isSidebarCollapsed:e})},this.setMainSidebarAppGroupCollapsed=e=>{m.setState({isMainSidebarAppGroupCollapsed:e})},this.collapseSidebarForDenseRightPanels=e=>{if(!e.isDocBrowserOpen||!e.isDocBrowserDocked||!e.isWorkspacePanelOpen)return;let t=this.getSnapshot();if(t.mode!==`desktop`||t.isSidebarCollapsed)return;let n=typeof t.width==`number`?t.width:typeof window>`u`?null:window.innerWidth;typeof n!=`number`||!Number.isFinite(n)||n>1800||this.setSidebarCollapsed(!0)},this.toggleSidebarCollapsed=()=>{m.setState(e=>({isSidebarCollapsed:!e.isSidebarCollapsed}))},this.toggleMainSidebarAppGroupCollapsed=()=>{m.setState(e=>({isMainSidebarAppGroupCollapsed:!e.isMainSidebarAppGroupCollapsed}))},this.resetForTests=()=>{this.consumerCount=0,this.stop(),m.setState(f())},this.handleViewportChange=()=>{this.syncFromWindow()},this.syncFromWindow=()=>{if(typeof window>`u`)return;let e=window.innerWidth??null;m.setState({width:e,mode:d(e)})}}},g=e(n(),1);function _(){return(0,g.useEffect)(()=>h.attach(),[]),{isMobile:m(e=>e.mode)===`mobile`}}export{s as a,c as i,h as n,o,m as r,_ as t};
1
+ import{i as e}from"./chunk-DF37yw5_.js";import{pn as t,yr as n}from"./api-DjiZvIa0.js";import{t as r}from"./createLucideIcon-Cfo2ySi5.js";import{n as i,t as a}from"./middleware-B--6mAUM.js";var o=r(`ArrowLeft`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),s=r(`KeyRound`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),c=r(`Search`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),l=`nextclaw.app.viewport-layout`,u=1;function d(e){return typeof e!=`number`||!Number.isFinite(e)?`desktop`:e<=767?`mobile`:`desktop`}function f(){let e=typeof window>`u`?null:window.innerWidth??null;return{mode:d(e),width:e,isSidebarCollapsed:!1,isMainSidebarAppGroupCollapsed:!1}}function p(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`boolean`?n:null}var m=t()(i(()=>f(),{name:l,version:u,storage:a(()=>window.localStorage),partialize:e=>({isSidebarCollapsed:e.isSidebarCollapsed,isMainSidebarAppGroupCollapsed:e.isMainSidebarAppGroupCollapsed}),merge:(e,t)=>{let n=p(e,`isSidebarCollapsed`),r=p(e,`isMainSidebarAppGroupCollapsed`);return{...t,...n===null?{}:{isSidebarCollapsed:n},...r===null?{}:{isMainSidebarAppGroupCollapsed:r}}}})),h=new class{constructor(){this.consumerCount=0,this.started=!1,this.attach=()=>(this.consumerCount+=1,this.consumerCount===1&&this.start(),()=>{this.consumerCount=Math.max(0,this.consumerCount-1),this.consumerCount===0&&this.stop()}),this.start=()=>{this.started||typeof window>`u`||(this.started=!0,window.addEventListener(`resize`,this.handleViewportChange),window.addEventListener(`orientationchange`,this.handleViewportChange),this.syncFromWindow())},this.stop=()=>{!this.started||typeof window>`u`||(window.removeEventListener(`resize`,this.handleViewportChange),window.removeEventListener(`orientationchange`,this.handleViewportChange),this.started=!1)},this.getSnapshot=()=>m.getState(),this.setSidebarCollapsed=e=>{m.setState({isSidebarCollapsed:e})},this.setMainSidebarAppGroupCollapsed=e=>{m.setState({isMainSidebarAppGroupCollapsed:e})},this.collapseSidebarForDenseRightPanels=e=>{if(!e.isDocBrowserOpen||!e.isDocBrowserDocked||!e.isWorkspacePanelOpen)return;let t=this.getSnapshot();if(t.mode!==`desktop`||t.isSidebarCollapsed)return;let n=typeof t.width==`number`?t.width:typeof window>`u`?null:window.innerWidth;typeof n!=`number`||!Number.isFinite(n)||n>1800||this.setSidebarCollapsed(!0)},this.toggleSidebarCollapsed=()=>{m.setState(e=>({isSidebarCollapsed:!e.isSidebarCollapsed}))},this.toggleMainSidebarAppGroupCollapsed=()=>{m.setState(e=>({isMainSidebarAppGroupCollapsed:!e.isMainSidebarAppGroupCollapsed}))},this.resetForTests=()=>{this.consumerCount=0,this.stop(),m.setState(f())},this.handleViewportChange=()=>{this.syncFromWindow()},this.syncFromWindow=()=>{if(typeof window>`u`)return;let e=window.innerWidth??null;m.setState({width:e,mode:d(e)})}}},g=e(n(),1);function _(){return(0,g.useEffect)(()=>h.attach(),[]),{isMobile:m(e=>e.mode)===`mobile`}}export{s as a,c as i,h as n,o,m as r,_ as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-Cfo2ySi5.js";var t=e(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
@@ -258,47 +258,47 @@
258
258
  })();
259
259
  </script>
260
260
  <title>NextClaw</title>
261
- <script type="module" crossorigin src="/assets/main-bEWCGDHr.js"></script>
261
+ <script type="module" crossorigin src="/assets/main-Bt5r6b21.js"></script>
262
262
  <link rel="modulepreload" crossorigin href="/assets/chunk-DF37yw5_.js">
263
263
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-ca-nBW7U.js">
264
- <link rel="modulepreload" crossorigin href="/assets/i18n-OGmF0Ws_.js">
265
- <link rel="modulepreload" crossorigin href="/assets/api-BZvNpFOS.js">
266
- <link rel="modulepreload" crossorigin href="/assets/client-DKKbdJ6Q.js">
267
- <link rel="modulepreload" crossorigin href="/assets/es2015-BiB05Sav.js">
268
- <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-DE0sB9Nu.js">
269
- <link rel="modulepreload" crossorigin href="/assets/select-Y9IEbx9x.js">
270
- <link rel="modulepreload" crossorigin href="/assets/context-menu-DHVVdHzN.js">
271
- <link rel="modulepreload" crossorigin href="/assets/x-DSz9cGhy.js">
272
- <link rel="modulepreload" crossorigin href="/assets/dialog-BUfWO8hr.js">
264
+ <link rel="modulepreload" crossorigin href="/assets/i18n-Bm3Ov7Fy.js">
265
+ <link rel="modulepreload" crossorigin href="/assets/api-DjiZvIa0.js">
266
+ <link rel="modulepreload" crossorigin href="/assets/client-CH7w6yRV.js">
267
+ <link rel="modulepreload" crossorigin href="/assets/es2015-Bp6cuSGh.js">
268
+ <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Cfo2ySi5.js">
269
+ <link rel="modulepreload" crossorigin href="/assets/select-CWyjnar7.js">
270
+ <link rel="modulepreload" crossorigin href="/assets/context-menu-BsCj2fRs.js">
271
+ <link rel="modulepreload" crossorigin href="/assets/x-ChPbNv39.js">
272
+ <link rel="modulepreload" crossorigin href="/assets/dialog-QjQoKbIV.js">
273
273
  <link rel="modulepreload" crossorigin href="/assets/katex-CsAM73R9.js">
274
- <link rel="modulepreload" crossorigin href="/assets/puzzle-D_TiFXOv.js">
274
+ <link rel="modulepreload" crossorigin href="/assets/puzzle-BGvD2DPZ.js">
275
275
  <link rel="modulepreload" crossorigin href="/assets/middleware-B--6mAUM.js">
276
- <link rel="modulepreload" crossorigin href="/assets/use-viewport-layout-vmbQUNT6.js">
277
- <link rel="modulepreload" crossorigin href="/assets/book-open-CmRdT3N1.js">
276
+ <link rel="modulepreload" crossorigin href="/assets/use-viewport-layout-D_9XWGDV.js">
277
+ <link rel="modulepreload" crossorigin href="/assets/book-open-Bcnn2_uV.js">
278
278
  <link rel="modulepreload" crossorigin href="/assets/navigation-history-CzErJuPG.js">
279
- <link rel="modulepreload" crossorigin href="/assets/theme-provider-BjF1Eowc.js">
280
- <link rel="modulepreload" crossorigin href="/assets/confirm-dialog-8vqYZ0wy.js">
281
- <link rel="modulepreload" crossorigin href="/assets/download-CKqS1Ksj.js">
279
+ <link rel="modulepreload" crossorigin href="/assets/theme-provider-CWUz4yO9.js">
280
+ <link rel="modulepreload" crossorigin href="/assets/confirm-dialog-CxfecBzO.js">
281
+ <link rel="modulepreload" crossorigin href="/assets/download-BoaKzDJk.js">
282
282
  <link rel="modulepreload" crossorigin href="/assets/host-capabilities-DuIFVsvM.js">
283
- <link rel="modulepreload" crossorigin href="/assets/navigation-link-DC-Pku0Y.js">
284
- <link rel="modulepreload" crossorigin href="/assets/eye-bKzylu3p.js">
285
- <link rel="modulepreload" crossorigin href="/assets/tag-chip-D-6aPuuh.js">
286
- <link rel="modulepreload" crossorigin href="/assets/loader-circle-Clq1Gtb1.js">
287
- <link rel="modulepreload" crossorigin href="/assets/trash-2-DER2EJKK.js">
288
- <link rel="modulepreload" crossorigin href="/assets/refresh-cw-BG8VfcdA.js">
289
- <link rel="modulepreload" crossorigin href="/assets/use-desktop-capabilities-ezKJwKqg.js">
290
- <link rel="modulepreload" crossorigin href="/assets/status-dot-Cb8ewlUr.js">
291
- <link rel="modulepreload" crossorigin href="/assets/doc-browser-context-ClLgMbxd.js">
292
- <link rel="modulepreload" crossorigin href="/assets/card-CdRBL1E0.js">
293
- <link rel="modulepreload" crossorigin href="/assets/provider-models-DFQgF4hS.js">
294
- <link rel="modulepreload" crossorigin href="/assets/use-config-BM5jC65L.js">
295
- <link rel="modulepreload" crossorigin href="/assets/app-presenter-provider-BcYL-VNe.js">
296
- <link rel="modulepreload" crossorigin href="/assets/provider-scoped-model-input-DaONL0j_.js">
297
- <link rel="modulepreload" crossorigin href="/assets/settings-2-CrGx9_De.js">
298
- <link rel="modulepreload" crossorigin href="/assets/pwa-C9ac_1dg.js">
299
- <link rel="modulepreload" crossorigin href="/assets/login-page-BT3GV3Sb.js">
283
+ <link rel="modulepreload" crossorigin href="/assets/navigation-link-CjxNC8aT.js">
284
+ <link rel="modulepreload" crossorigin href="/assets/eye-kisejBFH.js">
285
+ <link rel="modulepreload" crossorigin href="/assets/tag-chip-BIuavK2K.js">
286
+ <link rel="modulepreload" crossorigin href="/assets/loader-circle-Bd1fTm-x.js">
287
+ <link rel="modulepreload" crossorigin href="/assets/trash-2-hAbJh9VZ.js">
288
+ <link rel="modulepreload" crossorigin href="/assets/refresh-cw-BlXDrVP0.js">
289
+ <link rel="modulepreload" crossorigin href="/assets/use-desktop-capabilities-BYDjFlpt.js">
290
+ <link rel="modulepreload" crossorigin href="/assets/status-dot-C3SRFEta.js">
291
+ <link rel="modulepreload" crossorigin href="/assets/doc-browser-context-DwgG6wrz.js">
292
+ <link rel="modulepreload" crossorigin href="/assets/card-Cqs73hGI.js">
293
+ <link rel="modulepreload" crossorigin href="/assets/provider-models-Dm-pmWAA.js">
294
+ <link rel="modulepreload" crossorigin href="/assets/use-config-evzage09.js">
295
+ <link rel="modulepreload" crossorigin href="/assets/app-presenter-provider-CCRFsFYr.js">
296
+ <link rel="modulepreload" crossorigin href="/assets/provider-scoped-model-input-CzrXg4cX.js">
297
+ <link rel="modulepreload" crossorigin href="/assets/settings-2-CrNhfInU.js">
298
+ <link rel="modulepreload" crossorigin href="/assets/pwa-DNNK_8E9.js">
299
+ <link rel="modulepreload" crossorigin href="/assets/login-page-C-DvcG3L.js">
300
300
  <link rel="stylesheet" crossorigin href="/assets/app-presenter-provider-jNGlmBLe.css">
301
- <link rel="stylesheet" crossorigin href="/assets/main-kqMRTwOs.css">
301
+ <link rel="stylesheet" crossorigin href="/assets/main-DXd_aKJV.css">
302
302
  </head>
303
303
 
304
304
  <body>
Binary file
@@ -5,19 +5,19 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta name="theme-color" content="#ffffff" />
7
7
  <title>Panel App · NextClaw</title>
8
- <script type="module" crossorigin src="/assets/panelStandalone-CX8X2hjh.js"></script>
8
+ <script type="module" crossorigin src="/assets/panelStandalone-BaUzY8Wy.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DF37yw5_.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-ca-nBW7U.js">
11
- <link rel="modulepreload" crossorigin href="/assets/i18n-OGmF0Ws_.js">
12
- <link rel="modulepreload" crossorigin href="/assets/api-BZvNpFOS.js">
13
- <link rel="modulepreload" crossorigin href="/assets/client-DKKbdJ6Q.js">
14
- <link rel="modulepreload" crossorigin href="/assets/es2015-BiB05Sav.js">
15
- <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-DE0sB9Nu.js">
16
- <link rel="modulepreload" crossorigin href="/assets/context-menu-DHVVdHzN.js">
17
- <link rel="modulepreload" crossorigin href="/assets/x-DSz9cGhy.js">
18
- <link rel="modulepreload" crossorigin href="/assets/dialog-BUfWO8hr.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/i18n-Bm3Ov7Fy.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/api-DjiZvIa0.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/client-CH7w6yRV.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/es2015-Bp6cuSGh.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Cfo2ySi5.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/context-menu-BsCj2fRs.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/x-ChPbNv39.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/dialog-QjQoKbIV.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/navigation-history-CzErJuPG.js">
20
- <link rel="modulepreload" crossorigin href="/assets/theme-provider-BjF1Eowc.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/theme-provider-CWUz4yO9.js">
21
21
  <link rel="stylesheet" crossorigin href="/assets/panelStandalone-BRg7B1EI.css">
22
22
  </head>
23
23
  <body>
Binary file
Binary file