pisper 0.6.6 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/package.json +7 -7
  2. package/web/.vite/manifest.json +481 -336
  3. package/web/assets/AppDialog-DuxuKq-0.js +1 -0
  4. package/web/assets/{AppOverlays-C_WrmeqC.js → AppOverlays-YPxRUvLN.js} +1 -1
  5. package/web/assets/{AppSelect-DNIjPL7I.js → AppSelect-DEmkrcvY.js} +1 -1
  6. package/web/assets/{AppShortcuts-V38tUYTp.js → AppShortcuts-CA7hbebL.js} +1 -1
  7. package/web/assets/{AssetsPage-BmSnyLZ5.js → AssetsPage-CkNI_8qz.js} +1 -1
  8. package/web/assets/{ChannelsPage-Da3JaYaC.js → ChannelsPage-BYfRQyV0.js} +1 -1
  9. package/web/assets/ChatAppearancePage-N_2bunil.js +2 -0
  10. package/web/assets/{ChatDockView-5Aptiph6.js → ChatDockView-B4nZfbx5.js} +1 -1
  11. package/web/assets/ChatHistoryPage-Di3epmcR.js +1 -0
  12. package/web/assets/ChatPage-IN5m7Fqh.js +4 -0
  13. package/web/assets/ConfigPage-BKTEOlQE.js +1 -0
  14. package/web/assets/{DecisionsPage-BwJ7RTAE.js → DecisionsPage-DNAUZCij.js} +1 -1
  15. package/web/assets/{DesktopWindowControls-CLVd8sg6.js → DesktopWindowControls-BAnWUUAZ.js} +1 -1
  16. package/web/assets/{FileAttachmentPreview-C6QaQFwb.js → FileAttachmentPreview-x4AORCVt.js} +1 -1
  17. package/web/assets/{FloatingWidgets-QMhElaDR.js → FloatingWidgets-CdbBMke7.js} +1 -1
  18. package/web/assets/GitDiffViewer-oJDF7l74.js +2 -0
  19. package/web/assets/{ListDetailLayout-S-IBs4f_.js → ListDetailLayout-Ctr6r0OI.js} +1 -1
  20. package/web/assets/{MarkdownMessage-bfyuGoi1.js → MarkdownMessage-D9zxSf6j.js} +1 -1
  21. package/web/assets/McpPage-DaOkWcq6.js +1 -0
  22. package/web/assets/{MemoryPage-CC37SohP.js → MemoryPage-B5sqhaYW.js} +1 -1
  23. package/web/assets/MobileContextScreen-DiM-lGec.js +2 -0
  24. package/web/assets/MobileNavigation-DZx6cE9f.js +1 -0
  25. package/web/assets/MobileShellContext-Cvv0RcjA.js +1 -0
  26. package/web/assets/MobileViewportStabilizer-BAI_nmS_.js +1 -0
  27. package/web/assets/{PageHeader-75eh-Z_A.js → PageHeader-FBipSHuW.js} +1 -1
  28. package/web/assets/{PluginsPage-za6FNr_k.js → PluginsPage-BFLnVcnm.js} +1 -1
  29. package/web/assets/{QuickPromptIdeas-CEjBwWlM.js → QuickPromptIdeas-CVcEEpAl.js} +1 -1
  30. package/web/assets/{SchedulesPage-BR1oIqzi.js → SchedulesPage-CVnoI4wZ.js} +1 -1
  31. package/web/assets/SessionContextPanel-CEmCvPx4.js +2 -0
  32. package/web/assets/SessionFilesPane-CAdkivkE.js +2 -0
  33. package/web/assets/{SidebarUpdateStatus-Chfb-00K.js → SidebarUpdateStatus-Co3QAKmb.js} +1 -1
  34. package/web/assets/{SkillsPage-DfFjecBO.js → SkillsPage-d8t6_KDS.js} +1 -1
  35. package/web/assets/{TaskProcessesPane-DJszMYjM.js → TaskProcessesPane-PRgpCplN.js} +1 -1
  36. package/web/assets/{TaskTerminalView-DyTURB64.js → TaskTerminalView-Dt8gIY5E.js} +1 -1
  37. package/web/assets/{TerminalPanel-BFqST5ja.js → TerminalPanel-BRib2LP-.js} +1 -1
  38. package/web/assets/{ThemeToggleButton-DmYU4_Nh.js → ThemeToggleButton-C1lL__80.js} +1 -1
  39. package/web/assets/{WebDesktopPet-COIAEeuY.js → WebDesktopPet-BWpgoZI3.js} +1 -1
  40. package/web/assets/WorkbenchNavigation-DmNiD2FD.js +1 -0
  41. package/web/assets/{WorkflowsPage-Heg3iqQg.js → WorkflowsPage-aRy0lYQ1.js} +1 -1
  42. package/web/assets/{WorkspacePicker-DFCZ_IJu.js → WorkspacePicker-NkoVoqez.js} +1 -1
  43. package/web/assets/{api-D8wGrWiI.js → api-CiEo53J1.js} +1 -1
  44. package/web/assets/app-update-CLhMRrNS.js +32 -0
  45. package/web/assets/calendar-clock-VIxTaqqy.js +1 -0
  46. package/web/assets/catalog-DLWnYiJc.js +1 -0
  47. package/web/assets/chat-api-CbgoP-8X.js +1 -0
  48. package/web/assets/{client-store-lT3geTlX.js → client-store-DCqgdbAp.js} +1 -1
  49. package/web/assets/{component-api-kxyOYPJN.js → component-api-BboiUuyG.js} +1 -1
  50. package/web/assets/{config-search-BThCMhnj.js → config-search-Cwglajsz.js} +1 -1
  51. package/web/assets/events-f8vVvSfH.js +1 -0
  52. package/web/assets/{floating-widgets-store-BhuWgVRT.js → floating-widgets-store-BAfPpV4Z.js} +2 -2
  53. package/web/assets/git-diff-f-zMaQOk.js +3 -0
  54. package/web/assets/{http-rQRvhTOP.js → http-Dx387MGl.js} +1 -1
  55. package/web/assets/i18n-CblgkPOp.js +1 -0
  56. package/web/assets/{index-BVIvzUyZ.js → index-BAYzSwUr.js} +2 -2
  57. package/web/assets/index-Bcpvpefn.css +2 -0
  58. package/web/assets/monitor-ORxecA9m.js +1 -0
  59. package/web/assets/mount-app-DGgK0IVe.js +9 -0
  60. package/web/assets/mutation-CEbxdVYy.js +1 -0
  61. package/web/assets/panels-top-left-K8n2CefH.js +1 -0
  62. package/web/assets/project-diff-summary-BzAMC_7C.js +1 -0
  63. package/web/assets/public-Cv_Xe2Sp.js +1 -0
  64. package/web/assets/{public-components-CS0BXa3D.js → public-components-Dfm4D7vP.js} +1 -1
  65. package/web/assets/public-navigation-zJPpUiuy.js +2 -0
  66. package/web/assets/query-Bj-DUNYq.js +1 -0
  67. package/web/assets/radio-tower-jGQwrFWB.js +1 -0
  68. package/web/assets/{runtime-capabilities-store-D5g-oC-Z.js → runtime-capabilities-store-C1lkVKpw.js} +1 -1
  69. package/web/assets/scale-pAyho3H9.js +1 -0
  70. package/web/assets/{session-change-summary-api-4_dTNU4L.js → session-change-summary-api-CqJa3Wdh.js} +1 -1
  71. package/web/assets/{session-organization-api-1F_dNhFa.js → session-organization-api-B0E2RXLS.js} +1 -1
  72. package/web/assets/session-streaming-state-DUehpyTs.js +3 -0
  73. package/web/assets/settings-navigation-BhTYSdv9.js +1 -0
  74. package/web/assets/{shortcuts-CAyIKRpZ.js → shortcuts-ChJr3RP4.js} +1 -1
  75. package/web/assets/{sidebar-CjfGBEog.js → sidebar-CERcJRog.js} +1 -1
  76. package/web/assets/{speech-session-BoAvAzPN.js → speech-session-BPNbd_CM.js} +1 -1
  77. package/web/assets/startup-queries-uKXB2KOP.js +1 -0
  78. package/web/assets/{ui-store-D-oOtKbW.js → ui-store-BM6pl-Rq.js} +1 -1
  79. package/web/assets/use-back-layer-B4dm_FZt.js +1 -0
  80. package/web/assets/{use-i18n-Dpn7lxcE.js → use-i18n-BrWBoyFl.js} +1 -1
  81. package/web/assets/use-mobile-PCHaokZZ.js +1 -0
  82. package/web/assets/{useCustomUiComponents-DzY3OjE_.js → useCustomUiComponents-IxX7wKrp.js} +1 -1
  83. package/web/assets/useQuery-DdcpUQhO.js +1 -0
  84. package/web/assets/web-preview-D1qOo-1X.js +1 -0
  85. package/web/assets/{web-preview-events-BS5O8D7_.js → web-preview-events-BMXsxTa3.js} +1 -1
  86. package/web/assets/web-preview-panel-B7JAZr2D.js +552 -0
  87. package/web/index.html +2 -2
  88. package/web/assets/ChatAppearancePage-Cjy9iir_.js +0 -2
  89. package/web/assets/ChatHistoryPage-BhXVvudL.js +0 -1
  90. package/web/assets/ChatPage-CzcvU3Tv.js +0 -4
  91. package/web/assets/ConfigPage-F1Y_oed5.js +0 -1
  92. package/web/assets/GitDiffViewer-Dv9WOiX1.js +0 -4
  93. package/web/assets/McpPage-CaUm1pYY.js +0 -1
  94. package/web/assets/MobileViewportStabilizer-OtwVmIPm.js +0 -1
  95. package/web/assets/SessionContextPanel-nvijY4R5.js +0 -2
  96. package/web/assets/WorkbenchNavigation-BBZRfeaC.js +0 -1
  97. package/web/assets/app-update-BHhqGwQp.js +0 -32
  98. package/web/assets/back-navigation-DS0YlxM8.js +0 -1
  99. package/web/assets/catalog-DpGpcvIi.js +0 -1
  100. package/web/assets/chat-api-CYidanXn.js +0 -1
  101. package/web/assets/events-By17Y3YI.js +0 -1
  102. package/web/assets/i18n-CAJMli-q.js +0 -1
  103. package/web/assets/index-Z8qQPd8t.css +0 -2
  104. package/web/assets/mount-app-Sl2T_gzZ.js +0 -9
  105. package/web/assets/mutation-Difliohy.js +0 -1
  106. package/web/assets/public-DAsd8NDM.js +0 -1
  107. package/web/assets/public-navigation-BzM_ocRb.js +0 -2
  108. package/web/assets/radio-tower-BW78Ns4R.js +0 -1
  109. package/web/assets/session-streaming-state-CX6zkOkc.js +0 -3
  110. package/web/assets/startup-queries-DItwFTRv.js +0 -1
  111. package/web/assets/use-back-layer-Cxm0-40v.js +0 -1
  112. package/web/assets/use-mobile-YXncArOq.js +0 -1
  113. package/web/assets/useQuery-Bg3cTjsY.js +0 -1
  114. package/web/assets/web-preview-C3u-dblt.js +0 -1
  115. package/web/assets/web-preview-panel-CHiIjAoR.js +0 -552
@@ -1,2 +1,2 @@
1
- import{a as e,n as t,o as n}from"./http-rQRvhTOP.js";async function r(e,n={}){return t(e,n)}async function i(t,n){if(!t.ok)throw await e(t);if(!t.body)throw Error(`响应不包含可读取的数据流`);let r=t.body.getReader(),i=new TextDecoder,a=``,o=`message`,s=null,c=[],l=!1,u=()=>{if(!c.length)return o=`message`,!0;let e=JSON.parse(c.join(`
1
+ import{a as e,n as t,o as n}from"./http-Dx387MGl.js";async function r(e,n={}){return t(e,n)}async function i(t,n){if(!t.ok)throw await e(t);if(!t.body)throw Error(`响应不包含可读取的数据流`);let r=t.body.getReader(),i=new TextDecoder,a=``,o=`message`,s=null,c=[],l=!1,u=()=>{if(!c.length)return o=`message`,!0;let e=JSON.parse(c.join(`
2
2
  `)),t=n(o||`message`,e,{id:s})!==!1;return o=`message`,s=null,c=[],t},d=e=>{if(!e)return u();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(c.length&&!u())return!1;o=r}else n===`data`?c.push(r):n===`id`&&(s=r||null);return!0},f=(e=!1)=>{let t=0;for(let n=0;n<a.length;n+=1){let r=a.charCodeAt(n);if(r!==10&&r!==13)continue;if(r===13&&n+1>=a.length&&!e)break;let i=a.slice(t,n);if(r===13&&a.charCodeAt(n+1)===10&&(n+=1),t=n+1,!d(i))return a=a.slice(t),!1}if(a=a.slice(t),e&&a){let e=a;if(a=``,!d(e))return!1}return!e||u()};try{for(;!l;){let{value:e,done:t}=await r.read();if(a+=i.decode(e||new Uint8Array,{stream:!t}),!f(t)){l=!0;break}if(t)break}}catch(e){throw l=!0,e}finally{l&&await r.cancel().catch(()=>{}),r.releaseLock()}}var a=5,o=400,s=`SSE 流在终态事件前结束`;async function c({open:e,resume:t,onEvent:r,maxAttempts:c=a,baseDelayMs:l=o}){let u=``,d=0,f=!1,p=null,m=async e=>{await i(e,(e,t,n)=>{if(n.id!=null){let e=Number(n.id);Number.isFinite(e)&&e>d&&(d=e)}let i=t;e===`run`&&typeof i?.runId==`string`&&(u=i.runId);try{let n=r(e,t);return(e===`done`||e===`error`||n===!1)&&(f=!0),n}catch(e){throw p=e,e}})},h=null;try{await m(await e())}catch(e){if(p)throw p;h=e}if(p)throw p;if(f)return;if(!u)throw h??Error(`流在建立运行前中断`);let g=0;for(;;){if(g+=1,g>c)throw h??Error(`流式连接中断且重挂失败`);await new Promise(e=>setTimeout(e,l*2**(g-1)));let e=d;try{if(await m(await t(u,d)),p)throw p;if(!f)throw Error(s);return}catch(t){if(p)throw p;if(t instanceof n&&t.status===409)throw t;h=t,d>e&&(g=0)}}}function l(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{c as i,l as n,i as r,r as t};
@@ -0,0 +1,32 @@
1
+ function e(e){let t=String(e||``).trim().replace(/^#/,``);return/^[0-9a-fA-F]{6}$/.test(t)?`#${t.toLowerCase()}`:null}function t(e){return{r:parseInt(e.slice(1,3),16),g:parseInt(e.slice(3,5),16),b:parseInt(e.slice(5,7),16)}}function n({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 r(e,t,r){return n({r:e.r+(t.r-e.r)*r,g:e.g+(t.g-e.g)*r,b:e.b+(t.b-e.b)*r})}var i={r:255,g:255,b:255},a={r:24,g:24,b:27};function o({r:e,g:t,b:n},r){return`rgba(${e}, ${t}, ${n}, ${r})`}function s(e){let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4}function c({r:e,g:t,b:n}){return .2126*s(e)+.7152*s(t)+.0722*s(n)}function l(e,t){let n=c(e),r=c(t),i=Math.max(n,r),a=Math.min(n,r);return(i+.05)/(a+.05)}function u(e){return l(e,i)>=4.5?`#ffffff`:l(e,a)>=4.5?`#18181b`:`#000000`}function d(e,n,o){let s=t(n);return r(e,l(s,i)>l(s,a)?i:a,o)}function f(e){for(let n=.22;n<=1;n+=.04){let o=r(e,a,n);if(l(t(o),i)>=4.5)return o}return`#18181b`}function p(e){for(let n=.46;n<=1;n+=.04){let o=r(e,i,n);if(l(t(o),a)>=4.5)return o}return`#fff`}function m(e){let n=t(e),a=u(n),s=d(n,a,.12),c=f(n),l=r(n,i,.93),m=r(n,i,.72),h=r(n,i,.22),g=p(n),_=t(h),v=u(_),y=d(_,v,.14);return`:root[data-accent='custom'] {
2
+ --star: ${e};
3
+ --star-hover: ${s};
4
+ --star-strong: ${c};
5
+ --star-soft: ${l};
6
+ --star-border: ${m};
7
+ --on-accent: ${a};
8
+ --brand-blue: ${e};
9
+ --brand-blue-hover: ${s};
10
+ --brand-blue-strong: ${c};
11
+ --brand-blue-soft: ${l};
12
+ --brand-blue-border: ${m};
13
+ --accent-ring: ${o(n,.16)};
14
+ --focus: ${c};
15
+ --focus-ring: ${o(n,.18)};
16
+ }
17
+ :root[data-theme='dark'][data-accent='custom'] {
18
+ --star: ${h};
19
+ --star-hover: ${y};
20
+ --star-strong: ${g};
21
+ --star-soft: ${o(_,.15)};
22
+ --star-border: ${o(_,.38)};
23
+ --on-accent: ${v};
24
+ --brand-blue: ${h};
25
+ --brand-blue-hover: ${y};
26
+ --brand-blue-strong: ${g};
27
+ --brand-blue-soft: ${o(_,.15)};
28
+ --brand-blue-border: ${o(_,.34)};
29
+ --accent-ring: ${o(_,.22)};
30
+ --focus: ${g};
31
+ --focus-ring: ${o(_,.26)};
32
+ }`}function h(){return window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke}function g(){return typeof window<`u`&&!!h()}function _(e,t){let n=h();return n?n(e,t):Promise.reject(Error(`Tauri IPC is unavailable.`))}async function v(){return _(`plugin:notification|is_permission_granted`)}async function y(){return _(`plugin:notification|request_permission`)}async function b(e,t){return _(`plugin:notification|notify`,{options:{title:e,body:t}})}var x=`https://github.com/ling-kong-ran/pisper/releases`,S=`release`;export{b as a,e as c,v as i,x as n,y as o,g as r,m as s,S as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-Cd-3GVxJ.js";var t=e(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`path`,{d:`M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338`,key:`7hb8p4`}],[`path`,{d:`M3 9h5.859`,key:`numkqi`}],[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]);export{t};
@@ -0,0 +1 @@
1
+ import"./floating-widgets-store-BAfPpV4Z.js";import{i as e}from"./useCustomUiComponents-IxX7wKrp.js";export{e as listCustomUiComponents};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-B0Z9INg1.js";import{n as t,r as n}from"./http-Dx387MGl.js";import{i as r}from"./api-CiEo53J1.js";import{r as i,t as a}from"./startup-queries-uKXB2KOP.js";var o=e({chatApi:()=>l}),s=e=>`/api/sessions/${encodeURIComponent(e)}`;async function c(e,n={}){let r=await t(e,n);return n.method&&n.method!==`GET`&&(/^\/api\/sessions(?:$|\/[^/]+(?:\/(?:derive|model|cwd|execution-mode|run-mode|thinking-level|goal|tree\/navigate))?$)/.test(e)&&i(`sessions`),e===`/api/settings/compaction`&&i(`config`)),r}var l={listSessions:({refresh:e=!0}={})=>a(`sessions`,e),searchSessionTreeLabels:(e,t=20)=>c(`/api/session-labels?${new URLSearchParams({query:e,limit:String(t)})}`),listSessionTreeLabels:(e=500)=>c(`/api/session-labels?limit=${e}`),createSession:(e,t=``)=>c(`/api/sessions`,{method:`POST`,data:{name:e,...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}),setSessionTreeLabel:(e,t,n)=>c(`${s(e)}/tree/labels/${encodeURIComponent(t)}`,{method:`PUT`,data:{label:n}}),getSessionCommands:e=>c(`${s(e)}/commands`),getConfig:({refresh:e=!1}={})=>a(`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)=>{await r({open:async()=>(await n(),fetch(`/api/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})),resume:async(e,t)=>(await n(),fetch(`/api/runs/${encodeURIComponent(e)}/events?after=${t}`)),onEvent:t})},retryLastTurn:async(e,t)=>{await r({open:async()=>(await n(),fetch(`${s(e)}/retry`,{method:`POST`})),resume:async(e,t)=>(await n(),fetch(`/api/runs/${encodeURIComponent(e)}/events?after=${t}`)),onEvent:t})},queueInput:(e,t,n,r)=>c(`${s(e)}/input`,{method:`POST`,data:{message:t,attachments:n,behavior:r}}),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}}),updateCwd:(e,t)=>c(`${s(e)}/cwd`,{method:`PUT`,data:{cwd:t}}),renameSession:(e,t)=>c(s(e),{method:`PATCH`,data:{name:t}})};export{o as n,l as t};
@@ -1 +1 @@
1
- import{o as e}from"./vendor-state-GkUciC5H.js";import{t}from"./api-D8wGrWiI.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
+ import{o as e}from"./vendor-state-GkUciC5H.js";import{t}from"./api-CiEo53J1.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{i as e,n as t,t as n}from"./http-rQRvhTOP.js";import{i as r,n as i,o as a,r as o,t as s}from"./sprite-engine-catalog-D1HQWa1X.js";function c(e=`workflow_image_invalid_edits`){return Object.assign(Error(e),{code:e,statusCode:400})}function l(e){if(!e||typeof e!=`object`||Array.isArray(e))throw c();return e}function u(e,t,n,r){if(e===void 0)return t;if(typeof e!=`number`||!Number.isFinite(e)||e<n||e>r)throw c();return e}function d(e){let t=l(e);if(!Array.isArray(t.frames)||t.frames.length<1||t.frames.length>512)throw c();let n=0;return{frames:t.frames.map(e=>{let t=l(e);if(!Number.isSafeInteger(t.sourceIndex)||typeof t.sourceIndex!=`number`||t.sourceIndex<0||t.sourceIndex>511)throw c();let r=t.eraseStrokes===void 0?[]:t.eraseStrokes;if(!Array.isArray(r)||r.length>64)throw c();let i=u(t.durationMs,125,16,1e4);if(!Number.isSafeInteger(i))throw c();return{sourceIndex:t.sourceIndex,x:u(t.x,0,-4096,4096),y:u(t.y,0,-4096,4096),rotation:u(t.rotation,0,-360,360),scale:u(t.scale,1,.05,8),opacity:u(t.opacity,1,0,1),durationMs:i,eraseStrokes:r.map(e=>{let t=l(e);if(!Array.isArray(t.points)||t.points.length<1||t.points.length>512||t.restore!==void 0&&typeof t.restore!=`boolean`)throw c();if(n+=t.points.length,n>2e4)throw c(`workflow_image_too_large`);let r=u(t.radius,NaN,.001,.25);if(!Number.isFinite(r))throw c();return{radius:r,restore:t.restore===!0,points:t.points.map(e=>{let t=l(e),n=u(t.x,NaN,0,1),r=u(t.y,NaN,0,1);if(!Number.isFinite(n)||!Number.isFinite(r))throw c();return{x:n,y:r}})}})}})}}var f=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,p=[`id`,`name`,`prompt`,`reference`,`originalReference`,`frameCount`,`directions`,`model`,`actions`],m=[`running`,`completed`,`failed`,`cancelled`,`interrupted`],h=class extends Error{constructor(e,t=400){super(e),this.code=e,this.statusCode=t}};function g(){throw new h(`game_assets_invalid`)}function _(e,t){return!e||typeof e!=`object`||Array.isArray(e)||Object.keys(e).some(e=>!t.includes(e))?g():e}function v(e,t,n=!1){return typeof e!=`string`||e.length>t||n&&!e.trim()?g():e.trim()}function y(e){return typeof e!=`string`||!f.test(e)?g():e}function b(e){return typeof e!=`string`||!Number.isFinite(Date.parse(e))||new Date(e).toISOString()!==e?g():e}function x(e,t,n){return typeof e!=`number`||!Number.isSafeInteger(e)||e<t||e>n?g():e}function S(e){if(e==null)return null;try{let t=a(e);return t.mimeType.startsWith(`image/`)?t:g()}catch{return g()}}function C(e){let t=_(e,p),n=t.directions??[...i],r=t.actions??[];if(!Array.isArray(n)||!n.length||n.length>8||n.some(e=>!i.some(t=>t===e))||new Set(n).size!==n.length||!Array.isArray(r)||r.length>8)return g();let a=x(t.frameCount===void 0?4:t.frameCount,1,16),o=r.map(e=>{let t=_(e,[`id`,`name`,`prompt`,`enabled`]);return typeof t.id!=`string`||!/^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$/.test(t.id)||typeof t.enabled!=`boolean`?g():{id:t.id,name:v(t.name,100,!0),prompt:v(t.prompt??``,2e3),enabled:t.enabled}});if(new Set(o.map(e=>e.id)).size!==o.length||o.filter(e=>e.enabled).length*n.length*a>512)return g();let s=null;if(t.model!==null&&t.model!==void 0){let e=_(t.model,[`provider`,`model`]);s={provider:v(e.provider,200,!0),model:v(e.model,300,!0)}}return{...t.id===void 0?{}:{id:y(t.id)},name:v(t.name,100,!0),prompt:v(t.prompt??``,8e3),reference:S(t.reference),originalReference:S(t.originalReference),frameCount:a,directions:[...n],model:s,actions:o}}function w(e){let{createdAt:t,updatedAt:n,...r}=_(e,[...p,`createdAt`,`updatedAt`]);return{...C(r),id:y(r.id),createdAt:b(t),updatedAt:b(n)}}function T(e){let t=_(e,[`id`,`projectId`,`status`,`startedAt`,`finishedAt`,`completed`,`total`,`error`,`output`,`originalOutput`,`edits`,`revision`]);if(typeof t.status!=`string`||!m.includes(t.status)||t.error!==null&&(typeof t.error!=`string`||!/^(?:game_assets|workflow_image|workflow_media|sprite_engine)_[a-z_]{1,60}$/.test(t.error)))return g();let n=x(t.total,1,8),i=x(t.completed,0,n);if(t.status===`running`!=(t.finishedAt===null)||t.status===`completed`&&i!==n)return g();let a,o,s;try{if(a=r(t.output),o=r(t.originalOutput),t.edits!==void 0&&(s=d(t.edits),s.frames.some(e=>e.sourceIndex>=o.frames.length)||s.frames.length!==a.frames.length))return g()}catch{return g()}return{id:y(t.id),projectId:y(t.projectId),status:t.status,startedAt:b(t.startedAt),finishedAt:t.finishedAt===null?null:b(t.finishedAt),completed:i,total:n,error:t.error,output:a,originalOutput:o,revision:x(t.revision,0,2**53-1),...s?{edits:s}:{}}}function E(e){let t=_(e,[`projects`,`jobs`]);if(!Array.isArray(t.projects)||t.projects.length>100||!Array.isArray(t.jobs)||t.jobs.length>100)return g();let n=t.projects.map(w),r=t.jobs.map(T);return new Set(n.map(e=>e.id)).size!==n.length||new Set(r.map(e=>e.id)).size!==r.length||r.some(e=>!n.some(t=>t.id===e.projectId))?g():{projects:n,jobs:r}}function D(t){if(!t||typeof t!=`object`||Array.isArray(t))throw e();return t}function O(t){if(typeof t!=`string`||!/^[0-9a-f-]{36}$/i.test(t))throw e();return encodeURIComponent(t)}function k(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),window.setTimeout(()=>URL.revokeObjectURL(n),1e3)}function A(t){let n=D(t),r=E({projects:n.projects,jobs:n.jobs});if(!Array.isArray(n.models)||n.models.length>1e3)throw e();let i=n.models.map(t=>{let n=D(t);if(typeof n.id!=`string`||typeof n.name!=`string`||typeof n.providerId!=`string`||typeof n.providerName!=`string`||!n.id.startsWith(n.providerId+`/`))throw e();return{id:n.id,name:n.name,providerId:n.providerId,providerName:n.providerName}});return{...r,models:i,engines:s({engines:n.engines}).engines}}var j=e=>`/api/game-assets/media/${O(e)}/content`;async function M(r,i,c){if(c.throwIfAborted(),r===`gameAssets.list`)return t(`/api/game-assets`,{signal:c,parse:A});if(r===`gameAssets.save`){let e=C(i);return t(e.id?`/api/game-assets/projects/${O(e.id)}`:`/api/game-assets/projects`,{method:e.id?`PATCH`:`POST`,data:e,signal:c,parse:w})}if(r===`gameAssets.remove`)return t(`/api/game-assets/projects/${O(i.id)}`,{method:`DELETE`,signal:c});if(r===`gameAssets.run`||r===`gameAssets.stop`){let e=r===`gameAssets.run`?`/api/game-assets/projects/${O(i.id)}/run`:`/api/game-assets/jobs/${O(i.jobId)}/stop`;return t(e,{method:`POST`,data:{},signal:c,parse:e=>({job:T(D(e).job)})})}if(r===`gameAssets.editFrames`)return t(`/api/game-assets/jobs/${O(i.jobId)}/frames`,{method:`POST`,data:d(i.edits),signal:c,timeout:12e4,parse:T});if(r===`gameAssets.export`){let r=await t(`/api/game-assets/jobs/${O(i.jobId)}`,{signal:c,parse:T});if(!r.output.atlas)throw e();if(i.format===`png`){let e=await n(j(r.output.atlas.media.id),{signal:c});c.throwIfAborted(),k(e,`game-assets.png`)}else if(i.format===`json`)k(new Blob([JSON.stringify(r.output.atlas,null,2)],{type:`application/json`}),`game-assets.json`);else throw e();return null}if(r===`gameAssets.uploadImage`){if(!(i.buffer instanceof ArrayBuffer)||!i.buffer.byteLength||i.buffer.byteLength>8388608||![`image/png`,`image/jpeg`,`image/webp`].includes(String(i.mimeType))||typeof i.name!=`string`||i.name.length>200)throw e();return t(`/api/game-assets/media?name=${encodeURIComponent(i.name)}`,{method:`POST`,data:new Blob([i.buffer],{type:String(i.mimeType)}),signal:c,parse:a})}if(r===`gameAssets.image`){let t=await n(j(i.id),{signal:c});if(t.size>8388608||![`image/png`,`image/jpeg`,`image/webp`].includes(t.type))throw e();return{buffer:await t.arrayBuffer(),mimeType:t.type}}if(r===`gameAssets.process`){if(![`background`,`inpaint`].includes(String(i.operation)))throw e();return t(`/api/game-assets/process`,{method:`POST`,signal:c,timeout:12e4,data:{reference:a(i.reference),operation:i.operation,image:o(i.image)},parse:a})}if(r===`gameAssets.engine`){if(i.id!==`background`&&i.id!==`inpaint`||i.action!==`download`&&i.action!==`cancel`)throw e();return t(`/api/game-assets/engines/${i.id}/${i.action}`,{method:`POST`,data:{},signal:c,parse:s})}throw e()}export{M as handleGameAssetComponentRequest};
1
+ import{i as e,n as t,t as n}from"./http-Dx387MGl.js";import{i as r,n as i,o as a,r as o,t as s}from"./sprite-engine-catalog-D1HQWa1X.js";function c(e=`workflow_image_invalid_edits`){return Object.assign(Error(e),{code:e,statusCode:400})}function l(e){if(!e||typeof e!=`object`||Array.isArray(e))throw c();return e}function u(e,t,n,r){if(e===void 0)return t;if(typeof e!=`number`||!Number.isFinite(e)||e<n||e>r)throw c();return e}function d(e){let t=l(e);if(!Array.isArray(t.frames)||t.frames.length<1||t.frames.length>512)throw c();let n=0;return{frames:t.frames.map(e=>{let t=l(e);if(!Number.isSafeInteger(t.sourceIndex)||typeof t.sourceIndex!=`number`||t.sourceIndex<0||t.sourceIndex>511)throw c();let r=t.eraseStrokes===void 0?[]:t.eraseStrokes;if(!Array.isArray(r)||r.length>64)throw c();let i=u(t.durationMs,125,16,1e4);if(!Number.isSafeInteger(i))throw c();return{sourceIndex:t.sourceIndex,x:u(t.x,0,-4096,4096),y:u(t.y,0,-4096,4096),rotation:u(t.rotation,0,-360,360),scale:u(t.scale,1,.05,8),opacity:u(t.opacity,1,0,1),durationMs:i,eraseStrokes:r.map(e=>{let t=l(e);if(!Array.isArray(t.points)||t.points.length<1||t.points.length>512||t.restore!==void 0&&typeof t.restore!=`boolean`)throw c();if(n+=t.points.length,n>2e4)throw c(`workflow_image_too_large`);let r=u(t.radius,NaN,.001,.25);if(!Number.isFinite(r))throw c();return{radius:r,restore:t.restore===!0,points:t.points.map(e=>{let t=l(e),n=u(t.x,NaN,0,1),r=u(t.y,NaN,0,1);if(!Number.isFinite(n)||!Number.isFinite(r))throw c();return{x:n,y:r}})}})}})}}var f=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,p=[`id`,`name`,`prompt`,`reference`,`originalReference`,`frameCount`,`directions`,`model`,`actions`],m=[`running`,`completed`,`failed`,`cancelled`,`interrupted`],h=class extends Error{constructor(e,t=400){super(e),this.code=e,this.statusCode=t}};function g(){throw new h(`game_assets_invalid`)}function _(e,t){return!e||typeof e!=`object`||Array.isArray(e)||Object.keys(e).some(e=>!t.includes(e))?g():e}function v(e,t,n=!1){return typeof e!=`string`||e.length>t||n&&!e.trim()?g():e.trim()}function y(e){return typeof e!=`string`||!f.test(e)?g():e}function b(e){return typeof e!=`string`||!Number.isFinite(Date.parse(e))||new Date(e).toISOString()!==e?g():e}function x(e,t,n){return typeof e!=`number`||!Number.isSafeInteger(e)||e<t||e>n?g():e}function S(e){if(e==null)return null;try{let t=a(e);return t.mimeType.startsWith(`image/`)?t:g()}catch{return g()}}function C(e){let t=_(e,p),n=t.directions??[...i],r=t.actions??[];if(!Array.isArray(n)||!n.length||n.length>8||n.some(e=>!i.some(t=>t===e))||new Set(n).size!==n.length||!Array.isArray(r)||r.length>8)return g();let a=x(t.frameCount===void 0?4:t.frameCount,1,16),o=r.map(e=>{let t=_(e,[`id`,`name`,`prompt`,`enabled`]);return typeof t.id!=`string`||!/^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$/.test(t.id)||typeof t.enabled!=`boolean`?g():{id:t.id,name:v(t.name,100,!0),prompt:v(t.prompt??``,2e3),enabled:t.enabled}});if(new Set(o.map(e=>e.id)).size!==o.length||o.filter(e=>e.enabled).length*n.length*a>512)return g();let s=null;if(t.model!==null&&t.model!==void 0){let e=_(t.model,[`provider`,`model`]);s={provider:v(e.provider,200,!0),model:v(e.model,300,!0)}}return{...t.id===void 0?{}:{id:y(t.id)},name:v(t.name,100,!0),prompt:v(t.prompt??``,8e3),reference:S(t.reference),originalReference:S(t.originalReference),frameCount:a,directions:[...n],model:s,actions:o}}function w(e){let{createdAt:t,updatedAt:n,...r}=_(e,[...p,`createdAt`,`updatedAt`]);return{...C(r),id:y(r.id),createdAt:b(t),updatedAt:b(n)}}function T(e){let t=_(e,[`id`,`projectId`,`status`,`startedAt`,`finishedAt`,`completed`,`total`,`error`,`output`,`originalOutput`,`edits`,`revision`]);if(typeof t.status!=`string`||!m.includes(t.status)||t.error!==null&&(typeof t.error!=`string`||!/^(?:game_assets|workflow_image|workflow_media|sprite_engine)_[a-z_]{1,60}$/.test(t.error)))return g();let n=x(t.total,1,8),i=x(t.completed,0,n);if(t.status===`running`!=(t.finishedAt===null)||t.status===`completed`&&i!==n)return g();let a,o,s;try{if(a=r(t.output),o=r(t.originalOutput),t.edits!==void 0&&(s=d(t.edits),s.frames.some(e=>e.sourceIndex>=o.frames.length)||s.frames.length!==a.frames.length))return g()}catch{return g()}return{id:y(t.id),projectId:y(t.projectId),status:t.status,startedAt:b(t.startedAt),finishedAt:t.finishedAt===null?null:b(t.finishedAt),completed:i,total:n,error:t.error,output:a,originalOutput:o,revision:x(t.revision,0,2**53-1),...s?{edits:s}:{}}}function E(e){let t=_(e,[`projects`,`jobs`]);if(!Array.isArray(t.projects)||t.projects.length>100||!Array.isArray(t.jobs)||t.jobs.length>100)return g();let n=t.projects.map(w),r=t.jobs.map(T);return new Set(n.map(e=>e.id)).size!==n.length||new Set(r.map(e=>e.id)).size!==r.length||r.some(e=>!n.some(t=>t.id===e.projectId))?g():{projects:n,jobs:r}}function D(t){if(!t||typeof t!=`object`||Array.isArray(t))throw e();return t}function O(t){if(typeof t!=`string`||!/^[0-9a-f-]{36}$/i.test(t))throw e();return encodeURIComponent(t)}function k(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),window.setTimeout(()=>URL.revokeObjectURL(n),1e3)}function A(t){let n=D(t),r=E({projects:n.projects,jobs:n.jobs});if(!Array.isArray(n.models)||n.models.length>1e3)throw e();let i=n.models.map(t=>{let n=D(t);if(typeof n.id!=`string`||typeof n.name!=`string`||typeof n.providerId!=`string`||typeof n.providerName!=`string`||!n.id.startsWith(n.providerId+`/`))throw e();return{id:n.id,name:n.name,providerId:n.providerId,providerName:n.providerName}});return{...r,models:i,engines:s({engines:n.engines}).engines}}var j=e=>`/api/game-assets/media/${O(e)}/content`;async function M(r,i,c){if(c.throwIfAborted(),r===`gameAssets.list`)return t(`/api/game-assets`,{signal:c,parse:A});if(r===`gameAssets.save`){let e=C(i);return t(e.id?`/api/game-assets/projects/${O(e.id)}`:`/api/game-assets/projects`,{method:e.id?`PATCH`:`POST`,data:e,signal:c,parse:w})}if(r===`gameAssets.remove`)return t(`/api/game-assets/projects/${O(i.id)}`,{method:`DELETE`,signal:c});if(r===`gameAssets.run`||r===`gameAssets.stop`){let e=r===`gameAssets.run`?`/api/game-assets/projects/${O(i.id)}/run`:`/api/game-assets/jobs/${O(i.jobId)}/stop`;return t(e,{method:`POST`,data:{},signal:c,parse:e=>({job:T(D(e).job)})})}if(r===`gameAssets.editFrames`)return t(`/api/game-assets/jobs/${O(i.jobId)}/frames`,{method:`POST`,data:d(i.edits),signal:c,timeout:12e4,parse:T});if(r===`gameAssets.export`){let r=await t(`/api/game-assets/jobs/${O(i.jobId)}`,{signal:c,parse:T});if(!r.output.atlas)throw e();if(i.format===`png`){let e=await n(j(r.output.atlas.media.id),{signal:c});c.throwIfAborted(),k(e,`game-assets.png`)}else if(i.format===`json`)k(new Blob([JSON.stringify(r.output.atlas,null,2)],{type:`application/json`}),`game-assets.json`);else throw e();return null}if(r===`gameAssets.uploadImage`){if(!(i.buffer instanceof ArrayBuffer)||!i.buffer.byteLength||i.buffer.byteLength>8388608||![`image/png`,`image/jpeg`,`image/webp`].includes(String(i.mimeType))||typeof i.name!=`string`||i.name.length>200)throw e();return t(`/api/game-assets/media?name=${encodeURIComponent(i.name)}`,{method:`POST`,data:new Blob([i.buffer],{type:String(i.mimeType)}),signal:c,parse:a})}if(r===`gameAssets.image`){let t=await n(j(i.id),{signal:c});if(t.size>8388608||![`image/png`,`image/jpeg`,`image/webp`].includes(t.type))throw e();return{buffer:await t.arrayBuffer(),mimeType:t.type}}if(r===`gameAssets.process`){if(![`background`,`inpaint`].includes(String(i.operation)))throw e();return t(`/api/game-assets/process`,{method:`POST`,signal:c,timeout:12e4,data:{reference:a(i.reference),operation:i.operation,image:o(i.image)},parse:a})}if(r===`gameAssets.engine`){if(i.id!==`background`&&i.id!==`inpaint`||i.action!==`download`&&i.action!==`cancel`)throw e();return t(`/api/game-assets/engines/${i.id}/${i.action}`,{method:`POST`,data:{},signal:c,parse:s})}throw e()}export{M as handleGameAssetComponentRequest};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{u as n}from"./i18n-CAJMli-q.js";var r=e(t(),1),i=`section`,a={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`,about:`config:configPage.about`,"remote-access":`config:configPage.remoteAccess`,"mobile-server":`config:configPage.mobileServer`},o=[{id:`sec-models`,section:`models`,card:i,titleKey:`config:configPage.models`,keywords:[`model`,`provider`,`llm`,`api`,`模型`,`供应商`,`大模型`]},{id:`sec-notifications`,section:`notifications`,card:i,titleKey:`config:configPage.notifications`,keywords:[`notification`,`push`,`alert`,`通知`,`推送`,`提醒`]},{id:`sec-interface`,section:`interface`,card:i,titleKey:`config:configPage.interface`,keywords:[`interface`,`theme`,`appearance`,`display`,`界面`,`主题`,`外观`,`显示`]},{id:`sec-shortcuts`,section:`shortcuts`,card:i,titleKey:`config:configPage.shortcuts`,keywords:[`keyboard`,`shortcut`,`hotkey`,`keybinding`,`voice`,`push to talk`,`快捷键`,`按键`,`键盘`,`语音`,`长按`]},{id:`sec-desktop-pet`,section:`desktop-pet`,card:i,titleKey:`config:configPage.desktopPet`,keywords:[`pet`,`petdex`,`宠物`,`桌宠`]},{id:`sec-updates`,section:`updates`,card:i,titleKey:`config:configPage.appUpdates`,keywords:[`update`,`upgrade`,`version`,`更新`,`升级`,`版本`]},{id:`sec-about`,section:`about`,card:i,titleKey:`config:configPage.about`,keywords:[`about`,`info`,`license`,`关于`,`信息`,`许可`]},{id:`sec-remote-access`,section:`remote-access`,card:i,titleKey:`config:configPage.remoteAccess`,keywords:[`remote`,`network`,`phone`,`远程`,`网络`,`手机`]},{id:`sec-mobile-server`,section:`mobile-server`,card:i,titleKey:`config:configPage.mobileServer`,keywords:[`server`,`remote`,`network`,`服务器`,`远程`,`网络`]},{id:`models-current-model`,section:`models`,card:`models-current-model`,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-connections`,titleKey:`config:configPage.agentRuntimePolicy`,keywords:[`runtime`,`agent`,`policy`,`运行策略`,`运行时`,`执行策略`]},{id:`models-visual`,section:`models`,card:`models-visual`,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:`config:interfaceSettings.customUiTab`,keywords:[`custom ui`,`standalone widgets`,`component`,`html`,`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`,titleKey:`config:interfaceSettings.interfaceStyle`,keywords:[`font`,`corner`,`radius`,`字体`,`字号`,`圆角`]},{id:`interface-motion`,section:`interface`,card:`interface-motion`,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:`updates-sponsors`,section:`updates`,card:`updates-sponsors`,titleKey:`config:updateSettings.sponsors`,keywords:[`sponsor`,`赞助`,`赞助商`]},{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`,`支持`,`捐赠`,`赞助`]}],s={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`]},c=12;function l(e){return[n(e.titleKey,`zh-CN`).toLowerCase(),n(e.titleKey,`en-US`).toLowerCase()]}function u(e,t){let r=e.trim().toLowerCase();if(!r)return[];let i=new Set(s[r]||[]);for(let e of r.split(/\s+/))for(let t of s[e]||[])i.add(t);let u=[];for(let e of o){if(typeof window<`u`&&(e.id===`remote-workspaces`&&!window.pisperDesktop?.remoteWorkspaces||e.id===`remote-access-main`&&window.__PISPER_REMOTE_WORKSPACE__))continue;let[t,n]=l(e),a=0;i.has(e.id)?a=100:t===r||n===r?a=90:t.startsWith(r)||n.startsWith(r)?a=80:t.includes(r)||n.includes(r)?a=65:(e.keywords||[]).some(e=>{let t=e.toLowerCase();return t.includes(r)?r.length>=2||/[\u4e00-\u9fff]/.test(r):/[\u4e00-\u9fff]/.test(t)&&t.includes(r)})&&(a=40),a>0&&u.push({entry:e,score:a})}u.sort((e,t)=>t.score-e.score);let d=new Set,f=[];for(let{entry:e}of u){let r={entry:e,title:n(e.titleKey,t),sectionTitle:n(a[e.section],t)},i=`${e.section}|${r.title}`;if(!d.has(i)&&(d.add(i),f.push(r),f.length>=c))break}return f}var d=`pisper:config-card-highlight`,f=null;function p(e,t){f={card:e,section:t},window.dispatchEvent(new Event(d))}function m(e){if(f?.section!==e)return null;let t=f;return f=null,t}function h(e){let t=document.querySelector(`[data-config-card="${e.card}"]`);if(t||=document.querySelector(`[data-config-card="${i}"]`),!t)return;for(let e=t.parentElement;e;e=e.parentElement)e instanceof HTMLDetailsElement&&(e.open=!0);t.scrollIntoView({behavior:`smooth`,block:`center`});let n={boxShadow:t.style.boxShadow,borderColor:t.style.borderColor,transition:t.style.transition};t.style.transition=`box-shadow .3s ease, border-color .3s ease`,t.style.boxShadow=`0 0 0 3px var(--focus-ring)`,t.style.borderColor=`var(--focus)`,window.setTimeout(()=>{t.style.boxShadow=n.boxShadow,t.style.borderColor=n.borderColor,t.style.transition=n.transition},1200)}function g(e){(0,r.useEffect)(()=>{let t=0,n=0,r=()=>{let r=m(e);r&&(cancelAnimationFrame(t),cancelAnimationFrame(n),t=requestAnimationFrame(()=>{n=requestAnimationFrame(()=>h(r))}))};return r(),window.addEventListener(d,r),()=>{window.removeEventListener(d,r),cancelAnimationFrame(t),cancelAnimationFrame(n)}},[e])}export{g as i,p as n,u as r,i as t};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{u as n}from"./i18n-CblgkPOp.js";var r=e(t(),1),i=`section`,a={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`,about:`config:configPage.about`,"remote-access":`config:configPage.remoteAccess`,"mobile-server":`config:configPage.mobileServer`},o=[{id:`sec-models`,section:`models`,card:i,titleKey:`config:configPage.models`,keywords:[`model`,`provider`,`llm`,`api`,`模型`,`供应商`,`大模型`]},{id:`sec-notifications`,section:`notifications`,card:i,titleKey:`config:configPage.notifications`,keywords:[`notification`,`push`,`alert`,`通知`,`推送`,`提醒`]},{id:`sec-interface`,section:`interface`,card:i,titleKey:`config:configPage.interface`,keywords:[`interface`,`theme`,`appearance`,`display`,`界面`,`主题`,`外观`,`显示`]},{id:`sec-shortcuts`,section:`shortcuts`,card:i,titleKey:`config:configPage.shortcuts`,keywords:[`keyboard`,`shortcut`,`hotkey`,`keybinding`,`voice`,`push to talk`,`快捷键`,`按键`,`键盘`,`语音`,`长按`]},{id:`sec-desktop-pet`,section:`desktop-pet`,card:i,titleKey:`config:configPage.desktopPet`,keywords:[`pet`,`petdex`,`宠物`,`桌宠`]},{id:`sec-updates`,section:`updates`,card:i,titleKey:`config:configPage.appUpdates`,keywords:[`update`,`upgrade`,`version`,`更新`,`升级`,`版本`]},{id:`sec-about`,section:`about`,card:i,titleKey:`config:configPage.about`,keywords:[`about`,`info`,`license`,`关于`,`信息`,`许可`]},{id:`sec-remote-access`,section:`remote-access`,card:i,titleKey:`config:configPage.remoteAccess`,keywords:[`remote`,`network`,`phone`,`远程`,`网络`,`手机`]},{id:`sec-mobile-server`,section:`mobile-server`,card:i,titleKey:`config:configPage.mobileServer`,keywords:[`server`,`remote`,`network`,`服务器`,`远程`,`网络`]},{id:`models-current-model`,section:`models`,card:`models-current-model`,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-connections`,titleKey:`config:configPage.agentRuntimePolicy`,keywords:[`runtime`,`agent`,`policy`,`运行策略`,`运行时`,`执行策略`]},{id:`models-visual`,section:`models`,card:`models-visual`,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:`config:interfaceSettings.customUiTab`,keywords:[`custom ui`,`standalone widgets`,`component`,`html`,`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`,titleKey:`config:interfaceSettings.interfaceStyle`,keywords:[`font`,`corner`,`radius`,`字体`,`字号`,`圆角`]},{id:`interface-motion`,section:`interface`,card:`interface-motion`,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:`updates-sponsors`,section:`updates`,card:`updates-sponsors`,titleKey:`config:updateSettings.sponsors`,keywords:[`sponsor`,`赞助`,`赞助商`]},{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`,`支持`,`捐赠`,`赞助`]}],s={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`]},c=12;function l(e){return[n(e.titleKey,`zh-CN`).toLowerCase(),n(e.titleKey,`en-US`).toLowerCase()]}function u(e,t){let r=e.trim().toLowerCase();if(!r)return[];let i=new Set(s[r]||[]);for(let e of r.split(/\s+/))for(let t of s[e]||[])i.add(t);let u=[];for(let e of o){if(typeof window<`u`&&(e.id===`remote-workspaces`&&!window.pisperDesktop?.remoteWorkspaces||e.id===`remote-access-main`&&window.__PISPER_REMOTE_WORKSPACE__))continue;let[t,n]=l(e),a=0;i.has(e.id)?a=100:t===r||n===r?a=90:t.startsWith(r)||n.startsWith(r)?a=80:t.includes(r)||n.includes(r)?a=65:(e.keywords||[]).some(e=>{let t=e.toLowerCase();return t.includes(r)?r.length>=2||/[\u4e00-\u9fff]/.test(r):/[\u4e00-\u9fff]/.test(t)&&t.includes(r)})&&(a=40),a>0&&u.push({entry:e,score:a})}u.sort((e,t)=>t.score-e.score);let d=new Set,f=[];for(let{entry:e}of u){let r={entry:e,title:n(e.titleKey,t),sectionTitle:n(a[e.section],t)},i=`${e.section}|${r.title}`;if(!d.has(i)&&(d.add(i),f.push(r),f.length>=c))break}return f}var d=`pisper:config-card-highlight`,f=null;function p(e,t){f={card:e,section:t},window.dispatchEvent(new Event(d))}function m(e){if(f?.section!==e)return null;let t=f;return f=null,t}function h(e){let t=document.querySelector(`[data-config-card="${e.card}"]`);if(t||=document.querySelector(`[data-config-card="${i}"]`),!t)return;for(let e=t.parentElement;e;e=e.parentElement)e instanceof HTMLDetailsElement&&(e.open=!0);t.scrollIntoView({behavior:`smooth`,block:`center`});let n={boxShadow:t.style.boxShadow,borderColor:t.style.borderColor,transition:t.style.transition};t.style.transition=`box-shadow .3s ease, border-color .3s ease`,t.style.boxShadow=`0 0 0 3px var(--focus-ring)`,t.style.borderColor=`var(--focus)`,window.setTimeout(()=>{t.style.boxShadow=n.boxShadow,t.style.borderColor=n.borderColor,t.style.transition=n.transition},1200)}function g(e){(0,r.useEffect)(()=>{let t=0,n=0,r=()=>{let r=m(e);r&&(cancelAnimationFrame(t),cancelAnimationFrame(n),t=requestAnimationFrame(()=>{n=requestAnimationFrame(()=>h(r))}))};return r(),window.addEventListener(d,r),()=>{window.removeEventListener(d,r),cancelAnimationFrame(t),cancelAnimationFrame(n)}},[e])}export{g as i,p as n,u as r,i as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./index-BAYzSwUr.js";import{t}from"./storage-BpAqa-YY.js";var n=Object.freeze([`open`,`left`,`right`,`above`,`below`]),r=`session:`;function i(e){let t=u(e);return{layout:t,writable:e==null||e===``||!!t}}function a({sessionId:e,visibleIds:t,focusedId:n,disposition:r,width:i,height:a}){return t.includes(e)?{kind:`focus`}:r===`open`?n?{kind:`replace`,replacedId:n}:{kind:`add`}:{kind:(r===`left`||r===`right`?i>=600:a>=480)?`split`:`unavailable`}}function o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function s(e){return e?`${r}${e}`:``}function c(e){let t=typeof e==`object`&&e?e.params?.sessionId:void 0;if(typeof t==`string`&&t)return t;let n=typeof e==`string`?e:e?.id;return typeof n==`string`&&n.startsWith(r)?n.slice(8):``}function l(e,t=``){return{version:1,engine:`dockview`,activePanelId:typeof t==`string`?t:``,layout:e}}function u(e){if(!e)return null;try{let t=typeof e==`string`?JSON.parse(e):e;return!o(t)||t.version!==1||t.engine!==`dockview`||!o(t.layout)||!o(t.layout.grid)||!o(t.layout.panels)?null:{version:1,engine:`dockview`,activePanelId:typeof t.activePanelId==`string`?t.activePanelId:``,layout:t.layout}}catch{return null}}function d(e){return e===`above`?`top`:e===`below`?`bottom`:e}function f(e,t=`open`,r=``){return!e||!n.includes(t)?null:{sessionId:e,disposition:t,...r?{targetEntryId:r}:{}}}function p(e){if(!e)return null;try{let t=typeof e==`string`?JSON.parse(e):e;return o(t)?f(typeof t.sessionId==`string`?t.sessionId:``,typeof t.disposition==`string`?t.disposition:`open`,typeof t.targetEntryId==`string`?t.targetEntryId:``):null}catch{return null}}function m({activeSessionId:e=``,validSessionIds:t=[]}={}){return e&&t.includes(e)?[e]:t[0]?[t[0]]:[]}var h=`pisper:task-view-will-change`,g=`pisper:session-navigation-will-change`,_=`pisper:session-selected`,v=`pisper:session-create-requested`,y=`pisper:active-session-changed`,b=`pisper:sessions-updated`,x=`pisper:command-palette-requested`;function S(e){if(!e||typeof e!=`object`)return null;let{cwd:t,prompt:n}=e;if(t!==void 0&&typeof t!=`string`)return null;let r=typeof n==`string`&&n.trim()?n.trim():void 0;return{cwd:typeof t==`string`?t:``,...r?{prompt:r}:{}}}function C(e){if(!e)return null;try{return S(JSON.parse(e))}catch{return null}}function w(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}}function T(){window.dispatchEvent(new Event(x))}function E(e,n){let r=S({cwd:e,prompt:n});return r?(localStorage.setItem(t.sessionCreateRequest,JSON.stringify(r)),window.dispatchEvent(new CustomEvent(v,{detail:r})),!0):!1}function D(){let e=C(localStorage.getItem(t.sessionCreateRequest));return localStorage.removeItem(t.sessionCreateRequest),e}function O(n,r=`open`,i=``){let a=f(n,r,i);a&&(window.dispatchEvent(new Event(g)),e.setItem(t.activeSession,n),localStorage.setItem(t.sessionOpenRequest,JSON.stringify(a)),i?localStorage.setItem(t.sessionMessageTarget,JSON.stringify({sessionId:n,entryId:i})):localStorage.removeItem(t.sessionMessageTarget),window.dispatchEvent(new CustomEvent(_,{detail:a})))}function k(e){let n=w(localStorage.getItem(t.sessionMessageTarget));return n?.sessionId===e?n.entryId:``}function A(e,n){let r=w(localStorage.getItem(t.sessionMessageTarget));r?.sessionId===e&&r.entryId===n&&localStorage.removeItem(t.sessionMessageTarget)}function j(){let e=p(localStorage.getItem(t.sessionOpenRequest));return localStorage.removeItem(t.sessionOpenRequest),e}function M(e,t=``){window.dispatchEvent(new CustomEvent(y,{detail:{id:e||``,model:t||``}}))}function N(e){window.dispatchEvent(e?new CustomEvent(b,{detail:e}):new Event(b))}function P(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 F(e,t){let n=e=>{let n=P(e);n&&t(n)};return e.addEventListener(b,n),()=>e.removeEventListener(b,n)}function I(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 L(e,t){let n=e=>{let n=I(e);n&&t(n)};return e.addEventListener(b,n),()=>e.removeEventListener(b,n)}function R(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 z(e,t){let n=e=>{let n=R(e);n&&t(n)};return e.addEventListener(b,n),()=>e.removeEventListener(b,n)}export{l as C,a as D,s as E,c as O,i as S,m as T,R as _,g as a,F as b,M as c,D as d,j as f,O as g,E as h,v as i,N as l,T as m,x as n,_ as o,k as p,b as r,h as s,y as t,A as u,P as v,d as w,L as x,z as y};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/component-api-kxyOYPJN.js","assets/http-rQRvhTOP.js","assets/vendor-router-CZg2bCPV.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/i18n-CAJMli-q.js","assets/index-BVIvzUyZ.js","assets/index-Z8qQPd8t.css","assets/storage-BpAqa-YY.js","assets/abort-signal-f4JsiYKX.js","assets/sprite-engine-catalog-D1HQWa1X.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{p as t}from"./vendor-router-CZg2bCPV.js";import{t as n}from"./index-BVIvzUyZ.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{u as a}from"./i18n-CAJMli-q.js";import{t as o}from"./use-i18n-Dpn7lxcE.js";import{a as s,o as c}from"./vendor-state-GkUciC5H.js";import{t as l}from"./utils-C8uzG5AZ.js";import{t as u}from"./api-D8wGrWiI.js";import{t as d}from"./button-BcPDt1Ge.js";import{a as f,n as p,o as m}from"./useCustomUiComponents-DzY3OjE_.js";var h=e(r(),1),g=`--bg.--panel.--solid.--surface-subtle.--surface-muted.--surface-hover.--stroke.--stroke-soft.--stroke-hover.--text.--text-soft.--text-secondary.--text-muted.--brand-blue.--brand-blue-soft.--brand-blue-border.--accent-soft.--accent-strong.--accent-border.--star-strong.--on-accent.--success.--success-soft.--danger.--danger-soft.--warning-strong.--warning-soft.--focus.--r-sm.--r-md.--r-lg`.split(`.`);function _(){let e=document.documentElement,t=getComputedStyle(e),n={};for(let e of g){let r=t.getPropertyValue(e).trim();r&&(n[e]=r)}return{mode:e.classList.contains(`dark`)?`dark`:`light`,variables:n}}var v={getConfig:`config.read`,listSessions:`sessions.read`,notify:`notify`,"gameAssets.list":`game-assets.read`,"gameAssets.save":`game-assets.write`,"gameAssets.run":`game-assets.run`,"gameAssets.stop":`game-assets.run`,"gameAssets.uploadImage":`game-assets.write`,"gameAssets.image":`game-assets.read`,"gameAssets.process":`game-assets.write`,"gameAssets.engine":`game-assets.write`,"gameAssets.export":`game-assets.read`,"gameAssets.editFrames":`game-assets.write`,"gameAssets.remove":`game-assets.write`},y=4;function b(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function x(e,{component:n,notify:r,preview:i=!1,locale:o=document.documentElement.lang||`zh-CN`}){let s=i?[]:n.permissions,c=new Set(s),l=new AbortController,d=0,f=o===`en-US`?`en-US`:`zh-CN`,p=()=>({..._(),locale:o}),m=()=>{l.signal.aborted||e.contentWindow?.postMessage({pisperBridge:1,type:`theme`,theme:p()},`*`)},h=new MutationObserver(m);h.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`,`data-accent`]});let g=(t,n,r)=>{l.signal.aborted||e.contentWindow?.postMessage(n?{pisperBridge:1,id:t,ok:!0,result:r}:{pisperBridge:1,id:t,ok:!1,error:String(r||`请求失败。`)},`*`)},x=async(e,i)=>{if(e===`ready`)return{component:{id:n.id,name:n.name,version:n.version,permissions:s},locale:o,theme:p()};let m=v[e];if(!m)throw Error(a(`custom-ui:bridge.unknownMethod`,f));if(!c.has(m))throw Error(a(`custom-ui:bridge.permissionDenied`,f,{permission:m}));if(e.startsWith(`gameAssets.`)){if(d>=y)throw Error(a(`custom-ui:bridge.gameAssetBusy`,f));d+=1;try{let{handleGameAssetComponentRequest:n}=await t(async()=>{let{handleGameAssetComponentRequest:e}=await import(`./component-api-kxyOYPJN.js`);return{handleGameAssetComponentRequest:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));return l.signal.throwIfAborted(),await n(e,i,l.signal)}finally{--d}}if(e===`getConfig`)return u(`/api/config`,{signal:l.signal});if(e===`listSessions`){let e=Math.min(Math.max(Number(i.limit)||50,1),200);return u(`/api/sessions?limit=${e}`,{signal:l.signal})}if(e===`notify`){let e=String(i.message||``).trim().slice(0,500);return e&&r(e),null}return null},S=t=>{if(l.signal.aborted||t.source!==e.contentWindow)return;let n=b(t.data)||{};if(n.pisperBridge!==1||typeof n.id!=`number`||!Number.isSafeInteger(n.id)||typeof n.method!=`string`)return;let r=n.id;x(n.method,b(n.params)||{}).then(e=>g(r,!0,e??null),e=>g(r,!1,e instanceof Error?e.message:String(e)))};return window.addEventListener(`message`,S),m(),()=>{l.abort(),window.removeEventListener(`message`,S),h.disconnect()}}function S(e,t,n){let r=new AbortController,i=null,a,o=e=>{f(e.id).catch(()=>void 0)},s=()=>{r.abort(),clearTimeout(a),i&&=(o(i),null)},c=()=>{r.signal.aborted||(n(),s())},l=async()=>{if(!(!i||r.signal.aborted))try{await m(i.id,r.signal),r.signal.aborted||(a=setTimeout(()=>void l(),6e4))}catch{c()}};return p(e,r.signal).then(e=>{if(r.signal.aborted){o(e);return}i=e,t(e),a=setTimeout(()=>void l(),6e4)},c),s}function C(e,t){return e.builtIn&&e.id===`pisper-island`?t(`custom-ui:builtIn.islandName`):e.name}function w(e,t){return e.builtIn&&e.id===`pisper-island`?t(`custom-ui:builtIn.islandDescription`):e.description}var T=i();function E({component:e,notify:t,preview:n=!1}){let{t:r,locale:i}=o(),a=(0,h.useRef)(null),s=(0,h.useRef)(null),c=(0,h.useRef)(t);c.current=t;let[u,f]=(0,h.useState)(!1),[p,m]=(0,h.useState)(0),[g,_]=(0,h.useState)(null);return(0,h.useEffect)(()=>{f(!1),_(null);let t=S(e.id,_,()=>f(!0));return s.current=t,()=>{t(),s.current=null}},[e.id,e.entry,p]),(0,h.useEffect)(()=>{let t=a.current;if(!(!t||u||!g))return x(t,{component:e,preview:n,locale:i,notify:e=>c.current?.(e)})},[e,n,g,u,i]),u?(0,T.jsxs)(`div`,{role:`status`,className:`flex h-full min-h-0 min-w-0 flex-col items-center justify-center gap-2 overflow-auto p-3 text-center text-xs text-[var(--text-muted)]`,children:[(0,T.jsx)(`p`,{children:r(`custom-ui:customUiPage.componentFailedToLoad`)}),(0,T.jsx)(d,{variant:`outline`,size:`sm`,onClick:()=>m(e=>e+1),children:r(`custom-ui:widget.retry`)})]}):g?(0,T.jsx)(`iframe`,{ref:a,title:C(e,r),src:g.entryUrl,referrerPolicy:`no-referrer`,sandbox:`allow-scripts`,inert:n||void 0,tabIndex:n?-1:void 0,className:l(`block h-full min-h-0 w-full min-w-0 border-0 bg-transparent`,n&&`pointer-events-none`),onError:()=>{s.current?.(),f(!0)}}):(0,T.jsx)(`div`,{role:`status`,className:`grid h-full min-h-0 min-w-0 place-items-center p-3 text-xs text-[var(--text-muted)]`,children:r(`custom-ui:customUiPage.loading`)})}var D=128,O=/^[a-z0-9][a-z0-9._-]{0,63}$/;function k(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function A(e){return typeof e==`string`&&O.test(e)}function j(e){let t={};if(!k(e))return t;for(let n of Object.keys(e)){if(Object.keys(t).length>=D)break;let r=Object.getOwnPropertyDescriptor(e,n);A(n)&&r&&`value`in r&&typeof r.value==`boolean`&&(t[n]=r.value)}return t}function M(e){if(!k(e)||Object.keys(e).some(e=>e!==`prefs`))return{prefs:{}};let t=Object.getOwnPropertyDescriptor(e,`prefs`);return{prefs:j(t&&`value`in t?t.value:null)}}function N(e,t){let n=j(t),r=new Set;for(let t of e)A(t)&&(t===`pisper-island`?n[t]===!0:n[t]!==!1)&&r.add(t);for(let[e,t]of Object.entries(n))t&&r.add(e);return[...r]}var P=c()((e,t,r)=>{let i=!1,a=n=>{i=n,t()&&t().storageError!==n&&e({storageError:n})};return s((e,t)=>({prefs:{},storageError:!1,setVisible:(n,r)=>{if(!A(n))throw Object.assign(Error(`Invalid component ID`),{code:`invalid_id`});if(typeof r!=`boolean`)throw Object.assign(Error(`Invalid visibility`),{code:`invalid_visibility`});let i=t().prefs;if(i[n]!==r){if(!Object.hasOwn(i,n)&&Object.keys(i).length>=D)throw Object.assign(Error(`Too many floating preferences`),{code:`preferences_limit`});e({prefs:{...i,[n]:r}})}}}),{name:`pisper-floating-widgets`,version:1,storage:{getItem:e=>{try{let t=n.getItem(e);if(t===null)return a(!1),null;let r=JSON.parse(t);return a(!1),{state:k(r)&&r.version===1?M(r.state):{prefs:{}},version:1}}catch{return a(!0),{state:{prefs:{}},version:1}}},setItem:(e,t)=>{try{n.setItem(e,JSON.stringify(t)),a(!1)}catch{a(!0)}},removeItem:e=>{try{n.removeItem(e),a(!1)}catch{a(!0)}}},partialize:({prefs:e})=>({prefs:e}),merge:(e,t)=>({...t,...M(e),storageError:i})})(e,t,r)});export{C as a,w as i,P as n,E as r,N as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/component-api-BboiUuyG.js","assets/http-Dx387MGl.js","assets/vendor-router-CZg2bCPV.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/i18n-CblgkPOp.js","assets/index-BAYzSwUr.js","assets/index-Bcpvpefn.css","assets/storage-BpAqa-YY.js","assets/abort-signal-f4JsiYKX.js","assets/sprite-engine-catalog-D1HQWa1X.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{p as t}from"./vendor-router-CZg2bCPV.js";import{t as n}from"./index-BAYzSwUr.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{u as a}from"./i18n-CblgkPOp.js";import{t as o}from"./use-i18n-BrWBoyFl.js";import{a as s,o as c}from"./vendor-state-GkUciC5H.js";import{t as l}from"./utils-C8uzG5AZ.js";import{t as u}from"./api-CiEo53J1.js";import{t as d}from"./button-BcPDt1Ge.js";import{a as f,n as p,o as m}from"./useCustomUiComponents-IxX7wKrp.js";var h=e(r(),1),g=`--bg.--panel.--solid.--surface-subtle.--surface-muted.--surface-hover.--stroke.--stroke-soft.--stroke-hover.--text.--text-soft.--text-secondary.--text-muted.--brand-blue.--brand-blue-soft.--brand-blue-border.--accent-soft.--accent-strong.--accent-border.--star-strong.--on-accent.--success.--success-soft.--danger.--danger-soft.--warning-strong.--warning-soft.--focus.--r-sm.--r-md.--r-lg`.split(`.`);function _(){let e=document.documentElement,t=getComputedStyle(e),n={};for(let e of g){let r=t.getPropertyValue(e).trim();r&&(n[e]=r)}return{mode:e.classList.contains(`dark`)?`dark`:`light`,variables:n}}var v={getConfig:`config.read`,listSessions:`sessions.read`,notify:`notify`,"gameAssets.list":`game-assets.read`,"gameAssets.save":`game-assets.write`,"gameAssets.run":`game-assets.run`,"gameAssets.stop":`game-assets.run`,"gameAssets.uploadImage":`game-assets.write`,"gameAssets.image":`game-assets.read`,"gameAssets.process":`game-assets.write`,"gameAssets.engine":`game-assets.write`,"gameAssets.export":`game-assets.read`,"gameAssets.editFrames":`game-assets.write`,"gameAssets.remove":`game-assets.write`},y=4;function b(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function x(e,{component:n,notify:r,preview:i=!1,locale:o=document.documentElement.lang||`zh-CN`}){let s=i?[]:n.permissions,c=new Set(s),l=new AbortController,d=0,f=o===`en-US`?`en-US`:`zh-CN`,p=()=>({..._(),locale:o}),m=()=>{l.signal.aborted||e.contentWindow?.postMessage({pisperBridge:1,type:`theme`,theme:p()},`*`)},h=new MutationObserver(m);h.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`,`data-accent`]});let g=(t,n,r)=>{l.signal.aborted||e.contentWindow?.postMessage(n?{pisperBridge:1,id:t,ok:!0,result:r}:{pisperBridge:1,id:t,ok:!1,error:String(r||`请求失败。`)},`*`)},x=async(e,i)=>{if(e===`ready`)return{component:{id:n.id,name:n.name,version:n.version,permissions:s},locale:o,theme:p()};let m=v[e];if(!m)throw Error(a(`custom-ui:bridge.unknownMethod`,f));if(!c.has(m))throw Error(a(`custom-ui:bridge.permissionDenied`,f,{permission:m}));if(e.startsWith(`gameAssets.`)){if(d>=y)throw Error(a(`custom-ui:bridge.gameAssetBusy`,f));d+=1;try{let{handleGameAssetComponentRequest:n}=await t(async()=>{let{handleGameAssetComponentRequest:e}=await import(`./component-api-BboiUuyG.js`);return{handleGameAssetComponentRequest:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));return l.signal.throwIfAborted(),await n(e,i,l.signal)}finally{--d}}if(e===`getConfig`)return u(`/api/config`,{signal:l.signal});if(e===`listSessions`){let e=Math.min(Math.max(Number(i.limit)||50,1),200);return u(`/api/sessions?limit=${e}`,{signal:l.signal})}if(e===`notify`){let e=String(i.message||``).trim().slice(0,500);return e&&r(e),null}return null},S=t=>{if(l.signal.aborted||t.source!==e.contentWindow)return;let n=b(t.data)||{};if(n.pisperBridge!==1||typeof n.id!=`number`||!Number.isSafeInteger(n.id)||typeof n.method!=`string`)return;let r=n.id;x(n.method,b(n.params)||{}).then(e=>g(r,!0,e??null),e=>g(r,!1,e instanceof Error?e.message:String(e)))};return window.addEventListener(`message`,S),m(),()=>{l.abort(),window.removeEventListener(`message`,S),h.disconnect()}}function S(e,t,n){let r=new AbortController,i=null,a,o=e=>{f(e.id).catch(()=>void 0)},s=()=>{r.abort(),clearTimeout(a),i&&=(o(i),null)},c=()=>{r.signal.aborted||(n(),s())},l=async()=>{if(!(!i||r.signal.aborted))try{await m(i.id,r.signal),r.signal.aborted||(a=setTimeout(()=>void l(),6e4))}catch{c()}};return p(e,r.signal).then(e=>{if(r.signal.aborted){o(e);return}i=e,t(e),a=setTimeout(()=>void l(),6e4)},c),s}function C(e,t){return e.builtIn&&e.id===`pisper-island`?t(`custom-ui:builtIn.islandName`):e.name}function w(e,t){return e.builtIn&&e.id===`pisper-island`?t(`custom-ui:builtIn.islandDescription`):e.description}var T=i();function E({component:e,notify:t,preview:n=!1}){let{t:r,locale:i}=o(),a=(0,h.useRef)(null),s=(0,h.useRef)(null),c=(0,h.useRef)(t);c.current=t;let[u,f]=(0,h.useState)(!1),[p,m]=(0,h.useState)(0),[g,_]=(0,h.useState)(null);return(0,h.useEffect)(()=>{f(!1),_(null);let t=S(e.id,_,()=>f(!0));return s.current=t,()=>{t(),s.current=null}},[e.id,e.entry,p]),(0,h.useEffect)(()=>{let t=a.current;if(!(!t||u||!g))return x(t,{component:e,preview:n,locale:i,notify:e=>c.current?.(e)})},[e,n,g,u,i]),u?(0,T.jsxs)(`div`,{role:`status`,className:`flex h-full min-h-0 min-w-0 flex-col items-center justify-center gap-2 overflow-auto p-3 text-center text-xs text-[var(--text-muted)]`,children:[(0,T.jsx)(`p`,{children:r(`custom-ui:customUiPage.componentFailedToLoad`)}),(0,T.jsx)(d,{variant:`outline`,size:`sm`,onClick:()=>m(e=>e+1),children:r(`custom-ui:widget.retry`)})]}):g?(0,T.jsx)(`iframe`,{ref:a,title:C(e,r),src:g.entryUrl,referrerPolicy:`no-referrer`,sandbox:`allow-scripts`,inert:n||void 0,tabIndex:n?-1:void 0,className:l(`block h-full min-h-0 w-full min-w-0 border-0 bg-transparent`,n&&`pointer-events-none`),onError:()=>{s.current?.(),f(!0)}}):(0,T.jsx)(`div`,{role:`status`,className:`grid h-full min-h-0 min-w-0 place-items-center p-3 text-xs text-[var(--text-muted)]`,children:r(`custom-ui:customUiPage.loading`)})}var D=128,O=/^[a-z0-9][a-z0-9._-]{0,63}$/;function k(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function A(e){return typeof e==`string`&&O.test(e)}function j(e){let t={};if(!k(e))return t;for(let n of Object.keys(e)){if(Object.keys(t).length>=D)break;let r=Object.getOwnPropertyDescriptor(e,n);A(n)&&r&&`value`in r&&typeof r.value==`boolean`&&(t[n]=r.value)}return t}function M(e){if(!k(e)||Object.keys(e).some(e=>e!==`prefs`))return{prefs:{}};let t=Object.getOwnPropertyDescriptor(e,`prefs`);return{prefs:j(t&&`value`in t?t.value:null)}}function N(e,t){let n=j(t),r=new Set;for(let t of e)A(t)&&(t===`pisper-island`?n[t]===!0:n[t]!==!1)&&r.add(t);for(let[e,t]of Object.entries(n))t&&r.add(e);return[...r]}var P=c()((e,t,r)=>{let i=!1,a=n=>{i=n,t()&&t().storageError!==n&&e({storageError:n})};return s((e,t)=>({prefs:{},storageError:!1,setVisible:(n,r)=>{if(!A(n))throw Object.assign(Error(`Invalid component ID`),{code:`invalid_id`});if(typeof r!=`boolean`)throw Object.assign(Error(`Invalid visibility`),{code:`invalid_visibility`});let i=t().prefs;if(i[n]!==r){if(!Object.hasOwn(i,n)&&Object.keys(i).length>=D)throw Object.assign(Error(`Too many floating preferences`),{code:`preferences_limit`});e({prefs:{...i,[n]:r}})}}}),{name:`pisper-floating-widgets`,version:1,storage:{getItem:e=>{try{let t=n.getItem(e);if(t===null)return a(!1),null;let r=JSON.parse(t);return a(!1),{state:k(r)&&r.version===1?M(r.state):{prefs:{}},version:1}}catch{return a(!0),{state:{prefs:{}},version:1}}},setItem:(e,t)=>{try{n.setItem(e,JSON.stringify(t)),a(!1)}catch{a(!0)}},removeItem:e=>{try{n.removeItem(e),a(!1)}catch{a(!0)}}},partialize:({prefs:e})=>({prefs:e}),merge:(e,t)=>({...t,...M(e),storageError:i})})(e,t,r)});export{C as a,w as i,P as n,E as r,N as t};
@@ -0,0 +1,3 @@
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{a as n,s as r}from"./events-f8vVvSfH.js";var i=e(t(),1);function a(e,t,a=``){let[o,s]=(0,i.useState)(null),c=(0,i.useRef)({identity:a,position:e||{top:0,left:0}});c.current={identity:a,position:e||{top:0,left:0}};let l=(0,i.useRef)(t);return l.current=t,(0,i.useLayoutEffect)(()=>{if(!o)return;let e=c.current.position,t=!0,i=null,s=()=>{c.current.identity===a&&!t&&o.isConnected&&o.clientHeight>0&&l.current({top:o.scrollTop,left:o.scrollLeft})},u=()=>{i=null,t&&(o.scrollTo({top:e.top,left:e.left,behavior:`instant`}),Math.abs(o.scrollTop-e.top)<1&&Math.abs(o.scrollLeft-e.left)<1&&(t=!1))},d=()=>{t&&i===null&&(i=requestAnimationFrame(u))},f=()=>{t=!1,s()};u();let p=new ResizeObserver(d);p.observe(o);for(let e of o.children)p.observe(e);return o.addEventListener(`scroll`,s),o.addEventListener(`wheel`,f,{passive:!0}),o.addEventListener(`pointerdown`,f),o.addEventListener(`keydown`,f),window.addEventListener(n,s),window.addEventListener(r,s),()=>{s(),p.disconnect(),i!==null&&cancelAnimationFrame(i),o.removeEventListener(`scroll`,s),o.removeEventListener(`wheel`,f),o.removeEventListener(`pointerdown`,f),o.removeEventListener(`keydown`,f),window.removeEventListener(n,s),window.removeEventListener(r,s)}},[o,a]),{element:o,ref:s}}function o(e){let t=String(e||``).trim().split(` `)[0];if(t.startsWith(`"`)&&t.endsWith(`"`))try{t=JSON.parse(t)}catch{}return t===`/dev/null`?``:t.replace(/^[ab]\//,``)}function s(e){let t=e.match(/^diff --git "a\/(.+)" "b\/(.+)"$/);if(t)return o(`b/${t[2]}`);let n=e.match(/^diff --git a\/(.+) b\/(.+)$/);return n?o(`b/${n[2]}`):``}function c(){return{lineNumber:null,text:``,tone:`empty`}}function l(e){let t=e.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);return{oldLine:Number(t?.[1])||0,newLine:Number(t?.[2])||0}}function u(e){let t=String(e||``).replace(/\r\n/g,`
2
+ `).split(`
3
+ `),n=[],r=null,i=null,a=0,u=0,d=[],f=[],p=()=>{if(!i||!d.length&&!f.length)return;let e=Math.max(d.length,f.length);for(let t=0;t<e;t+=1){let e=d[t],n=f[t];i.rows.push({kind:`pair`,old:e?{lineNumber:e.lineNumber,text:e.text,tone:`deleted`}:c(),next:n?{lineNumber:n.lineNumber,text:n.text,tone:`added`}:c()})}d=[],f=[]},m=()=>{p(),i=null},h=()=>{m(),r&&=(r.path=r.newPath||r.oldPath||r.path,n.push(r),null)};for(let e of t){if(e.startsWith(`diff --git `)){h(),r={oldPath:``,newPath:``,path:s(e),metadata:[],hunks:[]};continue}if(r){if(e.startsWith(`@@ `)){m();let t=l(e);a=t.oldLine,u=t.newLine,i={header:e,rows:[]},r.hunks.push(i);continue}if(i){if(e.startsWith(`-`))d.push({lineNumber:a,text:e.slice(1)}),a+=1;else if(e.startsWith(`+`))f.push({lineNumber:u,text:e.slice(1)}),u+=1;else if(p(),e.startsWith(` `)){let t=e.slice(1);i.rows.push({kind:`pair`,old:{lineNumber:a,text:t,tone:`context`},next:{lineNumber:u,text:t,tone:`context`}}),a+=1,u+=1}else e.startsWith(`\\ `)&&i.rows.push({kind:`meta`,text:e.slice(2)});continue}e.startsWith(`--- `)?r.oldPath=o(e.slice(4)):e.startsWith(`+++ `)?r.newPath=o(e.slice(4)):e.trim()&&r.metadata.push(e)}}return h(),n}export{a as n,u as t};
@@ -1,2 +1,2 @@
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{p as e}from"./vendor-router-CZg2bCPV.js";import{c as t,l as n,s as r,u as i}from"./i18n-CAJMli-q.js";import{i as a,n as o}from"./abort-signal-f4JsiYKX.js";var s=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 c(e){return new s(i(`common:api.invalidResponse`,t(r.language)?r.language:n()),{status:e,kind:`protocol`,data:{code:`INVALID_RESPONSE`}})}function l(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 u(e){let t=l(await e.text());return new s(t?.error||e.statusText||`HTTP ${e.status}`,{status:e.status,data:t,kind:`http`})}async function d(e){if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw c(e.status)}}async function f(t){if(typeof window>`u`||!window.__PISPER_MOBILE_APP__)return;let n=o(t,p);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 p=3e4;function m(e,t){return e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:t}async function h(e,t,n){let{body:r,data:i,headers:a,signal:o,timeout:c=p,...l}=t,d=i===void 0?r:i,h=new Headers(a),g;d!==void 0&&(d instanceof Blob?(g=d,h.has(`Content-Type`)||h.set(`Content-Type`,d.type||`application/octet-stream`)):(g=typeof d==`string`?d:JSON.stringify(d),h.has(`Content-Type`)||h.set(`Content-Type`,`application/json`)));let _=new AbortController,v=!1,y=()=>_.abort(o?.reason);o?.aborted?y():o?.addEventListener(`abort`,y,{once:!0});let b=c>0?setTimeout(()=>{v=!0,_.abort(new DOMException(`Request timed out`,`TimeoutError`))},c):void 0;try{if(await f(_.signal),_.signal.aborted)throw _.signal.reason;let t=await fetch(e,{...l,body:g,headers:h,signal:_.signal});if(!t.ok)throw await u(t);return await n(t)}catch(e){throw e instanceof s?e:v?new s(`请求超时 (${c}ms)`,{kind:`timeout`}):o?.aborted?new s(m(o.reason,`请求已取消`),{kind:`cancelled`}):new s(m(e,`请求失败 (network)`),{kind:`network`})}finally{b!==void 0&&clearTimeout(b),o?.removeEventListener(`abort`,y)}}function g(e,t={}){let{parse:n,...r}=t;return h(e,r,async e=>{let t=await d(e);return n?n(t):t})}function _(e,t={}){return h(e,t,e=>e.blob())}export{u as a,c as i,g as n,s as o,f as r,_ as t};
2
+ import{p as e}from"./vendor-router-CZg2bCPV.js";import{c as t,l as n,s as r,u as i}from"./i18n-CblgkPOp.js";import{i as a,n as o}from"./abort-signal-f4JsiYKX.js";var s=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 c(e){return new s(i(`common:api.invalidResponse`,t(r.language)?r.language:n()),{status:e,kind:`protocol`,data:{code:`INVALID_RESPONSE`}})}function l(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 u(e){let t=l(await e.text());return new s(t?.error||e.statusText||`HTTP ${e.status}`,{status:e.status,data:t,kind:`http`})}async function d(e){if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw c(e.status)}}async function f(t){if(typeof window>`u`||!window.__PISPER_MOBILE_APP__)return;let n=o(t,p);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 p=3e4;function m(e,t){return e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:t}async function h(e,t,n){let{body:r,data:i,headers:a,signal:o,timeout:c=p,...l}=t,d=i===void 0?r:i,h=new Headers(a),g;d!==void 0&&(d instanceof Blob?(g=d,h.has(`Content-Type`)||h.set(`Content-Type`,d.type||`application/octet-stream`)):(g=typeof d==`string`?d:JSON.stringify(d),h.has(`Content-Type`)||h.set(`Content-Type`,`application/json`)));let _=new AbortController,v=!1,y=()=>_.abort(o?.reason);o?.aborted?y():o?.addEventListener(`abort`,y,{once:!0});let b=c>0?setTimeout(()=>{v=!0,_.abort(new DOMException(`Request timed out`,`TimeoutError`))},c):void 0;try{if(await f(_.signal),_.signal.aborted)throw _.signal.reason;let t=await fetch(e,{...l,body:g,headers:h,signal:_.signal});if(!t.ok)throw await u(t);return await n(t)}catch(e){throw e instanceof s?e:v?new s(`请求超时 (${c}ms)`,{kind:`timeout`}):o?.aborted?new s(m(o.reason,`请求已取消`),{kind:`cancelled`}):new s(m(e,`请求失败 (network)`),{kind:`network`})}finally{b!==void 0&&clearTimeout(b),o?.removeEventListener(`abort`,y)}}function g(e,t={}){let{parse:n,...r}=t;return h(e,r,async e=>{let t=await d(e);return n?n(t):t})}function _(e,t={}){return h(e,t,e=>e.blob())}export{u as a,c as i,g as n,s as o,f as r,_ as t};