pisper 0.6.4 → 0.6.5

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 (95) hide show
  1. package/package.json +6 -6
  2. package/web/.vite/manifest.json +315 -377
  3. package/web/assets/{AppDialog-BOGrPFbo.js → AppDialog-DW5knado.js} +1 -1
  4. package/web/assets/{AppOverlays-D1vfPPIC.js → AppOverlays-Bp8RcUF5.js} +1 -1
  5. package/web/assets/AppSelect-D149YYg1.js +1 -0
  6. package/web/assets/{AppShortcuts-Dd4gu7qz.js → AppShortcuts-D1jjdZDS.js} +1 -1
  7. package/web/assets/{AssetsPage-BPhPo5eU.js → AssetsPage-C7AlHS3s.js} +1 -1
  8. package/web/assets/{ChannelsPage-Cu4v-GU2.js → ChannelsPage-BJltcbA8.js} +1 -1
  9. package/web/assets/ChatAppearancePage-BXvAK8yY.js +2 -0
  10. package/web/assets/{ChatHistoryPage-BYqJFbY5.js → ChatHistoryPage-D3fm9Tw9.js} +1 -1
  11. package/web/assets/ChatPage-BFJm1sNL.js +554 -0
  12. package/web/assets/{ConfigPage-Z-BQwP2X.js → ConfigPage-DLgNJdgQ.js} +1 -1
  13. package/web/assets/{DecisionsPage-Db6MIGD2.js → DecisionsPage-57a_ZuRk.js} +1 -1
  14. package/web/assets/{DesktopWindowControls-CBYGv94u.js → DesktopWindowControls-xHry1hUJ.js} +1 -1
  15. package/web/assets/{FloatingWidgets-dzsQIxAO.js → FloatingWidgets-CJQjpX-U.js} +1 -1
  16. package/web/assets/{GitDiffViewer-m5aLB7Li.js → GitDiffViewer-91SrTCWo.js} +1 -1
  17. package/web/assets/{MarkdownMessage-CA9ODRKk.js → MarkdownMessage-DeTzbwid.js} +1 -1
  18. package/web/assets/{McpPage-rerFxjYZ.js → McpPage-CTJ_aKOo.js} +1 -1
  19. package/web/assets/{MemoryPage-cukfU824.js → MemoryPage-DRTc4YT9.js} +1 -1
  20. package/web/assets/MobileContextScreen-CnaR6ssx.js +2 -0
  21. package/web/assets/{MobileNavigation-CEVgs1Ke.js → MobileNavigation-Cw7L9pSg.js} +1 -1
  22. package/web/assets/{PageHeader-DIs9bESb.js → PageHeader-B2qhKXvC.js} +1 -1
  23. package/web/assets/{PluginsPage-09Um3mY4.js → PluginsPage-DVCWLVRB.js} +1 -1
  24. package/web/assets/{QuickPromptIdeas-DGIL0nN7.js → QuickPromptIdeas-xQFMgSGF.js} +1 -1
  25. package/web/assets/{SchedulesPage-C75QUeB5.js → SchedulesPage-B_YjdfoV.js} +1 -1
  26. package/web/assets/SessionContextPanel-BwHEDkJE.js +1 -0
  27. package/web/assets/{SessionFilesPane-DPijesqH.js → SessionFilesPane-CUhqwp87.js} +2 -2
  28. package/web/assets/{SidebarMoreTools-D1nDS3i0.js → SidebarMoreTools-BHJuLoCs.js} +1 -1
  29. package/web/assets/SidebarRecentSessions-CVIFZ66b.js +2 -0
  30. package/web/assets/{SidebarSettingsButton-CRdV0Vft.js → SidebarSettingsButton-5N0RlmoI.js} +1 -1
  31. package/web/assets/{SidebarUpdateStatus-DgNJBwgT.js → SidebarUpdateStatus-CVxo4zaS.js} +1 -1
  32. package/web/assets/{SkillsPage-DLirgTyX.js → SkillsPage-KsP2YFgx.js} +1 -1
  33. package/web/assets/{TerminalPanel-CJPy4Qhs.js → TerminalPanel-PK0ubUYF.js} +1 -1
  34. package/web/assets/{ThemeToggleButton-C5QA5Kf2.js → ThemeToggleButton-BFby07PX.js} +1 -1
  35. package/web/assets/{WebDesktopPet-DgyHLE9y.js → WebDesktopPet-juirMq3L.js} +1 -1
  36. package/web/assets/{WorkbenchSidebarToggle-CcO1Al5A.js → WorkbenchSidebarToggle-B-YDZEZn.js} +1 -1
  37. package/web/assets/WorkflowsPage-Bsw_TnA6.js +1 -0
  38. package/web/assets/WorkspacePicker-CDJPgjpW.js +1 -0
  39. package/web/assets/{api-YI8_cHpR.js → api-DmuPqjXK.js} +1 -1
  40. package/web/assets/{app-primitives-SxfoFmHc.js → app-primitives-BBXY6U2S.js} +1 -1
  41. package/web/assets/catalog-Cs8cjmnr.js +1 -0
  42. package/web/assets/{chat-api-CqF-FICX.js → chat-api-cEcUMaNX.js} +1 -1
  43. package/web/assets/{client-store-BP_3-plw.js → client-store-CV7NgPf7.js} +1 -1
  44. package/web/assets/{component-api-CN9Tcn5p.js → component-api-guxJtKAP.js} +1 -1
  45. package/web/assets/{config-search-DOIJENN1.js → config-search-DzgcCirf.js} +1 -1
  46. package/web/assets/dist-DAs5KRGl.js +1 -0
  47. package/web/assets/dist-swnK7PHk.js +1 -0
  48. package/web/assets/{dropdown-menu-pKRdLJUe.js → dropdown-menu-DmL4pJTo.js} +1 -1
  49. package/web/assets/{events-KqdUtjsm.js → events-DjkpUZEu.js} +1 -1
  50. package/web/assets/{floating-widgets-store-Pjm1AdvO.js → floating-widgets-store-C3frcaki.js} +2 -2
  51. package/web/assets/{http-Be2GB6DH.js → http-C4bTWPzF.js} +1 -1
  52. package/web/assets/i18n-DKgrgj0w.js +1 -0
  53. package/web/assets/index-DJAtBVyc.css +2 -0
  54. package/web/assets/{index-AF29hfx9.js → index-Dm1UDg72.js} +2 -2
  55. package/web/assets/mount-app-Brtj-l-d.js +9 -0
  56. package/web/assets/panels-top-left-K8n2CefH.js +1 -0
  57. package/web/assets/{popover-CQqAaq-c.js → popover-BgmMy1PJ.js} +1 -1
  58. package/web/assets/public-BDXsCmtv.js +1 -0
  59. package/web/assets/{public-components-C4ndcOCF.js → public-components-w2PENGYg.js} +1 -1
  60. package/web/assets/{runtime-capabilities-store-CiL3ZPEo.js → runtime-capabilities-store-1N8axw9r.js} +1 -1
  61. package/web/assets/{session-change-summary-api--7cl4LDn.js → session-change-summary-api-BQILNzT4.js} +1 -1
  62. package/web/assets/{session-context-store-DJnHgWwb.js → session-context-store-DQHmNaRN.js} +1 -1
  63. package/web/assets/{session-list-DkNhT87s.js → session-list-JA31_Ff4.js} +1 -1
  64. package/web/assets/{settings-navigation-CI7Yt4Or.js → settings-navigation-dqR4yOPY.js} +1 -1
  65. package/web/assets/{shortcuts-C_Cph88H.js → shortcuts-CAX2SVZi.js} +1 -1
  66. package/web/assets/{side-chat-context-Dn8w9ut8.js → side-chat-context-B0oP2eS-.js} +2 -2
  67. package/web/assets/{speech-session-CoUr4n9Q.js → speech-session-C-vI4YXQ.js} +1 -1
  68. package/web/assets/{startup-queries-ByepQfGF.js → startup-queries-Ci3kCPI9.js} +1 -1
  69. package/web/assets/tabs-DQYVDdOp.js +1 -0
  70. package/web/assets/{ui-store-BGs-dEVz.js → ui-store-DLloh4Rv.js} +1 -1
  71. package/web/assets/{use-i18n-a84Zp9dV.js → use-i18n-C7st2Mx5.js} +1 -1
  72. package/web/assets/{useCustomUiComponents-BaQ_fwbr.js → useCustomUiComponents-B5fflBrn.js} +1 -1
  73. package/web/index.html +2 -2
  74. package/web/assets/AppSelect-BCexz4Ty.js +0 -1
  75. package/web/assets/ChatAppearancePage-BLRQ7aH6.js +0 -2
  76. package/web/assets/ChatPage-tqAIj2Go.js +0 -554
  77. package/web/assets/MobileContextScreen-W8V4H3Xv.js +0 -2
  78. package/web/assets/SessionContextPanel-oaKXyi7k.js +0 -1
  79. package/web/assets/SidebarRecentSessions-a7z2ZvDv.js +0 -2
  80. package/web/assets/WorkflowsPage-DrKHzJvb.js +0 -1
  81. package/web/assets/WorkspacePicker-B3liZkwe.js +0 -1
  82. package/web/assets/arrow-up-DST6-qVQ.js +0 -1
  83. package/web/assets/catalog-BPCnu3F8.js +0 -1
  84. package/web/assets/dist-B7rNRXig.js +0 -1
  85. package/web/assets/dist-C3P9WH0T.js +0 -1
  86. package/web/assets/dist-CXiO_DNx.js +0 -1
  87. package/web/assets/dist-D8Wfxh48.js +0 -1
  88. package/web/assets/folder-DPM8D8cf.js +0 -1
  89. package/web/assets/house-BNrzTkx9.js +0 -1
  90. package/web/assets/i18n-8nTnthu6.js +0 -1
  91. package/web/assets/index-BAmsg90v.css +0 -2
  92. package/web/assets/mount-app-WW5hteuX.js +0 -9
  93. package/web/assets/panels-top-left-BlZftvhg.js +0 -1
  94. package/web/assets/public-c36e4881.js +0 -1
  95. package/web/assets/tabs-B60r4YwO.js +0 -1
@@ -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-a84Zp9dV.js";import{n as i,r as a,t as o}from"./collapsible-C__hRcbA.js";import{t as s}from"./label-BzlNatZM.js";import{t as c}from"./AppSelect-BCexz4Ty.js";import{t as l}from"./createLucideIcon-Cd-3GVxJ.js";import{t as u}from"./chevron-down-CxtxIjiP.js";import{t as d}from"./circle-check-iEdCm3Pw.js";import{t as f}from"./circle-x-Ba4QL7Ec.js";import{t as p}from"./flask-conical-DhW5v7Zz.js";import{t as m}from"./key-round-C29uZbsf.js";import{t as h}from"./loader-circle-BOwQzHB-.js";import{t as g}from"./refresh-cw-TbWxTY4K.js";import{t as _}from"./save-CHBB52P8.js";import{i as v}from"./http-Be2GB6DH.js";import{t as y}from"./api-YI8_cHpR.js";import{t as b}from"./button-CQA36izu.js";import{t as x}from"./input-CvjGYteF.js";import{t as S}from"./field-3bN8nouy.js";import{l as C,n as w,o as T,s as E,t as D}from"./app-primitives-SxfoFmHc.js";var O=l(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),k=e(t(),1),A=Object.freeze({typesafe:Object.freeze({protocol:`typesafe-decisions`,endpointSuffixes:Object.freeze([`/systemone`,`/decisions`]),defaultBaseUrl:`https://api.typesafe.ai`,path:`/v1/systemone`,defaultModelId:`jev-1.13.0`}),openrouter:Object.freeze({protocol:`typesafe-decisions`,endpointSuffixes:Object.freeze([`/systemone`,`/decisions`]),defaultBaseUrl:`https://openrouter.ai/api`,path:`/alpha/decisions`,defaultModelId:`typesafe/jev-1.13`}),custom:Object.freeze({protocol:`typesafe-decisions`,endpointSuffixes:Object.freeze([`/systemone`,`/decisions`]),defaultBaseUrl:``,path:`/alpha/decisions`,defaultModelId:`typesafe/jev-1.13`})});function j(e){return typeof e==`string`&&Object.hasOwn(A,e)}var M=Object.keys(A).filter(j),N=Object.fromEntries(Object.entries(A).map(([e,t])=>[e,{baseUrl:t.defaultBaseUrl,modelId:t.defaultModelId}]));function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function F(e){if(!P(e)||!P(e.config))throw v();let{remote:t,delegate:n,approval:r}=e.config;if(!P(t)||!P(n))throw v();let{provider:i,baseUrl:a,modelId:o,hasKey:s}=t;if(!j(i)||typeof a!=`string`||typeof o!=`string`||typeof s!=`boolean`||typeof n.enabled!=`boolean`||typeof n.verifyActions!=`boolean`||typeof n.allowThreshold!=`number`||!Number.isFinite(n.allowThreshold)||n.allowThreshold<.5||n.allowThreshold>1)throw v();let c;if(r!==void 0){if(!P(r)||r.status!==`ready`&&r.status!==`model_unverified`&&r.status!==`threshold_required`)throw v();c=r.status}return{config:{remote:{provider:i,baseUrl:a,modelId:o,hasKey:s},delegate:{enabled:n.enabled,verifyActions:n.verifyActions,allowThreshold:n.allowThreshold},...c?{approval:{status:c}}:{}}}}async function I(e){return F(await y(`/api/decisions/status`,{signal:e}))}async function L(e){return F(await y(`/api/decisions/config`,{method:`PUT`,body:e}))}function R(e){return y(`/api/decisions/test`,{method:`POST`,body:{},signal:e,timeout:18e4})}function z(e,t){return e instanceof Error&&e.message?e.message:t}var B=n();function V({remote:e,disabled:t,notify:n,onSaved:s}){let{t:l}=r(),[h,v]=(0,k.useState)(e.provider),[y,E]=(0,k.useState)(e.baseUrl),[A,P]=(0,k.useState)(e.modelId),[F,I]=(0,k.useState)(``),[V,H]=(0,k.useState)(!1),[U,W]=(0,k.useState)({status:`idle`}),G=(0,k.useRef)(null);(0,k.useEffect)(()=>()=>G.current?.abort(),[]),(0,k.useEffect)(()=>{v(e.provider),E(e.baseUrl),P(e.modelId),I(``)},[e.provider,e.baseUrl,e.modelId,e.hasKey]),(0,k.useEffect)(()=>{G.current?.abort(),W({status:`idle`})},[h,y,A,F,e.hasKey]);let K=h!==e.provider||y.trim()!==e.baseUrl||A.trim()!==e.modelId||!!F.trim(),q=e=>e===`custom`?l(`decisions:remote.providerCustom`):e===`typesafe`?l(`decisions:remote.providerTypesafe`):e===`openrouter`?l(`decisions:remote.providerOpenrouter`):e,J=t||V||U.status===`running`,Y=N[h],X=!Y.baseUrl,Z=e=>{v(e),E(N[e].baseUrl),P(N[e].modelId)},Q=async e=>{H(!0),W({status:`idle`});try{s((await L({remote:e??{provider:h,baseUrl:y.trim(),modelId:A.trim(),apiKey:F.trim()}})).config),e?.apiKey===null?(I(``),n(l(`decisions:remote.keyCleared`),`success`)):n(l(`decisions:remote.saved`),`success`)}catch(e){n(z(e,l(`decisions:remote.saveFailed`)),`error`)}finally{H(!1)}},$=async()=>{if(K||!e.hasKey)return;G.current?.abort();let t=new AbortController;G.current=t,W({status:`running`});try{let e=await R(t.signal);if(t.signal.aborted)return;W({status:`ok`,result:e})}catch(e){if(t.signal.aborted)return;W({status:`error`,message:z(e,l(`decisions:remote.testFailed`))})}};return(0,B.jsxs)(D,{children:[(0,B.jsxs)(w,{children:[(0,B.jsx)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:(0,B.jsx)(T,{title:l(`decisions:remote.title`)})}),(0,B.jsxs)(C,{tone:e.hasKey?`green`:`gray`,children:[(0,B.jsx)(m,{size:11,className:`mr-1 inline`}),e.hasKey?l(`decisions:remote.keyConfigured`):l(`decisions:remote.keyMissing`)]})]}),(0,B.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[(0,B.jsxs)(S,{variant:`control`,className:`mt-0`,children:[l(`decisions:remote.provider`),(0,B.jsx)(c,{value:h,disabled:J,"aria-label":l(`decisions:remote.provider`),onChange:e=>{j(e.target.value)&&Z(e.target.value)},children:M.map(e=>(0,B.jsx)(`option`,{value:e,children:q(e)},e))})]}),(0,B.jsxs)(S,{variant:`control`,className:`mt-0`,children:[l(`decisions:remote.modelId`),(0,B.jsx)(x,{value:A,disabled:J,placeholder:l(`decisions:remote.modelIdPlaceholder`),onChange:e=>P(e.target.value)})]})]}),(X||y!==Y.baseUrl)&&(0,B.jsxs)(S,{variant:`control`,children:[l(`decisions:remote.baseUrl`),(0,B.jsx)(x,{value:y,disabled:J||!X,placeholder:`https://…`,onChange:e=>E(e.target.value)})]}),(0,B.jsxs)(S,{variant:`control`,children:[l(`decisions:remote.apiKey`),(0,B.jsx)(x,{type:`password`,autoComplete:`new-password`,value:F,disabled:J,placeholder:e.hasKey?l(`decisions:remote.apiKeyPlaceholderKeep`):l(`decisions:remote.apiKeyPlaceholderEnter`),onChange:e=>I(e.target.value)})]}),(0,B.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,B.jsxs)(b,{size:`sm`,disabled:J||!K,onClick:()=>void Q(),children:[V?(0,B.jsx)(g,{size:13,className:`animate-spin`}):(0,B.jsx)(_,{size:13}),l(`decisions:remote.save`)]}),(0,B.jsxs)(b,{size:`sm`,variant:`outline`,disabled:J||K||!e.hasKey,onClick:()=>void $(),children:[U.status===`running`?(0,B.jsx)(g,{size:13,className:`animate-spin`}):(0,B.jsx)(p,{size:13}),U.status===`running`?l(`decisions:remote.testing`):l(`decisions:remote.test`)]}),e.hasKey&&(0,B.jsxs)(b,{size:`sm`,variant:`ghost`,disabled:J,onClick:()=>void Q({apiKey:null}),children:[(0,B.jsx)(f,{size:13}),l(`decisions:remote.clearKey`)]})]}),K&&(0,B.jsx)(`p`,{className:`mt-2 text-xs text-content-muted`,children:l(`decisions:remote.saveBeforeTest`)}),U.status===`ok`&&(0,B.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 text-xs text-content-muted`,role:`status`,children:[(0,B.jsx)(d,{size:14,className:`shrink-0`}),l(`decisions:remote.testSucceeded`,{model:U.result.model??e.modelId})]}),U.status===`error`&&(0,B.jsxs)(o,{className:`mt-3 rounded-md border border-border bg-muted/40 text-content-muted`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3 p-3`,children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2 text-xs`,role:`status`,children:[(0,B.jsx)(O,{size:14,className:`shrink-0`}),l(`decisions:remote.testFailed`)]}),(0,B.jsx)(a,{asChild:!0,children:(0,B.jsxs)(b,{variant:`ghost`,size:`sm`,className:`group shrink-0`,children:[l(`decisions:remote.details`),(0,B.jsx)(u,{className:`size-3 transition-transform group-data-[state=open]:rotate-180`})]})})]}),(0,B.jsx)(i,{children:(0,B.jsx)(`p`,{className:`max-h-40 overflow-auto border-t border-border p-3 text-xs whitespace-pre-wrap [overflow-wrap:anywhere]`,children:U.message})})]})]})}function H({delegate:e,hasKey:t,approvalStatus:n=`ready`,notify:i,onSaved:a}){let{t:o}=r(),[c,l]=(0,k.useState)(!1),u=async e=>{l(!0);try{a((await L({delegate:e})).config),i(o(`decisions:delegate.saved`),`success`)}catch(e){i(z(e,o(`decisions:delegate.saveFailed`)),`error`)}finally{l(!1)}},d=e=>{let t=Number(e);return Number.isFinite(t)?t:null};return(0,B.jsxs)(D,{children:[(0,B.jsx)(w,{children:(0,B.jsx)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:(0,B.jsx)(T,{title:o(`decisions:delegate.title`)})})}),(0,B.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-4`,children:[(0,B.jsxs)(s,{htmlFor:`decision-delegation`,className:`flex flex-col items-start gap-1`,children:[(0,B.jsx)(`span`,{children:o(`decisions:delegate.enabled`)}),(0,B.jsx)(`span`,{className:`text-[11px] leading-normal font-normal text-content-muted`,children:o(`decisions:delegate.enabledHint`)})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[c&&(0,B.jsx)(h,{size:13,className:`animate-spin text-content-muted`}),(0,B.jsx)(E,{id:`decision-delegation`,value:e.enabled,disabled:c,onChange:e=>void u({enabled:e}),ariaLabel:o(`decisions:delegate.enabled`)})]})]}),(0,B.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-4`,children:[(0,B.jsxs)(s,{htmlFor:`decision-verification`,className:`flex flex-col items-start gap-1`,children:[(0,B.jsx)(`span`,{children:o(`decisions:delegate.verifyActions`)}),(0,B.jsx)(`span`,{className:`text-[11px] leading-normal font-normal text-content-muted`,children:o(`decisions:delegate.verifyActionsHint`)})]}),(0,B.jsx)(E,{id:`decision-verification`,value:e.verifyActions,disabled:c,onChange:e=>void u({verifyActions:e}),ariaLabel:o(`decisions:delegate.verifyActions`)})]}),e.enabled&&(0,B.jsxs)(`div`,{className:`mt-3 flex max-w-sm flex-col gap-1.5`,children:[(0,B.jsx)(s,{htmlFor:`delegate-allow`,children:o(`decisions:delegate.allowThreshold`)}),(0,B.jsx)(x,{id:`delegate-allow`,type:`number`,min:.5,max:1,step:.05,disabled:c,defaultValue:e.allowThreshold,onBlur:t=>{let n=d(t.target.value);n!==null&&n!==e.allowThreshold&&u({allowThreshold:n})}},e.allowThreshold),(0,B.jsx)(`p`,{className:`text-[11px] text-content-muted`,children:o(`decisions:delegate.allowThresholdHint`)})]}),e.enabled&&n!==`ready`&&(0,B.jsx)(`div`,{className:`mt-3 rounded-md bg-muted/40 p-3 text-xs text-content-muted`,role:`status`,children:(0,B.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[(0,B.jsx)(`p`,{children:o(n===`model_unverified`?`decisions:delegate.modelUnverified`:`decisions:delegate.thresholdRequired`)}),n===`threshold_required`&&(0,B.jsx)(b,{type:`button`,variant:`outline`,size:`sm`,disabled:c,onClick:()=>void u({allowThreshold:e.allowThreshold}),children:o(`decisions:delegate.confirmThreshold`)})]})}),(e.enabled||e.verifyActions)&&!t&&(0,B.jsx)(`p`,{className:`mt-3 text-xs text-content-muted`,role:`status`,children:o(`decisions:delegate.noKeyHint`)})]})}function U({notify:e}){let{t}=r(),[n,i]=(0,k.useState)(null),[a,o]=(0,k.useState)(``);return(0,k.useEffect)(()=>{let e=new AbortController;return I(e.signal).then(i).catch(n=>{e.signal.aborted||o(z(n,t(`decisions:page.loadFailed`)))}),()=>e.abort()},[]),a?(0,B.jsx)(`div`,{className:`mx-auto max-w-3xl p-6`,children:(0,B.jsx)(D,{className:`p-6 text-sm text-content-muted`,children:a})}):n?(0,B.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col gap-4 p-6 pt-0`,children:[(0,B.jsx)(V,{remote:n.config.remote,disabled:!1,notify:e,onSaved:e=>i(t=>t&&{...t,config:e})}),(0,B.jsx)(H,{delegate:n.config.delegate,approvalStatus:n.config.approval?.status,hasKey:n.config.remote.hasKey,notify:e,onSaved:e=>i(t=>t&&{...t,config:e})})]}):(0,B.jsx)(`div`,{className:`flex items-center justify-center p-12 text-content-muted`,children:(0,B.jsx)(h,{className:`size-5 animate-spin`})})}export{U as DecisionsPage};
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-C7st2Mx5.js";import{n as i,r as a,t as o}from"./collapsible-C__hRcbA.js";import{t as s}from"./label-BzlNatZM.js";import{t as c}from"./AppSelect-D149YYg1.js";import{t as l}from"./createLucideIcon-Cd-3GVxJ.js";import{t as u}from"./chevron-down-CxtxIjiP.js";import{t as d}from"./circle-check-iEdCm3Pw.js";import{t as f}from"./circle-x-Ba4QL7Ec.js";import{t as p}from"./flask-conical-DhW5v7Zz.js";import{t as m}from"./key-round-C29uZbsf.js";import{t as h}from"./loader-circle-BOwQzHB-.js";import{t as g}from"./refresh-cw-TbWxTY4K.js";import{t as _}from"./save-CHBB52P8.js";import{i as v}from"./http-C4bTWPzF.js";import{t as y}from"./api-DmuPqjXK.js";import{t as b}from"./button-CQA36izu.js";import{t as x}from"./input-CvjGYteF.js";import{t as S}from"./field-3bN8nouy.js";import{l as C,n as w,o as T,s as E,t as D}from"./app-primitives-BBXY6U2S.js";var O=l(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),k=e(t(),1),A=Object.freeze({typesafe:Object.freeze({protocol:`typesafe-decisions`,endpointSuffixes:Object.freeze([`/systemone`,`/decisions`]),defaultBaseUrl:`https://api.typesafe.ai`,path:`/v1/systemone`,defaultModelId:`jev-1.13.0`}),openrouter:Object.freeze({protocol:`typesafe-decisions`,endpointSuffixes:Object.freeze([`/systemone`,`/decisions`]),defaultBaseUrl:`https://openrouter.ai/api`,path:`/alpha/decisions`,defaultModelId:`typesafe/jev-1.13`}),custom:Object.freeze({protocol:`typesafe-decisions`,endpointSuffixes:Object.freeze([`/systemone`,`/decisions`]),defaultBaseUrl:``,path:`/alpha/decisions`,defaultModelId:`typesafe/jev-1.13`})});function j(e){return typeof e==`string`&&Object.hasOwn(A,e)}var M=Object.keys(A).filter(j),N=Object.fromEntries(Object.entries(A).map(([e,t])=>[e,{baseUrl:t.defaultBaseUrl,modelId:t.defaultModelId}]));function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function F(e){if(!P(e)||!P(e.config))throw v();let{remote:t,delegate:n,approval:r}=e.config;if(!P(t)||!P(n))throw v();let{provider:i,baseUrl:a,modelId:o,hasKey:s}=t;if(!j(i)||typeof a!=`string`||typeof o!=`string`||typeof s!=`boolean`||typeof n.enabled!=`boolean`||typeof n.verifyActions!=`boolean`||typeof n.allowThreshold!=`number`||!Number.isFinite(n.allowThreshold)||n.allowThreshold<.5||n.allowThreshold>1)throw v();let c;if(r!==void 0){if(!P(r)||r.status!==`ready`&&r.status!==`model_unverified`&&r.status!==`threshold_required`)throw v();c=r.status}return{config:{remote:{provider:i,baseUrl:a,modelId:o,hasKey:s},delegate:{enabled:n.enabled,verifyActions:n.verifyActions,allowThreshold:n.allowThreshold},...c?{approval:{status:c}}:{}}}}async function I(e){return F(await y(`/api/decisions/status`,{signal:e}))}async function L(e){return F(await y(`/api/decisions/config`,{method:`PUT`,body:e}))}function R(e){return y(`/api/decisions/test`,{method:`POST`,body:{},signal:e,timeout:18e4})}function z(e,t){return e instanceof Error&&e.message?e.message:t}var B=n();function V({remote:e,disabled:t,notify:n,onSaved:s}){let{t:l}=r(),[h,v]=(0,k.useState)(e.provider),[y,E]=(0,k.useState)(e.baseUrl),[A,P]=(0,k.useState)(e.modelId),[F,I]=(0,k.useState)(``),[V,H]=(0,k.useState)(!1),[U,W]=(0,k.useState)({status:`idle`}),G=(0,k.useRef)(null);(0,k.useEffect)(()=>()=>G.current?.abort(),[]),(0,k.useEffect)(()=>{v(e.provider),E(e.baseUrl),P(e.modelId),I(``)},[e.provider,e.baseUrl,e.modelId,e.hasKey]),(0,k.useEffect)(()=>{G.current?.abort(),W({status:`idle`})},[h,y,A,F,e.hasKey]);let K=h!==e.provider||y.trim()!==e.baseUrl||A.trim()!==e.modelId||!!F.trim(),q=e=>e===`custom`?l(`decisions:remote.providerCustom`):e===`typesafe`?l(`decisions:remote.providerTypesafe`):e===`openrouter`?l(`decisions:remote.providerOpenrouter`):e,J=t||V||U.status===`running`,Y=N[h],X=!Y.baseUrl,Z=e=>{v(e),E(N[e].baseUrl),P(N[e].modelId)},Q=async e=>{H(!0),W({status:`idle`});try{s((await L({remote:e??{provider:h,baseUrl:y.trim(),modelId:A.trim(),apiKey:F.trim()}})).config),e?.apiKey===null?(I(``),n(l(`decisions:remote.keyCleared`),`success`)):n(l(`decisions:remote.saved`),`success`)}catch(e){n(z(e,l(`decisions:remote.saveFailed`)),`error`)}finally{H(!1)}},$=async()=>{if(K||!e.hasKey)return;G.current?.abort();let t=new AbortController;G.current=t,W({status:`running`});try{let e=await R(t.signal);if(t.signal.aborted)return;W({status:`ok`,result:e})}catch(e){if(t.signal.aborted)return;W({status:`error`,message:z(e,l(`decisions:remote.testFailed`))})}};return(0,B.jsxs)(D,{children:[(0,B.jsxs)(w,{children:[(0,B.jsx)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:(0,B.jsx)(T,{title:l(`decisions:remote.title`)})}),(0,B.jsxs)(C,{tone:e.hasKey?`green`:`gray`,children:[(0,B.jsx)(m,{size:11,className:`mr-1 inline`}),e.hasKey?l(`decisions:remote.keyConfigured`):l(`decisions:remote.keyMissing`)]})]}),(0,B.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[(0,B.jsxs)(S,{variant:`control`,className:`mt-0`,children:[l(`decisions:remote.provider`),(0,B.jsx)(c,{value:h,disabled:J,"aria-label":l(`decisions:remote.provider`),onChange:e=>{j(e.target.value)&&Z(e.target.value)},children:M.map(e=>(0,B.jsx)(`option`,{value:e,children:q(e)},e))})]}),(0,B.jsxs)(S,{variant:`control`,className:`mt-0`,children:[l(`decisions:remote.modelId`),(0,B.jsx)(x,{value:A,disabled:J,placeholder:l(`decisions:remote.modelIdPlaceholder`),onChange:e=>P(e.target.value)})]})]}),(X||y!==Y.baseUrl)&&(0,B.jsxs)(S,{variant:`control`,children:[l(`decisions:remote.baseUrl`),(0,B.jsx)(x,{value:y,disabled:J||!X,placeholder:`https://…`,onChange:e=>E(e.target.value)})]}),(0,B.jsxs)(S,{variant:`control`,children:[l(`decisions:remote.apiKey`),(0,B.jsx)(x,{type:`password`,autoComplete:`new-password`,value:F,disabled:J,placeholder:e.hasKey?l(`decisions:remote.apiKeyPlaceholderKeep`):l(`decisions:remote.apiKeyPlaceholderEnter`),onChange:e=>I(e.target.value)})]}),(0,B.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,B.jsxs)(b,{size:`sm`,disabled:J||!K,onClick:()=>void Q(),children:[V?(0,B.jsx)(g,{size:13,className:`animate-spin`}):(0,B.jsx)(_,{size:13}),l(`decisions:remote.save`)]}),(0,B.jsxs)(b,{size:`sm`,variant:`outline`,disabled:J||K||!e.hasKey,onClick:()=>void $(),children:[U.status===`running`?(0,B.jsx)(g,{size:13,className:`animate-spin`}):(0,B.jsx)(p,{size:13}),U.status===`running`?l(`decisions:remote.testing`):l(`decisions:remote.test`)]}),e.hasKey&&(0,B.jsxs)(b,{size:`sm`,variant:`ghost`,disabled:J,onClick:()=>void Q({apiKey:null}),children:[(0,B.jsx)(f,{size:13}),l(`decisions:remote.clearKey`)]})]}),K&&(0,B.jsx)(`p`,{className:`mt-2 text-xs text-content-muted`,children:l(`decisions:remote.saveBeforeTest`)}),U.status===`ok`&&(0,B.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 text-xs text-content-muted`,role:`status`,children:[(0,B.jsx)(d,{size:14,className:`shrink-0`}),l(`decisions:remote.testSucceeded`,{model:U.result.model??e.modelId})]}),U.status===`error`&&(0,B.jsxs)(o,{className:`mt-3 rounded-md border border-border bg-muted/40 text-content-muted`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3 p-3`,children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2 text-xs`,role:`status`,children:[(0,B.jsx)(O,{size:14,className:`shrink-0`}),l(`decisions:remote.testFailed`)]}),(0,B.jsx)(a,{asChild:!0,children:(0,B.jsxs)(b,{variant:`ghost`,size:`sm`,className:`group shrink-0`,children:[l(`decisions:remote.details`),(0,B.jsx)(u,{className:`size-3 transition-transform group-data-[state=open]:rotate-180`})]})})]}),(0,B.jsx)(i,{children:(0,B.jsx)(`p`,{className:`max-h-40 overflow-auto border-t border-border p-3 text-xs whitespace-pre-wrap [overflow-wrap:anywhere]`,children:U.message})})]})]})}function H({delegate:e,hasKey:t,approvalStatus:n=`ready`,notify:i,onSaved:a}){let{t:o}=r(),[c,l]=(0,k.useState)(!1),u=async e=>{l(!0);try{a((await L({delegate:e})).config),i(o(`decisions:delegate.saved`),`success`)}catch(e){i(z(e,o(`decisions:delegate.saveFailed`)),`error`)}finally{l(!1)}},d=e=>{let t=Number(e);return Number.isFinite(t)?t:null};return(0,B.jsxs)(D,{children:[(0,B.jsx)(w,{children:(0,B.jsx)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:(0,B.jsx)(T,{title:o(`decisions:delegate.title`)})})}),(0,B.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-4`,children:[(0,B.jsxs)(s,{htmlFor:`decision-delegation`,className:`flex flex-col items-start gap-1`,children:[(0,B.jsx)(`span`,{children:o(`decisions:delegate.enabled`)}),(0,B.jsx)(`span`,{className:`text-[11px] leading-normal font-normal text-content-muted`,children:o(`decisions:delegate.enabledHint`)})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[c&&(0,B.jsx)(h,{size:13,className:`animate-spin text-content-muted`}),(0,B.jsx)(E,{id:`decision-delegation`,value:e.enabled,disabled:c,onChange:e=>void u({enabled:e}),ariaLabel:o(`decisions:delegate.enabled`)})]})]}),(0,B.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-4`,children:[(0,B.jsxs)(s,{htmlFor:`decision-verification`,className:`flex flex-col items-start gap-1`,children:[(0,B.jsx)(`span`,{children:o(`decisions:delegate.verifyActions`)}),(0,B.jsx)(`span`,{className:`text-[11px] leading-normal font-normal text-content-muted`,children:o(`decisions:delegate.verifyActionsHint`)})]}),(0,B.jsx)(E,{id:`decision-verification`,value:e.verifyActions,disabled:c,onChange:e=>void u({verifyActions:e}),ariaLabel:o(`decisions:delegate.verifyActions`)})]}),e.enabled&&(0,B.jsxs)(`div`,{className:`mt-3 flex max-w-sm flex-col gap-1.5`,children:[(0,B.jsx)(s,{htmlFor:`delegate-allow`,children:o(`decisions:delegate.allowThreshold`)}),(0,B.jsx)(x,{id:`delegate-allow`,type:`number`,min:.5,max:1,step:.05,disabled:c,defaultValue:e.allowThreshold,onBlur:t=>{let n=d(t.target.value);n!==null&&n!==e.allowThreshold&&u({allowThreshold:n})}},e.allowThreshold),(0,B.jsx)(`p`,{className:`text-[11px] text-content-muted`,children:o(`decisions:delegate.allowThresholdHint`)})]}),e.enabled&&n!==`ready`&&(0,B.jsx)(`div`,{className:`mt-3 rounded-md bg-muted/40 p-3 text-xs text-content-muted`,role:`status`,children:(0,B.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[(0,B.jsx)(`p`,{children:o(n===`model_unverified`?`decisions:delegate.modelUnverified`:`decisions:delegate.thresholdRequired`)}),n===`threshold_required`&&(0,B.jsx)(b,{type:`button`,variant:`outline`,size:`sm`,disabled:c,onClick:()=>void u({allowThreshold:e.allowThreshold}),children:o(`decisions:delegate.confirmThreshold`)})]})}),(e.enabled||e.verifyActions)&&!t&&(0,B.jsx)(`p`,{className:`mt-3 text-xs text-content-muted`,role:`status`,children:o(`decisions:delegate.noKeyHint`)})]})}function U({notify:e}){let{t}=r(),[n,i]=(0,k.useState)(null),[a,o]=(0,k.useState)(``);return(0,k.useEffect)(()=>{let e=new AbortController;return I(e.signal).then(i).catch(n=>{e.signal.aborted||o(z(n,t(`decisions:page.loadFailed`)))}),()=>e.abort()},[]),a?(0,B.jsx)(`div`,{className:`mx-auto max-w-3xl p-6`,children:(0,B.jsx)(D,{className:`p-6 text-sm text-content-muted`,children:a})}):n?(0,B.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col gap-4 p-6 pt-0`,children:[(0,B.jsx)(V,{remote:n.config.remote,disabled:!1,notify:e,onSaved:e=>i(t=>t&&{...t,config:e})}),(0,B.jsx)(H,{delegate:n.config.delegate,approvalStatus:n.config.approval?.status,hasKey:n.config.remote.hasKey,notify:e,onSaved:e=>i(t=>t&&{...t,config:e})})]}):(0,B.jsx)(`div`,{className:`flex items-center justify-center p-12 text-content-muted`,children:(0,B.jsx)(h,{className:`size-5 animate-spin`})})}export{U as DecisionsPage};
@@ -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-a84Zp9dV.js";import{t as i}from"./minus-BuutOHSj.js";import{t as a}from"./square-bHHVTT3G.js";import{t as o}from"./x-07u4-129.js";var s=e(t(),1),c=n();function l(){let{t:e}=r(),t={minimize:e(`navigation:window.minimize`),maximize:e(`navigation:window.maximize`),close:e(`navigation:window.close`)},n=window.pisperDesktop;return(0,s.useEffect)(()=>{if(!n?.customTitlebar||!n.windowAction)return;let e=e=>{let t=e.target instanceof Element?e.target:null;e.button!==0||!t?.closest(`[data-window-drag-region]`)||t.closest(`button, a, input, select, textarea, [role="button"], [role="tab"], [contenteditable="true"]`)||e.type===`mousedown`&&e.detail>1||n.windowAction?.(e.type===`dblclick`?`maximize`:`drag`).catch(()=>{})};return document.addEventListener(`mousedown`,e),document.addEventListener(`dblclick`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`dblclick`,e)}},[n]),!n?.customTitlebar||!n.windowAction?null:(0,c.jsx)(`div`,{className:`desktop-window-controls absolute right-0 top-0 z-40 flex h-12`,"aria-label":e(`navigation:window.controls`),children:[`minimize`,`maximize`,`close`].map(e=>{let r=e===`minimize`?i:e===`maximize`?a:o;return(0,c.jsx)(`button`,{type:`button`,title:t[e],"aria-label":t[e],className:`grid w-11 place-items-center text-muted-foreground ${e===`close`?`hover:bg-red-600 hover:text-white`:`hover:bg-foreground/10`}`,onClick:()=>void n.windowAction?.(e).catch(()=>{}),children:(0,c.jsx)(r,{size:e===`maximize`?12:15})},e)})})}export{l as DesktopWindowControls};
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-C7st2Mx5.js";import{t as i}from"./minus-BuutOHSj.js";import{t as a}from"./square-bHHVTT3G.js";import{t as o}from"./x-07u4-129.js";var s=e(t(),1),c=n();function l(){let{t:e}=r(),t={minimize:e(`navigation:window.minimize`),maximize:e(`navigation:window.maximize`),close:e(`navigation:window.close`)},n=window.pisperDesktop;return(0,s.useEffect)(()=>{if(!n?.customTitlebar||!n.windowAction)return;let e=e=>{let t=e.target instanceof Element?e.target:null;e.button!==0||!t?.closest(`[data-window-drag-region]`)||t.closest(`button, a, input, select, textarea, [role="button"], [role="tab"], [contenteditable="true"]`)||e.type===`mousedown`&&e.detail>1||n.windowAction?.(e.type===`dblclick`?`maximize`:`drag`).catch(()=>{})};return document.addEventListener(`mousedown`,e),document.addEventListener(`dblclick`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`dblclick`,e)}},[n]),!n?.customTitlebar||!n.windowAction?null:(0,c.jsx)(`div`,{className:`desktop-window-controls absolute right-0 top-0 z-40 flex h-12`,"aria-label":e(`navigation:window.controls`),children:[`minimize`,`maximize`,`close`].map(e=>{let r=e===`minimize`?i:e===`maximize`?a:o;return(0,c.jsx)(`button`,{type:`button`,title:t[e],"aria-label":t[e],className:`grid w-11 place-items-center text-muted-foreground ${e===`close`?`hover:bg-red-600 hover:text-white`:`hover:bg-foreground/10`}`,onClick:()=>void n.windowAction?.(e).catch(()=>{}),children:(0,c.jsx)(r,{size:e===`maximize`?12:15})},e)})})}export{l as DesktopWindowControls};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-AF29hfx9.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-a84Zp9dV.js";import{a,i as o,o as s}from"./vendor-state-GkUciC5H.js";import{t as c}from"./utils-C8uzG5AZ.js";import{t as l}from"./grip-vertical-B__LYT0s.js";import{t as u}from"./rotate-ccw-C0v8V77_.js";import{t as d}from"./x-07u4-129.js";import{n as f}from"./use-mobile-YXncArOq.js";import{n as p}from"./client-store-BP_3-plw.js";import{t as m}from"./button-CQA36izu.js";import{n as h,r as g,t as _}from"./floating-widgets-store-Pjm1AdvO.js";import{t as v}from"./useCustomUiComponents-BaQ_fwbr.js";var y=e(n(),1),b=r();function x({componentId:e,notify:t,preview:n=!1}){let{t:r}=i(),a=v(),o=a.data?.components.find(t=>t.id===e);return o?(0,b.jsx)(g,{component:o,notify:t,preview:n},o.id):(0,b.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,b.jsx)(`p`,{className:`max-w-full break-words`,children:a.isPending?r(`custom-ui:customUiPage.loading`):a.error?r(`custom-ui:widget.catalogFailed`):r(`custom-ui:widget.missing`,{id:e})}),!a.isPending&&(0,b.jsx)(m,{variant:`outline`,size:`sm`,disabled:a.isFetching,onClick:()=>void a.refetch(),children:r(`custom-ui:widget.retry`)})]})}var S={x:.5,y:0},C=e=>Math.min(1,Math.max(0,e)),w=e=>Number.isFinite(e)?Math.max(0,e):0;function T(e,t,n,r=0){if(!n&&r===0)return S;let i=Math.max(0,w(e.width)-w(t.width)),a=Math.max(0,w(e.height)-w(t.height)),o=(n?n.x+n.width/2:e.width/2)-t.width/2,s=n?n.y+n.height/2-t.height/2:0;if(r>0){let e=Math.max(0,n?n.y+n.height+12:76),i=t.height+12,c=Math.max(0,Math.floor((a-e)/i)+1);if(r<=c)s=e+(r-1)*i;else{let e=r-c;o+=24*e,s=Math.max(0,a-(e-1)*24%Math.max(1,a))}}return{x:i?C(o/i):.5,y:a?C(s/a):0}}function E(e,t){return`${t?`mobile`:`desktop`}:${e}`}function D(e,t,n){return{x:C(e.x)*Math.max(0,w(t.width)-w(n.width)),y:C(e.y)*Math.max(0,w(t.height)-w(n.height))}}function O(e,t,n,r){let i=D(e,n,r),a=Math.max(0,w(n.width)-w(r.width)),o=Math.max(0,w(n.height)-w(r.height));return{x:C(a?(i.x+t.x)/a:e.x),y:C(o?(i.y+t.y)/o:e.y)}}function k(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function A(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:C(n.position.x),y:C(n.position.y)}),t.size>128&&t.delete(t.keys().next().value??``));return[...t].map(([e,t])=>({key:e,position:t}))}function j(e,t,n){return A([...e.filter(e=>e.key!==t),{key:t,position:n}])}var M=o(()=>({getItem:e=>{try{return t.getItem(e)}catch{return null}},setItem:(e,n)=>{try{t.setItem(e,n)}catch{}},removeItem:e=>{try{t.removeItem(e)}catch{}}})),N=s()(a(e=>({positions:[],setPosition:(t,n)=>e(e=>({positions:j(e.positions,t,n)})),resetPosition:t=>e(e=>({positions:e.positions.filter(e=>e.key!==t)}))}),{name:`pisper-floating-placement`,version:1,storage:M,partialize:({positions:e})=>({positions:e}),merge:(e,t)=>({...t,positions:A(e&&typeof e==`object`&&`positions`in e?e.positions:void 0)})})),P={width:0,height:0};function F({id:e,componentId:t,boundaryRef:n,anchorRef:r,notify:a,onClose:o,stackIndex:s}){let{t:m}=i(),h=f(),g=p(),_=E(e,h||g),v=N(e=>e.positions.find(e=>e.key===_)?.position),S=(0,y.useRef)(null),C=(0,y.useRef)(null),[w,k]=(0,y.useState)(null),[A,j]=(0,y.useState)({bounds:P,island:P}),M=v??T(A.bounds,A.island,A.anchor,s),F=(0,y.useId)();(0,y.useEffect)(()=>{let e=n.current,t=S.current;if(!e||!t)return;let i=null,a=new ResizeObserver(()=>s()),o=null,s=()=>{let n=r?.current;n!==i&&(i&&a.unobserve(i),i=n??null,n&&(a.observe(n),o?.disconnect(),o=null));let s=e.getBoundingClientRect(),c=n?.getBoundingClientRect(),l={bounds:{width:e.clientWidth,height:e.clientHeight},island:{width:t.offsetWidth,height:t.offsetHeight},anchor:c&&c.width>0&&c.height>0?{x:c.left-s.left,y:c.top-s.top,width:c.width,height:c.height}:void 0};j(e=>e.bounds.width===l.bounds.width&&e.bounds.height===l.bounds.height&&e.island.width===l.island.width&&e.island.height===l.island.height&&e.anchor?.x===l.anchor?.x&&e.anchor?.y===l.anchor?.y&&e.anchor?.width===l.anchor?.width&&e.anchor?.height===l.anchor?.height?e:l)};return s(),a.observe(e),a.observe(t),r&&!r.current&&(o=new MutationObserver(()=>{r.current&&s()}),o.observe(document.body,{childList:!0,subtree:!0})),window.addEventListener(`resize`,s),window.addEventListener(`scroll`,s,!0),()=>{a.disconnect(),o?.disconnect(),window.removeEventListener(`resize`,s),window.removeEventListener(`scroll`,s,!0)}},[n,r]),(0,y.useEffect)(()=>(k(null),()=>{let e=C.current;C.current=null,e?.element.hasPointerCapture(e.pointerId)&&e.element.releasePointerCapture(e.pointerId)}),[_]);let I=(e,t)=>{let n=C.current;!n||n.pointerId!==e.pointerId||(C.current=null,t&&N.getState().setPosition(_,n.latest),k(null),n.element.hasPointerCapture(n.pointerId)&&n.element.releasePointerCapture(n.pointerId))},L=()=>N.getState().resetPosition(_),R=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(),L();return}let r=n[e.key];r&&(e.preventDefault(),N.getState().setPosition(_,O(M,r,A.bounds,A.island)))},z=D(w??M,A.bounds,A.island);return(0,b.jsxs)(`div`,{ref:S,"data-floating-widget":e,className:c(`pointer-events-auto absolute flex w-[380px] max-w-full flex-col`,t===`pisper-island`&&`max-[650px]:w-[210px] max-[650px]:px-5`),style:{left:z.x,top:z.y,maxHeight:`100%`,visibility:A.bounds.width>0?`visible`:`hidden`},children:[(0,b.jsxs)(`div`,{className:`absolute left-0 top-1/2 z-10 flex -translate-y-1/2 flex-col items-center gap-1`,children:[(0,b.jsx)(`button`,{type:`button`,"aria-label":m(`custom-ui:floating.move`),"aria-describedby":F,title:m(`custom-ui:floating.moveHint`),className:`flex h-6 w-5 touch-none items-center justify-center rounded-full bg-background/85 text-muted-foreground shadow-sm outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,style:{cursor:w?`grabbing`:`grab`},onKeyDown:R,onPointerDown:e=>{e.button!==0||C.current||(e.preventDefault(),e.currentTarget.focus({preventScroll:!0}),e.currentTarget.setPointerCapture(e.pointerId),C.current={pointerId:e.pointerId,element:e.currentTarget,x:e.clientX,y:e.clientY,initial:M,latest:M},k(M))},onPointerMove:e=>{let t=C.current;if(!t||t.pointerId!==e.pointerId)return;let n=O(t.initial,{x:e.clientX-t.x,y:e.clientY-t.y},A.bounds,A.island);t.latest=n,k(n)},onPointerUp:e=>I(e,!0),onPointerCancel:e=>I(e,!1),onLostPointerCapture:e=>I(e,!1),children:(0,b.jsx)(l,{className:`size-3`})}),(0,b.jsx)(`button`,{type:`button`,"aria-label":m(`custom-ui:floating.resetPosition`),title:m(`custom-ui:floating.resetPosition`),onClick:L,className:`flex size-5 items-center justify-center rounded-full bg-background/85 text-muted-foreground shadow-sm outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,children:(0,b.jsx)(u,{className:`size-3`})}),(0,b.jsx)(`span`,{id:F,className:`sr-only`,children:m(`custom-ui:floating.moveHint`)})]}),o&&(0,b.jsx)(`button`,{type:`button`,"aria-label":m(`custom-ui:floating.close`),title:m(`custom-ui:floating.close`),onClick:()=>o(t),className:`absolute right-0 top-1/2 z-10 flex size-5 -translate-y-1/2 items-center justify-center rounded-full bg-background/85 text-muted-foreground shadow-sm outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,children:(0,b.jsx)(d,{className:`size-3`})}),(0,b.jsx)(`div`,{className:`flex min-h-0 flex-col overflow-hidden`,style:{height:t===`pisper-island`?64:240},children:(0,b.jsx)(x,{componentId:t,notify:a})})]})}function I({widgets:e,notify:t,anchorRef:n,onClose:r}){let i=(0,y.useRef)(null),a=e.filter(e=>e.componentId!==`pisper-island`);return(0,b.jsx)(`div`,{ref:i,className:`pointer-events-none fixed inset-x-2 bottom-2 top-0 z-40 overflow-hidden`,"data-floating-custom-ui":!0,children:e.map(e=>(0,b.jsx)(F,{id:e.id,componentId:e.componentId,boundaryRef:i,notify:t,anchorRef:n,onClose:r,stackIndex:e.componentId===`pisper-island`?0:a.findIndex(t=>t.id===e.id)+1},e.id))})}function L({anchorRef:e,notify:t}){let{t:n}=i(),r=h(e=>e.prefs),a=(0,y.useMemo)(()=>_([],r).map(e=>({id:e,componentId:e})),[r]);return(0,b.jsx)(I,{widgets:a,anchorRef:e,notify:t,onClose:e=>{try{h.getState().setVisible(e,!1),h.getState().storageError&&t(n(`custom-ui:floating.storageFailed`))}catch{t(n(`custom-ui:floating.storageFailed`))}}})}export{L as FloatingWidgets};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-Dm1UDg72.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-C7st2Mx5.js";import{a,i as o,o as s}from"./vendor-state-GkUciC5H.js";import{t as c}from"./utils-C8uzG5AZ.js";import{t as l}from"./grip-vertical-B__LYT0s.js";import{t as u}from"./rotate-ccw-C0v8V77_.js";import{t as d}from"./x-07u4-129.js";import{n as f}from"./use-mobile-YXncArOq.js";import{n as p}from"./client-store-CV7NgPf7.js";import{t as m}from"./button-CQA36izu.js";import{n as h,r as g,t as _}from"./floating-widgets-store-C3frcaki.js";import{t as v}from"./useCustomUiComponents-B5fflBrn.js";var y=e(n(),1),b=r();function x({componentId:e,notify:t,preview:n=!1}){let{t:r}=i(),a=v(),o=a.data?.components.find(t=>t.id===e);return o?(0,b.jsx)(g,{component:o,notify:t,preview:n},o.id):(0,b.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,b.jsx)(`p`,{className:`max-w-full break-words`,children:a.isPending?r(`custom-ui:customUiPage.loading`):a.error?r(`custom-ui:widget.catalogFailed`):r(`custom-ui:widget.missing`,{id:e})}),!a.isPending&&(0,b.jsx)(m,{variant:`outline`,size:`sm`,disabled:a.isFetching,onClick:()=>void a.refetch(),children:r(`custom-ui:widget.retry`)})]})}var S={x:.5,y:0},C=e=>Math.min(1,Math.max(0,e)),w=e=>Number.isFinite(e)?Math.max(0,e):0;function T(e,t,n,r=0){if(!n&&r===0)return S;let i=Math.max(0,w(e.width)-w(t.width)),a=Math.max(0,w(e.height)-w(t.height)),o=(n?n.x+n.width/2:e.width/2)-t.width/2,s=n?n.y+n.height/2-t.height/2:0;if(r>0){let e=Math.max(0,n?n.y+n.height+12:76),i=t.height+12,c=Math.max(0,Math.floor((a-e)/i)+1);if(r<=c)s=e+(r-1)*i;else{let e=r-c;o+=24*e,s=Math.max(0,a-(e-1)*24%Math.max(1,a))}}return{x:i?C(o/i):.5,y:a?C(s/a):0}}function E(e,t){return`${t?`mobile`:`desktop`}:${e}`}function D(e,t,n){return{x:C(e.x)*Math.max(0,w(t.width)-w(n.width)),y:C(e.y)*Math.max(0,w(t.height)-w(n.height))}}function O(e,t,n,r){let i=D(e,n,r),a=Math.max(0,w(n.width)-w(r.width)),o=Math.max(0,w(n.height)-w(r.height));return{x:C(a?(i.x+t.x)/a:e.x),y:C(o?(i.y+t.y)/o:e.y)}}function k(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function A(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:C(n.position.x),y:C(n.position.y)}),t.size>128&&t.delete(t.keys().next().value??``));return[...t].map(([e,t])=>({key:e,position:t}))}function j(e,t,n){return A([...e.filter(e=>e.key!==t),{key:t,position:n}])}var M=o(()=>({getItem:e=>{try{return t.getItem(e)}catch{return null}},setItem:(e,n)=>{try{t.setItem(e,n)}catch{}},removeItem:e=>{try{t.removeItem(e)}catch{}}})),N=s()(a(e=>({positions:[],setPosition:(t,n)=>e(e=>({positions:j(e.positions,t,n)})),resetPosition:t=>e(e=>({positions:e.positions.filter(e=>e.key!==t)}))}),{name:`pisper-floating-placement`,version:1,storage:M,partialize:({positions:e})=>({positions:e}),merge:(e,t)=>({...t,positions:A(e&&typeof e==`object`&&`positions`in e?e.positions:void 0)})})),P={width:0,height:0};function F({id:e,componentId:t,boundaryRef:n,anchorRef:r,notify:a,onClose:o,stackIndex:s}){let{t:m}=i(),h=f(),g=p(),_=E(e,h||g),v=N(e=>e.positions.find(e=>e.key===_)?.position),S=(0,y.useRef)(null),C=(0,y.useRef)(null),[w,k]=(0,y.useState)(null),[A,j]=(0,y.useState)({bounds:P,island:P}),M=v??T(A.bounds,A.island,A.anchor,s),F=(0,y.useId)();(0,y.useEffect)(()=>{let e=n.current,t=S.current;if(!e||!t)return;let i=null,a=new ResizeObserver(()=>s()),o=null,s=()=>{let n=r?.current;n!==i&&(i&&a.unobserve(i),i=n??null,n&&(a.observe(n),o?.disconnect(),o=null));let s=e.getBoundingClientRect(),c=n?.getBoundingClientRect(),l={bounds:{width:e.clientWidth,height:e.clientHeight},island:{width:t.offsetWidth,height:t.offsetHeight},anchor:c&&c.width>0&&c.height>0?{x:c.left-s.left,y:c.top-s.top,width:c.width,height:c.height}:void 0};j(e=>e.bounds.width===l.bounds.width&&e.bounds.height===l.bounds.height&&e.island.width===l.island.width&&e.island.height===l.island.height&&e.anchor?.x===l.anchor?.x&&e.anchor?.y===l.anchor?.y&&e.anchor?.width===l.anchor?.width&&e.anchor?.height===l.anchor?.height?e:l)};return s(),a.observe(e),a.observe(t),r&&!r.current&&(o=new MutationObserver(()=>{r.current&&s()}),o.observe(document.body,{childList:!0,subtree:!0})),window.addEventListener(`resize`,s),window.addEventListener(`scroll`,s,!0),()=>{a.disconnect(),o?.disconnect(),window.removeEventListener(`resize`,s),window.removeEventListener(`scroll`,s,!0)}},[n,r]),(0,y.useEffect)(()=>(k(null),()=>{let e=C.current;C.current=null,e?.element.hasPointerCapture(e.pointerId)&&e.element.releasePointerCapture(e.pointerId)}),[_]);let I=(e,t)=>{let n=C.current;!n||n.pointerId!==e.pointerId||(C.current=null,t&&N.getState().setPosition(_,n.latest),k(null),n.element.hasPointerCapture(n.pointerId)&&n.element.releasePointerCapture(n.pointerId))},L=()=>N.getState().resetPosition(_),R=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(),L();return}let r=n[e.key];r&&(e.preventDefault(),N.getState().setPosition(_,O(M,r,A.bounds,A.island)))},z=D(w??M,A.bounds,A.island);return(0,b.jsxs)(`div`,{ref:S,"data-floating-widget":e,className:c(`pointer-events-auto absolute flex w-[380px] max-w-full flex-col`,t===`pisper-island`&&`max-[650px]:w-[210px] max-[650px]:px-5`),style:{left:z.x,top:z.y,maxHeight:`100%`,visibility:A.bounds.width>0?`visible`:`hidden`},children:[(0,b.jsxs)(`div`,{className:`absolute left-0 top-1/2 z-10 flex -translate-y-1/2 flex-col items-center gap-1`,children:[(0,b.jsx)(`button`,{type:`button`,"aria-label":m(`custom-ui:floating.move`),"aria-describedby":F,title:m(`custom-ui:floating.moveHint`),className:`flex h-6 w-5 touch-none items-center justify-center rounded-full bg-background/85 text-muted-foreground shadow-sm outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,style:{cursor:w?`grabbing`:`grab`},onKeyDown:R,onPointerDown:e=>{e.button!==0||C.current||(e.preventDefault(),e.currentTarget.focus({preventScroll:!0}),e.currentTarget.setPointerCapture(e.pointerId),C.current={pointerId:e.pointerId,element:e.currentTarget,x:e.clientX,y:e.clientY,initial:M,latest:M},k(M))},onPointerMove:e=>{let t=C.current;if(!t||t.pointerId!==e.pointerId)return;let n=O(t.initial,{x:e.clientX-t.x,y:e.clientY-t.y},A.bounds,A.island);t.latest=n,k(n)},onPointerUp:e=>I(e,!0),onPointerCancel:e=>I(e,!1),onLostPointerCapture:e=>I(e,!1),children:(0,b.jsx)(l,{className:`size-3`})}),(0,b.jsx)(`button`,{type:`button`,"aria-label":m(`custom-ui:floating.resetPosition`),title:m(`custom-ui:floating.resetPosition`),onClick:L,className:`flex size-5 items-center justify-center rounded-full bg-background/85 text-muted-foreground shadow-sm outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,children:(0,b.jsx)(u,{className:`size-3`})}),(0,b.jsx)(`span`,{id:F,className:`sr-only`,children:m(`custom-ui:floating.moveHint`)})]}),o&&(0,b.jsx)(`button`,{type:`button`,"aria-label":m(`custom-ui:floating.close`),title:m(`custom-ui:floating.close`),onClick:()=>o(t),className:`absolute right-0 top-1/2 z-10 flex size-5 -translate-y-1/2 items-center justify-center rounded-full bg-background/85 text-muted-foreground shadow-sm outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,children:(0,b.jsx)(d,{className:`size-3`})}),(0,b.jsx)(`div`,{className:`flex min-h-0 flex-col overflow-hidden`,style:{height:t===`pisper-island`?64:240},children:(0,b.jsx)(x,{componentId:t,notify:a})})]})}function I({widgets:e,notify:t,anchorRef:n,onClose:r}){let i=(0,y.useRef)(null),a=e.filter(e=>e.componentId!==`pisper-island`);return(0,b.jsx)(`div`,{ref:i,className:`pointer-events-none fixed inset-x-2 bottom-2 top-0 z-40 overflow-hidden`,"data-floating-custom-ui":!0,children:e.map(e=>(0,b.jsx)(F,{id:e.id,componentId:e.componentId,boundaryRef:i,notify:t,anchorRef:n,onClose:r,stackIndex:e.componentId===`pisper-island`?0:a.findIndex(t=>t.id===e.id)+1},e.id))})}function L({anchorRef:e,notify:t}){let{t:n}=i(),r=h(e=>e.prefs),a=(0,y.useMemo)(()=>_([],r).map(e=>({id:e,componentId:e})),[r]);return(0,b.jsx)(I,{widgets:a,anchorRef:e,notify:t,onClose:e=>{try{h.getState().setVisible(e,!1),h.getState().storageError&&t(n(`custom-ui:floating.storageFailed`))}catch{t(n(`custom-ui:floating.storageFailed`))}}})}export{L as FloatingWidgets};
@@ -1,4 +1,4 @@
1
- import{a as e,r as t}from"./rolldown-runtime-B0Z9INg1.js";import{i as n,n as r,r as i}from"./vendor-react-DwNgTV1j.js";import{t as a}from"./use-i18n-a84Zp9dV.js";import{t as o}from"./file-diff-GxOMJkLj.js";import{t as s}from"./x-07u4-129.js";import{t as c}from"./button-CQA36izu.js";var l=e(n(),1),u=e(r(),1);function d(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function f(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function p(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var m=(e,t)=>Math.abs(e-t)<1.01,h=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},g,_=()=>{if(g!==void 0)return g;if(typeof navigator>`u`)return g=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return g=!0;let e=navigator.maxTouchPoints;return g=navigator.platform===`MacIntel`&&e!==void 0&&e>0},v=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},y=e=>e,b=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},x=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(v(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(v(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},S={passive:!0},C=typeof window>`u`||`onscrollend`in window,w=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&C,o=0,s=a?null:h(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,S),a&&r.addEventListener(`scrollend`,u,S),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},T=(e,t)=>w(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),E=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},D=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},O=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:y,rangeExtractor:b,onChange:()=>{},measureElement:E,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=f(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!_()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,S),e.addEventListener(`touchend`,n,S),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(_()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=f(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=f(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e,this._flatMeasurements=a}let o;if(u===0)o=t+n;else{let e=u-1;o=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t),n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=d(e,a,r);return this.measurementsCache=c,c}let f=this.measurementsCache.slice(0,u),p=Array(a).fill(void 0),m=new Float64Array(a),h=0;for(let e=0;e<u;e++){let t=f[e];t&&(p[t.lane]===void 0&&h++,p[t.lane]=e,m[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,d,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=p[u],r=e===void 0?void 0:f[e];d=r?r.end+s:t+n}else if(h===a){let e=0,t=m[0],n=p[0];for(let r=1;r<a;r++){let i=m[r];(i<t||i===t&&p[r]<n)&&(e=r,t=i,n=p[r])}u=e,d=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,d=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=d+v;f[i]={index:i,start:d,size:v,end:y,key:e,lane:u},p[u]===void 0&&h++,p[u]=i,m[u]=y}return this.measurementsCache=f,f},{key:!1,debug:()=>this.options.debug}),this.calculateRange=f(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=j(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=f(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=f(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return p(t[k(0,t.length-1,r?e=>n[e*2]:e=>p(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:_()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&m(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},k=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function A(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function j(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=A(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=k(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var M=typeof document<`u`?l.useLayoutEffect:l.useEffect;function N({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=l.useReducer(e=>e+1,0)[1],a=l.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},s=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},c={...r,onChange:(t,n)=>{var o;let c=a.current,l=!0;if(c.enabled){s(t);let e=t.range,n=c.prevRange;l=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,l&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}l&&(e&&n?(0,u.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[d]=l.useState(()=>{let e=new O(c);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return d.setOptions(c),M(()=>d._didMount(),[]),M(()=>(o(d),d._willUpdate())),M(()=>{s(d)}),d}function P(e){return N({observeElementRect:x,observeElementOffset:T,scrollToFn:D,...e})}function F(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 I(e){let t=e.match(/^diff --git "a\/(.+)" "b\/(.+)"$/);if(t)return F(`b/${t[2]}`);let n=e.match(/^diff --git a\/(.+) b\/(.+)$/);return n?F(`b/${n[2]}`):``}function L(){return{lineNumber:null,text:``,tone:`empty`}}function R(e){let t=e.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);return{oldLine:Number(t?.[1])||0,newLine:Number(t?.[2])||0}}function z(e){let t=String(e||``).replace(/\r\n/g,`
1
+ import{a as e,r as t}from"./rolldown-runtime-B0Z9INg1.js";import{i as n,n as r,r as i}from"./vendor-react-DwNgTV1j.js";import{t as a}from"./use-i18n-C7st2Mx5.js";import{t as o}from"./file-diff-GxOMJkLj.js";import{t as s}from"./x-07u4-129.js";import{t as c}from"./button-CQA36izu.js";var l=e(n(),1),u=e(r(),1);function d(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function f(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function p(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var m=(e,t)=>Math.abs(e-t)<1.01,h=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},g,_=()=>{if(g!==void 0)return g;if(typeof navigator>`u`)return g=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return g=!0;let e=navigator.maxTouchPoints;return g=navigator.platform===`MacIntel`&&e!==void 0&&e>0},v=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},y=e=>e,b=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},x=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(v(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(v(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},S={passive:!0},C=typeof window>`u`||`onscrollend`in window,w=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&C,o=0,s=a?null:h(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,S),a&&r.addEventListener(`scrollend`,u,S),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},T=(e,t)=>w(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),E=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},D=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},O=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:y,rangeExtractor:b,onChange:()=>{},measureElement:E,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=f(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!_()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,S),e.addEventListener(`touchend`,n,S),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(_()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=f(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=f(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e,this._flatMeasurements=a}let o;if(u===0)o=t+n;else{let e=u-1;o=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t),n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=d(e,a,r);return this.measurementsCache=c,c}let f=this.measurementsCache.slice(0,u),p=Array(a).fill(void 0),m=new Float64Array(a),h=0;for(let e=0;e<u;e++){let t=f[e];t&&(p[t.lane]===void 0&&h++,p[t.lane]=e,m[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,d,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=p[u],r=e===void 0?void 0:f[e];d=r?r.end+s:t+n}else if(h===a){let e=0,t=m[0],n=p[0];for(let r=1;r<a;r++){let i=m[r];(i<t||i===t&&p[r]<n)&&(e=r,t=i,n=p[r])}u=e,d=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,d=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=d+v;f[i]={index:i,start:d,size:v,end:y,key:e,lane:u},p[u]===void 0&&h++,p[u]=i,m[u]=y}return this.measurementsCache=f,f},{key:!1,debug:()=>this.options.debug}),this.calculateRange=f(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=j(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=f(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=f(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return p(t[k(0,t.length-1,r?e=>n[e*2]:e=>p(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:_()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&m(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},k=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function A(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function j(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=A(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=k(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var M=typeof document<`u`?l.useLayoutEffect:l.useEffect;function N({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=l.useReducer(e=>e+1,0)[1],a=l.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},s=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},c={...r,onChange:(t,n)=>{var o;let c=a.current,l=!0;if(c.enabled){s(t);let e=t.range,n=c.prevRange;l=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,l&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}l&&(e&&n?(0,u.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[d]=l.useState(()=>{let e=new O(c);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return d.setOptions(c),M(()=>d._didMount(),[]),M(()=>(o(d),d._willUpdate())),M(()=>{s(d)}),d}function P(e){return N({observeElementRect:x,observeElementOffset:T,scrollToFn:D,...e})}function F(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 I(e){let t=e.match(/^diff --git "a\/(.+)" "b\/(.+)"$/);if(t)return F(`b/${t[2]}`);let n=e.match(/^diff --git a\/(.+) b\/(.+)$/);return n?F(`b/${n[2]}`):``}function L(){return{lineNumber:null,text:``,tone:`empty`}}function R(e){let t=e.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);return{oldLine:Number(t?.[1])||0,newLine:Number(t?.[2])||0}}function z(e){let t=String(e||``).replace(/\r\n/g,`
2
2
  `).split(`
3
3
  `),n=[],r=null,i=null,a=0,o=0,s=[],c=[],l=()=>{if(!i||!s.length&&!c.length)return;let e=Math.max(s.length,c.length);for(let t=0;t<e;t+=1){let e=s[t],n=c[t];i.rows.push({kind:`pair`,old:e?{lineNumber:e.lineNumber,text:e.text,tone:`deleted`}:L(),next:n?{lineNumber:n.lineNumber,text:n.text,tone:`added`}:L()})}s=[],c=[]},u=()=>{l(),i=null},d=()=>{u(),r&&=(r.path=r.newPath||r.oldPath||r.path,n.push(r),null)};for(let e of t){if(e.startsWith(`diff --git `)){d(),r={oldPath:``,newPath:``,path:I(e),metadata:[],hunks:[]};continue}if(r){if(e.startsWith(`@@ `)){u();let t=R(e);a=t.oldLine,o=t.newLine,i={header:e,rows:[]},r.hunks.push(i);continue}if(i){if(e.startsWith(`-`))s.push({lineNumber:a,text:e.slice(1)}),a+=1;else if(e.startsWith(`+`))c.push({lineNumber:o,text:e.slice(1)}),o+=1;else if(l(),e.startsWith(` `)){let t=e.slice(1);i.rows.push({kind:`pair`,old:{lineNumber:a,text:t,tone:`context`},next:{lineNumber:o,text:t,tone:`context`}}),a+=1,o+=1}else e.startsWith(`\\ `)&&i.rows.push({kind:`meta`,text:e.slice(2)});continue}e.startsWith(`--- `)?r.oldPath=F(e.slice(4)):e.startsWith(`+++ `)?r.newPath=F(e.slice(4)):e.trim()&&r.metadata.push(e)}}return d(),n}var B=t({GitDiffDialog:()=>K}),V=i();function H({side:e,cell:t}){let n=t.tone===`deleted`?`−`:t.tone===`added`?`+`:` `;return(0,V.jsxs)(`div`,{className:`git-diff-cell grid min-w-0 min-h-[24px] grid-cols-[44px_20px_minmax(0,1fr)] [border-bottom:1px_solid_var(--stroke-soft)] font-[ui-monospace,SFMono-Regular,Consolas,'Liberation_Mono',monospace] text-[11px] leading-[1.55] [&.next]:[border-left:1px_solid_var(--stroke)] [&.deleted]:bg-[var(--danger-soft)] [&.added]:bg-[var(--success-soft)] [&.empty]:bg-[var(--surface-muted)] [&.context]:bg-[var(--solid)] [&_code]:block [&_code]:min-w-0 [&_code]:p-[3px_8px_3px_2px] [&_code]:text-[var(--text)] [&_code]:font-[inherit] [&_code]:whitespace-pre-wrap [&_code]:[overflow-wrap:anywhere] ${e} ${t.tone}`,children:[(0,V.jsx)(`span`,{className:`block [padding:3px_7px_3px_4px] [border-right:1px_solid_var(--stroke-soft)] text-[var(--text-muted)] text-right select-none`,children:t.lineNumber??``}),(0,V.jsx)(`span`,{className:`git-diff-line-marker [.git-diff-cell.deleted_&]:text-[var(--danger)] [.git-diff-cell.added_&]:text-[var(--success)] block [padding:3px_4px] text-[var(--text-muted)] text-center select-none`,"aria-hidden":`true`,children:t.tone===`empty`?``:n}),(0,V.jsx)(`code`,{children:t.text||`\xA0`})]})}function U({file:e,scrollElement:t}){let n=(0,l.useRef)(null),[r,i]=(0,l.useState)(0),a=(0,l.useMemo)(()=>e.hunks.flatMap((e,t)=>[{kind:`header`,hunkIndex:t,header:e.header},...e.rows.map((e,n)=>({kind:`row`,hunkIndex:t,rowIndex:n,row:e}))]),[e.hunks]);(0,l.useLayoutEffect)(()=>{let e=n.current;if(!t||!e)return;let r=()=>{let n=Math.max(0,e.getBoundingClientRect().top-t.getBoundingClientRect().top+t.scrollTop);i(e=>Math.abs(e-n)<1?e:n)};r();let a=typeof ResizeObserver>`u`?null:new ResizeObserver(r);return a?.observe(t),a?.observe(e),()=>a?.disconnect()},[t]);let o=P({count:a.length,getScrollElement:()=>t,estimateSize:()=>25,getItemKey:e=>{let t=a[e];return t.kind===`header`?`hunk-${t.hunkIndex}`:`row-${t.hunkIndex}-${t.rowIndex}`},measureElement:e=>Math.ceil(e.getBoundingClientRect().height),overscan:12,scrollMargin:r}),s=o.getVirtualItems();return(0,V.jsx)(`div`,{className:`relative min-w-[880px] w-full`,"data-pisper-diff-row-count":a.length,"data-pisper-rendered-count":s.length,ref:n,style:{height:`${o.getTotalSize()}px`},children:s.map(e=>{let t=a[e.index];return(0,V.jsx)(`div`,{className:`absolute left-0 w-full`,"data-index":e.index,ref:o.measureElement,style:{top:`${e.start-r}px`},children:t.kind===`header`?(0,V.jsx)(`div`,{className:`git-diff-hunk-header [border-bottom:1px_solid_var(--stroke-soft)] bg-[var(--blue-soft)] p-[4px_10px] text-[var(--brand-blue-strong)] font-[ui-monospace,SFMono-Regular,Consolas,'Liberation_Mono',monospace] text-[10px] [white-space:pre]`,children:t.header}):t.row.kind===`meta`?(0,V.jsx)(`div`,{className:`git-diff-row-meta [border-bottom:1px_solid_var(--stroke-soft)] bg-[var(--blue-soft)] p-[4px_10px] text-[var(--brand-blue-strong)] font-[ui-monospace,SFMono-Regular,Consolas,'Liberation_Mono',monospace] text-[10px] [white-space:pre] bg-[var(--surface-muted)] text-[var(--text-muted)]`,children:t.row.text}):(0,V.jsxs)(`div`,{className:`grid min-w-[880px] grid-cols-[minmax(440px,1fr)_minmax(440px,1fr)]`,children:[(0,V.jsx)(H,{side:`old`,cell:t.row.old}),(0,V.jsx)(H,{side:`next`,cell:t.row.next})]})},e.key)})})}function W(e){let t=e.path.replace(/\\/g,`/`),n=t.split(`/`),r=n.pop()||t,i=0,a=0;for(let t of e.hunks)for(let e of t.rows)e.kind===`pair`&&(e.next.tone===`added`&&(i+=1),e.old.tone===`deleted`&&(a+=1));let o=e.metadata.join(`
4
4
  `),s=/(?:^|\n)new file mode /.test(o)||!e.oldPath&&e.newPath?`added`:/(?:^|\n)deleted file mode /.test(o)||!e.newPath&&e.oldPath?`deleted`:/(?:^|\n)rename (?:from|to) /.test(o)||e.oldPath&&e.newPath&&e.oldPath!==e.newPath?`renamed`:`modified`;return{file:e,name:r,directory:n.join(`/`),added:i,deleted:a,status:s}}function G(e){return e===`added`?`A`:e===`deleted`?`D`:e===`renamed`?`R`:`M`}function K({diff:e,truncated:t,onClose:n}){let{t:r}=a(),i=(0,l.useMemo)(()=>z(e),[e]),d=(0,l.useMemo)(()=>i.map(W),[i]),[f,p]=(0,l.useState)(0),[m,h]=(0,l.useState)(null),g=Math.min(f,Math.max(d.length-1,0)),_=d[g];(0,l.useEffect)(()=>{let e=document.body.style.overflow,t=e=>{e.key===`Escape`&&n()};return document.body.style.overflow=`hidden`,document.addEventListener(`keydown`,t),()=>{document.body.style.overflow=e,document.removeEventListener(`keydown`,t)}},[n]);let v=e=>{p(e),m?.scrollTo({top:0,left:0})};return(0,u.createPortal)((0,V.jsx)(`div`,{className:`git-diff-dialog-backdrop max-[760px]:p-[10px] fixed z-[120] inset-0 grid place-items-center bg-[rgb(0_0_0/.48)] [padding:24px] [backdrop-filter:blur(3px)]`,role:`presentation`,onMouseDown:e=>e.target===e.currentTarget&&n(),children:(0,V.jsxs)(`section`,{className:`git-diff-dialog max-[760px]:w-[calc(100vw_-_20px)] max-[760px]:h-[calc(100vh_-_20px)] flex w-[min(1180px,calc(100vw_-_48px))] h-[min(820px,calc(100vh_-_48px))] min-w-0 min-h-0 flex-col overflow-hidden [border:1px_solid_var(--stroke)] rounded-[var(--r-lg)] bg-[var(--solid)] shadow-[0_28px_90px_-24px_rgb(0_0_0/.65)]`,role:`dialog`,"aria-modal":`true`,"aria-label":r(`chat:focusSession.gitViewDiff`),children:[(0,V.jsxs)(`header`,{className:`git-diff-dialog-head [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:min-w-0 [&_>_span:nth-child(2)]:flex-col [&_>_span:nth-child(2)]:gap-[2px] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[11px] grid min-h-[54px] flex-none grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-[10px] [border-bottom:1px_solid_var(--stroke)] [padding:8px_12px]`,children:[(0,V.jsx)(`span`,{className:`grid w-[34px] h-[34px] place-items-center rounded-[var(--r-sm)] bg-[var(--accent-soft)] text-[var(--star-strong)]`,children:(0,V.jsx)(o,{size:17})}),(0,V.jsxs)(`span`,{children:[(0,V.jsx)(`strong`,{children:r(`chat:focusSession.gitViewDiff`)}),(0,V.jsx)(`small`,{children:r(`chat:focusSession.gitDiffFileCount`,{count:i.length})})]}),(0,V.jsx)(c,{type:`button`,variant:`ghost`,size:`icon`,title:r(`chat:focusSession.gitCloseDiff`),"aria-label":r(`chat:focusSession.gitCloseDiff`),onClick:n,children:(0,V.jsx)(s,{size:17})})]}),d.length?(0,V.jsxs)(`div`,{className:`git-diff-layout max-[760px]:grid-rows-[minmax(112px,26vh)_minmax(0,1fr)] max-[760px]:grid-cols-[minmax(0,1fr)] grid min-w-0 min-h-0 flex-1 grid-cols-[252px_minmax(0,1fr)] overflow-hidden`,children:[(0,V.jsxs)(`nav`,{className:`git-diff-file-nav max-[760px]:[border-right:0] max-[760px]:[border-bottom:1px_solid_var(--stroke)] flex min-w-0 min-h-0 flex-col overflow-hidden [border-right:1px_solid_var(--stroke)] bg-[var(--surface-muted)]`,"aria-label":r(`chat:focusSession.gitDiffChangedFiles`),children:[(0,V.jsx)(`strong`,{className:`git-diff-file-nav-title max-[760px]:[padding-block:7px_5px] flex-none [padding:10px_12px_8px] text-[var(--text-muted)] text-[10px] font-[700] tracking-[.055em] [text-transform:uppercase]`,children:r(`chat:focusSession.gitDiffChangedFiles`)}),(0,V.jsx)(`div`,{className:`git-diff-file-nav-list max-[760px]:pb-[6px] min-h-0 flex-1 overflow-x-hidden overflow-y-auto [padding:0_6px_8px]`,children:d.map((e,t)=>{let n=t===g;return(0,V.jsxs)(`button`,{type:`button`,className:`git-diff-file-nav-item hover:bg-[var(--surface-hover)] hover:text-[var(--text)] [&.selected]:bg-[var(--accent-soft)] [&.selected]:text-[var(--text)] [&.selected]:shadow-[inset_2px_0_var(--star-strong)] grid w-full min-h-[42px] grid-cols-[20px_minmax(0,1fr)_auto] items-center gap-[7px] border-0 rounded-[var(--r-sm)] bg-transparent [padding:5px_7px] text-[var(--text-secondary)] text-left cursor-pointer ${e.status} ${n?`selected`:``}`,title:e.file.path,"aria-current":n?`true`:void 0,onClick:()=>v(t),children:[(0,V.jsx)(`span`,{className:`git-diff-file-status font-[ui-monospace,SFMono-Regular,Consolas,'Liberation_Mono',monospace] text-[11px] font-[750] text-center [.git-diff-file-nav-item.added_&]:text-[var(--success)] [.git-diff-file-nav-item.deleted_&]:text-[var(--danger)] [.git-diff-file-nav-item.renamed_&]:text-[var(--warning-strong)] [.git-diff-file-nav-item.modified_&]:text-[var(--star-strong)]`,"aria-hidden":`true`,children:G(e.status)}),(0,V.jsxs)(`span`,{className:`git-diff-file-name [&_strong]:overflow-hidden [&_strong]:text-ellipsis [&_strong]:whitespace-nowrap [&_small]:overflow-hidden [&_small]:text-ellipsis [&_small]:whitespace-nowrap [&_strong]:text-[11px] [&_strong]:font-[650] [&_small]:text-[var(--text-muted)] [&_small]:text-[9px] flex min-w-0 flex-col gap-[1px]`,children:[(0,V.jsx)(`strong`,{children:e.name}),e.directory&&(0,V.jsx)(`small`,{children:e.directory})]}),(0,V.jsxs)(`span`,{className:`git-diff-file-stats inline-flex items-center gap-[4px] font-[ui-monospace,SFMono-Regular,Consolas,'Liberation_Mono',monospace] text-[9px] [&_em]:[font-style:normal]`,"aria-hidden":`true`,children:[e.added>0&&(0,V.jsxs)(`em`,{className:`added [.git-diff-file-stats_&]:text-[var(--success)]`,children:[`+`,e.added]}),e.deleted>0&&(0,V.jsxs)(`em`,{className:`deleted [.git-diff-file-stats_&]:text-[var(--danger)]`,children:[`−`,e.deleted]})]})]},`${e.file.path}-${t}`)})})]}),(0,V.jsxs)(`div`,{className:`min-w-0 min-h-0 overflow-auto bg-[var(--surface-subtle)] [padding:12px]`,ref:h,children:[t&&(0,V.jsx)(`div`,{className:`[margin:0_0_12px] [border:1px_solid_var(--warning-border)] rounded-[var(--r-sm)] bg-[var(--warning-soft)] [padding:8px_10px] text-[var(--warning-strong)] text-[11px]`,children:r(`chat:focusSession.gitDiffTruncated`)}),_&&(0,V.jsxs)(`section`,{className:`min-w-[880px] [overflow:clip] [border:1px_solid_var(--stroke)] rounded-[var(--r-md)] bg-[var(--solid)]`,children:[(0,V.jsxs)(`header`,{className:`git-diff-file-head [&_>_svg]:text-[var(--star-strong)] [&_strong]:overflow-hidden [&_strong]:font-[ui-monospace,SFMono-Regular,Consolas,'Liberation_Mono',monospace] [&_strong]:text-[12px] [&_strong]:text-ellipsis [&_strong]:whitespace-nowrap [&_small]:max-w-[300px] [&_small]:overflow-hidden [&_small]:text-[var(--text-muted)] [&_small]:text-[10px] [&_small]:text-ellipsis [&_small]:whitespace-nowrap sticky z-[3] top-0 grid min-h-[38px] grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-[8px] [border-bottom:1px_solid_var(--stroke)] bg-[var(--solid)] [padding:7px_10px]`,children:[(0,V.jsx)(o,{size:14}),(0,V.jsx)(`strong`,{title:_.file.path,children:_.file.path}),_.file.oldPath&&_.file.newPath&&_.file.oldPath!==_.file.newPath&&(0,V.jsx)(`small`,{title:_.file.oldPath,children:_.file.oldPath})]}),_.file.metadata.length>0&&(0,V.jsx)(`div`,{className:`git-diff-file-meta [border-bottom:1px_solid_var(--stroke-soft)] bg-[var(--surface-muted)] p-[5px_10px] text-[var(--text-muted)] font-[ui-monospace,SFMono-Regular,Consolas,'Liberation_Mono',monospace] text-[10px]`,children:_.file.metadata.join(` · `)}),_.file.hunks.length>0?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`git-diff-column-head [&_span]:p-[5px_10px] [&_span_+_span]:[border-left:1px_solid_var(--stroke)] sticky z-[2] [top:38px] grid grid-cols-[1fr_1fr] [border-bottom:1px_solid_var(--stroke)] bg-[var(--surface-muted)] text-[var(--text-muted)] text-[10px] font-[650] [text-transform:uppercase]`,children:[(0,V.jsx)(`span`,{children:r(`chat:focusSession.gitDiffOriginal`)}),(0,V.jsx)(`span`,{children:r(`chat:focusSession.gitDiffModified`)})]}),(0,V.jsx)(U,{file:_.file,scrollElement:m})]}):(0,V.jsx)(`div`,{className:`[padding:28px_16px] text-[var(--text-muted)] text-[12px] text-center`,children:r(`chat:focusSession.gitDiffNoTextChanges`)})]},_.file.path)]})]}):(0,V.jsx)(`div`,{className:`min-w-0 min-h-0 flex-1 bg-[var(--surface-subtle)] overflow-auto [padding:12px]`,children:(0,V.jsx)(`div`,{className:`[border:1px_solid_var(--stroke)] rounded-[var(--r-md)] bg-[var(--solid)] [padding:20px] text-[var(--text-muted)] whitespace-pre-wrap`,children:e||r(`chat:focusSession.gitDiffUnavailable`)})})]})}),document.body)}export{B as n,P as r,K as t};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-markdown-plugins-DisoihU3.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-shiki-runtime-UFMr0O-Q.js","assets/vendor-router-CZg2bCPV.js","assets/vendor-react-DwNgTV1j.js","assets/vendor-markdown-plugins-DEcVZfaU.css"])))=>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{n,t as r}from"./vendor-markdown-plugins-DisoihU3.js";import{i,r as a}from"./vendor-react-DwNgTV1j.js";import{a as o,i as s,n as c,r as l,t as u}from"./vendor-markdown-Ck4Y_w0n.js";import{n as d,r as ee,t as te}from"./vendor-shiki-runtime-UFMr0O-Q.js";import{t as f}from"./use-i18n-a84Zp9dV.js";import{t as p}from"./utils-C8uzG5AZ.js";import{t as m}from"./check-2vYc6QaP.js";import{t as h}from"./copy-DHmIFc52.js";import{t as ne}from"./button-CQA36izu.js";import{t as re}from"./route-context-DvWDul4T.js";var g=e(i(),1),_=[`github-dark`,`github-dark`],v=150,y=new Set([`text`,`txt`,`plain`,`plaintext`]),b=new Map;for(let e of d){b.set(e.id,e.id);for(let t of e.aliases??[])b.set(t,e.id)}function x(e){return typeof e==`string`?e:e.name??`custom`}function S(e){let t=String(e||``).trim().toLowerCase();return b.get(t)??`text`}function C(e,t,n){return`${t}:${x(n[0])}:${x(n[1])}:${e.length}:${e.slice(0,64)}:${e.slice(-64)}`}var w=new Map;function ie(e){let t=w.get(e);return t&&(w.delete(e),w.set(e,t)),t}function ae(e,t){for(w.delete(e),w.set(e,t);w.size>v;){let e=w.keys().next().value;if(e===void 0)break;w.delete(e)}}var T=null,E=new Map;function oe(){return T??=ee({themes:[..._],langs:[],engine:te({forgiving:!0})}),T}function se(e,t){if(y.has(t)||e.getLoadedLanguages().includes(t))return Promise.resolve();let n=d.find(e=>e.id===t);if(!n)return Promise.resolve();let r=E.get(t);return r||(r=e.loadLanguage(()=>n.import().then(e=>e.default)).catch(e=>{throw E.delete(t),e}),E.set(t,r)),r}var D=new Map;function ce(){return{name:`shiki`,type:`code-highlighter`,supportsLanguage(e){return b.has(String(e||``).trim().toLowerCase())},getSupportedLanguages(){return d.map(e=>e.id)},getThemes(){return _},highlight({code:e,language:t,themes:n},r){let i=S(t),a=C(e,i,n),o=ie(a);if(o)return o;let s=D.get(a),c=!!s;return s||(s=new Set,D.set(a,s)),r&&s.add(r),c||(async()=>{try{let t=await oe();await se(t,i);let r=t.getLoadedLanguages().includes(i)?i:`text`,o=t.codeToTokens(e,{lang:r,themes:{light:n[0],dark:n[1]}});ae(a,o);let s=D.get(a);if(D.delete(a),s)for(let e of s)e(o)}catch(e){D.delete(a),console.error(`[streamdown] Failed to highlight code:`,e)}})(),null}}}var le=ce(),ue={cjk:n,code:le,math:r};function O(){let e=``,t=[];return n=>{if(n===e)return t;if(t.length>0&&n.startsWith(e)){let r=t[t.length-1],i=e.length-r.length;if(i<0||e.slice(i)!==r)return e=n,t=l(n),t;let a=l(n.slice(i)),o=[...t.slice(0,-1),...a];return e=n,t=o,o}return e=n,t=l(n),t}}var k=100,A=new Map;function j(e){let t=A.get(e);if(t)return A.delete(e),A.set(e,t),t;let n=l(e);if(A.set(e,n),A.size>k){let e=A.keys().next().value;e!==void 0&&A.delete(e)}return n}var M=null;function N(){return M??=t(()=>import(`./vendor-markdown-plugins-DisoihU3.js`).then(e=>e.O),__vite__mapDeps([0,1,2,3,4,5])),M}function P(e){return/\$\$|\\\(|\\\[|\$[^\n$]+\$|\\begin\{/.test(e)}var F=`https://local-file.pisper.invalid`,I=`/reveal`;function L(e){try{return decodeURIComponent(e)}catch{return e}}function R(e){return[...e].some(e=>{let t=e.codePointAt(0)||0;return t<32||t===127})}function z(e){return/^(?:[A-Za-z]:[\\/]|\/|\\\\)/.test(e)}function B(e){let t=e.match(/:(\d+)(?::(\d+))?$/);if(!t)return{path:e};let n={path:e.slice(0,-t[0].length),line:Number(t[1])};return t[2]&&(n.column=Number(t[2])),n}function V(e){try{let t=new URL(e);if(t.protocol!==`file:`||t.username||t.password||t.port)return null;let n=t.pathname;return t.hostname&&t.hostname!==`localhost`?`//${t.hostname}${n}`:/^\/[A-Za-z]:[\\/]/.test(n)?n.slice(1):n}catch{return null}}function H(e){return!e||/^[\\/]/.test(e)||/^[A-Za-z][A-Za-z0-9+.-]*:/.test(e)?!1:!e.split(/[\\/]/).includes(`..`)}function U(e,t){let n=e.replace(/[\\/]+$/,``);if(!n)return e.startsWith(`/`)?`/`+t.replace(/^(?:\.\/)+/,``):``;let r=e.includes(`\\`)?`\\`:`/`,i=t.replace(/^[\\/]+/,``).replace(/^(?:\.[/])+/g,``);return n+r+i}function de(e,t){let n=e.trim();if(!n||R(n))return null;let r=/^file:/i.test(n);if(!r&&/[?#]/.test(n))return null;let i=r?V(n):n;if(!i)return null;let a=B(i),o=L(a.path);if(!o||R(o))return null;let s=/^\/[A-Za-z]:[\\/]/.test(o)?o.slice(1):o;if(z(s))return{...a,path:s};if(/^[A-Za-z][A-Za-z0-9+.-]*:/.test(i)&&!a.path.includes(`.`)||!t)return null;let c=t.trim();if(!z(c)||R(c)||!H(o))return null;let l=U(c,o);return z(l)?{...a,path:l}:null}function fe(e){let t=new URL(I,F);return t.searchParams.set(`path`,e.path),e.line!==void 0&&t.searchParams.set(`line`,String(e.line)),e.column!==void 0&&t.searchParams.set(`column`,String(e.column)),t.href}function pe(e){try{let t=new URL(e);if(t.origin!==F||t.pathname!==I)return null;let n=t.searchParams.get(`path`)||``;if(!z(n)||R(n))return null;let r=Number(t.searchParams.get(`line`)),i=Number(t.searchParams.get(`column`)),a={path:n};return Number.isSafeInteger(r)&&r>0&&(a.line=r),Number.isSafeInteger(i)&&i>0&&(a.column=i),a}catch{return null}}function me(e){return t=>{let n=t=>{if(t.type===`link`&&typeof t.url==`string`){let n=de(t.url,e);n&&(t.url=fe(n))}for(let e of t.children||[])n(e)};n(t)}}async function W(e){let t=await fetch(`/api/desktop/reveal-path`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:e})}),n={};try{n=await t.json()}catch{}if(!t.ok)throw Error(n.error||`HTTP ${t.status}`);return n.revealed===!0}var G=class extends Error{reason;constructor(e){super(`local-reveal:${e}`),this.reason=e,this.name=`LocalPathRevealError`}};async function K(e,t){if(typeof t!=`function`)throw new G(`unavailable`);let n;try{if(await Promise.race([Promise.resolve().then(()=>t(e)),new Promise((e,t)=>{n=setTimeout(()=>t(new G(`timeout`)),8e3)})])!==!0)throw new G(`failed`)}finally{clearTimeout(n)}}var q=a(),he={a:Z,code:Ce,img:ye,strong:be,table:xe},ge=!1,_e={linkMode:`text-only`};function J(e,t){window.dispatchEvent(new CustomEvent(re,{detail:{message:e,tone:t}}))}function Y(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(Y).join(``):(0,g.isValidElement)(e)?Y(e.props.children):``}function ve(e){return String(e||``).match(/language-([\w-]+)/)?.[1]||`text`}function X(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);return t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove(),Promise.resolve()}function Z({children:e,node:t,className:n,href:r,...i}){let{t:a}=f(),[o,s]=(0,g.useState)(!1),[c,l]=(0,g.useState)(``),u=Y(e).trim()?e:r;if(!r)return(0,q.jsx)(`span`,{className:p(`markdown-link`,n),children:u});let d=pe(r);if(d){let e=a(`common:markdownMessage.revealLocalPath`,{path:d.path}),t=async()=>{s(!0),l(``);try{await K(d.path,W),J(a(`common:markdownMessage.revealLocalPathOk`,{path:d.path}),`info`)}catch(e){let t=e instanceof G&&e.reason===`unavailable`?a(`common:markdownMessage.revealLocalPathUnavailable`):e instanceof G&&e.reason===`timeout`?a(`common:markdownMessage.revealLocalPathTimeout`):a(`common:markdownMessage.revealLocalPathFailed`,{path:d.path}),n=e instanceof Error?e.message:String(e);console.error(`[markdown] 无法在文件管理器中显示本地路径。`,e),l(`${t} (${n})`),J(t,`error`)}finally{s(!1)}};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:p(`markdown-link inline cursor-pointer border-0 bg-transparent p-0 [font:inherit]`,n),"data-local-path":d.path,title:e,disabled:o,"aria-busy":o||void 0,onClick:()=>void t(),children:u}),c&&(0,q.jsxs)(`span`,{role:`alert`,className:`ml-2 text-sm text-destructive`,children:[c,` `,(0,q.jsx)(`button`,{type:`button`,className:`cursor-pointer underline underline-offset-2`,onClick:()=>{X(d.path).then(()=>J(a(`common:markdownMessage.copied`),`info`),()=>J(a(`common:markdownMessage.copyPathFailed`),`error`))},children:a(`common:markdownMessage.copyPath`)})]})]})}return(0,q.jsx)(`a`,{...i,className:p(`markdown-link`,n),href:r,target:`_blank`,rel:`noopener noreferrer`,children:u})}function ye({node:e,...t}){return(0,q.jsx)(`img`,{loading:`lazy`,...t})}function be({node:e,...t}){return(0,q.jsx)(`strong`,{...t})}function xe({node:e,...t}){return(0,q.jsx)(`table`,{...t})}function Q({source:e}){let{t}=f(),[n,r]=(0,g.useState)(!1);return(0,q.jsxs)(ne,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 gap-1 px-[7px] text-[11px] font-bold text-[var(--code-toolbar-text)] hover:bg-white/10 hover:text-[var(--code-toolbar-text)]`,"data-streamdown":`code-block-copy-button`,onClick:async()=>{try{await X(e),r(!0),window.setTimeout(()=>r(!1),1800)}catch{r(!1)}},"aria-label":t(`common:markdownMessage.copyCode`),title:t(`common:markdownMessage.copyCode`),children:[n?(0,q.jsx)(m,{size:13}):(0,q.jsx)(h,{size:13}),t(n?`common:markdownMessage.copied`:`common:markdownMessage.copy`)]})}function Se({language:e,source:t}){return(0,q.jsxs)(`div`,{className:`my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2`,"data-incomplete":`true`,"data-language":e,"data-streamdown":`code-block`,style:{contentVisibility:`auto`,containIntrinsicSize:`auto 200px`},children:[(0,q.jsxs)(`div`,{className:`flex h-8 items-center justify-between text-muted-foreground text-xs`,"data-language":e,"data-streamdown":`code-block-header`,children:[(0,q.jsx)(`span`,{className:`ml-1 font-mono lowercase`,children:e}),(0,q.jsx)(Q,{source:t})]}),(0,q.jsx)(`div`,{className:`overflow-x-auto rounded-md border border-border bg-background p-4 text-sm`,"data-language":e,"data-streamdown":`code-block-body`,children:(0,q.jsx)(`pre`,{className:`bg-transparent`,children:(0,q.jsx)(`code`,{children:t})})})]})}function Ce({children:e,className:t,node:n,...r}){let i=o();if(!Object.hasOwn(r,`data-block`))return(0,q.jsx)(`code`,{className:t||``,...r,children:e});let a=Y(e).replace(/\n$/,``),c=ve(t);return i?(0,q.jsx)(Se,{language:c,source:a}):(0,q.jsx)(s,{code:a,isIncomplete:i,language:c,lineNumbers:!1,children:(0,q.jsx)(Q,{source:a})})}function we({children:e,className:t,streaming:n=!1,cwd:r}){let i=String(e??``),a=(0,g.useMemo)(()=>[...Object.values(u),[me,r||void 0]],[r]),o=(0,g.useMemo)(()=>P(i),[i]);(0,g.useEffect)(()=>{o&&N()},[o]);let[s]=(0,g.useState)(()=>O()),l=n?s:j;return(0,q.jsx)(`div`,{className:p(`markdown-body`,n&&`markdown-streaming`,t),"aria-busy":n||void 0,children:(0,q.jsx)(c,{className:`markdown-content space-y-0`,components:he,controls:ge,isAnimating:n,lineNumbers:!1,mode:`streaming`,parseMarkdownIntoBlocksFn:l,plugins:ue,remarkPlugins:a,remend:_e,children:i})})}var $=(0,g.memo)(we);$.displayName=`MarkdownMessage`;export{W as i,G as n,K as r,$ as t};
2
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{p as t}from"./vendor-router-CZg2bCPV.js";import{n,t as r}from"./vendor-markdown-plugins-DisoihU3.js";import{i,r as a}from"./vendor-react-DwNgTV1j.js";import{a as o,i as s,n as c,r as l,t as u}from"./vendor-markdown-Ck4Y_w0n.js";import{n as d,r as ee,t as te}from"./vendor-shiki-runtime-UFMr0O-Q.js";import{t as f}from"./use-i18n-C7st2Mx5.js";import{t as p}from"./utils-C8uzG5AZ.js";import{t as m}from"./check-2vYc6QaP.js";import{t as h}from"./copy-DHmIFc52.js";import{t as ne}from"./button-CQA36izu.js";import{t as re}from"./route-context-DvWDul4T.js";var g=e(i(),1),_=[`github-dark`,`github-dark`],v=150,y=new Set([`text`,`txt`,`plain`,`plaintext`]),b=new Map;for(let e of d){b.set(e.id,e.id);for(let t of e.aliases??[])b.set(t,e.id)}function x(e){return typeof e==`string`?e:e.name??`custom`}function S(e){let t=String(e||``).trim().toLowerCase();return b.get(t)??`text`}function C(e,t,n){return`${t}:${x(n[0])}:${x(n[1])}:${e.length}:${e.slice(0,64)}:${e.slice(-64)}`}var w=new Map;function ie(e){let t=w.get(e);return t&&(w.delete(e),w.set(e,t)),t}function ae(e,t){for(w.delete(e),w.set(e,t);w.size>v;){let e=w.keys().next().value;if(e===void 0)break;w.delete(e)}}var T=null,E=new Map;function oe(){return T??=ee({themes:[..._],langs:[],engine:te({forgiving:!0})}),T}function se(e,t){if(y.has(t)||e.getLoadedLanguages().includes(t))return Promise.resolve();let n=d.find(e=>e.id===t);if(!n)return Promise.resolve();let r=E.get(t);return r||(r=e.loadLanguage(()=>n.import().then(e=>e.default)).catch(e=>{throw E.delete(t),e}),E.set(t,r)),r}var D=new Map;function ce(){return{name:`shiki`,type:`code-highlighter`,supportsLanguage(e){return b.has(String(e||``).trim().toLowerCase())},getSupportedLanguages(){return d.map(e=>e.id)},getThemes(){return _},highlight({code:e,language:t,themes:n},r){let i=S(t),a=C(e,i,n),o=ie(a);if(o)return o;let s=D.get(a),c=!!s;return s||(s=new Set,D.set(a,s)),r&&s.add(r),c||(async()=>{try{let t=await oe();await se(t,i);let r=t.getLoadedLanguages().includes(i)?i:`text`,o=t.codeToTokens(e,{lang:r,themes:{light:n[0],dark:n[1]}});ae(a,o);let s=D.get(a);if(D.delete(a),s)for(let e of s)e(o)}catch(e){D.delete(a),console.error(`[streamdown] Failed to highlight code:`,e)}})(),null}}}var le=ce(),ue={cjk:n,code:le,math:r};function O(){let e=``,t=[];return n=>{if(n===e)return t;if(t.length>0&&n.startsWith(e)){let r=t[t.length-1],i=e.length-r.length;if(i<0||e.slice(i)!==r)return e=n,t=l(n),t;let a=l(n.slice(i)),o=[...t.slice(0,-1),...a];return e=n,t=o,o}return e=n,t=l(n),t}}var k=100,A=new Map;function j(e){let t=A.get(e);if(t)return A.delete(e),A.set(e,t),t;let n=l(e);if(A.set(e,n),A.size>k){let e=A.keys().next().value;e!==void 0&&A.delete(e)}return n}var M=null;function N(){return M??=t(()=>import(`./vendor-markdown-plugins-DisoihU3.js`).then(e=>e.O),__vite__mapDeps([0,1,2,3,4,5])),M}function P(e){return/\$\$|\\\(|\\\[|\$[^\n$]+\$|\\begin\{/.test(e)}var F=`https://local-file.pisper.invalid`,I=`/reveal`;function L(e){try{return decodeURIComponent(e)}catch{return e}}function R(e){return[...e].some(e=>{let t=e.codePointAt(0)||0;return t<32||t===127})}function z(e){return/^(?:[A-Za-z]:[\\/]|\/|\\\\)/.test(e)}function B(e){let t=e.match(/:(\d+)(?::(\d+))?$/);if(!t)return{path:e};let n={path:e.slice(0,-t[0].length),line:Number(t[1])};return t[2]&&(n.column=Number(t[2])),n}function V(e){try{let t=new URL(e);if(t.protocol!==`file:`||t.username||t.password||t.port)return null;let n=t.pathname;return t.hostname&&t.hostname!==`localhost`?`//${t.hostname}${n}`:/^\/[A-Za-z]:[\\/]/.test(n)?n.slice(1):n}catch{return null}}function H(e){return!e||/^[\\/]/.test(e)||/^[A-Za-z][A-Za-z0-9+.-]*:/.test(e)?!1:!e.split(/[\\/]/).includes(`..`)}function U(e,t){let n=e.replace(/[\\/]+$/,``);if(!n)return e.startsWith(`/`)?`/`+t.replace(/^(?:\.\/)+/,``):``;let r=e.includes(`\\`)?`\\`:`/`,i=t.replace(/^[\\/]+/,``).replace(/^(?:\.[/])+/g,``);return n+r+i}function de(e,t){let n=e.trim();if(!n||R(n))return null;let r=/^file:/i.test(n);if(!r&&/[?#]/.test(n))return null;let i=r?V(n):n;if(!i)return null;let a=B(i),o=L(a.path);if(!o||R(o))return null;let s=/^\/[A-Za-z]:[\\/]/.test(o)?o.slice(1):o;if(z(s))return{...a,path:s};if(/^[A-Za-z][A-Za-z0-9+.-]*:/.test(i)&&!a.path.includes(`.`)||!t)return null;let c=t.trim();if(!z(c)||R(c)||!H(o))return null;let l=U(c,o);return z(l)?{...a,path:l}:null}function fe(e){let t=new URL(I,F);return t.searchParams.set(`path`,e.path),e.line!==void 0&&t.searchParams.set(`line`,String(e.line)),e.column!==void 0&&t.searchParams.set(`column`,String(e.column)),t.href}function pe(e){try{let t=new URL(e);if(t.origin!==F||t.pathname!==I)return null;let n=t.searchParams.get(`path`)||``;if(!z(n)||R(n))return null;let r=Number(t.searchParams.get(`line`)),i=Number(t.searchParams.get(`column`)),a={path:n};return Number.isSafeInteger(r)&&r>0&&(a.line=r),Number.isSafeInteger(i)&&i>0&&(a.column=i),a}catch{return null}}function me(e){return t=>{let n=t=>{if(t.type===`link`&&typeof t.url==`string`){let n=de(t.url,e);n&&(t.url=fe(n))}for(let e of t.children||[])n(e)};n(t)}}async function W(e){let t=await fetch(`/api/desktop/reveal-path`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:e})}),n={};try{n=await t.json()}catch{}if(!t.ok)throw Error(n.error||`HTTP ${t.status}`);return n.revealed===!0}var G=class extends Error{reason;constructor(e){super(`local-reveal:${e}`),this.reason=e,this.name=`LocalPathRevealError`}};async function K(e,t){if(typeof t!=`function`)throw new G(`unavailable`);let n;try{if(await Promise.race([Promise.resolve().then(()=>t(e)),new Promise((e,t)=>{n=setTimeout(()=>t(new G(`timeout`)),8e3)})])!==!0)throw new G(`failed`)}finally{clearTimeout(n)}}var q=a(),he={a:Z,code:Ce,img:ye,strong:be,table:xe},ge=!1,_e={linkMode:`text-only`};function J(e,t){window.dispatchEvent(new CustomEvent(re,{detail:{message:e,tone:t}}))}function Y(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(Y).join(``):(0,g.isValidElement)(e)?Y(e.props.children):``}function ve(e){return String(e||``).match(/language-([\w-]+)/)?.[1]||`text`}function X(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);return t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove(),Promise.resolve()}function Z({children:e,node:t,className:n,href:r,...i}){let{t:a}=f(),[o,s]=(0,g.useState)(!1),[c,l]=(0,g.useState)(``),u=Y(e).trim()?e:r;if(!r)return(0,q.jsx)(`span`,{className:p(`markdown-link`,n),children:u});let d=pe(r);if(d){let e=a(`common:markdownMessage.revealLocalPath`,{path:d.path}),t=async()=>{s(!0),l(``);try{await K(d.path,W),J(a(`common:markdownMessage.revealLocalPathOk`,{path:d.path}),`info`)}catch(e){let t=e instanceof G&&e.reason===`unavailable`?a(`common:markdownMessage.revealLocalPathUnavailable`):e instanceof G&&e.reason===`timeout`?a(`common:markdownMessage.revealLocalPathTimeout`):a(`common:markdownMessage.revealLocalPathFailed`,{path:d.path}),n=e instanceof Error?e.message:String(e);console.error(`[markdown] 无法在文件管理器中显示本地路径。`,e),l(`${t} (${n})`),J(t,`error`)}finally{s(!1)}};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:p(`markdown-link inline cursor-pointer border-0 bg-transparent p-0 [font:inherit]`,n),"data-local-path":d.path,title:e,disabled:o,"aria-busy":o||void 0,onClick:()=>void t(),children:u}),c&&(0,q.jsxs)(`span`,{role:`alert`,className:`ml-2 text-sm text-destructive`,children:[c,` `,(0,q.jsx)(`button`,{type:`button`,className:`cursor-pointer underline underline-offset-2`,onClick:()=>{X(d.path).then(()=>J(a(`common:markdownMessage.copied`),`info`),()=>J(a(`common:markdownMessage.copyPathFailed`),`error`))},children:a(`common:markdownMessage.copyPath`)})]})]})}return(0,q.jsx)(`a`,{...i,className:p(`markdown-link`,n),href:r,target:`_blank`,rel:`noopener noreferrer`,children:u})}function ye({node:e,...t}){return(0,q.jsx)(`img`,{loading:`lazy`,...t})}function be({node:e,...t}){return(0,q.jsx)(`strong`,{...t})}function xe({node:e,...t}){return(0,q.jsx)(`table`,{...t})}function Q({source:e}){let{t}=f(),[n,r]=(0,g.useState)(!1);return(0,q.jsxs)(ne,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 gap-1 px-[7px] text-[11px] font-bold text-[var(--code-toolbar-text)] hover:bg-white/10 hover:text-[var(--code-toolbar-text)]`,"data-streamdown":`code-block-copy-button`,onClick:async()=>{try{await X(e),r(!0),window.setTimeout(()=>r(!1),1800)}catch{r(!1)}},"aria-label":t(`common:markdownMessage.copyCode`),title:t(`common:markdownMessage.copyCode`),children:[n?(0,q.jsx)(m,{size:13}):(0,q.jsx)(h,{size:13}),t(n?`common:markdownMessage.copied`:`common:markdownMessage.copy`)]})}function Se({language:e,source:t}){return(0,q.jsxs)(`div`,{className:`my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2`,"data-incomplete":`true`,"data-language":e,"data-streamdown":`code-block`,style:{contentVisibility:`auto`,containIntrinsicSize:`auto 200px`},children:[(0,q.jsxs)(`div`,{className:`flex h-8 items-center justify-between text-muted-foreground text-xs`,"data-language":e,"data-streamdown":`code-block-header`,children:[(0,q.jsx)(`span`,{className:`ml-1 font-mono lowercase`,children:e}),(0,q.jsx)(Q,{source:t})]}),(0,q.jsx)(`div`,{className:`overflow-x-auto rounded-md border border-border bg-background p-4 text-sm`,"data-language":e,"data-streamdown":`code-block-body`,children:(0,q.jsx)(`pre`,{className:`bg-transparent`,children:(0,q.jsx)(`code`,{children:t})})})]})}function Ce({children:e,className:t,node:n,...r}){let i=o();if(!Object.hasOwn(r,`data-block`))return(0,q.jsx)(`code`,{className:t||``,...r,children:e});let a=Y(e).replace(/\n$/,``),c=ve(t);return i?(0,q.jsx)(Se,{language:c,source:a}):(0,q.jsx)(s,{code:a,isIncomplete:i,language:c,lineNumbers:!1,children:(0,q.jsx)(Q,{source:a})})}function we({children:e,className:t,streaming:n=!1,cwd:r}){let i=String(e??``),a=(0,g.useMemo)(()=>[...Object.values(u),[me,r||void 0]],[r]),o=(0,g.useMemo)(()=>P(i),[i]);(0,g.useEffect)(()=>{o&&N()},[o]);let[s]=(0,g.useState)(()=>O()),l=n?s:j;return(0,q.jsx)(`div`,{className:p(`markdown-body`,n&&`markdown-streaming`,t),"aria-busy":n||void 0,children:(0,q.jsx)(c,{className:`markdown-content space-y-0`,components:he,controls:ge,isAnimating:n,lineNumbers:!1,mode:`streaming`,parseMarkdownIntoBlocksFn:l,plugins:ue,remarkPlugins:a,remend:_e,children:i})})}var $=(0,g.memo)(we);$.displayName=`MarkdownMessage`;export{W as i,G as n,K as r,$ 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-a84Zp9dV.js";import{n as i,t as a}from"./switch-Ci_hmu39.js";import{t as o}from"./utils-C8uzG5AZ.js";import{t as s}from"./circle-dot-nVrXgDaG.js";import{t as c}from"./copy-DHmIFc52.js";import{t as l}from"./key-round-C29uZbsf.js";import{t as u}from"./refresh-cw-TbWxTY4K.js";import{t as ee}from"./server-BgNvmqwJ.js";import{t as d}from"./trash-2-CNrPOoPR.js";import{t as f}from"./wrench-6pg6_bqI.js";import{i as p,n as m}from"./http-Be2GB6DH.js";import{t as h}from"./button-CQA36izu.js";import{D as g,S as _,h as v,o as y,u as b,v as x,x as S}from"./query-Bj-DUNYq.js";import{t as C}from"./useQuery-D3P5wO_Z.js";import{n as w}from"./mutation-CEbxdVYy.js";import{n as T}from"./QueryClientProvider-CHJtxoX1.js";import{t as E}from"./queryOptions-Dfvzj6n2.js";import{t as D}from"./alert-QoPGoIY6.js";import{a as O,i as k,o as A,r as j,s as M,t as te}from"./dialog-D-ER2p-D.js";import{r as N}from"./format-BRFKAYMT.js";import{r as P,t as F}from"./card-BdUpL1KB.js";import{t as I}from"./usePagePrimaryAction-CWPC0C_f.js";import{t as ne}from"./textarea-bYCRTyEt.js";var L=class extends g{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),S(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&b(t.mutationKey)!==b(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??w();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){y.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},R=e(t(),1);function re(e,t){let n=T(t);return ie({filters:{...e,status:`pending`}},n).length}function z(e,t){return e.findAll(t.filters).map(e=>t.select?t.select(e):e.state)}function ie(e={},t){let n=T(t).getMutationCache(),r=R.useRef(e),i=R.useRef(null);return i.current===null&&(i.current=z(n,e)),R.useEffect(()=>{r.current=e}),R.useSyncExternalStore(R.useCallback(e=>n.subscribe(()=>{let t=x(i.current,z(n,r.current));i.current!==t&&(i.current=t,y.schedule(e))}),[n]),()=>i.current,()=>i.current)}function ae(e,t){let n=T(t),[r]=R.useState(()=>new L(n,e));R.useEffect(()=>{r.setOptions(e)},[r,e]);let i=R.useSyncExternalStore(R.useCallback(e=>r.subscribe(y.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=R.useCallback((e,t)=>{r.mutate(e,t).catch(v)},[r]);if(i.error&&_(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}function B(e){if(!e||typeof e!=`object`||Array.isArray(e))throw p();return Object.fromEntries(Object.entries(e))}function V(e,t=!1){if(e==null&&!t)return``;if(typeof e!=`string`||t&&!e)throw p();return e}function H(e,t=0){if(e==null)return t;if(typeof e!=`number`||!Number.isFinite(e))throw p();return e}function U(e){if(typeof e!=`boolean`)throw p();return e}function oe(e,t){if(e===void 0)return[];if(!Array.isArray(e))throw p();return e.map(t)}function se(e){let t=B(e);return{id:V(t.id,!0),name:V(t.name,!0),status:V(t.status),transport:V(t.transport),endpoint:V(t.endpoint),command:V(t.command),workingDirectory:V(t.workingDirectory),enabled:U(t.enabled),error:V(t.error),latencyMs:t.latencyMs==null?null:H(t.latencyMs),lastPingAt:V(t.lastPingAt),auth:V(t.auth),authCount:H(t.authCount)}}function ce(e){let t=B(e);return{serviceId:V(t.serviceId,!0),serviceName:V(t.serviceName),name:V(t.name,!0),piName:V(t.piName,!0),description:V(t.description),enabled:U(t.enabled),serviceEnabled:U(t.serviceEnabled),risk:V(t.risk)}}function le(e){let t=B(e);return{id:V(t.id,!0),serviceId:V(t.serviceId,!0),toolName:V(t.toolName),timestamp:V(t.timestamp),status:V(t.status),error:V(t.error),durationMs:H(t.durationMs)}}function W(e){let t=B(e);if(!Array.isArray(t.services))throw p();let n=t.metrics===void 0?{}:B(t.metrics);return{services:t.services.map(se),tools:oe(t.tools,ce),calls:oe(t.calls,le),metrics:{totalServices:H(n.totalServices),onlineServices:H(n.onlineServices),availableTools:H(n.availableTools),restrictedTools:H(n.restrictedTools),errorRate:H(n.errorRate)}}}var G=e=>`/api/mcp/${encodeURIComponent(e)}`,K={dashboard:e=>m(`/api/mcp?refresh=0`,{signal:e,parse:W}),add:e=>m(`/api/mcp`,{method:`POST`,body:{spec:e},parse:W}),setServerEnabled:(e,t)=>m(G(e),{method:`PATCH`,body:{enabled:t},parse:W}),setToolEnabled:(e,t,n)=>m(`${G(e)}/tools/${encodeURIComponent(t)}`,{method:`PATCH`,body:{enabled:n},parse:W}),test:e=>m(`${G(e)}/test`,{method:`POST`,body:{},parse:W}),remove:async e=>(await m(G(e),{method:`DELETE`}),K.dashboard())};function ue(e){if(!e||typeof e!=`object`||Array.isArray(e))throw p();return Object.fromEntries(Object.entries(e))}function de(e){let t=ue(e);if(typeof t.enabled!=`boolean`||typeof t.listening!=`boolean`||typeof t.host!=`string`||typeof t.port!=`number`||!Number.isInteger(t.port)||typeof t.url!=`string`||t.error!==null&&typeof t.error!=`string`)throw p();return{enabled:t.enabled,listening:t.listening,host:t.host,port:t.port,url:t.url,error:t.error}}function q(e){let t=ue(e);if(typeof t.url!=`string`||!t.url||typeof t.token!=`string`||!t.token)throw p();return{url:t.url,token:t.token}}var J={status:e=>m(`/api/mcp-host`,{signal:e,parse:de}),setEnabled:e=>m(`/api/mcp-host`,{method:`PATCH`,body:{enabled:e},parse:de}),credentials:e=>m(`/api/mcp-host/credentials`,{method:`POST`,body:{},signal:e,parse:q}),rotateToken:e=>m(`/api/mcp-host/rotate-token`,{method:`POST`,body:{},signal:e,parse:q})},Y=n(),fe=[`mcp-host`,`status`];function pe(e){return JSON.stringify({mcpServers:{pisper:{url:e.url,headers:{Authorization:`Bearer ${e.token}`}}}},null,2)}function me({notify:e,requestConfirm:t}){let{t:n}=r(),o=T(),[s,d]=(0,R.useState)(!1),[f,p]=(0,R.useState)(!1),[m,g]=(0,R.useState)(!1),[_,v]=(0,R.useState)(null),[y,b]=(0,R.useState)(``),x=(0,R.useRef)(null),S=(0,R.useRef)(null),w=typeof window<`u`&&!!window.__PISPER_MOBILE_APP__,E=C({queryKey:fe,queryFn:({signal:e})=>J.status(e),enabled:!w&&!s,refetchInterval:15e3});if((0,R.useEffect)(()=>()=>{x.current?.abort()},[]),w)return null;let N=E.data,P=_?pe(_):``,I=()=>{x.current?.abort(),x.current=null,v(null),b(``),g(!1)},L=async()=>{x.current?.abort();let e=new AbortController;x.current=e,p(!0),v(null),b(``),g(!0);try{let t=await J.credentials(e.signal);e.signal.aborted||v(t)}catch(t){e.signal.aborted||b(t instanceof Error?t.message:n(`mcp:hostLoadFailed`))}finally{x.current===e&&(x.current=null,p(!1))}},re=async t=>{d(!0);try{let r=await J.setEnabled(t);o.setQueryData(fe,r),t||I(),e(r.error||n(t?`mcp:hostEnabledNotice`:`mcp:hostDisabledNotice`),r.error?`error`:`success`)}catch(t){e(t instanceof Error?t.message:n(`mcp:hostUpdateFailed`),`error`)}finally{d(!1)}},z=async()=>{if(t&&!await t({title:n(`mcp:hostRotateTitle`),message:n(`mcp:hostRotateWarning`),confirmLabel:n(`mcp:hostRotate`),tone:`danger`}))return;x.current?.abort();let r=new AbortController;x.current=r,p(!0),b(``),v(null);try{let t=await J.rotateToken(r.signal);r.signal.aborted||(v(t),e(n(`mcp:hostRotatedNotice`),`success`))}catch(e){r.signal.aborted||b(e instanceof Error?e.message:n(`mcp:hostRotateFailed`))}finally{x.current===r&&(x.current=null,p(!1))}},ie=async()=>{try{await navigator.clipboard.writeText(P),e(n(`mcp:hostCopied`),`success`)}catch{S.current?.select(),e(n(`mcp:hostCopyManually`),`error`)}};return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(F,{className:`mb-3 gap-3 p-4 shadow-none`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,Y.jsx)(`span`,{className:`mt-0.5 rounded-lg bg-muted p-2 text-foreground`,"aria-hidden":`true`,children:(0,Y.jsx)(ee,{className:`size-4`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-semibold text-foreground`,children:n(`mcp:hostTitle`)}),N&&(0,Y.jsx)(i,{variant:`outline`,className:`font-normal text-muted-foreground`,children:N.listening?n(`mcp:hostReady`):N.enabled?n(`mcp:hostUnavailable`):n(`mcp:disabled`)})]}),(0,Y.jsx)(`p`,{className:`max-w-2xl text-xs leading-5 text-muted-foreground`,children:n(`mcp:hostDescription`)})]})]}),(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`mcp:hostEnabled`)}),(0,Y.jsx)(a,{checked:!!N?.enabled,disabled:!N||s,"aria-label":n(`mcp:hostEnabled`),onCheckedChange:e=>void re(e)})]})]}),E.isPending&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`mcp:loading`)}),E.error&&(0,Y.jsxs)(D,{className:`flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground`,children:[(0,Y.jsx)(`span`,{children:E.error.message}),(0,Y.jsx)(h,{size:`sm`,variant:`ghost`,onClick:()=>void E.refetch(),children:n(`mcp:retry`)})]}),N?.error&&(0,Y.jsx)(D,{role:`status`,className:`text-xs text-muted-foreground`,children:N.error}),N?.listening&&(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2 border-t pt-3`,children:[(0,Y.jsx)(`code`,{className:`min-w-0 max-w-full break-all rounded-md bg-muted px-2 py-1 text-xs text-foreground`,children:N.url}),(0,Y.jsxs)(h,{size:`sm`,variant:`outline`,onClick:()=>void L(),children:[(0,Y.jsx)(l,{"data-icon":`inline-start`}),n(`mcp:hostShowConfig`)]})]})]}),(0,Y.jsx)(te,{open:m,onOpenChange:e=>!e&&I(),children:(0,Y.jsxs)(j,{className:`min-w-0 grid-cols-[minmax(0,1fr)] sm:max-w-xl`,children:[(0,Y.jsxs)(A,{className:`min-w-0 pr-8 text-left`,children:[(0,Y.jsx)(M,{children:n(`mcp:hostConfigTitle`)}),(0,Y.jsx)(k,{className:`leading-5`,children:n(`mcp:hostConfigDescription`)})]}),f&&(0,Y.jsxs)(`p`,{role:`status`,className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,Y.jsx)(u,{className:`size-4 animate-spin`}),n(`mcp:hostLoadingConfig`)]}),y&&(0,Y.jsx)(D,{role:`alert`,className:`text-sm text-muted-foreground`,children:y}),_&&(0,Y.jsx)(ne,{ref:S,value:P,readOnly:!0,spellCheck:!1,"aria-label":n(`mcp:hostConfigTitle`),className:`h-52 max-h-[45dvh] resize-y font-mono text-xs [overflow-wrap:anywhere]`,onFocus:e=>e.currentTarget.select()}),(0,Y.jsxs)(O,{className:`min-w-0 flex-wrap`,children:[(0,Y.jsxs)(h,{variant:`outline`,disabled:f,onClick:()=>void z(),children:[(0,Y.jsx)(u,{"data-icon":`inline-start`}),n(`mcp:hostRotate`)]}),(0,Y.jsxs)(h,{disabled:!_||f,onClick:()=>void ie(),children:[(0,Y.jsx)(c,{"data-icon":`inline-start`}),n(`mcp:hostCopyConfig`)]})]})]})})]})}var X=[`mcp`,`dashboard`],he=[`mcp`,`change`];function ge(){return E({queryKey:X,queryFn:({signal:e})=>K.dashboard(e),staleTime:0,retry:!1})}function _e(e){return{mutationKey:he,scope:{id:`mcp-dashboard`},retry:!1,mutationFn:async t=>(await e.cancelQueries({queryKey:X}),t()),onSuccess:t=>e.setQueryData(X,t),onSettled:()=>e.invalidateQueries({queryKey:X})}}function ve(){let e=T(),t=re({mutationKey:he})>0,n=C({...ge(),enabled:!t,refetchInterval:!t&&1e4}),r=ae(_e(e));return{data:n.data,loading:n.isPending,error:r.error||n.error,busy:t,change:r.mutateAsync,reload:()=>(r.reset(),n.refetch())}}var ye={green:`border-[var(--success-border)] bg-[var(--success-soft)] text-[var(--success-strong)]`,amber:`border-[var(--warning-border)] bg-[var(--warning-soft)] text-[var(--warning-strong)]`,gray:`border-[var(--stroke)] bg-[var(--surface-muted)] text-[var(--text-muted)]`,red:`border-[var(--danger-border)] bg-[var(--danger-soft)] text-[var(--danger)]`};function Z({className:e,children:t}){return(0,Y.jsx)(F,{size:`sm`,className:o(`workflow-card [&_h2]:text-[16px] [&_h2]:tracking-[-.02em] [.detail-stack_>_&]:[flex:0_0_auto] [border:1px_solid_var(--stroke)] rounded-[var(--r-xs)] bg-[var(--panel)] text-[var(--text)] shadow-[0_1px_2px_var(--sh-edge),0_14px_32px_-24px_var(--shadow)] gap-0 p-3.5 py-3.5`,e),children:t})}function Q({children:e}){return(0,Y.jsx)(P,{className:`workflow-section-title [.selection-list_&]:mb-[8px] [.node-library_&]:mb-[8px] text-[var(--text-soft)] text-[13px] font-[700] leading-[1.4]`,children:e})}function $({value:e,label:t,note:n,tone:r}){return(0,Y.jsxs)(F,{size:`sm`,className:o(`workflow-card [&_h2]:text-[16px] [&_h2]:tracking-[-.02em] [.detail-stack_>_&]:[flex:0_0_auto] [border:1px_solid_var(--stroke)] rounded-[var(--r-xs)] bg-[var(--panel)] text-[var(--text)] shadow-[0_1px_2px_var(--sh-edge),0_14px_32px_-24px_var(--shadow)] metric [transition:transform_var(--d2)_var(--ease-out),_box-shadow_var(--d2)_var(--ease-out),_border-color_var(--d2)_var(--ease-out)] hover:[transform:translateY(-2px)] hover:shadow-[var(--sh-2)] hover:border-[var(--star-border)] [&_small]:[grid-column:1/-1] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_strong]:mt-[5px] [&_strong]:font-[ui-monospace,_SFMono-Regular,_Consolas,_'Liberation_Mono',_monospace] [&_strong]:text-[23px] [&_span]:[align-self:end] [&_span]:text-[var(--text-muted)] [&_span]:text-[13px] [&.blue_strong]:text-[var(--star-strong)] [&.green_strong]:text-[var(--success)] [&.amber_strong]:text-[var(--amber)] grid grid-cols-[1fr_auto] [padding:12px] gap-0 p-3 py-3`,r),children:[(0,Y.jsx)(`small`,{children:t}),(0,Y.jsx)(`strong`,{children:e}),(0,Y.jsx)(`span`,{children:n})]})}function be({children:e,tone:t}){return(0,Y.jsx)(i,{variant:`outline`,className:ye[t],children:e})}function xe(e,t){return e===`online`?[t(`mcp:online`),`green`]:e===`connecting`?[t(`mcp:connecting`),`amber`]:e===`unauthorized`?[t(`mcp:unauthorized`),`gray`]:e===`disabled`?[t(`mcp:disabled`),`gray`]:[t(`mcp:offline`),`red`]}function Se(e,t){return e===`high`||e===`高风险`?t(`mcp:highRisk`):e===`medium`||e===`中风险`?t(`mcp:mediumRisk`):e===`low`||e===`低风险`?t(`mcp:lowRisk`):String(e||``)}function Ce(e,t){return e?e.auth===`headers`?t(`mcp:countRequestHeaders`,{count:e.authCount}):e.auth===`environment`?t(`mcp:configuredEnvironmentVariables`):e.auth===`local`?t(`mcp:localProcess`):t(`mcp:none`):`—`}function we({notify:e,query:t=``,registerPrimaryAction:n,requestText:i,requestConfirm:o}){let{t:c,language:l}=r(),{data:p,busy:m,loading:g,error:_,change:v,reload:y}=ve(),[b,x]=(0,R.useState)(``),S=(0,R.useCallback)(async()=>{let t=await i?.({title:c(`mcp:addMCPService`),message:c(`mcp:enterAStreamableHTTPURLAStdioCommandOrJSONContainingHeadersEnv`),inputLabel:c(`mcp:serverConfiguration`),placeholder:`https://server.example.com/mcp`,maxLength:12e3,confirmLabel:c(`mcp:continue`)});if(t?.trim()&&await o?.({title:c(`mcp:connectMCPServer`),message:c(`mcp:mcpServersCanExposeToolsThatPerformExternalActionsConnectOnlyToServersYouTrust`),confirmLabel:c(`mcp:connect`),tone:`danger`})!==!1)try{let n=await v(()=>K.add(t));x(n.services.at(-1)?.id||n.services[0]?.id||``),e(c(`mcp:mcpServerAdded`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},[v,e,o,i,c]);I(n,S);let C=p?.services||[],w=C.filter(e=>`${e.name} ${e.endpoint}`.toLowerCase().includes(t.toLowerCase())),T=C.find(e=>e.id===b)||w[0]||C[0]||null,E=(p?.tools||[]).filter(e=>`${e.name} ${e.serviceName} ${e.description}`.toLowerCase().includes(t.toLowerCase())),O=(p?.calls||[]).filter(e=>!T||e.serviceId===T.id),k=p?.metrics||{totalServices:0,onlineServices:0,availableTools:0,restrictedTools:0,errorRate:0},A=async(t,n)=>{try{await v(()=>K.setToolEnabled(t.serviceId,t.name,n))}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},j=async t=>{if(T)try{await v(()=>K.setServerEnabled(T.id,t)),e(c(t?`mcp:mcpServerEnabled`:`mcp:mcpServerDisabled`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},M=async()=>{if(T)try{await v(()=>K.test(T.id)),e(c(`mcp:mcpConnectionTestPassed`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},te=async()=>{if(T&&await o?.({title:c(`mcp:deleteMCPServer`),message:c(`mcp:afterDeletionToolsFromThisServerWillBeRemovedFromSubsequentAgentRuns`),confirmLabel:c(`mcp:delete`),tone:`danger`})!==!1)try{let t=await v(()=>K.remove(T.id));x(t?.services[0]?.id||``),e(c(`mcp:mcpServerDeleted`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}};return(0,Y.jsxs)(`div`,{className:`preview-page flex min-h-[100%] flex-col`,children:[(0,Y.jsx)(me,{notify:e,requestConfirm:o}),g&&!_&&(0,Y.jsx)(`p`,{role:`status`,children:c(`mcp:loading`)}),_&&(0,Y.jsxs)(D,{role:`status`,className:`mb-3 flex min-w-0 items-center justify-between gap-3 text-muted-foreground [overflow-wrap:anywhere]`,children:[(0,Y.jsx)(`span`,{children:_.message}),(0,Y.jsx)(h,{variant:`ghost`,disabled:m,onClick:()=>void y(),children:c(`mcp:retry`)})]}),p&&(0,Y.jsxs)(`div`,{className:`mcp-layout [.preview-page_>_&]:min-h-0 [.preview-page_>_&]:flex-1 max-[1150px]:grid-cols-[220px_minmax(340px,1fr)] max-[650px]:grid-cols-[1fr] grid min-h-[100%] grid-cols-[230px_minmax(320px,1fr)_300px] gap-[12px]`,children:[(0,Y.jsxs)(Z,{className:`selection-list [.config-layout_>_&]:max-h-[calc(100dvh_-_280px)] [.config-layout_>_&]:overflow-y-auto max-[900px]:max-h-[300px] min-h-0 overflow-auto`,children:[(0,Y.jsx)(Q,{children:c(`mcp:services`)}),w.length?w.map(e=>{let[t,n]=xe(e.status,c),r=e.transport===`stdio`?e.workingDirectory||e.command:e.endpoint;return(0,Y.jsxs)(`button`,{className:`service-row grid w-full grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-[9px] border-0 [border-top:1px_solid_var(--stroke-soft)] bg-transparent p-[10px_8px] text-left hover:rounded-[var(--r-sm)] hover:bg-[var(--accent-soft)] [&.active]:rounded-[var(--r-sm)] [&.active]:bg-[var(--accent-soft)] [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:flex-col [&_>_span:nth-child(2)]:gap-[3px] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_small]:overflow-hidden [&_small]:text-ellipsis [&_small]:whitespace-nowrap ${T?.id===e.id?`active`:``}`,onClick:()=>x(e.id),children:[(0,Y.jsx)(`span`,{className:`list-icon [.chat-resource-list_&]:grid [.chat-resource-list_&]:w-[28px] [.chat-resource-list_&]:h-[28px] [.chat-resource-list_&]:place-items-center [.chat-resource-list_&]:rounded-[var(--r-sm)] [.chat-resource-list_&]:bg-[var(--surface-subtle)] [.chat-resource-list_&]:text-[var(--star-strong)] [.session-workflow-summary_&]:grid [.session-workflow-summary_&]:w-[28px] [.session-workflow-summary_&]:h-[28px] [.session-workflow-summary_&]:place-items-center [.session-workflow-summary_&]:rounded-[var(--r-sm)] [.session-workflow-summary_&]:bg-[var(--surface-subtle)] [.session-workflow-summary_&]:text-[var(--star-strong)] grid w-[27px] h-[27px] place-items-center rounded-[var(--r-sm)] bg-[var(--accent-soft)] text-[var(--star-strong)] [.workflow-template-gallery_&]:grid [.workflow-template-gallery_&]:w-[32px] [.workflow-template-gallery_&]:h-[32px] [.workflow-template-gallery_&]:place-items-center [.workflow-template-gallery_&]:rounded-[var(--r-sm)] [.workflow-template-gallery_&]:bg-[var(--surface-subtle)] [.workflow-template-gallery_&]:text-[var(--star-strong)]`,children:(0,Y.jsx)(ee,{size:15})}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:e.name}),(0,Y.jsx)(`small`,{title:r,children:r})]}),(0,Y.jsx)(be,{tone:n,children:t})]},e.id)}):(0,Y.jsx)(`div`,{className:`channel-route-empty [&_strong]:mt-[9px] [&_strong]:text-[var(--text)] [&_strong]:text-[12px] [&_span]:mt-[4px] [&_span]:text-[13px] [&.compact]:min-h-[110px] [.workflow-assets-panel_&]:min-h-[150px] [.workflow-assets-panel_&]:border-0 [.workflow-assets-panel_&]:bg-transparent grid min-h-[185px] place-content-center justify-items-center text-[var(--text-muted)] text-center compact`,children:c(`mcp:noServerConfigured`)})]}),(0,Y.jsxs)(`div`,{className:`mcp-center max-[650px]:min-w-0 flex min-w-0 flex-col gap-[12px]`,children:[(0,Y.jsxs)(`div`,{className:`metric-grid max-[650px]:grid-cols-[1fr] grid grid-cols-[repeat(3,minmax(0,1fr))] gap-[9px]`,children:[(0,Y.jsx)($,{value:String(k.onlineServices),label:c(`mcp:onlineServices`),note:c(`mcp:countServicesTotal`,{count:k.totalServices}),tone:`blue`}),(0,Y.jsx)($,{value:String(k.availableTools),label:c(`mcp:availableTools`),note:c(`mcp:countRestrictedTools`,{count:k.restrictedTools}),tone:`green`}),(0,Y.jsx)($,{value:`${k.errorRate}%`,label:c(`mcp:errorRate`),note:`24h`,tone:`amber`})]}),(0,Y.jsxs)(Z,{className:`mcp-tools-panel min-h-0 flex-1 overflow-y-auto`,children:[(0,Y.jsxs)(Q,{children:[c(`mcp:toolCapabilities`),` · `,E.length]}),E.length?E.map(e=>(0,Y.jsxs)(`div`,{className:`tool-row [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:flex-col [&_>_span:nth-child(2)]:gap-[3px] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_small]:overflow-hidden [&_small]:text-ellipsis [&_small]:whitespace-nowrap grid min-h-[48px] grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-[8px] [border-top:1px_solid_var(--stroke-soft)] [padding:6px_2px]`,children:[(0,Y.jsx)(`span`,{className:`list-icon [.chat-resource-list_&]:grid [.chat-resource-list_&]:w-[28px] [.chat-resource-list_&]:h-[28px] [.chat-resource-list_&]:place-items-center [.chat-resource-list_&]:rounded-[var(--r-sm)] [.chat-resource-list_&]:bg-[var(--surface-subtle)] [.chat-resource-list_&]:text-[var(--star-strong)] [.session-workflow-summary_&]:grid [.session-workflow-summary_&]:w-[28px] [.session-workflow-summary_&]:h-[28px] [.session-workflow-summary_&]:place-items-center [.session-workflow-summary_&]:rounded-[var(--r-sm)] [.session-workflow-summary_&]:bg-[var(--surface-subtle)] [.session-workflow-summary_&]:text-[var(--star-strong)] grid w-[27px] h-[27px] place-items-center rounded-[var(--r-sm)] bg-[var(--accent-soft)] text-[var(--star-strong)] [.workflow-template-gallery_&]:grid [.workflow-template-gallery_&]:w-[32px] [.workflow-template-gallery_&]:h-[32px] [.workflow-template-gallery_&]:place-items-center [.workflow-template-gallery_&]:rounded-[var(--r-sm)] [.workflow-template-gallery_&]:bg-[var(--surface-subtle)] [.workflow-template-gallery_&]:text-[var(--star-strong)]`,children:(0,Y.jsx)(f,{size:15})}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:e.name}),(0,Y.jsxs)(`small`,{children:[e.serviceName,` · `,e.description]})]}),(0,Y.jsx)(be,{tone:e.risk===`high`||e.risk===`高风险`?`red`:e.risk===`medium`||e.risk===`中风险`?`amber`:`green`,children:Se(e.risk,c)}),(0,Y.jsx)(a,{checked:!!e.enabled,disabled:m||!e.serviceEnabled,"aria-label":c(`mcp:toggleToolName`,{name:e.name}),onCheckedChange:t=>void A(e,t)})]},e.piName)):(0,Y.jsx)(`div`,{className:`channel-route-empty [&_strong]:mt-[9px] [&_strong]:text-[var(--text)] [&_strong]:text-[12px] [&_span]:mt-[4px] [&_span]:text-[13px] [&.compact]:min-h-[110px] [.workflow-assets-panel_&]:min-h-[150px] [.workflow-assets-panel_&]:border-0 [.workflow-assets-panel_&]:bg-transparent grid min-h-[185px] place-content-center justify-items-center text-[var(--text-muted)] text-center compact`,children:c(`mcp:noToolsAvailable`)})]})]}),(0,Y.jsxs)(`div`,{className:`detail-stack flex min-w-0 flex-col gap-[12px] [.mcp-layout_>_&]:min-h-0 max-[1150px]:[.memory-layout_>_&]:[grid-column:1/-1] max-[1150px]:[.memory-layout_>_&]:grid max-[1150px]:[.memory-layout_>_&]:grid-cols-[repeat(2,minmax(0,1fr))] max-[1150px]:[.mcp-layout_>_&]:[grid-column:1/-1] max-[1150px]:[.mcp-layout_>_&]:grid max-[1150px]:[.mcp-layout_>_&]:grid-cols-[repeat(2,minmax(0,1fr))] max-[1150px]:[.skills-layout_>_&]:[grid-column:1/-1] max-[1150px]:[.skills-layout_>_&]:grid max-[1150px]:[.skills-layout_>_&]:grid-cols-[repeat(2,minmax(0,1fr))] max-[650px]:[.memory-layout_>_&]:[grid-column:auto] max-[650px]:[.memory-layout_>_&]:grid-cols-[1fr] max-[650px]:[.mcp-layout_>_&]:[grid-column:auto] max-[650px]:[.mcp-layout_>_&]:grid-cols-[1fr] max-[650px]:[.skills-layout_>_&]:[grid-column:auto] max-[650px]:[.skills-layout_>_&]:grid-cols-[1fr]`,children:[(0,Y.jsxs)(Z,{children:[(0,Y.jsx)(Q,{children:c(`mcp:currentService`)}),(0,Y.jsx)(`h2`,{children:T?.name||c(`mcp:noServerConfigured`)}),(0,Y.jsx)(`p`,{className:`muted-copy m-[8px_0_14px] text-[var(--text-muted)] text-[12px] leading-[1.55]`,children:T?.error||c(T?`mcp:thisServerExposesToolsThroughAStandardMCPTransportEnabledToolsAreRegisteredInNewAgentRuntimes`:`mcp:useTheButtonInTheUpperRightToAddAStreamableHTTPOrStdioMCPServer`)}),[[c(`mcp:transport`),T?.transport===`stdio`?`stdio`:T?.transport===`sse`?`HTTP + SSE`:`Streamable HTTP`],...T?.transport===`stdio`?[[c(`mcp:executable`),T.command||`—`],[c(`mcp:workingDirectory`),T.workingDirectory||`—`]]:[[c(`mcp:serverAddress`),T?.endpoint||`—`]],[c(`mcp:latency`),T?.latencyMs==null?`—`:`${T.latencyMs} ms`],[c(`mcp:lastPing`),T?.lastPingAt?N(T.lastPingAt,l):`—`],[c(`mcp:authentication`),Ce(T,c)]].map(e=>(0,Y.jsxs)(`div`,{className:`key-value [&:first-of-type]:mt-[7px] [&_span]:text-[var(--text-muted)] [&_button]:flex [&_button]:items-center [&_button]:gap-[4px] [&_button]:border-0 [&_button]:bg-transparent [&_button]:text-[var(--text-soft)] [&_button]:text-[12px] [&_strong]:min-w-0 [&_strong]:overflow-hidden [&_strong]:text-[13px] [&_strong]:text-ellipsis [&_strong]:whitespace-nowrap flex min-h-[31px] items-center justify-between gap-[10px] [border-top:1px_solid_var(--stroke-soft)] text-[13px]`,children:[(0,Y.jsx)(`span`,{children:e[0]}),(0,Y.jsx)(`strong`,{title:e[1],children:e[1]})]},e[0])),(0,Y.jsxs)(`div`,{className:`toggle-line [&_>_span]:flex [&_>_span]:items-center [&_>_span]:gap-[7px] [&_>_span]:text-[12px] flex min-h-[34px] items-center justify-between [border-top:1px_solid_var(--stroke-soft)]`,children:[(0,Y.jsx)(`span`,{children:c(`mcp:serverEnabled`)}),(0,Y.jsx)(a,{checked:!!T?.enabled,disabled:!T||m,"aria-label":c(`mcp:toggleMCPServer`),onCheckedChange:e=>void j(e)})]}),(0,Y.jsxs)(`div`,{className:`mt-[15px] flex gap-2 max-[650px]:flex-wrap`,children:[(0,Y.jsxs)(h,{size:`sm`,variant:`secondary`,disabled:!T?.enabled||m,onClick:M,children:[(0,Y.jsx)(u,{className:m?`animate-spin`:``,"data-icon":`inline-start`}),c(`mcp:testConnection`)]}),(0,Y.jsxs)(h,{size:`sm`,variant:`destructive`,disabled:!T||m,onClick:te,children:[(0,Y.jsx)(d,{"data-icon":`inline-start`}),c(`mcp:delete`)]})]})]}),(0,Y.jsxs)(Z,{className:`mcp-calls-panel min-h-0 flex-1 overflow-y-auto`,children:[(0,Y.jsx)(Q,{children:c(`mcp:recentCalls`)}),O.length?O.slice(0,8).map(e=>(0,Y.jsxs)(`div`,{className:`activity-row [&_span]:flex [&_span]:min-w-0 [&_span]:flex-col [&_span]:gap-[3px] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_span]:text-[var(--text)] [&.failed]:text-[var(--danger)] [&.running]:text-[var(--star-strong)] grid grid-cols-[auto_minmax(0,1fr)] items-center gap-[9px] [border-top:1px_solid_var(--stroke-soft)] [padding:9px_2px] text-[var(--success)]`,children:[(0,Y.jsx)(s,{size:14}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:e.toolName}),(0,Y.jsxs)(`small`,{children:[N(e.timestamp,l),` ·`,` `,e.status===`ok`?c(`mcp:callSucceeded`):e.error||c(`mcp:callFailed`),` `,`· `,e.durationMs,` ms`]})]})]},e.id)):(0,Y.jsx)(`div`,{className:`channel-route-empty [&_strong]:mt-[9px] [&_strong]:text-[var(--text)] [&_strong]:text-[12px] [&_span]:mt-[4px] [&_span]:text-[13px] [&.compact]:min-h-[110px] [.workflow-assets-panel_&]:min-h-[150px] [.workflow-assets-panel_&]:border-0 [.workflow-assets-panel_&]:bg-transparent grid min-h-[185px] place-content-center justify-items-center text-[var(--text-muted)] text-center compact`,children:c(`mcp:noRecentCalls`)})]})]})]})]})}export{we as McpPage};
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-C7st2Mx5.js";import{n as i,t as a}from"./switch-Ci_hmu39.js";import{t as o}from"./utils-C8uzG5AZ.js";import{t as s}from"./circle-dot-nVrXgDaG.js";import{t as c}from"./copy-DHmIFc52.js";import{t as l}from"./key-round-C29uZbsf.js";import{t as u}from"./refresh-cw-TbWxTY4K.js";import{t as ee}from"./server-BgNvmqwJ.js";import{t as d}from"./trash-2-CNrPOoPR.js";import{t as f}from"./wrench-6pg6_bqI.js";import{i as p,n as m}from"./http-C4bTWPzF.js";import{t as h}from"./button-CQA36izu.js";import{D as g,S as _,h as v,o as y,u as b,v as x,x as S}from"./query-Bj-DUNYq.js";import{t as C}from"./useQuery-D3P5wO_Z.js";import{n as w}from"./mutation-CEbxdVYy.js";import{n as T}from"./QueryClientProvider-CHJtxoX1.js";import{t as E}from"./queryOptions-Dfvzj6n2.js";import{t as D}from"./alert-QoPGoIY6.js";import{a as O,i as k,o as A,r as j,s as M,t as te}from"./dialog-D-ER2p-D.js";import{r as N}from"./format-BRFKAYMT.js";import{r as P,t as F}from"./card-BdUpL1KB.js";import{t as I}from"./usePagePrimaryAction-CWPC0C_f.js";import{t as ne}from"./textarea-bYCRTyEt.js";var L=class extends g{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),S(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&b(t.mutationKey)!==b(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??w();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){y.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},R=e(t(),1);function re(e,t){let n=T(t);return ie({filters:{...e,status:`pending`}},n).length}function z(e,t){return e.findAll(t.filters).map(e=>t.select?t.select(e):e.state)}function ie(e={},t){let n=T(t).getMutationCache(),r=R.useRef(e),i=R.useRef(null);return i.current===null&&(i.current=z(n,e)),R.useEffect(()=>{r.current=e}),R.useSyncExternalStore(R.useCallback(e=>n.subscribe(()=>{let t=x(i.current,z(n,r.current));i.current!==t&&(i.current=t,y.schedule(e))}),[n]),()=>i.current,()=>i.current)}function ae(e,t){let n=T(t),[r]=R.useState(()=>new L(n,e));R.useEffect(()=>{r.setOptions(e)},[r,e]);let i=R.useSyncExternalStore(R.useCallback(e=>r.subscribe(y.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=R.useCallback((e,t)=>{r.mutate(e,t).catch(v)},[r]);if(i.error&&_(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}function B(e){if(!e||typeof e!=`object`||Array.isArray(e))throw p();return Object.fromEntries(Object.entries(e))}function V(e,t=!1){if(e==null&&!t)return``;if(typeof e!=`string`||t&&!e)throw p();return e}function H(e,t=0){if(e==null)return t;if(typeof e!=`number`||!Number.isFinite(e))throw p();return e}function U(e){if(typeof e!=`boolean`)throw p();return e}function oe(e,t){if(e===void 0)return[];if(!Array.isArray(e))throw p();return e.map(t)}function se(e){let t=B(e);return{id:V(t.id,!0),name:V(t.name,!0),status:V(t.status),transport:V(t.transport),endpoint:V(t.endpoint),command:V(t.command),workingDirectory:V(t.workingDirectory),enabled:U(t.enabled),error:V(t.error),latencyMs:t.latencyMs==null?null:H(t.latencyMs),lastPingAt:V(t.lastPingAt),auth:V(t.auth),authCount:H(t.authCount)}}function ce(e){let t=B(e);return{serviceId:V(t.serviceId,!0),serviceName:V(t.serviceName),name:V(t.name,!0),piName:V(t.piName,!0),description:V(t.description),enabled:U(t.enabled),serviceEnabled:U(t.serviceEnabled),risk:V(t.risk)}}function le(e){let t=B(e);return{id:V(t.id,!0),serviceId:V(t.serviceId,!0),toolName:V(t.toolName),timestamp:V(t.timestamp),status:V(t.status),error:V(t.error),durationMs:H(t.durationMs)}}function W(e){let t=B(e);if(!Array.isArray(t.services))throw p();let n=t.metrics===void 0?{}:B(t.metrics);return{services:t.services.map(se),tools:oe(t.tools,ce),calls:oe(t.calls,le),metrics:{totalServices:H(n.totalServices),onlineServices:H(n.onlineServices),availableTools:H(n.availableTools),restrictedTools:H(n.restrictedTools),errorRate:H(n.errorRate)}}}var G=e=>`/api/mcp/${encodeURIComponent(e)}`,K={dashboard:e=>m(`/api/mcp?refresh=0`,{signal:e,parse:W}),add:e=>m(`/api/mcp`,{method:`POST`,body:{spec:e},parse:W}),setServerEnabled:(e,t)=>m(G(e),{method:`PATCH`,body:{enabled:t},parse:W}),setToolEnabled:(e,t,n)=>m(`${G(e)}/tools/${encodeURIComponent(t)}`,{method:`PATCH`,body:{enabled:n},parse:W}),test:e=>m(`${G(e)}/test`,{method:`POST`,body:{},parse:W}),remove:async e=>(await m(G(e),{method:`DELETE`}),K.dashboard())};function ue(e){if(!e||typeof e!=`object`||Array.isArray(e))throw p();return Object.fromEntries(Object.entries(e))}function de(e){let t=ue(e);if(typeof t.enabled!=`boolean`||typeof t.listening!=`boolean`||typeof t.host!=`string`||typeof t.port!=`number`||!Number.isInteger(t.port)||typeof t.url!=`string`||t.error!==null&&typeof t.error!=`string`)throw p();return{enabled:t.enabled,listening:t.listening,host:t.host,port:t.port,url:t.url,error:t.error}}function q(e){let t=ue(e);if(typeof t.url!=`string`||!t.url||typeof t.token!=`string`||!t.token)throw p();return{url:t.url,token:t.token}}var J={status:e=>m(`/api/mcp-host`,{signal:e,parse:de}),setEnabled:e=>m(`/api/mcp-host`,{method:`PATCH`,body:{enabled:e},parse:de}),credentials:e=>m(`/api/mcp-host/credentials`,{method:`POST`,body:{},signal:e,parse:q}),rotateToken:e=>m(`/api/mcp-host/rotate-token`,{method:`POST`,body:{},signal:e,parse:q})},Y=n(),fe=[`mcp-host`,`status`];function pe(e){return JSON.stringify({mcpServers:{pisper:{url:e.url,headers:{Authorization:`Bearer ${e.token}`}}}},null,2)}function me({notify:e,requestConfirm:t}){let{t:n}=r(),o=T(),[s,d]=(0,R.useState)(!1),[f,p]=(0,R.useState)(!1),[m,g]=(0,R.useState)(!1),[_,v]=(0,R.useState)(null),[y,b]=(0,R.useState)(``),x=(0,R.useRef)(null),S=(0,R.useRef)(null),w=typeof window<`u`&&!!window.__PISPER_MOBILE_APP__,E=C({queryKey:fe,queryFn:({signal:e})=>J.status(e),enabled:!w&&!s,refetchInterval:15e3});if((0,R.useEffect)(()=>()=>{x.current?.abort()},[]),w)return null;let N=E.data,P=_?pe(_):``,I=()=>{x.current?.abort(),x.current=null,v(null),b(``),g(!1)},L=async()=>{x.current?.abort();let e=new AbortController;x.current=e,p(!0),v(null),b(``),g(!0);try{let t=await J.credentials(e.signal);e.signal.aborted||v(t)}catch(t){e.signal.aborted||b(t instanceof Error?t.message:n(`mcp:hostLoadFailed`))}finally{x.current===e&&(x.current=null,p(!1))}},re=async t=>{d(!0);try{let r=await J.setEnabled(t);o.setQueryData(fe,r),t||I(),e(r.error||n(t?`mcp:hostEnabledNotice`:`mcp:hostDisabledNotice`),r.error?`error`:`success`)}catch(t){e(t instanceof Error?t.message:n(`mcp:hostUpdateFailed`),`error`)}finally{d(!1)}},z=async()=>{if(t&&!await t({title:n(`mcp:hostRotateTitle`),message:n(`mcp:hostRotateWarning`),confirmLabel:n(`mcp:hostRotate`),tone:`danger`}))return;x.current?.abort();let r=new AbortController;x.current=r,p(!0),b(``),v(null);try{let t=await J.rotateToken(r.signal);r.signal.aborted||(v(t),e(n(`mcp:hostRotatedNotice`),`success`))}catch(e){r.signal.aborted||b(e instanceof Error?e.message:n(`mcp:hostRotateFailed`))}finally{x.current===r&&(x.current=null,p(!1))}},ie=async()=>{try{await navigator.clipboard.writeText(P),e(n(`mcp:hostCopied`),`success`)}catch{S.current?.select(),e(n(`mcp:hostCopyManually`),`error`)}};return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(F,{className:`mb-3 gap-3 p-4 shadow-none`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,Y.jsx)(`span`,{className:`mt-0.5 rounded-lg bg-muted p-2 text-foreground`,"aria-hidden":`true`,children:(0,Y.jsx)(ee,{className:`size-4`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-semibold text-foreground`,children:n(`mcp:hostTitle`)}),N&&(0,Y.jsx)(i,{variant:`outline`,className:`font-normal text-muted-foreground`,children:N.listening?n(`mcp:hostReady`):N.enabled?n(`mcp:hostUnavailable`):n(`mcp:disabled`)})]}),(0,Y.jsx)(`p`,{className:`max-w-2xl text-xs leading-5 text-muted-foreground`,children:n(`mcp:hostDescription`)})]})]}),(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`mcp:hostEnabled`)}),(0,Y.jsx)(a,{checked:!!N?.enabled,disabled:!N||s,"aria-label":n(`mcp:hostEnabled`),onCheckedChange:e=>void re(e)})]})]}),E.isPending&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`mcp:loading`)}),E.error&&(0,Y.jsxs)(D,{className:`flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground`,children:[(0,Y.jsx)(`span`,{children:E.error.message}),(0,Y.jsx)(h,{size:`sm`,variant:`ghost`,onClick:()=>void E.refetch(),children:n(`mcp:retry`)})]}),N?.error&&(0,Y.jsx)(D,{role:`status`,className:`text-xs text-muted-foreground`,children:N.error}),N?.listening&&(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2 border-t pt-3`,children:[(0,Y.jsx)(`code`,{className:`min-w-0 max-w-full break-all rounded-md bg-muted px-2 py-1 text-xs text-foreground`,children:N.url}),(0,Y.jsxs)(h,{size:`sm`,variant:`outline`,onClick:()=>void L(),children:[(0,Y.jsx)(l,{"data-icon":`inline-start`}),n(`mcp:hostShowConfig`)]})]})]}),(0,Y.jsx)(te,{open:m,onOpenChange:e=>!e&&I(),children:(0,Y.jsxs)(j,{className:`min-w-0 grid-cols-[minmax(0,1fr)] sm:max-w-xl`,children:[(0,Y.jsxs)(A,{className:`min-w-0 pr-8 text-left`,children:[(0,Y.jsx)(M,{children:n(`mcp:hostConfigTitle`)}),(0,Y.jsx)(k,{className:`leading-5`,children:n(`mcp:hostConfigDescription`)})]}),f&&(0,Y.jsxs)(`p`,{role:`status`,className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,Y.jsx)(u,{className:`size-4 animate-spin`}),n(`mcp:hostLoadingConfig`)]}),y&&(0,Y.jsx)(D,{role:`alert`,className:`text-sm text-muted-foreground`,children:y}),_&&(0,Y.jsx)(ne,{ref:S,value:P,readOnly:!0,spellCheck:!1,"aria-label":n(`mcp:hostConfigTitle`),className:`h-52 max-h-[45dvh] resize-y font-mono text-xs [overflow-wrap:anywhere]`,onFocus:e=>e.currentTarget.select()}),(0,Y.jsxs)(O,{className:`min-w-0 flex-wrap`,children:[(0,Y.jsxs)(h,{variant:`outline`,disabled:f,onClick:()=>void z(),children:[(0,Y.jsx)(u,{"data-icon":`inline-start`}),n(`mcp:hostRotate`)]}),(0,Y.jsxs)(h,{disabled:!_||f,onClick:()=>void ie(),children:[(0,Y.jsx)(c,{"data-icon":`inline-start`}),n(`mcp:hostCopyConfig`)]})]})]})})]})}var X=[`mcp`,`dashboard`],he=[`mcp`,`change`];function ge(){return E({queryKey:X,queryFn:({signal:e})=>K.dashboard(e),staleTime:0,retry:!1})}function _e(e){return{mutationKey:he,scope:{id:`mcp-dashboard`},retry:!1,mutationFn:async t=>(await e.cancelQueries({queryKey:X}),t()),onSuccess:t=>e.setQueryData(X,t),onSettled:()=>e.invalidateQueries({queryKey:X})}}function ve(){let e=T(),t=re({mutationKey:he})>0,n=C({...ge(),enabled:!t,refetchInterval:!t&&1e4}),r=ae(_e(e));return{data:n.data,loading:n.isPending,error:r.error||n.error,busy:t,change:r.mutateAsync,reload:()=>(r.reset(),n.refetch())}}var ye={green:`border-[var(--success-border)] bg-[var(--success-soft)] text-[var(--success-strong)]`,amber:`border-[var(--warning-border)] bg-[var(--warning-soft)] text-[var(--warning-strong)]`,gray:`border-[var(--stroke)] bg-[var(--surface-muted)] text-[var(--text-muted)]`,red:`border-[var(--danger-border)] bg-[var(--danger-soft)] text-[var(--danger)]`};function Z({className:e,children:t}){return(0,Y.jsx)(F,{size:`sm`,className:o(`workflow-card [&_h2]:text-[16px] [&_h2]:tracking-[-.02em] [.detail-stack_>_&]:[flex:0_0_auto] [border:1px_solid_var(--stroke)] rounded-[var(--r-xs)] bg-[var(--panel)] text-[var(--text)] shadow-[0_1px_2px_var(--sh-edge),0_14px_32px_-24px_var(--shadow)] gap-0 p-3.5 py-3.5`,e),children:t})}function Q({children:e}){return(0,Y.jsx)(P,{className:`workflow-section-title [.selection-list_&]:mb-[8px] [.node-library_&]:mb-[8px] text-[var(--text-soft)] text-[13px] font-[700] leading-[1.4]`,children:e})}function $({value:e,label:t,note:n,tone:r}){return(0,Y.jsxs)(F,{size:`sm`,className:o(`workflow-card [&_h2]:text-[16px] [&_h2]:tracking-[-.02em] [.detail-stack_>_&]:[flex:0_0_auto] [border:1px_solid_var(--stroke)] rounded-[var(--r-xs)] bg-[var(--panel)] text-[var(--text)] shadow-[0_1px_2px_var(--sh-edge),0_14px_32px_-24px_var(--shadow)] metric [transition:transform_var(--d2)_var(--ease-out),_box-shadow_var(--d2)_var(--ease-out),_border-color_var(--d2)_var(--ease-out)] hover:[transform:translateY(-2px)] hover:shadow-[var(--sh-2)] hover:border-[var(--star-border)] [&_small]:[grid-column:1/-1] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_strong]:mt-[5px] [&_strong]:font-[ui-monospace,_SFMono-Regular,_Consolas,_'Liberation_Mono',_monospace] [&_strong]:text-[23px] [&_span]:[align-self:end] [&_span]:text-[var(--text-muted)] [&_span]:text-[13px] [&.blue_strong]:text-[var(--star-strong)] [&.green_strong]:text-[var(--success)] [&.amber_strong]:text-[var(--amber)] grid grid-cols-[1fr_auto] [padding:12px] gap-0 p-3 py-3`,r),children:[(0,Y.jsx)(`small`,{children:t}),(0,Y.jsx)(`strong`,{children:e}),(0,Y.jsx)(`span`,{children:n})]})}function be({children:e,tone:t}){return(0,Y.jsx)(i,{variant:`outline`,className:ye[t],children:e})}function xe(e,t){return e===`online`?[t(`mcp:online`),`green`]:e===`connecting`?[t(`mcp:connecting`),`amber`]:e===`unauthorized`?[t(`mcp:unauthorized`),`gray`]:e===`disabled`?[t(`mcp:disabled`),`gray`]:[t(`mcp:offline`),`red`]}function Se(e,t){return e===`high`||e===`高风险`?t(`mcp:highRisk`):e===`medium`||e===`中风险`?t(`mcp:mediumRisk`):e===`low`||e===`低风险`?t(`mcp:lowRisk`):String(e||``)}function Ce(e,t){return e?e.auth===`headers`?t(`mcp:countRequestHeaders`,{count:e.authCount}):e.auth===`environment`?t(`mcp:configuredEnvironmentVariables`):e.auth===`local`?t(`mcp:localProcess`):t(`mcp:none`):`—`}function we({notify:e,query:t=``,registerPrimaryAction:n,requestText:i,requestConfirm:o}){let{t:c,language:l}=r(),{data:p,busy:m,loading:g,error:_,change:v,reload:y}=ve(),[b,x]=(0,R.useState)(``),S=(0,R.useCallback)(async()=>{let t=await i?.({title:c(`mcp:addMCPService`),message:c(`mcp:enterAStreamableHTTPURLAStdioCommandOrJSONContainingHeadersEnv`),inputLabel:c(`mcp:serverConfiguration`),placeholder:`https://server.example.com/mcp`,maxLength:12e3,confirmLabel:c(`mcp:continue`)});if(t?.trim()&&await o?.({title:c(`mcp:connectMCPServer`),message:c(`mcp:mcpServersCanExposeToolsThatPerformExternalActionsConnectOnlyToServersYouTrust`),confirmLabel:c(`mcp:connect`),tone:`danger`})!==!1)try{let n=await v(()=>K.add(t));x(n.services.at(-1)?.id||n.services[0]?.id||``),e(c(`mcp:mcpServerAdded`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},[v,e,o,i,c]);I(n,S);let C=p?.services||[],w=C.filter(e=>`${e.name} ${e.endpoint}`.toLowerCase().includes(t.toLowerCase())),T=C.find(e=>e.id===b)||w[0]||C[0]||null,E=(p?.tools||[]).filter(e=>`${e.name} ${e.serviceName} ${e.description}`.toLowerCase().includes(t.toLowerCase())),O=(p?.calls||[]).filter(e=>!T||e.serviceId===T.id),k=p?.metrics||{totalServices:0,onlineServices:0,availableTools:0,restrictedTools:0,errorRate:0},A=async(t,n)=>{try{await v(()=>K.setToolEnabled(t.serviceId,t.name,n))}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},j=async t=>{if(T)try{await v(()=>K.setServerEnabled(T.id,t)),e(c(t?`mcp:mcpServerEnabled`:`mcp:mcpServerDisabled`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},M=async()=>{if(T)try{await v(()=>K.test(T.id)),e(c(`mcp:mcpConnectionTestPassed`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}},te=async()=>{if(T&&await o?.({title:c(`mcp:deleteMCPServer`),message:c(`mcp:afterDeletionToolsFromThisServerWillBeRemovedFromSubsequentAgentRuns`),confirmLabel:c(`mcp:delete`),tone:`danger`})!==!1)try{let t=await v(()=>K.remove(T.id));x(t?.services[0]?.id||``),e(c(`mcp:mcpServerDeleted`),`success`)}catch(t){e(t instanceof Error?t.message:String(t),`error`)}};return(0,Y.jsxs)(`div`,{className:`preview-page flex min-h-[100%] flex-col`,children:[(0,Y.jsx)(me,{notify:e,requestConfirm:o}),g&&!_&&(0,Y.jsx)(`p`,{role:`status`,children:c(`mcp:loading`)}),_&&(0,Y.jsxs)(D,{role:`status`,className:`mb-3 flex min-w-0 items-center justify-between gap-3 text-muted-foreground [overflow-wrap:anywhere]`,children:[(0,Y.jsx)(`span`,{children:_.message}),(0,Y.jsx)(h,{variant:`ghost`,disabled:m,onClick:()=>void y(),children:c(`mcp:retry`)})]}),p&&(0,Y.jsxs)(`div`,{className:`mcp-layout [.preview-page_>_&]:min-h-0 [.preview-page_>_&]:flex-1 max-[1150px]:grid-cols-[220px_minmax(340px,1fr)] max-[650px]:grid-cols-[1fr] grid min-h-[100%] grid-cols-[230px_minmax(320px,1fr)_300px] gap-[12px]`,children:[(0,Y.jsxs)(Z,{className:`selection-list [.config-layout_>_&]:max-h-[calc(100dvh_-_280px)] [.config-layout_>_&]:overflow-y-auto max-[900px]:max-h-[300px] min-h-0 overflow-auto`,children:[(0,Y.jsx)(Q,{children:c(`mcp:services`)}),w.length?w.map(e=>{let[t,n]=xe(e.status,c),r=e.transport===`stdio`?e.workingDirectory||e.command:e.endpoint;return(0,Y.jsxs)(`button`,{className:`service-row grid w-full grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-[9px] border-0 [border-top:1px_solid_var(--stroke-soft)] bg-transparent p-[10px_8px] text-left hover:rounded-[var(--r-sm)] hover:bg-[var(--accent-soft)] [&.active]:rounded-[var(--r-sm)] [&.active]:bg-[var(--accent-soft)] [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:flex-col [&_>_span:nth-child(2)]:gap-[3px] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_small]:overflow-hidden [&_small]:text-ellipsis [&_small]:whitespace-nowrap ${T?.id===e.id?`active`:``}`,onClick:()=>x(e.id),children:[(0,Y.jsx)(`span`,{className:`list-icon [.chat-resource-list_&]:grid [.chat-resource-list_&]:w-[28px] [.chat-resource-list_&]:h-[28px] [.chat-resource-list_&]:place-items-center [.chat-resource-list_&]:rounded-[var(--r-sm)] [.chat-resource-list_&]:bg-[var(--surface-subtle)] [.chat-resource-list_&]:text-[var(--star-strong)] [.session-workflow-summary_&]:grid [.session-workflow-summary_&]:w-[28px] [.session-workflow-summary_&]:h-[28px] [.session-workflow-summary_&]:place-items-center [.session-workflow-summary_&]:rounded-[var(--r-sm)] [.session-workflow-summary_&]:bg-[var(--surface-subtle)] [.session-workflow-summary_&]:text-[var(--star-strong)] grid w-[27px] h-[27px] place-items-center rounded-[var(--r-sm)] bg-[var(--accent-soft)] text-[var(--star-strong)] [.workflow-template-gallery_&]:grid [.workflow-template-gallery_&]:w-[32px] [.workflow-template-gallery_&]:h-[32px] [.workflow-template-gallery_&]:place-items-center [.workflow-template-gallery_&]:rounded-[var(--r-sm)] [.workflow-template-gallery_&]:bg-[var(--surface-subtle)] [.workflow-template-gallery_&]:text-[var(--star-strong)]`,children:(0,Y.jsx)(ee,{size:15})}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:e.name}),(0,Y.jsx)(`small`,{title:r,children:r})]}),(0,Y.jsx)(be,{tone:n,children:t})]},e.id)}):(0,Y.jsx)(`div`,{className:`channel-route-empty [&_strong]:mt-[9px] [&_strong]:text-[var(--text)] [&_strong]:text-[12px] [&_span]:mt-[4px] [&_span]:text-[13px] [&.compact]:min-h-[110px] [.workflow-assets-panel_&]:min-h-[150px] [.workflow-assets-panel_&]:border-0 [.workflow-assets-panel_&]:bg-transparent grid min-h-[185px] place-content-center justify-items-center text-[var(--text-muted)] text-center compact`,children:c(`mcp:noServerConfigured`)})]}),(0,Y.jsxs)(`div`,{className:`mcp-center max-[650px]:min-w-0 flex min-w-0 flex-col gap-[12px]`,children:[(0,Y.jsxs)(`div`,{className:`metric-grid max-[650px]:grid-cols-[1fr] grid grid-cols-[repeat(3,minmax(0,1fr))] gap-[9px]`,children:[(0,Y.jsx)($,{value:String(k.onlineServices),label:c(`mcp:onlineServices`),note:c(`mcp:countServicesTotal`,{count:k.totalServices}),tone:`blue`}),(0,Y.jsx)($,{value:String(k.availableTools),label:c(`mcp:availableTools`),note:c(`mcp:countRestrictedTools`,{count:k.restrictedTools}),tone:`green`}),(0,Y.jsx)($,{value:`${k.errorRate}%`,label:c(`mcp:errorRate`),note:`24h`,tone:`amber`})]}),(0,Y.jsxs)(Z,{className:`mcp-tools-panel min-h-0 flex-1 overflow-y-auto`,children:[(0,Y.jsxs)(Q,{children:[c(`mcp:toolCapabilities`),` · `,E.length]}),E.length?E.map(e=>(0,Y.jsxs)(`div`,{className:`tool-row [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:flex-col [&_>_span:nth-child(2)]:gap-[3px] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_small]:overflow-hidden [&_small]:text-ellipsis [&_small]:whitespace-nowrap grid min-h-[48px] grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-[8px] [border-top:1px_solid_var(--stroke-soft)] [padding:6px_2px]`,children:[(0,Y.jsx)(`span`,{className:`list-icon [.chat-resource-list_&]:grid [.chat-resource-list_&]:w-[28px] [.chat-resource-list_&]:h-[28px] [.chat-resource-list_&]:place-items-center [.chat-resource-list_&]:rounded-[var(--r-sm)] [.chat-resource-list_&]:bg-[var(--surface-subtle)] [.chat-resource-list_&]:text-[var(--star-strong)] [.session-workflow-summary_&]:grid [.session-workflow-summary_&]:w-[28px] [.session-workflow-summary_&]:h-[28px] [.session-workflow-summary_&]:place-items-center [.session-workflow-summary_&]:rounded-[var(--r-sm)] [.session-workflow-summary_&]:bg-[var(--surface-subtle)] [.session-workflow-summary_&]:text-[var(--star-strong)] grid w-[27px] h-[27px] place-items-center rounded-[var(--r-sm)] bg-[var(--accent-soft)] text-[var(--star-strong)] [.workflow-template-gallery_&]:grid [.workflow-template-gallery_&]:w-[32px] [.workflow-template-gallery_&]:h-[32px] [.workflow-template-gallery_&]:place-items-center [.workflow-template-gallery_&]:rounded-[var(--r-sm)] [.workflow-template-gallery_&]:bg-[var(--surface-subtle)] [.workflow-template-gallery_&]:text-[var(--star-strong)]`,children:(0,Y.jsx)(f,{size:15})}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:e.name}),(0,Y.jsxs)(`small`,{children:[e.serviceName,` · `,e.description]})]}),(0,Y.jsx)(be,{tone:e.risk===`high`||e.risk===`高风险`?`red`:e.risk===`medium`||e.risk===`中风险`?`amber`:`green`,children:Se(e.risk,c)}),(0,Y.jsx)(a,{checked:!!e.enabled,disabled:m||!e.serviceEnabled,"aria-label":c(`mcp:toggleToolName`,{name:e.name}),onCheckedChange:t=>void A(e,t)})]},e.piName)):(0,Y.jsx)(`div`,{className:`channel-route-empty [&_strong]:mt-[9px] [&_strong]:text-[var(--text)] [&_strong]:text-[12px] [&_span]:mt-[4px] [&_span]:text-[13px] [&.compact]:min-h-[110px] [.workflow-assets-panel_&]:min-h-[150px] [.workflow-assets-panel_&]:border-0 [.workflow-assets-panel_&]:bg-transparent grid min-h-[185px] place-content-center justify-items-center text-[var(--text-muted)] text-center compact`,children:c(`mcp:noToolsAvailable`)})]})]}),(0,Y.jsxs)(`div`,{className:`detail-stack flex min-w-0 flex-col gap-[12px] [.mcp-layout_>_&]:min-h-0 max-[1150px]:[.memory-layout_>_&]:[grid-column:1/-1] max-[1150px]:[.memory-layout_>_&]:grid max-[1150px]:[.memory-layout_>_&]:grid-cols-[repeat(2,minmax(0,1fr))] max-[1150px]:[.mcp-layout_>_&]:[grid-column:1/-1] max-[1150px]:[.mcp-layout_>_&]:grid max-[1150px]:[.mcp-layout_>_&]:grid-cols-[repeat(2,minmax(0,1fr))] max-[1150px]:[.skills-layout_>_&]:[grid-column:1/-1] max-[1150px]:[.skills-layout_>_&]:grid max-[1150px]:[.skills-layout_>_&]:grid-cols-[repeat(2,minmax(0,1fr))] max-[650px]:[.memory-layout_>_&]:[grid-column:auto] max-[650px]:[.memory-layout_>_&]:grid-cols-[1fr] max-[650px]:[.mcp-layout_>_&]:[grid-column:auto] max-[650px]:[.mcp-layout_>_&]:grid-cols-[1fr] max-[650px]:[.skills-layout_>_&]:[grid-column:auto] max-[650px]:[.skills-layout_>_&]:grid-cols-[1fr]`,children:[(0,Y.jsxs)(Z,{children:[(0,Y.jsx)(Q,{children:c(`mcp:currentService`)}),(0,Y.jsx)(`h2`,{children:T?.name||c(`mcp:noServerConfigured`)}),(0,Y.jsx)(`p`,{className:`muted-copy m-[8px_0_14px] text-[var(--text-muted)] text-[12px] leading-[1.55]`,children:T?.error||c(T?`mcp:thisServerExposesToolsThroughAStandardMCPTransportEnabledToolsAreRegisteredInNewAgentRuntimes`:`mcp:useTheButtonInTheUpperRightToAddAStreamableHTTPOrStdioMCPServer`)}),[[c(`mcp:transport`),T?.transport===`stdio`?`stdio`:T?.transport===`sse`?`HTTP + SSE`:`Streamable HTTP`],...T?.transport===`stdio`?[[c(`mcp:executable`),T.command||`—`],[c(`mcp:workingDirectory`),T.workingDirectory||`—`]]:[[c(`mcp:serverAddress`),T?.endpoint||`—`]],[c(`mcp:latency`),T?.latencyMs==null?`—`:`${T.latencyMs} ms`],[c(`mcp:lastPing`),T?.lastPingAt?N(T.lastPingAt,l):`—`],[c(`mcp:authentication`),Ce(T,c)]].map(e=>(0,Y.jsxs)(`div`,{className:`key-value [&:first-of-type]:mt-[7px] [&_span]:text-[var(--text-muted)] [&_button]:flex [&_button]:items-center [&_button]:gap-[4px] [&_button]:border-0 [&_button]:bg-transparent [&_button]:text-[var(--text-soft)] [&_button]:text-[12px] [&_strong]:min-w-0 [&_strong]:overflow-hidden [&_strong]:text-[13px] [&_strong]:text-ellipsis [&_strong]:whitespace-nowrap flex min-h-[31px] items-center justify-between gap-[10px] [border-top:1px_solid_var(--stroke-soft)] text-[13px]`,children:[(0,Y.jsx)(`span`,{children:e[0]}),(0,Y.jsx)(`strong`,{title:e[1],children:e[1]})]},e[0])),(0,Y.jsxs)(`div`,{className:`toggle-line [&_>_span]:flex [&_>_span]:items-center [&_>_span]:gap-[7px] [&_>_span]:text-[12px] flex min-h-[34px] items-center justify-between [border-top:1px_solid_var(--stroke-soft)]`,children:[(0,Y.jsx)(`span`,{children:c(`mcp:serverEnabled`)}),(0,Y.jsx)(a,{checked:!!T?.enabled,disabled:!T||m,"aria-label":c(`mcp:toggleMCPServer`),onCheckedChange:e=>void j(e)})]}),(0,Y.jsxs)(`div`,{className:`mt-[15px] flex gap-2 max-[650px]:flex-wrap`,children:[(0,Y.jsxs)(h,{size:`sm`,variant:`secondary`,disabled:!T?.enabled||m,onClick:M,children:[(0,Y.jsx)(u,{className:m?`animate-spin`:``,"data-icon":`inline-start`}),c(`mcp:testConnection`)]}),(0,Y.jsxs)(h,{size:`sm`,variant:`destructive`,disabled:!T||m,onClick:te,children:[(0,Y.jsx)(d,{"data-icon":`inline-start`}),c(`mcp:delete`)]})]})]}),(0,Y.jsxs)(Z,{className:`mcp-calls-panel min-h-0 flex-1 overflow-y-auto`,children:[(0,Y.jsx)(Q,{children:c(`mcp:recentCalls`)}),O.length?O.slice(0,8).map(e=>(0,Y.jsxs)(`div`,{className:`activity-row [&_span]:flex [&_span]:min-w-0 [&_span]:flex-col [&_span]:gap-[3px] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[13px] [&_span]:text-[var(--text)] [&.failed]:text-[var(--danger)] [&.running]:text-[var(--star-strong)] grid grid-cols-[auto_minmax(0,1fr)] items-center gap-[9px] [border-top:1px_solid_var(--stroke-soft)] [padding:9px_2px] text-[var(--success)]`,children:[(0,Y.jsx)(s,{size:14}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:e.toolName}),(0,Y.jsxs)(`small`,{children:[N(e.timestamp,l),` ·`,` `,e.status===`ok`?c(`mcp:callSucceeded`):e.error||c(`mcp:callFailed`),` `,`· `,e.durationMs,` ms`]})]})]},e.id)):(0,Y.jsx)(`div`,{className:`channel-route-empty [&_strong]:mt-[9px] [&_strong]:text-[var(--text)] [&_strong]:text-[12px] [&_span]:mt-[4px] [&_span]:text-[13px] [&.compact]:min-h-[110px] [.workflow-assets-panel_&]:min-h-[150px] [.workflow-assets-panel_&]:border-0 [.workflow-assets-panel_&]:bg-transparent grid min-h-[185px] place-content-center justify-items-center text-[var(--text-muted)] text-center compact`,children:c(`mcp:noRecentCalls`)})]})]})]})]})}export{we as McpPage};