shadow-claw 1.52.0 → 1.52.1
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/.well-known/mcp/server-card.json +1 -1
- package/.well-known/mcp.json +1 -1
- package/README.md +9 -9
- package/dist/cli/build/build.js +1 -1
- package/dist/cli/{chunk-DYq-orHK.js → chunk-BgTv9w0K.js} +1 -1
- package/dist/cli/{chunk-C6jii2Fl.js → chunk-d5hIhj8t.js} +1 -1
- package/dist/cli/cli.js +1 -1
- package/dist/lib/components/index.js +1 -1
- package/dist/lib/components/shadow-claw-pages.js +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/{shadow-claw-pages-kA2qa-4B.js → shadow-claw-pages-CjHS50HN.js} +2 -2
- package/dist/lib/{shadow-claw-pages-kA2qa-4B.js.map → shadow-claw-pages-CjHS50HN.js.map} +1 -1
- package/dist/public/.well-known/mcp/server-card.json +1 -1
- package/dist/public/.well-known/mcp.json +1 -1
- package/dist/public/AGENTS.md +1 -1
- package/dist/public/README.md +9 -9
- package/dist/public/docs/README.md +1 -1
- package/dist/public/docs/architecture/orchestrator.md +2 -2
- package/dist/public/docs/architecture/overview.md +3 -3
- package/dist/public/docs/architecture/worker-protocol.md +29 -29
- package/dist/public/docs/example/article/index.html +1 -1
- package/dist/public/docs/example/article.html +1 -1
- package/dist/public/docs/publishing/index.html +1 -1
- package/dist/public/docs/publishing.html +1 -1
- package/dist/public/docs/skill-creator/index.html +1 -1
- package/dist/public/docs/skill-creator.html +1 -1
- package/dist/public/docs/subsystems/local-models.md +1 -1
- package/dist/public/docs/subsystems/providers.md +11 -4
- package/dist/public/e2e/README.md +2 -2
- package/dist/public/index.html +1 -1
- package/dist/public/index.js +1 -1
- package/dist/public/llms.txt +1 -1
- package/dist/public/main/index.html +1 -1
- package/dist/public/main/memory/index.html +1 -1
- package/dist/public/main/memory.html +1 -1
- package/dist/public/main.html +1 -1
- package/dist/public/service-worker.js +1 -1
- package/dist/public/{shadow-claw-Ba2ZFE9m.js → shadow-claw-T9oPpqxT.js} +1 -1
- package/dist/public/{shadow-claw-pages-Cy6T0G9y.js → shadow-claw-pages-IW_LNEL_.js} +1 -1
- package/package.json +1 -1
- package/src/cli/build/build.test.ts +95 -0
- package/src/cli/build/build.ts +5 -1
- package/src/cli/commands/agent.test.ts +134 -0
- package/src/cli/commands/backup.test.ts +85 -0
- package/src/cli/commands/clients.test.ts +32 -0
- package/src/cli/commands/mcp.test.ts +260 -1
- package/src/cli/commands/send-file.test.ts +73 -0
- package/src/cli/commands/send.test.ts +58 -0
- package/src/cli/commands/tasks.test.ts +78 -0
- package/src/cli/commands/webrtc-listen.test.ts +74 -0
- package/src/cli/tools/assert-version-bump.test.ts +30 -1
- package/src/cli/tools/file-search-replace.test.ts +33 -1
- package/src/cli/tools/patch-service-worker-trusted-types.test.ts +24 -1
- package/src/cli/tools/touch-nojekyll.test.ts +12 -0
- package/src/cli/tools/version.test.ts +109 -5
- package/src/cli/utils/agent-core.test.ts +40 -0
- package/src/cli/utils/control-client.test.ts +239 -2
- package/src/cli/utils/load-workspace-config.test.ts +63 -0
- package/src/cli/utils/local-models.test.ts +98 -0
- package/src/cli/utils/progress-bar.test.ts +41 -2
- package/src/cli/utils/resolve-cache-dir.test.ts +61 -0
- package/src/cli/utils/resolve-project-root.test.ts +17 -0
- package/src/cli/utils/stdin.test.ts +38 -0
- package/src/cli/utils/stdio.test.ts +51 -1
- package/src/cli/utils/suppress-warnings.test.ts +9 -0
- package/src/cli/utils/webrtc-control-client.test.ts +569 -0
- package/src/common/utils/frontmatter.test.ts +117 -0
- package/src/components/common/help/providers.test.ts +67 -0
- package/src/components/common/shadow-claw-provider-model-picker/shadow-claw-provider-model-picker.test.ts +121 -0
- package/src/components/settings/shadow-claw-accounts/shadow-claw-accounts.test.ts +131 -0
- package/src/components/settings/shadow-claw-git/shadow-claw-git.test.ts +130 -0
- package/src/components/settings/shadow-claw-integrations/connection-test-auth.test.ts +12 -0
- package/src/components/settings/shadow-claw-integrations/shadow-claw-integrations.test.ts +328 -0
- package/src/components/settings/shadow-claw-llm/shadow-claw-llm.test.ts +530 -8
- package/src/components/settings/shadow-claw-mcp-remote/shadow-claw-mcp-remote.test.ts +459 -0
- package/src/components/settings/shadow-claw-networking/shadow-claw-networking.test.ts +88 -0
- package/src/components/settings/shadow-claw-notifications/shadow-claw-notifications.test.ts +92 -0
- package/src/components/settings/shadow-claw-peerjs/shadow-claw-peerjs.test.ts +127 -0
- package/src/components/settings/shadow-claw-storage/shadow-claw-storage.test.ts +173 -0
- package/src/components/settings/shadow-claw-task-server/shadow-claw-task-server.test.ts +62 -0
- package/src/components/settings/shadow-claw-webvm/shadow-claw-webvm.test.ts +104 -0
- package/src/components/shadow-claw/shadow-claw.test.ts +112 -0
- package/src/components/shadow-claw-a2ui/shadow-claw-a2ui.test.ts +109 -0
- package/src/components/shadow-claw-conversations/shadow-claw-conversations.test.ts +361 -0
- package/src/components/shadow-claw-dialog/shadow-claw-dialog.test.ts +76 -0
- package/src/components/shadow-claw-file-viewer/shadow-claw-file-viewer.test.ts +307 -0
- package/src/components/shadow-claw-files/shadow-claw-files.test.ts +398 -1
- package/src/components/shadow-claw-pages/shadow-claw-pages.test.ts +85 -0
- package/src/components/shadow-claw-pages/shadow-claw-pages.ts +2 -1
- package/src/components/shadow-claw-pdf-viewer/shadow-claw-pdf-viewer.test.ts +229 -0
- package/src/components/shadow-claw-settings/shadow-claw-settings.test.ts +233 -0
- package/src/components/shadow-claw-tasks/shadow-claw-tasks.test.ts +223 -1
- package/src/components/shadow-claw-toast/shadow-claw-toast.test.ts +79 -0
- package/src/components/shadow-claw-tools/shadow-claw-tools.test.ts +229 -1
- package/src/server/logger.test.ts +57 -0
- package/src/server/peer.test.ts +47 -0
- package/src/server/routes/gemini.test.ts +244 -0
- package/src/server/server-peer.test.ts +245 -11
- package/src/server/services/llamafile-manager.test.ts +668 -0
- package/src/share-target/pending-shares.test.ts +90 -0
- package/src/shell/fs.test.ts +125 -0
- package/src/shell/shell.test.ts +8 -0
- package/src/subsystems/git/credentials.test.ts +260 -0
- package/src/subsystems/git/git.test.ts +64 -0
- package/src/subsystems/providers/executeNativeAiTask.test.ts +78 -0
- package/src/subsystems/providers/utils/parseLocalModelToolCall.test.ts +57 -0
- package/src/worker/tools/builtin-ai/builtin-ai.test.ts +88 -0
- package/src/worker/tools/email/email.test.ts +358 -0
- package/src/worker/tools/email/utils/resolveIntegrationEmailAuth.test.ts +120 -0
- package/src/worker/tools/email/utils/resolveUniqueAttachmentPath.test.ts +80 -0
- package/src/worker/tools/fetch-file/fetch-file.test.ts +111 -0
- package/src/worker/tools/fetch-url/fetch-url.test.ts +295 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><title>ShadowClaw</title><meta charset="utf-8"><meta name="revision" content="
|
|
1
|
+
<!doctype html><html lang="en"><head><title>ShadowClaw</title><meta charset="utf-8"><meta name="revision" content="ee727e289dc89b322e1a4cc931a101e43fe4e03b" /><meta name="version" content="1.52.1" /><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><meta name="description" content="ShadowClaw - multi-runtime AI assistant." /><link rel="canonical" href="https://xt-ml.github.io/shadow-claw/"><meta property="og:title" content="ShadowClaw"><meta property="og:description" content="Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution."><meta property="og:type" content="website"><meta property="og:url" content="https://xt-ml.github.io/shadow-claw/"><meta property="og:image" content="https://xt-ml.github.io/shadow-claw/assets/icons/512.png"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="ShadowClaw"><meta name="twitter:description" content="Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution."><meta name="twitter:image" content="https://xt-ml.github.io/shadow-claw/assets/icons/512.png"><script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication","@id":"https://xt-ml.github.io/shadow-claw/#software","name":"ShadowClaw","description":"Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution.","url":"https://xt-ml.github.io/shadow-claw/","applicationCategory":"DeveloperApplication","operatingSystem":"Web, Browser, Desktop","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"author":{"@type":"Organization","name":"xt-ml","url":"https://github.com/xt-ml"},"codeRepository":"https://github.com/xt-ml/shadow-claw","license":"https://github.com/xt-ml/shadow-claw/blob/main/LICENSE"},{"@type":"WebSite","@id":"https://xt-ml.github.io/shadow-claw/#website","url":"https://xt-ml.github.io/shadow-claw/","name":"ShadowClaw","description":"Official website and live deployment of ShadowClaw multi-runtime AI assistant.","publisher":{"@type":"Organization","name":"xt-ml","url":"https://github.com/xt-ml"}},{"@type":"Organization","@id":"https://xt-ml.github.io/shadow-claw/#organization","name":"xt-ml","url":"https://github.com/xt-ml","sameAs":["https://github.com/xt-ml"]}]}</script><meta name="theme-color" content="#fff" /><meta http-equiv="origin-trial" content="A4bwm3ftxmSutme0zCvNMbjdZ4Efbdzz1x2bgmL6RSBDjHVU4Cz5Paeurxk0LO5uyNZjcyaAM+3fQFuCu0XbJwQAAAB2eyJvcmlnaW4iOiJodHRwczovL3h0LW1sLmdpdGh1Yi5pbzo0NDMiLCJmZWF0dXJlIjoiV2ViTUNQIiwiZXhwaXJ5IjoxODA2MzY0ODAwLCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ=="><base href="/shadow-claw/" /><script id="shadow-claw-site-config" type="application/json">{"$schema":"https:\u002f\u002fjson-schema.org\u002fdraft\u002f2020-12\u002fschema","site":{"title":"ShadowClaw","description":"ShadowClaw - multi-runtime AI assistant.","themeColor":"#fff"},"branding":{"siteUrl":"https:\u002f\u002fxt-ml.github.io\u002fshadow-claw\u002f","faviconPath":"assets\u002ficons\u002ffavicon.ico","appleTouchIconPath":"assets\u002ficons\u002f180.png","notFoundPath":"404.html"},"pwa":{"manifestPath":"manifest.json","themeColor":"#000000"},"assets":["assets"],"sidebar":{"pagesHidden":false,"chatHidden":false,"tasksHidden":false,"filesHidden":false,"defaultPage":"pages"},"pages":{"allowList":[],"denyList":[]},"settings":{"defaultToolsProfile":"__builtin_default"},"agent":{"defaultProvider":"transformers_js_local","defaultModel":"onnx-community\u002fgemma-4-E2B-it-ONNX"},"customElements":{"allowedElements":["block-garden","block-garden-option","block-garden-select"],"allowedDomains":["kherrick.github.io","cdn.jsdelivr.net"]},"security":{"connectSrc":["'self'","blob:","data:","https:\u002f\u002fkherrick.github.io","https:\u002f\u002fcdn.jsdelivr.net"]}}</script>
|
|
2
2
|
<script>var ShadowClawThemeInit=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);function n(){if(globalThis.trustedTypes)return;let e=/* @__PURE__ */ new Map;globalThis.trustedTypes={createPolicy:(t,n)=>{if(e.has(t))throw TypeError(`Policy with name "${t}" already exists.`);let r={createHTML:n.createHTML?e=>n.createHTML(e):void 0,createScriptURL:n.createScriptURL?e=>n.createScriptURL(e):void 0,createScript:n.createScript?e=>n.createScript(e):void 0};return e.set(t,r),r},getPolicy:t=>e.get(t)??null,isHTML:e=>typeof e==`string`||e instanceof Object&&`toString`in e,isScriptURL:e=>typeof e==`string`||e instanceof Object&&`toString`in e,isScript:e=>typeof e==`string`||e instanceof Object&&`toString`in e}}let r=`__shadowClawDefaultTrustedTypesPolicyState`,i=`default`,a=`shadowclaw-sandbox`;function o(){let e=globalThis;return e[r]||(e[r]={initialized:!1,policy:null}),e[r]}function s(){let e=o();if(e.initialized)return;let t=Reflect.get(globalThis,`trustedTypes`);if(t&&typeof t.createPolicy==`function`){e.initialized=!0;try{if(typeof t.getPolicy==`function`){let n=t.getPolicy(i);if(n){e.policy=n;return}}let n=!1;if(typeof t.getPolicyNames==`function`){let e=t.getPolicyNames();Array.isArray(e)&&e.includes(i)&&(n=!0)}if(n){if(typeof t.getPolicy==`function`){let n=t.getPolicy(a);if(n){e.policy=n;return}}e.policy=t.createPolicy(a,{createHTML:e=>e,createScriptURL:e=>e});return}e.policy=t.createPolicy(i,{createHTML:e=>e,createScriptURL:e=>e})}catch{typeof t.getPolicy==`function`&&(e.policy=t.getPolicy(i)??t.getPolicy(a)??null)}}}let c=[{id:`claude-fable-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-fable-5.1`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-fable`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-sonnet-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-opus-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-opus-4.8`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-haiku-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsPromptCaching:!0},{id:`claude-mythos-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-mythos`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`gpt-6-astra`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-6-sol`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-6-luna`,provider:`openai`,contextWindow:1e6,maxOutput:64e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-6`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`astra`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-5`,provider:`openai`,contextWindow:4e5,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-3.5-pro`,provider:`google`,contextWindow:2097152,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-3.5-flash`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-3.8-flash`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-2.5-pro`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-2.5-flash`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1}],l;function u(e){l=e}function d(e){let t=e||l;if(t)for(let e of c)t.registerModelInfo(e.id,{contextWindow:e.contextWindow,maxOutput:e.maxOutput,supportsImageInput:e.supportsImages,supportsDocumentInput:e.supportsDocuments,...e.supportsAudio!==void 0&&{supportsAudioInput:e.supportsAudio},...e.supportsVideo!==void 0&&{supportsVideoInput:e.supportsVideo},...e.supportsPromptCaching!==void 0&&{supportsPromptCaching:e.supportsPromptCaching}})}u(new class{loading=!1;models=/* @__PURE__ */ new Map;getModelInfo(e){if(!e||typeof e!=`string`)return null;let t=e.toLowerCase().trim(),n=this.models.get(t);if(n)return n;if(t.includes(`/`)){let e=t.split(`/`).pop();if(e&&this.models.has(e))return this.models.get(e)}else for(let[e,n]of this.models.entries())if(e.endsWith(`/${t}`))return n;if(t.includes(`:`)){let e=t.split(`:`)[0],n=this.getModelInfo(e);if(n)return n}return null}registerModelInfo(e,t){this.models.set(e.toLowerCase(),t)}clear(){this.models.clear()}seedStaticCatalog(){d(this)}async fetchModelInfo(e,t,n){if(e.modelsUrl){this.loading=!0;try{let r=new Headers;if(r.set(`Content-Type`,`application/json`),e.headers)for(let[t,n]of Object.entries(e.headers))r.set(t,n);if(n)for(let[e,t]of Object.entries(n))r.set(e,t);if(t&&e.apiKeyHeader){let n=e.apiKeyHeaderFormat;r.set(e.apiKeyHeader,n?n.replace(`{key}`,t):t)}let i=await fetch(e.modelsUrl,{headers:r});if(!i.ok)throw Error(`HTTP ${i.status} ${i.statusText}`);let a=await i.json(),o=Array.isArray(a.data)?a.data:Array.isArray(a.models)?a.models:[];for(let e of o){if(!e.id)continue;let t=e.context_length??e.context_window??0,n=e.max_completion_tokens||e.per_request_limits?.completion_tokens||e.top_provider?.max_completion_tokens||null,r=typeof e.supports_tools==`boolean`?e.supports_tools:typeof e.supportsTools==`boolean`?e.supportsTools:void 0,i=this.extractModalities(e,`input`),a=this.extractModalities(e,`output`),o=this.modalitiesInclude(i,`image`,`vision`),s=this.modalitiesInclude(i,`audio`,`voice`,`hearing`),c=this.modalitiesInclude(i,`video`),l=this.modalitiesInclude(i,`document`,`pdf`,`file`)||(typeof e.supports_document_input==`boolean`?e.supports_document_input:typeof e.supportsDocumentInput==`boolean`?e.supportsDocumentInput:void 0),u=e.id===`openrouter/free`||this.supportedParametersInclude(e,`image`,`vision`,`audio`,`tool`,`structured`),d=this.extractReasoning(e),f=typeof e.supports_prompt_caching==`boolean`?e.supports_prompt_caching:typeof e.supportsPromptCaching==`boolean`?e.supportsPromptCaching:this.supportedParametersInclude(e,`cache_control`,`prompt_caching`)?!0:void 0;!t&&Array.isArray(e.providers)&&e.providers.length>0&&(t=e.providers[0]?.context_length||0),this.registerModelInfo(e.id,{contextWindow:t,maxOutput:n,...r!==void 0&&{supportsTools:r},...i.length>0&&{inputModalities:i},...a.length>0&&{outputModalities:a},...o!==void 0&&{supportsImageInput:o},...s!==void 0&&{supportsAudioInput:s},...c!==void 0&&{supportsVideoInput:c},...l!==void 0&&{supportsDocumentInput:l},...d&&{reasoning:d},...u&&{routesByRequestFeatures:u},...f!==void 0&&{supportsPromptCaching:f}})}o.length>0&&console.log(`[ModelRegistry] Registered ${o.length} models for provider "${e.id}"`)}catch(t){console.error(`[ModelRegistry] Error fetching models for ${e.id}:`,t)}finally{this.loading=!1}}}extractModalities(e,t){let n=t===`input`?e.input_modalities||e.inputModalities:e.output_modalities||e.outputModalities,r=e.architecture||{},i=t===`input`?r.input_modalities||r.inputModalities:r.output_modalities||r.outputModalities,a=typeof r.modality==`string`?r.modality:``,o=this.parseArchitectureModality(a,t),s=[...this.normalizeStringArray(n),...this.normalizeStringArray(i),...o];return Array.from(new Set(s))}extractReasoning(e){let t=e?.reasoning;if(!t||typeof t!=`object`)return;let n=this.normalizeStringArray(t.supported_efforts),r=typeof t.default_effort==`string`?t.default_effort.toLowerCase():void 0,i=typeof t.default_enabled==`boolean`?t.default_enabled:void 0,a=typeof t.supports_max_tokens==`boolean`?t.supports_max_tokens:void 0,o=typeof t.mandatory==`boolean`?t.mandatory:void 0;if(n.length!==0||r!==void 0||i!==void 0||a!==void 0||o!==void 0)return{...n.length>0&&{supportedEfforts:n},...r!==void 0&&{defaultEffort:r},...i!==void 0&&{defaultEnabled:i},...a!==void 0&&{supportsMaxTokens:a},...o!==void 0&&{mandatory:o}}}modalitiesInclude(e,...t){if(e.length!==0)return t.some(t=>e.some(e=>e.includes(t)))}normalizeStringArray(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).map(e=>e.toLowerCase()):[]}parseArchitectureModality(e,t){if(!e)return[];let[n=``,r=``]=e.toLowerCase().split(`->`).map(e=>e.trim());return(t===`input`?n:r).split(/[+,/\s]+/).map(e=>e.trim()).filter(Boolean)}supportedParametersInclude(e,...t){let n=this.normalizeStringArray(e.supported_parameters||e.supportedParameters);return t.some(e=>n.some(t=>t.includes(e)))}});function f(e){return e.replace(/^\/+|\/+$/g,``)}function p(e){let t=f(e);return t.endsWith(`/index.html`)?t=t.slice(0,-11):t.endsWith(`index.html`)&&(t=t.slice(0,-10)),f(t)}function ee(e){let t=f(e),n=t.split(`/`).filter(Boolean);if(n.length===0)return null;let r=n[0].toLowerCase();if(r===`pages`){if(n.length>=3){let e=n[1];return{page:`pages`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e,path:n.slice(2).join(`/`)}}return{page:`pages`,groupId:`br:main`,path:n.slice(1).join(`/`)}}if(r===`files`){let e=n[1]||`main`;return{page:`files`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e,path:n.slice(2).join(`/`)||void 0}}if(r===`chat`){let e=n[1]||`main`;return{page:`chat`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e}}if(r===`tasks`){let e=n[1]||`main`;return{page:`tasks`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e}}return r===`main`?{page:`pages`,groupId:`br:main`,path:n.slice(1).join(`/`)}:{page:`pages`,groupId:`br:main`,path:t}}function te(){if(typeof document<`u`){let e=document.getElementById(`shadow-claw-static-routing`);if(e&&e.textContent)try{let t=JSON.parse(e.textContent);if(t&&typeof t==`object`&&t.routes)return t}catch(e){console.warn(`Failed to parse embedded static routing manifest:`,e)}}return null}function m(e,t){let n=t||te();if(!n||!n.routes)return null;let r=p(e);for(let[e,t]of Object.entries(n.routes))if(t&&t.prettyPath&&p(t.prettyPath)===r)return ee(e);return null}let h=null,ne=/* @__PURE__ */ new Set([`chat`,`files`,`tasks`,`pages`,`settings`,`tools`,`channels`]);function re(){h=null}typeof globalThis<`u`&&(globalThis.__applyBasePathCacheReset=re);function g(){let e=typeof window<`u`?window:typeof self<`u`?self:globalThis;if(e&&e.__SHADOWCLAW_DEPLOY_ID__){let t=String(e.__SHADOWCLAW_DEPLOY_ID__).trim();if(t)return t.replace(/[^a-zA-Z0-9_-]/g,`-`)}let t=globalThis.process;if(t&&t.env&&t.env.SHADOWCLAW_DEPLOY_ID){let e=String(t.env.SHADOWCLAW_DEPLOY_ID).trim();if(e)return e.replace(/[^a-zA-Z0-9_-]/g,`-`)}let n=_();return!n||n===`/`?``:n.replace(/^\/+|\/+$/g,``).replace(/[^a-zA-Z0-9_-]/g,`-`)}function _(){if(h!==null)return h;if((typeof window>`u`||globalThis.WorkerGlobalScope!==void 0&&typeof self<`u`&&self instanceof globalThis.WorkerGlobalScope)&&typeof self<`u`&&self.location){let e=(self.location.pathname||`/`).split(`/`).filter(Boolean);if(e.length<=1)return h=`/`,h;let t=e[0].toLowerCase(),n=t===`service-worker.js`||t===`sw.js`||t===`manifest.json`||t===`sitemap.xml`||t===`favicon.ico`||t===`index.html`||t===`service-worker`||t===`assets`||t===`dist`||t===`public`;if(n&&e.length===2)return h=`/`,h;if(!n)return h=`/`+e[0]+`/`,h}let e=typeof window<`u`&&window.location?window.location:typeof self<`u`&&self.location?self.location:null;if(!e)return`/`;if(typeof document<`u`&&typeof document.querySelector==`function`){let t=document.querySelector(`base[href]`);if(t){let n=t.getAttribute(`href`);if(n)try{let t=new URL(n,e.origin).pathname;return t.endsWith(`/`)||(t+=`/`),h=t,h}catch{}}}let t=e.pathname||`/`;if(t===`/`)return h=`/`,h;let n=t.split(`/`).filter(Boolean),r=n.findIndex(e=>ne.has(e.toLowerCase()));return r>=0?r===0?(h=`/`,h):(h=`/`+n.slice(0,r).join(`/`)+`/`,h):m(t)?(h=`/`,h):n.length===1&&!t.includes(`.`)?(h=`/`+n[0]+`/`,h):(h=`/`,h)}function ie(e){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`(^|\\s)@${t}\\b`,`i`)}ie(`ShadowClaw`);function ae(){let e=g();return e?`shadowclaw-${e}`:`shadowclaw`}ae();let oe={github:{providerId:`github`,name:`GitHub`,aliases:[`github`,`api.github.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`token `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://github.com/login/oauth/authorize`,tokenUrl:`https://github.com/login/oauth/access_token`,defaultScopes:[`repo`,`read:user`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},gitlab:{providerId:`gitlab`,name:`GitLab`,aliases:[`gitlab`,`gitlab.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`PRIVATE-TOKEN`,headerPrefix:``},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},tokenAuthByServiceType:{git_remote:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}}},oauth:{authorizeUrl:`https://gitlab.com/oauth/authorize`,tokenUrl:`https://gitlab.com/oauth/token`,defaultScopes:[`read_api`,`read_user`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},figma:{providerId:`figma`,name:`Figma`,aliases:[`figma`,`api.figma.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`X-Figma-Token`,headerPrefix:``},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://www.figma.com/oauth`,tokenUrl:`https://api.figma.com/v1/oauth/token`,refreshUrl:`https://api.figma.com/v1/oauth/refresh`,defaultScopes:[],usePkce:!0,clientAuthMethod:`basic_header`,scopeSeparator:`space`}},notion:{providerId:`notion`,name:`Notion`,aliases:[`notion`,`api.notion.com`,`notion.so`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://api.notion.com/v1/oauth/authorize`,tokenUrl:`https://api.notion.com/v1/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`basic_header`,scopeSeparator:`space`}},microsoft_graph:{providerId:`microsoft_graph`,name:`Microsoft Graph`,aliases:[`microsoft`,`graph.microsoft.com`,`microsoft_graph`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,defaultScopes:[`openid`,`profile`,`offline_access`,`User.Read`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},yahoo_mail:{providerId:`yahoo_mail`,name:`Yahoo Mail`,aliases:[`yahoo`,`yahoo_mail`,`mail.yahoo.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://api.login.yahoo.com/oauth2/request_auth`,tokenUrl:`https://api.login.yahoo.com/oauth2/get_token`,defaultScopes:[`mail-r`,`mail-w`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},google:{providerId:`google`,name:`Google`,aliases:[`google`,`googleapis.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,defaultScopes:[`openid`,`profile`,`email`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},atlassian:{providerId:`atlassian`,name:`Atlassian`,aliases:[`atlassian`,`api.atlassian.com`],modes:[`oauth`,`token`,`basic`],defaultMode:`basic`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`,`basic_userpass`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `},basic:{headerName:`Authorization`,headerPrefix:`Basic `}},oauth:{authorizeUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://auth.atlassian.com/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},slack:{providerId:`slack`,name:`Slack`,aliases:[`slack`,`slack.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://slack.com/oauth/v2/authorize`,tokenUrl:`https://slack.com/api/oauth.v2.access`,defaultScopes:[],usePkce:!1,clientAuthMethod:`request_body`,scopeSeparator:`comma`}},linear:{providerId:`linear`,name:`Linear`,aliases:[`linear`,`api.linear.app`,`linear.app`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://linear.app/oauth/authorize`,tokenUrl:`https://api.linear.app/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},azure_devops:{providerId:`azure_devops`,name:`Azure DevOps`,aliases:[`azure_devops`,`dev.azure.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`,`basic_userpass`,`ssh_key`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},tokenAuthByServiceType:{git_remote:{token:{headerName:`Authorization`,headerPrefix:`Basic `},oauth:{headerName:`Authorization`,headerPrefix:`Basic `}}},oauth:{authorizeUrl:`https://app.vssps.visualstudio.com/oauth2/authorize`,tokenUrl:`https://app.vssps.visualstudio.com/oauth2/token`,defaultScopes:[`vso.code`,`vso.profile`,`offline_access`],usePkce:!1,clientAuthMethod:`request_body`,scopeSeparator:`space`}},custom_mcp:{providerId:`custom_mcp`,name:`Custom MCP`,aliases:[`custom_mcp`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`mcp_remote`,`webmcp_local`],authTypes:[`none`,`token`,`oauth`,`custom_header`,`ssh_key`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://example.com/oauth/authorize`,tokenUrl:`https://example.com/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}}};Object.fromEntries(Object.values(oe).filter(e=>!!e.oauth).map(e=>{let t=e.oauth;return[e.providerId,{id:e.providerId,name:e.name,authorizeUrl:t.authorizeUrl,tokenUrl:t.tokenUrl,redirectUri:t.redirectUri,defaultScopes:t.defaultScopes,usePkce:t.usePkce,clientAuthMethod:t.clientAuthMethod,scopeSeparator:t.scopeSeparator}]})),Object.fromEntries(Object.values(oe).map(e=>[e.providerId,{providerId:e.providerId,modes:e.modes,defaultMode:e.defaultMode}])),new Promise(e=>{});
|
|
3
3
|
/*! @license DOMPurify 3.4.16 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.16/LICENSE */
|
|
4
4
|
function v(e,t){this.v=e,this.k=t}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function se(e){if(Array.isArray(e))return e}function ce(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function b(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
package/dist/public/main.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><title>ShadowClaw</title><meta charset="utf-8"><meta name="revision" content="
|
|
1
|
+
<!doctype html><html lang="en"><head><title>ShadowClaw</title><meta charset="utf-8"><meta name="revision" content="ee727e289dc89b322e1a4cc931a101e43fe4e03b" /><meta name="version" content="1.52.1" /><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><meta name="description" content="ShadowClaw - multi-runtime AI assistant." /><link rel="canonical" href="https://xt-ml.github.io/shadow-claw/"><meta property="og:title" content="ShadowClaw"><meta property="og:description" content="Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution."><meta property="og:type" content="website"><meta property="og:url" content="https://xt-ml.github.io/shadow-claw/"><meta property="og:image" content="https://xt-ml.github.io/shadow-claw/assets/icons/512.png"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="ShadowClaw"><meta name="twitter:description" content="Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution."><meta name="twitter:image" content="https://xt-ml.github.io/shadow-claw/assets/icons/512.png"><script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication","@id":"https://xt-ml.github.io/shadow-claw/#software","name":"ShadowClaw","description":"Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution.","url":"https://xt-ml.github.io/shadow-claw/","applicationCategory":"DeveloperApplication","operatingSystem":"Web, Browser, Desktop","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"author":{"@type":"Organization","name":"xt-ml","url":"https://github.com/xt-ml"},"codeRepository":"https://github.com/xt-ml/shadow-claw","license":"https://github.com/xt-ml/shadow-claw/blob/main/LICENSE"},{"@type":"WebSite","@id":"https://xt-ml.github.io/shadow-claw/#website","url":"https://xt-ml.github.io/shadow-claw/","name":"ShadowClaw","description":"Official website and live deployment of ShadowClaw multi-runtime AI assistant.","publisher":{"@type":"Organization","name":"xt-ml","url":"https://github.com/xt-ml"}},{"@type":"Organization","@id":"https://xt-ml.github.io/shadow-claw/#organization","name":"xt-ml","url":"https://github.com/xt-ml","sameAs":["https://github.com/xt-ml"]}]}</script><meta name="theme-color" content="#fff" /><meta http-equiv="origin-trial" content="A4bwm3ftxmSutme0zCvNMbjdZ4Efbdzz1x2bgmL6RSBDjHVU4Cz5Paeurxk0LO5uyNZjcyaAM+3fQFuCu0XbJwQAAAB2eyJvcmlnaW4iOiJodHRwczovL3h0LW1sLmdpdGh1Yi5pbzo0NDMiLCJmZWF0dXJlIjoiV2ViTUNQIiwiZXhwaXJ5IjoxODA2MzY0ODAwLCJpc1N1YmRvbWFpbiI6dHJ1ZSwiaXNUaGlyZFBhcnR5Ijp0cnVlfQ=="><base href="/shadow-claw/" /><script id="shadow-claw-site-config" type="application/json">{"$schema":"https:\u002f\u002fjson-schema.org\u002fdraft\u002f2020-12\u002fschema","site":{"title":"ShadowClaw","description":"ShadowClaw - multi-runtime AI assistant.","themeColor":"#fff"},"branding":{"siteUrl":"https:\u002f\u002fxt-ml.github.io\u002fshadow-claw\u002f","faviconPath":"assets\u002ficons\u002ffavicon.ico","appleTouchIconPath":"assets\u002ficons\u002f180.png","notFoundPath":"404.html"},"pwa":{"manifestPath":"manifest.json","themeColor":"#000000"},"assets":["assets"],"sidebar":{"pagesHidden":false,"chatHidden":false,"tasksHidden":false,"filesHidden":false,"defaultPage":"pages"},"pages":{"allowList":[],"denyList":[]},"settings":{"defaultToolsProfile":"__builtin_default"},"agent":{"defaultProvider":"transformers_js_local","defaultModel":"onnx-community\u002fgemma-4-E2B-it-ONNX"},"customElements":{"allowedElements":["block-garden","block-garden-option","block-garden-select"],"allowedDomains":["kherrick.github.io","cdn.jsdelivr.net"]},"security":{"connectSrc":["'self'","blob:","data:","https:\u002f\u002fkherrick.github.io","https:\u002f\u002fcdn.jsdelivr.net"]}}</script>
|
|
2
2
|
<script>var ShadowClawThemeInit=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);function n(){if(globalThis.trustedTypes)return;let e=/* @__PURE__ */ new Map;globalThis.trustedTypes={createPolicy:(t,n)=>{if(e.has(t))throw TypeError(`Policy with name "${t}" already exists.`);let r={createHTML:n.createHTML?e=>n.createHTML(e):void 0,createScriptURL:n.createScriptURL?e=>n.createScriptURL(e):void 0,createScript:n.createScript?e=>n.createScript(e):void 0};return e.set(t,r),r},getPolicy:t=>e.get(t)??null,isHTML:e=>typeof e==`string`||e instanceof Object&&`toString`in e,isScriptURL:e=>typeof e==`string`||e instanceof Object&&`toString`in e,isScript:e=>typeof e==`string`||e instanceof Object&&`toString`in e}}let r=`__shadowClawDefaultTrustedTypesPolicyState`,i=`default`,a=`shadowclaw-sandbox`;function o(){let e=globalThis;return e[r]||(e[r]={initialized:!1,policy:null}),e[r]}function s(){let e=o();if(e.initialized)return;let t=Reflect.get(globalThis,`trustedTypes`);if(t&&typeof t.createPolicy==`function`){e.initialized=!0;try{if(typeof t.getPolicy==`function`){let n=t.getPolicy(i);if(n){e.policy=n;return}}let n=!1;if(typeof t.getPolicyNames==`function`){let e=t.getPolicyNames();Array.isArray(e)&&e.includes(i)&&(n=!0)}if(n){if(typeof t.getPolicy==`function`){let n=t.getPolicy(a);if(n){e.policy=n;return}}e.policy=t.createPolicy(a,{createHTML:e=>e,createScriptURL:e=>e});return}e.policy=t.createPolicy(i,{createHTML:e=>e,createScriptURL:e=>e})}catch{typeof t.getPolicy==`function`&&(e.policy=t.getPolicy(i)??t.getPolicy(a)??null)}}}let c=[{id:`claude-fable-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-fable-5.1`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-fable`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-sonnet-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-opus-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-opus-4.8`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-haiku-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsPromptCaching:!0},{id:`claude-mythos-5`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`claude-mythos`,provider:`anthropic`,contextWindow:1e6,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!0,supportsPromptCaching:!0},{id:`gpt-6-astra`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-6-sol`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-6-luna`,provider:`openai`,contextWindow:1e6,maxOutput:64e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-6`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`astra`,provider:`openai`,contextWindow:105e4,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gpt-5`,provider:`openai`,contextWindow:4e5,maxOutput:128e3,supportsImages:!0,supportsDocuments:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-3.5-pro`,provider:`google`,contextWindow:2097152,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-3.5-flash`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-3.8-flash`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-2.5-pro`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1},{id:`gemini-2.5-flash`,provider:`google`,contextWindow:1048576,maxOutput:65536,supportsImages:!0,supportsDocuments:!0,supportsAudio:!0,supportsVideo:!0,supportsThinking:!1,supportsPromptCaching:!1}],l;function u(e){l=e}function d(e){let t=e||l;if(t)for(let e of c)t.registerModelInfo(e.id,{contextWindow:e.contextWindow,maxOutput:e.maxOutput,supportsImageInput:e.supportsImages,supportsDocumentInput:e.supportsDocuments,...e.supportsAudio!==void 0&&{supportsAudioInput:e.supportsAudio},...e.supportsVideo!==void 0&&{supportsVideoInput:e.supportsVideo},...e.supportsPromptCaching!==void 0&&{supportsPromptCaching:e.supportsPromptCaching}})}u(new class{loading=!1;models=/* @__PURE__ */ new Map;getModelInfo(e){if(!e||typeof e!=`string`)return null;let t=e.toLowerCase().trim(),n=this.models.get(t);if(n)return n;if(t.includes(`/`)){let e=t.split(`/`).pop();if(e&&this.models.has(e))return this.models.get(e)}else for(let[e,n]of this.models.entries())if(e.endsWith(`/${t}`))return n;if(t.includes(`:`)){let e=t.split(`:`)[0],n=this.getModelInfo(e);if(n)return n}return null}registerModelInfo(e,t){this.models.set(e.toLowerCase(),t)}clear(){this.models.clear()}seedStaticCatalog(){d(this)}async fetchModelInfo(e,t,n){if(e.modelsUrl){this.loading=!0;try{let r=new Headers;if(r.set(`Content-Type`,`application/json`),e.headers)for(let[t,n]of Object.entries(e.headers))r.set(t,n);if(n)for(let[e,t]of Object.entries(n))r.set(e,t);if(t&&e.apiKeyHeader){let n=e.apiKeyHeaderFormat;r.set(e.apiKeyHeader,n?n.replace(`{key}`,t):t)}let i=await fetch(e.modelsUrl,{headers:r});if(!i.ok)throw Error(`HTTP ${i.status} ${i.statusText}`);let a=await i.json(),o=Array.isArray(a.data)?a.data:Array.isArray(a.models)?a.models:[];for(let e of o){if(!e.id)continue;let t=e.context_length??e.context_window??0,n=e.max_completion_tokens||e.per_request_limits?.completion_tokens||e.top_provider?.max_completion_tokens||null,r=typeof e.supports_tools==`boolean`?e.supports_tools:typeof e.supportsTools==`boolean`?e.supportsTools:void 0,i=this.extractModalities(e,`input`),a=this.extractModalities(e,`output`),o=this.modalitiesInclude(i,`image`,`vision`),s=this.modalitiesInclude(i,`audio`,`voice`,`hearing`),c=this.modalitiesInclude(i,`video`),l=this.modalitiesInclude(i,`document`,`pdf`,`file`)||(typeof e.supports_document_input==`boolean`?e.supports_document_input:typeof e.supportsDocumentInput==`boolean`?e.supportsDocumentInput:void 0),u=e.id===`openrouter/free`||this.supportedParametersInclude(e,`image`,`vision`,`audio`,`tool`,`structured`),d=this.extractReasoning(e),f=typeof e.supports_prompt_caching==`boolean`?e.supports_prompt_caching:typeof e.supportsPromptCaching==`boolean`?e.supportsPromptCaching:this.supportedParametersInclude(e,`cache_control`,`prompt_caching`)?!0:void 0;!t&&Array.isArray(e.providers)&&e.providers.length>0&&(t=e.providers[0]?.context_length||0),this.registerModelInfo(e.id,{contextWindow:t,maxOutput:n,...r!==void 0&&{supportsTools:r},...i.length>0&&{inputModalities:i},...a.length>0&&{outputModalities:a},...o!==void 0&&{supportsImageInput:o},...s!==void 0&&{supportsAudioInput:s},...c!==void 0&&{supportsVideoInput:c},...l!==void 0&&{supportsDocumentInput:l},...d&&{reasoning:d},...u&&{routesByRequestFeatures:u},...f!==void 0&&{supportsPromptCaching:f}})}o.length>0&&console.log(`[ModelRegistry] Registered ${o.length} models for provider "${e.id}"`)}catch(t){console.error(`[ModelRegistry] Error fetching models for ${e.id}:`,t)}finally{this.loading=!1}}}extractModalities(e,t){let n=t===`input`?e.input_modalities||e.inputModalities:e.output_modalities||e.outputModalities,r=e.architecture||{},i=t===`input`?r.input_modalities||r.inputModalities:r.output_modalities||r.outputModalities,a=typeof r.modality==`string`?r.modality:``,o=this.parseArchitectureModality(a,t),s=[...this.normalizeStringArray(n),...this.normalizeStringArray(i),...o];return Array.from(new Set(s))}extractReasoning(e){let t=e?.reasoning;if(!t||typeof t!=`object`)return;let n=this.normalizeStringArray(t.supported_efforts),r=typeof t.default_effort==`string`?t.default_effort.toLowerCase():void 0,i=typeof t.default_enabled==`boolean`?t.default_enabled:void 0,a=typeof t.supports_max_tokens==`boolean`?t.supports_max_tokens:void 0,o=typeof t.mandatory==`boolean`?t.mandatory:void 0;if(n.length!==0||r!==void 0||i!==void 0||a!==void 0||o!==void 0)return{...n.length>0&&{supportedEfforts:n},...r!==void 0&&{defaultEffort:r},...i!==void 0&&{defaultEnabled:i},...a!==void 0&&{supportsMaxTokens:a},...o!==void 0&&{mandatory:o}}}modalitiesInclude(e,...t){if(e.length!==0)return t.some(t=>e.some(e=>e.includes(t)))}normalizeStringArray(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).map(e=>e.toLowerCase()):[]}parseArchitectureModality(e,t){if(!e)return[];let[n=``,r=``]=e.toLowerCase().split(`->`).map(e=>e.trim());return(t===`input`?n:r).split(/[+,/\s]+/).map(e=>e.trim()).filter(Boolean)}supportedParametersInclude(e,...t){let n=this.normalizeStringArray(e.supported_parameters||e.supportedParameters);return t.some(e=>n.some(t=>t.includes(e)))}});function f(e){return e.replace(/^\/+|\/+$/g,``)}function p(e){let t=f(e);return t.endsWith(`/index.html`)?t=t.slice(0,-11):t.endsWith(`index.html`)&&(t=t.slice(0,-10)),f(t)}function ee(e){let t=f(e),n=t.split(`/`).filter(Boolean);if(n.length===0)return null;let r=n[0].toLowerCase();if(r===`pages`){if(n.length>=3){let e=n[1];return{page:`pages`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e,path:n.slice(2).join(`/`)}}return{page:`pages`,groupId:`br:main`,path:n.slice(1).join(`/`)}}if(r===`files`){let e=n[1]||`main`;return{page:`files`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e,path:n.slice(2).join(`/`)||void 0}}if(r===`chat`){let e=n[1]||`main`;return{page:`chat`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e}}if(r===`tasks`){let e=n[1]||`main`;return{page:`tasks`,groupId:e===`main`?`br:main`:e.startsWith(`br-`)?`br:${e.slice(3)}`:e}}return r===`main`?{page:`pages`,groupId:`br:main`,path:n.slice(1).join(`/`)}:{page:`pages`,groupId:`br:main`,path:t}}function te(){if(typeof document<`u`){let e=document.getElementById(`shadow-claw-static-routing`);if(e&&e.textContent)try{let t=JSON.parse(e.textContent);if(t&&typeof t==`object`&&t.routes)return t}catch(e){console.warn(`Failed to parse embedded static routing manifest:`,e)}}return null}function m(e,t){let n=t||te();if(!n||!n.routes)return null;let r=p(e);for(let[e,t]of Object.entries(n.routes))if(t&&t.prettyPath&&p(t.prettyPath)===r)return ee(e);return null}let h=null,ne=/* @__PURE__ */ new Set([`chat`,`files`,`tasks`,`pages`,`settings`,`tools`,`channels`]);function re(){h=null}typeof globalThis<`u`&&(globalThis.__applyBasePathCacheReset=re);function g(){let e=typeof window<`u`?window:typeof self<`u`?self:globalThis;if(e&&e.__SHADOWCLAW_DEPLOY_ID__){let t=String(e.__SHADOWCLAW_DEPLOY_ID__).trim();if(t)return t.replace(/[^a-zA-Z0-9_-]/g,`-`)}let t=globalThis.process;if(t&&t.env&&t.env.SHADOWCLAW_DEPLOY_ID){let e=String(t.env.SHADOWCLAW_DEPLOY_ID).trim();if(e)return e.replace(/[^a-zA-Z0-9_-]/g,`-`)}let n=_();return!n||n===`/`?``:n.replace(/^\/+|\/+$/g,``).replace(/[^a-zA-Z0-9_-]/g,`-`)}function _(){if(h!==null)return h;if((typeof window>`u`||globalThis.WorkerGlobalScope!==void 0&&typeof self<`u`&&self instanceof globalThis.WorkerGlobalScope)&&typeof self<`u`&&self.location){let e=(self.location.pathname||`/`).split(`/`).filter(Boolean);if(e.length<=1)return h=`/`,h;let t=e[0].toLowerCase(),n=t===`service-worker.js`||t===`sw.js`||t===`manifest.json`||t===`sitemap.xml`||t===`favicon.ico`||t===`index.html`||t===`service-worker`||t===`assets`||t===`dist`||t===`public`;if(n&&e.length===2)return h=`/`,h;if(!n)return h=`/`+e[0]+`/`,h}let e=typeof window<`u`&&window.location?window.location:typeof self<`u`&&self.location?self.location:null;if(!e)return`/`;if(typeof document<`u`&&typeof document.querySelector==`function`){let t=document.querySelector(`base[href]`);if(t){let n=t.getAttribute(`href`);if(n)try{let t=new URL(n,e.origin).pathname;return t.endsWith(`/`)||(t+=`/`),h=t,h}catch{}}}let t=e.pathname||`/`;if(t===`/`)return h=`/`,h;let n=t.split(`/`).filter(Boolean),r=n.findIndex(e=>ne.has(e.toLowerCase()));return r>=0?r===0?(h=`/`,h):(h=`/`+n.slice(0,r).join(`/`)+`/`,h):m(t)?(h=`/`,h):n.length===1&&!t.includes(`.`)?(h=`/`+n[0]+`/`,h):(h=`/`,h)}function ie(e){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`(^|\\s)@${t}\\b`,`i`)}ie(`ShadowClaw`);function ae(){let e=g();return e?`shadowclaw-${e}`:`shadowclaw`}ae();let oe={github:{providerId:`github`,name:`GitHub`,aliases:[`github`,`api.github.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`token `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://github.com/login/oauth/authorize`,tokenUrl:`https://github.com/login/oauth/access_token`,defaultScopes:[`repo`,`read:user`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},gitlab:{providerId:`gitlab`,name:`GitLab`,aliases:[`gitlab`,`gitlab.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`PRIVATE-TOKEN`,headerPrefix:``},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},tokenAuthByServiceType:{git_remote:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}}},oauth:{authorizeUrl:`https://gitlab.com/oauth/authorize`,tokenUrl:`https://gitlab.com/oauth/token`,defaultScopes:[`read_api`,`read_user`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},figma:{providerId:`figma`,name:`Figma`,aliases:[`figma`,`api.figma.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`X-Figma-Token`,headerPrefix:``},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://www.figma.com/oauth`,tokenUrl:`https://api.figma.com/v1/oauth/token`,refreshUrl:`https://api.figma.com/v1/oauth/refresh`,defaultScopes:[],usePkce:!0,clientAuthMethod:`basic_header`,scopeSeparator:`space`}},notion:{providerId:`notion`,name:`Notion`,aliases:[`notion`,`api.notion.com`,`notion.so`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://api.notion.com/v1/oauth/authorize`,tokenUrl:`https://api.notion.com/v1/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`basic_header`,scopeSeparator:`space`}},microsoft_graph:{providerId:`microsoft_graph`,name:`Microsoft Graph`,aliases:[`microsoft`,`graph.microsoft.com`,`microsoft_graph`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,tokenUrl:`https://login.microsoftonline.com/common/oauth2/v2.0/token`,defaultScopes:[`openid`,`profile`,`offline_access`,`User.Read`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},yahoo_mail:{providerId:`yahoo_mail`,name:`Yahoo Mail`,aliases:[`yahoo`,`yahoo_mail`,`mail.yahoo.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://api.login.yahoo.com/oauth2/request_auth`,tokenUrl:`https://api.login.yahoo.com/oauth2/get_token`,defaultScopes:[`mail-r`,`mail-w`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},google:{providerId:`google`,name:`Google`,aliases:[`google`,`googleapis.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://accounts.google.com/o/oauth2/v2/auth`,tokenUrl:`https://oauth2.googleapis.com/token`,defaultScopes:[`openid`,`profile`,`email`],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},atlassian:{providerId:`atlassian`,name:`Atlassian`,aliases:[`atlassian`,`api.atlassian.com`],modes:[`oauth`,`token`,`basic`],defaultMode:`basic`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`,`basic_userpass`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `},basic:{headerName:`Authorization`,headerPrefix:`Basic `}},oauth:{authorizeUrl:`https://auth.atlassian.com/authorize`,tokenUrl:`https://auth.atlassian.com/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},slack:{providerId:`slack`,name:`Slack`,aliases:[`slack`,`slack.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://slack.com/oauth/v2/authorize`,tokenUrl:`https://slack.com/api/oauth.v2.access`,defaultScopes:[],usePkce:!1,clientAuthMethod:`request_body`,scopeSeparator:`comma`}},linear:{providerId:`linear`,name:`Linear`,aliases:[`linear`,`api.linear.app`,`linear.app`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`],authTypes:[`token`,`oauth`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://linear.app/oauth/authorize`,tokenUrl:`https://api.linear.app/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}},azure_devops:{providerId:`azure_devops`,name:`Azure DevOps`,aliases:[`azure_devops`,`dev.azure.com`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`http_api`,`git_remote`],authTypes:[`token`,`oauth`,`basic_userpass`,`ssh_key`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},tokenAuthByServiceType:{git_remote:{token:{headerName:`Authorization`,headerPrefix:`Basic `},oauth:{headerName:`Authorization`,headerPrefix:`Basic `}}},oauth:{authorizeUrl:`https://app.vssps.visualstudio.com/oauth2/authorize`,tokenUrl:`https://app.vssps.visualstudio.com/oauth2/token`,defaultScopes:[`vso.code`,`vso.profile`,`offline_access`],usePkce:!1,clientAuthMethod:`request_body`,scopeSeparator:`space`}},custom_mcp:{providerId:`custom_mcp`,name:`Custom MCP`,aliases:[`custom_mcp`],modes:[`oauth`,`token`],defaultMode:`oauth`,serviceTypes:[`mcp_remote`,`webmcp_local`],authTypes:[`none`,`token`,`oauth`,`custom_header`,`ssh_key`],tokenAuth:{token:{headerName:`Authorization`,headerPrefix:`Bearer `},oauth:{headerName:`Authorization`,headerPrefix:`Bearer `}},oauth:{authorizeUrl:`https://example.com/oauth/authorize`,tokenUrl:`https://example.com/oauth/token`,defaultScopes:[],usePkce:!0,clientAuthMethod:`request_body`,scopeSeparator:`space`}}};Object.fromEntries(Object.values(oe).filter(e=>!!e.oauth).map(e=>{let t=e.oauth;return[e.providerId,{id:e.providerId,name:e.name,authorizeUrl:t.authorizeUrl,tokenUrl:t.tokenUrl,redirectUri:t.redirectUri,defaultScopes:t.defaultScopes,usePkce:t.usePkce,clientAuthMethod:t.clientAuthMethod,scopeSeparator:t.scopeSeparator}]})),Object.fromEntries(Object.values(oe).map(e=>[e.providerId,{providerId:e.providerId,modes:e.modes,defaultMode:e.defaultMode}])),new Promise(e=>{});
|
|
3
3
|
/*! @license DOMPurify 3.4.16 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.16/LICENSE */
|
|
4
4
|
function v(e,t){this.v=e,this.k=t}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function se(e){if(Array.isArray(e))return e}function ce(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function b(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
@@ -36,4 +36,4 @@ const shadowClawImportScripts = (...urls) => {
|
|
|
36
36
|
|
|
37
37
|
shadowClawNativeImportScripts(...urls.map((url) => shadowClawServiceWorkerTrustedTypesPolicy.createScriptURL(url)));
|
|
38
38
|
};
|
|
39
|
-
if(!self.define){let e,s={};const a=(a,c)=>(a=new URL(a+".js",c).href,s[a]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,shadowClawImportScripts(a),s()}).then(()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e}));self.define=(c,o)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(s[i])return;let r={};const d=e=>a(e,i),n={module:{uri:i},exports:r,require:d};s[i]=Promise.all(c.map(e=>n[e]||d(e))).then(e=>(o(...e),r))}}define(["./workbox-92eae37e"],function(e){"use strict";shadowClawImportScripts("service-worker/fetch-proxy.js","service-worker/push-handler.js","service-worker/share-target.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"index.css",revision:"10c81022d769eaf356596013f6fd620e"},{url:"subsystems/channels/bindings/webrtc-datachannel/v1/index.css",revision:"84ea62c12532f5339a455f7da8e47048"},{url:"components/shadow-claw-tools/shadow-claw-tools.css",revision:"83e53f4fc50714d75f4f223c8cc1126b"},{url:"components/shadow-claw-toast/shadow-claw-toast.css",revision:"4ce2dcc1c81363147fa0a5e79474aed3"},{url:"components/shadow-claw-terminal/shadow-claw-terminal.css",revision:"34974a6d9a97832231fd931006a071d1"},{url:"components/shadow-claw-tasks/shadow-claw-tasks.css",revision:"520159be0d18dc3caad54e9e1dc1eb1b"},{url:"components/shadow-claw-settings/shadow-claw-settings.css",revision:"ad9bba0bb9beb555b3b43a90e590dfa1"},{url:"components/shadow-claw-pdf-viewer/shadow-claw-pdf-viewer.css",revision:"4c02b802e45b7e2377ecd915909ddf1c"},{url:"components/shadow-claw-pages/shadow-claw-pages.css",revision:"e36aeac18a9bf867dc30627a11773449"},{url:"components/shadow-claw-page-header/shadow-claw-page-header.css",revision:"5af6ca91ae275bdbb7f0f6bc470c83df"},{url:"components/shadow-claw-files/shadow-claw-files.css",revision:"8ea713f1228d9638039afde711505bab"},{url:"components/shadow-claw-file-viewer/shadow-claw-file-viewer.css",revision:"08101d1aefc62f51c5bff42cd468e663"},{url:"components/shadow-claw-file-viewer/highlightjs-atom-one-dark.min.css",revision:"70ec8740925f3c6615ec654090b9e2ce"},{url:"components/shadow-claw-conversations/shadow-claw-conversations.css",revision:"a941256c23d142754ea3c7e9b416f784"},{url:"components/shadow-claw-chat/shadow-claw-chat.css",revision:"b6c9d27682fce5e686696943ae1bf9b8"},{url:"components/shadow-claw-channels/shadow-claw-channels.css",revision:"431a76502c7ba3f8c83bb572f0afd71f"},{url:"components/shadow-claw-a2ui/shadow-claw-a2ui.css",revision:"d05fdf188a8295021735e601bcc5b743"},{url:"components/shadow-claw/shadow-claw.css",revision:"eccf6bd64cf5649e156ba6c676ed628f"},{url:"components/settings/shadow-claw-webvm/shadow-claw-webvm.css",revision:"f8167aff26a24125d7b9b23aee8f728a"},{url:"components/settings/shadow-claw-task-server/shadow-claw-task-server.css",revision:"f6e534a6023b143270e772c7ee6119a0"},{url:"components/settings/shadow-claw-storage/shadow-claw-storage.css",revision:"dd8009443e450b709657368a19974f09"},{url:"components/settings/shadow-claw-peerjs/shadow-claw-peerjs.css",revision:"81e589816bc4fd4da2c7d688b3db5ba9"},{url:"components/settings/shadow-claw-notifications/shadow-claw-notifications.css",revision:"32804d3923655ae18f137db78bfaccfa"},{url:"components/settings/shadow-claw-networking/shadow-claw-networking.css",revision:"f186e80f555986dc26ab392cf7c29e92"},{url:"components/settings/shadow-claw-mcp-remote/shadow-claw-mcp-remote.css",revision:"c9be041c099a1d4733ed14a87ee37bfa"},{url:"components/settings/shadow-claw-llm/shadow-claw-llm.css",revision:"8703cbfc0af3167237d71d7e3f5da4f5"},{url:"components/settings/shadow-claw-integrations/shadow-claw-integrations.css",revision:"d7b9e45ff13eecf7c6571ed755dc8358"},{url:"components/settings/shadow-claw-git/shadow-claw-git.css",revision:"eab353bd20d322d0c87a7a53e639c2a6"},{url:"components/settings/shadow-claw-control-plane/shadow-claw-control-plane.css",revision:"2cc9185fc887fb10055d9edd405bd59c"},{url:"components/settings/shadow-claw-channel-config/shadow-claw-channel-config.css",revision:"c6da4c8aa3ad1b6359e6cb7af9d5f267"},{url:"components/settings/shadow-claw-accounts/shadow-claw-accounts.css",revision:"f9a43c87ce69b7be36ad18100311c14e"},{url:"components/common/shadow-claw-provider-module-settings/shadow-claw-provider-module-settings.css",revision:"b6bbdcee11cf8fd83c411f6734e10da8"},{url:"components/common/shadow-claw-provider-model-picker/shadow-claw-provider-model-picker.css",revision:"65f56fa4a760d0207440697739be250a"},{url:"components/common/shadow-claw-page-header-action-button/shadow-claw-page-header-action-button.css",revision:"192878cb48a9bb8cf206cea1672ec390"},{url:"components/common/shadow-claw-empty-state/shadow-claw-empty-state.css",revision:"001dbd8ee37eccb2b865795cb75b32e8"},{url:"components/common/shadow-claw-card/shadow-claw-card.css",revision:"ea9fb2a5ee318103b19fdf5df14dd2ea"},{url:"components/common/shadow-claw-actions/shadow-claw-actions.css",revision:"330a4d63944580d4dc150d7c08379f26"},{url:"bindings/webrtc-datachannel/v1/index.css",revision:"8c0f3bcf62cbe9579d136150c5288ba8"},{url:"main.html",revision:"9554dd73bccc06f284d1253466e73f28"},{url:"index.html",revision:"9554dd73bccc06f284d1253466e73f28"},{url:"404.html",revision:"74bc1afc55391d3ff43b99e39de1c72f"},{url:"subsystems/channels/bindings/webrtc-datachannel/v1/index.html",revision:"7004e3d10d7fd3af2f4efa183d3d6acf"},{url:"static-main/index.html",revision:"38e716481eecfdb88c3349562d815f10"},{url:"static-main/~/docs/example/article.html",revision:"cb73f16b2098cf2e77db992b6b286805"},{url:"share/share-target.html",revision:"ea535454fa33b093d0ee59fddc6f5c02"},{url:"pages/main/index.html",revision:"38e716481eecfdb88c3349562d815f10"},{url:"pages/main/~/docs/example/article.html",revision:"cb73f16b2098cf2e77db992b6b286805"},{url:"main/memory.html",revision:"a4612f7b9ae84093100f613a28ce0cc9"},{url:"main/index.html",revision:"9554dd73bccc06f284d1253466e73f28"},{url:"main/memory/index.html",revision:"a4612f7b9ae84093100f613a28ce0cc9"},{url:"docs/skill-creator.html",revision:"6520f56b16a367775c3a10ccfa63dfcb"},{url:"docs/publishing.html",revision:"650b7a399ea61edda04ff9d2535a8fe3"},{url:"docs/skill-creator/index.html",revision:"6520f56b16a367775c3a10ccfa63dfcb"},{url:"docs/publishing/index.html",revision:"650b7a399ea61edda04ff9d2535a8fe3"},{url:"docs/example/article.html",revision:"df6e5bf2b0cc58c3eb6bd8706413128d"},{url:"docs/example/article/index.html",revision:"df6e5bf2b0cc58c3eb6bd8706413128d"},{url:"components/shadow-claw-tools/shadow-claw-tools.html",revision:"338424b2f7b6b709f5f1f0f0c0c574f5"},{url:"components/shadow-claw-toast/shadow-claw-toast.html",revision:"83ef4f69b85bc562f3e41d2038a75298"},{url:"components/shadow-claw-terminal/shadow-claw-terminal.html",revision:"d4a9d42553a49cccdabe858a1bcdfb6d"},{url:"components/shadow-claw-tasks/shadow-claw-tasks.html",revision:"26edc2deb2f958815d6b6bf51ef8b50e"},{url:"components/shadow-claw-settings/shadow-claw-settings.html",revision:"0add5010f996e0cdc30ab030109ce944"},{url:"components/shadow-claw-pdf-viewer/shadow-claw-pdf-viewer.html",revision:"8b1d69f282f194a98c9e9e7a2eb87009"},{url:"components/shadow-claw-pages/shadow-claw-pages.html",revision:"0f03cef912be6910360117da9b98f94a"},{url:"components/shadow-claw-page-header/shadow-claw-page-header.html",revision:"9dd0f64e1c4d31367923ae2e56662b5e"},{url:"components/shadow-claw-files/shadow-claw-files.html",revision:"1782998a159bb66f1154ef08df7cdde7"},{url:"components/shadow-claw-file-viewer/shadow-claw-file-viewer.html",revision:"18af06d8862149a518552cec2db2e977"},{url:"components/shadow-claw-conversations/shadow-claw-conversations.html",revision:"e1dda7d82b02568714a37db5905f8dfd"},{url:"components/shadow-claw-chat/shadow-claw-chat.html",revision:"9c932cbfb16f72cdad4a2bdbbd94d84f"},{url:"components/shadow-claw-channels/shadow-claw-channels.html",revision:"ee52d98315e62d80086d156608a94e05"},{url:"components/shadow-claw-a2ui/shadow-claw-a2ui.html",revision:"04363cb02303c1f31ad6951105e2b630"},{url:"components/shadow-claw/shadow-claw.html",revision:"71bf01d8126874182d3a446a7138ef92"},{url:"components/settings/shadow-claw-webvm/shadow-claw-webvm.html",revision:"b41ff0201055fc03963a115cbeef4de6"},{url:"components/settings/shadow-claw-task-server/shadow-claw-task-server.html",revision:"9e715d1a569b1e589834ffa77a109a95"},{url:"components/settings/shadow-claw-storage/shadow-claw-storage.html",revision:"33501ece794e35a2948ea03df57d47cc"},{url:"components/settings/shadow-claw-peerjs/shadow-claw-peerjs.html",revision:"40d51a573cfef6fda61358fc25d806b3"},{url:"components/settings/shadow-claw-notifications/shadow-claw-notifications.html",revision:"74d4d4d3f2b368d971e74cf9e600d6bf"},{url:"components/settings/shadow-claw-networking/shadow-claw-networking.html",revision:"bca46b725edc47a4ed30cb5e2ed4d8be"},{url:"components/settings/shadow-claw-mcp-remote/shadow-claw-mcp-remote.html",revision:"595f5626bd4a024572393c39aefe6155"},{url:"components/settings/shadow-claw-llm/shadow-claw-llm.html",revision:"ade76710b41d16940b49a67249c9df31"},{url:"components/settings/shadow-claw-integrations/shadow-claw-integrations.html",revision:"12a847b968869c521b6d17285211cf8a"},{url:"components/settings/shadow-claw-git/shadow-claw-git.html",revision:"7f0d55e8f5c74b30f2ee02cab5af93e3"},{url:"components/settings/shadow-claw-control-plane/shadow-claw-control-plane.html",revision:"83a363c0cc27bec61f7fc3126990b3b8"},{url:"components/settings/shadow-claw-channel-config/shadow-claw-channel-config.html",revision:"38805e60640572b4ada99d11343a64dd"},{url:"components/settings/shadow-claw-accounts/shadow-claw-accounts.html",revision:"6537ff4c3ee01a3107e8b138425812b9"},{url:"components/common/shadow-claw-provider-module-settings/shadow-claw-provider-module-settings.html",revision:"4022e66f6cd3ac15723063c394e429c2"},{url:"components/common/shadow-claw-provider-model-picker/shadow-claw-provider-model-picker.html",revision:"ce6d7fcbdaf710d498cdd650597d86c1"},{url:"components/common/shadow-claw-page-header-action-button/shadow-claw-page-header-action-button.html",revision:"89fa6723613dad5fcc9773685846a81f"},{url:"components/common/shadow-claw-empty-state/shadow-claw-empty-state.html",revision:"f1304d2789cf72435301709539f67a58"},{url:"components/common/shadow-claw-card/shadow-claw-card.html",revision:"332bf79a4dbd90356ea4982fc28f0312"},{url:"components/common/shadow-claw-actions/shadow-claw-actions.html",revision:"cbfba0838bc7cf14f38b80473e0d7cca"},{url:"bindings/webrtc-datachannel/v1/index.html",revision:"7f7ae8499f2c25e8e94409fa272f9f73"},{url:"favicon.ico",revision:"58fff7908409f246a6228529f384802e"},{url:"assets/icons/favicon.ico",revision:"58fff7908409f246a6228529f384802e"},{url:"static-routing.json",revision:"d855b98a2b62f457ec0ce85233722d9f"},{url:"static-main-manifest.json",revision:"959aaefa4960add61f4f337126c3b5c7"},{url:"manifest.json",revision:"62f8d50f4e8fd710cb66c883f94b1c48"},{url:"zip-reader-BU08nwaQ.js",revision:"e4b428c564d1b13cfce9e50df63b6725"},{url:"writer-TcdFn4dC.js",revision:"fcc174ebb6a08fc88b8b7cfe43c37cda"},{url:"writer-MZ-obNQD.js",revision:"c222ac35381ffe80f17c5afd7fa4eb9e"},{url:"writer-D7bttr0o.js",revision:"b6154ac8dc30dadae65c721e0c5bbce4"},{url:"webmcp-CkfDZfZ0.js",revision:"f905bdca64926c7151d319fc966f7118"},{url:"webllm-DmZ8TVhC.js",revision:"ff7e97614aa1ec09309f0a4a642d9113"},{url:"webllm-BHNjOhwY.js",revision:"3b7cb1a1fdeac729f5e3203baf59968b"},{url:"ulid-BSJxYh6W.js",revision:"1c6c66d8b07ff7c160e5687a73012469"},{url:"txPromise-DlzJBj9N.js",revision:"b69c6704eb51c46e093744df7fc264e0"},{url:"translator-JBQiL3u1.js",revision:"f358b0470869281fe6e099366af08a26"},{url:"translator-DqUlj32g.js",revision:"b5f8c35e7840bdab4903c83d0a65cd67"},{url:"transformers-js.worker.js",revision:"f14cd7066af4c4fa69832e9fc13a2b95"},{url:"transformers-Dy4uu3-A.js",revision:"fdfeee5cd8eaa96fb8b1939840301cc4"},{url:"transformers-BFgQvAFo.js",revision:"d11eb167abc7c5a571a638825115acf8"},{url:"tools-CHxUdGxZ.js",revision:"21618750a89323b9ad97ee68820d2c6a"},{url:"tools-C4xNCwrc.js",revision:"96fa14a5d0cd418c31ecacd0dcf17434"},{url:"tools-BpZh7hgB.js",revision:"56c3b399552f10aff21c5c35fbb14723"},{url:"toast-CtIuHprH.js",revision:"18affefda7f960f20ac82b1ecf3a5772"},{url:"theme-init.js",revision:"f55879af42966c4ed1b780df063b56ab"},{url:"syncWebMcpRegistration-XJjIlDNO.js",revision:"9b9a704a8519b7d56079d9c6b0ddcace"},{url:"summarizer-Duk_4Uqw.js",revision:"370d68614145f8bd57cfa887a5bd3eae"},{url:"summarizer-BCm8_Rvl.js",revision:"773ca1b6951519e1762f2f5bd0bf16ca"},{url:"stream-browserify-D3GBRf4E.js",revision:"884bb25e877098e06eb4ac0137c1a4c1"},{url:"shadow-claw-webvm-bZj44Did.js",revision:"5dfcac3bc26a410c5313102d559b32b6"},{url:"shadow-claw-tools-DcQroojH.js",revision:"32f6f1876cf10fe927b53ff3479c818f"},{url:"shadow-claw-toast-BmcOhMgX.js",revision:"a2e43cbdda851b0928e3dea1a157128f"},{url:"shadow-claw-terminal-C7DhrrX6.js",revision:"6a34c0aa3f3bb381a100beef717a6b63"},{url:"shadow-claw-tasks-rr6fMxAM.js",revision:"1be8767cf32bd39b434cd77509490b90"},{url:"shadow-claw-task-server-DTsbEs5z.js",revision:"9c86ca4ce5f39d01ab66a9e488080035"},{url:"shadow-claw-storage-DX_4T7KR.js",revision:"530fd10edaf82c4d2bee6e293d6b1e07"},{url:"shadow-claw-settings-DGkwt1ge.js",revision:"cfea069c58e64cfaf855ea9944bcff95"},{url:"shadow-claw-pdf-viewer-BtDKlBOs.js",revision:"cbdf87323214839fb4cf7ba4798b90e4"},{url:"shadow-claw-pages-Cy6T0G9y.js",revision:"bdbb4f404ab12a86ac1d0eee77de2fcc"},{url:"shadow-claw-page-header-action-button-Bmua3mAb.js",revision:"2e4b1fc665cfcf6a51510a08ba0a5da0"},{url:"shadow-claw-page-header-LzVgEn46.js",revision:"14bac71aca02da09e89ef93aacb9b1ab"},{url:"shadow-claw-notifications-BSxifptS.js",revision:"216d21c8a71a1a3b389148ec35d437fe"},{url:"shadow-claw-networking-B6YgtiA7.js",revision:"ec8be1074bd5e18d28191c89b74c2882"},{url:"shadow-claw-mcp-remote-nGPpFpI-.js",revision:"cb298625cc7979eebb098383062c5415"},{url:"shadow-claw-llm-Bc6tZ8kk.js",revision:"d5271e047edff2bdac34512255bc03e6"},{url:"shadow-claw-integrations-DnIr6xp-.js",revision:"01122786a377eb6ff561981fd1419c7c"},{url:"shadow-claw-git-CxGwyxim.js",revision:"1b53026fe78db2ca1e80fbba0394e07a"},{url:"shadow-claw-files-Daw6IIrJ.js",revision:"b0f2684408e9482584479cda8439249e"},{url:"shadow-claw-file-viewer-hBxTknL2.js",revision:"a5c50f08c5c846726a07264ddc3e7ee8"},{url:"shadow-claw-empty-state-CkvLk0-B.js",revision:"1ef0891c108feeab7b5ca2f38ed07abf"},{url:"shadow-claw-element-DIrv3P6A.js",revision:"740ad3d06fc485e6ab3d815d996036ee"},{url:"shadow-claw-dialog-BVGf_c3S.js",revision:"cbf332fd600c98c79156bb91e4411acb"},{url:"shadow-claw-conversations-DsQ_kxWm.js",revision:"d6eb221a070193d45c1a3cd44536634f"},{url:"shadow-claw-control-plane-BAFT06LL.js",revision:"705fc0df84ed0424f3c0fdcbfa24d0ab"},{url:"shadow-claw-chat-3TmjJA6-.js",revision:"03cb26a690d54266f49a80cae43f8c52"},{url:"shadow-claw-channels-CHGtPkfY.js",revision:"46089ca5cf277cd60f866b45e318d186"},{url:"shadow-claw-card-gJym6eBr.js",revision:"d78c86234a4a92305d63737e6edede59"},{url:"shadow-claw-accounts-BbNPiiaV.js",revision:"c266cbaef2d3f96cc7fd695a04650b05"},{url:"shadow-claw-Ba2ZFE9m.js",revision:"e01f4f312d0419d41bb8ebb82e134cde"},{url:"sha1-CNeNgEyN.js",revision:"8ca1a580a3fb02710d20974d8636051c"},{url:"sha1-C0wdnAzD.js",revision:"b122c10ffc6208c716a74d1fe6620039"},{url:"setConfig-CIdSs9rh.js",revision:"dcc810f10ecaa85289168883ac0962a9"},{url:"rolldown-runtime-DBVvNlSN.js",revision:"62cf27d39b682a8b00e71006f3e4121a"},{url:"rewriter-uyLlT3qW.js",revision:"1d707d957e14082733642fd26e8ea7db"},{url:"rewriter-qfhr2JsX.js",revision:"415e2cb96e00f14bcee131a5fcc250d9"},{url:"rewriter-BE4YVlL0.js",revision:"f42d54fd32bfe792a4759108ec0a255a"},{url:"push-client-o8g5_EOe.js",revision:"d04e5145461c424480f9cebfd34903aa"},{url:"prompt-utils-DpfOVJQv-DorZAfZa.js",revision:"8d5a0482b00cf39c6d8ba0096bbce45e"},{url:"prompt-utils-B51G5vNf-CZUBKMg0.js",revision:"b263d0b8dd70620b0f5a5833eeb95229"},{url:"prompt-api-polyfill-a8J5aUE5.js",revision:"5fb7f0adcb54563f9f9ef4b884ca91be"},{url:"prompt-api-polyfill-HC5-v61Z.js",revision:"282552ede352ecc1d97cd46c2aedc72f"},{url:"prompt-api-BWe_j3Wg.js",revision:"76bc1d1e50a36f6ba33cb3e970e3b0c8"},{url:"peerjs-DwGjY5VX.js",revision:"c9b244745c9d004146a0a2826501cb89"},{url:"pdf.worker.js",revision:"b169314e56c737213dba6418ab0b6512"},{url:"parseConfigBoolean-BaaWtf9X.js",revision:"3f683dfb99c5a4be90bad0ef097309d2"},{url:"orchestrator-C8aIHbDy.js",revision:"9ee4f4b012afb94d77c4eb598e4002a3"},{url:"orchestrator-B7MpomoG.js",revision:"991fff2abef0ec4828e672631759f75e"},{url:"openai-dPjU8dJy.js",revision:"86a106bc9d6396e0cb734554af1c5e33"},{url:"openai-Djzq2scb.js",revision:"3283a266dfd978311fec914966aef2b3"},{url:"model-ranking-DUdrFOcC.js",revision:"8ff635441b5929b4cc80a5e990ff5610"},{url:"memoryStorage-C-ao9y-j.js",revision:"11ae21510c449eb815db39b21a629dd3"},{url:"mcp-reconnect-CDRJPuoN.js",revision:"95ff9375c304f2502f805590605e4e68"},{url:"markdown-By6gdUvF.js",revision:"9c4c6adf6d341ff1a1c5c4c125257cec"},{url:"language-detector-F4bBJDTp.js",revision:"4bc20f04dfee244286f33d74b8f16b14"},{url:"language-detector-D_C_0iTS.js",revision:"49d6f7fce0b7a84ba92831bd16e1f555"},{url:"is-typed-array-BGsHBea7.js",revision:"88f21c362d5bac1a6d4e4ec40c1e2620"},{url:"initControlPlane-D2fVhRFC.js",revision:"6030073a8879c90545569660605205ea"},{url:"initControlPlane-C5D8z0Qw.js",revision:"8406b0525b93a5445ace9feb949b06d9"},{url:"initChatSplitResize-KNL9Oh7s.js",revision:"0467041d61cd8ced83d0e7a518d8bfb5"},{url:"index.js",revision:"860830be6a36c9879c5b3b141b8b426c"},{url:"iframe-storage-proxy-BOMTYygY.js",revision:"ee7c82f8ae30c7aea1825fa899b8330d"},{url:"headless-D6caaop6.js",revision:"3c33e4664193e958bdf44340d5a3dd48"},{url:"git-CC8QxlmG.js",revision:"9fb2e874232d76c2c229e2c0845c47d7"},{url:"git-Bhz4YHc8.js",revision:"8411852ba0870c25a0a157940c938827"},{url:"getGroupDir-Bj5XCflQ.js",revision:"5370c4e4a71f20057e6196d7c1f60b5a"},{url:"getConfig-DSieAlsi.js",revision:"188cec4e95a8a7b52aeee017f65e79e4"},{url:"getAllTasks-C0FzJ32l.js",revision:"ed4e7ef24319ddbda8c39fbc40836311"},{url:"gemini-RHbXXX14.js",revision:"d46f0a008d708f2a24e30237b0734cce"},{url:"firebase-DYJrKVSk.js",revision:"c633b6c6c2f8d23e4389f36e3c4004f8"},{url:"firebase-CumxwjKF.js",revision:"f5a951e569bbeac79badf61dae3d3344"},{url:"file-viewer-QkCuknFn.js",revision:"5d4acbbc8af36ecc6903cf1db1748bca"},{url:"effect-xrx5qhzv.js",revision:"dc72a08a5748f69979cf4163282e0a74"},{url:"e2e-bridge-Dbc9fCDq.js",revision:"6a8e528915be4e17f76086a41bdab6c8"},{url:"downloadGroupFile-Unq8_7D9.js",revision:"012b7d10bd87cf24cb43173b639ca633"},{url:"dist-DUCZvcI2.js",revision:"a986de8d480a0bc73a05fd973b01d170"},{url:"dist-CeFyqf9k.js",revision:"6001a0a32d32f39be4d3904d2a8b6066"},{url:"defaults-D8V885se-DpWnkQpI.js",revision:"bf2e77876a364d45bf777ada570ae62c"},{url:"custom-element-security-Td4vrRc_.js",revision:"f8c44d1b8f1415b0d73b8567f00eb1c7"},{url:"crypto-browserify-DVbGggmf.js",revision:"aeaaa8013734f255d0a368f0f5d856ca"},{url:"crypto-browserify-B2g2edTN.js",revision:"9e637812879719ebb94825acb79ffa25"},{url:"crypto-4ETeplbS.js",revision:"9160909e7dc1a429561c709bb771065d"},{url:"constants-DySRhLEI.js",revision:"c46d6e8ac41db2f3579c22980b04e89d"},{url:"constants-DiETpg52.js",revision:"c9f220286288beca5e353a2ac1b9d7a4"},{url:"connections-Bb0rBpV-.js",revision:"76e29b6171e1cc0e9cb015bada750f28"},{url:"configurePeerJs-DL-LurJY.js",revision:"041009695189595e6ae072baa9e9114e"},{url:"config-071HSho8.js",revision:"298b7ac0964ed17c479fbef361067633"},{url:"bundler-UnYfEehP.js",revision:"82fb84a2315d7534d09e3ae4a5a54310"},{url:"buffer-B98mcmH0.js",revision:"f7bb8e6e11928cb958f31ce22c1c2838"},{url:"browser-B1SoUj6D.js",revision:"7ab3be1c47af9d73a14c6cf7d268f9bb"},{url:"base-task-model-DoDooUa_-uZJ2sHFG.js",revision:"77cfc75e228b8bb0b373e53d6748e131"},{url:"base-task-model-DoDooUa_-BkFE_Qkk.js",revision:"2e50f265417f4b21433ba4bad167ba2f"},{url:"backup-controller-B6GyG4vY.js",revision:"075b28d71d1a5658834b013a47b9aa7a"},{url:"app-routes-CanH2f3S.js",revision:"87760ce69dc5d935a66bf82c53c27e83"},{url:"agent.worker.js",revision:"02fc7ed997d5bc60b29737bb675f8d36"},{url:"assets/iframe-storage-bridge.js",revision:"63df93333e520c84c9850ec0371894bd"},{url:"assets/file-viewer-preview-bridge.js",revision:"68858045b9734fc7bfb45398b0e43abb"},{url:"assets/screenshots/xt-ml.github.io_shadow-claw-template-1024x768.png",revision:"1cc2cf3bfac85210d6d47f98a25bae84"},{url:"assets/screenshots/xt-ml.github.io_shadow-claw-agent-cli-weather-1024x768.png",revision:"a7c3d784e410c3284da9c2842f16842c"},{url:"assets/screenshots/shadow-claw-screenshot-731x1045.png",revision:"f3b9e801298660c14976d22f20a0c243"},{url:"assets/screenshots/shadow-claw-screenshot-1920x1052.png",revision:"16f391d0bbc913ec5aa239c8d577c7a4"},{url:"assets/screenshots/shadow-claw-screenshot-1024x768.png",revision:"3ee54a033db17e3bf3dfb7d0a11ab4e1"},{url:"assets/screenshots/kherrick.github.io_pwgen-knowledge-hub-1024x768.png",revision:"94ace19b1968a1955661d4390f9e11f4"},{url:"assets/screenshots/kherrick.github.io_block-garden-knowledge-hub-1024x768.png",revision:"fe5531f3dde6781830c3e5a5d9a3e705"},{url:"assets/icons/96.png",revision:"f91548690416c59ceb56cdb99809b955"},{url:"assets/icons/72.png",revision:"cba8470097972bdbc5d9a06fe67bfcf2"},{url:"assets/icons/512.png",revision:"ec2a8f28b812a0c2665a04cb3c535aab"},{url:"assets/icons/48.png",revision:"29eb2f38df4d5a6385399a04d7bdef00"},{url:"assets/icons/192.png",revision:"bf98264d7a62a47542e577245a292b77"},{url:"assets/icons/180.png",revision:"69128cf857af09292bb06fac0df9938b"},{url:"assets/icons/152.png",revision:"645ae818149dc508cc6146d620120db2"},{url:"assets/icons/128.png",revision:"84678d51d243c104d0c85a4e909fd0a6"},{url:"assets/icons/1024.png",revision:"ae17c81b3b93137df1702de6a9fcdab6"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"),{allowlist:[/^\/$/,/^(?:\/[^/]+)*\/$/,/^(?:\/[^/]+)*\/(chat|files|pages|tasks|settings)(?:\/.*)?$/],denylist:[/\/assets\//,/\.(png|jpe?g|gif|webp|svg|ico|bmp|avif|mp4|webm|mp3|wav|ogg|pdf|zip|gz|tar|css|js|json|wasm)$/i]})),e.registerRoute(({url:e,sameOrigin:s})=>{if(e.pathname.startsWith("/assets/v86.9pfs/"))return!1;const a=e.hostname.toLowerCase();if("huggingface.co"===a||a.endsWith(".huggingface.co")||a.endsWith(".hf.co")||"hf.co"===a||"hf-mirror.com"===a||a.endsWith(".hf-mirror.com")||"cdnjs.cloudflare.com"===a||"esm.sh"===a||a.endsWith(".esm.sh")||"unpkg.com"===a||"cdn.jsdelivr.net"===a||a.endsWith(".jsdelivr.net")||"esm.run"===a||"openrouter.ai"===a||a.endsWith(".openrouter.ai")||"api.telegram.org"===a)return!1;if(e.pathname.startsWith("/api/control/"))return!1;const c=e.pathname.endsWith("/share/share-target.html"),o="/proxy"===e.pathname||e.pathname.startsWith("/git-proxy/")||c||e.pathname.startsWith("/push/")||e.pathname.startsWith("/schedule/")||e.pathname.startsWith("/telegram/");return(!("localhost"===a||"127.0.0.1"===a||"::1"===a||"[::1]"===a)||!o)&&("boolean"!=typeof s||s)},new e.NetworkFirst({cacheName:"shadow-claw-cache",plugins:[new e.ExpirationPlugin({maxAgeSeconds:31536e3})]}),"GET")});
|
|
39
|
+
if(!self.define){let e,s={};const a=(a,c)=>(a=new URL(a+".js",c).href,s[a]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,shadowClawImportScripts(a),s()}).then(()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e}));self.define=(c,o)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(s[i])return;let r={};const d=e=>a(e,i),n={module:{uri:i},exports:r,require:d};s[i]=Promise.all(c.map(e=>n[e]||d(e))).then(e=>(o(...e),r))}}define(["./workbox-92eae37e"],function(e){"use strict";shadowClawImportScripts("service-worker/fetch-proxy.js","service-worker/push-handler.js","service-worker/share-target.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"index.css",revision:"10c81022d769eaf356596013f6fd620e"},{url:"subsystems/channels/bindings/webrtc-datachannel/v1/index.css",revision:"84ea62c12532f5339a455f7da8e47048"},{url:"components/shadow-claw-tools/shadow-claw-tools.css",revision:"83e53f4fc50714d75f4f223c8cc1126b"},{url:"components/shadow-claw-toast/shadow-claw-toast.css",revision:"4ce2dcc1c81363147fa0a5e79474aed3"},{url:"components/shadow-claw-terminal/shadow-claw-terminal.css",revision:"34974a6d9a97832231fd931006a071d1"},{url:"components/shadow-claw-tasks/shadow-claw-tasks.css",revision:"520159be0d18dc3caad54e9e1dc1eb1b"},{url:"components/shadow-claw-settings/shadow-claw-settings.css",revision:"ad9bba0bb9beb555b3b43a90e590dfa1"},{url:"components/shadow-claw-pdf-viewer/shadow-claw-pdf-viewer.css",revision:"4c02b802e45b7e2377ecd915909ddf1c"},{url:"components/shadow-claw-pages/shadow-claw-pages.css",revision:"e36aeac18a9bf867dc30627a11773449"},{url:"components/shadow-claw-page-header/shadow-claw-page-header.css",revision:"5af6ca91ae275bdbb7f0f6bc470c83df"},{url:"components/shadow-claw-files/shadow-claw-files.css",revision:"8ea713f1228d9638039afde711505bab"},{url:"components/shadow-claw-file-viewer/shadow-claw-file-viewer.css",revision:"08101d1aefc62f51c5bff42cd468e663"},{url:"components/shadow-claw-file-viewer/highlightjs-atom-one-dark.min.css",revision:"70ec8740925f3c6615ec654090b9e2ce"},{url:"components/shadow-claw-conversations/shadow-claw-conversations.css",revision:"a941256c23d142754ea3c7e9b416f784"},{url:"components/shadow-claw-chat/shadow-claw-chat.css",revision:"b6c9d27682fce5e686696943ae1bf9b8"},{url:"components/shadow-claw-channels/shadow-claw-channels.css",revision:"431a76502c7ba3f8c83bb572f0afd71f"},{url:"components/shadow-claw-a2ui/shadow-claw-a2ui.css",revision:"d05fdf188a8295021735e601bcc5b743"},{url:"components/shadow-claw/shadow-claw.css",revision:"eccf6bd64cf5649e156ba6c676ed628f"},{url:"components/settings/shadow-claw-webvm/shadow-claw-webvm.css",revision:"f8167aff26a24125d7b9b23aee8f728a"},{url:"components/settings/shadow-claw-task-server/shadow-claw-task-server.css",revision:"f6e534a6023b143270e772c7ee6119a0"},{url:"components/settings/shadow-claw-storage/shadow-claw-storage.css",revision:"dd8009443e450b709657368a19974f09"},{url:"components/settings/shadow-claw-peerjs/shadow-claw-peerjs.css",revision:"81e589816bc4fd4da2c7d688b3db5ba9"},{url:"components/settings/shadow-claw-notifications/shadow-claw-notifications.css",revision:"32804d3923655ae18f137db78bfaccfa"},{url:"components/settings/shadow-claw-networking/shadow-claw-networking.css",revision:"f186e80f555986dc26ab392cf7c29e92"},{url:"components/settings/shadow-claw-mcp-remote/shadow-claw-mcp-remote.css",revision:"c9be041c099a1d4733ed14a87ee37bfa"},{url:"components/settings/shadow-claw-llm/shadow-claw-llm.css",revision:"8703cbfc0af3167237d71d7e3f5da4f5"},{url:"components/settings/shadow-claw-integrations/shadow-claw-integrations.css",revision:"d7b9e45ff13eecf7c6571ed755dc8358"},{url:"components/settings/shadow-claw-git/shadow-claw-git.css",revision:"eab353bd20d322d0c87a7a53e639c2a6"},{url:"components/settings/shadow-claw-control-plane/shadow-claw-control-plane.css",revision:"2cc9185fc887fb10055d9edd405bd59c"},{url:"components/settings/shadow-claw-channel-config/shadow-claw-channel-config.css",revision:"c6da4c8aa3ad1b6359e6cb7af9d5f267"},{url:"components/settings/shadow-claw-accounts/shadow-claw-accounts.css",revision:"f9a43c87ce69b7be36ad18100311c14e"},{url:"components/common/shadow-claw-provider-module-settings/shadow-claw-provider-module-settings.css",revision:"b6bbdcee11cf8fd83c411f6734e10da8"},{url:"components/common/shadow-claw-provider-model-picker/shadow-claw-provider-model-picker.css",revision:"65f56fa4a760d0207440697739be250a"},{url:"components/common/shadow-claw-page-header-action-button/shadow-claw-page-header-action-button.css",revision:"192878cb48a9bb8cf206cea1672ec390"},{url:"components/common/shadow-claw-empty-state/shadow-claw-empty-state.css",revision:"001dbd8ee37eccb2b865795cb75b32e8"},{url:"components/common/shadow-claw-card/shadow-claw-card.css",revision:"ea9fb2a5ee318103b19fdf5df14dd2ea"},{url:"components/common/shadow-claw-actions/shadow-claw-actions.css",revision:"330a4d63944580d4dc150d7c08379f26"},{url:"bindings/webrtc-datachannel/v1/index.css",revision:"8c0f3bcf62cbe9579d136150c5288ba8"},{url:"main.html",revision:"4664bac380e3e3e0650c65fdcd1406e9"},{url:"index.html",revision:"4664bac380e3e3e0650c65fdcd1406e9"},{url:"404.html",revision:"74bc1afc55391d3ff43b99e39de1c72f"},{url:"subsystems/channels/bindings/webrtc-datachannel/v1/index.html",revision:"7004e3d10d7fd3af2f4efa183d3d6acf"},{url:"static-main/index.html",revision:"38e716481eecfdb88c3349562d815f10"},{url:"static-main/~/docs/example/article.html",revision:"cb73f16b2098cf2e77db992b6b286805"},{url:"share/share-target.html",revision:"ea535454fa33b093d0ee59fddc6f5c02"},{url:"pages/main/index.html",revision:"38e716481eecfdb88c3349562d815f10"},{url:"pages/main/~/docs/example/article.html",revision:"cb73f16b2098cf2e77db992b6b286805"},{url:"main/memory.html",revision:"f92c8824dba9a2a6cc881c28fb7e6350"},{url:"main/index.html",revision:"4664bac380e3e3e0650c65fdcd1406e9"},{url:"main/memory/index.html",revision:"f92c8824dba9a2a6cc881c28fb7e6350"},{url:"docs/skill-creator.html",revision:"f3e8f95fe0c6945f2696b751538100e8"},{url:"docs/publishing.html",revision:"6496dc06e66d50db7a35285282b97803"},{url:"docs/skill-creator/index.html",revision:"f3e8f95fe0c6945f2696b751538100e8"},{url:"docs/publishing/index.html",revision:"6496dc06e66d50db7a35285282b97803"},{url:"docs/example/article.html",revision:"ab6d09a6819f4771bd87c4140bec56ed"},{url:"docs/example/article/index.html",revision:"ab6d09a6819f4771bd87c4140bec56ed"},{url:"components/shadow-claw-tools/shadow-claw-tools.html",revision:"338424b2f7b6b709f5f1f0f0c0c574f5"},{url:"components/shadow-claw-toast/shadow-claw-toast.html",revision:"83ef4f69b85bc562f3e41d2038a75298"},{url:"components/shadow-claw-terminal/shadow-claw-terminal.html",revision:"d4a9d42553a49cccdabe858a1bcdfb6d"},{url:"components/shadow-claw-tasks/shadow-claw-tasks.html",revision:"26edc2deb2f958815d6b6bf51ef8b50e"},{url:"components/shadow-claw-settings/shadow-claw-settings.html",revision:"0add5010f996e0cdc30ab030109ce944"},{url:"components/shadow-claw-pdf-viewer/shadow-claw-pdf-viewer.html",revision:"8b1d69f282f194a98c9e9e7a2eb87009"},{url:"components/shadow-claw-pages/shadow-claw-pages.html",revision:"0f03cef912be6910360117da9b98f94a"},{url:"components/shadow-claw-page-header/shadow-claw-page-header.html",revision:"9dd0f64e1c4d31367923ae2e56662b5e"},{url:"components/shadow-claw-files/shadow-claw-files.html",revision:"1782998a159bb66f1154ef08df7cdde7"},{url:"components/shadow-claw-file-viewer/shadow-claw-file-viewer.html",revision:"18af06d8862149a518552cec2db2e977"},{url:"components/shadow-claw-conversations/shadow-claw-conversations.html",revision:"e1dda7d82b02568714a37db5905f8dfd"},{url:"components/shadow-claw-chat/shadow-claw-chat.html",revision:"9c932cbfb16f72cdad4a2bdbbd94d84f"},{url:"components/shadow-claw-channels/shadow-claw-channels.html",revision:"ee52d98315e62d80086d156608a94e05"},{url:"components/shadow-claw-a2ui/shadow-claw-a2ui.html",revision:"04363cb02303c1f31ad6951105e2b630"},{url:"components/shadow-claw/shadow-claw.html",revision:"71bf01d8126874182d3a446a7138ef92"},{url:"components/settings/shadow-claw-webvm/shadow-claw-webvm.html",revision:"b41ff0201055fc03963a115cbeef4de6"},{url:"components/settings/shadow-claw-task-server/shadow-claw-task-server.html",revision:"9e715d1a569b1e589834ffa77a109a95"},{url:"components/settings/shadow-claw-storage/shadow-claw-storage.html",revision:"33501ece794e35a2948ea03df57d47cc"},{url:"components/settings/shadow-claw-peerjs/shadow-claw-peerjs.html",revision:"40d51a573cfef6fda61358fc25d806b3"},{url:"components/settings/shadow-claw-notifications/shadow-claw-notifications.html",revision:"74d4d4d3f2b368d971e74cf9e600d6bf"},{url:"components/settings/shadow-claw-networking/shadow-claw-networking.html",revision:"bca46b725edc47a4ed30cb5e2ed4d8be"},{url:"components/settings/shadow-claw-mcp-remote/shadow-claw-mcp-remote.html",revision:"595f5626bd4a024572393c39aefe6155"},{url:"components/settings/shadow-claw-llm/shadow-claw-llm.html",revision:"ade76710b41d16940b49a67249c9df31"},{url:"components/settings/shadow-claw-integrations/shadow-claw-integrations.html",revision:"12a847b968869c521b6d17285211cf8a"},{url:"components/settings/shadow-claw-git/shadow-claw-git.html",revision:"7f0d55e8f5c74b30f2ee02cab5af93e3"},{url:"components/settings/shadow-claw-control-plane/shadow-claw-control-plane.html",revision:"83a363c0cc27bec61f7fc3126990b3b8"},{url:"components/settings/shadow-claw-channel-config/shadow-claw-channel-config.html",revision:"38805e60640572b4ada99d11343a64dd"},{url:"components/settings/shadow-claw-accounts/shadow-claw-accounts.html",revision:"6537ff4c3ee01a3107e8b138425812b9"},{url:"components/common/shadow-claw-provider-module-settings/shadow-claw-provider-module-settings.html",revision:"4022e66f6cd3ac15723063c394e429c2"},{url:"components/common/shadow-claw-provider-model-picker/shadow-claw-provider-model-picker.html",revision:"ce6d7fcbdaf710d498cdd650597d86c1"},{url:"components/common/shadow-claw-page-header-action-button/shadow-claw-page-header-action-button.html",revision:"89fa6723613dad5fcc9773685846a81f"},{url:"components/common/shadow-claw-empty-state/shadow-claw-empty-state.html",revision:"f1304d2789cf72435301709539f67a58"},{url:"components/common/shadow-claw-card/shadow-claw-card.html",revision:"332bf79a4dbd90356ea4982fc28f0312"},{url:"components/common/shadow-claw-actions/shadow-claw-actions.html",revision:"cbfba0838bc7cf14f38b80473e0d7cca"},{url:"bindings/webrtc-datachannel/v1/index.html",revision:"7f7ae8499f2c25e8e94409fa272f9f73"},{url:"favicon.ico",revision:"58fff7908409f246a6228529f384802e"},{url:"assets/icons/favicon.ico",revision:"58fff7908409f246a6228529f384802e"},{url:"static-routing.json",revision:"d855b98a2b62f457ec0ce85233722d9f"},{url:"static-main-manifest.json",revision:"959aaefa4960add61f4f337126c3b5c7"},{url:"manifest.json",revision:"62f8d50f4e8fd710cb66c883f94b1c48"},{url:"zip-reader-BU08nwaQ.js",revision:"e4b428c564d1b13cfce9e50df63b6725"},{url:"writer-TcdFn4dC.js",revision:"fcc174ebb6a08fc88b8b7cfe43c37cda"},{url:"writer-MZ-obNQD.js",revision:"c222ac35381ffe80f17c5afd7fa4eb9e"},{url:"writer-D7bttr0o.js",revision:"b6154ac8dc30dadae65c721e0c5bbce4"},{url:"webmcp-CkfDZfZ0.js",revision:"f905bdca64926c7151d319fc966f7118"},{url:"webllm-DmZ8TVhC.js",revision:"ff7e97614aa1ec09309f0a4a642d9113"},{url:"webllm-BHNjOhwY.js",revision:"3b7cb1a1fdeac729f5e3203baf59968b"},{url:"ulid-BSJxYh6W.js",revision:"1c6c66d8b07ff7c160e5687a73012469"},{url:"txPromise-DlzJBj9N.js",revision:"b69c6704eb51c46e093744df7fc264e0"},{url:"translator-JBQiL3u1.js",revision:"f358b0470869281fe6e099366af08a26"},{url:"translator-DqUlj32g.js",revision:"b5f8c35e7840bdab4903c83d0a65cd67"},{url:"transformers-js.worker.js",revision:"f14cd7066af4c4fa69832e9fc13a2b95"},{url:"transformers-Dy4uu3-A.js",revision:"fdfeee5cd8eaa96fb8b1939840301cc4"},{url:"transformers-BFgQvAFo.js",revision:"d11eb167abc7c5a571a638825115acf8"},{url:"tools-CHxUdGxZ.js",revision:"21618750a89323b9ad97ee68820d2c6a"},{url:"tools-C4xNCwrc.js",revision:"96fa14a5d0cd418c31ecacd0dcf17434"},{url:"tools-BpZh7hgB.js",revision:"56c3b399552f10aff21c5c35fbb14723"},{url:"toast-CtIuHprH.js",revision:"18affefda7f960f20ac82b1ecf3a5772"},{url:"theme-init.js",revision:"f55879af42966c4ed1b780df063b56ab"},{url:"syncWebMcpRegistration-XJjIlDNO.js",revision:"9b9a704a8519b7d56079d9c6b0ddcace"},{url:"summarizer-Duk_4Uqw.js",revision:"370d68614145f8bd57cfa887a5bd3eae"},{url:"summarizer-BCm8_Rvl.js",revision:"773ca1b6951519e1762f2f5bd0bf16ca"},{url:"stream-browserify-D3GBRf4E.js",revision:"884bb25e877098e06eb4ac0137c1a4c1"},{url:"shadow-claw-webvm-bZj44Did.js",revision:"5dfcac3bc26a410c5313102d559b32b6"},{url:"shadow-claw-tools-DcQroojH.js",revision:"32f6f1876cf10fe927b53ff3479c818f"},{url:"shadow-claw-toast-BmcOhMgX.js",revision:"a2e43cbdda851b0928e3dea1a157128f"},{url:"shadow-claw-terminal-C7DhrrX6.js",revision:"6a34c0aa3f3bb381a100beef717a6b63"},{url:"shadow-claw-tasks-rr6fMxAM.js",revision:"1be8767cf32bd39b434cd77509490b90"},{url:"shadow-claw-task-server-DTsbEs5z.js",revision:"9c86ca4ce5f39d01ab66a9e488080035"},{url:"shadow-claw-storage-DX_4T7KR.js",revision:"530fd10edaf82c4d2bee6e293d6b1e07"},{url:"shadow-claw-settings-DGkwt1ge.js",revision:"cfea069c58e64cfaf855ea9944bcff95"},{url:"shadow-claw-pdf-viewer-BtDKlBOs.js",revision:"cbdf87323214839fb4cf7ba4798b90e4"},{url:"shadow-claw-pages-IW_LNEL_.js",revision:"132e233b1c44d448d7ac40fa262842db"},{url:"shadow-claw-page-header-action-button-Bmua3mAb.js",revision:"2e4b1fc665cfcf6a51510a08ba0a5da0"},{url:"shadow-claw-page-header-LzVgEn46.js",revision:"14bac71aca02da09e89ef93aacb9b1ab"},{url:"shadow-claw-notifications-BSxifptS.js",revision:"216d21c8a71a1a3b389148ec35d437fe"},{url:"shadow-claw-networking-B6YgtiA7.js",revision:"ec8be1074bd5e18d28191c89b74c2882"},{url:"shadow-claw-mcp-remote-nGPpFpI-.js",revision:"cb298625cc7979eebb098383062c5415"},{url:"shadow-claw-llm-Bc6tZ8kk.js",revision:"d5271e047edff2bdac34512255bc03e6"},{url:"shadow-claw-integrations-DnIr6xp-.js",revision:"01122786a377eb6ff561981fd1419c7c"},{url:"shadow-claw-git-CxGwyxim.js",revision:"1b53026fe78db2ca1e80fbba0394e07a"},{url:"shadow-claw-files-Daw6IIrJ.js",revision:"b0f2684408e9482584479cda8439249e"},{url:"shadow-claw-file-viewer-hBxTknL2.js",revision:"a5c50f08c5c846726a07264ddc3e7ee8"},{url:"shadow-claw-empty-state-CkvLk0-B.js",revision:"1ef0891c108feeab7b5ca2f38ed07abf"},{url:"shadow-claw-element-DIrv3P6A.js",revision:"740ad3d06fc485e6ab3d815d996036ee"},{url:"shadow-claw-dialog-BVGf_c3S.js",revision:"cbf332fd600c98c79156bb91e4411acb"},{url:"shadow-claw-conversations-DsQ_kxWm.js",revision:"d6eb221a070193d45c1a3cd44536634f"},{url:"shadow-claw-control-plane-BAFT06LL.js",revision:"705fc0df84ed0424f3c0fdcbfa24d0ab"},{url:"shadow-claw-chat-3TmjJA6-.js",revision:"03cb26a690d54266f49a80cae43f8c52"},{url:"shadow-claw-channels-CHGtPkfY.js",revision:"46089ca5cf277cd60f866b45e318d186"},{url:"shadow-claw-card-gJym6eBr.js",revision:"d78c86234a4a92305d63737e6edede59"},{url:"shadow-claw-accounts-BbNPiiaV.js",revision:"c266cbaef2d3f96cc7fd695a04650b05"},{url:"shadow-claw-T9oPpqxT.js",revision:"52a2885c2c2817020a1f2effcd95a43f"},{url:"sha1-CNeNgEyN.js",revision:"8ca1a580a3fb02710d20974d8636051c"},{url:"sha1-C0wdnAzD.js",revision:"b122c10ffc6208c716a74d1fe6620039"},{url:"setConfig-CIdSs9rh.js",revision:"dcc810f10ecaa85289168883ac0962a9"},{url:"rolldown-runtime-DBVvNlSN.js",revision:"62cf27d39b682a8b00e71006f3e4121a"},{url:"rewriter-uyLlT3qW.js",revision:"1d707d957e14082733642fd26e8ea7db"},{url:"rewriter-qfhr2JsX.js",revision:"415e2cb96e00f14bcee131a5fcc250d9"},{url:"rewriter-BE4YVlL0.js",revision:"f42d54fd32bfe792a4759108ec0a255a"},{url:"push-client-o8g5_EOe.js",revision:"d04e5145461c424480f9cebfd34903aa"},{url:"prompt-utils-DpfOVJQv-DorZAfZa.js",revision:"8d5a0482b00cf39c6d8ba0096bbce45e"},{url:"prompt-utils-B51G5vNf-CZUBKMg0.js",revision:"b263d0b8dd70620b0f5a5833eeb95229"},{url:"prompt-api-polyfill-a8J5aUE5.js",revision:"5fb7f0adcb54563f9f9ef4b884ca91be"},{url:"prompt-api-polyfill-HC5-v61Z.js",revision:"282552ede352ecc1d97cd46c2aedc72f"},{url:"prompt-api-BWe_j3Wg.js",revision:"76bc1d1e50a36f6ba33cb3e970e3b0c8"},{url:"peerjs-DwGjY5VX.js",revision:"c9b244745c9d004146a0a2826501cb89"},{url:"pdf.worker.js",revision:"b169314e56c737213dba6418ab0b6512"},{url:"parseConfigBoolean-BaaWtf9X.js",revision:"3f683dfb99c5a4be90bad0ef097309d2"},{url:"orchestrator-C8aIHbDy.js",revision:"9ee4f4b012afb94d77c4eb598e4002a3"},{url:"orchestrator-B7MpomoG.js",revision:"991fff2abef0ec4828e672631759f75e"},{url:"openai-dPjU8dJy.js",revision:"86a106bc9d6396e0cb734554af1c5e33"},{url:"openai-Djzq2scb.js",revision:"3283a266dfd978311fec914966aef2b3"},{url:"model-ranking-DUdrFOcC.js",revision:"8ff635441b5929b4cc80a5e990ff5610"},{url:"memoryStorage-C-ao9y-j.js",revision:"11ae21510c449eb815db39b21a629dd3"},{url:"mcp-reconnect-CDRJPuoN.js",revision:"95ff9375c304f2502f805590605e4e68"},{url:"markdown-By6gdUvF.js",revision:"9c4c6adf6d341ff1a1c5c4c125257cec"},{url:"language-detector-F4bBJDTp.js",revision:"4bc20f04dfee244286f33d74b8f16b14"},{url:"language-detector-D_C_0iTS.js",revision:"49d6f7fce0b7a84ba92831bd16e1f555"},{url:"is-typed-array-BGsHBea7.js",revision:"88f21c362d5bac1a6d4e4ec40c1e2620"},{url:"initControlPlane-D2fVhRFC.js",revision:"6030073a8879c90545569660605205ea"},{url:"initControlPlane-C5D8z0Qw.js",revision:"8406b0525b93a5445ace9feb949b06d9"},{url:"initChatSplitResize-KNL9Oh7s.js",revision:"0467041d61cd8ced83d0e7a518d8bfb5"},{url:"index.js",revision:"320ee29f741374fea6e3f8e51b29f213"},{url:"iframe-storage-proxy-BOMTYygY.js",revision:"ee7c82f8ae30c7aea1825fa899b8330d"},{url:"headless-D6caaop6.js",revision:"3c33e4664193e958bdf44340d5a3dd48"},{url:"git-CC8QxlmG.js",revision:"9fb2e874232d76c2c229e2c0845c47d7"},{url:"git-Bhz4YHc8.js",revision:"8411852ba0870c25a0a157940c938827"},{url:"getGroupDir-Bj5XCflQ.js",revision:"5370c4e4a71f20057e6196d7c1f60b5a"},{url:"getConfig-DSieAlsi.js",revision:"188cec4e95a8a7b52aeee017f65e79e4"},{url:"getAllTasks-C0FzJ32l.js",revision:"ed4e7ef24319ddbda8c39fbc40836311"},{url:"gemini-RHbXXX14.js",revision:"d46f0a008d708f2a24e30237b0734cce"},{url:"firebase-DYJrKVSk.js",revision:"c633b6c6c2f8d23e4389f36e3c4004f8"},{url:"firebase-CumxwjKF.js",revision:"f5a951e569bbeac79badf61dae3d3344"},{url:"file-viewer-QkCuknFn.js",revision:"5d4acbbc8af36ecc6903cf1db1748bca"},{url:"effect-xrx5qhzv.js",revision:"dc72a08a5748f69979cf4163282e0a74"},{url:"e2e-bridge-Dbc9fCDq.js",revision:"6a8e528915be4e17f76086a41bdab6c8"},{url:"downloadGroupFile-Unq8_7D9.js",revision:"012b7d10bd87cf24cb43173b639ca633"},{url:"dist-DUCZvcI2.js",revision:"a986de8d480a0bc73a05fd973b01d170"},{url:"dist-CeFyqf9k.js",revision:"6001a0a32d32f39be4d3904d2a8b6066"},{url:"defaults-D8V885se-DpWnkQpI.js",revision:"bf2e77876a364d45bf777ada570ae62c"},{url:"custom-element-security-Td4vrRc_.js",revision:"f8c44d1b8f1415b0d73b8567f00eb1c7"},{url:"crypto-browserify-DVbGggmf.js",revision:"aeaaa8013734f255d0a368f0f5d856ca"},{url:"crypto-browserify-B2g2edTN.js",revision:"9e637812879719ebb94825acb79ffa25"},{url:"crypto-4ETeplbS.js",revision:"9160909e7dc1a429561c709bb771065d"},{url:"constants-DySRhLEI.js",revision:"c46d6e8ac41db2f3579c22980b04e89d"},{url:"constants-DiETpg52.js",revision:"c9f220286288beca5e353a2ac1b9d7a4"},{url:"connections-Bb0rBpV-.js",revision:"76e29b6171e1cc0e9cb015bada750f28"},{url:"configurePeerJs-DL-LurJY.js",revision:"041009695189595e6ae072baa9e9114e"},{url:"config-071HSho8.js",revision:"298b7ac0964ed17c479fbef361067633"},{url:"bundler-UnYfEehP.js",revision:"82fb84a2315d7534d09e3ae4a5a54310"},{url:"buffer-B98mcmH0.js",revision:"f7bb8e6e11928cb958f31ce22c1c2838"},{url:"browser-B1SoUj6D.js",revision:"7ab3be1c47af9d73a14c6cf7d268f9bb"},{url:"base-task-model-DoDooUa_-uZJ2sHFG.js",revision:"77cfc75e228b8bb0b373e53d6748e131"},{url:"base-task-model-DoDooUa_-BkFE_Qkk.js",revision:"2e50f265417f4b21433ba4bad167ba2f"},{url:"backup-controller-B6GyG4vY.js",revision:"075b28d71d1a5658834b013a47b9aa7a"},{url:"app-routes-CanH2f3S.js",revision:"87760ce69dc5d935a66bf82c53c27e83"},{url:"agent.worker.js",revision:"02fc7ed997d5bc60b29737bb675f8d36"},{url:"assets/iframe-storage-bridge.js",revision:"63df93333e520c84c9850ec0371894bd"},{url:"assets/file-viewer-preview-bridge.js",revision:"68858045b9734fc7bfb45398b0e43abb"},{url:"assets/screenshots/xt-ml.github.io_shadow-claw-template-1024x768.png",revision:"1cc2cf3bfac85210d6d47f98a25bae84"},{url:"assets/screenshots/xt-ml.github.io_shadow-claw-agent-cli-weather-1024x768.png",revision:"a7c3d784e410c3284da9c2842f16842c"},{url:"assets/screenshots/shadow-claw-screenshot-731x1045.png",revision:"f3b9e801298660c14976d22f20a0c243"},{url:"assets/screenshots/shadow-claw-screenshot-1920x1052.png",revision:"16f391d0bbc913ec5aa239c8d577c7a4"},{url:"assets/screenshots/shadow-claw-screenshot-1024x768.png",revision:"3ee54a033db17e3bf3dfb7d0a11ab4e1"},{url:"assets/screenshots/kherrick.github.io_pwgen-knowledge-hub-1024x768.png",revision:"94ace19b1968a1955661d4390f9e11f4"},{url:"assets/screenshots/kherrick.github.io_block-garden-knowledge-hub-1024x768.png",revision:"fe5531f3dde6781830c3e5a5d9a3e705"},{url:"assets/icons/96.png",revision:"f91548690416c59ceb56cdb99809b955"},{url:"assets/icons/72.png",revision:"cba8470097972bdbc5d9a06fe67bfcf2"},{url:"assets/icons/512.png",revision:"ec2a8f28b812a0c2665a04cb3c535aab"},{url:"assets/icons/48.png",revision:"29eb2f38df4d5a6385399a04d7bdef00"},{url:"assets/icons/192.png",revision:"bf98264d7a62a47542e577245a292b77"},{url:"assets/icons/180.png",revision:"69128cf857af09292bb06fac0df9938b"},{url:"assets/icons/152.png",revision:"645ae818149dc508cc6146d620120db2"},{url:"assets/icons/128.png",revision:"84678d51d243c104d0c85a4e909fd0a6"},{url:"assets/icons/1024.png",revision:"ae17c81b3b93137df1702de6a9fcdab6"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"),{allowlist:[/^\/$/,/^(?:\/[^/]+)*\/$/,/^(?:\/[^/]+)*\/(chat|files|pages|tasks|settings)(?:\/.*)?$/],denylist:[/\/assets\//,/\.(png|jpe?g|gif|webp|svg|ico|bmp|avif|mp4|webm|mp3|wav|ogg|pdf|zip|gz|tar|css|js|json|wasm)$/i]})),e.registerRoute(({url:e,sameOrigin:s})=>{if(e.pathname.startsWith("/assets/v86.9pfs/"))return!1;const a=e.hostname.toLowerCase();if("huggingface.co"===a||a.endsWith(".huggingface.co")||a.endsWith(".hf.co")||"hf.co"===a||"hf-mirror.com"===a||a.endsWith(".hf-mirror.com")||"cdnjs.cloudflare.com"===a||"esm.sh"===a||a.endsWith(".esm.sh")||"unpkg.com"===a||"cdn.jsdelivr.net"===a||a.endsWith(".jsdelivr.net")||"esm.run"===a||"openrouter.ai"===a||a.endsWith(".openrouter.ai")||"api.telegram.org"===a)return!1;if(e.pathname.startsWith("/api/control/"))return!1;const c=e.pathname.endsWith("/share/share-target.html"),o="/proxy"===e.pathname||e.pathname.startsWith("/git-proxy/")||c||e.pathname.startsWith("/push/")||e.pathname.startsWith("/schedule/")||e.pathname.startsWith("/telegram/");return(!("localhost"===a||"127.0.0.1"===a||"::1"===a||"[::1]"===a)||!o)&&("boolean"!=typeof s||s)},new e.NetworkFirst({cacheName:"shadow-claw-cache",plugins:[new e.ExpirationPlugin({maxAgeSeconds:31536e3})]}),"GET")});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./config-071HSho8.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-CanH2f3S.js";import{i as c}from"./txPromise-DlzJBj9N.js";import{t as l}from"./getConfig-DSieAlsi.js";import{t as u}from"./dist-CeFyqf9k.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-B7MpomoG.js";import{o as oe}from"./tools-BpZh7hgB.js";import{t as se}from"./setConfig-CIdSs9rh.js";import{t as v}from"./ulid-BSJxYh6W.js";import{a as y,r as b}from"./toast-CtIuHprH.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-xrx5qhzv.js";import{t as fe}from"./prompt-api-BWe_j3Wg.js";import{t as S}from"./configurePeerJs-DL-LurJY.js";import{t as C}from"./file-viewer-QkCuknFn.js";import{t as pe}from"./parseConfigBoolean-BaaWtf9X.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-Cy6T0G9y.js`),chat:()=>import(`./shadow-claw-chat-3TmjJA6-.js`),tasks:()=>import(`./shadow-claw-tasks-rr6fMxAM.js`),files:()=>import(`./shadow-claw-files-Daw6IIrJ.js`),settings:()=>import(`./shadow-claw-settings-DGkwt1ge.js`),tools:()=>import(`./shadow-claw-tools-DcQroojH.js`),channels:()=>import(`./shadow-claw-channels-CHGtPkfY.js`),terminal:()=>import(`./shadow-claw-terminal-C7DhrrX6.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-hBxTknL2.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-BtDKlBOs.js`)},N=/* @__PURE__ */ 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`;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(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))):i.classList.add(`webvm-toggle--error`)}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{let e=await l(r,i);o=pe(e)}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}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}let r=e instanceof Error?e.message:String(e);b(`Failed to open file from tool: ${r}`,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){let t=e instanceof Error?e.message:String(e);b(`Failed to join room: ${t}`,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=s(o),u=a(l),d=typeof window<`u`&&window.location?`${window.location.pathname}${window.location.search}${window.location.hash}`:``;d&&u===d?await W(e,t,n,r,i,o):De()?window.navigation.navigate(u,{history:c.replace?`replace`:`push`}):(u!==window.location.pathname&&Q(globalThis.history,u,{...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){let t=e instanceof Error?e.message:String(e);b(`Failed to process peer parameter: ${t}`,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||/* @__PURE__ */ 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||/* @__PURE__ */ Error(`Failed to clear pending shares`))},r.onsuccess=()=>{t(e)}},r.onabort=()=>{n(r.error||/* @__PURE__ */ 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-071HSho8.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-CanH2f3S.js";import{i as c}from"./txPromise-DlzJBj9N.js";import{t as l}from"./getConfig-DSieAlsi.js";import{t as u}from"./dist-CeFyqf9k.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-B7MpomoG.js";import{o as oe}from"./tools-BpZh7hgB.js";import{t as se}from"./setConfig-CIdSs9rh.js";import{t as v}from"./ulid-BSJxYh6W.js";import{a as y,r as b}from"./toast-CtIuHprH.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-xrx5qhzv.js";import{t as fe}from"./prompt-api-BWe_j3Wg.js";import{t as S}from"./configurePeerJs-DL-LurJY.js";import{t as C}from"./file-viewer-QkCuknFn.js";import{t as pe}from"./parseConfigBoolean-BaaWtf9X.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-IW_LNEL_.js`),chat:()=>import(`./shadow-claw-chat-3TmjJA6-.js`),tasks:()=>import(`./shadow-claw-tasks-rr6fMxAM.js`),files:()=>import(`./shadow-claw-files-Daw6IIrJ.js`),settings:()=>import(`./shadow-claw-settings-DGkwt1ge.js`),tools:()=>import(`./shadow-claw-tools-DcQroojH.js`),channels:()=>import(`./shadow-claw-channels-CHGtPkfY.js`),terminal:()=>import(`./shadow-claw-terminal-C7DhrrX6.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-hBxTknL2.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-BtDKlBOs.js`)},N=/* @__PURE__ */ 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`;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(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))):i.classList.add(`webvm-toggle--error`)}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{let e=await l(r,i);o=pe(e)}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}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}let r=e instanceof Error?e.message:String(e);b(`Failed to open file from tool: ${r}`,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){let t=e instanceof Error?e.message:String(e);b(`Failed to join room: ${t}`,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=s(o),u=a(l),d=typeof window<`u`&&window.location?`${window.location.pathname}${window.location.search}${window.location.hash}`:``;d&&u===d?await W(e,t,n,r,i,o):De()?window.navigation.navigate(u,{history:c.replace?`replace`:`push`}):(u!==window.location.pathname&&Q(globalThis.history,u,{...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){let t=e instanceof Error?e.message:String(e);b(`Failed to process peer parameter: ${t}`,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||/* @__PURE__ */ 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||/* @__PURE__ */ Error(`Failed to clear pending shares`))},r.onsuccess=()=>{t(e)}},r.onabort=()=>{n(r.error||/* @__PURE__ */ 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=/* @__PURE__ */ 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),i=$e(t);await oe(a,c,r,i),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){let t=e instanceof Error?e.message:String(e);b(`Failed to import shared content: ${t}`,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){let t=e instanceof Error?e.message:String(e);b(`Failed to join room: ${t}`,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,
|
|
@@ -639,4 +639,4 @@ ul {
|
|
|
639
639
|
</template>
|
|
640
640
|
`,`text/html`),X=Y.querySelector(`template`);let Z=[];Z=X?Array.from(X.content.children):Array.from(Y.head.children).concat(Array.from(Y.body.children));var Je=Z;const Ye={ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|ftp|tel|file|blob|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,ADD_TAGS:[`iframe`,`figure`,`figcaption`,`script`],CUSTOM_ELEMENT_HANDLING:{tagNameCheck:e=>p(e),attributeNameCheck:()=>!0,allowCustomizedBuiltInElements:!1},ADD_ATTR:[`allow`,`allowfullscreen`,`frameborder`,`scrolling`,`referrerpolicy`,`loading`,`src`,`type`,`async`,`defer`]},Q=`shadow-claw-pages`;var $=class extends ie{static styles=J;static template=Je;autoRefreshIntervalSec=0;autoRefreshTimer=null;broadcastProxy=null;db=null;draggedPageIndex=null;isMouseDown=!1;keyNavState={lastNavigationTime:0,lastDirection:null};mouseStartTime=0;mouseStartX=0;mouseStartY=0;navFadeTimer=null;pageFrontmatter=new y.State(null);previewFrameWindow=null;renderToken=0;sidebarOpen=!1;themeObserver=null;touchStartTime=0;touchStartX=0;touchStartY=0;dsdInitialPath=null;renderedContent=null;renderedFrontmatterToggle=null;renderedKey=null;routingReady=!1;constructor(){super()}async connectedCallback(){let e=this.shadowRoot;if(!e)throw Error(`shadowRoot not found`);let t=this.closest(`shadow-claw`),n=document.documentElement.classList.contains(`sc-prerender-override`),r=t?.getAttribute(`data-prerender-no-seed`)===`true`;if(n||r){let t=e.querySelector(`[data-pages-rendered]`);t instanceof HTMLElement&&(t.hidden=!0,t.textContent=``)}else{let t=e.querySelector(`[data-pages-dropdown-selected]`)?.textContent?.trim();t&&(this.dsdInitialPath=t)}this.db=await s(),await T.whenInitialized,this.broadcastProxy=new de(()=>this.previewFrameWindow||this.shadowRoot?.querySelector(`[data-pages-iframe]`)?.contentWindow||null),window.addEventListener(`message`,this.handleIframeMessage),document.addEventListener(`visibilitychange`,this.handleVisibilityChange),window.addEventListener(`focus`,this.handleWindowFocus),window.addEventListener(`shadow-claw-pages-auto-refresh-change`,this.handleAutoRefreshConfigChange),document.addEventListener(`shadow-claw-file-saved`,this.handleFileSaved),document.addEventListener(`keydown`,this.handleKeyDown),e.addEventListener(`click`,t=>{let n=e.querySelector(`[data-pages-dropdown]`);if(n instanceof HTMLDetailsElement&&n.open){let r=t.target,i=e.querySelector(`[data-pages-sidebar-toggle]`);!n.contains(r)&&(!i||!i.contains(r))&&n.removeAttribute(`open`)}});let i=e.querySelector(`.pages__viewer`),a=e.querySelector(`.pages__viewer-scroll`),o=()=>{this.showNavButtonsTemporarily(2e3)};i instanceof HTMLElement&&(i.addEventListener(`pointermove`,o,{passive:!0}),i.addEventListener(`pointerdown`,o,{passive:!0}),i.addEventListener(`touchstart`,o,{passive:!0}),i.addEventListener(`touchstart`,this.handleTouchStart,{passive:!0}),i.addEventListener(`touchend`,this.handleTouchEnd,{passive:!0}),i.addEventListener(`mousedown`,this.handleMouseDown,{passive:!0}),i.addEventListener(`mouseup`,this.handleMouseUp,{passive:!0}),i.addEventListener(`click`,o,{passive:!0}),i.addEventListener(`focusin`,o,{passive:!0})),a instanceof HTMLElement&&a.addEventListener(`scroll`,o,{passive:!0});let c=e.querySelector(`[data-pages-sidebar-toggle]`);c&&c.addEventListener(`click`,()=>{this.toggleSidebar()});let l=e.querySelector(`.pages__remove-all-btn`);l&&l.addEventListener(`click`,()=>{this.handleRemoveAll()});let u=e.querySelector(`[data-pages-prev]`);u&&u.addEventListener(`click`,()=>{this.goToPreviousPage()});let d=e.querySelector(`[data-pages-next]`);d&&d.addEventListener(`click`,()=>{this.goToNextPage()}),this.toggleSidebar(this.sidebarOpen),this.setupEffects(),this.themeObserver=new MutationObserver(e=>{for(let t of e)t.type===`attributes`&&t.attributeName===`class`&&this.syncIframeTheme()}),this.themeObserver.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),await T.whenReady,this.routingReady=!0,this.renderSelectedPage(),this.setupAutoRefreshTimer()}disconnectedCallback(){this.renderedKey=null,this.renderedContent=null,this.renderedFrontmatterToggle=null,this.dsdInitialPath=null,this.themeObserver&&=(this.themeObserver.disconnect(),null),this.navFadeTimer!==null&&(clearTimeout(this.navFadeTimer),this.navFadeTimer=null),this.autoRefreshTimer!==null&&(clearInterval(this.autoRefreshTimer),this.autoRefreshTimer=null),window.removeEventListener(`message`,this.handleIframeMessage),document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),window.removeEventListener(`focus`,this.handleWindowFocus),window.removeEventListener(`shadow-claw-pages-auto-refresh-change`,this.handleAutoRefreshConfigChange),document.removeEventListener(`shadow-claw-file-saved`,this.handleFileSaved),document.removeEventListener(`keydown`,this.handleKeyDown),this.keyNavState={lastNavigationTime:0,lastDirection:null},this.broadcastProxy?.dispose(),this.broadcastProxy=null,this.previewFrameWindow=null,super.disconnectedCallback?.()}announcePageChange(e){let t=this.shadowRoot;if(!t)return;let n=t.querySelector(`[data-pages-announcer]`);n instanceof HTMLElement&&he(e,this.pageFrontmatter.get()?.title,n)}goToNextPage(){let e=T.pages,t=z(this.selectedPage,e);t>=0&&t<e.length-1&&this.navigateToPage(e[t+1])}goToPreviousPage(){let e=T.pages,t=z(this.selectedPage,e);t>0&&this.navigateToPage(e[t-1])}handleAnchorNavigation(e){let t=this.shadowRoot;return t?Te(e,t.querySelector(`[data-pages-rendered]`)):!1}handleAutoRefreshConfigChange=e=>{let t=Ee(e);t!==null&&(this.autoRefreshIntervalSec=t),this.setupAutoRefreshTimer()};handleFileSaved=e=>{Oe(e,this.selectedPage)&&this.renderSelectedPage()};handleIframeMessage=e=>{let t=Ve(e.data);if(!t)return;if(t.kind===`broadcast-result`){this.broadcastProxy?.handleResultFromIframe(e.source,t.channel,t.payload);return}if(t.kind===`storage-proxy`){if(this.previewFrameWindow&&e.source!==this.previewFrameWindow)return;let n=this.selectedPage?.path||`__default__`;xe(e.source,t.requestId,t.method,t.args,n);return}if(t.kind===`swipe`){if(this.previewFrameWindow&&e.source!==this.previewFrameWindow)return;this.showNavButtonsTemporarily(2e3),t.direction===`left`?this.goToNextPage():t.direction===`right`&&this.goToPreviousPage();return}if(t.kind===`iframe-resize`){let n=this.shadowRoot?.querySelector(`[data-pages-iframe]`);n instanceof HTMLIFrameElement&&(!this.previewFrameWindow||e.source===this.previewFrameWindow||n.contentWindow&&e.source===n.contentWindow)&&(this.previewFrameWindow=n.contentWindow,n.style.setProperty(`height`,`${t.height}px`,`important`));return}if(!this.db||t.kind!==`file-viewer-link`||this.previewFrameWindow&&e.source!==this.previewFrameWindow)return;let a=this.selectedPage?.path||``,s=this.selectedPage?.groupId||T.activeGroupId,c=i(o(s,a)),l=n(t.href,c,window.location.origin);if(!l)return;if(l.searchParams.has(`gameSave`)){this.reloadPreviewWithSearchParams(l.search);return}if(l.origin!==window.location.origin||!r(l.pathname)&&!P(t.href,a,s)){window.open(l.href,`_blank`,`noopener,noreferrer`);return}let u=`${l.pathname}${l.search}${l.hash}`,d=window.navigation;d&&typeof d.navigate==`function`?d.navigate(u):(window.history.pushState({},``,u),window.dispatchEvent(new PopStateEvent(`popstate`)))};handleKeyDown=e=>{Ae(e,this.isConnected,this.shadowRoot,e=>{this.showNavButtonsTemporarily(2e3),e===`previous`?this.goToPreviousPage():this.goToNextPage()},this.keyNavState)};handleMouseDown=e=>{let t=je(e,B(e));this.mouseStartX=t.mouseStartX,this.mouseStartY=t.mouseStartY,this.mouseStartTime=t.mouseStartTime,this.isMouseDown=t.isMouseDown};handleMouseUp=e=>{let t=window.getSelection(),n=!!(t&&t.toString().length>0),r=Me(e,{mouseStartX:this.mouseStartX,mouseStartY:this.mouseStartY,mouseStartTime:this.mouseStartTime,isMouseDown:this.isMouseDown},B(e),n);this.isMouseDown=!1,r&&(this.showNavButtonsTemporarily(2e3),r===`next`?this.goToNextPage():this.goToPreviousPage())};handleTouchEnd=e=>{let t=Fe(e,{touchStartX:this.touchStartX,touchStartY:this.touchStartY,touchStartTime:this.touchStartTime},B(e));t&&(this.showNavButtonsTemporarily(2e3),t===`next`?this.goToNextPage():this.goToPreviousPage()),this.touchStartTime=0};handleTouchStart=e=>{let t=Ie(e,B(e));t&&(this.touchStartX=t.touchStartX,this.touchStartY=t.touchStartY,this.touchStartTime=t.touchStartTime)};handleVisibilityChange=()=>{let e=Le(document.hidden,this.isConnected,this.autoRefreshTimer!==null);e===`render-and-timer`?(this.renderSelectedPage(),this.setupAutoRefreshTimer()):e===`clear-timer`&&this.autoRefreshTimer!==null&&(clearInterval(this.autoRefreshTimer),this.autoRefreshTimer=null)};handleWindowFocus=()=>{Re(document.hidden,this.isConnected)&&this.renderSelectedPage()};navigateToPage(e){(typeof T.isPageAllowed!=`function`||T.isPageAllowed(e.path,e.groupId))&&(this.selectedPage=e,this.showNavButtonsTemporarily(2500),this.announcePageChange(e),document.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`pages`,groupId:e.groupId,path:e.path},bubbles:!0,composed:!0})))}renderPageList(e,t){let n=this.shadowRoot;if(!n)return;let r=n.querySelector(`[data-pages-status]`);r instanceof HTMLElement&&(r.textContent=e.length===1?`1 saved page`:`${e.length} saved pages`);let o=n.querySelector(`.pages__remove-all-btn`);o&&o.toggleAttribute(`disabled`,e.length===0);let s=n.querySelector(`[data-pages-dropdown-selected]`);s instanceof HTMLElement&&(s.textContent=this.selectedPage?this.selectedPage.path:`Select a page...`);let c=n.querySelectorAll(`[data-pages-list]`);if(c.length===0)return;c.forEach(e=>{e instanceof HTMLElement&&e.replaceChildren()});let l=n.querySelector(`[data-pages-prev]`),u=n.querySelector(`[data-pages-next]`),d=n.querySelector(`shadow-claw-page-header`),f=this.pageFrontmatter.get();if(d){if(f&&f.title){if(this.selectedPage){let e=i(a({page:`pages`,groupId:this.selectedPage.groupId,path:this.selectedPage.path})),t=e;if(typeof window<`u`&&window.location?.origin)try{t=new URL(e,window.location.origin).href}catch{}d.setAttribute(`page-title`,`<a href="${t}">${f.title}</a>`),d.setAttribute(`title`,f.title)}else d.setAttribute(`page-title`,f.title),d.setAttribute(`title`,f.title)}else d.setAttribute(`page-title`,`Pages`),d.setAttribute(`title`,`Pages`)}if(l instanceof HTMLButtonElement&&u instanceof HTMLButtonElement){let{isPrevDisabled:t,isNextDisabled:n}=ve(z(this.selectedPage,e),e.length);l.disabled=t,l.hidden=t,u.disabled=n,u.hidden=n}if(e.length===0)return;let p=new Map(t.map(e=>[e.groupId,e.name])),m=we(e);c.forEach(t=>{if(t instanceof HTMLElement)for(let[n,r]of m){let i=document.createElement(`details`);i.className=`pages__group-details`;let a=`shadow-claw-pages-group-collapsed-${n}`,o=!1;try{o=w(a)===`true`}catch{}o||(i.open=!0),i.addEventListener(`toggle`,()=>{try{i.open?C(a):E(a,`true`)}catch{}});let s=document.createElement(`summary`);s.className=`pages__group-label`;let c=document.createElement(`span`);c.textContent=p.get(n)||n;let l=document.createElement(`span`);l.className=`pages__group-icon`,l.textContent=`▼`,s.appendChild(c),s.appendChild(l),i.appendChild(s);let u=document.createElement(`div`);u.className=`pages__group-pages`,r.forEach(r=>{let i=r.path,a=e.findIndex(e=>e.path===r.path&&e.groupId===r.groupId),o=document.createElement(`div`);o.className=`pages__list-item`,this.selectedPage&&R(r)===R(this.selectedPage)&&o.classList.add(`active`);let s=document.createElement(`span`);s.className=`pages__drag-handle`,s.setAttribute(`draggable`,`true`),s.title=`Drag to reorder`,s.textContent=`⠿`,s.addEventListener(`dragstart`,e=>{this.draggedPageIndex=a,o.classList.add(`dragging`),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}),o.addEventListener(`dragend`,()=>{this.draggedPageIndex=null,o.classList.remove(`dragging`)}),o.addEventListener(`dragover`,e=>{e.preventDefault(),this.draggedPageIndex!==null&&this.draggedPageIndex!==a&&o.classList.add(`drag-over`)}),o.addEventListener(`dragleave`,()=>{o.classList.remove(`drag-over`)}),o.addEventListener(`drop`,e=>{e.preventDefault(),o.classList.remove(`drag-over`),this.draggedPageIndex!==null&&this.draggedPageIndex!==a&&this.handleReorder(this.draggedPageIndex,a)});let c=T.effectiveDefaultPage,l=c&&c.path===r.path&&c.groupId===r.groupId,d=document.createElement(`button`);d.type=`button`,d.className=`pages__select`,d.title=`Open ${i}`;let f=document.createElement(`span`);f.className=`pages__list-path`,f.textContent=i,d.appendChild(f),d.addEventListener(`click`,()=>{this.selectedPage=r,this.renderPageList(T.pages,T.groups),this.renderSelectedPage(),this.sidebarOpen=!1;let e=t.closest(`details`);e&&e.removeAttribute(`open`),document.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`pages`,groupId:r.groupId,path:r.path},bubbles:!0,composed:!0}))});let m=document.createElement(`button`);m.className=`pages__edit`,m.type=`button`,m.title=`Edit in file editor`,m.setAttribute(`aria-label`,`Edit ${i} in file editor`),m.textContent=`✏️`,m.addEventListener(`click`,async e=>{if(e.stopPropagation(),this.db)try{await oe.openFile(this.db,i,n)}catch(e){let t=e instanceof Error?e.message:String(e);k(`Failed to edit file: ${t}`,4500)}});let h=document.createElement(`button`);if(h.className=`pages__remove`,h.type=`button`,h.title=`Remove from Pages`,h.setAttribute(`aria-label`,`Remove ${i} from Pages in ${p.get(n)||n}`),h.textContent=`✕`,h.addEventListener(`click`,async e=>{if(e.stopPropagation(),this.db&&await G({title:`Remove Page`,message:`Are you sure you want to remove this page from Pages?\n\n${i}`,confirmLabel:`Remove`,cancelLabel:`Cancel`}))try{await T.removePage(this.db,i,n),O(`Removed ${i} from Pages`,2400)}catch(e){let t=e instanceof Error?e.message:String(e);k(`Failed to remove page: ${t}`,4500)}}),o.appendChild(s),l){let e=document.createElement(`span`);e.className=`pages__default-btn is-default`,e.title=`Default page`,e.textContent=`⭐`,o.appendChild(e)}o.appendChild(d),o.appendChild(m),o.appendChild(h),u.appendChild(o)}),i.appendChild(u),t.appendChild(i)}})}rewriteWorkspacePreviewHtml(e,t){let n=this.selectedPage?.groupId||T.activeGroupId;return F(e,t,i(o(n,t)),n,window.location.origin)}get selectedPage(){return T.activePinnedPage}set selectedPage(e){R(e)!==R(this.selectedPage)&&(this.db?T.setActivePinnedPage(this.db,e):T._activePinnedPage.set(e),e&&this.announcePageChange(e),this.renderPageList(T.pages,T.groups),this.renderSelectedPage())}setupEffects(){this.addCleanup(A(()=>{let e=te.declarativeTools;this.broadcastProxy&&e.length>0&&this.broadcastProxy.registerChannelsFromTools(e)})),this.addCleanup(A(()=>{let e=T.pages,t=T.groups;this.renderPageList(e,t)})),this.addCleanup(A(()=>{let e=T.pages,t=T.activePinnedPage;e.length===0?t!==null&&(this.selectedPage=null):(!t||!e.some(e=>R(e)===R(t)))&&(this.selectedPage=T.effectiveDefaultPage||e[0]),this.routingReady&&this.renderSelectedPage()}))}showNavButtonsTemporarily(e=2500){let t=this.shadowRoot;if(!t)return;let n=t.querySelector(`.pages__viewer`);n instanceof HTMLElement&&n.classList.add(`pages__viewer--nav-visible`),this.navFadeTimer!==null&&clearTimeout(this.navFadeTimer),this.navFadeTimer=setTimeout(()=>{this.navFadeTimer=null,n instanceof HTMLElement&&n.classList.remove(`pages__viewer--nav-visible`)},e)}toggleSidebar(e){this.sidebarOpen=q({root:this.shadowRoot,currentOpen:this.sidebarOpen,force:e})}async buildHtmlPageSrcdoc(e,t,n=``){return await _e({content:e,filePath:t,searchParams:n,groupId:this.selectedPage?.groupId||T.activeGroupId,origin:typeof window<`u`?window.location?.origin:``,resolveRelativeImagesInHtmlFn:(e,t,n)=>this.resolveRelativeImagesInHtml(e,t,n)})}async handleRemoveAll(){let e=this.shadowRoot?.querySelector(`.pages__remove-all-btn`);try{e?.toggleAttribute(`disabled`,!0),e&&(e.textContent=`⏳`),await ye(this.db,e=>G(e))&&O(`Removed all pages from Pages`,2400)}catch(e){let t=e instanceof Error?e.message:String(e);k(`Failed to remove all pages: ${t}`,4500),console.error(`Remove all pages error:`,e)}finally{e?.toggleAttribute(`disabled`,!1),e&&(e.textContent=`🗑️ Remove All`)}}async handleReorder(e,t){let n=await Pe({db:this.db,currentPages:T.pages,fromIndex:e,toIndex:t});n.movedToFirst&&(this.selectedPage=n.movedToFirst,this.renderSelectedPage(),document.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`pages`,groupId:n.movedToFirst.groupId,path:n.movedToFirst.path},bubbles:!0,composed:!0})))}async renderSelectedPage(){let t=this.shadowRoot;if(!t)return;let n=t.querySelector(`[data-pages-empty]`),r=t.querySelector(`[data-pages-rendered]`);if(!(n instanceof HTMLElement)||!(r instanceof HTMLElement))return;let a=this.selectedPage;if(!this.db||!a||typeof T.isPageAllowed==`function`&&!T.isPageAllowed(a.path,a.groupId)){this.renderedKey=null,this.renderedContent=null,this.renderedFrontmatterToggle=null,n.hidden=!1,r.hidden=!0,r.textContent=``,this.pageFrontmatter.set(null),W(t);return}let s=++this.renderToken;try{let c;try{c=await ee(this.db,a.groupId,a.path)}catch(e){try{let t=await b(a.path);if(typeof t==`string`)c=t,Promise.resolve(D(this.db,a.groupId,a.path,c)).catch(()=>{});else throw e}catch{throw e}}if(s!==this.renderToken)return;n.hidden=!0;let l=`${a.groupId}:${a.path}`;if(ze(a.path)){let e=j(c),n=Object.keys(e.data).length>0?e.data:null,i=this.pageFrontmatter.get();if(JSON.stringify(i)!==JSON.stringify(n)&&this.pageFrontmatter.set(n),this.renderedKey===l&&this.renderedContent===c&&t.querySelector(`[data-pages-iframe]`)){this.showNavButtonsTemporarily(2500);return}this.renderedKey=l,this.renderedContent=c,this.renderedFrontmatterToggle=null,r.hidden=!0;let o=this.ensurePreviewIframe(t,r);o.hidden=!1,this.previewFrameWindow=null,d(o,await this.buildHtmlPageSrcdoc(e.content,a.path)),this.showNavButtonsTemporarily(2500);return}if(W(t),Be(a.path)){let t=j(c),n=Object.keys(t.data).length>0?t.data:null,d=this.pageFrontmatter.get();JSON.stringify(d)!==JSON.stringify(n)&&this.pageFrontmatter.set(n);let f=await Ue(this.db,e.MARKDOWN_FRONTMATTER_PAGES);if(this.renderedKey===l&&this.renderedContent===c&&this.renderedFrontmatterToggle===f&&r.children.length>0&&!r.hidden){this.showNavButtonsTemporarily(2500);return}if(!this.renderedKey&&this.dsdInitialPath&&this.dsdInitialPath===a.path&&r.children.length>0&&!r.hidden){this.renderedKey=l,this.renderedContent=c,this.renderedFrontmatterToggle=f,await this.resolveMarkdownImages(r,a.groupId,a.path),this.showNavButtonsTemporarily(2500);return}this.renderedKey=l,this.renderedContent=c,this.renderedFrontmatterToggle=f,r.hidden=!1;let p=await ae(c,{renderFrontmatter:f});if(s!==this.renderToken)return;let h=[],g=/<script\b[^>]*\bsrc=["']([^"']+)["'][^>]*>/gi,y;for(;(y=g.exec(p))!==null;){let e=y[1];e&&v(e)&&h.push(e)}let b=_();if(await Promise.all(h.map(async e=>{if(await u(e),b.find(t=>t.src===e)?.hasInit)try{let t=await import(
|
|
641
641
|
/* @vite-ignore */
|
|
642
|
-
e);typeof t?.init==`function`&&await t.init()}catch(t){console.error(`[ShadowClaw] Error executing init for `+e,t)}})),s!==this.renderToken)return;let x=i(o(a.groupId,a.path)),S=F(p,a.path,x,a.groupId,window.location.origin);if(s!==this.renderToken)return;m(r,S,Ye),await this.resolveMarkdownImages(r,a.groupId,a.path),this.showNavButtonsTemporarily(2500);return}if(this.renderedKey===l&&this.renderedContent===c&&!r.hidden){this.showNavButtonsTemporarily(2500);return}this.renderedKey=l,this.renderedContent=c,this.renderedFrontmatterToggle=null,this.pageFrontmatter.set(null),r.hidden=!1,r.textContent=c,this.showNavButtonsTemporarily(2500)}catch(e){this.renderedKey=null,this.renderedContent=null,this.renderedFrontmatterToggle=null,n.hidden=!1,r.hidden=!0,r.textContent=``,this.pageFrontmatter.set(null),W(t);let i=e instanceof Error?e.message:String(e);k(`Failed to load page ${a.path}: ${i}`,5e3)}}async resolveMarkdownImages(e,t,n){await Ke({container:e,groupId:t,filePath:n,groups:Array.isArray(T.groups)?T.groups:[],readImageAsDataUrlFn:(e,t)=>He({db:this.db,groupId:e,workspacePath:t})})}async resolveRelativeImagesInHtml(e,t,n){if(!e)return e;let r=new DOMParser().parseFromString(e,`text/html`);return await this.resolveMarkdownImages(r.body,n,t),r.body.innerHTML}async setupAutoRefreshTimer(){if(this.autoRefreshTimer!==null&&(clearInterval(this.autoRefreshTimer),this.autoRefreshTimer=null),!this.db)return;let e=await Ce(this.db,c);this.autoRefreshIntervalSec=e,K(e,document.hidden,this.isConnected)&&(this.autoRefreshTimer=setInterval(()=>{K(e,document.hidden,this.isConnected)&&this.renderSelectedPage()},e*1e3))}ensurePreviewIframe(e,t){return Se({root:e,rendered:t,selectedPath:this.selectedPage?.path,onIframeLoad:e=>{this.previewFrameWindow=e,this.syncIframeTheme()}})}syncIframeTheme(){qe(this.previewFrameWindow)}async reloadPreviewWithSearchParams(e){if(!this.selectedPage||!this.renderedContent)return;let t=this.shadowRoot,n=t?.querySelector(`#rendered`);if(!t||!n)return;let r=j(this.renderedContent),i=this.ensurePreviewIframe(t,n);i.hidden=!1,this.previewFrameWindow=null,d(i,await this.buildHtmlPageSrcdoc(r.content,this.selectedPage.path,e))}};customElements.get(Q)||customElements.define(Q,$);export{$ as ShadowClawPages};
|
|
642
|
+
e);typeof t?.init==`function`&&await t.init()}catch(t){console.error(`[ShadowClaw] Error executing init for `+e,t)}})),s!==this.renderToken)return;let x=i(o(a.groupId,a.path)),S=F(p,a.path,x,a.groupId,window.location.origin);if(s!==this.renderToken)return;m(r,S,Ye),await this.resolveMarkdownImages(r,a.groupId,a.path),this.showNavButtonsTemporarily(2500);return}if(this.renderedKey===l&&this.renderedContent===c&&!r.hidden){this.showNavButtonsTemporarily(2500);return}this.renderedKey=l,this.renderedContent=c,this.renderedFrontmatterToggle=null,this.pageFrontmatter.set(null),r.hidden=!1,r.textContent=c,this.showNavButtonsTemporarily(2500)}catch(e){this.renderedKey=null,this.renderedContent=null,this.renderedFrontmatterToggle=null,n.hidden=!1,r.hidden=!0,r.textContent=``,this.pageFrontmatter.set(null),W(t);let i=e instanceof Error?e.message:String(e);k(`Failed to load page ${a.path}: ${i}`,5e3)}}async resolveMarkdownImages(e,t,n){await Ke({container:e,groupId:t,filePath:n,groups:Array.isArray(T.groups)?T.groups:[],readImageAsDataUrlFn:(e,t)=>He({db:this.db,groupId:e,workspacePath:t})})}async resolveRelativeImagesInHtml(e,t,n){if(!e)return e;let r=new DOMParser().parseFromString(e,`text/html`);return await this.resolveMarkdownImages(r.body,n,t),r.body.innerHTML}async setupAutoRefreshTimer(){if(this.autoRefreshTimer!==null&&(clearInterval(this.autoRefreshTimer),this.autoRefreshTimer=null),!this.db)return;let e=await Ce(this.db,c);this.autoRefreshIntervalSec=e,K(e,document.hidden,this.isConnected)&&(this.autoRefreshTimer=setInterval(()=>{K(e,document.hidden,this.isConnected)&&this.renderSelectedPage()},e*1e3))}ensurePreviewIframe(e,t){return Se({root:e,rendered:t,selectedPath:this.selectedPage?.path,onIframeLoad:e=>{this.previewFrameWindow=e,this.syncIframeTheme()}})}syncIframeTheme(){qe(this.previewFrameWindow)}async reloadPreviewWithSearchParams(e){if(!this.selectedPage||!this.renderedContent)return;let t=this.shadowRoot,n=t?.querySelector(`[data-pages-rendered]`)||t?.querySelector(`#rendered`);if(!t||!n)return;let r=j(this.renderedContent),i=this.ensurePreviewIframe(t,n);i.hidden=!1,this.previewFrameWindow=null,d(i,await this.buildHtmlPageSrcdoc(r.content,this.selectedPage.path,e))}};customElements.get(Q)||customElements.define(Q,$);export{$ as ShadowClawPages};
|