pisper 0.6.19 → 0.6.20
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 +5 -5
- package/web/.vite/manifest.json +558 -550
- package/web/assets/{AppDialog-Bq_kuweh.js → AppDialog-BKTqwx46.js} +1 -1
- package/web/assets/{AppOverlays-C6-uz2I7.js → AppOverlays-DEYd3Zud.js} +1 -1
- package/web/assets/{AssetsPage-nWK-SI9U.js → AssetsPage-BsIG0e5H.js} +1 -1
- package/web/assets/{BoardPage-BdI3hfz8.js → BoardPage-CgbOwsbF.js} +3 -3
- package/web/assets/{ChannelsPage-CP8J3G-V.js → ChannelsPage-C9eEdxbz.js} +1 -1
- package/web/assets/{ChatAppearancePage-Cr8N98HJ.js → ChatAppearancePage-CBnvknpv.js} +1 -1
- package/web/assets/{ChatHistoryPage-9AWN-55B.js → ChatHistoryPage-Bq-_Qawn.js} +1 -1
- package/web/assets/ChatPage-Bwn6Qfok.js +553 -0
- package/web/assets/{ConfigPage-CU_oPhEG.js → ConfigPage-D44C5I7w.js} +2 -2
- package/web/assets/{DesktopWindowControls-CoqP7BM1.js → DesktopWindowControls-DGhN5dWj.js} +1 -1
- package/web/assets/{FeaturePage-C6kLKix5.js → FeaturePage-B3PLRtEG.js} +1 -1
- package/web/assets/{FileAttachmentPreview-C4qvBJGC.js → FileAttachmentPreview-fSmyWf24.js} +1 -1
- package/web/assets/{FloatingWidgets-DSbRqMGT.js → FloatingWidgets-C1_4vp7k.js} +1 -1
- package/web/assets/{FocusRuntimeControls-DlBh7Vqg.js → FocusRuntimeControls-DraooZz_.js} +1 -1
- package/web/assets/{GitDiffViewer-DGkjG02b.js → GitDiffViewer-XzdYQWbX.js} +1 -1
- package/web/assets/{ManageProjectsDialog-BFiDAKW5.js → ManageProjectsDialog-BlXjm1PQ.js} +1 -1
- package/web/assets/{MarkdownMessage-BiGbYY8R.js → MarkdownMessage-B-IixrQ3.js} +1 -1
- package/web/assets/{McpPage-myrbtgSi.js → McpPage-D0Zmfgbq.js} +1 -1
- package/web/assets/{MemoryPage-BhKLCAgT.js → MemoryPage-DgZ7cL70.js} +1 -1
- package/web/assets/{MobileNavigation-BrLK8gc5.js → MobileNavigation-BIt1CBum.js} +1 -1
- package/web/assets/{MorePage-B6UzpykD.js → MorePage-BZ4iZ1n_.js} +1 -1
- package/web/assets/{NewFolderDialog-CdALMU5C.js → NewFolderDialog-W9wLUVXP.js} +1 -1
- package/web/assets/{PageHeader-CpubVScP.js → PageHeader-DcCyaFp0.js} +1 -1
- package/web/assets/{PhoneDrawer-BapKZhl9.js → PhoneDrawer-B_eKy4tt.js} +1 -1
- package/web/assets/{PhoneMenuButton-WhIGM1zy.js → PhoneMenuButton-CBT0H1Cn.js} +1 -1
- package/web/assets/{PhoneTopBar-CjMeneXU.js → PhoneTopBar-Czpvw2ML.js} +1 -1
- package/web/assets/{PluginsPage-BEpVVSAC.js → PluginsPage-wk5WpJ7Z.js} +1 -1
- package/web/assets/{SafeModePrompt-HogcxEdk.js → SafeModePrompt-Dtq5wVfV.js} +1 -1
- package/web/assets/{SchedulesPage-ML5Sl4S4.js → SchedulesPage-BtRe2Qht.js} +1 -1
- package/web/assets/SessionBrowserPane-D2Z-J6tl.js +2 -0
- package/web/assets/{SessionContextPanel-guilbPz7.js → SessionContextPanel-Cg8AW4l1.js} +2 -2
- package/web/assets/{SessionHome-BLhLJsZO.js → SessionHome-DIpyJQVn.js} +1 -1
- package/web/assets/SessionInspector-DdpBBhNr.js +1 -0
- package/web/assets/{SessionShell-CMGzYCcG.js → SessionShell-ocBFDevg.js} +1 -1
- package/web/assets/{SettingsSidebar-BKdrNAvp.js → SettingsSidebar-CP5t-q0e.js} +1 -1
- package/web/assets/{ShortcutHelpDialog-DgQKobJy.js → ShortcutHelpDialog-BOcP90RU.js} +1 -1
- package/web/assets/{ShortcutKeys-B1HCKuqe.js → ShortcutKeys-CBl2x5Yl.js} +1 -1
- package/web/assets/{SidebarUpdateStatus-DtpsclSa.js → SidebarUpdateStatus-CqZx7khD.js} +1 -1
- package/web/assets/{SkillsPage-JwfOUart.js → SkillsPage-BGyMMq-9.js} +1 -1
- package/web/assets/{TaskProcessesPane-CUUFhziU.js → TaskProcessesPane-B43p2Dvr.js} +1 -1
- package/web/assets/{TaskTerminalView-BgxdaUIZ.js → TaskTerminalView-BMjmp-4_.js} +1 -1
- package/web/assets/{TerminalPanel-B4VMm8q_.js → TerminalPanel-CH2-Yc1F.js} +1 -1
- package/web/assets/{WebDesktopPet-C10BvWBl.js → WebDesktopPet-Fy9xj1bh.js} +1 -1
- package/web/assets/{WorkflowsPage-iqO_9OJO.js → WorkflowsPage-DvZsyJSV.js} +1 -1
- package/web/assets/{WorkspacePicker-C0t_ekAf.js → WorkspacePicker-LbBXFH77.js} +1 -1
- package/web/assets/{api-Dg-aNpVe.js → api-m-Yq8n0q.js} +1 -1
- package/web/assets/{app-update-8hmqlQl6.js → app-update-DVn3toIR.js} +1 -1
- package/web/assets/{approval-confirm-77ZLTNZI.js → approval-confirm-Ch86qdyC.js} +1 -1
- package/web/assets/{board-projects-CnDn05fw.js → board-projects-KHcPQYWz.js} +1 -1
- package/web/assets/bots-store-BMcWJ2Gm.js +1 -0
- package/web/assets/{chat-api-Dy5Hkicx.js → chat-api-DgJdhfOP.js} +1 -1
- package/web/assets/{client-store-DF9a8Ka9.js → client-store-BkVlLM-4.js} +1 -1
- package/web/assets/{config-search-BA9qWX5h.js → config-search-BqYT_Xre.js} +1 -1
- package/web/assets/{dialog-CtFjznlx.js → dialog-5MLAAE-f.js} +1 -1
- package/web/assets/{events-D0dbOYFR.js → events-B0F69Vd3.js} +1 -1
- package/web/assets/{folder-paths-DEFkIxr2.js → folder-paths-CdOS1VLF.js} +1 -1
- package/web/assets/{hosts-BBCDdN-M.js → hosts-CoGHAtF9.js} +1 -1
- package/web/assets/i18n-Du-JO3Qx.js +1 -0
- package/web/assets/index-BY7X-ZtU.css +2 -0
- package/web/assets/{index-DsXdZRdL.js → index-DmohsuQg.js} +2 -2
- package/web/assets/{mount-app-BDzqFalE.js → mount-app-Cr5Uq-cP.js} +3 -3
- package/web/assets/{permission-rules-api-CPImVuda.js → permission-rules-api-CAxfABVR.js} +1 -1
- package/web/assets/{pick-system-directory-B1clvHS6.js → pick-system-directory-ByTVOp-v.js} +1 -1
- package/web/assets/{placements-DNdBLaY4.js → placements-CuVM9Xxs.js} +2 -2
- package/web/assets/{popover-DN1mndHQ.js → popover-DUWwlhPy.js} +1 -1
- package/web/assets/{public-Cec32eBv.js → public-B00uoqCB.js} +2 -2
- package/web/assets/{public-CNoWpIiC.js → public-CGbDaxd0.js} +1 -1
- package/web/assets/public-CWbnixwI.js +3 -0
- package/web/assets/{public-components-BpHOXPbD.js → public-components-DGfACSCk.js} +1 -1
- package/web/assets/public-diff-DIMQ2JTm.js +1 -0
- package/web/assets/public-events-CxK6EdoY.js +1 -0
- package/web/assets/{public-flags-BYEBqRMd.js → public-flags-BRenaSzJ.js} +1 -1
- package/web/assets/public-session-BeSwdD6a.js +1 -0
- package/web/assets/public-sidebar-CAWnINZG.js +1 -0
- package/web/assets/{runtime-capabilities-store-B5Bam7pC.js → runtime-capabilities-store-DWW9jolt.js} +1 -1
- package/web/assets/{safe-mode-instance-CJE36ukZ.js → safe-mode-instance-65Kg_IPn.js} +1 -1
- package/web/assets/safe-mode-sentinel-CIemi_6b.js +1 -0
- package/web/assets/{session-change-summary-api-CTAw_Fpq.js → session-change-summary-api-CbVgbX2o.js} +1 -1
- package/web/assets/{session-home-BrU5Pj9S.js → session-home-LwsMdqJu.js} +1 -1
- package/web/assets/{session-organization-api-I4CSVACP.js → session-organization-api-BmX-aNPa.js} +1 -1
- package/web/assets/{session-scope-7eIXCeDX.js → session-scope-Bz6CeMq0.js} +1 -1
- package/web/assets/{session-tree-actions-CnUc7KFV.js → session-tree-actions-BLL1s_Ws.js} +1 -1
- package/web/assets/{session-tree-summary-C224W_G6.js → session-tree-summary-BfRtAGwx.js} +1 -1
- package/web/assets/{shortcuts-LBxOVau1.js → shortcuts-Cgx6V2jI.js} +1 -1
- package/web/assets/side-chat-context-Cm84nqzk.js +7 -0
- package/web/assets/{sidebar-rMS3pmrQ.js → sidebar-C0AjfIUc.js} +1 -1
- package/web/assets/{sidebar-store-BGW5sD2q.js → sidebar-store-BhEocW8t.js} +1 -1
- package/web/assets/{speech-session-DTzw8niM.js → speech-session-BI_qH5Lw.js} +1 -1
- package/web/assets/{startup-queries-qM8tclDJ.js → startup-queries-Cevfi-_Z.js} +1 -1
- package/web/assets/{use-i18n-BuN5i-jP.js → use-i18n-Cyg5th6Z.js} +1 -1
- package/web/assets/{use-open-bot-J8_CcQDt.js → use-open-bot-HoswiH7t.js} +1 -1
- package/web/assets/{use-studio-actions-kEfc-Vr2.js → use-studio-actions-CGzcb2Fx.js} +1 -1
- package/web/assets/{useCatalogProjects-MO_MVlJu.js → useCatalogProjects-hKlUioWa.js} +1 -1
- package/web/assets/{useNewProjectPicker-B5OQ8T-2.js → useNewProjectPicker-C9X_vJdU.js} +2 -2
- package/web/assets/{useNow-ChT5op7P.js → useNow-BBVE-LCR.js} +1 -1
- package/web/assets/{usePhoneShell-Bkus67DO.js → usePhoneShell-CDP-O4Gc.js} +1 -1
- package/web/assets/{useSessionListQuery-DdFrJGiI.js → useSessionListQuery-BpWfS-tU.js} +1 -1
- package/web/assets/{useSessionRowActions-CTYVP4el.js → useSessionRowActions-Dd5ulVpS.js} +1 -1
- package/web/assets/{useSidebarModel-BdWaL9Nn.js → useSidebarModel-uxFT2LRy.js} +1 -1
- package/web/assets/{web-preview-DUIdcsL2.js → web-preview-Bo8YMR-t.js} +1 -1
- package/web/assets/{web-preview-events-4X_JU_UG.js → web-preview-events-DIPJR6oR.js} +1 -1
- package/web/assets/{workspace-order-store-DlMf7MI6.js → workspace-order-store-DshLVZf8.js} +1 -1
- package/web/index.html +2 -2
- package/web/assets/ChatPage-Bl94kmVS.js +0 -553
- package/web/assets/SessionBrowserPane-DOmbqdHK.js +0 -2
- package/web/assets/SessionInspector-DewgkKy9.js +0 -1
- package/web/assets/bots-store-DE76fA7-.js +0 -1
- package/web/assets/i18n-CyyEaQdX.js +0 -1
- package/web/assets/index-C13rJGuY.css +0 -2
- package/web/assets/public-CUO7iS84.js +0 -3
- package/web/assets/public-diff-A9crjZfM.js +0 -1
- package/web/assets/public-events-iJAi2TnD.js +0 -1
- package/web/assets/public-session-DM4y_qrY.js +0 -1
- package/web/assets/public-sidebar-Ce5o13yN.js +0 -1
- package/web/assets/safe-mode-sentinel-AmgPcPSa.js +0 -1
- package/web/assets/side-chat-context-hRj7FqXK.js +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,r as t}from"./rolldown-runtime-B0Z9INg1.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-
|
|
1
|
+
import{a as e,r as t}from"./rolldown-runtime-B0Z9INg1.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-Cyg5th6Z.js";import{t as a}from"./createLucideIcon-Cd-3GVxJ.js";import{t as o}from"./check-2vYc6QaP.js";import{t as s}from"./triangle-alert-CE1q54ci.js";import{n as c,t as l}from"./button-CCcCN8tE.js";import{a as u,i as d,l as f,o as p,s as m,t as h}from"./dialog-5MLAAE-f.js";import{t as g}from"./input-CPw-zkYh.js";import{n as _,t as v}from"./alert-firawb0H.js";var y=a(`folder-input`,[[`path`,{d:`M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1`,key:`fm4g5t`}],[`path`,{d:`M2 13h10`,key:`pgb2dq`}],[`path`,{d:`m9 16 3-3-3-3`,key:`6m91ic`}]]),b=e(n(),1);function x(e){let t=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return t?t(e):Promise.reject(Error(`native bridge unavailable`))}async function S(){return window.__PISPER_MOBILE_APP__?(await x(`mobile_state`)).mode:null}async function C(){if(window.__PISPER_MOBILE_PLATFORM__!==`android`)throw Error(`workspace_import_unsupported`);let e=await x(`mobile_state`);if(e.mode!==`local`||!e.onDevice?.running)throw Error(`workspace_import_requires_local_runtime`);let t=await x(`mobile_import_workspace_directory`);if(t.path===null)return null;if(typeof t.path!=`string`||!t.path.startsWith(`/`))throw Error(`workspace_import_invalid_path`);return t.path}var w=t({WorkspacePicker:()=>E}),T=r();function E({open:e,initialPath:t=``,description:n,onOpenChange:r,onSelect:a,onCloseAutoFocus:x}){let{t:w}=i(),[E,D]=(0,b.useState)(t),[O,k]=(0,b.useState)(!1),[A,j]=(0,b.useState)(!1),[M,N]=(0,b.useState)(!1),[P,F]=(0,b.useState)(``),I=(0,b.useRef)(0),L=(0,b.useRef)(!1),R=O||A;(0,b.useEffect)(()=>{let n=++I.current;return L.current=!1,e&&(D(t),k(!1),j(!1),N(!1),F(``),window.__PISPER_MOBILE_PLATFORM__===`android`&&S().then(e=>{n===I.current&&N(e===`local`)},e=>{n===I.current&&F(e instanceof Error?e.message:String(e))})),()=>{I.current+=1}},[t,e]);let z=async()=>{if(L.current)return;L.current=!0;let e=I.current;j(!0),F(``);try{let t=await C();e===I.current&&t&&D(t)}catch(t){e===I.current&&F(t instanceof Error?t.message:String(t))}finally{e===I.current&&(L.current=!1,j(!1))}},B=async e=>{if(e.preventDefault(),L.current||!E.trim())return;L.current=!0;let t=I.current;k(!0),F(``);try{await a(E.trim()),t===I.current&&r(!1)}catch(e){t===I.current&&F(e instanceof Error?e.message:String(e))}finally{t===I.current&&(L.current=!1,k(!1))}};return(0,T.jsx)(h,{open:e,onOpenChange:e=>!L.current&&r(e),children:(0,T.jsxs)(d,{showCloseButton:!R,className:`sm:max-w-lg`,onCloseAutoFocus:x,children:[(0,T.jsxs)(m,{children:[(0,T.jsx)(f,{children:w(`common:workspacePicker.setWorkingDirectory`)}),(0,T.jsx)(u,{children:n||w(`common:workspacePicker.selectDirectoryDescription`)})]}),(0,T.jsxs)(`form`,{className:`flex min-w-0 flex-col gap-4`,onSubmit:e=>void B(e),children:[(0,T.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1.5 text-sm font-medium text-content`,children:[w(`common:workspacePicker.workingDirectoryPath`),(0,T.jsx)(g,{autoFocus:!0,className:`font-mono text-xs font-normal max-[650px]:h-11`,value:E,disabled:R,placeholder:w(`common:workspacePicker.enterAbsolutePath`),onChange:e=>D(e.target.value)})]}),M&&(0,T.jsxs)(l,{type:`button`,variant:`secondary`,className:`max-[650px]:h-11`,disabled:R,onClick:()=>void z(),children:[A?(0,T.jsx)(c,{className:`text-current`}):(0,T.jsx)(y,{}),w(A?`common:workspacePicker.importingFolder`:`common:workspacePicker.importFolderCopy`)]}),P&&(0,T.jsxs)(v,{variant:`destructive`,children:[(0,T.jsx)(s,{}),(0,T.jsx)(_,{className:`min-w-0 break-words`,children:P})]}),(0,T.jsxs)(p,{children:[(0,T.jsx)(l,{type:`button`,variant:`secondary`,size:`dialogAction`,disabled:R,onClick:()=>r(!1),children:w(`common:ui.cancel`)}),(0,T.jsxs)(l,{type:`submit`,size:`dialogAction`,disabled:R||!E.trim(),children:[O?(0,T.jsx)(c,{className:`text-current`}):(0,T.jsx)(o,{}),w(O?`common:workspacePicker.switching`:`common:workspacePicker.useThisFolder`)]})]})]})]})})}export{w as n,E as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mobile-runtime-recovery-tbTyacip.js","assets/rolldown-runtime-B0Z9INg1.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{h as e}from"./vendor-router-CSN_DGvx.js";import{c as t,d as n,l as r,u as i}from"./i18n-
|
|
2
|
+
import{h as e}from"./vendor-router-CSN_DGvx.js";import{c as t,d as n,l as r,u as i}from"./i18n-Du-JO3Qx.js";import{i as a,n as o,r as s,t as c}from"./abort-signal-f4JsiYKX.js";var l=class extends Error{status;data;kind;constructor(e,t={}){super(e),this.name=`ApiError`,this.status=t.status,this.data=t.data,this.kind=t.kind}};function u(e){return new l(n(`common:api.invalidResponse`,r(t.language)?t.language:i()),{status:e,kind:`protocol`,data:{code:`INVALID_RESPONSE`}})}function d(e){if(e)try{let t=JSON.parse(e);return typeof t==`object`&&t&&!Array.isArray(t)?{...t,error:`error`in t&&typeof t.error==`string`?t.error:void 0}:{error:typeof t==`string`?t:e,body:t}}catch{return{error:e}}}async function f(e){let t=d(await e.text());return new l(t?.error||e.statusText||`HTTP ${e.status}`,{status:e.status,data:t,kind:`http`})}async function p(e){if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw u(e.status)}}async function m(e,t){if(!e.ok)throw await f(e);if(!e.body)throw Error(`响应不包含可读取的数据流`);let n=e.body.getReader(),r=new TextDecoder,i=``,a=`message`,o=null,s=[],c=!1,l=()=>{if(!s.length)return a=`message`,!0;let e=JSON.parse(s.join(`
|
|
3
3
|
`)),n=t(a||`message`,e,{id:o})!==!1;return a=`message`,o=null,s=[],n},u=e=>{if(!e)return l();if(e.startsWith(`:`))return!0;let t=e.indexOf(`:`),n=t<0?e:e.slice(0,t),r=t<0?``:e.slice(t+1);if(r.startsWith(` `)&&(r=r.slice(1)),n===`event`){if(s.length&&!l())return!1;a=r}else n===`data`?s.push(r):n===`id`&&(o=r||null);return!0},d=(e=!1)=>{let t=0;for(let n=0;n<i.length;n+=1){let r=i.charCodeAt(n);if(r!==10&&r!==13)continue;if(r===13&&n+1>=i.length&&!e)break;let a=i.slice(t,n);if(r===13&&i.charCodeAt(n+1)===10&&(n+=1),t=n+1,!u(a))return i=i.slice(t),!1}if(i=i.slice(t),e&&i){let e=i;if(i=``,!u(e))return!1}return!e||l()};try{for(;!c;){let{value:e,done:t}=await n.read();if(i+=r.decode(e||new Uint8Array,{stream:!t}),!d(t)){c=!0;break}if(t)break}}catch(e){throw c=!0,e}finally{c&&await n.cancel().catch(()=>{}),n.releaseLock()}}async function h(t){if(typeof window>`u`||!window.__PISPER_MOBILE_APP__)return;let n=o(t,g);try{await a(e(()=>import(`./mobile-runtime-recovery-tbTyacip.js`).then(e=>e.t).then(async e=>{e.installMobileRuntimeForegroundRecovery(),await e.waitForMobileRuntimeReady()}),__vite__mapDeps([0,1])),n.signal)}finally{n.dispose()}}var g=3e4;function _(e,t){return e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:t}async function v(e,t,n){let{body:r,data:i,headers:a,signal:o,timeout:s=g,...c}=t,u=i===void 0?r:i,d=new Headers(a),p;u!==void 0&&(u instanceof Blob?(p=u,d.has(`Content-Type`)||d.set(`Content-Type`,u.type||`application/octet-stream`)):(p=typeof u==`string`?u:JSON.stringify(u),d.has(`Content-Type`)||d.set(`Content-Type`,`application/json`)));let m=new AbortController,v=!1,y=()=>m.abort(o?.reason);o?.aborted?y():o?.addEventListener(`abort`,y,{once:!0});let b=s>0?setTimeout(()=>{v=!0,m.abort(new DOMException(`Request timed out`,`TimeoutError`))},s):void 0;try{if(await h(m.signal),m.signal.aborted)throw m.signal.reason;let t=await fetch(e,{...c,body:p,headers:d,signal:m.signal});if(!t.ok)throw await f(t);return await n(t)}catch(e){throw e instanceof l?e:v?new l(`请求超时 (${s}ms)`,{kind:`timeout`}):o?.aborted?new l(_(o.reason,`请求已取消`),{kind:`cancelled`}):new l(_(e,`请求失败 (network)`),{kind:`network`})}finally{b!==void 0&&clearTimeout(b),o?.removeEventListener(`abort`,y)}}function y(e,t={}){let{parse:n,...r}=t;return v(e,r,async e=>{let t=await p(e);return n?n(t):t})}function b(e,t={}){return v(e,t,e=>e.text())}function x(e,t={}){return v(e,t,e=>e.blob())}async function S(e,t={}){return y(e,t)}var C=5,w=400,T=`SSE 流在终态事件前结束`;function E(e,t){return new Promise((n,r)=>{if(t?.aborted){r(c(t));return}let i=()=>{clearTimeout(a),t&&r(c(t))},a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e);t?.addEventListener(`abort`,i,{once:!0})})}async function D({open:e,resume:t,onEvent:n,maxAttempts:r=C,baseDelayMs:i=w,signal:a}){let o=``,c=0,u=!1,d=null,f=async e=>{await m(e,(e,t,r)=>{if(r.id!=null){let e=Number(r.id);Number.isFinite(e)&&e>c&&(c=e)}let i=t;e===`run`&&typeof i?.runId==`string`&&(o=i.runId);try{let r=n(e,t);return(e===`done`||e===`error`||r===!1)&&(u=!0),r}catch(e){throw d=e,e}})},p=null;try{await f(await e())}catch(e){if(d)throw d;p=e}if(d)throw d;if(u)return;if(!o)throw p??Error(`流在建立运行前中断`);let h=0;for(;;){if(s(a),h+=1,h>r)throw p??Error(`流式连接中断且重挂失败`);await E(i*2**(h-1),a);let e=c;try{if(await f(await t(o,c)),d)throw d;if(!u)throw Error(T);return}catch(t){if(d)throw d;if(t instanceof l&&t.status===409)throw t;p=t,c>e&&(h=0)}}}function O(e,t){let n=String(e||``);if(!t)return n;let r=Math.max(0,Math.min(n.length,Number(t?.start)||0));return`${n.slice(0,r)}${String(t?.text||``)}`}export{y as a,m as c,x as i,u as l,O as n,b as o,D as r,h as s,S as t,l as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-DmohsuQg.js";import{i as n}from"./vendor-react-DwNgTV1j.js";import{a as r,i,o as a}from"./vendor-state-GkUciC5H.js";import{t as o}from"./storage-8QW6lXuT.js";function s(e){let t=String(e||``).trim().replace(/^#/,``);return/^[0-9a-fA-F]{6}$/.test(t)?`#${t.toLowerCase()}`:null}function c(e){return{r:parseInt(e.slice(1,3),16),g:parseInt(e.slice(3,5),16),b:parseInt(e.slice(5,7),16)}}function l({r:e,g:t,b:n}){let r=e=>Math.round(Math.min(255,Math.max(0,e))).toString(16).padStart(2,`0`);return`#${r(e)}${r(t)}${r(n)}`}function u(e,t,n){return l({r:e.r+(t.r-e.r)*n,g:e.g+(t.g-e.g)*n,b:e.b+(t.b-e.b)*n})}var d={r:255,g:255,b:255},f={r:24,g:24,b:27};function p({r:e,g:t,b:n},r){return`rgba(${e}, ${t}, ${n}, ${r})`}function m(e){let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4}function h({r:e,g:t,b:n}){return .2126*m(e)+.7152*m(t)+.0722*m(n)}function g(e,t){let n=h(e),r=h(t),i=Math.max(n,r),a=Math.min(n,r);return(i+.05)/(a+.05)}function _(e){return g(e,d)>=4.5?`#ffffff`:g(e,f)>=4.5?`#18181b`:`#000000`}function v(e,t,n){let r=c(t);return u(e,g(r,d)>g(r,f)?d:f,n)}function y(e){for(let t=.22;t<=1;t+=.04){let n=u(e,f,t);if(g(c(n),d)>=4.5)return n}return`#18181b`}function b(e){for(let t=.46;t<=1;t+=.04){let n=u(e,d,t);if(g(c(n),f)>=4.5)return n}return`#fff`}function x(e){let t=c(e),n=_(t),r=v(t,n,.12),i=y(t),a=u(t,d,.93),o=u(t,d,.72),s=u(t,d,.22),l=b(t),f=c(s),m=_(f),h=v(f,m,.14);return`:root[data-accent='custom'] {
|
|
2
2
|
--star: ${e};
|
|
3
3
|
--star-hover: ${r};
|
|
4
4
|
--star-strong: ${i};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-Cyg5th6Z.js";import{t as i}from"./shield-alert-oZqX6MNu.js";import{t as a}from"./utils-C8uzG5AZ.js";import{t as o}from"./button-CCcCN8tE.js";import{t as s}from"./kbd-CAufZTkl.js";import{a as c,n as l,o as u,r as d,t as f}from"./sheet-BTaIEX4w.js";import{i as p,t as m}from"./card-presentation-1oph2b8P.js";import{a as h,i as g,l as _,o as v,s as y,t as b}from"./dialog-5MLAAE-f.js";import{t as x}from"./HoldToConfirmButton-BxdJ7icc.js";var S=e(t(),1),C=n();function w({target:e,phone:t,pending:n,error:w,onConfirm:T,onOpenChange:E}){let{t:D}=r(),O=!!e,[k,A]=(0,S.useState)(e);e&&e!==k&&A(e);let j=e??k,M=j?.approval??null,N=m(M),P=M?.severity===`critical`,F=D(P?`board:confirm.title`:`board:confirm.titleStandard`),I=M?P?p(M.reason)?D(`board:confirm.description`):D(`board:confirm.descriptionCritical`):D(`board:confirm.descriptionStandard`):D(`board:confirm.descriptionLoading`),L=e=>{e.defaultPrevented||e.key!==`Enter`||e.nativeEvent.isComposing||n||!M||e.target.closest(`[data-approval-cancel]`)||(e.preventDefault(),T())},R=e=>{let t=(e.currentTarget instanceof HTMLElement?e.currentTarget:null)?.querySelector(`[data-approval-hold]`);t&&(e.preventDefault(),t.focus())},z=j&&(0,C.jsxs)(`div`,{className:`grid min-w-0 gap-3 text-sm`,children:[(0,C.jsxs)(`dl`,{className:`grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-1.5 text-xs`,children:[(0,C.jsx)(`dt`,{className:`text-content-muted`,children:D(`board:confirm.session`)}),(0,C.jsx)(`dd`,{className:`min-w-0 truncate font-medium text-content`,children:j.title}),(0,C.jsx)(`dt`,{className:`text-content-muted`,children:D(`board:confirm.tool`)}),(0,C.jsx)(`dd`,{className:`min-w-0 truncate font-mono text-content`,children:M?.toolName||`—`}),(0,C.jsx)(`dt`,{className:`text-content-muted`,children:D(`board:confirm.cwd`)}),(0,C.jsx)(`dd`,{className:`min-w-0 font-mono wrap-anywhere text-content-secondary`,children:j.cwd||`—`})]}),M?.reason&&(0,C.jsxs)(`p`,{className:`flex min-w-0 items-start gap-2 rounded-sm border border-st-attn-border bg-st-attn-soft px-2.5 py-2 text-xs text-st-attn`,children:[(0,C.jsx)(i,{className:`mt-px size-3.5 flex-none`,"aria-hidden":`true`}),(0,C.jsx)(`span`,{className:`min-w-0 break-words`,children:M.reason})]}),M?(0,C.jsx)(`pre`,{"aria-label":D(`board:confirm.fullArgs`),className:`max-h-56 min-w-0 overflow-auto rounded-sm border border-well-stroke bg-well px-2.5 py-2 font-mono text-xs leading-5 whitespace-pre-wrap wrap-anywhere text-well-text`,children:N}):(0,C.jsx)(`p`,{role:`status`,className:`text-xs text-content-muted`,children:D(`board:confirm.loading`)}),w&&(0,C.jsx)(`p`,{role:`alert`,className:`text-xs text-st-fail`,children:w}),(0,C.jsx)(`p`,{id:`approval-hold-hint`,className:`flex items-center gap-1.5 text-xs text-content-muted`,children:t?D(`board:confirm.hintTouch`):(0,C.jsxs)(C.Fragment,{children:[D(`board:confirm.hint`),(0,C.jsx)(s,{children:`↵`})]})})]}),B=(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(o,{variant:`outline`,size:`dialogAction`,"data-approval-cancel":!0,className:a(t&&`min-h-11 flex-1`),onClick:()=>E(!1),children:D(`board:confirm.cancel`)}),(0,C.jsx)(x,{disabled:n||!M,onConfirm:T,enterPassesThrough:!0,"data-approval-hold":!0,"aria-describedby":`approval-hold-hint`,className:a(`min-h-9 px-4`,t&&`min-h-11 flex-1`),children:D(n?`board:confirm.approving`:`board:confirm.hold`)})]});return t?(0,C.jsx)(f,{open:O,onOpenChange:E,children:(0,C.jsxs)(l,{side:`bottom`,showCloseButton:!1,className:`max-h-[85dvh] gap-3 overflow-y-auto rounded-t-(--r-sheet) px-4 pt-2 pb-[calc(16px+var(--pisper-safe-area-bottom))]`,onKeyDown:L,onOpenAutoFocus:R,children:[(0,C.jsx)(`span`,{"aria-hidden":`true`,className:`mx-auto h-1 w-9 flex-none rounded-full bg-stroke-strong`}),(0,C.jsxs)(c,{className:`p-0`,children:[(0,C.jsx)(u,{children:F}),(0,C.jsx)(d,{children:I})]}),z,(0,C.jsx)(`div`,{className:`flex gap-2`,children:B})]})}):(0,C.jsx)(b,{open:O,onOpenChange:E,children:(0,C.jsxs)(g,{size:`wide`,onKeyDown:L,onOpenAutoFocus:R,children:[(0,C.jsxs)(y,{children:[(0,C.jsx)(_,{children:F}),(0,C.jsx)(h,{children:I})]}),z,(0,C.jsx)(v,{children:B})]})})}export{w as ApprovalConfirm};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./workspace-order-store-
|
|
1
|
+
import{r as e}from"./workspace-order-store-DshLVZf8.js";import{s as t}from"./useSessionListQuery-BpWfS-tU.js";import{n}from"./session-workspaces-Csgpuzxd.js";import{o as r}from"./card-presentation-1oph2b8P.js";function i(t,n){let r=e(n,t.map(e=>e.key)).map(e=>({...e,count:0}));return[...t,...r]}function a(t,i,a){let o=[...t].sort((e,t)=>(Date.parse(t.modified||``)||0)-(Date.parse(e.modified||``)||0)),s=n(o).filter(e=>e.key!==`\0`&&e.cwd);return[...e(i,s.map(e=>e.key)),...s.slice(0,12)].map(e=>({key:e.key,cwd:e.cwd,label:a[e.key]||r(e.cwd)}))}function o(e,t){return a(e,[],{})[0]?.cwd||t[0]?.cwd||``}function s(e,a,o,s,c){let l=n(e).map(e=>({key:e.key,cwd:e.cwd,count:e.sessions.length}));return t(i(l,a).map(e=>{let t=e.cwd?r(e.cwd):c,n=e.key===`\0`?``:o[e.key]||``;return{...e,label:n||t,folderLabel:t,custom:!!n}}),s)}export{i,s as n,a as r,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{c as n}from"./i18n-Du-JO3Qx.js";import{o as r}from"./vendor-state-GkUciC5H.js";import{n as i}from"./startup-queries-Cevfi-_Z.js";import{a,l as o}from"./api-m-Yq8n0q.js";import{a as s,o as c}from"./BotAvatar-CNL-APwP.js";n.addResourceBundle(`zh-CN`,`bots`,{"sidebar.title":`Bots`,"sidebar.newBot":`新建 Bot`,"sidebar.showAll":`显示全部({count})`,"sidebar.showLess":`收起`,"activity.idle":`空闲`,"activity.paused":`已暂停`,"character.blob":`小圆`,"character.bean":`豆豆`,"character.robot":`机器人`,"character.cat":`小猫`,"character.owl":`猫头鹰`,"character.ghost":`小幽灵`,"character.cloud":`云朵`,"character.octo":`章鱼`,"character.bunny":`兔子`,"character.bear":`小熊`,"character.fox":`小狐`,"character.star":`星星`,"new.title":`新建 Bot`,"new.description":`起个名字就能开始。它负责什么可以现在写,也可以之后在对话里告诉它。`,"new.name":`名字`,"new.namePlaceholder":`例如:审查员`,"new.character":`角色`,"new.color":`颜色`,"new.colorOption":`颜色 {index}`,"new.pick":`选择…`,"new.cancel":`取消`,"new.create":`开始对话`,"new.creating":`正在创建…`,"page.disabledTitle":`Bots 还没打开`,"page.disabledDescription":`Bots 是实验功能,在设置 › 实验功能里打开后就能用。`,"page.openLabs":`去实验功能`,"page.loading":`正在读取…`,"page.notFound":`这个 Bot 不存在了`,"page.emptyTitle":`还没有 Bot`,"page.emptyDescription":`Bot 是常驻的同事:一个长期对话,你随时找它,聊天软件和定时任务也能找它。`,"details.instructions":`它负责什么`,"details.instructionsPlaceholder":`例如:你负责 pisper 仓库的 PR 审查;小问题直接改,其余只提建议;先跑 npm test 再下结论。`,"details.save":`保存`,"details.acceptsWork":`接收聊天与定时的消息`,"details.permission":`权限`,"details.modeApproval":`每一步都问我`,"details.modeWorkspace":`危险操作才问`,"details.modeFull":`完全访问`,"details.permissionHint":`它在这台电脑上自己改文件、跑命令,不限于起始目录。“危险操作才问”:只有命令守卫标出的危险命令、浏览器里的点击与填写、第三方插件才停下来问你。能在群聊里叫它时不能选完全访问。`,"computer.description":`它在这台电脑上读写代码、跑命令。可以换成另一台运行 pisper executor 的电脑。`,"computer.runsOn":`运行在`,"computer.local":`本机`,"activity.approval":`等你批准一个操作`,"activity.question":`有问题问你`,"details.tools":`可用工具`,"details.toolsAll":`全部工具`,"details.toolsReadOnly":`只读`,"details.toolsCustom":`自定义({count} 个)`,"details.toolsHint":`只读:能读代码、搜索,不能改文件、不能跑命令。范围外的工具在执行前就会被拦下。`,"computer.unnamed":`未命名的电脑`,"computer.online":`在线`,"computer.offline":`离线`,"computer.option":`{name}({state})`,"computer.folder":`起始目录`,"computer.folderPlaceholder":`/path/to/repo`,"computer.folderInRoots":`必须在这台电脑允许的目录里:{roots}`,"computer.switch":`换到这里`,"computer.listTitle":`电脑`,"computer.usedBy":`{names} 在用`,"computer.remove":`移除`,"computer.confirmRemove":`确定移除`,"computer.cancel":`取消`,"computer.add":`添加电脑`,"computer.addTitle":`添加一台电脑`,"computer.done":`完成`,"computer.code":`配对码`,"computer.codeHint":`10 分钟内有效,只能用一次`,"computer.remoteOff":`先打开远程访问,那台电脑才连得上这里。`,"computer.openRemote":`打开远程访问`,"computer.runThere":`在那台电脑上运行(把目录换成允许 Bot 读写的代码目录,可以写多个 --root):`,"computer.rootPlaceholder":`~/code`,"computer.rootHint":`那台电脑只需要 Node.js,不需要模型密钥。`,"computer.copy":`复制命令`,"computer.copied":`已复制`,"computer.brainPlaceholder":`https://<这台电脑的远程访问地址>`,"triggers.chats":`可以叫它的聊天`,"triggers.chatsHint":`在这些聊天里发“/{name} 要做的事”或“@Pisper {name} 要做的事”就能叫它。聊天与人的 ID 在聊天里发 /whoami 查看。`,"triggers.p2p":`私聊`,"triggers.group":`群聊`,"triggers.peers":`聊天 {ids}`,"triggers.allPeers":`所有聊天`,"triggers.senders":`{ids} 能叫它`,"triggers.ownerOnly":`只有你能叫它`,"triggers.remove":`删除`,"triggers.platform":`渠道`,"triggers.peerIds":`聊天 ID`,"triggers.peerIdsPlaceholder":`聊天 ID,多个用逗号分开;不填表示所有聊天`,"triggers.senderIds":`谁能叫它`,"triggers.senderIdsPlaceholder":`谁能叫它(ID,逗号分开);不填只有你`,"triggers.senderIdsRequired":`谁能叫它(ID,逗号分开);群聊必须填写`,"triggers.cancel":`取消`,"triggers.add":`添加`,"triggers.addChat":`添加聊天`,"triggers.feishu":`飞书`,"triggers.weixin":`微信`,"triggers.qq":`QQ`,"triggers.telegram":`Telegram`,"triggers.schedules":`定时让它做`,"triggers.scheduleEnabled":`启用这个定时`,"triggers.scheduleMessage":`要做的事`,"triggers.scheduleMessagePlaceholder":`例如:检查依赖有没有安全更新`,"triggers.frequency":`频率`,"triggers.daily":`每天`,"triggers.weekly":`每周`,"triggers.once":`一次`,"triggers.weekday":`星期`,"triggers.date":`日期`,"triggers.time":`时间`,"triggers.addSchedule":`添加定时`,"triggers.monday":`周一`,"triggers.tuesday":`周二`,"triggers.wednesday":`周三`,"triggers.thursday":`周四`,"triggers.friday":`周五`,"triggers.saturday":`周六`,"triggers.sunday":`周日`,"triggers.onceAt":`{date} {time} 一次`,"triggers.weeklyAt":`每{day} {time}`,"triggers.dailyAt":`每天 {time}`,"triggers.otherSchedule":`按定时任务页里的设置`,"new.shuffle":`换一个样子`,"new.chooseLook":`自己挑样子`,"new.duty":`它负责什么(可选)`,"new.dutyPlaceholder":`例如:审查 pisper 仓库的 PR;小问题直接改,其余只提建议。`,"new.folder":`起始目录`,"new.folderDefault":`不填就从默认工作目录开始`,"new.folderSummary":`从本机的默认工作目录开始干活。`,"new.changeFolder":`换个目录`,"settings.changeLook":`换个样子`,"settings.doneLook":`选好了`,"settings.computer":`电脑`,"settings.computerSummary":`{computer} · {folder}`,"settings.chatsCount":`{count} 个聊天`,"settings.notSet":`未设置`,"settings.advanced":`高级`,"settings.advancedSummary":`权限:{permission} · 工具、暂停`,"activity.busy":`正在忙`,"settingsPage.backToChat":`和 {name} 聊天`,"settingsPage.title":`{name} 的设置`,"model.title":`模型`,"model.summary":`{model} · 思考:{thinking}`,"model.model":`模型`,"model.thinking":`思考`,"model.hint":`它的会话用这里的模型和思考等级,改了下一轮生效。档位跟着“设置 › 子代理”里的模型档位走。`,"model.tierFast":`快速档`,"model.tierStandard":`标准档`,"model.tierStrong":`强档`,"model.thinkingDefault":`模型默认`,"model.thinkingOff":`关闭`,"model.thinkingMinimal":`极轻`,"model.thinkingLow":`轻度`,"model.thinkingMedium":`标准`,"model.thinkingHigh":`深度`,"model.thinkingXhigh":`极深`,"activity.working":`{count} 件在做`,"activity.workingOn":`{count} 件在做 · 在做:{task}`,"memory.title":`记忆`,"memory.count":`{count} 条`,"memory.hint":`{name} 自己记得的事:你让它记住的、你纠正过的、做完一件活学到的。它派出去的子 agent 也会带上。每天空闲时它会整理一次。`,"memory.empty":`{name} 还没记住什么`,"memory.edit":`改这一条`,"memory.editLabel":`改这条记忆`,"memory.delete":`删掉这一条`,"memory.save":`保存`,"memory.cancel":`取消`,"memory.add":`记下`,"memory.addLabel":`加一条记忆`,"memory.addPlaceholder":`例如:发版前要在 iPhone 上点一遍首页`,"skills.title":`它学会的`,"skills.count":`{count} 个技能`,"skills.hint":`{name} 做完一件活会复盘:会反复做的事,它把做法写成自己的技能,之后派出去的子 agent 都带着;你纠正过的做法也会更新进去。`,"skills.empty":`{name} 还没学会什么`,"skills.loading":`正在读取…`,"skills.delete":`删掉这个技能`,"skills.schedule":`设成定时`,"skills.scheduleMessage":`照技能 {name} 做一遍`,"proactive.title":`主动`,"proactive.off":`关着`,"proactive.summaryCheck":`每 {count} 小时巡看`,"proactive.summaryBrief":`每天 {time} 简报`,"proactive.check":`空闲时自己巡看`,"proactive.every":`多久一次`,"proactive.everyHours":`每 {count} 小时`,"proactive.checkHint":`{name} 手上没活时,按它负责的东西只读看一遍(读文件、搜索,不改东西、不跑命令、不往外发消息),发现写成对话里的一条建议,你说“做吧”它才去做。`,"proactive.brief":`每天写一份简报`,"proactive.briefAt":`什么时候`,"proactive.briefHint":`过去一天做了什么、今天排了什么、有什么建议,写在它的对话里。`,"details.parallel":`同时做几件`,"details.parallelCount":`{count} 件`,"details.parallelHint":`它同时派出去干活的子 agent 最多几个,多的排队。`}),n.addResourceBundle(`en-US`,`bots`,{"sidebar.title":`Bots`,"sidebar.newBot":`New Bot`,"sidebar.showAll":`Show all ({count})`,"sidebar.showLess":`Show less`,"activity.idle":`Idle`,"activity.paused":`Paused`,"character.blob":`Blob`,"character.bean":`Bean`,"character.robot":`Robot`,"character.cat":`Cat`,"character.owl":`Owl`,"character.ghost":`Ghost`,"character.cloud":`Cloud`,"character.octo":`Octopus`,"character.bunny":`Bunny`,"character.bear":`Bear`,"character.fox":`Fox`,"character.star":`Star`,"new.title":`New Bot`,"new.description":`A name is all it needs. Say what it’s responsible for now, or tell it later in the chat.`,"new.name":`Name`,"new.namePlaceholder":`e.g. Reviewer`,"new.character":`Character`,"new.color":`Color`,"new.colorOption":`Color {index}`,"new.pick":`Choose…`,"new.cancel":`Cancel`,"new.create":`Start chatting`,"new.creating":`Creating…`,"page.disabledTitle":`Bots are turned off`,"page.disabledDescription":`Bots is a Labs feature. Turn it on in Settings › Labs.`,"page.openLabs":`Open Labs`,"page.loading":`Loading…`,"page.notFound":`This Bot no longer exists`,"page.emptyTitle":`No Bots yet`,"page.emptyDescription":`A Bot is a teammate that's always around: one long conversation you can pick up anytime, and chats and schedules can reach it too.`,"details.instructions":`What it’s responsible for`,"details.instructionsPlaceholder":`e.g. You review PRs in the pisper repo; fix small issues directly, otherwise only suggest; run npm test before concluding.`,"details.save":`Save`,"details.acceptsWork":`Take messages from chats and schedules`,"details.permission":`Permission`,"details.modeApproval":`Ask before every step`,"details.modeWorkspace":`Ask only if risky`,"details.modeFull":`Full access`,"details.permissionHint":`It edits files and runs commands on this computer on its own, not only in the starting folder. “Ask only if risky”: it stops to ask only for commands the guard flags as dangerous, clicks and typing in the browser, and third-party plugins. Bots you can call from a group chat can’t use full access.`,"computer.description":`It reads and writes code and runs commands on this computer. You can switch it to another computer running pisper executor.`,"computer.runsOn":`Runs on`,"computer.local":`This computer`,"activity.approval":`Waiting for your approval`,"activity.question":`Has a question for you`,"details.tools":`Tools`,"details.toolsAll":`All tools`,"details.toolsReadOnly":`Read only`,"details.toolsCustom":`Custom ({count})`,"details.toolsHint":`Read only: it can read and search code but not edit files or run commands. Tools outside the scope are blocked before they run.`,"computer.unnamed":`Unnamed computer`,"computer.online":`online`,"computer.offline":`offline`,"computer.option":`{name} ({state})`,"computer.folder":`Starting folder`,"computer.folderPlaceholder":`/path/to/repo`,"computer.folderInRoots":`Must be inside a folder this computer allows: {roots}`,"computer.switch":`Switch here`,"computer.listTitle":`Computers`,"computer.usedBy":`Used by {names}`,"computer.remove":`Remove`,"computer.confirmRemove":`Yes, remove`,"computer.cancel":`Cancel`,"computer.add":`Add a computer`,"computer.addTitle":`Add a computer`,"computer.done":`Done`,"computer.code":`Pairing code`,"computer.codeHint":`valid for 10 minutes, single use`,"computer.remoteOff":`Turn on remote access first so the other computer can reach this one.`,"computer.openRemote":`Open remote access`,"computer.runThere":`Run this on that computer (replace the folder with the code folder Bots may use; repeat --root for more):`,"computer.rootPlaceholder":`~/code`,"computer.rootHint":`That computer only needs Node.js, no model keys.`,"computer.copy":`Copy commands`,"computer.copied":`Copied`,"computer.brainPlaceholder":`https://<remote-access-address-of-this-computer>`,"triggers.chats":`Chats that can call it`,"triggers.chatsHint":`In these chats, send “/{name} what to do” or “@Pisper {name} what to do”. Send /whoami in a chat to see its IDs.`,"triggers.p2p":`Direct`,"triggers.group":`Group`,"triggers.peers":`chats {ids}`,"triggers.allPeers":`all chats`,"triggers.senders":`{ids} can call it`,"triggers.ownerOnly":`only you can call it`,"triggers.remove":`Remove`,"triggers.platform":`Channel`,"triggers.peerIds":`Chat IDs`,"triggers.peerIdsPlaceholder":`Chat IDs, comma separated; empty means all chats`,"triggers.senderIds":`Who can call it`,"triggers.senderIdsPlaceholder":`Who can call it (IDs, comma separated); empty means only you`,"triggers.senderIdsRequired":`Who can call it (IDs, comma separated); required for groups`,"triggers.cancel":`Cancel`,"triggers.add":`Add`,"triggers.addChat":`Add a chat`,"triggers.feishu":`Feishu`,"triggers.weixin":`WeChat`,"triggers.qq":`QQ`,"triggers.telegram":`Telegram`,"triggers.schedules":`On a schedule`,"triggers.scheduleEnabled":`Schedule on`,"triggers.scheduleMessage":`What to do`,"triggers.scheduleMessagePlaceholder":`e.g. Check dependencies for security updates`,"triggers.frequency":`Frequency`,"triggers.daily":`Daily`,"triggers.weekly":`Weekly`,"triggers.once":`Once`,"triggers.weekday":`Day`,"triggers.date":`Date`,"triggers.time":`Time`,"triggers.addSchedule":`Add a schedule`,"triggers.monday":`Monday`,"triggers.tuesday":`Tuesday`,"triggers.wednesday":`Wednesday`,"triggers.thursday":`Thursday`,"triggers.friday":`Friday`,"triggers.saturday":`Saturday`,"triggers.sunday":`Sunday`,"triggers.onceAt":`Once on {date} at {time}`,"triggers.weeklyAt":`Every {day} at {time}`,"triggers.dailyAt":`Daily at {time}`,"triggers.otherSchedule":`As set on the Schedules page`,"new.shuffle":`Try another look`,"new.chooseLook":`Pick a look`,"new.duty":`What it’s responsible for (optional)`,"new.dutyPlaceholder":`e.g. Review PRs in the pisper repo; fix small issues, otherwise only suggest.`,"new.folder":`Starting folder`,"new.folderDefault":`Leave empty to start in the default working folder`,"new.folderSummary":`Starts in the default working folder on this computer.`,"new.changeFolder":`Change folder`,"settings.changeLook":`Change look`,"settings.doneLook":`Done`,"settings.computer":`Computer`,"settings.computerSummary":`{computer} · {folder}`,"settings.chatsCount":`{count} chats`,"settings.notSet":`Not set`,"settings.advanced":`Advanced`,"settings.advancedSummary":`Permission: {permission} · tools, pause`,"activity.busy":`Busy`,"settingsPage.backToChat":`Chat with {name}`,"settingsPage.title":`{name} settings`,"model.title":`Model`,"model.summary":`{model} · thinking: {thinking}`,"model.model":`Model`,"model.thinking":`Thinking`,"model.hint":`Its session uses this model and thinking level; changes apply from the next turn. Tiers follow the model tiers in Settings › Subagents.`,"model.tierFast":`Fast tier`,"model.tierStandard":`Standard tier`,"model.tierStrong":`Strong tier`,"model.thinkingDefault":`Model default`,"model.thinkingOff":`Off`,"model.thinkingMinimal":`Minimal`,"model.thinkingLow":`Low`,"model.thinkingMedium":`Medium`,"model.thinkingHigh":`High`,"model.thinkingXhigh":`Extra high`,"activity.working":`{count} in progress`,"activity.workingOn":`{count} in progress · now: {task}`,"memory.title":`Memory`,"memory.count":`{count} items`,"memory.hint":`What {name} remembers: what you asked it to remember, your corrections, and lessons from finished work. Sub-agents it hands work to get these too. It tidies them once a day when idle.`,"memory.empty":`{name} has not remembered anything yet`,"memory.edit":`Edit`,"memory.editLabel":`Edit this memory`,"memory.delete":`Delete`,"memory.save":`Save`,"memory.cancel":`Cancel`,"memory.add":`Add`,"memory.addLabel":`Add a memory`,"memory.addPlaceholder":`e.g. Check the home page on an iPhone before each release`,"skills.title":`What it learned`,"skills.count":`{count} skills`,"skills.hint":`{name} reviews each finished job: work it will do again gets written down as its own skill, and every sub-agent it hands work to carries its skills. Your corrections update them too.`,"skills.empty":`{name} has not learned anything yet`,"skills.loading":`Loading…`,"skills.delete":`Delete this skill`,"skills.schedule":`Put on a schedule`,"skills.scheduleMessage":`Do it once following skill {name}`,"proactive.title":`Proactive`,"proactive.off":`Off`,"proactive.summaryCheck":`Checks every {count} h`,"proactive.summaryBrief":`Daily brief at {time}`,"proactive.check":`Check on things when idle`,"proactive.every":`How often`,"proactive.everyHours":`Every {count} h`,"proactive.checkHint":`When {name} has nothing to do, it looks over what it is responsible for, read-only (reads and searches files; no edits, no commands, no outgoing messages). Findings become a suggestion in its conversation; it only starts work when you say so.`,"proactive.brief":`Write a daily brief`,"proactive.briefAt":`When`,"proactive.briefHint":`What was done in the last day, what is scheduled today and any suggestions, written in its conversation.`,"details.parallel":`Jobs at once`,"details.parallelCount":`{count}`,"details.parallelHint":`How many sub-agents it runs at the same time; the rest wait in line.`});var l=[`read`,`grep`,`find`,`ls`];function u(e){if(e===null)return`all`;let t=[...e].sort();return t.length===l.length&&[...l].sort().every((e,n)=>t[n]===e)?`read-only`:`custom`}function d(e,{expanded:t,currentId:n}){let r=e=>e.activity?.needsYou?0:e.activity?.status===`running`?1:2,i=e.map((e,t)=>({bot:e,index:t})).sort((e,t)=>r(e.bot)-r(t.bot)||e.index-t.index).map(e=>e.bot);if(t||i.length<=3)return{shown:i,hidden:0};let a=i.filter((e,t)=>t<3||n!==void 0&&e.id===n);return{shown:a,hidden:i.length-a.length}}function f(e){return e.activity?.needsYou?`need`:e.activity?.status===`running`?`running`:`idle`}function p(e,t){if(!t.enabled)return e(`bots:activity.paused`);let n=t.activity,r=n?.working?n.current?e(`bots:activity.workingOn`,{count:n.working,task:n.current}):e(`bots:activity.working`,{count:n.working}):``;return n?.waiting===`approval`?r?`${e(`bots:activity.approval`)} · ${r}`:e(`bots:activity.approval`):n?.waiting===`question`?r?`${e(`bots:activity.question`)} · ${r}`:e(`bots:activity.question`):r||(n?.status===`running`?e(`bots:activity.busy`):e(`bots:activity.idle`))}var m=e(t(),1),h=[`fast`,`standard`,`strong`],g=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],_=[1,3,6,12,24];function v(e){let t=e&&typeof e==`object`?e:{},n=_.find(e=>e===t.everyHours)??6;return{enabled:t.enabled===!0,everyHours:n,brief:t.brief===!0,briefAt:typeof t.briefAt==`string`&&/^\d{2}:\d{2}$/.test(t.briefAt)?t.briefAt:`09:00`}}var y=[`feishu`,`weixin`,`qq`,`telegram`];function b(e){return Array.isArray(e)?e.flatMap(e=>{let t=e&&typeof e==`object`?e:{};if(!y.includes(t.platform))return[];let n=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[];return[{platform:t.platform,chatType:t.chatType===`group`?`group`:`p2p`,peerIds:Array.isArray(t.peerIds)?n(t.peerIds):null,senderIds:n(t.senderIds)}]}):[]}function x(e){if(!e||typeof e!=`object`||Array.isArray(e))throw o();return e}function S(e,t=``){return typeof e==`string`?e:t}function C(e){if(!e||typeof e!=`object`)return null;let t=e,n=t.waiting===`approval`||t.waiting===`question`?t.waiting:null,r=Number(t.working);return{status:t.status===`running`?`running`:`idle`,waiting:n,needsYou:t.needsYou===!0||n!==null,working:Number.isInteger(r)&&r>0?r:0,current:typeof t.current==`string`?t.current.slice(0,120):``}}function w(e){let t=x(e),n=x(t.avatar??{}),r=x(t.workspace??{});if(typeof t.id!=`string`||typeof t.name!=`string`)throw o();return{id:t.id,name:t.name,avatar:{character:s(n.character)?n.character:`blob`,color:c(n.color)?n.color:`blue`},enabled:t.enabled!==!1,instructions:S(t.instructions),executionMode:t.executionMode===`workspace-write`||t.executionMode===`full-access`?t.executionMode:`approval-required`,model:T(t.model),thinking:g.find(e=>e===t.thinking)??null,channels:b(t.channels),tools:Array.isArray(t.tools)?t.tools.filter(e=>typeof e==`string`):null,workspace:{environmentId:S(r.environmentId,`local`),cwd:S(r.cwd)},threadSessionId:S(t.threadSessionId),activity:C(t.activity),maxParallelAgents:Number.isInteger(t.maxParallelAgents)&&Number(t.maxParallelAgents)>=1&&Number(t.maxParallelAgents)<=6?Number(t.maxParallelAgents):3,proactive:v(t.proactive)}}function T(e){let t=x(e??{});return typeof t.ref==`string`&&t.ref.includes(`/`)?{ref:t.ref}:{tier:h.find(e=>e===t.tier)??`standard`}}async function E(){let e=x(await i(`config`));return(Array.isArray(e.providers)?e.providers:[]).flatMap(e=>{let t=x(e);if(typeof t.id!=`string`||!t.configured||t.enabled===!1)return[];let n=S(t.name,t.id);return(Array.isArray(t.models)?t.models:[]).flatMap(e=>{let r=x(e);return typeof r.id!=`string`||r.kind!==`chat`?[]:[{ref:`${t.id}/${r.id}`,name:S(r.name,r.id),providerName:n}]})})}function D(e,t){return n=>t(x(n)[e])}function O(e){return a(`/api/bots`,{signal:e,parse:e=>{let t=x(e).bots;if(!Array.isArray(t))throw o();return t.map(w)}})}function k(e){return a(`/api/bots`,{method:`POST`,data:e,parse:D(`bot`,w)})}function A(e,t){return a(`/api/bots/${encodeURIComponent(e)}`,{method:`PATCH`,data:t,parse:D(`bot`,w)})}function j(e){return a(`/api/bots/${encodeURIComponent(e)}/session`,{method:`POST`,data:{},parse:e=>{let t=x(e).sessionId;if(typeof t!=`string`||!t)throw o();return t}})}function M(e){let t=e&&typeof e==`object`?e:{};return{enabled:t.enabled===!0,endpoints:Array.isArray(t.endpoints)?t.endpoints.filter(e=>typeof e==`string`&&/^https:\/\//.test(e)):[],fingerprint:typeof t.fingerprint==`string`?t.fingerprint:null}}function N(e){let t=x(e);if(typeof t.id!=`string`||!t.id)throw o();let n=t.capabilities&&typeof t.capabilities==`object`?t.capabilities:{};return{id:t.id,kind:t.kind===`node`?`node`:`local`,name:S(t.name),online:t.online===!0,roots:Array.isArray(t.roots)?t.roots.filter(e=>typeof e==`string`):[],shell:n.shell===!0,usedBy:Array.isArray(t.usedBy)?t.usedBy.flatMap(e=>{let t=e&&typeof e==`object`?e:{};return typeof t.id==`string`&&typeof t.name==`string`?[{id:t.id,name:t.name}]:[]}):[],lastSeenAt:typeof t.lastSeenAt==`string`?t.lastSeenAt:null}}function P(e){return a(`/api/environments`,{signal:e,parse:e=>{let t=x(e);if(!Array.isArray(t.environments))throw o();return{environments:t.environments.map(N),remote:M(t.remote)}}})}function F(){return a(`/api/environments/pairing`,{method:`POST`,data:{},parse:e=>{let t=x(e),n=x(t.pairing);if(typeof n.code!=`string`)throw o();return{code:n.code,expiresAt:S(n.expiresAt),remote:M(t.remote)}}})}function I(e){return a(`/api/environments/${encodeURIComponent(e)}`,{method:`DELETE`,parse:()=>void 0})}function L(e,t){let n=x(e).tasks;if(!Array.isArray(n))throw o();return n.flatMap(e=>{let n=e&&typeof e==`object`?e:{};if(n.targetType!==`bot`||n.botId!==t||typeof n.id!=`string`)return[];let r=[`once`,`interval`,`daily`,`weekly`,`monthly`].includes(String(n.frequency))?n.frequency:`daily`;return[{id:n.id,enabled:n.enabled!==!1,botMessage:S(n.botMessage),frequency:r,time:S(n.time),date:S(n.date),dayOfWeek:Number(n.dayOfWeek)||0,nextRunAt:typeof n.nextRunAt==`string`?n.nextRunAt:null}]})}function R(e,t){return a(`/api/schedules`,{signal:t,parse:t=>L(t,e)})}function ee(e){return a(`/api/schedules`,{method:`POST`,data:{...e,targetType:`bot`,enabled:!0},parse:()=>void 0})}function z(e,t){return a(`/api/schedules/${encodeURIComponent(e)}`,{method:`PATCH`,data:{enabled:t},parse:()=>void 0})}function B(e){return a(`/api/schedules/${encodeURIComponent(e)}`,{method:`DELETE`,parse:()=>void 0})}var V=[`told`,`correction`,`review`,`proactive`,`manual`,`tidy`];function H(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.id!=`string`||typeof t.text!=`string`||!t.text?null:{id:t.id,text:t.text.slice(0,500),source:V.find(e=>e===t.source)??`told`,updatedAt:S(t.updatedAt)}}function U(e){let t=H(x(e).entry);if(!t)throw o();return t}function W(e,t){return a(`/api/bots/${encodeURIComponent(e)}/memory`,{signal:t,parse:e=>{let t=x(e).entries;return Array.isArray(t)?t.map(H).filter(e=>!!e):[]}})}function G(e,t){return a(`/api/bots/${encodeURIComponent(e)}/memory`,{method:`POST`,data:{text:t},parse:U})}function K(e,t,n){return a(`/api/bots/${encodeURIComponent(e)}/memory/${encodeURIComponent(t)}`,{method:`PATCH`,data:{text:n},parse:U})}function q(e,t){return a(`/api/bots/${encodeURIComponent(e)}/memory/${encodeURIComponent(t)}`,{method:`DELETE`,parse:()=>void 0})}function J(e){let t=x(e);return typeof t.name!=`string`||!t.name?null:{name:t.name.slice(0,64),description:S(t.description).slice(0,1024),updatedAt:S(t.updatedAt)}}function Y(e,t){return a(`/api/bots/${encodeURIComponent(e)}/skills`,{signal:t,parse:e=>{let t=x(e).skills;return Array.isArray(t)?t.map(J).filter(e=>!!e):[]}})}function X(e,t,n){return a(`/api/bots/${encodeURIComponent(e)}/skills/${encodeURIComponent(t)}`,{signal:n,parse:e=>{let t=x(x(e).skill),n=J(t);if(!n)throw Error(`Invalid skill response.`);return{...n,body:S(t.body).slice(0,2e4)}}})}function Z(e,t){return a(`/api/bots/${encodeURIComponent(e)}/skills/${encodeURIComponent(t)}`,{method:`DELETE`,parse:()=>void 0})}var Q=null,$=r()((e,t)=>({bots:[],loaded:!1,error:``,load:()=>(Q??=O().then(t=>e({bots:t,loaded:!0,error:``})).catch(t=>e({loaded:!0,error:t instanceof Error?t.message:String(t)})).finally(()=>{Q=null}),Q),upsert:n=>{let r=t().bots;e({bots:r.findIndex(e=>e.id===n.id)<0?[...r,n]:r.map(e=>e.id===n.id?{...n,activity:e.activity}:e)})}}));function te(e){let t=$(e=>e.load),n=$(e=>e.bots.some(e=>e.activity?.status===`running`));(0,m.useEffect)(()=>{if(!e)return;t();let r=window.setInterval(()=>{document.visibilityState===`visible`&&t()},n?3e3:1e4);return()=>window.clearInterval(r)},[e,n,t])}export{z as C,f as D,p as E,u as O,I as S,l as T,R as _,_ as a,P as b,k as c,q as d,B as f,E as g,W as h,y as i,d as k,ee as l,K as m,$ as n,g as o,Z as p,h as r,G as s,te as t,F as u,X as v,A as w,j as x,Y as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,n as t}from"./startup-queries-
|
|
1
|
+
import{i as e,n as t}from"./startup-queries-Cevfi-_Z.js";import{a as n,c as r,i,r as a,s as o}from"./api-m-Yq8n0q.js";var s=e=>`/api/sessions/${encodeURIComponent(e)}`;async function c(t,r={}){let i=await n(t,r);return r.method&&r.method!==`GET`&&(/^\/api\/sessions(?:$|\/[^/]+(?:\/(?:derive|model|cwd|execution-mode|run-mode|thinking-level|goal|tree\/navigate))?$)/.test(t)&&e(`sessions`),t===`/api/settings/compaction`&&e(`config`)),i}var l={listSessions:({refresh:e=!0}={})=>t(`sessions`,e),searchSessionTreeLabels:(e,t=20,n)=>c(`/api/session-labels?${new URLSearchParams({query:e,limit:String(t)})}`,{signal:n}),listSessionTreeLabels:(e=500)=>c(`/api/session-labels?limit=${e}`),createSession:(e,t=``,n={})=>c(`/api/sessions`,{method:`POST`,data:{name:e,...n.projectless?{projectless:!0}:t?{cwd:t}:{}}}),deriveSession:(e,t,n)=>c(`${s(e)}/derive`,{method:`POST`,data:{boundaryEntryId:t,name:n}}),getSessionTree:e=>c(`${s(e)}/tree`),navigateSessionTree:(e,t,n)=>c(`${s(e)}/tree/navigate`,{method:`POST`,data:{targetEntryId:t,summarize:n},timeout:18e4}),navigateSessionTreeTarget:(e,t)=>c(`${s(e)}/tree/navigate`,{method:`POST`,data:{targetEntryId:t,summarize:!1,includeTree:!1},timeout:18e4}),previewFileRewind:(e,t)=>c(`${s(e)}/tree/${encodeURIComponent(t)}/file-rewind`),rewindFiles:(e,t)=>c(`${s(e)}/tree/${encodeURIComponent(t)}/file-rewind`,{method:`POST`,timeout:18e4}),setSessionTreeLabel:(e,t,n)=>c(`${s(e)}/tree/labels/${encodeURIComponent(t)}`,{method:`PUT`,data:{label:n}}),getSessionCommands:e=>c(`${s(e)}/commands`),getWorkspaceCommands:e=>c(`/api/commands?cwd=${encodeURIComponent(e)}`),getConfig:({refresh:e=!1}={})=>t(`config`,e),updateCompactionPreference:e=>c(`/api/settings/compaction`,{method:`PATCH`,data:{thresholdPercent:e}}),getLiveSession:(e,t={})=>c(`${s(e)}/live`,t),getMessages:(e,t)=>{let n=new URLSearchParams({limit:String(t.limit)});return t.before&&n.set(`before`,t.before),c(`${s(e)}/messages?${n}`)},openStream:async(e,t,{signal:n}={})=>{await a({open:async()=>(await o(),fetch(`/api/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:n})),resume:async(e,t)=>(await o(),fetch(`/api/runs/${encodeURIComponent(e)}/events?after=${t}`,{signal:n})),onEvent:t,signal:n})},askSideQuestion:async(e,t,{signal:n,onDelta:i}={})=>{await o();let a=await fetch(`${s(e)}/side-question`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({question:t}),signal:n}),c=null;if(await r(a,(e,t)=>{if(e===`delta`&&typeof t.text==`string`)i?.(t.text);else if(e===`error`)throw Error(String(t.message||``));else if(e===`done`)return c={text:typeof t.text==`string`?t.text:``,toolCallIgnored:t.toolCallIgnored===!0},!1}),!c)throw Error(`side question ended before completion`);return c},retryLastTurn:async(e,t,{signal:n}={})=>{await a({open:async()=>(await o(),fetch(`${s(e)}/retry`,{method:`POST`,signal:n})),resume:async(e,t)=>(await o(),fetch(`/api/runs/${encodeURIComponent(e)}/events?after=${t}`,{signal:n})),onEvent:t,signal:n})},queueInput:(e,t,n,r)=>c(`${s(e)}/input`,{method:`POST`,data:{message:t,attachments:n,behavior:r}}),sendQueuedInputNow:(e,t)=>c(`${s(e)}/input/${encodeURIComponent(t)}/send-now`,{method:`POST`,data:{}}),withdrawQueuedInput:(e,t)=>c(`${s(e)}/input/${encodeURIComponent(t)}`,{method:`DELETE`}),compactSession:e=>c(`${s(e)}/compact`,{method:`POST`,data:{},timeout:18e4}),getSessionWorkflowRuns:e=>c(`${s(e)}/workflow-runs`),resolveWorkflowApproval:(e,t,n)=>c(`/api/workflow-runs/${encodeURIComponent(e)}/approvals/${encodeURIComponent(t)}`,{method:`POST`,data:{approved:n}}),stopWorkflowRun:e=>c(`/api/workflow-runs/${encodeURIComponent(e)}/stop`,{method:`POST`,data:{}}),abort:e=>c(`${s(e)}/abort`,{method:`POST`,data:{}}),resolveMobileOperation:(e,t,n)=>c(`${s(e)}/mobile-operations/${encodeURIComponent(t)}`,{method:`POST`,data:n}),pauseGoal:e=>c(`${s(e)}/goal`,{method:`PATCH`,data:{action:`pause`}}),setGoalBudget:(e,t)=>c(`${s(e)}/goal`,{method:`PATCH`,data:{action:`set-budget`,tokenBudget:t}}),getGitChanges:e=>c(`${s(e)}/git/changes`),commitGitChanges:(e,t)=>c(`${s(e)}/git/commit`,{method:`POST`,data:{message:t},timeout:6e4}),pushGitChanges:e=>c(`${s(e)}/git/push`,{method:`POST`,data:{},timeout:15e4}),revertGitChanges:e=>c(`${s(e)}/git/revert`,{method:`POST`,data:{},timeout:6e4}),getVcsChanges:(e,t={})=>c(`${s(e)}/vcs/changes`,t),getFileDiff:(e,t,n={})=>c(`${s(e)}/vcs/file-diff?path=${encodeURIComponent(t)}`,n),commitVcsChanges:(e,t)=>c(`${s(e)}/vcs/commit`,{method:`POST`,data:{message:t},timeout:15e4}),pushVcsChanges:e=>c(`${s(e)}/vcs/push`,{method:`POST`,data:{},timeout:15e4}),revertVcsChanges:e=>c(`${s(e)}/vcs/revert`,{method:`POST`,data:{},timeout:6e4}),getSessionFileChanges:(e,t={})=>c(`${s(e)}/file-changes`,t),getSessionFileChangeDiff:(e,t,n={})=>c(`${s(e)}/file-changes/diff?path=${encodeURIComponent(t)}`,n),revertSessionFileChanges:(e,t=``)=>c(`${s(e)}/file-changes/revert`,{method:`POST`,data:{path:t},timeout:6e4}),approveSessionFileChanges:(e,t=``)=>c(`${s(e)}/file-changes/approve`,{method:`POST`,data:{path:t}}),updateModel:(e,t,n)=>c(`${s(e)}/model`,{method:`PUT`,data:{provider:t,model:n}}),getThinkingLevel:e=>c(`${s(e)}/thinking-level`),setThinkingLevel:(e,t)=>c(`${s(e)}/thinking-level`,{method:`PUT`,data:{level:t}}),updateExecutionMode:(e,t)=>c(`${s(e)}/execution-mode`,{method:`PUT`,data:{mode:t}}),updateRunMode:(e,t)=>c(`${s(e)}/run-mode`,{method:`PUT`,data:{mode:t}}),resolveApproval:(e,t,n)=>c(`${s(e)}/approvals/${encodeURIComponent(t)}`,{method:`POST`,data:{approved:n}}),answerQuestion:(e,t,n)=>c(`${s(e)}/questions/${encodeURIComponent(t)}`,{method:`POST`,data:n}),enqueueSessionStart:(e,t)=>c(`${s(e)}/queue`,{method:`POST`,data:t}),startQueuedSession:e=>c(`${s(e)}/queue/start`,{method:`POST`,data:{}}),exportSessionMarkdown:(e,t)=>i(`${s(e)}/export?format=markdown&lang=${t===`en-US`?`en-US`:`zh-CN`}`,{timeout:6e4}),updateCwd:(e,t)=>c(`${s(e)}/cwd`,{method:`PUT`,data:{cwd:t}}),renameSession:(e,t)=>c(s(e),{method:`PATCH`,data:{name:t}})};export{l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./vendor-state-GkUciC5H.js";import{t}from"./api-
|
|
1
|
+
import{o as e}from"./vendor-state-GkUciC5H.js";import{t}from"./api-m-Yq8n0q.js";function n(){return typeof window<`u`&&window.__PISPER_MOBILE_APP__===!0}var r=null,i=!1,a=e()(e=>({client:n()?`mobile-app`:`web`,loaded:n(),load:({refresh:a=!0}={})=>r||(!a&&i?Promise.resolve():(r=(async()=>{let r=n();r&&e({client:`mobile-app`,loaded:!0});try{let n=await t(`/api/client-info`);e({client:r||n.client===`mobile-app`?`mobile-app`:`web`,loaded:!0})}catch{e({client:r?`mobile-app`:`web`,loaded:!0})}})().finally(()=>{i=!0,r=null}),r))}));function o(){return a(e=>e.client===`mobile-app`)}export{o as n,a as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{d as n}from"./i18n-CyyEaQdX.js";import{i as r,r as i,t as a}from"./runtime-capabilities-CHYOF_hE.js";var o=e(t(),1),s=`section`,c={models:`config:configPage.models`,notifications:`config:configPage.notifications`,interface:`config:configPage.interface`,shortcuts:`config:configPage.shortcuts`,"desktop-pet":`config:configPage.desktopPet`,updates:`config:configPage.appUpdates`,labs:`config:configPage.labs`,about:`config:configPage.about`,"remote-access":`config:configPage.remoteAccess`,"mobile-server":`config:configPage.mobileServer`},l=[{id:`sec-models`,section:`models`,card:s,titleKey:`config:configPage.models`,keywords:[`model`,`provider`,`llm`,`api`,`模型`,`供应商`,`大模型`]},{id:`sec-notifications`,section:`notifications`,card:s,titleKey:`config:configPage.notifications`,keywords:[`notification`,`push`,`alert`,`通知`,`推送`,`提醒`]},{id:`sec-interface`,section:`interface`,card:s,titleKey:`config:configPage.interface`,keywords:[`interface`,`theme`,`appearance`,`display`,`界面`,`主题`,`外观`,`显示`]},{id:`sec-shortcuts`,section:`shortcuts`,card:s,titleKey:`config:configPage.shortcuts`,keywords:[`keyboard`,`shortcut`,`hotkey`,`keybinding`,`voice`,`push to talk`,`快捷键`,`按键`,`键盘`,`语音`,`长按`]},{id:`sec-desktop-pet`,section:`desktop-pet`,card:s,titleKey:`config:configPage.desktopPet`,keywords:[`pet`,`petdex`,`宠物`,`桌宠`]},{id:`sec-updates`,section:`updates`,card:s,titleKey:`config:configPage.appUpdates`,keywords:[`update`,`upgrade`,`version`,`更新`,`升级`,`版本`]},{id:`sec-labs`,section:`labs`,card:s,titleKey:`config:configPage.labs`,keywords:[`labs`,`beta`,`experimental`,`preview`,`实验`,`测试版`,`尝鲜`,`内测`]},{id:`sec-about`,section:`about`,card:s,titleKey:`config:configPage.about`,keywords:[`about`,`info`,`license`,`关于`,`信息`,`许可`]},{id:`sec-remote-access`,section:`remote-access`,card:s,titleKey:`config:configPage.remoteAccess`,keywords:[`remote`,`network`,`phone`,`远程`,`网络`,`手机`]},{id:`sec-mobile-server`,section:`mobile-server`,card:s,titleKey:`config:configPage.mobileServer`,keywords:[`server`,`remote`,`network`,`服务器`,`远程`,`网络`]},{id:`models-current-model`,section:`models`,card:`models-current-model`,targetId:`models-connections`,titleKey:`config:configPage.currentChatModel`,keywords:[`model`,`provider`,`quick setup`,`模型`,`供应商`,`快速配置`,`对话模型`]},{id:`models-connections`,section:`models`,card:`models-connections`,titleKey:`config:configPage.manageConnections`,keywords:[`provider`,`connection`,`api key`,`import`,`连接`,`供应商`,`导入`,`密钥`]},{id:`models-runtime-policy`,section:`models`,card:`models-current-model`,targetId:`models-runtime-policy`,titleKey:`config:configPage.agentRuntimePolicy`,keywords:[`runtime`,`agent`,`policy`,`thinking`,`tools`,`运行策略`,`运行时`,`执行策略`,`思考强度`,`可用工具`]},{id:`models-fallback`,section:`models`,card:`models-current-model`,targetId:`models-runtime-policy`,titleKey:`config:providerWorkbench.fallbackModels`,keywords:[`fallback`,`backup`,`failover`,`quota`,`备用模型`,`备选`,`额度`,`切换模型`]},{id:`models-auxiliary`,section:`models`,card:`models-current-model`,targetId:`models-runtime-policy`,titleKey:`config:providerWorkbench.auxiliaryModel`,keywords:[`auxiliary`,`helper model`,`title`,`compaction`,`summary`,`辅助模型`,`标题`,`压缩`,`摘要`,`记忆`]},{id:`models-subagents`,section:`models`,card:`models-subagents`,targetId:`models-subagents`,titleKey:`config:subagents.title`,keywords:[`subagent`,`agent definition`,`tier`,`fast`,`strong`,`子代理`,`子 Agent`,`档位`,`便宜模型`,`.pisper/agents`]},{id:`models-permission-rules`,section:`models`,card:`models-permission-rules`,targetId:`models-permission-rules`,titleKey:`config:permissionRules.title`,keywords:[`permission`,`allow`,`deny`,`approval`,`rule`,`权限`,`审批`,`允许`,`禁止`,`规则`]},{id:`models-visual`,section:`models`,card:`models-visual`,targetId:`models-visual`,expandGroup:`models-advanced`,titleKey:`config:configPage.currentVisualModel`,keywords:[`image`,`video`,`visual`,`图片`,`图像`,`视频`,`视觉`,`生图`]},{id:`notifications-browser`,section:`notifications`,card:`notifications-browser`,titleKey:`config:notificationSettings.notification`,keywords:[`browser`,`system`,`push`,`浏览器通知`,`系统通知`,`推送`]},{id:`notifications-templates`,section:`notifications`,card:`notifications-templates`,titleKey:`config:notificationSettings.notificationTemplates`,keywords:[`template`,`模板`,`通知模板`]},{id:`interface-custom-ui`,section:`interface`,card:`interface-custom-ui`,titleKey:`navigation:shell.components`,sectionTitleKey:`custom-ui:moved.title`,keywords:[`custom ui`,`standalone widgets`,`component`,`native`,`manifest`,`独立组件`,`自定义组件`,`组件`]},{id:`interface-appearance`,section:`interface`,card:`interface-appearance`,titleKey:`config:interfaceSettings.appearance`,keywords:[`theme`,`dark`,`light`,`accent`,`主题`,`深色`,`浅色`,`强调色`,`外观`]},{id:`interface-style`,section:`interface`,card:`interface-style`,expandGroup:`interface-advanced`,titleKey:`config:interfaceSettings.interfaceStyle`,keywords:[`font`,`corner`,`radius`,`字体`,`字号`,`圆角`]},{id:`interface-motion`,section:`interface`,card:`interface-motion`,expandGroup:`interface-advanced`,titleKey:`config:interfaceSettings.displayAndMotion`,keywords:[`motion`,`density`,`animation`,`动效`,`动画`,`密度`,`显示`]},{id:`interface-language`,section:`interface`,card:`interface-language`,titleKey:`config:languageSettings.displayLanguage`,keywords:[`language`,`chinese`,`english`,`语言`,`中文`,`英文`,`英语`]},{id:`desktop-pet-settings`,section:`desktop-pet`,card:`desktop-pet-settings`,titleKey:`config:desktopPetSettings.title`,keywords:[`pet`,`宠物`,`桌宠`,`宠物设置`]},{id:`desktop-pet-install`,section:`desktop-pet`,card:`desktop-pet-install`,titleKey:`config:desktopPetSettings.installTitle`,keywords:[`petdex`,`install`,`宠物安装`,`添加宠物`]},{id:`desktop-pet-installed`,section:`desktop-pet`,card:`desktop-pet-installed`,titleKey:`config:desktopPetSettings.installedTitle`,keywords:[`installed`,`已安装`,`宠物列表`]},{id:`mobile-server-main`,section:`mobile-server`,card:`mobile-server-main`,titleKey:`config:mobileServer.title`,keywords:[`server`,`remote`,`服务器`,`远程`,`手机访问`]},{id:`mobile-server-local`,section:`mobile-server`,card:`mobile-server-local`,titleKey:`config:mobileServer.localTitle`,keywords:[`local`,`on-device`,`本机`,`本地运行`]},{id:`remote-workspaces`,section:`remote-access`,card:`remote-workspaces`,titleKey:`config:remoteWorkspace.title`,keywords:[`linux`,`remote workspace`,`服务器`,`远程工作区`]},{id:`remote-access-main`,section:`remote-access`,card:`remote-access-main`,titleKey:`config:remoteAccess.title`,keywords:[`remote`,`network`,`phone`,`远程`,`网络`,`手机`]},{id:`remote-access-pairing`,section:`remote-access`,card:`remote-access-pairing`,titleKey:`config:remoteAccess.pairing`,keywords:[`pairing`,`qr`,`配对`,`二维码`]},{id:`remote-access-devices`,section:`remote-access`,card:`remote-access-devices`,titleKey:`config:remoteAccess.devices`,keywords:[`device`,`paired`,`设备`,`已配对`,`授权`]},{id:`updates-main`,section:`updates`,card:`updates-main`,titleKey:`config:updateSettings.pisperAppUpdates`,keywords:[`update`,`version`,`channel`,`更新`,`版本`,`升级`,`渠道`]},{id:`updates-components`,section:`updates`,card:`updates-components`,titleKey:`config:updateSettings.appComponents`,keywords:[`component`,`runtime`,`sidecar`,`组件`,`运行时`]},{id:`updates-cli`,section:`updates`,card:`updates-cli`,titleKey:`config:cliSettings.title`,keywords:[`cli`,`terminal`,`command`,`命令行`,`终端`,`命令`]},{id:`about-project`,section:`about`,card:`about-project`,titleKey:`config:aboutSettings.projectInformation`,keywords:[`project`,`version`,`license`,`项目`,`版本`,`许可`]},{id:`about-support`,section:`about`,card:`about-support`,titleKey:`config:aboutSettings.supportPisper`,keywords:[`support`,`donate`,`sponsor`,`支持`,`捐赠`,`赞助`]}],u={provider:[`sec-models`,`models-current-model`,`models-connections`],供应商:[`sec-models`,`models-current-model`,`models-connections`],model:[`sec-models`,`models-current-model`,`models-connections`],模型:[`sec-models`,`models-current-model`,`models-connections`],theme:[`sec-interface`,`interface-appearance`],主题:[`sec-interface`,`interface-appearance`],interface:[`sec-interface`,`interface-appearance`],界面:[`sec-interface`,`interface-appearance`,`interface-language`],diy:[`interface-custom-ui`],components:[`interface-custom-ui`],widgets:[`interface-custom-ui`],组件:[`interface-custom-ui`],pet:[`sec-desktop-pet`,`desktop-pet-settings`,`desktop-pet-install`,`desktop-pet-installed`],宠物:[`sec-desktop-pet`,`desktop-pet-settings`,`desktop-pet-install`,`desktop-pet-installed`],update:[`sec-updates`,`updates-main`,`updates-components`],更新:[`sec-updates`,`updates-main`,`updates-components`],network:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],网络:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],remote:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],远程:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],notification:[`sec-notifications`,`notifications-browser`,`notifications-templates`],通知:[`sec-notifications`,`notifications-browser`,`notifications-templates`],language:[`interface-language`],语言:[`interface-language`]},d=12;function f(e){return[n(e.titleKey,`zh-CN`).toLowerCase(),n(e.titleKey,`en-US`).toLowerCase()]}function p(e,t,{capabilities:o=a,mobileApp:s}={}){let p=e.trim().toLowerCase();if(!p)return[];let m=new Set(u[p]||[]);for(let e of p.split(/\s+/))for(let t of u[e]||[])m.add(t);let h=[];for(let e of l){if(!i(o,e.section)||e.id===`models-visual`&&!r(o,`visualGeneration`)||s!==void 0&&(e.section===`mobile-server`&&!s||e.section===`remote-access`&&s)||typeof window<`u`&&(e.id===`remote-workspaces`&&!window.pisperDesktop?.remoteWorkspaces||e.id===`remote-access-main`&&window.__PISPER_REMOTE_WORKSPACE__))continue;let[t,n]=f(e),a=0;m.has(e.id)?a=100:t===p||n===p?a=90:t.startsWith(p)||n.startsWith(p)?a=80:t.includes(p)||n.includes(p)?a=65:(e.keywords||[]).some(e=>{let t=e.toLowerCase();return t.includes(p)?p.length>=2||/[\u4e00-\u9fff]/.test(p):/[\u4e00-\u9fff]/.test(t)&&t.includes(p)})&&(a=40),a>0&&h.push({entry:e,score:a})}h.sort((e,t)=>t.score-e.score);let g=new Set,_=[];for(let{entry:e}of h){let r={entry:e,title:n(e.titleKey,t),sectionTitle:n(e.sectionTitleKey||c[e.section],t)},i=`${e.section}|${r.title}`;if(!g.has(i)&&(g.add(i),_.push(r),_.length>=d))break}return _}var m=`pisper:config-card-highlight`,h=null,g=0,_=new Set;function v(){for(let e of _)e()}function y(e){return _.add(e),()=>{_.delete(e)}}function b(e,t,n={}){h={card:e,section:t,...n,targetId:n.targetId||e,navigationKey:++g},v(),window.dispatchEvent(new Event(m))}function x(e){let t=(0,o.useSyncExternalStore)(y,()=>h,()=>null);return(0,o.useEffect)(()=>{if(!t||t.section!==e)return;let n=0,r=()=>{cancelAnimationFrame(n),n=requestAnimationFrame(()=>{if(h?.navigationKey!==t.navigationKey)return;let e=Array.from(document.querySelectorAll(`[data-config-target], [data-config-card]`)).find(e=>e.dataset.configTarget===t.targetId||e.dataset.configCard===t.targetId);if(!e||!e.getClientRects().length)return;let n=e.querySelector(`input:not([disabled]), button:not([disabled]), select:not([disabled]), [tabindex="0"]`)||e;!n.hasAttribute(`tabindex`)&&n===e&&(n.tabIndex=-1),n.focus({preventScroll:!0}),e.scrollIntoView({block:`center`}),i.disconnect(),h=null,v()})},i=new MutationObserver(r);return i.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`hidden`,`style`,`data-state`]}),r(),()=>{cancelAnimationFrame(n),i.disconnect()}},[t,e]),t?.section===e?t:null}export{x as i,b as n,p as r,s as t};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{d as n}from"./i18n-Du-JO3Qx.js";import{i as r,r as i,t as a}from"./runtime-capabilities-CHYOF_hE.js";var o=e(t(),1),s=`section`,c={models:`config:configPage.models`,notifications:`config:configPage.notifications`,interface:`config:configPage.interface`,shortcuts:`config:configPage.shortcuts`,"desktop-pet":`config:configPage.desktopPet`,updates:`config:configPage.appUpdates`,labs:`config:configPage.labs`,about:`config:configPage.about`,"remote-access":`config:configPage.remoteAccess`,"mobile-server":`config:configPage.mobileServer`},l=[{id:`sec-models`,section:`models`,card:s,titleKey:`config:configPage.models`,keywords:[`model`,`provider`,`llm`,`api`,`模型`,`供应商`,`大模型`]},{id:`sec-notifications`,section:`notifications`,card:s,titleKey:`config:configPage.notifications`,keywords:[`notification`,`push`,`alert`,`通知`,`推送`,`提醒`]},{id:`sec-interface`,section:`interface`,card:s,titleKey:`config:configPage.interface`,keywords:[`interface`,`theme`,`appearance`,`display`,`界面`,`主题`,`外观`,`显示`]},{id:`sec-shortcuts`,section:`shortcuts`,card:s,titleKey:`config:configPage.shortcuts`,keywords:[`keyboard`,`shortcut`,`hotkey`,`keybinding`,`voice`,`push to talk`,`快捷键`,`按键`,`键盘`,`语音`,`长按`]},{id:`sec-desktop-pet`,section:`desktop-pet`,card:s,titleKey:`config:configPage.desktopPet`,keywords:[`pet`,`petdex`,`宠物`,`桌宠`]},{id:`sec-updates`,section:`updates`,card:s,titleKey:`config:configPage.appUpdates`,keywords:[`update`,`upgrade`,`version`,`更新`,`升级`,`版本`]},{id:`sec-labs`,section:`labs`,card:s,titleKey:`config:configPage.labs`,keywords:[`labs`,`beta`,`experimental`,`preview`,`实验`,`测试版`,`尝鲜`,`内测`]},{id:`sec-about`,section:`about`,card:s,titleKey:`config:configPage.about`,keywords:[`about`,`info`,`license`,`关于`,`信息`,`许可`]},{id:`sec-remote-access`,section:`remote-access`,card:s,titleKey:`config:configPage.remoteAccess`,keywords:[`remote`,`network`,`phone`,`远程`,`网络`,`手机`]},{id:`sec-mobile-server`,section:`mobile-server`,card:s,titleKey:`config:configPage.mobileServer`,keywords:[`server`,`remote`,`network`,`服务器`,`远程`,`网络`]},{id:`models-current-model`,section:`models`,card:`models-current-model`,targetId:`models-connections`,titleKey:`config:configPage.currentChatModel`,keywords:[`model`,`provider`,`quick setup`,`模型`,`供应商`,`快速配置`,`对话模型`]},{id:`models-connections`,section:`models`,card:`models-connections`,titleKey:`config:configPage.manageConnections`,keywords:[`provider`,`connection`,`api key`,`import`,`连接`,`供应商`,`导入`,`密钥`]},{id:`models-runtime-policy`,section:`models`,card:`models-current-model`,targetId:`models-runtime-policy`,titleKey:`config:configPage.agentRuntimePolicy`,keywords:[`runtime`,`agent`,`policy`,`thinking`,`tools`,`运行策略`,`运行时`,`执行策略`,`思考强度`,`可用工具`]},{id:`models-fallback`,section:`models`,card:`models-current-model`,targetId:`models-runtime-policy`,titleKey:`config:providerWorkbench.fallbackModels`,keywords:[`fallback`,`backup`,`failover`,`quota`,`备用模型`,`备选`,`额度`,`切换模型`]},{id:`models-auxiliary`,section:`models`,card:`models-current-model`,targetId:`models-runtime-policy`,titleKey:`config:providerWorkbench.auxiliaryModel`,keywords:[`auxiliary`,`helper model`,`title`,`compaction`,`summary`,`辅助模型`,`标题`,`压缩`,`摘要`,`记忆`]},{id:`models-subagents`,section:`models`,card:`models-subagents`,targetId:`models-subagents`,titleKey:`config:subagents.title`,keywords:[`subagent`,`agent definition`,`tier`,`fast`,`strong`,`子代理`,`子 Agent`,`档位`,`便宜模型`,`.pisper/agents`]},{id:`models-permission-rules`,section:`models`,card:`models-permission-rules`,targetId:`models-permission-rules`,titleKey:`config:permissionRules.title`,keywords:[`permission`,`allow`,`deny`,`approval`,`rule`,`权限`,`审批`,`允许`,`禁止`,`规则`]},{id:`models-visual`,section:`models`,card:`models-visual`,targetId:`models-visual`,expandGroup:`models-advanced`,titleKey:`config:configPage.currentVisualModel`,keywords:[`image`,`video`,`visual`,`图片`,`图像`,`视频`,`视觉`,`生图`]},{id:`notifications-browser`,section:`notifications`,card:`notifications-browser`,titleKey:`config:notificationSettings.notification`,keywords:[`browser`,`system`,`push`,`浏览器通知`,`系统通知`,`推送`]},{id:`notifications-templates`,section:`notifications`,card:`notifications-templates`,titleKey:`config:notificationSettings.notificationTemplates`,keywords:[`template`,`模板`,`通知模板`]},{id:`interface-custom-ui`,section:`interface`,card:`interface-custom-ui`,titleKey:`navigation:shell.components`,sectionTitleKey:`custom-ui:moved.title`,keywords:[`custom ui`,`standalone widgets`,`component`,`native`,`manifest`,`独立组件`,`自定义组件`,`组件`]},{id:`interface-appearance`,section:`interface`,card:`interface-appearance`,titleKey:`config:interfaceSettings.appearance`,keywords:[`theme`,`dark`,`light`,`accent`,`主题`,`深色`,`浅色`,`强调色`,`外观`]},{id:`interface-style`,section:`interface`,card:`interface-style`,expandGroup:`interface-advanced`,titleKey:`config:interfaceSettings.interfaceStyle`,keywords:[`font`,`corner`,`radius`,`字体`,`字号`,`圆角`]},{id:`interface-motion`,section:`interface`,card:`interface-motion`,expandGroup:`interface-advanced`,titleKey:`config:interfaceSettings.displayAndMotion`,keywords:[`motion`,`density`,`animation`,`动效`,`动画`,`密度`,`显示`]},{id:`interface-language`,section:`interface`,card:`interface-language`,titleKey:`config:languageSettings.displayLanguage`,keywords:[`language`,`chinese`,`english`,`语言`,`中文`,`英文`,`英语`]},{id:`desktop-pet-settings`,section:`desktop-pet`,card:`desktop-pet-settings`,titleKey:`config:desktopPetSettings.title`,keywords:[`pet`,`宠物`,`桌宠`,`宠物设置`]},{id:`desktop-pet-install`,section:`desktop-pet`,card:`desktop-pet-install`,titleKey:`config:desktopPetSettings.installTitle`,keywords:[`petdex`,`install`,`宠物安装`,`添加宠物`]},{id:`desktop-pet-installed`,section:`desktop-pet`,card:`desktop-pet-installed`,titleKey:`config:desktopPetSettings.installedTitle`,keywords:[`installed`,`已安装`,`宠物列表`]},{id:`mobile-server-main`,section:`mobile-server`,card:`mobile-server-main`,titleKey:`config:mobileServer.title`,keywords:[`server`,`remote`,`服务器`,`远程`,`手机访问`]},{id:`mobile-server-local`,section:`mobile-server`,card:`mobile-server-local`,titleKey:`config:mobileServer.localTitle`,keywords:[`local`,`on-device`,`本机`,`本地运行`]},{id:`remote-workspaces`,section:`remote-access`,card:`remote-workspaces`,titleKey:`config:remoteWorkspace.title`,keywords:[`linux`,`remote workspace`,`服务器`,`远程工作区`]},{id:`remote-access-main`,section:`remote-access`,card:`remote-access-main`,titleKey:`config:remoteAccess.title`,keywords:[`remote`,`network`,`phone`,`远程`,`网络`,`手机`]},{id:`remote-access-pairing`,section:`remote-access`,card:`remote-access-pairing`,titleKey:`config:remoteAccess.pairing`,keywords:[`pairing`,`qr`,`配对`,`二维码`]},{id:`remote-access-devices`,section:`remote-access`,card:`remote-access-devices`,titleKey:`config:remoteAccess.devices`,keywords:[`device`,`paired`,`设备`,`已配对`,`授权`]},{id:`updates-main`,section:`updates`,card:`updates-main`,titleKey:`config:updateSettings.pisperAppUpdates`,keywords:[`update`,`version`,`channel`,`更新`,`版本`,`升级`,`渠道`]},{id:`updates-components`,section:`updates`,card:`updates-components`,titleKey:`config:updateSettings.appComponents`,keywords:[`component`,`runtime`,`sidecar`,`组件`,`运行时`]},{id:`updates-cli`,section:`updates`,card:`updates-cli`,titleKey:`config:cliSettings.title`,keywords:[`cli`,`terminal`,`command`,`命令行`,`终端`,`命令`]},{id:`about-project`,section:`about`,card:`about-project`,titleKey:`config:aboutSettings.projectInformation`,keywords:[`project`,`version`,`license`,`项目`,`版本`,`许可`]},{id:`about-support`,section:`about`,card:`about-support`,titleKey:`config:aboutSettings.supportPisper`,keywords:[`support`,`donate`,`sponsor`,`支持`,`捐赠`,`赞助`]}],u={provider:[`sec-models`,`models-current-model`,`models-connections`],供应商:[`sec-models`,`models-current-model`,`models-connections`],model:[`sec-models`,`models-current-model`,`models-connections`],模型:[`sec-models`,`models-current-model`,`models-connections`],theme:[`sec-interface`,`interface-appearance`],主题:[`sec-interface`,`interface-appearance`],interface:[`sec-interface`,`interface-appearance`],界面:[`sec-interface`,`interface-appearance`,`interface-language`],diy:[`interface-custom-ui`],components:[`interface-custom-ui`],widgets:[`interface-custom-ui`],组件:[`interface-custom-ui`],pet:[`sec-desktop-pet`,`desktop-pet-settings`,`desktop-pet-install`,`desktop-pet-installed`],宠物:[`sec-desktop-pet`,`desktop-pet-settings`,`desktop-pet-install`,`desktop-pet-installed`],update:[`sec-updates`,`updates-main`,`updates-components`],更新:[`sec-updates`,`updates-main`,`updates-components`],network:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],网络:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],remote:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],远程:[`sec-remote-access`,`sec-mobile-server`,`remote-access-main`],notification:[`sec-notifications`,`notifications-browser`,`notifications-templates`],通知:[`sec-notifications`,`notifications-browser`,`notifications-templates`],language:[`interface-language`],语言:[`interface-language`]},d=12;function f(e){return[n(e.titleKey,`zh-CN`).toLowerCase(),n(e.titleKey,`en-US`).toLowerCase()]}function p(e,t,{capabilities:o=a,mobileApp:s}={}){let p=e.trim().toLowerCase();if(!p)return[];let m=new Set(u[p]||[]);for(let e of p.split(/\s+/))for(let t of u[e]||[])m.add(t);let h=[];for(let e of l){if(!i(o,e.section)||e.id===`models-visual`&&!r(o,`visualGeneration`)||s!==void 0&&(e.section===`mobile-server`&&!s||e.section===`remote-access`&&s)||typeof window<`u`&&(e.id===`remote-workspaces`&&!window.pisperDesktop?.remoteWorkspaces||e.id===`remote-access-main`&&window.__PISPER_REMOTE_WORKSPACE__))continue;let[t,n]=f(e),a=0;m.has(e.id)?a=100:t===p||n===p?a=90:t.startsWith(p)||n.startsWith(p)?a=80:t.includes(p)||n.includes(p)?a=65:(e.keywords||[]).some(e=>{let t=e.toLowerCase();return t.includes(p)?p.length>=2||/[\u4e00-\u9fff]/.test(p):/[\u4e00-\u9fff]/.test(t)&&t.includes(p)})&&(a=40),a>0&&h.push({entry:e,score:a})}h.sort((e,t)=>t.score-e.score);let g=new Set,_=[];for(let{entry:e}of h){let r={entry:e,title:n(e.titleKey,t),sectionTitle:n(e.sectionTitleKey||c[e.section],t)},i=`${e.section}|${r.title}`;if(!g.has(i)&&(g.add(i),_.push(r),_.length>=d))break}return _}var m=`pisper:config-card-highlight`,h=null,g=0,_=new Set;function v(){for(let e of _)e()}function y(e){return _.add(e),()=>{_.delete(e)}}function b(e,t,n={}){h={card:e,section:t,...n,targetId:n.targetId||e,navigationKey:++g},v(),window.dispatchEvent(new Event(m))}function x(e){let t=(0,o.useSyncExternalStore)(y,()=>h,()=>null);return(0,o.useEffect)(()=>{if(!t||t.section!==e)return;let n=0,r=()=>{cancelAnimationFrame(n),n=requestAnimationFrame(()=>{if(h?.navigationKey!==t.navigationKey)return;let e=Array.from(document.querySelectorAll(`[data-config-target], [data-config-card]`)).find(e=>e.dataset.configTarget===t.targetId||e.dataset.configCard===t.targetId);if(!e||!e.getClientRects().length)return;let n=e.querySelector(`input:not([disabled]), button:not([disabled]), select:not([disabled]), [tabindex="0"]`)||e;!n.hasAttribute(`tabindex`)&&n===e&&(n.tabIndex=-1),n.focus({preventScroll:!0}),e.scrollIntoView({block:`center`}),i.disconnect(),h=null,v()})},i=new MutationObserver(r);return i.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`hidden`,`style`,`data-state`]}),r(),()=>{cancelAnimationFrame(n),i.disconnect()}},[t,e]),t?.section===e?t:null}export{x as i,b as n,p as r,s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-Cyg5th6Z.js";import{t as i}from"./x-07u4-129.js";import{a,c as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./dist-BHkR6BLP.js";import{t as p}from"./utils-C8uzG5AZ.js";import{t as m}from"./button-CCcCN8tE.js";var h=e(t(),1),g=n(),_=h.createContext(!1),v=h.createContext(null);function y({busy:e=!1,open:t,defaultOpen:n=!1,onOpenChange:r,...i}){let[a,o]=h.useState(n);return(0,g.jsx)(_.Provider,{value:e,children:(0,g.jsx)(f,{"data-slot":`dialog`,open:t??a,onOpenChange:n=>{!n&&e||(t===void 0&&o(n),r?.(n))},...i})})}function b({...e}){return(0,g.jsx)(o,{"data-slot":`dialog-trigger`,...e})}function x({...e}){return(0,g.jsx)(l,{"data-slot":`dialog-portal`,...e})}function S({...e}){return(0,g.jsx)(c,{"data-slot":`dialog-close`,...e})}function C({className:e,...t}){return(0,g.jsx)(a,{"data-slot":`dialog-overlay`,className:p(`fixed inset-0 isolate z-50 bg-[var(--overlay-scrim)] duration-[var(--duration-fast,150ms)] data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function w({className:e,overlayClassName:t,children:n,showCloseButton:a=!0,size:o=`default`,surface:s=`default`,scrollMode:l=`content`,ref:d,onEscapeKeyDown:f,onPointerDownOutside:y,onInteractOutside:b,...S}){let{t:w}=r(),T=h.useContext(_),[E,D]=h.useState(null),O=h.useCallback(e=>{if(D(e),typeof d==`function`)return d(e);d&&(d.current=e)},[d]);return(0,g.jsxs)(x,{children:[(0,g.jsx)(C,{className:t}),(0,g.jsx)(u,{...S,ref:O,"data-slot":`dialog-content`,"data-surface":s,"data-scroll-mode":l,"aria-busy":T||S[`aria-busy`]||void 0,onEscapeKeyDown:e=>{f?.(e),T&&e.preventDefault()},onPointerDownOutside:e=>{y?.(e),T&&e.preventDefault()},onInteractOutside:e=>{b?.(e),T&&e.preventDefault()},className:p(`fixed top-1/2 left-1/2 z-50 grid max-h-[calc(100vh-2rem)] supports-[height:100dvh]:max-h-[calc(100dvh-2rem)] w-full -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto overscroll-contain rounded-[var(--r-lg)] bg-popover p-4 text-sm text-popover-foreground shadow-float duration-[var(--duration-fast,150ms)] outline-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,o==="default"&&`max-w-[min(92vw,520px)]`,o===`compact`&&`max-w-[min(92vw,430px)]`,o===`wide`&&`max-w-[min(92vw,600px)]`,s===`confirmation`&&`border border-stroke`,l===`body`&&`flex flex-col overflow-hidden`,e),children:(0,g.jsxs)(v.Provider,{value:E,children:[n,a&&(0,g.jsx)(c,{"data-slot":`dialog-close`,asChild:!0,children:(0,g.jsxs)(m,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,disabled:T,children:[(0,g.jsx)(i,{}),(0,g.jsx)(`span`,{className:`sr-only`,children:w(`common:ui.closeDialog`)})]})})]})})]})}function T({className:e,...t}){return(0,g.jsx)(`div`,{"data-slot":`dialog-body`,className:p(`min-h-0 flex-1 overflow-y-auto overscroll-contain`,e),...t})}function E({className:e,...t}){return(0,g.jsx)(`div`,{"data-slot":`dialog-header`,className:p(`flex shrink-0 flex-col gap-2`,e),...t})}function D({className:e,showCloseButton:t=!1,children:n,...i}){let{t:a}=r();return(0,g.jsxs)(`div`,{"data-slot":`dialog-footer`,className:p(`-mx-4 -mb-4 flex shrink-0 flex-col-reverse gap-2 rounded-b-[var(--r-lg)] border-t border-stroke bg-surface-subtle px-4 py-3 sm:flex-row sm:justify-end`,e),...i,children:[n,t&&(0,g.jsx)(c,{asChild:!0,children:(0,g.jsx)(m,{variant:`outline`,size:`dialogAction`,children:a(`common:ui.closeDialog`)})})]})}function O({className:e,...t}){return(0,g.jsx)(d,{"data-slot":`dialog-title`,className:p(`font-heading text-[15px] leading-snug font-medium`,e),...t})}function k({className:e,...t}){return(0,g.jsx)(s,{"data-slot":`dialog-description`,className:p(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}export{k as a,v as c,w as i,O as l,T as n,D as o,S as r,E as s,y as t,b as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./index-
|
|
1
|
+
import{t as e}from"./index-DmohsuQg.js";import{t}from"./storage-8QW6lXuT.js";var n=Object.freeze([`open`,`left`,`right`,`above`,`below`]);function r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function i(e,t=`open`,r=``){return!e||!n.includes(t)?null:{sessionId:e,disposition:t,...r?{targetEntryId:r}:{}}}function a(e){if(!e)return null;try{let t=typeof e==`string`?JSON.parse(e):e;return r(t)?i(typeof t.sessionId==`string`?t.sessionId:``,typeof t.disposition==`string`?t.disposition:`open`,typeof t.targetEntryId==`string`?t.targetEntryId:``):null}catch{return null}}var o=`pisper:task-view-will-change`,s=`pisper:session-navigation-will-change`,c=`pisper:session-selected`,l=`pisper:active-session-changed`,u=`pisper:sessions-updated`,d=`pisper:command-palette-requested`,f=`pisper:session-command`,p=`pisper:session-branch-changed`,m=`pisper:new-task-focus`;function h(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.sessionId==`string`&&typeof t.entryId==`string`?{sessionId:t.sessionId,entryId:t.entryId}:null}catch{return null}}var g=``;function _(e=``){g=typeof e==`string`?e.slice(0,200):``,window.dispatchEvent(new Event(d))}function v(){let e=g;return g=``,e}function y(e){window.dispatchEvent(new CustomEvent(f,{detail:e}))}var b=!1;function x(){b=!0,window.dispatchEvent(new Event(m))}function S(){let e=b;return b=!1,e}function C(n,r=`open`,a=``){let o=i(n,r,a);o&&(window.dispatchEvent(new Event(s)),e.setItem(t.activeSession,n),localStorage.setItem(t.sessionOpenRequest,JSON.stringify(o)),a?localStorage.setItem(t.sessionMessageTarget,JSON.stringify({sessionId:n,entryId:a})):localStorage.removeItem(t.sessionMessageTarget),window.dispatchEvent(new CustomEvent(c,{detail:o})))}function w(e){let n=h(localStorage.getItem(t.sessionMessageTarget));return n?.sessionId===e?n.entryId:``}function T(e,n){let r=h(localStorage.getItem(t.sessionMessageTarget));r?.sessionId===e&&r.entryId===n&&localStorage.removeItem(t.sessionMessageTarget)}function E(){let e=a(localStorage.getItem(t.sessionOpenRequest));return localStorage.removeItem(t.sessionOpenRequest),e}function D(){let e=a(localStorage.getItem(t.sessionOpenRequest));return e?{type:`open`,sessionId:e.sessionId}:null}function O(e,t=``){window.dispatchEvent(new CustomEvent(l,{detail:{id:e||``,model:t||``}}))}function k(e){window.dispatchEvent(e?new CustomEvent(u,{detail:e}):new Event(u))}function A(e){let t=`detail`in e?e.detail:null;if(!t||typeof t!=`object`)return null;let{id:n,pinned:r,archived:i,unread:a,needsAttention:o,attentionReason:s}=t;return typeof n!=`string`||!n||typeof r!=`boolean`||typeof i!=`boolean`||typeof a!=`boolean`||typeof o!=`boolean`||s!==null&&s!==`approval`&&s!==`failure`?null:{id:n,pinned:r,archived:i,unread:a,needsAttention:o,attentionReason:s}}function j(e,t){let n=e=>{let n=A(e);n&&t(n)};return e.addEventListener(u,n),()=>e.removeEventListener(u,n)}function M(e){let t=`detail`in e?e.detail:null;if(!t||typeof t!=`object`)return null;let{id:n,name:r}=t;return typeof n==`string`&&n.length>0&&typeof r==`string`?{id:n,name:r}:null}function N(e,t){let n=e=>{let n=M(e);n&&t(n)};return e.addEventListener(u,n),()=>e.removeEventListener(u,n)}function P(e){let t=`detail`in e?e.detail:null;if(!t||typeof t!=`object`)return null;let{deletedIds:n}=t;return!Array.isArray(n)||!n.length||!n.every(e=>typeof e==`string`&&e.length>0)?null:{deletedIds:[...new Set(n)]}}function F(e,t){let n=e=>{let n=P(e);n&&t(n)};return e.addEventListener(u,n),()=>e.removeEventListener(u,n)}function I(e){e&&window.dispatchEvent(new CustomEvent(p,{detail:{sessionId:e}}))}function L(e){let t=t=>{let n=`detail`in t?t.detail:null,r=n&&typeof n==`object`?n.sessionId:null;typeof r==`string`&&r&&e(r)};return window.addEventListener(p,t),()=>window.removeEventListener(p,t)}export{N as C,j as S,x as _,s as a,L as b,O as c,T as d,S as f,_ as g,D as h,f as i,I as l,w as m,d as n,c as o,E as p,m as r,o as s,l as t,k as u,y as v,v as w,F as x,C as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./index-
|
|
1
|
+
import{t as e}from"./index-DmohsuQg.js";import{t}from"./storage-8QW6lXuT.js";import{n}from"./startup-queries-Cevfi-_Z.js";import{t as r}from"./api-m-Yq8n0q.js";import{n as i,t as a}from"./workspace-order-store-DshLVZf8.js";import{c as o,u as s}from"./events-B0F69Vd3.js";import{l as c,o as l,t as u}from"./session-workspaces-Csgpuzxd.js";import{t as d}from"./pick-system-directory-ByTVOp-v.js";function f(e){return e.cwd?`${e.label} · ${e.cwd}`:e.label}async function p(){return(await n(`sessions`,!0)).sessions}function m(n,r,i){try{let a=e.getItem(t.activeSession)||``,s=l(a,n,r,i);if(s===null)return;s?e.setItem(t.activeSession,s):e.removeItem(t.activeSession),o(s)}catch{}}async function h(e,{t,notify:n,requestConfirm:a}){let o=f(e);try{let l=await p(),d=c(l,e.key);if(!d.length)return n(t(`navigation:appSidebar.projectNoChats`,{project:o}),`info`),`empty`;if(!await a({title:t(`navigation:appSidebar.deleteProject`),message:t(`navigation:appSidebar.deleteProjectConfirm`,{project:o,count:d.length}),confirmLabel:t(`navigation:appSidebar.deleteProjectAction`)}))return`cancelled`;let f=await u(d.map(e=>e.id),e=>r(`/api/sessions/${encodeURIComponent(e)}`,{method:`DELETE`}));s(f.deletedIds.length?{deletedIds:f.deletedIds}:void 0);let h=new Set(f.deletedIds),g=null;try{g=await p()}catch{}if(m(g??l.filter(e=>!h.has(e.id)),h,g!==null),g===null)return n(t(`navigation:appSidebar.projectDeleteUnverified`,{project:o,deleted:f.deletedIds.length}),`error`),`unverified`;let _=c(g,e.key).length;return f.failedId!==null||_?(n(t(`navigation:appSidebar.projectDeletePartial`,{project:o,deleted:f.deletedIds.length,remaining:_}),`error`),`partial`):(e.cwd&&i.getState().unregisterProject(e.cwd),n(t(`navigation:appSidebar.projectDeleted`,{project:o})),`deleted`)}catch(e){return n(e instanceof Error?e.message:String(e),`error`),`failed`}}function g(e,{t,notify:n}){if(!e.cwd||e.key===`\0`)return!1;let r=i.getState().unregisterProject(e.cwd);return r&&n(t(`navigation:appSidebar.projectRemoved`,{project:f(e)})),r}function _(e,t,{t:n,notify:r}){try{return a.getState().setWorkspaceName(e.cwd,t),r(n(`navigation:appSidebar.projectNameUpdated`)),!0}catch{return r(n(`navigation:appSidebar.projectNameSaveFailed`),`error`),!1}}async function v(e,t,n,r){if(!e.cwd||e.key===`\0`)return!1;let{t:i,requestText:o}=n,s=(await o({title:i(`navigation:appSidebar.renameProject`),message:r.description,inputLabel:i(`navigation:appSidebar.projectName`),value:e.label,maxLength:120,confirmLabel:i(`chat:chatHistoryPage.save`)}))?.trim()||``;if(!s)return!1;let c=s===t?``:s;return c!==(a.getState().names[e.key]||``)&&_(e,c,n)}function y(e,t){return!e.cwd||!a.getState().names[e.key]?!1:_(e,``,t)}function b(e){return d(``,e(`common:workspacePicker.setWorkingDirectory`))}function x(e,t){return r(`/api/workspace-folders`,{method:`POST`,body:JSON.stringify({parent:e,name:t})})}function S(e){return e.includes(`\\`)&&!e.includes(`/`)?`\\`:`/`}function C(e){let t=e.trim().replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));if(n<0)return``;let r=t.slice(0,n);return r?/^[a-z]:$/i.test(r)?`${r}${t[n]}`:r:t[0]}function w(e,t){let n=e.trim();return n?/[\\/]$/.test(n)?`${n}${t}`:`${n}${S(n)}${t}`:t}export{b as a,y as c,h as i,C as n,g as o,x as r,v as s,w as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{u as t}from"./vendor-router-CSN_DGvx.js";import{t as n}from"./index-DsXdZRdL.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{o as a,r as o}from"./routes-DIeaqWVc.js";import{t as s}from"./use-i18n-BuN5i-jP.js";import{a as c,i as l,o as u}from"./vendor-state-GkUciC5H.js";import{r as d,t as f}from"./useQuery-DdcpUQhO.js";import{A as p,j as m,n as h,r as g,t as _}from"./session-scope-7eIXCeDX.js";import{t as v}from"./createLucideIcon-Cd-3GVxJ.js";import{t as y}from"./ellipsis-CfGKfbq6.js";import{t as b}from"./grip-vertical-B__LYT0s.js";import{t as x}from"./plus-fQbSqB1n.js";import{t as S}from"./rotate-ccw-C0v8V77_.js";import{t as C}from"./settings-2-CXJjXJS9.js";import{t as w}from"./x-07u4-129.js";import{c as T,d as E,f as D,i as O,p as k,r as A,t as ee,u as te}from"./dropdown-menu-CFIFNaKO.js";import{i as ne,n as re,t as j}from"./popover-DN1mndHQ.js";import{t as M}from"./utils-C8uzG5AZ.js";import{t as N}from"./button-CCcCN8tE.js";import{A as P,D as ie,E as ae,I as oe,O as se,S as F,f as ce,i as I,t as L,u as R}from"./use-studio-actions-kEfc-Vr2.js";var le=v(`arrow-right-left`,[[`path`,{d:`m16 3 4 4-4 4`,key:`1x1c3m`}],[`path`,{d:`M20 7H4`,key:`zbl0bi`}],[`path`,{d:`m8 21-4-4 4-4`,key:`h9nckh`}],[`path`,{d:`M4 17h16`,key:`g4d7ey`}]]),ue=v(`square-arrow-out-up-right`,[[`path`,{d:`M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6`,key:`y09zxi`}],[`path`,{d:`m21 3-9 9`,key:`mpx6sq`}],[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}]]),z=e(r(),1),B=e=>Math.min(1,Math.max(0,e)),V=e=>Number.isFinite(e)?Math.max(0,e):0,H=8,U=12,de=160;function fe(e,t,n=0){let r=Math.max(0,V(e.width)-V(t.width)),i=Math.max(0,V(e.height)-V(t.height)),a=Math.max(0,i-de),o=Math.max(0,a-H),s=V(t.height)+U,c=s?Math.floor(o/s)+1:1,l=Math.max(0,Math.floor(n)),u=Math.floor(l/c),d=l%c,f=r-H-u*(V(t.width)+U),p=a-d*s;return{x:r?B(f/r):1,y:i?B(p/i):1}}function pe(e,t){return`${t?`mobile`:`desktop`}:${e}`}function W(e,t,n){return{x:B(e.x)*Math.max(0,V(t.width)-V(n.width)),y:B(e.y)*Math.max(0,V(t.height)-V(n.height))}}function G(e,t,n,r){let i=W(e,n,r),a=Math.max(0,V(n.width)-V(r.width)),o=Math.max(0,V(n.height)-V(r.height));return{x:B(a?(i.x+t.x)/a:e.x),y:B(o?(i.y+t.y)/o:e.y)}}function K(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function q(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)!K(n)||typeof n.key!=`string`||!/^(desktop|mobile):[a-zA-Z0-9][a-zA-Z0-9._:-]{0,95}$/.test(n.key)||!K(n.position)||typeof n.position.x!=`number`||!Number.isFinite(n.position.x)||typeof n.position.y!=`number`||!Number.isFinite(n.position.y)||(t.delete(n.key),t.set(n.key,{x:B(n.position.x),y:B(n.position.y)}),t.size>128&&t.delete(t.keys().next().value??``));return[...t].map(([e,t])=>({key:e,position:t}))}function me(e,t,n){return q([...e.filter(e=>e.key!==t),{key:t,position:n}])}var he=l(()=>({getItem:e=>{try{return n.getItem(e)}catch{return null}},setItem:(e,t)=>{try{n.setItem(e,t)}catch{}},removeItem:e=>{try{n.removeItem(e)}catch{}}})),J=u()(c(e=>({positions:[],setPosition:(t,n)=>e(e=>({positions:me(e.positions,t,n)})),resetPosition:t=>e(e=>({positions:e.positions.filter(e=>e.key!==t)}))}),{name:`pisper-floating-placement`,version:1,storage:he,partialize:({positions:e})=>({positions:e}),merge:(e,t)=>({...t,positions:q(e&&typeof e==`object`&&`positions`in e?e.positions:void 0)})})),Y=i(),X={width:0,height:0},ge=/^(?:desktop|mobile):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Z=`flex items-center justify-center rounded-full bg-key text-content-muted shadow-key ring-1 ring-key-border hover:text-content`;function _e(e){let t=e.component.manifest,n=t&&se(t,`floating`)?.size||ae;return{width:n.w,height:n.h}}function ve({placed:e,boundaryRef:t,activeSessionId:n,notify:r,onClose:i,stackIndex:a}){let{t:o}=s(),{instance:c,component:l}=e,u=R(l,r),d=pe(c.instanceId,!1),f=J(e=>e.positions.find(e=>e.key===d)?.position),p=(0,z.useRef)(null),m=(0,z.useRef)(null),[h,g]=(0,z.useState)(null),[_,v]=(0,z.useState)({bounds:X,widget:X}),y=f??fe(_.bounds,_.widget,a),x=(0,z.useId)(),C=_e(e),T=c.title||l.manifest?.name||l.name;(0,z.useEffect)(()=>{let e=t.current,n=p.current;if(!e||!n)return;let r=()=>{let t={bounds:{width:e.clientWidth,height:e.clientHeight},widget:{width:n.offsetWidth,height:n.offsetHeight}};v(e=>e.bounds.width===t.bounds.width&&e.bounds.height===t.bounds.height&&e.widget.width===t.widget.width&&e.widget.height===t.widget.height?e:t)},i=new ResizeObserver(()=>r());return r(),i.observe(e),i.observe(n),window.addEventListener(`resize`,r),()=>{i.disconnect(),window.removeEventListener(`resize`,r)}},[t]),(0,z.useEffect)(()=>(g(null),()=>{let e=m.current;m.current=null,e?.element.hasPointerCapture(e.pointerId)&&e.element.releasePointerCapture(e.pointerId)}),[d]);let E=(e,t)=>{let n=m.current;!n||n.pointerId!==e.pointerId||(m.current=null,t&&J.getState().setPosition(d,n.latest),g(null),n.element.hasPointerCapture(n.pointerId)&&n.element.releasePointerCapture(n.pointerId))},D=()=>J.getState().resetPosition(d),O=e=>{let t=e.shiftKey?32:12,n={ArrowLeft:{x:-t,y:0},ArrowRight:{x:t,y:0},ArrowUp:{x:0,y:-t},ArrowDown:{x:0,y:t}};if(e.key===`Home`){e.preventDefault(),D();return}let r=n[e.key];r&&(e.preventDefault(),J.getState().setPosition(d,G(y,r,_.bounds,_.widget)))},k=W(h??y,_.bounds,_.widget);return(0,Y.jsxs)(`div`,{ref:p,role:`group`,"aria-label":T,"data-floating-widget":c.instanceId,"data-floating-component":l.id,className:`pointer-events-auto absolute flex max-w-full flex-col px-6`,style:{left:k.x,top:k.y,width:C.width+48,maxHeight:`100%`,visibility:_.bounds.width>0?`visible`:`hidden`},children:[(0,Y.jsxs)(`div`,{className:`absolute top-1/2 left-0 z-10 flex -translate-y-1/2 flex-col items-center gap-1`,children:[(0,Y.jsx)(`button`,{type:`button`,"aria-label":o(`custom-ui:floating.move`),"aria-describedby":x,title:o(`custom-ui:floating.moveHint`),className:M(Z,`h-6 w-5 touch-none`),style:{cursor:h?`grabbing`:`grab`},"data-floating-move":!0,onKeyDown:O,onPointerDown:e=>{e.button!==0||m.current||(e.preventDefault(),e.currentTarget.focus({preventScroll:!0}),e.currentTarget.setPointerCapture(e.pointerId),m.current={pointerId:e.pointerId,element:e.currentTarget,x:e.clientX,y:e.clientY,initial:y,latest:y},g(y))},onPointerMove:e=>{let t=m.current;if(!t||t.pointerId!==e.pointerId)return;let n=G(t.initial,{x:e.clientX-t.x,y:e.clientY-t.y},_.bounds,_.widget);t.latest=n,g(n)},onPointerUp:e=>E(e,!0),onPointerCancel:e=>E(e,!1),onLostPointerCapture:e=>E(e,!1),children:(0,Y.jsx)(b,{className:`size-3`})}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":o(`custom-ui:floating.resetPosition`),title:o(`custom-ui:floating.resetPosition`),onClick:D,className:M(Z,`size-5`),children:(0,Y.jsx)(S,{className:`size-3`})}),(0,Y.jsx)(`span`,{id:x,className:`sr-only`,children:o(`custom-ui:floating.moveHint`)})]}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":o(`custom-ui:floating.close`),title:o(`custom-ui:floating.close`),"data-floating-close":!0,onClick:()=>i(c.instanceId),className:M(Z,`absolute top-1/2 right-0 z-10 size-5 -translate-y-1/2`),children:(0,Y.jsx)(w,{className:`size-3`})}),(0,Y.jsx)(`div`,{className:`flex min-h-0 flex-col overflow-hidden rounded-md border border-stroke bg-panel shadow-key`,style:{height:C.height},children:(0,Y.jsx)(P,{component:l,instance:{instanceId:c.instanceId,surface:`floating`,title:c.title,props:c.props},session:n?{id:n,title:``,cwd:``,status:`idle`}:void 0,notify:r,onRequestFix:u,className:`h-full`})})]})}function ye({placed:e,activeSessionId:t,notify:n,hidden:r=!1}){let{t:i}=s(),a=d(),o=(0,z.useRef)(null);(0,z.useEffect)(()=>{let e=J.getState();for(let t of e.positions)ge.test(t.key)||e.resetPosition(t.key)},[]);let c=e=>{p(e,{enabled:!1}).then(()=>a.invalidateQueries({queryKey:m.instances()}),()=>n(i(`custom-ui:floating.closeFailed`)))};return(0,Y.jsx)(`div`,{ref:o,className:`pointer-events-none fixed inset-x-2 top-12 bottom-2 z-40 overflow-hidden`,hidden:r,"data-floating-custom-ui":!0,children:e.map((e,r)=>(0,Y.jsx)(ve,{placed:e,boundaryRef:o,activeSessionId:t,notify:n,onClose:c,stackIndex:r},e.instance.instanceId))})}var be=[`session-panel`,`feature-page`,`floating`];function xe(e,t){let{instance:n,component:r}=e;return n.title||r.manifest?.i18n[t]?.name||r.name}function Q({placed:e,label:n,instances:r,notify:i}){let{t:o}=s(),c=t(),l=L(i),[u,d]=(0,z.useState)(!1),{instance:f,component:p}=e,m=async e=>{if(!u){d(!0);try{if(!await l.place(p,r,{surface:e,...f.title?{title:f.title}:{},props:f.props}))return;await l.unplace(f)&&i(o(`custom-ui:overview.moved`,{place:I(e,o)}))}finally{d(!1)}}};return(0,Y.jsxs)(ee,{children:[(0,Y.jsx)(k,{asChild:!0,children:(0,Y.jsx)(N,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`flex-none`,disabled:u,"aria-label":o(`custom-ui:overview.menu`,{name:n}),title:o(`custom-ui:overview.menu`,{name:n}),"data-overview-component-menu":!0,children:(0,Y.jsx)(y,{"aria-hidden":`true`})})}),(0,Y.jsxs)(A,{align:`end`,className:`w-52`,children:[(0,Y.jsxs)(O,{onSelect:()=>c(a(p.id),{state:{componentInstanceId:f.instanceId}}),children:[(0,Y.jsx)(C,{"aria-hidden":`true`}),o(`custom-ui:overview.settings`)]}),(0,Y.jsxs)(O,{onSelect:()=>c(a(p.id)),children:[(0,Y.jsx)(ue,{"aria-hidden":`true`}),o(`custom-ui:tool.openInStudio`)]}),(0,Y.jsxs)(te,{children:[(0,Y.jsxs)(D,{"data-overview-component-move":!0,children:[(0,Y.jsx)(le,{"aria-hidden":`true`}),o(`custom-ui:overview.move`)]}),(0,Y.jsx)(E,{className:`w-48`,children:be.map(e=>{let t=F(p.manifest,e),n=r.some(t=>t.componentId===p.id&&t.surface===e&&t.enabled);return(0,Y.jsxs)(O,{disabled:!t||n,"data-overview-component-move-to":e,onSelect:()=>void m(e),children:[I(e,o),(0,Y.jsx)(`span`,{className:`ml-auto text-xs text-content-muted`,children:t?n?o(`custom-ui:studio.placed`):``:o(`custom-ui:studio.placeUndeclaredShort`)})]},e)})})]}),(0,Y.jsx)(T,{}),(0,Y.jsxs)(O,{"data-overview-component-remove":!0,onSelect:()=>{l.unplace(f).then(e=>{e&&i(o(`custom-ui:overview.removed`,{name:n}))})},children:[(0,Y.jsx)(w,{"aria-hidden":`true`}),o(`custom-ui:overview.remove`)]})]})]})}function Se({placed:e,instances:t,activeSessionId:n,notify:r,onOpenSession:i}){let{t:a,language:o}=s(),{instance:c,component:l}=e,u=c.size===`M`?`M`:`S`,d=xe(e,o),f=R(l,r);return(0,Y.jsxs)(`article`,{"aria-label":d,"data-overview-component":c.instanceId,"data-overview-component-id":l.id,"data-overview-component-size":u,className:`flex-none overflow-hidden rounded-[var(--r-lg)] bg-panel ring-1 ring-stroke`,children:[(0,Y.jsxs)(`header`,{className:`flex h-9 items-center gap-2 border-b border-stroke-soft pr-1 pl-3 pointer-coarse:h-12`,children:[(0,Y.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-[13px] leading-5 font-medium text-content`,children:d}),(0,Y.jsx)(`span`,{className:`flex-none rounded-xs border border-stroke px-1.5 text-[11px] leading-4 text-content-muted`,children:a(`custom-ui:overview.badge`)}),(0,Y.jsx)(Q,{placed:e,label:d,instances:t,notify:r})]}),(0,Y.jsx)(`div`,{"data-overview-component-body":!0,className:`overflow-hidden`,style:{height:ie[u].h},children:(0,Y.jsx)(P,{component:l,instance:{instanceId:c.instanceId,surface:`overview-card`,title:c.title,props:c.props,size:u},session:n?{id:n,title:``,cwd:``,status:`idle`}:void 0,notify:r,onOpenSession:i,onRequestFix:f,className:`h-full`})})]})}function $({className:e}){let{t:n}=s(),r=t();return(0,Y.jsxs)(`button`,{type:`button`,"data-overview-component-place":!0,onClick:()=>r(o.components),className:M(`flex h-9 w-full flex-none items-center justify-center gap-1.5 rounded-[var(--r-lg)] border border-dashed border-stroke-strong text-[12.5px] text-content-muted transition-colors duration-(--d-fast) hover:bg-surface-hover hover:text-content focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus pointer-coarse:h-11`,e),children:[(0,Y.jsx)(x,{className:`size-3.5`,"aria-hidden":`true`}),n(`custom-ui:overview.place`)]})}function Ce({placed:e,layout:t,activeSessionId:n,notify:r,onOpenSession:i}){let{t:a}=s(),o=f(g()).data?.instances??[],c=e.map(e=>(0,Y.jsx)(Se,{placed:e,instances:o,activeSessionId:n,notify:r,onOpenSession:i},e.instance.instanceId));return t===`popover`?(0,Y.jsxs)(j,{children:[(0,Y.jsx)(ne,{asChild:!0,children:(0,Y.jsx)(N,{variant:`outline`,"data-overview-components-trigger":!0,children:a(`custom-ui:overview.trigger`,{count:e.length})})}),(0,Y.jsxs)(re,{align:`end`,"aria-label":a(`custom-ui:overview.heading`),"data-overview-components":`popover`,className:`max-h-(--radix-popover-content-available-height) w-[344px] gap-3 overflow-y-auto p-3`,children:[c,(0,Y.jsx)($,{})]})]}):(0,Y.jsxs)(`div`,{"data-overview-components":t,className:M(`flex flex-col gap-3`,t===`phone`&&`mt-6`),children:[(0,Y.jsx)(`h2`,{className:`text-[13px] leading-5 font-medium text-content-secondary`,children:a(`custom-ui:overview.heading`)}),c,(0,Y.jsx)($,{})]})}function we({placed:e,sessionId:t,cwd:n,notify:r,onOpenSession:i}){let a=oe().find(e=>e.id===t),o=a?.title??``,s=a?.status??`idle`,c=(0,z.useMemo)(()=>({id:t,title:o,cwd:a?.cwd||n,status:s}),[n,t,s,a?.cwd,o]),{instance:l,component:u}=e,d=R(u,r);return(0,Y.jsx)(`div`,{"data-session-panel-component":l.instanceId,className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:(0,Y.jsx)(P,{component:u,instance:{instanceId:l.instanceId,surface:`session-panel`,title:l.title,props:l.props},session:c,notify:r,onOpenSession:i,onRequestFix:d,className:`h-full`},t)})}function Te(e,t){return e.manifest?.i18n[t]?.name||e.name}function Ee({cwd:e,notify:t,onAdded:n}){let{t:r,language:i}=s(),a=f(h()),o=f(g()),c=L(t),[l,u]=(0,z.useState)(null),d=o.data?.instances??[],p=(a.data?.components??[]).filter(e=>ce(e)&&F(e.manifest,`session-panel`)),m=async(e,t)=>{if(!l){u(e.id);try{let r=await c.place(e,d,{surface:`session-panel`,scope:t});r&&n(r.instance.instanceId)}finally{u(null)}}};return a.isPending||o.isPending?(0,Y.jsx)(`p`,{role:`status`,className:`text-content-muted`,children:r(`custom-ui:customUiPage.loading`)}):a.error||o.error?(0,Y.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[(0,Y.jsx)(`p`,{role:`alert`,className:`text-content-secondary`,children:r(`custom-ui:widget.catalogFailed`)}),(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`secondary`,onClick:()=>{a.refetch(),o.refetch()},children:r(`custom-ui:widget.retry`)})]}):p.length?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,"data-session-component-add-menu":!0,children:[(0,Y.jsx)(`p`,{className:`text-content-secondary`,children:r(`custom-ui:sessionPanel.addHint`)}),(0,Y.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:p.map(t=>{let a=Te(t,i),o=d.find(e=>e.componentId===t.id&&e.surface===`session-panel`),s=!!(o?.enabled&&_(o.scope,e));return(0,Y.jsxs)(`li`,{"data-session-component-candidate":t.id,className:`flex flex-col gap-1.5 rounded-sm px-1.5 py-1.5`,children:[(0,Y.jsx)(`span`,{className:`truncate text-[13px] font-medium text-content`,children:a}),s&&o?(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`ghost`,className:`self-start`,onClick:()=>n(o.instanceId),children:r(`custom-ui:studio.placed`)}):(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`secondary`,disabled:l!==null,"data-session-component-scope":`all`,onClick:()=>void m(t,{type:`all`}),children:r(`custom-ui:studio.scopeAll`)}),(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`secondary`,disabled:l!==null||!e,"data-session-component-scope":`project`,onClick:()=>void m(t,{type:`project`,cwd:e}),children:r(`custom-ui:sessionPanel.thisProject`)})]})]},t.id)})})]}):(0,Y.jsx)(`p`,{className:`text-content-secondary`,children:r(`custom-ui:sessionPanel.empty`)})}export{P as ComponentHost,ye as FloatingComponents,Ce as OverviewComponents,Ee as SessionComponentAddMenu,we as SessionPanelComponent};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{u as t}from"./vendor-router-CSN_DGvx.js";import{t as n}from"./index-DmohsuQg.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{o as a,r as o}from"./routes-DIeaqWVc.js";import{t as s}from"./use-i18n-Cyg5th6Z.js";import{a as c,i as l,o as u}from"./vendor-state-GkUciC5H.js";import{r as d,t as f}from"./useQuery-DdcpUQhO.js";import{A as p,j as m,n as h,r as g,t as _}from"./session-scope-Bz6CeMq0.js";import{t as v}from"./createLucideIcon-Cd-3GVxJ.js";import{t as y}from"./ellipsis-CfGKfbq6.js";import{t as b}from"./grip-vertical-B__LYT0s.js";import{t as x}from"./plus-fQbSqB1n.js";import{t as S}from"./rotate-ccw-C0v8V77_.js";import{t as C}from"./settings-2-CXJjXJS9.js";import{t as w}from"./x-07u4-129.js";import{c as T,d as E,f as D,i as O,p as k,r as A,t as ee,u as te}from"./dropdown-menu-CFIFNaKO.js";import{i as ne,n as re,t as j}from"./popover-DUWwlhPy.js";import{t as M}from"./utils-C8uzG5AZ.js";import{t as N}from"./button-CCcCN8tE.js";import{A as P,D as ie,E as ae,I as oe,O as se,S as F,f as ce,i as I,t as L,u as R}from"./use-studio-actions-CGzcb2Fx.js";var le=v(`arrow-right-left`,[[`path`,{d:`m16 3 4 4-4 4`,key:`1x1c3m`}],[`path`,{d:`M20 7H4`,key:`zbl0bi`}],[`path`,{d:`m8 21-4-4 4-4`,key:`h9nckh`}],[`path`,{d:`M4 17h16`,key:`g4d7ey`}]]),ue=v(`square-arrow-out-up-right`,[[`path`,{d:`M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6`,key:`y09zxi`}],[`path`,{d:`m21 3-9 9`,key:`mpx6sq`}],[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}]]),z=e(r(),1),B=e=>Math.min(1,Math.max(0,e)),V=e=>Number.isFinite(e)?Math.max(0,e):0,H=8,U=12,de=160;function fe(e,t,n=0){let r=Math.max(0,V(e.width)-V(t.width)),i=Math.max(0,V(e.height)-V(t.height)),a=Math.max(0,i-de),o=Math.max(0,a-H),s=V(t.height)+U,c=s?Math.floor(o/s)+1:1,l=Math.max(0,Math.floor(n)),u=Math.floor(l/c),d=l%c,f=r-H-u*(V(t.width)+U),p=a-d*s;return{x:r?B(f/r):1,y:i?B(p/i):1}}function pe(e,t){return`${t?`mobile`:`desktop`}:${e}`}function W(e,t,n){return{x:B(e.x)*Math.max(0,V(t.width)-V(n.width)),y:B(e.y)*Math.max(0,V(t.height)-V(n.height))}}function G(e,t,n,r){let i=W(e,n,r),a=Math.max(0,V(n.width)-V(r.width)),o=Math.max(0,V(n.height)-V(r.height));return{x:B(a?(i.x+t.x)/a:e.x),y:B(o?(i.y+t.y)/o:e.y)}}function K(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function q(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e)!K(n)||typeof n.key!=`string`||!/^(desktop|mobile):[a-zA-Z0-9][a-zA-Z0-9._:-]{0,95}$/.test(n.key)||!K(n.position)||typeof n.position.x!=`number`||!Number.isFinite(n.position.x)||typeof n.position.y!=`number`||!Number.isFinite(n.position.y)||(t.delete(n.key),t.set(n.key,{x:B(n.position.x),y:B(n.position.y)}),t.size>128&&t.delete(t.keys().next().value??``));return[...t].map(([e,t])=>({key:e,position:t}))}function me(e,t,n){return q([...e.filter(e=>e.key!==t),{key:t,position:n}])}var he=l(()=>({getItem:e=>{try{return n.getItem(e)}catch{return null}},setItem:(e,t)=>{try{n.setItem(e,t)}catch{}},removeItem:e=>{try{n.removeItem(e)}catch{}}})),J=u()(c(e=>({positions:[],setPosition:(t,n)=>e(e=>({positions:me(e.positions,t,n)})),resetPosition:t=>e(e=>({positions:e.positions.filter(e=>e.key!==t)}))}),{name:`pisper-floating-placement`,version:1,storage:he,partialize:({positions:e})=>({positions:e}),merge:(e,t)=>({...t,positions:q(e&&typeof e==`object`&&`positions`in e?e.positions:void 0)})})),Y=i(),X={width:0,height:0},ge=/^(?:desktop|mobile):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Z=`flex items-center justify-center rounded-full bg-key text-content-muted shadow-key ring-1 ring-key-border hover:text-content`;function _e(e){let t=e.component.manifest,n=t&&se(t,`floating`)?.size||ae;return{width:n.w,height:n.h}}function ve({placed:e,boundaryRef:t,activeSessionId:n,notify:r,onClose:i,stackIndex:a}){let{t:o}=s(),{instance:c,component:l}=e,u=R(l,r),d=pe(c.instanceId,!1),f=J(e=>e.positions.find(e=>e.key===d)?.position),p=(0,z.useRef)(null),m=(0,z.useRef)(null),[h,g]=(0,z.useState)(null),[_,v]=(0,z.useState)({bounds:X,widget:X}),y=f??fe(_.bounds,_.widget,a),x=(0,z.useId)(),C=_e(e),T=c.title||l.manifest?.name||l.name;(0,z.useEffect)(()=>{let e=t.current,n=p.current;if(!e||!n)return;let r=()=>{let t={bounds:{width:e.clientWidth,height:e.clientHeight},widget:{width:n.offsetWidth,height:n.offsetHeight}};v(e=>e.bounds.width===t.bounds.width&&e.bounds.height===t.bounds.height&&e.widget.width===t.widget.width&&e.widget.height===t.widget.height?e:t)},i=new ResizeObserver(()=>r());return r(),i.observe(e),i.observe(n),window.addEventListener(`resize`,r),()=>{i.disconnect(),window.removeEventListener(`resize`,r)}},[t]),(0,z.useEffect)(()=>(g(null),()=>{let e=m.current;m.current=null,e?.element.hasPointerCapture(e.pointerId)&&e.element.releasePointerCapture(e.pointerId)}),[d]);let E=(e,t)=>{let n=m.current;!n||n.pointerId!==e.pointerId||(m.current=null,t&&J.getState().setPosition(d,n.latest),g(null),n.element.hasPointerCapture(n.pointerId)&&n.element.releasePointerCapture(n.pointerId))},D=()=>J.getState().resetPosition(d),O=e=>{let t=e.shiftKey?32:12,n={ArrowLeft:{x:-t,y:0},ArrowRight:{x:t,y:0},ArrowUp:{x:0,y:-t},ArrowDown:{x:0,y:t}};if(e.key===`Home`){e.preventDefault(),D();return}let r=n[e.key];r&&(e.preventDefault(),J.getState().setPosition(d,G(y,r,_.bounds,_.widget)))},k=W(h??y,_.bounds,_.widget);return(0,Y.jsxs)(`div`,{ref:p,role:`group`,"aria-label":T,"data-floating-widget":c.instanceId,"data-floating-component":l.id,className:`pointer-events-auto absolute flex max-w-full flex-col px-6`,style:{left:k.x,top:k.y,width:C.width+48,maxHeight:`100%`,visibility:_.bounds.width>0?`visible`:`hidden`},children:[(0,Y.jsxs)(`div`,{className:`absolute top-1/2 left-0 z-10 flex -translate-y-1/2 flex-col items-center gap-1`,children:[(0,Y.jsx)(`button`,{type:`button`,"aria-label":o(`custom-ui:floating.move`),"aria-describedby":x,title:o(`custom-ui:floating.moveHint`),className:M(Z,`h-6 w-5 touch-none`),style:{cursor:h?`grabbing`:`grab`},"data-floating-move":!0,onKeyDown:O,onPointerDown:e=>{e.button!==0||m.current||(e.preventDefault(),e.currentTarget.focus({preventScroll:!0}),e.currentTarget.setPointerCapture(e.pointerId),m.current={pointerId:e.pointerId,element:e.currentTarget,x:e.clientX,y:e.clientY,initial:y,latest:y},g(y))},onPointerMove:e=>{let t=m.current;if(!t||t.pointerId!==e.pointerId)return;let n=G(t.initial,{x:e.clientX-t.x,y:e.clientY-t.y},_.bounds,_.widget);t.latest=n,g(n)},onPointerUp:e=>E(e,!0),onPointerCancel:e=>E(e,!1),onLostPointerCapture:e=>E(e,!1),children:(0,Y.jsx)(b,{className:`size-3`})}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":o(`custom-ui:floating.resetPosition`),title:o(`custom-ui:floating.resetPosition`),onClick:D,className:M(Z,`size-5`),children:(0,Y.jsx)(S,{className:`size-3`})}),(0,Y.jsx)(`span`,{id:x,className:`sr-only`,children:o(`custom-ui:floating.moveHint`)})]}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":o(`custom-ui:floating.close`),title:o(`custom-ui:floating.close`),"data-floating-close":!0,onClick:()=>i(c.instanceId),className:M(Z,`absolute top-1/2 right-0 z-10 size-5 -translate-y-1/2`),children:(0,Y.jsx)(w,{className:`size-3`})}),(0,Y.jsx)(`div`,{className:`flex min-h-0 flex-col overflow-hidden rounded-md border border-stroke bg-panel shadow-key`,style:{height:C.height},children:(0,Y.jsx)(P,{component:l,instance:{instanceId:c.instanceId,surface:`floating`,title:c.title,props:c.props},session:n?{id:n,title:``,cwd:``,status:`idle`}:void 0,notify:r,onRequestFix:u,className:`h-full`})})]})}function ye({placed:e,activeSessionId:t,notify:n,hidden:r=!1}){let{t:i}=s(),a=d(),o=(0,z.useRef)(null);(0,z.useEffect)(()=>{let e=J.getState();for(let t of e.positions)ge.test(t.key)||e.resetPosition(t.key)},[]);let c=e=>{p(e,{enabled:!1}).then(()=>a.invalidateQueries({queryKey:m.instances()}),()=>n(i(`custom-ui:floating.closeFailed`)))};return(0,Y.jsx)(`div`,{ref:o,className:`pointer-events-none fixed inset-x-2 top-12 bottom-2 z-40 overflow-hidden`,hidden:r,"data-floating-custom-ui":!0,children:e.map((e,r)=>(0,Y.jsx)(ve,{placed:e,boundaryRef:o,activeSessionId:t,notify:n,onClose:c,stackIndex:r},e.instance.instanceId))})}var be=[`session-panel`,`feature-page`,`floating`];function xe(e,t){let{instance:n,component:r}=e;return n.title||r.manifest?.i18n[t]?.name||r.name}function Q({placed:e,label:n,instances:r,notify:i}){let{t:o}=s(),c=t(),l=L(i),[u,d]=(0,z.useState)(!1),{instance:f,component:p}=e,m=async e=>{if(!u){d(!0);try{if(!await l.place(p,r,{surface:e,...f.title?{title:f.title}:{},props:f.props}))return;await l.unplace(f)&&i(o(`custom-ui:overview.moved`,{place:I(e,o)}))}finally{d(!1)}}};return(0,Y.jsxs)(ee,{children:[(0,Y.jsx)(k,{asChild:!0,children:(0,Y.jsx)(N,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`flex-none`,disabled:u,"aria-label":o(`custom-ui:overview.menu`,{name:n}),title:o(`custom-ui:overview.menu`,{name:n}),"data-overview-component-menu":!0,children:(0,Y.jsx)(y,{"aria-hidden":`true`})})}),(0,Y.jsxs)(A,{align:`end`,className:`w-52`,children:[(0,Y.jsxs)(O,{onSelect:()=>c(a(p.id),{state:{componentInstanceId:f.instanceId}}),children:[(0,Y.jsx)(C,{"aria-hidden":`true`}),o(`custom-ui:overview.settings`)]}),(0,Y.jsxs)(O,{onSelect:()=>c(a(p.id)),children:[(0,Y.jsx)(ue,{"aria-hidden":`true`}),o(`custom-ui:tool.openInStudio`)]}),(0,Y.jsxs)(te,{children:[(0,Y.jsxs)(D,{"data-overview-component-move":!0,children:[(0,Y.jsx)(le,{"aria-hidden":`true`}),o(`custom-ui:overview.move`)]}),(0,Y.jsx)(E,{className:`w-48`,children:be.map(e=>{let t=F(p.manifest,e),n=r.some(t=>t.componentId===p.id&&t.surface===e&&t.enabled);return(0,Y.jsxs)(O,{disabled:!t||n,"data-overview-component-move-to":e,onSelect:()=>void m(e),children:[I(e,o),(0,Y.jsx)(`span`,{className:`ml-auto text-xs text-content-muted`,children:t?n?o(`custom-ui:studio.placed`):``:o(`custom-ui:studio.placeUndeclaredShort`)})]},e)})})]}),(0,Y.jsx)(T,{}),(0,Y.jsxs)(O,{"data-overview-component-remove":!0,onSelect:()=>{l.unplace(f).then(e=>{e&&i(o(`custom-ui:overview.removed`,{name:n}))})},children:[(0,Y.jsx)(w,{"aria-hidden":`true`}),o(`custom-ui:overview.remove`)]})]})]})}function Se({placed:e,instances:t,activeSessionId:n,notify:r,onOpenSession:i}){let{t:a,language:o}=s(),{instance:c,component:l}=e,u=c.size===`M`?`M`:`S`,d=xe(e,o),f=R(l,r);return(0,Y.jsxs)(`article`,{"aria-label":d,"data-overview-component":c.instanceId,"data-overview-component-id":l.id,"data-overview-component-size":u,className:`flex-none overflow-hidden rounded-[var(--r-lg)] bg-panel ring-1 ring-stroke`,children:[(0,Y.jsxs)(`header`,{className:`flex h-9 items-center gap-2 border-b border-stroke-soft pr-1 pl-3 pointer-coarse:h-12`,children:[(0,Y.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-[13px] leading-5 font-medium text-content`,children:d}),(0,Y.jsx)(`span`,{className:`flex-none rounded-xs border border-stroke px-1.5 text-[11px] leading-4 text-content-muted`,children:a(`custom-ui:overview.badge`)}),(0,Y.jsx)(Q,{placed:e,label:d,instances:t,notify:r})]}),(0,Y.jsx)(`div`,{"data-overview-component-body":!0,className:`overflow-hidden`,style:{height:ie[u].h},children:(0,Y.jsx)(P,{component:l,instance:{instanceId:c.instanceId,surface:`overview-card`,title:c.title,props:c.props,size:u},session:n?{id:n,title:``,cwd:``,status:`idle`}:void 0,notify:r,onOpenSession:i,onRequestFix:f,className:`h-full`})})]})}function $({className:e}){let{t:n}=s(),r=t();return(0,Y.jsxs)(`button`,{type:`button`,"data-overview-component-place":!0,onClick:()=>r(o.components),className:M(`flex h-9 w-full flex-none items-center justify-center gap-1.5 rounded-[var(--r-lg)] border border-dashed border-stroke-strong text-[12.5px] text-content-muted transition-colors duration-(--d-fast) hover:bg-surface-hover hover:text-content focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus pointer-coarse:h-11`,e),children:[(0,Y.jsx)(x,{className:`size-3.5`,"aria-hidden":`true`}),n(`custom-ui:overview.place`)]})}function Ce({placed:e,layout:t,activeSessionId:n,notify:r,onOpenSession:i}){let{t:a}=s(),o=f(g()).data?.instances??[],c=e.map(e=>(0,Y.jsx)(Se,{placed:e,instances:o,activeSessionId:n,notify:r,onOpenSession:i},e.instance.instanceId));return t===`popover`?(0,Y.jsxs)(j,{children:[(0,Y.jsx)(ne,{asChild:!0,children:(0,Y.jsx)(N,{variant:`outline`,"data-overview-components-trigger":!0,children:a(`custom-ui:overview.trigger`,{count:e.length})})}),(0,Y.jsxs)(re,{align:`end`,"aria-label":a(`custom-ui:overview.heading`),"data-overview-components":`popover`,className:`max-h-(--radix-popover-content-available-height) w-[344px] gap-3 overflow-y-auto p-3`,children:[c,(0,Y.jsx)($,{})]})]}):(0,Y.jsxs)(`div`,{"data-overview-components":t,className:M(`flex flex-col gap-3`,t===`phone`&&`mt-6`),children:[(0,Y.jsx)(`h2`,{className:`text-[13px] leading-5 font-medium text-content-secondary`,children:a(`custom-ui:overview.heading`)}),c,(0,Y.jsx)($,{})]})}function we({placed:e,sessionId:t,cwd:n,notify:r,onOpenSession:i}){let a=oe().find(e=>e.id===t),o=a?.title??``,s=a?.status??`idle`,c=(0,z.useMemo)(()=>({id:t,title:o,cwd:a?.cwd||n,status:s}),[n,t,s,a?.cwd,o]),{instance:l,component:u}=e,d=R(u,r);return(0,Y.jsx)(`div`,{"data-session-panel-component":l.instanceId,className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:(0,Y.jsx)(P,{component:u,instance:{instanceId:l.instanceId,surface:`session-panel`,title:l.title,props:l.props},session:c,notify:r,onOpenSession:i,onRequestFix:d,className:`h-full`},t)})}function Te(e,t){return e.manifest?.i18n[t]?.name||e.name}function Ee({cwd:e,notify:t,onAdded:n}){let{t:r,language:i}=s(),a=f(h()),o=f(g()),c=L(t),[l,u]=(0,z.useState)(null),d=o.data?.instances??[],p=(a.data?.components??[]).filter(e=>ce(e)&&F(e.manifest,`session-panel`)),m=async(e,t)=>{if(!l){u(e.id);try{let r=await c.place(e,d,{surface:`session-panel`,scope:t});r&&n(r.instance.instanceId)}finally{u(null)}}};return a.isPending||o.isPending?(0,Y.jsx)(`p`,{role:`status`,className:`text-content-muted`,children:r(`custom-ui:customUiPage.loading`)}):a.error||o.error?(0,Y.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[(0,Y.jsx)(`p`,{role:`alert`,className:`text-content-secondary`,children:r(`custom-ui:widget.catalogFailed`)}),(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`secondary`,onClick:()=>{a.refetch(),o.refetch()},children:r(`custom-ui:widget.retry`)})]}):p.length?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,"data-session-component-add-menu":!0,children:[(0,Y.jsx)(`p`,{className:`text-content-secondary`,children:r(`custom-ui:sessionPanel.addHint`)}),(0,Y.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:p.map(t=>{let a=Te(t,i),o=d.find(e=>e.componentId===t.id&&e.surface===`session-panel`),s=!!(o?.enabled&&_(o.scope,e));return(0,Y.jsxs)(`li`,{"data-session-component-candidate":t.id,className:`flex flex-col gap-1.5 rounded-sm px-1.5 py-1.5`,children:[(0,Y.jsx)(`span`,{className:`truncate text-[13px] font-medium text-content`,children:a}),s&&o?(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`ghost`,className:`self-start`,onClick:()=>n(o.instanceId),children:r(`custom-ui:studio.placed`)}):(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`secondary`,disabled:l!==null,"data-session-component-scope":`all`,onClick:()=>void m(t,{type:`all`}),children:r(`custom-ui:studio.scopeAll`)}),(0,Y.jsx)(N,{type:`button`,size:`sm`,variant:`secondary`,disabled:l!==null||!e,"data-session-component-scope":`project`,onClick:()=>void m(t,{type:`project`,cwd:e}),children:r(`custom-ui:sessionPanel.thisProject`)})]})]},t.id)})})]}):(0,Y.jsx)(`p`,{className:`text-content-secondary`,children:r(`custom-ui:sessionPanel.empty`)})}export{P as ComponentHost,ye as FloatingComponents,Ce as OverviewComponents,Ee as SessionComponentAddMenu,we as SessionPanelComponent};
|