shadow-claw 1.34.5 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/README.md +5 -1
  4. package/dist/cli/chunk-BCLxzLO92.js +5 -0
  5. package/dist/cli/chunk-BHNCi3ui2.js +1 -0
  6. package/dist/cli/chunk-BMPhLSn8.js +1 -0
  7. package/dist/cli/chunk-BMW6QB5-2.js +27 -0
  8. package/dist/cli/chunk-BQCWtrzh.js +1 -0
  9. package/dist/cli/chunk-BQCWtrzh2.js +1 -0
  10. package/dist/cli/chunk-BdJUjMuz.js +1 -0
  11. package/dist/cli/chunk-C47WdxKx2.js +1 -0
  12. package/dist/cli/{chunk-D9dku_3t.js → chunk-CAqvQuGr.js} +1 -1
  13. package/dist/cli/{chunk-DoVxObGa2.js → chunk-CHzhUS1N2.js} +1 -1
  14. package/dist/cli/chunk-CUMlq7Jw2.js +263 -0
  15. package/dist/cli/chunk-CXi9LU9e2.js +110 -0
  16. package/dist/cli/chunk-ChefnX-r.js +110 -0
  17. package/dist/cli/{chunk-zvi71-77.js → chunk-D3JxbzjI2.js} +15 -15
  18. package/dist/cli/chunk-D7VYMl092.js +1 -0
  19. package/dist/cli/chunk-DNIduiJ82.js +91 -0
  20. package/dist/cli/{chunk-C4UfzPK4.js → chunk-DTbrldk_.js} +1 -1
  21. package/dist/cli/chunk-DZ8YBXax.js +969 -0
  22. package/dist/cli/chunk-DduRvw8B2.js +1 -0
  23. package/dist/cli/chunk-DnYxGjdu2.js +1 -0
  24. package/dist/cli/chunk-Ea7nXmgb2.js +1 -0
  25. package/dist/cli/{chunk-BRiGkTIi.js → chunk-EohNY8vW.js} +1 -1
  26. package/dist/cli/chunk-LIIpZlwP2.js +1 -0
  27. package/dist/cli/chunk-LIJZHJml2.js +1 -0
  28. package/dist/cli/chunk-MHBh2BgF2.js +91 -0
  29. package/dist/cli/{chunk-BQ7lHA7c.js → chunk-SKgLGyTY.js} +1 -1
  30. package/dist/cli/chunk-kcJSXcbq2.js +1 -0
  31. package/dist/cli/cli.js +12 -11
  32. package/dist/headless-agent.js +191 -187
  33. package/dist/lib/components/index.js +21 -21
  34. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  35. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  36. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  37. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  38. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  39. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  40. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  41. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  42. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  43. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  44. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  45. package/dist/lib/components/shadow-claw-channels.js +1 -1
  46. package/dist/lib/components/shadow-claw-chat.js +1 -1
  47. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  48. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  49. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  50. package/dist/lib/components/shadow-claw-files.js +1 -1
  51. package/dist/lib/components/shadow-claw-git.js +1 -1
  52. package/dist/lib/components/shadow-claw-llm.js +1 -1
  53. package/dist/lib/components/shadow-claw-networking.js +1 -1
  54. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  55. package/dist/lib/components/shadow-claw-pages.js +1 -1
  56. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  57. package/dist/lib/components/shadow-claw-settings.js +1 -1
  58. package/dist/lib/components/shadow-claw-storage.js +1 -1
  59. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  60. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  61. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  62. package/dist/lib/components/shadow-claw-tools.js +1 -1
  63. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  64. package/dist/lib/components/shadow-claw.js +1 -1
  65. package/dist/lib/{configurePeerJs-DSRcNp3v.js → configurePeerJs-CdPzmpyI.js} +2 -2
  66. package/dist/lib/{configurePeerJs-DSRcNp3v.js.map → configurePeerJs-CdPzmpyI.js.map} +1 -1
  67. package/dist/lib/index.js +21 -21
  68. package/dist/lib/{initControlPlane-CWfE_Oan.js → initControlPlane-BLymRW34.js} +7 -7
  69. package/dist/lib/{initControlPlane-CWfE_Oan.js.map → initControlPlane-BLymRW34.js.map} +1 -1
  70. package/dist/lib/{orchestrator-BEUug1TW.js → orchestrator-DZkhJj7f.js} +13 -2
  71. package/dist/lib/{orchestrator-BEUug1TW.js.map → orchestrator-DZkhJj7f.js.map} +1 -1
  72. package/dist/lib/{orchestrator-CGUzfGbE.js → orchestrator-ZsQTRknI.js} +5 -5
  73. package/dist/lib/{orchestrator-CGUzfGbE.js.map → orchestrator-ZsQTRknI.js.map} +1 -1
  74. package/dist/lib/{peerjs-BSD88rT3.js → peerjs-CJYfnR5V.js} +3 -3
  75. package/dist/lib/{peerjs-BSD88rT3.js.map → peerjs-CJYfnR5V.js.map} +1 -1
  76. package/dist/lib/{push-client-CC3qifgc.js → push-client-C9hIPqLZ.js} +2 -2
  77. package/dist/lib/{push-client-CC3qifgc.js.map → push-client-C9hIPqLZ.js.map} +1 -1
  78. package/dist/lib/{shadow-claw-BWS-UVnE.js → shadow-claw-8qL2-QoK.js} +4 -4
  79. package/dist/lib/{shadow-claw-BWS-UVnE.js.map → shadow-claw-8qL2-QoK.js.map} +1 -1
  80. package/dist/lib/{shadow-claw-channel-config-DwMn3nFJ.js → shadow-claw-channel-config-CvnbqGBy.js} +3 -3
  81. package/dist/lib/{shadow-claw-channel-config-DwMn3nFJ.js.map → shadow-claw-channel-config-CvnbqGBy.js.map} +1 -1
  82. package/dist/lib/{shadow-claw-channels-BdE4cUlx.js → shadow-claw-channels-CkCvjWn1.js} +2 -2
  83. package/dist/lib/{shadow-claw-channels-BdE4cUlx.js.map → shadow-claw-channels-CkCvjWn1.js.map} +1 -1
  84. package/dist/lib/{shadow-claw-chat-DqaMoE9C.js → shadow-claw-chat-B1YEHKN3.js} +3 -3
  85. package/dist/lib/{shadow-claw-chat-DqaMoE9C.js.map → shadow-claw-chat-B1YEHKN3.js.map} +1 -1
  86. package/dist/lib/{shadow-claw-control-plane-D3DUDO29.js → shadow-claw-control-plane-jjo789IE.js} +6 -6
  87. package/dist/lib/{shadow-claw-control-plane-D3DUDO29.js.map → shadow-claw-control-plane-jjo789IE.js.map} +1 -1
  88. package/dist/lib/{shadow-claw-conversations-XT-OXogj.js → shadow-claw-conversations-MMT7wYH3.js} +2 -2
  89. package/dist/lib/{shadow-claw-conversations-XT-OXogj.js.map → shadow-claw-conversations-MMT7wYH3.js.map} +1 -1
  90. package/dist/lib/{shadow-claw-file-viewer-DJqxyd97.js → shadow-claw-file-viewer-qSkD1RQK.js} +2 -2
  91. package/dist/lib/{shadow-claw-file-viewer-DJqxyd97.js.map → shadow-claw-file-viewer-qSkD1RQK.js.map} +1 -1
  92. package/dist/lib/{shadow-claw-files-CUEJlA1o.js → shadow-claw-files-Cg8ycQ_N.js} +2 -2
  93. package/dist/lib/{shadow-claw-files-CUEJlA1o.js.map → shadow-claw-files-Cg8ycQ_N.js.map} +1 -1
  94. package/dist/lib/{shadow-claw-git-D_iVcb86.js → shadow-claw-git-gaClz-ZC.js} +3 -3
  95. package/dist/lib/{shadow-claw-git-D_iVcb86.js.map → shadow-claw-git-gaClz-ZC.js.map} +1 -1
  96. package/dist/lib/{shadow-claw-llm-C2msAsyU.js → shadow-claw-llm-DyOz0qzT.js} +2 -2
  97. package/dist/lib/{shadow-claw-llm-C2msAsyU.js.map → shadow-claw-llm-DyOz0qzT.js.map} +1 -1
  98. package/dist/lib/{shadow-claw-networking-D2NvodC-.js → shadow-claw-networking-B2xx0UUR.js} +2 -2
  99. package/dist/lib/{shadow-claw-networking-D2NvodC-.js.map → shadow-claw-networking-B2xx0UUR.js.map} +1 -1
  100. package/dist/lib/{shadow-claw-notifications-BcvVn_vu.js → shadow-claw-notifications-BjKfZy0k.js} +2 -2
  101. package/dist/lib/{shadow-claw-notifications-BcvVn_vu.js.map → shadow-claw-notifications-BjKfZy0k.js.map} +1 -1
  102. package/dist/lib/{shadow-claw-pages-CTMXRhEX.js → shadow-claw-pages-CJ2tsMtL.js} +2 -2
  103. package/dist/lib/{shadow-claw-pages-CTMXRhEX.js.map → shadow-claw-pages-CJ2tsMtL.js.map} +1 -1
  104. package/dist/lib/{shadow-claw-peerjs-C2YvypqM.js → shadow-claw-peerjs-CazCkXQ1.js} +3 -3
  105. package/dist/lib/{shadow-claw-peerjs-C2YvypqM.js.map → shadow-claw-peerjs-CazCkXQ1.js.map} +1 -1
  106. package/dist/lib/{shadow-claw-settings-B0hiDwEt.js → shadow-claw-settings-qro6pO9I.js} +2 -2
  107. package/dist/lib/{shadow-claw-settings-B0hiDwEt.js.map → shadow-claw-settings-qro6pO9I.js.map} +1 -1
  108. package/dist/lib/{shadow-claw-storage-Dt4yg4Q4.js → shadow-claw-storage-ewDdvCGa.js} +2 -2
  109. package/dist/lib/{shadow-claw-storage-Dt4yg4Q4.js.map → shadow-claw-storage-ewDdvCGa.js.map} +1 -1
  110. package/dist/lib/{shadow-claw-task-server-B2gbZaz4.js → shadow-claw-task-server-DpqQcNIs.js} +2 -2
  111. package/dist/lib/{shadow-claw-task-server-B2gbZaz4.js.map → shadow-claw-task-server-DpqQcNIs.js.map} +1 -1
  112. package/dist/lib/{shadow-claw-tasks-Bxq-niuM.js → shadow-claw-tasks-B2fMF4qE.js} +2 -2
  113. package/dist/lib/{shadow-claw-tasks-Bxq-niuM.js.map → shadow-claw-tasks-B2fMF4qE.js.map} +1 -1
  114. package/dist/lib/{shadow-claw-terminal-BfbW3xtg.js → shadow-claw-terminal-B25kQJC3.js} +2 -2
  115. package/dist/lib/{shadow-claw-terminal-BfbW3xtg.js.map → shadow-claw-terminal-B25kQJC3.js.map} +1 -1
  116. package/dist/lib/{shadow-claw-tools-BNSAaK0Y.js → shadow-claw-tools-B0y8JzoA.js} +10 -3
  117. package/dist/lib/{shadow-claw-tools-BNSAaK0Y.js.map → shadow-claw-tools-B0y8JzoA.js.map} +1 -1
  118. package/dist/lib/{shadow-claw-webvm-Dc2KmEXq.js → shadow-claw-webvm-CoCedIza.js} +2 -2
  119. package/dist/lib/{shadow-claw-webvm-Dc2KmEXq.js.map → shadow-claw-webvm-CoCedIza.js.map} +1 -1
  120. package/dist/lib/{syncWebMcpRegistration-BIL83P0Q.js → syncWebMcpRegistration-JKLALq4e.js} +2 -2
  121. package/dist/lib/{syncWebMcpRegistration-BIL83P0Q.js.map → syncWebMcpRegistration-JKLALq4e.js.map} +1 -1
  122. package/dist/lib/worker/utils/sandboxedEval.d.ts +8 -0
  123. package/dist/public/.well-known/mcp/server-card.json +1 -1
  124. package/dist/public/.well-known/mcp.json +1 -1
  125. package/dist/public/AGENTS.md +1 -1
  126. package/dist/public/README.md +5 -1
  127. package/dist/public/agent.worker.js +1 -1
  128. package/dist/public/components/shadow-claw-tools/shadow-claw-tools.html +1 -1
  129. package/dist/public/{configurePeerJs-B925t9C7.js → configurePeerJs-BrHeJGw1.js} +1 -1
  130. package/dist/public/docs/decisions/headless-cli-agent-participant.md +1 -1
  131. package/dist/public/docs/example/article/index.html +1 -1
  132. package/dist/public/docs/publishing/index.html +1 -1
  133. package/dist/public/docs/skill-creator/index.html +1 -1
  134. package/dist/public/docs/subsystems/cli.md +33 -23
  135. package/dist/public/docs/subsystems/skills.md +17 -0
  136. package/dist/public/docs/subsystems/tools.md +1 -1
  137. package/dist/public/e2e/README.md +2 -2
  138. package/dist/public/{e2e-bridge-CE1xleGn.js → e2e-bridge-D_lyH__p.js} +1 -1
  139. package/dist/public/{executeTool-DtTrsZHV.js → executeTool-b6DnRhcv.js} +2 -1
  140. package/dist/public/{file-viewer-LEEStSq-.js → file-viewer-CKrQoxZi.js} +1 -1
  141. package/dist/public/index.html +1 -1
  142. package/dist/public/index.js +1 -1
  143. package/dist/public/{initControlPlane-e2JgxXEb.js → initControlPlane-Dn-XFuxg.js} +1 -1
  144. package/dist/public/llms.txt +2 -0
  145. package/dist/public/main/index.html +1 -1
  146. package/dist/public/main/memory/index.html +1 -1
  147. package/dist/public/{orchestrator-Baif6kmu.js → orchestrator-0BnBtxHO.js} +3 -2
  148. package/dist/public/{orchestrator-TndREZPL.js → orchestrator-C3GKZriH.js} +1 -1
  149. package/dist/public/{peerjs-DE6WF3h2.js → peerjs-CgfLEp2N.js} +1 -1
  150. package/dist/public/{push-client-B_IkTpNm.js → push-client-D6DLiY1s.js} +1 -1
  151. package/dist/public/service-worker.js +1 -1
  152. package/dist/public/{shadow-claw-channels-BCGz36Zl.js → shadow-claw-channels-DSijinZ9.js} +1 -1
  153. package/dist/public/{shadow-claw-chat-H9U9jbqD.js → shadow-claw-chat-BeHlAjnA.js} +1 -1
  154. package/dist/public/{shadow-claw-control-plane-CeKh64s2.js → shadow-claw-control-plane-BfF_AZSg.js} +2 -2
  155. package/dist/public/{shadow-claw-conversations-C26t1HXN.js → shadow-claw-conversations-Bb_2bVLJ.js} +1 -1
  156. package/dist/public/{shadow-claw-DBeXILmk.js → shadow-claw-f71DlRdV.js} +2 -2
  157. package/dist/public/{shadow-claw-file-viewer-DWUoTjkr.js → shadow-claw-file-viewer-B67000Mm.js} +1 -1
  158. package/dist/public/{shadow-claw-files-BQ8DSX-z.js → shadow-claw-files-DeZZYt01.js} +1 -1
  159. package/dist/public/{shadow-claw-git-CIXyISw-.js → shadow-claw-git-Ccy25LuW.js} +2 -2
  160. package/dist/public/{shadow-claw-llm-D_GpOSZE.js → shadow-claw-llm-XjYcTlXT.js} +1 -1
  161. package/dist/public/{shadow-claw-networking-BYp5K3B7.js → shadow-claw-networking-efXQtydQ.js} +1 -1
  162. package/dist/public/{shadow-claw-notifications-ZiXmPweY.js → shadow-claw-notifications-Cq2ZSeJa.js} +1 -1
  163. package/dist/public/{shadow-claw-pages-BHXwf3BD.js → shadow-claw-pages-BVFNSSb1.js} +1 -1
  164. package/dist/public/{shadow-claw-settings-BfvDvt9c.js → shadow-claw-settings-B3sHxPh9.js} +2 -2
  165. package/dist/public/{shadow-claw-storage-Bvn85DII.js → shadow-claw-storage-DNdlzCgC.js} +1 -1
  166. package/dist/public/{shadow-claw-task-server-DZL_d8FC.js → shadow-claw-task-server-BJq0rpju.js} +1 -1
  167. package/dist/public/{shadow-claw-tasks-Cy8jzd8q.js → shadow-claw-tasks-CkF1uMeZ.js} +1 -1
  168. package/dist/public/{shadow-claw-terminal-BgEXr82T.js → shadow-claw-terminal-CnHhcpA-.js} +1 -1
  169. package/dist/public/{shadow-claw-tools-BjnssRSi.js → shadow-claw-tools-iw0fljud.js} +8 -1
  170. package/dist/public/{shadow-claw-webvm-tZ1VDoVA.js → shadow-claw-webvm-Bliu4V__.js} +1 -1
  171. package/dist/public/{syncWebMcpRegistration-CLMvJ4kV.js → syncWebMcpRegistration-D91usEMu.js} +1 -1
  172. package/package.json +1 -1
  173. package/src/cli/cli.ts +26 -2
  174. package/src/cli/commands/agent.test.ts +421 -0
  175. package/src/cli/commands/agent.ts +270 -20
  176. package/src/components/shadow-claw-tools/shadow-claw-tools.html +7 -0
  177. package/src/worker/headless-agent.ts +14 -0
  178. package/src/worker/headless-types.ts +39 -0
  179. package/src/worker/utils/native-eval-executor.test.ts +36 -0
  180. package/src/worker/utils/native-eval-executor.ts +58 -0
  181. package/src/worker/utils/sandboxedEval.ts +36 -0
  182. package/dist/cli/chunk-1BmpU7jO2.js +0 -1
  183. package/dist/cli/chunk-54Euq8Ji2.js +0 -1
  184. package/dist/cli/chunk-BTitwCgT2.js +0 -88
  185. package/dist/cli/chunk-Bjh76Dai.js +0 -1081
  186. package/dist/cli/chunk-C2HeZQ6K.js +0 -1
  187. package/dist/cli/chunk-CxdpafWg.js +0 -1
  188. package/dist/cli/chunk-DEy72ZNV2.js +0 -88
  189. package/dist/cli/chunk-Da1BZyqf.js +0 -1
  190. package/dist/cli/chunk-FHsJD-Sf2.js +0 -27
  191. package/dist/cli/chunk-aWgoVB7x2.js +0 -1
  192. package/dist/cli/chunk-hOceZVB92.js +0 -371
  193. package/dist/cli/chunk-pwNc6VtC2.js +0 -1
@@ -1,4 +1,4 @@
1
- import{r as e}from"./config-D4lVqMs8.js";import{c as t,n,r,u as i}from"./app-routes-BMQ4HFaM.js";import{i as a}from"./txPromise-C2iYogHX.js";import{t as o}from"./getConfig-4saf0Tkq.js";import{t as s}from"./dist-B9m1QM9v.js";import{R as c,Vt as l,a as u,c as d,in as f,lt as p,o as m,st as h,t as g,vt as _,w as ee,xt as v}from"./orchestrator-Baif6kmu.js";import{o as te}from"./tools-BCttQkSs.js";import{t as ne}from"./setConfig-DdSThoKj.js";import{t as y}from"./ulid-BY7rQVLN.js";import{a as b,r as x}from"./toast-BXgUfbyh.js";import{n as re,r as ie,t as ae}from"./constants-DiETpg52.js";import{t as oe}from"./shadow-claw-element-DIrv3P6A.js";import{t as S}from"./effect-BJCrpFdp.js";import{t as se}from"./prompt-api-OUOP-B-R.js";import{t as C}from"./configurePeerJs-B925t9C7.js";import{t as w}from"./file-viewer-LEEStSq-.js";import{t as ce}from"./parseConfigBoolean-ByjZr9OM.js";const T={Light:`light`,Dark:`dark`,System:`system`},E=`shadow-claw-theme`;function le(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function D(e){return e===`system`?le():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=u(E)||`system`,A=D(k);O(A);const j=new class{_resolved;_theme;constructor(){this._theme=new s.State(k),this._resolved=new s.State(A)}getTheme(){return{theme:this.theme,resolved:this.resolved}}init(){typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=le();d(E,`system`),O(e),this._theme.set(`system`),this._resolved.set(e)}),window.addEventListener(`storage`,e=>{let t=m(E);e.key===t&&e.newValue&&this.setTheme(e.newValue)})}get resolved(){return this._resolved.get()}setTheme(e){let t=D(e);d(E,e),O(t),this._theme.set(e),this._resolved.set(t)}get theme(){return this._theme.get()}};j.init();async function M(e,t=3){for(let n=0;n<t;n++){if(e())return;await new Promise(e=>{requestAnimationFrame(()=>e())})}}function N(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 ue(e,t,n){return n&&t===`pages`?N(e):t}function de(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 fe(e,t,n,r){let i=n;if(!i)return;let a=de(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 pe={pages:()=>import(`./shadow-claw-pages-BHXwf3BD.js`),chat:()=>import(`./shadow-claw-chat-H9U9jbqD.js`),tasks:()=>import(`./shadow-claw-tasks-Cy8jzd8q.js`),files:()=>import(`./shadow-claw-files-BQ8DSX-z.js`),settings:()=>import(`./shadow-claw-settings-BfvDvt9c.js`),tools:()=>import(`./shadow-claw-tools-BjnssRSi.js`),channels:()=>import(`./shadow-claw-channels-BCGz36Zl.js`),terminal:()=>import(`./shadow-claw-terminal-BgEXr82T.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-DWUoTjkr.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-gOiW-_Bh.js`)},P=new Map;async function F(e){let t=P.get(e);if(!t){let n=pe[e];n?(t=n().then(()=>void 0),P.set(e,t)):t=Promise.resolve()}await t}function I(e,t,n,r,i){r&&F(`terminal`).catch(console.error),i!==null&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=null,fe(e,t,n,r)})}function me(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 L(e,t){if(e)for(let n of me(e))n.setMainCollapsedOverride?.(t)}function R(e,t,n){if(!e)return;let r=e.querySelector(`.activity-log-toggle`);r instanceof HTMLButtonElement&&(r.hidden=t!==`chat`||n===0)}function z(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 B(e,t){if(!e)return;let n=e.querySelector(`.header-main-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof t==`boolean`?t:z(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 V(e,t,n,r){if(!e)return;let i=e.querySelector(`.webvm-toggle`);if(!(i instanceof HTMLButtonElement))return;let a=t===`chat`||t===`files`;if(i.hidden=!a,i.classList.toggle(`hidden`,!a),i.classList.remove(`webvm-toggle--hidden`,`webvm-toggle--visible`,`webvm-toggle--booting`,`webvm-toggle--ready`,`webvm-toggle--error`),!a){i.classList.add(`webvm-toggle--error`);return}i.classList.add(n?`webvm-toggle--visible`:`webvm-toggle--hidden`),r.ready?i.classList.add(`webvm-toggle--ready`):(r.booting||r.bootAttempted)&&i.classList.add(`webvm-toggle--booting`),i.setAttribute(`aria-label`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`title`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`aria-pressed`,String(n))}const H={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 U(e,t){let n=H[t];if(!n)return;let r=e.querySelector(`[data-page-id="${t}"]`);!r||r.children.length>0||r.appendChild(document.createElement(n))}function W(e,t,n,r,i,a=!0){if(!e)return;let o=ue(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=H.chat;t&&customElements.get(t)?U(e,`chat`):F(`chat`).then(()=>{e&&U(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=H[o];u&&customElements.get(u)?U(e,o):F(o).then(()=>{e&&U(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),I(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame),L(e,t.headerMainCollapsedOverride),B(e,t.headerMainCollapsedOverride),R(e,t.currentPage,r.activityLog.length),V(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())}}async function G(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&&W(e,t,n,i,u),u===`files`&&c)if(/\.[^./]+$/u.test(c))try{await r.openFile(n,c,s||i.activeGroupId),l&&await M(()=>{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)await i.setActivePinnedPage(n,{groupId:s||i.activeGroupId||`br:main`,path:c});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 M(()=>typeof t.handleAnchorNavigation==`function`&&!!t.handleAnchorNavigation(l)))}}async function K(e,t,n,r,a,o){let s=await i(o,a.activeGroupId);s&&await G(e,t,n,r,a,s)}function q(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 J(t,n){if(t)try{await ne(t,e.SIDEBAR_WIDTH,n)}catch{}}function Y(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return;let r=q(e,t);n.style.setProperty(`--sidebar-width`,`${r}px`)}async function he(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 s=()=>{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},c=()=>{let e=Math.round(q(t,s())),n=Math.round(q(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 o(i,e.SIDEBAR_WIDTH):void 0;typeof n==`number`&&Number.isFinite(n)&&n>0?Y(t,n):Y(t,250)}catch{Y(t,250)}let l=null,u=0,d=0,f=e=>{if(e.pointerId!==l)return;let n=e.clientX-u;Y(t,d+n),c()},p=()=>{if(l===null)return;l=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&&J(i,t)}},m=e=>{e.pointerId===l&&p()};a.addEventListener(`pointerdown`,e=>{e.pointerType===`mouse`&&e.button!==0&&e.button!==-1||window.innerWidth<896||(e.preventDefault(),l=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`,()=>{Y(t,250),i&&J(i,250),c()}),a.addEventListener(`keydown`,e=>{if(window.innerWidth<896)return;let n=e.shiftKey?32:12,r=s(),a=null;e.key===`ArrowRight`?a=r+n:e.key===`ArrowLeft`?a=r-n:e.key===`Home`?a=200:e.key===`End`&&(a=q(t,2**53-1)),a!==null&&(e.preventDefault(),Y(t,a),c(),i&&J(i,q(t,s())))}),c(),n.addCleanup(()=>{p(),a.removeEventListener(`pointerup`,m),a.removeEventListener(`pointercancel`,p)})}async function X(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 ge={pages:e.SIDEBAR_PAGES_HIDDEN,chat:e.SIDEBAR_CHAT_HIDDEN,tasks:e.SIDEBAR_TASKS_HIDDEN,files:e.SIDEBAR_FILES_HIDDEN};function Z(e,t,n){if(!e)return;let r=e.querySelector(`.nav-item[data-page="${t}"]`);r&&(r.hidden=n,r.setAttribute(`aria-hidden`,String(n)))}function _e(e){switch(e){case`pages`:return`pagesSidebarHidden`;case`chat`:return`chatSidebarHidden`;case`tasks`:return`tasksSidebarHidden`;case`files`:return`filesSidebarHidden`}}async function ve(e,t,n,r){for(let[n,i]of Object.entries(ge)){let a=n,s=!1;if(r)try{s=ce(await o(r,i))}catch{s=!1}let c=_e(a);t[c]=s,Z(e,a,s)}}function Q(e,t,n,r,i,a){switch(i){case`pages`:t.pagesSidebarHidden=a;break;case`chat`:t.chatSidebarHidden=a;break;case`tasks`:t.tasksSidebarHidden=a;break;case`files`:t.filesSidebarHidden=a;break}Z(e,i,a),a&&t.currentPage===i&&W(e,t,r,n,N(n,t))}function ye(e,t,n,r,i){Q(e,t,n,r,`pages`,i)}function be(){let e=window.navigation;return!!(e&&typeof e.addEventListener==`function`&&typeof e.navigate==`function`)}function xe(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 Se(e,t){if(!e)return;let n=e.querySelector(`shadow-claw-chat`);n&&typeof n.setActivityLogCollapsedOverride==`function`&&n.setActivityLogCollapsedOverride(t)}function Ce(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 we(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),Se(e.shadowRoot,e.activityLogCollapsedOverride),Ce(e.shadowRoot,e.activityLogCollapsedOverride)}function Te(e){e.headerMainCollapsedOverride=!(typeof e.headerMainCollapsedOverride==`boolean`?e.headerMainCollapsedOverride:z(e.shadowRoot)?.isMainCollapsed?.()??!1),L(e.shadowRoot,e.headerMainCollapsedOverride),B(e.shadowRoot,e.headerMainCollapsedOverride)}function Ee(e,t){t.terminalVisible=!t.terminalVisible,V(e,t.currentPage,t.terminalVisible,t.vmStatus),I(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame)}function De(e,t){e===T.Dark?(t.add(`dark-mode`),t.remove(`light-mode`)):(t.add(`light-mode`),t.remove(`dark-mode`))}function Oe(e,t){if(!e)return;let n=e.querySelector(`.sun-icon`),r=e.querySelector(`.moon-icon`);n&&r&&(t===T.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 ke(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||N(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`)})}),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),he(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`,()=>{Te(r)}),n.querySelector(`.activity-log-toggle`)?.addEventListener(`click`,()=>{we(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=>{ye(n,r,a,i,!!e.detail?.hidden)}),n.addEventListener(`sidebar-chat-visibility-change`,e=>{Q(n,r,a,i,`chat`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-tasks-visibility-change`,e=>{Q(n,r,a,i,`tasks`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-files-visibility-change`,e=>{Q(n,r,a,i,`files`,!!e.detail?.hidden)}),n.addEventListener(`chat-split-view-change`,e=>{r.chatSplitViewEnabled=!!e.detail?.enabled,W(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===T.Dark?T.Light:T.Dark;s.setTheme(t)}),n.querySelector(`.webvm-toggle`)?.addEventListener(`click`,()=>Ee(n,r)),n.addEventListener(`shadow-claw-terminal-slot-ready`,()=>{I(n,r.currentPage,r.terminalElement,r.terminalVisible,r.terminalPlacementFrame),L(n,r.headerMainCollapsedOverride),B(n,r.headerMainCollapsedOverride)}),e.addEventListener(`resize`,()=>{r.headerMainCollapsedOverride===null&&B(n,r.headerMainCollapsedOverride)}),t.addEventListener(`shadow-claw-navigate`,r.shadowClawNav),be()?(e.navigation.addEventListener(`navigate`,r.handleNavigationApiNavigate),r.navigationListenerAttached=!0):(r.popstateListener=()=>{K(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;Oe(n,t),De(t,r.classList)}),e.addEventListener(`shadow-claw-peer-error`,e=>{let r=e.detail,i=r.remotePeerId,a=r.error;X(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;Oe(n,p),De(p,r.classList),r.appLifecycleCleanup&&=(r.appLifecycleCleanup(),null),r.orchestrator&&(r.appLifecycleCleanup=xe(e,t,r.orchestrator))}function Ae(e){if(e===void 0)return;e.documentElement.classList.remove(re,`sc-prerender-override`);let t=e.querySelector(`shadow-claw`);t?.removeAttribute(ae),t?.removeAttribute(ie)}function je(e,n){if(!e)return;let r=n;if(r.navigationType===`reload`)return;let i=r?.destination?.url;if(typeof i!=`string`)return;let a=new URL(i);if(a.origin===window.location.origin&&t(a.pathname))return{parsedUrl:a,navigateEvent:r}}function Me(e,n){if(n.defaultPrevented||n.button!==0||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey)return null;let r=n.composedPath(),i=null;for(let e of r)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||!t(i.pathname)||i.pathname===e.pathname&&i.search===e.search&&i.hash!==e.hash?null:(n.preventDefault(),`${i.pathname}${i.search}${i.hash}`)}async function Ne(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 Pe(e,t,n,r){let i=await Ne(e,t,r);ee(n.orchestrator,r.id,i)}async function Fe(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}x(`Failed to open file from tool: ${e instanceof Error?e.message:String(e)}`,5e3);return}}async function Ie(e,t,n){n?.providerId===`llamafile`?await X(e,t,p(n.reason)):n?.providerId===`transformers_js_local`?await X(e,t,h(n.reason)):n?.providerId===`prompt_api`?await X(e,t,se(n.reason)):n?.providerId&&n.helpType&&await X(e,t,f(n.providerId,n.helpType,n.reason))}async function Le(e,t,n,r,i,a){if(!(!r||!a?.roomId||!a?.hostPeerId)&&await X(e,t,{mode:`confirm`,title:`Room invitation`,message:`${a.fromAlias||a.fromPeerId} invited you to join "${a.roomName}".`,confirmLabel:`Join`,cancelLabel:`Decline`}))try{c(n.orchestrator,a.roomId,a.hostPeerId,a.roomName),await i.switchConversation(r,`room:${a.roomId}`),W(t,n,r,i,`chat`),b(`Joined room "${a.roomName}"`)}catch(e){x(`Failed to join room: ${e instanceof Error?e.message:String(e)}`,6e3)}}function Re(e,t,n){let r=n.useTrailingSlash&&!t.includes(`#`)?t.endsWith(`/`)?t:t+`/`:t;n.replace?e.replaceState({},``,r):e.pushState({},``,r)}async function ze(e,t,i,a,o,s,c={replace:!1}){let l=n(r(s));if(be()){window.navigation.navigate(l,{history:c.replace?`replace`:`push`});return}l!==window.location.pathname&&Re(globalThis.history,l,{...c,useTrailingSlash:!1}),await G(e,t,i,a,o,s)}function Be(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 Ve(e,t,n,r,i,a){let o=a.detail;o&&await ze(e,t,n,r,i,{page:Be(String(o.page||`chat`)),groupId:o.groupId,path:o.path,anchor:o.anchor})}async function He(e,t,n,r){await ve(e,t,n,r)}async function Ue(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=_(r),s=a.myPeerId;s||=y().toLowerCase();let c=new Set(a.trustedPeerIds);c.add(o),await C(r,n,s,Array.from(c),a.serverHost,a.serverPort,a.serverPath,a.serverSecure),a.enabled||await v(r,n,`peerjs`,!0);let l=await g.ensurePeerConversation(n,o);await g.switchConversation(n,l),W(e,t,n,g,`chat`),i.searchParams.delete(`peer`);let u=`${i.pathname}${i.search}${i.hash}`;window.history.replaceState({},``,u||`/`),b(`Connected to Peer: ${o.substring(0,8)}`)}catch(e){x(`Failed to process peer parameter: ${e instanceof Error?e.message:String(e)}`,6e3)}}const We=`pendingShares`;function Ge(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 Ke(e){return!e||typeof e.transaction!=`function`?[]:new Promise((t,n)=>{let r;try{r=e.transaction(We,`readwrite`)}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`){t([]);return}n(e);return}let i=r.objectStore(We),a=i.getAll();a.onerror=()=>{n(a.error||Error(`Failed to read pending shares`))},a.onsuccess=()=>{let e=Array.isArray(a.result)?a.result.map(Ge).filter(e=>typeof e.id==`string`&&e.id.length>0).sort((e,t)=>e.createdAt-t.createdAt):[],r=i.clear();r.onerror=()=>{n(r.error||Error(`Failed to clear pending shares`))},r.onsuccess=()=>{t(e)}},r.onabort=()=>{n(r.error||Error(`Pending share transaction aborted`))}})}function qe(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-D4lVqMs8.js";import{c as t,n,r,u as i}from"./app-routes-BMQ4HFaM.js";import{i as a}from"./txPromise-C2iYogHX.js";import{t as o}from"./getConfig-4saf0Tkq.js";import{t as s}from"./dist-B9m1QM9v.js";import{R as c,Vt as l,a as u,c as d,in as f,lt as p,o as m,st as h,t as g,vt as _,w as ee,xt as v}from"./orchestrator-0BnBtxHO.js";import{o as te}from"./tools-BCttQkSs.js";import{t as ne}from"./setConfig-DdSThoKj.js";import{t as y}from"./ulid-BY7rQVLN.js";import{a as b,r as x}from"./toast-BXgUfbyh.js";import{n as re,r as ie,t as ae}from"./constants-DiETpg52.js";import{t as oe}from"./shadow-claw-element-DIrv3P6A.js";import{t as S}from"./effect-BJCrpFdp.js";import{t as se}from"./prompt-api-OUOP-B-R.js";import{t as C}from"./configurePeerJs-BrHeJGw1.js";import{t as w}from"./file-viewer-CKrQoxZi.js";import{t as ce}from"./parseConfigBoolean-ByjZr9OM.js";const T={Light:`light`,Dark:`dark`,System:`system`},E=`shadow-claw-theme`;function le(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function D(e){return e===`system`?le():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=u(E)||`system`,A=D(k);O(A);const j=new class{_resolved;_theme;constructor(){this._theme=new s.State(k),this._resolved=new s.State(A)}getTheme(){return{theme:this.theme,resolved:this.resolved}}init(){typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=le();d(E,`system`),O(e),this._theme.set(`system`),this._resolved.set(e)}),window.addEventListener(`storage`,e=>{let t=m(E);e.key===t&&e.newValue&&this.setTheme(e.newValue)})}get resolved(){return this._resolved.get()}setTheme(e){let t=D(e);d(E,e),O(t),this._theme.set(e),this._resolved.set(t)}get theme(){return this._theme.get()}};j.init();async function M(e,t=3){for(let n=0;n<t;n++){if(e())return;await new Promise(e=>{requestAnimationFrame(()=>e())})}}function N(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 ue(e,t,n){return n&&t===`pages`?N(e):t}function de(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 fe(e,t,n,r){let i=n;if(!i)return;let a=de(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 pe={pages:()=>import(`./shadow-claw-pages-BVFNSSb1.js`),chat:()=>import(`./shadow-claw-chat-BeHlAjnA.js`),tasks:()=>import(`./shadow-claw-tasks-CkF1uMeZ.js`),files:()=>import(`./shadow-claw-files-DeZZYt01.js`),settings:()=>import(`./shadow-claw-settings-B3sHxPh9.js`),tools:()=>import(`./shadow-claw-tools-iw0fljud.js`),channels:()=>import(`./shadow-claw-channels-DSijinZ9.js`),terminal:()=>import(`./shadow-claw-terminal-CnHhcpA-.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-B67000Mm.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-gOiW-_Bh.js`)},P=new Map;async function F(e){let t=P.get(e);if(!t){let n=pe[e];n?(t=n().then(()=>void 0),P.set(e,t)):t=Promise.resolve()}await t}function I(e,t,n,r,i){r&&F(`terminal`).catch(console.error),i!==null&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=null,fe(e,t,n,r)})}function me(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 L(e,t){if(e)for(let n of me(e))n.setMainCollapsedOverride?.(t)}function R(e,t,n){if(!e)return;let r=e.querySelector(`.activity-log-toggle`);r instanceof HTMLButtonElement&&(r.hidden=t!==`chat`||n===0)}function z(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 B(e,t){if(!e)return;let n=e.querySelector(`.header-main-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof t==`boolean`?t:z(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 V(e,t,n,r){if(!e)return;let i=e.querySelector(`.webvm-toggle`);if(!(i instanceof HTMLButtonElement))return;let a=t===`chat`||t===`files`;if(i.hidden=!a,i.classList.toggle(`hidden`,!a),i.classList.remove(`webvm-toggle--hidden`,`webvm-toggle--visible`,`webvm-toggle--booting`,`webvm-toggle--ready`,`webvm-toggle--error`),!a){i.classList.add(`webvm-toggle--error`);return}i.classList.add(n?`webvm-toggle--visible`:`webvm-toggle--hidden`),r.ready?i.classList.add(`webvm-toggle--ready`):(r.booting||r.bootAttempted)&&i.classList.add(`webvm-toggle--booting`),i.setAttribute(`aria-label`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`title`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`aria-pressed`,String(n))}const H={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 U(e,t){let n=H[t];if(!n)return;let r=e.querySelector(`[data-page-id="${t}"]`);!r||r.children.length>0||r.appendChild(document.createElement(n))}function W(e,t,n,r,i,a=!0){if(!e)return;let o=ue(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=H.chat;t&&customElements.get(t)?U(e,`chat`):F(`chat`).then(()=>{e&&U(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=H[o];u&&customElements.get(u)?U(e,o):F(o).then(()=>{e&&U(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),I(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame),L(e,t.headerMainCollapsedOverride),B(e,t.headerMainCollapsedOverride),R(e,t.currentPage,r.activityLog.length),V(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())}}async function G(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&&W(e,t,n,i,u),u===`files`&&c)if(/\.[^./]+$/u.test(c))try{await r.openFile(n,c,s||i.activeGroupId),l&&await M(()=>{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)await i.setActivePinnedPage(n,{groupId:s||i.activeGroupId||`br:main`,path:c});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 M(()=>typeof t.handleAnchorNavigation==`function`&&!!t.handleAnchorNavigation(l)))}}async function K(e,t,n,r,a,o){let s=await i(o,a.activeGroupId);s&&await G(e,t,n,r,a,s)}function q(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 J(t,n){if(t)try{await ne(t,e.SIDEBAR_WIDTH,n)}catch{}}function Y(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return;let r=q(e,t);n.style.setProperty(`--sidebar-width`,`${r}px`)}async function he(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 s=()=>{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},c=()=>{let e=Math.round(q(t,s())),n=Math.round(q(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 o(i,e.SIDEBAR_WIDTH):void 0;typeof n==`number`&&Number.isFinite(n)&&n>0?Y(t,n):Y(t,250)}catch{Y(t,250)}let l=null,u=0,d=0,f=e=>{if(e.pointerId!==l)return;let n=e.clientX-u;Y(t,d+n),c()},p=()=>{if(l===null)return;l=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&&J(i,t)}},m=e=>{e.pointerId===l&&p()};a.addEventListener(`pointerdown`,e=>{e.pointerType===`mouse`&&e.button!==0&&e.button!==-1||window.innerWidth<896||(e.preventDefault(),l=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`,()=>{Y(t,250),i&&J(i,250),c()}),a.addEventListener(`keydown`,e=>{if(window.innerWidth<896)return;let n=e.shiftKey?32:12,r=s(),a=null;e.key===`ArrowRight`?a=r+n:e.key===`ArrowLeft`?a=r-n:e.key===`Home`?a=200:e.key===`End`&&(a=q(t,2**53-1)),a!==null&&(e.preventDefault(),Y(t,a),c(),i&&J(i,q(t,s())))}),c(),n.addCleanup(()=>{p(),a.removeEventListener(`pointerup`,m),a.removeEventListener(`pointercancel`,p)})}async function X(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 ge={pages:e.SIDEBAR_PAGES_HIDDEN,chat:e.SIDEBAR_CHAT_HIDDEN,tasks:e.SIDEBAR_TASKS_HIDDEN,files:e.SIDEBAR_FILES_HIDDEN};function Z(e,t,n){if(!e)return;let r=e.querySelector(`.nav-item[data-page="${t}"]`);r&&(r.hidden=n,r.setAttribute(`aria-hidden`,String(n)))}function _e(e){switch(e){case`pages`:return`pagesSidebarHidden`;case`chat`:return`chatSidebarHidden`;case`tasks`:return`tasksSidebarHidden`;case`files`:return`filesSidebarHidden`}}async function ve(e,t,n,r){for(let[n,i]of Object.entries(ge)){let a=n,s=!1;if(r)try{s=ce(await o(r,i))}catch{s=!1}let c=_e(a);t[c]=s,Z(e,a,s)}}function Q(e,t,n,r,i,a){switch(i){case`pages`:t.pagesSidebarHidden=a;break;case`chat`:t.chatSidebarHidden=a;break;case`tasks`:t.tasksSidebarHidden=a;break;case`files`:t.filesSidebarHidden=a;break}Z(e,i,a),a&&t.currentPage===i&&W(e,t,r,n,N(n,t))}function ye(e,t,n,r,i){Q(e,t,n,r,`pages`,i)}function be(){let e=window.navigation;return!!(e&&typeof e.addEventListener==`function`&&typeof e.navigate==`function`)}function xe(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 Se(e,t){if(!e)return;let n=e.querySelector(`shadow-claw-chat`);n&&typeof n.setActivityLogCollapsedOverride==`function`&&n.setActivityLogCollapsedOverride(t)}function Ce(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 we(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),Se(e.shadowRoot,e.activityLogCollapsedOverride),Ce(e.shadowRoot,e.activityLogCollapsedOverride)}function Te(e){e.headerMainCollapsedOverride=!(typeof e.headerMainCollapsedOverride==`boolean`?e.headerMainCollapsedOverride:z(e.shadowRoot)?.isMainCollapsed?.()??!1),L(e.shadowRoot,e.headerMainCollapsedOverride),B(e.shadowRoot,e.headerMainCollapsedOverride)}function Ee(e,t){t.terminalVisible=!t.terminalVisible,V(e,t.currentPage,t.terminalVisible,t.vmStatus),I(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame)}function De(e,t){e===T.Dark?(t.add(`dark-mode`),t.remove(`light-mode`)):(t.add(`light-mode`),t.remove(`dark-mode`))}function Oe(e,t){if(!e)return;let n=e.querySelector(`.sun-icon`),r=e.querySelector(`.moon-icon`);n&&r&&(t===T.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 ke(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||N(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`)})}),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),he(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`,()=>{Te(r)}),n.querySelector(`.activity-log-toggle`)?.addEventListener(`click`,()=>{we(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=>{ye(n,r,a,i,!!e.detail?.hidden)}),n.addEventListener(`sidebar-chat-visibility-change`,e=>{Q(n,r,a,i,`chat`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-tasks-visibility-change`,e=>{Q(n,r,a,i,`tasks`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-files-visibility-change`,e=>{Q(n,r,a,i,`files`,!!e.detail?.hidden)}),n.addEventListener(`chat-split-view-change`,e=>{r.chatSplitViewEnabled=!!e.detail?.enabled,W(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===T.Dark?T.Light:T.Dark;s.setTheme(t)}),n.querySelector(`.webvm-toggle`)?.addEventListener(`click`,()=>Ee(n,r)),n.addEventListener(`shadow-claw-terminal-slot-ready`,()=>{I(n,r.currentPage,r.terminalElement,r.terminalVisible,r.terminalPlacementFrame),L(n,r.headerMainCollapsedOverride),B(n,r.headerMainCollapsedOverride)}),e.addEventListener(`resize`,()=>{r.headerMainCollapsedOverride===null&&B(n,r.headerMainCollapsedOverride)}),t.addEventListener(`shadow-claw-navigate`,r.shadowClawNav),be()?(e.navigation.addEventListener(`navigate`,r.handleNavigationApiNavigate),r.navigationListenerAttached=!0):(r.popstateListener=()=>{K(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;Oe(n,t),De(t,r.classList)}),e.addEventListener(`shadow-claw-peer-error`,e=>{let r=e.detail,i=r.remotePeerId,a=r.error;X(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;Oe(n,p),De(p,r.classList),r.appLifecycleCleanup&&=(r.appLifecycleCleanup(),null),r.orchestrator&&(r.appLifecycleCleanup=xe(e,t,r.orchestrator))}function Ae(e){if(e===void 0)return;e.documentElement.classList.remove(re,`sc-prerender-override`);let t=e.querySelector(`shadow-claw`);t?.removeAttribute(ae),t?.removeAttribute(ie)}function je(e,n){if(!e)return;let r=n;if(r.navigationType===`reload`)return;let i=r?.destination?.url;if(typeof i!=`string`)return;let a=new URL(i);if(a.origin===window.location.origin&&t(a.pathname))return{parsedUrl:a,navigateEvent:r}}function Me(e,n){if(n.defaultPrevented||n.button!==0||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey)return null;let r=n.composedPath(),i=null;for(let e of r)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||!t(i.pathname)||i.pathname===e.pathname&&i.search===e.search&&i.hash!==e.hash?null:(n.preventDefault(),`${i.pathname}${i.search}${i.hash}`)}async function Ne(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 Pe(e,t,n,r){let i=await Ne(e,t,r);ee(n.orchestrator,r.id,i)}async function Fe(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}x(`Failed to open file from tool: ${e instanceof Error?e.message:String(e)}`,5e3);return}}async function Ie(e,t,n){n?.providerId===`llamafile`?await X(e,t,p(n.reason)):n?.providerId===`transformers_js_local`?await X(e,t,h(n.reason)):n?.providerId===`prompt_api`?await X(e,t,se(n.reason)):n?.providerId&&n.helpType&&await X(e,t,f(n.providerId,n.helpType,n.reason))}async function Le(e,t,n,r,i,a){if(!(!r||!a?.roomId||!a?.hostPeerId)&&await X(e,t,{mode:`confirm`,title:`Room invitation`,message:`${a.fromAlias||a.fromPeerId} invited you to join "${a.roomName}".`,confirmLabel:`Join`,cancelLabel:`Decline`}))try{c(n.orchestrator,a.roomId,a.hostPeerId,a.roomName),await i.switchConversation(r,`room:${a.roomId}`),W(t,n,r,i,`chat`),b(`Joined room "${a.roomName}"`)}catch(e){x(`Failed to join room: ${e instanceof Error?e.message:String(e)}`,6e3)}}function Re(e,t,n){let r=n.useTrailingSlash&&!t.includes(`#`)?t.endsWith(`/`)?t:t+`/`:t;n.replace?e.replaceState({},``,r):e.pushState({},``,r)}async function ze(e,t,i,a,o,s,c={replace:!1}){let l=n(r(s));if(be()){window.navigation.navigate(l,{history:c.replace?`replace`:`push`});return}l!==window.location.pathname&&Re(globalThis.history,l,{...c,useTrailingSlash:!1}),await G(e,t,i,a,o,s)}function Be(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 Ve(e,t,n,r,i,a){let o=a.detail;o&&await ze(e,t,n,r,i,{page:Be(String(o.page||`chat`)),groupId:o.groupId,path:o.path,anchor:o.anchor})}async function He(e,t,n,r){await ve(e,t,n,r)}async function Ue(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=_(r),s=a.myPeerId;s||=y().toLowerCase();let c=new Set(a.trustedPeerIds);c.add(o),await C(r,n,s,Array.from(c),a.serverHost,a.serverPort,a.serverPath,a.serverSecure),a.enabled||await v(r,n,`peerjs`,!0);let l=await g.ensurePeerConversation(n,o);await g.switchConversation(n,l),W(e,t,n,g,`chat`),i.searchParams.delete(`peer`);let u=`${i.pathname}${i.search}${i.hash}`;window.history.replaceState({},``,u||`/`),b(`Connected to Peer: ${o.substring(0,8)}`)}catch(e){x(`Failed to process peer parameter: ${e instanceof Error?e.message:String(e)}`,6e3)}}const We=`pendingShares`;function Ge(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 Ke(e){return!e||typeof e.transaction!=`function`?[]:new Promise((t,n)=>{let r;try{r=e.transaction(We,`readwrite`)}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`){t([]);return}n(e);return}let i=r.objectStore(We),a=i.getAll();a.onerror=()=>{n(a.error||Error(`Failed to read pending shares`))},a.onsuccess=()=>{let e=Array.isArray(a.result)?a.result.map(Ge).filter(e=>typeof e.id==`string`&&e.id.length>0).sort((e,t)=>e.createdAt-t.createdAt):[],r=i.clear();r.onerror=()=>{n(r.error||Error(`Failed to clear pending shares`))},r.onsuccess=()=>{t(e)}},r.onabort=()=>{n(r.error||Error(`Pending share transaction aborted`))}})}function qe(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 Je(e,t){let n=new Date,r=`Shared Files ${`${String(n.getFullYear())}-${String(n.getMonth()+1).padStart(2,`0`)}-${String(n.getDate()).padStart(2,`0`)}`}`,i=t.groups.find(e=>e.name===r);return i?(await t.switchConversation(e,i.groupId),i.groupId):(await t.createConversation(e,r)).groupId}function Ye(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 Xe(e,t,n,r,i,a,o){if(!a)return;let s=await Ke(a);if(s.length!==0)try{let c=await Je(a,r),u=[];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=Ye(t.fileName||(t.fileType===`application/pdf`?`${n}.pdf`:`${n}.bin`),n);await l(a,c,e,new Uint8Array(t.fileBytes)),u.push(e);continue}let r=Ye(t.fileName||`${n}.md`,n);await te(a,c,r,qe(t)),u.push(r)}await r.loadFiles(a),W(t,n,a,r,`files`),u.length>0&&await i.openFile(a,u[0],c),b(`Imported ${u.length} shared item${u.length===1?``:`s`}.`);let d=o;if(d.searchParams.has(`share-target`)){d.searchParams.delete(`share-target`);let t=`${d.pathname}${d.search}${d.hash}`;e.history.replaceState({},``,t||`/`)}}catch(e){x(`Failed to import shared content: ${e instanceof Error?e.message:String(e)}`,6e3)}}async function Ze(e,t,n,r,i,a){if(!r)return;let o=new URL(window.location?.href||`http://localhost/`),s=(o.searchParams.get(`room`)||``).trim(),l=(o.searchParams.get(`host`)||``).trim(),u=(o.searchParams.get(`name`)||``).trim()||`Room`;if(!(!s||!l))try{let d=_(i),f=d.myPeerId;f||=y().toLowerCase();let p=new Set(d.trustedPeerIds);p.add(l),await C(i,r,f,Array.from(p),d.serverHost,d.serverPort,d.serverPath,d.serverSecure),d.enabled||await v(i,r,`peerjs`,!0),c(i,s,l,u),await a.switchConversation(r,`room:${s}`),W(t,n,r,a,`chat`),o.searchParams.delete(`room`),o.searchParams.delete(`host`),o.searchParams.delete(`name`);let m=`${o.pathname}${o.search}${o.hash}`;e.history.replaceState({},``,m||`/`),b(`Joined room "${u}"`)}catch(e){x(`Failed to join room: ${e instanceof Error?e.message:String(e)}`,6e3)}}function Qe(e,t,n,r){e&&(S(()=>{let t=w.file;t&&(F(`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`&&F(`pdf-viewer`).catch(console.error))}),S(()=>{let e=r.state;e===`idle`&&(t.previousOrchestratorState===`thinking`||t.previousOrchestratorState===`responding`)&&b(`Response complete`,2500),t.previousOrchestratorState=e}),S(()=>{let i=r.activePage;i!==t.currentPage&&W(e,t,n,r,i,!1)}),S(()=>{r.activityLog,R(e,t.currentPage,r.activityLog.length)}))}const $e=new CSSStyleSheet;$e.replaceSync(`*,
4
4
  *::before,
@@ -1121,4 +1121,4 @@ shadow-claw-conversations {
1121
1121
  </shadow-claw-dialog>
1122
1122
  </div>
1123
1123
  </template>
1124
- `,`text/html`),et=$.querySelector(`template`);let tt=[];tt=et?Array.from(et.content.children):Array.from($.head.children).concat(Array.from($.body.children));var nt=tt;const rt=`shadow-claw`;var it=class extends oe{static styles=$e;static template=nt;activityLogCollapsedOverride=null;appLifecycleCleanup=null;chatSidebarHidden=!1;chatSplitViewEnabled=!1;currentPage=g.sidebarDefaultPage;db=null;fallbackClickListenerAttached=!1;filesSidebarHidden=!1;headerMainCollapsedOverride=null;navigationListenerAttached=!1;orchestrator;pagesSidebarHidden=!1;popstateListener=null;previousOrchestratorState=`idle`;tasksSidebarHidden=!1;terminalElement=null;terminalPlacementFrame=null;terminalVisible=!1;vmStatus={ready:!1,booting:!1,bootAttempted:!1,error:null};vmStatusCleanup=null;constructor(){super()}async connectedCallback(){if(!this.shadowRoot)throw Error(`shadowRoot not found`);try{let{Orchestrator:e}=await import(`./orchestrator-TndREZPL.js`);Promise.all([import(`./shadow-claw-conversations-C26t1HXN.js`),import(`./shadow-claw-dialog-BrOwAOdk.js`),import(`./shadow-claw-toast-C_zXWKX9.js`)]).catch(console.error),await new Promise(e=>{`requestIdleCallback`in window?window.requestIdleCallback(()=>e(null)):setTimeout(e,0)}),this.orchestrator||=new e,this.db=await this.orchestrator.init(),await g.init(this.db,this.orchestrator),a(this.db),await this.render();let t=g.activePage===`pages`&&this.pagesSidebarHidden||g.activePage===`chat`&&this.chatSidebarHidden||g.activePage===`tasks`&&this.tasksSidebarHidden||g.activePage===`files`&&this.filesSidebarHidden;g.hadPersistedActivePage&&!t?W(this.shadowRoot,this,this.db,g,g.activePage,!1):t?W(this.shadowRoot,this,this.db,g,N(g,this),!1):W(this.shadowRoot,this,this.db,g,g.activePage,!1),await K(this.shadowRoot,this,this.db,w,g,new URL(window.location.href)),await Ue(this.shadowRoot,this,this.db,this.orchestrator),await Ze(window,this.shadowRoot,this,this.db,this.orchestrator,g),await Xe(window,this.shadowRoot,this,g,w,this.db,new URL(window.location.href)),console.log(`ShadowClaw UI initialized`),typeof customElements<`u`&&await customElements.whenDefined(`shadow-claw-${this.currentPage}`);let{isMemoryStorageFallbackActive:n}=await import(`./memoryStorage-Bew1X8Uy.js`).then(e=>e.n);if(n()){let{showWarning:e}=await import(`./toast-BXgUfbyh.js`).then(e=>e.c);e(`Private Browsing / Limited Storage: Operating in temporary in-memory mode. Files and changes will not persist across page reloads.`,7e3)}g.setReady()}finally{Ae(document)}}disconnectedCallback(){if(super.disconnectedCallback(),this.vmStatusCleanup&&=(this.vmStatusCleanup(),null),this.appLifecycleCleanup&&=(this.appLifecycleCleanup(),null),this.terminalPlacementFrame!==null&&(cancelAnimationFrame(this.terminalPlacementFrame),this.terminalPlacementFrame=null),document.removeEventListener(`shadow-claw-navigate`,this.shadowClawNav),this.popstateListener&&=(window.removeEventListener(`popstate`,this.popstateListener),null),this.fallbackClickListenerAttached&&=(document.removeEventListener(`click`,this.fallbackClickListener),!1),this.navigationListenerAttached){let e=window.navigation;e&&typeof e.removeEventListener==`function`&&e.removeEventListener(`navigate`,this.handleNavigationApiNavigate),this.navigationListenerAttached=!1}}addCleanup(e){super.addCleanup(e)}fallbackClickListener=e=>{if(typeof window>`u`||!window.location)return;let t=Me(window.location,e);t&&(Re(globalThis.history,t,{replace:!1,useTrailingSlash:!1}),K(this.shadowRoot,this,this.db,w,g,new URL(window.location.href)))};handleNavigationApiNavigate=e=>{let{parsedUrl:t,navigateEvent:n}=je(this.db,e)??{};!t||!n||typeof n.intercept==`function`&&n.intercept({handler:async()=>{let{parseRouteFromUrlAsync:e}=await import(`./app-routes-BMQ4HFaM.js`).then(e=>e.t),n=await e(t,g.activeGroupId);n&&await G(this.shadowRoot,this,this.db,w,g,n)}})};shadowClawNav=e=>{!this.shadowRoot||!this.db||Ve(this.shadowRoot,this,this.db,w,g,e)};async render(){if(ke(window,document,this.shadowRoot,this,this.db,g,w,j,new URL(window.location.href)),await He(this.shadowRoot,this,g,this.db),this.db)try{let{getConfig:e}=await import(`./getConfig-4saf0Tkq.js`).then(e=>e.n),{parseConfigBoolean:t}=await import(`./parseConfigBoolean-ByjZr9OM.js`).then(e=>e.n),{CONFIG_KEYS:n}=await import(`./config-D4lVqMs8.js`).then(e=>e.k),r=await e(this.db,n.CHAT_SPLIT_VIEW_ENABLED);this.chatSplitViewEnabled=t(r)}catch{this.chatSplitViewEnabled=!1}let e=this.shadowRoot?.querySelector(`.chat-split-resize-handle`);if(this.shadowRoot&&e instanceof HTMLElement){let{initChatSplitResize:t}=await import(`./initChatSplitResize-osJXM2gu.js`);await t(this.shadowRoot,this,e,this.db)}this.terminalElement=document.createElement(`shadow-claw-terminal`),this.terminalElement&&(this.terminalElement.orchestrator=this.orchestrator),V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus),I(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame),L(this.shadowRoot,this.headerMainCollapsedOverride),B(this.shadowRoot,this.headerMainCollapsedOverride),R(this.shadowRoot,this.currentPage,g.activityLog.length);let t=e=>{this.vmStatus=e,e.error&&this.terminalVisible&&(this.terminalVisible=!1,this.terminalElement&&(this.terminalElement.hidden=!0),I(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame)),V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus)};this.vmStatus=this.orchestrator.vmStatus||this.vmStatus,V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus),this.orchestrator.events.on?.(`vm-status`,t),this.vmStatusCleanup=()=>{this.orchestrator.events.off?.(`vm-status`,t)},this.orchestrator.events.on(`open-file`,e=>Fe(this.db,g,w,e)),this.orchestrator.events.on(`provider-help`,e=>Ie(document,this.shadowRoot,e)),this.orchestrator.events.on(`room-invite`,e=>Le(document,this.shadowRoot,this,this.db,g,e)),this.orchestrator.events.on(`ask-user`,e=>Pe(document,this.shadowRoot,this,e)),Qe(this.shadowRoot,this,this.db,g)}async requestDialog(e){return X(document,this.shadowRoot,e)}};customElements.get(rt)||customElements.define(rt,it);
1124
+ `,`text/html`),et=$.querySelector(`template`);let tt=[];tt=et?Array.from(et.content.children):Array.from($.head.children).concat(Array.from($.body.children));var nt=tt;const rt=`shadow-claw`;var it=class extends oe{static styles=$e;static template=nt;activityLogCollapsedOverride=null;appLifecycleCleanup=null;chatSidebarHidden=!1;chatSplitViewEnabled=!1;currentPage=g.sidebarDefaultPage;db=null;fallbackClickListenerAttached=!1;filesSidebarHidden=!1;headerMainCollapsedOverride=null;navigationListenerAttached=!1;orchestrator;pagesSidebarHidden=!1;popstateListener=null;previousOrchestratorState=`idle`;tasksSidebarHidden=!1;terminalElement=null;terminalPlacementFrame=null;terminalVisible=!1;vmStatus={ready:!1,booting:!1,bootAttempted:!1,error:null};vmStatusCleanup=null;constructor(){super()}async connectedCallback(){if(!this.shadowRoot)throw Error(`shadowRoot not found`);try{let{Orchestrator:e}=await import(`./orchestrator-C3GKZriH.js`);Promise.all([import(`./shadow-claw-conversations-Bb_2bVLJ.js`),import(`./shadow-claw-dialog-BrOwAOdk.js`),import(`./shadow-claw-toast-C_zXWKX9.js`)]).catch(console.error),await new Promise(e=>{`requestIdleCallback`in window?window.requestIdleCallback(()=>e(null)):setTimeout(e,0)}),this.orchestrator||=new e,this.db=await this.orchestrator.init(),await g.init(this.db,this.orchestrator),a(this.db),await this.render();let t=g.activePage===`pages`&&this.pagesSidebarHidden||g.activePage===`chat`&&this.chatSidebarHidden||g.activePage===`tasks`&&this.tasksSidebarHidden||g.activePage===`files`&&this.filesSidebarHidden;g.hadPersistedActivePage&&!t?W(this.shadowRoot,this,this.db,g,g.activePage,!1):t?W(this.shadowRoot,this,this.db,g,N(g,this),!1):W(this.shadowRoot,this,this.db,g,g.activePage,!1),await K(this.shadowRoot,this,this.db,w,g,new URL(window.location.href)),await Ue(this.shadowRoot,this,this.db,this.orchestrator),await Ze(window,this.shadowRoot,this,this.db,this.orchestrator,g),await Xe(window,this.shadowRoot,this,g,w,this.db,new URL(window.location.href)),console.log(`ShadowClaw UI initialized`),typeof customElements<`u`&&await customElements.whenDefined(`shadow-claw-${this.currentPage}`);let{isMemoryStorageFallbackActive:n}=await import(`./memoryStorage-Bew1X8Uy.js`).then(e=>e.n);if(n()){let{showWarning:e}=await import(`./toast-BXgUfbyh.js`).then(e=>e.c);e(`Private Browsing / Limited Storage: Operating in temporary in-memory mode. Files and changes will not persist across page reloads.`,7e3)}g.setReady()}finally{Ae(document)}}disconnectedCallback(){if(super.disconnectedCallback(),this.vmStatusCleanup&&=(this.vmStatusCleanup(),null),this.appLifecycleCleanup&&=(this.appLifecycleCleanup(),null),this.terminalPlacementFrame!==null&&(cancelAnimationFrame(this.terminalPlacementFrame),this.terminalPlacementFrame=null),document.removeEventListener(`shadow-claw-navigate`,this.shadowClawNav),this.popstateListener&&=(window.removeEventListener(`popstate`,this.popstateListener),null),this.fallbackClickListenerAttached&&=(document.removeEventListener(`click`,this.fallbackClickListener),!1),this.navigationListenerAttached){let e=window.navigation;e&&typeof e.removeEventListener==`function`&&e.removeEventListener(`navigate`,this.handleNavigationApiNavigate),this.navigationListenerAttached=!1}}addCleanup(e){super.addCleanup(e)}fallbackClickListener=e=>{if(typeof window>`u`||!window.location)return;let t=Me(window.location,e);t&&(Re(globalThis.history,t,{replace:!1,useTrailingSlash:!1}),K(this.shadowRoot,this,this.db,w,g,new URL(window.location.href)))};handleNavigationApiNavigate=e=>{let{parsedUrl:t,navigateEvent:n}=je(this.db,e)??{};!t||!n||typeof n.intercept==`function`&&n.intercept({handler:async()=>{let{parseRouteFromUrlAsync:e}=await import(`./app-routes-BMQ4HFaM.js`).then(e=>e.t),n=await e(t,g.activeGroupId);n&&await G(this.shadowRoot,this,this.db,w,g,n)}})};shadowClawNav=e=>{!this.shadowRoot||!this.db||Ve(this.shadowRoot,this,this.db,w,g,e)};async render(){if(ke(window,document,this.shadowRoot,this,this.db,g,w,j,new URL(window.location.href)),await He(this.shadowRoot,this,g,this.db),this.db)try{let{getConfig:e}=await import(`./getConfig-4saf0Tkq.js`).then(e=>e.n),{parseConfigBoolean:t}=await import(`./parseConfigBoolean-ByjZr9OM.js`).then(e=>e.n),{CONFIG_KEYS:n}=await import(`./config-D4lVqMs8.js`).then(e=>e.k),r=await e(this.db,n.CHAT_SPLIT_VIEW_ENABLED);this.chatSplitViewEnabled=t(r)}catch{this.chatSplitViewEnabled=!1}let e=this.shadowRoot?.querySelector(`.chat-split-resize-handle`);if(this.shadowRoot&&e instanceof HTMLElement){let{initChatSplitResize:t}=await import(`./initChatSplitResize-osJXM2gu.js`);await t(this.shadowRoot,this,e,this.db)}this.terminalElement=document.createElement(`shadow-claw-terminal`),this.terminalElement&&(this.terminalElement.orchestrator=this.orchestrator),V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus),I(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame),L(this.shadowRoot,this.headerMainCollapsedOverride),B(this.shadowRoot,this.headerMainCollapsedOverride),R(this.shadowRoot,this.currentPage,g.activityLog.length);let t=e=>{this.vmStatus=e,e.error&&this.terminalVisible&&(this.terminalVisible=!1,this.terminalElement&&(this.terminalElement.hidden=!0),I(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame)),V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus)};this.vmStatus=this.orchestrator.vmStatus||this.vmStatus,V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus),this.orchestrator.events.on?.(`vm-status`,t),this.vmStatusCleanup=()=>{this.orchestrator.events.off?.(`vm-status`,t)},this.orchestrator.events.on(`open-file`,e=>Fe(this.db,g,w,e)),this.orchestrator.events.on(`provider-help`,e=>Ie(document,this.shadowRoot,e)),this.orchestrator.events.on(`room-invite`,e=>Le(document,this.shadowRoot,this,this.db,g,e)),this.orchestrator.events.on(`ask-user`,e=>Pe(document,this.shadowRoot,this,e)),Qe(this.shadowRoot,this,this.db,g)}async requestDialog(e){return X(document,this.shadowRoot,e)}};customElements.get(rt)||customElements.define(rt,it);
@@ -1,4 +1,4 @@
1
- import{r as e}from"./config-D4lVqMs8.js";import{c as t,d as n,i as r,n as i,o as a,s as o}from"./app-routes-BMQ4HFaM.js";import{r as s}from"./txPromise-C2iYogHX.js";import{t as c}from"./getConfig-4saf0Tkq.js";import{d as l,f as u,i as d,l as f,n as p,r as m,s as h,u as g}from"./custom-element-security-CU1rI7Pw.js";import{t as _,tn as v}from"./orchestrator-Baif6kmu.js";import{o as y,t as b}from"./tools-BCttQkSs.js";import{a as x,r as S}from"./toast-BXgUfbyh.js";import{t as C}from"./shadow-claw-element-DIrv3P6A.js";import{t as w}from"./effect-BJCrpFdp.js";import{t as T}from"./config-value-oBfKgLT4.js";import{n as E,r as D,t as O}from"./markdown-BwIoGEdD.js";import{t as k}from"./file-viewer-LEEStSq-.js";import"./shadow-claw-dialog-BrOwAOdk.js";import{a as A,c as j,i as M,l as N,n as P,o as F,r as I,s as L,t as R}from"./iframe-storage-proxy-BvRiccH0.js";const z=new CSSStyleSheet;z.replaceSync(`*,
1
+ import{r as e}from"./config-D4lVqMs8.js";import{c as t,d as n,i as r,n as i,o as a,s as o}from"./app-routes-BMQ4HFaM.js";import{r as s}from"./txPromise-C2iYogHX.js";import{t as c}from"./getConfig-4saf0Tkq.js";import{d as l,f as u,i as d,l as f,n as p,r as m,s as h,u as g}from"./custom-element-security-CU1rI7Pw.js";import{t as _,tn as v}from"./orchestrator-0BnBtxHO.js";import{o as y,t as b}from"./tools-BCttQkSs.js";import{a as x,r as S}from"./toast-BXgUfbyh.js";import{t as C}from"./shadow-claw-element-DIrv3P6A.js";import{t as w}from"./effect-BJCrpFdp.js";import{t as T}from"./config-value-oBfKgLT4.js";import{n as E,r as D,t as O}from"./markdown-BwIoGEdD.js";import{t as k}from"./file-viewer-CKrQoxZi.js";import"./shadow-claw-dialog-BrOwAOdk.js";import{a as A,c as j,i as M,l as N,n as P,o as F,r as I,s as L,t as R}from"./iframe-storage-proxy-BvRiccH0.js";const z=new CSSStyleSheet;z.replaceSync(`*,
2
2
  *::before,
3
3
  *::after {
4
4
  box-sizing: border-box;