@ahpd/web 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/app/assets/{ActivityBarItem-DNjVAT_E.js → ActivityBarItem-ai2cgVXn.js} +1 -1
  2. package/dist/app/assets/{AudioPage-CTBMdEWh.js → AudioPage-g-XDUEDw.js} +1 -1
  3. package/dist/app/assets/Bood-Dg-XtOTh.js +1 -0
  4. package/dist/app/assets/BotLayer-DBe4Fyhe.js +1 -0
  5. package/dist/app/assets/CommandPalette-G86xI_6j.js +1 -0
  6. package/dist/app/assets/Composer-DYocj0Ot.js +2 -0
  7. package/dist/app/assets/{ContextMenu-DYnWIBAF.js → ContextMenu-DlF_3KO_.js} +1 -1
  8. package/dist/app/assets/{CopyButton-Dqp4FT7R.js → CopyButton-BSesWpVW.js} +1 -1
  9. package/dist/app/assets/{DataTable-Di749duh.js → DataTable-BwoG_VY8.js} +1 -1
  10. package/dist/app/assets/Details-CH_RhTnb.js +1 -0
  11. package/dist/app/assets/DiffPage-BWZV83j-.js +3 -0
  12. package/dist/app/assets/Edit-C2ayFdz3.js +1 -0
  13. package/dist/app/assets/Edit-nBofGkbp.js +1 -0
  14. package/dist/app/assets/Explorer-8HHRQU3j.js +1 -0
  15. package/dist/app/assets/Explorer-B4eWCDt-.js +1 -0
  16. package/dist/app/assets/Explorer-CcJsHUFk.js +1 -0
  17. package/dist/app/assets/Explorer-D4cvjXRf.js +1 -0
  18. package/dist/app/assets/Explorer-D5NpZ_El.js +1 -0
  19. package/dist/app/assets/Explorer-D5UOVCR4.js +1 -0
  20. package/dist/app/assets/Explorer-Dbqg4t3H.js +1 -0
  21. package/dist/app/assets/Explorer-Dg4dz1Y8.js +1 -0
  22. package/dist/app/assets/Explorer-Dy6T9Nil.js +1 -0
  23. package/dist/app/assets/Explorer-DzRNgpV9.js +1 -0
  24. package/dist/app/assets/ExplorerList-DU80dY_f.js +1 -0
  25. package/dist/app/assets/Field-jnYjqqvV.js +1 -0
  26. package/dist/app/assets/FilePage-Cqa5Gu-X.js +1 -0
  27. package/dist/app/assets/{HeaderAction-Vq-h0k1X.js → HeaderAction-Bs-AE__U.js} +1 -1
  28. package/dist/app/assets/HostLines-CtIqw3A0.js +1 -0
  29. package/dist/app/assets/HostSwitcher-CBjT2TTb.js +1 -0
  30. package/dist/app/assets/{ImagePage-iB_X7JK-.js → ImagePage-C0fdIV7s.js} +1 -1
  31. package/dist/app/assets/Info-DPV0HZOg.js +1 -0
  32. package/dist/app/assets/LogPage-C3fGac0t.js +1 -0
  33. package/dist/app/assets/LoginForm-DxyP1mZO.js +1 -0
  34. package/dist/app/assets/MarkdownPage-qhogl5sV.js +1 -0
  35. package/dist/app/assets/NamedPage-CoZEwEtx.js +1 -0
  36. package/dist/app/assets/New-BiFpU6ut.js +4 -0
  37. package/dist/app/assets/New-GW4BjzMj.js +1 -0
  38. package/dist/app/assets/OpenEditors-DN3NPzWo.js +1 -0
  39. package/dist/app/assets/Page-1jvuUZH2.js +1 -0
  40. package/dist/app/assets/Page-B1rQUqL-.js +1 -0
  41. package/dist/app/assets/Page-By2cWeM8.js +3 -0
  42. package/dist/app/assets/Page-DKXwLUAx.css +1 -0
  43. package/dist/app/assets/Page-JyFk5XMA.js +1 -0
  44. package/dist/app/assets/Page-fKKaK_Dn.js +1 -0
  45. package/dist/app/assets/PoolPage-cZ6yGgGG.js +1 -0
  46. package/dist/app/assets/PortaLock-DD-lS5R3.js +2 -0
  47. package/dist/app/assets/RolePage-C4v5v12n.js +3 -0
  48. package/dist/app/assets/{Settings-D7Fa-31J.js → Settings-CAzrumeA.js} +1 -1
  49. package/dist/app/assets/SigillumGate-CXCvctfp.js +1 -0
  50. package/dist/app/assets/{SingleLayout-DrZzqh9e.js → SingleLayout-Bi4nK6CY.js} +1 -1
  51. package/dist/app/assets/{SpatialLayout-DZfRmqF0.js → SpatialLayout-QbjNYiGj.js} +1 -1
  52. package/dist/app/assets/{SplitLayout-Bytjyrrj.js → SplitLayout-tQayoihg.js} +1 -1
  53. package/dist/app/assets/{StackLayout-BCyRY0nG.js → StackLayout-B0qUSU7d.js} +1 -1
  54. package/dist/app/assets/Start-NxBne1u6.js +1 -0
  55. package/dist/app/assets/{TabLayout-Czi2A6i3.js → TabLayout-B_pbKMRi.js} +1 -1
  56. package/dist/app/assets/{TabPanelLayout-B_7L0Dyp.js → TabPanelLayout-DKamepPL.js} +1 -1
  57. package/dist/app/assets/TerminalPage-AG2B5hHZ.js +18 -0
  58. package/dist/app/assets/ThemeModeToggle-DmEp0Qr8.js +1 -0
  59. package/dist/app/assets/ThemePicker-Bj_ObpXS.js +1 -0
  60. package/dist/app/assets/{Tree-BvNPcfhW.js → Tree-DoJ8zO-u.js} +1 -1
  61. package/dist/app/assets/UserPage-C0Vk5NUV.js +1 -0
  62. package/dist/app/assets/VideoPage-CKx-gxgb.js +1 -0
  63. package/dist/app/assets/actions-CFnmwNqb.js +1 -0
  64. package/dist/app/assets/actions-CkDFjYZd.js +1 -0
  65. package/dist/app/assets/changeset-FRFDlNj7.js +1 -0
  66. package/dist/app/assets/channel-BWOXaftf.js +3 -0
  67. package/dist/app/assets/{clicks-Doh5a3f9.js → clicks-BeeNCvCP.js} +1 -1
  68. package/dist/app/assets/composer-commands-CzjP_L_C.js +2 -0
  69. package/dist/app/assets/data-DsJQo1Qk.js +3 -0
  70. package/dist/app/assets/drag-CxTqzQcr.js +1 -0
  71. package/dist/app/assets/emojis-B4zHbUyk.js +1 -0
  72. package/dist/app/assets/form-Bw0484oP.js +2 -0
  73. package/dist/app/assets/grouping-BZNQYyEm.js +1 -0
  74. package/dist/app/assets/hosts-A0gEDScb.js +3 -0
  75. package/dist/app/assets/index-DJ3IEy30.css +1 -0
  76. package/dist/app/assets/index-ddqm5vYD.js +19 -0
  77. package/dist/app/assets/locales-DOA2j2AT.js +3 -0
  78. package/dist/app/assets/media-BFQqiLAd.js +1 -0
  79. package/dist/app/assets/notify-B2F6UAgq.js +1 -0
  80. package/dist/app/assets/pick-CEYUa4kK.js +1 -0
  81. package/dist/app/assets/pins-DhjQhJuu.js +1 -0
  82. package/dist/app/assets/save-file-CirO0l-u.js +1 -0
  83. package/dist/app/assets/save-zwMG_vNN.js +1 -0
  84. package/dist/app/assets/sessions-DxQFcZ2M.js +2 -0
  85. package/dist/app/assets/state-DQKzjLgu.js +1 -0
  86. package/dist/app/assets/{terminal-_7S7Eyr-.js → terminal-Ctk6FYnN.js} +1 -1
  87. package/dist/app/assets/text-D6GxOCYM.js +1 -0
  88. package/dist/app/assets/trust-ask-ewG_CvW8.js +1 -0
  89. package/dist/app/assets/viewers--ctbhTPt.js +1 -0
  90. package/dist/app/assets/{words-DF1J9CaQ.js → words-1m-GRHoT.js} +1 -1
  91. package/dist/app/assets/words-D8X2_Vc_.js +1 -0
  92. package/dist/app/index.html +23 -16
  93. package/dist/embed/index.d.ts +17 -4
  94. package/dist/embed/index.js +4 -0
  95. package/package.json +2 -1
  96. package/dist/app/assets/CommandPalette-wYX5XXUP.js +0 -1
  97. package/dist/app/assets/Composer-DHrV5Yeq.js +0 -2
  98. package/dist/app/assets/Details-DD3vmkCl.js +0 -1
  99. package/dist/app/assets/DiffPage-BId8ozv7.js +0 -3
  100. package/dist/app/assets/Edit-jFXpMjZc.js +0 -1
  101. package/dist/app/assets/Explorer-COyfGhcR.js +0 -1
  102. package/dist/app/assets/Explorer-Cau0IyIv.js +0 -1
  103. package/dist/app/assets/Explorer-DV3iMW_H.js +0 -1
  104. package/dist/app/assets/Explorer-Dfcbd81k.js +0 -1
  105. package/dist/app/assets/Explorer-gCfiH4Xy.js +0 -1
  106. package/dist/app/assets/ExplorerList-0duzRsX6.js +0 -1
  107. package/dist/app/assets/FilePage-C2oyHqAU.js +0 -1
  108. package/dist/app/assets/HostSwitcher-CpnK8XaS.js +0 -1
  109. package/dist/app/assets/Info-zs1cf5D4.js +0 -1
  110. package/dist/app/assets/LogPage-BksXBBRH.js +0 -1
  111. package/dist/app/assets/LoginForm-C83NjSZc.js +0 -1
  112. package/dist/app/assets/MarkdownPage-B3Uf-uhF.js +0 -1
  113. package/dist/app/assets/New-DSGbzxwy.js +0 -4
  114. package/dist/app/assets/OpenEditors-FoK0L7cG.js +0 -1
  115. package/dist/app/assets/Page-C__t0LNx.js +0 -1
  116. package/dist/app/assets/Page-D2Aojkph.js +0 -2
  117. package/dist/app/assets/Page-D_hX82GR.js +0 -1
  118. package/dist/app/assets/PortaLock-Q4MlsHWm.js +0 -2
  119. package/dist/app/assets/SigillumGate-B75RU_FM.js +0 -1
  120. package/dist/app/assets/Start-DX8T0ii8.js +0 -1
  121. package/dist/app/assets/TerminalPage-BOIBCy2W.js +0 -18
  122. package/dist/app/assets/ThemeModeToggle-CFpNVcU1.js +0 -1
  123. package/dist/app/assets/ThemePicker-CqnA9Que.js +0 -1
  124. package/dist/app/assets/VideoPage-v3zVSos7.js +0 -1
  125. package/dist/app/assets/actions-CIzLn0YN.js +0 -1
  126. package/dist/app/assets/changeset-IbJWvDqP.js +0 -1
  127. package/dist/app/assets/channel-C6Ss9Aem.js +0 -1
  128. package/dist/app/assets/composer-commands-BOXuqfcP.js +0 -2
  129. package/dist/app/assets/data-DPJ4OTLn.js +0 -2
  130. package/dist/app/assets/drag-ruzgQUFW.js +0 -1
  131. package/dist/app/assets/emojis-DanG-8fr.js +0 -1
  132. package/dist/app/assets/folder-path-CJJ4uFfN.js +0 -1
  133. package/dist/app/assets/grouping-DtiUUpdw.js +0 -1
  134. package/dist/app/assets/index-BiJaGB50.css +0 -1
  135. package/dist/app/assets/index-xynK_AEL.js +0 -14
  136. package/dist/app/assets/locales-Dnk_Y338.js +0 -1
  137. package/dist/app/assets/media-Da9OmSvb.js +0 -1
  138. package/dist/app/assets/notify-BmjJL_fx.js +0 -1
  139. package/dist/app/assets/sessions-CLjdYeF3.js +0 -2
  140. package/dist/app/assets/state-CKNqusrK.js +0 -1
  141. package/dist/app/assets/text-D_lQQGN1.js +0 -1
  142. package/dist/app/assets/viewers-Vk4T9IkZ.js +0 -1
  143. package/dist/app/assets/words-T8-D0K4W.js +0 -1
  144. /package/dist/app/{ahpw.svg → assets/ahpw-FhxegLNr.svg} +0 -0
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-BguD1OXD.js";import{n as t,t as n}from"./useStore-BQkzWMs-.js";import{t as r}from"./useI18n-T3BwAm0z.js";import{A as i}from"./index-xynK_AEL.js";var a=e(),o=[`light`,`dark`,`system`],s={light:`☀︎`,dark:`☾︎`,system:`◐︎`},c={light:`Light`,dark:`Dark`,system:`Follow system`};function l({modes:e=o,display:l=`icon`,className:u,style:d}){let{t:f}=r(),p=e=>f(`theme/mode/${e}`,c[e]),m=n(`$/ui/theme/mode`)??`system`,h=t(),g=e[(e.indexOf(m)+1)%e.length]??e[0];return(0,a.jsxs)(`button`,{type:`button`,className:[`oo-theme-mode-toggle`,u].filter(Boolean).join(` `),style:d,"data-mode":m,title:f(`theme/mode/next`,{mode:p(m),next:p(g),fallback:`{mode}, click for {next}`}),"aria-label":f(`theme/mode/label`,{mode:p(m),fallback:`Theme mode: {mode}`}),onClick:()=>h(i,g),children:[l===`text`?null:(0,a.jsx)(`span`,{"aria-hidden":`true`,children:s[m]}),l===`icon`?null:(0,a.jsx)(`span`,{children:p(m)})]})}export{l as ThemeModeToggle,l as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-BguD1OXD.js";import{n as t,t as n}from"./useStore-BQkzWMs-.js";import{r}from"./styles-yrzHRgom.js";import{t as i}from"./useI18n-T3BwAm0z.js";import{k as a}from"./index-xynK_AEL.js";var o=e();function s({themes:e,label:s,compact:c=!1,className:l,style:u}){let{t:d}=i(),f=s??d(`theme/label`,`Theme`),p=n(`$/ui/theme/id`)??`default`,m=t(),h=r(),g=e?e.map(e=>h.find(t=>t.id===e)).filter(e=>e!==void 0):h;return g.length<2?null:(0,o.jsxs)(`label`,{className:[`oo-theme-picker`,l].filter(Boolean).join(` `),style:u,title:f,children:[c?null:(0,o.jsx)(`span`,{className:`oo-theme-picker__label`,children:f}),(0,o.jsx)(`select`,{className:`oo-theme-picker__select`,value:p,"aria-label":f,onChange:e=>m(a,e.currentTarget.value),children:g.map(e=>(0,o.jsx)(`option`,{value:e.id,children:e.label},e.id))})]})}export{s as ThemePicker,s as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./media-Da9OmSvb.js";var n=e();function r({uri:e}){return(0,n.jsx)(t,{uri:e,children:e=>(0,n.jsx)(`video`,{className:`web-video`,src:e,controls:!0,preload:`metadata`})})}export{r as default};
@@ -1 +0,0 @@
1
- import{l as e}from"./useI18n-T3BwAm0z.js";import{d as t,j as n,v as r}from"./data-DPJ4OTLn.js";import{a as i}from"./words-T8-D0K4W.js";import{a,r as o}from"./notify-BmjJL_fx.js";import{y as s}from"./index-xynK_AEL.js";function c(e){return n(`runAutomation`,{channel:t,automation:e.resource,requestId:`manual-${i()}`})}function l(e,n){r(t,{type:`automation/updateRequested`,resource:e.resource,changes:{enabled:n}})}async function u(n){await a({title:e(`automations/actions/deleteTitle`,{title:s(n)}),body:e(`automations/actions/deleteBody`),confirmLabel:e(`automations/actions/delete`),tone:`danger`})&&r(t,{type:`automation/removed`,resource:n.resource})}function d(e){r(e,{type:`automationRun/cancelRequested`})}var f=t=>o(e(`automations/actions/couldNotRun`),t);function p(t,n,r){let i=e=>t.operations.map(String).includes(e),a=[{title:e(`automations/actions/open`),onSelect:e=>{e.closeMenu(),n()}}];return i(`run`)&&a.push({title:e(`automations/actions/runNow`),onSelect:e=>{e.closeMenu(),c(t).catch(f)}}),i(`update`)&&(a.push({title:e(t.definition.enabled?`automations/actions/turnOff`:`automations/actions/turnOn`),onSelect:e=>{e.closeMenu(),l(t,!t.definition.enabled)}}),a.push({title:e(`automations/actions/edit`),onSelect:e=>{e.closeMenu(),r()}})),a.push({title:e(`automations/actions/copyLink`),group:`more`,onSelect:e=>{e.closeMenu(),navigator.clipboard?.writeText(t.resource).catch(()=>void 0)}}),i(`remove`)&&a.push({title:e(`automations/actions/delete`),group:`more`,color:`red`,onSelect:e=>{e.closeMenu(),u(t)}}),a}export{l as a,c as i,p as n,u as r,d as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-CybPckBe.js";import{l as t}from"./useI18n-T3BwAm0z.js";import{n}from"./ScenaProvider-6A3TJumQ.js";import{at as r,j as i,v as a}from"./data-DPJ4OTLn.js";import{n as o,o as s}from"./words-T8-D0K4W.js";import{t as c}from"./emojis-DanG-8fr.js";import{a as l}from"./notify-BmjJL_fx.js";import{t as u}from"./channel-C6Ss9Aem.js";var d=e();function f(e){return typeof e==`object`&&e?e:{}}function p(e,t){let n=f(e);return`ahpd.${t}`in n?n[`ahpd.${t}`]:n[t]}function m(e){return(e??[]).filter(e=>!e.uriTemplate.includes(`{`)).map(e=>({label:e.label,uri:e.uriTemplate,kind:String(e.changeKind),...e.description===void 0?{}:{description:e.description},review:e.capabilities?.review!==void 0}))}var h=e=>e[0];function g(e){let{before:t,after:n,diff:r}=e.edit,i=n?.uri??t?.uri??e.id,a=o(i),s=a.lastIndexOf(`/`);return{id:e.id,file:i,name:s<0?a:a.slice(s+1),dir:s<0?``:a.slice(0,s),status:t===void 0?`added`:n===void 0?`deleted`:`modified`,...r?.added===void 0?{}:{added:r.added},...r?.removed===void 0?{}:{removed:r.removed},reviewed:e.reviewed===!0,staged:p(e._meta,`staged`)===!0,unstaged:p(e._meta,`unstaged`)===!0,...t?.content.uri===void 0?{}:{before:t.content.uri},...n?.content.uri===void 0?{}:{after:n.content.uri}}}function _(e,t){if(t===null)return e;let n=o(t).replace(/\/+$/,``);return e===n?`.`:e.startsWith(`${n}/`)?e.slice(n.length+1):e}function v(e){return e.status===`added`?!e.staged&&e.unstaged?`U`:`A`:e.status===`deleted`?`D`:`M`}function y(e,n){return(n===`review`?[{key:`unreviewed`,label:t(`changes/groups/unreviewed`),changes:e.filter(e=>!e.reviewed)},{key:`reviewed`,label:t(`changes/groups/reviewed`),changes:e.filter(e=>e.reviewed)}]:n===`staging`?[{key:`staged`,label:t(`changes/groups/staged`),changes:e.filter(e=>e.staged)},{key:`unstaged`,label:t(`changes/groups/changes`),changes:e.filter(e=>!e.staged||e.unstaged)}]:[{key:`all`,label:t(`changes/groups/changes`),changes:[...e]}]).filter(e=>e.changes.length>0)}function b(e,t){let n={path:``,name:``,folders:[],changes:[]};for(let r of e){let e=_(r.dir,t),i=n;for(let t of e===`.`?[]:e.split(`/`).filter(e=>e!==``)){let e=i.path===``?t:`${i.path}/${t}`,n=i.folders.find(t=>t.path===e);n===void 0&&(n={path:e,name:t,folders:[],changes:[]},i.folders.push(n)),i=n}i.changes.push(r)}let r=e=>{let t=e;for(;t.changes.length===0&&t.folders.length===1&&t.folders[0]!==void 0;){let e=t.folders[0];t={...e,name:`${t.name}/${e.name}`}}return{...t,folders:t.folders.map(r)}};return{...n,folders:n.folders.map(r)}}function x(e){return typeof e==`object`&&e?e:{}}function S(e){return typeof e==`string`&&e!==``?e:null}function C(e){let t=x(x(e).content);return{uri:S(t.uri),contentType:S(t.contentType)}}function w(e){if(!e.startsWith(`data:`))return null;let t=e.indexOf(`,`);if(t<0)return null;let n=e.slice(5,t).split(`;`),r=e.slice(t+1);try{let e=n.includes(`base64`)?new TextDecoder().decode(Uint8Array.from(atob(r.replace(/\s+/g,``)),e=>e.charCodeAt(0))):decodeURIComponent(r);return{contentType:n[0]===``?null:n[0]??null,text:e}}catch{return null}}var T={title:``,description:``,branchName:null,baseBranchName:null,repository:null,context:void 0};function E(e){if(x(e).external===!0)return null;let{uri:t,contentType:n}=C(e);if(t===null)return null;let r=w(t);if(r===null||n!==null&&!n.includes(`json`)&&r.contentType?.includes(`json`)!==!0)return null;let i;try{i=JSON.parse(r.text)}catch{return null}let a=x(i),o=S(a.title);return o===null||!(`context`in a)?null:{title:o,description:S(a.description)??S(a.body)??``,branchName:S(a.branchName),baseBranchName:S(a.baseBranchName),repository:S(a.repository),context:a.context}}function D(e){return x(e).external===!0?C(e).uri:null}function O(e,t){return{"vscode.pullRequest":{title:e.title,description:e.description,draft:t,...e.context===void 0?{}:{expectedContext:e.context}}}}function k(e){return{"ahpd.commit":{message:e}}}function A(e){return e.id===`commit`?`commit`:e.id===`create-pr`||e.id===`prepare-pull-request`?`pull-request`:null}var j=(e,t)=>e.scopes.map(String).includes(t),M={add:`+`,remove:`−`,discard:`↶`,check:c.check,trash:c.trash,"git-commit":c.commit,"git-pull-request":c.pullRequest,"git-pull-request-create":c.pullRequest};function N(e){let t=e.icon??``;return t===`git-commit`?`blue`:t.startsWith(`git-pull-request`)?`yellow`:e.confirmation===void 0?null:`red`}var P=e=>M[e.icon??``]??e.label.charAt(0);function F(e,t,n,r){e.commands.execute(`ahp.openDiff`,{file:t.file,...t.before===void 0?{}:{before:t.before},...t.after===void 0?{}:{after:t.after},...n===void 0?{}:{changeset:n,change:t.id,review:r}})}function I(e){let t=n(),o=u(e,r),[c,f]=(0,d.useState)(null),[p,m]=(0,d.useState)(null);(0,d.useEffect)(()=>{f(null),m(null)},[e]);let h=(0,d.useMemo)(()=>(o.state?.files??[]).map(g),[o.state?.files]),_=o.state?.operations??[],v=async(t,n,r)=>{if(e!==void 0){f(null);try{let a=await i(`invokeChangesetOperation`,{channel:e,operationId:t.id,...n===void 0?{}:{target:{kind:`resource`,resource:n.file}},...r===void 0?{}:{_meta:r}});return a?.message!==void 0&&f({tone:`info`,text:s(a.message)}),{followUp:a?.followUp}}catch(e){f({tone:`danger`,text:e instanceof Error?e.message:String(e)});return}}},y=e=>{let n=D(e);if(n!==null){window.open(n,`_blank`,`noopener`);return}let r=e?.content?.uri;typeof r==`string`&&!r.startsWith(`data:`)&&t.commands.execute(`ahp.openFile`,{uri:r})},b=async e=>{let t=_.find(e=>e.id===`create-pr`)??(e.id===`create-pr`?e:null),n=_.find(e=>e.id===`prepare-pull-request`)??(e.id===`prepare-pull-request`?e:null);if(m({kind:`pull-request`,create:t,draft:T,preparing:n!==null}),n===null)return;let r=await v(n);if(r===void 0){m(null);return}let i=E(r.followUp);f(null),m(e=>e?.kind===`pull-request`?{...e,preparing:!1,draft:i??e.draft}:e)};return{state:o.state,error:o.error,files:h,operations:_,said:c,form:p,run:async(t,n)=>{if(e===void 0)return;let r=n===void 0?A(t):null;if(r===`commit`){m({kind:`commit`,operation:t});return}let i=s(t.confirmation);if(i!==``&&!await l({title:i,confirmLabel:t.label,tone:`danger`}))return;if(r===`pull-request`){await b(t);return}let a=await v(t,n);a!==void 0&&y(a.followUp)},commit:e=>{if(p?.kind!==`commit`)return;let{operation:t}=p;m(null),v(t,void 0,k(e)).then(e=>{e!==void 0&&y(e.followUp)})},pullRequest:(e,t)=>{if(p?.kind!==`pull-request`||p.create===null)return;let{create:n}=p;m(null),v(n,void 0,O(e,t)).then(e=>{e!==void 0&&y(e.followUp)})},closeForm:()=>m(null),review:(t,n)=>{e!==void 0&&t.length>0&&a(e,{type:`changeset/filesReviewChanged`,files:t.map(e=>e.id),reviewed:n})}}}export{I as a,y as c,m as d,N as i,v as l,F as n,h as o,j as r,b as s,P as t,_ as u};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-CybPckBe.js";import{t}from"./useStore-BQkzWMs-.js";import{b as n,h as r,m as i}from"./data-DPJ4OTLn.js";var a=e();function o(e,o){(0,a.useEffect)(()=>e===void 0?void 0:n(e,o),[e,o]);let s=t(r(e??``)),c=t(i(e??``));return{state:e===void 0?void 0:s,error:c??null}}export{o as t};
@@ -1,2 +0,0 @@
1
- import{u as e}from"./useStore-BQkzWMs-.js";import{l as t}from"./useI18n-T3BwAm0z.js";import{a as n}from"./locales-Dnk_Y338.js";import"./data-DPJ4OTLn.js";import{n as r}from"./words-T8-D0K4W.js";import{t as i}from"./emojis-DanG-8fr.js";import{i as a}from"./ActionList-QwhYPQiB.js";var o=e=>typeof e==`object`&&e?e:{},s=e=>typeof e==`string`?e:void 0;function c(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}function l(e,t,n){return{type:`embeddedResource`,label:e,data:t,contentType:n,displayKind:n.startsWith(`image/`)?`image`:`document`}}function u(e,t){let n=r(e).replace(/\/+$/,``);return{type:`resource`,label:n.slice(n.lastIndexOf(`/`)+1)||n,uri:e,displayKind:t?`directory`:`document`}}function d(e){return{type:`chat`,label:e.title===``?t(`sessions/untitled`):e.title,resource:e.defaultChat}}async function f(e){let t=[],n=[];for(let r of e){if(r.size>5242880){n.push(r.name);continue}try{t.push(l(r.name,c(new Uint8Array(await r.arrayBuffer())),r.type||`application/octet-stream`))}catch{n.push(r.name)}}return{attached:t,refused:n}}async function p(e=globalThis.navigator?.clipboard){if(typeof e?.read!=`function`)return t(`sessions/clipboard/insecure`);let n;try{n=await e.read()}catch{return t(`sessions/clipboard/refused`)}for(let e of n){let n=e.types.find(e=>e.startsWith(`image/`));if(n===void 0)continue;let r=await e.getType(n);return r.size>5242880?t(`sessions/clipboard/tooBig`):new File([r],`clipboard.${n.slice(6).split(`+`)[0]}`,{type:n})}return t(`sessions/clipboard/empty`)}function m(e){let t=o(e);return t.type===`chat`?i.sessions:t.displayKind===`directory`?i.folder:t.type===`embeddedResource`?i.attach:i.file}function h(e,t){let n=o(e);return{...n,_meta:{...o(n._meta),token:t}}}function g(e,t){let n=o(e),r=o(t);return n.type===r.type?typeof n.uri==`string`?n.uri===r.uri:typeof n.resource==`string`?n.resource===r.resource:n.label===r.label&&n.data===r.data:!1}var _=2e5;function v(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function y(e){let t=o(e);return t.type===`embeddedResource`&&typeof t.data==`string`}function b(e){let t=o(e),n=s(t.data);if(!y(e)||n===void 0)return null;let r=s(t.contentType)??`application/octet-stream`,i=atob(n),a={label:x(e),meta:`${r} · ${v(i.length)}`};if(r.startsWith(`image/`))return{...a,image:`data:${r};base64,${n}`};if(r.startsWith(`text/`)||/\b(json|xml|javascript|typescript|yaml|x-sh)\b/.test(r)){let e=Uint8Array.from(i.slice(0,_*4),e=>e.charCodeAt(0));return{...a,text:new TextDecoder().decode(e).slice(0,_)}}return a}var x=e=>s(o(e).label)??t(`sessions/attachments/unnamed`);function S(e,t){let n=s(o(e).uri);if(n===void 0)return;let i=r(n),a=t===void 0?void 0:r(t).replace(/\/+$/,``);return a!==void 0&&i.startsWith(`${a}/`)?i.slice(a.length+1):i}function C(e,t){let n=e.slice(0,t),r=n.match(/\r\n|\r|\n/g),i=Math.max(n.lastIndexOf(`
2
- `),n.lastIndexOf(`\r`))+1;return{line:r===null?0:r.length,character:t-i}}function w(e,t){return t.map(t=>{let n=o(t),{token:r,...i}=o(n._meta),{_meta:a,...s}=n,c={...s};if(Object.keys(i).length>0&&(c._meta=i),typeof r==`string`){delete c.range;let t=e.indexOf(r);t>=0&&(c.range={start:C(e,t),end:C(e,t+r.length)})}return c})}var T=`ahp:input/`,E=`ahp:new/`,D=e=>`$/ahp/composers/${encodeURIComponent(e)}`,O=new Map;function k(e,t){return O.set(e,t),()=>{O.get(e)===t&&O.delete(e)}}var A=e=>e.dataContext===void 0?void 0:O.get(e.dataContext),j=e=>O.get(e);function M(e,t,n){let r=a(e,[`/`,`@`],t);if(r!==null)return{text:`${e.slice(0,r.start)}${n}${e.slice(r.end)}`,caret:r.start+1};let i=e.slice(0,t);if(n===`/`&&i.trim()===``)return{text:`/${e.slice(t)}`,caret:1};let o=i===``||/\s$/.test(i)?``:` `;return{text:`${i}${o}${n}${e.slice(t)}`,caret:i.length+o.length+1}}function N(e,n,r){let a=e=>t=>{t.closeMenu(),e()},o=n.filter(t=>t.resource!==e.session()&&t.defaultChat!==void 0);return[{title:`${i.file} ${t(`sessions/context/files`)}`,description:t(`sessions/context/filesHint`),onSelect:a(()=>e.type(`@`))},{title:`${i.attach} ${t(`sessions/context/upload`)}`,description:t(`sessions/context/uploadHint`),onSelect:a(()=>e.upload())},typeof r==`string`?{title:`${i.image} ${t(`sessions/context/image`)}`,description:r,disabled:!0,onSelect:()=>void 0}:{title:`${i.image} ${t(`sessions/context/image`)}`,description:t(`sessions/context/imageHint`),onSelect:a(()=>void f([r]).then(t=>t.attached.forEach(t=>e.attach(t))))},{title:`${i.sessions} ${t(`sessions/context/sessions`)}`,description:t(o.length===0?`sessions/context/noSessions`:`sessions/context/sessionsHint`),disabled:o.length===0,onSelect:n=>n.pushList({title:t(`sessions/context/sessions`),items:o.map(n=>({title:n.title===``?t(`sessions/untitled`):n.title,onSelect:a(()=>e.attach(d(n)))}))})},{title:`${i.terminal} ${t(`sessions/context/commands`)}`,description:t(`sessions/context/commandsHint`),onSelect:a(()=>e.type(`/`))},...e.changed().map(t=>({title:t.title,description:t.description,group:`changed`,onSelect:a(()=>e.attach(t.attachment))}))]}var P=new Map;function F(e,t){let n=P.get(t.id);n===void 0?P.set(t.id,{count:1,registration:e.commands.register(t)}):n.count+=1;let r=!1;return{dispose(){if(r)return;r=!0;let e=P.get(t.id);e!==void 0&&(--e.count,!(e.count>0)&&(P.delete(t.id),e.registration.dispose()))}}}var I=e=>`/${e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)}`;function L(e){if(e==null)return t(`sessions/values/default`);if(Array.isArray(e))return e.length===0?t(`sessions/values/none`):e.length<=2&&e.every(e=>typeof e==`string`)?e.join(`, `):n(`sessions/values/items`,e.length);if(typeof e==`object`){let n=Object.entries(e).filter(([,e])=>e!==void 0&&!(Array.isArray(e)&&e.length===0));return n.length===0?t(`sessions/values/none`):n.map(([e,t])=>`${e} ${L(t)}`).join(`, `)}return String(e)}function R(e){let{schema:n,value:r}=e,i=r??n.default;if(n.type===`boolean`)return t(i===!0?`sessions/values/on`:`sessions/values/off`);let a=n.enum?.findIndex(e=>e===i)??-1;return a>=0?n.enumLabels?.[a]??String(i):L(i)}var z=e=>e.type===`boolean`||(e.enum?.length??0)>0,B=e=>z(e.schema)||R(e)!==t(`sessions/values/none`),V=e=>`ahp.composer.option.${e}`;function H(e,t){let n=I(t.title||e);return{id:V(e),title:t.title||e,...t.description===void 0?{}:{description:t.description},category:`Settings`,shortcut:n,slots:[T,E],disabled:t=>A(t)?.options().some(t=>t.key===e)!==!0,run:t=>{let r=A(t),i=r?.options().find(t=>t.key===e);if(r===void 0||i===void 0)return;if(i.schema.type===`boolean`){r.setOption(e,!(i.value??i.schema.default??!1)),t.host?.closeMenu();return}let a=i.value??i.schema.default,o=(i.schema.enum??[]).map((t,n)=>({title:i.schema.enumLabels?.[n]??String(t),...i.schema.enumDescriptions?.[n]===void 0?{}:{description:i.schema.enumDescriptions[n]},active:t===a,onSelect:n=>{r.setOption(e,t),n.closeMenu()}}));t.host?.pushList({title:i.schema.title||e,items:o,sentinel:n})}}}function U(t,n){return e(...n.filter(e=>z(e.schema)).map(e=>F(t,H(e.key,e.schema))))}function W(n){return e(F(n,{id:`ahp.composer.model`,title:()=>t(`sessions/commands/model`),description:()=>t(`sessions/commands/modelHint`),category:`Settings`,shortcut:`/model`,slots:[T,E],disabled:e=>(A(e)?.models().length??0)===0,run:e=>{let n=A(e);if(n===void 0)return;let r=n.model(),i=e=>t=>{n.setModel(e),t.closeMenu()};e.host?.pushList({title:t(`sessions/commands/model`),sentinel:`/model`,items:[{title:t(`sessions/commands/agentDefault`),active:r===void 0,onSelect:i(void 0)},...n.models().map(e=>({title:e.name,description:e.id,active:e.id===r,onSelect:i(e.id)}))]})}}),F(n,{id:`ahp.composer.attach`,title:()=>t(`sessions/context/title`),description:()=>t(`sessions/context/hint`),category:`Session`,shortcut:`/attach`,slots:[T,E],run:async e=>{let n=A(e);if(n===void 0)return;let r=await p();e.host?.pushList({title:t(`sessions/context/title`),sentinel:`/attach`,items:N(n,e.store.get(`$/ahp/sessions`)??[],r)})}}),F(n,{id:`ahp.composer.stop`,title:()=>t(`sessions/commands/stop`),description:()=>t(`sessions/commands/stopHint`),category:`Session`,shortcut:`/stop`,slots:[T],disabled:e=>A(e)?.running()!==!0,run:e=>{A(e)?.stop(),e.host?.closeMenu()}}),F(n,{id:`ahp.composer.new`,title:()=>t(`sessions/commands/newSession`),description:()=>t(`sessions/commands/newSessionHint`),category:`Session`,shortcut:`/new`,slots:[T],run:e=>{e.host?.closeMenu(),e.scena.commands.execute(`ahp.newSession`)}}))}export{w as C,g as S,p as _,D as a,b,R as c,U as d,B as f,S as g,x as h,j as i,z as l,m,E as n,N as o,M as p,k as r,V as s,T as t,W as u,f as v,h as w,u as x,y};
@@ -1,2 +0,0 @@
1
- import{t as e}from"./react-CybPckBe.js";import{l as t}from"./useI18n-T3BwAm0z.js";var n=class{buffer=[];base=0;cursors=new Set;closed=!1;bufferLimit;constructor(e=4096){this.bufferLimit=e}get isClosed(){return this.closed}get hasReaders(){return this.cursors.size>0}publish(e){if(this.closed)return;if(this.buffer.push(e),this.buffer.length>this.bufferLimit){let e=this.buffer.length-this.bufferLimit;this.buffer.splice(0,e),this.base+=e;for(let e of this.cursors)e.position<this.base&&(e.position=this.base)}let t=this.base+this.buffer.length-1;for(let e of this.cursors)if(e.waiter&&e.position<=t){let t=e.position-this.base,n=this.buffer[t];e.position+=1;let r=e.waiter;e.waiter=null,r.resolve({value:n,done:!1})}this.trim()}close(){if(!this.closed){this.closed=!0;for(let e of this.cursors)if(e.waiter&&e.position-this.base>=this.buffer.length){let t=e.waiter;e.waiter=null,t.resolve({value:void 0,done:!0})}}}reader(){let e={position:this.base+this.buffer.length,waiter:null,detached:this.closed};this.closed||this.cursors.add(e);let t=this,n=()=>{e.detached||(e.detached=!0,t.cursors.delete(e),t.trim())};return{[Symbol.asyncIterator](){return this},next(){if(e.detached)return Promise.resolve({value:void 0,done:!0});let n=e.position-t.base;if(n>=0&&n<t.buffer.length){let r=t.buffer[n];return e.position+=1,t.trim(),Promise.resolve({value:r,done:!1})}return t.closed?Promise.resolve({value:void 0,done:!0}):new Promise(t=>{e.waiter={resolve:t}})},return(){return n(),Promise.resolve({value:void 0,done:!0})}}}[Symbol.asyncIterator](){return this.reader()}trim(){if(this.cursors.size===0){let e=this.buffer.length;e>0&&(this.buffer=[],this.base+=e);return}let e=1/0;for(let t of this.cursors)t.position<e&&(e=t.position);let t=e-this.base;t>0&&(this.buffer.splice(0,t),this.base+=t)}},r=class extends Error{constructor(e,t){super(e,t),this.name=`AhpClientError`}},i=class extends r{code;data;constructor(e,t,n){super(`RPC error ${e}: ${t}`),this.name=`RpcError`,this.code=e,this.data=n}},a=class extends r{method;timeoutMs;constructor(e,t){super(`Request "${e}" timed out after ${t}ms`),this.name=`RpcTimeoutError`,this.method=e,this.timeoutMs=t}},o=class extends r{kind;constructor(e,t,n){super(t,n),this.name=`TransportError`,this.kind=e}},s=class extends r{constructor(e=`client shut down`){super(e),this.name=`ClientClosedError`}};function c(e,t){let n=Math.max(1,Math.floor(t));switch(e.kind){case`immediate`:return 0;case`constant`:return Math.max(0,e.delayMs);case`exponential`:{let t=Math.max(1,e.multiplier),r=n-1,i=e.initialMs*t**+r;return Math.min(Math.max(0,i),e.maxMs)}}}function l(e,t,n){let r=c(e.backoff,t);if(e.jitter<=0||r===0)return r;let i=Math.min(1,Math.max(0,e.jitter)),a=1+(Math.min(1,Math.max(0,n))*2-1)*i;return Math.max(0,r*a)}function u(e,t){return e.maxAttempts!==null&&t>e.maxAttempts}function d(){return{backoff:{kind:`exponential`,initialMs:250,maxMs:3e4,multiplier:2},jitter:.25,maxAttempts:null,resetOnSuccess:!0}}function f(){return d()}var p=`ahp-root://`;function m(e){return{id:e.id,label:e.label,clientId:e.clientId??null,initialSubscriptions:e.initialSubscriptions?[...e.initialSubscriptions]:[p],clientConfig:e.clientConfig??{},transportFactory:e.transportFactory,reconnectPolicy:e.reconnectPolicy??f()}}function ee(e,t){return{hostId:e,channel:t.channel,event:t.event}}var h=class extends r{constructor(e,t){super(e,t),this.name=`HostMultiError`}},g=class extends h{hostId;constructor(e){super(`no host registered with id "${e}"`),this.name=`UnknownHostError`,this.hostId=e}},_=class extends h{hostId;constructor(e){super(`a host with id "${e}" is already registered`),this.name=`DuplicateHostError`,this.hostId=e}},te=class extends h{hostId;handleGeneration;currentGeneration;constructor(e,t,n){super(`host "${e}" reconnected (generation ${t} -> ${n}); request a fresh client handle`),this.name=`HostReconnectedError`,this.hostId=e,this.handleGeneration=t,this.currentGeneration=n}},ne=class extends h{hostId;constructor(e){super(`host "${e}" runtime is no longer active`),this.name=`HostShutDownError`,this.hostId=e}},re=class extends h{hostId;constructor(e){super(`host "${e}" is not currently connected`),this.name=`HostNotConnectedError`,this.hostId=e}},ie=class extends h{hostId;constructor(e,t,n){super(`client id store error for host "${e}": ${t}`,n),this.name=`ClientIdStoreError`,this.hostId=e}};function ae(){let e=globalThis.crypto;if(e&&typeof e.randomUUID==`function`)return e.randomUUID();let t=new Uint8Array(16);if(e&&typeof e.getRandomValues==`function`)e.getRandomValues(t);else for(let e=0;e<16;e++)t[e]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}var oe=class{hostId;generation;source;client;constructor(e,t,n){this.source=e,this.hostId=e.hostId,this.generation=t,this.client=n}checkAlive(){if(this.source.shutdownReason!==null)throw new ne(this.hostId);if(this.source.generation!==this.generation)throw new te(this.hostId,this.generation,this.source.generation)}dispatch(e,t,n){return this.checkAlive(),this.client.dispatch(e,t,n)}async request(e,t){return this.checkAlive(),this.client.request(e,t)}rawClient(){return this.checkAlive(),this.client}},se;(function(e){e.Replay=`replay`,e.Snapshot=`snapshot`})(se||={});var ce;(function(e){e.Base64=`base64`,e.Utf8=`utf-8`})(ce||={});var le;(function(e){e.Truncate=`truncate`,e.Append=`append`,e.Insert=`insert`})(le||={});var ue;(function(e){e.File=`file`,e.Directory=`directory`,e.Symlink=`symlink`})(ue||={});var v;(function(e){e.RootAgentsChanged=`root/agentsChanged`,e.RootActiveSessionsChanged=`root/activeSessionsChanged`,e.SessionReady=`session/ready`,e.SessionCreationFailed=`session/creationFailed`,e.SessionChatAdded=`session/chatAdded`,e.SessionChatRemoved=`session/chatRemoved`,e.SessionChatUpdated=`session/chatUpdated`,e.SessionChatsReordered=`session/chatsReordered`,e.SessionDefaultChatChanged=`session/defaultChatChanged`,e.ChatTurnStarted=`chat/turnStarted`,e.ChatDelta=`chat/delta`,e.ChatResponsePart=`chat/responsePart`,e.ChatToolCallStart=`chat/toolCallStart`,e.ChatToolCallDelta=`chat/toolCallDelta`,e.ChatToolCallReady=`chat/toolCallReady`,e.ChatToolCallConfirmed=`chat/toolCallConfirmed`,e.ChatToolCallComplete=`chat/toolCallComplete`,e.ChatToolCallResultConfirmed=`chat/toolCallResultConfirmed`,e.ChatToolCallContentChanged=`chat/toolCallContentChanged`,e.ChatToolCallAuthRequired=`chat/toolCallAuthRequired`,e.ChatToolCallAuthResolved=`chat/toolCallAuthResolved`,e.ChatTurnComplete=`chat/turnComplete`,e.ChatTurnCancelled=`chat/turnCancelled`,e.ChatError=`chat/error`,e.ChatTurnResume=`chat/turnResume`,e.ChatActivityChanged=`chat/activityChanged`,e.ChatBackgroundWorkSet=`chat/backgroundWorkSet`,e.ChatBackgroundWorkRemoved=`chat/backgroundWorkRemoved`,e.ChatMovableChanged=`chat/movableChanged`,e.ChatChangesetsChanged=`chat/changesetsChanged`,e.ChatCanvasesChanged=`chat/canvasesChanged`,e.CanvasStateChanged=`canvas/stateChanged`,e.ChatWorkingDirectorySet=`chat/workingDirectorySet`,e.ChatWorkingDirectoryRemoved=`chat/workingDirectoryRemoved`,e.SessionTitleChanged=`session/titleChanged`,e.ChatUsage=`chat/usage`,e.ChatReasoning=`chat/reasoning`,e.SessionServerToolsChanged=`session/serverToolsChanged`,e.SessionActiveClientSet=`session/activeClientSet`,e.SessionActiveClientRemoved=`session/activeClientRemoved`,e.SessionWorkingDirectorySet=`session/workingDirectorySet`,e.SessionWorkingDirectoryRemoved=`session/workingDirectoryRemoved`,e.SessionWorkingDirectoryReplaced=`session/workingDirectoryReplaced`,e.SessionInputNeededSet=`session/inputNeededSet`,e.SessionInputNeededRemoved=`session/inputNeededRemoved`,e.ChatPendingMessageSet=`chat/pendingMessageSet`,e.ChatPendingMessageRemoved=`chat/pendingMessageRemoved`,e.ChatQueuedMessagesReordered=`chat/queuedMessagesReordered`,e.ChatDraftChanged=`chat/draftChanged`,e.ChatIsReadChanged=`chat/isReadChanged`,e.ChatIsArchivedChanged=`chat/isArchivedChanged`,e.ChatInputRequested=`chat/inputRequested`,e.ChatInputAnswerChanged=`chat/inputAnswerChanged`,e.ChatInputCompleted=`chat/inputCompleted`,e.SessionCustomizationsChanged=`session/customizationsChanged`,e.SessionCustomizationToggled=`session/customizationToggled`,e.SessionCustomizationUpdated=`session/customizationUpdated`,e.SessionCustomizationRemoved=`session/customizationRemoved`,e.SessionMcpServerStateChanged=`session/mcpServerStateChanged`,e.SessionMcpServerStartRequested=`session/mcpServerStartRequested`,e.SessionMcpServerStopRequested=`session/mcpServerStopRequested`,e.SessionMcpServerBackgroundRequested=`session/mcpServerBackgroundRequested`,e.ChatTruncated=`chat/truncated`,e.ChatTurnsLoaded=`chat/turnsLoaded`,e.SessionIsReadChanged=`session/isReadChanged`,e.SessionIsArchivedChanged=`session/isArchivedChanged`,e.SessionActivityChanged=`session/activityChanged`,e.SessionChangesetsChanged=`session/changesetsChanged`,e.SessionConfigChanged=`session/configChanged`,e.SessionMetaChanged=`session/metaChanged`,e.ChangesetStatusChanged=`changeset/statusChanged`,e.ChangesetFileSet=`changeset/fileSet`,e.ChangesetFileRemoved=`changeset/fileRemoved`,e.ChangesetFilesReviewChanged=`changeset/filesReviewChanged`,e.ChangesetContentChanged=`changeset/contentChanged`,e.ChangesetOperationsChanged=`changeset/operationsChanged`,e.ChangesetOperationStatusChanged=`changeset/operationStatusChanged`,e.ChangesetCleared=`changeset/cleared`,e.AnnotationsSet=`annotations/set`,e.AnnotationsUpdated=`annotations/updated`,e.AnnotationsRemoved=`annotations/removed`,e.AnnotationsEntrySet=`annotations/entrySet`,e.AnnotationsEntryRemoved=`annotations/entryRemoved`,e.RootTerminalsChanged=`root/terminalsChanged`,e.RootConfigChanged=`root/configChanged`,e.TerminalData=`terminal/data`,e.TerminalInput=`terminal/input`,e.TerminalResized=`terminal/resized`,e.TerminalClaimed=`terminal/claimed`,e.TerminalTitleChanged=`terminal/titleChanged`,e.TerminalCwdChanged=`terminal/cwdChanged`,e.TerminalExited=`terminal/exited`,e.TerminalCleared=`terminal/cleared`,e.TerminalCommandDetectionAvailable=`terminal/commandDetectionAvailable`,e.TerminalCommandExecuted=`terminal/commandExecuted`,e.TerminalCommandFinished=`terminal/commandFinished`,e.ResourceWatchChanged=`resourceWatch/changed`,e.AutomationCreateRequested=`automation/createRequested`,e.AutomationUpdateRequested=`automation/updateRequested`,e.AutomationSet=`automation/set`,e.AutomationRemoved=`automation/removed`,e.AutomationRunLifecycleChanged=`automationRun/lifecycleChanged`,e.AutomationRunSessionSet=`automationRun/sessionSet`,e.AutomationRunSessionRemoved=`automationRun/sessionRemoved`,e.AutomationRunPrimarySessionChanged=`automationRun/primarySessionChanged`,e.AutomationRunCancelRequested=`automationRun/cancelRequested`})(v||={});var de=`1.0.0`,fe=Object.freeze([`1.0.0`,`0.9.0`]);v.RootAgentsChanged,v.RootActiveSessionsChanged,v.SessionReady,v.SessionCreationFailed,v.SessionChatAdded,v.SessionChatRemoved,v.SessionChatUpdated,v.SessionChatsReordered,v.SessionDefaultChatChanged,v.SessionTitleChanged,v.SessionServerToolsChanged,v.SessionActiveClientSet,v.SessionActiveClientRemoved,v.SessionWorkingDirectorySet,v.SessionWorkingDirectoryRemoved,v.SessionWorkingDirectoryReplaced,v.SessionInputNeededSet,v.SessionInputNeededRemoved,v.SessionCustomizationsChanged,v.SessionCustomizationToggled,v.SessionCustomizationUpdated,v.SessionCustomizationRemoved,v.SessionMcpServerStateChanged,v.SessionMcpServerStartRequested,v.SessionMcpServerStopRequested,v.SessionMcpServerBackgroundRequested,v.SessionIsReadChanged,v.SessionIsArchivedChanged,v.SessionActivityChanged,v.SessionChangesetsChanged,v.SessionConfigChanged,v.SessionMetaChanged,v.ChatTurnStarted,v.ChatDelta,v.ChatResponsePart,v.ChatToolCallStart,v.ChatToolCallDelta,v.ChatToolCallReady,v.ChatToolCallConfirmed,v.ChatToolCallComplete,v.ChatToolCallResultConfirmed,v.ChatToolCallContentChanged,v.ChatToolCallAuthRequired,v.ChatToolCallAuthResolved,v.ChatTurnComplete,v.ChatTurnCancelled,v.ChatError,v.ChatTurnResume,v.ChatActivityChanged,v.ChatBackgroundWorkSet,v.ChatBackgroundWorkRemoved,v.ChatMovableChanged,v.ChatChangesetsChanged,v.ChatCanvasesChanged,v.CanvasStateChanged,v.ChatWorkingDirectorySet,v.ChatWorkingDirectoryRemoved,v.ChatUsage,v.ChatReasoning,v.ChatPendingMessageSet,v.ChatPendingMessageRemoved,v.ChatQueuedMessagesReordered,v.ChatDraftChanged,v.ChatIsReadChanged,v.ChatIsArchivedChanged,v.ChatInputRequested,v.ChatInputAnswerChanged,v.ChatInputCompleted,v.ChatTruncated,v.ChatTurnsLoaded,v.ChangesetStatusChanged,v.ChangesetFileSet,v.ChangesetFileRemoved,v.ChangesetFilesReviewChanged,v.ChangesetContentChanged,v.ChangesetOperationsChanged,v.ChangesetOperationStatusChanged,v.ChangesetCleared,v.AnnotationsSet,v.AnnotationsUpdated,v.AnnotationsRemoved,v.AnnotationsEntrySet,v.AnnotationsEntryRemoved,v.RootTerminalsChanged,v.RootConfigChanged,v.TerminalData,v.TerminalInput,v.TerminalResized,v.TerminalClaimed,v.TerminalTitleChanged,v.TerminalCwdChanged,v.TerminalExited,v.TerminalCleared,v.TerminalCommandDetectionAvailable,v.TerminalCommandExecuted,v.TerminalCommandFinished,v.ResourceWatchChanged,v.AutomationCreateRequested,v.AutomationUpdateRequested,v.AutomationSet,v.AutomationRemoved,v.AutomationRunLifecycleChanged,v.AutomationRunSessionSet,v.AutomationRunSessionRemoved,v.AutomationRunPrimarySessionChanged,v.AutomationRunCancelRequested;var pe={ParseError:-32700,InvalidRequest:-32600,MethodNotFound:-32601,InvalidParams:-32602,InternalError:-32603},me={SessionNotFound:-32001,ProviderNotFound:-32002,SessionAlreadyExists:-32003,TurnInProgress:-32004,UnsupportedProtocolVersion:-32005,AuthRequired:-32007,NotFound:-32008,PermissionDenied:-32009,AlreadyExists:-32010,Conflict:-32011};function he(e){return JSON.stringify(e)}function ge(e){try{return JSON.parse(e)}catch(e){throw new o(`protocol`,`invalid JSON: ${e.message}`,{cause:e})}}var _e=3e4,ve=4096;function y(){}var ye=class{uri;inner;constructor(e,t){this.uri=e,this.inner=t}next(){return this.inner.next()}return(){return this.inner.return?this.inner.return():Promise.resolve({value:void 0,done:!0})}[Symbol.asyncIterator](){return this}async close(){await this.return()}};function be(e){return(async(t,n)=>{let r=e[t];if(!r)throw new i(pe.MethodNotFound,`no handler for server method "${t}"`);return r(n)})}var xe=class{transport;requestTimeoutMs;subscriptionBuffer;pending=new Map;subscriptions=new Map;allEvents=new n;stateQueue=new n;nextRequestId=1;nextClientSeq=1;state={status:`idle`};receiveLoop=null;serverRequestHandler=null;constructor(e,t={}){this.transport=e;let n=t.requestTimeoutMs??_e;this.requestTimeoutMs=n>0?n:0;let r=t.subscriptionBuffer??ve;this.subscriptionBuffer=r>=1?Math.floor(r):1}get connectionState(){return this.state}stateChanges(){return this.stateQueue.reader()}events(){return this.allEvents.reader()}setServerRequestHandler(e){this.serverRequestHandler=e}setResourceRequestHandlers(e){this.setServerRequestHandler(e?be(e):null)}connect(){this.receiveLoop||=(this.setState({status:`connected`}),this.driveTransport())}async shutdown(){if(this.state.status!==`closing`&&this.state.status!==`closed`){this.setState({status:`closing`}),this.tearDown({type:`shutdown`});try{await this.transport.close()}catch{}if(this.receiveLoop)try{await this.receiveLoop}catch{}}}async initialize(e){let t={channel:`ahp-root://`,clientId:e.clientId,protocolVersions:[...e.protocolVersions],...e.initialSubscriptions&&e.initialSubscriptions.length>0?{initialSubscriptions:[...e.initialSubscriptions]}:{},...e.locale===void 0?{}:{locale:e.locale}};return this.request(`initialize`,t)}async reconnect(e){let t={channel:`ahp-root://`,clientId:e.clientId,lastSeenServerSeq:e.lastSeenServerSeq,subscriptions:[...e.subscriptions]};return this.request(`reconnect`,t)}async subscribe(e,t={}){let n=this.attachSubscription(e);try{let r={channel:e,...t.delivery?{delivery:t.delivery}:{},...t.view?{view:t.view}:{}};return{result:await this.request(`subscribe`,r),subscription:n}}catch(e){throw await n.close(),e}}attachSubscription(e){this.assertOpen();let t=this.subscriptions.get(e);return t||(t=new n(this.subscriptionBuffer),this.subscriptions.set(e,t)),new ye(e,t.reader())}async unsubscribe(e){if(this.isClosed())return;let t=this.subscriptions.get(e);t&&(this.subscriptions.delete(e),t.close());let n={channel:e};return this.notify(`unsubscribe`,n),Promise.resolve()}dispatch(e,t,n){this.assertOpen();let r=n??this.nextClientSeq;(n===void 0||r+1>this.nextClientSeq)&&(this.nextClientSeq=r+1);let i={channel:e,clientSeq:r,action:t};return this.notify(`dispatchAction`,i),{clientSeq:r}}async ping(){await this.request(`ping`,{channel:`ahp-root://`})}async resourceRead(e){return this.request(`resourceRead`,{...e,channel:`ahp-root://`})}async resourceWrite(e){return this.request(`resourceWrite`,{...e,channel:`ahp-root://`})}async resourceList(e){return this.request(`resourceList`,{...e,channel:`ahp-root://`})}async resourceCopy(e){return this.request(`resourceCopy`,{...e,channel:`ahp-root://`})}async resourceDelete(e){return this.request(`resourceDelete`,{...e,channel:`ahp-root://`})}async resourceMove(e){return this.request(`resourceMove`,{...e,channel:`ahp-root://`})}async resourceResolve(e){return this.request(`resourceResolve`,{...e,channel:`ahp-root://`})}async resourceMkdir(e){return this.request(`resourceMkdir`,{...e,channel:`ahp-root://`})}async resourceRequest(e){return this.request(`resourceRequest`,{...e,channel:`ahp-root://`})}async createResourceWatch(e){return this.request(`createResourceWatch`,{...e,channel:`ahp-root://`})}async completions(e){return this.request(`completions`,e)}async sessionConfigCompletions(e){return this.request(`sessionConfigCompletions`,{...e,channel:`ahp-root://`})}async request(e,t){this.assertOpen();let n=this.nextRequestId++,r={jsonrpc:`2.0`,id:n,method:e,params:t};return new Promise((t,i)=>{let o={resolve:e=>t(e),reject:i,method:e,timer:null};this.pending.set(n,o),this.requestTimeoutMs>0&&(o.timer=setTimeout(()=>{this.pending.delete(n)&&i(new a(e,this.requestTimeoutMs))},this.requestTimeoutMs)),this.sendMessage(r).catch(e=>{this.pending.delete(n)&&(o.timer&&clearTimeout(o.timer),i(e))})})}notify(e,t){this.assertOpen();let n={jsonrpc:`2.0`,method:e,params:t};this.sendMessage(n).catch(y)}isClosed(){return this.state.status===`closing`||this.state.status===`closed`}assertOpen(){if(this.isClosed())throw new s}async sendMessage(e){try{await this.transport.send(e)}catch(e){let t=e instanceof o?e:new o(`io`,`transport send failed: ${e.message}`,{cause:e});throw this.tearDown({type:`transport`,error:t}),t}}setState(e){this.state=e,this.stateQueue.publish(e)}tearDown(e){if(this.state.status===`closed`)return;this.setState({status:`closed`,reason:e});let t=e.type===`shutdown`?new s:e.error;for(let[e,n]of this.pending){n.timer&&clearTimeout(n.timer);try{n.reject(t)}catch{}this.pending.delete(e)}for(let e of this.subscriptions.values())e.close();this.subscriptions.clear(),this.allEvents.close(),this.stateQueue.close()}async driveTransport(){try{for(;this.state.status===`connected`;){let e=await this.transport.recv();if(e===null){this.tearDown({type:`transport`,error:new o(`closed`,`transport closed`)});return}this.handleFrame(e)}}catch(e){let t=e instanceof o?e:new o(`io`,`transport recv failed: ${e.message}`,{cause:e});this.tearDown({type:`transport`,error:t})}}handleFrame(e){let t;try{switch(e.kind){case`parsed`:t=e.message;break;case`text`:t=ge(e.text);break;case`binary`:t=ge(new TextDecoder(`utf-8`).decode(e.data))}}catch(e){console.warn(`AhpClient: malformed inbound frame: ${e.message}`);return}this.dispatchInbound(t)}dispatchInbound(e){if(`id`in e&&`result`in e){let t=e,n=this.pending.get(t.id);n&&(this.pending.delete(t.id),n.timer&&clearTimeout(n.timer),n.resolve(t.result));return}if(`id`in e&&`error`in e){let t=e,n=this.pending.get(t.id);n&&(this.pending.delete(t.id),n.timer&&clearTimeout(n.timer),n.reject(new i(t.error.code,t.error.message,t.error.data)));return}if(`id`in e&&`method`in e){this.handleServerRequest(e);return}if(`method`in e){this.handleNotification(e);return}}async handleServerRequest(e){if(this.serverRequestHandler){try{let t=this.serverRequestHandler,n=await t(e.method,e.params),r={jsonrpc:`2.0`,id:e.id,result:n};this.sendMessage(r).catch(y)}catch(t){let n=t instanceof i?t.code:pe.InternalError,r=t instanceof Error?t.message:String(t),a=t instanceof i?t.data:void 0,o={jsonrpc:`2.0`,id:e.id,error:a===void 0?{code:n,message:r}:{code:n,message:r,data:a}};this.sendMessage(o).catch(y)}return}let t={jsonrpc:`2.0`,id:e.id,error:{code:pe.MethodNotFound,message:`no handler for server method "${e.method}"`}};this.sendMessage(t).catch(y)}handleNotification(e){switch((e.params??{}).channel,e.method){case`action`:{let t=e.params;this.fanOut(t.channel,{type:`action`,params:t});break}case`root/sessionAdded`:{let t=e.params;this.fanOut(t.channel,{type:`sessionAdded`,params:t});break}case`root/sessionRemoved`:{let t=e.params;this.fanOut(t.channel,{type:`sessionRemoved`,params:t});break}case`root/sessionSummaryChanged`:{let t=e.params;this.fanOut(t.channel,{type:`sessionSummaryChanged`,params:t});break}case`auth/required`:{let t=e.params;this.fanOut(t.channel,{type:`authRequired`,params:t});break}}}fanOut(e,t){let n=this.subscriptions.get(e);n&&n.publish(t),this.allEvents.publish({channel:e,event:t})}};v.RootAgentsChanged,v.RootActiveSessionsChanged,v.RootTerminalsChanged,v.RootConfigChanged,v.SessionReady,v.SessionCreationFailed,v.SessionChatAdded,v.SessionChatRemoved,v.SessionChatUpdated,v.SessionChatsReordered,v.SessionDefaultChatChanged,v.SessionTitleChanged,v.SessionServerToolsChanged,v.SessionActiveClientSet,v.SessionActiveClientRemoved,v.SessionWorkingDirectorySet,v.SessionWorkingDirectoryRemoved,v.SessionWorkingDirectoryReplaced,v.SessionInputNeededSet,v.SessionInputNeededRemoved,v.SessionCustomizationsChanged,v.SessionCustomizationToggled,v.SessionCustomizationUpdated,v.SessionCustomizationRemoved,v.SessionMcpServerStateChanged,v.SessionMcpServerStartRequested,v.SessionMcpServerStopRequested,v.SessionMcpServerBackgroundRequested,v.SessionIsReadChanged,v.SessionIsArchivedChanged,v.SessionActivityChanged,v.SessionChangesetsChanged,v.SessionConfigChanged,v.SessionMetaChanged,v.ChatTurnStarted,v.ChatDelta,v.ChatResponsePart,v.ChatToolCallStart,v.ChatToolCallDelta,v.ChatToolCallReady,v.ChatToolCallConfirmed,v.ChatToolCallComplete,v.ChatToolCallResultConfirmed,v.ChatToolCallContentChanged,v.ChatToolCallAuthRequired,v.ChatToolCallAuthResolved,v.ChatTurnComplete,v.ChatTurnCancelled,v.ChatError,v.ChatTurnResume,v.ChatActivityChanged,v.ChatBackgroundWorkSet,v.ChatBackgroundWorkRemoved,v.ChatMovableChanged,v.ChatChangesetsChanged,v.ChatCanvasesChanged,v.CanvasStateChanged,v.ChatWorkingDirectorySet,v.ChatWorkingDirectoryRemoved,v.ChatUsage,v.ChatReasoning,v.ChatPendingMessageSet,v.ChatPendingMessageRemoved,v.ChatQueuedMessagesReordered,v.ChatDraftChanged,v.ChatIsReadChanged,v.ChatIsArchivedChanged,v.ChatInputRequested,v.ChatInputAnswerChanged,v.ChatInputCompleted,v.ChatTruncated,v.ChatTurnsLoaded,v.ChangesetStatusChanged,v.ChangesetFileSet,v.ChangesetFileRemoved,v.ChangesetFilesReviewChanged,v.ChangesetContentChanged,v.ChangesetOperationsChanged,v.ChangesetOperationStatusChanged,v.ChangesetCleared,v.AnnotationsSet,v.AnnotationsUpdated,v.AnnotationsRemoved,v.AnnotationsEntrySet,v.AnnotationsEntryRemoved,v.TerminalData,v.TerminalInput,v.TerminalResized,v.TerminalClaimed,v.TerminalTitleChanged,v.TerminalCwdChanged,v.TerminalExited,v.TerminalCleared,v.TerminalCommandDetectionAvailable,v.TerminalCommandExecuted,v.TerminalCommandFinished,v.ResourceWatchChanged,v.AutomationCreateRequested,v.AutomationUpdateRequested,v.AutomationSet,v.AutomationRemoved,v.AutomationRunLifecycleChanged,v.AutomationRunSessionSet,v.AutomationRunSessionRemoved,v.AutomationRunPrimarySessionChanged,v.AutomationRunCancelRequested;function b(e,t){let n=`Unhandled action type: ${JSON.stringify(e)}`;(t??console.warn)(n)}function Se(e,t,n){switch(t.type){case v.RootAgentsChanged:return{...e,agents:t.agents};case v.RootActiveSessionsChanged:return{...e,activeSessions:t.activeSessions};case v.RootTerminalsChanged:return{...e,terminals:t.terminals};case v.RootConfigChanged:return e.config?{...e,config:{...e.config,values:t.replace?{...t.config}:{...e.config.values,...t.config}}}:e;default:return b(t,n),e}}function Ce(e,t){return{id:e.id,label:e.label,clientId:t,state:{status:`disconnected`},lastError:null,lastConnectedAt:null,protocolVersion:null,serverSeq:0,defaultDirectory:null,automations:null,rootState:{agents:[]},subscriptions:[...e.initialSubscriptions],completionTriggerCharacters:[],sessionSummaries:new Map,generation:0,currentClient:null,shutdownReason:null}}function we(e){return{id:e.id,label:e.label,clientId:e.clientId,state:e.state,lastError:e.lastError,lastConnectedAt:e.lastConnectedAt,protocolVersion:e.protocolVersion,serverSeq:e.serverSeq,defaultDirectory:e.defaultDirectory,automations:e.automations,agents:[...e.rootState.agents],activeSessions:e.rootState.activeSessions??null,terminals:e.rootState.terminals?[...e.rootState.terminals]:null,subscriptions:[...e.subscriptions],completionTriggerCharacters:[...e.completionTriggerCharacters],sessionSummaries:Array.from(e.sessionSummaries.values()),generation:e.generation}}var x=Symbol(`aborted`);function S(e,t){return e.then(void 0,()=>void 0),t.aborted?Promise.resolve(x):new Promise((n,r)=>{let i=()=>{t.removeEventListener(`abort`,i),n(x)};t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})})}function Te(e,...t){return e<=0?Promise.resolve(!0):t.some(e=>e.aborted)?Promise.resolve(!1):new Promise(n=>{let r=[],i=setTimeout(()=>{for(let e of r)e();n(!0)},e);for(let e of t){let t=()=>{clearTimeout(i);for(let e of r)e();n(!1)};e.addEventListener(`abort`,t,{once:!0}),r.push(()=>e.removeEventListener(`abort`,t))}})}function Ee(...e){return e.some(e=>e.aborted)?Promise.resolve():new Promise(t=>{let n=[];for(let r of e){let e=()=>{for(let e of n)e();t()};r.addEventListener(`abort`,e,{once:!0}),n.push(()=>r.removeEventListener(`abort`,e))}})}function De(...e){let t=new AbortController;if(e.some(e=>e.aborted))return t.abort(),{signal:t.signal,dispose:()=>void 0};let n=[],r=()=>{for(let e of n)e();n.length=0,t.abort()};for(let t of e)t.addEventListener(`abort`,r,{once:!0}),n.push(()=>t.removeEventListener(`abort`,r));return{signal:t.signal,dispose:()=>{for(let e of n)e();n.length=0}}}var Oe={agents:[]},ke=class{config;shared;handleSource;fanOut;hostEvents;shutdownController=new AbortController;manualReconnectController=new AbortController;supervisorPromise=null;reconnectAck=null;constructor(e,t,n,r){this.config=e,this.fanOut=n,this.hostEvents=r,this.shared=Ce(e,t),this.handleSource={hostId:this.shared.id,generation:this.shared.generation,currentClient:this.shared.currentClient,shutdownReason:this.shared.shutdownReason}}start(){this.supervisorPromise===null&&(this.hostEvents.publish({type:`added`,hostId:this.shared.id}),this.supervisorPromise=this.runSupervisor().catch(e=>{console.error(`HostRuntime[${this.shared.id}] supervisor crashed:`,e)}))}async reconnect(){if(this.shared.shutdownReason!==null)return;let e=this.reconnectAck??this.makeReconnectAck();this.reconnectAck=e,this.manualReconnectController.abort(),await e.promise}async shutdown(e=`removed`){if(this.shared.shutdownReason!==null){this.supervisorPromise&&await this.supervisorPromise;return}this.shared.shutdownReason=e,this.handleSource.shutdownReason=e,this.shutdownController.abort(),this.reconnectAck?.resolve(),this.supervisorPromise&&await this.supervisorPromise}async subscribe(e){if(this.shared.shutdownReason!==null)throw new ne(this.shared.id);let t=this.shared.currentClient;if(!t)throw this.trackSubscription(e),new re(this.shared.id);let{result:n}=await t.subscribe(e);return this.trackSubscription(e),n}async unsubscribe(e){if(this.shared.shutdownReason!==null){this.untrackSubscription(e);return}let t=this.shared.currentClient;this.untrackSubscription(e),t&&await t.unsubscribe(e)}dispatch(e,t,n){if(this.shared.shutdownReason!==null)throw new ne(this.shared.id);let r=this.shared.currentClient;if(!r)throw new re(this.shared.id);return r.dispatch(e,t,n)}async runSupervisor(){let e=this.config.reconnectPolicy,t=0;for(;this.shared.shutdownReason===null;){t+=1,this.transitionTo(t===1?{status:`connecting`}:{status:`reconnecting`,attempt:t-1},null);let n=this.reconnectAck;this.reconnectAck=null,n?.resolve();let r=null;try{r=await this.connectOnce()}catch(e){if(this.shared.shutdownReason!==null)break;if(this.manualReconnectController.signal.aborted){this.resetManualReconnectController(),t=0;continue}let n=Ae(e);this.shared.lastError=n,console.warn(`HostRuntime[${this.shared.id}] connect attempt ${t} failed:`,n)}if(r===null){if(this.shared.shutdownReason!==null)break;if(u(e,t)){let e=this.shared.lastError??Error(`connect failed`);if(this.transitionTo({status:`failed`,error:e},e),!await this.waitForManualReconnectOrShutdown())break;this.resetManualReconnectController(),t=0;continue}if(!await Te(l(e,t,Math.random()),this.shutdownController.signal,this.manualReconnectController.signal)){if(this.shared.shutdownReason!==null)break;this.resetManualReconnectController(),t=0}continue}e.resetOnSuccess&&(t=0);let i=await this.runConnection(r.events);if(await this.tearDownClient(),i===`shutdown`)break;if(i===`manualReconnect`){this.resetManualReconnectController(),t=0;continue}}this.handleSource.currentClient=null,this.handleSource.generation=this.shared.generation}async connectOnce(){let e=this.shutdownController.signal,t=this.manualReconnectController.signal,n=De(e,t),r=n.signal;try{let e=await S(this.config.transportFactory(this.shared.id,r),r);if(e===x)throw Error(`connect aborted`);let t=new xe(e,this.config.clientConfig);t.connect();let n=t.events(),a=!1;try{let e={serverSeq:this.shared.serverSeq,subscriptions:[...this.shared.subscriptions]},o=e.serverSeq>0&&e.subscriptions.length>0,s=null,c=null,l=e.serverSeq,u=null,d=null,f=this.shared.automations,m=[];if(o)try{let n=await S(t.reconnect({clientId:this.shared.clientId,lastSeenServerSeq:e.serverSeq,subscriptions:e.subscriptions}),r);if(n===x)throw Error(`reconnect aborted`);s=n}catch(n){if(this.shared.shutdownReason!==null||r.aborted||!(n instanceof i))throw n;let a=await S(t.initialize({clientId:this.shared.clientId,protocolVersions:[de],initialSubscriptions:e.subscriptions}),r);if(a===x)throw Error(`initialize aborted`);c=a.snapshots,l=a.serverSeq,u=a.protocolVersion,d=a.defaultDirectory??null,f=a.automations??null,m=a.completionTriggerCharacters??[]}else{let n=await S(t.initialize({clientId:this.shared.clientId,protocolVersions:[de],initialSubscriptions:e.subscriptions}),r);if(n===x)throw Error(`initialize aborted`);c=n.snapshots,l=n.serverSeq,u=n.protocolVersion,d=n.defaultDirectory??null,f=n.automations??null,m=n.completionTriggerCharacters??[]}let ee=null;try{let e=await S(t.request(`listSessions`,{channel:p}),r);e!==x&&(ee=e)}catch{}if(r.aborted)throw Error(`connect aborted`);let h=null,g=[],_=null;if(s!==null){if(s.type===se.Replay){for(let e of s.actions)g.push(e);if(s.missing.length>0){let e=new Set(s.missing);h=this.shared.subscriptions.filter(t=>!e.has(t))}}else{let t=new Set(s.snapshots.map(e=>e.resource)),n=new Set(e.subscriptions);_=this.shared.subscriptions.filter(e=>t.has(e)||!n.has(e));for(let e of s.snapshots)e.fromSeq>l&&(l=e.fromSeq),e.resource===`ahp-root://`&&(this.shared.rootState=e.state??Oe)}}if(this.shared.generation+=1,this.shared.currentClient=t,this.shared.lastConnectedAt=Date.now(),this.shared.lastError=null,this.shared.serverSeq<l&&(this.shared.serverSeq=l),c!==null){let e=c.find(e=>e.resource===p);e&&(this.shared.rootState=e.state??Oe),u&&(this.shared.protocolVersion=u),this.shared.defaultDirectory=d,this.shared.automations=f,this.shared.completionTriggerCharacters=[...m]}if(ee!==null){this.shared.sessionSummaries.clear();for(let e of ee.items)this.shared.sessionSummaries.set(e.resource,e)}h===null?_!==null&&(this.shared.subscriptions=_):this.shared.subscriptions=h,this.handleSource.generation=this.shared.generation,this.handleSource.currentClient=t;for(let e of g)this.applyEnvelopeLocally(e),this.fanOut.publish({hostId:this.shared.id,channel:e.channel,event:{type:`action`,params:e}});return this.transitionTo({status:`connected`},null),this.hostEvents.publish({type:`connected`,hostId:this.shared.id,generation:this.shared.generation}),a=!0,{client:t,events:n}}finally{if(!a)try{await t.shutdown()}catch{}}}finally{n.dispose()}}async runConnection(e){let t=this.shutdownController.signal,n=this.manualReconnectController.signal;for(;;){if(t.aborted)return`shutdown`;if(n.aborted)return`manualReconnect`;let r=e.next(),i=Ee(t,n),a=await Promise.race([r.then(e=>({kind:`event`,value:e})),i.then(()=>({kind:`aborted`}))]);if(a.kind===`aborted`)return t.aborted?`shutdown`:`manualReconnect`;let o=a.value;if(o.done)return`disconnected`;this.handleEvent(o.value)}}async waitForManualReconnectOrShutdown(){return await Ee(this.shutdownController.signal,this.manualReconnectController.signal),!this.shutdownController.signal.aborted}async tearDownClient(){let e=this.shared.currentClient;if(this.shared.currentClient=null,this.handleSource.currentClient=null,e)try{await e.shutdown()}catch{}}handleEvent(e){switch(e.event.type){case`action`:this.applyEnvelopeLocally(e.event.params);break;case`sessionAdded`:{let t=e.event.params.summary;this.shared.sessionSummaries.set(t.resource,t);break}case`sessionRemoved`:this.shared.sessionSummaries.delete(e.event.params.session);break;case`sessionSummaryChanged`:je(this.shared.sessionSummaries,e.event.params)}this.fanOut.publish(ee(this.shared.id,e))}applyEnvelopeLocally(e){e.serverSeq>this.shared.serverSeq&&(this.shared.serverSeq=e.serverSeq),e.channel===`ahp-root://`&&(this.shared.rootState=Se(this.shared.rootState,e.action))}trackSubscription(e){this.shared.subscriptions.includes(e)||this.shared.subscriptions.push(e)}untrackSubscription(e){this.shared.subscriptions=this.shared.subscriptions.filter(t=>t!==e)}transitionTo(e,t){this.shared.state=e,t!==null&&(this.shared.lastError=t),this.hostEvents.publish({type:`stateChanged`,hostId:this.shared.id,state:e,lastError:t??this.shared.lastError})}resetManualReconnectController(){this.manualReconnectController=new AbortController}makeReconnectAck(){let e;return{promise:new Promise(t=>{e=t}),resolve:e}}};function Ae(e){return e instanceof Error?e:Error(String(e))}function je(e,t){let n=e.get(t.session);if(!n)return;let r={...n},i=t.changes;i.title!==void 0&&(r.title=i.title),i.status!==void 0&&(r.status=i.status),i.activity!==void 0&&(r.activity=i.activity),i.origin!==void 0&&(r.origin=i.origin),i.modifiedAt!==void 0&&(r.modifiedAt=i.modifiedAt),i.project!==void 0&&(r.project=i.project),i.workingDirectories!==void 0&&(r.workingDirectories=i.workingDirectories),i._meta!==void 0&&(r._meta=i._meta),i.chats!==void 0&&(r.chats=i.chats),e.set(t.session,r)}var Me=class{inner=new Map;load(e){return Promise.resolve(this.inner.get(e)??null)}store(e,t){return this.inner.set(e,t),Promise.resolve()}},Ne=1024,Pe=class e{hosts=new Map;pendingHostIds=new Set;fanOut;hostEventsQueue;clientIdStore;shutdownController=new AbortController;shutDown=!1;constructor(e={}){this.clientIdStore=e.clientIdStore??new Me;let t=e.eventBuffer??Ne;this.fanOut=new n(t),this.hostEventsQueue=new n(t)}static async single(t,n={}){let r=new e(n);return{multi:r,host:await r.addHost(t)}}async addHost(e){this.assertOpen();let t=e.id;if(this.hosts.has(t)||this.pendingHostIds.has(t))throw new _(t);this.pendingHostIds.add(t);try{let n=m(e),r=await this.resolveClientId(t,n.clientId);if(this.assertOpen(),this.hosts.has(t))throw new _(t);let i=new ke(n,r,this.fanOut,this.hostEventsQueue);return this.hosts.set(t,i),i.start(),we(i.shared)}finally{this.pendingHostIds.delete(t)}}async removeHost(e){let t=this.hosts.get(e);if(!t)throw new g(e);this.hosts.delete(e),await t.shutdown(`removed`),this.hostEventsQueue.publish({type:`removed`,hostId:e})}async reconnectHost(e){let t=this.hosts.get(e);if(!t)throw new g(e);await t.reconnect()}async reconnectAllUnavailable(){let e=[];for(let[t,n]of this.hosts){let r=n.shared.state.status;r!==`connected`&&r!==`connecting`&&e.push({id:t,runtime:n})}if(e.length===0)return new Map;let t=new Map;return await Promise.all(e.map(async({id:e,runtime:n})=>{try{await n.reconnect()}catch(n){t.set(e,n instanceof Error?n:Error(String(n)))}})),t}host(e){let t=this.hosts.get(e);return t?we(t.shared):void 0}hostsSnapshot(){return Array.from(this.hosts.values(),e=>we(e.shared))}client(e){let t=this.hosts.get(e);if(!t)return;let n=t.shared.currentClient;if(n)return new oe(t.handleSource,t.shared.generation,n)}async subscribe(e,t){let n=this.hosts.get(e);if(!n)throw new g(e);return n.subscribe(t)}async unsubscribe(e,t){let n=this.hosts.get(e);if(!n)throw new g(e);await n.unsubscribe(t)}dispatch(e,t,n,r){let i=this.hosts.get(e);if(!i)throw new g(e);return i.dispatch(t,n,r)}events(){return this.fanOut.reader()}hostEvents(){return this.hostEventsQueue.reader()}aggregatedSessions(){let e=[];for(let t of this.hosts.values()){let{id:n,label:r,sessionSummaries:i}=t.shared;for(let t of i.values())e.push({hostId:n,hostLabel:r,summary:t})}return e.sort((e,t)=>e.summary.modifiedAt<t.summary.modifiedAt?1:e.summary.modifiedAt>t.summary.modifiedAt?-1:0),e}aggregatedAgents(){let e=[];for(let t of this.hosts.values()){let{id:n,label:r,rootState:i}=t.shared;for(let t of i.agents)e.push({hostId:n,hostLabel:r,agent:t})}return e}async shutdown(){if(this.shutDown)return;this.shutDown=!0,this.shutdownController.abort();let e=Array.from(this.hosts.values());this.hosts.clear(),await Promise.all(e.map(e=>e.shutdown(`shutdown`))),this.fanOut.close(),this.hostEventsQueue.close()}assertOpen(){if(this.shutDown)throw new ne(`<multi-host client>`)}async resolveClientId(e,t){let n=this.shutdownController.signal;if(t!==null){try{await this.clientIdStore.store(e,t,n)}catch(t){throw new ie(e,t.message??String(t),{cause:t})}return t}let r;try{r=await this.clientIdStore.load(e,n)}catch(t){throw new ie(e,t.message??String(t),{cause:t})}let i=r??ae();try{await this.clientIdStore.store(e,i,n)}catch(t){throw new ie(e,t.message??String(t),{cause:t})}return i}},Fe;(function(e){e.Computing=`computing`,e.Recomputing=`recomputing`,e.Ready=`ready`,e.Error=`error`})(Fe||={});var Ie;(function(e){e.Idle=`idle`,e.Running=`running`,e.Error=`error`,e.Disabled=`disabled`})(Ie||={});var Le;(function(e){e.Changeset=`changeset`,e.Resource=`resource`,e.Range=`range`})(Le||={});function Re(e,t,n){switch(t.type){case v.ChangesetStatusChanged:{if(t.status===Fe.Error)return{...e,status:t.status,error:t.error};let{error:n,...r}=e;return{...r,status:t.status}}case v.ChangesetFileSet:{let n=e.files.findIndex(e=>e.id===t.file.id);if(n<0)return{...e,files:[...e.files,t.file]};let r=[...e.files];return r[n]=t.file,{...e,files:r}}case v.ChangesetFileRemoved:{let n=e.files.findIndex(e=>e.id===t.fileId);if(n<0)return e;let r=[...e.files];return r.splice(n,1),{...e,files:r}}case v.ChangesetFilesReviewChanged:{let n=!1,r=new Set(t.files),i=e.files.map(e=>!r.has(e.id)||e.reviewed===t.reviewed?e:(n=!0,{...e,reviewed:t.reviewed}));return n?{...e,files:i}:e}case v.ChangesetContentChanged:return t.operations===void 0?{...e,files:t.files}:{...e,files:t.files,operations:t.operations};case v.ChangesetOperationsChanged:if(t.operations===void 0){let{operations:t,...n}=e;return n}return{...e,operations:t.operations};case v.ChangesetOperationStatusChanged:{if(e.operations===void 0)return e;let n=e.operations.findIndex(e=>e.id===t.operationId);if(n<0)return e;let r=e.operations[n],i;if(t.status===Ie.Error)i={...r,status:t.status,error:t.error};else{let{error:e,...n}=r;i={...n,status:t.status}}let a=[...e.operations];return a[n]=i,{...e,operations:a}}case v.ChangesetCleared:return e.files.length===0?e:{...e,files:[]};default:return b(t,n),e}}var ze;(function(e){e.Creating=`creating`,e.Ready=`ready`,e.Failed=`failed`})(ze||={});var C;(function(e){e[e.Idle=1]=`Idle`,e[e.Error=2]=`Error`,e[e.InProgress=8]=`InProgress`,e[e.InputNeeded=24]=`InputNeeded`,e[e.IsRead=32]=`IsRead`,e[e.IsArchived=64]=`IsArchived`})(C||={});var Be;(function(e){e.Automation=`automation`})(Be||={});var Ve;(function(e){e.ChatInput=`chatInput`,e.ToolConfirmation=`toolConfirmation`,e.ToolClientExecution=`toolClientExecution`,e.ToolAuthentication=`toolAuthentication`})(Ve||={});var w;(function(e){e.Plugin=`plugin`,e.Directory=`directory`,e.Agent=`agent`,e.Skill=`skill`,e.Prompt=`prompt`,e.Rule=`rule`,e.Hook=`hook`,e.McpServer=`mcpServer`})(w||={});var He;(function(e){e.Global=`global`,e.Workspace=`workspace`,e.Session=`session`})(He||={});var Ue;(function(e){e.Loading=`loading`,e.Loaded=`loaded`,e.Degraded=`degraded`,e.Error=`error`})(Ue||={});var We;(function(e){e.Starting=`starting`,e.Ready=`ready`,e.AuthRequired=`authRequired`,e.Error=`error`,e.Stopped=`stopped`})(We||={});var Ge;(function(e){e.Required=`required`,e.Expired=`expired`,e.InsufficientScope=`insufficientScope`})(Ge||={});function Ke(e,t,n){return n?e|t:e&~t}function qe(e){return e.kind!==Ve.ToolClientExecution}function Je(e,t){return t.some(qe)?e&-32|C.InputNeeded:e&~(C.InputNeeded&~C.InProgress)}function T(e,t,n){let r=e.customizations;if(!r)return e;let i=r.findIndex(e=>e.id===t);if(i>=0){let t=r[i];if(t.type!==w.McpServer)return e;let a=r.slice();return a[i]=n(t),{...e,customizations:a}}let a=!1,o=r.map(e=>{if(e.type===w.McpServer)return e;let r=e.children;if(!r)return e;let i=r.findIndex(e=>e.id===t);if(i<0)return e;let o=r[i];if(o.type!==w.McpServer)return e;a=!0;let s=r.slice();return s[i]=n(o),{...e,children:s}});return a?{...e,customizations:o}:e}function Ye(e,t){switch(e.type){case w.Plugin:case w.McpServer:{if(t.length>0)return{...e,enablement:[...t]};let{enablement:n,...r}=e;return r}default:return{...e,enabled:t[0]?.enabled??!0}}}function Xe(e,t,n){switch(t.type){case v.SessionReady:return{...e,lifecycle:ze.Ready};case v.SessionCreationFailed:return{...e,lifecycle:ze.Failed,creationError:t.error};case v.SessionChatAdded:{let n=e.chats,r=n.findIndex(e=>e.resource===t.summary.resource);if(r<0)return{...e,chats:[...n,t.summary]};let i=n.slice();return i[r]=t.summary,{...e,chats:i}}case v.SessionChatRemoved:{let n=e.chats,r=n.findIndex(e=>e.resource===t.chat);if(r<0)return e;let i=n.slice();i.splice(r,1);let a={...e,chats:i};return e.defaultChat===t.chat&&delete a.defaultChat,a}case v.SessionChatUpdated:{let n=e.chats,r=n.findIndex(e=>e.resource===t.chat);if(r<0)return e;let{resource:i,...a}=t.changes,o=n.slice();return o[r]={...n[r],...a},{...e,chats:o}}case v.SessionChatsReordered:{let n=e.chats;if(t.chats.length!==n.length||new Set(t.chats).size!==n.length)return e;let r=new Map(n.map(e=>[e.resource,e])),i=[];for(let n of t.chats){let t=r.get(n);if(!t)return e;i.push(t)}return i.every((e,t)=>e===n[t])?e:{...e,chats:i}}case v.SessionDefaultChatChanged:return{...e,defaultChat:t.defaultChat};case v.SessionTitleChanged:return{...e,title:t.title};case v.SessionIsReadChanged:return{...e,status:Ke(e.status,C.IsRead,t.isRead)};case v.SessionIsArchivedChanged:return{...e,status:Ke(e.status,C.IsArchived,t.isArchived)};case v.SessionActivityChanged:return{...e,activity:t.activity};case v.SessionChangesetsChanged:{let{changesets:n,...r}=e;return t.changesets?{...r,changesets:t.changesets}:r}case v.SessionConfigChanged:return e.config?{...e,config:{...e.config,values:t.replace?{...t.config}:{...e.config.values,...t.config}}}:e;case v.SessionMetaChanged:return{...e,_meta:t._meta};case v.SessionServerToolsChanged:return{...e,serverTools:t.tools};case v.SessionActiveClientSet:{let n=e.activeClients,r=n.findIndex(e=>e.clientId===t.activeClient.clientId);if(r<0)return{...e,activeClients:[...n,t.activeClient]};let i=n.slice();return i[r]=t.activeClient,{...e,activeClients:i}}case v.SessionActiveClientRemoved:{let n=e.activeClients,r=n.findIndex(e=>e.clientId===t.clientId);if(r<0)return e;let i=n.slice();return i.splice(r,1),{...e,activeClients:i}}case v.SessionWorkingDirectorySet:{let n=e.workingDirectories??[];return n.includes(t.directory)?e:{...e,workingDirectories:[...n,t.directory]}}case v.SessionWorkingDirectoryRemoved:{let n=e.workingDirectories;if(!n)return e;let r=n.indexOf(t.directory);if(r<0)return e;let i=n.slice();return i.splice(r,1),{...e,workingDirectories:i}}case v.SessionWorkingDirectoryReplaced:{let n=e.workingDirectories;if(!n)return e;let r=n.indexOf(t.directory);if(r<0)return e;let i=n.indexOf(t.replacement);return i>=0&&i<r?{...e,workingDirectories:n.filter((e,t)=>t!==r)}:{...e,workingDirectories:n.map((e,n)=>n===r?t.replacement:e).filter((e,n)=>n===r||e!==t.replacement)}}case v.SessionInputNeededSet:{let n=e.inputNeeded??[],r=n.findIndex(e=>e.id===t.request.id),i=r<0?[...n,t.request]:n.slice();return r>=0&&(i[r]=t.request),{...e,inputNeeded:i,status:Je(e.status,i)}}case v.SessionInputNeededRemoved:{let n=e.inputNeeded;if(!n)return e;let r=n.findIndex(e=>e.id===t.id);if(r<0)return e;let i=n.slice();i.splice(r,1);let a={...e,status:Je(e.status,i)};return i.length>0?a.inputNeeded=i:delete a.inputNeeded,a}case v.SessionCustomizationsChanged:return{...e,customizations:t.customizations};case v.SessionCustomizationToggled:{let n=e.customizations;if(!n)return e;let r=n.findIndex(e=>e.id===t.id);if(r>=0){let i=n.slice();return i[r]=Ye(n[r],t.enablement),{...e,customizations:i}}for(let r=0;r<n.length;r++){let i=n[r];if(i.type===w.McpServer)continue;let a=i.children;if(!a)continue;let o=a.findIndex(e=>e.id===t.id);if(o<0)continue;let s=a.slice();s[o]=Ye(a[o],t.enablement);let c=n.slice();return c[r]={...i,children:s},{...e,customizations:c}}return e}case v.SessionCustomizationUpdated:{let n=e.customizations??[],r=n.findIndex(e=>e.id===t.customization.id);if(r<0)return{...e,customizations:[...n,t.customization]};let i=[...n];return i[r]=t.customization,{...e,customizations:i}}case v.SessionCustomizationRemoved:{let n=e.customizations;if(!n)return e;let r=n.findIndex(e=>e.id===t.id);if(r>=0){let t=n.slice();return t.splice(r,1),{...e,customizations:t}}let i=!1,a=n.map(e=>{if(e.type===w.McpServer)return e;let n=e.children;if(!n)return e;let r=n.findIndex(e=>e.id===t.id);if(r<0)return e;i=!0;let a=n.slice();return a.splice(r,1),{...e,children:a}});return i?{...e,customizations:a}:e}case v.SessionMcpServerStateChanged:return T(e,t.id,e=>({...e,state:t.state,channel:t.channel}));case v.SessionMcpServerStartRequested:return T(e,t.id,e=>({...e,state:{kind:We.Starting},channel:void 0}));case v.SessionMcpServerBackgroundRequested:return T(e,t.id,e=>e.state.kind===We.Starting&&e.state.blocking?{...e,state:{...e.state,blocking:!1}}:e);case v.SessionMcpServerStopRequested:return T(e,t.id,e=>({...e,state:{kind:We.Stopped},channel:void 0}));default:return b(t,n),e}}var Ze;(function(e){e.Running=`running`,e.Exited=`exited`})(Ze||={});var Qe;(function(e){e.Client=`client`,e.Session=`session`})(Qe||={});function $e(e,t,n){switch(t.type){case v.TerminalData:{let n=[...e.content],r=n.length>0?n[n.length-1]:void 0;return r&&r.type===`command`&&!r.isComplete?n[n.length-1]={...r,output:r.output+t.data}:r&&r.type===`unclassified`?n[n.length-1]={...r,value:r.value+t.data}:n.push({type:`unclassified`,value:t.data}),{...e,content:n}}case v.TerminalInput:return e;case v.TerminalResized:return{...e,cols:t.cols,rows:t.rows};case v.TerminalClaimed:return{...e,claim:t.claim};case v.TerminalTitleChanged:return{...e,title:t.title};case v.TerminalCwdChanged:return{...e,cwd:t.cwd};case v.TerminalExited:return{...e,lifecycle:{status:Ze.Exited,exitCode:t.exitCode}};case v.TerminalCleared:return{...e,content:[]};case v.TerminalCommandDetectionAvailable:return{...e,supportsCommandDetection:!0};case v.TerminalCommandExecuted:{let n={type:`command`,commandId:t.commandId,commandLine:t.commandLine,output:``,timestamp:t.timestamp,isComplete:!1};return{...e,content:[...e.content,n],supportsCommandDetection:!0}}case v.TerminalCommandFinished:{let n=e.content.map(e=>e.type===`command`&&e.commandId===t.commandId?{...e,isComplete:!0,exitCode:t.exitCode,durationMs:t.durationMs}:e);return{...e,content:n}}default:return b(t,n),e}}function et(e,t,n){switch(t.type){case v.AutomationCreateRequested:case v.AutomationUpdateRequested:return e;case v.AutomationSet:{let n=e.entries.findIndex(e=>e.resource===t.automation.resource);if(n<0)return{...e,entries:[...e.entries,t.automation]};let r=e.entries.slice();return r[n]=t.automation,{...e,entries:r}}case v.AutomationRemoved:{let n=e.entries.findIndex(e=>e.resource===t.resource);if(n<0)return e;let r=e.entries.slice();return r.splice(n,1),{...e,entries:r}}default:return b(t,n),e}}var tt=class e{socket;inbox=[];waiters=[];closeInfo=null;error=null;closed=!1;static connect(t,n={}){return new Promise((r,i)=>{let a=globalThis.WebSocket;if(!a){i(new o(`io`,`global WebSocket is not available; install or polyfill it`));return}let s;try{s=n.protocols===void 0?new a(t):new a(t,n.protocols)}catch(e){i(new o(`io`,`failed to construct WebSocket: ${e.message}`,{cause:e}));return}let c=()=>{s.removeEventListener(`open`,l),s.removeEventListener(`error`,u),s.removeEventListener(`close`,d)},l=()=>{c(),r(new e(s))},u=()=>{c(),i(new o(`io`,`websocket failed to open`))},d=e=>{c(),i(new o(`closed`,`websocket closed before open (code=${e.code})`))};s.addEventListener(`open`,l),s.addEventListener(`error`,u),s.addEventListener(`close`,d)})}static fromSocket(t){if(t.readyState!==t.OPEN)throw new o(`io`,`socket is not OPEN`);return new e(t)}constructor(e){this.socket=e,e.binaryType=`arraybuffer`,e.addEventListener(`message`,e=>{let t=e.data;if(typeof t==`string`)this.deliver({kind:`text`,text:t});else if(t instanceof ArrayBuffer)this.deliver({kind:`binary`,data:new Uint8Array(t)});else if(t instanceof Uint8Array)this.deliver({kind:`binary`,data:t});else{let e=new o(`protocol`,`unsupported WebSocket message payload (expected string or ArrayBuffer)`);this.error=e,this.drainWithError(e)}}),e.addEventListener(`error`,()=>{this.error=new o(`io`,`websocket error`),this.drainWithError(this.error)}),e.addEventListener(`close`,e=>{if(this.closeInfo={code:e.code,reason:e.reason,wasClean:e.wasClean},this.closed=!0,e.wasClean)this.drainWithNull();else{let t=new o(`closed`,`websocket closed abnormally (code=${e.code})`);this.error=t,this.drainWithError(t)}})}get bufferedAmount(){return this.socket.bufferedAmount}get lastClose(){return this.closeInfo}send(e){if(this.closed)throw new o(`closed`,`transport closed`);if(this.error)throw this.error;let t=typeof e==`string`?e:he(e);try{this.socket.send(t)}catch(e){throw new o(`io`,`websocket send failed: ${e.message}`,{cause:e})}}recv(){if(this.error)return Promise.reject(this.error);if(this.inbox.length>0){let e=this.inbox.shift()??null;return Promise.resolve(e)}return this.closed?Promise.resolve(null):new Promise((e,t)=>{this.waiters.push({resolve:e,reject:t})})}close(){if(this.socket.readyState===this.socket.OPEN||this.socket.readyState===this.socket.CONNECTING)try{this.socket.close()}catch{}return Promise.resolve()}deliver(e){if(this.waiters.length>0){let t=this.waiters.shift();t&&t.resolve(e);return}this.inbox.push(e)}drainWithError(e){let t=this.waiters;this.waiters=[];for(let n of t)n.reject(e)}drainWithNull(){let e=this.waiters;this.waiters=[];for(let t of e)t.resolve(null)}},nt=`ahpd-web.token`;function rt(){try{let e=window.localStorage.getItem(nt)?.trim();return e===void 0||e===``?null:e}catch{return null}}function it(e){try{e===null?window.localStorage.removeItem(nt):window.localStorage.setItem(nt,e)}catch{}}var E=!1;function at(){return E}async function ot(){try{let e=await fetch(`./ahpw.json`,{headers:{accept:`application/json`},cache:`no-store`});if(!e.ok||!(e.headers.get(`content-type`)??``).includes(`application/json`))return!1;E=(await e.json()).tokenHeld===!0}catch{E=!1}return E}var D=globalThis.ahpwEmbedder,st;(function(e){e.Enabled=`enabled`,e.Disabled=`disabled`,e.Unconfigured=`unconfigured`})(st||={});var ct;(function(e){e.Shell=`shell`,e.Subagent=`subagent`})(ct||={});var lt;(function(e){e.User=`user`,e.Fork=`fork`,e.SideChat=`sideChat`,e.Tool=`tool`})(lt||={});var ut;(function(e){e.Full=`full`,e.ReadOnly=`read-only`,e.Hidden=`hidden`})(ut||={});var dt;(function(e){e.Steering=`steering`,e.Queued=`queued`})(dt||={});var ft;(function(e){e.Accept=`accept`,e.Decline=`decline`,e.Cancel=`cancel`})(ft||={});var pt;(function(e){e.Text=`text`,e.Number=`number`,e.Integer=`integer`,e.Boolean=`boolean`,e.SingleSelect=`single-select`,e.MultiSelect=`multi-select`})(pt||={});var mt;(function(e){e.Text=`text`,e.Number=`number`,e.Boolean=`boolean`,e.Selected=`selected`,e.SelectedMany=`selected-many`})(mt||={});var ht;(function(e){e.Draft=`draft`,e.Submitted=`submitted`,e.Skipped=`skipped`})(ht||={});var O;(function(e){e.Complete=`complete`,e.Cancelled=`cancelled`,e.Error=`error`})(O||={});var gt;(function(e){e.Simple=`simple`,e.EmbeddedResource=`embeddedResource`,e.Resource=`resource`,e.Annotations=`annotations`,e.Chat=`chat`})(gt||={});var _t;(function(e){e.User=`user`,e.Agent=`agent`,e.Tool=`tool`,e.Automation=`automation`,e.SystemNotification=`systemNotification`})(_t||={});var k;(function(e){e.Markdown=`markdown`,e.ContentRef=`contentRef`,e.ToolCall=`toolCall`,e.Reasoning=`reasoning`,e.SystemNotification=`systemNotification`,e.InputRequest=`inputRequest`,e.Error=`error`})(k||={});var A;(function(e){e.Streaming=`streaming`,e.PendingConfirmation=`pending-confirmation`,e.Running=`running`,e.AuthRequired=`auth-required`,e.PendingResultConfirmation=`pending-result-confirmation`,e.Completed=`completed`,e.Cancelled=`cancelled`})(A||={});var vt;(function(e){e.NotNeeded=`not-needed`,e.UserAction=`user-action`,e.Setting=`setting`})(vt||={});var yt;(function(e){e.Judge=`judge`})(yt||={});var bt;(function(e){e.Loading=`loading`,e.Complete=`complete`})(bt||={});var xt;(function(e){e.Denied=`denied`,e.Skipped=`skipped`,e.ResultDenied=`result-denied`})(xt||={});var St;(function(e){e.Approve=`approve`,e.Deny=`deny`})(St||={});var j;(function(e){e.Client=`client`,e.MCP=`mcp`})(j||={});var Ct;(function(e){e.Text=`text`,e.EmbeddedResource=`embeddedResource`,e.Resource=`resource`,e.FileEdit=`fileEdit`,e.Terminal=`terminal`,e.Subagent=`subagent`})(Ct||={});var wt;(function(e){e.Added=`added`,e.Updated=`updated`,e.Deleted=`deleted`})(wt||={});var Tt;(function(e){e.Update=`update`,e.Remove=`remove`,e.Run=`run`})(Tt||={});var Et;(function(e){e.Skip=`skip`,e.RunOnce=`runOnce`})(Et||={});var Dt;(function(e){e.Schedule=`schedule`,e.Event=`event`})(Dt||={});var Ot;(function(e){e.AfterRuns=`afterRuns`,e.AfterDate=`afterDate`})(Ot||={});var kt;(function(e){e.Pending=`pending`,e.Running=`running`,e.Completed=`completed`,e.Failed=`failed`,e.Cancelled=`cancelled`})(kt||={});var At;(function(e){e.Manual=`manual`,e.Trigger=`trigger`})(At||={});var jt;(function(e){e.UserMessage=`userMessage`})(jt||={});var Mt;(function(e){e.Fork=`fork`,e.SideChat=`sideChat`})(Mt||={});var Nt;(function(e){e.Session=`session`,e.NewSession=`newSession`})(Nt||={});var Pt;(function(e){e.Resource=`resource`,e.Range=`range`})(Pt||={});var Ft;(function(e){e.Required=`required`,e.Expired=`expired`})(Ft||={});function It(e,t){return new Date(Date.parse(e)+t).toISOString()}function Lt(e){return{toolCallId:e.toolCallId,toolName:e.toolName,displayName:e.displayName,intention:e.intention,contributor:e.contributor,_meta:e._meta}}function M(e,t){return{...Lt(e),_meta:t??e._meta}}function Rt(e,t,n){return t?e?.kind===j.Client?t.kind===j.Client&&t.clientId===e.clientId?t:(n?.(`Ignoring contributor change for client tool call from '${e.clientId}'`),e):t.kind===j.Client?(n?.(`Ignoring late client contributor '${t.clientId}' because client execution ownership must be established at tool call start`),e):t:e}function zt(e,t){if(t&&e)return e.find(e=>e.id===t)}function Bt(e){return e.activeTurn?e.activeTurn.responseParts.some(e=>e.kind===k.ToolCall&&(e.toolCall.status===A.PendingConfirmation||e.toolCall.status===A.PendingResultConfirmation||e.toolCall.status===A.AuthRequired)):!1}function Vt(e){return e.activeTurn?.responseParts.some(e=>e.kind===k.InputRequest&&e.response===void 0)??!1}function Ht(e,t){let n=e.findIndex(e=>e.kind===k.InputRequest&&e.response===void 0&&e.request.id===t);if(n<0)return;let r=e[n];return r.kind===k.InputRequest?{index:n,part:r}:void 0}function Ut(e){let t=e.responseParts[e.responseParts.length-1];return t?.kind===k.Error&&t.resumable===!0}function Wt(e){return e.kind===k.Error}function N(e,t,n){return n?e|t:e&~t}function P(e,t){let n;return n=t||(Vt(e)||Bt(e)?C.InputNeeded:e.activeTurn?C.InProgress:C.Idle),e.status&-32|n}function F(e){let t=P(e);return t===e.status?e:{...e,status:t}}function Gt(e,t,n,r,i,a){if(!e.activeTurn||e.activeTurn.id!==t)return e;let o=e.activeTurn,s=o.responseParts.map(e=>{if(e.kind!==k.ToolCall)return e;let t=e.toolCall;return t.status===A.Completed||t.status===A.Cancelled?e:{kind:k.ToolCall,toolCall:{status:A.Cancelled,...Lt(t),invocationMessage:t.status===A.Streaming?t.invocationMessage??``:t.invocationMessage,toolInput:t.status===A.Streaming?void 0:t.toolInput,reason:xt.Skipped}}});a&&s.push(a);let c={id:o.id,startedAt:o.startedAt,duration:Math.max(0,r),message:o.message,responseParts:s,usage:o.usage,state:n},l={...e,turns:[...e.turns,c],activeTurn:void 0,modifiedAt:It(o.startedAt,c.duration??0)};return{...l,status:P(l,i)}}function Kt(e,t){let n=e.activeTurn;if(!n)return e;let r=Ht(n.responseParts,t.id),i=[...n.responseParts],a={kind:k.InputRequest,request:t};r?(a.request={...t,answers:t.answers??r.part.request.answers},i[r.index]=a):i.push(a);let o={...e,activeTurn:{...n,responseParts:i}};return{...o,status:N(P(o),C.IsRead,!1)}}function I(e,t,n,r){let i=e.activeTurn;if(!i||i.id!==t)return e;let a=!1,o=i.responseParts.map(e=>{if(e.kind===k.ToolCall&&e.toolCall.toolCallId===n){let t=r(e.toolCall);return t===e.toolCall?e:(a=!0,{...e,toolCall:t})}return e});return a?{...e,activeTurn:{...i,responseParts:o}}:e}function qt(e,t,n,r){let i=e.activeTurn;if(!i||i.id!==t)return e;let a=!1,o=i.responseParts.map(e=>!a&&(e.kind===k.ToolCall?e.toolCall.toolCallId:`id`in e?e.id:void 0)===n?(a=!0,r(e)):e);return a?{...e,activeTurn:{...i,responseParts:o}}:e}function Jt(e,t,n){switch(t.type){case v.ChatTurnStarted:{let n={...e,activeTurn:{id:t.turnId,startedAt:t.startedAt,message:t.message,responseParts:[],usage:void 0}};if(n={...n,status:N(P(n),C.IsRead,!1),modifiedAt:t.startedAt},t.queuedMessageId&&(n.steeringMessage?.id===t.queuedMessageId&&(n={...n,steeringMessage:void 0}),n.queuedMessages)){let e=n.queuedMessages.filter(e=>e.id!==t.queuedMessageId);n={...n,queuedMessages:e.length>0?e:void 0}}return n}case v.ChatDelta:return qt(e,t.turnId,t.partId,e=>e.kind===k.Markdown?{...e,content:e.content+t.content}:e);case v.ChatResponsePart:return!e.activeTurn||e.activeTurn.id!==t.turnId||Wt(t.part)?e:{...e,activeTurn:{...e.activeTurn,responseParts:[...e.activeTurn.responseParts,t.part]}};case v.ChatTurnComplete:return Gt(e,t.turnId,O.Complete,t.duration);case v.ChatTurnCancelled:return Gt(e,t.turnId,O.Cancelled,t.duration);case v.ChatError:return Gt(e,t.turnId,O.Error,t.duration,C.Error,t.part);case v.ChatTurnResume:{if(e.activeTurn)return e;let n=e.turns.length-1,r=e.turns[n];if(!r||r.id!==t.turnId||r.state!==O.Error||!Ut(r))return e;let i=e.turns.slice();i.splice(n,1);let a={...e,turns:i,activeTurn:{id:r.id,startedAt:r.startedAt??e.modifiedAt,message:r.message,responseParts:r.responseParts,usage:r.usage}};return{...a,status:N(P(a),C.IsRead,!1)}}case v.ChatActivityChanged:return{...e,activity:t.activity};case v.ChatBackgroundWorkSet:{let n=e.backgroundWork??[],r=n.findIndex(e=>e.id===t.work.id),i=n.slice();return r<0?i.push(t.work):i[r]=t.work,{...e,backgroundWork:i}}case v.ChatBackgroundWorkRemoved:{let n=e.backgroundWork??[],r=n.findIndex(e=>e.id===t.id);if(r<0)return e;let i=n.slice();return i.splice(r,1),{...e,backgroundWork:i}}case v.ChatMovableChanged:return{...e,movable:t.movable};case v.ChatChangesetsChanged:{let{changesets:n,...r}=e;return t.changesets?{...r,changesets:t.changesets}:r}case v.ChatCanvasesChanged:{let{canvases:n,...r}=e;return t.canvases?{...r,canvases:t.canvases}:r}case v.ChatWorkingDirectorySet:{let n=e.workingDirectories??[];return n.includes(t.directory)?e:{...e,workingDirectories:[...n,t.directory]}}case v.ChatWorkingDirectoryRemoved:{let n=e.workingDirectories;if(!n)return e;let r=n.indexOf(t.directory);if(r<0)return e;let i=n.slice();return i.splice(r,1),{...e,workingDirectories:i}}case v.ChatToolCallStart:return!e.activeTurn||e.activeTurn.id!==t.turnId?e:{...e,activeTurn:{...e.activeTurn,responseParts:[...e.activeTurn.responseParts,{kind:k.ToolCall,toolCall:{toolCallId:t.toolCallId,toolName:t.toolName,displayName:t.displayName,intention:t.intention,contributor:t.contributor,_meta:t._meta,status:A.Streaming}}]}};case v.ChatToolCallDelta:return I(e,t.turnId,t.toolCallId,e=>e.status===A.Streaming?{...e,...t._meta===void 0?{}:{_meta:t._meta},...t.content===void 0?{}:{partialInput:(e.partialInput??``)+t.content},invocationMessage:t.invocationMessage??e.invocationMessage}:e);case v.ChatToolCallReady:return F(I(e,t.turnId,t.toolCallId,e=>{if(e.status!==A.Streaming&&e.status!==A.Running&&e.status!==A.PendingConfirmation)return e;let r={...M(e,t._meta),contributor:Rt(e.contributor,t.contributor,n),intention:t.intention??e.intention},i=t.toolInput??(e.status===A.Streaming?void 0:e.toolInput);if(t.confirmed)return{status:A.Running,...r,invocationMessage:t.invocationMessage,toolInput:i,confirmed:t.confirmed};let a=e.status===A.PendingConfirmation?e:void 0,o=t.options??a?.options;return{status:A.PendingConfirmation,...r,invocationMessage:t.invocationMessage,toolInput:i,confirmationTitle:t.confirmationTitle??a?.confirmationTitle,riskAssessment:t.riskAssessment??a?.riskAssessment,edits:t.edits??a?.edits,editable:t.editable??a?.editable,...o?{options:o}:{}}}));case v.ChatToolCallConfirmed:return F(I(e,t.turnId,t.toolCallId,e=>{if(e.status!==A.PendingConfirmation)return e;let n=M(e,t._meta),r=zt(e.options,t.selectedOptionId);if(t.approved){let i=t.editedToolInput!==void 0&&typeof e.toolInput==`string`?t.editedToolInput:e.toolInput;return{status:A.Running,...n,invocationMessage:e.invocationMessage,toolInput:i,confirmed:t.confirmed,...r?{selectedOption:r}:{}}}return{status:A.Cancelled,...n,invocationMessage:e.invocationMessage,toolInput:e.toolInput,reason:t.reason,reasonMessage:t.reasonMessage,userSuggestion:t.userSuggestion,...r?{selectedOption:r}:{}}}));case v.ChatToolCallComplete:return F(I(e,t.turnId,t.toolCallId,e=>{if(e.status!==A.Running&&e.status!==A.PendingConfirmation&&e.status!==A.AuthRequired||e.status===A.AuthRequired&&t.result.success)return e;let n=M(e,t._meta),r=e.status===A.Running||e.status===A.AuthRequired?e.confirmed:vt.NotNeeded,i=e.status===A.Running||e.status===A.AuthRequired?e.selectedOption:void 0,a=e.status===A.AuthRequired?e.content:void 0;return t.requiresResultConfirmation&&e.status!==A.AuthRequired?{status:A.PendingResultConfirmation,...n,invocationMessage:e.invocationMessage,toolInput:e.toolInput,confirmed:r,...i?{selectedOption:i}:{},...a?{content:a}:{},...t.result}:{status:A.Completed,...n,invocationMessage:e.invocationMessage,toolInput:e.toolInput,confirmed:r,...i?{selectedOption:i}:{},...a?{content:a}:{},...t.result}}));case v.ChatToolCallResultConfirmed:return F(I(e,t.turnId,t.toolCallId,e=>{if(e.status!==A.PendingResultConfirmation)return e;let n=M(e,t._meta);return t.approved?{status:A.Completed,...n,invocationMessage:e.invocationMessage,toolInput:e.toolInput,confirmed:e.confirmed,...e.selectedOption?{selectedOption:e.selectedOption}:{},success:e.success,pastTenseMessage:e.pastTenseMessage,content:e.content,structuredContent:e.structuredContent,error:e.error}:{status:A.Cancelled,...n,invocationMessage:e.invocationMessage,toolInput:e.toolInput,reason:xt.ResultDenied,...e.selectedOption?{selectedOption:e.selectedOption}:{}}}));case v.ChatToolCallContentChanged:return I(e,t.turnId,t.toolCallId,e=>e.status===A.Running?{...e,...t._meta===void 0?{}:{_meta:t._meta},content:t.content}:e);case v.ChatToolCallAuthRequired:return F(I(e,t.turnId,t.toolCallId,e=>{if(e.status!==A.Running||!e.contributor||e.contributor.kind!==j.MCP)return e;let n=M(e,t._meta);return{status:A.AuthRequired,...n,contributor:e.contributor,invocationMessage:e.invocationMessage,toolInput:e.toolInput,confirmed:e.confirmed,...e.selectedOption?{selectedOption:e.selectedOption}:{},...e.content?{content:e.content}:{},auth:t.auth}}));case v.ChatToolCallAuthResolved:return F(I(e,t.turnId,t.toolCallId,e=>{if(e.status!==A.AuthRequired)return e;let n=M(e,t._meta);return{status:A.Running,...n,invocationMessage:e.invocationMessage,toolInput:e.toolInput,confirmed:e.confirmed,...e.selectedOption?{selectedOption:e.selectedOption}:{},...e.content?{content:e.content}:{}}}));case v.ChatUsage:return!e.activeTurn||e.activeTurn.id!==t.turnId?e:{...e,activeTurn:{...e.activeTurn,usage:t.usage}};case v.ChatReasoning:return qt(e,t.turnId,t.partId,e=>e.kind===k.Reasoning?{...e,content:e.content+t.content}:e);case v.ChatTruncated:{let n;if(t.turnId===void 0)n=[];else{let r=e.turns.findIndex(e=>e.id===t.turnId);if(r<0)return e;n=e.turns.slice(0,r+1)}let r={...e,turns:n,activeTurn:void 0};return t.turnId===void 0&&delete r.turnsNextCursor,{...r,status:P(r)}}case v.ChatTurnsLoaded:{let n=new Set(e.turns.map(e=>e.id)),r=t.turns.filter(e=>!n.has(e.id));return{...e,turns:[...r,...e.turns],turnsNextCursor:t.turnsNextCursor}}case v.ChatInputRequested:return Kt(e,t.request);case v.ChatInputAnswerChanged:{let n=e.activeTurn,r=n?Ht(n.responseParts,t.requestId):void 0;if(!n||!r)return e;let{index:i,part:a}=r,o=a.request,s={...o.answers??{}};t.answer===void 0?delete s[t.questionId]:s[t.questionId]=t.answer;let c=[...n.responseParts];return c[i]={...a,request:{...o,answers:Object.keys(s).length>0?s:void 0}},{...e,activeTurn:{...n,responseParts:c}}}case v.ChatInputCompleted:{let n=e.activeTurn,r=n?Ht(n.responseParts,t.requestId):void 0;if(!n||!r)return e;let{index:i,part:a}=r,o={...a.request.answers??{},...t.answers??{}},s=[...n.responseParts];s[i]={...a,request:{...a.request,answers:Object.keys(o).length>0?o:void 0},response:t.response};let c={...e,activeTurn:{...n,responseParts:s}};return{...c,status:P(c)}}case v.ChatPendingMessageSet:{let n={id:t.id,message:t.message};if(t.kind===dt.Steering)return{...e,steeringMessage:n};let r=e.queuedMessages??[],i=r.findIndex(e=>e.id===t.id);if(i>=0){let t=[...r];return t[i]=n,{...e,queuedMessages:t}}return{...e,queuedMessages:[...r,n]}}case v.ChatPendingMessageRemoved:{if(t.kind===dt.Steering)return!e.steeringMessage||e.steeringMessage.id!==t.id?e:{...e,steeringMessage:void 0};let n=e.queuedMessages;if(!n)return e;let r=n.filter(e=>e.id!==t.id);return r.length===n.length?e:{...e,queuedMessages:r.length>0?r:void 0}}case v.ChatQueuedMessagesReordered:{let n=e.queuedMessages;if(!n)return e;let r=new Map(n.map(e=>[e.id,e])),i=new Set,a=t.order.filter(e=>r.has(e)&&!i.has(e)?(i.add(e),!0):!1).map(e=>r.get(e));for(let e of n)i.has(e.id)||a.push(e);return{...e,queuedMessages:a}}case v.ChatDraftChanged:return{...e,draft:t.draft};case v.ChatIsReadChanged:return{...e,status:N(e.status,C.IsRead,t.isRead)};case v.ChatIsArchivedChanged:return{...e,status:N(e.status,C.IsArchived,t.isArchived)};default:return b(t,n),e}}var Yt=`0.10.0`,Xt=Object.freeze(fe.flatMap(e=>e===`1.0.0`?[e,Yt]:e===`0.10.0`?[]:[e]));function Zt(e){let t=Qt(typeof e==`string`?$t(e):e);if(t?.method!==`initialize`)return e;let n={...Qt(t.params),protocolVersions:[...Xt]},r={...t,params:n};return typeof e==`string`?JSON.stringify(r):r}function Qt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function $t(e){try{return JSON.parse(e)}catch{return null}}function en(e){return{send:t=>e.send(Zt(t)),close:()=>e.close(),recv:()=>e.recv()}}function tn(e){let t=rn(rn(rn(typeof e==`string`?an(e):e)?.result)?.serverInfo);return t===null||typeof t.name!=`string`||t.name===``?null:{name:t.name,version:typeof t.version==`string`&&t.version!==``?t.version:null}}var nn=e=>e.version===null?e.name:`${e.name} ${e.version}`;function rn(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function an(e){try{return JSON.parse(e)}catch{return null}}function on(e,t){return{send:t=>e.send(t),close:()=>e.close(),async recv(){let n=await e.recv(),r=n?.kind===`text`?tn(n.text):n?.kind===`parsed`?tn(n.message):null;return r!==null&&t(r),n}}}var sn=`/ahp`;function cn(e,t,n){let r=t.protocol===`https:`?`wss:`:`ws:`,i=n?sn:`/`;return`${r}//${t.host}${i}${e===null?``:`?tkn=${encodeURIComponent(e)}`}`}function ln(e,t){return t===null||t===``?e:`${e}${e.includes(`?`)?`&`:`?`}tkn=${encodeURIComponent(t)}`}var un=new Map;function dn(e,t){let n=new Map(e);return t.type===`sessionAdded`?n.delete(t.params.summary.resource):t.type===`sessionRemoved`?n.delete(t.params.session):n.set(t.params.session,{...e.get(t.params.session),...t.params.changes}),n}function fn(e){return new Map(e.map(e=>[e.resource,e]))}function pn(e,t){let n=t.get(e.resource);return n===void 0?e:{...e,...n}}var mn=2,hn=8,gn=24,_n=32,vn=64;function yn(e){return(e&gn)===gn?`input`:(e&hn)===0?(e&mn)===0?`idle`:`error`:`running`}function bn(e){return(e&_n)!==0}function xn(e){return(e&vn)!==0}var Sn=e=>t(`sessions/status/${e}`),Cn={input:`warning`,running:`info`,error:`danger`,idle:`default`};function wn(e){let t=0,n=0;for(let r of e){if(xn(r))continue;let e=yn(r);e===`idle`&&!bn(r)&&(t+=1),(e===`running`||e===`input`)&&(n+=1)}return{unread:t,working:n}}var Tn=e(),En=[`connection`,`session`,`terminal`,`traffic`],Dn=[`debug`,`info`,`warn`,`error`],On=2e3,kn=1024,L=[],R=[],An=null,jn=0,Mn=new Set,Nn=!1;function Pn(){An=null,!Nn&&(Nn=!0,setTimeout(()=>{Nn=!1;for(let e of Mn)e()},50))}function z(e){jn+=1;let t={...e,id:`l${jn}`,at:e.at??Date.now()};t.scope===`traffic`?R=R.length>=1024?[...R.slice(R.length-kn+1),t]:[...R,t]:L=L.length>=2e3?[...L.slice(L.length-On+1),t]:[...L,t],Pn()}function Fn(){L=[],R=[],Pn()}function In(){return An===null&&(An=[...L,...R].sort((e,t)=>e.at-t.at||Number(e.id.slice(1))-Number(t.id.slice(1)))),An}function Ln(e){return Mn.add(e),()=>{Mn.delete(e)}}function Rn(){return(0,Tn.useSyncExternalStore)(Ln,In,In)}function zn(e,t){let n=Dn.indexOf(t.minLevel),r=t.query.split(/\s+/).filter(e=>e!==``&&e!==`!`),i=r.filter(e=>!e.startsWith(`!`)).map(e=>e.toLowerCase()),a=r.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1).toLowerCase());return e.filter(e=>{if(t.scopes.length>0&&!t.scopes.includes(e.scope)||Dn.indexOf(e.level)<n)return!1;if(i.length===0&&a.length===0)return!0;let r=e.text.toLowerCase();return i.every(e=>r.includes(e))&&!a.some(e=>r.includes(e))})}var Bn=/\b[a-z][a-z0-9+.-]*:\/{1,3}[^\s"'`<>()[\]{},]+/gi;function Vn(e){let t=[],n=0;for(let r of e.matchAll(Bn)){let i=r.index,a=r[0].replace(/[.:;]+$/,``);i>n&&t.push({kind:`text`,text:e.slice(n,i)}),t.push({kind:`uri`,text:a}),n=i+a.length}return n<e.length&&t.push({kind:`text`,text:e.slice(n)}),t}function Hn(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}.${String(t.getMilliseconds()).padStart(3,`0`)}`}var Un=e=>`${new Date(e.at).toISOString().replace(`T`,` `).replace(`Z`,``)} [${e.level}] [${e.scope}] ${e.text}`,Wn=e=>e.map(Un).join(`
2
- `),Gn=65536;function B(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function V(e){return typeof e==`string`&&e!==``?e:null}var Kn=new Map,qn=null;function Jn(e){if(!e.startsWith(`ahp-chat:`))return null;let t=e.split(`/`).pop()??``;try{let e=atob(t.replace(/-/g,`+`).replace(/_/g,`/`));return/^[a-z][a-z0-9+.-]*:/i.test(e)?e:null}catch{return null}}function Yn(e,t){let n=`${e} ${V(t.resource)??``} ${V(t.channel)??``}`.toLowerCase();return n.includes(`terminal`)?`terminal`:n.includes(`session`)||n.includes(`chat`)||V(t.session)!==null?`session`:`connection`}function Xn(e,t){let n=e===`sent`?`→`:`←`,r=V(t.method),i=B(t.params);if(r===`action`)return`${n} ${V(B(i.action).type)??`action`} ${V(i.channel)??``}`.trim();if(r!==null){let e=V(i.resource)??V(i.channel)??V(i.session)??``;return`${n} ${r}${t.id===void 0?``:` #${String(t.id)}`} ${e}`.trim()}return t.error===void 0?`${n} result #${String(t.id)}`:`${n} error #${String(t.id)} ${V(B(t.error).message)??``}`.trim()}function Zn(e){let t=B(e.action),n=V(t.type)??``,r=V(e.channel)??``,i=Jn(r)??(r.includes(`session`)?r:null),a=(t,n,r)=>z({scope:t,level:n,text:r,detail:e}),o=V(e.rejectionReason);if(o!==null){a(n.startsWith(`terminal/`)?`terminal`:`session`,`warn`,`${n} rejected: ${o} · ${r}`);return}switch(n){case`session/ready`:a(`session`,`info`,`ready ${i??r}`);return;case`session/creationFailed`:a(`session`,`error`,`creation failed: ${V(B(t.error).message)??V(t.message)??``} ${i??r}`);return;case`session/titleChanged`:a(`session`,`info`,`title "${V(t.title)??``}" ${i??r}`);return;case`chat/turnStarted`:a(`session`,`info`,`turn started ${i??r}`);return;case`chat/turnComplete`:a(`session`,`info`,`turn complete ${i??r}`);return;case`chat/turnCancelled`:a(`session`,`warn`,`turn cancelled ${i??r}`);return;case`chat/error`:a(`session`,`error`,`${V(B(t.error).message)??V(t.message)??`error`} ${i??r}`);return;case`terminal/commandExecuted`:a(`terminal`,`info`,`$ ${V(t.commandLine)??``} · ${r}`);return;case`terminal/commandFinished`:{let e=typeof t.exitCode==`number`?t.exitCode:null;a(`terminal`,e!==null&&e!==0?`warn`:`info`,`command finished${e===null?``:` · exit ${e}`} · ${r}`);return}case`terminal/exited`:{let e=typeof t.exitCode==`number`?t.exitCode:null;a(`terminal`,`info`,`exited${e===null?``:` ${e}`} · ${r}`);return}case`terminal/claimed`:{let e=B(t.claim);a(`terminal`,`info`,`claimed by ${V(e.session)??(e.kind===`client`?`client ${V(e.clientId)??``}`:``)} · ${r}`);return}case`root/terminalsChanged`:{let e=new Map;for(let n of Array.isArray(t.terminals)?t.terminals:[]){let t=B(n),r=V(t.resource);r!==null&&e.set(r,V(t.title)??``)}let n=qn;if(qn=e,n===null)return;for(let[t,r]of e)n.has(t)||a(`terminal`,`info`,`opened ${r===``?``:`${r} `}${t}`);for(let[t,r]of n)e.has(t)||a(`terminal`,`info`,`closed ${r===``?``:`${r} `}${t}`);return}}}var Qn=`••••••`;function $n(e){let t=B(e.params);return e.method!==`authenticate`||typeof t.token!=`string`?e:{...e,params:{...t,token:Qn}}}function er(e,t){let n;try{n=B(JSON.parse(t))}catch{z({scope:`traffic`,level:`debug`,text:`${e===`sent`?`→`:`←`} ${t.slice(0,120)}`,detail:t.slice(0,Gn)});return}let r=$n(n);r!==n&&(n=r,t=JSON.stringify(r)),z({scope:`traffic`,level:`debug`,text:Xn(e,n),detail:t.length>Gn?t.slice(0,Gn):t});let i=n.id===void 0||n.id===null?null:String(n.id),a=V(n.method);if(e===`sent`){i!==null&&a!==null&&Kn.set(i,{method:a,params:B(n.params)});return}if(a===`action`){Zn(B(n.params));return}if(i===null||a!==null)return;let o=Kn.get(i);if(Kn.delete(i),n.error===void 0)return;let s=B(n.error),c=o===void 0?`#${i}`:`${o.method} ${V(o.params.resource)??V(o.params.channel)??``}`.trim();z({scope:o===void 0?`connection`:Yn(o.method,o.params),level:`error`,text:`${c} refused: ${V(s.message)??`error`}${typeof s.code==`number`?` (${s.code})`:``}`,detail:{request:o??null,error:n.error}})}function tr(){Kn.clear()}function nr(e){return{send:t=>(er(`sent`,typeof t==`string`?t:JSON.stringify(t)),e.send(t)),close:()=>e.close(),async recv(){let t=await e.recv();return t?.kind===`text`?er(`received`,t.text):t?.kind===`parsed`&&er(`received`,JSON.stringify(t.message)),t}}}var H=`$/ahp/connection`,rr=`$/ahp/sessions`,ir=`$/ahp/agents`,ar=`$/ahp/defaultDirectory`,U=e=>`$/ahp/channels/${encodeURIComponent(e)}`,or=`$/ahp/automationCaps`,sr=`$/ahp/sessionCounts/unread`,cr=`$/ahp/sessionCounts/working`,lr=`$/ahp/host`,ur=`$/ahp/server`,dr=`$/ahp/terminals/detached`,W=e=>`$/ahp/titles/${encodeURIComponent(e)}`,fr=e=>`$/ahp/channelErrors/${encodeURIComponent(e)}`,G=p,pr=`ahp-automations://`,K=`daemon`;function mr(e){return[...e].sort((e,t)=>t.modifiedAt.localeCompare(e.modifiedAt))}var hr=2e3,q,J,Y=un,X=new Map,gr=new Set;function _r(e){let t=[...gr];gr.clear();for(let n of t)e===void 0?n.resolve():n.reject(e)}async function vr(){for(;;){let e=q;if(e===void 0)throw Error(t(`bridges/notConnected`));let n=e.host(K)?.state.status;if(n===`connected`&&e.client(K)?.rawClient()!==void 0)return e;if(n===`failed`)throw Error(t(`bridges/notConnected`));await new Promise((e,t)=>gr.add({resolve:e,reject:t}))}}var yr=e=>e instanceof Error?e.message:String(e);async function br(e){let t=q,n=J;if(t!==void 0&&n!==void 0)try{let r=await t.subscribe(K,e);if(!X.has(e))return;r.snapshot!==void 0&&(Q.delete(U(e)),n.set(U(e),r.snapshot.state)),n.set(fr(e),null)}catch(t){n.set(fr(e),yr(t))}}function xr(e,t){let n=X.get(e);n===void 0?(X.set(e,{count:1,reducer:t}),q?.host(K)?.state.status===`connected`&&br(e)):(n.count+=1,clearTimeout(n.release),delete n.release);let r=!1;return()=>{if(r)return;r=!0;let t=X.get(e);t!==void 0&&(--t.count,!(t.count>0||e===G)&&(t.release=setTimeout(()=>{X.get(e)!==t||t.count>0||(X.delete(e),q?.unsubscribe(K,e).catch(()=>void 0))},hr)))}}async function Sr(e){X.has(e)&&await br(e)}async function Cr(){let e=J;if(e===void 0)return;let n=await Z(`listSessions`,{channel:G});Y=fn(n.items),e.set(rr,mr(n.items));for(let r of n.items)e.set(W(r.resource),r.title===``?t(`bridges/untitled`):r.title)}async function wr(e){let t=await vr(),n=await t.subscribe(K,e);return X.has(e)||t.unsubscribe(K,e).catch(()=>void 0),n.snapshot?.state}async function Tr(e){let t=await Z(`resourceRead`,{channel:G,uri:e,encoding:`utf-8`});return{text:String(t.encoding)===`utf-8`?t.data:null,...t.contentType===void 0?{}:{contentType:t.contentType}}}async function Er(e,t){let n=await Z(`resourceRead`,{channel:G,uri:e,encoding:`base64`});if(String(n.encoding)!==`base64`)return new Blob([n.data],{type:t});let r=atob(n.data),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e);return new Blob([i],{type:t})}async function Dr(e){return(await Z(`resourceResolve`,{channel:G,uri:e})).size}async function Or(e,t,n){await Z(`resourceWrite`,{channel:G,uri:e,data:t,encoding:`utf-8`,...n===void 0?{}:{ifMatch:n}})}async function kr(e){return(await Z(`resourceResolve`,{channel:G,uri:e})).etag}async function Ar(e){try{return(await Z(`resourceResolve`,{channel:G,uri:e})).type}catch{return null}}async function jr(e){return await Z(`resourceRead`,{channel:G,uri:e,encoding:`base64`})}async function Mr(e,t,n,r=!1){await Z(`resourceWrite`,{channel:G,uri:e,data:t,encoding:n,...r?{createOnly:r}:{}})}async function Nr(e){await Z(`resourceMkdir`,{channel:G,uri:e})}async function Pr(e,t){await Z(`resourceMove`,{channel:G,source:e,destination:t,failIfExists:!0})}async function Fr(e,t){await Z(`resourceCopy`,{channel:G,source:e,destination:t,failIfExists:!0})}async function Ir(e,t){await Z(`resourceDelete`,{channel:G,uri:e,recursive:t})}function Lr(e,t){q?.dispatch(K,e,t)}async function Z(e,n){let r=(await vr()).client(K)?.rawClient();if(r===void 0)throw Error(t(`bridges/notConnected`));return r.request(e,n)}function Rr(e,t,n){e.get(t)!==n&&e.set(t,n)}function zr(e,n){let r=mr(n.aggregatedSessions().map(e=>pn(e.summary,Y)));e.set(rr,r);for(let n of r)Rr(e,W(n.resource),n.title===``?t(`bridges/untitled`):n.title);let i=wn(r.map(e=>e.status));Rr(e,sr,i.unread),Rr(e,cr,i.working);let a=n.host(K);e.set(ir,a?.agents??[]),e.set(ar,a?.defaultDirectory??null),e.set(or,a?.automations??null);for(let n of a?.terminals??[])Rr(e,W(n.resource),n.title===``?t(`bridges/terminal`):n.title);e.set(lr,a===void 0?null:{label:a.label,clientId:a.clientId,protocolVersion:a.protocolVersion,serverSeq:a.serverSeq,connectedAt:a.lastConnectedAt,activeSessions:a.activeSessions,terminals:a.terminals??[],subscriptions:a.subscriptions.length})}function Br(e){e.status!==`connected`&&tr(),e.status===`failed`?z({scope:`connection`,level:`error`,text:`failed: ${e.error.message}`}):e.status===`reconnecting`?z({scope:`connection`,level:`warn`,text:`reconnecting (attempt ${e.attempt})`}):z({scope:`connection`,level:`info`,text:e.status})}async function Vr(e,n){let r=0;for await(let i of n.hostEvents()){if(i.type===`stateChanged`){let n=i.state;Br(n),n.status===`failed`&&_r(Error(t(`bridges/notConnected`))),e.set(H,{status:n.status,error:n.status===`failed`?n.error.message:i.lastError?.message??null,generation:r,...n.status===`reconnecting`?{attempt:n.attempt}:{}})}if(i.type===`connected`){r=i.generation,Y=un,e.set(H,{status:`connected`,error:null,generation:r}),zr(e,n);for(let e of X.keys())br(e);_r()}}}var Q=new Map,$=!1,Hr;function Ur(e,t){if(Hr=void 0,J===e){for(let[t,n]of Q)e.set(t,n);Q.clear(),$&&($=!1,zr(e,t))}}function Wr(e,t){Hr===void 0&&(Hr=document.hidden?window.setTimeout(()=>Ur(e,t),100):window.requestAnimationFrame(()=>Ur(e,t)))}async function Gr(e,t){for await(let n of t.events()){let r=n.event;if(r.type===`sessionAdded`||r.type===`sessionRemoved`||r.type===`sessionSummaryChanged`){Y=dn(Y,r),$=!0,Wr(e,t);continue}if(r.type!==`action`)continue;let{channel:i,action:a}=r.params;i===G&&($=!0,Wr(e,t));let o=X.get(i);if(o===void 0)continue;let s=U(i),c=Q.has(s)?Q.get(s):e.get(s);if(c!==void 0)try{Q.set(s,o.reducer(c,a)),Wr(e,t)}catch{}}}async function Kr(){if(D!==void 0){let e=await D.host();return qr=e.url,tt.connect(ln(e.url,await D.token()))}return tt.connect(cn(at()?null:rt(),window.location,!1))}var qr=null;async function Jr(e,n){try{await n.addHost({id:K,label:D===void 0?window.location.host:(await D.host()).name,transportFactory:async()=>on(en(nr(await Kr())),t=>e.set(ur,t))})}catch(n){e.set(H,{status:`failed`,error:yr(n),generation:0}),_r(Error(t(`bridges/notConnected`)))}}async function Yr(){let e=q,t=J;if(e!==void 0&&t!==void 0){if(e.host(K)===void 0){await Jr(t,e);return}t.set(H,{...t.get(H),status:`connecting`}),await e.reconnectHost(K).catch(()=>void 0)}}var Xr;async function Zr(e){if(D===void 0||qr===null)return;let t=await D.host().catch(()=>null);t!==null&&e.some(e=>e.id===t.id&&e.url!==qr)&&await Yr()}function Qr(){if(document.visibilityState!==`visible`)return;let e=q?.host(K)?.state.status;(e===void 0||e===`reconnecting`||e===`failed`||e===`disconnected`)&&Yr()}var $r={namespace:`ahp`,load:`eager`,provider:{async load(e){let t=new Pe;q=t,J=e,e.set(H,{status:`connecting`,error:null,generation:0}),Vr(e,t),Gr(e,t),window.addEventListener(`online`,Qr),document.addEventListener(`visibilitychange`,Qr),D!==void 0&&(Xr=D.onHosts(e=>void Zr(e))),await Jr(e,t)},async unload(e){window.removeEventListener(`online`,Qr),document.removeEventListener(`visibilitychange`,Qr),Xr?.(),Xr=void 0,qr=null;let n=q;q=void 0,J=void 0,_r(Error(t(`bridges/notConnected`))),Y=un;for(let e of X.values())clearTimeout(e.release);X.clear(),Q.clear(),$=!1,e.clearNamespace(`ahp`),await n?.shutdown()}}};export{ot as $,Cr as A,zn as B,Pr as C,Tr as D,wr as E,Or as F,Cn as G,Wn as H,Dn as I,xn as J,Sn as K,En as L,Dr as M,W as N,Yr as O,Mr as P,D as Q,Fn as R,Nr as S,Er as T,Vn as U,Un as V,Rn as W,nn as X,bn as Y,Jt as Z,Ir as _,dr as a,Re as at,xr as b,rr as c,pr as d,rt as et,G as f,Fr as g,U as h,ar as i,Xe as it,Z as j,Sr as k,sr as l,fr as m,or as n,et as nt,lr as o,Se as ot,$r as p,yn as q,H as r,$e as rt,ur as s,me as st,ir as t,it as tt,cr as u,Lr as v,jr as w,Ar as x,kr as y,Hn as z};
@@ -1 +0,0 @@
1
- var e=`application/x-ahpw-host-file`;function t(t,n){t.setData(e,JSON.stringify(n)),t.setData(`text/plain`,n.uri),t.effectAllowed=`copy`}var n=t=>Array.from(t.types).includes(e);function r(t){try{let n=JSON.parse(t.getData(e));return typeof n.uri==`string`&&typeof n.directory==`boolean`?{uri:n.uri,directory:n.directory}:null}catch{return null}}export{r as n,t as r,n as t};
@@ -1 +0,0 @@
1
- var e=e=>`${e}︎`,t={sessions:e(`💬`),automations:e(`⏰`),agents:e(`🤖`),host:e(`🖥`),settings:e(`⚙`),file:e(`📄`),markdown:e(`📝`),image:e(`🖼`),video:e(`🎞`),audio:e(`🎵`),code:`‹›`,data:`{}`,archive:e(`📦`),diff:`Δ`,log:`☰`,terminal:`❯`,reload:`↻`,run:e(`▶`),pause:e(`⏸`),stop:e(`⏹`),send:`↑`,trash:e(`🗑`),clear:`⊘`,close:`✕`,copy:`⧉`,copyText:`¶`,more:`⋯`,archived:`▤`,group:`☷`,folder:e(`📁`),tree:`⊢`,commit:`⊙`,pullRequest:`⎇`,attach:e(`📎`),open:e(`📂`),upload:e(`⬆`),download:e(`⬇`),link:e(`🔗`),check:`✓`,cross:`✕`,error:e(`✖`),warning:e(`⚠`),info:e(`ℹ`),pending:`◌`,running:`●`,waiting:`◐`,caretRight:`▸`,caretDown:`▾`,approvals:e(`⛨`),model:`✦`,read:`≡`,search:`⌕`,edit:`✎`,subagent:`◈`,web:`⊕`,dot:`•`,thinking:`∴`,panelLeft:e(`◧`),panelBottom:e(`⬓`),panelRight:e(`◨`),layoutTabs:`▭`,layoutGroups:`⊞`,layoutSplit:`⊟`,layoutSpatial:`◇`,layoutStack:`☰`,layoutSingle:`□`,language:e(`🌐`),theme:e(`🎨`),signOut:`⇥`,plugin:e(`🧩`),mcpServer:e(`🔌`)};export{t};
@@ -1 +0,0 @@
1
- import{Q as e,f as t,j as n}from"./data-DPJ4OTLn.js";import{i as r}from"./words-T8-D0K4W.js";function i(t){return e===void 0?t:`${t}@${e.hostUrl}`}var a=e=>/^[a-z][a-z0-9+.-]*:\/\/(\/|\/[A-Za-z]:\/)?$/i.test(e)?e:e.replace(/\/+$/,``);function o(e,t,n=[],r=[]){let i=new Set(r.map(a)),o=new Set,s=[],c=(e,t)=>{if(e===void 0||e===``)return;let n=a(e);o.has(n)||(o.add(n),s.push({uri:n,isDefault:t,added:i.has(n)}))};c(e??void 0,!0);for(let e of t)c(e.workingDirectories?.[0],!1);for(let e of r)c(e,!1);for(let e of n)c(e,!1);return s}var s=(e,t)=>`${e}${e.endsWith(`/`)?``:`/`}${encodeURIComponent(t)}`;function c(e){return[...e.filter(e=>e.type===`directory`),...e.filter(e=>e.type!==`directory`)]}function l(e){try{return decodeURIComponent(a(e).replace(/^file:\/\//i,``))}catch{return a(e).replace(/^file:\/\//i,``)}}function u(e,t){let n=l(t),r=e.filter(e=>{let t=l(e);return n===t||n.startsWith(t.endsWith(`/`)?t:`${t}/`)}).sort((e,t)=>l(t).length-l(e).length)[0];if(r===void 0)return[`file://${n.split(`/`).map(encodeURIComponent).join(`/`)}`];let i=[r];for(let e of n.slice(l(r).length).split(`/`).filter(e=>e!==``))i.push(s(i[i.length-1]??r,e));return i}var d=`$/folders/added`,f=i(`ahpd-web.folders-added`);function p(e,t){let n=a(t);return e.some(e=>a(e)===n)?[...e]:[...e,n]}function m(e,t){let n=a(t);return e.filter(e=>a(e)!==n)}function h(){try{let e=JSON.parse(window.localStorage.getItem(f)??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function g(e){try{window.localStorage.setItem(f,JSON.stringify(e))}catch{}}function _(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/`);return{dir:t.slice(0,n+1),part:t.slice(n+1)}}function v(e,t){return t===null||!(e===`~`||e.startsWith(`~/`))?e:`${t}${e===`~`?`/`:e.slice(1)}`}function y(e){let t=e.replace(/\/+$/,``);return t===``||/^[A-Za-z]:$/.test(t)?null:t.slice(0,t.lastIndexOf(`/`)+1)||`/`}async function b(e){return(await n(`resourceList`,{channel:t,uri:r(e)})).entries.filter(e=>e.type===`directory`).map(e=>e.name).sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:`base`}))}export{d as a,m as c,u as d,s as f,i as h,_ as i,g as l,o as m,v as n,h as o,c as p,y as r,p as s,b as t,a as u};
@@ -1 +0,0 @@
1
- import{l as e}from"./useI18n-T3BwAm0z.js";import{J as t,Y as n,q as r}from"./data-DPJ4OTLn.js";import{n as i}from"./words-T8-D0K4W.js";var a=[`none`,`folder`,`status`,`agent`],o=`ahpd-web.session-grouping`;function s(){try{let e=localStorage.getItem(o);return a.some(t=>t===e)?e:`none`}catch{return`none`}}function c(e){try{localStorage.setItem(o,e)}catch{}}var l=t=>e(`sessions/grouping/${t}`),u=[`input`,`running`,`error`,`unread`,`idle`,`archived`],d=t=>({key:t,label:e(`sessions/status/${t}`)});function f(e){if(t(e.status))return d(`archived`);let i=r(e.status);return i===`idle`&&!n(e.status)?d(`unread`):d(i)}function p(t,n,r){switch(n){case`none`:return;case`status`:return f(t);case`agent`:return{key:t.provider,label:r(t.provider)};case`folder`:{let n=t.workingDirectories?.[0];return n===void 0?{key:``,label:e(`sessions/grouping/noFolder`)}:{key:n,label:i(n)}}}}function m(e,t,n){if(n===`none`)return[...e];let r=new Map;n===`status`&&u.forEach((e,t)=>r.set(e,t));for(let n of e){let e=t(n)?.key??``;r.has(e)||r.set(e,r.size+u.length)}return e.map((e,n)=>({item:e,index:n,rank:r.get(t(e)?.key??``)})).sort((e,t)=>e.rank-t.rank||e.index-t.index).map(e=>e.item)}export{s as a,l as i,m as n,c as o,p as r,a as t};
@@ -1 +0,0 @@
1
- :root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--oo-rgb-white:255 255 255;--oo-rgb-black:17 24 39;--oo-rgb-slate:100 116 139;--oo-rgb-gray:107 114 128;--oo-rgb-zinc:113 113 122;--oo-rgb-neutral:115 115 115;--oo-rgb-stone:120 113 108;--oo-rgb-red:239 68 68;--oo-rgb-orange:249 115 22;--oo-rgb-amber:245 158 11;--oo-rgb-yellow:234 179 8;--oo-rgb-lime:132 204 22;--oo-rgb-green:34 197 94;--oo-rgb-emerald:16 185 129;--oo-rgb-teal:20 184 166;--oo-rgb-cyan:6 182 212;--oo-rgb-sky:14 165 233;--oo-rgb-blue:59 130 246;--oo-rgb-indigo:99 102 241;--oo-rgb-violet:139 92 246;--oo-rgb-purple:168 85 247;--oo-rgb-fuchsia:217 70 239;--oo-rgb-pink:236 72 153;--oo-rgb-rose:244 63 94;--oo-color-white:rgb(var(--oo-rgb-white));--oo-color-black:rgb(var(--oo-rgb-black));--oo-color-slate:rgb(var(--oo-rgb-slate));--oo-color-gray:rgb(var(--oo-rgb-gray));--oo-color-zinc:rgb(var(--oo-rgb-zinc));--oo-color-neutral:rgb(var(--oo-rgb-neutral));--oo-color-stone:rgb(var(--oo-rgb-stone));--oo-color-red:rgb(var(--oo-rgb-red));--oo-color-orange:rgb(var(--oo-rgb-orange));--oo-color-amber:rgb(var(--oo-rgb-amber));--oo-color-yellow:rgb(var(--oo-rgb-yellow));--oo-color-lime:rgb(var(--oo-rgb-lime));--oo-color-green:rgb(var(--oo-rgb-green));--oo-color-emerald:rgb(var(--oo-rgb-emerald));--oo-color-teal:rgb(var(--oo-rgb-teal));--oo-color-cyan:rgb(var(--oo-rgb-cyan));--oo-color-sky:rgb(var(--oo-rgb-sky));--oo-color-blue:rgb(var(--oo-rgb-blue));--oo-color-indigo:rgb(var(--oo-rgb-indigo));--oo-color-violet:rgb(var(--oo-rgb-violet));--oo-color-purple:rgb(var(--oo-rgb-purple));--oo-color-fuchsia:rgb(var(--oo-rgb-fuchsia));--oo-color-pink:rgb(var(--oo-rgb-pink));--oo-color-rose:rgb(var(--oo-rgb-rose));--oo-rgb-canvas:255 255 255;--oo-rgb-panel:248 248 248;--oo-rgb-surface:255 255 255;--oo-rgb-raised:255 255 255;--oo-rgb-titlebar:var(--oo-rgb-panel);--oo-rgb-activitybar:var(--oo-rgb-panel);--oo-rgb-sidebar:var(--oo-rgb-panel);--oo-rgb-statusbar:var(--oo-rgb-panel);--oo-rgb-text:45 53 92;--oo-rgb-muted:152 152 172;--oo-rgb-subtle:170 170 188;--oo-rgb-inverse:255 255 255;--oo-rgb-hover:240 240 240;--oo-rgb-active:232 232 232;--oo-rgb-selected:230 250 246;--oo-rgb-line:185 185 255;--oo-rgb-border:185 185 255;--oo-line-alpha:.25;--oo-border-alpha:.25;--oo-rgb-accent:78 201 176;--oo-rgb-primary:12 112 97;--oo-rgb-danger:204 0 0;--oo-rgb-success:0 170 0;--oo-rgb-warning:204 136 0;--oo-rgb-info:var(--oo-rgb-blue);--oo-color-canvas:rgb(var(--oo-rgb-canvas));--oo-color-panel:rgb(var(--oo-rgb-panel));--oo-color-surface:rgb(var(--oo-rgb-surface));--oo-color-raised:rgb(var(--oo-rgb-raised));--oo-color-surface-root:var(--oo-color-surface);--oo-color-titlebar:rgb(var(--oo-rgb-titlebar));--oo-color-activitybar:rgb(var(--oo-rgb-activitybar));--oo-color-sidebar:rgb(var(--oo-rgb-sidebar));--oo-color-statusbar:rgb(var(--oo-rgb-statusbar));--oo-color-text:rgb(var(--oo-rgb-text));--oo-color-muted:rgb(var(--oo-rgb-muted));--oo-color-subtle:rgb(var(--oo-rgb-subtle));--oo-color-inverse:rgb(var(--oo-rgb-inverse));--oo-color-hover:rgb(var(--oo-rgb-hover));--oo-color-active:rgb(var(--oo-rgb-active));--oo-color-selected:rgb(var(--oo-rgb-selected));--oo-color-line:rgb(var(--oo-rgb-line) / var(--oo-line-alpha));--oo-color-border:rgb(var(--oo-rgb-border) / var(--oo-border-alpha));--oo-color-accent:rgb(var(--oo-rgb-accent));--oo-color-primary:rgb(var(--oo-rgb-primary));--oo-color-danger:rgb(var(--oo-rgb-danger));--oo-color-success:rgb(var(--oo-rgb-success));--oo-color-warning:rgb(var(--oo-rgb-warning));--oo-color-info:rgb(var(--oo-rgb-info));--oo-app-bg:var(--oo-color-canvas);--oo-app-fg:var(--oo-color-text);--oo-titlebar-bg:var(--oo-color-titlebar);--oo-titlebar-fg:var(--oo-color-muted);--oo-activitybar-bg:var(--oo-color-activitybar);--oo-activitybar-fg:var(--oo-color-muted);--oo-activitybar-fg-hover:var(--oo-color-accent);--oo-activitybar-bg-hover:var(--oo-color-hover);--oo-activitybar-fg-active:var(--oo-color-accent);--oo-activitybar-bg-active:var(--oo-color-active);--oo-sidebar-left-bg:var(--oo-color-sidebar);--oo-sidebar-left-fg:var(--oo-color-text);--oo-sidebar-right-bg:var(--oo-color-sidebar);--oo-sidebar-right-fg:var(--oo-color-text);--oo-card-bg:var(--oo-color-surface);--oo-card-fg:var(--oo-color-text);--oo-card-border:var(--oo-color-border);--oo-popup-bg:var(--oo-color-raised);--oo-popup-fg:var(--oo-color-text);--oo-popup-border:var(--oo-color-border);--oo-input-bg:var(--oo-color-surface);--oo-input-fg:var(--oo-color-text);--oo-input-border:var(--oo-color-border);--oo-input-placeholder:var(--oo-color-muted);--oo-spacing-xs:3px;--oo-spacing-sm:6px;--oo-spacing-md:14px;--oo-spacing-lg:22px;--oo-spacing-xl:30px;--oo-row-gap:var(--oo-spacing-md);--oo-column-gap:var(--oo-spacing-md);--oo-list-gap:var(--oo-spacing-sm);--oo-list-padding:0;--oo-radius-xs:3px;--oo-radius-sm:4px;--oo-radius-md:6px;--oo-radius-lg:12px;--oo-radius-xl:18px;--oo-radius-full:999px;--oo-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--oo-font-mono:"SF Mono", Monaco, Consolas, monospace;--oo-font-size-xs:11px;--oo-font-size-sm:13px;--oo-font-size-md:14px;--oo-font-size-lg:16px;--oo-font-size-xl:20px;--oo-line-height:1.5;--oo-shadow-sm:0 1px 2px #00000014;--oo-shadow-md:0 4px 8px #0000001f;--oo-shadow-lg:0 12px 24px #00000029;--oo-z-overlay:1000;--oo-z-popup:9999}[data-theme-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--oo-rgb-canvas:2 6 23;--oo-rgb-panel:15 23 42;--oo-rgb-surface:2 6 23;--oo-rgb-raised:24 32 48;--oo-rgb-titlebar:2 6 23;--oo-rgb-activitybar:15 23 42;--oo-rgb-sidebar:15 23 42;--oo-rgb-statusbar:15 23 42;--oo-rgb-text:203 213 224;--oo-rgb-muted:116 131 154;--oo-rgb-subtle:100 116 139;--oo-rgb-hover:30 41 59;--oo-rgb-active:51 65 85;--oo-rgb-selected:20 83 76;--oo-rgb-line:116 131 154;--oo-rgb-border:98 113 134;--oo-rgb-primary:var(--oo-rgb-accent);--oo-line-alpha:.18;--oo-border-alpha:.22}:root{--oo-activitybar-size:48px;--oo-sidebar-left-size:240px;--oo-sidebar-right-size:280px;--oo-main-size:0px;--oo-panel-bottom-size:200px;--oo-statusbar-size:22px;--oo-overlay-size:0px;--oo-sidebar-left-visible:1;--oo-sidebar-right-visible:0;--oo-panel-bottom-visible:0;--oo-activitybar-visible:1;--oo-statusbar-visible:1}.oo-main-fluid-width{width:calc(100vw - var(--oo-activitybar-size,0px) - var(--oo-sidebar-left-size,0px) * var(--oo-sidebar-left-visible,0) - var(--oo-sidebar-right-size,0px) * var(--oo-sidebar-right-visible,0))}:root{--oo-mono:ui-monospace, "Cascadia Code", "JetBrains Mono", "SF Mono", Consolas, monospace;--oo-sans:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--input-padding-y:var(--oo-spacing-xs);--input-padding-x:var(--oo-spacing-sm);--input-background:var(--oo-color-canvas);--input-color:var(--oo-color-text);--input-border-color:var(--oo-color-border);--input-border-radius:var(--oo-radius-sm);--input-border-width:1px;--textarea-padding-y:var(--input-padding-y);--textarea-padding-x:var(--input-padding-x);--textarea-background:var(--input-background);--textarea-color:var(--input-color);--textarea-border-color:var(--input-border-color);--textarea-border-radius:var(--input-border-radius);--textarea-border-width:var(--input-border-width);--button-background:none;--button-background-hover:var(--oo-color-hover);--button-background-active:var(--oo-color-active);--button-color:inherit;--button-color-hover:var(--oo-color-text);--button-border:var(--oo-color-border);--button-border-width:1px;--button-border-radius:0;--button-padding-y:var(--oo-spacing-xs);--button-padding-x:var(--oo-spacing-xs);--button-font-size:var(--oo-font-size-sm)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100vh;margin:0;padding:0;overflow:hidden}body{font-family:var(--oo-font-family);font-size:var(--oo-font-size-md);line-height:var(--oo-line-height);color:var(--oo-color-text);background:var(--oo-color-canvas)}a{color:var(--oo-color-primary);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}a:active{color:var(--oo-color-active)}button{appearance:none;align-items:center;gap:var(--oo-spacing-xs);padding-inline:var(--button-padding-x);padding-block:var(--button-padding-y);border-radius:var(--button-border-radius);border-width:var(--button-border-width);border-style:solid;border-color:var(--button-border);background:var(--button-background);color:var(--button-color);cursor:pointer;font:inherit;font-size:var(--button-font-size);line-height:1;transition:background-color .12s,color .12s,border-color .12s,opacity .12s,filter .12s;display:inline-flex}button[data-variant=primary]{--button-background:none;--button-color:var(--oo-color-primary);--button-border:var(--oo-color-primary);--button-color-hover:var(--oo-color-surface);--button-background-hover:rgb(from var(--oo-color-primary) r g b / .88);--button-background-active:rgb(from var(--oo-color-primary) r g b / .76)}button[data-variant=secondary]{--button-background:none;--button-color:var(--oo-color-text);--button-border:var(--oo-color-border);--button-color-hover:var(--oo-color-surface);--button-background-hover:rgb(from var(--oo-color-text) r g b / .8);--button-background-active:rgb(from var(--oo-color-text) r g b / .76)}button[data-variant=danger]{--button-background:none;--button-color:var(--oo-color-danger);--button-border:var(--oo-color-danger);--button-color-hover:var(--oo-color-surface);--button-background-hover:rgb(from var(--oo-color-danger) r g b / .88);--button-background-active:rgb(from var(--oo-color-danger) r g b / .76)}button[data-variant=ghost]{--button-background:none;--button-color:var(--oo-color-text);--button-color-hover:var(--oo-color-primary);--button-background-hover:none;--button-background-active:none;background:0 0;border:none}button[data-variant=borderless]{--button-background:var(--oo-color-hover);--button-color:var(--oo-color-text);--button-border-width:0;--button-background-hover:var(--oo-color-surface);--button-background-active:var(--oo-color-active)}button[data-selected=true]{color:var(--oo-color-surface);background:var(--oo-color-active)}button:active,button[data-active=true]{background:var(--button-background-active)}button[disabled],button[data-disabled=true]{cursor:not-allowed;opacity:.5;pointer-events:none}button:hover{background:var(--button-background-hover)}button[data-variant]:hover{color:var(--button-color-hover)}code,pre{font-family:var(--oo-font-mono)}select{color:inherit;font:inherit;box-sizing:border-box;padding:var(--oo-spacing-xs) var(--oo-spacing-sm);background:var(--oo-color-canvas);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm)}@supports (appearance:base-select){select:not([multiple]):not([size]){appearance:base-select}select:not([multiple]):not([size])::picker(select){appearance:base-select}select:not([multiple]):not([size]){align-items:center;gap:var(--oo-spacing-xs);display:inline-flex}select:not([multiple]):not([size])::picker-icon{opacity:.7;font-size:.75em}select:not([multiple]):not([size])::picker(select){min-width:anchor-size(width);border:1px solid var(--oo-popup-border);background:var(--oo-popup-bg);color:var(--oo-popup-fg);border-radius:8px;margin-block:4px;padding:4px;box-shadow:0 8px 24px #0000004d}select:not([multiple]):not([size]) option{font-size:var(--oo-font-size-sm);color:inherit;background:0 0;border-radius:6px;padding:4px 8px}select:not([multiple]):not([size]) option:hover,select:not([multiple]):not([size]) option:focus-visible{background:var(--oo-color-hover);outline:none}select:not([multiple]):not([size]) option:checked{font-weight:600}select:not([multiple]):not([size]) option::checkmark{color:var(--oo-color-accent)}}input{color:var(--input-color);font:inherit;box-sizing:border-box;padding:var(--input-padding-y) var(--input-padding-x);background:var(--input-background);border:var(--input-border-width) solid var(--input-border-color);border-radius:var(--input-border-radius)}textarea{color:var(--textarea-color);font:inherit;box-sizing:border-box;padding:var(--textarea-padding-y) var(--textarea-padding-x);background:var(--textarea-background);border:var(--textarea-border-width) solid var(--textarea-border-color);border-radius:var(--textarea-border-radius)}select:focus,input:focus,textarea:focus{outline:1px solid var(--oo-color-accent);outline-offset:-2px}.oo-mount{display:contents}.oo-loading-dots{justify-content:center;align-items:center;gap:4px;width:100%;height:100%;margin:0 auto;display:inline-flex}.oo-loading-dots span{opacity:.35;background:currentColor;border-radius:999px;width:4px;height:4px;animation:1s ease-in-out infinite dotPulse}.oo-loading-dots span:nth-child(2){animation-delay:.15s}.oo-loading-dots span:nth-child(3){animation-delay:.3s}@keyframes dotPulse{0%,80%,to{opacity:.35;transform:scale(.75)}40%{opacity:1;transform:scale(1)}}html.oo-resizing,html.oo-resizing *{-webkit-user-select:none!important;user-select:none!important}html.oo-resizing *{cursor:inherit!important}.oo-layout--bar{-webkit-user-select:none;user-select:none;background:var(--oo-color-surface);align-items:center;width:100%;height:100%;display:flex}.oo-bar__slot{align-items:center;gap:var(--oo-spacing-xs);height:100%;padding:0 var(--oo-spacing-sm);display:flex}.oo-bar__slot button{border:0;border-radius:0}.oo-bar__slot button[data-active=true]:not(:hover){color:var(--oo-color-active)}.oo-bar__slot select{color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);background:0 0;border-color:#0000;padding-block:0}.oo-bar__slot select:hover,.oo-bar__slot select:focus{color:var(--oo-color-text);background:var(--oo-color-hover);border-color:var(--oo-color-border);outline:none}.oo-bar__slot select:open{color:var(--oo-color-text);background:var(--oo-color-hover);border-color:var(--oo-color-border)}.oo-bar__slot select:focus-visible{outline:1px solid var(--oo-color-accent);outline-offset:-1px}.oo-bar__slot--left{flex:none;justify-content:flex-start}.oo-bar__slot--center{flex:auto;justify-content:center;min-width:0}.oo-bar__slot--right{flex:none;justify-content:flex-end}.oo-bar__item{align-items:center;display:flex}.tab-bar{background:var(--oo-color-surface);border-bottom:1px solid var(--oo-color-border);font-size:var(--oo-font-size-xs);min-width:0;min-height:32px;display:flex}.tab-bar__strip{scrollbar-width:none;flex:auto;min-width:0;display:flex;overflow:auto hidden}.tab-bar__strip::-webkit-scrollbar{display:none}.tab-bar__tab{border-right:1px solid var(--oo-color-border);color:var(--oo-color-muted);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;flex:none;align-items:center;gap:4px;padding:4px 12px;display:flex}.tab-bar__tab[data-active=true]{color:var(--oo-color-text);background:var(--oo-color-canvas);border-bottom:2px solid var(--oo-color-accent);margin-bottom:-1px}.tab-bar__tab[data-drag-over=true]{box-shadow:inset 0 2px 0 var(--oo-color-accent)}.tab-bar__tab .close{opacity:.5}.tab-bar__tab:hover .close{opacity:1}.tab-bar__tab .tab__label{text-overflow:ellipsis;max-width:173px;overflow:hidden}.tab-bar__tab .tab__icon{color:var(--tab-color,inherit)}.tab-bar__extras{flex:none;align-items:center;gap:6px;padding:0 8px;display:flex}.tab-bar__extras button{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:3px;padding:2px 8px;font-size:11px}.tab-bar__extras button:hover{background:var(--oo-color-active)}:root{--oo-scrollbar-width:15px;--oo-scrollbar-track-color:rgb(from var(--oo-color-surface) r g b / .25);--oo-scrollbar-border-color:transparent;--oo-scrollbar-border-width:3px;--oo-scrollbar-thumb-radius:15px;--oo-scrollbar-thumb-color:rgb(from var(--oo-color-border) r g b / .35);--oo-scrollbar-thumb-hover:rgb(from var(--oo-color-border) r g b / .5)}::-webkit-scrollbar{width:var(--oo-scrollbar-width,15px);height:var(--oo-scrollbar-width,15px)}::-webkit-scrollbar-track{background:var(--oo-scrollbar-track-color)}::-webkit-scrollbar-thumb{background-color:var(--oo-scrollbar-thumb-color);border-width:var(--oo-scrollbar-border-width,0px);border-style:solid;border-color:var(--oo-scrollbar-border-color,var(--oo-scrollbar-track-color));background-clip:content-box;transition:background-color .16s}::-webkit-scrollbar-thumb:hover{background-color:var(--oo-scrollbar-thumb-hover)}*{scrollbar-width:medium;scrollbar-color:var(--oo-scrollbar-thumb-color) var(--oo-scrollbar-track-color)}:where(:root){--oo-surface-float-width:17rem;--oo-surface-sheet-height:85%;--oo-surface-bar-size:2.75rem;--oo-surface-overlay-shadow:0 0 28px #00000052}.oo-surface[data-surface-edge=inline-end]{border-inline-end:var(--oo-surface-border-width,0px) solid var(--oo-surface-border,var(--oo-color-border))}.oo-surface[data-surface-edge=inline-start]{border-inline-start:var(--oo-surface-border-width,0px) solid var(--oo-surface-border,var(--oo-color-border))}.oo-surface[data-surface-edge=block-end]{border-block-end:var(--oo-surface-border-width,0px) solid var(--oo-surface-border,var(--oo-color-border))}.oo-surface[data-surface-edge=block-start]{border-block-start:var(--oo-surface-border-width,0px) solid var(--oo-surface-border,var(--oo-color-border))}.oo-surface[data-surface-role=bar]{--oo-color-surface:var(--oo-surface-bar-bg,var(--oo-color-surface-root));background:var(--oo-surface-bar-bg,transparent)}.oo-surface[data-surface-role=panel],.oo-surface[data-surface-role=rail]{--oo-color-surface:var(--oo-surface-panel-bg,var(--oo-color-surface-root));background:var(--oo-surface-panel-bg,transparent)}.oo-surface[data-surface-role=main]{--oo-color-surface:var(--oo-surface-main-bg,var(--oo-color-surface-root));background:var(--oo-surface-main-bg,transparent)}.oo-shell__body{gap:var(--oo-shell-gap,0px);padding-inline:var(--oo-shell-gap,0px)}.oo-shell__center{gap:var(--oo-shell-gap,0px)}.oo-shell__body>.oo-surface[data-presentation=docked],.oo-shell__center>.oo-surface[data-presentation=docked]{border-radius:var(--oo-surface-radius,0px);outline:var(--oo-surface-box-width,0px) solid var(--oo-surface-border,var(--oo-color-border));outline-offset:calc(-1 * var(--oo-surface-box-width,0px));padding:var(--oo-surface-box-width,0px);overflow:clip}.oo-shell__body>.oo-surface[data-surface-role=rail]:has(+.oo-surface[data-surface-role=panel][data-presentation=docked]){border-start-end-radius:0;border-end-end-radius:0}.oo-shell__body>.oo-surface[data-surface-role=rail]+.oo-surface[data-surface-role=panel][data-presentation=docked]{border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1 * var(--oo-shell-gap,0px) - var(--oo-surface-box-width,0px))}.oo-surface[data-presentation=floating],.oo-surface[data-presentation=sheet]{border:0}.oo-surface[data-presentation=floating]{z-index:30;width:min(var(--oo-surface-float-width), 86%);box-shadow:var(--oo-surface-overlay-shadow);background:var(--oo-color-surface,var(--oo-color-canvas));position:absolute;top:0;bottom:0}.oo-surface[data-surface-edge=inline-end][data-presentation=floating]{inset-inline-start:0}.oo-surface[data-surface-edge=inline-start][data-presentation=floating]{inset-inline-end:0}.oo-surface--sidebar-left[data-presentation=floating]:not([data-surface-edge]){left:0}.oo-surface--sidebar-right[data-presentation=floating]:not([data-surface-edge]){right:0}.oo-surface[data-presentation=sheet]{z-index:30;height:var(--oo-surface-sheet-height);box-shadow:var(--oo-surface-overlay-shadow);background:var(--oo-color-surface,var(--oo-color-canvas));position:absolute;bottom:0;left:0;right:0}.oo-surface[data-presentation=bar]{z-index:40;width:auto;height:var(--oo-surface-bar-size);background:var(--oo-color-surface,var(--oo-color-canvas));flex:none;position:absolute;inset:auto 0 0}.oo-shell__body:has(>.oo-surface[data-presentation=bar]){padding-bottom:var(--oo-surface-bar-size)}:is(.oo-shell__body:has(>.oo-surface[data-presentation=bar])>.oo-surface[data-presentation=floating],.oo-shell__body:has(>.oo-surface[data-presentation=bar])>.oo-surface[data-presentation=sheet]){bottom:var(--oo-surface-bar-size)}.oo-shell__body:has(>.oo-surface[data-presentation=bar])>.oo-surface[data-presentation=sheet]{max-height:calc(100% - var(--oo-surface-bar-size))}.oo-surface-scrim{z-index:20;background:var(--oo-color-scrim,#00000061);cursor:pointer;border:0;padding:0;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.oo-surface{transition:none}}.oo-surface[data-resize]{position:relative}.oo-surface[data-resize]:after{content:"";z-index:10;opacity:0;transition:opacity .12s;position:absolute}@media (prefers-reduced-motion:reduce){.oo-surface[data-resize]:after{transition:none}}.oo-surface[data-resize=right]:after{cursor:ew-resize;background:linear-gradient(to right, transparent calc(10px - var(--oo-resize-line,3px)), var(--oo-color-accent) calc(10px - var(--oo-resize-line,3px)));width:10px;top:0;bottom:0;right:0}.oo-surface[data-resize=left]:after{cursor:ew-resize;background:linear-gradient(to right, var(--oo-color-accent) var(--oo-resize-line,3px), transparent var(--oo-resize-line,3px));width:10px;top:0;bottom:0;left:0}.oo-surface[data-resize=top]:after{cursor:ns-resize;background:linear-gradient(to bottom, var(--oo-color-accent) var(--oo-resize-line,3px), transparent var(--oo-resize-line,3px));height:10px;top:0;left:0;right:0}.oo-surface[data-resize=bottom]:after{cursor:ns-resize;background:linear-gradient(to bottom, transparent calc(10px - var(--oo-resize-line,3px)), var(--oo-color-accent) calc(10px - var(--oo-resize-line,3px)));height:10px;bottom:0;left:0;right:0}.oo-surface[data-resize][data-resize-state=hot]:after{opacity:.55}.oo-surface[data-resize][data-resize-state=active]:after{opacity:1}.oo-surface-loading{flex:auto;justify-content:center;align-items:center;width:100%;height:100%;min-height:0;display:flex}.oo-surface-loading>span{border:2px solid var(--oo-color-border);border-top-color:var(--oo-color-accent);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite oo-surface-spin}[data-surface-role=overlay] .oo-surface-loading{display:none}@keyframes oo-surface-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.oo-surface-loading>span{animation-duration:2.4s}}.oo-close-confirm{border:1px solid var(--oo-color-border);border-radius:var(--oo-surface-radius,8px);background:var(--oo-color-surface);width:min(400px,100vw - 32px);color:var(--oo-color-text);box-shadow:var(--oo-surface-overlay-shadow,0 8px 24px #0000004d);padding:16px}.oo-close-confirm::backdrop{background:#0006}.oo-close-confirm__title{overflow-wrap:anywhere;margin:0 0 8px;font-size:1em;font-weight:600}.oo-close-confirm__reason{opacity:.8;margin:0 0 16px}.oo-close-confirm__actions{justify-content:flex-end;gap:8px;display:flex}.oo-close-confirm__actions>button{border-radius:var(--oo-radius-sm,4px);padding:4px 14px}.oo-close-confirm__actions>button:focus-visible{outline:2px solid var(--oo-color-accent);outline-offset:2px}.oo-surface-empty{height:100%;min-height:0;overflow:auto}:root{--oo-surface-sheet-height:100%}.oo-activity-item{--oo-activitybar-bg:transparent;--oo-activitybar-bg-hover:transparent;--oo-activitybar-bg-active:transparent}.web-title{font-weight:600}.web-loading{height:100vh;color:var(--oo-color-muted);background:var(--oo-color-canvas);justify-content:center;align-items:center;display:flex}.web-method{font-size:var(--oo-font-size-xs);color:var(--oo-color-muted)}.web-page{gap:var(--oo-spacing-md);padding:var(--oo-spacing-lg) max(var(--oo-spacing-lg), calc((100% - 72rem) / 2));box-sizing:border-box;flex-direction:column;height:100%;display:flex;overflow-y:auto}.web-page__head{gap:var(--oo-spacing-sm);flex-direction:column;display:flex}.web-page__route{align-items:center;gap:var(--oo-spacing-sm);flex-wrap:wrap;display:flex}.web-page__route code{color:var(--oo-color-muted);font-size:var(--oo-font-size-sm)}.web-page__actions{align-items:center;gap:var(--oo-spacing-md);display:flex}.web-result{gap:var(--oo-spacing-sm);flex-direction:column;min-width:0;display:flex}.web-result__bar{gap:2px;display:flex}.web-result__bar button{border:1px solid var(--oo-color-border);color:var(--oo-color-muted);font:inherit;font-size:var(--oo-font-size-xs);padding:2px var(--oo-spacing-sm);border-radius:var(--oo-radius-sm);cursor:pointer;background:0 0}.web-result__bar button[data-active=true]{color:var(--oo-color-text);background:var(--oo-color-selected)}.web-result__json,.web-result__text{padding:var(--oo-spacing-md);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);background:var(--oo-color-panel);font-size:var(--oo-font-size-sm);white-space:pre-wrap;word-break:break-word;margin:0;overflow-x:auto}.web-chat{--web-chat-gutter:max(var(--oo-spacing-lg), calc((100% - 72rem) / 2));--web-composer-gutter:max(calc(var(--oo-spacing-lg) * 2), calc((100% - 56rem) / 2));box-sizing:border-box;flex-direction:column;width:100%;height:100%;display:flex}.web-chat__head{gap:var(--oo-spacing-sm);padding:var(--oo-spacing-lg) var(--web-chat-gutter) var(--oo-spacing-sm);flex-direction:column;display:flex}.web-chat__turns{gap:var(--oo-spacing-lg);min-height:0;padding:var(--oo-spacing-sm) var(--web-chat-gutter);flex-direction:column;flex:1;display:flex;overflow-y:auto}.web-turn{gap:var(--oo-spacing-sm);flex-direction:column;display:flex}.web-turn__ask{white-space:pre-wrap;overflow-wrap:anywhere;max-width:80%;padding:var(--oo-spacing-sm) var(--oo-spacing-md);border-radius:var(--oo-radius-md);background:var(--oo-color-surface-raised,var(--oo-color-surface));border:1px solid var(--oo-color-border);align-self:flex-end}.web-turn__answer{gap:var(--oo-spacing-sm);overflow-wrap:anywhere;flex-direction:column;min-width:0;display:flex}.web-note{color:var(--oo-color-muted);font-size:var(--oo-font-size-sm);margin:0}.web-activity{flex-direction:column;min-width:0;display:flex}.web-activity__line{align-items:baseline;gap:var(--oo-spacing-xs);width:fit-content;max-width:100%;font:inherit;font-size:var(--oo-font-size-sm);color:var(--oo-color-muted);text-align:left;cursor:pointer;background:0 0;border:0;padding:1px 0;display:inline-flex}.web-activity__line:hover,.web-activity__line:focus-visible,.web-activity__line[aria-expanded=true]{color:var(--oo-color-accent);background:0 0}.web-activity__failed{color:var(--oo-color-warning);font-style:italic}.web-activity__chev{font-size:var(--oo-font-size-xs);visibility:hidden}.web-activity__line:hover .web-activity__chev,.web-activity__line:focus-visible .web-activity__chev,.web-activity__line[aria-expanded=true] .web-activity__chev{visibility:visible}.web-activity__steps{flex-direction:column;gap:2px;margin-top:2px;display:flex}.web-tool[data-outcome=thought] .web-tool__mark{color:var(--oo-color-muted)}.web-input{gap:var(--oo-spacing-xs);padding:var(--oo-spacing-sm) var(--oo-spacing-md);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-md);flex-direction:column;display:flex}.web-tool{font-size:var(--oo-font-size-sm);min-width:0}.web-tool__row{align-items:baseline;gap:var(--oo-spacing-sm);width:fit-content;max-width:100%;font:inherit;color:var(--oo-color-muted);text-align:left;cursor:pointer;background:0 0;border:0;padding:1px 0;display:flex}.web-tool__row:hover,.web-tool__row:focus-visible{background:0 0}.web-tool__row:hover .web-tool__line,.web-tool__row[aria-expanded=true] .web-tool__line{color:var(--oo-color-accent)}.web-tool__ref{color:var(--oo-color-accent);text-underline-offset:2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.web-tool__ref:hover,.web-tool__ref:focus-visible{text-decoration-style:solid}.web-tool__mark{text-align:center;width:1rem;color:var(--oo-color-success);flex:none}.web-tool[data-outcome=approval] .web-tool__mark,.web-tool[data-outcome=review] .web-tool__mark,.web-tool[data-outcome=sign-in] .web-tool__mark{color:var(--oo-color-warning)}.web-tool[data-outcome=failed] .web-tool__mark,.web-tool[data-outcome=failed] .web-tool__state{color:var(--oo-color-danger)}.web-tool[data-outcome=cancelled] .web-tool__mark,.web-tool[data-outcome=preparing] .web-tool__mark{color:var(--oo-color-muted)}.web-tool[data-outcome=running] .web-tool__mark{color:var(--oo-color-info);animation:1.2s ease-in-out infinite web-pulse}@keyframes web-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.web-tool[data-outcome=running] .web-tool__mark{animation:none}}.web-tool__line{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--oo-font-mono,monospace);font-size:var(--oo-font-size-xs);flex:0 auto;overflow:hidden}.web-tool+.web-tool{margin-top:calc(2px - var(--oo-spacing-sm))}.web-tool__state,.web-tool__time{font-size:var(--oo-font-size-xs);flex:none}.web-tool__body{gap:var(--oo-spacing-sm);margin:2px 0 var(--oo-spacing-sm) calc(.5rem - 1px);padding:var(--oo-spacing-xs) 0 var(--oo-spacing-xs) calc(.5rem + var(--oo-spacing-sm));border-left:1px solid var(--oo-color-border);flex-direction:column;display:flex}.web-tool__facts{gap:2px var(--oo-spacing-md);grid-template-columns:max-content 1fr;margin:0;display:grid}.web-tool__facts dt{color:var(--oo-color-muted)}.web-tool__facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.web-tool__block-head{color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;display:flex}.web-tool__copy{--button-background-hover:none;font:inherit;color:var(--oo-color-accent);cursor:pointer;background:0 0;border:0;padding:0}.web-tool__pre{margin:var(--oo-spacing-xs) 0 0;padding:var(--oo-spacing-sm);white-space:pre-wrap;overflow-wrap:anywhere;max-height:18rem;font-family:var(--oo-font-mono,monospace);font-size:var(--oo-font-size-xs);background:var(--oo-color-canvas);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);overflow:auto}.web-tool__file{gap:var(--oo-spacing-sm);margin:0;display:flex}.web-diff--add{color:var(--oo-color-success)}.web-diff--remove{color:var(--oo-color-danger)}.web-tool__actions{gap:var(--oo-spacing-sm);flex-wrap:wrap;display:flex}.web-input__group{gap:var(--oo-spacing-xs);border:0;flex-direction:column;margin:0;padding:0;display:flex}.web-input__row{align-items:center;gap:var(--oo-spacing-sm);display:flex}.web-input__label{font-weight:600}.web-input__hint{color:var(--oo-color-muted);font-size:var(--oo-font-size-sm)}.web-field{font:inherit;color:inherit;background:var(--oo-color-canvas);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);padding:var(--oo-spacing-sm);box-sizing:border-box;width:100%}.web-composer{padding:0 var(--web-composer-gutter,0) var(--oo-spacing-md);flex:none;position:relative}.web-composer__where{flex-wrap:wrap;gap:4px;margin-bottom:4px;display:flex}.web-composer__box{border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-md);container:composer/inline-size}.web-composer__box:focus-within{border-color:var(--oo-color-accent)}.web-composer__picker{bottom:100%;left:var(--web-composer-gutter,0);right:var(--web-composer-gutter,0);z-index:50;border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-md);margin-bottom:var(--oo-spacing-xs);background:var(--oo-popup-bg,var(--oo-color-raised));animation:.12s ease-out web-slide-up;position:absolute;overflow:hidden;box-shadow:0 -6px 20px #00000038}@keyframes web-slide-up{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.web-composer__picker{animation:none}}.web-composer__chips{flex-wrap:wrap;gap:4px;padding:6px 10px 0;display:flex}.web-composer__attached{flex-wrap:wrap;gap:4px;padding:6px 8px 0;display:flex}.web-attachment{border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm,4px);max-width:16rem;color:var(--oo-color-text);font-size:var(--oo-font-size-xs);align-items:center;gap:4px;padding:0 4px 0 6px;line-height:20px;display:inline-flex}.web-attachment__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.web-attachment__icon{color:var(--oo-color-muted)}.web-attachment__open{min-width:0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.web-attachment__open:hover .web-attachment__label{text-decoration:underline}.web-attachment-preview{flex-direction:column;gap:8px;min-width:min(32rem,80vw);display:flex}.web-attachment-preview__meta{color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);margin:0}.web-attachment-preview__image{object-fit:contain;max-width:100%;max-height:70vh;margin:0 auto;display:block}.web-attachment-preview__text{max-height:70vh;font-family:var(--oo-font-mono,monospace);font-size:var(--oo-font-size-xs);white-space:pre-wrap;margin:0;overflow:auto}.web-attachment__remove{color:var(--oo-color-muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 2px}.web-attachment__remove:hover{color:var(--oo-color-text)}.web-chip{border:1px solid var(--oo-color-border);color:var(--oo-color-muted);font:inherit;font-size:var(--oo-font-size-xs);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:3px;max-width:100%;padding:0 6px;line-height:18px;display:inline-flex;overflow:hidden}.web-chip__short,.web-chip__icon{display:none}@container composer (width<40rem){.web-chip[data-short=true] .web-chip__long{display:none}.web-chip[data-short=true] .web-chip__short{display:inline}}@container composer (width<28rem){.web-chip[data-icon=true] .web-chip__long,.web-chip[data-icon=true] .web-chip__short{display:none}.web-chip[data-icon=true] .web-chip__icon{display:inline}}.web-chip:disabled{cursor:default}.web-chip:not(:disabled):hover{border-color:var(--oo-color-accent);background:var(--oo-color-hover);color:var(--oo-color-text)}.web-chip[data-on=true],.web-chip[data-on=true]:not(:disabled):hover{border-color:var(--oo-color-accent);background:var(--oo-color-accent);color:var(--oo-color-canvas)}.web-composer__bar{align-items:flex-end;gap:var(--oo-spacing-sm);padding:2px 10px 0;display:flex}.web-composer__text{resize:none;box-sizing:border-box;min-height:34px;max-height:260px;color:inherit;font:inherit;background:0 0;border:0;flex:1;padding:6px 0;line-height:1.4;overflow-y:auto}.web-composer__text:focus{outline:none}@keyframes web-slide-down{0%{opacity:0;transform:translateY(-6px)}}.web-new__composer .web-composer__text{min-height:calc(4.2em + 12px)}.web-composer__foot{align-items:center;gap:4px;padding:2px 6px 6px;display:flex}.web-composer__foot .web-composer__chips{min-width:0;padding:0}.web-composer__foot .web-composer__chips--left{flex:1}.web-composer__foot .web-composer__chips--right{flex:0 auto;justify-content:flex-end;align-items:center}.web-composer__context{color:var(--oo-color-muted);font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 4px;font-size:11px}.web-composer__round{background:var(--oo-color-primary);width:28px;height:28px;color:var(--oo-color-surface);border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:inline-flex}.web-composer__round:hover{background:rgb(from var(--oo-color-primary) r g b / .85);color:var(--oo-color-surface)}.web-composer__add{border:1px solid var(--oo-color-border);width:20px;height:20px;color:var(--oo-color-muted);cursor:pointer;background:0 0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.web-composer__add-holder{display:contents}.web-composer__add:hover,.web-composer__add:focus-visible,.web-composer__add[aria-expanded=true]{color:var(--oo-color-text);background:var(--oo-color-hover,#7f7f7f26)}.web-composer__queue{padding:0 0 var(--oo-spacing-xs);gap:var(--oo-spacing-xs);flex-direction:column;margin:0;list-style:none;display:flex}.web-composer__queue li{align-items:center;gap:var(--oo-spacing-sm);font-size:var(--oo-font-size-sm);display:flex}.web-composer__queued{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.web-turn__facts{align-items:center;gap:var(--oo-spacing-sm);color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);flex-wrap:wrap;display:flex}.web-turn__attached{margin-top:var(--oo-spacing-xs);white-space:normal;flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.web-turn__attached button.web-attachment{--button-background-hover:none;--button-color-hover:var(--oo-color-text);font:inherit;font-size:var(--oo-font-size-xs);cursor:pointer;background:0 0}.web-turn__attached button.web-attachment:hover{border-color:var(--oo-color-accent)}.web-turn__ended{color:var(--oo-color-warning)}.web-turn__ended[data-state=error]{color:var(--oo-color-danger)}.web-chat__title{align-items:center;gap:var(--oo-spacing-sm);flex-wrap:wrap;display:flex}.web-chat__older{justify-content:center;align-items:center;gap:var(--oo-spacing-sm);display:flex}.web-explorer{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.web-explorer__title{padding:var(--oo-spacing-sm) var(--oo-spacing-sm) var(--oo-spacing-xs) var(--oo-spacing-md);font-size:var(--oo-font-size-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--oo-color-muted);flex:none;justify-content:space-between;align-items:center;font-weight:600;display:flex}.web-explorer__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.web-explorer__actions{gap:2px;display:flex}.web-explorer__action{width:1.6rem;height:1.6rem;font:inherit;font-size:var(--oo-font-size-sm);color:inherit;border-radius:var(--oo-radius-sm);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.web-explorer__action:hover,.web-explorer__action[data-on=true]{color:var(--oo-color-accent);background:color-mix(in srgb, var(--oo-color-accent) 12%, transparent)}.web-explorer__filter{margin:0 var(--oo-spacing-sm) var(--oo-spacing-xs);font:inherit;font-size:var(--oo-font-size-sm);color:inherit;background:var(--oo-color-canvas);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);flex:none;padding:4px 8px}.web-explorer__filter:focus{border-color:var(--oo-color-accent);outline:none}.web-explorer__scroll{scrollbar-width:thin;scrollbar-color:transparent transparent;flex:1;min-height:0;overflow-y:auto}.web-explorer__scroll:hover{scrollbar-color:var(--oo-color-border) transparent}.web-explorer__scroll>.oo-tree{height:auto}.web-explorer__notice,.web-explorer__empty{padding:var(--oo-spacing-sm) var(--oo-spacing-md)}.web-explorer__notice>.web-note{margin:0;padding:0}.web-explorer__icon{display:inline-block}.web-explorer__action[data-busy=true]{color:var(--oo-color-accent);cursor:progress}.web-explorer__action[data-busy=true] .web-explorer__icon{animation:.9s linear infinite web-turn}@keyframes web-turn{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.web-explorer__action[data-busy=true] .web-explorer__icon{animation:none}}.web-explorer__list{margin:0;padding:0;list-style:none}.web-row{align-items:flex-start;gap:var(--oo-spacing-sm);padding:6px var(--oo-spacing-md) 6px calc(var(--oo-spacing-md) - 2px);cursor:pointer;border-left:2px solid #0000;display:flex}.web-row:hover{background:color-mix(in srgb, var(--oo-color-accent) 6%, transparent)}.web-row[data-selected=true]{border-left-color:var(--oo-color-accent);background:color-mix(in srgb, var(--oo-color-accent) 12%, transparent)}.web-row:focus-visible{outline:1px solid var(--oo-color-accent);outline-offset:-1px}.web-row__dot{background:var(--oo-color-muted);opacity:.5;border-radius:50%;flex:none;width:8px;height:8px;margin-top:6px}.web-row__dot[data-dot=attention]{background:var(--oo-color-warning);opacity:1}.web-row__dot[data-dot=failed]{background:var(--oo-color-danger);opacity:1}.web-row__dot[data-dot=fresh]{background:var(--oo-color-accent);opacity:1}.web-row__dot[data-dot=ok]{background:var(--oo-color-success);opacity:1}.web-row__dot[data-dot=off]{border:1px solid var(--oo-color-muted);box-sizing:border-box;background:0 0}.web-row__dot[data-dot=working]{opacity:1;color:#8250df;background:0 0;border-radius:0;grid-template-columns:4px 4px;gap:1px;width:9px;height:9px;margin-top:5.5px;display:grid}[data-theme-mode=dark] .web-row__dot[data-dot=working]{color:#a371f7}.web-row__dot[data-dot=working]>i{background:currentColor;border-radius:50%;width:4px;height:4px;animation:.64s linear infinite web-walk}.web-row__dot[data-dot=working]>i:nth-child(2){animation-delay:-480ms}.web-row__dot[data-dot=working]>i:nth-child(3){animation-delay:-320ms}.web-row__dot[data-dot=working]>i:nth-child(4){animation-delay:-160ms}@keyframes web-walk{0%,to{opacity:.18}25%,75%{opacity:1}}@media (prefers-reduced-motion:reduce){.web-row__dot[data-dot=working]>i{animation:none}}.web-row__body{flex-direction:column;flex:1;min-width:0;display:flex}.web-row__head{align-items:baseline;gap:var(--oo-spacing-sm);display:flex}.web-row__title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--oo-font-size-sm);flex:1;overflow:hidden}.web-row__title[data-strong=true]{font-weight:600}.web-row__time{font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);flex:none}.web-row__action{color:var(--oo-color-accent);font-size:var(--oo-font-size-xs);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:0 4px;line-height:1.4}.web-row__action:hover,.web-row__action:focus-visible{background:color-mix(in srgb, var(--oo-color-accent) 18%, transparent)}.web-row__line{text-overflow:ellipsis;white-space:nowrap;font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);overflow:hidden}.web-runs{border-collapse:collapse;width:100%;font-size:var(--oo-font-size-sm)}.web-runs th{text-align:left;font-weight:600;font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);padding:4px var(--oo-spacing-sm);border-bottom:1px solid var(--oo-color-border)}.web-runs td{padding:6px var(--oo-spacing-sm);border-bottom:1px solid var(--oo-color-border);vertical-align:top}.web-runs__actions{white-space:nowrap;text-align:right}.web-automation__message{padding:var(--oo-spacing-sm) var(--oo-spacing-md);border-left:2px solid var(--oo-color-border)}.web-form{max-width:48rem}.web-form__field{flex-direction:column;flex:1;gap:4px;min-width:12rem;display:flex}.web-form__row{gap:var(--oo-spacing-md);flex-wrap:wrap;display:flex}.web-form__message{resize:vertical;font-family:inherit}@media (width<=600px){.web-runs:not(.web-table) th:nth-child(2),.web-runs:not(.web-table) td:nth-child(2),.web-runs:not(.web-table) th:nth-child(5),.web-runs:not(.web-table) td:nth-child(5){display:none}}.web-connection{align-items:center;gap:var(--oo-spacing-sm);padding:0 var(--oo-spacing-sm);font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);white-space:nowrap;display:inline-flex}.web-connection__dot{background:var(--oo-color-warning);border-radius:50%;width:.5rem;height:.5rem}.web-connection[data-status=connected] .web-connection__dot{background:var(--oo-color-success)}.web-connection[data-status=failed] .web-connection__dot,.web-connection[data-status=disconnected] .web-connection__dot{background:var(--oo-color-danger)}.web-connection__host{color:var(--oo-color-text)}.web-connection__uptime{font-variant-numeric:tabular-nums}.web-connection__retry{font:inherit;color:var(--oo-color-accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.web-lines{flex-direction:column;display:flex}.web-link{font:inherit;color:var(--oo-color-accent);cursor:pointer;text-align:left;overflow-wrap:anywhere;background:0 0;border:0;padding:0}.web-link:hover{background:0 0;text-decoration:underline}.web-md__image{color:var(--oo-color-muted);font-style:italic}.web-md :not(pre)>code{cursor:pointer}.web-md :not(pre)>code:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.web-file{flex-direction:column;height:100%;min-height:0;display:flex}.web-file__head{align-items:flex-start;gap:var(--oo-spacing-sm);padding:var(--oo-spacing-sm) var(--oo-spacing-lg);border-bottom:1px solid var(--oo-color-border);font-size:var(--oo-font-size-sm);flex:none;display:flex}.web-file__head code{overflow-wrap:anywhere;min-width:0}.web-file__head .web-copy{flex:none}.web-file__body{flex:1;min-height:0;overflow:auto}.web-file__doc{max-width:980px;padding:var(--oo-spacing-lg) var(--oo-spacing-xl,24px);margin:0 auto}.web-media{flex-direction:column;display:flex;overflow:hidden}.web-media__note{padding:var(--oo-spacing-lg)}.web-image{min-height:0;padding:var(--oo-spacing-md);touch-action:none;background:repeating-conic-gradient(var(--oo-color-border) 0% 25%, var(--oo-color-canvas) 0% 50%) 50% / 16px 16px;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.web-image[data-zoomed=true]{cursor:grab}.web-image[data-dragging=true]{cursor:grabbing}.web-image img{object-fit:contain;transform-origin:50%;-webkit-user-select:none;user-select:none;max-width:100%;max-height:100%;transition:transform 80ms ease-out}.web-image[data-dragging=true] img{transition:none}.web-image__view{flex-direction:column;flex:1;min-height:0;display:flex}.web-image__bar{padding:2px var(--oo-spacing-sm);border-bottom:1px solid var(--oo-color-border);justify-content:flex-end;align-items:center;gap:2px;display:flex}.web-image__step{--button-background-hover:var(--oo-color-hover);min-width:1.75em;color:var(--oo-color-text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px}.web-image__percent{font-variant-numeric:tabular-nums;min-width:3.5em}.web-video{background:#000;flex:1;width:100%;min-height:0}.web-audio{align-items:center;gap:var(--oo-spacing-md);max-width:720px;padding:var(--oo-spacing-lg);display:flex}.web-audio__play{background:var(--oo-color-accent);width:36px;height:36px;color:var(--oo-color-canvas);cursor:pointer;border:none;border-radius:50%;flex:none}.web-audio__track{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.web-audio__bars{cursor:pointer;align-items:center;gap:2px;height:36px;display:flex}.web-audio__bars>span{background:var(--oo-color-border);border-radius:999px;flex:1;min-width:2px;transition:background 75ms}.web-audio__bars>span[data-played=true]{background:var(--oo-color-accent)}.web-audio__time{color:var(--oo-color-muted);font-size:var(--oo-font-size-sm);justify-content:space-between;display:flex}.web-audio__rate{border:1px solid var(--oo-color-border);color:var(--oo-color-muted);font-size:var(--oo-font-size-sm);cursor:pointer;background:0 0;border-radius:4px;flex:none;padding:2px 6px}.web-code{border-collapse:collapse;font-family:var(--oo-font-mono,monospace);font-size:var(--oo-font-size-xs);min-width:100%;line-height:1.5}.web-code__number{padding:0 var(--oo-spacing-sm);text-align:right;color:var(--oo-color-muted);-webkit-user-select:none;user-select:none;vertical-align:top;white-space:nowrap;opacity:.7}.web-code__text{padding:0 var(--oo-spacing-md) 0 var(--oo-spacing-sm);white-space:pre}.web-code tr[data-hit=true]{background:color-mix(in srgb, var(--oo-color-warning) 18%, transparent)}.web-diff tr[data-kind=add]{background:color-mix(in srgb, var(--oo-color-success) 14%, transparent)}.web-diff tr[data-kind=del]{background:color-mix(in srgb, var(--oo-color-danger) 14%, transparent)}.web-diff__hunk td{padding:2px var(--oo-spacing-md);color:var(--oo-color-info);background:color-mix(in srgb, var(--oo-color-info) 8%, transparent)}.web-changeset-form{gap:var(--oo-spacing-sm);flex-direction:column;width:min(36rem,100vw - 4rem);display:flex}.web-changeset-form__actions{justify-content:flex-end;gap:var(--oo-spacing-sm);display:flex}.web-changes__bar{align-items:center;gap:var(--oo-spacing-sm);padding:0 var(--oo-spacing-sm) var(--oo-spacing-xs);border-bottom:1px solid var(--oo-color-border);margin-bottom:var(--oo-spacing-xs);flex-wrap:wrap;flex:none;display:flex}.web-changes__totals{text-align:right;white-space:nowrap;color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);flex:auto}.web-segments{border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);flex:none;display:inline-flex;overflow:hidden}.web-segments__item{color:var(--oo-color-muted);font:inherit;font-size:var(--oo-font-size-xs);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:2px 8px}.web-segments__item+.web-segments__item{border-left:1px solid var(--oo-color-border)}.web-segments__item:hover{color:var(--oo-color-text)}.web-segments__item[aria-pressed=true]{color:var(--oo-color-text);background:color-mix(in srgb, var(--oo-color-accent) 14%, transparent);font-weight:600}.web-changes__scope{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);min-width:0;color:var(--oo-color-text);font:inherit;font-size:var(--oo-font-size-xs);cursor:pointer;background:0 0;flex:0 auto;padding:2px 8px;font-weight:600;overflow:hidden}.web-changes__scope--only{cursor:default;border-color:#0000;padding-left:0}.web-changes__scope:not(.web-changes__scope--only):hover{background:color-mix(in srgb, var(--oo-color-accent) 14%, transparent)}.web-segments__item--icon{min-width:1.6rem;padding:2px 4px}.web-explorer__sep{background:var(--oo-color-border);align-self:stretch;width:1px;margin:3px 2px}.web-explorer__action[data-tone=blue]{color:rgb(var(--oo-rgb-blue))}.web-explorer__action[data-tone=yellow]{color:rgb(var(--oo-rgb-yellow))}.web-explorer__action[data-tone=red]{color:var(--oo-color-danger)}.web-chip--text input{color:inherit;font:inherit;background:0 0;border:0;outline:none;padding:0}.web-folder-pill{max-width:100%}.web-folder-pill input{field-sizing:content;text-overflow:ellipsis;min-width:160px;max-width:min(480px,60vw)}.web-folder-pill__mark{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.web-folder-pill__mark:hover,.web-folder-pill__mark[aria-expanded=true]{color:var(--oo-color-accent);background:0 0}.web-folder-menu{z-index:1100;background:var(--oo-popup-bg);width:min(420px,100vw - 32px);color:var(--oo-popup-fg);border:1px solid var(--oo-popup-border);font-size:var(--oo-font-size-sm);border-radius:8px;outline:none;flex-direction:column;padding:4px;display:flex;position:fixed;box-shadow:0 8px 24px #0000004d}.web-folder-menu__list{scrollbar-width:thin;flex:auto;min-height:0;overflow-y:auto}.web-folder-menu__heading{border-top:1px solid var(--oo-popup-border);font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);text-transform:uppercase;letter-spacing:.04em;margin:6px 8px 2px;padding-top:6px}.web-folder-menu__line{border-radius:var(--oo-radius-sm);cursor:pointer;align-items:center;gap:6px;padding:3px 4px 3px 8px;display:flex}.web-folder-menu__line[aria-selected=true]{background:var(--oo-color-hover)}.web-folder-menu__line[data-current=true]{color:var(--oo-color-accent);font-weight:600}.web-folder-menu__line[data-kind=up]{color:var(--oo-color-muted)}.web-folder-menu__mark{text-align:center;opacity:.8;flex:none;width:1.2em}.web-folder-menu__label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.web-folder-menu__count{background:var(--oo-color-hover);font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);border-radius:8px;flex:none;padding:0 6px}.web-folder-menu__walk{border-radius:var(--oo-radius-sm);color:var(--oo-color-muted);font:inherit;cursor:pointer;visibility:hidden;background:0 0;border:0;flex:none;padding:0 6px}.web-folder-menu__line[aria-selected=true] .web-folder-menu__walk{visibility:visible}.web-folder-menu__walk:hover{background:var(--oo-color-surface);color:var(--oo-color-text)}.web-folder-menu__note{color:var(--oo-color-muted);padding:3px 8px}.web-new{gap:var(--oo-spacing-md);width:100%;max-width:52rem;padding:12vh var(--oo-spacing-lg) var(--oo-spacing-lg);box-sizing:border-box;flex-direction:column;height:100%;margin:0 auto;display:flex;overflow-y:auto}.web-new__tray{align-items:center}.web-new__tray-fold{color:var(--oo-color-muted);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0 4px}.web-new__tray-fold:hover{color:var(--oo-color-text)}.web-new__tray-head{cursor:pointer;gap:4px}.web-new__tip{padding:var(--oo-spacing-xs) var(--oo-spacing-md);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-md);color:var(--oo-color-muted);font-size:var(--oo-font-size-sm);align-self:center;margin:0}.web-new__tip kbd{font:inherit;color:var(--oo-color-text)}.web-new__composer .web-composer__picker{top:calc(100% - var(--oo-spacing-md));margin:var(--oo-spacing-xs) 0 0;animation-name:web-slide-down;bottom:auto;left:0;right:0;box-shadow:0 6px 20px #00000038}.web-palette{z-index:1000;background:color-mix(in srgb, var(--oo-color-bg,#000) 40%, transparent);justify-content:center;align-items:flex-start;padding:12vh 16px 16px;display:flex;position:fixed;inset:0}.web-palette__box{background:var(--oo-color-surface);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-md);flex-direction:column;width:min(36rem,100%);max-height:60vh;display:flex;overflow:hidden;box-shadow:0 12px 32px #0000004d}.web-palette__input{width:auto;margin:var(--oo-spacing-sm)}.web-palette__box .oo-action-list{border:0;border-top:1px solid var(--oo-color-border);min-width:0;max-width:none;min-height:0;max-height:none;box-shadow:none;background:0 0;border-radius:0;overflow:auto}.web-details{gap:var(--oo-spacing-xs);padding:var(--oo-spacing-sm) var(--oo-spacing-md);font-size:var(--oo-font-size-sm);flex-direction:column;margin:0;display:flex;overflow:auto}.web-details>div{gap:var(--oo-spacing-sm);grid-template-columns:6rem 1fr;display:grid}.web-details dt{color:var(--oo-color-muted)}.web-details dd{overflow-wrap:anywhere;min-width:0;margin:0}.web-details__list{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.web-details__empty{padding:var(--oo-spacing-sm) var(--oo-spacing-md)}.web-explorer__group button{align-items:center;gap:var(--oo-spacing-xs);width:100%;padding:var(--oo-spacing-sm) var(--oo-spacing-sm) 2px;font:inherit;font-size:var(--oo-font-size-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--oo-color-muted);cursor:pointer;text-align:left;background:0 0;border:0;font-weight:600;display:flex}.web-explorer__group button:hover{color:var(--oo-color-accent)}.web-explorer__fold{flex:none;width:1em}.web-explorer__group-label{text-overflow:ellipsis;white-space:nowrap;text-transform:none;letter-spacing:0;flex:1;min-width:0;overflow:hidden}.web-explorer__count{flex:none;font-weight:400}.web-ask{gap:var(--oo-spacing-sm);padding:var(--oo-spacing-md);border:1px solid color-mix(in srgb, var(--oo-color-warning) 45%, var(--oo-color-border));border-radius:var(--oo-radius-md);background:var(--oo-color-surface);border-left-width:3px;flex-direction:column;display:flex}.web-ask[data-done=true]{border-color:var(--oo-color-border);border-left-color:var(--oo-color-muted)}.web-ask__head{align-items:center;gap:var(--oo-spacing-sm);flex-wrap:wrap;display:flex}.web-ask__title{font-size:var(--oo-font-size-sm);color:var(--oo-color-muted);font-weight:600}.web-ask__steps{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.web-ask__step{border:1px solid var(--oo-color-muted);cursor:pointer;background:0 0;border-radius:50%;width:8px;height:8px;padding:0}.web-ask__step[data-done=true]{background:var(--oo-color-muted)}.web-ask__step[data-here=true]{border-color:var(--oo-color-accent);background:var(--oo-color-accent)}.web-ask__count{font-size:var(--oo-font-size-xs);color:var(--oo-color-muted)}.web-ask__question{gap:var(--oo-spacing-xs);flex-direction:column;display:flex}.web-ask__chip{padding:0 var(--oo-spacing-sm);font-size:var(--oo-font-size-xs);color:var(--oo-color-accent);border:1px solid color-mix(in srgb, var(--oo-color-accent) 45%, transparent);border-radius:999px;align-self:flex-start}.web-ask__text-line{font-weight:600}.web-ask__hint{font-size:var(--oo-font-size-xs);color:var(--oo-color-muted)}.web-ask__options{gap:var(--oo-spacing-xs);margin-top:var(--oo-spacing-xs);flex-direction:column;display:flex}.web-ask__option{align-items:flex-start;gap:var(--oo-spacing-sm);width:100%;padding:var(--oo-spacing-sm);font:inherit;color:inherit;text-align:left;border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);cursor:pointer;box-sizing:border-box;background:0 0;display:flex}.web-ask__option:hover{border-color:color-mix(in srgb, var(--oo-color-accent) 60%, var(--oo-color-border))}.web-ask__option[data-on=true]{border-color:var(--oo-color-accent);background:color-mix(in srgb, var(--oo-color-accent) 10%, transparent)}.web-ask__other{cursor:default;align-items:center}.web-ask__other .web-field{flex:1;min-width:0}.web-ask__mark{border:1.5px solid var(--oo-color-muted);cursor:pointer;box-sizing:border-box;background:0 0;border-radius:50%;flex:none;width:14px;height:14px;margin-top:3px;padding:0}.web-ask__other .web-ask__mark{margin-top:0}.web-ask__mark[data-many=true]{border-radius:3px}[data-on=true]>.web-ask__mark{border-color:var(--oo-color-accent);background:var(--oo-color-accent);box-shadow:inset 0 0 0 2px var(--oo-color-surface)}.web-ask__option-body{flex-direction:column;gap:2px;min-width:0;display:flex}.web-ask__option-label{align-items:baseline;gap:var(--oo-spacing-xs);flex-wrap:wrap;font-weight:500;display:flex}.web-ask__key{font-family:var(--oo-font-mono,monospace);font-size:var(--oo-font-size-xs);color:var(--oo-color-muted)}.web-ask__tag{font-size:var(--oo-font-size-xs);color:var(--oo-color-success)}.web-ask__option-hint{font-size:var(--oo-font-size-sm);color:var(--oo-color-muted)}.web-ask__text{resize:vertical}.web-ask__actions{align-items:center;gap:var(--oo-spacing-sm);display:flex}.web-ask__spacer{flex:1}.web-ask__summary{gap:var(--oo-spacing-xs);font-size:var(--oo-font-size-sm);flex-direction:column;margin:0;display:flex}.web-ask__summary>div{gap:0 var(--oo-spacing-sm);flex-wrap:wrap;display:flex}.web-ask__summary dt{color:var(--oo-color-muted)}.web-ask__summary dd{margin:0;font-weight:500}.web-ask:focus{outline:none}.web-ask__icon{width:16px;height:16px;margin-right:var(--oo-spacing-xs);color:var(--oo-color-surface);background:var(--oo-color-warning);vertical-align:-2px;border-radius:50%;place-items:center;font-size:11px;font-weight:700;display:inline-grid}.web-ask[data-done=true] .web-ask__icon{background:var(--oo-color-muted)}.web-result__ask{align-items:center;gap:var(--oo-spacing-sm);font-size:var(--oo-font-size-sm);flex-wrap:wrap;display:inline-flex}.web-method[data-effect=remove]{color:var(--oo-color-danger)}.web-toasts{z-index:900;gap:var(--oo-spacing-sm);flex-direction:column;width:340px;max-width:calc(100vw - 32px);max-height:calc(100vh - 96px);display:flex;position:fixed;bottom:40px;right:16px;overflow-y:auto}.web-toast{gap:var(--oo-spacing-xs);padding:var(--oo-spacing-sm) var(--oo-spacing-md);font-size:var(--oo-font-size-sm);background:var(--oo-color-surface);border:1px solid var(--oo-color-border);border-left:3px solid var(--web-toast-tone,var(--oo-color-info));border-radius:var(--oo-radius-md);flex-direction:column;animation:.18s cubic-bezier(.22,1,.36,1) both web-toast-slide-up;display:flex;box-shadow:0 8px 24px #00000047}.web-toast[data-tone=success]{--web-toast-tone:var(--oo-color-success)}.web-toast[data-tone=warning]{--web-toast-tone:var(--oo-color-warning)}.web-toast[data-tone=danger]{--web-toast-tone:var(--oo-color-danger)}.web-toast[data-animation=pop]{animation:.22s cubic-bezier(.34,1.56,.64,1) both web-toast-pop}.web-toast__head{align-items:center;gap:var(--oo-spacing-sm);display:flex}.web-toast__icon{color:var(--web-toast-tone,var(--oo-color-info))}.web-toast__title{text-overflow:ellipsis;flex:1;min-width:0;font-weight:600;overflow:hidden}.web-toast__count{color:var(--oo-color-muted);font-variant-numeric:tabular-nums}.web-toast__close,.web-toast__link,.web-toast__more{font:inherit;color:var(--oo-color-muted);cursor:pointer;background:0 0;border:0;padding:0}.web-toast__link,.web-toast__more{font-size:var(--oo-font-size-xs);align-self:flex-start;text-decoration:underline}.web-toast__more{align-self:center}.web-toast__body{color:var(--oo-color-muted);overflow-wrap:anywhere;margin:0}.web-toast__detail{max-height:160px;padding:var(--oo-spacing-sm);font-size:var(--oo-font-size-xs);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--oo-color-canvas);border-radius:var(--oo-radius-sm);margin:0;overflow:auto}.web-toast__actions{gap:var(--oo-spacing-xs);flex-wrap:wrap;display:flex}@keyframes web-toast-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes web-toast-pop{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.web-toast{animation:none}}.web-confirm{z-index:1100;background:color-mix(in srgb, var(--oo-color-bg,#000) 45%, transparent);place-items:center;padding:16px;display:grid;position:fixed;inset:0}.web-confirm__card{gap:var(--oo-spacing-md);width:min(380px,100%);padding:var(--oo-spacing-lg);background:var(--oo-color-surface);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-md);outline:none;flex-direction:column;display:flex;box-shadow:0 16px 48px #0006}.web-confirm__title{margin:0;font-size:14px;font-weight:600}.web-confirm__body{font-size:var(--oo-font-size-sm);color:var(--oo-color-muted);white-space:pre-wrap;margin:0}.web-confirm__buttons{justify-content:flex-end;gap:var(--oo-spacing-sm);display:flex}.web-pick{z-index:1100;justify-content:center;align-items:flex-start;padding:48px 16px 16px;display:flex;position:fixed;inset:0}.web-pick__card{background:var(--oo-popup-bg);width:min(600px,100%);max-height:min(480px,100vh - 64px);color:var(--oo-popup-fg);border:1px solid var(--oo-popup-border);border-radius:8px;flex-direction:column;padding:6px;display:flex;box-shadow:0 8px 24px #0000004d}.web-pick__title{font-size:var(--oo-font-size-sm);text-align:center;color:var(--oo-color-muted);margin:0 0 6px;font-weight:600}.web-pick__row{gap:6px;display:flex}.web-pick__input{min-width:0;font:inherit;font-size:var(--oo-font-size-sm);color:inherit;background:var(--oo-color-canvas);border:1px solid var(--oo-color-accent);border-radius:var(--oo-radius-sm);outline:none;flex:1;padding:4px 8px}.web-pick__add{border:1px solid var(--oo-color-primary);border-radius:var(--oo-radius-sm);color:var(--oo-color-primary);font:inherit;font-size:var(--oo-font-size-sm);background:0 0;padding:0 12px}.web-pick__add:hover{background:rgb(from var(--oo-color-primary) r g b / .88);color:var(--oo-color-surface)}.web-pick__message{font-size:var(--oo-font-size-sm);color:var(--oo-color-warning);margin:6px 2px 0}.web-pick__list{scrollbar-width:thin;flex:1;min-height:0;margin:6px 0 0;padding:0;list-style:none;overflow-y:auto}.web-pick__item{border-radius:var(--oo-radius-sm);font-size:var(--oo-font-size-sm);cursor:pointer;padding:3px 8px}.web-pick__item[aria-selected=true]{background:var(--oo-color-hover)}.web-pick__note{font-size:var(--oo-font-size-sm);color:var(--oo-color-muted);padding:3px 8px}.web-terminal{background:var(--oo-color-canvas);flex-direction:column;height:100%;min-height:0;display:flex}.web-terminal__note{align-items:center;gap:var(--oo-spacing-sm);padding:var(--oo-spacing-xs) var(--oo-spacing-sm);font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);border-bottom:1px solid var(--oo-color-border);display:flex}.web-terminal__screen{min-height:0;padding:var(--oo-spacing-xs) 0 0 var(--oo-spacing-sm);flex:auto;overflow:hidden}.web-log{flex-direction:column;height:100%;min-height:0;display:flex}.web-log__bar{align-items:center;gap:var(--oo-spacing-xs);padding:var(--oo-spacing-xs) var(--oo-spacing-sm);border-bottom:1px solid var(--oo-color-border);flex-wrap:wrap;display:flex}.web-log__chip{height:24px;font:inherit;font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);border-radius:var(--oo-radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.web-log__chip:hover:not(:disabled){background:var(--oo-color-panel)}.web-log__chip[data-on]{color:var(--oo-color-text);background:var(--oo-color-selected);border-color:var(--oo-color-border)}.web-log__chip:disabled{cursor:default;opacity:.6}.web-log__dot{background:currentColor;border-radius:50%;width:7px;height:7px}.web-log__rule{width:1px;height:16px;margin:0 var(--oo-spacing-xs);background:var(--oo-color-border)}.web-log__search{min-width:120px;height:24px;font:inherit;font-size:var(--oo-font-size-xs);color:var(--oo-color-text);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-sm);background:0 0;flex:140px;padding:0 8px}.web-log__icon{font:inherit;font-size:var(--oo-font-size-xs);color:var(--oo-color-muted);cursor:pointer;background:0 0;border:0;padding:2px 6px}.web-log__icon:hover{color:var(--oo-color-text)}.web-log__list{min-height:0;font-family:var(--oo-font-mono);flex:auto;font-size:11.5px;overflow:auto}.web-log__row[data-open]{background:var(--oo-color-selected)}.web-log__line{min-height:22px;padding:0 var(--oo-spacing-sm);cursor:pointer;align-items:center;gap:10px;display:flex}.web-log__row:not([data-open]) .web-log__line:hover{background:var(--oo-color-panel)}.web-log__caret{width:10px;color:var(--oo-color-muted);font-size:10px}.web-log__time{color:var(--oo-color-muted)}.web-log__level{width:44px;color:var(--oo-color-muted)}.web-log__row[data-level=debug] .web-log__level{opacity:.6}.web-log__row[data-level=warn] .web-log__level{color:var(--oo-color-warning)}.web-log__row[data-level=error] .web-log__level,.web-log__row[data-level=error] .web-log__text{color:var(--oo-color-danger)}.web-log__scope{width:84px;color:var(--oo-color-muted);white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.web-log__scope>span{color:var(--oo-color-muted)}.web-log__scope:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.web-log__scope[data-scope=connection],.web-log__dot[data-scope=connection]{color:var(--oo-color-accent)}.web-log__scope[data-scope=session],.web-log__dot[data-scope=session]{color:var(--oo-color-info)}.web-log__scope[data-scope=terminal],.web-log__dot[data-scope=terminal]{color:var(--oo-color-success)}.web-log__text{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--oo-color-text);flex:auto;overflow:hidden}.web-log__row[data-open] .web-log__text{white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text}.web-log__link{color:var(--oo-color-accent);cursor:pointer;text-decoration:underline}.web-log__detail{padding:var(--oo-spacing-xs) var(--oo-spacing-sm) var(--oo-spacing-sm) 30px;white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text;max-height:320px;margin:0;overflow:auto}.oo-bar__slot .oo-button-bar.web-layout-toggle,.oo-bar__slot .oo-button-bar.web-layout-toggle[data-active]{color:var(--oo-color-muted);background:0 0;font-size:15px;line-height:1}.oo-bar__slot .oo-button-bar.web-layout-toggle[data-active=true],.oo-bar__slot .oo-button-bar.web-layout-toggle:hover{color:var(--oo-color-text)}.oo-bar__slot .oo-button-bar.web-layout-toggle:hover{background:var(--oo-color-hover)}.web-composer__box[data-drop=attach]{background:#6cbcca14;border-color:#6cbcca}.web-composer__box[data-drop=mention]{background:#f9731614;border-color:#f97316}.web-folders__tag{font-size:var(--oo-font-size-xs);color:var(--oo-color-muted)}.web-change{align-items:baseline;gap:var(--oo-spacing-sm);min-width:0;display:flex}.web-change__name{text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:100%;overflow:hidden}.web-change__dir{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);flex:auto;overflow:hidden}.web-change[data-reviewed=true] .web-change__name{color:var(--oo-color-muted)}.web-change[data-deleted=true] .web-change__name{text-decoration:line-through}.web-change__group{font-size:var(--oo-font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--oo-color-muted);font-weight:600}.web-change__end{align-items:center;gap:var(--oo-spacing-sm);display:inline-flex}.web-change__counts{white-space:nowrap}.web-change__letter{text-align:center;min-width:1ch;font-weight:600}.web-change__letter[data-letter=M]{color:var(--oo-color-warning)}.web-change__letter[data-letter=A],.web-change__letter[data-letter=U]{color:var(--oo-color-success)}.web-change__letter[data-letter=D]{color:var(--oo-color-danger)}.web-change__actions{gap:2px;display:none}.web-change__action{color:inherit;font:inherit;border-radius:var(--oo-radius-sm);cursor:pointer;background:0 0;border:0;min-width:20px;height:20px;padding:0 3px}.web-change__action:hover{background:var(--oo-color-hover,var(--oo-color-selected))}.web-change__action[aria-pressed=true]{color:var(--oo-color-success)}.web-changes .oo-tree__row:hover .web-change__actions,.web-changes .oo-tree__row:focus-within .web-change__actions,.web-changes .oo-tree__row[data-selected=true] .web-change__actions{display:inline-flex}.web-changes .oo-tree__row:hover .web-change__counts,.web-changes .oo-tree__row:hover .web-change__letter,.web-changes .oo-tree__row:focus-within .web-change__counts,.web-changes .oo-tree__row:focus-within .web-change__letter,.web-changes .oo-tree__row[data-selected=true] .web-change__counts,.web-changes .oo-tree__row[data-selected=true] .web-change__letter{display:none}.web-file__actions{align-items:center;gap:var(--oo-spacing-sm);flex-wrap:wrap;margin-left:auto;display:inline-flex}.web-file__viewed{cursor:pointer;align-items:center;gap:4px;display:inline-flex}.web-copy{--button-background-hover:none;color:var(--oo-color-muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 2px;line-height:1}.web-copy:hover,.web-copy[data-copied=true]{color:var(--oo-color-text)}.oo-tree.web-customs{flex:none;height:auto;min-height:auto}.web-customs .oo-tree__rows{overflow:visible}.web-custom{align-items:baseline;gap:var(--oo-spacing-sm);min-width:0;display:flex}.web-custom[data-enabled=false]{opacity:.55}.web-custom__name{text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:100%;overflow:hidden}.web-custom__line{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);flex:auto;overflow:hidden}.web-custom__flag{white-space:nowrap;color:var(--oo-color-muted);font-size:var(--oo-font-size-xs);flex:none}.web-custom__copies{gap:var(--oo-spacing-xs);flex:none;margin-left:auto;display:none}.web-customs .oo-tree__row:hover .web-custom__copies,.web-customs .oo-tree__row:focus-within .web-custom__copies{display:inline-flex}.web-custom-detail__copies{justify-content:flex-end;gap:var(--oo-spacing-sm);display:flex}.web-custom-detail{width:min(72ch, calc(80vw - 2 * var(--oo-spacing-md)));max-width:100%}.web-custom-detail__flags{color:var(--oo-color-muted);font-size:var(--oo-font-size-xs)}.web-custom__state{white-space:nowrap;font-size:var(--oo-font-size-xs)}:root{--ahpw-code-keyword:#cf222e;--ahpw-code-string:#0a3069;--ahpw-code-number:#0550ae;--ahpw-code-comment:#6e7781;--ahpw-code-function:#8250df;--ahpw-code-type:#953800;--ahpw-code-property:#0550ae;--ahpw-code-tag:#116329;--ahpw-code-attribute:#6639ba;--ahpw-code-meta:#57606a}[data-theme-mode=dark]{--ahpw-code-keyword:#ff7b72;--ahpw-code-string:#a5d6ff;--ahpw-code-number:#79c0ff;--ahpw-code-comment:#8b949e;--ahpw-code-function:#d2a8ff;--ahpw-code-type:#ffa657;--ahpw-code-property:#79c0ff;--ahpw-code-tag:#7ee787;--ahpw-code-attribute:#d2a8ff;--ahpw-code-meta:#8b949e}.web-file__body--editor{overflow:hidden}.web-editor{height:100%}.web-file__dirty{color:var(--oo-color-warning)}.web-file__dirty:before{content:"● "}.web-file>.web-note{padding:var(--oo-spacing-sm) var(--oo-spacing-lg)}.web-file>.oo-alert{margin:var(--oo-spacing-sm) var(--oo-spacing-lg);flex:none}.web-open-editors__close{visibility:hidden;color:var(--oo-color-muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 4px;line-height:1}.oo-tree__row:hover .web-open-editors__close,.oo-tree__row[aria-selected=true] .web-open-editors__close{visibility:visible}.web-open-editors__close:hover{color:var(--oo-color-text)}html.is-framed,html.is-framed body{background:0 0}html.is-framed #root{border:1px solid var(--oo-color-border);background:var(--oo-color-canvas);border-radius:10px;overflow:hidden}html.is-framed.is-maximized #root{border:0;border-radius:0}.oo-bar__item:has(>.oo-mount>.embed-controls){align-self:stretch;margin-inline-end:calc(-1 * var(--oo-spacing-sm))}.embed-controls{height:100%;display:flex}.embed-control{width:46px;height:100%;color:var(--oo-color-text);cursor:default;background:0 0;border:0;place-items:center;padding:0;display:grid}.embed-control:hover{background:var(--oo-color-hover)}.embed-control--close:hover{color:#fff;background:#e81123}.embed-host{position:relative}.embed-host__button{color:var(--oo-color-text);font:inherit;cursor:default;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:2px 8px;display:flex}.embed-host__button:hover,.embed-host__button[aria-expanded=true]{background:var(--oo-color-hover)}.embed-host__menu{z-index:1000;border:1px solid var(--oo-popup-border);background:var(--oo-popup-bg);min-width:240px;color:var(--oo-popup-fg);border-radius:8px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 24px #0000004d}.embed-host__item{color:inherit;font:inherit;text-align:left;cursor:default;background:0 0;border:0;border-radius:6px;grid-template-columns:10px auto 1fr;align-items:center;gap:8px;padding:6px 8px;display:grid}.embed-host__item:hover{background:var(--oo-color-hover)}.embed-host__item[aria-current=true] .embed-host__name{font-weight:600}.embed-host__line{background:var(--oo-popup-border);height:1px;margin:4px 6px}.embed-host__action{color:var(--oo-color-muted)}.embed-host__action:hover{color:var(--oo-color-text)}.embed-host__action>span:first-child{justify-self:center}.embed-host__url{color:var(--oo-color-muted);justify-self:end}.embed-dot{border:2px solid;border-radius:50%;flex:none;width:10px;height:10px}.embed-dot--connected{color:var(--oo-color-success);background:currentColor}.embed-dot--connecting{color:var(--oo-color-warning);background:linear-gradient(90deg,currentColor 50%,#0000 50%)}.embed-dot--down{color:var(--oo-color-muted)}.porta-limen{background:var(--oo-color-canvas);width:100%;height:100%;min-height:0;color:inherit;grid-template:"top top top""left center right"1fr"bottom bottom bottom"/auto 1fr auto;display:grid}.porta-limen__top{grid-area:top}.porta-limen__bottom{grid-area:bottom}.porta-limen__left{grid-area:left}.porta-limen__right{grid-area:right}.porta-limen__center{padding:var(--oo-spacing-lg);grid-area:center;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.porta-limen__panel{gap:var(--oo-spacing-md);width:100%;max-width:380px;padding:var(--oo-spacing-lg);border:1px solid var(--oo-color-border);border-radius:var(--oo-radius-md);background:var(--oo-color-surface);box-shadow:var(--oo-shadow-md);flex-direction:column;display:flex}.porta-limen__title{font-size:var(--oo-font-size-lg);font-weight:600}.porta-limen__subtitle{color:var(--oo-color-muted);font-size:var(--oo-font-size-sm)}.ahpw-mark__art,.ahpw-mark__echo{transform-box:view-box}@keyframes ahpw-mark-set{0%{transform:scaleY(0)}60%{transform:scaleY(1.06)}to{transform:scaleY(1)}}.ahpw-mark--set .ahpw-mark__art{transform-origin:32px 57px;animation:.75s cubic-bezier(.2,.9,.25,1.06) both ahpw-mark-set}@keyframes ahpw-mark-echo{0%{opacity:.6;transform:scale(1)}75%{opacity:0}to{opacity:0;transform:scale(1.95)}}.ahpw-mark__echo{transform-origin:32px 32px;opacity:0;animation:1.5s cubic-bezier(.25,.6,.3,1) infinite ahpw-mark-echo}.ahpw-mark__echo--second{animation-delay:.5s}.ahpw-mark__echo--third{animation-delay:1s}@media (prefers-reduced-motion:reduce){.ahpw-mark--set .ahpw-mark__art,.ahpw-mark__echo{animation:none}}