@openchambery/web 1.18.2-beta.2 → 1.18.2-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AgentAvatar-B2kZjgaf.js → AgentAvatar-B4fj9PIe.js} +1 -1
- package/dist/assets/{AssistantView-DvoyOGkx.js → AssistantView-C00aiEHK.js} +1 -1
- package/dist/assets/{ChatContainer-D6yfuigV.js → ChatContainer-BDFeDKu-.js} +39 -39
- package/dist/assets/{DiagramView-MGGo9iME.js → DiagramView-CUfSFI3e.js} +1 -1
- package/dist/assets/{FadeInOnReveal-aeWlaqVB.js → FadeInOnReveal-CKKU6fKI.js} +1 -1
- package/dist/assets/{Icon-AXqa-fYB.js → Icon-DiIuWOuC.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-jVOkZkyX.js → MarkdownRendererImpl-Cen6E9Lj.js} +2 -2
- package/dist/assets/{MobileDetailNavigation-Q2IzHqGA.js → MobileDetailNavigation-DILi0tN7.js} +1 -1
- package/dist/assets/{MobileShareBridge-apXM34Lb.js → MobileShareBridge-PZMRiieI.js} +1 -1
- package/dist/assets/MobileSurface-BLYcR0tO.js +2 -0
- package/dist/assets/{MultiRunWindow-B-l_O-bd.js → MultiRunWindow-D_2mWZyv.js} +1 -1
- package/dist/assets/{OnboardingScreen-CUsgwt4y.js → OnboardingScreen-CYeRZznl.js} +1 -1
- package/dist/assets/{OverlayScrollbar-D6NySAxi.js → OverlayScrollbar-BgMLtMIq.js} +1 -1
- package/dist/assets/SettingsView-CbDBfQp1.js +25 -0
- package/dist/assets/{SettingsWindow-DfVgTQ4I.js → SettingsWindow-Br7XLcSd.js} +1 -1
- package/dist/assets/{TerminalView-DNyjfkvT.js → TerminalView-CM5jRKlj.js} +1 -1
- package/dist/assets/{ToolOutputDialog-DLG1iThm.js → ToolOutputDialog-D3U6aTZ4.js} +1 -1
- package/dist/assets/appThemeRegistry-CDxBJNNB.js +2 -0
- package/dist/assets/assistant-guide-hero-BeUHQcxE.jpg +0 -0
- package/dist/assets/{button-CDvMVaiO.js → button-DaAoVF4X.js} +1 -1
- package/dist/assets/{clipboard-BW7nk_Cx.js → clipboard-BnElHSnO.js} +1 -1
- package/dist/assets/{collapsible-C2aamDvD.js → collapsible-BmuQu0dq.js} +1 -1
- package/dist/assets/{context-menu-BaxmodD8.js → context-menu-DBOMervd.js} +1 -1
- package/dist/assets/{desktopHosts-CBoBpJ1Z.js → desktopHosts-ZK_vkdzL.js} +1 -1
- package/dist/assets/{desktopRelayRestore-l2R9muux.js → desktopRelayRestore-CewM6-g5.js} +1 -1
- package/dist/assets/{diagram-CEon0BQs.js → diagram-DAE4CZy2.js} +1 -1
- package/dist/assets/{dialog-DjYfj1Sn.js → dialog-COrLBm9O.js} +1 -1
- package/dist/assets/{es-5Lhudh0n.js → es-DIVYdoxi.js} +1 -1
- package/dist/assets/{fileQueries-CE_DaZWQ.js → fileQueries-CmWYnRVz.js} +1 -1
- package/dist/assets/{fr-Q_UhFmKT.js → fr-CNTlVypq.js} +2 -2
- package/dist/assets/{gitApi-BYxg_qGJ.js → gitApi-BQT3QXD2.js} +1 -1
- package/dist/assets/gitApiHttp-BxGAFLTf.js +2 -0
- package/dist/assets/{input-k9DGGyZ6.js → input-XiL2-2gG.js} +1 -1
- package/dist/assets/insertionBoundaries-9a0RuIDc.js +1 -0
- package/dist/assets/{ja-CzMPz7bT.js → ja-C_eW5ZM8.js} +1 -1
- package/dist/assets/{ko-B-EslUsR.js → ko-CE3cOv7v.js} +1 -1
- package/dist/assets/{main-LDphyc-v.js → main-BGfX81Y9.js} +20 -20
- package/dist/assets/{main-CO6z5yRB.js → main-CEqSDnE2.js} +2 -2
- package/dist/assets/{markdown-worker-DkeWiER6.js → markdown-worker-BDyY0vt6.js} +1 -1
- package/dist/assets/{markdownTheme-DNT93i5L.js → markdownTheme-D-aLQZaM.js} +1 -1
- package/dist/assets/{miniChat-BZQwTZpx.js → miniChat-CKucSAhg.js} +2 -2
- package/dist/assets/mobile-C4bTWKry.js +2 -0
- package/dist/assets/{multirun-ZlwlkIy5.js → multirun-DeNtSkgb.js} +1 -1
- package/dist/assets/{persistence-DPNMIbF5.js → persistence-D1lIuyqO.js} +1 -1
- package/dist/assets/{pl-Dnea6Ppc.js → pl-BZKZOE99.js} +1 -1
- package/dist/assets/projectMeta-BunN9pH5.js +3 -0
- package/dist/assets/{pt-BR-Ca6QTem7.js → pt-BR-DHDgp8S3.js} +1 -1
- package/dist/assets/{radio-CJuhbQ5a.js → radio-Bziafaje.js} +1 -1
- package/dist/assets/renderElectronMiniChatApp-D8-FDgWE.js +2 -0
- package/dist/assets/renderMobileApp-CdU0aJ-e.js +23 -0
- package/dist/assets/{runtimeConfig-BtWi74Pm.js → runtimeConfig-BXCt7ZsQ.js} +1 -1
- package/dist/assets/runtimeEndpointReset-CK1GhIsm.js +145 -0
- package/dist/assets/{sortable-tabs-strip-D8JHUI0z.js → sortable-tabs-strip-pWlBorwQ.js} +1 -1
- package/dist/assets/src-8kQFmtjw.css +2 -0
- package/dist/assets/{store-wa1ersRf.js → store-CUWqzRt7.js} +2 -2
- package/dist/assets/{terminalApi-tB3qLcfa.js → terminalApi-DpiAJlil.js} +1 -1
- package/dist/assets/{tooltip-DMNR5rN0.js → tooltip-BLugzWq-.js} +1 -1
- package/dist/assets/{uk-xGc9Pzge.js → uk-CfQK6cz1.js} +1 -1
- package/dist/assets/{url-7MqoLs9X.js → url-DMs_PgIC.js} +1 -1
- package/dist/assets/useAppFontEffects-IEUQDvE8.js +7 -0
- package/dist/assets/useDesktopWindowControlsLayout-MlqJX89k.js +1 -0
- package/dist/assets/{useEffectiveDirectory-aUC3zzl_.js → useEffectiveDirectory-GbhkdO6m.js} +1 -1
- package/dist/assets/{useFontPreferences-CIurCeNv.js → useFontPreferences-92Qg-98H.js} +1 -1
- package/dist/assets/useMobileNavigationStore-DQHF_ETu.js +476 -0
- package/dist/assets/useSessionAutoCleanup-BuU_S_Sh.js +1 -0
- package/dist/assets/{useWorkerHighlightedLines-CiYQjBe6.js → useWorkerHighlightedLines-Ca6OgNHF.js} +1 -1
- package/dist/assets/{utils-Co19EJEL.js → utils-BxJEIWv5.js} +1 -1
- package/dist/assets/{zh-CN-sL4ktGB3.js → zh-CN-DvY2fKWp.js} +1 -1
- package/dist/assets/{zh-TW-Cfxps4gq.js → zh-TW-eWe0lm3-.js} +1 -1
- package/dist/index.html +8 -8
- package/dist/mini-chat.html +8 -8
- package/dist/mobile.html +8 -8
- package/package.json +1 -1
- package/server/index.d.ts +6 -0
- package/server/index.js +13 -0
- package/server/lib/config-sync/DOCUMENTATION.md +70 -0
- package/server/lib/config-sync/config-sync.test.js +197 -0
- package/server/lib/config-sync/constants.js +39 -0
- package/server/lib/config-sync/contract.js +130 -0
- package/server/lib/config-sync/credential-auth.js +39 -0
- package/server/lib/config-sync/engine.js +108 -0
- package/server/lib/config-sync/index.js +67 -0
- package/server/lib/config-sync/local-backup.js +171 -0
- package/server/lib/config-sync/plan.js +318 -0
- package/server/lib/config-sync/receiver.js +330 -0
- package/server/lib/config-sync/routes.js +141 -0
- package/server/lib/config-sync/routes.test.js +154 -0
- package/server/lib/config-sync/scripts.js +264 -0
- package/server/lib/config-sync/selections.js +112 -0
- package/server/lib/config-sync/tar.js +35 -0
- package/server/lib/config-sync/target-id.js +24 -0
- package/server/lib/event-stream/DOCUMENTATION.md +2 -2
- package/server/lib/event-stream/diff-summary.js +39 -11
- package/server/lib/event-stream/diff-summary.test.js +73 -6
- package/server/lib/event-stream/protocol.test.js +70 -7
- package/server/lib/notifications/DOCUMENTATION.md +2 -2
- package/server/lib/notifications/runtime.js +68 -27
- package/server/lib/notifications/runtime.test.js +176 -0
- package/server/lib/opencode/DOCUMENTATION.md +4 -1
- package/server/lib/opencode/bootstrap-runtime.js +2 -0
- package/server/lib/opencode/core-routes.js +1 -0
- package/server/lib/opencode/feature-routes-runtime.test.js +10 -1
- package/server/lib/opencode/openchamber-routes.js +7 -0
- package/server/lib/opencode/settings-runtime.js +82 -51
- package/server/lib/opencode/settings-runtime.test.js +42 -0
- package/server/lib/relay/DOCUMENTATION.md +1 -1
- package/server/lib/session-index/DOCUMENTATION.md +12 -6
- package/server/lib/session-index/routes.js +34 -0
- package/server/lib/session-index/routes.test.js +76 -0
- package/server/lib/session-index/service.js +53 -4
- package/server/lib/session-index/service.test.js +72 -2
- package/server/lib/session-title/DOCUMENTATION.md +19 -14
- package/server/lib/session-title/runtime.js +8 -8
- package/server/lib/session-title/runtime.test.js +231 -0
- package/server/lib/session-turn-pages/DOCUMENTATION.md +26 -6
- package/server/lib/session-turn-pages/changes.service.js +156 -0
- package/server/lib/session-turn-pages/changes.service.test.js +188 -0
- package/server/lib/session-turn-pages/reconcile.routes.test.js +52 -0
- package/server/lib/session-turn-pages/reconcile.service.js +3 -1
- package/server/lib/session-turn-pages/reconcile.service.test.js +44 -0
- package/server/lib/session-turn-pages/routes.js +273 -12
- package/server/lib/session-turn-pages/routes.test.js +387 -0
- package/server/lib/session-turn-pages/service.js +31 -7
- package/server/lib/session-turn-pages/service.test.js +40 -0
- package/server/lib/small-model/DOCUMENTATION.md +93 -38
- package/server/lib/small-model/catalog.js +10 -2
- package/server/lib/small-model/catalog.test.js +3 -1
- package/server/lib/small-model/index.js +52 -28
- package/server/lib/small-model/opencode-session.js +339 -0
- package/server/lib/small-model/opencode-session.test.js +177 -0
- package/server/lib/small-model/resolve.js +116 -5
- package/server/lib/small-model/resolve.test.js +76 -10
- package/server/lib/small-model/summary-settings.test.js +60 -3
- package/dist/assets/MobileSurface-htGkf7Ua.js +0 -2
- package/dist/assets/SettingsView-DxMpVLlt.js +0 -25
- package/dist/assets/appThemeRegistry-CgfOR_0L.js +0 -2
- package/dist/assets/gitApiHttp-D8j1qRH4.js +0 -2
- package/dist/assets/insertionBoundaries-DzXMTleb.js +0 -1
- package/dist/assets/mobile-BktO3_4R.js +0 -2
- package/dist/assets/projectMeta-v-LP2mzz.js +0 -3
- package/dist/assets/renderElectronMiniChatApp-Db8uO-6q.js +0 -2
- package/dist/assets/renderMobileApp-BCV81Ryl.js +0 -23
- package/dist/assets/runtimeEndpointReset-Dg3DMy9v.js +0 -145
- package/dist/assets/src-oHrYIqHF.css +0 -2
- package/dist/assets/useAppFontEffects-CM0VKsdo.js +0 -7
- package/dist/assets/useDesktopWindowControlsLayout-Cq-r4Hcb.js +0 -1
- package/dist/assets/useMobileNavigationStore-DnzT4jO2.js +0 -475
- package/dist/assets/useSessionAutoCleanup-DxZeceKO.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{D as t,t as n}from"./useUIStore-5agS8bsW.js";import{$t as r,Jt as i,Xt as a,Yt as o,in as s,kn as c}from"./persistence-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{D as t,t as n}from"./useUIStore-5agS8bsW.js";import{$t as r,Jt as i,Xt as a,Yt as o,in as s,kn as c}from"./persistence-D1lIuyqO.js";import{nt as l,rt as u}from"./vendor-base-ui-CnHfUmDN.js";import{n as d}from"./vendor-react-DLPElpoQ.js";import{n as f,r as p,u as m}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as h,t as g}from"./clipboard-BnElHSnO.js";import{Ao as _,ki as v}from"./useMobileNavigationStore-DQHF_ETu.js";import{t as y}from"./utils-BxJEIWv5.js";import{t as b}from"./useThemeSystem-DMzWVJaW.js";import{c as x,d as S,g as C,h as w,m as T,n as ee,o as E,p as D,r as O,s as k,t as te,v as A,x as ne}from"./markdownTheme-D-aLQZaM.js";import{n as re}from"./useRuntimeAPIs-DSLXJybW.js";import{a as j,i as M,n as N,r as P}from"./url-DMs_PgIC.js";import{c as ie,h as F,i as ae,o as I,s as L,t as R}from"./markdown-worker-BDyY0vt6.js";import{n as oe}from"./useEffectiveDirectory-GbhkdO6m.js";import{a as z,c as B,d as V,f as se,i as ce,n as le,r as ue,u as de}from"./FadeInOnReveal-CKKU6fKI.js";import{t as fe}from"./vendor-morphdom-BbKiNDAu.js";import{n as pe,t as me}from"./vendor-beautiful-mermaid-DykqIK5D.js";import{t as H}from"./vendor-marked-WVekxjAN.js";import{t as U}from"./vendor-remend-C3cXc-tf.js";import{t as he}from"./vendor-katex-CNGgSigB.js";import{t as W}from"./vendor-dompurify-CeJNOzik.js";var G=e(u(),1),ge=d(),K=`text`,_e=/^(\d+):(\d+):(.+)$/,ve={ts:`typescript`,mts:`typescript`,cts:`typescript`,tsx:`tsx`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`jsx`,vue:`vue`,svelte:`svelte`,astro:`astro`,json:`json`,jsonc:`jsonc`,json5:`json5`,jsonl:`json`,ndjson:`json`,geojson:`json`,yaml:`yaml`,yml:`yaml`,toml:`toml`,ini:`ini`,cfg:`ini`,conf:`ini`,properties:`properties`,env:`dotenv`,css:`css`,scss:`scss`,sass:`sass`,less:`less`,styl:`stylus`,html:`html`,htm:`html`,xml:`xml`,svg:`xml`,md:`markdown`,markdown:`markdown`,mdown:`markdown`,mkd:`markdown`,mdx:`mdx`,py:`python`,pyw:`python`,pyi:`python`,rb:`ruby`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,kts:`kotlin`,swift:`swift`,scala:`scala`,c:`c`,h:`c`,cc:`cpp`,cpp:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,m:`objective-c`,mm:`objective-cpp`,cs:`csharp`,fs:`fsharp`,fsx:`fsharp`,vb:`vb`,php:`php`,pl:`perl`,pm:`perl`,lua:`lua`,r:`r`,dart:`dart`,ex:`elixir`,exs:`elixir`,erl:`erlang`,hrl:`erlang`,hs:`haskell`,clj:`clojure`,cljs:`clojure`,cljc:`clojure`,groovy:`groovy`,jl:`julia`,ml:`ocaml`,mli:`ocaml`,zig:`zig`,nix:`nix`,sol:`solidity`,prisma:`prisma`,proto:`proto`,graphql:`graphql`,gql:`graphql`,sql:`sql`,sh:`shellscript`,bash:`shellscript`,zsh:`shellscript`,fish:`shellscript`,ps1:`powershell`,psm1:`powershell`,bat:`bat`,cmd:`bat`,tf:`terraform`,tfvars:`terraform`,hcl:`hcl`,diff:`diff`,patch:`diff`,csv:`csv`,tex:`latex`,vim:`viml`,wgsl:`wgsl`,glsl:`glsl`,wat:`wasm`,mermaid:`mermaid`,mmd:`mermaid`},ye={dockerfile:`docker`,containerfile:`docker`,makefile:`make`,gnumakefile:`make`,"cmakelists.txt":`cmake`,gemfile:`ruby`,rakefile:`ruby`,podfile:`ruby`,".env":`dotenv`,".bashrc":`shellscript`,".zshrc":`shellscript`,".profile":`shellscript`},be=e=>{let t=e.split(/[\\/]/).pop()?.toLowerCase()??``;if(!t)return K;let n=ye[t];if(n)return n;let r=t.lastIndexOf(`.`);return r<=0?K:ve[t.slice(r+1)]??K},xe=e=>{let t=e?.trim()??``;if(!t)return{lang:K,label:K,reference:!1};let n=_e.exec(t);if(!n){let e=t.toLowerCase();return{lang:e,label:e,reference:!1}}let[,r=``,i=``,a=``]=n,o=r===i?r:`${r}-${i}`;return{lang:be(a),label:`${a}:${o}`,reference:!0}},Se=e=>e===` `||e===` `||e===`
|
|
2
2
|
`||e===`\r`,Ce=e=>e!==void 0&&e>=`0`&&e<=`9`,we=e=>e===`\\`||e===`^`||e===`_`||e===`{`||e===`}`||e===`=`||e===`+`||e===`*`||e===`/`||e===`-`,Te=e=>{for(let t=0;t<e.length;t+=1){let n=e[t];if(n!==void 0&&we(n))return!0}return!1},Ee=e=>{for(let t=0;t<e.length;t+=1){let n=e[t];if(n===`"`||n===`'`||Se(n))return!0}return!1},De=e=>{let t=0;for(;t<e.length;){let n=e.indexOf(`$`,t);if(n<0)return;let r=e[n+1];if(r===`$`||r!==void 0&&!Se(r))return n;t=n+1}},Oe=e=>{if(e[0]===`$`){if(e[1]===`$`){let t=e.indexOf(`$$`,2);return t<0?void 0:{raw:e.slice(0,t+2),text:e.slice(2,t),display:!0}}if(!(e.length<3||Se(e[1])))for(let t=1;t<e.length;t+=1){let n=e[t];if(n===`\\`){t+=1;continue}if(n!==`$`)continue;if(e[t+1]===`$`||Se(e[t-1]))return;if(Ce(e[t+1]))continue;if(t===1)return;let r=e.slice(1,t);return Ce(e[1])&&!Te(r)&&Ee(r)?void 0:{raw:e.slice(0,t+1),text:r,display:!1}}}},q=e=>e.replace(/&/g,`&`).replace(/"/g,`"`).replace(/</g,`<`).replace(/>/g,`>`),ke=e=>/^\[[^\]]+\]:\s+\S+/m.test(e)||/^\[\^[^\]]+\]:\s+/m.test(e),Ae=e=>{let t=e.match(/^[ \t]{0,3}(`{3,}|~{3,})/);if(!t)return!1;let n=t[1];if(!n)return!1;let r=n[0],i=n.length,a=e.trimEnd().split(`
|
|
3
3
|
`).at(-1)?.trim()??``;return!RegExp(`^[\\t ]{0,3}${r}{${i},}[\\t ]*$`).test(a)},je=e=>{try{return U(e,{linkMode:`text-only`})}catch{return e}},Me=(e,t)=>{let n=t?`live`:`full`;if(ke(e))return[{raw:e,src:je(e),mode:n,highlight:!0}];let r;try{r=H.lexer(e)}catch{return[{raw:e,src:je(e),mode:n,highlight:!0}]}let i=-1;for(let e=r.length-1;e>=0;--e)if(r[e]?.type!==`space`){i=e;break}if(i<0)return[{raw:e,src:je(e),mode:n,highlight:!0}];let a=[];for(let e=0;e<r.length;e+=1){let t=r[e];if(!t||t.type===`space`)continue;let o=t.raw??``,s=e===i,c=t.type===`code`&&Ae(o);a.push({raw:o,src:c?o:je(o),mode:s?n:`full`,highlight:!c})}return a.length===0?[{raw:e,src:je(e),mode:n,highlight:!0}]:a},Ne=16,Pe=new Map,Fe=(e,t)=>{let n=`${+!!t}:${e}`,r=Pe.get(n);if(r)return Pe.delete(n),Pe.set(n,r),r;let i=Me(e,t);for(;Pe.size>=Ne;){let e=Pe.keys().next().value;if(typeof e!=`string`)break;Pe.delete(e)}return Pe.set(n,i),i},Ie=(e,t,n)=>{try{return he.renderToString(e,{displayMode:n,throwOnError:!1})}catch{return t}},Le=H.use({gfm:!0,breaks:!1,extensions:[{name:`inlineMath`,level:`inline`,start(e){let t=e.indexOf(`\\(`);return t<0?void 0:t},tokenizer(e){let t=/^\\\(([\s\S]+?)\\\)/.exec(e);if(t)return{type:`inlineMath`,raw:t[0],text:t[1]??``}},renderer(e){let t=e;return Ie(t.text,t.raw,!1)}},{name:`blockMath`,level:`block`,start(e){let t=e.indexOf(`\\[`);return t<0?void 0:t},tokenizer(e){let t=/^\\\[([\s\S]+?)\\\]/.exec(e);if(t)return{type:`blockMath`,raw:t[0],text:t[1]??``}},renderer(e){let t=e;return Ie(t.text,t.raw,!0)}},{name:`dollarMath`,level:`inline`,start(e){return De(e)},tokenizer(e){let t=Oe(e);if(t)return{type:`dollarMath`,raw:t.raw,text:t.text,display:t.display}},renderer(e){let t=e;return Ie(t.text,t.raw,t.display)}}],renderer:{link({href:e,title:t,text:n}){let r=e??``,i=de(r);if(i)return`<a href="${q(B(i))}" data-openchamber-agent-mention="true" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">${n}</a>`;let a=V(r);if(a)return`<a href="${q(r)}" data-skill-name="${q(a)}" class="text-primary hover:underline">${n}</a>`;let o=t?` title="${q(t)}"`:``;return`<a href="${q(r)}"${o} class="external-link" target="_blank" rel="noopener noreferrer">${n}</a>`}}}),Re=e=>e.replace(/\$\$([\s\S]*?)\$\$/g,(e,t)=>{try{return he.renderToString(t,{displayMode:!0,throwOnError:!1})}catch{return`$$${t}$$`}}),ze=e=>e.indexOf(`$`)===-1?e:e.split(/(<(?:pre|code|kbd)[^>]*>[\s\S]*?<\/(?:pre|code|kbd)>)/gi).map((e,t)=>t%2==1?e:Re(e)).join(``),Be=/<pre><code(?:\s+class="language-([^"]*)")?>([\s\S]*?)<\/code><\/pre>/g,Ve=1200,He=200,Ue=(e,t)=>{let n=1;for(let r=0;r<e.length;r+=1)if(e.charCodeAt(r)===10&&++n>t)return!0;return!1},We=e=>e.replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/&/g,`&`),Ge=e=>e.reference?`data-md-lang="${q(e.lang)}" data-md-label="${q(e.label)}"`:`data-md-lang="${q(e.lang)}"`,Ke=async(e,t,n)=>{if(t?.aborted)return null;let i=[...e.matchAll(Be)];if(i.length===0)return e;let a=r()?He:Ve,o=e;for(let e of i){if(t?.aborted)return null;let[r,i,s]=e,c=xe(i);if(c.lang===`mermaid`&&!c.reference)continue;let l=We(s??``);if(Ue(l,a)){o=o.replace(r,()=>r.replace(`<pre`,`<pre ${Ge(c)}`));continue}let u=await R(l,c.lang,{signal:t,priority:n});if(t?.aborted)return null;if(u){let e=u.replace(/^<pre/,`<pre ${Ge(c)}`);o=o.replace(r,()=>e)}}return o},qe={USE_PROFILES:{html:!0,mathMl:!0,svg:!0},ADD_TAGS:[`svg`,`path`,`g`,`rect`,`line`,`polygon`,`polyline`,`circle`,`ellipse`,`text`,`tspan`,`defs`,`marker`],ADD_ATTR:[`d`,`viewBox`,`preserveAspectRatio`,`xmlns`,`target`,`fill`,`stroke`,`stroke-width`,`transform`,`points`,`x`,`y`,`x1`,`y1`,`x2`,`y2`,`cx`,`cy`,`r`,`rx`,`ry`,`style`],FORBID_TAGS:[`script`],FORBID_CONTENTS:[`script`]},Je=!1,Ye=()=>{Je||typeof window>`u`||!W.isSupported||(Je=!0,W.addHook(`uponSanitizeAttribute`,(e,t)=>{if(!(e instanceof HTMLImageElement)||t.attrName!==`src`)return;let n=typeof t.attrValue==`string`?t.attrValue:``;/^file:/i.test(n)&&(e.setAttribute(`data-md-image-source`,n),t.keepAttr=!1)}),W.addHook(`afterSanitizeAttributes`,e=>{e instanceof HTMLAnchorElement&&e.target===`_blank`&&e.setAttribute(`rel`,`noopener noreferrer`)}))},Xe=e=>W.isSupported?(Ye(),W.sanitize(e,qe)):``,Ze=`data-md-sanitize-block`,Qe=e=>{if(e.length===0)return[];if(e.length===1)return[Xe(e[0])];if(!W.isSupported||typeof document>`u`)return e.map(e=>Xe(e));let t=e.map((e,t)=>`<div ${Ze}="${t}">${e}</div>`).join(``),n=document.createElement(`div`);n.innerHTML=Xe(t);let r=e.map(()=>``);return n.querySelectorAll(`[${Ze}]`).forEach(e=>{let t=Number(e.getAttribute(Ze));Number.isInteger(t)&&t>=0&&t<r.length&&(r[t]=e.innerHTML)}),r},$e=240,et=16777216,tt=160,nt=8388608,rt=new L({maxEntries:$e,maxBytes:et}),it=new L({maxEntries:tt,maxBytes:nt}),at=e=>{let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)},ot=e=>e.length*2,st=(e,t)=>{rt.set(e,t,ot(e)+ot(t.hash)+ot(t.html))},ct=async(e,t,n)=>{if(t?.aborted)return null;let r=await Promise.resolve(Le.parse(e.src));if(t?.aborted)return null;let i=ze(r);if(t?.aborted)return null;let a=e.highlight?await Ke(i,t,n):i;if(a===null||t?.aborted)return null;let o=Xe(a);return t?.aborted?null:o},lt=e=>`${at(e)}:${e.length}`,ut=e=>{let t=it.get(lt(e));return t?.source===e?t.html:void 0},dt=(e,t)=>{let n=lt(e);it.set(n,{source:e,html:t},ot(n)+ot(e)+ot(t))},ft=e=>ze(Le.parse(e)),pt=e=>{if(!e)return[];let t=Fe(e,!1).map(e=>e.src),n=Array(t.length).fill(``),r=[],i=[];t.forEach((e,t)=>{let a=ut(e);if(a!==void 0){n[t]=a;return}r.push(t),i.push(ft(e))});let a=Qe(i);return r.forEach((e,r)=>{let i=a[r]??``;n[e]=i,dt(t[e],i)}),n},mt=8,ht=()=>typeof performance<`u`?performance.now():Date.now(),gt=e=>e?.aborted?Promise.resolve(!1):new Promise(t=>{let n=!1,r=r=>{n||(n=!0,e?.removeEventListener(`abort`,a),t(r))},i=ce(()=>{r(!e?.aborted)},{priority:`visible`}),a=()=>{i(),r(!1)};e?.addEventListener(`abort`,a,{once:!0})}),_t=async(e,t,n,r)=>{if(!e)return[];let i=Fe(e,t),a=t?`visible`:`background`,o=async(e,t)=>{if(r?.aborted)return null;let i=at(e.raw),o=`${i}:${e.mode}:${+!!e.highlight}`,s=`${n}:${t}:${e.mode}`,c=rt.get(s);if(c&&c.hash===i)return{id:o,html:c.html};let l=await ct(e,r,a);return l===null||r?.aborted?null:(st(s,{hash:i,html:l}),{id:o,html:l})};if(t)return(await Promise.all(i.map(o))).filter(e=>e!==null);let s=[],c=0;for(let e=0;e<i.length&&!r?.aborted;e+=1){let t=i[e];if(!t)continue;if(ht()>=c){if(!await gt(r))break;c=ht()+mt}let n=await o(t,e);n&&s.push(n)}return s},J=e=>Number.isFinite(e)&&e>0,vt=e=>{if(typeof e==`number`)return J(e)?e:null;if(typeof e!=`string`)return null;let t=e.trim().match(/^([+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?)(?:px)?$/);if(!t)return null;let n=Number(t[1]);return J(n)?n:null},yt=(e,t,n)=>Math.min(n,Math.max(t,e)),bt=6,xt=1.25,St=1.0015,Ct=16,wt=1e3,Tt=.5,Et=12,Dt=400,Ot=`[data-markdown="mermaid-block"]`,kt=e=>e.querySelector(Ot)!==null,At=e=>[e.x,e.y,e.width,e.height].map(e=>{let t=Number(e.toFixed(bt));return Object.is(t,-0)?`0`:String(t)}).join(` `),jt=e=>{let t=e.viewBox?.trim().split(/[\s,]+/).map(e=>Number.parseFloat(e));if(t?.length===4){let[e,n,r,i]=t;if(Number.isFinite(e)&&Number.isFinite(n)&&J(r)&&J(i))return{x:e,y:n,width:r,height:i}}let n=vt(e.width),r=vt(e.height);return n===null||r===null?null:{x:0,y:0,width:n,height:r}},Mt=e=>{let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)},Nt=e=>{let t=e.renderMode||`unknown`,n=e.svgMarkup??``;if(!n){let n=[e.viewBox??``,e.width??``,e.height??``];return n.some(e=>e!==``)?`${t}:bounds:${n.join(`:`)}`:`${t}:no-svg`}return[t,Mt(n)].join(`:`)},Pt=(e,t)=>{if(!J(t.width)||!J(t.height))return e;let n=e.width/e.height,r=t.width/t.height;if(n>r){let t=e.width/r;return{x:e.x,y:e.y-(t-e.height)/2,width:e.width,height:t}}let i=e.height*r;return{x:e.x-(i-e.width)/2,y:e.y,width:i,height:e.height}},Ft=({currentBox:e,viewport:t,delta:n})=>!J(t.width)||!J(t.height)||!J(e.width)||!J(e.height)?e:{x:e.x-n.x/t.width*e.width,y:e.y-n.y/t.height*e.height,width:e.width,height:e.height},It=(e,t,n)=>{let r=e*(t===1?Ct:t===2?J(n)?n:0:1);return Number.isFinite(r)?yt(r,-1e3,wt):0},Lt=e=>{let t=null;for(let n of e){if(!t){t=n;continue}return{center:{x:(t.x+n.x)/2,y:(t.y+n.y)/2},distance:Math.hypot(n.x-t.x,n.y-t.y)}}return null},Rt=(e,t)=>{let n=t.x-e.x,r=t.y-e.y;return n*n+r*r>9},zt=({currentBox:e,contentBox:t,viewport:n,pointer:r,zoomFactor:i,minScale:a,maxScale:o})=>{if(!J(n.width)||!J(n.height)||!J(i)||!J(e.width)||!J(e.height)||!J(t.width)||!J(t.height)||!J(a)||!J(o))return e;let s=Math.min(a,o),c=Math.max(a,o),l=Pt(t,n),u=yt(l.width/e.width*i,s,c),d=l.width/u,f=d/(e.width/e.height),p=yt(r.x/n.width,0,1),m=yt(r.y/n.height,0,1),h=e.x+p*e.width,g=e.y+m*e.height;return{x:h-p*d,y:g-m*f,width:d,height:f}},Bt=({currentBox:e,contentBox:t,viewport:n,previousGesture:r,gesture:i,minScale:a,maxScale:o})=>!J(r.distance)||!J(i.distance)?e:zt({currentBox:Ft({currentBox:e,viewport:n,delta:{x:i.center.x-r.center.x,y:i.center.y-r.center.y}}),contentBox:t,viewport:n,pointer:i.center,zoomFactor:i.distance/r.distance,minScale:a,maxScale:o}),Vt=new WeakMap,Ht=e=>e instanceof HTMLElement?Vt.get(e)??null:null,Ut=e=>e.querySelector(`[data-markdown="mermaid-viewport"]`)??e.querySelector(`[data-markdown="mermaid"]`),Wt=e=>{let t=e.querySelector(`[data-markdown="mermaid"] svg`),n=e.querySelector(`[data-markdown="mermaid"]`);return Nt({renderMode:e.getAttribute(`data-mermaid-render`),svgMarkup:n?.getAttribute(`data-md-original-svg`)??t?.outerHTML??null,viewBox:t?.getAttribute(`viewBox`),width:t?.getAttribute(`width`),height:t?.getAttribute(`height`)})},Gt=e=>{let t=e.getBoundingClientRect();return{width:t.width,height:t.height}},Kt=(e,t)=>({x:e.clientX-t.left,y:e.clientY-t.top}),qt=(e,t)=>Kt(e,t.getBoundingClientRect()),Jt=e=>e instanceof Element&&!!e.closest(`button, a, [role="button"]`),Yt=e=>{let t=Ut(e),n=e.querySelector(`[data-markdown="mermaid"] svg`);if(!t||!n)return null;let r=jt({viewBox:n.getAttribute(`viewBox`),width:n.getAttribute(`width`),height:n.getAttribute(`height`)});if(!r)return null;let i=r,a=null,o=null,s=null,c=new Map,l=new Set,u=null,d=null,f=e=>{i=e,n.setAttribute(`viewBox`,At(e)),n.removeAttribute(`width`),n.removeAttribute(`height`)},p=()=>{f(Pt(r,Gt(t)))},m=(e,n)=>{f(zt({currentBox:i,contentBox:r,viewport:Gt(t),pointer:e,zoomFactor:n,minScale:Tt,maxScale:Et}))},h=()=>{let e=Gt(t);m({x:e.width/2,y:e.height/2},xt)},g=()=>{let e=Gt(t);m({x:e.width/2,y:e.height/2},1/xt)},_=e=>{e.preventDefault(),e.stopPropagation();let n=It(e.deltaY,e.deltaMode,Gt(t).height);m(qt(e,t),St**+-n)},v=e=>{try{t.setPointerCapture(e),l.add(e)}catch{}},y=e=>{if(l.delete(e))try{t.hasPointerCapture(e)&&t.releasePointerCapture(e)}catch{}},b=()=>{a=null,o=null,s=null,c.clear(),u=null},x=()=>{b(),e.removeAttribute(`data-mermaid-panning`),e.hasAttribute(`data-mermaid-suppress-click`)&&(d=window.setTimeout(()=>{e.removeAttribute(`data-mermaid-suppress-click`),d=null},Dt))},S=n=>{if(n.pointerType!==`touch`&&n.button!==0||Jt(n.target))return;d!==null&&(window.clearTimeout(d),d=null),e.removeAttribute(`data-mermaid-suppress-click`);let r=qt(n,t);v(n.pointerId),e.setAttribute(`data-mermaid-panning`,`true`),n.pointerType===`touch`?(c.set(n.pointerId,r),c.size>=2?(a=null,o=null,s=null,u=Lt(c.values()),e.setAttribute(`data-mermaid-suppress-click`,`true`)):(a=n.pointerId,o=r,s=r)):(a=n.pointerId,o=r,s=r),n.preventDefault()},C=n=>{if(n.pointerType===`touch`){if(!c.has(n.pointerId))return;let a=qt(n,t);if(c.set(n.pointerId,a),c.size>=2){let a=Lt(c.values());u&&a&&f(Bt({currentBox:i,contentBox:r,viewport:Gt(t),previousGesture:u,gesture:a,minScale:Tt,maxScale:Et})),u=a,e.setAttribute(`data-mermaid-suppress-click`,`true`),n.preventDefault();return}}if(a!==n.pointerId||!s)return;let l=qt(n,t);f(Ft({currentBox:i,viewport:Gt(t),delta:{x:l.x-s.x,y:l.y-s.y}})),s=l,o&&Rt(o,l)&&e.setAttribute(`data-mermaid-suppress-click`,`true`),n.preventDefault()},w=e=>{if(e.pointerType===`touch`||c.has(e.pointerId)){if(!c.has(e.pointerId))return;if(c.delete(e.pointerId),u=Lt(c.values()),c.size>0){for(let[e,t]of c){a=e,o=t,s=t;break}c.size>=2&&(a=null,o=null,s=null),y(e.pointerId);return}x(),y(e.pointerId);return}a===e.pointerId&&(x(),y(e.pointerId))},T=()=>{p()};t.addEventListener(`wheel`,_,{passive:!1}),t.addEventListener(`pointerdown`,S),t.addEventListener(`pointermove`,C),t.addEventListener(`pointerup`,w),t.addEventListener(`pointercancel`,w),t.addEventListener(`lostpointercapture`,w),window.addEventListener(`resize`,T);let ee=typeof ResizeObserver>`u`?null:new ResizeObserver(T);return ee?.observe(t),p(),{zoomIn:h,zoomOut:g,fit:p,cleanup:()=>{t.removeEventListener(`wheel`,_),t.removeEventListener(`pointerdown`,S),t.removeEventListener(`pointermove`,C),t.removeEventListener(`pointerup`,w),t.removeEventListener(`pointercancel`,w),t.removeEventListener(`lostpointercapture`,w),window.removeEventListener(`resize`,T),ee?.disconnect(),d!==null&&window.clearTimeout(d);for(let e of Array.from(l))y(e);b(),e.removeAttribute(`data-mermaid-panning`),e.removeAttribute(`data-mermaid-suppress-click`),Vt.delete(e)}}},Xt=e=>{let t=new Map,n=new Map,r=()=>{for(let[r,i]of Array.from(t.entries())){let a=Wt(r);(!e.contains(r)||a!==n.get(r))&&(i.cleanup(),t.delete(r),n.delete(r))}for(let r of Array.from(e.querySelectorAll(Ot))){if(t.has(r)||r.querySelector(`[data-markdown="mermaid"] svg`)===null)continue;let e=Yt(r);e&&(t.set(r,e),n.set(r,Wt(r)),Vt.set(r,e))}};return r(),{refresh:r,cleanup:()=>{for(let e of t.values())e.cleanup();t.clear(),n.clear()}}},Y=(e,t=`size-3.5`)=>`<svg class="oc-icon ${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#oc-${e}"></use></svg>`,Zt={copy:Y(`file-copy`),check:Y(`check`),download:Y(`download`),zoomIn:Y(`add`),zoomOut:Y(`subtract`),fit:Y(`refresh`),textWrap:Y(`text-wrap`),image:Y(`file-image`,`size-10`),imageDownload:Y(`download`,`size-3`),imageLoading:Y(`loader-4`,`size-3.5 animate-spin motion-reduce:animate-none`)},Qt=`p-1 rounded hover:bg-interactive-hover/60 text-muted-foreground hover:text-foreground transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--interactive-focus-ring)]`,$t=(e,t)=>{e.innerHTML=t},X=(e,t,n)=>{let r=document.createElement(`button`);return r.type=`button`,r.className=Qt,r.setAttribute(`data-md-action`,n),r.setAttribute(`title`,t),r.setAttribute(`aria-label`,t),$t(r,Zt[e]),r},en=(e,t,n)=>{let r=e.querySelector(`[data-md-code-body]`),i=e.querySelector(`pre`),a=e.querySelector(`pre code`),o=e.querySelector(`[data-md-action="toggle-code-wrap"]`);if(e.setAttribute(`data-code-wrap`,t?`true`:`false`),r?.classList.toggle(`overflow-x-auto`,!t),r?.classList.toggle(`overflow-x-hidden`,t),i?.classList.toggle(`whitespace-pre-wrap`,t),i?.classList.toggle(`break-words`,t),a?.classList.toggle(`whitespace-pre-wrap`,t),a?.classList.toggle(`break-words`,t),i&&(i.style.whiteSpace=t?`pre-wrap`:`pre`,i.style.overflowWrap=t?`anywhere`:`normal`),a&&(a.style.whiteSpace=t?`pre-wrap`:`pre`,a.style.overflowWrap=t?`anywhere`:`normal`),o){let e=t?n.disableCodeWrap:n.enableCodeWrap;o.setAttribute(`title`,e),o.setAttribute(`aria-label`,e),o.classList.toggle(`text-foreground`,t),o.classList.toggle(`opacity-100`,t),o.classList.toggle(`text-muted-foreground`,!t),o.classList.toggle(`opacity-65`,!t),o.setAttribute(`aria-pressed`,t?`true`:`false`)}},tn=e=>{let t=document.createElement(`div`);t.setAttribute(`data-md-code-line-numbers`,``),t.setAttribute(`aria-hidden`,`true`),t.className=`min-w-8 shrink-0 select-none border-r border-border/50 pr-3 text-right font-mono text-[13px] text-muted-foreground/45`;let n=e.textContent??``,r=Math.max(1,n.endsWith(`
|
|
4
4
|
`)?n.split(`
|
|
5
5
|
`).length-1:n.split(`
|
|
6
6
|
`).length);for(let e=1;e<=r;e+=1){let n=document.createElement(`div`);n.className=`tabular-nums`,n.textContent=String(e),t.appendChild(n)}return t},nn=e=>{let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=n.nextNode();for(;r;)t.push(r),r=n.nextNode();return t},rn=(e,t)=>{let n=0;for(let r of e){let e=n+r.data.length;if(t<=e)return{node:r,offset:Math.max(0,t-n)};n=e}let r=e.at(-1);return r?{node:r,offset:r.data.length}:null},an=(e,t)=>{let n=1/0,r=-1/0;for(let t=0;t<e.length;t+=1){let i=e[t];!i||i.width===0&&i.height===0||(i.top<n&&(n=i.top),i.bottom>r&&(r=i.bottom))}return!Number.isFinite(n)||r<=n?t:Math.max(t,r-n)},on=e=>Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.classList.contains(`line`)),sn=(e,t,n)=>{e.style.height=`${t}px`,e.style.lineHeight=`${n}px`},cn=(e,t,n)=>{let r=document.createRange();r.setStart(e.node,e.offset),r.setEnd(t.node,t.offset);let i=Math.max(an(r.getClientRects(),n),an([r.getBoundingClientRect()],n));return r.detach(),i},ln=e=>{let t=e.querySelectorAll(`[data-component="markdown-code"]`);for(let e of Array.from(t)){let t=e.querySelector(`pre code`),n=e.querySelector(`[data-md-code-line-numbers]`);if(!t||!n)continue;let r=Array.from(n.children),i=window.getComputedStyle(t),a=Number.parseFloat(i.lineHeight)||20;n.style.fontFamily=i.fontFamily,n.style.fontSize=i.fontSize,n.style.lineHeight=`${a}px`;let o=on(t);if(o.length===r.length){let e=o.map(e=>e.getBoundingClientRect()),t=e=>(e?.textContent??``).length===0;for(let n=0;n<r.length;n+=1){let i=r[n],s=o[n],c=e[n];if(!i||!s||!c)continue;if(t(s)){sn(i,a,a);continue}let l=o[n+1],u=e[n+1],d=u&&!t(l)?u.top:c.bottom;sn(i,an([{top:c.top,bottom:d,width:1,height:d-c.top}],a),a)}continue}let s=t.textContent??``,c=nn(t),l=0;for(let e=0;e<r.length;e+=1){let t=s.indexOf(`
|
|
7
|
-
`,l),n=t===-1?s.length:t,i=r[e];if(!i)continue;let o=rn(c,l),u=rn(c,n);!o||!u||l===n?sn(i,a,a):sn(i,cn(o,u,a),a),l=n+1}}},un=e=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>ln(e))})},dn=(e,t,n)=>{let r=e.querySelectorAll(`[data-component="markdown-code"]`);for(let e of Array.from(r)){let r=e.querySelector(`[data-md-code-body]`),i=e.querySelector(`pre`);r&&i&&!r.querySelector(`[data-md-code-line-numbers]`)&&(r.classList.add(`flex`,`gap-3`),r.insertBefore(tn(i),i)),en(e,t,n)}un(e)},fn=(e,t,n,r)=>{$t(e,Zt.check),e.setAttribute(`title`,t),e.setAttribute(`aria-label`,t),window.setTimeout(()=>{$t(e,Zt[n]),e.setAttribute(`title`,r),e.setAttribute(`aria-label`,r)},2e3)},pn=e=>{let t=e.querySelectorAll(`:not(pre) > code`);for(let e of Array.from(t))e.getAttribute(`data-markdown`)!==`inline-code`&&e.setAttribute(`data-markdown`,`inline-code`)},mn=(e,t)=>{let n=e.querySelectorAll(`pre`);for(let e of Array.from(n)){if(e.querySelector(`code.language-mermaid`))continue;let n=e.parentElement;if(!n||n.closest(`[data-component="markdown-code"]`))continue;let r=e.querySelector(`code`)?.className.match(/language-([^\s"]+)/)?.[1],i=e.getAttribute(`data-md-label`)??e.getAttribute(`data-md-lang`)??xe(r).label,a=document.createElement(`div`);a.setAttribute(`data-component`,`markdown-code`),a.className=`my-4 group overflow-hidden rounded-2xl border border-border/80 bg-[var(--surface-elevated)]`;let o=document.createElement(`div`);o.className=`flex items-center justify-between border-b border-border/70 px-3 py-1.5`;let s=document.createElement(`span`);s.className=`font-mono text-[13px] text-muted-foreground`,s.textContent=i;let c=X(`copy`,t.labels.copy,`copy-code`),l=X(`textWrap`,t.codeBlockLineWrap?t.labels.disableCodeWrap:t.labels.enableCodeWrap,`toggle-code-wrap`);o.appendChild(s);let u=document.createElement(`div`);u.className=`flex items-center gap-1`,u.appendChild(l),u.appendChild(c),o.appendChild(u);let d=document.createElement(`div`);d.setAttribute(`data-md-code-body`,``),d.className=`px-3 py-2.5 overflow-x-auto`,n.replaceChild(a,e),e.style.margin=`0`,e.style.background=`transparent`,e.classList.add(`min-w-0`,`w-full`,`flex-1`),d.appendChild(e),a.appendChild(o),a.appendChild(d),en(a,t.codeBlockLineWrap,t.labels)}},hn=e=>{let t=e.querySelectorAll(`table`);for(let e of Array.from(t)){if(e.closest(`[data-markdown="table-wrapper"]`))continue;let t=document.createElement(`div`);t.className=`my-4`,t.setAttribute(`data-markdown`,`table-wrapper`);let n=document.createElement(`div`);n.setAttribute(`data-markdown`,`table-scroll`);let r=e.parentElement;if(r){r.replaceChild(t,e),e.setAttribute(`data-markdown`,`table`);for(let t of Array.from(e.querySelectorAll(`tr`)))t.setAttribute(`data-markdown`,`table-row`);for(let t of Array.from(e.querySelectorAll(`th`)))t.setAttribute(`data-markdown`,`table-header-cell`);for(let t of Array.from(e.querySelectorAll(`td`)))t.setAttribute(`data-markdown`,`table-cell`);n.appendChild(e),t.appendChild(n)}}},gn=(e,t)=>{let n=e.querySelectorAll(`pre > code.language-mermaid`);for(let e of Array.from(n)){let n=e.parentElement;if(!n)continue;let r=(e.textContent??``).replace(/\s+$/,``),i=t.renderMermaid(r),a=document.createElement(`div`);a.setAttribute(`data-markdown`,`mermaid-block`),a.setAttribute(`data-md-source`,r),a.className=`group relative`;let o=document.createElement(`div`);o.setAttribute(`data-markdown`,`mermaid-scroll`);let s=document.createElement(`div`);if(s.setAttribute(`data-markdown`,`mermaid-toolbar`),s.className=`absolute top-1 right-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity`,i.svg){a.setAttribute(`data-mermaid-render`,`svg`);let e=document.createElement(`div`);e.setAttribute(`data-markdown`,`mermaid-viewport`);let n=document.createElement(`div`);if(n.setAttribute(`data-markdown`,`mermaid`),n.setAttribute(`data-md-original-svg`,i.svg),n.innerHTML=i.svg,e.appendChild(n),o.appendChild(e),t.mermaidControls.showPanZoomControls&&(s.appendChild(X(`zoomIn`,t.labels.zoomInDiagram,`mermaid-zoom-in`)),s.appendChild(X(`zoomOut`,t.labels.zoomOutDiagram,`mermaid-zoom-out`)),s.appendChild(X(`fit`,t.labels.resetDiagramView,`mermaid-fit`))),t.mermaidControls.copy){let e=X(`copy`,t.labels.copyDiagram,`mermaid-copy`);e.setAttribute(`data-md-source`,r),s.appendChild(e)}if(t.mermaidControls.download){let e=X(`download`,t.labels.downloadDiagram,`mermaid-download`);e.setAttribute(`data-md-svg`,`1`),s.appendChild(e)}}else{a.setAttribute(`data-mermaid-render`,`ascii`);let e=document.createElement(`pre`);if(e.setAttribute(`data-markdown`,`mermaid-ascii`),e.textContent=i.ascii||r,o.appendChild(e),t.mermaidControls.copy){let e=X(`copy`,t.labels.copyDiagram,`mermaid-copy`);e.setAttribute(`data-md-source`,i.ascii||r),s.appendChild(e)}}a.appendChild(o),a.appendChild(s);let c=n.parentElement;c&&c.replaceChild(a,n)}},_n=(e,t)=>{let n=e.querySelectorAll(`a[href]`);for(let e of Array.from(n)){if(e.getAttribute(`data-md-link-decorated`)===`true`||e.getAttribute(`data-openchamber-file-link`)===`true`)continue;let n=e.getAttribute(`href`)??``;if(!P(n))continue;e.setAttribute(`data-md-link-decorated`,`true`);let r=N(n);if(r){let t=document.createElement(`span`);t.className=`mr-1 inline-flex size-[18px] items-center justify-center rounded border border-[var(--border)] bg-[var(--interactive-hover)] align-middle`;let n=document.createElement(`img`);n.setAttribute(`data-md-link-favicon`,`true`),n.src=r,n.alt=``,n.setAttribute(`aria-hidden`,`true`),n.loading=`lazy`,n.decoding=`async`,n.className=`size-3.5 rounded-sm`,n.addEventListener(`error`,()=>t.remove(),{once:!0}),t.appendChild(n),e.parentNode?.insertBefore(t,e)}if(t.onPreviewLoopback&&M(n)){let r=document.createElement(`button`);r.type=`button`,r.className=`ml-1 align-middle ${Qt}`,r.setAttribute(`data-md-action`,`preview-loopback`),r.setAttribute(`data-md-url`,n),r.setAttribute(`title`,t.labels.previewTitle),r.setAttribute(`aria-label`,t.labels.previewLabel),$t(r,Zt.download),e.parentNode?.insertBefore(r,e.nextSibling)}}},vn=`img:not([data-md-link-favicon="true"])`,yn=`[data-md-image-presentation="true"]`,bn=`data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="576" height="324" viewBox="0 0 576 324"%3E%3C/svg%3E`,xn=[`block`,`max-w-full`,`rounded-xl`,`border`,`border-border/80`,`bg-[var(--surface-muted)]`,`transition-colors`,`focus-visible:outline`,`focus-visible:outline-2`,`focus-visible:outline-offset-2`,`focus-visible:outline-[var(--interactive-focus-ring)]`],Sn=[`cursor-pointer`,`hover:bg-interactive-hover/60`],Cn=[`aspect-video`,`h-auto`,`w-full`,`max-w-xl`,`object-contain`],wn=e=>{let t=e.parentElement;if(t?.matches(yn))return t;let n=document.createElement(`span`);n.setAttribute(`data-md-image-presentation`,`true`),n.className=`relative my-4 block w-fit max-w-full`;let r=document.createElement(`span`);r.setAttribute(`data-md-image-placeholder-visual`,`true`),r.setAttribute(`aria-hidden`,`true`),r.className=`pointer-events-none absolute inset-0 flex items-center justify-center text-muted-foreground`;let i=document.createElement(`span`);i.className=`relative flex size-14 items-center justify-center rounded-2xl border border-border/80 bg-[var(--surface-elevated)] shadow-sm`,$t(i,Zt.image);let a=document.createElement(`span`);a.setAttribute(`data-md-image-download-badge`,`true`),a.className=`absolute -right-1.5 -bottom-1.5 flex size-6 items-center justify-center rounded-full border border-border bg-[var(--surface-elevated)] text-foreground shadow-sm`,$t(a,Zt.imageDownload);let o=document.createElement(`span`);return o.setAttribute(`data-md-image-loading-badge`,`true`),o.className=`absolute -right-1.5 -bottom-1.5 hidden size-6 items-center justify-center rounded-full border border-border bg-[var(--surface-elevated)] text-foreground shadow-sm`,$t(o,Zt.imageLoading),i.appendChild(a),i.appendChild(o),r.appendChild(i),t?.replaceChild(n,e),n.appendChild(e),n.appendChild(r),n},Tn=e=>{e.src=bn,e.setAttribute(`data-md-placeholder-source`,bn),e.setAttribute(`data-md-image-state`,`placeholder`),e.classList.add(...Cn)},En=e=>{e.removeAttribute(`data-md-image-state`),e.removeAttribute(`data-md-placeholder-source`),e.removeAttribute(`aria-busy`),e.classList.remove(...Cn)},Dn=(e,t)=>{if(!t.imagePreviewEnabled)return;let n=e.querySelectorAll(vn);for(let e of Array.from(n)){let n=e.getAttribute(`data-md-image-source`)??e.getAttribute(`src`)??``,r=x(n,t.imageEffectiveDirectory);E(r)&&(e.classList.add(...xn,...Sn),e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`data-md-image-source`,n),wn(e),Tn(e))}},On=(e,t)=>{pn(e),gn(e,t),mn(e,t),hn(e),_n(e,t),Dn(e,t)},kn=(e,t,n)=>{let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)},An=(e,t)=>{let n=e=>{let n=e.target;if(!(n instanceof Element))return;let r=n.closest(`[data-md-action]`);if(!r)return;let i=r.getAttribute(`data-md-action`)??``;if(i===`copy-code`){let e=r.closest(`[data-component="markdown-code"]`)?.querySelector(`code`)?.textContent??``;e&&g(e).then(()=>fn(r,t.labels.copied,`copy`,t.labels.copy));return}if(i===`toggle-code-wrap`){e.preventDefault(),t.onToggleCodeBlockLineWrap?.();return}if(i===`mermaid-copy`){let e=r.getAttribute(`data-md-source`)??``;e&&g(e).then(()=>fn(r,t.labels.copied,`copy`,t.labels.copyDiagram));return}if(i===`mermaid-zoom-in`||i===`mermaid-zoom-out`||i===`mermaid-fit`){e.preventDefault();let t=Ht(r.closest(`[data-markdown="mermaid-block"]`));i===`mermaid-zoom-in`?t?.zoomIn():i===`mermaid-zoom-out`?t?.zoomOut():t?.fit();return}if(i===`mermaid-download`){let e=r.closest(`[data-markdown="mermaid-block"]`)?.querySelector(`[data-markdown="mermaid"]`),t=e?.getAttribute(`data-md-original-svg`)??e?.innerHTML??``;t&&kn(`diagram.svg`,t,`image/svg+xml;charset=utf-8`);return}if(i===`preview-loopback`){e.preventDefault();let n=r.getAttribute(`data-md-url`)??``;n&&t.onPreviewLoopback?.(n);return}};return e.addEventListener(`click`,n),()=>e.removeEventListener(`click`,n)},jn=new Set([`dockerfile`,`makefile`,`readme`,`license`,`.env`,`.gitignore`,`.npmrc`]),Mn=Array.from(jn).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),Nn=e=>w(e),Pn=e=>D(e),Fn=e=>{if(!e||e.startsWith(`--`)||e.includes(`://`)||/[<>]/.test(e)||/\s{2,}/.test(e))return!1;let t=Nn(e),n=t.split(`/`).filter(Boolean).pop()??t;if(!n||n===`.`||n===`..`)return!1;let r=n.toLowerCase();return jn.has(r)||r.startsWith(`.`)&&r.length>1?!0:!t.includes(`/`)&&/^\d+\.\d+$/.test(n)?!1:/\.[A-Za-z0-9_-]{1,16}$/.test(n)},In=e=>{let t=(e||``).trim();return t?((t.startsWith("`")&&t.endsWith("`")||t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))&&(t=t.slice(1,-1).trim()),t=t.replace(/[.,;!?]+$/g,``),t.endsWith(`)`)&&!t.includes(`(`)&&(t=t.slice(0,-1)),t.endsWith(`]`)&&!t.includes(`[`)&&(t=t.slice(0,-1)),t):``},Ln=e=>{let t=In(e);if(!t)return``;let n=t.indexOf(`;`);n>=0&&(t=t.slice(0,n)),t=t.replace(/#.*$/,``);let r=t.match(/^(.*\.[A-Za-z0-9_-]{1,16}):.*$/);r&&(t=r[1]??t);let i=Mn.length>0?t.match(RegExp(`^(.*(?:/|^)(${Mn})):.*$`,`i`)):null;return i&&(t=i[1]??t),In(t)},Rn=e=>{let t=In(e);if(!t)return null;let n=t.indexOf(`;`),r=n>=0?In(t.slice(0,n)):t;if(!r)return null;let i=r.match(/^(.*?):(\d+)-(\d+)$/);if(i){let e=Ln(i[1]??``),t=Number.parseInt(i[2]??``,10),n=Number.parseInt(i[3]??``,10);return!e||!Number.isFinite(t)||!Number.isFinite(n)||n<t?null:{path:e,line:t,endLine:n}}let a=r.match(/^(.*)#L(\d+)(?:C(\d+))?$/i);if(a){let e=Ln(a[1]??``),t=Number.parseInt(a[2]??``,10),n=a[3]?Number.parseInt(a[3],10):void 0;return!e||!Number.isFinite(t)?null:{path:e,line:t,column:Number.isFinite(n??NaN)?n:void 0}}let o=r.match(/^(.*?):(\d+)(?::(\d+))?$/);if(o){let e=Ln(o[1]??``),t=Number.parseInt(o[2]??``,10),n=o[3]?Number.parseInt(o[3],10):void 0;return!e||!Number.isFinite(t)?null:{path:e,line:t,column:Number.isFinite(n??NaN)?n:void 0}}let s=Ln(r);return s?{path:s}:null},zn=/(?:[A-Za-z]:[\\/])?[\w.\-/@+]*[\w\-/@+]\.[A-Za-z0-9]{1,8}(?::\d+(?:-\d+)?(?::\d+)?)?/g,Bn=`(?:(?:[0-9][\\w.@+\\- 一-鿿]*|[一-鿿][\\w.@+\\- 一-鿿]*)|[\\w.@+\\-一-鿿]+)`,Vn=RegExp(`(?:[A-Za-z]:[\\\\/]|\\.{1,2}\\/|\\/)?(?:${Bn}\\/)+${Bn}\\.[A-Za-z0-9]{1,8}(?::\\d+(?:-\\d+)?(?::\\d+)?)?`,`g`),Z=l(),Hn=()=>{let e=(0,ge.c)(4),t=b(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=ne(!1),e[0]=n):n=e[0];let r=n,i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=ne(!0),e[1]=i):i=e[1];let a=i,o;return e[2]===t?.currentTheme?o=e[3]:(o=t?.currentTheme??(typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?a:r),e[2]=t?.currentTheme,e[3]=o),o},Un=e=>{let t=(0,ge.c)(2),{containerRef:n,enabled:r}=e,i;t[0]===r?i=t[1]:(i=e=>{if(r===!1||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;let t=e.target;if(!(t instanceof Element)||t.closest(Q))return;let n=t.closest(`a[href]`);if(!(n instanceof HTMLAnchorElement)||n.getAttribute(`data-openchamber-file-link`)===`true`)return;let i=n.getAttribute(`href`)??``;P(i)&&(e.preventDefault(),e.stopPropagation(),j(i))},t[0]=r,t[1]=i);let a=f(i);p(`click`,a,n)},Q=`img:not([data-md-link-favicon="true"])`,Wn=e=>e.getAttribute(`data-md-image-source`)??e.getAttribute(`src`)??``,Gn=({containerRef:e,effectiveDirectory:n,onShowPopup:r})=>{let i=G.useRef(null);i.current??=t();let a=i.current,o=!!r,s=f(e=>r?.(e)),c=G.useRef(()=>{}),l=G.useRef(new Map),u=G.useRef(null),d=G.useMemo(()=>e=>c.current(e),[]);return G.useLayoutEffect(()=>{let t=l.current;if(u.current!==null&&(clearTimeout(u.current),u.current=null),c.current=()=>{},!o){for(let[e,n]of t)n.controller?.abort(),n.objectUrl&&k(n.objectUrl),t.delete(e);return}let r=e.current;if(!r)return;let i=e=>{let t=Array.from(r.querySelectorAll(Q));if(t.indexOf(e)<0)return;let n=t.map(e=>({url:Wn(e),filename:e.alt||Wn(e)||void 0})).filter(e=>e.url),i=Wn(e),a=n.findIndex(e=>e.url===i),o=e.alt||i;s({open:!0,title:o,content:``,metadata:{tool:`image-preview`,filename:o},image:{url:i,filename:o,gallery:n,index:Math.max(0,a)}})},d=e=>{let n=t.get(e);n&&(n.controller?.abort(),n.objectUrl&&k(n.objectUrl),t.delete(e))},f=e=>{let t=Wn(e),r=x(t,n);if(E(r))return`${a}\n${n}\n${t}`},p=e=>{let n=f(e);if(!n){d(e);return}let r=t.get(e);if(r?.key===n)return r;d(e);let i={key:n};return t.set(e,i),i},m=(e,i)=>{if(i.controller||i.objectUrl||!r.contains(e))return;let a=Wn(e),o=x(a,n);if(!E(o)){d(e);return}let s=new AbortController;i.controller=s,e.setAttribute(`data-md-image-state`,`loading`),e.setAttribute(`aria-busy`,`true`),O(o.path,s.signal).then(n=>{let r=t.get(e);if(!r||r!==i||r.controller!==s||s.signal.aborted){k(n);return}r.controller=void 0,r.objectUrl=n,En(e),e.setAttribute(`data-md-image-state`,`loaded`),e.src=n}).catch(()=>{let n=t.get(e);n===i&&(n.controller=void 0,e.removeAttribute(`aria-busy`),e.setAttribute(`data-md-image-state`,`placeholder`))})};c.current=e=>{for(let[n,r]of t)(!e.contains(n)||f(n)!==r.key)&&d(n);for(let t of Array.from(e.querySelectorAll(Q))){let e=p(t);e&&!e.objectUrl&&m(t,e)}},c.current(r);let h=e=>{let t=p(e);if(t&&!t.objectUrl){m(e,t);return}i(e)},g=e=>{let t=Wn(e);t&&A({sourceUrl:t,displayUrl:e.currentSrc||e.src||void 0,filename:e.alt||t,effectiveDirectory:n})},_=se(),v=e=>Wn(e)||e.src||`markdown-image`,y=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(Q);if(n){if(_.consumeClick(v(n))){e.preventDefault(),e.stopPropagation();return}e.preventDefault(),e.stopPropagation(),h(n)}},b=e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLImageElement)||!t.matches(Q)||(e.preventDefault(),e.stopPropagation(),h(t))},S=e=>{if(e.pointerType===`mouse`&&e.button!==0)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest(Q);n&&_.start({pointerId:e.pointerId,key:v(n),clientX:e.clientX,clientY:e.clientY,onTrigger:()=>g(n)})},C=e=>{_.move(e.pointerId,e.clientX,e.clientY)},w=e=>{_.end(e.pointerId)},T=e=>{_.cancel(e.pointerId)},ee=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(Q);n&&(e.preventDefault(),e.stopPropagation(),_.openFromContextMenu(v(n),()=>g(n)))};return r.addEventListener(`click`,y),r.addEventListener(`keydown`,b),r.addEventListener(`pointerdown`,S),r.addEventListener(`pointermove`,C),r.addEventListener(`pointerup`,w),r.addEventListener(`pointercancel`,T),r.addEventListener(`contextmenu`,ee),()=>{c.current=()=>{},_.reset(),r.removeEventListener(`click`,y),r.removeEventListener(`keydown`,b),r.removeEventListener(`pointerdown`,S),r.removeEventListener(`pointermove`,C),r.removeEventListener(`pointerup`,w),r.removeEventListener(`pointercancel`,T),r.removeEventListener(`contextmenu`,ee),u.current=setTimeout(()=>{u.current=null;for(let e of Array.from(t.keys()))r.contains(e)&&Tn(e),d(e)},0)}},[e,n,o,a]),{reconcileMarkdownImageResources:d,transportIdentity:a}},Kn={download:!0,copy:!0,showPanZoomControls:!0},qn=!0,Jn=e=>{let t=e.match(/^(?:\uFEFF)?(---|\+\+\+)[^\S\r\n]*\r?\n[\s\S]*?\r?\n\1[^\S\r\n]*(?:\r?\n|$)/);return t?e.slice(t[0].length):e},Yn=`[data-openchamber-file-link="true"]`,Xn=`data-openchamber-block-path-token`,Zn=`[${Xn}]`,Qn=`data-openchamber-block-paths-scanned`,$n=`data-openchamber-paragraph-paths-scanned`,er=2e5,tr=4,nr=1e3,rr=200,ir=80,ar=40,or=160,$=new Map,sr=0,cr=[],lr=()=>r()?rr:nr,ur=()=>r()?ar:ir,dr=e=>Nn(e),fr=e=>Pn(e),pr=(e,t)=>C(e,t),mr=e=>Fn(e),hr=e=>{let t=Rn(e);return t?mr(t.path):!1},gr=(e,t)=>{let n=0;for(let r of e){let e=n+r.data.length;if(t<=e)return{node:r,offset:Math.max(0,t-n)};n=e}let r=e.at(-1);return r?{node:r,offset:r.data.length}:null},_r=e=>{let t=e.querySelectorAll(Zn);for(let n of Array.from(t))n.replaceWith(e.ownerDocument.createTextNode(n.textContent??``));let n=e.querySelectorAll(`code[${Qn}]`);for(let e of Array.from(n))e.removeAttribute(Qn),e.normalize();let r=e.querySelectorAll(`[${$n}]`);for(let e of Array.from(r))e.removeAttribute($n),e.normalize()},vr=e=>{if(e.tagName.toLowerCase()===`a`){let t=e.getAttribute(`href`)?.trim();if(t&&hr(t))return t}return(e.textContent||``).trim()},yr=e=>{let t=e.querySelectorAll(`pre code`);if(t.length===0)return;let n=e.ownerDocument;if(n)for(let e of Array.from(t)){if(e.getAttribute(Qn)===`true`)continue;if((e.textContent??``).length>er){e.setAttribute(Qn,`true`);continue}let t=n.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=[],i=t.nextNode();for(;i;)r.push(i),i=t.nextNode();let a=e.textContent??``;if(!a.includes(`.`)){e.setAttribute(Qn,`true`);continue}zn.lastIndex=0;let o=[],s=zn.exec(a);for(;s;){let e=s[0];e&&hr(e)&&o.push({start:s.index,end:s.index+e.length,raw:e}),s=zn.exec(a)}for(let{start:e,end:t,raw:i}of o.reverse()){let a=gr(r,e),o=gr(r,t);if(!a||!o)continue;let s=n.createRange();s.setStart(a.node,a.offset),s.setEnd(o.node,o.offset);let c=n.createElement(`span`);c.setAttribute(Xn,`true`),c.textContent=i,s.deleteContents(),s.insertNode(c)}e.setAttribute(Qn,`true`)}},br=`pre, code, a, script, style, button, [data-openchamber-file-link], [data-openchamber-block-path-token]`,xr=e=>{let t=e.ownerDocument;if(!t)return;let n=e.querySelectorAll(`p, li, blockquote, h1, h2, h3, h4, h5, h6, td, th`);if(n.length!==0)for(let e of Array.from(n)){if(e.getAttribute($n)===`true`)continue;if(e.closest(br)){e.setAttribute($n,`true`);continue}let n=t.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>{let t=e.parentElement;return!t||t.closest(br)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=[],i=n.nextNode();for(;i;)r.push(i),i=n.nextNode();if(r.length===0){e.setAttribute($n,`true`);continue}let a=r.map(e=>e.data).join(``);if(!a.includes(`/`)||!a.includes(`.`)){e.setAttribute($n,`true`);continue}Vn.lastIndex=0;let o=[],s=Vn.exec(a);for(;s;){let e=s[0];if(!e){s=Vn.exec(a);continue}let t=s.index>=2?a.slice(s.index-2,s.index):``;if((s.index>=1?a.charAt(s.index-1):``)===`:`||t===`:/`){s=Vn.exec(a);continue}hr(e)&&o.push({start:s.index,end:s.index+e.length,raw:e}),s=Vn.exec(a)}for(let{start:e,end:n,raw:i}of o.reverse()){let a=gr(r,e),o=gr(r,n);if(!a||!o)continue;let s=t.createRange();s.setStart(a.node,a.offset),s.setEnd(o.node,o.offset);let c=t.createElement(`span`);c.setAttribute(Xn,`true`),c.textContent=i,s.deleteContents(),s.insertNode(c)}e.setAttribute($n,`true`)}},Sr=(e,t)=>{let n=Rn(e);if(!n||!mr(n.path))return null;let r=fr(n.path)?dr(n.path):pr(t,n.path);return r?{...n,resolvedPath:r}:null},Cr=e=>{let t=dr(e);if(!t)return Promise.resolve({exists:!1,isBinary:!1});let n=$.get(t);if(n)return $.delete(t),$.set(t,n),n;let r=new Promise(e=>{let n=()=>{sr+=1,c(`/api/fs/stat?path=${encodeURIComponent(t)}&optional=true`,{method:`GET`,cache:`no-store`}).then(async t=>{if(!t.ok){e({exists:!1,isBinary:!1});return}let n=await t.json().catch(()=>null);e({exists:n?.exists!==!1,isBinary:n?.isBinary===!0})}).catch(()=>e({exists:!1,isBinary:!1})).finally(()=>{sr=Math.max(0,sr-1),cr.shift()?.()})};if(sr<tr){n();return}cr.push(n)}),i=lr();for(;$.size>=i;){let e=$.keys().next().value;if(typeof e!=`string`)break;$.delete(e)}return $.set(t,r),r},wr=(e,t)=>e||S(e,t),Tr=e=>{let t=(0,ge.c)(7),{containerRef:r,effectiveDirectory:c,editor:l,preferRuntimeEditor:u,enabled:d}=e,f=G.useRef(null),p,m;t[0]!==r||t[1]!==l||t[2]!==c||t[3]!==d||t[4]!==u?(p=()=>{let e=r.current;if(!e)return;let t=!1,p=_(),m=ur(),h=d,g=Hr,v=()=>{let t=e.querySelectorAll(Yn);for(let e of Array.from(t))g(e);_r(e)};if(!h){v();return}let y=e=>{let n=e===void 0?0:e;if(f.current!==null&&typeof window<`u`&&window.clearTimeout(f.current),typeof window>`u`){b();return}f.current=window.setTimeout(()=>{f.current=null,window.requestAnimationFrame(()=>{t||b()})},n)},b=()=>{h&&(yr(e),xr(e));let n=e.querySelectorAll(`[data-markdown="inline-code"], a, ${Zn}`),r=0;for(let s of Array.from(n)){let n=Sr(vr(s),c);g(s),n&&(r>=m||(r+=1,(a()&&o()&&!T(n.resolvedPath,c)?i(n.resolvedPath).then(Ur):Cr(n.resolvedPath)).then(r=>{if(t||!r.exists||!e.contains(s))return;let i=vr(s),a=Sr(i,c);!a||a.resolvedPath!==n.resolvedPath||p&&r.isBinary&&!F(a.resolvedPath)||(s.setAttribute(`data-openchamber-file-link`,`true`),s.setAttribute(`data-openchamber-file-ref`,i),s.setAttribute(`data-openchamber-file-path`,a.resolvedPath),s.setAttribute(`data-openchamber-file-binary`,String(r.isBinary)),s.setAttribute(`title`,`Open file`),s.tagName.toLowerCase()!==`a`&&(s.setAttribute(`role`,`button`),s.setAttribute(`tabindex`,`0`)))})))}},x=async e=>{let t=Sr(e.getAttribute(`data-openchamber-file-ref`)||vr(e),c);if(!t)return;let r=e.getAttribute(`data-openchamber-file-binary`)===`true`,i=t.resolvedPath.toLowerCase().endsWith(`.app`);if((r||i)&&!F(t.resolvedPath)&&await s(t.resolvedPath))return;let a=wr(c,t.resolvedPath);if(u&&l){l.openFile(t.resolvedPath,Number.isFinite(t.line??NaN)?Math.max(1,Math.trunc(t.line)):void 0,Number.isFinite(t.column??NaN)?Math.max(1,Math.trunc(t.column)):void 0);return}T(t.resolvedPath,c)||await z(t.resolvedPath,c);let o=n.getState();Number.isFinite(t.line??NaN)?o.openContextFileAtLine(a,t.resolvedPath,Math.max(1,Math.trunc(t.line)),Number.isFinite(t.column??NaN)?Math.max(1,Math.trunc(t.column)):1):o.openContextFile(a,t.resolvedPath)},S=e=>{let t=e.target;if(!(t instanceof Element)||t.closest(Q))return;let n=t.closest(Yn);n instanceof HTMLElement&&(e.preventDefault(),e.stopPropagation(),x(n))},C=e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||t.getAttribute(`data-openchamber-file-link`)!==`true`||(e.preventDefault(),e.stopPropagation(),x(t))};y(or);let w=new MutationObserver(()=>{y(or)});return w.observe(e,{childList:!0,subtree:!0}),e.addEventListener(`click`,S),e.addEventListener(`keydown`,C),()=>{t=!0,f.current!==null&&typeof window<`u`&&window.clearTimeout(f.current),f.current=null,w.disconnect(),e.removeEventListener(`click`,S),e.removeEventListener(`keydown`,C)}},m=[r,l,c,u,d],t[0]=r,t[1]=l,t[2]=c,t[3]=d,t[4]=u,t[5]=p,t[6]=m):(p=t[5],m=t[6]),G.useEffect(p,m)},Er=({containerRef:e,onShowPopup:t,enableFullscreen:n,enablePanZoom:r,allowMermaidWheelEvents:i})=>{let a=f(e=>t?.(e)),o=!!t,s=f(t=>{if(!n||!o)return;let r=e.current;if(!r)return;let i=t.target;if(!(i instanceof Element)||i.closest(`button, a, [role="button"]`))return;let s=i.closest(Ot);if(!s)return;if(s instanceof HTMLElement&&s.hasAttribute(`data-mermaid-suppress-click`)){s.removeAttribute(`data-mermaid-suppress-click`);return}let c=Array.from(r.querySelectorAll(Ot)).indexOf(s);if(c<0)return;let l=s instanceof HTMLElement?s.getAttribute(`data-md-source`):null;if(!l||l.trim().length===0)return;let u=`Diagram ${c+1}`;a({open:!0,title:u,content:``,metadata:{tool:`mermaid-preview`,filename:u},mermaid:{url:`data:text/plain;charset=utf-8,${encodeURIComponent(l)}`,source:l,filename:u}})}),c=f(e=>{if(i||r)return;let t=e.target;t instanceof Element&&t.closest(`[data-markdown="mermaid-block"]`)&&e.stopPropagation()});p(`click`,s,e),G.useEffect(()=>{let t=e.current;if(t)return t.addEventListener(`wheel`,c,{capture:!0,passive:!0}),()=>{t.removeEventListener(`wheel`,c,!0)}},[e])},Dr=24,Or=/[\s.,!?;:)\]]/,kr=(e,t)=>{let n=e<=12?2:e<=48?4:e<=96?8:Math.min(24,Math.ceil(e/8));return Math.max(1,Math.round(t/Dr*n))},Ar=(e,t,n)=>{let r=Math.min(e.length,t+kr(e.length-t,n));for(let t=r;t<Math.min(e.length,r+8);t+=1)if(Or.test(e[t]??``))return t+1;return r},jr=(e,t,n)=>{let[r,i]=G.useState(()=>t?0:e.length),a=G.useRef(r);return a.current=r,G.useEffect(()=>{if(!t||typeof window>`u`){i(e.length);return}a.current>e.length&&i(e.length);let r=null,o=()=>{let t=Math.min(a.current,e.length);if(t>=e.length){r=null;return}i(Ar(e,t,n)),r=window.setTimeout(o,n)};return a.current<e.length&&(r=window.setTimeout(o,n)),()=>{r!==null&&window.clearTimeout(r)}},[e,t,n]),t?e.slice(0,Math.min(r,e.length)):e},Mr=new L({maxEntries:100,maxBytes:8388608}),Nr=(e,t)=>{let n=Mr.get(e);if(n)return n;let r=t(),i=((r.svg?.length??0)+(r.ascii?.length??0))*2;return Mr.set(e,r,e.length*2+i),r},Pr=e=>({bg:e.colors.surface.elevated,fg:e.colors.surface.foreground,line:e.colors.interactive.border,accent:e.colors.primary.base,muted:e.colors.surface.mutedForeground,surface:e.colors.surface.muted,border:e.colors.interactive.border,transparent:!0,font:`system-ui, sans-serif`}),Fr=(e,r,i,a=Kn,o=t(),s=``,c=!1)=>{let{t:l}=h(),u=G.useMemo(()=>({copy:l(`markdownRenderer.code.actions.copyTitle`),copied:l(`markdownRenderer.code.actions.copiedTitle`),enableCodeWrap:l(`markdownRenderer.code.actions.enableWrapTitle`),disableCodeWrap:l(`markdownRenderer.code.actions.disableWrapTitle`),copyDiagram:l(`markdownRenderer.mermaid.actions.copySourceTitle`),downloadDiagram:l(`markdownRenderer.mermaid.actions.downloadSvgTitle`),zoomInDiagram:l(`markdownRenderer.mermaid.actions.zoomInTitle`),zoomOutDiagram:l(`markdownRenderer.mermaid.actions.zoomOutTitle`),resetDiagramView:l(`markdownRenderer.mermaid.actions.resetViewTitle`),previewLabel:l(`terminalView.preview.open`),previewTitle:l(`terminalView.preview.openTitle`)}),[l]),d=n(e=>e.codeBlockLineWrap),p=n(e=>e.setCodeBlockLineWrap),m=f(()=>{p(!n.getState().codeBlockLineWrap)});return G.useMemo(()=>{let t=Pr(e),l=n.getState().mermaidRenderingMode,f=e.metadata?.id??`theme`;return{labels:u,mermaidControls:a,codeBlockLineWrap:d,deferCodeLineNumberSync:r,onToggleCodeBlockLineWrap:m,renderMermaid:e=>Nr(`${f}:${l}:${e}`,()=>{try{return l===`ascii`?{ascii:me(e)}:{svg:pe(e,t)}}catch{return{}}}),onPreviewLoopback:i,imageTransportIdentity:o,imageEffectiveDirectory:s,imagePreviewEnabled:c}},[e,u,a,d,r,i,o,s,c])},Ir=({containerRef:e,text:t,streaming:n,cacheKey:r,syntaxVars:i,ctx:a,reconcileMarkdownImageResources:o,onRichContentReady:s})=>{G.useEffect(()=>{te()},[]);let c=G.useRef(null),l=f(()=>{s?.()}),u=f(()=>{let t=e.current;if(t){if(!c.current){if(!kt(t))return;c.current=Xt(t);return}c.current.refresh()}});G.useLayoutEffect(()=>{let r=e.current,i=r?.querySelector(`[data-markdown-content]`)??r;if(i&&t&&i.childNodes.length===0){for(let e of pt(t)){let t=document.createElement(`div`);t.setAttribute(`data-md-block`,``),t.style.display=`contents`,t.innerHTML=e,On(t,a),i.appendChild(t)}o(i),n||l()}},[e,a,o,n,t]),G.useEffect(()=>()=>{c.current?.cleanup(),c.current=null},[]),G.useEffect(()=>{let i=e.current;if(!i)return;let s=i.querySelector(`[data-markdown-content]`)??i,c=!0,d=new AbortController,f=()=>{},p=()=>{},m=()=>{if(!c||n||d.signal.aborted)return;s.replaceChildren();let e=document.createElement(`div`);e.setAttribute(`data-md-block`,``),e.setAttribute(`data-md-render-fallback`,`text`),e.style.display=`contents`;let r=document.createElement(`span`);r.style.whiteSpace=`pre-wrap`,r.textContent=t,e.appendChild(r),s.appendChild(e),o(s),l()},h=e=>{if(!c)return;let t=Array.from(s.children);e.forEach((e,n)=>{let r=t[n];if(r||(r=document.createElement(`div`),r.setAttribute(`data-md-block`,``),r.style.display=`contents`,s.appendChild(r)),r.getAttribute(`data-md-id`)===e.id)return;let i=document.createElement(`div`);i.innerHTML=e.html,On(i,a);let o=kt(r),c=kt(i);fe(r,i,{childrenOnly:!0,onBeforeElUpdated:(e,t)=>{if(e instanceof HTMLImageElement&&t instanceof HTMLImageElement){let n=e.getAttribute(`data-md-image-source`);if(n&&n===t.getAttribute(`data-md-image-source`)){let n=e.getAttribute(`src`);n===null?t.removeAttribute(`src`):t.setAttribute(`src`,n),t.className=e.className;for(let n of[`data-md-image-state`,`data-md-placeholder-source`,`aria-busy`]){let r=e.getAttribute(n);r===null?t.removeAttribute(n):t.setAttribute(n,r)}}}return!e.isEqualNode(t)}}),r.setAttribute(`data-md-id`,e.id),(o||c||kt(r))&&u()});let n=kt(s),r=!1;for(let n=t.length-1;n>=e.length;--n){let e=t[n];e&&kt(e)&&(r=!0),e?.remove()}(r||t.length>e.length&&n)&&u(),o(s),a.deferCodeLineNumberSync||dn(s,a.codeBlockLineWrap,a.labels),l()},g=e=>{try{h(e)}catch{m()}},_=()=>{_t(t,n,r,d.signal).then(e=>{if(c){if(n){g(e);return}p=ce(()=>g(e),{priority:`visible`})}}).catch(m)};return n?_():f=ce(_,{priority:`visible`}),()=>{c=!1,d.abort(),f(),p()}},[e,t,n,r,a,o]),G.useEffect(()=>{let t=e.current;if(t)return An(t,a)},[e,a]),G.useEffect(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;if(n)for(let[e,t]of Object.entries(i))n.style.setProperty(e,t)},[e,i]),G.useEffect(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;n&&(a.deferCodeLineNumberSync||dn(n,a.codeBlockLineWrap,a.labels))},[e,a.codeBlockLineWrap,a.deferCodeLineNumberSync,a.labels]);let d=G.useRef(null),p=f(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;n&&(d.current!==null&&window.cancelAnimationFrame(d.current),d.current=window.requestAnimationFrame(()=>{d.current=null,ln(n)}))});m(e,p),G.useEffect(()=>()=>{d.current!==null&&window.cancelAnimationFrame(d.current)},[])},Lr=e=>e===`tool`?`markdown-content markdown-tool`:e===`reasoning`?`markdown-content markdown-reasoning`:`markdown-content leading-relaxed`,Rr=e=>{let t=(0,ge.c)(4),[n,r]=G.useState(e),i=G.useRef(e),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>{i.current||(i.current=!0,r(!0))},t[0]=a):a=t[0];let o=f(a),s;return t[1]!==o||t[2]!==n?(s=[n,o],t[1]=o,t[2]=n,t[3]=s):s=t[3],s},zr=(e,t,n)=>{let r=G.useRef(n);r.current=n;let i=G.useRef(t);i.current=t;let a=f(e=>{if(!r.current)return;let t=e[0];if(!t)return;let n=t.borderBoxSize?.[0],a=n?n.blockSize:t.contentRect.height,o=n?n.inlineSize:t.contentRect.width;I(i.current,a,o)});m(e,a)},Br=G.memo(e=>{let t=(0,ge.c)(49),{content:r,part:i,messageId:a,isAnimated:o,skipFadeIn:s,className:c,isStreaming:l,disableStreamAnimation:u,variant:d,onShowPopup:p,enableFileReferences:m}=e,h=o===void 0||o,g=s!==void 0&&s,_=l!==void 0&&l,b=u!==void 0&&u,x=d===void 0?`assistant`:d,S=m===void 0||m,C=Hn(),{editor:w,runtime:T}=re(),E=G.useRef(null),D=oe()??``,O=n(Wr),k;t[0]!==D||t[1]!==O?(k=e=>{D&&O(D,e)},t[0]=D,t[1]=O,t[2]=k):k=t[2];let te=f(k),A=_&&!b,ne;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(ne=ue(v()),t[3]=ne):ne=t[3];let j=jr(r,A,ne.markdownPaceMs),[M,N]=Rr(A),P;t[4]===p?P=t[5]:(P={containerRef:E,onShowPopup:p,enableFullscreen:qn,enablePanZoom:Kn.showPanZoomControls},t[4]=p,t[5]=P),Er(P);let F=S&&!_,I;t[6]!==w||t[7]!==D||t[8]!==T.isVSCode||t[9]!==F?(I={containerRef:E,effectiveDirectory:D,editor:w,preferRuntimeEditor:T.isVSCode,enabled:F},t[6]=w,t[7]=D,t[8]=T.isVSCode,t[9]=F,t[10]=I):I=t[10],Tr(I);let L;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(L={containerRef:E},t[11]=L):L=t[11],Un(L);let R;t[12]!==D||t[13]!==p?(R={containerRef:E,effectiveDirectory:D,onShowPopup:p},t[12]=D,t[13]=p,t[14]=R):R=t[14];let{reconcileMarkdownImageResources:z,transportIdentity:B}=Gn(R),V;t[15]===C?V=t[16]:(V=ee(C),t[15]=C,t[16]=V);let se=V,ce=Fr(C,A,D?te:void 0,Kn,B,D,!!p),de=`markdown-${i?.id?`part-${i.id}`:`message-${a}`}`,fe;t[17]!==de||t[18]!==ce||t[19]!==A||t[20]!==j||t[21]!==z||t[22]!==N||t[23]!==se?(fe={containerRef:E,text:j,streaming:A,cacheKey:de,syntaxVars:se,ctx:ce,reconcileMarkdownImageResources:z,onRichContentReady:N},t[17]=de,t[18]=ce,t[19]=A,t[20]=j,t[21]=z,t[22]=N,t[23]=se,t[24]=fe):fe=t[24],Ir(fe);let pe;t[25]!==r||t[26]!==x?(pe=ae(r,x),t[25]=r,t[26]=x,t[27]=pe):pe=t[27],zr(E,pe,M&&!A);let me=!M||void 0,H;t[28]===c?H=t[29]:(H=y(`relative break-words w-full min-w-0`,c),t[28]=c,t[29]=H);let U;t[30]!==j||t[31]!==M||t[32]!==x?(U=!M&&(0,Z.jsx)(`div`,{className:y(Lr(x),`pointer-events-none absolute inset-0 overflow-hidden`),children:(0,Z.jsx)(ie,{content:j})}),t[30]=j,t[31]=M,t[32]=x,t[33]=U):U=t[33];let he=!M||void 0,W;t[34]!==M||t[35]!==x?(W=y(Lr(x),!M&&`invisible`),t[34]=M,t[35]=x,t[36]=W):W=t[36];let K;t[37]!==he||t[38]!==W?(K=(0,Z.jsx)(`div`,{"aria-hidden":he,className:W,"data-markdown-content":!0}),t[37]=he,t[38]=W,t[39]=K):K=t[39];let _e;t[40]!==me||t[41]!==H||t[42]!==U||t[43]!==K?(_e=(0,Z.jsxs)(`div`,{"aria-busy":me,className:H,ref:E,children:[U,K]}),t[40]=me,t[41]=H,t[42]=U,t[43]=K,t[44]=_e):_e=t[44];let ve=_e;if(h){let e;return t[45]!==de||t[46]!==ve||t[47]!==g?(e=(0,Z.jsx)(le,{skipAnimation:g,children:ve},de),t[45]=de,t[46]=ve,t[47]=g,t[48]=e):e=t[48],e}return ve},(e,t)=>e.content===t.content&&e.isStreaming===t.isStreaming&&e.disableStreamAnimation===t.disableStreamAnimation&&e.variant===t.variant&&e.isAnimated===t.isAnimated&&e.skipFadeIn===t.skipFadeIn&&e.className===t.className&&e.messageId===t.messageId&&e.onShowPopup===t.onShowPopup&&e.enableFileReferences===t.enableFileReferences&&e.part?.id===t.part?.id),Vr=G.memo(e=>{let t=(0,ge.c)(43),{content:n,className:r,variant:i,disableLinkSafety:a,stripFrontmatter:o,onShowPopup:s,mermaidControls:c,allowMermaidWheelEvents:l,enableFileReferences:u}=e,d=i===void 0?`assistant`:i,f=o!==void 0&&o,p=c===void 0?Kn:c,m=l!==void 0&&l,h=u===void 0||u,{editor:g,runtime:_}=re(),v=Hn(),b=G.useRef(null),[x,S]=Rr(!1),C=oe()??``,w;t[0]!==n||t[1]!==f?(w=f?Jn(n):n,t[0]=n,t[1]=f,t[2]=w):w=t[2];let T=w,E;t[3]!==m||t[4]!==p.showPanZoomControls||t[5]!==s?(E={containerRef:b,onShowPopup:s,enableFullscreen:qn,enablePanZoom:p.showPanZoomControls,allowMermaidWheelEvents:m},t[3]=m,t[4]=p.showPanZoomControls,t[5]=s,t[6]=E):E=t[6],Er(E);let D;t[7]!==g||t[8]!==C||t[9]!==h||t[10]!==_.isVSCode?(D={containerRef:b,effectiveDirectory:C,editor:g,preferRuntimeEditor:_.isVSCode,enabled:h},t[7]=g,t[8]=C,t[9]=h,t[10]=_.isVSCode,t[11]=D):D=t[11],Tr(D);let O=!a,k;t[12]===O?k=t[13]:(k={containerRef:b,enabled:O},t[12]=O,t[13]=k),Un(k);let te;t[14]!==C||t[15]!==s?(te={containerRef:b,effectiveDirectory:C,onShowPopup:s},t[14]=C,t[15]=s,t[16]=te):te=t[16];let{reconcileMarkdownImageResources:A,transportIdentity:ne}=Gn(te),j;t[17]===v?j=t[18]:(j=ee(v),t[17]=v,t[18]=j);let M=j,N=Fr(v,!1,void 0,p,ne,C,!!s),P=`simple:${d}`,F;t[19]!==N||t[20]!==A||t[21]!==T||t[22]!==S||t[23]!==M||t[24]!==P?(F={containerRef:b,text:T,streaming:!1,cacheKey:P,syntaxVars:M,ctx:N,reconcileMarkdownImageResources:A,onRichContentReady:S},t[19]=N,t[20]=A,t[21]=T,t[22]=S,t[23]=M,t[24]=P,t[25]=F):F=t[25],Ir(F);let ae=!x||void 0,I;t[26]===r?I=t[27]:(I=y(`relative break-words w-full min-w-0`,r),t[26]=r,t[27]=I);let L;t[28]!==T||t[29]!==x||t[30]!==d?(L=!x&&(0,Z.jsx)(`div`,{className:y(Lr(d),`pointer-events-none absolute inset-0 overflow-hidden`),children:(0,Z.jsx)(ie,{content:T})}),t[28]=T,t[29]=x,t[30]=d,t[31]=L):L=t[31];let R=!x||void 0,z;t[32]!==x||t[33]!==d?(z=y(Lr(d),!x&&`invisible`),t[32]=x,t[33]=d,t[34]=z):z=t[34];let B;t[35]!==R||t[36]!==z?(B=(0,Z.jsx)(`div`,{"aria-hidden":R,className:z,"data-markdown-content":!0}),t[35]=R,t[36]=z,t[37]=B):B=t[37];let V;return t[38]!==ae||t[39]!==I||t[40]!==L||t[41]!==B?(V=(0,Z.jsxs)(`div`,{"aria-busy":ae,className:I,ref:b,children:[L,B]}),t[38]=ae,t[39]=I,t[40]=L,t[41]=B,t[42]=V):V=t[42],V},(e,t)=>{let n=e.mermaidControls??Kn,r=t.mermaidControls??Kn;return e.content===t.content&&e.variant===t.variant&&e.className===t.className&&e.disableLinkSafety===t.disableLinkSafety&&e.stripFrontmatter===t.stripFrontmatter&&e.onShowPopup===t.onShowPopup&&n.download===r.download&&n.copy===r.copy&&n.showPanZoomControls===r.showPanZoomControls&&e.allowMermaidWheelEvents===t.allowMermaidWheelEvents&&e.enableFileReferences===t.enableFileReferences});function Hr(e){e.removeAttribute(`data-openchamber-file-link`),e.removeAttribute(`data-openchamber-file-ref`),e.removeAttribute(`data-openchamber-file-path`),e.removeAttribute(`data-openchamber-file-binary`),e.getAttribute(`title`)===`Open file`&&e.removeAttribute(`title`),e.tagName.toLowerCase()!==`a`&&(e.removeAttribute(`role`),e.removeAttribute(`tabindex`))}function Ur(e){return{exists:!0,isBinary:e===!0}}function Wr(e){return e.openContextPreview}export{Br as MarkdownRenderer,Vr as SimpleMarkdownRenderer};
|
|
7
|
+
`,l),n=t===-1?s.length:t,i=r[e];if(!i)continue;let o=rn(c,l),u=rn(c,n);!o||!u||l===n?sn(i,a,a):sn(i,cn(o,u,a),a),l=n+1}}},un=e=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>ln(e))})},dn=(e,t,n)=>{let r=e.querySelectorAll(`[data-component="markdown-code"]`);for(let e of Array.from(r)){let r=e.querySelector(`[data-md-code-body]`),i=e.querySelector(`pre`);r&&i&&!r.querySelector(`[data-md-code-line-numbers]`)&&(r.classList.add(`flex`,`gap-3`),r.insertBefore(tn(i),i)),en(e,t,n)}un(e)},fn=(e,t,n,r)=>{$t(e,Zt.check),e.setAttribute(`title`,t),e.setAttribute(`aria-label`,t),window.setTimeout(()=>{$t(e,Zt[n]),e.setAttribute(`title`,r),e.setAttribute(`aria-label`,r)},2e3)},pn=e=>{let t=e.querySelectorAll(`:not(pre) > code`);for(let e of Array.from(t))e.getAttribute(`data-markdown`)!==`inline-code`&&e.setAttribute(`data-markdown`,`inline-code`)},mn=(e,t)=>{let n=e.querySelectorAll(`pre`);for(let e of Array.from(n)){if(e.querySelector(`code.language-mermaid`))continue;let n=e.parentElement;if(!n||n.closest(`[data-component="markdown-code"]`))continue;let r=e.querySelector(`code`)?.className.match(/language-([^\s"]+)/)?.[1],i=e.getAttribute(`data-md-label`)??e.getAttribute(`data-md-lang`)??xe(r).label,a=document.createElement(`div`);a.setAttribute(`data-component`,`markdown-code`),a.className=`my-4 group overflow-hidden rounded-2xl border border-border/80 bg-[var(--surface-elevated)]`;let o=document.createElement(`div`);o.className=`flex items-center justify-between border-b border-border/70 px-3 py-1.5`;let s=document.createElement(`span`);s.className=`font-mono text-[13px] text-muted-foreground`,s.textContent=i;let c=X(`copy`,t.labels.copy,`copy-code`),l=X(`textWrap`,t.codeBlockLineWrap?t.labels.disableCodeWrap:t.labels.enableCodeWrap,`toggle-code-wrap`);o.appendChild(s);let u=document.createElement(`div`);u.className=`flex items-center gap-1`,u.appendChild(l),u.appendChild(c),o.appendChild(u);let d=document.createElement(`div`);d.setAttribute(`data-md-code-body`,``),d.className=`px-3 py-2.5 overflow-x-auto`,n.replaceChild(a,e),e.style.margin=`0`,e.style.background=`transparent`,e.classList.add(`min-w-0`,`w-full`,`flex-1`),d.appendChild(e),a.appendChild(o),a.appendChild(d),en(a,t.codeBlockLineWrap,t.labels)}},hn=e=>{let t=e.querySelectorAll(`table`);for(let e of Array.from(t)){if(e.closest(`[data-markdown="table-wrapper"]`))continue;let t=document.createElement(`div`);t.className=`my-4`,t.setAttribute(`data-markdown`,`table-wrapper`);let n=document.createElement(`div`);n.setAttribute(`data-markdown`,`table-scroll`);let r=e.parentElement;if(r){r.replaceChild(t,e),e.setAttribute(`data-markdown`,`table`);for(let t of Array.from(e.querySelectorAll(`tr`)))t.setAttribute(`data-markdown`,`table-row`);for(let t of Array.from(e.querySelectorAll(`th`)))t.setAttribute(`data-markdown`,`table-header-cell`);for(let t of Array.from(e.querySelectorAll(`td`)))t.setAttribute(`data-markdown`,`table-cell`);n.appendChild(e),t.appendChild(n)}}},gn=(e,t)=>{let n=e.querySelectorAll(`pre > code.language-mermaid`);for(let e of Array.from(n)){let n=e.parentElement;if(!n)continue;let r=(e.textContent??``).replace(/\s+$/,``),i=t.renderMermaid(r),a=document.createElement(`div`);a.setAttribute(`data-markdown`,`mermaid-block`),a.setAttribute(`data-md-source`,r),a.className=`group relative`;let o=document.createElement(`div`);o.setAttribute(`data-markdown`,`mermaid-scroll`);let s=document.createElement(`div`);if(s.setAttribute(`data-markdown`,`mermaid-toolbar`),s.className=`absolute top-1 right-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity`,i.svg){a.setAttribute(`data-mermaid-render`,`svg`);let e=document.createElement(`div`);e.setAttribute(`data-markdown`,`mermaid-viewport`);let n=document.createElement(`div`);if(n.setAttribute(`data-markdown`,`mermaid`),n.setAttribute(`data-md-original-svg`,i.svg),n.innerHTML=i.svg,e.appendChild(n),o.appendChild(e),t.mermaidControls.showPanZoomControls&&(s.appendChild(X(`zoomIn`,t.labels.zoomInDiagram,`mermaid-zoom-in`)),s.appendChild(X(`zoomOut`,t.labels.zoomOutDiagram,`mermaid-zoom-out`)),s.appendChild(X(`fit`,t.labels.resetDiagramView,`mermaid-fit`))),t.mermaidControls.copy){let e=X(`copy`,t.labels.copyDiagram,`mermaid-copy`);e.setAttribute(`data-md-source`,r),s.appendChild(e)}if(t.mermaidControls.download){let e=X(`download`,t.labels.downloadDiagram,`mermaid-download`);e.setAttribute(`data-md-svg`,`1`),s.appendChild(e)}}else{a.setAttribute(`data-mermaid-render`,`ascii`);let e=document.createElement(`pre`);if(e.setAttribute(`data-markdown`,`mermaid-ascii`),e.textContent=i.ascii||r,o.appendChild(e),t.mermaidControls.copy){let e=X(`copy`,t.labels.copyDiagram,`mermaid-copy`);e.setAttribute(`data-md-source`,i.ascii||r),s.appendChild(e)}}a.appendChild(o),a.appendChild(s);let c=n.parentElement;c&&c.replaceChild(a,n)}},_n=(e,t)=>{let n=e.querySelectorAll(`a[href]`);for(let e of Array.from(n)){if(e.getAttribute(`data-md-link-decorated`)===`true`||e.getAttribute(`data-openchamber-file-link`)===`true`)continue;let n=e.getAttribute(`href`)??``;if(!P(n))continue;e.setAttribute(`data-md-link-decorated`,`true`);let r=N(n);if(r){let t=document.createElement(`span`);t.className=`mr-1 inline-flex size-[18px] items-center justify-center rounded border border-[var(--border)] bg-[var(--interactive-hover)] align-middle`;let n=document.createElement(`img`);n.setAttribute(`data-md-link-favicon`,`true`),n.src=r,n.alt=``,n.setAttribute(`aria-hidden`,`true`),n.loading=`lazy`,n.decoding=`async`,n.className=`size-3.5 rounded-sm`,n.addEventListener(`error`,()=>t.remove(),{once:!0}),t.appendChild(n),e.parentNode?.insertBefore(t,e)}if(t.onPreviewLoopback&&M(n)){let r=document.createElement(`button`);r.type=`button`,r.className=`ml-1 align-middle ${Qt}`,r.setAttribute(`data-md-action`,`preview-loopback`),r.setAttribute(`data-md-url`,n),r.setAttribute(`title`,t.labels.previewTitle),r.setAttribute(`aria-label`,t.labels.previewLabel),$t(r,Zt.download),e.parentNode?.insertBefore(r,e.nextSibling)}}},vn=`img:not([data-md-link-favicon="true"])`,yn=`[data-md-image-presentation="true"]`,bn=`data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="576" height="324" viewBox="0 0 576 324"%3E%3C/svg%3E`,xn=[`block`,`max-w-full`,`rounded-xl`,`border`,`border-border/80`,`bg-[var(--surface-muted)]`,`transition-colors`,`focus-visible:outline`,`focus-visible:outline-2`,`focus-visible:outline-offset-2`,`focus-visible:outline-[var(--interactive-focus-ring)]`],Sn=[`cursor-pointer`,`hover:bg-interactive-hover/60`],Cn=[`aspect-video`,`h-auto`,`w-full`,`max-w-xl`,`object-contain`],wn=e=>{let t=e.parentElement;if(t?.matches(yn))return t;let n=document.createElement(`span`);n.setAttribute(`data-md-image-presentation`,`true`),n.className=`relative my-4 block w-fit max-w-full`;let r=document.createElement(`span`);r.setAttribute(`data-md-image-placeholder-visual`,`true`),r.setAttribute(`aria-hidden`,`true`),r.className=`pointer-events-none absolute inset-0 flex items-center justify-center text-muted-foreground`;let i=document.createElement(`span`);i.className=`relative flex size-14 items-center justify-center rounded-2xl border border-border/80 bg-[var(--surface-elevated)] shadow-sm`,$t(i,Zt.image);let a=document.createElement(`span`);a.setAttribute(`data-md-image-download-badge`,`true`),a.className=`absolute -right-1.5 -bottom-1.5 flex size-6 items-center justify-center rounded-full border border-border bg-[var(--surface-elevated)] text-foreground shadow-sm`,$t(a,Zt.imageDownload);let o=document.createElement(`span`);return o.setAttribute(`data-md-image-loading-badge`,`true`),o.className=`absolute -right-1.5 -bottom-1.5 hidden size-6 items-center justify-center rounded-full border border-border bg-[var(--surface-elevated)] text-foreground shadow-sm`,$t(o,Zt.imageLoading),i.appendChild(a),i.appendChild(o),r.appendChild(i),t?.replaceChild(n,e),n.appendChild(e),n.appendChild(r),n},Tn=e=>{e.src=bn,e.setAttribute(`data-md-placeholder-source`,bn),e.setAttribute(`data-md-image-state`,`placeholder`),e.classList.add(...Cn)},En=e=>{e.removeAttribute(`data-md-image-state`),e.removeAttribute(`data-md-placeholder-source`),e.removeAttribute(`aria-busy`),e.classList.remove(...Cn)},Dn=(e,t)=>{if(!t.imagePreviewEnabled)return;let n=e.querySelectorAll(vn);for(let e of Array.from(n)){let n=e.getAttribute(`data-md-image-source`)??e.getAttribute(`src`)??``,r=x(n,t.imageEffectiveDirectory);E(r)&&(e.classList.add(...xn,...Sn),e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`data-md-image-source`,n),wn(e),Tn(e))}},On=(e,t)=>{pn(e),gn(e,t),mn(e,t),hn(e),_n(e,t),Dn(e,t)},kn=(e,t,n)=>{let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)},An=(e,t)=>{let n=e=>{let n=e.target;if(!(n instanceof Element))return;let r=n.closest(`[data-md-action]`);if(!r)return;let i=r.getAttribute(`data-md-action`)??``;if(i===`copy-code`){let e=r.closest(`[data-component="markdown-code"]`)?.querySelector(`code`)?.textContent??``;e&&g(e).then(()=>fn(r,t.labels.copied,`copy`,t.labels.copy));return}if(i===`toggle-code-wrap`){e.preventDefault(),t.onToggleCodeBlockLineWrap?.();return}if(i===`mermaid-copy`){let e=r.getAttribute(`data-md-source`)??``;e&&g(e).then(()=>fn(r,t.labels.copied,`copy`,t.labels.copyDiagram));return}if(i===`mermaid-zoom-in`||i===`mermaid-zoom-out`||i===`mermaid-fit`){e.preventDefault();let t=Ht(r.closest(`[data-markdown="mermaid-block"]`));i===`mermaid-zoom-in`?t?.zoomIn():i===`mermaid-zoom-out`?t?.zoomOut():t?.fit();return}if(i===`mermaid-download`){let e=r.closest(`[data-markdown="mermaid-block"]`)?.querySelector(`[data-markdown="mermaid"]`),t=e?.getAttribute(`data-md-original-svg`)??e?.innerHTML??``;t&&kn(`diagram.svg`,t,`image/svg+xml;charset=utf-8`);return}if(i===`preview-loopback`){e.preventDefault();let n=r.getAttribute(`data-md-url`)??``;n&&t.onPreviewLoopback?.(n);return}};return e.addEventListener(`click`,n),()=>e.removeEventListener(`click`,n)},jn=new Set([`dockerfile`,`makefile`,`readme`,`license`,`.env`,`.gitignore`,`.npmrc`]),Mn=Array.from(jn).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),Nn=e=>w(e),Pn=e=>D(e),Fn=e=>{if(!e||e.startsWith(`--`)||e.includes(`://`)||/[<>]/.test(e)||/\s{2,}/.test(e))return!1;let t=Nn(e),n=t.split(`/`).filter(Boolean).pop()??t;if(!n||n===`.`||n===`..`)return!1;let r=n.toLowerCase();return jn.has(r)||r.startsWith(`.`)&&r.length>1?!0:!t.includes(`/`)&&/^\d+\.\d+$/.test(n)?!1:/\.[A-Za-z0-9_-]{1,16}$/.test(n)},In=e=>{let t=(e||``).trim();return t?((t.startsWith("`")&&t.endsWith("`")||t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))&&(t=t.slice(1,-1).trim()),t=t.replace(/[.,;!?]+$/g,``),t.endsWith(`)`)&&!t.includes(`(`)&&(t=t.slice(0,-1)),t.endsWith(`]`)&&!t.includes(`[`)&&(t=t.slice(0,-1)),t):``},Ln=e=>{let t=In(e);if(!t)return``;let n=t.indexOf(`;`);n>=0&&(t=t.slice(0,n)),t=t.replace(/#.*$/,``);let r=t.match(/^(.*\.[A-Za-z0-9_-]{1,16}):.*$/);r&&(t=r[1]??t);let i=Mn.length>0?t.match(RegExp(`^(.*(?:/|^)(${Mn})):.*$`,`i`)):null;return i&&(t=i[1]??t),In(t)},Rn=e=>{let t=In(e);if(!t)return null;let n=t.indexOf(`;`),r=n>=0?In(t.slice(0,n)):t;if(!r)return null;let i=r.match(/^(.*?):(\d+)-(\d+)$/);if(i){let e=Ln(i[1]??``),t=Number.parseInt(i[2]??``,10),n=Number.parseInt(i[3]??``,10);return!e||!Number.isFinite(t)||!Number.isFinite(n)||n<t?null:{path:e,line:t,endLine:n}}let a=r.match(/^(.*)#L(\d+)(?:C(\d+))?$/i);if(a){let e=Ln(a[1]??``),t=Number.parseInt(a[2]??``,10),n=a[3]?Number.parseInt(a[3],10):void 0;return!e||!Number.isFinite(t)?null:{path:e,line:t,column:Number.isFinite(n??NaN)?n:void 0}}let o=r.match(/^(.*?):(\d+)(?::(\d+))?$/);if(o){let e=Ln(o[1]??``),t=Number.parseInt(o[2]??``,10),n=o[3]?Number.parseInt(o[3],10):void 0;return!e||!Number.isFinite(t)?null:{path:e,line:t,column:Number.isFinite(n??NaN)?n:void 0}}let s=Ln(r);return s?{path:s}:null},zn=/(?:[A-Za-z]:[\\/])?[\w.\-/@+]*[\w\-/@+]\.[A-Za-z0-9]{1,8}(?::\d+(?:-\d+)?(?::\d+)?)?/g,Bn=`(?:(?:[0-9][\\w.@+\\- 一-鿿]*|[一-鿿][\\w.@+\\- 一-鿿]*)|[\\w.@+\\-一-鿿]+)`,Vn=RegExp(`(?:[A-Za-z]:[\\\\/]|\\.{1,2}\\/|\\/)?(?:${Bn}\\/)+${Bn}\\.[A-Za-z0-9]{1,8}(?::\\d+(?:-\\d+)?(?::\\d+)?)?`,`g`),Z=l(),Hn=()=>{let e=(0,ge.c)(4),t=b(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=ne(!1),e[0]=n):n=e[0];let r=n,i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=ne(!0),e[1]=i):i=e[1];let a=i,o;return e[2]===t?.currentTheme?o=e[3]:(o=t?.currentTheme??(typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?a:r),e[2]=t?.currentTheme,e[3]=o),o},Un=e=>{let t=(0,ge.c)(2),{containerRef:n,enabled:r}=e,i;t[0]===r?i=t[1]:(i=e=>{if(r===!1||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;let t=e.target;if(!(t instanceof Element)||t.closest(Q))return;let n=t.closest(`a[href]`);if(!(n instanceof HTMLAnchorElement)||n.getAttribute(`data-openchamber-file-link`)===`true`)return;let i=n.getAttribute(`href`)??``;P(i)&&(e.preventDefault(),e.stopPropagation(),j(i))},t[0]=r,t[1]=i);let a=f(i);p(`click`,a,n)},Q=`img:not([data-md-link-favicon="true"])`,Wn=e=>e.getAttribute(`data-md-image-source`)??e.getAttribute(`src`)??``,Gn=({containerRef:e,effectiveDirectory:n,onShowPopup:r})=>{let i=G.useRef(null);i.current??=t();let a=i.current,o=!!r,s=f(e=>r?.(e)),c=G.useRef(()=>{}),l=G.useRef(new Map),u=G.useRef(null),d=G.useMemo(()=>e=>c.current(e),[]);return G.useLayoutEffect(()=>{let t=l.current;if(u.current!==null&&(clearTimeout(u.current),u.current=null),c.current=()=>{},!o){for(let[e,n]of t)n.controller?.abort(),n.objectUrl&&k(n.objectUrl),t.delete(e);return}let r=e.current;if(!r)return;let i=e=>{let t=Array.from(r.querySelectorAll(Q));if(t.indexOf(e)<0)return;let n=t.map(e=>({url:Wn(e),filename:e.alt||Wn(e)||void 0})).filter(e=>e.url),i=Wn(e),a=n.findIndex(e=>e.url===i),o=e.alt||i;s({open:!0,title:o,content:``,metadata:{tool:`image-preview`,filename:o},image:{url:i,filename:o,gallery:n,index:Math.max(0,a)}})},d=e=>{let n=t.get(e);n&&(n.controller?.abort(),n.objectUrl&&k(n.objectUrl),t.delete(e))},f=e=>{let t=Wn(e),r=x(t,n);if(E(r))return`${a}\n${n}\n${t}`},p=e=>{let n=f(e);if(!n){d(e);return}let r=t.get(e);if(r?.key===n)return r;d(e);let i={key:n};return t.set(e,i),i},m=(e,i)=>{if(i.controller||i.objectUrl||!r.contains(e))return;let a=Wn(e),o=x(a,n);if(!E(o)){d(e);return}let s=new AbortController;i.controller=s,e.setAttribute(`data-md-image-state`,`loading`),e.setAttribute(`aria-busy`,`true`),O(o.path,s.signal).then(n=>{let r=t.get(e);if(!r||r!==i||r.controller!==s||s.signal.aborted){k(n);return}r.controller=void 0,r.objectUrl=n,En(e),e.setAttribute(`data-md-image-state`,`loaded`),e.src=n}).catch(()=>{let n=t.get(e);n===i&&(n.controller=void 0,e.removeAttribute(`aria-busy`),e.setAttribute(`data-md-image-state`,`placeholder`))})};c.current=e=>{for(let[n,r]of t)(!e.contains(n)||f(n)!==r.key)&&d(n);for(let t of Array.from(e.querySelectorAll(Q))){let e=p(t);e&&!e.objectUrl&&m(t,e)}},c.current(r);let h=e=>{let t=p(e);if(t&&!t.objectUrl){m(e,t);return}i(e)},g=e=>{let t=Wn(e);t&&A({sourceUrl:t,displayUrl:e.currentSrc||e.src||void 0,filename:e.alt||t,effectiveDirectory:n})},_=se(),v=e=>Wn(e)||e.src||`markdown-image`,y=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(Q);if(n){if(_.consumeClick(v(n))){e.preventDefault(),e.stopPropagation();return}e.preventDefault(),e.stopPropagation(),h(n)}},b=e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLImageElement)||!t.matches(Q)||(e.preventDefault(),e.stopPropagation(),h(t))},S=e=>{if(e.pointerType===`mouse`&&e.button!==0)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest(Q);n&&_.start({pointerId:e.pointerId,key:v(n),clientX:e.clientX,clientY:e.clientY,onTrigger:()=>g(n)})},C=e=>{_.move(e.pointerId,e.clientX,e.clientY)},w=e=>{_.end(e.pointerId)},T=e=>{_.cancel(e.pointerId)},ee=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(Q);n&&(e.preventDefault(),e.stopPropagation(),_.openFromContextMenu(v(n),()=>g(n)))};return r.addEventListener(`click`,y),r.addEventListener(`keydown`,b),r.addEventListener(`pointerdown`,S),r.addEventListener(`pointermove`,C),r.addEventListener(`pointerup`,w),r.addEventListener(`pointercancel`,T),r.addEventListener(`contextmenu`,ee),()=>{c.current=()=>{},_.reset(),r.removeEventListener(`click`,y),r.removeEventListener(`keydown`,b),r.removeEventListener(`pointerdown`,S),r.removeEventListener(`pointermove`,C),r.removeEventListener(`pointerup`,w),r.removeEventListener(`pointercancel`,T),r.removeEventListener(`contextmenu`,ee),u.current=setTimeout(()=>{u.current=null;for(let e of Array.from(t.keys()))r.contains(e)&&Tn(e),d(e)},0)}},[e,n,o,a]),{reconcileMarkdownImageResources:d,transportIdentity:a}},Kn={download:!0,copy:!0,showPanZoomControls:!0},qn=!0,Jn=e=>{let t=e.match(/^(?:\uFEFF)?(---|\+\+\+)[^\S\r\n]*\r?\n[\s\S]*?\r?\n\1[^\S\r\n]*(?:\r?\n|$)/);return t?e.slice(t[0].length):e},Yn=`[data-openchamber-file-link="true"]`,Xn=`data-openchamber-block-path-token`,Zn=`[${Xn}]`,Qn=`data-openchamber-block-paths-scanned`,$n=`data-openchamber-paragraph-paths-scanned`,er=2e5,tr=4,nr=1e3,rr=200,ir=80,ar=40,or=160,$=new Map,sr=0,cr=[],lr=()=>r()?rr:nr,ur=()=>r()?ar:ir,dr=e=>Nn(e),fr=e=>Pn(e),pr=(e,t)=>C(e,t),mr=e=>Fn(e),hr=e=>{let t=Rn(e);return t?mr(t.path):!1},gr=(e,t)=>{let n=0;for(let r of e){let e=n+r.data.length;if(t<=e)return{node:r,offset:Math.max(0,t-n)};n=e}let r=e.at(-1);return r?{node:r,offset:r.data.length}:null},_r=e=>{let t=e.querySelectorAll(Zn);for(let n of Array.from(t))n.replaceWith(e.ownerDocument.createTextNode(n.textContent??``));let n=e.querySelectorAll(`code[${Qn}]`);for(let e of Array.from(n))e.removeAttribute(Qn),e.normalize();let r=e.querySelectorAll(`[${$n}]`);for(let e of Array.from(r))e.removeAttribute($n),e.normalize()},vr=e=>{if(e.tagName.toLowerCase()===`a`){let t=e.getAttribute(`href`)?.trim();if(t&&hr(t))return t}return(e.textContent||``).trim()},yr=e=>{let t=e.querySelectorAll(`pre code`);if(t.length===0)return;let n=e.ownerDocument;if(n)for(let e of Array.from(t)){if(e.getAttribute(Qn)===`true`)continue;if((e.textContent??``).length>er){e.setAttribute(Qn,`true`);continue}let t=n.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=[],i=t.nextNode();for(;i;)r.push(i),i=t.nextNode();let a=e.textContent??``;if(!a.includes(`.`)){e.setAttribute(Qn,`true`);continue}zn.lastIndex=0;let o=[],s=zn.exec(a);for(;s;){let e=s[0];e&&hr(e)&&o.push({start:s.index,end:s.index+e.length,raw:e}),s=zn.exec(a)}for(let{start:e,end:t,raw:i}of o.reverse()){let a=gr(r,e),o=gr(r,t);if(!a||!o)continue;let s=n.createRange();s.setStart(a.node,a.offset),s.setEnd(o.node,o.offset);let c=n.createElement(`span`);c.setAttribute(Xn,`true`),c.textContent=i,s.deleteContents(),s.insertNode(c)}e.setAttribute(Qn,`true`)}},br=`pre, code, a, script, style, button, [data-openchamber-file-link], [data-openchamber-block-path-token]`,xr=e=>{let t=e.ownerDocument;if(!t)return;let n=e.querySelectorAll(`p, li, blockquote, h1, h2, h3, h4, h5, h6, td, th`);if(n.length!==0)for(let e of Array.from(n)){if(e.getAttribute($n)===`true`)continue;if(e.closest(br)){e.setAttribute($n,`true`);continue}let n=t.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>{let t=e.parentElement;return!t||t.closest(br)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=[],i=n.nextNode();for(;i;)r.push(i),i=n.nextNode();if(r.length===0){e.setAttribute($n,`true`);continue}let a=r.map(e=>e.data).join(``);if(!a.includes(`/`)||!a.includes(`.`)){e.setAttribute($n,`true`);continue}Vn.lastIndex=0;let o=[],s=Vn.exec(a);for(;s;){let e=s[0];if(!e){s=Vn.exec(a);continue}let t=s.index>=2?a.slice(s.index-2,s.index):``;if((s.index>=1?a.charAt(s.index-1):``)===`:`||t===`:/`){s=Vn.exec(a);continue}hr(e)&&o.push({start:s.index,end:s.index+e.length,raw:e}),s=Vn.exec(a)}for(let{start:e,end:n,raw:i}of o.reverse()){let a=gr(r,e),o=gr(r,n);if(!a||!o)continue;let s=t.createRange();s.setStart(a.node,a.offset),s.setEnd(o.node,o.offset);let c=t.createElement(`span`);c.setAttribute(Xn,`true`),c.textContent=i,s.deleteContents(),s.insertNode(c)}e.setAttribute($n,`true`)}},Sr=(e,t)=>{let n=Rn(e);if(!n||!mr(n.path))return null;let r=fr(n.path)?dr(n.path):pr(t,n.path);return r?{...n,resolvedPath:r}:null},Cr=e=>{let t=dr(e);if(!t)return Promise.resolve({exists:!1,isBinary:!1});let n=$.get(t);if(n)return $.delete(t),$.set(t,n),n;let r=new Promise(e=>{let n=()=>{sr+=1,c(`/api/fs/stat?path=${encodeURIComponent(t)}&optional=true`,{method:`GET`,cache:`no-store`}).then(async t=>{if(!t.ok){e({exists:!1,isBinary:!1});return}let n=await t.json().catch(()=>null);e({exists:n?.exists!==!1,isBinary:n?.isBinary===!0})}).catch(()=>e({exists:!1,isBinary:!1})).finally(()=>{sr=Math.max(0,sr-1),cr.shift()?.()})};if(sr<tr){n();return}cr.push(n)}),i=lr();for(;$.size>=i;){let e=$.keys().next().value;if(typeof e!=`string`)break;$.delete(e)}return $.set(t,r),r},wr=(e,t)=>e||S(e,t),Tr=e=>{let t=(0,ge.c)(7),{containerRef:r,effectiveDirectory:c,editor:l,preferRuntimeEditor:u,enabled:d}=e,f=G.useRef(null),p,m;t[0]!==r||t[1]!==l||t[2]!==c||t[3]!==d||t[4]!==u?(p=()=>{let e=r.current;if(!e)return;let t=!1,p=v(),m=ur(),h=d,g=Hr,_=()=>{let t=e.querySelectorAll(Yn);for(let e of Array.from(t))g(e);_r(e)};if(!h){_();return}let y=e=>{let n=e===void 0?0:e;if(f.current!==null&&typeof window<`u`&&window.clearTimeout(f.current),typeof window>`u`){b();return}f.current=window.setTimeout(()=>{f.current=null,window.requestAnimationFrame(()=>{t||b()})},n)},b=()=>{h&&(yr(e),xr(e));let n=e.querySelectorAll(`[data-markdown="inline-code"], a, ${Zn}`),r=0;for(let s of Array.from(n)){let n=Sr(vr(s),c);g(s),n&&(r>=m||(r+=1,(a()&&o()&&!T(n.resolvedPath,c)?i(n.resolvedPath).then(Ur):Cr(n.resolvedPath)).then(r=>{if(t||!r.exists||!e.contains(s))return;let i=vr(s),a=Sr(i,c);!a||a.resolvedPath!==n.resolvedPath||p&&r.isBinary&&!F(a.resolvedPath)||(s.setAttribute(`data-openchamber-file-link`,`true`),s.setAttribute(`data-openchamber-file-ref`,i),s.setAttribute(`data-openchamber-file-path`,a.resolvedPath),s.setAttribute(`data-openchamber-file-binary`,String(r.isBinary)),s.setAttribute(`title`,`Open file`),s.tagName.toLowerCase()!==`a`&&(s.setAttribute(`role`,`button`),s.setAttribute(`tabindex`,`0`)))})))}},x=async e=>{let t=Sr(e.getAttribute(`data-openchamber-file-ref`)||vr(e),c);if(!t)return;let r=e.getAttribute(`data-openchamber-file-binary`)===`true`,i=t.resolvedPath.toLowerCase().endsWith(`.app`);if((r||i)&&!F(t.resolvedPath)&&await s(t.resolvedPath))return;let a=wr(c,t.resolvedPath);if(u&&l){l.openFile(t.resolvedPath,Number.isFinite(t.line??NaN)?Math.max(1,Math.trunc(t.line)):void 0,Number.isFinite(t.column??NaN)?Math.max(1,Math.trunc(t.column)):void 0);return}T(t.resolvedPath,c)||await z(t.resolvedPath,c);let o=n.getState();Number.isFinite(t.line??NaN)?o.openContextFileAtLine(a,t.resolvedPath,Math.max(1,Math.trunc(t.line)),Number.isFinite(t.column??NaN)?Math.max(1,Math.trunc(t.column)):1):o.openContextFile(a,t.resolvedPath)},S=e=>{let t=e.target;if(!(t instanceof Element)||t.closest(Q))return;let n=t.closest(Yn);n instanceof HTMLElement&&(e.preventDefault(),e.stopPropagation(),x(n))},C=e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||t.getAttribute(`data-openchamber-file-link`)!==`true`||(e.preventDefault(),e.stopPropagation(),x(t))};y(or);let w=new MutationObserver(()=>{y(or)});return w.observe(e,{childList:!0,subtree:!0}),e.addEventListener(`click`,S),e.addEventListener(`keydown`,C),()=>{t=!0,f.current!==null&&typeof window<`u`&&window.clearTimeout(f.current),f.current=null,w.disconnect(),e.removeEventListener(`click`,S),e.removeEventListener(`keydown`,C)}},m=[r,l,c,u,d],t[0]=r,t[1]=l,t[2]=c,t[3]=d,t[4]=u,t[5]=p,t[6]=m):(p=t[5],m=t[6]),G.useEffect(p,m)},Er=({containerRef:e,onShowPopup:t,enableFullscreen:n,enablePanZoom:r,allowMermaidWheelEvents:i})=>{let a=f(e=>t?.(e)),o=!!t,s=f(t=>{if(!n||!o)return;let r=e.current;if(!r)return;let i=t.target;if(!(i instanceof Element)||i.closest(`button, a, [role="button"]`))return;let s=i.closest(Ot);if(!s)return;if(s instanceof HTMLElement&&s.hasAttribute(`data-mermaid-suppress-click`)){s.removeAttribute(`data-mermaid-suppress-click`);return}let c=Array.from(r.querySelectorAll(Ot)).indexOf(s);if(c<0)return;let l=s instanceof HTMLElement?s.getAttribute(`data-md-source`):null;if(!l||l.trim().length===0)return;let u=`Diagram ${c+1}`;a({open:!0,title:u,content:``,metadata:{tool:`mermaid-preview`,filename:u},mermaid:{url:`data:text/plain;charset=utf-8,${encodeURIComponent(l)}`,source:l,filename:u}})}),c=f(e=>{if(i||r)return;let t=e.target;t instanceof Element&&t.closest(`[data-markdown="mermaid-block"]`)&&e.stopPropagation()});p(`click`,s,e),G.useEffect(()=>{let t=e.current;if(t)return t.addEventListener(`wheel`,c,{capture:!0,passive:!0}),()=>{t.removeEventListener(`wheel`,c,!0)}},[e])},Dr=24,Or=/[\s.,!?;:)\]]/,kr=(e,t)=>{let n=e<=12?2:e<=48?4:e<=96?8:Math.min(24,Math.ceil(e/8));return Math.max(1,Math.round(t/Dr*n))},Ar=(e,t,n)=>{let r=Math.min(e.length,t+kr(e.length-t,n));for(let t=r;t<Math.min(e.length,r+8);t+=1)if(Or.test(e[t]??``))return t+1;return r},jr=(e,t,n)=>{let[r,i]=G.useState(()=>t?0:e.length),a=G.useRef(r);return a.current=r,G.useEffect(()=>{if(!t||typeof window>`u`){i(e.length);return}a.current>e.length&&i(e.length);let r=null,o=()=>{let t=Math.min(a.current,e.length);if(t>=e.length){r=null;return}i(Ar(e,t,n)),r=window.setTimeout(o,n)};return a.current<e.length&&(r=window.setTimeout(o,n)),()=>{r!==null&&window.clearTimeout(r)}},[e,t,n]),t?e.slice(0,Math.min(r,e.length)):e},Mr=new L({maxEntries:100,maxBytes:8388608}),Nr=(e,t)=>{let n=Mr.get(e);if(n)return n;let r=t(),i=((r.svg?.length??0)+(r.ascii?.length??0))*2;return Mr.set(e,r,e.length*2+i),r},Pr=e=>({bg:e.colors.surface.elevated,fg:e.colors.surface.foreground,line:e.colors.interactive.border,accent:e.colors.primary.base,muted:e.colors.surface.mutedForeground,surface:e.colors.surface.muted,border:e.colors.interactive.border,transparent:!0,font:`system-ui, sans-serif`}),Fr=(e,r,i,a=Kn,o=t(),s=``,c=!1)=>{let{t:l}=h(),u=G.useMemo(()=>({copy:l(`markdownRenderer.code.actions.copyTitle`),copied:l(`markdownRenderer.code.actions.copiedTitle`),enableCodeWrap:l(`markdownRenderer.code.actions.enableWrapTitle`),disableCodeWrap:l(`markdownRenderer.code.actions.disableWrapTitle`),copyDiagram:l(`markdownRenderer.mermaid.actions.copySourceTitle`),downloadDiagram:l(`markdownRenderer.mermaid.actions.downloadSvgTitle`),zoomInDiagram:l(`markdownRenderer.mermaid.actions.zoomInTitle`),zoomOutDiagram:l(`markdownRenderer.mermaid.actions.zoomOutTitle`),resetDiagramView:l(`markdownRenderer.mermaid.actions.resetViewTitle`),previewLabel:l(`terminalView.preview.open`),previewTitle:l(`terminalView.preview.openTitle`)}),[l]),d=n(e=>e.codeBlockLineWrap),p=n(e=>e.setCodeBlockLineWrap),m=f(()=>{p(!n.getState().codeBlockLineWrap)});return G.useMemo(()=>{let t=Pr(e),l=n.getState().mermaidRenderingMode,f=e.metadata?.id??`theme`;return{labels:u,mermaidControls:a,codeBlockLineWrap:d,deferCodeLineNumberSync:r,onToggleCodeBlockLineWrap:m,renderMermaid:e=>Nr(`${f}:${l}:${e}`,()=>{try{return l===`ascii`?{ascii:me(e)}:{svg:pe(e,t)}}catch{return{}}}),onPreviewLoopback:i,imageTransportIdentity:o,imageEffectiveDirectory:s,imagePreviewEnabled:c}},[e,u,a,d,r,i,o,s,c])},Ir=({containerRef:e,text:t,streaming:n,cacheKey:r,syntaxVars:i,ctx:a,reconcileMarkdownImageResources:o,onRichContentReady:s})=>{G.useEffect(()=>{te()},[]);let c=G.useRef(null),l=f(()=>{s?.()}),u=f(()=>{let t=e.current;if(t){if(!c.current){if(!kt(t))return;c.current=Xt(t);return}c.current.refresh()}});G.useLayoutEffect(()=>{let r=e.current,i=r?.querySelector(`[data-markdown-content]`)??r;if(i&&t&&i.childNodes.length===0){for(let e of pt(t)){let t=document.createElement(`div`);t.setAttribute(`data-md-block`,``),t.style.display=`contents`,t.innerHTML=e,On(t,a),i.appendChild(t)}o(i),n||l()}},[e,a,o,n,t]),G.useEffect(()=>()=>{c.current?.cleanup(),c.current=null},[]),G.useEffect(()=>{let i=e.current;if(!i)return;let s=i.querySelector(`[data-markdown-content]`)??i,c=!0,d=new AbortController,f=()=>{},p=()=>{},m=()=>{if(!c||n||d.signal.aborted)return;s.replaceChildren();let e=document.createElement(`div`);e.setAttribute(`data-md-block`,``),e.setAttribute(`data-md-render-fallback`,`text`),e.style.display=`contents`;let r=document.createElement(`span`);r.style.whiteSpace=`pre-wrap`,r.textContent=t,e.appendChild(r),s.appendChild(e),o(s),l()},h=e=>{if(!c)return;let t=Array.from(s.children);e.forEach((e,n)=>{let r=t[n];if(r||(r=document.createElement(`div`),r.setAttribute(`data-md-block`,``),r.style.display=`contents`,s.appendChild(r)),r.getAttribute(`data-md-id`)===e.id)return;let i=document.createElement(`div`);i.innerHTML=e.html,On(i,a);let o=kt(r),c=kt(i);fe(r,i,{childrenOnly:!0,onBeforeElUpdated:(e,t)=>{if(e instanceof HTMLImageElement&&t instanceof HTMLImageElement){let n=e.getAttribute(`data-md-image-source`);if(n&&n===t.getAttribute(`data-md-image-source`)){let n=e.getAttribute(`src`);n===null?t.removeAttribute(`src`):t.setAttribute(`src`,n),t.className=e.className;for(let n of[`data-md-image-state`,`data-md-placeholder-source`,`aria-busy`]){let r=e.getAttribute(n);r===null?t.removeAttribute(n):t.setAttribute(n,r)}}}return!e.isEqualNode(t)}}),r.setAttribute(`data-md-id`,e.id),(o||c||kt(r))&&u()});let n=kt(s),r=!1;for(let n=t.length-1;n>=e.length;--n){let e=t[n];e&&kt(e)&&(r=!0),e?.remove()}(r||t.length>e.length&&n)&&u(),o(s),a.deferCodeLineNumberSync||dn(s,a.codeBlockLineWrap,a.labels),l()},g=e=>{try{h(e)}catch{m()}},_=()=>{_t(t,n,r,d.signal).then(e=>{if(c){if(n){g(e);return}p=ce(()=>g(e),{priority:`visible`})}}).catch(m)};return n?_():f=ce(_,{priority:`visible`}),()=>{c=!1,d.abort(),f(),p()}},[e,t,n,r,a,o]),G.useEffect(()=>{let t=e.current;if(t)return An(t,a)},[e,a]),G.useEffect(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;if(n)for(let[e,t]of Object.entries(i))n.style.setProperty(e,t)},[e,i]),G.useEffect(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;n&&(a.deferCodeLineNumberSync||dn(n,a.codeBlockLineWrap,a.labels))},[e,a.codeBlockLineWrap,a.deferCodeLineNumberSync,a.labels]);let d=G.useRef(null),p=f(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;n&&(d.current!==null&&window.cancelAnimationFrame(d.current),d.current=window.requestAnimationFrame(()=>{d.current=null,ln(n)}))});m(e,p),G.useEffect(()=>()=>{d.current!==null&&window.cancelAnimationFrame(d.current)},[])},Lr=e=>e===`tool`?`markdown-content markdown-tool`:e===`reasoning`?`markdown-content markdown-reasoning`:`markdown-content leading-relaxed`,Rr=e=>{let t=(0,ge.c)(4),[n,r]=G.useState(e),i=G.useRef(e),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>{i.current||(i.current=!0,r(!0))},t[0]=a):a=t[0];let o=f(a),s;return t[1]!==o||t[2]!==n?(s=[n,o],t[1]=o,t[2]=n,t[3]=s):s=t[3],s},zr=(e,t,n)=>{let r=G.useRef(n);r.current=n;let i=G.useRef(t);i.current=t;let a=f(e=>{if(!r.current)return;let t=e[0];if(!t)return;let n=t.borderBoxSize?.[0],a=n?n.blockSize:t.contentRect.height,o=n?n.inlineSize:t.contentRect.width;I(i.current,a,o)});m(e,a)},Br=G.memo(e=>{let t=(0,ge.c)(49),{content:r,part:i,messageId:a,isAnimated:o,skipFadeIn:s,className:c,isStreaming:l,disableStreamAnimation:u,variant:d,onShowPopup:p,enableFileReferences:m}=e,h=o===void 0||o,g=s!==void 0&&s,v=l!==void 0&&l,b=u!==void 0&&u,x=d===void 0?`assistant`:d,S=m===void 0||m,C=Hn(),{editor:w,runtime:T}=re(),E=G.useRef(null),D=oe()??``,O=n(Wr),k;t[0]!==D||t[1]!==O?(k=e=>{D&&O(D,e)},t[0]=D,t[1]=O,t[2]=k):k=t[2];let te=f(k),A=v&&!b,ne;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(ne=ue(_()),t[3]=ne):ne=t[3];let j=jr(r,A,ne.markdownPaceMs),[M,N]=Rr(A),P;t[4]===p?P=t[5]:(P={containerRef:E,onShowPopup:p,enableFullscreen:qn,enablePanZoom:Kn.showPanZoomControls},t[4]=p,t[5]=P),Er(P);let F=S&&!v,I;t[6]!==w||t[7]!==D||t[8]!==T.isVSCode||t[9]!==F?(I={containerRef:E,effectiveDirectory:D,editor:w,preferRuntimeEditor:T.isVSCode,enabled:F},t[6]=w,t[7]=D,t[8]=T.isVSCode,t[9]=F,t[10]=I):I=t[10],Tr(I);let L;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(L={containerRef:E},t[11]=L):L=t[11],Un(L);let R;t[12]!==D||t[13]!==p?(R={containerRef:E,effectiveDirectory:D,onShowPopup:p},t[12]=D,t[13]=p,t[14]=R):R=t[14];let{reconcileMarkdownImageResources:z,transportIdentity:B}=Gn(R),V;t[15]===C?V=t[16]:(V=ee(C),t[15]=C,t[16]=V);let se=V,ce=Fr(C,A,D?te:void 0,Kn,B,D,!!p),de=`markdown-${i?.id?`part-${i.id}`:`message-${a}`}`,fe;t[17]!==de||t[18]!==ce||t[19]!==A||t[20]!==j||t[21]!==z||t[22]!==N||t[23]!==se?(fe={containerRef:E,text:j,streaming:A,cacheKey:de,syntaxVars:se,ctx:ce,reconcileMarkdownImageResources:z,onRichContentReady:N},t[17]=de,t[18]=ce,t[19]=A,t[20]=j,t[21]=z,t[22]=N,t[23]=se,t[24]=fe):fe=t[24],Ir(fe);let pe;t[25]!==r||t[26]!==x?(pe=ae(r,x),t[25]=r,t[26]=x,t[27]=pe):pe=t[27],zr(E,pe,M&&!A);let me=!M||void 0,H;t[28]===c?H=t[29]:(H=y(`relative break-words w-full min-w-0`,c),t[28]=c,t[29]=H);let U;t[30]!==j||t[31]!==M||t[32]!==x?(U=!M&&(0,Z.jsx)(`div`,{className:y(Lr(x),`pointer-events-none absolute inset-0 overflow-hidden`),children:(0,Z.jsx)(ie,{content:j})}),t[30]=j,t[31]=M,t[32]=x,t[33]=U):U=t[33];let he=!M||void 0,W;t[34]!==M||t[35]!==x?(W=y(Lr(x),!M&&`invisible`),t[34]=M,t[35]=x,t[36]=W):W=t[36];let K;t[37]!==he||t[38]!==W?(K=(0,Z.jsx)(`div`,{"aria-hidden":he,className:W,"data-markdown-content":!0}),t[37]=he,t[38]=W,t[39]=K):K=t[39];let _e;t[40]!==me||t[41]!==H||t[42]!==U||t[43]!==K?(_e=(0,Z.jsxs)(`div`,{"aria-busy":me,className:H,ref:E,children:[U,K]}),t[40]=me,t[41]=H,t[42]=U,t[43]=K,t[44]=_e):_e=t[44];let ve=_e;if(h){let e;return t[45]!==de||t[46]!==ve||t[47]!==g?(e=(0,Z.jsx)(le,{skipAnimation:g,children:ve},de),t[45]=de,t[46]=ve,t[47]=g,t[48]=e):e=t[48],e}return ve},(e,t)=>e.content===t.content&&e.isStreaming===t.isStreaming&&e.disableStreamAnimation===t.disableStreamAnimation&&e.variant===t.variant&&e.isAnimated===t.isAnimated&&e.skipFadeIn===t.skipFadeIn&&e.className===t.className&&e.messageId===t.messageId&&e.onShowPopup===t.onShowPopup&&e.enableFileReferences===t.enableFileReferences&&e.part?.id===t.part?.id),Vr=G.memo(e=>{let t=(0,ge.c)(43),{content:n,className:r,variant:i,disableLinkSafety:a,stripFrontmatter:o,onShowPopup:s,mermaidControls:c,allowMermaidWheelEvents:l,enableFileReferences:u}=e,d=i===void 0?`assistant`:i,f=o!==void 0&&o,p=c===void 0?Kn:c,m=l!==void 0&&l,h=u===void 0||u,{editor:g,runtime:_}=re(),v=Hn(),b=G.useRef(null),[x,S]=Rr(!1),C=oe()??``,w;t[0]!==n||t[1]!==f?(w=f?Jn(n):n,t[0]=n,t[1]=f,t[2]=w):w=t[2];let T=w,E;t[3]!==m||t[4]!==p.showPanZoomControls||t[5]!==s?(E={containerRef:b,onShowPopup:s,enableFullscreen:qn,enablePanZoom:p.showPanZoomControls,allowMermaidWheelEvents:m},t[3]=m,t[4]=p.showPanZoomControls,t[5]=s,t[6]=E):E=t[6],Er(E);let D;t[7]!==g||t[8]!==C||t[9]!==h||t[10]!==_.isVSCode?(D={containerRef:b,effectiveDirectory:C,editor:g,preferRuntimeEditor:_.isVSCode,enabled:h},t[7]=g,t[8]=C,t[9]=h,t[10]=_.isVSCode,t[11]=D):D=t[11],Tr(D);let O=!a,k;t[12]===O?k=t[13]:(k={containerRef:b,enabled:O},t[12]=O,t[13]=k),Un(k);let te;t[14]!==C||t[15]!==s?(te={containerRef:b,effectiveDirectory:C,onShowPopup:s},t[14]=C,t[15]=s,t[16]=te):te=t[16];let{reconcileMarkdownImageResources:A,transportIdentity:ne}=Gn(te),j;t[17]===v?j=t[18]:(j=ee(v),t[17]=v,t[18]=j);let M=j,N=Fr(v,!1,void 0,p,ne,C,!!s),P=`simple:${d}`,F;t[19]!==N||t[20]!==A||t[21]!==T||t[22]!==S||t[23]!==M||t[24]!==P?(F={containerRef:b,text:T,streaming:!1,cacheKey:P,syntaxVars:M,ctx:N,reconcileMarkdownImageResources:A,onRichContentReady:S},t[19]=N,t[20]=A,t[21]=T,t[22]=S,t[23]=M,t[24]=P,t[25]=F):F=t[25],Ir(F);let ae=!x||void 0,I;t[26]===r?I=t[27]:(I=y(`relative break-words w-full min-w-0`,r),t[26]=r,t[27]=I);let L;t[28]!==T||t[29]!==x||t[30]!==d?(L=!x&&(0,Z.jsx)(`div`,{className:y(Lr(d),`pointer-events-none absolute inset-0 overflow-hidden`),children:(0,Z.jsx)(ie,{content:T})}),t[28]=T,t[29]=x,t[30]=d,t[31]=L):L=t[31];let R=!x||void 0,z;t[32]!==x||t[33]!==d?(z=y(Lr(d),!x&&`invisible`),t[32]=x,t[33]=d,t[34]=z):z=t[34];let B;t[35]!==R||t[36]!==z?(B=(0,Z.jsx)(`div`,{"aria-hidden":R,className:z,"data-markdown-content":!0}),t[35]=R,t[36]=z,t[37]=B):B=t[37];let V;return t[38]!==ae||t[39]!==I||t[40]!==L||t[41]!==B?(V=(0,Z.jsxs)(`div`,{"aria-busy":ae,className:I,ref:b,children:[L,B]}),t[38]=ae,t[39]=I,t[40]=L,t[41]=B,t[42]=V):V=t[42],V},(e,t)=>{let n=e.mermaidControls??Kn,r=t.mermaidControls??Kn;return e.content===t.content&&e.variant===t.variant&&e.className===t.className&&e.disableLinkSafety===t.disableLinkSafety&&e.stripFrontmatter===t.stripFrontmatter&&e.onShowPopup===t.onShowPopup&&n.download===r.download&&n.copy===r.copy&&n.showPanZoomControls===r.showPanZoomControls&&e.allowMermaidWheelEvents===t.allowMermaidWheelEvents&&e.enableFileReferences===t.enableFileReferences});function Hr(e){e.removeAttribute(`data-openchamber-file-link`),e.removeAttribute(`data-openchamber-file-ref`),e.removeAttribute(`data-openchamber-file-path`),e.removeAttribute(`data-openchamber-file-binary`),e.getAttribute(`title`)===`Open file`&&e.removeAttribute(`title`),e.tagName.toLowerCase()!==`a`&&(e.removeAttribute(`role`),e.removeAttribute(`tabindex`))}function Ur(e){return{exists:!0,isBinary:e===!0}}function Wr(e){return e.openContextPreview}export{Br as MarkdownRenderer,Vr as SimpleMarkdownRenderer};
|
package/dist/assets/{MobileDetailNavigation-Q2IzHqGA.js → MobileDetailNavigation-DILi0tN7.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{D as t,T as n}from"./useUIStore-5agS8bsW.js";import{kn as r,u as i}from"./persistence-DPNMIbF5.js";import{nt as a,rt as o}from"./vendor-base-ui-CnHfUmDN.js";import{n as s}from"./vendor-react-DLPElpoQ.js";import{s as c,t as l}from"./vendor-tanstack-react-query-D7pys_c9.js";import{Do as u,Eo as d}from"./useMobileNavigationStore-DnzT4jO2.js";import{t as f}from"./utils-Co19EJEL.js";import{n as p}from"./Icon-AXqa-fYB.js";import{t as m}from"./button-CDvMVaiO.js";var h=e(o(),1),g=s(),_=class extends Error{code;status;resource;constructor(e,t,n){super(e),this.code=e,this.status=t,this.resource=n}},v=class extends _{operation;constructor(e,t,n){super(e,t,`share_operation`),this.operation=n}},y=(e,t=200)=>{throw new _(`invalid_${e}_response`,t,e)},b=(e,t)=>e&&typeof e==`object`&&!Array.isArray(e)?e:y(t),x=(e,t)=>typeof e==`string`?e:y(t),S=(e,t)=>e===null||typeof e==`string`?e:y(t),C=(e,t)=>typeof e==`number`&&Number.isFinite(e)?e:y(t),w=(e,t)=>e===null?null:C(e,t),T=(e,t)=>typeof e==`boolean`?e:y(t),E=(e,t,n)=>t.includes(e)?e:y(n),D=e=>{let t=b(e,`capability`);return{supported:T(t.supported,`capability`),enabled:T(t.enabled,`capability`),revision:C(t.revision,`capability`),serverInstanceID:S(t.serverInstanceID,`capability`)}},O=e=>{let t=b(e,`assistant`),n=Array.isArray(t.historySessionIDs)?t.historySessionIDs.map(e=>x(e,`assistant`)):[],r=t.historySessionCount===void 0?n.length:C(t.historySessionCount,`assistant`);return!Number.isSafeInteger(r)||r<n.length?y(`assistant`):{id:x(t.id,`assistant`),revision:C(t.revision,`assistant`),enabled:T(t.enabled,`assistant`),name:x(t.name,`assistant`),defaultPrompt:x(t.defaultPrompt,`assistant`),workspacePath:S(t.workspacePath,`assistant`),effectiveWorkspacePath:x(t.effectiveWorkspacePath,`assistant`),managedWorkspacePath:S(t.managedWorkspacePath??null,`assistant`),providerID:x(t.providerID,`assistant`),modelID:x(t.modelID,`assistant`),agent:S(t.agent,`assistant`),variant:S(t.variant??null,`assistant`),mode:E(t.mode,[`continuous`,`stateless`],`assistant`),sessionID:S(t.sessionID,`assistant`),sessionGeneration:C(t.sessionGeneration,`assistant`),historySessionIDs:n,historySessionCount:r,createdAt:w(t.createdAt,`assistant`),updatedAt:C(t.updatedAt,`assistant`),tombstoneAt:w(t.tombstoneAt,`assistant`)}},k=e=>{let t=b(e,`snapshot`);return{revision:C(t.revision,`snapshot`),enabled:T(t.enabled,`snapshot`),assistants:Array.isArray(t.assistants)?t.assistants.map(O):y(`snapshot`)}},A=e=>{let t=b(e,`binding`);return{sessionID:S(t.sessionID,`binding`),directory:x(t.directory,`binding`),sessionGeneration:C(t.sessionGeneration,`binding`)}},j=e=>{let t=b(e,`compact`);return t.summarized===!0?{binding:A(t.binding),summarized:!0}:y(`compact`)},M=e=>{let t=b(e,`message_admission`);return t.admitted===!0?{binding:A(t.binding),messageID:x(t.messageID,`message_admission`),admitted:!0}:y(`message_admission`)},N=e=>{let t=b(e,`share_operation`);return{operationID:x(t.operationID,`share_operation`),assistantID:x(t.assistantID,`share_operation`),sessionID:S(t.sessionID,`share_operation`),messageID:S(t.messageID,`share_operation`),state:E(t.state,[`submitting`,`running`,`completed`,`failed`,`unresolved`],`share_operation`),phase:x(t.phase,`share_operation`),attempt:C(t.attempt,`share_operation`),leaseExpiresAt:w(t.leaseExpiresAt,`share_operation`),errorCode:S(t.errorCode,`share_operation`)}},P=e=>{let t=b(e,`assistant_history`),n=S(t.nextCursor,`assistant_history`),r=T(t.complete,`assistant_history`);return!r&&!n||r&&n||!Array.isArray(t.entries)?y(`assistant_history`):{entries:t.entries.map(e=>{let t=b(e,`assistant_history_entry`),n=x(t.sessionID,`assistant_history_entry`),r=b(t.info,`assistant_history_info`),i=b(r.time,`assistant_history_info`);if(x(r.id,`assistant_history_info`),x(r.sessionID,`assistant_history_info`)!==n||(E(r.role,[`user`,`assistant`,`system`,`tool`],`assistant_history_info`),C(i.created,`assistant_history_info`),!Array.isArray(t.parts)))return y(`assistant_history_entry`);let a=t.parts.map(e=>{let t=b(e,`assistant_history_part`);return x(t.id,`assistant_history_part`),x(t.sessionID,`assistant_history_part`)!==n||x(t.messageID,`assistant_history_part`)!==r.id?y(`assistant_history_part`):(x(t.type,`assistant_history_part`),t)});return{sessionID:n,directory:S(t.directory,`assistant_history_entry`),info:r,parts:a}}),nextCursor:n,complete:r}},F=30,I={snapshot:(e=t())=>[e,`assistants`,`snapshot`],capability:(e=t())=>[e,`assistants`,`capability`],history:(e,r,i,a=t(),o=n())=>[a,o,`assistants`,`history`,e,r,i]},L=(e,t,n)=>{if(!e||!t)return;let r=t.queryKey;if(r[0]===n.transport&&r[1]===n.runtimeGeneration&&r[2]===`assistants`&&r[3]===`history`&&r[4]===n.assistantID)return e},R=async(e,t={})=>{let n=await r(e,t),i=await n.json().catch(()=>null);if(!n.ok)throw new _(i&&typeof i==`object`&&`error`in i&&typeof i.error==`string`?i.error:`request_failed`,n.status);return i},z=(e,t)=>({method:e,headers:{"Content-Type":`application/json`},body:t===void 0?void 0:JSON.stringify(t)}),B=(e,r)=>{if(t()!==e||n()!==r)throw new _(`runtime_stale`,409)},V=(e,t,r)=>{i.setQueryData(I.snapshot(r),n=>n&&{...n,assistants:n.assistants.map(n=>n.id!==e||n.sessionGeneration>t.sessionGeneration?n:{...n,sessionID:t.sessionID,sessionGeneration:t.sessionGeneration,effectiveWorkspacePath:t.directory})}),i.invalidateQueries({queryKey:I.snapshot(r)}),i.invalidateQueries({queryKey:[r,n(),`assistants`,`history`,e]})},H=(e,t)=>{i.setQueryData(I.snapshot(t),t=>t&&{...t,assistants:t.assistants.some(t=>t.id===e.id)?t.assistants.map(t=>t.id===e.id?e:t):[...t.assistants,e]}),i.invalidateQueries({queryKey:I.snapshot(t)})},U=(e=t())=>({queryKey:I.snapshot(e),queryFn:async({signal:e})=>k(await R(`/api/openchamber/assistants/snapshot`,{signal:e})),retry:2}),W=()=>{let e=(0,g.c)(5),n,r,a;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=t(),n=c,r=U(a),e[0]=n,e[1]=r,e[2]=a):(n=e[0],r=e[1],a=e[2]);let o=n(r),s,l;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>u(e=>{if(t()!==a)return;if(e.type===`event-stream-ready`){i.invalidateQueries({queryKey:I.snapshot(a),exact:!0});return}if(e.type!==`assistants-changed`)return;let n=i.getQueryData(I.snapshot(a));(!n||e.revision>n.revision)&&i.invalidateQueries({queryKey:I.snapshot(a),exact:!0})}),l=[a],e[3]=s,e[4]=l):(s=e[3],l=e[4]),h.useEffect(s,l),o},G=(e,r,i,a=t(),o=n())=>({queryKey:I.history(e,r,i,a,o),queryFn:async({signal:t,pageParam:n})=>{B(a,o),await d(),B(a,o);let r=new URLSearchParams({limit:String(F)});n&&r.set(`before`,n);let i=P(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/messages?${r}`,{signal:t}));return B(a,o),i},initialPageParam:null,getNextPageParam:K,placeholderData:(t,n)=>L(t,n,{assistantID:e,transport:a,runtimeGeneration:o}),retry:2}),K=e=>e.complete?void 0:e.nextCursor??void 0,q=(e,t,n)=>{let r=(0,g.c)(7),i=n===void 0||n,a=t.sessionID??``,o;r[0]!==e||r[1]!==t.sessionGeneration||r[2]!==a?(o=G(e,a,t.sessionGeneration),r[0]=e,r[1]=t.sessionGeneration,r[2]=a,r[3]=o):o=r[3];let s=i&&!!(e&&t.sessionID),c;return r[4]!==o||r[5]!==s?(c={...o,enabled:s},r[4]=o,r[5]=s,r[6]=c):c=r[6],l(c)},J=async e=>k(await R(`/api/openchamber/assistants/snapshot`,{signal:e})),Y=(e=t())=>({queryKey:I.capability(e),queryFn:()=>Q(),retry:!1}),X=()=>{let e=(0,g.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=Y(),e[0]=t):t=e[0],c(t)},Z=(e=i,n=t())=>e.getQueryData(I.snapshot(n)),ee=(e=i,n=t())=>e.fetchQuery(U(n)),te=async(e=i)=>{let r=t(),a=n();await e.invalidateQueries({queryKey:I.snapshot(r),exact:!0}),B(r,a);let o=await e.fetchQuery(U(r));return B(r,a),o},ne=async e=>{let r=t(),i=n();await d(),B(r,i);let a=A(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/ensure`,z(`POST`)));return B(r,i),V(e,a,r),a},re=async e=>{let r=t(),i=n(),a=A(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/new`,z(`POST`)));return B(r,i),V(e,a,r),a},ie=async(e,r)=>{let i=t(),a=n(),o=j(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/compact`,z(`POST`,{sessionID:r.sessionID,sessionGeneration:r.sessionGeneration})));return B(i,a),V(e,o.binding,i),o},ae=async(e,r)=>{let i=t(),a=n();await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/abort`,z(`POST`,{sessionID:r.sessionID,sessionGeneration:r.sessionGeneration})),B(i,a)},oe=async(e,r,i,a,o=`composer`)=>{let s=t(),c=n(),l=M(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/messages`,z(`POST`,{sessionID:r.sessionID,sessionGeneration:r.sessionGeneration,messageID:i,parts:a,source:o})));return B(s,c),V(e,l.binding,s),l},se=async(e,r,i,a,o)=>{let s=t(),c=n(),l=N(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/share`,z(`POST`,{operationID:r,payload:{messageID:i,parts:a,source:o}})));return B(s,c),l},ce=async(e,r=t(),i=n())=>{B(r,i);let a=N(await R(`/api/openchamber/assistants/share-operations/${encodeURIComponent(e)}`));return B(r,i),a},le=async(e,r=t(),i=n())=>{let a=e;for(let e=0;e<60&&(a.state===`running`||a.state===`submitting`);e+=1)B(r,i),await new Promise(e=>setTimeout(e,750)),a=await ce(a.operationID,r,i);if(B(r,i),a.state===`completed`)return a;throw a.state===`failed`?new v(a.errorCode??`share_failed`,400,a):new v(`share_unresolved`,408,a)},ue=async(e,n)=>{await R(`/api/openchamber/assistants/settings`,z(`PUT`,{enabled:e,expectedRevision:n}));let r=t();await Promise.all([i.invalidateQueries({queryKey:I.snapshot(r),exact:!0}),i.invalidateQueries({queryKey:I.capability(r),exact:!0})])},de=async e=>{let n=t(),r=O(await R(`/api/openchamber/assistants`,z(`POST`,e)));return H(r,n),r},fe=async(e,r)=>{let i=t(),a=n(),o=O(await R(`/api/openchamber/assistants/${encodeURIComponent(e.id)}`,z(`PATCH`,{...r,expectedRevision:e.revision})));return B(i,a),H(o,i),o},pe=async e=>{await R(`/api/openchamber/assistants/${encodeURIComponent(e.id)}`,z(`DELETE`,{expectedRevision:e.revision})),await i.invalidateQueries({queryKey:I.snapshot(t())})},Q=async()=>D(await R(`/api/openchamber/assistants/capability`)),$=a();function me(e){let t=(0,g.c)(32),{title:n,subtitle:r,backAriaLabel:i,onBack:a,backDisabled:o,actions:s,trailing:c,sticky:l,overlay:u,elevated:d}=e,h=o!==void 0&&o,_;t[0]===s?_=t[1]:(_=s===void 0?[]:s,t[0]=s,t[1]=_);let v=_,y=l!==void 0&&l,b=u!==void 0&&u,x=d!==void 0&&d,S=!!c||v.length>0,C=x||v.some(ge),w=y&&`oc-mobile-detail-navigation-sticky`,T=b&&`absolute inset-x-0 top-0`,E=C?`z-[60]`:b?`z-30`:void 0,D;t[2]!==w||t[3]!==T||t[4]!==E?(D=f(`oc-mobile-detail-navigation relative shrink-0 pt-[max(0.25rem,var(--oc-safe-area-top,0px))]`,w,T,E),t[2]=w,t[3]=T,t[4]=E,t[5]=D):D=t[5];let O=S&&v.length+ +!!c>1?`grid-cols-[2.75rem_minmax(0,1fr)_auto]`:`grid-cols-[2.75rem_minmax(0,1fr)_2.75rem]`,k;t[6]===O?k=t[7]:(k=f(`oc-mobile-detail-navigation-content grid items-center gap-1 px-4`,O),t[6]=O,t[7]=k);let A;t[8]!==i||t[9]!==h||t[10]!==a?(A=a?(0,$.jsx)(m,{type:`button`,variant:`mobileGlass`,size:`mobileIcon`,className:`justify-self-start`,onClick:a,disabled:h,"aria-label":i,children:(0,$.jsx)(p,{name:`arrow-left-s`,className:`size-5`})}):(0,$.jsx)(`span`,{"aria-hidden":`true`}),t[8]=i,t[9]=h,t[10]=a,t[11]=A):A=t[11];let j;t[12]===n?j=t[13]:(j=(0,$.jsx)(`div`,{className:`oc-mobile-detail-title w-full truncate typography-ui-label font-medium text-foreground`,children:n}),t[12]=n,t[13]=j);let M;t[14]===r?M=t[15]:(M=r?(0,$.jsx)(`div`,{className:`oc-mobile-detail-subtitle w-full truncate text-muted-foreground`,"aria-live":`polite`,children:r}):null,t[14]=r,t[15]=M);let N;t[16]!==j||t[17]!==M?(N=(0,$.jsxs)(`div`,{className:`flex w-full max-w-72 min-w-0 flex-col items-center justify-center justify-self-center px-1`,children:[j,M]}),t[16]=j,t[17]=M,t[18]=N):N=t[18];let P;t[19]===v?P=t[20]:(P=v.map(he),t[19]=v,t[20]=P);let F;t[21]!==P||t[22]!==c?(F=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center justify-end gap-2`,children:[c,P]}),t[21]=P,t[22]=c,t[23]=F):F=t[23];let I;t[24]!==k||t[25]!==A||t[26]!==N||t[27]!==F?(I=(0,$.jsxs)(`div`,{className:k,children:[A,N,F]}),t[24]=k,t[25]=A,t[26]=N,t[27]=F,t[28]=I):I=t[28];let L;return t[29]!==D||t[30]!==I?(L=(0,$.jsx)(`header`,{className:D,children:I}),t[29]=D,t[30]=I,t[31]=L):L=t[31],L}function he(e,t){return(0,$.jsx)(m,{type:`button`,variant:`mobileGlass`,size:`mobileIcon`,className:f(e.elevated&&`relative z-[60]`),onClick:e.onClick,disabled:e.disabled,"aria-label":e.ariaLabel,"aria-expanded":e.pressed,title:e.title,children:(0,$.jsx)(p,{name:e.icon,className:`size-5`})},`${e.icon}:${t}`)}function ge(e){return e.elevated}export{v as S,X as _,pe as a,le as b,Q as c,re as d,Z as f,fe as g,ue as h,de as i,J as l,se as m,ae as n,ne as o,oe as p,ie as r,ee as s,me as t,te as u,q as v,_ as x,W as y};
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{D as t,T as n}from"./useUIStore-5agS8bsW.js";import{kn as r,u as i}from"./persistence-D1lIuyqO.js";import{nt as a,rt as o}from"./vendor-base-ui-CnHfUmDN.js";import{n as s}from"./vendor-react-DLPElpoQ.js";import{s as c,t as l}from"./vendor-tanstack-react-query-D7pys_c9.js";import{Oo as u,ko as d}from"./useMobileNavigationStore-DQHF_ETu.js";import{t as f}from"./utils-BxJEIWv5.js";import{n as p}from"./Icon-DiIuWOuC.js";import{t as m}from"./button-DaAoVF4X.js";var h=e(o(),1),g=s(),_=class extends Error{code;status;resource;constructor(e,t,n){super(e),this.code=e,this.status=t,this.resource=n}},v=class extends _{operation;constructor(e,t,n){super(e,t,`share_operation`),this.operation=n}},y=(e,t=200)=>{throw new _(`invalid_${e}_response`,t,e)},b=(e,t)=>e&&typeof e==`object`&&!Array.isArray(e)?e:y(t),x=(e,t)=>typeof e==`string`?e:y(t),S=(e,t)=>e===null||typeof e==`string`?e:y(t),C=(e,t)=>typeof e==`number`&&Number.isFinite(e)?e:y(t),w=(e,t)=>e===null?null:C(e,t),T=(e,t)=>typeof e==`boolean`?e:y(t),E=(e,t,n)=>t.includes(e)?e:y(n),D=e=>{let t=b(e,`capability`);return{supported:T(t.supported,`capability`),enabled:T(t.enabled,`capability`),revision:C(t.revision,`capability`),serverInstanceID:S(t.serverInstanceID,`capability`)}},O=e=>{let t=b(e,`assistant`),n=Array.isArray(t.historySessionIDs)?t.historySessionIDs.map(e=>x(e,`assistant`)):[],r=t.historySessionCount===void 0?n.length:C(t.historySessionCount,`assistant`);return!Number.isSafeInteger(r)||r<n.length?y(`assistant`):{id:x(t.id,`assistant`),revision:C(t.revision,`assistant`),enabled:T(t.enabled,`assistant`),name:x(t.name,`assistant`),defaultPrompt:x(t.defaultPrompt,`assistant`),workspacePath:S(t.workspacePath,`assistant`),effectiveWorkspacePath:x(t.effectiveWorkspacePath,`assistant`),managedWorkspacePath:S(t.managedWorkspacePath??null,`assistant`),providerID:x(t.providerID,`assistant`),modelID:x(t.modelID,`assistant`),agent:S(t.agent,`assistant`),variant:S(t.variant??null,`assistant`),mode:E(t.mode,[`continuous`,`stateless`],`assistant`),sessionID:S(t.sessionID,`assistant`),sessionGeneration:C(t.sessionGeneration,`assistant`),historySessionIDs:n,historySessionCount:r,createdAt:w(t.createdAt,`assistant`),updatedAt:C(t.updatedAt,`assistant`),tombstoneAt:w(t.tombstoneAt,`assistant`)}},k=e=>{let t=b(e,`snapshot`);return{revision:C(t.revision,`snapshot`),enabled:T(t.enabled,`snapshot`),assistants:Array.isArray(t.assistants)?t.assistants.map(O):y(`snapshot`)}},A=e=>{let t=b(e,`binding`);return{sessionID:S(t.sessionID,`binding`),directory:x(t.directory,`binding`),sessionGeneration:C(t.sessionGeneration,`binding`)}},j=e=>{let t=b(e,`compact`);return t.summarized===!0?{binding:A(t.binding),summarized:!0}:y(`compact`)},M=e=>{let t=b(e,`message_admission`);return t.admitted===!0?{binding:A(t.binding),messageID:x(t.messageID,`message_admission`),admitted:!0}:y(`message_admission`)},N=e=>{let t=b(e,`share_operation`);return{operationID:x(t.operationID,`share_operation`),assistantID:x(t.assistantID,`share_operation`),sessionID:S(t.sessionID,`share_operation`),messageID:S(t.messageID,`share_operation`),state:E(t.state,[`submitting`,`running`,`completed`,`failed`,`unresolved`],`share_operation`),phase:x(t.phase,`share_operation`),attempt:C(t.attempt,`share_operation`),leaseExpiresAt:w(t.leaseExpiresAt,`share_operation`),errorCode:S(t.errorCode,`share_operation`)}},P=e=>{let t=b(e,`assistant_history`),n=S(t.nextCursor,`assistant_history`),r=T(t.complete,`assistant_history`);return!r&&!n||r&&n||!Array.isArray(t.entries)?y(`assistant_history`):{entries:t.entries.map(e=>{let t=b(e,`assistant_history_entry`),n=x(t.sessionID,`assistant_history_entry`),r=b(t.info,`assistant_history_info`),i=b(r.time,`assistant_history_info`);if(x(r.id,`assistant_history_info`),x(r.sessionID,`assistant_history_info`)!==n||(E(r.role,[`user`,`assistant`,`system`,`tool`],`assistant_history_info`),C(i.created,`assistant_history_info`),!Array.isArray(t.parts)))return y(`assistant_history_entry`);let a=t.parts.map(e=>{let t=b(e,`assistant_history_part`);return x(t.id,`assistant_history_part`),x(t.sessionID,`assistant_history_part`)!==n||x(t.messageID,`assistant_history_part`)!==r.id?y(`assistant_history_part`):(x(t.type,`assistant_history_part`),t)});return{sessionID:n,directory:S(t.directory,`assistant_history_entry`),info:r,parts:a}}),nextCursor:n,complete:r}},F=30,I={snapshot:(e=t())=>[e,`assistants`,`snapshot`],capability:(e=t())=>[e,`assistants`,`capability`],history:(e,r,i,a=t(),o=n())=>[a,o,`assistants`,`history`,e,r,i]},L=(e,t,n)=>{if(!e||!t)return;let r=t.queryKey;if(r[0]===n.transport&&r[1]===n.runtimeGeneration&&r[2]===`assistants`&&r[3]===`history`&&r[4]===n.assistantID)return e},R=async(e,t={})=>{let n=await r(e,t),i=await n.json().catch(()=>null);if(!n.ok)throw new _(i&&typeof i==`object`&&`error`in i&&typeof i.error==`string`?i.error:`request_failed`,n.status);return i},z=(e,t)=>({method:e,headers:{"Content-Type":`application/json`},body:t===void 0?void 0:JSON.stringify(t)}),B=(e,r)=>{if(t()!==e||n()!==r)throw new _(`runtime_stale`,409)},V=(e,t,r)=>{i.setQueryData(I.snapshot(r),n=>n&&{...n,assistants:n.assistants.map(n=>n.id!==e||n.sessionGeneration>t.sessionGeneration?n:{...n,sessionID:t.sessionID,sessionGeneration:t.sessionGeneration,effectiveWorkspacePath:t.directory})}),i.invalidateQueries({queryKey:I.snapshot(r)}),i.invalidateQueries({queryKey:[r,n(),`assistants`,`history`,e]})},H=(e,t)=>{i.setQueryData(I.snapshot(t),t=>t&&{...t,assistants:t.assistants.some(t=>t.id===e.id)?t.assistants.map(t=>t.id===e.id?e:t):[...t.assistants,e]}),i.invalidateQueries({queryKey:I.snapshot(t)})},U=(e=t())=>({queryKey:I.snapshot(e),queryFn:async({signal:e})=>k(await R(`/api/openchamber/assistants/snapshot`,{signal:e})),retry:2}),W=()=>{let e=(0,g.c)(5),n,r,a;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=t(),n=c,r=U(a),e[0]=n,e[1]=r,e[2]=a):(n=e[0],r=e[1],a=e[2]);let o=n(r),s,l;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>d(e=>{if(t()!==a)return;if(e.type===`event-stream-ready`){i.invalidateQueries({queryKey:I.snapshot(a),exact:!0});return}if(e.type!==`assistants-changed`)return;let n=i.getQueryData(I.snapshot(a));(!n||e.revision>n.revision)&&i.invalidateQueries({queryKey:I.snapshot(a),exact:!0})}),l=[a],e[3]=s,e[4]=l):(s=e[3],l=e[4]),h.useEffect(s,l),o},G=(e,r,i,a=t(),o=n())=>({queryKey:I.history(e,r,i,a,o),queryFn:async({signal:t,pageParam:n})=>{B(a,o),await u(),B(a,o);let r=new URLSearchParams({limit:String(F)});n&&r.set(`before`,n);let i=P(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/messages?${r}`,{signal:t}));return B(a,o),i},initialPageParam:null,getNextPageParam:K,placeholderData:(t,n)=>L(t,n,{assistantID:e,transport:a,runtimeGeneration:o}),retry:2}),K=e=>e.complete?void 0:e.nextCursor??void 0,q=(e,t,n)=>{let r=(0,g.c)(7),i=n===void 0||n,a=t.sessionID??``,o;r[0]!==e||r[1]!==t.sessionGeneration||r[2]!==a?(o=G(e,a,t.sessionGeneration),r[0]=e,r[1]=t.sessionGeneration,r[2]=a,r[3]=o):o=r[3];let s=i&&!!(e&&t.sessionID),c;return r[4]!==o||r[5]!==s?(c={...o,enabled:s},r[4]=o,r[5]=s,r[6]=c):c=r[6],l(c)},J=async e=>k(await R(`/api/openchamber/assistants/snapshot`,{signal:e})),Y=(e=t())=>({queryKey:I.capability(e),queryFn:()=>Q(),retry:!1}),X=()=>{let e=(0,g.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=Y(),e[0]=t):t=e[0],c(t)},Z=(e=i,n=t())=>e.getQueryData(I.snapshot(n)),ee=(e=i,n=t())=>e.fetchQuery(U(n)),te=async(e=i)=>{let r=t(),a=n();await e.invalidateQueries({queryKey:I.snapshot(r),exact:!0}),B(r,a);let o=await e.fetchQuery(U(r));return B(r,a),o},ne=async e=>{let r=t(),i=n();await u(),B(r,i);let a=A(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/ensure`,z(`POST`)));return B(r,i),V(e,a,r),a},re=async e=>{let r=t(),i=n(),a=A(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/new`,z(`POST`)));return B(r,i),V(e,a,r),a},ie=async(e,r)=>{let i=t(),a=n(),o=j(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/compact`,z(`POST`,{sessionID:r.sessionID,sessionGeneration:r.sessionGeneration})));return B(i,a),V(e,o.binding,i),o},ae=async(e,r)=>{let i=t(),a=n();await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/session/abort`,z(`POST`,{sessionID:r.sessionID,sessionGeneration:r.sessionGeneration})),B(i,a)},oe=async(e,r,i,a,o=`composer`)=>{let s=t(),c=n(),l=M(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/messages`,z(`POST`,{sessionID:r.sessionID,sessionGeneration:r.sessionGeneration,messageID:i,parts:a,source:o})));return B(s,c),V(e,l.binding,s),l},se=async(e,r,i,a,o)=>{let s=t(),c=n(),l=N(await R(`/api/openchamber/assistants/${encodeURIComponent(e)}/share`,z(`POST`,{operationID:r,payload:{messageID:i,parts:a,source:o}})));return B(s,c),l},ce=async(e,r=t(),i=n())=>{B(r,i);let a=N(await R(`/api/openchamber/assistants/share-operations/${encodeURIComponent(e)}`));return B(r,i),a},le=async(e,r=t(),i=n())=>{let a=e;for(let e=0;e<60&&(a.state===`running`||a.state===`submitting`);e+=1)B(r,i),await new Promise(e=>setTimeout(e,750)),a=await ce(a.operationID,r,i);if(B(r,i),a.state===`completed`)return a;throw a.state===`failed`?new v(a.errorCode??`share_failed`,400,a):new v(`share_unresolved`,408,a)},ue=async(e,n)=>{await R(`/api/openchamber/assistants/settings`,z(`PUT`,{enabled:e,expectedRevision:n}));let r=t();await Promise.all([i.invalidateQueries({queryKey:I.snapshot(r),exact:!0}),i.invalidateQueries({queryKey:I.capability(r),exact:!0})])},de=async e=>{let n=t(),r=O(await R(`/api/openchamber/assistants`,z(`POST`,e)));return H(r,n),r},fe=async(e,r)=>{let i=t(),a=n(),o=O(await R(`/api/openchamber/assistants/${encodeURIComponent(e.id)}`,z(`PATCH`,{...r,expectedRevision:e.revision})));return B(i,a),H(o,i),o},pe=async e=>{await R(`/api/openchamber/assistants/${encodeURIComponent(e.id)}`,z(`DELETE`,{expectedRevision:e.revision})),await i.invalidateQueries({queryKey:I.snapshot(t())})},Q=async()=>D(await R(`/api/openchamber/assistants/capability`)),$=a();function me(e){let t=(0,g.c)(32),{title:n,subtitle:r,backAriaLabel:i,onBack:a,backDisabled:o,actions:s,trailing:c,sticky:l,overlay:u,elevated:d}=e,h=o!==void 0&&o,_;t[0]===s?_=t[1]:(_=s===void 0?[]:s,t[0]=s,t[1]=_);let v=_,y=l!==void 0&&l,b=u!==void 0&&u,x=d!==void 0&&d,S=!!c||v.length>0,C=x||v.some(ge),w=y&&`oc-mobile-detail-navigation-sticky`,T=b&&`absolute inset-x-0 top-0`,E=C?`z-[60]`:b?`z-30`:void 0,D;t[2]!==w||t[3]!==T||t[4]!==E?(D=f(`oc-mobile-detail-navigation relative shrink-0 pt-[max(0.25rem,var(--oc-safe-area-top,0px))]`,w,T,E),t[2]=w,t[3]=T,t[4]=E,t[5]=D):D=t[5];let O=S&&v.length+ +!!c>1?`grid-cols-[2.75rem_minmax(0,1fr)_auto]`:`grid-cols-[2.75rem_minmax(0,1fr)_2.75rem]`,k;t[6]===O?k=t[7]:(k=f(`oc-mobile-detail-navigation-content grid items-center gap-1 px-4`,O),t[6]=O,t[7]=k);let A;t[8]!==i||t[9]!==h||t[10]!==a?(A=a?(0,$.jsx)(m,{type:`button`,variant:`mobileGlass`,size:`mobileIcon`,className:`justify-self-start`,onClick:a,disabled:h,"aria-label":i,children:(0,$.jsx)(p,{name:`arrow-left-s`,className:`size-5`})}):(0,$.jsx)(`span`,{"aria-hidden":`true`}),t[8]=i,t[9]=h,t[10]=a,t[11]=A):A=t[11];let j;t[12]===n?j=t[13]:(j=(0,$.jsx)(`div`,{className:`oc-mobile-detail-title w-full truncate typography-ui-label font-medium text-foreground`,children:n}),t[12]=n,t[13]=j);let M;t[14]===r?M=t[15]:(M=r?(0,$.jsx)(`div`,{className:`oc-mobile-detail-subtitle w-full truncate text-muted-foreground`,"aria-live":`polite`,children:r}):null,t[14]=r,t[15]=M);let N;t[16]!==j||t[17]!==M?(N=(0,$.jsxs)(`div`,{className:`flex w-full max-w-72 min-w-0 flex-col items-center justify-center justify-self-center px-1`,children:[j,M]}),t[16]=j,t[17]=M,t[18]=N):N=t[18];let P;t[19]===v?P=t[20]:(P=v.map(he),t[19]=v,t[20]=P);let F;t[21]!==P||t[22]!==c?(F=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center justify-end gap-2`,children:[c,P]}),t[21]=P,t[22]=c,t[23]=F):F=t[23];let I;t[24]!==k||t[25]!==A||t[26]!==N||t[27]!==F?(I=(0,$.jsxs)(`div`,{className:k,children:[A,N,F]}),t[24]=k,t[25]=A,t[26]=N,t[27]=F,t[28]=I):I=t[28];let L;return t[29]!==D||t[30]!==I?(L=(0,$.jsx)(`header`,{className:D,children:I}),t[29]=D,t[30]=I,t[31]=L):L=t[31],L}function he(e,t){return(0,$.jsx)(m,{type:`button`,variant:`mobileGlass`,size:`mobileIcon`,className:f(e.elevated&&`relative z-[60]`),onClick:e.onClick,disabled:e.disabled,"aria-label":e.ariaLabel,"aria-expanded":e.pressed,title:e.title,children:(0,$.jsx)(p,{name:e.icon,className:`size-5`})},`${e.icon}:${t}`)}function ge(e){return e.elevated}export{v as S,X as _,pe as a,le as b,Q as c,re as d,Z as f,fe as g,ue as h,de as i,J as l,se as m,ae as n,ne as o,oe as p,ie as r,ee as s,me as t,te as u,q as v,_ as x,W as y};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/rolldown-runtime-C0FnF6B9.js","assets/useAssistantUIStore-Bq3cPj2x.js","assets/useUIStore-5agS8bsW.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{$ as n,D as r,E as i,J as a,M as o,T as s,Z as c,j as l,w as u}from"./useUIStore-5agS8bsW.js";import{Ot as d,bt as f,et as p,kn as m,nt as h,yt as g}from"./persistence-DPNMIbF5.js";import{_}from"./desktopHosts-CBoBpJ1Z.js";import{n as v}from"./desktopRelayRestore-l2R9muux.js";import{nt as y,rt as b}from"./vendor-base-ui-CnHfUmDN.js";import{a as x,n as S,o as ee,t as te}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as ne}from"./vendor-react-DLPElpoQ.js";import{n as C}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as re}from"./clipboard-BW7nk_Cx.js";import{Ao as ie,Co as w,ko as T,r as ae}from"./useMobileNavigationStore-DnzT4jO2.js";import{S as oe,b as se,c as E,m as ce,s as le,t as ue,u as de}from"./MobileDetailNavigation-Q2IzHqGA.js";import{i as D,n as fe}from"./useAssistantUIStore-Bq3cPj2x.js";import{t as pe}from"./AgentAvatar-B2kZjgaf.js";import{n as me}from"./Icon-AXqa-fYB.js";import{n as he,t as ge}from"./dialog-DjYfj1Sn.js";var _e=ne(),O=e(b(),1),ve=`openchamber.mobile.connections.v1`,ye=`openchamber.mobile.`,be=`openchamber.mobile.deviceId`,xe=()=>{try{let e=window.localStorage.getItem(be);if(e&&e.trim())return e.trim();let t=p();return window.localStorage.setItem(be,t),t}catch{return p()}},Se=()=>`mobile:${xe()}`,Ce=()=>{try{let e=S.getPlatform();return e===`ios`||e===`android`?e:void 0}catch{return}},we=12,Te=8e3,Ee=2500,De=3e3,Oe=2500,k=e=>{let t=e.trim();if(!t)return``;let n=/^https?:\/\//i.test(t)?t:`http://${t}`,r=new URL(n);return r.hash=``,r.search=``,r.pathname=r.pathname.replace(/\/+$/,``),r.toString().replace(/\/+$/,``)},ke=e=>{try{return new URL(e).host}catch{return e}},A=e=>{try{return k(e)}catch{return e.trim().replace(/\/+$/g,``)}},Ae=(e,t)=>A(e)===A(t),je=e=>`relay:${e.serverId}@${e.relayUrl.trim()}`,Me=e=>`relay://${e.serverId}`,Ne=e=>e.candidates.filter(e=>e.kind===`direct`),j=e=>{let t=e.candidates.find(e=>e.kind===`relay`);return t&&t.kind===`relay`?t.relay:null},M=e=>{let t=Ne(e)[0];if(t)return t.url;let n=j(e);return n?Me(n):``},N=e=>{let t=j(e),n=t?je(t):(()=>{let t=Ne(e)[0];return t?A(t.url):``})(),r=e.sshTarget?.hostId?.trim();return r?`${n}#ssh:${r}`:n},Pe=N,Fe=(e,t)=>{let n=e.find(e=>e.kind===`relay`),r=n&&n.kind===`relay`?n.relay.serverId:null,i=n&&n.kind===`relay`?n.relay.relayUrl.trim():null,a=new Set(e.filter(e=>e.kind===`direct`).map(e=>A(e.url)));return t.some(e=>e.kind===`relay`?r!==null&&e.relay.serverId===r&&e.relay.relayUrl.trim()===i:a.has(A(e.url)))},Ie=(e,t)=>{let n=e?.hostId?.trim()||``,r=t?.hostId?.trim()||``;return!n&&!r?!0:!n||!r?!1:n===r&&(e?.desktopServerId?.trim()||``)===(t?.desktopServerId?.trim()||``)},Le=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.hostId==`string`?t.hostId.trim():``,r=typeof t.desktopServerId==`string`?t.desktopServerId.trim():``,i=typeof t.desktopClientToken==`string`?t.desktopClientToken.trim():``;if(!(!n||!r||!i))return{hostId:n,desktopServerId:r,desktopClientToken:i}},Re=(e,t)=>t.id&&e.id===t.id?!0:Fe(e.candidates,t.candidates)?Ie(e.sshTarget,t.sshTarget):!1,ze=e=>{let t=(()=>{try{return k(e)}catch{return``}})();return t?[{kind:`direct`,url:t}]:[]},Be=e=>{if(e.candidates&&e.candidates.length>0)return e.candidates;let t=[];return typeof e.url==`string`&&e.url.trim()&&!/^relay:\/\//i.test(e.url.trim())&&t.push(...ze(e.url)),e.relay&&t.push({kind:`relay`,relay:e.relay}),t},Ve=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;if(typeof t.relayUrl!=`string`||!t.relayUrl.trim()||typeof t.serverId!=`string`||!t.serverId.trim())return null;let n=t.hostEncPubJwk;if(!n||typeof n!=`object`||Array.isArray(n))return null;let r=n;return r.kty!==`EC`||r.crv!==`P-256`||typeof r.x!=`string`||!r.x||typeof r.y!=`string`||!r.y?null:{relayUrl:t.relayUrl,serverId:t.serverId,hostEncPubJwk:{kty:`EC`,crv:`P-256`,x:r.x,y:r.y}}},He=e=>{try{return JSON.stringify(e)}catch{return String(e)}},P=(e,t={})=>{He(t)},F=(e,t={})=>{He(t)},Ue=e=>{if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}},We=e=>{if(typeof e!=`string`)return e??void 0;try{return JSON.parse(e)}catch{return e}},Ge=async(e,t)=>{if(!T())return null;try{let{CapacitorHttp:n}=await ee(async()=>{let{CapacitorHttp:e}=await import(`./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js`).then(e=>e.i);return{CapacitorHttp:e}},__vite__mapDeps([0,1])),r=Object.fromEntries(new Headers(t?.headers).entries()),i=await n.request({url:e,method:t?.method||`GET`,headers:r,data:We(t?.body)});return{ok:i.status>=200&&i.status<300,status:i.status,source:`native-http`,json:async()=>Ue(i.data)}}catch(t){return console.warn(`[mobile-connect]`,`native-http failed`,He({url:e,error:t instanceof Error?t.message:String(t)})),null}},Ke=async(e,t)=>{let n=await fetch(e,t).catch(t=>(console.warn(`[mobile-connect]`,`browser-fetch failed`,He({url:e,error:t instanceof Error?t.message:String(t)})),null));return n?{ok:n.ok,status:n.status,source:`browser-fetch`,json:()=>n.json()}:null},I=async(e,t,n)=>{let r,i=new Promise(t=>{r=window.setTimeout(()=>{n?.(),t(null)},e)});try{return await Promise.race([t,i])}catch{return null}finally{r!==void 0&&window.clearTimeout(r)}},L=async(e,t,n)=>{let r=n?.totalTimeoutMs??Te,i=Date.now(),a=await I(Math.min(Ee,r),Ge(e,t));if(a)return a;let o=new AbortController;return I(Math.max(500,r-(Date.now()-i)),Ke(e,{...t,signal:o.signal}),()=>o.abort())},qe=async e=>{if(!e)return null;let t=await e.json().catch(()=>null);if(!t||typeof t!=`object`)return null;let n=t;return{authenticated:typeof n.authenticated==`boolean`?n.authenticated:void 0,disabled:typeof n.disabled==`boolean`?n.disabled:void 0,scope:typeof n.scope==`string`?n.scope:void 0}},R=15e3,Je=async(e,t,r,i=R,a)=>{let o=n({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk,...r?{grant:r}:{}}),s=e=>e===`ok`&&a?.keepTunnel?{outcome:e,tunnel:o}:(o.close(),{outcome:e});try{let e=t?{Authorization:`Bearer ${t}`}:void 0,n=await I(i,o.fetch(`/auth/session`,{headers:e}).catch(()=>null));if(P(`relay:session`,{ok:n?.ok===!0,status:n?.status??null,hasToken:!!t}),!n)return s(`unreachable`);if(n.status===401)return s(t?`auth-failed`:`needs-login`);if(!n.ok&&n.status!==404)return s(`auth-failed`);let r=await qe(n);return r&&r.disabled!==!0&&r.authenticated===!1?s(t?`auth-failed`:`needs-login`):s(`ok`)}catch(e){throw o.close(),e}},Ye=(e,t,n,r,i,s)=>{let c=typeof window<`u`?window.location.origin:``,l={relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk,...n?{grant:n}:{}};i&&a(l,i),o({apiBaseUrl:c,clientToken:t,runtimeKey:r??je(e),relay:l,requestHeaders:s||null})},Xe=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(t.kind===`direct`)return typeof t.url==`string`&&t.url.trim()?{kind:`direct`,url:t.url}:null;if(t.kind===`relay`){let e=Ve(t.relay);return e?{kind:`relay`,relay:e}:null}return null},Ze=e=>{if(e.mode===`relay`){let t=Ve(e.relay);return t?[{kind:`relay`,relay:t}]:[]}return typeof e.url==`string`?ze(e.url):[]},z=()=>{if(typeof window>`u`)return[];let e;try{e=JSON.parse(window.localStorage.getItem(ve)||`[]`)}catch{return[]}if(!Array.isArray(e))return[];let t=T();return e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let n=e;if(typeof n.id!=`string`)return[];let r=Array.isArray(n.candidates)?n.candidates.map(Xe).filter(e=>!!e):Ze(n);if(r.length===0)return[];let i=typeof n.clientToken==`string`&&n.clientToken.trim()?n.clientToken:void 0,a=typeof n.label==`string`&&n.label.trim()?n.label:ke(M({candidates:r})),o=Le(n.sshTarget),s={id:n.id,label:a,candidates:r,lastUsedAt:typeof n.lastUsedAt==`number`?n.lastUsedAt:0,...o?{sshTarget:o}:{}};return t?[{...s,hasToken:!!n.hasToken||!!i}]:[{...s,clientToken:i,hasToken:!!i}]}).sort((e,t)=>t.lastUsedAt-e.lastUsedAt)},Qe=e=>e.kind===`relay`?{kind:`relay`,relay:{relayUrl:e.relay.relayUrl,serverId:e.relay.serverId,hostEncPubJwk:e.relay.hostEncPubJwk}}:{kind:`direct`,url:e.url},$e=e=>{if(typeof window>`u`)return;let t=T(),n=e.slice(0,we).map(e=>{let n={id:e.id,label:e.label,candidates:e.candidates.map(Qe),lastUsedAt:e.lastUsedAt,...e.sshTarget?{sshTarget:e.sshTarget}:{}};return t?{...n,hasToken:!!(e.hasToken||e.clientToken)}:{...n,clientToken:e.clientToken}});try{window.localStorage.setItem(ve,JSON.stringify(n))}catch(e){console.warn(`[mobile-storage] failed to persist connection metadata`,e)}},et=(e,t)=>{let n=e.find(e=>Re(e,t)),r=T(),i=t.sshTarget===null?void 0:t.sshTarget??n?.sshTarget,a={id:t.id||n?.id||p(),label:t.label,candidates:t.candidates,lastUsedAt:Date.now(),...i?{sshTarget:i}:{},...r?{hasToken:t.hasToken??(!!t.clientToken||n?.hasToken||!1)}:{clientToken:t.clientToken??n?.clientToken,hasToken:!!(t.clientToken??n?.clientToken)}};return[a,...e.filter(e=>e.id!==a.id&&!Re(e,t))].slice(0,we)},tt=te,nt=0,rt=e=>`${ye}token.${encodeURIComponent(e)}`,it=async(e,t)=>{let n,r=new Promise(e=>{n=window.setTimeout(()=>e(t),De)});try{return await Promise.race([e.catch(()=>t),r])}finally{n!==void 0&&window.clearTimeout(n)}},at=async(e,t,n)=>T()?it(t().catch(t=>(console.warn(`[mobile-storage] ${e} failed`,t),n)),n):n,B=async e=>{F(`secure:read-start`,{key:e});let t=await at(`secure:read`,async()=>(await tt.internalGetItem({prefixedKey:rt(e),sync:!1})).data,null),n=typeof t==`string`&&t.trim()?t:void 0;return F(`secure:read`,{key:e,hasToken:!!n}),n},V=async(e,t)=>{F(`secure:write-start`,{key:e});let n=await at(`secure:write`,async()=>(await tt.internalSetItem({prefixedKey:rt(e),data:t,sync:!1,access:nt}),!0),!1);return F(`secure:write`,{key:e,ok:n}),n},ot=async e=>{await at(`secure:delete`,async()=>(await tt.internalRemoveItem({prefixedKey:rt(e),sync:!1}),!0),!1)},st=async()=>{if(typeof window>`u`||!T())return;let e;try{e=JSON.parse(window.localStorage.getItem(ve)||`[]`)}catch{return}if(!Array.isArray(e))return;let t=e.filter(e=>!!e&&typeof e==`object`&&typeof e.url==`string`&&typeof e.clientToken==`string`&&!!e.clientToken.trim());if(t.length!==0){F(`secure:migrate-start`,{count:t.length});for(let{url:e,clientToken:n}of t)await V(A(e),n);$e(z()),F(`secure:migrate-done`,{count:t.length})}},ct=async()=>(await st(),z()),H=async e=>{let t=et(z(),e);if($e(t),T()&&e.clientToken){let n=t[0];n&&await V(N(n),e.clientToken)}return t},lt=async e=>{let t=z(),n=t.find(t=>t.id===e)??null,r=t.filter(t=>t.id!==e);if($e(r),n&&T()&&await ot(N(n)),n){let e=N(n),{useAssistantUIStore:t}=await ee(async()=>{let{useAssistantUIStore:e}=await import(`./useAssistantUIStore-Bq3cPj2x.js`).then(e=>e.a);return{useAssistantUIStore:e}},__vite__mapDeps([2,1,3,4,5]));t.getState().removeCatalogPartition(e);let{publishNativeAssistantCatalog:r}=await ee(async()=>{let{publishNativeAssistantCatalog:e}=await Promise.resolve().then(()=>an);return{publishNativeAssistantCatalog:e}},void 0);await r().catch(()=>void 0)}return r},ut=1500,U=async(e,t,n)=>{let r=n?.fast?{totalTimeoutMs:Oe}:void 0,i=j({candidates:e})?.serverId??null,a=e.find(e=>e.kind===`relay`)??null,o=e.filter(e=>e.kind===`direct`),s=async()=>{for(let e of o){let n=k(e.url)||e.url,a=t?{Authorization:`Bearer ${t}`}:void 0,o=await L(`${n}/health`,{method:`GET`},r);if(!o?.ok)continue;if(i){let e=await o.json().catch(()=>null),t=e&&typeof e==`object`?e.serverId:null;if(typeof t==`string`&&t&&t!==i){P(`probe:server-id-mismatch`,{url:n});continue}}let s=await L(`${n}/auth/session`,{method:`GET`,credentials:`include`,headers:a},r);if(s?.status===401)return{status:`needs-login`};if(!s||!s.ok&&s.status!==404)continue;let c=await qe(s);if(c&&c.disabled!==!0&&c.authenticated===!1)return{status:`needs-login`};let l=c?.disabled===!0;return!t&&T()&&!l&&c?.scope!==`client`?{status:`needs-login`}:{status:`ok`,transport:{kind:`direct`,url:n}}}return{status:`unreachable`}},c=async()=>{if(!a)return{status:`unreachable`};let{outcome:e,tunnel:r}=await Je(a.relay,t,void 0,n?.fast?Oe:void 0,{keepTunnel:!0});return e===`ok`?{status:`ok`,transport:{kind:`relay`,relay:a.relay,tunnel:r}}:e===`needs-login`||e===`auth-failed`?{status:`needs-login`}:{status:`unreachable`}};return a?o.length===0?c():new Promise(e=>{let t=!1,n=!1,r,i=null,a=null,o=e=>{e?.status===`ok`&&e.transport.kind===`relay`&&e.transport.tunnel?.close()},l=n=>{t||(t=!0,e(n))},u=()=>{n||t||(r!==void 0&&(window.clearTimeout(r),r=void 0),c().then(e=>{if(a=e,t||n){o(e);return}if(e.status===`ok`||e.status===`needs-login`){l(e);return}i&&l(i)}))};s().then(e=>{if(i=e,!t){if(e.status===`ok`||e.status===`needs-login`){n=!0,r!==void 0&&window.clearTimeout(r),o(a),l(e);return}if(a){l(a);return}u()}}),r=window.setTimeout(u,ut)}):s()},W=(e,t,n)=>{e.kind===`relay`?Ye(e.relay,t,n?.grant,n?.runtimeKey,e.tunnel,n?.requestHeaders):o({apiBaseUrl:e.url,clientToken:t,runtimeKey:n?.runtimeKey,requestHeaders:n?.requestHeaders||null}),n?.requestHeaders?.[`x-openchamber-target-port`]||Tt()},dt=()=>{let e=z()[0];return e?.label?.trim()?e.label:null},ft=async()=>{await st();let e=z()[0];if(!e)return!1;let t;if(T()){if(!e.hasToken||(t=await B(N(e)),!t))return!1}else if(t=e.clientToken,!t)return!1;if(e.sshTarget){let t=await gt(e.candidates);if(!t||t.kind!==`relay`)return!1;try{let n=await _(e.sshTarget.hostId,{fetch:(e,n)=>t.tunnel.fetch(e,n),headers:{Authorization:`Bearer ${e.sshTarget.desktopClientToken}`}});return!n.reachable||typeof n.localPort!=`number`?(t.tunnel.close(),!1):(await H({id:e.id,label:e.label,candidates:e.candidates,clientToken:n.token,sshTarget:e.sshTarget}),v({token:n.token,localPort:n.localPort,runtimeKey:N(e),relay:t.relay,liveTunnel:t.tunnel}),!0)}catch{return t.tunnel.close(),!1}}let n=await U(e.candidates,t);return n.status===`ok`&&(await H({id:e.id,label:e.label,candidates:e.candidates}),W(n.transport,t,{runtimeKey:N(e)}),!0)},pt=async(e,t)=>{let n=(await ct()).find(t=>N(t)===e);if(!n)return`missing`;let r=T()?n.hasToken?await B(e):void 0:n.clientToken;if(!r)return`auth-required`;let i=t?.transportPreference===`relay`?n.candidates.filter(e=>e.kind===`relay`):n.candidates;if(i.length===0)return`offline`;let a=await U(i,r,{fast:!0});return a.status===`needs-login`?`auth-required`:a.status===`ok`?(W(a.transport,r,{runtimeKey:e}),`connected`):`offline`},mt=async(e,t)=>{let n=``;try{n=k(e.url)}catch{return!1}if(!n)return!1;let r=e.clientToken?.trim()||void 0,i=r?{Authorization:`Bearer ${r}`}:void 0,a=t?.fast?{totalTimeoutMs:Oe}:void 0;if(!(await L(`${n}/health`,{method:`GET`,headers:i},a))?.ok)return!1;let o=await L(`${n}/auth/session`,{method:`GET`,credentials:`include`,headers:i},a);if(!o||!o.ok&&o.status!==404)return!1;let s=await qe(o);return!(s&&s.disabled!==!0&&s.authenticated===!1)},ht=e=>[...e].sort((e,t)=>{let n=(e.priority??100)-(t.priority??100);if(n!==0)return n;let r=e=>e.type===`relay`?2:+!e.url.startsWith(`https://`);return r(e)-r(t)}).flatMap(e=>{if(e.type===`relay`){let t=Ve({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk});return t?[{kind:`relay`,relay:t}]:[]}return ze(e.url)}),gt=async e=>{let t=j({candidates:e})?.serverId??null;for(let r of e){if(r.kind===`relay`){let e=n(r.relay),t=await I(R,e.fetch(`/health`).catch(()=>null));if(P(`establish:relay:health`,{ok:t?.ok===!0,status:t?.status??null}),t?.ok)return{kind:`relay`,relay:r.relay,tunnel:e};e.close();continue}let e=k(r.url)||r.url,i=await L(`${e}/health`,{method:`GET`});if(P(`establish:direct:health`,{ok:i?.ok===!0,status:i?.status??null}),i?.ok){if(t){let n=await i.json().catch(()=>null),r=n&&typeof n==`object`?n.serverId:null;if(typeof r==`string`&&r&&r!==t){P(`establish:server-id-mismatch`,{url:e});continue}}return{kind:`direct`,url:e}}}return null},_t=async(e,t)=>{if(!c())return mt(e,t);let n=await I(t?.fast?Oe:R,m(`/auth/session`).then(e=>e).catch(()=>null));if(!n)return!0;if(n.status===401)return!1;if(!n.ok&&n.status!==404)return!0;let r=await qe(n);return!(r&&r.disabled!==!0&&r.authenticated===!1)},vt=e=>e.kind===`relay`?c():!c()&&Ae(e.url,u()),yt=()=>{let e=i();return e?z().find(t=>N(t)===e)??null:null},bt=e=>{let t=i();return!!t&&N(e)===t},xt=async()=>{let e=yt();if(!e)return`no-connection`;let t;if(t=T()?e.hasToken?await B(N(e)):void 0:e.clientToken,!t)return`unreachable`;let n=e.candidates.findIndex(e=>vt(e.kind===`relay`?{kind:`relay`,relay:e.relay}:{kind:`direct`,url:e.url})),r=await U(n>=0?e.candidates.slice(0,n):e.candidates,t,{fast:!0});if(r.status===`ok`)return await H({id:e.id,label:e.label,candidates:e.candidates}),W(r.transport,t,{runtimeKey:N(e)}),`switched`;if(r.status===`needs-login`)return`unreachable`;if(n>=0&&await _t({url:u(),clientToken:t},{fast:!0}))return Tt(),`unchanged`;let i=await U(n>=0?e.candidates.slice(n+1):[],t,{fast:!0});return i.status===`ok`?(await H({id:e.id,label:e.label,candidates:e.candidates}),W(i.transport,t,{runtimeKey:N(e)}),`switched`):`unreachable`},St=5e3,Ct=!1,wt=async()=>{if(Ct)return`skipped`;let e=yt();if(!e)return P(`candidates:refresh-skip`,{reason:`no-active-connection`}),`skipped`;let t=j(e);if(!t)return P(`candidates:refresh-skip`,{reason:`no-relay-candidate`}),`skipped`;Ct=!0;try{let n=await I(R,m(`/api/client-auth/connection/candidates`).then(e=>e).catch(()=>null));if(!n?.ok)return P(`candidates:refresh-skip`,{reason:`fetch-failed`,status:n?.status??null}),`skipped`;let r=await n.json().catch(()=>null);if(!r||r.serverId!==t.serverId)return P(`candidates:refresh-skip`,{reason:`server-id-mismatch`}),`skipped`;let i=Array.isArray(r.candidates)?r.candidates:[],a=[];for(let e of i){if(!e||typeof e!=`object`)continue;let t=e;if(t.type===`lan`&&typeof t.url==`string`)try{let e=k(t.url);e&&!a.includes(e)&&a.push(e)}catch{}}if(a.length===0)return P(`candidates:refresh-skip`,{reason:`no-lan-reported`}),`skipped`;let o=Ne(e).filter(e=>e.url.startsWith(`https://`)),s=[...a.map(e=>({kind:`direct`,url:e})),...o,{kind:`relay`,relay:t}];return JSON.stringify(e.candidates.map(Qe))===JSON.stringify(s.map(Qe))?`unchanged`:(P(`candidates:refreshed`,{lanCount:a.length}),await H({id:e.id,label:e.label,candidates:s}),`updated`)}finally{Ct=!1}},Tt=()=>{typeof window>`u`||window.setTimeout(()=>{(async()=>{let e=await wt().catch(()=>`skipped`);P(`candidates:refresh-result`,{result:e}),e===`updated`&&c()&&await xt().catch(()=>null)})()},St)},Et=e=>{let{t}=re(),[n,r]=O.useState(()=>z()),[i,a]=O.useState(null),[o,s]=O.useState(null),[c,l]=O.useState(null),u=O.useRef(n),d=O.useRef(null),f=O.useRef(new Set),m=C(()=>{e(),f.current.forEach(e=>e())}),h=C(e=>(f.current.add(e),()=>f.current.delete(e))),g=C(e=>{u.current=e,r(e)}),y=C(e=>{d.current=e,a(e)}),b=C(e=>{d.current===e&&(d.current=null,a(null))});O.useEffect(()=>{let e=!1;return ct().then(t=>{e||g(t)}),()=>{e=!0}},[g]);let x=C(e=>{let t=et(u.current,e);return g(t),$e(t),t}),S=C(async e=>{s(null),y(`connect`);try{let n=Be(e);if(n.length===0){s(t(`mobile.connect.error.urlRequired`));return}let r=e.id?u.current.find(t=>t.id===e.id):u.current.find(e=>Fe(e.candidates,n)&&!e.sshTarget),i=e.label?.trim()||r?.label||ke(M({candidates:n})),a=e.relayGrant,o=r?.sshTarget,c=e.clientToken?.trim()||void 0,d=!!c;if(c||(T()?r?.hasToken&&(c=await B(N(r))):c=r?.clientToken),P(`connect:start`,{candidates:n.map(e=>e.kind),hasToken:!!c,sshHostId:o?.hostId??null}),o){let e=await gt(n);if(!e||e.kind!==`relay`){s(t(`mobile.connect.error.sshNotConnected`));return}let a;try{a=await _(o.hostId,{fetch:(t,n)=>e.tunnel.fetch(t,n),headers:{Authorization:`Bearer ${o.desktopClientToken}`}})}catch{e.tunnel.close(),s(t(`mobile.connect.error.sshNotConnected`));return}if(!a.reachable||typeof a.localPort!=`number`){e.tunnel.close(),s(t(`mobile.connect.error.sshNotConnected`));return}let c=N({candidates:n,sshTarget:o});T()&&await V(c,a.token),x({id:r?.id,label:i,candidates:n,clientToken:a.token,sshTarget:o}),v({token:a.token,localPort:a.localPort,runtimeKey:c,relay:e.relay,liveTunnel:e.tunnel}),m();return}let f=await U(n,c);if(P(`connect:probe`,{status:f.status}),f.status===`unreachable`){s(t(`mobile.connect.error.unreachable`));return}if(f.status===`needs-login`){x({id:r?.id,label:i,candidates:n,sshTarget:null}),l({id:r?.id??p(),label:i,candidates:n,relay:j({candidates:n})??void 0,relayGrant:a});return}let h=N({candidates:n});c&&d&&T()&&await V(h,c),x({id:r?.id,label:i,candidates:n,clientToken:c,sshTarget:null}),W(f.transport,c??null,{runtimeKey:h,grant:a}),m()}catch(e){console.warn(`[mobile-connect] connect threw`,e),s(t(`mobile.connect.error.invalidUrl`))}finally{b(`connect`)}}),ee=C(async e=>{if(d.current===`pairing`)return;s(null),y(`pairing`);let n=ht(e.candidates),r=null,i=!1;try{if(r=await gt(n),!r){s(t(`mobile.connect.error.unreachable`));return}let a={method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({pairingId:e.pairingId,secret:e.secret,clientLabel:`OpenChamber Mobile`,clientKind:`mobile`,deviceName:`OpenChamber Mobile`,devicePlatform:Ce(),dedupeKey:Se()})},o=r.kind===`relay`?await I(R,r.tunnel.fetch(`/api/client-auth/pairing/redeem`,a).catch(()=>null)):await L(`${r.url}/api/client-auth/pairing/redeem`,a);if(!o?.ok){s(t(`mobile.connect.error.authRequired`));return}let c=await o.json().catch(()=>null),l=typeof c?.clientToken==`string`?c.clientToken.trim():``;if(!l){s(t(`mobile.connect.error.authRequired`));return}let u=typeof c?.server?.label==`string`?c.server.label:``,d=e.label||u||ke(M({candidates:n})),f=e.sshHostId?.trim()||``,p=r.kind===`relay`?r:null;if(f&&p){try{let r=await _(f,{pairingId:e.pairingId,fetch:(e,t)=>p.tunnel.fetch(e,t),headers:{Authorization:`Bearer ${l}`}});if(r.reachable&&typeof r.localPort==`number`){let e={hostId:f,desktopServerId:p.relay.serverId,desktopClientToken:l},a=N({candidates:n,sshTarget:e});if(T()&&!await V(a,r.token)){s(t(`mobile.connect.error.authRequired`));return}x({label:d,candidates:n,clientToken:r.token,sshTarget:e}),v({token:r.token,localPort:r.localPort,runtimeKey:a,relay:p.relay,liveTunnel:p.tunnel}),i=!0,m();return}}catch{}s(t(`mobile.connect.error.sshNotConnected`));return}let h=N({candidates:n});if(T()&&!await V(h,l)){s(t(`mobile.connect.error.authRequired`));return}x({label:d,candidates:n,clientToken:l,sshTarget:null}),W(r.kind===`relay`?{kind:`relay`,relay:r.relay,tunnel:r.tunnel}:{kind:`direct`,url:r.url},l,{runtimeKey:h}),i=r.kind===`relay`,m()}catch(e){console.warn(`[mobile-connect] pairing threw`,e),s(t(`mobile.connect.error.authRequired`))}finally{!i&&r?.kind===`relay`&&r.tunnel.close(),b(`pairing`)}}),te=C(async e=>{if(!c||!e.trim()||d.current===`password`)return;s(null),y(`password`);let{id:n,label:r,candidates:i}=c,a=null,o=!1;try{if(a=await gt(i),!a){s(t(`mobile.connect.error.unreachable`));return}let c={method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({password:e,trustDevice:!0,issueClientToken:!0,clientLabel:`OpenChamber Mobile`,clientKind:`mobile`,devicePlatform:Ce(),dedupeKey:Se()})};P(`password:start`,{transport:a.kind});let u=a.kind===`relay`?await I(R,a.tunnel.fetch(`/auth/session`,c).catch(()=>null)):await L(`${a.url}/auth/session`,c);if(P(`password:done`,{ok:u?.ok===!0,status:u?.status??null}),!u?.ok){s(t(`mobile.connect.error.passwordFailed`));return}let d=await u.json().catch(()=>null),f=typeof d?.clientToken==`string`?d.clientToken.trim():``;if(P(`password:token`,{issued:!!f}),!f){if(a.kind===`direct`&&!T()){x({id:n,label:r,candidates:i}),l(null),W({kind:`direct`,url:a.url},null,{runtimeKey:N({candidates:i})}),m();return}s(t(`mobile.connect.error.authRequired`));return}T()&&await V(N({candidates:i}),f),x({id:n,label:r,candidates:i,clientToken:f}),l(null),W(a.kind===`relay`?{kind:`relay`,relay:a.relay,tunnel:a.tunnel}:{kind:`direct`,url:a.url},f,{runtimeKey:N({candidates:i})}),o=a.kind===`relay`,m()}catch(e){console.warn(`[mobile-connect] password threw`,e),s(t(`mobile.connect.error.passwordFailed`))}finally{!o&&a?.kind===`relay`&&a.tunnel.close(),b(`password`)}}),ne=C(()=>{l(null),s(null)}),ie=C(async e=>{s(null);let n=Be(e),r=e.id?u.current.find(t=>t.id===e.id)??null:null;if(r){let e=n.filter(e=>e.kind===`direct`),t=Ne(r).filter(t=>t.url.startsWith(`https://`)&&!e.some(e=>Ae(e.url,t.url))),i=j(r);n=[...e,...t,...i?[{kind:`relay`,relay:i}]:[]]}if(n.length===0)return s(t(`mobile.connect.error.urlRequired`)),null;let i=e.clientToken?.trim()||void 0,a=e.label?.trim()||ke(M({candidates:n}));if(T()){let e=N({candidates:n});if(i)await V(e,i);else if(r?.hasToken){let t=N(r);if(t&&e&&t!==e){let n=await B(t);n&&await V(e,n)}}}return x({id:e.id,label:a,candidates:n,clientToken:i}).find(e=>Fe(e.candidates,n))??null}),w=C(async e=>{let t=u.current.find(t=>t.id===e)??null,n=await lt(e);return g(n),t});return{connections:n,isBusy:i!==null,isPasswordBusy:i===`password`,error:o,pendingConnection:c,connect:S,redeemPairingConnection:ee,submitPassword:te,cancelPassword:ne,saveConnection:ie,removeConnection:w,subscribeConnected:h,setError:s}},Dt=async(e,t=3)=>{let n;for(let r=0;r<t;r+=1)try{await e();return}catch(e){n=e}throw n},Ot=async(e,t,n=2)=>{let r=[...new Map(e.map(e=>[e.operationID,e])).values()],i=0;await Promise.all(Array.from({length:Math.min(Math.max(1,n),r.length)},async()=>{for(;i<r.length;){let e=r[i++];try{e.cleanupPhase&&e.cleanupPhase!==`files-released`?await t.cleanup(e.operationID):await t.deliver(e.operationID)}catch{}}}))},kt=e=>!!(e.serverInstanceID&&e.assistantID&&e.name&&e.avatarSeed&&e.serverLabel&&e.connectionKey),At=`openchamber.mobile-share.draft-handoff.v1`,jt=`mobile-share-handoff:`,Mt=20971520,Nt=20971520,Pt=e=>`${jt}${e}`,Ft=e=>typeof e.partID==`string`&&e.partID.startsWith(`mobile-share-handoff:`),It=e=>e??(typeof window>`u`?null:window.localStorage),G=e=>{if(!e)return{};try{let t=JSON.parse(e.getItem(`openchamber.mobile-share.draft-handoff.v1`)||`{}`);return Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{let n=typeof t.assistantID==`string`?t.assistantID:Ut(t),r=typeof t.transportIdentity==`string`?t.transportIdentity:t.targetDraftKey?.transportIdentity;if(!n||typeof t.serverInstanceID!=`string`||typeof t.connectionKey!=`string`||!r)return[];let i=t.phase===`cancelled`?`cancelled`:t.phase===`materialized`?`materialized`:`materializing`;return[[e,{...t,draftID:e,assistantID:n,transportIdentity:r,phase:i}]]}))}catch{return{}}},Lt=(e,t)=>{if(!e)return!1;try{return e.setItem(At,JSON.stringify(t)),!0}catch{return!1}},Rt=(e,t)=>{let n=G(e);if(delete n[t],e)try{e.setItem(At,JSON.stringify(n))}catch{return}},K=(e,t)=>Lt(e,{...G(e),[t.draftID]:t}),zt=(e,t)=>`native-share:${e}:${t}`,Bt=(e,t)=>t?e?`${e}\n\n${t}`:t:e,Vt=e=>e.mime.startsWith(`image/`)&&e.byteSize>0&&e.byteSize<=Mt,Ht=(e,t)=>!!t?.syntheticParts.some(t=>t.partID===Pt(e.draftID)&&t.text===``&&t.attachments.length===0&&t.synthetic===!0),Ut=e=>{let t=e.targetDraftKey?.owner;return t?.kind!==`surface`||typeof t.ownerID!=`string`||!t.ownerID.startsWith(`assistant:`)?null:t.ownerID.slice(10)||null},Wt=e=>({draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:e.transportIdentity}),Gt=async(e,t)=>{let n=It(t),r=[];for(let t of Object.values(G(n))){if(t.phase===`cancelled`){r.push(Wt(t));continue}if(t.phase===`materialized`)try{await e(t.draftID);let i={...t,phase:`cancelled`};if(!K(n,i))continue;r.push(Wt(i))}catch{continue}}return r},Kt=(e,t)=>{let n=It(t),r=G(n)[e.draftID];return!r||r.phase!==`cancelled`||r.serverInstanceID!==e.serverInstanceID||r.connectionKey!==e.connectionKey||r.assistantID!==e.assistantID||r.transportIdentity!==e.transportIdentity?!1:(Rt(n,e.draftID),!G(n)[e.draftID])},qt=async(e,t)=>{let n=d({transportIdentity:e.transportIdentity},`assistant:${e.assistantID}`),r=t.captureDraftRuntime();if(r.transportIdentity!==e.transportIdentity)return!1;let i=t.getDraft(n),a=Pt(e.draftID);try{if(!i||!i.syntheticParts.some(e=>e.partID===a)){await t.flushDraftPersistence();let n=t.captureDraftRuntime();return n.transportIdentity===e.transportIdentity&&n.generation===r.generation}let o=await t.commitDraftSnapshot({key:n,expectedRevision:i.revision,runtime:r,values:new Map,snapshot:{text:i.text,attachments:i.attachments,syntheticParts:i.syntheticParts.filter(e=>e.partID!==a),mentions:i.mentions,...i.composerReferences===void 0?{}:{composerReferences:i.composerReferences}}});if(!o.current||!o.durable)return!1;await t.flushDraftPersistence();let s=t.captureDraftRuntime();return s.transportIdentity===e.transportIdentity&&s.generation===r.generation}catch{return!1}},Jt=async(e,t)=>{if(e.attachments.length>10||!e.attachments.every(Vt)||e.attachments.reduce((e,t)=>e+t.byteSize,0)>Nt)throw Error(`invalid_share_attachment`);let n=It(t.storage),r=d({transportIdentity:t.transportIdentity},`assistant:${e.assistantID}`),i=G(n)[e.draftID],a=!1;if(!i||g(i.targetDraftKey)!==g(r)){let a=t.input.getDraft(r);if(i={draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:t.transportIdentity,targetDraftKey:r,baseRevision:a?.revision??`absent`,resultText:Bt(a?.text??``,e.text),attachmentIDs:e.attachments.map((t,n)=>zt(e.draftID,n)),phase:`materializing`},!K(n,i))throw Error(`handoff_journal_unavailable`)}if(i.phase===`cancelled`)return{durable:!0,cancelled:!0};(i.phase===`materialized`||Ht(i,t.input.getDraft(r)))&&(a=!0);for(let o=0;!a&&o<3;o++){let o=t.input.getDraft(r),s={...i,baseRevision:o?.revision??`absent`,resultText:Bt(o?.text??``,e.text),phase:`materializing`};if(!K(n,s))throw Error(`handoff_journal_unavailable`);i=s;let c=new Map,l=[];for(let n=0;n<e.attachments.length;n++){let r=e.attachments[n],a=i.attachmentIDs[n],o=f(a),s=await t.readAttachment(r);if(s.size!==r.byteSize)throw Error(`staged_file_unavailable`);c.set(o,s.type===r.mime?s:new Blob([s],{type:r.mime})),l.push({attachmentID:a,attachmentRefID:o,filename:r.originalName,mimeType:r.mime,size:r.byteSize,locator:{kind:`blob`,blobID:a},source:`local`})}let u={partID:Pt(e.draftID),text:``,attachments:[],synthetic:!0},d=o?.syntheticParts??[],p=await t.input.commitDraftSnapshot({key:r,expectedRevision:o?.revision??`absent`,runtime:t.input.captureDraftRuntime(),snapshot:{text:i.resultText,attachments:[...o?.attachments??[],...l],syntheticParts:d.some(e=>e.partID===u.partID)?d:[...d,u],mentions:o?.mentions??[],...o?.composerReferences===void 0?{}:{composerReferences:o.composerReferences}},values:c});if(p.durable&&p.current)a=!0;else if(p.status!==`conflict`)throw Error(`draft_handoff_${p.status}`)}if(!a)throw Error(`draft_handoff_conflict`);if(i.phase!==`materialized`&&(i={...i,phase:`materialized`},!K(n,i)))throw Error(`handoff_journal_unavailable`);try{await t.cancelDraft(e.draftID)}catch{return{durable:!0,cancelled:!1}}if(i={...i,phase:`cancelled`},!K(n,i))throw Error(`handoff_journal_unavailable`);return{durable:!0,cancelled:!0}},Yt=x(`OpenChamberShare`),Xt=null,Zt=(e,t)=>i()===e&&s()===t,Qt=e=>{if(ie()){fe(e);return}let t=ae.getState();t.setActiveTab(`assistant`),t.openAssistant(e)},$t=async()=>{let e=(await Yt.pendingAssistantOpen().catch(()=>null))?.request;if(!e)return!1;let t=await pt(e.connectionKey);if(t===`missing`)return await Yt.ackAssistantOpen({requestID:e.requestID}).catch(()=>void 0),!0;if(t!==`connected`)return!0;let n=s();if(!Zt(e.connectionKey,n))return!0;try{let[t,r]=await Promise.all([E(),de()]);if(!Zt(e.connectionKey,n))return!0;let i=r.assistants.some(t=>t.id===e.assistantID&&t.enabled);if(!t.supported||!t.enabled||t.serverInstanceID!==e.serverInstanceID||!i)return await Yt.ackAssistantOpen({requestID:e.requestID}),!0;Qt(e.assistantID),await Yt.ackAssistantOpen({requestID:e.requestID})}catch{}return!0},q=async()=>S.getPlatform()===`android`?Xt||(Xt=$t().finally(()=>{Xt=null}),Xt):!1,en=new Intl.Segmenter(void 0,{granularity:`grapheme`}),tn=/(?:\p{Extended_Pictographic}|\p{Regional_Indicator}|\u20e3)/u,nn=e=>{let t=en.segment(e)[Symbol.iterator]().next().value?.segment;return!t||!tn.test(t)?{displayName:e}:{avatarEmoji:t,displayName:e.slice(t.length).trimStart()}},J=y();function rn(e){let t=(0,_e.c)(30),{draft:n,entries:r,busy:i,onSelect:a,onCancel:o}=e,{t:s}=re(),c;t[0]!==i||t[1]!==n||t[2]!==o?(c=()=>{n&&!i&&o(n)},t[0]=i,t[1]=n,t[2]=o,t[3]=c):c=t[3];let l=C(c),u;t[4]===l?u=t[5]:(u=e=>{e||l()},t[4]=l,t[5]=u);let d=C(u),f;t[6]!==n||t[7]!==a?(f=e=>{n&&a(n,e)},t[6]=n,t[7]=a,t[8]=f):f=t[8];let p=C(f),m=!!n,h;t[9]===s?h=t[10]:(h=s(`assistants.shareWelcome.example.note.title`),t[9]=s,t[10]=h);let g;t[11]===s?g=t[12]:(g=s(`settings.common.actions.cancel`),t[11]=s,t[12]=g);let _;t[13]!==i||t[14]!==l||t[15]!==h||t[16]!==g?(_=(0,J.jsx)(ue,{title:h,backAriaLabel:g,onBack:l,backDisabled:i,overlay:!0}),t[13]=i,t[14]=l,t[15]=h,t[16]=g,t[17]=_):_=t[17];let v;t[18]!==i||t[19]!==r||t[20]!==p||t[21]!==s?(v=r.length?(0,J.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem)+0.75rem)]`,role:`listbox`,"aria-label":s(`assistants.listAria`),children:r.map(e=>{let t=nn(e.name),n=t.displayName||e.name;return(0,J.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":`false`,disabled:i,className:`flex w-full items-center gap-3 border-b border-border/60 px-3 py-4 text-left text-foreground transition-colors last:border-b-0 hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-60`,onClick:()=>p(e),children:[(0,J.jsx)(pe,{name:e.avatarSeed,emoji:t.avatarEmoji,size:36,label:n}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,J.jsx)(`span`,{className:`block truncate font-semibold`,children:n}),(0,J.jsx)(`span`,{className:`block truncate typography-small text-muted-foreground`,children:e.serverLabel})]}),(0,J.jsx)(me,{name:`arrow-right-s`,className:`size-4 shrink-0 text-muted-foreground`})]},`${e.connectionKey}:${e.assistantID}`)})}):(0,J.jsx)(`p`,{className:`px-5 pb-[max(1.25rem,env(safe-area-inset-bottom))] pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem)+0.75rem)] typography-ui text-muted-foreground`,children:s(`assistants.state.unavailable`)}),t[18]=i,t[19]=r,t[20]=p,t[21]=s,t[22]=v):v=t[22];let y;t[23]!==_||t[24]!==v?(y=(0,J.jsxs)(he,{className:`h-[100dvh] max-h-none w-screen max-w-none gap-0 overflow-hidden rounded-none border-0 bg-background p-0`,containerClassName:`items-stretch p-0`,overlayClassName:`bg-background`,showCloseButton:!1,children:[_,v]}),t[23]=_,t[24]=v,t[25]=y):y=t[25];let b;return t[26]!==d||t[27]!==m||t[28]!==y?(b=(0,J.jsx)(ge,{open:m,onOpenChange:d,children:y}),t[26]=d,t[27]=m,t[28]=y,t[29]=b):b=t[29],b}var an=t({MobileShareBridge:()=>Rn,donateNativeAssistantInteraction:()=>Dn,publishNativeAssistantCatalog:()=>En,refreshNativeAssistantCatalog:()=>Q}),Y=x(`OpenChamberShare`),on=`openchamber.mobile-share.outbox.v1`,sn=()=>S.isNativePlatform(),cn=()=>{try{return JSON.parse(window.localStorage.getItem(on)||`{}`)}catch{return{}}},ln=e=>{try{window.localStorage.setItem(on,JSON.stringify(e))}catch{}},X=e=>{let t=cn(),n=t[e.envelope.operationID];n&&n.updatedAt>e.updatedAt||(t[e.envelope.operationID]=e,ln(t))},Z=(e,t)=>i()===e&&s()===t,un=new Map,dn=null,fn=null,pn=!1,mn=[],hn=0,gn=new Set,_n=new Map,vn=1,yn=e=>{e.map(e=>e.draftID).join(`
|
|
2
|
+
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{$ as n,D as r,E as i,J as a,M as o,T as s,Z as c,j as l,w as u}from"./useUIStore-5agS8bsW.js";import{Ot as d,bt as f,et as p,kn as m,nt as h,yt as g}from"./persistence-D1lIuyqO.js";import{_}from"./desktopHosts-ZK_vkdzL.js";import{n as v}from"./desktopRelayRestore-CewM6-g5.js";import{nt as y,rt as b}from"./vendor-base-ui-CnHfUmDN.js";import{a as x,n as S,o as ee,t as te}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as ne}from"./vendor-react-DLPElpoQ.js";import{n as C}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as re}from"./clipboard-BnElHSnO.js";import{Mo as ie,To as w,jo as T,r as ae}from"./useMobileNavigationStore-DQHF_ETu.js";import{S as oe,b as se,c as E,m as ce,s as le,t as ue,u as de}from"./MobileDetailNavigation-DILi0tN7.js";import{i as D,n as fe}from"./useAssistantUIStore-Bq3cPj2x.js";import{t as pe}from"./AgentAvatar-B4fj9PIe.js";import{n as me}from"./Icon-DiIuWOuC.js";import{n as he,t as ge}from"./dialog-COrLBm9O.js";var _e=ne(),O=e(b(),1),ve=`openchamber.mobile.connections.v1`,ye=`openchamber.mobile.`,be=`openchamber.mobile.deviceId`,xe=()=>{try{let e=window.localStorage.getItem(be);if(e&&e.trim())return e.trim();let t=p();return window.localStorage.setItem(be,t),t}catch{return p()}},Se=()=>`mobile:${xe()}`,Ce=()=>{try{let e=S.getPlatform();return e===`ios`||e===`android`?e:void 0}catch{return}},we=12,Te=8e3,Ee=2500,De=3e3,Oe=2500,k=e=>{let t=e.trim();if(!t)return``;let n=/^https?:\/\//i.test(t)?t:`http://${t}`,r=new URL(n);return r.hash=``,r.search=``,r.pathname=r.pathname.replace(/\/+$/,``),r.toString().replace(/\/+$/,``)},ke=e=>{try{return new URL(e).host}catch{return e}},A=e=>{try{return k(e)}catch{return e.trim().replace(/\/+$/g,``)}},Ae=(e,t)=>A(e)===A(t),je=e=>`relay:${e.serverId}@${e.relayUrl.trim()}`,Me=e=>`relay://${e.serverId}`,Ne=e=>e.candidates.filter(e=>e.kind===`direct`),j=e=>{let t=e.candidates.find(e=>e.kind===`relay`);return t&&t.kind===`relay`?t.relay:null},M=e=>{let t=Ne(e)[0];if(t)return t.url;let n=j(e);return n?Me(n):``},N=e=>{let t=j(e),n=t?je(t):(()=>{let t=Ne(e)[0];return t?A(t.url):``})(),r=e.sshTarget?.hostId?.trim();return r?`${n}#ssh:${r}`:n},Pe=N,Fe=(e,t)=>{let n=e.find(e=>e.kind===`relay`),r=n&&n.kind===`relay`?n.relay.serverId:null,i=n&&n.kind===`relay`?n.relay.relayUrl.trim():null,a=new Set(e.filter(e=>e.kind===`direct`).map(e=>A(e.url)));return t.some(e=>e.kind===`relay`?r!==null&&e.relay.serverId===r&&e.relay.relayUrl.trim()===i:a.has(A(e.url)))},Ie=(e,t)=>{let n=e?.hostId?.trim()||``,r=t?.hostId?.trim()||``;return!n&&!r?!0:!n||!r?!1:n===r&&(e?.desktopServerId?.trim()||``)===(t?.desktopServerId?.trim()||``)},Le=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.hostId==`string`?t.hostId.trim():``,r=typeof t.desktopServerId==`string`?t.desktopServerId.trim():``,i=typeof t.desktopClientToken==`string`?t.desktopClientToken.trim():``;if(!(!n||!r||!i))return{hostId:n,desktopServerId:r,desktopClientToken:i}},Re=(e,t)=>t.id&&e.id===t.id?!0:Fe(e.candidates,t.candidates)?Ie(e.sshTarget,t.sshTarget):!1,ze=e=>{let t=(()=>{try{return k(e)}catch{return``}})();return t?[{kind:`direct`,url:t}]:[]},Be=e=>{if(e.candidates&&e.candidates.length>0)return e.candidates;let t=[];return typeof e.url==`string`&&e.url.trim()&&!/^relay:\/\//i.test(e.url.trim())&&t.push(...ze(e.url)),e.relay&&t.push({kind:`relay`,relay:e.relay}),t},Ve=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;if(typeof t.relayUrl!=`string`||!t.relayUrl.trim()||typeof t.serverId!=`string`||!t.serverId.trim())return null;let n=t.hostEncPubJwk;if(!n||typeof n!=`object`||Array.isArray(n))return null;let r=n;return r.kty!==`EC`||r.crv!==`P-256`||typeof r.x!=`string`||!r.x||typeof r.y!=`string`||!r.y?null:{relayUrl:t.relayUrl,serverId:t.serverId,hostEncPubJwk:{kty:`EC`,crv:`P-256`,x:r.x,y:r.y}}},He=e=>{try{return JSON.stringify(e)}catch{return String(e)}},P=(e,t={})=>{He(t)},F=(e,t={})=>{He(t)},Ue=e=>{if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}},We=e=>{if(typeof e!=`string`)return e??void 0;try{return JSON.parse(e)}catch{return e}},Ge=async(e,t)=>{if(!T())return null;try{let{CapacitorHttp:n}=await ee(async()=>{let{CapacitorHttp:e}=await import(`./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js`).then(e=>e.i);return{CapacitorHttp:e}},__vite__mapDeps([0,1])),r=Object.fromEntries(new Headers(t?.headers).entries()),i=await n.request({url:e,method:t?.method||`GET`,headers:r,data:We(t?.body)});return{ok:i.status>=200&&i.status<300,status:i.status,source:`native-http`,json:async()=>Ue(i.data)}}catch(t){return console.warn(`[mobile-connect]`,`native-http failed`,He({url:e,error:t instanceof Error?t.message:String(t)})),null}},Ke=async(e,t)=>{let n=await fetch(e,t).catch(t=>(console.warn(`[mobile-connect]`,`browser-fetch failed`,He({url:e,error:t instanceof Error?t.message:String(t)})),null));return n?{ok:n.ok,status:n.status,source:`browser-fetch`,json:()=>n.json()}:null},I=async(e,t,n)=>{let r,i=new Promise(t=>{r=window.setTimeout(()=>{n?.(),t(null)},e)});try{return await Promise.race([t,i])}catch{return null}finally{r!==void 0&&window.clearTimeout(r)}},L=async(e,t,n)=>{let r=n?.totalTimeoutMs??Te,i=Date.now(),a=await I(Math.min(Ee,r),Ge(e,t));if(a)return a;let o=new AbortController;return I(Math.max(500,r-(Date.now()-i)),Ke(e,{...t,signal:o.signal}),()=>o.abort())},qe=async e=>{if(!e)return null;let t=await e.json().catch(()=>null);if(!t||typeof t!=`object`)return null;let n=t;return{authenticated:typeof n.authenticated==`boolean`?n.authenticated:void 0,disabled:typeof n.disabled==`boolean`?n.disabled:void 0,scope:typeof n.scope==`string`?n.scope:void 0}},R=15e3,Je=async(e,t,r,i=R,a)=>{let o=n({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk,...r?{grant:r}:{}}),s=e=>e===`ok`&&a?.keepTunnel?{outcome:e,tunnel:o}:(o.close(),{outcome:e});try{let e=t?{Authorization:`Bearer ${t}`}:void 0,n=await I(i,o.fetch(`/auth/session`,{headers:e}).catch(()=>null));if(P(`relay:session`,{ok:n?.ok===!0,status:n?.status??null,hasToken:!!t}),!n)return s(`unreachable`);if(n.status===401)return s(t?`auth-failed`:`needs-login`);if(!n.ok&&n.status!==404)return s(`auth-failed`);let r=await qe(n);return r&&r.disabled!==!0&&r.authenticated===!1?s(t?`auth-failed`:`needs-login`):s(`ok`)}catch(e){throw o.close(),e}},Ye=(e,t,n,r,i,s)=>{let c=typeof window<`u`?window.location.origin:``,l={relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk,...n?{grant:n}:{}};i&&a(l,i),o({apiBaseUrl:c,clientToken:t,runtimeKey:r??je(e),relay:l,requestHeaders:s||null})},Xe=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(t.kind===`direct`)return typeof t.url==`string`&&t.url.trim()?{kind:`direct`,url:t.url}:null;if(t.kind===`relay`){let e=Ve(t.relay);return e?{kind:`relay`,relay:e}:null}return null},Ze=e=>{if(e.mode===`relay`){let t=Ve(e.relay);return t?[{kind:`relay`,relay:t}]:[]}return typeof e.url==`string`?ze(e.url):[]},z=()=>{if(typeof window>`u`)return[];let e;try{e=JSON.parse(window.localStorage.getItem(ve)||`[]`)}catch{return[]}if(!Array.isArray(e))return[];let t=T();return e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let n=e;if(typeof n.id!=`string`)return[];let r=Array.isArray(n.candidates)?n.candidates.map(Xe).filter(e=>!!e):Ze(n);if(r.length===0)return[];let i=typeof n.clientToken==`string`&&n.clientToken.trim()?n.clientToken:void 0,a=typeof n.label==`string`&&n.label.trim()?n.label:ke(M({candidates:r})),o=Le(n.sshTarget),s={id:n.id,label:a,candidates:r,lastUsedAt:typeof n.lastUsedAt==`number`?n.lastUsedAt:0,...o?{sshTarget:o}:{}};return t?[{...s,hasToken:!!n.hasToken||!!i}]:[{...s,clientToken:i,hasToken:!!i}]}).sort((e,t)=>t.lastUsedAt-e.lastUsedAt)},Qe=e=>e.kind===`relay`?{kind:`relay`,relay:{relayUrl:e.relay.relayUrl,serverId:e.relay.serverId,hostEncPubJwk:e.relay.hostEncPubJwk}}:{kind:`direct`,url:e.url},$e=e=>{if(typeof window>`u`)return;let t=T(),n=e.slice(0,we).map(e=>{let n={id:e.id,label:e.label,candidates:e.candidates.map(Qe),lastUsedAt:e.lastUsedAt,...e.sshTarget?{sshTarget:e.sshTarget}:{}};return t?{...n,hasToken:!!(e.hasToken||e.clientToken)}:{...n,clientToken:e.clientToken}});try{window.localStorage.setItem(ve,JSON.stringify(n))}catch(e){console.warn(`[mobile-storage] failed to persist connection metadata`,e)}},et=(e,t)=>{let n=e.find(e=>Re(e,t)),r=T(),i=t.sshTarget===null?void 0:t.sshTarget??n?.sshTarget,a={id:t.id||n?.id||p(),label:t.label,candidates:t.candidates,lastUsedAt:Date.now(),...i?{sshTarget:i}:{},...r?{hasToken:t.hasToken??(!!t.clientToken||n?.hasToken||!1)}:{clientToken:t.clientToken??n?.clientToken,hasToken:!!(t.clientToken??n?.clientToken)}};return[a,...e.filter(e=>e.id!==a.id&&!Re(e,t))].slice(0,we)},tt=te,nt=0,rt=e=>`${ye}token.${encodeURIComponent(e)}`,it=async(e,t)=>{let n,r=new Promise(e=>{n=window.setTimeout(()=>e(t),De)});try{return await Promise.race([e.catch(()=>t),r])}finally{n!==void 0&&window.clearTimeout(n)}},at=async(e,t,n)=>T()?it(t().catch(t=>(console.warn(`[mobile-storage] ${e} failed`,t),n)),n):n,B=async e=>{F(`secure:read-start`,{key:e});let t=await at(`secure:read`,async()=>(await tt.internalGetItem({prefixedKey:rt(e),sync:!1})).data,null),n=typeof t==`string`&&t.trim()?t:void 0;return F(`secure:read`,{key:e,hasToken:!!n}),n},V=async(e,t)=>{F(`secure:write-start`,{key:e});let n=await at(`secure:write`,async()=>(await tt.internalSetItem({prefixedKey:rt(e),data:t,sync:!1,access:nt}),!0),!1);return F(`secure:write`,{key:e,ok:n}),n},ot=async e=>{await at(`secure:delete`,async()=>(await tt.internalRemoveItem({prefixedKey:rt(e),sync:!1}),!0),!1)},st=async()=>{if(typeof window>`u`||!T())return;let e;try{e=JSON.parse(window.localStorage.getItem(ve)||`[]`)}catch{return}if(!Array.isArray(e))return;let t=e.filter(e=>!!e&&typeof e==`object`&&typeof e.url==`string`&&typeof e.clientToken==`string`&&!!e.clientToken.trim());if(t.length!==0){F(`secure:migrate-start`,{count:t.length});for(let{url:e,clientToken:n}of t)await V(A(e),n);$e(z()),F(`secure:migrate-done`,{count:t.length})}},ct=async()=>(await st(),z()),H=async e=>{let t=et(z(),e);if($e(t),T()&&e.clientToken){let n=t[0];n&&await V(N(n),e.clientToken)}return t},lt=async e=>{let t=z(),n=t.find(t=>t.id===e)??null,r=t.filter(t=>t.id!==e);if($e(r),n&&T()&&await ot(N(n)),n){let e=N(n),{useAssistantUIStore:t}=await ee(async()=>{let{useAssistantUIStore:e}=await import(`./useAssistantUIStore-Bq3cPj2x.js`).then(e=>e.a);return{useAssistantUIStore:e}},__vite__mapDeps([2,1,3,4,5]));t.getState().removeCatalogPartition(e);let{publishNativeAssistantCatalog:r}=await ee(async()=>{let{publishNativeAssistantCatalog:e}=await Promise.resolve().then(()=>an);return{publishNativeAssistantCatalog:e}},void 0);await r().catch(()=>void 0)}return r},ut=1500,U=async(e,t,n)=>{let r=n?.fast?{totalTimeoutMs:Oe}:void 0,i=j({candidates:e})?.serverId??null,a=e.find(e=>e.kind===`relay`)??null,o=e.filter(e=>e.kind===`direct`),s=async()=>{for(let e of o){let n=k(e.url)||e.url,a=t?{Authorization:`Bearer ${t}`}:void 0,o=await L(`${n}/health`,{method:`GET`},r);if(!o?.ok)continue;if(i){let e=await o.json().catch(()=>null),t=e&&typeof e==`object`?e.serverId:null;if(typeof t==`string`&&t&&t!==i){P(`probe:server-id-mismatch`,{url:n});continue}}let s=await L(`${n}/auth/session`,{method:`GET`,credentials:`include`,headers:a},r);if(s?.status===401)return{status:`needs-login`};if(!s||!s.ok&&s.status!==404)continue;let c=await qe(s);if(c&&c.disabled!==!0&&c.authenticated===!1)return{status:`needs-login`};let l=c?.disabled===!0;return!t&&T()&&!l&&c?.scope!==`client`?{status:`needs-login`}:{status:`ok`,transport:{kind:`direct`,url:n}}}return{status:`unreachable`}},c=async()=>{if(!a)return{status:`unreachable`};let{outcome:e,tunnel:r}=await Je(a.relay,t,void 0,n?.fast?Oe:void 0,{keepTunnel:!0});return e===`ok`?{status:`ok`,transport:{kind:`relay`,relay:a.relay,tunnel:r}}:e===`needs-login`||e===`auth-failed`?{status:`needs-login`}:{status:`unreachable`}};return a?o.length===0?c():new Promise(e=>{let t=!1,n=!1,r,i=null,a=null,o=e=>{e?.status===`ok`&&e.transport.kind===`relay`&&e.transport.tunnel?.close()},l=n=>{t||(t=!0,e(n))},u=()=>{n||t||(r!==void 0&&(window.clearTimeout(r),r=void 0),c().then(e=>{if(a=e,t||n){o(e);return}if(e.status===`ok`||e.status===`needs-login`){l(e);return}i&&l(i)}))};s().then(e=>{if(i=e,!t){if(e.status===`ok`||e.status===`needs-login`){n=!0,r!==void 0&&window.clearTimeout(r),o(a),l(e);return}if(a){l(a);return}u()}}),r=window.setTimeout(u,ut)}):s()},W=(e,t,n)=>{e.kind===`relay`?Ye(e.relay,t,n?.grant,n?.runtimeKey,e.tunnel,n?.requestHeaders):o({apiBaseUrl:e.url,clientToken:t,runtimeKey:n?.runtimeKey,requestHeaders:n?.requestHeaders||null}),n?.requestHeaders?.[`x-openchamber-target-port`]||Tt()},dt=()=>{let e=z()[0];return e?.label?.trim()?e.label:null},ft=async()=>{await st();let e=z()[0];if(!e)return!1;let t;if(T()){if(!e.hasToken||(t=await B(N(e)),!t))return!1}else if(t=e.clientToken,!t)return!1;if(e.sshTarget){let t=await gt(e.candidates);if(!t||t.kind!==`relay`)return!1;try{let n=await _(e.sshTarget.hostId,{fetch:(e,n)=>t.tunnel.fetch(e,n),headers:{Authorization:`Bearer ${e.sshTarget.desktopClientToken}`}});return!n.reachable||typeof n.localPort!=`number`?(t.tunnel.close(),!1):(await H({id:e.id,label:e.label,candidates:e.candidates,clientToken:n.token,sshTarget:e.sshTarget}),v({token:n.token,localPort:n.localPort,runtimeKey:N(e),relay:t.relay,liveTunnel:t.tunnel}),!0)}catch{return t.tunnel.close(),!1}}let n=await U(e.candidates,t);return n.status===`ok`&&(await H({id:e.id,label:e.label,candidates:e.candidates}),W(n.transport,t,{runtimeKey:N(e)}),!0)},pt=async(e,t)=>{let n=(await ct()).find(t=>N(t)===e);if(!n)return`missing`;let r=T()?n.hasToken?await B(e):void 0:n.clientToken;if(!r)return`auth-required`;let i=t?.transportPreference===`relay`?n.candidates.filter(e=>e.kind===`relay`):n.candidates;if(i.length===0)return`offline`;let a=await U(i,r,{fast:!0});return a.status===`needs-login`?`auth-required`:a.status===`ok`?(W(a.transport,r,{runtimeKey:e}),`connected`):`offline`},mt=async(e,t)=>{let n=``;try{n=k(e.url)}catch{return!1}if(!n)return!1;let r=e.clientToken?.trim()||void 0,i=r?{Authorization:`Bearer ${r}`}:void 0,a=t?.fast?{totalTimeoutMs:Oe}:void 0;if(!(await L(`${n}/health`,{method:`GET`,headers:i},a))?.ok)return!1;let o=await L(`${n}/auth/session`,{method:`GET`,credentials:`include`,headers:i},a);if(!o||!o.ok&&o.status!==404)return!1;let s=await qe(o);return!(s&&s.disabled!==!0&&s.authenticated===!1)},ht=e=>[...e].sort((e,t)=>{let n=(e.priority??100)-(t.priority??100);if(n!==0)return n;let r=e=>e.type===`relay`?2:+!e.url.startsWith(`https://`);return r(e)-r(t)}).flatMap(e=>{if(e.type===`relay`){let t=Ve({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk});return t?[{kind:`relay`,relay:t}]:[]}return ze(e.url)}),gt=async e=>{let t=j({candidates:e})?.serverId??null;for(let r of e){if(r.kind===`relay`){let e=n(r.relay),t=await I(R,e.fetch(`/health`).catch(()=>null));if(P(`establish:relay:health`,{ok:t?.ok===!0,status:t?.status??null}),t?.ok)return{kind:`relay`,relay:r.relay,tunnel:e};e.close();continue}let e=k(r.url)||r.url,i=await L(`${e}/health`,{method:`GET`});if(P(`establish:direct:health`,{ok:i?.ok===!0,status:i?.status??null}),i?.ok){if(t){let n=await i.json().catch(()=>null),r=n&&typeof n==`object`?n.serverId:null;if(typeof r==`string`&&r&&r!==t){P(`establish:server-id-mismatch`,{url:e});continue}}return{kind:`direct`,url:e}}}return null},_t=async(e,t)=>{if(!c())return mt(e,t);let n=await I(t?.fast?Oe:R,m(`/auth/session`).then(e=>e).catch(()=>null));if(!n)return!0;if(n.status===401)return!1;if(!n.ok&&n.status!==404)return!0;let r=await qe(n);return!(r&&r.disabled!==!0&&r.authenticated===!1)},vt=e=>e.kind===`relay`?c():!c()&&Ae(e.url,u()),yt=()=>{let e=i();return e?z().find(t=>N(t)===e)??null:null},bt=e=>{let t=i();return!!t&&N(e)===t},xt=async()=>{let e=yt();if(!e)return`no-connection`;let t;if(t=T()?e.hasToken?await B(N(e)):void 0:e.clientToken,!t)return`unreachable`;let n=e.candidates.findIndex(e=>vt(e.kind===`relay`?{kind:`relay`,relay:e.relay}:{kind:`direct`,url:e.url})),r=await U(n>=0?e.candidates.slice(0,n):e.candidates,t,{fast:!0});if(r.status===`ok`)return await H({id:e.id,label:e.label,candidates:e.candidates}),W(r.transport,t,{runtimeKey:N(e)}),`switched`;if(r.status===`needs-login`)return`unreachable`;if(n>=0&&await _t({url:u(),clientToken:t},{fast:!0}))return Tt(),`unchanged`;let i=await U(n>=0?e.candidates.slice(n+1):[],t,{fast:!0});return i.status===`ok`?(await H({id:e.id,label:e.label,candidates:e.candidates}),W(i.transport,t,{runtimeKey:N(e)}),`switched`):`unreachable`},St=5e3,Ct=!1,wt=async()=>{if(Ct)return`skipped`;let e=yt();if(!e)return P(`candidates:refresh-skip`,{reason:`no-active-connection`}),`skipped`;let t=j(e);if(!t)return P(`candidates:refresh-skip`,{reason:`no-relay-candidate`}),`skipped`;Ct=!0;try{let n=await I(R,m(`/api/client-auth/connection/candidates`).then(e=>e).catch(()=>null));if(!n?.ok)return P(`candidates:refresh-skip`,{reason:`fetch-failed`,status:n?.status??null}),`skipped`;let r=await n.json().catch(()=>null);if(!r||r.serverId!==t.serverId)return P(`candidates:refresh-skip`,{reason:`server-id-mismatch`}),`skipped`;let i=Array.isArray(r.candidates)?r.candidates:[],a=[];for(let e of i){if(!e||typeof e!=`object`)continue;let t=e;if(t.type===`lan`&&typeof t.url==`string`)try{let e=k(t.url);e&&!a.includes(e)&&a.push(e)}catch{}}if(a.length===0)return P(`candidates:refresh-skip`,{reason:`no-lan-reported`}),`skipped`;let o=Ne(e).filter(e=>e.url.startsWith(`https://`)),s=[...a.map(e=>({kind:`direct`,url:e})),...o,{kind:`relay`,relay:t}];return JSON.stringify(e.candidates.map(Qe))===JSON.stringify(s.map(Qe))?`unchanged`:(P(`candidates:refreshed`,{lanCount:a.length}),await H({id:e.id,label:e.label,candidates:s}),`updated`)}finally{Ct=!1}},Tt=()=>{typeof window>`u`||window.setTimeout(()=>{(async()=>{let e=await wt().catch(()=>`skipped`);P(`candidates:refresh-result`,{result:e}),e===`updated`&&c()&&await xt().catch(()=>null)})()},St)},Et=e=>{let{t}=re(),[n,r]=O.useState(()=>z()),[i,a]=O.useState(null),[o,s]=O.useState(null),[c,l]=O.useState(null),u=O.useRef(n),d=O.useRef(null),f=O.useRef(new Set),m=C(()=>{e(),f.current.forEach(e=>e())}),h=C(e=>(f.current.add(e),()=>f.current.delete(e))),g=C(e=>{u.current=e,r(e)}),y=C(e=>{d.current=e,a(e)}),b=C(e=>{d.current===e&&(d.current=null,a(null))});O.useEffect(()=>{let e=!1;return ct().then(t=>{e||g(t)}),()=>{e=!0}},[g]);let x=C(e=>{let t=et(u.current,e);return g(t),$e(t),t}),S=C(async e=>{s(null),y(`connect`);try{let n=Be(e);if(n.length===0){s(t(`mobile.connect.error.urlRequired`));return}let r=e.id?u.current.find(t=>t.id===e.id):u.current.find(e=>Fe(e.candidates,n)&&!e.sshTarget),i=e.label?.trim()||r?.label||ke(M({candidates:n})),a=e.relayGrant,o=r?.sshTarget,c=e.clientToken?.trim()||void 0,d=!!c;if(c||(T()?r?.hasToken&&(c=await B(N(r))):c=r?.clientToken),P(`connect:start`,{candidates:n.map(e=>e.kind),hasToken:!!c,sshHostId:o?.hostId??null}),o){let e=await gt(n);if(!e||e.kind!==`relay`){s(t(`mobile.connect.error.sshNotConnected`));return}let a;try{a=await _(o.hostId,{fetch:(t,n)=>e.tunnel.fetch(t,n),headers:{Authorization:`Bearer ${o.desktopClientToken}`}})}catch{e.tunnel.close(),s(t(`mobile.connect.error.sshNotConnected`));return}if(!a.reachable||typeof a.localPort!=`number`){e.tunnel.close(),s(t(`mobile.connect.error.sshNotConnected`));return}let c=N({candidates:n,sshTarget:o});T()&&await V(c,a.token),x({id:r?.id,label:i,candidates:n,clientToken:a.token,sshTarget:o}),v({token:a.token,localPort:a.localPort,runtimeKey:c,relay:e.relay,liveTunnel:e.tunnel}),m();return}let f=await U(n,c);if(P(`connect:probe`,{status:f.status}),f.status===`unreachable`){s(t(`mobile.connect.error.unreachable`));return}if(f.status===`needs-login`){x({id:r?.id,label:i,candidates:n,sshTarget:null}),l({id:r?.id??p(),label:i,candidates:n,relay:j({candidates:n})??void 0,relayGrant:a});return}let h=N({candidates:n});c&&d&&T()&&await V(h,c),x({id:r?.id,label:i,candidates:n,clientToken:c,sshTarget:null}),W(f.transport,c??null,{runtimeKey:h,grant:a}),m()}catch(e){console.warn(`[mobile-connect] connect threw`,e),s(t(`mobile.connect.error.invalidUrl`))}finally{b(`connect`)}}),ee=C(async e=>{if(d.current===`pairing`)return;s(null),y(`pairing`);let n=ht(e.candidates),r=null,i=!1;try{if(r=await gt(n),!r){s(t(`mobile.connect.error.unreachable`));return}let a={method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({pairingId:e.pairingId,secret:e.secret,clientLabel:`OpenChamber Mobile`,clientKind:`mobile`,deviceName:`OpenChamber Mobile`,devicePlatform:Ce(),dedupeKey:Se()})},o=r.kind===`relay`?await I(R,r.tunnel.fetch(`/api/client-auth/pairing/redeem`,a).catch(()=>null)):await L(`${r.url}/api/client-auth/pairing/redeem`,a);if(!o?.ok){s(t(`mobile.connect.error.authRequired`));return}let c=await o.json().catch(()=>null),l=typeof c?.clientToken==`string`?c.clientToken.trim():``;if(!l){s(t(`mobile.connect.error.authRequired`));return}let u=typeof c?.server?.label==`string`?c.server.label:``,d=e.label||u||ke(M({candidates:n})),f=e.sshHostId?.trim()||``,p=r.kind===`relay`?r:null;if(f&&p){try{let r=await _(f,{pairingId:e.pairingId,fetch:(e,t)=>p.tunnel.fetch(e,t),headers:{Authorization:`Bearer ${l}`}});if(r.reachable&&typeof r.localPort==`number`){let e={hostId:f,desktopServerId:p.relay.serverId,desktopClientToken:l},a=N({candidates:n,sshTarget:e});if(T()&&!await V(a,r.token)){s(t(`mobile.connect.error.authRequired`));return}x({label:d,candidates:n,clientToken:r.token,sshTarget:e}),v({token:r.token,localPort:r.localPort,runtimeKey:a,relay:p.relay,liveTunnel:p.tunnel}),i=!0,m();return}}catch{}s(t(`mobile.connect.error.sshNotConnected`));return}let h=N({candidates:n});if(T()&&!await V(h,l)){s(t(`mobile.connect.error.authRequired`));return}x({label:d,candidates:n,clientToken:l,sshTarget:null}),W(r.kind===`relay`?{kind:`relay`,relay:r.relay,tunnel:r.tunnel}:{kind:`direct`,url:r.url},l,{runtimeKey:h}),i=r.kind===`relay`,m()}catch(e){console.warn(`[mobile-connect] pairing threw`,e),s(t(`mobile.connect.error.authRequired`))}finally{!i&&r?.kind===`relay`&&r.tunnel.close(),b(`pairing`)}}),te=C(async e=>{if(!c||!e.trim()||d.current===`password`)return;s(null),y(`password`);let{id:n,label:r,candidates:i}=c,a=null,o=!1;try{if(a=await gt(i),!a){s(t(`mobile.connect.error.unreachable`));return}let c={method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({password:e,trustDevice:!0,issueClientToken:!0,clientLabel:`OpenChamber Mobile`,clientKind:`mobile`,devicePlatform:Ce(),dedupeKey:Se()})};P(`password:start`,{transport:a.kind});let u=a.kind===`relay`?await I(R,a.tunnel.fetch(`/auth/session`,c).catch(()=>null)):await L(`${a.url}/auth/session`,c);if(P(`password:done`,{ok:u?.ok===!0,status:u?.status??null}),!u?.ok){s(t(`mobile.connect.error.passwordFailed`));return}let d=await u.json().catch(()=>null),f=typeof d?.clientToken==`string`?d.clientToken.trim():``;if(P(`password:token`,{issued:!!f}),!f){if(a.kind===`direct`&&!T()){x({id:n,label:r,candidates:i}),l(null),W({kind:`direct`,url:a.url},null,{runtimeKey:N({candidates:i})}),m();return}s(t(`mobile.connect.error.authRequired`));return}T()&&await V(N({candidates:i}),f),x({id:n,label:r,candidates:i,clientToken:f}),l(null),W(a.kind===`relay`?{kind:`relay`,relay:a.relay,tunnel:a.tunnel}:{kind:`direct`,url:a.url},f,{runtimeKey:N({candidates:i})}),o=a.kind===`relay`,m()}catch(e){console.warn(`[mobile-connect] password threw`,e),s(t(`mobile.connect.error.passwordFailed`))}finally{!o&&a?.kind===`relay`&&a.tunnel.close(),b(`password`)}}),ne=C(()=>{l(null),s(null)}),ie=C(async e=>{s(null);let n=Be(e),r=e.id?u.current.find(t=>t.id===e.id)??null:null;if(r){let e=n.filter(e=>e.kind===`direct`),t=Ne(r).filter(t=>t.url.startsWith(`https://`)&&!e.some(e=>Ae(e.url,t.url))),i=j(r);n=[...e,...t,...i?[{kind:`relay`,relay:i}]:[]]}if(n.length===0)return s(t(`mobile.connect.error.urlRequired`)),null;let i=e.clientToken?.trim()||void 0,a=e.label?.trim()||ke(M({candidates:n}));if(T()){let e=N({candidates:n});if(i)await V(e,i);else if(r?.hasToken){let t=N(r);if(t&&e&&t!==e){let n=await B(t);n&&await V(e,n)}}}return x({id:e.id,label:a,candidates:n,clientToken:i}).find(e=>Fe(e.candidates,n))??null}),w=C(async e=>{let t=u.current.find(t=>t.id===e)??null,n=await lt(e);return g(n),t});return{connections:n,isBusy:i!==null,isPasswordBusy:i===`password`,error:o,pendingConnection:c,connect:S,redeemPairingConnection:ee,submitPassword:te,cancelPassword:ne,saveConnection:ie,removeConnection:w,subscribeConnected:h,setError:s}},Dt=async(e,t=3)=>{let n;for(let r=0;r<t;r+=1)try{await e();return}catch(e){n=e}throw n},Ot=async(e,t,n=2)=>{let r=[...new Map(e.map(e=>[e.operationID,e])).values()],i=0;await Promise.all(Array.from({length:Math.min(Math.max(1,n),r.length)},async()=>{for(;i<r.length;){let e=r[i++];try{e.cleanupPhase&&e.cleanupPhase!==`files-released`?await t.cleanup(e.operationID):await t.deliver(e.operationID)}catch{}}}))},kt=e=>!!(e.serverInstanceID&&e.assistantID&&e.name&&e.avatarSeed&&e.serverLabel&&e.connectionKey),At=`openchamber.mobile-share.draft-handoff.v1`,jt=`mobile-share-handoff:`,Mt=20971520,Nt=20971520,Pt=e=>`${jt}${e}`,Ft=e=>typeof e.partID==`string`&&e.partID.startsWith(`mobile-share-handoff:`),It=e=>e??(typeof window>`u`?null:window.localStorage),G=e=>{if(!e)return{};try{let t=JSON.parse(e.getItem(`openchamber.mobile-share.draft-handoff.v1`)||`{}`);return Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{let n=typeof t.assistantID==`string`?t.assistantID:Ut(t),r=typeof t.transportIdentity==`string`?t.transportIdentity:t.targetDraftKey?.transportIdentity;if(!n||typeof t.serverInstanceID!=`string`||typeof t.connectionKey!=`string`||!r)return[];let i=t.phase===`cancelled`?`cancelled`:t.phase===`materialized`?`materialized`:`materializing`;return[[e,{...t,draftID:e,assistantID:n,transportIdentity:r,phase:i}]]}))}catch{return{}}},Lt=(e,t)=>{if(!e)return!1;try{return e.setItem(At,JSON.stringify(t)),!0}catch{return!1}},Rt=(e,t)=>{let n=G(e);if(delete n[t],e)try{e.setItem(At,JSON.stringify(n))}catch{return}},K=(e,t)=>Lt(e,{...G(e),[t.draftID]:t}),zt=(e,t)=>`native-share:${e}:${t}`,Bt=(e,t)=>t?e?`${e}\n\n${t}`:t:e,Vt=e=>e.mime.startsWith(`image/`)&&e.byteSize>0&&e.byteSize<=Mt,Ht=(e,t)=>!!t?.syntheticParts.some(t=>t.partID===Pt(e.draftID)&&t.text===``&&t.attachments.length===0&&t.synthetic===!0),Ut=e=>{let t=e.targetDraftKey?.owner;return t?.kind!==`surface`||typeof t.ownerID!=`string`||!t.ownerID.startsWith(`assistant:`)?null:t.ownerID.slice(10)||null},Wt=e=>({draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:e.transportIdentity}),Gt=async(e,t)=>{let n=It(t),r=[];for(let t of Object.values(G(n))){if(t.phase===`cancelled`){r.push(Wt(t));continue}if(t.phase===`materialized`)try{await e(t.draftID);let i={...t,phase:`cancelled`};if(!K(n,i))continue;r.push(Wt(i))}catch{continue}}return r},Kt=(e,t)=>{let n=It(t),r=G(n)[e.draftID];return!r||r.phase!==`cancelled`||r.serverInstanceID!==e.serverInstanceID||r.connectionKey!==e.connectionKey||r.assistantID!==e.assistantID||r.transportIdentity!==e.transportIdentity?!1:(Rt(n,e.draftID),!G(n)[e.draftID])},qt=async(e,t)=>{let n=d({transportIdentity:e.transportIdentity},`assistant:${e.assistantID}`),r=t.captureDraftRuntime();if(r.transportIdentity!==e.transportIdentity)return!1;let i=t.getDraft(n),a=Pt(e.draftID);try{if(!i||!i.syntheticParts.some(e=>e.partID===a)){await t.flushDraftPersistence();let n=t.captureDraftRuntime();return n.transportIdentity===e.transportIdentity&&n.generation===r.generation}let o=await t.commitDraftSnapshot({key:n,expectedRevision:i.revision,runtime:r,values:new Map,snapshot:{text:i.text,attachments:i.attachments,syntheticParts:i.syntheticParts.filter(e=>e.partID!==a),mentions:i.mentions,...i.composerReferences===void 0?{}:{composerReferences:i.composerReferences}}});if(!o.current||!o.durable)return!1;await t.flushDraftPersistence();let s=t.captureDraftRuntime();return s.transportIdentity===e.transportIdentity&&s.generation===r.generation}catch{return!1}},Jt=async(e,t)=>{if(e.attachments.length>10||!e.attachments.every(Vt)||e.attachments.reduce((e,t)=>e+t.byteSize,0)>Nt)throw Error(`invalid_share_attachment`);let n=It(t.storage),r=d({transportIdentity:t.transportIdentity},`assistant:${e.assistantID}`),i=G(n)[e.draftID],a=!1;if(!i||g(i.targetDraftKey)!==g(r)){let a=t.input.getDraft(r);if(i={draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:t.transportIdentity,targetDraftKey:r,baseRevision:a?.revision??`absent`,resultText:Bt(a?.text??``,e.text),attachmentIDs:e.attachments.map((t,n)=>zt(e.draftID,n)),phase:`materializing`},!K(n,i))throw Error(`handoff_journal_unavailable`)}if(i.phase===`cancelled`)return{durable:!0,cancelled:!0};(i.phase===`materialized`||Ht(i,t.input.getDraft(r)))&&(a=!0);for(let o=0;!a&&o<3;o++){let o=t.input.getDraft(r),s={...i,baseRevision:o?.revision??`absent`,resultText:Bt(o?.text??``,e.text),phase:`materializing`};if(!K(n,s))throw Error(`handoff_journal_unavailable`);i=s;let c=new Map,l=[];for(let n=0;n<e.attachments.length;n++){let r=e.attachments[n],a=i.attachmentIDs[n],o=f(a),s=await t.readAttachment(r);if(s.size!==r.byteSize)throw Error(`staged_file_unavailable`);c.set(o,s.type===r.mime?s:new Blob([s],{type:r.mime})),l.push({attachmentID:a,attachmentRefID:o,filename:r.originalName,mimeType:r.mime,size:r.byteSize,locator:{kind:`blob`,blobID:a},source:`local`})}let u={partID:Pt(e.draftID),text:``,attachments:[],synthetic:!0},d=o?.syntheticParts??[],p=await t.input.commitDraftSnapshot({key:r,expectedRevision:o?.revision??`absent`,runtime:t.input.captureDraftRuntime(),snapshot:{text:i.resultText,attachments:[...o?.attachments??[],...l],syntheticParts:d.some(e=>e.partID===u.partID)?d:[...d,u],mentions:o?.mentions??[],...o?.composerReferences===void 0?{}:{composerReferences:o.composerReferences}},values:c});if(p.durable&&p.current)a=!0;else if(p.status!==`conflict`)throw Error(`draft_handoff_${p.status}`)}if(!a)throw Error(`draft_handoff_conflict`);if(i.phase!==`materialized`&&(i={...i,phase:`materialized`},!K(n,i)))throw Error(`handoff_journal_unavailable`);try{await t.cancelDraft(e.draftID)}catch{return{durable:!0,cancelled:!1}}if(i={...i,phase:`cancelled`},!K(n,i))throw Error(`handoff_journal_unavailable`);return{durable:!0,cancelled:!0}},Yt=x(`OpenChamberShare`),Xt=null,Zt=(e,t)=>i()===e&&s()===t,Qt=e=>{if(ie()){fe(e);return}let t=ae.getState();t.setActiveTab(`assistant`),t.openAssistant(e)},$t=async()=>{let e=(await Yt.pendingAssistantOpen().catch(()=>null))?.request;if(!e)return!1;let t=await pt(e.connectionKey);if(t===`missing`)return await Yt.ackAssistantOpen({requestID:e.requestID}).catch(()=>void 0),!0;if(t!==`connected`)return!0;let n=s();if(!Zt(e.connectionKey,n))return!0;try{let[t,r]=await Promise.all([E(),de()]);if(!Zt(e.connectionKey,n))return!0;let i=r.assistants.some(t=>t.id===e.assistantID&&t.enabled);if(!t.supported||!t.enabled||t.serverInstanceID!==e.serverInstanceID||!i)return await Yt.ackAssistantOpen({requestID:e.requestID}),!0;Qt(e.assistantID),await Yt.ackAssistantOpen({requestID:e.requestID})}catch{}return!0},q=async()=>S.getPlatform()===`android`?Xt||(Xt=$t().finally(()=>{Xt=null}),Xt):!1,en=new Intl.Segmenter(void 0,{granularity:`grapheme`}),tn=/(?:\p{Extended_Pictographic}|\p{Regional_Indicator}|\u20e3)/u,nn=e=>{let t=en.segment(e)[Symbol.iterator]().next().value?.segment;return!t||!tn.test(t)?{displayName:e}:{avatarEmoji:t,displayName:e.slice(t.length).trimStart()}},J=y();function rn(e){let t=(0,_e.c)(30),{draft:n,entries:r,busy:i,onSelect:a,onCancel:o}=e,{t:s}=re(),c;t[0]!==i||t[1]!==n||t[2]!==o?(c=()=>{n&&!i&&o(n)},t[0]=i,t[1]=n,t[2]=o,t[3]=c):c=t[3];let l=C(c),u;t[4]===l?u=t[5]:(u=e=>{e||l()},t[4]=l,t[5]=u);let d=C(u),f;t[6]!==n||t[7]!==a?(f=e=>{n&&a(n,e)},t[6]=n,t[7]=a,t[8]=f):f=t[8];let p=C(f),m=!!n,h;t[9]===s?h=t[10]:(h=s(`assistants.shareWelcome.example.note.title`),t[9]=s,t[10]=h);let g;t[11]===s?g=t[12]:(g=s(`settings.common.actions.cancel`),t[11]=s,t[12]=g);let _;t[13]!==i||t[14]!==l||t[15]!==h||t[16]!==g?(_=(0,J.jsx)(ue,{title:h,backAriaLabel:g,onBack:l,backDisabled:i,overlay:!0}),t[13]=i,t[14]=l,t[15]=h,t[16]=g,t[17]=_):_=t[17];let v;t[18]!==i||t[19]!==r||t[20]!==p||t[21]!==s?(v=r.length?(0,J.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem)+0.75rem)]`,role:`listbox`,"aria-label":s(`assistants.listAria`),children:r.map(e=>{let t=nn(e.name),n=t.displayName||e.name;return(0,J.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":`false`,disabled:i,className:`flex w-full items-center gap-3 border-b border-border/60 px-3 py-4 text-left text-foreground transition-colors last:border-b-0 hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-60`,onClick:()=>p(e),children:[(0,J.jsx)(pe,{name:e.avatarSeed,emoji:t.avatarEmoji,size:36,label:n}),(0,J.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,J.jsx)(`span`,{className:`block truncate font-semibold`,children:n}),(0,J.jsx)(`span`,{className:`block truncate typography-small text-muted-foreground`,children:e.serverLabel})]}),(0,J.jsx)(me,{name:`arrow-right-s`,className:`size-4 shrink-0 text-muted-foreground`})]},`${e.connectionKey}:${e.assistantID}`)})}):(0,J.jsx)(`p`,{className:`px-5 pb-[max(1.25rem,env(safe-area-inset-bottom))] pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem)+0.75rem)] typography-ui text-muted-foreground`,children:s(`assistants.state.unavailable`)}),t[18]=i,t[19]=r,t[20]=p,t[21]=s,t[22]=v):v=t[22];let y;t[23]!==_||t[24]!==v?(y=(0,J.jsxs)(he,{className:`h-[100dvh] max-h-none w-screen max-w-none gap-0 overflow-hidden rounded-none border-0 bg-background p-0`,containerClassName:`items-stretch p-0`,overlayClassName:`bg-background`,showCloseButton:!1,children:[_,v]}),t[23]=_,t[24]=v,t[25]=y):y=t[25];let b;return t[26]!==d||t[27]!==m||t[28]!==y?(b=(0,J.jsx)(ge,{open:m,onOpenChange:d,children:y}),t[26]=d,t[27]=m,t[28]=y,t[29]=b):b=t[29],b}var an=t({MobileShareBridge:()=>Rn,donateNativeAssistantInteraction:()=>Dn,publishNativeAssistantCatalog:()=>En,refreshNativeAssistantCatalog:()=>Q}),Y=x(`OpenChamberShare`),on=`openchamber.mobile-share.outbox.v1`,sn=()=>S.isNativePlatform(),cn=()=>{try{return JSON.parse(window.localStorage.getItem(on)||`{}`)}catch{return{}}},ln=e=>{try{window.localStorage.setItem(on,JSON.stringify(e))}catch{}},X=e=>{let t=cn(),n=t[e.envelope.operationID];n&&n.updatedAt>e.updatedAt||(t[e.envelope.operationID]=e,ln(t))},Z=(e,t)=>i()===e&&s()===t,un=new Map,dn=null,fn=null,pn=!1,mn=[],hn=0,gn=new Set,_n=new Map,vn=1,yn=e=>{e.map(e=>e.draftID).join(`
|
|
3
3
|
`)!==mn.map(e=>e.draftID).join(`
|
|
4
4
|
`)&&(mn=e,hn+=1,gn.forEach(e=>e()))},bn=e=>yn(mn.filter(t=>t.draftID!==e)),xn=e=>(gn.add(e),()=>gn.delete(e)),Sn=()=>hn,Cn=async e=>{if(!e.mime.startsWith(`image/`))throw Error(`unsupported_share_attachment`);let t=e.stagedPath.trim();if(!t)throw Error(`staged_file_unavailable`);let n=/^(?:data:|https?:|content:|file:)/i.test(t)?t:`file://${t}`,r=/^(?:data:|https?:)/i.test(n)?n:S.convertFileSrc(n);return await fetch(r).then(e=>{if(!e.ok)throw Error(`staged_file_unavailable`);return e.blob()})},wn=async e=>{let t=await Cn(e);return await new Promise((e,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`staged_file_unavailable`)),r.onload=()=>typeof r.result==`string`?e(r.result):n(Error(`staged_file_unavailable`)),r.readAsDataURL(t)})},Tn=async e=>{let t=[];if(e.text?.trim()&&t.push({type:`text`,text:e.text}),e.attachments.length>10)throw Error(`too_many_share_attachments`);for(let n of e.attachments){if(n.byteSize<=0||n.byteSize>20971520)throw Error(`invalid_share_attachment`);t.push({type:`file`,mime:n.mime,url:await wn(n)})}if(t.length===0)throw Error(`empty_share`);return t},Q=async()=>{if(!sn())return;let e=i(),t=(await ct()).find(t=>Pe(t)===e);if(!t)return;let n=s();try{let[r,i]=await Promise.all([E(),le()]);if(!Z(e,n)||!r.supported||!r.serverInstanceID)return;let a=r.serverInstanceID,o=i.assistants.map(n=>({serverInstanceID:a,assistantID:n.id,name:n.name,avatarSeed:n.id,serverLabel:t.label,connectionKey:e,enabled:r.enabled&&n.enabled,isDefaultShareTarget:!1}));D.getState().replaceCatalogPartition({serverInstanceID:a,connectionKey:e,revision:i.revision,lastLoadedAt:Date.now(),entries:o}),await En()}catch{}},En=async()=>{if(!sn())return;let e=Object.values(D.getState().assistantCatalogByConnection).flatMap(e=>e.entries).map(e=>{let t=nn(e.name);return{...e,name:t.displayName||e.name,...t.avatarEmoji?{avatarEmoji:t.avatarEmoji}:{}}});await Y.updateCatalog({entries:e})},Dn=async e=>{S.getPlatform()===`ios`&&await Y.donateAssistantInteraction(e)},On=e=>{let t=un.get(e.operationID);if(t)return t;let n=An(e);return un.set(e.operationID,n),n.finally(()=>{un.get(e.operationID)===n&&un.delete(e.operationID)}).catch(()=>void 0),n},kn=async e=>{e.cleanupPhase!==`files-released`&&(e.cleanupPhase===`server-completed`&&(await Dt(()=>Y.ack({operationID:e.envelope.operationID})),e={...e,state:`delivered`,cleanupPhase:`native-acked`,updatedAt:Date.now()},X(e)),e.cleanupPhase===`native-acked`&&(await Dt(()=>Y.releaseFiles({operationID:e.envelope.operationID})),X({...e,state:`delivered`,cleanupPhase:`files-released`,updatedAt:Date.now()})))},An=async e=>{let t=cn()[e.operationID];if(t?.cleanupPhase){await kn(t);return}let n=t?.messageID?t:{envelope:e,messageID:h(`msg`),state:t?.state??`pending`,cleanupPhase:t?.cleanupPhase,updatedAt:Date.now(),error:t?.error};X(n),n={...n,state:`resolving-instance`,updatedAt:Date.now()},X(n);let i=Object.values(D.getState().assistantCatalogByConnection).find(t=>t.serverInstanceID===e.serverInstanceID&&t.entries.some(t=>t.assistantID===e.assistantID));if(!i){X({...n,state:`target-stale`,updatedAt:Date.now()});return}n={...n,state:`connecting`,updatedAt:Date.now()},X(n);let a=await pt(i.connectionKey);if(a===`auth-required`){X({...n,state:`auth-required`,updatedAt:Date.now()});return}if(a!==`connected`){X({...n,state:`offline`,updatedAt:Date.now()});return}let o=s(),c=null;if(Z(i.connectionKey,o)){try{if(await m(`/api/config/settings`).catch(()=>void 0),!Z(i.connectionKey,o))return;let[t,a]=await Promise.all([E(),le()]);if(!Z(i.connectionKey,o)||!t.supported||t.serverInstanceID!==e.serverInstanceID){X({...n,state:`target-stale`,updatedAt:Date.now()});return}let s=a.assistants.find(t=>t.id===e.assistantID&&t.enabled);if(!t.enabled||!s){X({...n,state:`target-stale`,updatedAt:Date.now()});return}n={...n,state:`dispatching`,updatedAt:Date.now()},X(n);let l=await Tn(e);if(!Z(i.connectionKey,o))return;n={...n,state:`reconciling`,updatedAt:Date.now()},X(n);let u=await ce(s.id,e.operationID,n.messageID,l,e.source),d=await se(u,r(),o),f=await de().catch(e=>(X({...n,state:`reconciling`,updatedAt:Date.now(),error:e instanceof Error?e.message:`snapshot_refresh_failed`}),null));if(!f)return;if(!Z(i.connectionKey,o)){X({...n,state:`reconciling`,updatedAt:Date.now(),error:`runtime_stale`});return}let p=f.assistants.find(e=>e.id===s.id);if(!p||p.sessionID!==d.sessionID){X({...n,state:`reconciling`,updatedAt:Date.now(),error:`assistant_binding_mismatch`});return}c=p.id}catch(e){if(e instanceof oe&&e.code===`share_unresolved`||e instanceof Error&&e.message===`runtime_stale`){X({...n,state:`reconciling`,updatedAt:Date.now(),error:e instanceof Error?e.message:`share_unresolved`});return}X({...n,state:`failed`,updatedAt:Date.now(),error:e instanceof Error?e.message:`dispatch_failed`});return}n={...n,state:`delivered`,cleanupPhase:`server-completed`,updatedAt:Date.now()},X(n),Qt(c),await kn(n)}},jn=async()=>dn||(dn=Mn().finally(()=>{dn=null}),dn),Mn=async()=>{if(!sn())return;let e=await Y.listPending().catch(()=>null),t=new Map((e?.envelopes??[]).map(e=>[e.operationID,e])),n=cn();await Ot([...[...t.values()].map(e=>({operationID:e.operationID,cleanupPhase:n[e.operationID]?.cleanupPhase})),...Object.values(n).filter(e=>!t.has(e.envelope.operationID)&&(!!(e.cleanupPhase&&e.cleanupPhase!==`files-released`)||e.state!==`delivered`&&e.state!==`auth-required`&&e.state!==`target-stale`)).map(e=>({operationID:e.envelope.operationID,cleanupPhase:e.cleanupPhase}))],{deliver:async e=>{let r=t.get(e)??n[e]?.envelope;r&&await On(r)},cleanup:async e=>{let t=cn()[e];t&&await kn(t)}},vn)},$=async()=>(pn=!0,fn||(fn=(async()=>{do pn=!1,await Ln();while(pn)})().finally(()=>{fn=null,pn&&$()}),fn)),Nn=async e=>{if(i()!==e.connectionKey&&await pt(e.connectionKey)!==`connected`)return!1;let t=s();if(!Z(e.connectionKey,t)||r()!==e.transportIdentity||(await m(`/api/config/settings`).catch(()=>void 0),!Z(e.connectionKey,t)||r()!==e.transportIdentity)||!await w.getState().hydrateDraftMetadata(e.transportIdentity)||!Z(e.connectionKey,t)||r()!==e.transportIdentity)return!1;let[n,a]=await Promise.all([E(),de()]);return!Z(e.connectionKey,t)||r()!==e.transportIdentity||!n.supported||!n.enabled||n.serverInstanceID!==e.serverInstanceID||!a.assistants.some(t=>t.id===e.assistantID&&t.enabled)?!1:(Qt(e.assistantID),!0)},Pn=async e=>{let t=i(),n=s();if(await m(`/api/config/settings`).catch(()=>void 0),!Z(t,n))return null;try{let[i,a]=await Promise.all([E(),de()]);return!Z(t,n)||!i.supported||!i.enabled||i.serverInstanceID!==e.serverInstanceID||!a.assistants.some(t=>t.id===e.assistantID&&t.enabled)?null:{runtimeKey:t,generation:n,transportIdentity:r()}}catch{return null}},Fn=async e=>{let t=Object.values(D.getState().assistantCatalogByConnection).find(t=>t.serverInstanceID===e.serverInstanceID&&t.connectionKey===e.connectionKey&&t.entries.some(t=>t.assistantID===e.assistantID));if(!t)return!1;let n=await Pn(e);if(!n&&(await pt(t.connectionKey,{transportPreference:`relay`})!==`connected`||(n=await Pn(e),!n)))return!1;let{runtimeKey:i,generation:a,transportIdentity:o}=n;if(!await w.getState().hydrateDraftMetadata(o)||!Z(i,a)||r()!==o)return!1;let s=await Jt(e,{input:w.getState(),transportIdentity:o,cancelDraft:e=>Y.cancelDraft({draftID:e}),readAttachment:Cn});if(!s.durable||!s.cancelled||!Z(i,a)||r()!==o)return!1;let c={draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:o};return Qt(e.assistantID),await qt(c,w.getState())&&Kt(c),!0},In=e=>{let t=_n.get(e.draftID);if(t)return t;let n=Fn(e).catch(()=>!1).finally(()=>{_n.get(e.draftID)===n&&_n.delete(e.draftID)});return _n.set(e.draftID,n),n},Ln=async()=>{if(S.getPlatform()!==`android`)return;let e=await Gt(e=>Y.cancelDraft({draftID:e}));for(let t of e)try{await Nn(t)&&await qt(t,w.getState())&&Kt(t)}catch{}let t=await Y.listDrafts().catch(()=>null);if(!t)return;let n=[...t?.drafts??[]].sort((e,t)=>e.createdAt-t.createdAt);yn(n.filter(e=>!kt(e)));for(let e of n)kt(e)&&await In(e)},Rn=()=>{let e=(0,_e.c)(11);O.useSyncExternalStore(xn,Sn,Sn);let t=D(zn),[n,r]=O.useState(null),i=O.useRef(null),a;e[0]===t?a=e[1]:(a=Object.values(t).flatMap(Bn).filter(Vn).sort(Hn),e[0]=t,e[1]=a);let o=a,s=mn[0]??null,c;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=(e,t)=>{i.current||(i.current=e.draftID,r(e.draftID),In({...e,serverInstanceID:t.serverInstanceID,assistantID:t.assistantID,name:t.name,avatarSeed:t.avatarSeed,serverLabel:t.serverLabel,connectionKey:t.connectionKey}).then(t=>{t&&bn(e.draftID)}).finally(()=>{i.current===e.draftID&&(i.current=null),r(t=>t===e.draftID?null:t)}))},e[2]=c):c=e[2];let l=C(c),u;e[3]===n?u=e[4]:(u=e=>{n!==e.draftID&&(bn(e.draftID),Y.cancelDraft({draftID:e.draftID}).catch(Un))},e[3]=n,e[4]=u);let d=C(u),f;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=[],e[5]=f):f=e[5],O.useEffect(Qn,f);let p=n===s?.draftID,m;return e[6]!==d||e[7]!==o||e[8]!==l||e[9]!==p?(m=(0,J.jsx)(rn,{draft:s,entries:o,busy:p,onSelect:l,onCancel:d}),e[6]=d,e[7]=o,e[8]=l,e[9]=p,e[10]=m):m=e[10],m};function zn(e){return e.assistantCatalogByConnection}function Bn(e){return e.entries}function Vn(e){return e.enabled}function Hn(e,t){return Number(t.isDefaultShareTarget)-Number(e.isDefaultShareTarget)||e.serverLabel.localeCompare(t.serverLabel)||e.name.localeCompare(t.name)}function Un(){$()}function Wn(){Q(),$(),q()}function Gn(){Q(),jn(),$(),q()}function Kn(){jn()}function qn(){}function Jn(){$()}function Yn(){}function Xn(){q()}function Zn(){}function Qn(){if(!sn())return;Q(),jn(),$(),q();let e=l(Wn),t=Gn;window.addEventListener(`openchamber:system-resume`,t);let n=!1,r=null,i=null,a=null;return Y.addListener(`shareReceived`,Kn).then(e=>{n?e.remove():r=e}).catch(qn),Y.addListener(`shareDraftReceived`,Jn).then(e=>{n?e.remove():i=e}).catch(Yn),Y.addListener(`assistantOpenRequested`,Xn).then(e=>{n?e.remove():a=e}).catch(Zn),()=>{n=!0,e(),window.removeEventListener(`openchamber:system-resume`,t),r&&r.remove(),i&&i.remove(),a&&a.remove()}}export{nn as a,ft as c,bt as d,xt as f,Q as i,M as l,Dn as n,q as o,Et as p,En as r,Ft as s,Rn as t,dt as u};
|