shadow-claw 1.42.2 → 1.42.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/lib/components/index.js +2 -2
  5. package/dist/lib/components/shadow-claw-pages.js +1 -1
  6. package/dist/lib/components/shadow-claw.js +1 -1
  7. package/dist/lib/index.js +2 -2
  8. package/dist/lib/{shadow-claw-Y9Mcpc63.js → shadow-claw-BYnSPS95.js} +3 -1
  9. package/dist/lib/{shadow-claw-Y9Mcpc63.js.map → shadow-claw-BYnSPS95.js.map} +1 -1
  10. package/dist/lib/{shadow-claw-pages-BQXL6YiW.js → shadow-claw-pages-Du2Iqa3w.js} +12 -2
  11. package/dist/lib/{shadow-claw-pages-BQXL6YiW.js.map → shadow-claw-pages-Du2Iqa3w.js.map} +1 -1
  12. package/dist/public/.well-known/mcp/server-card.json +1 -1
  13. package/dist/public/.well-known/mcp.json +1 -1
  14. package/dist/public/README.md +1 -1
  15. package/dist/public/components/shadow-claw/shadow-claw.css +1 -1
  16. package/dist/public/components/shadow-claw-pages/shadow-claw-pages.css +1 -1
  17. package/dist/public/docs/example/article/index.html +2 -2
  18. package/dist/public/docs/publishing/index.html +2 -2
  19. package/dist/public/docs/skill-creator/index.html +2 -2
  20. package/dist/public/docs/subsystems/theming.md +1 -0
  21. package/dist/public/index.html +2 -2
  22. package/dist/public/index.js +1 -1
  23. package/dist/public/main/index.html +2 -2
  24. package/dist/public/main/memory/index.html +2 -2
  25. package/dist/public/service-worker.js +1 -1
  26. package/dist/public/{shadow-claw-SR0hhsCu.js → shadow-claw-BQwI0Al-.js} +3 -1
  27. package/dist/public/{shadow-claw-pages-B7MAu-gM.js → shadow-claw-pages-CMP6CCs0.js} +11 -1
  28. package/package.json +1 -1
  29. package/src/components/shadow-claw/shadow-claw.css +2 -0
  30. package/src/components/shadow-claw-pages/shadow-claw-pages.css +11 -1
@@ -1,4 +1,4 @@
1
- import{r as e}from"./config-vxIupSU4.js";import{a as t,d as n,l as r,m as i,n as a,p as o,r as s}from"./app-routes-Dp9frfan.js";import{i as c}from"./txPromise-C2iYogHX.js";import{t as l}from"./getConfig-4saf0Tkq.js";import{t as u}from"./dist-B9m1QM9v.js";import{$t as d,B as f,Cn as p,Ct as m,E as h,bt as g,c as ee,dt as te,i as ne,lt as re,s as ie,t as _,u as ae}from"./orchestrator-DuMaNh6v.js";import{o as oe}from"./tools-vVsKTc2N.js";import{t as se}from"./setConfig-DdSThoKj.js";import{t as v}from"./ulid-BY7rQVLN.js";import{a as y,r as b}from"./toast-BXgUfbyh.js";import{n as ce,r as le,t as ue}from"./constants-DiETpg52.js";import{t as de}from"./shadow-claw-element-DIrv3P6A.js";import{t as x}from"./effect-BJCrpFdp.js";import{t as fe}from"./prompt-api-OUOP-B-R.js";import{t as S}from"./configurePeerJs-DnoQjlCx.js";import{t as C}from"./file-viewer-BGDIml-f.js";import{t as pe}from"./parseConfigBoolean-ByjZr9OM.js";const w={Light:`light`,Dark:`dark`,System:`system`},T=`shadow-claw-theme`;function E(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function D(e){return e===`system`?E():e}function O(e){let t=document.documentElement;e===`dark`?(t.classList.add(`dark-mode`),t.classList.remove(`light-mode`)):(t.classList.add(`light-mode`),t.classList.remove(`dark-mode`));let n=document.querySelector(`shadow-claw`);n&&(e===`dark`?(n.classList.add(`dark-mode`),n.classList.remove(`light-mode`)):(n.classList.add(`light-mode`),n.classList.remove(`dark-mode`))),window.dispatchEvent(new CustomEvent(`shadow-claw-theme-change`,{detail:{theme:e}}))}const k=ie(T)||`system`,me=D(k);O(me);const A=new class{_resolved;_theme;constructor(){this._theme=new u.State(k),this._resolved=new u.State(me)}getTheme(){return{theme:this.theme,resolved:this.resolved}}init(){typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=E();ae(T,`system`),O(e),this._theme.set(`system`),this._resolved.set(e)}),window.addEventListener(`storage`,e=>{let t=ee(T);e.key===t&&e.newValue&&this.setTheme(e.newValue)})}get resolved(){return this._resolved.get()}setTheme(e){let t=D(e);ae(T,e),O(t),this._theme.set(e),this._resolved.set(t)}get theme(){return this._theme.get()}};A.init();async function j(e,t=3){for(let n=0;n<t;n++){if(e())return;await new Promise(e=>{requestAnimationFrame(()=>e())})}}function M(e,t){let n=e.sidebarDefaultPage,r=[n,`pages`,`chat`,`tasks`,`files`];if(!t)return n===`pages`||n===`chat`||n===`tasks`||n===`files`?n:`chat`;for(let e of r){if(e===`pages`&&!t.pagesSidebarHidden)return`pages`;if(e===`chat`&&!t.chatSidebarHidden)return`chat`;if(e===`tasks`&&!t.tasksSidebarHidden)return`tasks`;if(e===`files`&&!t.filesSidebarHidden)return`files`}return`pages`}function he(e,t,n){return n&&t===`pages`?M(e):t}function ge(e,t){if(!e||![`chat`,`tasks`,`files`].includes(t))return null;let n=e.querySelector(`[data-page-id="${t}"]`);if(!(n instanceof HTMLElement))return null;let r=n.querySelector(`shadow-claw-chat, shadow-claw-tasks, shadow-claw-files`),i=r instanceof HTMLElement?r.shadowRoot?.querySelector(`[data-terminal-slot]`):null;return i instanceof HTMLElement?i:null}function _e(e,t,n,r){let i=n;if(!i)return;let a=ge(e,t);if(!a)return;i.parentElement!==a&&a.appendChild(i);let o=!r;i.hidden=o,o?(a.setAttribute(`hidden`,`hidden`),e?.querySelector(`shadow-claw-terminal`)?.setAttribute(`hidden`,`hidden`)):(a.removeAttribute(`hidden`),e?.querySelector(`shadow-claw-terminal`)?.removeAttribute(`hidden`))}const ve={pages:()=>import(`./shadow-claw-pages-B7MAu-gM.js`),chat:()=>import(`./shadow-claw-chat-C-ULqqjn.js`),tasks:()=>import(`./shadow-claw-tasks-ewhmptQN.js`),files:()=>import(`./shadow-claw-files-BNU3b63h.js`),settings:()=>import(`./shadow-claw-settings-DbNjnFJ8.js`),tools:()=>import(`./shadow-claw-tools-CNX-9T3T.js`),channels:()=>import(`./shadow-claw-channels-IOf1W3h7.js`),terminal:()=>import(`./shadow-claw-terminal-P9RS0Kux.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-xRJ0lqj2.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-gOiW-_Bh.js`)},N=new Map;async function P(e){let t=N.get(e);if(!t){let n=ve[e];n?(t=n().then(()=>void 0),N.set(e,t)):t=Promise.resolve()}await t}function F(e,t,n,r,i){r&&P(`terminal`).catch(console.error),i!==null&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=null,_e(e,t,n,r)})}function ye(e){if(!e)return[];let t=[`shadow-claw-chat`,`shadow-claw-tasks`,`shadow-claw-files`,`shadow-claw-pages`,`shadow-claw-settings`,`shadow-claw-tools`,`shadow-claw-channels`],n=[];for(let r of t){let t=e.querySelector(r);if(!(t instanceof HTMLElement))continue;let i=t.shadowRoot?.querySelector(`shadow-claw-page-header`);i instanceof HTMLElement&&n.push(i)}return n}function I(e,t){if(e)for(let n of ye(e))n.setMainCollapsedOverride?.(t)}function L(e,t,n){if(!e)return;let r=e.querySelector(`.activity-log-toggle`);r instanceof HTMLButtonElement&&(r.hidden=t!==`chat`||n===0)}function be(e){if(!e)return null;let t=e.querySelector(`.page.active`);if(!(t instanceof HTMLElement))return null;let n=t.querySelector(`shadow-claw-chat, shadow-claw-tasks, shadow-claw-files, shadow-claw-pages, shadow-claw-settings, shadow-claw-tools, shadow-claw-channels`);if(!(n instanceof HTMLElement))return null;let r=n.shadowRoot?.querySelector(`shadow-claw-page-header`);return r instanceof HTMLElement?r:null}function R(e,t){if(!e)return;let n=e.querySelector(`.header-main-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof t==`boolean`?t:be(e)?.isMainCollapsed?.()??!1;n.setAttribute(`aria-label`,r?`Show action header`:`Hide action header`),n.setAttribute(`title`,r?`Show action header`:`Hide action header`),n.setAttribute(`aria-pressed`,String(r))}function z(e,t,n,r){if(!e)return;let i=e.querySelector(`.webvm-toggle`);if(!(i instanceof HTMLButtonElement))return;let a=t===`chat`||t===`files`;if(i.hidden=!a,i.classList.toggle(`hidden`,!a),i.classList.remove(`webvm-toggle--hidden`,`webvm-toggle--visible`,`webvm-toggle--booting`,`webvm-toggle--ready`,`webvm-toggle--error`),!a){i.classList.add(`webvm-toggle--error`);return}i.classList.add(n?`webvm-toggle--visible`:`webvm-toggle--hidden`),r.ready?i.classList.add(`webvm-toggle--ready`):(r.booting||r.bootAttempted)&&i.classList.add(`webvm-toggle--booting`),i.setAttribute(`aria-label`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`title`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`aria-pressed`,String(n))}const B={chat:`shadow-claw-chat`,tasks:`shadow-claw-tasks`,files:`shadow-claw-files`,settings:`shadow-claw-settings`,tools:`shadow-claw-tools`,channels:`shadow-claw-channels`};function V(e,t){let n=B[t];if(!n)return;let r=e.querySelector(`[data-page-id="${t}"]`);!r||r.children.length>0||r.appendChild(document.createElement(n))}function H(e,t,n,r,i,a=!0){if(!e)return;let o=he(r,i,t.pagesSidebarHidden),s=!!t.chatSplitViewEnabled&&o!==`chat`,c=e.querySelector(`.main-content`),l=e.querySelector(`.chat-split-resize-handle`);if(s){let t=B.chat;t&&customElements.get(t)?V(e,`chat`):P(`chat`).then(()=>{e&&V(e,`chat`)}).catch(console.error),c&&c.classList.add(`split-chat-active`),l&&l.removeAttribute(`hidden`)}else c&&c.classList.remove(`split-chat-active`),l&&l.setAttribute(`hidden`,`hidden`);let u=B[o];u&&customElements.get(u)?V(e,o):P(o).then(()=>{e&&V(e,o)}).catch(console.error),e.querySelectorAll(`.page`).forEach(e=>{e.classList.remove(`active`)}),e.querySelectorAll(`.nav-item`).forEach(e=>{e.classList.remove(`active`)});let d=e.querySelector(`[data-page-id="${o}"]`);d&&d.classList.add(`active`);let f=e.querySelector(`[data-page="${o}"]`);f&&f.classList.add(`active`),t.currentPage=o,a&&n&&r.setActivePage(n,o).catch(console.error),F(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame),I(e,t.headerMainCollapsedOverride),R(e,t.headerMainCollapsedOverride),L(e,t.currentPage,r.activityLog.length),z(e,t.currentPage,t.terminalVisible,t.vmStatus);let p=e.querySelector(`.page.active`);if(p){let e=p;typeof e.scrollTo==`function`&&e.scrollTo(0,0)}if(o===`chat`){let t=e.querySelector(`shadow-claw-chat`);t&&typeof t.checkPromptApiOnboarding==`function`&&t.checkPromptApiOnboarding()}if(o===`files`&&n&&r.loadFiles(n).catch(console.error),o===`pages`){let t=e.querySelector(`shadow-claw-pages`);t&&typeof t.renderSelectedPage==`function`&&(t.renderSelectedPage(),typeof t.setupAutoRefreshTimer==`function`&&t.setupAutoRefreshTimer())}}function U(e,t){if(!e||typeof e.querySelectorAll!=`function`)return;let n=t||(typeof window<`u`&&window.location?.href?new URL(window.location.href):null);if(!n)return;let r=n.pathname.replace(/\/+$/,``)||`/`;e.querySelectorAll(`[slot="sidebar"] a[href], [slot="sidebar-nav"] a[href], [slot="sidebar-content"] a[href], [slot="sidebar-footer"] a[href], .sidebar-custom-sections a[href]`).forEach(e=>{try{let t=e.getAttribute(`href`)||``;if(!t||t.startsWith(`#`)||t.startsWith(`javascript:`)||t.startsWith(`mailto:`)||t.startsWith(`tel:`))return;let i=new URL(t,n.origin);if(i.origin!==n.origin){e.classList.remove(`active`),e.removeAttribute(`aria-current`);return}(i.pathname.replace(/\/+$/,``)||`/`)===r&&(i.hash?i.hash===n.hash:!n.hash)?(e.classList.add(`active`),e.setAttribute(`aria-current`,`page`)):(e.classList.remove(`active`),e.removeAttribute(`aria-current`))}catch{}})}function xe(e){if(!e||typeof window>`u`)return()=>{};let t=()=>U(e);t(),window.addEventListener(`popstate`,t,{passive:!0});let n=window.navigation;return n&&typeof n.addEventListener==`function`&&n.addEventListener(`navigate`,t,{passive:!0}),()=>{window.removeEventListener(`popstate`,t),n&&typeof n.removeEventListener==`function`&&n.removeEventListener(`navigate`,t)}}async function W(e,t,n,r,i,a){let{page:o,groupId:s,path:c,anchor:l}=a;if(!n)return;let u=o?String(o).toLowerCase():``;if(u&&r.file&&!(u===`files`&&c&&c===r.file.path&&(!s||s===i.activeGroupId))){let t=e?.querySelector(`shadow-claw-file-viewer`);if(t&&typeof t.requestCloseViewer==`function`){if(!await t.requestCloseViewer())return}else r.closeFile()}if(s&&s!==i.activeGroupId?await i.switchConversation(n,s,u===`chat`):s&&(i.loadHistory(),(u===`tasks`||u===`files`)&&n&&i.loadFiles(n)),u&&H(e,t,n,i,u),u===`files`&&c)if(/\.[^./]+$/u.test(c))try{await r.openFile(n,c,s||i.activeGroupId),l&&await j(()=>{let t=e?.querySelector(`shadow-claw-file-viewer`);return t&&typeof t.handleAnchorNavigation==`function`?!!t.handleAnchorNavigation(l):!1})}catch(e){console.error(`Failed to open file via route navigation:`,c,e)}else try{await i.setCurrentPath(n,c),r.closeFile()}catch(e){console.error(`Failed to open folder via route navigation:`,c,e)}if(u===`pages`){if(typeof customElements<`u`&&await customElements.whenDefined(`shadow-claw-pages`),c){let e=s||i.activeGroupId||`br:main`;if(typeof i.isPageAllowed!=`function`||i.isPageAllowed(c,e))await i.setActivePinnedPage(n,{groupId:e,path:c});else{let e=i.effectiveDefaultPage||i.pages&&i.pages[0]||null;await i.setActivePinnedPage(n,e)}}else{let e=i.effectiveDefaultPage||i.pages&&i.pages[0]||null;e&&await i.setActivePinnedPage(n,e)}let t=e?.querySelector(`shadow-claw-pages`);t&&typeof t.renderSelectedPage==`function`&&(await t.renderSelectedPage(),typeof t.setupAutoRefreshTimer==`function`&&t.setupAutoRefreshTimer(),l&&await j(()=>typeof t.handleAnchorNavigation==`function`&&!!t.handleAnchorNavigation(l)))}U(t)}async function G(e,r,s,c,l,u){let d=u.pathname,f=t();f!==`/`&&d.startsWith(f)&&(d=`/`+d.slice(f.length));let p=d.split(`/`).filter(Boolean),m=p.length===0||p.length===1&&p[0]===`index.html`,h=l.defaultPinnedPage||o(ne());if(m&&h){let t={page:`pages`,groupId:h.groupId||l.activeGroupId||`br:main`,path:h.path},n=await i(t);if(n&&n!==`/`&&typeof window<`u`&&window.history){let e=a(n);window.history.replaceState(null,``,e)}await W(e,r,s,c,l,t);return}let g=await n(u,l.activeGroupId);g&&await W(e,r,s,c,l,g)}function K(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return Math.max(200,Math.min(560,t));let r=Math.max(200,n.getBoundingClientRect().width-260);return Math.max(200,Math.min(Math.min(560,r),t))}async function q(t,n){if(t)try{await se(t,e.SIDEBAR_WIDTH,n)}catch{}}function J(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return;let r=K(e,t);n.style.setProperty(`--sidebar-width`,`${r}px`)}async function Se(t,n,r,i){if(!t)return;let a=t.querySelector(`.sidebar-resize-handle`);if(!(a instanceof HTMLElement))return;a.setAttribute(`tabindex`,`0`),a.setAttribute(`role`,`separator`),a.setAttribute(`aria-orientation`,`vertical`),a.setAttribute(`aria-label`,`Resize sidebar width`);let o=()=>{let e=t.querySelector(`.app-body`);if(!(e instanceof HTMLElement))return 250;let n=parseFloat(e.style.getPropertyValue(`--sidebar-width`));return Number.isFinite(n)&&n>0?n:r.getBoundingClientRect().width||250},s=()=>{let e=Math.round(K(t,o())),n=Math.round(K(t,2**53-1));a.setAttribute(`aria-valuemin`,`200`),a.setAttribute(`aria-valuemax`,String(n)),a.setAttribute(`aria-valuenow`,String(e))};try{let n=i?await l(i,e.SIDEBAR_WIDTH):void 0;typeof n==`number`&&Number.isFinite(n)&&n>0?J(t,n):J(t,250)}catch{J(t,250)}let c=null,u=0,d=0,f=e=>{if(e.pointerId!==c)return;let n=e.clientX-u;J(t,d+n),s()},p=()=>{if(c===null)return;c=null,a.classList.remove(`active`),document.removeEventListener(`pointermove`,f);let e=t.querySelector(`.app-body`);if(e instanceof HTMLElement){let t=parseFloat(e.style.getPropertyValue(`--sidebar-width`));Number.isFinite(t)&&t>0&&i&&q(i,t)}},m=e=>{e.pointerId===c&&p()};a.addEventListener(`pointerdown`,e=>{e.pointerType===`mouse`&&e.button!==0&&e.button!==-1||window.innerWidth<896||(e.preventDefault(),c=e.pointerId,u=e.clientX,d=r.getBoundingClientRect().width,a.classList.add(`active`),a.setPointerCapture(e.pointerId),document.addEventListener(`pointermove`,f))}),a.addEventListener(`pointerup`,m),a.addEventListener(`pointercancel`,p),a.addEventListener(`dblclick`,()=>{J(t,250),i&&q(i,250),s()}),a.addEventListener(`keydown`,e=>{if(window.innerWidth<896)return;let n=e.shiftKey?32:12,r=o(),a=null;e.key===`ArrowRight`?a=r+n:e.key===`ArrowLeft`?a=r-n:e.key===`Home`?a=200:e.key===`End`&&(a=K(t,2**53-1)),a!==null&&(e.preventDefault(),J(t,a),s(),i&&q(i,K(t,o())))}),s(),n.addCleanup(()=>{p(),a.removeEventListener(`pointerup`,m),a.removeEventListener(`pointercancel`,p)})}async function Y(e,t,n){if(!t)return!1;let r=t.querySelector(`.app-dialog`),i=t.querySelector(`.app-dialog__title`),a=t.querySelector(`.app-dialog__message`),o=t.querySelector(`.app-dialog__details`),s=t.querySelector(`.app-dialog__links`),c=t.querySelector(`.app-dialog__btn--confirm`),l=t.querySelector(`.app-dialog__btn--cancel`),u=t.querySelector(`.app-dialog__countdown`);if(!r||!i||!a||!o||!s||!c||!l)return!1;r._autoCloseTimer&&=(clearInterval(r._autoCloseTimer),null),r.open&&r.close(),i.textContent=n.title,a.textContent=n.message,o.replaceChildren(),s.replaceChildren();let d=Array.isArray(n.details)?n.details:[];o.hidden=d.length===0;for(let t of d){let n=e.createElement(`li`);n.textContent=t,o.appendChild(n)}let f=Array.isArray(n.links)?n.links:[];s.hidden=f.length===0;for(let t of f){let n=e.createElement(`a`);n.className=`app-dialog__link`,n.href=t.href,n.rel=`noreferrer`,n.target=`_blank`,n.textContent=t.label,s.appendChild(n)}let p=n.mode||`confirm`,m=n.confirmLabel||(p===`info`?`OK`:`Confirm`);l.textContent=n.cancelLabel||`Cancel`,l.hidden=p===`info`;let h=null,g=()=>{h&&=(clearInterval(h),null),r._autoCloseTimer&&=null};if(typeof n.autoCloseSeconds==`number`&&n.autoCloseSeconds>0){let e=Math.max(1,Math.round(n.autoCloseSeconds));c.textContent=`${m} (${e}s)`,u&&(u.hidden=!1,u.textContent=`Auto-closing in ${e}s...`,u.setAttribute(`role`,`status`),u.setAttribute(`aria-live`,`polite`),u.setAttribute(`aria-atomic`,`true`)),h=setInterval(()=>{e--,e>0?(c.textContent=`${m} (${e}s)`,u&&(u.textContent=`Auto-closing in ${e}s...`)):(g(),r.returnValue=p===`info`?`confirm`:`cancel`,r.close(r.returnValue))},1e3),r._autoCloseTimer=h}else c.textContent=m,u&&(u.hidden=!0,u.textContent=``);return r.returnValue=``,await new Promise(e=>{let t=()=>{g(),r.removeEventListener(`close`,t),e(r.returnValue===`confirm`)};r.addEventListener(`close`,t),r.showModal()})}const Ce={pages:e.SIDEBAR_PAGES_HIDDEN,chat:e.SIDEBAR_CHAT_HIDDEN,tasks:e.SIDEBAR_TASKS_HIDDEN,files:e.SIDEBAR_FILES_HIDDEN};function X(e,t,n){if(!e)return;let r=e.querySelector(`.nav-item[data-page="${t}"]`);if(r&&(r.hidden=n,r.setAttribute(`aria-hidden`,String(n))),t===`chat`){let t=e.querySelector(`shadow-claw-conversations`);t&&(t.hidden=n,t.setAttribute(`aria-hidden`,String(n)))}}function we(e){switch(e){case`pages`:return`pagesSidebarHidden`;case`chat`:return`chatSidebarHidden`;case`tasks`:return`tasksSidebarHidden`;case`files`:return`filesSidebarHidden`}}async function Te(e,t,n,r){for(let[n,i]of Object.entries(Ce)){let a=n,o=!1;if(r)try{o=pe(await l(r,i))}catch{o=!1}let s=we(a);t[s]=o,X(e,a,o)}}function Z(e,t,n,r,i,a){switch(i){case`pages`:t.pagesSidebarHidden=a;break;case`chat`:t.chatSidebarHidden=a;break;case`tasks`:t.tasksSidebarHidden=a;break;case`files`:t.filesSidebarHidden=a;break}X(e,i,a),a&&t.currentPage===i&&H(e,t,r,n,M(n,t))}function Ee(e,t,n,r,i){Z(e,t,n,r,`pages`,i)}function De(){let e=window.navigation;return!!(e&&typeof e.addEventListener==`function`&&typeof e.navigate==`function`)}function Oe(e,t,n,r={}){let i=r.debounceMs??250,a=r.minSleepDurationMs??1e3,o=0,s=null,c=!1,l=e=>{e&&(c=!0),s!==null&&clearTimeout(s),s=setTimeout(()=>{s=null;let e=c;c=!1,n.ensureAllConnections({force:e})},i)},u=()=>{s!==null&&(clearTimeout(s),s=null),c=!1},d=()=>{if(t.visibilityState===`hidden`)o=Date.now(),u();else if(t.visibilityState===`visible`){let e=o>0&&Date.now()-o>=a;l(e)}},f=e=>{let n=!!(e&&e.persisted);l(n||t.visibilityState===`visible`)},p=()=>{t.visibilityState===`visible`&&l(!1)},m=()=>{l(!0)};return t.addEventListener(`visibilitychange`,d),e.addEventListener(`pageshow`,f),e.addEventListener(`focus`,p),e.addEventListener(`online`,m),()=>{u(),t.removeEventListener(`visibilitychange`,d),e.removeEventListener(`pageshow`,f),e.removeEventListener(`focus`,p),e.removeEventListener(`online`,m)}}function ke(e,t){if(!e)return;let n=e.querySelector(`shadow-claw-chat`);n&&typeof n.setActivityLogCollapsedOverride==`function`&&n.setActivityLogCollapsedOverride(t)}function Ae(e,t){if(!e)return;let n=e.querySelector(`.activity-log-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof globalThis.matchMedia==`function`&&!globalThis.matchMedia(`(min-width: 56rem) and (min-height: 401px)`).matches,i=typeof t==`boolean`?t:r;n.setAttribute(`aria-label`,i?`Show activity log`:`Hide activity log`),n.setAttribute(`title`,i?`Show activity log`:`Hide activity log`),n.setAttribute(`aria-pressed`,String(i))}function je(e){let t=typeof globalThis.matchMedia==`function`&&!globalThis.matchMedia(`(min-width: 56rem) and (min-height: 401px)`).matches;e.activityLogCollapsedOverride=!(typeof e.activityLogCollapsedOverride==`boolean`?e.activityLogCollapsedOverride:t),ke(e.shadowRoot,e.activityLogCollapsedOverride),Ae(e.shadowRoot,e.activityLogCollapsedOverride)}function Me(e){e.headerMainCollapsedOverride=!(typeof e.headerMainCollapsedOverride==`boolean`?e.headerMainCollapsedOverride:be(e.shadowRoot)?.isMainCollapsed?.()??!1),I(e.shadowRoot,e.headerMainCollapsedOverride),R(e.shadowRoot,e.headerMainCollapsedOverride)}function Ne(e,t){t.terminalVisible=!t.terminalVisible,z(e,t.currentPage,t.terminalVisible,t.vmStatus),F(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame)}function Pe(e,t){e===w.Dark?(t.add(`dark-mode`),t.remove(`light-mode`)):(t.add(`light-mode`),t.remove(`dark-mode`))}function Fe(e,t){if(!e)return;let n=e.querySelector(`.sun-icon`),r=e.querySelector(`.moon-icon`);n&&r&&(t===w.Dark?(n.style.display=`block`,n.removeAttribute(`hidden`),n.classList.remove(`hidden`),r.style.display=`none`,r.setAttribute(`hidden`,`hidden`),r.classList.add(`hidden`)):(n.style.display=`none`,n.setAttribute(`hidden`,`hidden`),n.classList.add(`hidden`),r.style.display=`block`,r.removeAttribute(`hidden`),r.classList.remove(`hidden`)))}function Ie(e,t,n,r,i,a,o,s,c){if(!n||!e||!t)return;n.querySelectorAll(`.nav-item[data-page]`).forEach(e=>{let r=e;r.addEventListener(`click`,()=>{let e=r.dataset.page||M(a);n.querySelectorAll(`.nav-item`).forEach(e=>e.classList.remove(`active`)),r.classList.add(`active`),setTimeout(()=>{t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:e},bubbles:!0,composed:!0}))},0)})});let l=n.getElementById(`menu-button`),u=n.querySelector(`.sidebar`);if(l&&u){l.addEventListener(`click`,()=>{u.classList.toggle(`open`)}),n.querySelectorAll(`.nav-item, .settings-btn`).forEach(t=>{t.addEventListener(`click`,()=>{e.innerWidth<896&&u.classList.remove(`open`)})}),u.addEventListener(`click`,t=>{let n=t.target;e.innerWidth<896&&n?.closest(`a, button, .nav-item, .sidebar-link, .sidebar-item`)&&u.classList.remove(`open`)}),typeof r?.addEventListener==`function`&&r.addEventListener(`click`,t=>{let n=t.target;e.innerWidth<896&&n?.closest(`[slot^="sidebar"] a, .sidebar-custom-sections a`)&&u.classList.remove(`open`)}),t.addEventListener(`click`,t=>{let n=t.composedPath();e.innerWidth<896&&u.classList.contains(`open`)&&!n.includes(u)&&!n.includes(l)&&u.classList.remove(`open`)});let a=e.matchMedia?e.matchMedia(`(min-width: 56rem)`):{matches:!1,addEventListener:()=>{},removeEventListener:()=>{}},o=e=>{e.matches&&u.classList.remove(`open`)};o(a),a.addEventListener(`change`,o),Se(n,r,u,i)}let d=n.querySelector(`[data-action="show-settings"]`);d&&d.addEventListener(`click`,()=>{t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`settings`},bubbles:!0,composed:!0}))}),n.querySelector(`.header-main-toggle`)?.addEventListener(`click`,()=>{Me(r)}),n.querySelector(`.activity-log-toggle`)?.addEventListener(`click`,()=>{je(r)}),n.addEventListener(`navigate`,e=>{let n=e.detail?.page;n&&t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:n},bubbles:!0,composed:!0}))}),n.addEventListener(`sidebar-pages-visibility-change`,e=>{Ee(n,r,a,i,!!e.detail?.hidden)}),n.addEventListener(`sidebar-chat-visibility-change`,e=>{Z(n,r,a,i,`chat`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-tasks-visibility-change`,e=>{Z(n,r,a,i,`tasks`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-files-visibility-change`,e=>{Z(n,r,a,i,`files`,!!e.detail?.hidden)}),n.addEventListener(`chat-split-view-change`,e=>{r.chatSplitViewEnabled=!!e.detail?.enabled,H(n,r,i,a,r.currentPage,!1)}),n.addEventListener(`navigate-back`,()=>t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`settings`},bubbles:!0,composed:!0})));let f=n.querySelector(`.theme-mode-toggle`);f&&f.addEventListener(`click`,()=>{let{resolved:e}=s.getTheme(),t=e===w.Dark?w.Light:w.Dark;s.setTheme(t)}),n.querySelector(`.webvm-toggle`)?.addEventListener(`click`,()=>Ne(n,r)),n.addEventListener(`shadow-claw-terminal-slot-ready`,()=>{F(n,r.currentPage,r.terminalElement,r.terminalVisible,r.terminalPlacementFrame),I(n,r.headerMainCollapsedOverride),R(n,r.headerMainCollapsedOverride)}),e.addEventListener(`resize`,()=>{r.headerMainCollapsedOverride===null&&R(n,r.headerMainCollapsedOverride)}),t.addEventListener(`shadow-claw-navigate`,r.shadowClawNav),De()?(e.navigation.addEventListener(`navigate`,r.handleNavigationApiNavigate),r.navigationListenerAttached=!0):(r.popstateListener=t=>{let s=t?.state||e.history?.state;s?.inFeedScroll||s?.scrollSpy||s?.suppressRouter||G(n,r,i,o,a,new URL(e.location.href))},e.addEventListener(`popstate`,r.popstateListener),t.addEventListener(`click`,r.fallbackClickListener),r.fallbackClickListenerAttached=!0),e.addEventListener(`shadow-claw-theme-change`,e=>{let t=e.detail.theme;Fe(n,t),Pe(t,r.classList)}),e.addEventListener(`shadow-claw-peer-error`,e=>{let r=e.detail,i=r.remotePeerId,a=r.error;Y(t,n,{mode:`info`,title:`Peer Connection Error`,message:i?`Failed to communicate with peer ${i}: ${a}`:`PeerJS error: ${a}`,confirmLabel:`Dismiss`,autoCloseSeconds:30})});let p=s.resolved;Fe(n,p),Pe(p,r.classList),r.appLifecycleCleanup&&=(r.appLifecycleCleanup(),null),r.orchestrator&&(r.appLifecycleCleanup=Oe(e,t,r.orchestrator)),xe(r)}function Le(e){if(e===void 0)return;e.documentElement.classList.remove(ce,`sc-prerender-override`);let t=e.querySelector(`shadow-claw`);t?.removeAttribute(ue),t?.removeAttribute(le)}function Re(e,t){if(!e)return;let n=t;if(n.navigationType===`reload`)return;let i=(typeof n?.destination?.getState==`function`?n.destination.getState():null)||(n.navigationType===`replace`&&typeof history<`u`?history.state:null);if(i?.inFeedScroll||i?.scrollSpy||i?.suppressRouter)return;let a=n?.destination?.url;if(typeof a!=`string`)return;let o=new URL(a);if(o.origin===window.location.origin&&r(o.pathname))return{parsedUrl:o,navigateEvent:n}}function ze(e,t){if(t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return null;let n=t.composedPath(),i=null;for(let e of n)if(e instanceof HTMLAnchorElement){i=e;break}if(!i)return null;let a=i.getAttribute(`href`)||``;return!a||a.startsWith(`javascript:`)||a.startsWith(`mailto:`)||a.startsWith(`tel:`)||i.target&&i.target!==`_self`||i.origin!==e.origin||!r(i.pathname)||i.pathname===e.pathname&&i.search===e.search&&i.hash!==e.hash?null:(t.preventDefault(),`${i.pathname}${i.search}${i.hash}`)}async function Be(e,t,n){if(!t)return null;let r=t.querySelector(`.app-prompt-dialog`),i=t.querySelector(`.app-prompt-dialog__message`),a=t.querySelector(`.app-prompt-dialog__input-area`);if(!r||!i||!a)return null;if(r.open&&r.close(),i.textContent=n.question,a.replaceChildren(),Array.isArray(n.options)&&n.options.length>0){let t=e.createElement(`select`);t.className=`app-prompt-dialog__input`,t.name=`prompt-response`;for(let r of n.options){let n=e.createElement(`option`);n.value=r,n.textContent=r,t.appendChild(n)}a.appendChild(t)}else{let t=e.createElement(`input`);t.type=`text`,t.className=`app-prompt-dialog__input`,t.name=`prompt-response`,t.placeholder=`Enter your response...`,t.autocomplete=`off`,a.appendChild(t),setTimeout(()=>t.focus(),50)}return r.returnValue=``,await new Promise(e=>{let t=()=>{if(r.removeEventListener(`close`,t),r.returnValue===`submit`){let t=a.querySelector(`[name='prompt-response']`);e(t?t.value:null)}else e(null)};r.addEventListener(`close`,t),r.showModal()})}async function Ve(e,t,n,r){let i=await Be(e,t,r);h(n.orchestrator,r.id,i)}async function He(e,t,n,r){let i=r.path,a=r.groupId||t.activeGroupId;if(!(!i||!e))for(let t=0;t<=3;t++)try{await n.openFile(e,i,a);return}catch(e){let n=e instanceof DOMException&&e.name===`NotFoundError`;if(t<3&&n){await new Promise(e=>setTimeout(e,150*(t+1)));continue}b(`Failed to open file from tool: ${e instanceof Error?e.message:String(e)}`,5e3);return}}async function Ue(e,t,n){n?.providerId===`llamafile`?await Y(e,t,te(n.reason)):n?.providerId===`transformers_js_local`?await Y(e,t,re(n.reason)):n?.providerId===`prompt_api`?await Y(e,t,fe(n.reason)):n?.providerId&&n.helpType&&await Y(e,t,p(n.providerId,n.helpType,n.reason))}async function We(e,t,n,r,i,a){if(!(!r||!a?.roomId||!a?.hostPeerId)&&await Y(e,t,{mode:`confirm`,title:`Room invitation`,message:`${a.fromAlias||a.fromPeerId} invited you to join "${a.roomName}".`,confirmLabel:`Join`,cancelLabel:`Decline`}))try{f(n.orchestrator,a.roomId,a.hostPeerId,a.roomName),await i.switchConversation(r,`room:${a.roomId}`),H(t,n,r,i,`chat`),y(`Joined room "${a.roomName}"`)}catch(e){b(`Failed to join room: ${e instanceof Error?e.message:String(e)}`,6e3)}}function Q(e,t,n){let r=n.useTrailingSlash&&!t.includes(`#`)?t.endsWith(`/`)?t:t+`/`:t;n.replace?e.replaceState({},``,r):e.pushState({},``,r)}async function Ge(e,t,n,r,i,o,c={replace:!1}){let l=a(s(o)),u=typeof window<`u`&&window.location?`${window.location.pathname}${window.location.search}${window.location.hash}`:``;if(u&&l===u){await W(e,t,n,r,i,o);return}if(De()){window.navigation.navigate(l,{history:c.replace?`replace`:`push`});return}l!==window.location.pathname&&Q(globalThis.history,l,{...c,useTrailingSlash:!1}),await W(e,t,n,r,i,o)}function Ke(e){let t=String(e||`chat`).toLowerCase();return t===`chat`||t===`files`||t===`tasks`||t===`pages`||t===`settings`||t===`tools`||t===`channels`?t:`chat`}async function qe(e,t,n,r,i,a){let o=a.detail;o&&await Ge(e,t,n,r,i,{page:Ke(String(o.page||`chat`)),groupId:o.groupId,path:o.path,anchor:o.anchor})}async function Je(e,t,n,r){await Te(e,t,n,r)}async function Ye(e,t,n,r){if(!n)return;let i=new URL(window.location?.href||`http://localhost/`),a=i.searchParams.get(`peer`);if(!a)return;let o=a.trim();if(o)try{let a=g(r),s=a.myPeerId;s||=v().toLowerCase();let c=new Set(a.trustedPeerIds);c.add(o),await S(r,n,s,Array.from(c),a.serverHost,a.serverPort,a.serverPath,a.serverSecure),a.enabled||await m(r,n,`peerjs`,!0);let l=await _.ensurePeerConversation(n,o);await _.switchConversation(n,l),H(e,t,n,_,`chat`),i.searchParams.delete(`peer`);let u=`${i.pathname}${i.search}${i.hash}`;window.history.replaceState({},``,u||`/`),y(`Connected to Peer: ${o.substring(0,8)}`)}catch(e){b(`Failed to process peer parameter: ${e instanceof Error?e.message:String(e)}`,6e3)}}const Xe=`pendingShares`;function Ze(e){return{id:typeof e?.id==`string`?e.id:``,createdAt:typeof e?.createdAt==`number`?e.createdAt:0,title:typeof e?.title==`string`?e.title:``,text:typeof e?.text==`string`?e.text:``,url:typeof e?.url==`string`?e.url:``,fileName:typeof e?.fileName==`string`?e.fileName:``,fileType:typeof e?.fileType==`string`?e.fileType:``,fileBytes:e?.fileBytes instanceof ArrayBuffer?e.fileBytes:null}}async function Qe(e){return!e||typeof e.transaction!=`function`?[]:new Promise((t,n)=>{let r;try{r=e.transaction(Xe,`readwrite`)}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`){t([]);return}n(e);return}let i=r.objectStore(Xe),a=i.getAll();a.onerror=()=>{n(a.error||Error(`Failed to read pending shares`))},a.onsuccess=()=>{let e=Array.isArray(a.result)?a.result.map(Ze).filter(e=>typeof e.id==`string`&&e.id.length>0).sort((e,t)=>e.createdAt-t.createdAt):[],r=i.clear();r.onerror=()=>{n(r.error||Error(`Failed to clear pending shares`))},r.onsuccess=()=>{t(e)}},r.onabort=()=>{n(r.error||Error(`Pending share transaction aborted`))}})}function $e(e){let t=[`# Shared Content`,``];return e.title&&t.push(`Title: ${e.title}`),e.url&&t.push(`URL: ${e.url}`),e.text&&t.push(``,e.text),t.join(`
1
+ import{r as e}from"./config-vxIupSU4.js";import{a as t,d as n,l as r,m as i,n as a,p as o,r as s}from"./app-routes-Dp9frfan.js";import{i as c}from"./txPromise-C2iYogHX.js";import{t as l}from"./getConfig-4saf0Tkq.js";import{t as u}from"./dist-B9m1QM9v.js";import{$t as d,B as f,Cn as p,Ct as m,E as h,bt as g,c as ee,dt as te,i as ne,lt as re,s as ie,t as _,u as ae}from"./orchestrator-DuMaNh6v.js";import{o as oe}from"./tools-vVsKTc2N.js";import{t as se}from"./setConfig-DdSThoKj.js";import{t as v}from"./ulid-BY7rQVLN.js";import{a as y,r as b}from"./toast-BXgUfbyh.js";import{n as ce,r as le,t as ue}from"./constants-DiETpg52.js";import{t as de}from"./shadow-claw-element-DIrv3P6A.js";import{t as x}from"./effect-BJCrpFdp.js";import{t as fe}from"./prompt-api-OUOP-B-R.js";import{t as S}from"./configurePeerJs-DnoQjlCx.js";import{t as C}from"./file-viewer-BGDIml-f.js";import{t as pe}from"./parseConfigBoolean-ByjZr9OM.js";const w={Light:`light`,Dark:`dark`,System:`system`},T=`shadow-claw-theme`;function E(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function D(e){return e===`system`?E():e}function O(e){let t=document.documentElement;e===`dark`?(t.classList.add(`dark-mode`),t.classList.remove(`light-mode`)):(t.classList.add(`light-mode`),t.classList.remove(`dark-mode`));let n=document.querySelector(`shadow-claw`);n&&(e===`dark`?(n.classList.add(`dark-mode`),n.classList.remove(`light-mode`)):(n.classList.add(`light-mode`),n.classList.remove(`dark-mode`))),window.dispatchEvent(new CustomEvent(`shadow-claw-theme-change`,{detail:{theme:e}}))}const k=ie(T)||`system`,me=D(k);O(me);const A=new class{_resolved;_theme;constructor(){this._theme=new u.State(k),this._resolved=new u.State(me)}getTheme(){return{theme:this.theme,resolved:this.resolved}}init(){typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=E();ae(T,`system`),O(e),this._theme.set(`system`),this._resolved.set(e)}),window.addEventListener(`storage`,e=>{let t=ee(T);e.key===t&&e.newValue&&this.setTheme(e.newValue)})}get resolved(){return this._resolved.get()}setTheme(e){let t=D(e);ae(T,e),O(t),this._theme.set(e),this._resolved.set(t)}get theme(){return this._theme.get()}};A.init();async function j(e,t=3){for(let n=0;n<t;n++){if(e())return;await new Promise(e=>{requestAnimationFrame(()=>e())})}}function M(e,t){let n=e.sidebarDefaultPage,r=[n,`pages`,`chat`,`tasks`,`files`];if(!t)return n===`pages`||n===`chat`||n===`tasks`||n===`files`?n:`chat`;for(let e of r){if(e===`pages`&&!t.pagesSidebarHidden)return`pages`;if(e===`chat`&&!t.chatSidebarHidden)return`chat`;if(e===`tasks`&&!t.tasksSidebarHidden)return`tasks`;if(e===`files`&&!t.filesSidebarHidden)return`files`}return`pages`}function he(e,t,n){return n&&t===`pages`?M(e):t}function ge(e,t){if(!e||![`chat`,`tasks`,`files`].includes(t))return null;let n=e.querySelector(`[data-page-id="${t}"]`);if(!(n instanceof HTMLElement))return null;let r=n.querySelector(`shadow-claw-chat, shadow-claw-tasks, shadow-claw-files`),i=r instanceof HTMLElement?r.shadowRoot?.querySelector(`[data-terminal-slot]`):null;return i instanceof HTMLElement?i:null}function _e(e,t,n,r){let i=n;if(!i)return;let a=ge(e,t);if(!a)return;i.parentElement!==a&&a.appendChild(i);let o=!r;i.hidden=o,o?(a.setAttribute(`hidden`,`hidden`),e?.querySelector(`shadow-claw-terminal`)?.setAttribute(`hidden`,`hidden`)):(a.removeAttribute(`hidden`),e?.querySelector(`shadow-claw-terminal`)?.removeAttribute(`hidden`))}const ve={pages:()=>import(`./shadow-claw-pages-CMP6CCs0.js`),chat:()=>import(`./shadow-claw-chat-C-ULqqjn.js`),tasks:()=>import(`./shadow-claw-tasks-ewhmptQN.js`),files:()=>import(`./shadow-claw-files-BNU3b63h.js`),settings:()=>import(`./shadow-claw-settings-DbNjnFJ8.js`),tools:()=>import(`./shadow-claw-tools-CNX-9T3T.js`),channels:()=>import(`./shadow-claw-channels-IOf1W3h7.js`),terminal:()=>import(`./shadow-claw-terminal-P9RS0Kux.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-xRJ0lqj2.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-gOiW-_Bh.js`)},N=new Map;async function P(e){let t=N.get(e);if(!t){let n=ve[e];n?(t=n().then(()=>void 0),N.set(e,t)):t=Promise.resolve()}await t}function F(e,t,n,r,i){r&&P(`terminal`).catch(console.error),i!==null&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=null,_e(e,t,n,r)})}function ye(e){if(!e)return[];let t=[`shadow-claw-chat`,`shadow-claw-tasks`,`shadow-claw-files`,`shadow-claw-pages`,`shadow-claw-settings`,`shadow-claw-tools`,`shadow-claw-channels`],n=[];for(let r of t){let t=e.querySelector(r);if(!(t instanceof HTMLElement))continue;let i=t.shadowRoot?.querySelector(`shadow-claw-page-header`);i instanceof HTMLElement&&n.push(i)}return n}function I(e,t){if(e)for(let n of ye(e))n.setMainCollapsedOverride?.(t)}function L(e,t,n){if(!e)return;let r=e.querySelector(`.activity-log-toggle`);r instanceof HTMLButtonElement&&(r.hidden=t!==`chat`||n===0)}function be(e){if(!e)return null;let t=e.querySelector(`.page.active`);if(!(t instanceof HTMLElement))return null;let n=t.querySelector(`shadow-claw-chat, shadow-claw-tasks, shadow-claw-files, shadow-claw-pages, shadow-claw-settings, shadow-claw-tools, shadow-claw-channels`);if(!(n instanceof HTMLElement))return null;let r=n.shadowRoot?.querySelector(`shadow-claw-page-header`);return r instanceof HTMLElement?r:null}function R(e,t){if(!e)return;let n=e.querySelector(`.header-main-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof t==`boolean`?t:be(e)?.isMainCollapsed?.()??!1;n.setAttribute(`aria-label`,r?`Show action header`:`Hide action header`),n.setAttribute(`title`,r?`Show action header`:`Hide action header`),n.setAttribute(`aria-pressed`,String(r))}function z(e,t,n,r){if(!e)return;let i=e.querySelector(`.webvm-toggle`);if(!(i instanceof HTMLButtonElement))return;let a=t===`chat`||t===`files`;if(i.hidden=!a,i.classList.toggle(`hidden`,!a),i.classList.remove(`webvm-toggle--hidden`,`webvm-toggle--visible`,`webvm-toggle--booting`,`webvm-toggle--ready`,`webvm-toggle--error`),!a){i.classList.add(`webvm-toggle--error`);return}i.classList.add(n?`webvm-toggle--visible`:`webvm-toggle--hidden`),r.ready?i.classList.add(`webvm-toggle--ready`):(r.booting||r.bootAttempted)&&i.classList.add(`webvm-toggle--booting`),i.setAttribute(`aria-label`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`title`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`aria-pressed`,String(n))}const B={chat:`shadow-claw-chat`,tasks:`shadow-claw-tasks`,files:`shadow-claw-files`,settings:`shadow-claw-settings`,tools:`shadow-claw-tools`,channels:`shadow-claw-channels`};function V(e,t){let n=B[t];if(!n)return;let r=e.querySelector(`[data-page-id="${t}"]`);!r||r.children.length>0||r.appendChild(document.createElement(n))}function H(e,t,n,r,i,a=!0){if(!e)return;let o=he(r,i,t.pagesSidebarHidden),s=!!t.chatSplitViewEnabled&&o!==`chat`,c=e.querySelector(`.main-content`),l=e.querySelector(`.chat-split-resize-handle`);if(s){let t=B.chat;t&&customElements.get(t)?V(e,`chat`):P(`chat`).then(()=>{e&&V(e,`chat`)}).catch(console.error),c&&c.classList.add(`split-chat-active`),l&&l.removeAttribute(`hidden`)}else c&&c.classList.remove(`split-chat-active`),l&&l.setAttribute(`hidden`,`hidden`);let u=B[o];u&&customElements.get(u)?V(e,o):P(o).then(()=>{e&&V(e,o)}).catch(console.error),e.querySelectorAll(`.page`).forEach(e=>{e.classList.remove(`active`)}),e.querySelectorAll(`.nav-item`).forEach(e=>{e.classList.remove(`active`)});let d=e.querySelector(`[data-page-id="${o}"]`);d&&d.classList.add(`active`);let f=e.querySelector(`[data-page="${o}"]`);f&&f.classList.add(`active`),t.currentPage=o,a&&n&&r.setActivePage(n,o).catch(console.error),F(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame),I(e,t.headerMainCollapsedOverride),R(e,t.headerMainCollapsedOverride),L(e,t.currentPage,r.activityLog.length),z(e,t.currentPage,t.terminalVisible,t.vmStatus);let p=e.querySelector(`.page.active`);if(p){let e=p;typeof e.scrollTo==`function`&&e.scrollTo(0,0)}if(o===`chat`){let t=e.querySelector(`shadow-claw-chat`);t&&typeof t.checkPromptApiOnboarding==`function`&&t.checkPromptApiOnboarding()}if(o===`files`&&n&&r.loadFiles(n).catch(console.error),o===`pages`){let t=e.querySelector(`shadow-claw-pages`);t&&typeof t.renderSelectedPage==`function`&&(t.renderSelectedPage(),typeof t.setupAutoRefreshTimer==`function`&&t.setupAutoRefreshTimer())}}function U(e,t){if(!e||typeof e.querySelectorAll!=`function`)return;let n=t||(typeof window<`u`&&window.location?.href?new URL(window.location.href):null);if(!n)return;let r=n.pathname.replace(/\/+$/,``)||`/`;e.querySelectorAll(`[slot="sidebar"] a[href], [slot="sidebar-nav"] a[href], [slot="sidebar-content"] a[href], [slot="sidebar-footer"] a[href], .sidebar-custom-sections a[href]`).forEach(e=>{try{let t=e.getAttribute(`href`)||``;if(!t||t.startsWith(`#`)||t.startsWith(`javascript:`)||t.startsWith(`mailto:`)||t.startsWith(`tel:`))return;let i=new URL(t,n.origin);if(i.origin!==n.origin){e.classList.remove(`active`),e.removeAttribute(`aria-current`);return}(i.pathname.replace(/\/+$/,``)||`/`)===r&&(i.hash?i.hash===n.hash:!n.hash)?(e.classList.add(`active`),e.setAttribute(`aria-current`,`page`)):(e.classList.remove(`active`),e.removeAttribute(`aria-current`))}catch{}})}function xe(e){if(!e||typeof window>`u`)return()=>{};let t=()=>U(e);t(),window.addEventListener(`popstate`,t,{passive:!0});let n=window.navigation;return n&&typeof n.addEventListener==`function`&&n.addEventListener(`navigate`,t,{passive:!0}),()=>{window.removeEventListener(`popstate`,t),n&&typeof n.removeEventListener==`function`&&n.removeEventListener(`navigate`,t)}}async function W(e,t,n,r,i,a){let{page:o,groupId:s,path:c,anchor:l}=a;if(!n)return;let u=o?String(o).toLowerCase():``;if(u&&r.file&&!(u===`files`&&c&&c===r.file.path&&(!s||s===i.activeGroupId))){let t=e?.querySelector(`shadow-claw-file-viewer`);if(t&&typeof t.requestCloseViewer==`function`){if(!await t.requestCloseViewer())return}else r.closeFile()}if(s&&s!==i.activeGroupId?await i.switchConversation(n,s,u===`chat`):s&&(i.loadHistory(),(u===`tasks`||u===`files`)&&n&&i.loadFiles(n)),u&&H(e,t,n,i,u),u===`files`&&c)if(/\.[^./]+$/u.test(c))try{await r.openFile(n,c,s||i.activeGroupId),l&&await j(()=>{let t=e?.querySelector(`shadow-claw-file-viewer`);return t&&typeof t.handleAnchorNavigation==`function`?!!t.handleAnchorNavigation(l):!1})}catch(e){console.error(`Failed to open file via route navigation:`,c,e)}else try{await i.setCurrentPath(n,c),r.closeFile()}catch(e){console.error(`Failed to open folder via route navigation:`,c,e)}if(u===`pages`){if(typeof customElements<`u`&&await customElements.whenDefined(`shadow-claw-pages`),c){let e=s||i.activeGroupId||`br:main`;if(typeof i.isPageAllowed!=`function`||i.isPageAllowed(c,e))await i.setActivePinnedPage(n,{groupId:e,path:c});else{let e=i.effectiveDefaultPage||i.pages&&i.pages[0]||null;await i.setActivePinnedPage(n,e)}}else{let e=i.effectiveDefaultPage||i.pages&&i.pages[0]||null;e&&await i.setActivePinnedPage(n,e)}let t=e?.querySelector(`shadow-claw-pages`);t&&typeof t.renderSelectedPage==`function`&&(await t.renderSelectedPage(),typeof t.setupAutoRefreshTimer==`function`&&t.setupAutoRefreshTimer(),l&&await j(()=>typeof t.handleAnchorNavigation==`function`&&!!t.handleAnchorNavigation(l)))}U(t)}async function G(e,r,s,c,l,u){let d=u.pathname,f=t();f!==`/`&&d.startsWith(f)&&(d=`/`+d.slice(f.length));let p=d.split(`/`).filter(Boolean),m=p.length===0||p.length===1&&p[0]===`index.html`,h=l.defaultPinnedPage||o(ne());if(m&&h){let t={page:`pages`,groupId:h.groupId||l.activeGroupId||`br:main`,path:h.path},n=await i(t);if(n&&n!==`/`&&typeof window<`u`&&window.history){let e=a(n);window.history.replaceState(null,``,e)}await W(e,r,s,c,l,t);return}let g=await n(u,l.activeGroupId);g&&await W(e,r,s,c,l,g)}function K(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return Math.max(200,Math.min(560,t));let r=Math.max(200,n.getBoundingClientRect().width-260);return Math.max(200,Math.min(Math.min(560,r),t))}async function q(t,n){if(t)try{await se(t,e.SIDEBAR_WIDTH,n)}catch{}}function J(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return;let r=K(e,t);n.style.setProperty(`--sidebar-width`,`${r}px`)}async function Se(t,n,r,i){if(!t)return;let a=t.querySelector(`.sidebar-resize-handle`);if(!(a instanceof HTMLElement))return;a.setAttribute(`tabindex`,`0`),a.setAttribute(`role`,`separator`),a.setAttribute(`aria-orientation`,`vertical`),a.setAttribute(`aria-label`,`Resize sidebar width`);let o=()=>{let e=t.querySelector(`.app-body`);if(!(e instanceof HTMLElement))return 250;let n=parseFloat(e.style.getPropertyValue(`--sidebar-width`));return Number.isFinite(n)&&n>0?n:r.getBoundingClientRect().width||250},s=()=>{let e=Math.round(K(t,o())),n=Math.round(K(t,2**53-1));a.setAttribute(`aria-valuemin`,`200`),a.setAttribute(`aria-valuemax`,String(n)),a.setAttribute(`aria-valuenow`,String(e))};try{let n=i?await l(i,e.SIDEBAR_WIDTH):void 0;typeof n==`number`&&Number.isFinite(n)&&n>0?J(t,n):J(t,250)}catch{J(t,250)}let c=null,u=0,d=0,f=e=>{if(e.pointerId!==c)return;let n=e.clientX-u;J(t,d+n),s()},p=()=>{if(c===null)return;c=null,a.classList.remove(`active`),document.removeEventListener(`pointermove`,f);let e=t.querySelector(`.app-body`);if(e instanceof HTMLElement){let t=parseFloat(e.style.getPropertyValue(`--sidebar-width`));Number.isFinite(t)&&t>0&&i&&q(i,t)}},m=e=>{e.pointerId===c&&p()};a.addEventListener(`pointerdown`,e=>{e.pointerType===`mouse`&&e.button!==0&&e.button!==-1||window.innerWidth<896||(e.preventDefault(),c=e.pointerId,u=e.clientX,d=r.getBoundingClientRect().width,a.classList.add(`active`),a.setPointerCapture(e.pointerId),document.addEventListener(`pointermove`,f))}),a.addEventListener(`pointerup`,m),a.addEventListener(`pointercancel`,p),a.addEventListener(`dblclick`,()=>{J(t,250),i&&q(i,250),s()}),a.addEventListener(`keydown`,e=>{if(window.innerWidth<896)return;let n=e.shiftKey?32:12,r=o(),a=null;e.key===`ArrowRight`?a=r+n:e.key===`ArrowLeft`?a=r-n:e.key===`Home`?a=200:e.key===`End`&&(a=K(t,2**53-1)),a!==null&&(e.preventDefault(),J(t,a),s(),i&&q(i,K(t,o())))}),s(),n.addCleanup(()=>{p(),a.removeEventListener(`pointerup`,m),a.removeEventListener(`pointercancel`,p)})}async function Y(e,t,n){if(!t)return!1;let r=t.querySelector(`.app-dialog`),i=t.querySelector(`.app-dialog__title`),a=t.querySelector(`.app-dialog__message`),o=t.querySelector(`.app-dialog__details`),s=t.querySelector(`.app-dialog__links`),c=t.querySelector(`.app-dialog__btn--confirm`),l=t.querySelector(`.app-dialog__btn--cancel`),u=t.querySelector(`.app-dialog__countdown`);if(!r||!i||!a||!o||!s||!c||!l)return!1;r._autoCloseTimer&&=(clearInterval(r._autoCloseTimer),null),r.open&&r.close(),i.textContent=n.title,a.textContent=n.message,o.replaceChildren(),s.replaceChildren();let d=Array.isArray(n.details)?n.details:[];o.hidden=d.length===0;for(let t of d){let n=e.createElement(`li`);n.textContent=t,o.appendChild(n)}let f=Array.isArray(n.links)?n.links:[];s.hidden=f.length===0;for(let t of f){let n=e.createElement(`a`);n.className=`app-dialog__link`,n.href=t.href,n.rel=`noreferrer`,n.target=`_blank`,n.textContent=t.label,s.appendChild(n)}let p=n.mode||`confirm`,m=n.confirmLabel||(p===`info`?`OK`:`Confirm`);l.textContent=n.cancelLabel||`Cancel`,l.hidden=p===`info`;let h=null,g=()=>{h&&=(clearInterval(h),null),r._autoCloseTimer&&=null};if(typeof n.autoCloseSeconds==`number`&&n.autoCloseSeconds>0){let e=Math.max(1,Math.round(n.autoCloseSeconds));c.textContent=`${m} (${e}s)`,u&&(u.hidden=!1,u.textContent=`Auto-closing in ${e}s...`,u.setAttribute(`role`,`status`),u.setAttribute(`aria-live`,`polite`),u.setAttribute(`aria-atomic`,`true`)),h=setInterval(()=>{e--,e>0?(c.textContent=`${m} (${e}s)`,u&&(u.textContent=`Auto-closing in ${e}s...`)):(g(),r.returnValue=p===`info`?`confirm`:`cancel`,r.close(r.returnValue))},1e3),r._autoCloseTimer=h}else c.textContent=m,u&&(u.hidden=!0,u.textContent=``);return r.returnValue=``,await new Promise(e=>{let t=()=>{g(),r.removeEventListener(`close`,t),e(r.returnValue===`confirm`)};r.addEventListener(`close`,t),r.showModal()})}const Ce={pages:e.SIDEBAR_PAGES_HIDDEN,chat:e.SIDEBAR_CHAT_HIDDEN,tasks:e.SIDEBAR_TASKS_HIDDEN,files:e.SIDEBAR_FILES_HIDDEN};function X(e,t,n){if(!e)return;let r=e.querySelector(`.nav-item[data-page="${t}"]`);if(r&&(r.hidden=n,r.setAttribute(`aria-hidden`,String(n))),t===`chat`){let t=e.querySelector(`shadow-claw-conversations`);t&&(t.hidden=n,t.setAttribute(`aria-hidden`,String(n)))}}function we(e){switch(e){case`pages`:return`pagesSidebarHidden`;case`chat`:return`chatSidebarHidden`;case`tasks`:return`tasksSidebarHidden`;case`files`:return`filesSidebarHidden`}}async function Te(e,t,n,r){for(let[n,i]of Object.entries(Ce)){let a=n,o=!1;if(r)try{o=pe(await l(r,i))}catch{o=!1}let s=we(a);t[s]=o,X(e,a,o)}}function Z(e,t,n,r,i,a){switch(i){case`pages`:t.pagesSidebarHidden=a;break;case`chat`:t.chatSidebarHidden=a;break;case`tasks`:t.tasksSidebarHidden=a;break;case`files`:t.filesSidebarHidden=a;break}X(e,i,a),a&&t.currentPage===i&&H(e,t,r,n,M(n,t))}function Ee(e,t,n,r,i){Z(e,t,n,r,`pages`,i)}function De(){let e=window.navigation;return!!(e&&typeof e.addEventListener==`function`&&typeof e.navigate==`function`)}function Oe(e,t,n,r={}){let i=r.debounceMs??250,a=r.minSleepDurationMs??1e3,o=0,s=null,c=!1,l=e=>{e&&(c=!0),s!==null&&clearTimeout(s),s=setTimeout(()=>{s=null;let e=c;c=!1,n.ensureAllConnections({force:e})},i)},u=()=>{s!==null&&(clearTimeout(s),s=null),c=!1},d=()=>{if(t.visibilityState===`hidden`)o=Date.now(),u();else if(t.visibilityState===`visible`){let e=o>0&&Date.now()-o>=a;l(e)}},f=e=>{let n=!!(e&&e.persisted);l(n||t.visibilityState===`visible`)},p=()=>{t.visibilityState===`visible`&&l(!1)},m=()=>{l(!0)};return t.addEventListener(`visibilitychange`,d),e.addEventListener(`pageshow`,f),e.addEventListener(`focus`,p),e.addEventListener(`online`,m),()=>{u(),t.removeEventListener(`visibilitychange`,d),e.removeEventListener(`pageshow`,f),e.removeEventListener(`focus`,p),e.removeEventListener(`online`,m)}}function ke(e,t){if(!e)return;let n=e.querySelector(`shadow-claw-chat`);n&&typeof n.setActivityLogCollapsedOverride==`function`&&n.setActivityLogCollapsedOverride(t)}function Ae(e,t){if(!e)return;let n=e.querySelector(`.activity-log-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof globalThis.matchMedia==`function`&&!globalThis.matchMedia(`(min-width: 56rem) and (min-height: 401px)`).matches,i=typeof t==`boolean`?t:r;n.setAttribute(`aria-label`,i?`Show activity log`:`Hide activity log`),n.setAttribute(`title`,i?`Show activity log`:`Hide activity log`),n.setAttribute(`aria-pressed`,String(i))}function je(e){let t=typeof globalThis.matchMedia==`function`&&!globalThis.matchMedia(`(min-width: 56rem) and (min-height: 401px)`).matches;e.activityLogCollapsedOverride=!(typeof e.activityLogCollapsedOverride==`boolean`?e.activityLogCollapsedOverride:t),ke(e.shadowRoot,e.activityLogCollapsedOverride),Ae(e.shadowRoot,e.activityLogCollapsedOverride)}function Me(e){e.headerMainCollapsedOverride=!(typeof e.headerMainCollapsedOverride==`boolean`?e.headerMainCollapsedOverride:be(e.shadowRoot)?.isMainCollapsed?.()??!1),I(e.shadowRoot,e.headerMainCollapsedOverride),R(e.shadowRoot,e.headerMainCollapsedOverride)}function Ne(e,t){t.terminalVisible=!t.terminalVisible,z(e,t.currentPage,t.terminalVisible,t.vmStatus),F(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame)}function Pe(e,t){e===w.Dark?(t.add(`dark-mode`),t.remove(`light-mode`)):(t.add(`light-mode`),t.remove(`dark-mode`))}function Fe(e,t){if(!e)return;let n=e.querySelector(`.sun-icon`),r=e.querySelector(`.moon-icon`);n&&r&&(t===w.Dark?(n.style.display=`block`,n.removeAttribute(`hidden`),n.classList.remove(`hidden`),r.style.display=`none`,r.setAttribute(`hidden`,`hidden`),r.classList.add(`hidden`)):(n.style.display=`none`,n.setAttribute(`hidden`,`hidden`),n.classList.add(`hidden`),r.style.display=`block`,r.removeAttribute(`hidden`),r.classList.remove(`hidden`)))}function Ie(e,t,n,r,i,a,o,s,c){if(!n||!e||!t)return;n.querySelectorAll(`.nav-item[data-page]`).forEach(e=>{let r=e;r.addEventListener(`click`,()=>{let e=r.dataset.page||M(a);n.querySelectorAll(`.nav-item`).forEach(e=>e.classList.remove(`active`)),r.classList.add(`active`),setTimeout(()=>{t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:e},bubbles:!0,composed:!0}))},0)})});let l=n.getElementById(`menu-button`),u=n.querySelector(`.sidebar`);if(l&&u){l.addEventListener(`click`,()=>{u.classList.toggle(`open`)}),n.querySelectorAll(`.nav-item, .settings-btn`).forEach(t=>{t.addEventListener(`click`,()=>{e.innerWidth<896&&u.classList.remove(`open`)})}),u.addEventListener(`click`,t=>{let n=t.target;e.innerWidth<896&&n?.closest(`a, button, .nav-item, .sidebar-link, .sidebar-item`)&&u.classList.remove(`open`)}),typeof r?.addEventListener==`function`&&r.addEventListener(`click`,t=>{let n=t.target;e.innerWidth<896&&n?.closest(`[slot^="sidebar"] a, .sidebar-custom-sections a`)&&u.classList.remove(`open`)}),t.addEventListener(`click`,t=>{let n=t.composedPath();e.innerWidth<896&&u.classList.contains(`open`)&&!n.includes(u)&&!n.includes(l)&&u.classList.remove(`open`)});let a=e.matchMedia?e.matchMedia(`(min-width: 56rem)`):{matches:!1,addEventListener:()=>{},removeEventListener:()=>{}},o=e=>{e.matches&&u.classList.remove(`open`)};o(a),a.addEventListener(`change`,o),Se(n,r,u,i)}let d=n.querySelector(`[data-action="show-settings"]`);d&&d.addEventListener(`click`,()=>{t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`settings`},bubbles:!0,composed:!0}))}),n.querySelector(`.header-main-toggle`)?.addEventListener(`click`,()=>{Me(r)}),n.querySelector(`.activity-log-toggle`)?.addEventListener(`click`,()=>{je(r)}),n.addEventListener(`navigate`,e=>{let n=e.detail?.page;n&&t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:n},bubbles:!0,composed:!0}))}),n.addEventListener(`sidebar-pages-visibility-change`,e=>{Ee(n,r,a,i,!!e.detail?.hidden)}),n.addEventListener(`sidebar-chat-visibility-change`,e=>{Z(n,r,a,i,`chat`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-tasks-visibility-change`,e=>{Z(n,r,a,i,`tasks`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-files-visibility-change`,e=>{Z(n,r,a,i,`files`,!!e.detail?.hidden)}),n.addEventListener(`chat-split-view-change`,e=>{r.chatSplitViewEnabled=!!e.detail?.enabled,H(n,r,i,a,r.currentPage,!1)}),n.addEventListener(`navigate-back`,()=>t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`settings`},bubbles:!0,composed:!0})));let f=n.querySelector(`.theme-mode-toggle`);f&&f.addEventListener(`click`,()=>{let{resolved:e}=s.getTheme(),t=e===w.Dark?w.Light:w.Dark;s.setTheme(t)}),n.querySelector(`.webvm-toggle`)?.addEventListener(`click`,()=>Ne(n,r)),n.addEventListener(`shadow-claw-terminal-slot-ready`,()=>{F(n,r.currentPage,r.terminalElement,r.terminalVisible,r.terminalPlacementFrame),I(n,r.headerMainCollapsedOverride),R(n,r.headerMainCollapsedOverride)}),e.addEventListener(`resize`,()=>{r.headerMainCollapsedOverride===null&&R(n,r.headerMainCollapsedOverride)}),t.addEventListener(`shadow-claw-navigate`,r.shadowClawNav),De()?(e.navigation.addEventListener(`navigate`,r.handleNavigationApiNavigate),r.navigationListenerAttached=!0):(r.popstateListener=t=>{let s=t?.state||e.history?.state;s?.inFeedScroll||s?.scrollSpy||s?.suppressRouter||G(n,r,i,o,a,new URL(e.location.href))},e.addEventListener(`popstate`,r.popstateListener),t.addEventListener(`click`,r.fallbackClickListener),r.fallbackClickListenerAttached=!0),e.addEventListener(`shadow-claw-theme-change`,e=>{let t=e.detail.theme;Fe(n,t),Pe(t,r.classList)}),e.addEventListener(`shadow-claw-peer-error`,e=>{let r=e.detail,i=r.remotePeerId,a=r.error;Y(t,n,{mode:`info`,title:`Peer Connection Error`,message:i?`Failed to communicate with peer ${i}: ${a}`:`PeerJS error: ${a}`,confirmLabel:`Dismiss`,autoCloseSeconds:30})});let p=s.resolved;Fe(n,p),Pe(p,r.classList),r.appLifecycleCleanup&&=(r.appLifecycleCleanup(),null),r.orchestrator&&(r.appLifecycleCleanup=Oe(e,t,r.orchestrator)),xe(r)}function Le(e){if(e===void 0)return;e.documentElement.classList.remove(ce,`sc-prerender-override`);let t=e.querySelector(`shadow-claw`);t?.removeAttribute(ue),t?.removeAttribute(le)}function Re(e,t){if(!e)return;let n=t;if(n.navigationType===`reload`)return;let i=(typeof n?.destination?.getState==`function`?n.destination.getState():null)||(n.navigationType===`replace`&&typeof history<`u`?history.state:null);if(i?.inFeedScroll||i?.scrollSpy||i?.suppressRouter)return;let a=n?.destination?.url;if(typeof a!=`string`)return;let o=new URL(a);if(o.origin===window.location.origin&&r(o.pathname))return{parsedUrl:o,navigateEvent:n}}function ze(e,t){if(t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return null;let n=t.composedPath(),i=null;for(let e of n)if(e instanceof HTMLAnchorElement){i=e;break}if(!i)return null;let a=i.getAttribute(`href`)||``;return!a||a.startsWith(`javascript:`)||a.startsWith(`mailto:`)||a.startsWith(`tel:`)||i.target&&i.target!==`_self`||i.origin!==e.origin||!r(i.pathname)||i.pathname===e.pathname&&i.search===e.search&&i.hash!==e.hash?null:(t.preventDefault(),`${i.pathname}${i.search}${i.hash}`)}async function Be(e,t,n){if(!t)return null;let r=t.querySelector(`.app-prompt-dialog`),i=t.querySelector(`.app-prompt-dialog__message`),a=t.querySelector(`.app-prompt-dialog__input-area`);if(!r||!i||!a)return null;if(r.open&&r.close(),i.textContent=n.question,a.replaceChildren(),Array.isArray(n.options)&&n.options.length>0){let t=e.createElement(`select`);t.className=`app-prompt-dialog__input`,t.name=`prompt-response`;for(let r of n.options){let n=e.createElement(`option`);n.value=r,n.textContent=r,t.appendChild(n)}a.appendChild(t)}else{let t=e.createElement(`input`);t.type=`text`,t.className=`app-prompt-dialog__input`,t.name=`prompt-response`,t.placeholder=`Enter your response...`,t.autocomplete=`off`,a.appendChild(t),setTimeout(()=>t.focus(),50)}return r.returnValue=``,await new Promise(e=>{let t=()=>{if(r.removeEventListener(`close`,t),r.returnValue===`submit`){let t=a.querySelector(`[name='prompt-response']`);e(t?t.value:null)}else e(null)};r.addEventListener(`close`,t),r.showModal()})}async function Ve(e,t,n,r){let i=await Be(e,t,r);h(n.orchestrator,r.id,i)}async function He(e,t,n,r){let i=r.path,a=r.groupId||t.activeGroupId;if(!(!i||!e))for(let t=0;t<=3;t++)try{await n.openFile(e,i,a);return}catch(e){let n=e instanceof DOMException&&e.name===`NotFoundError`;if(t<3&&n){await new Promise(e=>setTimeout(e,150*(t+1)));continue}b(`Failed to open file from tool: ${e instanceof Error?e.message:String(e)}`,5e3);return}}async function Ue(e,t,n){n?.providerId===`llamafile`?await Y(e,t,te(n.reason)):n?.providerId===`transformers_js_local`?await Y(e,t,re(n.reason)):n?.providerId===`prompt_api`?await Y(e,t,fe(n.reason)):n?.providerId&&n.helpType&&await Y(e,t,p(n.providerId,n.helpType,n.reason))}async function We(e,t,n,r,i,a){if(!(!r||!a?.roomId||!a?.hostPeerId)&&await Y(e,t,{mode:`confirm`,title:`Room invitation`,message:`${a.fromAlias||a.fromPeerId} invited you to join "${a.roomName}".`,confirmLabel:`Join`,cancelLabel:`Decline`}))try{f(n.orchestrator,a.roomId,a.hostPeerId,a.roomName),await i.switchConversation(r,`room:${a.roomId}`),H(t,n,r,i,`chat`),y(`Joined room "${a.roomName}"`)}catch(e){b(`Failed to join room: ${e instanceof Error?e.message:String(e)}`,6e3)}}function Q(e,t,n){let r=n.useTrailingSlash&&!t.includes(`#`)?t.endsWith(`/`)?t:t+`/`:t;n.replace?e.replaceState({},``,r):e.pushState({},``,r)}async function Ge(e,t,n,r,i,o,c={replace:!1}){let l=a(s(o)),u=typeof window<`u`&&window.location?`${window.location.pathname}${window.location.search}${window.location.hash}`:``;if(u&&l===u){await W(e,t,n,r,i,o);return}if(De()){window.navigation.navigate(l,{history:c.replace?`replace`:`push`});return}l!==window.location.pathname&&Q(globalThis.history,l,{...c,useTrailingSlash:!1}),await W(e,t,n,r,i,o)}function Ke(e){let t=String(e||`chat`).toLowerCase();return t===`chat`||t===`files`||t===`tasks`||t===`pages`||t===`settings`||t===`tools`||t===`channels`?t:`chat`}async function qe(e,t,n,r,i,a){let o=a.detail;o&&await Ge(e,t,n,r,i,{page:Ke(String(o.page||`chat`)),groupId:o.groupId,path:o.path,anchor:o.anchor})}async function Je(e,t,n,r){await Te(e,t,n,r)}async function Ye(e,t,n,r){if(!n)return;let i=new URL(window.location?.href||`http://localhost/`),a=i.searchParams.get(`peer`);if(!a)return;let o=a.trim();if(o)try{let a=g(r),s=a.myPeerId;s||=v().toLowerCase();let c=new Set(a.trustedPeerIds);c.add(o),await S(r,n,s,Array.from(c),a.serverHost,a.serverPort,a.serverPath,a.serverSecure),a.enabled||await m(r,n,`peerjs`,!0);let l=await _.ensurePeerConversation(n,o);await _.switchConversation(n,l),H(e,t,n,_,`chat`),i.searchParams.delete(`peer`);let u=`${i.pathname}${i.search}${i.hash}`;window.history.replaceState({},``,u||`/`),y(`Connected to Peer: ${o.substring(0,8)}`)}catch(e){b(`Failed to process peer parameter: ${e instanceof Error?e.message:String(e)}`,6e3)}}const Xe=`pendingShares`;function Ze(e){return{id:typeof e?.id==`string`?e.id:``,createdAt:typeof e?.createdAt==`number`?e.createdAt:0,title:typeof e?.title==`string`?e.title:``,text:typeof e?.text==`string`?e.text:``,url:typeof e?.url==`string`?e.url:``,fileName:typeof e?.fileName==`string`?e.fileName:``,fileType:typeof e?.fileType==`string`?e.fileType:``,fileBytes:e?.fileBytes instanceof ArrayBuffer?e.fileBytes:null}}async function Qe(e){return!e||typeof e.transaction!=`function`?[]:new Promise((t,n)=>{let r;try{r=e.transaction(Xe,`readwrite`)}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`){t([]);return}n(e);return}let i=r.objectStore(Xe),a=i.getAll();a.onerror=()=>{n(a.error||Error(`Failed to read pending shares`))},a.onsuccess=()=>{let e=Array.isArray(a.result)?a.result.map(Ze).filter(e=>typeof e.id==`string`&&e.id.length>0).sort((e,t)=>e.createdAt-t.createdAt):[],r=i.clear();r.onerror=()=>{n(r.error||Error(`Failed to clear pending shares`))},r.onsuccess=()=>{t(e)}},r.onabort=()=>{n(r.error||Error(`Pending share transaction aborted`))}})}function $e(e){let t=[`# Shared Content`,``];return e.title&&t.push(`Title: ${e.title}`),e.url&&t.push(`URL: ${e.url}`),e.text&&t.push(``,e.text),t.join(`
2
2
  `).trim()+`
3
3
  `}async function et(e,t){let n=new Date,r=`Shared Files ${`${String(n.getFullYear())}-${String(n.getMonth()+1).padStart(2,`0`)}-${String(n.getDate()).padStart(2,`0`)}`}`,i=t.groups.find(e=>e.name===r);return i?(await t.switchConversation(e,i.groupId),i.groupId):(await t.createConversation(e,r)).groupId}function tt(e,t){return(e.replace(/\\/g,`/`).split(`/`).filter(Boolean).pop()||``).replace(/\s+/g,`-`).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`${t}.txt`}async function nt(e,t,n,r,i,a,o){if(!a)return;let s=await Qe(a);if(s.length!==0)try{let c=await et(a,r),l=[];for(let e=0;e<s.length;e++){let t=s[e],n=`shared-${Date.now()}-${e+1}`;if(t.fileBytes instanceof ArrayBuffer){let e=tt(t.fileName||(t.fileType===`application/pdf`?`${n}.pdf`:`${n}.bin`),n);await d(a,c,e,new Uint8Array(t.fileBytes)),l.push(e);continue}let r=tt(t.fileName||`${n}.md`,n);await oe(a,c,r,$e(t)),l.push(r)}await r.loadFiles(a),H(t,n,a,r,`files`),l.length>0&&await i.openFile(a,l[0],c),y(`Imported ${l.length} shared item${l.length===1?``:`s`}.`);let u=o;if(u.searchParams.has(`share-target`)){u.searchParams.delete(`share-target`);let t=`${u.pathname}${u.search}${u.hash}`;e.history.replaceState({},``,t||`/`)}}catch(e){b(`Failed to import shared content: ${e instanceof Error?e.message:String(e)}`,6e3)}}async function rt(e,t,n,r,i,a){if(!r)return;let o=new URL(window.location?.href||`http://localhost/`),s=(o.searchParams.get(`room`)||``).trim(),c=(o.searchParams.get(`host`)||``).trim(),l=(o.searchParams.get(`name`)||``).trim()||`Room`;if(!(!s||!c))try{let u=g(i),d=u.myPeerId;d||=v().toLowerCase();let p=new Set(u.trustedPeerIds);p.add(c),await S(i,r,d,Array.from(p),u.serverHost,u.serverPort,u.serverPath,u.serverSecure),u.enabled||await m(i,r,`peerjs`,!0),f(i,s,c,l),await a.switchConversation(r,`room:${s}`),H(t,n,r,a,`chat`),o.searchParams.delete(`room`),o.searchParams.delete(`host`),o.searchParams.delete(`name`);let h=`${o.pathname}${o.search}${o.hash}`;e.history.replaceState({},``,h||`/`),y(`Joined room "${l}"`)}catch(e){b(`Failed to join room: ${e instanceof Error?e.message:String(e)}`,6e3)}}function it(e,t,n,r){e&&(x(()=>{let t=C.file;t&&(P(`file-viewer`).then(()=>{if(e&&!e.querySelector(`shadow-claw-file-viewer`)){let t=e.querySelector(`.main-content`);if(t){let e=document.createElement(`shadow-claw-file-viewer`);e.id=`file-viewer`,t.appendChild(e)}}}).catch(console.error),t.kind===`pdf`&&P(`pdf-viewer`).catch(console.error))}),x(()=>{let e=r.state;e===`idle`&&(t.previousOrchestratorState===`thinking`||t.previousOrchestratorState===`responding`)&&y(`Response complete`,2500),t.previousOrchestratorState=e}),x(()=>{let i=r.activePage;i!==t.currentPage&&H(e,t,n,r,i,!1)}),x(()=>{r.activityLog,L(e,t.currentPage,r.activityLog.length)}))}const at=new CSSStyleSheet;at.replaceSync(`*,
4
4
  *::before,
@@ -279,6 +279,8 @@ a:hover {
279
279
  }
280
280
 
281
281
  .nav-menu {
282
+ display: var(--shadow-claw-sidebar-nav-display, flex);
283
+ flex-direction: column;
282
284
  flex: none;
283
285
  list-style: none;
284
286
  margin: 0;
@@ -180,7 +180,7 @@ import{r as e}from"./config-vxIupSU4.js";import{c as t,f as n,l as r,n as i,r as
180
180
  }
181
181
 
182
182
  .pages__rendered a {
183
- color: var(--shadow-claw-accent-primary);
183
+ color: var(--shadow-claw-link, var(--shadow-claw-accent-primary));
184
184
  }
185
185
 
186
186
  article > h1,
@@ -195,6 +195,16 @@ article > h2,
195
195
  clear: both;
196
196
  }
197
197
 
198
+ .pages__rendered :is(h1, h2, h3, h4, h5, h6) a {
199
+ color: var(--shadow-claw-text-primary, inherit);
200
+ text-decoration: none;
201
+ }
202
+
203
+ .pages__rendered :is(h1, h2, h3, h4, h5, h6) a:hover {
204
+ color: var(--shadow-claw-link-hover, inherit);
205
+ text-decoration: underline;
206
+ }
207
+
198
208
  .pages__iframe {
199
209
  background: transparent;
200
210
  border-width: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shadow-claw",
3
- "version": "1.42.2",
3
+ "version": "1.42.3",
4
4
  "type": "module",
5
5
  "license": "AGPL-3.0",
6
6
  "description": "ShadowClaw - multi-runtime AI assistant.",
@@ -277,6 +277,8 @@ a:hover {
277
277
  }
278
278
 
279
279
  .nav-menu {
280
+ display: var(--shadow-claw-sidebar-nav-display, flex);
281
+ flex-direction: column;
280
282
  flex: none;
281
283
  list-style: none;
282
284
  margin: 0;
@@ -178,7 +178,7 @@
178
178
  }
179
179
 
180
180
  .pages__rendered a {
181
- color: var(--shadow-claw-accent-primary);
181
+ color: var(--shadow-claw-link, var(--shadow-claw-accent-primary));
182
182
  }
183
183
 
184
184
  article > h1,
@@ -193,6 +193,16 @@ article > h2,
193
193
  clear: both;
194
194
  }
195
195
 
196
+ .pages__rendered :is(h1, h2, h3, h4, h5, h6) a {
197
+ color: var(--shadow-claw-text-primary, inherit);
198
+ text-decoration: none;
199
+ }
200
+
201
+ .pages__rendered :is(h1, h2, h3, h4, h5, h6) a:hover {
202
+ color: var(--shadow-claw-link-hover, inherit);
203
+ text-decoration: underline;
204
+ }
205
+
196
206
  .pages__iframe {
197
207
  background: transparent;
198
208
  border-width: 0;