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
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-DZ8YBXax.js";export{e as orchestratorStore};
@@ -0,0 +1 @@
1
+ import{t as e}from"./chunk-LIIpZlwP2.js";export{e as fetchDiscoveryManifest};
@@ -0,0 +1 @@
1
+ import{t as e}from"./chunk-ChefnX-r.js";export{e as importRemoteArtifacts};
@@ -1 +1 @@
1
- import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-DEy72ZNV2.js`)},o}catch{try{return o={...await import(`./chunk-DEy72ZNV2.js`)},o}catch(e){if(t(s))return o={...await import(r(s).href)},o;throw e}}}export{s as t};
1
+ import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-DNIduiJ82.js`)},o}catch{try{return o={...await import(`./chunk-DNIduiJ82.js`)},o}catch(e){if(t(s))return o={...await import(r(s).href)},o;throw e}}}export{s as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-BkKN8FNP.js";import{i as t}from"./chunk-DFLqhyP_.js";import{t as n}from"./chunk-Dhh0lHO62.js";import"dompurify";let r=[`youtube.com`,`youtube-nocookie.com`,`youtu.be`,`xt-ml.github.io`,`kherrick.github.io`];function i(e){e.map(e=>a(e)).filter(Boolean)}i(r);function a(e){let t=e.trim();if(!t)return()=>!1;if(t.startsWith(`/`)&&(t.endsWith(`/`)||/\/[gimuy]*$/.test(t)))try{let e=t.lastIndexOf(`/`),n=t.slice(1,e),r=t.slice(e+1),i=new RegExp(n,r||`i`);return e=>i.test(e)}catch{}if(t.includes(`^`)||t.includes(`$`)||t.includes(`(`)&&t.includes(`)`))try{let e=new RegExp(t,`i`);return t=>e.test(t)}catch{}if(t.startsWith(`*.`)){let e=t.slice(2).toLowerCase();return t=>{let n=t.toLowerCase();return n===e||n.endsWith(`.`+e)}}let n=t.toLowerCase();return e=>{let t=e.toLowerCase();return t===n||t.endsWith(`.`+n)}}const o=`shadowclaw`;let s;function c(){let e=globalThis.trustedTypes;return!e||typeof e.createPolicy!=`function`?null:e}function l(){if(s!==void 0)return s;let e=c();if(!e)return s=null,s;if(typeof e.getPolicy==`function`){let t=e.getPolicy(o);if(t)return s=t,s}try{s=e.createPolicy(o,{createHTML:e=>e,createScriptURL:e=>e})}catch{s=typeof e.getPolicy==`function`?e.getPolicy(o)??null:null}return s}function u(e){let t=l();return!t||typeof t.createScriptURL!=`function`?e:t.createScriptURL(e)}const d=[],f=[];let p=new Set(d.map(e=>e.toLowerCase().trim())),m=[...f];function h(e){e.map(e=>a(e)).filter(Boolean)}h(m);function g(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.toLowerCase().trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.toLowerCase().trim()).filter(Boolean):[]}function _(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.trim()).filter(Boolean):[]}function v(e){let t=g(e);p=new Set(t)}function y(e){let t=_(e);m=t,h(t)}function b(e){if(!e||typeof e!=`string`)return!1;let t=e.trim().toLowerCase();return!t.includes(`-`)||t===`shadow-claw`||t.startsWith(`shadow-claw-`)?!0:p.has(t)}const x=`allow-modals allow-scripts allow-popups allow-popups-to-escape-sandbox`,S=[`'self'`,`blob:`,`data:`],C=[`'self'`,`blob:`,`data:`],w=[`'self'`,`'unsafe-inline'`,`https:`,`http:`],T=[`'self'`,`blob:`,`data:`,`https:`,`http:`];let E=x;[...S],[...C],[...w],[...T];function D(e){E=Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean).join(` `):typeof e==`string`&&e.trim()?e.trim():x}function O(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&v(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&y(n),e.security?.iframeSandbox===void 0?(e.security?.allowSameOrigin===!0||e.security?.allowIframeSameOrigin===!0)&&(E.includes(`allow-same-origin`)||(E=`${E} allow-same-origin`.trim())):D(e.security.iframeSandbox),e.security?.workerSrc!==void 0&&_(e.security.workerSrc),e.security?.connectSrc!==void 0&&_(e.security.connectSrc),e.security?.scriptSrc!==void 0&&_(e.security.scriptSrc),e.security?.styleSrc!==void 0&&_(e.security.styleSrc),e.security?.imgSrc!==void 0&&_(e.security.imgSrc)}function k(){if(typeof document>`u`)return;let e=document.getElementById(`shadow-claw-site-config`);if(e&&e.textContent)try{O(JSON.parse(e.textContent))}catch{}}async function A(r){try{let i=r??await t();if(!i)return;let[a,o]=await Promise.all([n(i,e.ALLOWED_CUSTOM_ELEMENTS),n(i,e.ALLOWED_CUSTOM_ELEMENT_HOST_PATTERNS)]);if(typeof a==`string`&&a.trim())try{v(JSON.parse(a))}catch{v(a)}if(typeof o==`string`&&o.trim())try{y(JSON.parse(o))}catch{y(o)}}catch(e){console.warn(`Failed to load custom element security from db:`,e)}}let j=null,M=!1;function N(){k(),!(M||typeof customElements>`u`||typeof customElements.define!=`function`)&&(j=customElements.define.bind(customElements),customElements.define=function(e,t,n){if(!b((e||``).toLowerCase().trim())){let t=`[Security] Registration blocked: <${e}> is not an approved custom element.`;throw console.error(t),Error(t)}return j(e,t,n)},M=!0)}function P(e=typeof document<`u`?document.documentElement:null){if(typeof MutationObserver>`u`||!e)return null;if(typeof e.querySelectorAll==`function`)try{e.querySelectorAll(`*`).forEach(e=>{let t=e.tagName?e.tagName.toLowerCase():``;t.includes(`-`)&&!b(t)&&(console.warn(`[Security] Removing existing unapproved custom element: <${t}>`),e.remove())})}catch{}let t=new MutationObserver(e=>{for(let t of e)t.addedNodes.forEach(e=>{if(e.nodeType===1){let t=e,n=t.tagName?t.tagName.toLowerCase():``;n.includes(`-`)&&!b(n)&&(console.warn(`[Security] Removing unapproved custom element: <${n}>`),t.remove())}})});return t.observe(e,{childList:!0,subtree:!0}),t}function F(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return Promise.resolve(e.slice(0));let{buffer:t,byteOffset:n,byteLength:r}=e;return Promise.resolve(t.slice(n,n+r))}function I(e){return Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function L(e){let t=await F(e),n=globalThis.crypto?.subtle??globalThis.window?.crypto?.subtle??(typeof process<`u`?(await import(`node:crypto`)).webcrypto?.subtle:void 0);if(!n)throw Error(`crypto.subtle is not available in current environment`);return I(await n.digest(`SHA-256`,t))}const R=`.well-known/agent-skills/index.json`;function z(e){let t=e.trim();if(!t)throw Error(`URL cannot be empty`);let n=t;if(!n.startsWith(`http://`)&&!n.startsWith(`https://`)&&(n=`https://${n}`),n=n.replace(/\/+$/,``),n.endsWith(R)){let e=n.slice(0,-35).replace(/\/+$/,``);return{baseUrl:e,siteUrl:e,manifestUrl:n}}return{baseUrl:n,siteUrl:n,manifestUrl:`${n}/${R}`}}function B(e,t){if(!e)return``;try{return new URL(e,t).href}catch{return e}}function V(e,t){let n=JSON.parse(JSON.stringify(e));return Array.isArray(n.tools)&&(n.tools=n.tools.map(e=>({...e,url:B(e.url,t)}))),Array.isArray(n.scripts)&&(n.scripts=n.scripts.map(e=>({...e,url:B(e.url,t)}))),Array.isArray(n.skills)&&(n.skills=n.skills.map(e=>({...e,url:B(e.url,t),tools:Array.isArray(e.tools)?e.tools.map(e=>({...e,url:e.url?B(e.url,t):void 0})):void 0,scripts:Array.isArray(e.scripts)?e.scripts.map(e=>({...e,url:e.url?B(e.url,t):void 0})):void 0}))),n}async function H(e,t){if(!t||!t.startsWith(`sha256:`))return!0;let n=t.slice(7).trim().toLowerCase();return!n||(await L(typeof e==`string`?new TextEncoder().encode(e):e)).toLowerCase()===n}async function U(e,t=globalThis.fetch){let{baseUrl:n,manifestUrl:r}=z(e),i=await t(r,{headers:{Accept:`application/json`}});if(!i.ok)throw Error(`Failed to fetch discovery manifest: HTTP ${i.status} ${i.statusText}`.trim());let a=await i.json();if(!a||typeof a!=`object`)throw Error(`Invalid discovery manifest: expected a JSON object`);return{manifest:V(a,r),siteUrl:n,manifestUrl:r}}export{H as a,N as c,V as i,A as l,z as n,O as o,B as r,P as s,U as t,u};
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-BMW6QB5-2.js";export{e as executeNativeAiTask};
@@ -0,0 +1,91 @@
1
+ import{t as e}from"./chunk-DxIsgrAF.js";import{A as t,C as n,D as r,E as i,M as a,O as o,S as s,T as c,_ as l,a as u,b as d,c as f,d as p,f as m,g as h,h as g,i as _,j as v,k as y,l as b,m as x,o as S,p as C,s as w,u as T,v as E,w as D,x as O,y as k}from"./chunk-DZ8YBXax.js";import{_ as A,b as j,g as M,l as N,r as P,s as ee,y as te}from"./chunk-BkKN8FNP.js";import{a as F,i as ne,n as re,o as I,r as ie}from"./chunk-DFLqhyP_.js";import{t as L}from"./chunk-Dhh0lHO6.js";import{a as ae,i as R,n as oe,r as se,t as z}from"./chunk-BQCWtrzh.js";import{S as ce,b as le,d as ue,f as de,g as fe,i as pe,n as me,r as he,t as ge,w as _e}from"./chunk-ChefnX-r.js";import{C as ve,S as ye,a as be,i as xe,n as Se,o as Ce,r as we,s as Te,v as Ee,w as B,y as De}from"./chunk-D3JxbzjI2.js";import{n as Oe,t as ke,u as Ae}from"./chunk-BCLxzLO92.js";import{createRequire as je}from"node:module";import{constants as Me,existsSync as Ne}from"node:fs";import V from"node:path";import{fileURLToPath as Pe}from"node:url";import{env as Fe}from"node:process";import{exec as Ie,spawn as Le}from"node:child_process";import{access as Re,mkdir as ze,readFile as Be,readdir as Ve,rm as He,stat as Ue,unlink as We,writeFile as H}from"node:fs/promises";import U from"process";import{Buffer as Ge}from"buffer";import{EventEmitter as Ke}from"node:events";import{isIP as qe}from"node:net";import{runInNewContext as Je}from"node:vm";import{DatabaseSync as Ye}from"node:sqlite";const Xe=({command:e,stdin:t,timeoutSec:n})=>new Promise(r=>{let i=Ie(e,{timeout:n*1e3,maxBuffer:10*1024*1024},(e,t,n)=>{let i=t||``;n&&(i+=(i?`
2
+ `:``)+n),e&&!i&&(i=e.message),r(i)});t&&i.stdin&&(i.stdin.write(t),i.stdin.end())});s(Xe),globalThis.__headlessBashExecutor=Xe;function Ze(e,t,n){let r=t.input_tokens||0,i=t.output_tokens||0,a=t.cache_read_input_tokens||0,o=t.cache_creation_input_tokens||0;return{type:`token-usage`,payload:{groupId:e,inputTokens:r,outputTokens:i,cacheReadTokens:a,cacheCreationTokens:o,totalTokens:r+i+a+o,contextLimit:n}}}function W(e,t,r,i){n(o(e,t,r,i))}async function*Qe(e,t){let n=e.getReader(),r=new TextDecoder,i=``;try{for(;!t?.aborted;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0});let a=i.split(`
3
+
4
+ `);i=a.pop()||``;for(let e of a){let t=e.split(`
5
+ `);for(let e of t)if(!(!e||e.startsWith(`:`))&&e.startsWith(`data: `)){let t=e.slice(6).trim();if(t===`[DONE]`)continue;try{yield JSON.parse(t)}catch{}}}}}finally{n.releaseLock()}}const $e=6e4,et=new Map;function tt(e){let t=et.get(e);if(t)return t;let n={recentCalls:[],nextAllowedAt:0,remoteLimit:null,remoteRemaining:null,remoteResetAt:null};return et.set(e,n),n}function G(){return Date.now()}function nt(e){if(!e)return null;let t=Number(e.trim());return Number.isFinite(t)?t:null}function rt(e){if(!e)return null;let t=e.trim(),n=Number(t);if(Number.isFinite(n))return n<=0?null:Math.round(n*1e3);let r=Date.parse(t);if(!Number.isFinite(r))return null;let i=r-G();return i>0?i:null}function it(e){let t=nt(e);return t===null||t<=0?null:t>=0xe8d4a51000?Math.round(t):t>=1e9?Math.round(t*1e3):G()+Math.round(t*1e3)}async function at(e,t){e<=0||await new Promise((n,r)=>{let i=setTimeout(()=>{o(),n()},e),a=()=>{o(),r(new DOMException(`Aborted`,`AbortError`))},o=()=>{i&&=(clearTimeout(i),null),t?.removeEventListener(`abort`,a)};if(t?.aborted){a();return}t?.addEventListener(`abort`,a)})}function ot(e,t){if(!Number.isFinite(t)||t<=0)return 0;let n=G();if(e.recentCalls=e.recentCalls.filter(e=>n-e<$e),e.recentCalls.length<t)return 0;let r=e.recentCalls[0]||n;return Math.max(0,$e-(n-r))}function st(e){let t=G(),n=0;return e.nextAllowedAt>t&&(n=Math.max(n,e.nextAllowedAt-t)),e.remoteRemaining!==null&&e.remoteRemaining<=0&&e.remoteResetAt!==null&&e.remoteResetAt>t&&(n=Math.max(n,e.remoteResetAt-t)),n}async function ct(e,t,r,i){let a=tt(e);for(;;){let e=ot(a,r.callsPerMinute),o=r.autoAdapt?st(a):0,s=Math.max(e,o);if(s<=0){let e=G();if(r.callsPerMinute>0&&a.recentCalls.push(e),r.autoAdapt&&a.remoteRemaining!==null&&a.remoteRemaining>0&&a.remoteResetAt!==null&&a.remoteResetAt>e){let t=a.remoteResetAt-e,n=Math.max(1,a.remoteRemaining),r=Math.ceil(t/n);a.nextAllowedAt=Math.max(a.nextAllowedAt,e+r)}return}s>=1e3&&n({type:`thinking-log`,payload:{groupId:t,level:`info`,label:`Rate limiter`,message:`Waiting ${Math.ceil(s/1e3)}s before next provider call to avoid 429s.`,timestamp:Date.now()}}),await at(s,i)}}function lt(e,t,n){if(!n.autoAdapt||!t||typeof t.get!=`function`)return;let r=tt(e),i=G(),a=nt(t.get(`x-ratelimit-limit`)),o=nt(t.get(`x-ratelimit-remaining`)),s=it(t.get(`x-ratelimit-reset`));a!==null&&(r.remoteLimit=Math.max(0,Math.floor(a))),o!==null&&(r.remoteRemaining=Math.max(0,Math.floor(o))),s!==null&&(r.remoteResetAt=s);let c=rt(t.get(`retry-after`));c!==null&&(r.nextAllowedAt=Math.max(r.nextAllowedAt,i+c)),r.remoteRemaining!==null&&r.remoteRemaining<=0&&r.remoteResetAt!==null&&r.remoteResetAt>i&&(r.nextAllowedAt=Math.max(r.nextAllowedAt,r.remoteResetAt))}const ut={"litert-community/gemma-4-E2B-it-litert-lm":`https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it-web.litertlm`,"litert-community/gemma-4-E4B-it-litert-lm":`https://huggingface.co/litert-community/gemma-4-E4B-it-litert-lm/resolve/main/gemma-4-E4B-it-web.litertlm`},dt=Object.keys(ut);function ft(){return typeof navigator<`u`&&`gpu`in navigator&&typeof WebAssembly<`u`&&`Suspending`in WebAssembly}let K=null,pt=null,q=null,mt=null;const ht=ve;async function gt(e,t,n){return ye(e,t,n,{cacheName:`shadow-claw-litertlm-models`,chunkSize:ht})}async function _t(e,t,n){if(pt===e&&K)return K;if(q&&mt===e)return q;mt=e,q=(async()=>{if(K){try{await K.delete?.()}catch{}K=null,pt=null}let r=ut[e];if(!r)throw Error(`LiteRT-LM: Model '${e} is not supported. Supported models: ${dt.join(`, `)}`);let i=await import(`./chunk-DTTnpKBm.js`).catch(()=>{throw Error(`LiteRT-LM: The @litert-lm/core package is not installed. Run: npm install @litert-lm/core`)}),a=i.Engine??i.default?.Engine;if(typeof a?.create!=`function`)throw Error(`LiteRT-LM: Could not locate Engine.create in @litert-lm/core. Ensure you have the latest version installed.`);let o=await gt(r,t??(()=>{}),n),s=await a.create({model:o,mainExecutorSettings:{maxNumTokens:8192}});return K=s,pt=e,s})();try{return await q}finally{q=null,mt=null}}function vt(e){if(!e)return null;let t=e.match(/<\|tool_call>call:([A-Za-z0-9_]+)(\{[\s\S]*?)(?:<tool_call\|>|$)/);if(!t)return null;let n=t[1],r=t[2];r=r.replace(/<\|"\|>/g,`"`);function i(e){return e.replace(/([{,]\s*)([A-Za-z_$][A-Za-z0-9_$]*)(\s*:)/g,`$1"$2"$3`)}let a={},o=[r,i(r)];for(let e of o)try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t)){a=t;break}}catch{}if(Object.keys(a).length===0){let e=r.indexOf(`{`),t=r.lastIndexOf(`}`);if(e>=0&&t>e){let n=r.slice(e,t+1);for(let e of[n,i(n)])try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t)){a=t;break}}catch{}}}return{name:n,input:a}}function yt(e){let t=B(String(e||``),`litert_lm`).trim();if(!t)return null;let n=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`&&(t.type===`tool_use`||t.type===`response`))return t.tools_calls&&!t.tool_calls&&(t.tool_calls=t.tools_calls),{...t,format:`json`}}catch{}return null},r=n(t);if(r)return r;let i=t.indexOf(`{`),a=t.lastIndexOf(`}`);if(i>=0&&a>i&&(r=n(t.slice(i,a+1)),r))return r;if(t.includes(`"tool_use"`)){let e=/"name"\s*:\s*"([^"]+)"/.exec(t);if(e){let n={},r=/"input"\s*:\s*(\{.*?\})\s*(?:]|\}|"|$)/s.exec(t);if(r)try{n=JSON.parse(r[1])}catch{}return{type:`tool_use`,format:`json`,tool_calls:[{id:`litert_${Date.now()}`,name:e[1],input:n}]}}}let o=vt(t);return o?{type:`tool_use`,format:`model_specific`,tool_calls:[{id:`litert_${Date.now()}`,name:o.name,input:o.input}]}:null}function bt(e,t,n){let r=[],i=e||``;if(n.length>0){let e=[``,`TOOL CALLING INSTRUCTIONS:`,`Return ONLY valid JSON (no markdown fences).`,`To call a tool: {"type":"tool_use","tool_calls":[{"name":"<tool>","input":{...}}]}`,`To reply: {"type":"response","response":"<your answer>"}`,`IMPORTANT: When you need to use a tool, output ONLY the JSON above — do NOT describe the call as text.`,``,`Available tools:`,n.map(e=>{let t=Object.keys(e.input_schema.properties||{}).join(`, `),n=e.description.split(`. `)[0];return`${e.name}(${t}): ${n}`}).join(`
6
+ `)].join(`
7
+ `);i=i?i+e:e}i&&r.push({role:`system`,content:i});let a=[];for(let e of t)if(e.role===`user`){let t=Array.isArray(e.content)?e.content.map(e=>e?.type===`text`?e.text:e?.type===`tool_result`?`[TOOL_RESULT ${e.tool_use_id}] ${String(e.content||``)}`:``).filter(Boolean).join(`
8
+ `):String(e.content||``);t&&a.push(t)}else e.role;return{preface:r,turns:a}}async function xt(e,t,n,i,a,s,l,u,d,p){if(!ft()){await s({type:`response`,payload:{groupId:t,text:`⚠️ LiteRT-LM requires WebGPU and WebAssembly.Suspending. These are not both available in this browser.`}});return}await s(o(t,`info`,`Starting`,`Provider: LiteRT-LM (Browser · WebGPU) · Model: ${u}`)),await s({type:`model-download-progress`,payload:{groupId:t,status:`running`,progress:0,message:`Loading LiteRT-LM model: ${u}…`}});let m=e=>(e/(1024*1024)).toFixed(0),h=-1,g=(e,n,r)=>{let i=n?e/n:null,a=i==null?-1:Math.floor(i*100);a===h&&!r||(h=a,s({type:`model-download-progress`,payload:{groupId:t,status:`running`,progress:i,message:r?`Loaded ${u} from cache (${m(e)} MB )`:n?`Downloading ${u}: ${m(e)} / ${m(n)} MB`:`Downloading ${u}: ${m(e)} MB`}}))},_;try{_=await _t(u,g,l)}catch(e){if(l?.aborted||e?.name===`AbortError`){await s({type:`model-download-progress`,payload:{groupId:t,status:`error`,progress:null,message:`LiteRT-LM model download cancelled.`}});return}await s({type:`model-download-progress`,payload:{groupId:t,status:`error`,progress:null,message:`LiteRT-LM model failed to load: ${e?.message??String(e)}`}}),await s({type:`response`,payload:{groupId:t,text:`⚠️ LiteRT-LM failed to initialize: ${e?.message??String(e)}`}});return}await s({type:`model-download-progress`,payload:{groupId:t,status:`done`,progress:1,message:`LiteRT-LM model ready.`}});let v=d??[],{preface:y,turns:b}=bt(n,i,v),x;try{x=await _.createConversation({preface:{messages:y}})}catch(e){await s({type:`response`,payload:{groupId:t,text:`⚠️ LiteRT-LM failed to create conversation: ${e?.message??String(e)}`}});return}let S=b.slice(0,-1),C=b[b.length-1]??`Hello.`;for(let e of S){if(l?.aborted)return;try{await x.sendMessage(e)}catch{}}if(l?.aborted)return;let w=C;for(let n=0;n<10;n++){if(l?.aborted)return;await s({type:`streaming-start`,payload:{groupId:t}});let n=``;try{let e=x.sendMessageStreaming(w);for await(let r of e){if(l?.aborted)break;let e=r?.content?.[0]?.text??``;if(e){let r=B(e,`litert_lm`);r&&(n+=r,await s({type:`streaming-chunk`,payload:{groupId:t,text:r}}))}}}catch(e){if(l?.aborted)return;await s({type:`response`,payload:{groupId:t,text:`⚠️ LiteRT-LM generation error: ${e?.message??String(e)}`}});return}let i=v.length>0?yt(n):null;if(i?.type===`tool_use`){await s({type:`streaming-end`,payload:{groupId:t}});let n=Array.isArray(i.tool_calls)?i.tool_calls:[];if(n.length===0){await s({type:`streaming-done`,payload:{groupId:t,text:`(no response)`}}),await s({type:`response`,payload:{groupId:t,text:`(no response)`}});return}let a=[],o=i.format===`model_specific`;for(let i of n){await s(r(t,i.name,`running`)),c(e=>{s(e)});let n;try{n=await f(e,i.name,i.input||{},t,{allowedTools:v,invokeContext:p})}catch(e){n=`Error: ${e?.message??String(e)}`}finally{c(null)}await s(r(t,i.name,`done`));let l=typeof n==`string`?n:JSON.stringify(n);o?a.push(`<|tool_response>${l}<|tool_response|>`):a.push(`[TOOL_RESULT ${i.id??i.name}] ${l}`)}if(o)w=a.join(`
9
+ `);else{let e=b[b.length-1]??``;w=[...a,``,`Based on the above tool results, please respond to the original request.`,e?`Original request: "${e}"`:``].filter(Boolean).join(`
10
+ `)}continue}let a;a=i?.type===`response`&&i.response?B(i.response,`litert_lm`):B(n,`litert_lm`),await s({type:`streaming-done`,payload:{groupId:t,text:a}}),await s({type:`response`,payload:{groupId:t,text:a}});return}await s({type:`response`,payload:{groupId:t,text:`⚠️ LiteRT-LM reached the maximum number of tool-calling iterations without producing a final response.`}})}const St=new class{chunkCallbacks=new Map;loadRejects=new Map;loadResolves=new Map;pendingRejects=new Map;pendingResolves=new Map;progressCallbacks=new Map;thinkingCallbacks=new Map;worker=null;async generate(e,t,n,r,i,a){let o=this.getWorker();return new Promise((s,c)=>{this.pendingResolves.set(n,s),this.pendingRejects.set(n,c),this.chunkCallbacks.set(n,e=>r(e.text)),i&&this.thinkingCallbacks.set(n,i),o.postMessage({type:`generate`,payload:{messages:e,maxTokens:t,groupId:n,tools:a}})})}async load(e,t,n,r,i){let a=this.getWorker();return new Promise((o,s)=>{this.loadResolves.set(r,o),this.loadRejects.set(r,s),this.progressCallbacks.set(r,i),a.postMessage({type:`load`,payload:{modelId:e,device:t,dtypeStrategy:n,groupId:r}})})}cleanup(e){this.pendingResolves.delete(e),this.pendingRejects.delete(e),this.progressCallbacks.delete(e),this.chunkCallbacks.delete(e),this.thinkingCallbacks.delete(e)}getWorker(){return this.worker||(this.worker=new Worker(Ae(new URL(`./transformers-js.worker.js`,import.meta.url).href),{type:`module`}),this.worker.onmessage=e=>{let{type:t,payload:n}=e.data,r=n?.groupId;switch(t){case`progress`:this.progressCallbacks.get(r)?.(n),n.status===`done`&&(this.loadResolves.get(r)?.(),this.loadResolves.delete(r),this.loadRejects.delete(r));break;case`chunk`:this.chunkCallbacks.get(r)?.(n);break;case`thinking-chunk`:this.thinkingCallbacks.get(r)?.(n.text);break;case`done`:this.pendingResolves.get(r)?.(n.text),this.cleanup(r);break;case`error`:this.pendingRejects.get(r)?.(n.error),this.loadRejects.get(r)?.(n.error),this.cleanup(r),this.loadResolves.delete(r),this.loadRejects.delete(r);break}}),this.worker}};function Ct(e){return typeof e?.content==`string`?e.content:Array.isArray(e?.content)?e.content.map(e=>e?.type===`text`?e.text||``:e?.type===`tool_use`?`[TOOL_CALL ${e.name}] ${JSON.stringify(e.input||{})}`:e?.type===`tool_result`?`[TOOL_RESULT ${e.tool_use_id}] ${String(e.content||``)}`:e?.type===`attachment`?`[ATTACHMENT ${e.mediaType}] ${e.fileName} (${e.mimeType})`:``).filter(Boolean).join(`
11
+ `):``}function wt(e){let t=B(String(e||``),`transformers_js`).trim();if(!t)return null;let n=t.match(/<tool_call>([\s\S]*?)<\/tool_call>/);if(n)try{let e=JSON.parse(n[1]);if(e.name)return{type:`tool_use`,tool_calls:[{name:e.name,input:e.arguments||e.parameters||{}}]}}catch{}try{return JSON.parse(t)}catch{let e=t.indexOf(`{`),n=t.lastIndexOf(`}`);if(e>=0&&n>e)try{return JSON.parse(t.slice(e,n+1))}catch{return null}return null}}async function Tt(e,t,n,i,a,s,l,u,d,p){let m=u||[],h=await L(e,P.TRANSFORMERS_JS_BACKEND)||`auto`,g=await L(e,P.TRANSFORMERS_JS_DTYPE_STRATEGY)||`auto`;await s(o(t,`info`,`Starting`,`Provider: Transformers.js (Local Worker) · Model: ${d} · Backend: ${h} · Dtype: ${g}`)),await St.load(d,h,g,t,e=>{s({type:`model-download-progress`,payload:e})});let _=[...i];for(let i=0;i<10;i++){let i=[{role:`system`,content:n},..._.map(e=>({role:e.role===`assistant`?`assistant`:`user`,content:Ct(e)}))];await s({type:`streaming-start`,payload:{groupId:t}});let l=``,u=``,d=await St.generate(i,a,t,e=>{u+=e,s({type:`streaming-chunk`,payload:{groupId:t,text:e}})},e=>{l+=e,s(o(t,`text`,`Thinking`,l))},m);await s({type:`typing`,payload:{groupId:t}});let h=wt(d);if(h?.type===`tool_use`?await s({type:`streaming-end`,payload:{groupId:t}}):await s({type:`streaming-done`,payload:{groupId:t,text:h?.response?B(h.response,`transformers_js`):B(d,`transformers_js`)}}),!h||h.type===`response`){await s({type:`response`,payload:{groupId:t,text:h?.response?B(h.response,`transformers_js`):B(d,`transformers_js`)}});return}let g=Array.isArray(h.tool_calls)?h.tool_calls:[];if(g.length===0){await s({type:`response`,payload:{groupId:t,text:B(h.response||d,`transformers_js`)}});return}let v=[];for(let n of g){await s(r(t,n.name,`running`)),c(e=>{s(e)});let i;try{i=await f(e,n.name,n.input||{},t,{allowedTools:m,invokeContext:p})}finally{c(null)}await s(r(t,n.name,`done`)),v.push({type:`tool_result`,tool_use_id:n.id||`call_${Date.now()}`,content:typeof i==`string`?i:JSON.stringify(i)})}_.push({role:`assistant`,content:[...h.response?[{type:`text`,text:h.response}]:[],...g.map(e=>({type:`tool_use`,id:e.id||`call_${Date.now()}_${Math.random()}`,name:e.name,input:e.input||{}}))]}),_.push({role:`user`,content:v})}}async function Et(e,t,r){let i=t.provider,a=async e=>{n(e)};if(i===`transformers_js_browser`){await Tt(e,t.groupId,t.systemPrompt,t.messages,t.maxTokens,a,r,t.enabledTools,t.model);return}if(i===`prompt_api`){if(!w())throw Error(`Prompt API provider is not supported in this environment.`);await S(e,t.groupId,t.systemPrompt,t.messages,t.maxTokens,a,r,t.enabledTools);return}if(i===`litert_lm_browser`){if(!ft())throw Error(`Litert LM Browser provider is not supported in this environment.`);await xt(e,t.groupId,t.systemPrompt,t.messages,t.maxTokens,a,r,t.model,t.enabledTools);return}await zt(e,t,r)}var Dt=class{callbacks;contentBlocks=[];format;stopReason=`end_turn`;usage={input_tokens:0,output_tokens:0};#e=new Map;#t=``;#n=``;#r=new Map;constructor(e,t={}){this.format=e,this.callbacks=t}finalize(){return this.format===`openai`||this.format===`mesh-llm`?this.#a():this.#i()}push(e){this.format===`openai`||this.format===`mesh-llm`?this.#s(e):this.#o(e)}#i(){let e=[];for(let[,t]of[...this.#e.entries()].sort((e,t)=>e[0]-t[0]))if(t.type===`text`){let n=this.#c(t.text||``);n&&e.push({type:`text`,text:n})}else if(t.type===`tool_use`){let n;try{n=t.partialJson?JSON.parse(t.partialJson):{}}catch{n={}}e.push({type:`tool_use`,id:t.id||`call_${Date.now()}_${Math.random()}`,name:t.name,input:n})}else t.type===`thinking`?typeof t.text==`string`&&t.text.length>0&&e.push({type:`thinking`,thinking:t.text,...typeof t.id==`string`?{signature:t.id}:{}}):t.type===`redacted_thinking`&&typeof t.text==`string`&&t.text.length>0&&e.push({type:`redacted_thinking`,data:t.text});return{content:e,stop_reason:this.stopReason,usage:{...this.usage}}}#a(){let e=[];if(this.#n){let t=this.#c(this.#n);t&&e.push({type:`text`,text:t})}if(this.#t&&e.unshift({type:`thinking`,thinking:this.#t}),this.#r.size>0){this.stopReason=`tool_use`;for(let[,t]of[...this.#r.entries()].sort((e,t)=>e[0]-t[0])){let n;try{n=t.args?JSON.parse(t.args):{}}catch{n={}}e.push({type:`tool_use`,id:t.id||`call_${Date.now()}_${Math.random()}`,name:t.name,input:n})}}return{content:e,stop_reason:this.stopReason,usage:{...this.usage}}}#o(e){switch(e.type){case`message_start`:e.message?.usage&&(this.usage.input_tokens=e.message.usage.input_tokens||0,this.usage.cache_read_input_tokens=e.message.usage.cache_read_input_tokens||0,this.usage.cache_creation_input_tokens=e.message.usage.cache_creation_input_tokens||0);break;case`content_block_start`:{let t=e.index??this.#e.size,n=e.content_block||{};this.#e.set(t,{type:n.type||`text`,id:n.type===`thinking`?n.signature:n.id,name:n.name,text:n.text||n.thinking||n.data||``,partialJson:n.type===`tool_use`?``:void 0}),n.type===`tool_use`&&n.name&&this.callbacks.onToolStart?.(n.name);break}case`content_block_delta`:{let t=e.index??0,n=this.#e.get(t);if(!n){let r=e.delta?.type===`input_json_delta`?`tool_use`:`text`;n={type:r,text:r===`text`?``:void 0,partialJson:r===`tool_use`?``:void 0},this.#e.set(t,n)}let r=e.delta;if(!r)break;if(r.type===`text_delta`&&typeof r.text==`string`){let e=this.#c(r.text);if(!e)break;n.text=(n.text||``)+e,this.callbacks.onText?.(e)}r.type===`thinking_delta`&&typeof r.thinking==`string`&&(n.type=`thinking`,n.text=(n.text||``)+r.thinking,this.callbacks.onThinking?.(r.thinking)),r.type===`signature_delta`&&typeof r.signature==`string`&&(n.type=`thinking`,n.id=r.signature),r.type===`redacted_thinking_delta`&&typeof r.data==`string`&&(n.type=`redacted_thinking`,n.text=(n.text||``)+r.data),r.type===`input_json_delta`&&typeof r.partial_json==`string`&&(n.partialJson=(n.partialJson||``)+r.partial_json);break}case`content_block_stop`:break;case`message_delta`:e.delta?.stop_reason&&(this.stopReason=e.delta.stop_reason),e.usage&&(this.usage.output_tokens=e.usage.output_tokens||0,this.callbacks.onUsage?.(this.usage));break;case`message_stop`:break;default:break}}#s(e){e.usage&&(this.usage.input_tokens=e.usage.prompt_tokens||0,this.usage.output_tokens=e.usage.completion_tokens||0,this.usage.cache_read_input_tokens=e.usage.prompt_tokens_details?.cached_tokens||0,this.callbacks.onUsage?.(this.usage));let t=e.choices?.[0];if(!t)return;let n=t.delta;if(n){if(typeof n.content==`string`){let e=this.#c(n.content);e&&(this.#n+=e,this.callbacks.onText?.(e))}if(typeof n.reasoning==`string`)this.#t+=n.reasoning,this.callbacks.onThinking?.(n.reasoning);else if(n.reasoning&&typeof n.reasoning==`object`){let e=n.reasoning;typeof e.content==`string`?(this.#t+=e.content,this.callbacks.onThinking?.(e.content)):typeof e.text==`string`&&(this.#t+=e.text,this.callbacks.onThinking?.(e.text))}if(Array.isArray(n.tool_calls))for(let e of n.tool_calls){let t=e.index??0;this.#r.has(t)||(this.#r.set(t,{id:e.id||``,name:e.function?.name||``,args:``}),e.function?.name&&this.callbacks.onToolStart?.(e.function.name));let n=this.#r.get(t);n&&(e.id&&(n.id=e.id),e.function?.name&&(n.name=e.function.name),e.function?.arguments&&(n.args+=e.function.arguments))}t.finish_reason&&(t.finish_reason===`tool_calls`?this.stopReason=`tool_use`:t.finish_reason===`stop`?this.stopReason=`end_turn`:this.stopReason=t.finish_reason)}}#c(e){return B(e,this.callbacks.source??this.format)}};const Ot=new Map;function kt(e){return Ot.get(e)}function At(e){Ot.delete(e)}function jt(e,t){let n=e.trim().match(/^\[tool_code\]([\s\S]*?)\[\/tool_code\]$/i);if(!n?.[1])return{toolBlocks:[],residualText:e};let r=n[1].trim(),i=r.match(/^print\s*\(\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\(\s*(.*?)\s*\)\s*\)$/s),a=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*\(\s*(.*?)\s*\)$/s),o=i||a;if(!o?.[1])return{toolBlocks:[],residualText:e};let s=o[1];if(!t.has(s))return{toolBlocks:[],residualText:e};let c=(o[2]||``).trim(),l={};if(c){if(!c.startsWith(`{`)||!c.endsWith(`}`))return{toolBlocks:[],residualText:e};try{let t=JSON.parse(c);if(!t||typeof t!=`object`||Array.isArray(t))return{toolBlocks:[],residualText:e};l=t}catch{return{toolBlocks:[],residualText:e}}}return{toolBlocks:[{type:`tool_use`,id:`tool_code_${Date.now()}_${Math.random()}`,name:s,input:l}],residualText:``}}function Mt(e,t){if(!e||e.stop_reason===`tool_use`||!Array.isArray(e.content))return e;let n=new Set((t||[]).map(e=>typeof e?.name==`string`?e.name:``).filter(Boolean));if(n.size===0)return e;let r=[],i=!1;for(let t of e.content){if(t?.type!==`text`||typeof t.text!=`string`){r.push(t);continue}let e=jt(t.text,n);if(e.toolBlocks.length>0){i=!0,e.residualText.trim()&&r.push({type:`text`,text:e.residualText}),r.push(...e.toolBlocks);continue}r.push(t)}return i?{...e,content:r,stop_reason:`tool_use`}:e}function Nt(e){let t=e.filter(e=>e?.type===`tool_result`).map(e=>typeof e.content==`string`?e.content.trim():Array.isArray(e.content)?e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
12
+ `).trim():JSON.stringify(e.content).trim()).filter(Boolean);return t.length===0?``:t.join(`
13
+
14
+ `).slice(0,1e4)}function Pt(e){let t=e.trim();return t?`Tool result:\n${t}`:``}let Ft=null;function It(e){Ft=e}let Lt=null;function Rt(e){Lt=e}async function zt(t,o,s){let{apiKey:c,assistantName:l,contextCompression:d=!1,contextLimit:p,enabledTools:m,groupId:h,isScheduledTask:g=!1,maxIterations:_,maxTokens:y,memory:b,messages:x,model:S,provider:C,providerHeaders:w={},providerRuntimeOverrides:T,reasoning:E,rateLimitAutoAdapt:O=!0,rateLimitCallsPerMinute:k=0,storageHandle:A,streaming:M=!1,subagentModelSelectionMode:N,subagentMaxTokens:P,subagentPinnedModel:ee,subagentPinnedProvider:te,systemPrompt:F,workspaceGroupId:ne}=o,re=!!o.subagentTask,I=re?h.startsWith(`subagent:`)?h:`subagent:${e()}`:h,ie=ne||h;re&&D(I,[]);let L={autoAdapt:O!==!1,callsPerMinute:Number.isFinite(k)?Math.max(0,Math.floor(k)):0};A&&_e(A);let ae=j(C);if(!ae){n({payload:{groupId:I,error:`Unknown provider: ${C}`},type:`error`});return}let R=ae,z=M&&R.supportsStreaming===!0&&R.format!==`prompt_api`;n({type:`typing`,payload:{groupId:I}}),W(I,`info`,`Starting`,`Provider: ${R.name} · Model: ${S} · Max tokens: ${y} · Streaming: ${z?`on`:`off`}${M&&!z?` (provider does not support streaming)`:``}`);try{let e=[...x],i=0,h=typeof _==`number`&&_>0?_:50,D=Array.isArray(m)?m:de;se()&&(D=oe(D));let O=F,k=``,j={apiKey:c,assistantName:l??``,db:t,enabledTools:D,invokeSubagent:e=>Et(t,e,s),maxTokens:y,memory:b??``,model:S,provider:C,subagentModelSelectionMode:N,subagentMaxTokens:P,subagentPinnedProvider:te,subagentPinnedModel:ee,providerHeaders:w,providerRuntimeOverrides:T,storageHandle:A,streaming:!1,systemPrompt:O??``},M=[];for(;i<h;){i++;let m=kt(I);m&&(D=m.enabledTools,O=u(l,b,D,m.systemPromptOverride,void 0,void 0,{groupId:I}));let h=p??be(S),_=a(O),{messages:x,estimatedTokens:T}=v(e,{contextLimit:h,maxOutputTokens:y,skimTop:d,systemPromptTokens:_}),A=T+_,N=Math.max(100,Math.min(y,h-A-500)),P=xe(R,x,D,{contextCompression:d,maxTokens:N,model:S,reasoning:E,system:O});W(I,`api-call`,`API call #${i}`,`${x.length} messages in context`);let ee={...we(R,c),...w},te=R.baseUrl,F;se()&&C===`transformers_js_local`&&Ft?(z&&n({payload:{groupId:I},type:`streaming-start`}),F=Te(R,await Ft({modelId:S,messages:x,tools:D,maxTokens:N,abortSignal:s,verbose:!!o.verbose,onToken:e=>{z&&e&&n({payload:{groupId:I,text:e},type:`streaming-chunk`})},onProgress:e=>{if(e?.status===`progress`||e?.status===`progress_total`){let t=null;if(typeof e.progress==`number`){let n=e.progress<=1&&e.progress>0&&!e.total?e.progress*100:typeof e.loaded==`number`&&typeof e.total==`number`&&e.total>0?e.loaded/e.total*100:e.progress;t=Math.max(0,Math.min(100,Math.round(n)))}n({payload:{groupId:I,label:`Model Progress`,message:`${e.file||S}: ${t===null?`loading...`:`${t}%`}`},type:`status`})}}}))):se()&&C===`llamafile`&&Lt?(z&&n({payload:{groupId:I},type:`streaming-start`}),F=Te(R,await Lt({model:S,messages:x,maxTokens:N,abortSignal:s,verbose:!!o.verbose,onToken:e=>{z&&e&&n({payload:{groupId:I,text:e},type:`streaming-chunk`})}}))):F=z?await Vt(C,R,te,ee,P,I,S,L,s):await Bt(C,R,te,ee,P,I,L,s),F=Mt(F,D),F.usage&&n(Ze(I,F.usage,be(S)));for(let e of F.content)e.type===`text`&&e.text&&W(I,`text`,`Response text`,e.text.length>200?e.text.slice(0,200)+`…`:e.text);if(F.stop_reason===`tool_use`){let i=new Set(D.map(e=>typeof e?.name==`string`?e.name:``).filter(Boolean)),a=F.content.filter(e=>e.type===`text`).map(e=>e.text).join(``).replace(/<internal>[\s\S]*?<\/internal>/g,``).trim();a&&n({payload:{groupId:I,text:a},type:`intermediate-response`}),z&&n({payload:{groupId:I},type:`streaming-end`});let o=[];for(let e of F.content)if(e.type===`tool_use`){let a=i.has(e.name),s=`${e.name}:${JSON.stringify(e.input)}`,c=M.filter(e=>e===s).length;if(M.push(s),!a){let t=`SYSTEM ERROR: Tool '${e.name}' is disabled or unavailable for this request. Do not call it again. Try a different approach or ask the user for help.`;W(I,`warning`,`Tool blocked`,t),o.push({content:t,tool_use_id:e.id,type:`tool_result`});continue}let l=JSON.stringify(e.input),u=l.length>300?l.slice(0,300)+`…`:l;W(I,`tool-call`,`Tool: ${e.name}`,u),n(r(I,e.name,`running`));let d;c>=3?(d=`SYSTEM ERROR: You have repeatedly called this tool with the exact same input (${c+1} times). This is a rigid loop. STOP calling this tool with these arguments. Try a different approach, fix the underlying issue, or ask the user for help.`,console.warn(`[Worker] Blocked repetitive tool call:`,s)):d=await f(t,e.name,e.input,ie,{allowedTools:D,isScheduledTask:g,invokeContext:j});let p=typeof d==`string`?d:JSON.stringify(d),m=p.length>500?p.slice(0,500)+`…`:p;W(I,`tool-result`,`Result: ${e.name}`,m),n(r(I,e.name,`done`)),Array.isArray(d)?o.push({content:d,tool_use_id:e.id,type:`tool_result`}):o.push({content:typeof d==`string`?d.slice(0,1e5):JSON.stringify(d).slice(0,1e5),tool_use_id:e.id,type:`tool_result`})}k=Nt(o),e.push({role:`assistant`,content:F.content}),e.push({role:`user`,content:o}),n({type:`typing`,payload:{groupId:I}})}else{let e=F.content.filter(e=>e.type===`text`).map(e=>e.text).join(``).replace(/<internal>[\s\S]*?<\/internal>/g,``).trim(),t=(e.toLowerCase()===`(no response)`?``:e)||(k?Pt(k):`(no response)`);z&&n({payload:{groupId:I,text:t},type:`streaming-done`}),n({payload:{groupId:I,text:t},type:`response`});return}}n({payload:{text:`⚠️ Reached maximum tool-use iterations (${h}). Stopping to avoid excessive API usage.`,groupId:I},type:`response`})}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;let t=e instanceof Error?e.message:String(e);z&&n({payload:{groupId:I,error:t},type:`streaming-error`}),n({type:`error`,payload:{groupId:I,error:t}})}finally{At(I),re&&i(I)}}async function Bt(e,t,r,i,a,o,s,c){return T(async()=>{await ct(e,o,s,c);let n=await fetch(r,{body:JSON.stringify(a),headers:i,method:`POST`,signal:c});if(lt(e,n.headers,s),!n.ok){let e=await n.text(),r=Error(`${t.name} API error ${n.status}: ${e}`);throw r.status=n.status,r}return Te(t,await n.json())},{baseDelayMs:2e3,jitterFactor:.5,maxDelayMs:3e4,maxRetries:3,onRetry:(e,t,r,i)=>{let a=i instanceof Error?i.message:String(i);W(o,`warning`,`Retrying API call (${e}/${t})`,a),n({type:`show-toast`,payload:{message:`LLM API: Retrying (${e}/${t})… ${a.slice(0,120)}`,type:`warning`,duration:5e3}})},shouldRetry:e=>b(e),signal:c})}async function Vt(e,t,i,a,o,s,c,l,u){let d={...o,stream:!0,...(t.format===`openai`||t.format===`mesh-llm`)&&{stream_options:{include_usage:!0}}};await ct(e,s,l,u);let f=await fetch(i,{body:JSON.stringify(d),headers:a,method:`POST`,signal:u});if(lt(e,f.headers,l),!f.ok){let e=await f.text(),n=Error(`${t.name} API error ${f.status}: ${e}`);throw n.status=f.status,n}if(!f.body)throw Error(`Streaming response has no body`);n({payload:{groupId:s},type:`streaming-start`});let p=0,m=``,h=0,g=``,_=(e=!1)=>{let t=Date.now();g&&(!e&&t-h<50||(W(s,`info`,`Reasoning`,g.length>400?`${g.slice(0,400)}…`:g),g=``,h=t))},v=new Dt(t.format,{source:t.id,onText:e=>{let t=Date.now();m+=e,t-p>=50&&(n({payload:{groupId:s,text:m},type:`streaming-chunk`}),m=``,p=t)},onToolStart:e=>{n(r(s,e,`running`))},onUsage:e=>{n(Ze(s,e,be(c)))},onThinking:e=>{g+=e,_(!1)}});for await(let e of Qe(f.body,u))v.push(e);m&&n({payload:{groupId:s,text:m},type:`streaming-chunk`}),_(!0);let y=v.finalize();return t.format===`mesh-llm`&&(y=Ce(y)),y}U.env.SHADOWCLAW_USER_AGENT;function Ht(e){return Array.isArray(e)?e[0]||``:typeof e==`string`?e:``}function Ut(e,t){let n=Number.parseInt(e??``,10);return!Number.isFinite(n)||n<=0?t:n}function Wt(e){let t=e.trim();if(!t)return{};let n=[],r=``,i=null;for(let e=0;e<t.length;e+=1){let a=t[e];if((a===`"`||a===`'`)&&t[e-1]!==`\\`){i===a?i=null:i||=a,r+=a;continue}if(a===`,`&&!i){r.trim()&&n.push(r.trim()),r=``;continue}r+=a}r.trim()&&n.push(r.trim());let a={};for(let e of n){let t=e.indexOf(`:`),n=e.indexOf(`=`),r=t>0?t:n;if(r<=0)continue;let i=e.slice(0,r).trim().replace(/^['"]|['"]$/g,``),o=e.slice(r+1).trim();if(i){if(o.startsWith(`"`)&&o.endsWith(`"`)||o.startsWith(`'`)&&o.endsWith(`'`)){o=o.slice(1,-1),a[i]=o.replace(/\\(["'\\])/g,`$1`);continue}if(o===`true`){a[i]=!0;continue}if(o===`false`){a[i]=!1;continue}if(o===`null`){a[i]=null;continue}if(/^-?\d+(\.\d+)?$/.test(o)){a[i]=Number(o);continue}a[i]=o}}return a}function Gt(e){let t=e.trim();if(!t)return{};let n=[],r=``,i=null,a=0;for(let e=0;e<t.length;e+=1){let o=t[e];if((o===`"`||o===`'`)&&t[e-1]!==`\\`){i===o?i=null:i||=o,r+=o;continue}if(!i){if(o===`(`||o===`{`||o===`[`)a+=1;else if((o===`)`||o===`}`||o===`]`)&&a>0)--a;else if(o===`,`&&a===0){r.trim()&&n.push(r.trim()),r=``;continue}}r+=o}r.trim()&&n.push(r.trim());let o={};for(let e of n){if(e=e.trim(),!e)continue;let t=e.indexOf(`=`),n=e.indexOf(`:`),r=t>0?t:n;if(r<=0)continue;let i=e.slice(0,r).trim().replace(/^['"]|['"]$/g,``),a=e.slice(r+1).trim();if(!i)continue;if(a.startsWith(`"`)&&a.endsWith(`"`)||a.startsWith(`'`)&&a.endsWith(`'`)){a=a.slice(1,-1),o[i]=a.replace(/\\(["'\\])/g,`$1`);continue}if(a===`true`){o[i]=!0;continue}if(a===`false`){o[i]=!1;continue}if(a===`null`){o[i]=null;continue}let s=Number(a);if(!Number.isNaN(s)&&a!==``){o[i]=s;continue}o[i]=a}return o}const Kt=U.env.SHADOWCLAW_USER_AGENT||`ShadowClaw/1.0`,qt=`onnx-community/Qwen3-0.6B-ONNX`,J=V.resolve(U.cwd(),`assets/cache/transformers.js/models.json`),Y=V.resolve(U.cwd(),`assets/cache/transformers.js`),X=V.resolve(U.cwd(),`assets/cache/transformers.js/models-discovery.json.part`),Jt=[{id:qt,name:`Qwen 3 0.6B (ONNX)`,context_length:32768,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,context_length:128e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,context_length:128e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-E9B-it-ONNX`,name:`Gemma 4 E9B (ONNX)`,context_length:256e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-E27B-it-ONNX`,name:`Gemma 4 E27B (ONNX)`,context_length:256e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-12B-it-ONNX`,name:`Gemma 4 12B (ONNX)`,context_length:256e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-E2B-it-qat-mobile-ONNX`,name:`Gemma 4 E2B QAT Mobile (ONNX)`,context_length:128e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-E4B-it-qat-mobile-ONNX`,name:`Gemma 4 E4B QAT Mobile (ONNX)`,context_length:128e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-4-12B-it-qat-mobile-ONNX`,name:`Gemma 4 12B QAT Mobile (ONNX)`,context_length:256e3,max_completion_tokens:8192,supports_tools:!0},{id:`onnx-community/gemma-3-1b-it-ONNX`,name:`Gemma 3 1B (ONNX)`,context_length:32e3,max_completion_tokens:4096,supports_tools:!0},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,context_length:32e3,max_completion_tokens:4096,supports_tools:!0}];function Yt(){let e=new Map,t=new Map,n=new Map,r=null,i={status:`idle`,progress:null,message:`Idle`,modelId:null,updatedAt:Date.now()};function a(e){Object.assign(i,e,{updatedAt:Date.now()})}function o(e){let t=n.get(e);t&&(clearTimeout(t),n.delete(e))}function s(e){o(e);let n=t.get(e)||0;t.set(e,n+1)}function c(e){let n=t.get(e)||0;if(n<=1){t.delete(e),l(e);return}t.set(e,n-1)}function l(e){o(e);let r=setTimeout(()=>{(t.get(e)||0)>0||u(e)},1e4);r.unref?.(),n.set(e,r)}async function u(n){o(n);let r=e.get(n);if(e.delete(n),t.delete(n),r)try{let e=await r;await Promise.resolve(e.model?.dispose?.()).catch(()=>{}),await Promise.resolve(e.processor?.dispose?.()).catch(()=>{})}catch{}}function d(e){let t=Error(e);return t.name=`AbortError`,t}function f(e){return(e instanceof DOMException||e instanceof Error)&&e.name===`AbortError`}async function p(e,t){let{modelId:n,phase:r,timeoutMs:o,abortSignal:s}=t;return!o||o<=0?e:await new Promise((t,c)=>{let l=!1,f=Math.max(25,Math.min(1e3,Math.floor(o/10))),p=null,m=r===`model load`&&i.modelId===n&&typeof i.progress==`number`?i.progress:null,h=Date.now(),g=()=>{let e=`Transformers.js ${r} timed out after ${o}ms for model '${n}'.`;a({status:`error`,progress:null,message:e,modelId:n}),r===`model load`&&u(n),c(Error(e))},_=()=>{l=!0,p!==null&&(r===`model load`?clearInterval(p):clearTimeout(p)),s?.removeEventListener(`abort`,v)},v=()=>{l||(_(),c(d(`Transformers.js request was aborted`)))};p=r===`model load`?setInterval(()=>{if(l)return;let e=i.modelId===n,t=i.progress;e&&typeof t==`number`&&(m===null||t>m)&&(m=t,h=Date.now()),Date.now()-h>=o&&(_(),g())},f):setTimeout(()=>{l||(_(),g())},o),s?.addEventListener(`abort`,v,{once:!0}),e.then(e=>{l||(_(),t(e))},e=>{l||(_(),c(e))})})}function m(){return Ut(Fe.TRANSFORMERS_JS_REQUEST_TIMEOUT_MS,3e5)}async function h(e){let t=Reflect.get(e,`env`);!t||typeof t!=`object`||(await ze(Y,{recursive:!0}),Reflect.set(t,`useFSCache`,!0),Reflect.set(t,`useBrowserCache`,!1),Reflect.set(t,`cacheDir`,Y))}async function g(e){try{return await Ue(e),!0}catch{return!1}}function _(e){return Math.max(1,Math.ceil(e.length/4))}function v(e){return e.replace(/<\s*turn\|>\s*|<\|end_of_turn\|>|<\|eot_id\|>/gi,``)}async function y(t,n,r){if(!Jt.map(e=>e.id).includes(t)){let e=`Model '${t}' is not supported by Transformers.js. This provider only supports ONNX-converted models. Supported models: ${Jt.map(e=>`${e.id} (${e.name})`).join(`, `)}`;throw a({status:`error`,progress:null,message:e,modelId:t}),Error(e)}let i=e.get(t);if(i)return i;let o=(async()=>{let e=await import(`@huggingface/transformers`);await h(e);let i=Reflect.get(e,`AutoProcessor`),o=Reflect.get(e,`AutoTokenizer`),s=Reflect.get(e,`Gemma4Processor`),c=Reflect.get(e,`Gemma4ForConditionalGeneration`),l=Reflect.get(e,`AutoModelForImageTextToText`),u=Reflect.get(e,`AutoModelForCausalLM`),d=Reflect.get(e,`TextStreamer`),f=t.toLowerCase().includes(`gemma-4`),p=[];if(f&&typeof c?.from_pretrained==`function`&&p.push({name:`Gemma4ForConditionalGeneration`,from_pretrained:(e,t)=>c.from_pretrained(e,t)}),!f&&typeof l?.from_pretrained==`function`&&p.push({name:`AutoModelForImageTextToText`,from_pretrained:(e,t)=>l.from_pretrained(e,t)}),!f&&typeof u?.from_pretrained==`function`&&p.push({name:`AutoModelForCausalLM`,from_pretrained:(e,t)=>u.from_pretrained(e,t)}),typeof i?.from_pretrained!=`function`&&typeof o?.from_pretrained!=`function`||p.length===0||typeof d!=`function`)throw Error(f?`Transformers.js runtime is unavailable for Gemma 4. Ensure @huggingface/transformers exports Gemma4Processor and Gemma4ForConditionalGeneration, then restart the server.`:`Transformers.js runtime is unavailable. Ensure @huggingface/transformers exports AutoProcessor or AutoTokenizer and at least one model loader.`);n&&console.log(`[Proxy] Loading Transformers.js model: ${t}`),a({status:`running`,progress:0,message:`Preparing model ${t}...`,modelId:t});let m=(e,n)=>{if(e?.status===`progress_total`){let r=Number(e.progress);a({status:`running`,progress:Number.isFinite(r)?Math.max(0,Math.min(1,r/100)):null,message:`Downloading ${t} (${n})...`,modelId:t})}try{r?.(e)}catch{}},g=null;if(f){let e=typeof s?.from_pretrained==`function`?s:i;if(typeof e?.from_pretrained==`function`)try{g=await e.from_pretrained(t,{progress_callback:e=>m(e,`processor`)})}catch(e){if(typeof o?.from_pretrained==`function`)n&&console.warn(`[Transformers.js] Processor failed for ${t}, falling back to AutoTokenizer:`,e),g=await o.from_pretrained(t,{progress_callback:e=>m(e,`tokenizer`)});else throw e}else typeof o?.from_pretrained==`function`&&(g=await o.from_pretrained(t,{progress_callback:e=>m(e,`tokenizer`)}))}else if(typeof i?.from_pretrained==`function`)try{g=await i.from_pretrained(t,{progress_callback:e=>m(e,`processor`)})}catch(e){if(typeof o?.from_pretrained==`function`)n&&console.warn(`[Transformers.js] AutoProcessor failed for ${t}, falling back to AutoTokenizer:`,e),g=await o.from_pretrained(t,{progress_callback:e=>m(e,`tokenizer`)});else throw e}else typeof o?.from_pretrained==`function`&&(g=await o.from_pretrained(t,{progress_callback:e=>m(e,`tokenizer`)}));let _=null,v=``,y=null;if(f)for(let e of[`q4`,`q4f16`,`fp16`])try{_=await c.from_pretrained(t,{dtype:e,device:`cpu`,progress_callback:t=>m(t,e)}),v=`Gemma4ForConditionalGeneration/${e}`;break}catch(e){y=e}else{let e=[`q4`,`q4f16`,`q8`,`fp16`];for(let n of p){for(let r of e)try{_=await n.from_pretrained?.(t,{dtype:r,device:`cpu`,progress_callback:e=>m(e,`${n.name}/${r}`)}),v=`${n.name}/${r}`;break}catch(e){y=e}if(_)break}}if(!_){let e=y instanceof Error?y.message:String(y||`unknown error`);throw a({status:`error`,progress:null,message:e,modelId:t}),Error(`No supported Transformers.js model loader could initialize '${t}'. Last error: ${e}`)}return a({status:`done`,progress:1,message:`Model ready: ${t}`,modelId:t}),{processor:g,model:_,TextStreamer:d,modelLoaderName:v}})().catch(n=>{throw e.delete(t),n});return e.set(t,o),o}function b(e){let t=e.replace(/^onnx-community\//,``),n=t.match(/gemma-4-([^-]+)-it-onnx/i),r=n?.[1]?`Gemma 4 ${n[1].toUpperCase()} (ONNX)`:t,i=e.toLowerCase(),a=32e3;return i.includes(`gemma-4-12b`)||i.includes(`gemma-4-26b`)||i.includes(`gemma-4-31b`)||i.includes(`gemma-4-e9b`)||i.includes(`gemma-4-e27b`)?a=256e3:i.includes(`gemma-4`)&&(a=128e3),{id:e,name:r,context_length:a,max_completion_tokens:8192,supports_tools:!0}}async function x(e){for(let t=0;t<2;t+=1){let n=t===0,r=0;if(n)try{let e=await Ue(X);e.isFile()&&(r=e.size)}catch{r=0}let i={"User-Agent":Kt,Accept:`application/json`,"Accept-Encoding":`identity`};r>0&&(i.Range=`bytes=${r}-`);let a=await fetch(e,{headers:i});if(a.status===416&&n){await We(X).catch(()=>{});continue}if(!a.ok)throw Error(`Failed to discover Transformers.js models (${a.status})`);if(r>0&&a.status===206||await H(X,``,`utf8`),a.body){let e=a.body.getReader();try{for(;;){let{done:t,value:n}=await e.read();if(t)break;n&&n.length>0&&await H(X,n,{flag:`a`})}}finally{e.releaseLock()}}else{let e=await a.text();await H(X,e,{encoding:`utf8`,flag:`a`})}try{let e=await Be(X,`utf8`),t=JSON.parse(e);return Array.isArray(t)?t:[]}catch(e){if(n&&r>0){await We(X).catch(()=>{});continue}throw e}}throw Error(`Failed to download Transformers.js discovery catalog`)}return{async runChatCompletion(e){let{modelId:t,messages:n,tools:r,maxCompletionTokens:i,verbose:a,onToken:o,onProgress:l,abortSignal:u}=e,d=m();s(t);let h;try{h=await p(y(t,a,l),{modelId:t,phase:`model load`,timeoutMs:d,abortSignal:u})}catch(e){throw c(t),e}try{let e=Ee(n),a;if(typeof h.processor?.apply_chat_template==`function`)try{a=h.processor.apply_chat_template(e,{enable_thinking:!1,add_generation_prompt:!0,tokenize:!1,...r&&r.length>0&&{tools:r}})}catch{a=await De({modelName:t,messages:e,addGenerationPrompt:!0})}else if(typeof h.processor?.tokenizer?.apply_chat_template==`function`)try{a=h.processor.tokenizer.apply_chat_template(e,{enable_thinking:!1,add_generation_prompt:!0,tokenize:!1,...r&&r.length>0&&{tools:r}})}catch{a=await De({modelName:t,messages:e,addGenerationPrompt:!0})}else a=await De({modelName:t,messages:e,addGenerationPrompt:!0});let s=h.processor?.tokenizer||h.processor,c=h.processor?.tokenizer?await h.processor(a,null,null,{add_special_tokens:!1}):await h.processor(a,{add_special_tokens:!1}),l=[],f=await p(h.model.generate({...c,...u?{signal:u}:{},max_new_tokens:i,do_sample:!1,streamer:new h.TextStreamer(s,{skip_prompt:!0,skip_special_tokens:!0,callback_function:e=>{if(u?.aborted)return;let t=v(e);t&&(l.push(t),o?.(t))}})}),{modelId:t,phase:`generation`,timeoutMs:d,abortSignal:u}),m=v(l.join(``)).trim();if(!m){let e=typeof s?.batch_decode==`function`?s.batch_decode.bind(s):typeof h.processor?.batch_decode==`function`?h.processor.batch_decode.bind(h.processor):null,t=e?e(f.slice(null,[c.input_ids.dims.at(-1),null]),{skip_special_tokens:!0}):null;m=v(String(t?.[0]||``)).trim()}return{text:m,promptTokens:_(a),completionTokens:_(m)}}catch(e){throw f(e)&&u?.aborted,e}finally{c(t)}},async fetchDynamicModels(){if(r)return r.models;try{let e=await Be(J,`utf8`),t=JSON.parse(e);if(Array.isArray(t?.models))return r={models:t.models},t.models}catch{}let e=(await x(Fe.TRANSFORMERS_JS_MODELS_DISCOVERY_URL||`https://huggingface.co/api/models?author=onnx-community&limit=100`).catch(()=>[])).map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e.toLowerCase().includes(`onnx`)),t=[...new Set(e)],n=Jt.map(e=>e.id),i=[...new Set([...n,...t])];i.includes(`onnx-community/Qwen3-0.6B-ONNX`)||i.unshift(qt);let a=new Map(Jt.map(e=>[e.id,e])),o=i.sort((e,t)=>e.localeCompare(t)).map(e=>a.get(e)||b(e));r={models:o};try{await ze(V.dirname(J),{recursive:!0}),await H(J,JSON.stringify({models:o},null,2),`utf8`)}catch{}return o},getDownloadStatus(){return{...i}},async getDiskCacheStatus(){let[t,n]=await Promise.all([g(J),g(Y)]),r=n?await Ve(Y).catch(()=>[]):[];return{modelsCatalogPath:J,modelsCatalogExists:t,runtimeCacheDir:Y,runtimeCacheDirExists:n,runtimeCacheEntryCount:r.length,runtimeCacheEntries:r,loadedRuntimeModels:[...e.keys()]}},async prewarmModel(e){let{modelId:t,verbose:n,onProgress:r}=e;return{modelId:t,loader:(await y(t,n,r)).modelLoaderName,cacheDir:Y}},disposeRuntime:u,__setRuntimeForTests(t,n){o(t),e.set(t,Promise.resolve(n))},__setDownloadStatusForTests(e){a(e)},async __resetRuntimeForTests(){let r=new Set([...e.keys(),...n.keys(),...t.keys()]);await Promise.all([...r].map(e=>u(e)))}}}function Xt(e){let t=e.trim();if(!t)return{};let n=[],r=``,i=null,a=0;for(let e=0;e<t.length;e++){let o=t[e];if((o===`"`||o===`'`)&&t[e-1]!==`\\`){i===o?i=null:i||=o,r+=o;continue}if(!i){if(o===`(`||o===`{`||o===`[`)a++;else if((o===`)`||o===`}`||o===`]`)&&a>0)a--;else if(o===`,`&&a===0){r.trim()&&n.push(r.trim()),r=``;continue}}r+=o}r.trim()&&n.push(r.trim());let o={};for(let e of n){if(e=e.trim(),!e)continue;let t=e.indexOf(`:`),n=e.indexOf(`=`),r=t>0&&(n<=0||t<=n)?t:n;if(r<=0)continue;let i=e.slice(0,r).trim().replace(/^['"<|"|\>]|['"<|"|\>]$/g,``).trim(),a=e.slice(r+1).trim();if(!i)continue;if(a=a.replace(/^\s*<\|"\|\>\s*/,``).replace(/\s*<\|"\|\>\s*$/,``),a.startsWith(`"`)&&a.endsWith(`"`)||a.startsWith(`'`)&&a.endsWith(`'`)){o[i]=a.slice(1,-1).replace(/\\(["'\\])/g,`$1`);continue}if(a===`true`){o[i]=!0;continue}if(a===`false`){o[i]=!1;continue}if(a===`null`){o[i]=null;continue}let s=Number(a);if(!Number.isNaN(s)&&a!==``){o[i]=s;continue}o[i]=a}return o}function Zt(e){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)){try{let e=JSON.parse(t);if(e&&typeof e==`object`&&!Array.isArray(e))return e}catch{}return Xt(t.slice(1,-1))}return Xt(t)}function Qt(e){let t=e.replace(/<\s*turn\|>\s*|<\|end_of_turn\|>|<\|eot_id\|>/gi,``).replace(/<\|tool_call\|?>/gi,``).trim();if(!t)return null;let n=t.match(/^call\s*:\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\{([\s\S]*)\}\s*$/);if(n?.[1])return{name:n[1],input:Zt(`{${n[2]}}`)};let r=t.match(/^<\s*execute_tool\s*>\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\(([^)]*)\)\s*<\s*\/\s*execute_tool\s*>\s*$/i);if(r?.[1])return{name:r[1],input:Xt(r[2]??``)};let i=t.match(/^\[tool_code\]([\s\S]*?)\[\/tool_code\]$/i);if(i?.[1]){let e=i[1].trim(),t=e.match(/^print\s*\(\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\(\s*(.*?)\s*\)\s*\)$/s),n=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*\(\s*(.*?)\s*\)$/s),r=t??n;if(r?.[1]){let e=(r[2]??``).trim();if(!e.startsWith(`{`)||!e.endsWith(`}`))return null;try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return{name:r[1],input:t}}catch{return null}}}return null}function $t(e){return!Array.isArray(e)||e.length===0?[]:e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.input_schema??{}}}))}let en=null;function tn(){return en||=Yt(),en}async function nn(t){let{modelId:n,messages:r,tools:i,maxTokens:a=8192,verbose:o=!1,onToken:s,onProgress:c,abortSignal:l,service:u}=t,d=u||tn(),f=$t(i??[]),p=await d.runChatCompletion({modelId:n,messages:r,tools:f.length>0?f:void 0,maxCompletionTokens:a,verbose:o,onToken:s,onProgress:c,abortSignal:l}),m=Qt(p.text);return m?{id:`chatcmpl-${e()}`,object:`chat.completion`,created:Math.floor(Date.now()/1e3),model:n,choices:[{index:0,message:{role:`assistant`,content:null,tool_calls:[{id:`call_${e()}`,type:`function`,function:{name:m.name,arguments:JSON.stringify(m.input)}}]},finish_reason:`tool_calls`}],usage:{prompt_tokens:p.promptTokens,completion_tokens:p.completionTokens,total_tokens:p.promptTokens+p.completionTokens}}:{id:`chatcmpl-${e()}`,object:`chat.completion`,created:Math.floor(Date.now()/1e3),model:n,choices:[{index:0,message:{role:`assistant`,content:p.text},finish_reason:`stop`}],usage:{prompt_tokens:p.promptTokens,completion_tokens:p.completionTokens,total_tokens:p.promptTokens+p.completionTokens}}}It(nn);function rn(e,t,n){let r={id:`chatcmpl-${Date.now()}`,object:`chat.completion.chunk`,created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{content:n},finish_reason:null}]};e.write(`data: ${JSON.stringify(r)}\n\n`)}function an(e,t,n){let r={id:`chatcmpl-${Date.now()}`,object:`chat.completion.chunk`,created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{tool_calls:[{index:0,id:`call_${Date.now()}_${Math.random()}`,type:`function`,function:{name:n.name,arguments:JSON.stringify(n.input||{})}}]},finish_reason:null}]};e.write(`data: ${JSON.stringify(r)}\n\n`)}function on(e,t,n=`stop`){let r={id:`chatcmpl-${Date.now()}`,object:`chat.completion.chunk`,created:Math.floor(Date.now()/1e3),model:t,choices:[{index:0,delta:{},finish_reason:n}]};e.write(`data: ${JSON.stringify(r)}\n\n`),e.write(`data: [DONE]
15
+
16
+ `)}const sn=Pe(import.meta.url),cn=V.dirname(sn),ln=je(import.meta.url),un=`.llamafile`,dn=parseInt(U.env.LLAMAFILE_CTX_SIZE||`8192`,10),fn=new Set([`localhost`,`127.0.0.1`,`::1`]),pn=new Set;function mn(e,t){if(!(e.exitCode!==null||e.signalCode!==null||e.killed)){if(U.platform===`win32`){if(typeof e.pid==`number`)try{let t=ln("node:child_process");typeof t.execFileSync==`function`&&t.execFileSync(`taskkill`,[`/PID`,String(e.pid),`/T`,`/F`],{stdio:`ignore`,windowsHide:!0})}catch{}return}try{if(typeof e.pid==`number`){if(t)try{U.kill(-e.pid,`SIGKILL`)}catch{}try{U.kill(e.pid,`SIGKILL`)}catch{}}}catch{}}}function Z(){for(let e of pn)try{e.killSync()}catch{}pn.clear()}let hn=!1;function gn(){hn||(hn=!0,U.on(`exit`,()=>{Z()}),U.on(`SIGINT`,()=>{Z()}),U.on(`SIGTERM`,()=>{Z()}),U.platform!==`win32`&&U.on(`SIGHUP`,()=>{Z()}))}gn();function _n(e){return e===`server`?`server`:`cli`}function vn(e){let t=e.trim().toLowerCase();return fn.has(t)?!0:qe(t)===4?t.startsWith(`127.`):qe(t)===6&&t===`::1`}function yn(e){let t=(typeof e==`string`?e.trim():``)||`127.0.0.1`;if(U.env.LLAMAFILE_ALLOW_NON_LOOPBACK!==`true`&&!vn(t))throw Error(`Unsafe host '${t}'. Only loopback hosts are allowed unless LLAMAFILE_ALLOW_NON_LOOPBACK=true.`);return t}function bn(e){let t=typeof e==`number`?e:Number.parseInt(typeof e==`string`?e:``,10);return!Number.isFinite(t)||t<1||t>65535?8080:t}function xn(e){return typeof e==`boolean`?e:typeof e!=`string`||e!==`false`}function Sn(e){let t={...e};return delete t.llamafile,t}function Cn(e){let t=Sn(e);return delete t.stream,delete t.stream_options,t}function wn(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return``;let t=[];for(let n of e){if(typeof n==`string`){t.push(n);continue}if(!n||typeof n!=`object`)continue;let e=n;if(e.type===`text`&&typeof e.text==`string`){t.push(e.text);continue}if(e.type===`tool_result`&&typeof e.content==`string`){t.push(e.content);continue}if(e.type===`tool_use`&&e.name){let n=String(e.name),r=e.input&&typeof e.input==`object`?JSON.stringify(e.input):`{}`;t.push(`[tool_use:${n}] ${r}`)}}return t.join(`
17
+ `)}function Tn(e){let t=Array.isArray(e.messages)?e.messages:[];if(t.length===0)return``;let n=[];for(let e of t){if(!e||typeof e!=`object`)continue;let t=e,r=typeof t.role==`string`&&t.role.trim()?t.role.trim().toUpperCase():`USER`,i=wn(t.content).trim();i&&n.push(`${r}: ${i}`)}return n.length===0?``:(n.push(`ASSISTANT:`),n.join(`
18
+
19
+ `))}function En(e){let t=String(e||``).replace(/\r\n/g,`
20
+ `).trim(),n=``,r=t.length===0,i=!1,a=e=>{if(i||!e)return e;let t=e.replace(/^\s*ASSISTANT:\s*/i,``);return t!==e&&(i=!0),t};return{push(e){let i=String(e||``).replace(/\r\n/g,`
21
+ `);if(r)return a(i);n+=i;let o=n.trimStart();if(t.startsWith(o)&&o.length<t.length)return``;r=!0;let s=n,c=n.trimStart();return c.startsWith(t)&&(s=c.slice(t.length)),n=``,a(s)},flush(){if(r)return``;r=!0;let e=a(n);return n=``,e}}}function Dn(e){let t=e.replace(/<\s*turn\|>\s*|<\|end_of_turn\|>|<\|eot_id\|>/gi,``).trim(),n=t.match(/^call\s*:\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\{([\s\S]*)\}\s*$/);if(n?.[1])return{name:n[1],input:Wt(n[2]?.trim()||``)};let r=t.match(/^<\s*execute_tool\s*>\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\(([^)]*)\)\s*<\s*\/\s*execute_tool\s*>\s*$/i);return r?.[1]?{name:r[1],input:Gt(r[2]?.trim()||``)}:null}function On(){let e=new Map,t=new Map;function n(e,t){let n={child:e,runDetached:t,killSync:()=>mn(e,t)};pn.add(n);let r=()=>{pn.delete(n)};return e.once(`close`,r),e.once(`error`,r),e.once(`exit`,r),r}async function r(){let e=[V.resolve(cn,`../../../assets/cache/llamafile`),V.resolve(cn,`../../../../assets/cache/llamafile`),V.resolve(U.cwd(),`assets/cache/llamafile`)],t=``;for(let n of e)try{if((await Ue(n)).isDirectory()){t=n;break}}catch{}if(!t)throw Error(`Could not locate assets/cache/llamafile directory. Tried: ${e.join(`, `)}`);return(await Ve(t,{withFileTypes:!0})).filter(e=>e.isFile()&&e.name.endsWith(un)).map(e=>{let n=e.name;return{fileName:n,id:n.slice(0,-10),absolutePath:V.resolve(t,n)}}).sort((e,t)=>e.fileName.localeCompare(t.fileName))}async function i(e){let t=await r(),n=e.trim(),i=t.find(e=>e.id===n||e.fileName===n||e.absolutePath===n);if(i)return i;let a=V.basename(n),o=a.endsWith(un)?a.slice(0,-10):a,s=t.find(e=>e.id===n||e.fileName===n||e.fileName===a||e.id===o||e.fileName===`${o}${un}`);if(!s)throw Error(`Model '${n}' not found under assets/cache/llamafile (*.llamafile).`);return s}function a(e,t){return Ht(e.headers[`x-shadowclaw-request-id`]).trim()||(typeof t?.requestId==`string`&&t.requestId.trim()?t.requestId.trim():(t?.llamafile&&typeof t.llamafile==`object`?String(t.llamafile.requestId||``).trim():``)||Ht(e.headers[`x-request-id`]).trim()||`req_${Date.now()}_${Math.random().toString(36).slice(2,8)}`)}function o(t,n){return e.set(t,n),()=>{e.get(t)===n&&e.delete(t)}}function s(t){let n=e.get(t);return n?(e.delete(t),n(),!0):!1}function c(e){let t=e.headers[`x-llamafile-mode`],n=e.headers[`x-llamafile-host`],r=e.headers[`x-llamafile-port`],i=e.headers[`x-llamafile-offline`],a=e.body&&typeof e.body==`object`&&e.body.llamafile&&typeof e.body.llamafile==`object`?e.body.llamafile:{};return{mode:_n(a.mode??t),host:yn(a.host??n),port:bn(a.port??r),offline:xn(a.offline??i)}}function l(e){let t=e&&typeof e==`object`?String(e.code??``):``,n=String(e&&typeof e==`object`?e.message??``:e??``);return t===`ENOEXEC`||n.includes(`ENOEXEC`)}async function u(e,t,n,r){let i=i=>i?(r&&console.log(`[Proxy] Shell fallback: /bin/sh -c 'exec "\$0" "\$@"' ${e} [${t.length} args]`),Le(`/bin/sh`,[`-c`,`exec "$0" "$@"`,e,...t],{cwd:n.cwd,env:n.env,stdio:[`ignore`,`pipe`,`pipe`],detached:n.detached})):Le(e,t,{cwd:n.cwd,env:n.env,stdio:[`ignore`,`pipe`,`pipe`],detached:n.detached}),a=async e=>{await new Promise((t,n)=>{let r=()=>{e.off(`error`,i),t()},i=t=>{e.off(`spawn`,r),n(t)};e.once(`spawn`,r),e.once(`error`,i)})},o;try{return o=i(!1),await a(o),o}catch(t){if(U.platform===`win32`||!l(t))throw t;return r&&console.warn(`[Proxy] Direct exec failed with ENOEXEC for ${V.basename(e)}. Retrying via /bin/sh.`),o=i(!0),await a(o),o}}async function d(e,r){let i=t.get(e);if(typeof i==`boolean`)return i;try{let r=U.platform!==`win32`,i=await u(e,[`--help`],{cwd:V.dirname(e),env:{...U.env},detached:r},!1);n(i,r);let a=``;i.stdout?.on(`data`,e=>{a+=e.toString(`utf8`)}),i.stderr?.on(`data`,e=>{a+=e.toString(`utf8`)}),await new Promise((e,t)=>{i.on(`error`,t),i.on(`close`,()=>e())});let o=/(^|\s)--offline(\s|[,.)]|$)/m.test(a);return t.size>=100&&t.clear(),t.set(e,o),o}catch(n){if(r){let t=n instanceof Error?n.message:String(n);console.warn(`[Proxy] Could not probe --offline support for ${V.basename(e)}: ${t}. Continuing without --offline.`)}return t.size>=100&&t.clear(),t.set(e,!1),!1}}return{listBinaries:r,resolveBinary:i,getLlamafileRequestId:a,cancelRequest:s,getLlamafileRuntimeOptions:c,async invokeCli(e,t,r,s,c){if(e.destroyed||e.aborted||e.socket?.destroyed)throw Error(`Request already closed or aborted`);let{absolutePath:l}=await i(s.model),f=a(e,r);try{await Re(l,Me.X_OK)}catch(e){let t=`Binary not executable or not found: ${l} (${e instanceof Error?e.message:String(e)})`;throw Error(t)}if(e.destroyed||e.aborted||e.socket?.destroyed)throw Error(`Request already closed or aborted`);let p=r.stream===!0,m=Tn(Cn(r));if(!m)throw Error(`Llamafile CLI requires at least one text message in request payload.`);let h=typeof r.max_tokens==`number`&&Number.isFinite(r.max_tokens)?Math.floor(r.max_tokens):512,g=[`--n-predict`,String(Math.max(1,h)),`--ctx-size`,String(dn),`--cli`,`-p`,m];s.offline&&await d(l,c)?g.unshift(`--offline`):s.offline&&c&&console.log(`[Proxy] Skipping unsupported --offline flag for ${V.basename(l)}.`);let _,v=U.platform!==`win32`;try{_=await u(l,g,{cwd:V.dirname(l),env:{...U.env},detached:v},c)}catch(e){throw Error(`Failed to spawn llamafile: ${e instanceof Error?e.message:String(e)}`)}if(n(_,v),e.destroyed||e.aborted||e.socket?.destroyed)throw mn(_,v),Error(`Request already closed or aborted`);if(!_.stdout||!_.stderr)throw mn(_,v),Error(`Failed to setup child process streams`);let y=``,b=``,x=``,S=!1,C=!1,w=null,T=En(m),E=()=>{w&&=(clearTimeout(w),null)},D=(e=`SIGTERM`)=>{if(!(_.exitCode!==null||_.signalCode!==null||_.killed)){if(e===`SIGKILL`){mn(_,v);return}if(U.platform===`win32`){if(typeof _.pid!=`number`)return;try{let e=ln("node:child_process");if(typeof e.execFileSync==`function`){e.execFileSync(`taskkill`,[`/PID`,String(_.pid),`/T`,`/F`],{stdio:`ignore`,windowsHide:!0});return}}catch{}try{Le(`taskkill`,[`/PID`,String(_.pid),`/T`,`/F`],{stdio:`ignore`,windowsHide:!0}).unref()}catch{}return}try{if(v&&typeof _.pid==`number`)try{U.kill(-_.pid,e)}catch{}if(typeof _.pid==`number`)try{U.kill(_.pid,e)}catch{}}catch{}}},O=()=>{if(!(_.exitCode!==null||_.signalCode!==null||_.killed)){if(U.platform===`win32`){D(`SIGKILL`);return}D(`SIGTERM`),!w&&(w=setTimeout(()=>{_.exitCode!==null||_.signalCode!==null||_.killed||D(`SIGKILL`)},500))}},k=()=>{e.off(`aborted`,A),e.off(`close`,A),e.socket.off(`close`,A),t.off(`close`,A)},A=()=>{C||(C=!0,O())};e.once(`aborted`,A),e.once(`close`,A),e.socket.once(`close`,A),t.once(`close`,A);let j=o(f,A);return new Promise((e,n)=>{if(p){t.status(200),t.setHeader(`Content-Type`,`text/event-stream`),t.setHeader(`Cache-Control`,`no-cache`),t.setHeader(`Connection`,`keep-alive`),t.setHeader(`Access-Control-Allow-Origin`,`*`),t.flushHeaders(),_.stdout.on(`data`,e=>{if(C||t.writableEnded)return;let n=e.toString(`utf8`);b+=n;let r=T.push(n);r&&!C&&!t.writableEnded&&rn(t,s.model,r),x+=r}),_.stderr.on(`data`,e=>{y+=e.toString(`utf8`)}),_.on(`close`,n=>{if(k(),j(),E(),C||S){e();return}if(n!==0){let r=y.trim()||`llamafile exited with status ${n}`;t.write(`data: ${JSON.stringify({error:{type:`server_error`,message:r}})}\n\n`),t.write(`data: [DONE]
22
+
23
+ `),t.end(),e();return}let r=T.flush();x+=r;let i=Dn(x.trim());if(i){an(t,s.model,i),on(t,s.model,`tool_calls`),t.end(),e();return}r&&!C&&!t.writableEnded&&rn(t,s.model,r),on(t,s.model),t.end(),e()}),_.on(`error`,n=>{if(S=!0,k(),j(),E(),C){e();return}let r=`Child process error: ${n instanceof Error?n.message:String(n)}`;if(!t.headersSent){t.status(500).json({error:`Failed to execute llamafile: ${r}`}),e();return}t.write(`data: ${JSON.stringify({error:{type:`server_error`,message:r}})}\n\n`),t.write(`data: [DONE]
24
+
25
+ `),t.end(),e()});return}_.stdout.on(`data`,e=>{b+=e.toString(`utf8`),x+=T.push(e.toString(`utf8`))}),_.stderr.on(`data`,e=>{y+=e.toString(`utf8`)}),_.on(`close`,n=>{if(k(),j(),E(),C){e();return}if(n!==0){let r=y.trim()||`llamafile exited with status ${n}`;t.status(500).json({error:r}),e();return}x+=T.flush();let r=x.trim(),i=Dn(r);t.json({id:`chatcmpl-llamafile-${Date.now()}`,object:`chat.completion`,created:Math.floor(Date.now()/1e3),model:s.model,choices:[{index:0,message:i?{role:`assistant`,content:null,tool_calls:[{id:`call_${Date.now()}_${Math.random()}`,type:`function`,function:{name:i.name,arguments:JSON.stringify(i.input||{})}}]}:{role:`assistant`,content:r||`(no response)`},finish_reason:i?`tool_calls`:`stop`}]}),e()}),_.on(`error`,n=>{if(S=!0,k(),j(),E(),C){e();return}t.status(500).json({error:`Child process error: ${n instanceof Error?n.message:String(n)}`}),e()})})},terminateAll(){for(let t of e.values())try{t()}catch{}Z()},__getOfflineSupportCache(){return t},__getActiveRequests(){return e},__getActiveProcesses(){return pn}}}let kn=null;function An(){return kn||=On(),kn}async function jn(t){let{model:n,messages:r,maxTokens:i=8192,verbose:a=!1,onToken:o,abortSignal:s,service:c}=t,l=c||An(),u=new Ke,d=new Ke,f=s?.aborted??!1,p=Object.assign(u,{headers:{},socket:d,destroyed:f,aborted:f,body:{model:n,messages:r,max_tokens:i,stream:!0}}),m=()=>{f=!0,p.destroyed=!0,p.aborted=!0,d.destroyed=!0,u.emit(`close`),u.emit(`aborted`),d.emit(`close`)};s&&(s.aborted?m():s.addEventListener(`abort`,m,{once:!0}));let h=``,g=null,_=[],v=`stop`,y=new Ke,b=!1;return new Promise((t,r)=>{let i=Object.assign(y,{headersSent:!1,writableEnded:!1,status(e){return this},setHeader(e,t){return this},flushHeaders(){},write(e){let t=(typeof e==`string`?e:e.toString(`utf8`)).split(`
26
+ `);for(let e of t){let t=e.trim();if(!t||!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(n!==`[DONE]`)try{let e=JSON.parse(n);e.error?.message&&(g=e.error.message);let t=e.choices?.[0]?.delta;t?.content&&(h+=t.content,o?.(t.content)),Array.isArray(t?.tool_calls)&&_.push(...t.tool_calls);let r=e.choices?.[0]?.finish_reason;r&&(v=r)}catch{}}return!0},end(){if(b)return;if(b=!0,this.writableEnded=!0,g){r(Error(g));return}let i={role:`assistant`,content:h};_.length>0&&(i.tool_calls=_),t({id:`chatcmpl-${e()}`,object:`chat.completion`,created:Math.floor(Date.now()/1e3),model:n,choices:[{index:0,message:i,finish_reason:v}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}})}});l.invokeCli(p,i,p.body,{model:n,offline:!1},a).catch(e=>{b||(b=!0,r(e))})})}Rt(jn);const Mn=async(e,t,n=!1,r)=>{try{let i={console,URL,TextEncoder,TextDecoder,JSON,Math,Date,parseInt,parseFloat,encodeURIComponent,decodeURIComponent,setTimeout,clearTimeout,data:r??``,$PIPE_DATA:r??``,fetch:n?globalThis.fetch:void 0},a=`(async () => {
27
+ "use strict";
28
+ ${e}
29
+ })()`;return{ok:!0,value:await Promise.race([Je(a,i,{timeout:t}),new Promise((e,n)=>setTimeout(()=>n(Error(`Execution timed out after ${t/1e3}s`)),t))])}}catch(e){return{ok:!1,error:e&&e.message?e.message:String(e)}}};O(Mn),globalThis.__headlessEvalExecutor=Mn;async function Nn(e,t,n,r={}){let i=[],a=[];for(let o of n)try{r.onStep?.(o);let s=Pn(o.input||{},a,n),c=await f(e,o.name,s,t,{isScheduledTask:!r.isManual,isTaskExecution:r.isTaskExecution});a.push(c),o.suppressOutput||i.push(`**Tool \`${o.name}\`**: ${c}`)}catch(e){let t=e.message||String(e);a.push(t),o.suppressOutput||i.push(`**Tool \`${o.name}\` failed**: ${t}`)}return{rawOutputs:a,results:i}}function Pn(e,t,n){if(e&&typeof e==`object`){if(Array.isArray(e))return e.map(e=>Pn(e,t,n));if(`$pipe`in e){let r=e.$pipe,i=``;if(r===`prev`)i=t[t.length-1]??``;else if(typeof r==`number`)i=t[r]??``;else if(typeof r==`string`){for(let e=t.length-1;e>=0;e--)if(n[e]?.name===r){i=t[e];break}}return Fn(i)}let r={};for(let[i,a]of Object.entries(e))r[i]=Pn(a,t,n);return r}return e}function Fn(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>e&&typeof e==`object`?`text`in e?String(e.text):`data`in e?String(e.data):JSON.stringify(e):String(e??``)).join(`
30
+ `):e&&typeof e==`object`?e:e??``}let Q=null;const $=(e,t,n,r)=>{try{e.exec(`ALTER TABLE ${t} ADD COLUMN ${n} ${r}`)}catch{}};function In(e=`database/agent.db`){if(Q)return Q;let t=new Ye(e);return t.exec(`
31
+ CREATE TABLE IF NOT EXISTS messages (
32
+ id TEXT PRIMARY KEY,
33
+ groupId TEXT NOT NULL,
34
+ timestamp INTEGER NOT NULL,
35
+ content TEXT NOT NULL,
36
+ sender TEXT NOT NULL,
37
+ channel TEXT NOT NULL DEFAULT 'chat',
38
+ isFromMe INTEGER NOT NULL DEFAULT 0,
39
+ isTrigger INTEGER NOT NULL DEFAULT 0,
40
+ attachments TEXT,
41
+ a2uiAction TEXT,
42
+ a2uiEnvelopes TEXT,
43
+ freshContext INTEGER,
44
+ subagent INTEGER
45
+ )
46
+ `),t.exec(`
47
+ CREATE INDEX IF NOT EXISTS messages_by_group_time
48
+ ON messages (groupId, timestamp)
49
+ `),t.exec(`
50
+ CREATE INDEX IF NOT EXISTS messages_by_group
51
+ ON messages (groupId)
52
+ `),t.exec(`
53
+ CREATE TABLE IF NOT EXISTS sessions (
54
+ groupId TEXT PRIMARY KEY,
55
+ messages TEXT NOT NULL DEFAULT '[]',
56
+ updatedAt INTEGER NOT NULL DEFAULT 0
57
+ )
58
+ `),t.exec(`
59
+ CREATE TABLE IF NOT EXISTS tasks (
60
+ id TEXT PRIMARY KEY,
61
+ groupId TEXT NOT NULL,
62
+ enabled INTEGER NOT NULL DEFAULT 1,
63
+ schedule TEXT,
64
+ prompt TEXT NOT NULL DEFAULT '',
65
+ tools TEXT,
66
+ lastRun INTEGER,
67
+ createdAt INTEGER NOT NULL,
68
+ type TEXT,
69
+ freshContext INTEGER,
70
+ subagent INTEGER,
71
+ name TEXT,
72
+ task_order INTEGER
73
+ )
74
+ `),t.exec(`
75
+ CREATE INDEX IF NOT EXISTS tasks_by_group
76
+ ON tasks (groupId)
77
+ `),t.exec(`
78
+ CREATE INDEX IF NOT EXISTS tasks_by_enabled
79
+ ON tasks (enabled)
80
+ `),t.exec(`
81
+ CREATE TABLE IF NOT EXISTS config (
82
+ key TEXT PRIMARY KEY,
83
+ value TEXT NOT NULL
84
+ )
85
+ `),t.exec(`
86
+ CREATE TABLE IF NOT EXISTS pendingShares (
87
+ id TEXT PRIMARY KEY,
88
+ createdAt INTEGER NOT NULL,
89
+ data TEXT
90
+ )
91
+ `),$(t,`tasks`,`type`,`TEXT`),$(t,`tasks`,`freshContext`,`INTEGER`),$(t,`tasks`,`subagent`,`INTEGER`),$(t,`tasks`,`name`,`TEXT`),$(t,`tasks`,`task_order`,`INTEGER`),$(t,`messages`,`freshContext`,`INTEGER`),$(t,`messages`,`subagent`,`INTEGER`),Q=ie(t),Q}function Ln(){Q&&=(Q.db.close(),null)}var Rn=class{kind=`file`;name;_path;constructor(e){this._path=e,this.name=V.basename(e)}async getFile(){let e=await Be(this._path);return{size:e.length,type:`application/octet-stream`,async text(){return e.toString(`utf8`)},async arrayBuffer(){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}}async createWritable(){let e=[],t=this._path;return{async write(t){typeof t==`string`?e.push(Ge.from(t,`utf8`)):t instanceof Uint8Array?e.push(Ge.from(t)):e.push(Ge.from(new Uint8Array(t)))},async close(){let n=Ge.concat(e);await H(t,n)}}}},zn=class e{kind=`directory`;name;_path;constructor(e){this._path=e,this.name=V.basename(e)||e}async getDirectoryHandle(t,n){let r=V.join(this._path,t);if(n?.create)await ze(r,{recursive:!0});else if(!Ne(r)){let e=Error(`NotFoundError: ${r} does not exist`);throw e.name=`NotFoundError`,e}return new e(r)}async getFileHandle(e,t){let n=V.join(this._path,e);if(t?.create)Ne(n)||await H(n,``);else if(!Ne(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}return new Rn(n)}async*entries(){let t;try{t=await Ve(this._path)}catch{return}for(let n of t){let t=V.join(this._path,n);try{(await Ue(t)).isDirectory()?yield[n,new e(t)]:yield[n,new Rn(t)]}catch{}}}async removeEntry(e,t){await He(V.join(this._path,e),{recursive:t?.recursive??!1,force:!0})}};function Bn(e){_e(new zn(e))}globalThis.__setStorageRootFromPath=Bn,s(Xe),It(nn),Rt(jn),O(Mn);export{z as BROWSER_ONLY_TOOLS,P as CONFIG_KEYS,y as DEFAULT_BUILTIN_PROFILE,ee as DEFAULT_MAX_TOKENS,N as DEFAULT_SERVER_GROUP_ID,zn as NodeFsDirectoryHandle,Rn as NodeFsFileHandle,de as TOOL_DEFINITIONS,Z as cleanupAllLlamafileProcesses,Ln as closeSqliteDatabase,Yt as createTransformersRuntimeService,k as discoverSkills,p as executeDetectLanguage,m as executeEmbedText,Se as executeNativeAiTask,nn as executeNodeTransformersCompletion,C as executeProofreadText,x as executeRewriteText,g as executeSummarizeText,f as executeTool,Nn as executeToolChain,h as executeTranslateText,l as executeWriteText,ke as fetchDiscoveryManifest,oe as filterHeadlessTools,M as getAvailableProviders,L as getConfig,be as getContextLimit,ne as getDb,A as getDefaultProvider,te as getModelMaxTokens,j as getProvider,t as getRecentMessages,le as getStorageRoot,zt as handleInvoke,ge as importRemoteArtifacts,me as importRemoteScript,he as importRemoteSkill,pe as importRemoteTool,ce as invalidateStorageRoot,se as isHeadlessMode,re as isSqliteDatabase,R as isToolHeadlessSafe,ue as loadDeclarativeTools,d as loadSkill,Xe as nativeBashExecutor,Mn as nativeEvalExecutor,In as openSqliteDatabase,n as post,F as resetDB,Oe as resolveDiscoveryUrl,_ as saveMessage,fe as setConfig,I as setDB,s as setHeadlessBashExecutor,O as setHeadlessEvalExecutor,ae as setHeadlessMode,E as setNativeAiTaskHandler,c as setPostHandler,_e as setStorageRoot,Bn as setStorageRootFromPath,ie as wrapSqliteDatabase};
@@ -1,5 +1,5 @@
1
1
  import e from"node:fs";import t from"node:path";import n from"node:process";import r from"node:readline/promises";import i from"node:tty";function a(e,t=1){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=1024,r=t<0?0:t,i=[`B`,`KB`,`MB`,`GB`,`TB`],a=Math.floor(Math.log(e)/Math.log(n)),o=Math.min(a,i.length-1);return`${parseFloat((e/n**o).toFixed(r))} ${i[o]}`}function o(e={}){let{modelId:t=`model`,stream:r=n.stderr,barWidth:i=24,isTTY:o=!!(r&&typeof r==`object`&&r.isTTY),enabled:s=!0}=e;if(!s)return{update:()=>{},finish:()=>{},fail:e=>{r?.write&&r.write(`${e||`✖ Failed to download ${t}.`}\n`)}};let c=[],l=new Map,u=!1;function d(e){let t=Math.round(Math.max(0,Math.min(1,e))*i),n=i-t;return`[`+`=`.repeat(t)+(t<i?`>`:``)+` `.repeat(Math.max(0,n-+(t<i)))+`]`}function f(e,t=0,n=0){let i=l.get(e);return i||(i={lineIndex:c.length,lastPct:-1,lastRenderedTime:0,loaded:t,total:n,isDone:!1},l.set(e,i),c.push(e),o&&c.length>1&&r?.write&&r.write(`
2
- `)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}return}if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}return}if(e.status===`done`){let i=l.get(n);if(i)if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`);else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B with Grouped Query Attention (Default)`,contextLength:32e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1}],c=`onnx-community/gemma-3-1b-it-ONNX-GQA`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1}];function u(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function d(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function f(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function p(n,r){let i=d(r);if(!e.existsSync(i))return!1;let a=t.basename(n),o=a.endsWith(`.llamafile`)?a:`${a}.llamafile`,s=t.join(i,o);try{if(e.existsSync(s))return e.statSync(s).size>0}catch{}return!1}function m(n,r){if(f(n))return p(n,r);let i=u(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)&&e.readdirSync(t).length>0)return!0}catch{}return!1}function h(e){return s.map(t=>({...t,cached:m(t.id,e)}))}function g(e){return l.map(t=>({...t,cached:p(t.fileName,e)}))}async function _(e={}){let t=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=100`;try{let n=await fetch(t,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!n.ok)return[];let r=await n.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}return i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:m(t,e.cacheDir)}))}catch{return[]}}async function v(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:f,noProgress:p,abortSignal:m}=i,h=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),g,_;h?(g=h.url,_=h.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(g=r,_=t.basename(new URL(r).pathname)):(_=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,g=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${_}`);let v=d(a);e.mkdirSync(v,{recursive:!0});let y=t.join(v,_),b=t.join(v,`${_}.downloading.${Date.now()}`),x=o({modelId:_,stream:u,isTTY:c,enabled:f!==!1&&!p});try{s&&u?.write&&u.write(`[Llamafile] Downloading ${g}...\n`);let t=await(i.fetch||globalThis.fetch)(g,{headers:{"User-Agent":`ShadowClaw-CLI`},redirect:`follow`,signal:m});if(!t.ok)throw Error(`Failed to download ${g}: HTTP ${t.status} ${t.statusText}`);let n=parseInt(t.headers?.get?.(`content-length`)||`0`,10),a=e.createWriteStream(b),o=0;if(t.body){let{Readable:e}=await import(`node:stream`),r;if(typeof e.fromWeb==`function`&&typeof t.body.getReader==`function`)r=e.fromWeb(t.body);else if(typeof t.body[Symbol.asyncIterator]==`function`)r=t.body;else{let e=Buffer.from(await t.arrayBuffer());a.write(e),o=e.length}if(r)for await(let e of r){let t=Buffer.isBuffer(e)?e:Buffer.from(e);a.write(t),o+=t.length,x.update({status:`progress`,file:_,loaded:o,total:n,progress:n>0?o/n*100:void 0})}}a.end(),await new Promise((e,t)=>{a.on(`finish`,e),a.on(`error`,t)}),e.renameSync(b,y);try{e.chmodSync(y,493)}catch{}return x.finish(),{success:!0,modelId:r,path:y}}catch(t){try{e.existsSync(b)&&e.unlinkSync(b)}catch{}let n=t instanceof Error?t.message:String(t);return x.fail(`✖ Error downloading ${_}: ${n}`),{success:!1,modelId:r,error:n}}}async function y(e,t={}){if(f(e))return v(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l}=t,u=s;if(!u){let{getAgentCore:e}=await import(`./chunk-CxdpafWg.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);u=t.createTransformersRuntimeService()}let d=o({modelId:e,stream:a,isTTY:i,enabled:c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await u.prewarmModel({modelId:e,verbose:r,onProgress:e=>{d.update(e)}}),d.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return d.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function b(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,h=a.stdout||n.stderr,g=!1,b=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;b=e.openSync(t,`r`),d=new i.ReadStream(b),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{}}let x=r.createInterface({input:d,output:h}),S=!1,C=()=>{if(!S){S=!0,h.write(`
2
+ `)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}return}if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}return}if(e.status===`done`){let i=l.get(n);if(i)if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`);else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B with Grouped Query Attention (Default)`,contextLength:32e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1}],c=`onnx-community/gemma-3-1b-it-ONNX-GQA`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1}];function u(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function d(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function f(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function p(n,r){let i=d(r);if(!e.existsSync(i))return!1;let a=t.basename(n),o=a.endsWith(`.llamafile`)?a:`${a}.llamafile`,s=t.join(i,o);try{if(e.existsSync(s))return e.statSync(s).size>0}catch{}return!1}function m(n,r){if(f(n))return p(n,r);let i=u(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)&&e.readdirSync(t).length>0)return!0}catch{}return!1}function h(e){return s.map(t=>({...t,cached:m(t.id,e)}))}function g(e){return l.map(t=>({...t,cached:p(t.fileName,e)}))}async function _(e={}){let t=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=100`;try{let n=await fetch(t,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!n.ok)return[];let r=await n.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}return i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:m(t,e.cacheDir)}))}catch{return[]}}async function v(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:f,noProgress:p,abortSignal:m}=i,h=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),g,_;h?(g=h.url,_=h.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(g=r,_=t.basename(new URL(r).pathname)):(_=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,g=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${_}`);let v=d(a);e.mkdirSync(v,{recursive:!0});let y=t.join(v,_),b=t.join(v,`${_}.downloading.${Date.now()}`),x=o({modelId:_,stream:u,isTTY:c,enabled:f!==!1&&!p});try{s&&u?.write&&u.write(`[Llamafile] Downloading ${g}...\n`);let t=await(i.fetch||globalThis.fetch)(g,{headers:{"User-Agent":`ShadowClaw-CLI`},redirect:`follow`,signal:m});if(!t.ok)throw Error(`Failed to download ${g}: HTTP ${t.status} ${t.statusText}`);let n=parseInt(t.headers?.get?.(`content-length`)||`0`,10),a=e.createWriteStream(b),o=0;if(t.body){let{Readable:e}=await import(`node:stream`),r;if(typeof e.fromWeb==`function`&&typeof t.body.getReader==`function`)r=e.fromWeb(t.body);else if(typeof t.body[Symbol.asyncIterator]==`function`)r=t.body;else{let e=Buffer.from(await t.arrayBuffer());a.write(e),o=e.length}if(r)for await(let e of r){let t=Buffer.isBuffer(e)?e:Buffer.from(e);a.write(t),o+=t.length,x.update({status:`progress`,file:_,loaded:o,total:n,progress:n>0?o/n*100:void 0})}}a.end(),await new Promise((e,t)=>{a.on(`finish`,e),a.on(`error`,t)}),e.renameSync(b,y);try{e.chmodSync(y,493)}catch{}return x.finish(),{success:!0,modelId:r,path:y}}catch(t){try{e.existsSync(b)&&e.unlinkSync(b)}catch{}let n=t instanceof Error?t.message:String(t);return x.fail(`✖ Error downloading ${_}: ${n}`),{success:!1,modelId:r,error:n}}}async function y(e,t={}){if(f(e))return v(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l}=t,u=s;if(!u){let{getAgentCore:e}=await import(`./chunk-BdJUjMuz.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);u=t.createTransformersRuntimeService()}let d=o({modelId:e,stream:a,isTTY:i,enabled:c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await u.prewarmModel({modelId:e,verbose:r,onProgress:e=>{d.update(e)}}),d.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return d.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function b(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,h=a.stdout||n.stderr,g=!1,b=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;b=e.openSync(t,`r`),d=new i.ReadStream(b),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{}}let x=r.createInterface({input:d,output:h}),S=!1,C=()=>{if(!S){S=!0,h.write(`
3
3
  Operation cancelled.
4
4
  `);try{x.close()}catch{}u(130)}};x.on(`SIGINT`,C),d&&typeof d.on==`function`&&d!==n.stdin&&d.on(`SIGINT`,C);let w=()=>C();n.on(`SIGINT`,w);let T=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&C()};d&&typeof d.on==`function`&&d.on(`data`,T);try{h.write(`
5
5
  ShadowClaw CLI Agent — Model Selection:
@@ -0,0 +1 @@
1
+ import{t as e}from"./chunk-BCLxzLO92.js";export{e as fetchDiscoveryManifest};