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.
- package/package.json +8 -8
- package/ui-dist/.vite/manifest.json +361 -361
- package/ui-dist/.vite/manifest.json.gz +0 -0
- package/ui-dist/assets/{account-panel-DVi_jhkG.js → account-panel-BAH7FW6z.js} +1 -1
- package/ui-dist/assets/account-panel-BAH7FW6z.js.gz +0 -0
- package/ui-dist/assets/{api-BZvNpFOS.js → api-DjiZvIa0.js} +1 -1
- package/ui-dist/assets/api-DjiZvIa0.js.gz +0 -0
- package/ui-dist/assets/app-presenter-provider-CCRFsFYr.js +232 -0
- package/ui-dist/assets/app-presenter-provider-CCRFsFYr.js.gz +0 -0
- package/ui-dist/assets/{appearance-settings-page-AZNBzLmT.js → appearance-settings-page-CdP86QJ7.js} +1 -1
- package/ui-dist/assets/appearance-settings-page-CdP86QJ7.js.gz +0 -0
- package/ui-dist/assets/{book-open-CmRdT3N1.js → book-open-Bcnn2_uV.js} +1 -1
- package/ui-dist/assets/{card-CdRBL1E0.js → card-Cqs73hGI.js} +1 -1
- package/ui-dist/assets/card-Cqs73hGI.js.gz +0 -0
- package/ui-dist/assets/{channels-list-page-eZN74FN3.js → channels-list-page-5qGagKuE.js} +1 -1
- package/ui-dist/assets/channels-list-page-5qGagKuE.js.gz +0 -0
- package/ui-dist/assets/{circle-dashed-HOgt3gIJ.js → circle-dashed-EY1ScSMe.js} +1 -1
- package/ui-dist/assets/{client-DKKbdJ6Q.js → client-CH7w6yRV.js} +1 -1
- package/ui-dist/assets/{config-split-page-BA3V6b3Q.js → config-split-page-CuEGQL8Z.js} +1 -1
- package/ui-dist/assets/config-split-page-CuEGQL8Z.js.gz +0 -0
- package/ui-dist/assets/{confirm-dialog-8vqYZ0wy.js → confirm-dialog-CxfecBzO.js} +1 -1
- package/ui-dist/assets/confirm-dialog-CxfecBzO.js.gz +0 -0
- package/ui-dist/assets/{context-menu-DHVVdHzN.js → context-menu-BsCj2fRs.js} +1 -1
- package/ui-dist/assets/context-menu-BsCj2fRs.js.gz +0 -0
- package/ui-dist/assets/{createLucideIcon-DE0sB9Nu.js → createLucideIcon-Cfo2ySi5.js} +1 -1
- package/ui-dist/assets/{desktop-capabilities-page-B9-B9k1A.js → desktop-capabilities-page-BDYITStl.js} +1 -1
- package/ui-dist/assets/desktop-capabilities-page-BDYITStl.js.gz +0 -0
- package/ui-dist/assets/{desktop-update-config-Cfr3IRUe.js → desktop-update-config-e-zhkJuS.js} +1 -1
- package/ui-dist/assets/desktop-update-config-e-zhkJuS.js.gz +0 -0
- package/ui-dist/assets/{dialog-BUfWO8hr.js → dialog-QjQoKbIV.js} +1 -1
- package/ui-dist/assets/dialog-QjQoKbIV.js.gz +0 -0
- package/ui-dist/assets/doc-browser-CLEdkH9z.js +1 -0
- package/ui-dist/assets/{doc-browser-context-ClLgMbxd.js → doc-browser-context-DwgG6wrz.js} +1 -1
- package/ui-dist/assets/doc-browser-context-DwgG6wrz.js.gz +0 -0
- package/ui-dist/assets/{download-CKqS1Ksj.js → download-BoaKzDJk.js} +1 -1
- package/ui-dist/assets/{es2015-BiB05Sav.js → es2015-Bp6cuSGh.js} +1 -1
- package/ui-dist/assets/es2015-Bp6cuSGh.js.gz +0 -0
- package/ui-dist/assets/{extensions-vPD4dGqt.js → extensions-CgShSIkd.js} +1 -1
- package/ui-dist/assets/extensions-CgShSIkd.js.gz +0 -0
- package/ui-dist/assets/{eye-bKzylu3p.js → eye-kisejBFH.js} +1 -1
- package/ui-dist/assets/{form-actions-CCoxz33Q.js → form-actions-D9JWSFQu.js} +1 -1
- package/ui-dist/assets/{i18n-OGmF0Ws_.js → i18n-Bm3Ov7Fy.js} +2 -2
- package/ui-dist/assets/i18n-Bm3Ov7Fy.js.gz +0 -0
- package/ui-dist/assets/{keyboard-shortcuts-settings-page-D8rosOVh.js → keyboard-shortcuts-settings-page-DZ8A1iLg.js} +1 -1
- package/ui-dist/assets/loader-circle-Bd1fTm-x.js +1 -0
- package/ui-dist/assets/{login-page-BT3GV3Sb.js → login-page-C-DvcG3L.js} +1 -1
- package/ui-dist/assets/login-page-C-DvcG3L.js.gz +0 -0
- package/ui-dist/assets/login-page-D99JjH9F.js +1 -0
- package/ui-dist/assets/{main-bEWCGDHr.js → main-Bt5r6b21.js} +2 -2
- package/ui-dist/assets/main-Bt5r6b21.js.gz +0 -0
- package/ui-dist/assets/main-DXd_aKJV.css +1 -0
- package/ui-dist/assets/main-DXd_aKJV.css.gz +0 -0
- package/ui-dist/assets/main-i18n-catalog.config-D0Ll36J_.js +1 -0
- package/ui-dist/assets/main-i18n-catalog.config-D0Ll36J_.js.gz +0 -0
- package/ui-dist/assets/mcp-marketplace-page-DUoGfSmY.js +1 -0
- package/ui-dist/assets/{model-config-page-D21a-BO0.js → model-config-page-9NNf-mzK.js} +1 -1
- package/ui-dist/assets/model-config-page-9NNf-mzK.js.gz +0 -0
- package/ui-dist/assets/{navigation-link-DC-Pku0Y.js → navigation-link-CjxNC8aT.js} +1 -1
- package/ui-dist/assets/navigation-link-CjxNC8aT.js.gz +0 -0
- package/ui-dist/assets/panel-app-i18n-catalog.config-Ddf2Kv8A.js +1 -0
- package/ui-dist/assets/{panelStandalone-CX8X2hjh.js → panelStandalone-BaUzY8Wy.js} +2 -2
- package/ui-dist/assets/panelStandalone-BaUzY8Wy.js.gz +0 -0
- package/ui-dist/assets/{privacy-settings-page-e0LFHZJm.js → privacy-settings-page-CVMBFuak.js} +1 -1
- package/ui-dist/assets/privacy-settings-page-CVMBFuak.js.gz +0 -0
- package/ui-dist/assets/projects-BEsU3box.js +1 -0
- package/ui-dist/assets/projects-BEsU3box.js.gz +0 -0
- package/ui-dist/assets/{provider-models-DFQgF4hS.js → provider-models-Dm-pmWAA.js} +1 -1
- package/ui-dist/assets/provider-models-Dm-pmWAA.js.gz +0 -0
- package/ui-dist/assets/{provider-scoped-model-input-DaONL0j_.js → provider-scoped-model-input-CzrXg4cX.js} +1 -1
- package/ui-dist/assets/provider-scoped-model-input-CzrXg4cX.js.gz +0 -0
- package/ui-dist/assets/{providers-config-page-CEOhQlMe.js → providers-config-page-839uUADZ.js} +1 -1
- package/ui-dist/assets/providers-config-page-839uUADZ.js.gz +0 -0
- package/ui-dist/assets/{puzzle-D_TiFXOv.js → puzzle-BGvD2DPZ.js} +1 -1
- package/ui-dist/assets/{pwa-C9ac_1dg.js → pwa-DNNK_8E9.js} +1 -1
- package/ui-dist/assets/pwa-DNNK_8E9.js.gz +0 -0
- package/ui-dist/assets/{refresh-cw-BG8VfcdA.js → refresh-cw-BlXDrVP0.js} +1 -1
- package/ui-dist/assets/remote-B5qIuUbT.js +1 -0
- package/ui-dist/assets/{rotate-cw-DPEegUU2.js → rotate-cw-ei6rPD6z.js} +1 -1
- package/ui-dist/assets/{runtime-config-page-DDT1dVLt.js → runtime-config-page-Bf-4JYxQ.js} +1 -1
- package/ui-dist/assets/runtime-config-page-Bf-4JYxQ.js.gz +0 -0
- package/ui-dist/assets/{save-CPlctBjT.js → save-DdF-bXgC.js} +1 -1
- package/ui-dist/assets/{search-config-page-CDwmd6eX.js → search-config-page-C0qA3j-T.js} +1 -1
- package/ui-dist/assets/search-config-page-C0qA3j-T.js.gz +0 -0
- package/ui-dist/assets/{secrets-config-page-1OvgmwPv.js → secrets-config-page-DxfZWpnk.js} +1 -1
- package/ui-dist/assets/secrets-config-page-DxfZWpnk.js.gz +0 -0
- package/ui-dist/assets/security-config-CItfIQZ4.js +1 -0
- package/ui-dist/assets/{select-Y9IEbx9x.js → select-CWyjnar7.js} +1 -1
- package/ui-dist/assets/select-CWyjnar7.js.gz +0 -0
- package/ui-dist/assets/{service-apps-panel-DPrLeF3N.js → service-apps-panel-D3SOkRVv.js} +1 -1
- package/ui-dist/assets/service-apps-panel-D3SOkRVv.js.gz +0 -0
- package/ui-dist/assets/{settings-2-CrGx9_De.js → settings-2-CrNhfInU.js} +1 -1
- package/ui-dist/assets/{status-dot-Cb8ewlUr.js → status-dot-C3SRFEta.js} +1 -1
- package/ui-dist/assets/status-dot-C3SRFEta.js.gz +0 -0
- package/ui-dist/assets/{tag-chip-D-6aPuuh.js → tag-chip-BIuavK2K.js} +1 -1
- package/ui-dist/assets/tag-chip-BIuavK2K.js.gz +0 -0
- package/ui-dist/assets/{theme-provider-BjF1Eowc.js → theme-provider-CWUz4yO9.js} +1 -1
- package/ui-dist/assets/theme-provider-CWUz4yO9.js.gz +0 -0
- package/ui-dist/assets/{trash-2-DER2EJKK.js → trash-2-hAbJh9VZ.js} +1 -1
- package/ui-dist/assets/{use-config-BM5jC65L.js → use-config-evzage09.js} +1 -1
- package/ui-dist/assets/use-config-evzage09.js.gz +0 -0
- package/ui-dist/assets/{use-desktop-capabilities-ezKJwKqg.js → use-desktop-capabilities-BYDjFlpt.js} +1 -1
- package/ui-dist/assets/use-desktop-capabilities-BYDjFlpt.js.gz +0 -0
- package/ui-dist/assets/{use-viewport-layout-vmbQUNT6.js → use-viewport-layout-D_9XWGDV.js} +1 -1
- package/ui-dist/assets/use-viewport-layout-D_9XWGDV.js.gz +0 -0
- package/ui-dist/assets/x-ChPbNv39.js +1 -0
- package/ui-dist/index.html +34 -34
- package/ui-dist/index.html.gz +0 -0
- package/ui-dist/panel-standalone.html +10 -10
- package/ui-dist/panel-standalone.html.gz +0 -0
- package/ui-dist/assets/account-panel-DVi_jhkG.js.gz +0 -0
- package/ui-dist/assets/api-BZvNpFOS.js.gz +0 -0
- package/ui-dist/assets/app-presenter-provider-BcYL-VNe.js +0 -124
- package/ui-dist/assets/app-presenter-provider-BcYL-VNe.js.gz +0 -0
- package/ui-dist/assets/appearance-settings-page-AZNBzLmT.js.gz +0 -0
- package/ui-dist/assets/card-CdRBL1E0.js.gz +0 -0
- package/ui-dist/assets/channels-list-page-eZN74FN3.js.gz +0 -0
- package/ui-dist/assets/config-split-page-BA3V6b3Q.js.gz +0 -0
- package/ui-dist/assets/confirm-dialog-8vqYZ0wy.js.gz +0 -0
- package/ui-dist/assets/context-menu-DHVVdHzN.js.gz +0 -0
- package/ui-dist/assets/desktop-capabilities-page-B9-B9k1A.js.gz +0 -0
- package/ui-dist/assets/desktop-update-config-Cfr3IRUe.js.gz +0 -0
- package/ui-dist/assets/dialog-BUfWO8hr.js.gz +0 -0
- package/ui-dist/assets/doc-browser-context-ClLgMbxd.js.gz +0 -0
- package/ui-dist/assets/doc-browser-w8q1j0jL.js +0 -1
- package/ui-dist/assets/es2015-BiB05Sav.js.gz +0 -0
- package/ui-dist/assets/extensions-vPD4dGqt.js.gz +0 -0
- package/ui-dist/assets/i18n-OGmF0Ws_.js.gz +0 -0
- package/ui-dist/assets/loader-circle-Clq1Gtb1.js +0 -1
- package/ui-dist/assets/login-page-BT3GV3Sb.js.gz +0 -0
- package/ui-dist/assets/login-page-DKId3By8.js +0 -1
- package/ui-dist/assets/main-bEWCGDHr.js.gz +0 -0
- package/ui-dist/assets/main-i18n-catalog.config-Bpu5GcwF.js +0 -1
- package/ui-dist/assets/main-i18n-catalog.config-Bpu5GcwF.js.gz +0 -0
- package/ui-dist/assets/main-kqMRTwOs.css +0 -1
- package/ui-dist/assets/main-kqMRTwOs.css.gz +0 -0
- package/ui-dist/assets/mcp-marketplace-page-CZIP6j3L.js +0 -1
- package/ui-dist/assets/model-config-page-D21a-BO0.js.gz +0 -0
- package/ui-dist/assets/navigation-link-DC-Pku0Y.js.gz +0 -0
- package/ui-dist/assets/panel-app-i18n-catalog.config-D44qmtfk.js +0 -1
- package/ui-dist/assets/panelStandalone-CX8X2hjh.js.gz +0 -0
- package/ui-dist/assets/privacy-settings-page-e0LFHZJm.js.gz +0 -0
- package/ui-dist/assets/projects-Rki7Fmth.js +0 -1
- package/ui-dist/assets/projects-Rki7Fmth.js.gz +0 -0
- package/ui-dist/assets/provider-models-DFQgF4hS.js.gz +0 -0
- package/ui-dist/assets/provider-scoped-model-input-DaONL0j_.js.gz +0 -0
- package/ui-dist/assets/providers-config-page-CEOhQlMe.js.gz +0 -0
- package/ui-dist/assets/pwa-C9ac_1dg.js.gz +0 -0
- package/ui-dist/assets/remote-DkSx5x4R.js +0 -1
- package/ui-dist/assets/runtime-config-page-DDT1dVLt.js.gz +0 -0
- package/ui-dist/assets/search-config-page-CDwmd6eX.js.gz +0 -0
- package/ui-dist/assets/secrets-config-page-1OvgmwPv.js.gz +0 -0
- package/ui-dist/assets/security-config-Pv4CM-kw.js +0 -1
- package/ui-dist/assets/select-Y9IEbx9x.js.gz +0 -0
- package/ui-dist/assets/service-apps-panel-DPrLeF3N.js.gz +0 -0
- package/ui-dist/assets/status-dot-Cb8ewlUr.js.gz +0 -0
- package/ui-dist/assets/tag-chip-D-6aPuuh.js.gz +0 -0
- package/ui-dist/assets/theme-provider-BjF1Eowc.js.gz +0 -0
- package/ui-dist/assets/use-config-BM5jC65L.js.gz +0 -0
- package/ui-dist/assets/use-desktop-capabilities-ezKJwKqg.js.gz +0 -0
- package/ui-dist/assets/use-viewport-layout-vmbQUNT6.js.gz +0 -0
- 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};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-
|
|
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-
|
|
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};
|
|
Binary file
|
package/ui-dist/assets/{use-desktop-capabilities-ezKJwKqg.js → use-desktop-capabilities-BYDjFlpt.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Lt as e,Xn as t,Yn as n,sr as r}from"./api-
|
|
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};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./chunk-DF37yw5_.js";import{pn as t,yr as n}from"./api-
|
|
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};
|
|
Binary file
|
|
@@ -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};
|
package/ui-dist/index.html
CHANGED
|
@@ -258,47 +258,47 @@
|
|
|
258
258
|
})();
|
|
259
259
|
</script>
|
|
260
260
|
<title>NextClaw</title>
|
|
261
|
-
<script type="module" crossorigin src="/assets/main-
|
|
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-
|
|
265
|
-
<link rel="modulepreload" crossorigin href="/assets/api-
|
|
266
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
267
|
-
<link rel="modulepreload" crossorigin href="/assets/es2015-
|
|
268
|
-
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-
|
|
269
|
-
<link rel="modulepreload" crossorigin href="/assets/select-
|
|
270
|
-
<link rel="modulepreload" crossorigin href="/assets/context-menu-
|
|
271
|
-
<link rel="modulepreload" crossorigin href="/assets/x-
|
|
272
|
-
<link rel="modulepreload" crossorigin href="/assets/dialog-
|
|
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-
|
|
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-
|
|
277
|
-
<link rel="modulepreload" crossorigin href="/assets/book-open-
|
|
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-
|
|
280
|
-
<link rel="modulepreload" crossorigin href="/assets/confirm-dialog-
|
|
281
|
-
<link rel="modulepreload" crossorigin href="/assets/download-
|
|
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-
|
|
284
|
-
<link rel="modulepreload" crossorigin href="/assets/eye-
|
|
285
|
-
<link rel="modulepreload" crossorigin href="/assets/tag-chip-
|
|
286
|
-
<link rel="modulepreload" crossorigin href="/assets/loader-circle-
|
|
287
|
-
<link rel="modulepreload" crossorigin href="/assets/trash-2-
|
|
288
|
-
<link rel="modulepreload" crossorigin href="/assets/refresh-cw-
|
|
289
|
-
<link rel="modulepreload" crossorigin href="/assets/use-desktop-capabilities-
|
|
290
|
-
<link rel="modulepreload" crossorigin href="/assets/status-dot-
|
|
291
|
-
<link rel="modulepreload" crossorigin href="/assets/doc-browser-context-
|
|
292
|
-
<link rel="modulepreload" crossorigin href="/assets/card-
|
|
293
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-models-
|
|
294
|
-
<link rel="modulepreload" crossorigin href="/assets/use-config-
|
|
295
|
-
<link rel="modulepreload" crossorigin href="/assets/app-presenter-provider-
|
|
296
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-scoped-model-input-
|
|
297
|
-
<link rel="modulepreload" crossorigin href="/assets/settings-2-
|
|
298
|
-
<link rel="modulepreload" crossorigin href="/assets/pwa-
|
|
299
|
-
<link rel="modulepreload" crossorigin href="/assets/login-page-
|
|
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-
|
|
301
|
+
<link rel="stylesheet" crossorigin href="/assets/main-DXd_aKJV.css">
|
|
302
302
|
</head>
|
|
303
303
|
|
|
304
304
|
<body>
|
package/ui-dist/index.html.gz
CHANGED
|
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-
|
|
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-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/api-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/es2015-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/context-menu-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/x-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/dialog-
|
|
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-
|
|
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
|
|
Binary file
|