shadow-claw 1.34.5 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/README.md +5 -1
  4. package/dist/cli/chunk-BCLxzLO92.js +5 -0
  5. package/dist/cli/chunk-BHNCi3ui2.js +1 -0
  6. package/dist/cli/chunk-BMPhLSn8.js +1 -0
  7. package/dist/cli/chunk-BMW6QB5-2.js +27 -0
  8. package/dist/cli/chunk-BQCWtrzh.js +1 -0
  9. package/dist/cli/chunk-BQCWtrzh2.js +1 -0
  10. package/dist/cli/chunk-BdJUjMuz.js +1 -0
  11. package/dist/cli/chunk-C47WdxKx2.js +1 -0
  12. package/dist/cli/{chunk-D9dku_3t.js → chunk-CAqvQuGr.js} +1 -1
  13. package/dist/cli/{chunk-DoVxObGa2.js → chunk-CHzhUS1N2.js} +1 -1
  14. package/dist/cli/chunk-CUMlq7Jw2.js +263 -0
  15. package/dist/cli/chunk-CXi9LU9e2.js +110 -0
  16. package/dist/cli/chunk-ChefnX-r.js +110 -0
  17. package/dist/cli/{chunk-zvi71-77.js → chunk-D3JxbzjI2.js} +15 -15
  18. package/dist/cli/chunk-D7VYMl092.js +1 -0
  19. package/dist/cli/chunk-DNIduiJ82.js +91 -0
  20. package/dist/cli/{chunk-C4UfzPK4.js → chunk-DTbrldk_.js} +1 -1
  21. package/dist/cli/chunk-DZ8YBXax.js +969 -0
  22. package/dist/cli/chunk-DduRvw8B2.js +1 -0
  23. package/dist/cli/chunk-DnYxGjdu2.js +1 -0
  24. package/dist/cli/chunk-Ea7nXmgb2.js +1 -0
  25. package/dist/cli/{chunk-BRiGkTIi.js → chunk-EohNY8vW.js} +1 -1
  26. package/dist/cli/chunk-LIIpZlwP2.js +1 -0
  27. package/dist/cli/chunk-LIJZHJml2.js +1 -0
  28. package/dist/cli/chunk-MHBh2BgF2.js +91 -0
  29. package/dist/cli/{chunk-BQ7lHA7c.js → chunk-SKgLGyTY.js} +1 -1
  30. package/dist/cli/chunk-kcJSXcbq2.js +1 -0
  31. package/dist/cli/cli.js +12 -11
  32. package/dist/headless-agent.js +191 -187
  33. package/dist/lib/components/index.js +21 -21
  34. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  35. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  36. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  37. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  38. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  39. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  40. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  41. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  42. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  43. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  44. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  45. package/dist/lib/components/shadow-claw-channels.js +1 -1
  46. package/dist/lib/components/shadow-claw-chat.js +1 -1
  47. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  48. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  49. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  50. package/dist/lib/components/shadow-claw-files.js +1 -1
  51. package/dist/lib/components/shadow-claw-git.js +1 -1
  52. package/dist/lib/components/shadow-claw-llm.js +1 -1
  53. package/dist/lib/components/shadow-claw-networking.js +1 -1
  54. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  55. package/dist/lib/components/shadow-claw-pages.js +1 -1
  56. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  57. package/dist/lib/components/shadow-claw-settings.js +1 -1
  58. package/dist/lib/components/shadow-claw-storage.js +1 -1
  59. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  60. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  61. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  62. package/dist/lib/components/shadow-claw-tools.js +1 -1
  63. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  64. package/dist/lib/components/shadow-claw.js +1 -1
  65. package/dist/lib/{configurePeerJs-DSRcNp3v.js → configurePeerJs-CdPzmpyI.js} +2 -2
  66. package/dist/lib/{configurePeerJs-DSRcNp3v.js.map → configurePeerJs-CdPzmpyI.js.map} +1 -1
  67. package/dist/lib/index.js +21 -21
  68. package/dist/lib/{initControlPlane-CWfE_Oan.js → initControlPlane-BLymRW34.js} +7 -7
  69. package/dist/lib/{initControlPlane-CWfE_Oan.js.map → initControlPlane-BLymRW34.js.map} +1 -1
  70. package/dist/lib/{orchestrator-BEUug1TW.js → orchestrator-DZkhJj7f.js} +13 -2
  71. package/dist/lib/{orchestrator-BEUug1TW.js.map → orchestrator-DZkhJj7f.js.map} +1 -1
  72. package/dist/lib/{orchestrator-CGUzfGbE.js → orchestrator-ZsQTRknI.js} +5 -5
  73. package/dist/lib/{orchestrator-CGUzfGbE.js.map → orchestrator-ZsQTRknI.js.map} +1 -1
  74. package/dist/lib/{peerjs-BSD88rT3.js → peerjs-CJYfnR5V.js} +3 -3
  75. package/dist/lib/{peerjs-BSD88rT3.js.map → peerjs-CJYfnR5V.js.map} +1 -1
  76. package/dist/lib/{push-client-CC3qifgc.js → push-client-C9hIPqLZ.js} +2 -2
  77. package/dist/lib/{push-client-CC3qifgc.js.map → push-client-C9hIPqLZ.js.map} +1 -1
  78. package/dist/lib/{shadow-claw-BWS-UVnE.js → shadow-claw-8qL2-QoK.js} +4 -4
  79. package/dist/lib/{shadow-claw-BWS-UVnE.js.map → shadow-claw-8qL2-QoK.js.map} +1 -1
  80. package/dist/lib/{shadow-claw-channel-config-DwMn3nFJ.js → shadow-claw-channel-config-CvnbqGBy.js} +3 -3
  81. package/dist/lib/{shadow-claw-channel-config-DwMn3nFJ.js.map → shadow-claw-channel-config-CvnbqGBy.js.map} +1 -1
  82. package/dist/lib/{shadow-claw-channels-BdE4cUlx.js → shadow-claw-channels-CkCvjWn1.js} +2 -2
  83. package/dist/lib/{shadow-claw-channels-BdE4cUlx.js.map → shadow-claw-channels-CkCvjWn1.js.map} +1 -1
  84. package/dist/lib/{shadow-claw-chat-DqaMoE9C.js → shadow-claw-chat-B1YEHKN3.js} +3 -3
  85. package/dist/lib/{shadow-claw-chat-DqaMoE9C.js.map → shadow-claw-chat-B1YEHKN3.js.map} +1 -1
  86. package/dist/lib/{shadow-claw-control-plane-D3DUDO29.js → shadow-claw-control-plane-jjo789IE.js} +6 -6
  87. package/dist/lib/{shadow-claw-control-plane-D3DUDO29.js.map → shadow-claw-control-plane-jjo789IE.js.map} +1 -1
  88. package/dist/lib/{shadow-claw-conversations-XT-OXogj.js → shadow-claw-conversations-MMT7wYH3.js} +2 -2
  89. package/dist/lib/{shadow-claw-conversations-XT-OXogj.js.map → shadow-claw-conversations-MMT7wYH3.js.map} +1 -1
  90. package/dist/lib/{shadow-claw-file-viewer-DJqxyd97.js → shadow-claw-file-viewer-qSkD1RQK.js} +2 -2
  91. package/dist/lib/{shadow-claw-file-viewer-DJqxyd97.js.map → shadow-claw-file-viewer-qSkD1RQK.js.map} +1 -1
  92. package/dist/lib/{shadow-claw-files-CUEJlA1o.js → shadow-claw-files-Cg8ycQ_N.js} +2 -2
  93. package/dist/lib/{shadow-claw-files-CUEJlA1o.js.map → shadow-claw-files-Cg8ycQ_N.js.map} +1 -1
  94. package/dist/lib/{shadow-claw-git-D_iVcb86.js → shadow-claw-git-gaClz-ZC.js} +3 -3
  95. package/dist/lib/{shadow-claw-git-D_iVcb86.js.map → shadow-claw-git-gaClz-ZC.js.map} +1 -1
  96. package/dist/lib/{shadow-claw-llm-C2msAsyU.js → shadow-claw-llm-DyOz0qzT.js} +2 -2
  97. package/dist/lib/{shadow-claw-llm-C2msAsyU.js.map → shadow-claw-llm-DyOz0qzT.js.map} +1 -1
  98. package/dist/lib/{shadow-claw-networking-D2NvodC-.js → shadow-claw-networking-B2xx0UUR.js} +2 -2
  99. package/dist/lib/{shadow-claw-networking-D2NvodC-.js.map → shadow-claw-networking-B2xx0UUR.js.map} +1 -1
  100. package/dist/lib/{shadow-claw-notifications-BcvVn_vu.js → shadow-claw-notifications-BjKfZy0k.js} +2 -2
  101. package/dist/lib/{shadow-claw-notifications-BcvVn_vu.js.map → shadow-claw-notifications-BjKfZy0k.js.map} +1 -1
  102. package/dist/lib/{shadow-claw-pages-CTMXRhEX.js → shadow-claw-pages-CJ2tsMtL.js} +2 -2
  103. package/dist/lib/{shadow-claw-pages-CTMXRhEX.js.map → shadow-claw-pages-CJ2tsMtL.js.map} +1 -1
  104. package/dist/lib/{shadow-claw-peerjs-C2YvypqM.js → shadow-claw-peerjs-CazCkXQ1.js} +3 -3
  105. package/dist/lib/{shadow-claw-peerjs-C2YvypqM.js.map → shadow-claw-peerjs-CazCkXQ1.js.map} +1 -1
  106. package/dist/lib/{shadow-claw-settings-B0hiDwEt.js → shadow-claw-settings-qro6pO9I.js} +2 -2
  107. package/dist/lib/{shadow-claw-settings-B0hiDwEt.js.map → shadow-claw-settings-qro6pO9I.js.map} +1 -1
  108. package/dist/lib/{shadow-claw-storage-Dt4yg4Q4.js → shadow-claw-storage-ewDdvCGa.js} +2 -2
  109. package/dist/lib/{shadow-claw-storage-Dt4yg4Q4.js.map → shadow-claw-storage-ewDdvCGa.js.map} +1 -1
  110. package/dist/lib/{shadow-claw-task-server-B2gbZaz4.js → shadow-claw-task-server-DpqQcNIs.js} +2 -2
  111. package/dist/lib/{shadow-claw-task-server-B2gbZaz4.js.map → shadow-claw-task-server-DpqQcNIs.js.map} +1 -1
  112. package/dist/lib/{shadow-claw-tasks-Bxq-niuM.js → shadow-claw-tasks-B2fMF4qE.js} +2 -2
  113. package/dist/lib/{shadow-claw-tasks-Bxq-niuM.js.map → shadow-claw-tasks-B2fMF4qE.js.map} +1 -1
  114. package/dist/lib/{shadow-claw-terminal-BfbW3xtg.js → shadow-claw-terminal-B25kQJC3.js} +2 -2
  115. package/dist/lib/{shadow-claw-terminal-BfbW3xtg.js.map → shadow-claw-terminal-B25kQJC3.js.map} +1 -1
  116. package/dist/lib/{shadow-claw-tools-BNSAaK0Y.js → shadow-claw-tools-B0y8JzoA.js} +10 -3
  117. package/dist/lib/{shadow-claw-tools-BNSAaK0Y.js.map → shadow-claw-tools-B0y8JzoA.js.map} +1 -1
  118. package/dist/lib/{shadow-claw-webvm-Dc2KmEXq.js → shadow-claw-webvm-CoCedIza.js} +2 -2
  119. package/dist/lib/{shadow-claw-webvm-Dc2KmEXq.js.map → shadow-claw-webvm-CoCedIza.js.map} +1 -1
  120. package/dist/lib/{syncWebMcpRegistration-BIL83P0Q.js → syncWebMcpRegistration-JKLALq4e.js} +2 -2
  121. package/dist/lib/{syncWebMcpRegistration-BIL83P0Q.js.map → syncWebMcpRegistration-JKLALq4e.js.map} +1 -1
  122. package/dist/lib/worker/utils/sandboxedEval.d.ts +8 -0
  123. package/dist/public/.well-known/mcp/server-card.json +1 -1
  124. package/dist/public/.well-known/mcp.json +1 -1
  125. package/dist/public/AGENTS.md +1 -1
  126. package/dist/public/README.md +5 -1
  127. package/dist/public/agent.worker.js +1 -1
  128. package/dist/public/components/shadow-claw-tools/shadow-claw-tools.html +1 -1
  129. package/dist/public/{configurePeerJs-B925t9C7.js → configurePeerJs-BrHeJGw1.js} +1 -1
  130. package/dist/public/docs/decisions/headless-cli-agent-participant.md +1 -1
  131. package/dist/public/docs/example/article/index.html +1 -1
  132. package/dist/public/docs/publishing/index.html +1 -1
  133. package/dist/public/docs/skill-creator/index.html +1 -1
  134. package/dist/public/docs/subsystems/cli.md +33 -23
  135. package/dist/public/docs/subsystems/skills.md +17 -0
  136. package/dist/public/docs/subsystems/tools.md +1 -1
  137. package/dist/public/e2e/README.md +2 -2
  138. package/dist/public/{e2e-bridge-CE1xleGn.js → e2e-bridge-D_lyH__p.js} +1 -1
  139. package/dist/public/{executeTool-DtTrsZHV.js → executeTool-b6DnRhcv.js} +2 -1
  140. package/dist/public/{file-viewer-LEEStSq-.js → file-viewer-CKrQoxZi.js} +1 -1
  141. package/dist/public/index.html +1 -1
  142. package/dist/public/index.js +1 -1
  143. package/dist/public/{initControlPlane-e2JgxXEb.js → initControlPlane-Dn-XFuxg.js} +1 -1
  144. package/dist/public/llms.txt +2 -0
  145. package/dist/public/main/index.html +1 -1
  146. package/dist/public/main/memory/index.html +1 -1
  147. package/dist/public/{orchestrator-Baif6kmu.js → orchestrator-0BnBtxHO.js} +3 -2
  148. package/dist/public/{orchestrator-TndREZPL.js → orchestrator-C3GKZriH.js} +1 -1
  149. package/dist/public/{peerjs-DE6WF3h2.js → peerjs-CgfLEp2N.js} +1 -1
  150. package/dist/public/{push-client-B_IkTpNm.js → push-client-D6DLiY1s.js} +1 -1
  151. package/dist/public/service-worker.js +1 -1
  152. package/dist/public/{shadow-claw-channels-BCGz36Zl.js → shadow-claw-channels-DSijinZ9.js} +1 -1
  153. package/dist/public/{shadow-claw-chat-H9U9jbqD.js → shadow-claw-chat-BeHlAjnA.js} +1 -1
  154. package/dist/public/{shadow-claw-control-plane-CeKh64s2.js → shadow-claw-control-plane-BfF_AZSg.js} +2 -2
  155. package/dist/public/{shadow-claw-conversations-C26t1HXN.js → shadow-claw-conversations-Bb_2bVLJ.js} +1 -1
  156. package/dist/public/{shadow-claw-DBeXILmk.js → shadow-claw-f71DlRdV.js} +2 -2
  157. package/dist/public/{shadow-claw-file-viewer-DWUoTjkr.js → shadow-claw-file-viewer-B67000Mm.js} +1 -1
  158. package/dist/public/{shadow-claw-files-BQ8DSX-z.js → shadow-claw-files-DeZZYt01.js} +1 -1
  159. package/dist/public/{shadow-claw-git-CIXyISw-.js → shadow-claw-git-Ccy25LuW.js} +2 -2
  160. package/dist/public/{shadow-claw-llm-D_GpOSZE.js → shadow-claw-llm-XjYcTlXT.js} +1 -1
  161. package/dist/public/{shadow-claw-networking-BYp5K3B7.js → shadow-claw-networking-efXQtydQ.js} +1 -1
  162. package/dist/public/{shadow-claw-notifications-ZiXmPweY.js → shadow-claw-notifications-Cq2ZSeJa.js} +1 -1
  163. package/dist/public/{shadow-claw-pages-BHXwf3BD.js → shadow-claw-pages-BVFNSSb1.js} +1 -1
  164. package/dist/public/{shadow-claw-settings-BfvDvt9c.js → shadow-claw-settings-B3sHxPh9.js} +2 -2
  165. package/dist/public/{shadow-claw-storage-Bvn85DII.js → shadow-claw-storage-DNdlzCgC.js} +1 -1
  166. package/dist/public/{shadow-claw-task-server-DZL_d8FC.js → shadow-claw-task-server-BJq0rpju.js} +1 -1
  167. package/dist/public/{shadow-claw-tasks-Cy8jzd8q.js → shadow-claw-tasks-CkF1uMeZ.js} +1 -1
  168. package/dist/public/{shadow-claw-terminal-BgEXr82T.js → shadow-claw-terminal-CnHhcpA-.js} +1 -1
  169. package/dist/public/{shadow-claw-tools-BjnssRSi.js → shadow-claw-tools-iw0fljud.js} +8 -1
  170. package/dist/public/{shadow-claw-webvm-tZ1VDoVA.js → shadow-claw-webvm-Bliu4V__.js} +1 -1
  171. package/dist/public/{syncWebMcpRegistration-CLMvJ4kV.js → syncWebMcpRegistration-D91usEMu.js} +1 -1
  172. package/package.json +1 -1
  173. package/src/cli/cli.ts +26 -2
  174. package/src/cli/commands/agent.test.ts +421 -0
  175. package/src/cli/commands/agent.ts +270 -20
  176. package/src/components/shadow-claw-tools/shadow-claw-tools.html +7 -0
  177. package/src/worker/headless-agent.ts +14 -0
  178. package/src/worker/headless-types.ts +39 -0
  179. package/src/worker/utils/native-eval-executor.test.ts +36 -0
  180. package/src/worker/utils/native-eval-executor.ts +58 -0
  181. package/src/worker/utils/sandboxedEval.ts +36 -0
  182. package/dist/cli/chunk-1BmpU7jO2.js +0 -1
  183. package/dist/cli/chunk-54Euq8Ji2.js +0 -1
  184. package/dist/cli/chunk-BTitwCgT2.js +0 -88
  185. package/dist/cli/chunk-Bjh76Dai.js +0 -1081
  186. package/dist/cli/chunk-C2HeZQ6K.js +0 -1
  187. package/dist/cli/chunk-CxdpafWg.js +0 -1
  188. package/dist/cli/chunk-DEy72ZNV2.js +0 -88
  189. package/dist/cli/chunk-Da1BZyqf.js +0 -1
  190. package/dist/cli/chunk-FHsJD-Sf2.js +0 -27
  191. package/dist/cli/chunk-aWgoVB7x2.js +0 -1
  192. package/dist/cli/chunk-hOceZVB92.js +0 -371
  193. package/dist/cli/chunk-pwNc6VtC2.js +0 -1
@@ -1,15 +1,15 @@
1
- import{C as e,b as t,c as n,r}from"./chunk-BkKN8FNP.js";import{i}from"./chunk-DFLqhyP_.js";import{t as a}from"./chunk-Dhh0lHO6.js";import o from"process";let s=!1;const c=new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`send_notification`,`show_toast`,`spawn_subagent`]);function l(e){return!c.has(e)}function u(e){return e.filter(e=>!c.has(e.name))}function d(){return s}function f(e){s=e}function p(e=``,t=``){let n=e.toLowerCase(),r=t.toLowerCase();return n.startsWith(`text/`)||n.includes(`json`)||n.includes(`xml`)||r.endsWith(`.md`)||r.endsWith(`.txt`)?`text`:n.startsWith(`image/`)?`image`:n.startsWith(`audio/`)?`audio`:n.startsWith(`video/`)?`video`:n===`application/pdf`||r.endsWith(`.pdf`)?`document`:`file`}function m(t){let n=(t||``).toLowerCase(),r=e.getModelInfo(n);if(r){let e=r.supportsImageInput===!0||r.routesByRequestFeatures===!0,t=r.supportsAudioInput===!0||r.routesByRequestFeatures===!0,n=r.supportsVideoInput===!0||r.routesByRequestFeatures===!0,i=r.supportsDocumentInput===!0||r.routesByRequestFeatures===!0;if(r.supportsImageInput!==void 0||r.supportsAudioInput!==void 0||r.supportsVideoInput!==void 0||r.supportsDocumentInput!==void 0||r.routesByRequestFeatures)return{images:e,audio:t,video:n,documents:i,routerByFeatures:!!r.routesByRequestFeatures,source:`metadata`}}let i=[`gpt-4o`,`gpt-4.1`,`claude-3`,`claude-4`,`claude-sonnet`,`claude-haiku`,`claude-opus`,`gemini`,`llava`,`qwen-vl`,`pixtral`].some(e=>n.includes(e)),a=n.includes(`claude-3-5`)||n.includes(`claude-3.5`)||n.includes(`claude-3-7`)||n.includes(`claude-3.7`)||n.includes(`claude-4`)||n.includes(`gemini`)||/claude-(?:sonnet|haiku|opus)-\d/.test(n);return i?{images:!0,audio:n.includes(`omni`)||n.includes(`audio`),video:n.includes(`omni`)||n.includes(`video`),documents:a,routerByFeatures:n===`openrouter/free`,source:`heuristic`}:{images:!1,audio:!1,video:!1,documents:!1,routerByFeatures:n===`openrouter/free`,source:`unknown`}}const h=[/<\|start_header_id\|>\s*(?:system|user|assistant|tool)\s*<\|end_header_id\|>/gi,/<\|(?:begin_of_text|end_of_text|eot_id|im_start|im_end|end_of_message)\|>/gi,/<\|(?:startofturn|endofturn|start_of_turn|end_of_turn)\|>/gi,/<\|(?:image|audio|video|tool_call|tool_response|tool_result|function_call)\|>|<\|\/function_call\|>/gi,/<|(?:system|user|assistant|im_start|im_end)|>/g,/\[\s*INST\s*\]|\[\s*\/INST\s*\]|<<\s*SYS\s*>>|<<\s*\/SYS\s*>>/gi,/<\/?s>|<\/?bos>|<\/?eos>|<\|(?:bos|eos|pad|unk)\|>/gi,/<\|(?:START_OF_TURN_TOKEN|END_OF_TURN_TOKEN|CHATBOT_TOKEN|USER_TOKEN|SYSTEM_TOKEN)\|>/gi,/<\|(?:system|user|assistant|end|endoftext|placeholder\d*)\|>/gi,/<|(?:begin▁of▁sentence|end▁of▁sentence)|>/g,/<\|start\|>\s*(?:system|user|assistant|tool)\s*<\|message\|>/gi];function g(e){for(let t of h)if(t.test(e))return!0;return!1}function _(e){let t=String(e||``),n=t;for(let e of h)t=t.replace(e,``);return t!==n&&(t=t.replace(/^[ \t]+$/gm,``),t=t.replace(/\n{3,}/g,`
1
+ import{C as e,b as t,c as n,r}from"./chunk-BkKN8FNP.js";import{i}from"./chunk-DFLqhyP_.js";import{t as a}from"./chunk-Dhh0lHO6.js";import{r as o}from"./chunk-BQCWtrzh.js";import s from"process";function c(e=``,t=``){let n=e.toLowerCase(),r=t.toLowerCase();return n.startsWith(`text/`)||n.includes(`json`)||n.includes(`xml`)||r.endsWith(`.md`)||r.endsWith(`.txt`)?`text`:n.startsWith(`image/`)?`image`:n.startsWith(`audio/`)?`audio`:n.startsWith(`video/`)?`video`:n===`application/pdf`||r.endsWith(`.pdf`)?`document`:`file`}function l(t){let n=(t||``).toLowerCase(),r=e.getModelInfo(n);if(r){let e=r.supportsImageInput===!0||r.routesByRequestFeatures===!0,t=r.supportsAudioInput===!0||r.routesByRequestFeatures===!0,n=r.supportsVideoInput===!0||r.routesByRequestFeatures===!0,i=r.supportsDocumentInput===!0||r.routesByRequestFeatures===!0;if(r.supportsImageInput!==void 0||r.supportsAudioInput!==void 0||r.supportsVideoInput!==void 0||r.supportsDocumentInput!==void 0||r.routesByRequestFeatures)return{images:e,audio:t,video:n,documents:i,routerByFeatures:!!r.routesByRequestFeatures,source:`metadata`}}let i=[`gpt-4o`,`gpt-4.1`,`claude-3`,`claude-4`,`claude-sonnet`,`claude-haiku`,`claude-opus`,`gemini`,`llava`,`qwen-vl`,`pixtral`].some(e=>n.includes(e)),a=n.includes(`claude-3-5`)||n.includes(`claude-3.5`)||n.includes(`claude-3-7`)||n.includes(`claude-3.7`)||n.includes(`claude-4`)||n.includes(`gemini`)||/claude-(?:sonnet|haiku|opus)-\d/.test(n);return i?{images:!0,audio:n.includes(`omni`)||n.includes(`audio`),video:n.includes(`omni`)||n.includes(`video`),documents:a,routerByFeatures:n===`openrouter/free`,source:`heuristic`}:{images:!1,audio:!1,video:!1,documents:!1,routerByFeatures:n===`openrouter/free`,source:`unknown`}}const u=[/<\|start_header_id\|>\s*(?:system|user|assistant|tool)\s*<\|end_header_id\|>/gi,/<\|(?:begin_of_text|end_of_text|eot_id|im_start|im_end|end_of_message)\|>/gi,/<\|(?:startofturn|endofturn|start_of_turn|end_of_turn)\|>/gi,/<\|(?:image|audio|video|tool_call|tool_response|tool_result|function_call)\|>|<\|\/function_call\|>/gi,/<|(?:system|user|assistant|im_start|im_end)|>/g,/\[\s*INST\s*\]|\[\s*\/INST\s*\]|<<\s*SYS\s*>>|<<\s*\/SYS\s*>>/gi,/<\/?s>|<\/?bos>|<\/?eos>|<\|(?:bos|eos|pad|unk)\|>/gi,/<\|(?:START_OF_TURN_TOKEN|END_OF_TURN_TOKEN|CHATBOT_TOKEN|USER_TOKEN|SYSTEM_TOKEN)\|>/gi,/<\|(?:system|user|assistant|end|endoftext|placeholder\d*)\|>/gi,/<|(?:begin▁of▁sentence|end▁of▁sentence)|>/g,/<\|start\|>\s*(?:system|user|assistant|tool)\s*<\|message\|>/gi];function d(e){for(let t of u)if(t.test(e))return!0;return!1}function f(e){let t=String(e||``),n=t;for(let e of u)t=t.replace(e,``);return t!==n&&(t=t.replace(/^[ \t]+$/gm,``),t=t.replace(/\n{3,}/g,`
2
2
 
3
- `)),t}function v(e,t){let n=_(e);return n!==e&&g(e)&&console.info(`[ShadowClaw] Chat-template control token(s) detected and stripped from "${t}" output. The provider or model may not be applying its chat template correctly. Original length: ${e.length}, cleaned length: ${n.length}.`),n}const y=`shadow-claw-browser-models`,ee=16*1024*1024;function b(){return typeof caches<`u`&&typeof caches.open==`function`}function te(e){return`${e}?__sc_meta=1`}function ne(e,t){return`${e}?__sc_chunk=${t}`}async function x(e,t=y){if(!b())return null;try{let n=await(await caches.open(t)).match(te(e));if(!n?.body)return null;let r=await n.text();return JSON.parse(r)}catch{return null}}async function S(e,t,n=y){if(b())try{await(await caches.open(n)).put(te(e),new Response(JSON.stringify(t),{headers:{"Content-Type":`application/json`}}))}catch(e){console.error(`writePartialMeta error:`,e)}}async function C(e,t,n,r=y){if(b())try{await(await caches.open(r)).put(ne(e,t),new Response(new Blob([n]),{headers:{"Content-Type":`application/octet-stream`,"Content-Length":String(n.byteLength)}}))}catch(e){console.error(`flushChunkToCache error:`,e)}}function re(e,t,n=y){let r=0,i=null;return new ReadableStream({async pull(a){if(i){let{done:e,value:t}=await i.read();if(!e){a.enqueue(t);return}i=null,r++}if(r>=t.chunks){a.close();return}try{let t=await(await caches.open(n)).match(ne(e,r));if(!t?.body){a.error(Error(`ModelCache: missing cache chunk ${r} for ${e}`));return}i=t.body.getReader();let{done:o,value:s}=await i.read();o?(i=null,r++):a.enqueue(s)}catch(e){a.error(e)}},cancel(){i&&=(i.cancel(),null)}})}function ie(e,t){return new Promise((n,r)=>{if(t?.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};t?.addEventListener(`abort`,a,{once:!0})})}function ae(e){return Math.min(15e3,1e3*2**(Math.max(1,e)-1))}async function oe(e,t,n,r,i=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch){let a=r?.cacheName??`shadow-claw-browser-models`,o=r?.chunkSize??16777216,s=r?.maxAttempts??6,c=r?.headers??{},l=b(),u=0,d=0,f=null,p=!1,m=e;if(l){let t=await x(e,a);t&&!t.complete&&(u=t.chunks,d=t.received,f=t.total,p=t.acceptsRanges,t.resolvedUrl&&(m=t.resolvedUrl))}let h=null,g=null;for(let e=1;e<=s;e++){if(n?.aborted)throw new DOMException(`Aborted`,`AbortError`);let t={...c};d>0&&p&&(t.Range=`bytes=${d}-`);try{g=await i(m,{signal:n,headers:t})}catch(t){if(n?.aborted||t?.name===`AbortError`)throw t;if(h=t,e<s){await ie(ae(e),n);continue}break}if(g.url&&(m=g.url),t.Range&&g.status===200&&(u=0,d=0),g.status!==200&&g.status!==206){if(h=Error(`ModelCache: Failed to fetch model from '${m}': ${g.status} ${g.statusText}`),g.status>=500&&e<s){await ie(ae(e),n);continue}throw h}if(!g.body)throw Error(`ModelCache: Failed to fetch model from '${m}': No response body`);h=null;break}if(h||!g||!g.body)throw Error(`ModelCache: failed to download model from '${e}' after ${s} attempts: ${h?.message??String(h)}`);if(f==null)if(p=g.status===206||g.headers.get(`accept-ranges`)===`bytes`,g.status===206){let e=g.headers.get(`content-range`)?.match(/\/\s*(\d+)\s*$/);e&&(f=Number(e[1]))}else{let e=g.headers.get(`content-length`),t=e?Number(e):NaN;f=Number.isFinite(t)&&t>0?t:null}l&&await S(e,{chunks:u,received:d,total:f,acceptsRanges:p,complete:!1,resolvedUrl:m},a);let _=g.body;return new ReadableStream({async start(r){try{if(l&&u>0){let i=await caches.open(a),o=0;for(let a=0;a<u;a++){if(n?.aborted)throw new DOMException(`Aborted`,`AbortError`);let s=await i.match(ne(e,a));if(s?.body){let e=s.body.getReader();for(;;){let{done:n,value:i}=await e.read();if(n)break;r.enqueue(i),o+=i.byteLength,t?.(o,f)}}else if(s&&typeof s.arrayBuffer==`function`){let e=await s.arrayBuffer(),n=new Uint8Array(e);r.enqueue(n),o+=n.byteLength,t?.(o,f)}}}let i=[],s=0,c=d;async function h(){if(s===0)return;let t=new Uint8Array(s),n=0;for(let e of i)t.set(e,n),n+=e.byteLength;i=[],s=0,l?(await C(e,u,t,a),u++,d+=t.byteLength,await S(e,{chunks:u,received:d,total:f,acceptsRanges:p,complete:!1,resolvedUrl:m},a)):(u++,d+=t.byteLength)}let g=_.getReader();try{for(;;){if(n?.aborted)throw await g.cancel(),new DOMException(`Aborted`,`AbortError`);let{done:e,value:a}=await g.read();if(e)break;r.enqueue(a),i.push(a),s+=a.byteLength,c+=a.byteLength,t?.(c,f),s>=o&&await h()}await h(),l&&await S(e,{chunks:u,received:d,total:f,acceptsRanges:p,complete:!0,resolvedUrl:m},a),t?.(c,f,!0),r.close()}catch(e){try{await g.cancel()}catch{}throw e}}catch(e){r.error(e)}}})}async function se(e,t,n,r,i=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch){let a=r?.cacheName??`shadow-claw-browser-models`;try{let n=await x(e,a);if(n?.complete)return t?.(n.received,n.received,!0),re(e,n,a)}catch(e){console.warn(`loadModelStream cache check failed, falling back to download:`,e)}return oe(e,t,n,r,i)}let w=null;function T(e){w=e}function ce(){w=null}function le(e=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch,t,n){let r=t?.cacheName??`shadow-claw-browser-models`;return async function(i,a){let o=typeof i==`string`?i:i instanceof URL?i.toString():i.url,s=(a?.method||(typeof i==`object`&&`method`in i?i.method:`GET`)||`GET`).toUpperCase(),c=a?.headers||(typeof i==`object`&&`headers`in i?i.headers:void 0);if(c instanceof Headers?c.has(`Range`)||c.has(`range`):c&&typeof c==`object`&&(`Range`in c||`range`in c))return e(i,{...a||{},cache:`no-store`});if(s!==`GET`||!b())return e(i,a);try{let i=await x(o,r);if(i?.complete){n?.(o,i.received,i.received,!0),w?.(o,i.received,i.received,!0);let e=re(o,i,r);return new Response(e,{status:200,statusText:`OK`,headers:{"Content-Type":`application/octet-stream`,...i.total!=null&&i.total>0?{"Content-Length":String(i.total)}:{}}})}let s=await se(o,(e,t,r)=>{n?.(o,e,t,!!r),w?.(o,e,t,!!r)},a?.signal??void 0,{cacheName:r,...t||{}},e),c=(await x(o,r))?.total;return new Response(s,{status:200,statusText:`OK`,headers:{"Content-Type":`application/octet-stream`,...c!=null&&c>0?{"Content-Length":String(c)}:{}}})}catch(t){return console.warn(`[ModelCacheFetch] Cache stream failed for ${o}, falling back to native fetch:`,t),e(i,a)}}}var ue=Object.defineProperty,de=(e,t,n)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fe=(e,t,n)=>(de(e,typeof t==`symbol`?t:t+``,n),n),E=Object.freeze({Text:`Text`,NumericLiteral:`NumericLiteral`,StringLiteral:`StringLiteral`,Identifier:`Identifier`,Equals:`Equals`,OpenParen:`OpenParen`,CloseParen:`CloseParen`,OpenStatement:`OpenStatement`,CloseStatement:`CloseStatement`,OpenExpression:`OpenExpression`,CloseExpression:`CloseExpression`,OpenSquareBracket:`OpenSquareBracket`,CloseSquareBracket:`CloseSquareBracket`,OpenCurlyBracket:`OpenCurlyBracket`,CloseCurlyBracket:`CloseCurlyBracket`,Comma:`Comma`,Dot:`Dot`,Colon:`Colon`,Pipe:`Pipe`,CallOperator:`CallOperator`,AdditiveBinaryOperator:`AdditiveBinaryOperator`,MultiplicativeBinaryOperator:`MultiplicativeBinaryOperator`,ComparisonBinaryOperator:`ComparisonBinaryOperator`,UnaryOperator:`UnaryOperator`,Comment:`Comment`}),D=class{constructor(e,t){this.value=e,this.type=t}};function pe(e){return/\w/.test(e)}function O(e){return/[0-9]/.test(e)}function me(e){return/\s/.test(e)}var he=[[`{%`,E.OpenStatement],[`%}`,E.CloseStatement],[`{{`,E.OpenExpression],[`}}`,E.CloseExpression],[`(`,E.OpenParen],[`)`,E.CloseParen],[`{`,E.OpenCurlyBracket],[`}`,E.CloseCurlyBracket],[`[`,E.OpenSquareBracket],[`]`,E.CloseSquareBracket],[`,`,E.Comma],[`.`,E.Dot],[`:`,E.Colon],[`|`,E.Pipe],[`<=`,E.ComparisonBinaryOperator],[`>=`,E.ComparisonBinaryOperator],[`==`,E.ComparisonBinaryOperator],[`!=`,E.ComparisonBinaryOperator],[`<`,E.ComparisonBinaryOperator],[`>`,E.ComparisonBinaryOperator],[`+`,E.AdditiveBinaryOperator],[`-`,E.AdditiveBinaryOperator],[`~`,E.AdditiveBinaryOperator],[`*`,E.MultiplicativeBinaryOperator],[`/`,E.MultiplicativeBinaryOperator],[`%`,E.MultiplicativeBinaryOperator],[`=`,E.Equals]],ge=new Map([[`n`,`
4
- `],[`t`,` `],[`r`,`\r`],[`b`,`\b`],[`f`,`\f`],[`v`,`\v`],[`'`,`'`],[`"`,`"`],[`\\`,`\\`]]);function _e(e,t={}){return e.endsWith(`
5
- `)&&(e=e.slice(0,-1)),t.lstrip_blocks&&(e=e.replace(/^[ \t]*({[#%-])/gm,`$1`)),t.trim_blocks&&(e=e.replace(/([#%-]})\n/g,`$1`)),e.replace(/(\s*){%(-?)\s*(?:end)?generation\s*(-?)%}(\s*)/gs,(e,t,n,r,i)=>(n?``:t)+(r?``:i))}function ve(e,t={}){let n=[],r=_e(e,t),i=0,a=0,o=e=>{let t=``;for(;e(r[i]);){if(r[i]===`\\`){if(++i,i>=r.length)throw SyntaxError(`Unexpected end of input`);let e=r[i++],n=ge.get(e);if(n===void 0)throw SyntaxError(`Unexpected escaped character: ${e}`);t+=n;continue}if(t+=r[i++],i>=r.length)throw SyntaxError(`Unexpected end of input`)}return t},s=()=>{let e=n.at(-1);e&&e.type===E.Text&&(e.value=e.value.trimEnd(),e.value===``&&n.pop())},c=()=>{for(;i<r.length&&me(r[i]);)++i};main:for(;i<r.length;){let e=n.at(-1)?.type;if(e===void 0||e===E.CloseStatement||e===E.CloseExpression||e===E.Comment){let e=``;for(;i<r.length&&!(r[i]===`{`&&(r[i+1]===`%`||r[i+1]===`{`||r[i+1]===`#`));)e+=r[i++];if(e.length>0){n.push(new D(e,E.Text));continue}}if(r[i]===`{`&&r[i+1]===`#`){i+=2;let e=r[i]===`-`;e&&++i;let t=``;for(;r[i]!==`#`||r[i+1]!==`}`;){if(i+2>=r.length)throw SyntaxError(`Missing end of comment tag`);t+=r[i++]}let a=t.endsWith(`-`);a&&(t=t.slice(0,-1)),e&&s(),n.push(new D(t,E.Comment)),i+=2,a&&c();continue}if(r.slice(i,i+3)===`{%-`){s(),n.push(new D(`{%`,E.OpenStatement)),i+=3;continue}if(r.slice(i,i+3)===`{{-`){s(),n.push(new D(`{{`,E.OpenExpression)),a=0,i+=3;continue}if(o(me),r.slice(i,i+3)===`-%}`){n.push(new D(`%}`,E.CloseStatement)),i+=3,c();continue}if(r.slice(i,i+3)===`-}}`){n.push(new D(`}}`,E.CloseExpression)),i+=3,c();continue}let t=r[i];if(t===`-`||t===`+`){let e=n.at(-1)?.type;if(e===E.Text||e===void 0)throw SyntaxError(`Unexpected character: ${t}`);switch(e){case E.Identifier:case E.NumericLiteral:case E.StringLiteral:case E.CloseParen:case E.CloseSquareBracket:break;default:{++i;let e=o(O);n.push(new D(`${t}${e}`,e.length>0?E.NumericLiteral:E.UnaryOperator));continue}}}for(let[e,t]of he)if(!(e===`}}`&&a>0)&&r.slice(i,i+e.length)===e){n.push(new D(e,t)),t===E.OpenExpression?a=0:t===E.OpenCurlyBracket?++a:t===E.CloseCurlyBracket&&--a,i+=e.length;continue main}if(t===`'`||t===`"`){++i;let e=o(e=>e!==t);n.push(new D(e,E.StringLiteral)),++i;continue}if(O(t)){let e=o(O);if(r[i]===`.`&&O(r[i+1])){++i;let t=o(O);e=`${e}.${t}`}n.push(new D(e,E.NumericLiteral));continue}if(pe(t)){let e=o(pe);n.push(new D(e,E.Identifier));continue}throw SyntaxError(`Unexpected character: ${t}`)}return n}var k=class{type=`Statement`},ye=class extends k{constructor(e){super(),this.body=e}type=`Program`},be=class extends k{constructor(e,t,n){super(),this.test=e,this.body=t,this.alternate=n}type=`If`},xe=class extends k{constructor(e,t,n,r){super(),this.loopvar=e,this.iterable=t,this.body=n,this.defaultBlock=r}type=`For`},Se=class extends k{type=`Break`},Ce=class extends k{type=`Continue`},we=class extends k{constructor(e,t,n){super(),this.assignee=e,this.value=t,this.body=n}type=`Set`},Te=class extends k{constructor(e,t,n){super(),this.name=e,this.args=t,this.body=n}type=`Macro`},Ee=class extends k{constructor(e){super(),this.value=e}type=`Comment`},A=class extends k{type=`Expression`},De=class extends A{constructor(e,t,n){super(),this.object=e,this.property=t,this.computed=n}type=`MemberExpression`},Oe=class extends A{constructor(e,t){super(),this.callee=e,this.args=t}type=`CallExpression`},j=class extends A{constructor(e){super(),this.value=e}type=`Identifier`},M=class extends A{constructor(e){super(),this.value=e}type=`Literal`},ke=class extends M{type=`IntegerLiteral`},Ae=class extends M{type=`FloatLiteral`},je=class extends M{type=`StringLiteral`},Me=class extends M{type=`ArrayLiteral`},Ne=class extends M{type=`TupleLiteral`},Pe=class extends M{type=`ObjectLiteral`},N=class extends A{constructor(e,t,n){super(),this.operator=e,this.left=t,this.right=n}type=`BinaryExpression`},Fe=class extends A{constructor(e,t){super(),this.operand=e,this.filter=t}type=`FilterExpression`},Ie=class extends k{constructor(e,t){super(),this.filter=e,this.body=t}type=`FilterStatement`},Le=class extends A{constructor(e,t){super(),this.lhs=e,this.test=t}type=`SelectExpression`},Re=class extends A{constructor(e,t,n){super(),this.operand=e,this.negate=t,this.test=n}type=`TestExpression`},ze=class extends A{constructor(e,t){super(),this.operator=e,this.argument=t}type=`UnaryExpression`},Be=class extends A{constructor(e=void 0,t=void 0,n=void 0){super(),this.start=e,this.stop=t,this.step=n}type=`SliceExpression`},Ve=class extends A{constructor(e,t){super(),this.key=e,this.value=t}type=`KeywordArgumentExpression`},He=class extends A{constructor(e){super(),this.argument=e}type=`SpreadExpression`},Ue=class extends k{constructor(e,t,n){super(),this.call=e,this.callerArgs=t,this.body=n}type=`CallStatement`},We=class extends A{constructor(e,t,n){super(),this.condition=e,this.trueExpr=t,this.falseExpr=n}type=`Ternary`};function Ge(e){let t=new ye([]),n=0;function r(t,r){let i=e[n++];if(!i||i.type!==t)throw Error(`Parser Error: ${r}. ${i.type} !== ${t}.`);return i}function i(e){if(!c(e))throw SyntaxError(`Expected ${e}`);++n}function a(){switch(e[n].type){case E.Comment:return new Ee(e[n++].value);case E.Text:return l();case E.OpenStatement:return u();case E.OpenExpression:return d();default:throw SyntaxError(`Unexpected token type: ${e[n].type}`)}}function o(...t){return n+t.length<=e.length&&t.every((t,r)=>t===e[n+r].type)}function s(...t){return e[n]?.type===E.OpenStatement&&e[n+1]?.type===E.Identifier&&t.includes(e[n+1]?.value)}function c(...t){return n+t.length<=e.length&&t.every((t,r)=>e[n+r].type===`Identifier`&&t===e[n+r].value)}function l(){return new je(r(E.Text,`Expected text token`).value)}function u(){if(r(E.OpenStatement,`Expected opening statement token`),e[n].type!==E.Identifier)throw SyntaxError(`Unknown statement, got ${e[n].type}`);let t=e[n].value,c;switch(t){case`set`:++n,c=f();break;case`if`:++n,c=p(),r(E.OpenStatement,`Expected {% token`),i(`endif`),r(E.CloseStatement,`Expected %} token`);break;case`macro`:++n,c=m(),r(E.OpenStatement,`Expected {% token`),i(`endmacro`),r(E.CloseStatement,`Expected %} token`);break;case`for`:++n,c=g(),r(E.OpenStatement,`Expected {% token`),i(`endfor`),r(E.CloseStatement,`Expected %} token`);break;case`call`:{++n;let e=null;o(E.OpenParen)&&(e=C());let t=T();if(t.type!==`Identifier`)throw SyntaxError(`Expected identifier following call statement`);let l=C();r(E.CloseStatement,`Expected closing statement token`);let u=[];for(;!s(`endcall`);)u.push(a());r(E.OpenStatement,`Expected '{%'`),i(`endcall`),r(E.CloseStatement,`Expected closing statement token`),c=new Ue(new Oe(t,l),e,u);break}case`break`:++n,r(E.CloseStatement,`Expected closing statement token`),c=new Se;break;case`continue`:++n,r(E.CloseStatement,`Expected closing statement token`),c=new Ce;break;case`filter`:{++n;let e=T();e instanceof j&&o(E.OpenParen)&&(e=S(e)),r(E.CloseStatement,`Expected closing statement token`);let t=[];for(;!s(`endfilter`);)t.push(a());r(E.OpenStatement,`Expected '{%'`),i(`endfilter`),r(E.CloseStatement,`Expected '%}'`),c=new Ie(e,t);break}default:throw SyntaxError(`Unknown statement type: ${t}`)}return c}function d(){r(E.OpenExpression,`Expected opening expression token`);let e=_();return r(E.CloseExpression,`Expected closing expression token`),e}function f(){let e=h(),t=null,c=[];if(o(E.Equals))++n,t=h();else{for(r(E.CloseStatement,`Expected %} token`);!s(`endset`);)c.push(a());r(E.OpenStatement,`Expected {% token`),i(`endset`)}return r(E.CloseStatement,`Expected closing statement token`),new we(e,t,c)}function p(){let e=_();r(E.CloseStatement,`Expected closing statement token`);let t=[],i=[];for(;!s(`elif`,`else`,`endif`);)t.push(a());if(s(`elif`)){++n,++n;let e=p();i.push(e)}else if(s(`else`))for(++n,++n,r(E.CloseStatement,`Expected closing statement token`);!s(`endif`);)i.push(a());return new be(e,t,i)}function m(){let e=T();if(e.type!==`Identifier`)throw SyntaxError(`Expected identifier following macro statement`);let t=C();r(E.CloseStatement,`Expected closing statement token`);let n=[];for(;!s(`endmacro`);)n.push(a());return new Te(e,t,n)}function h(e=!1){let t=e?T:_,r=[t()],i=o(E.Comma);for(;i&&(++n,r.push(t()),o(E.Comma)););return i?new Ne(r):r[0]}function g(){let e=h(!0);if(!(e instanceof j||e instanceof Ne))throw SyntaxError(`Expected identifier/tuple for the loop variable, got ${e.type} instead`);if(!c(`in`))throw SyntaxError("Expected `in` keyword following loop variable");++n;let t=_();r(E.CloseStatement,`Expected closing statement token`);let i=[];for(;!s(`endfor`,`else`);)i.push(a());let o=[];if(s(`else`))for(++n,++n,r(E.CloseStatement,`Expected closing statement token`);!s(`endfor`);)o.push(a());return new xe(e,t,i,o)}function _(){return v()}function v(){let e=y();if(c(`if`)){++n;let t=y();return c(`else`)?(++n,new We(t,e,v())):new Le(e,t)}return e}function y(){let t=ee();for(;c(`or`);){let r=e[n];++n;let i=ee();t=new N(r,t,i)}return t}function ee(){let t=b();for(;c(`and`);){let r=e[n];++n;let i=b();t=new N(r,t,i)}return t}function b(){let t;for(;c(`not`);){let r=e[n];++n,t=new ze(r,b())}return t??te()}function te(){let t=ne();for(;;){let r;if(c(`not`,`in`))r=new D(`not in`,E.Identifier),n+=2;else if(c(`in`))r=e[n++];else if(o(E.ComparisonBinaryOperator))r=e[n++];else break;let i=ne();t=new N(r,t,i)}return t}function ne(){let t=oe();for(;o(E.AdditiveBinaryOperator);){let r=e[n];++n;let i=oe();t=new N(r,t,i)}return t}function x(){let e=ae(T());return o(E.OpenParen)?S(e):e}function S(e){let t=new Oe(e,C());return t=ae(t),o(E.OpenParen)&&(t=S(t)),t}function C(){r(E.OpenParen,`Expected opening parenthesis for arguments list`);let e=re();return r(E.CloseParen,`Expected closing parenthesis for arguments list`),e}function re(){let t=[];for(;!o(E.CloseParen);){let r;if(e[n].type===E.MultiplicativeBinaryOperator&&e[n].value===`*`)++n,r=new He(_());else if(r=_(),o(E.Equals)){if(++n,!(r instanceof j))throw SyntaxError(`Expected identifier for keyword argument`);let e=_();r=new Ve(r,e)}t.push(r),o(E.Comma)&&++n}return t}function ie(){let e=[],t=!1;for(;!o(E.CloseSquareBracket);)o(E.Colon)?(e.push(void 0),++n,t=!0):(e.push(_()),o(E.Colon)&&(++n,t=!0));if(e.length===0)throw SyntaxError(`Expected at least one argument for member/slice expression`);if(t){if(e.length>3)throw SyntaxError(`Expected 0-3 arguments for slice expression`);return new Be(...e)}return e[0]}function ae(t){for(;o(E.Dot)||o(E.OpenSquareBracket);){let i=e[n];++n;let a,o=i.type===E.OpenSquareBracket;if(o)a=ie(),r(E.CloseSquareBracket,`Expected closing square bracket`);else if(a=T(),a.type!==`Identifier`)throw SyntaxError(`Expected identifier following dot operator`);t=new De(t,a,o)}return t}function oe(){let t=se();for(;o(E.MultiplicativeBinaryOperator);){let r=e[n++],i=se();t=new N(r,t,i)}return t}function se(){let e=w();for(;c(`is`);){++n;let t=c(`not`);t&&++n;let r=T();if(!(r instanceof j))throw SyntaxError(`Expected identifier for the test`);e=new Re(e,t,r)}return e}function w(){let e=x();for(;o(E.Pipe);){++n;let t=T();if(!(t instanceof j))throw SyntaxError(`Expected identifier for the filter`);o(E.OpenParen)&&(t=S(t)),e=new Fe(e,t)}return e}function T(){let t=e[n++];switch(t.type){case E.NumericLiteral:{let e=t.value;return e.includes(`.`)?new Ae(Number(e)):new ke(Number(e))}case E.StringLiteral:{let r=t.value;for(;o(E.StringLiteral);)r+=e[n++].value;return new je(r)}case E.Identifier:return new j(t.value);case E.OpenParen:{let e=h();return r(E.CloseParen,"Expected closing parenthesis, got ${tokens[current].type} instead."),e}case E.OpenSquareBracket:{let e=[];for(;!o(E.CloseSquareBracket);)e.push(_()),o(E.Comma)&&++n;return++n,new Me(e)}case E.OpenCurlyBracket:{let e=new Map;for(;!o(E.CloseCurlyBracket);){let t=_();r(E.Colon,`Expected colon between key and value in object literal`);let i=_();e.set(t,i),o(E.Comma)&&++n}return++n,new Pe(e)}default:throw SyntaxError(`Unexpected token: ${t.type}`)}}for(;n<e.length;)t.body.push(a());return t}function Ke(e,t,n=1){if(t===void 0&&(t=e,e=0),n===0)throw Error(`range() step must not be zero`);let r=[];if(n>0)for(let i=e;i<t;i+=n)r.push(i);else for(let i=e;i>t;i+=n)r.push(i);return r}function qe(e,t,n,r=1){let i=Math.sign(r);i>=0?(t=(t??=0)<0?Math.max(e.length+t,0):Math.min(t,e.length),n=(n??=e.length)<0?Math.max(e.length+n,0):Math.min(n,e.length)):(t=(t??=e.length-1)<0?Math.max(e.length+t,-1):Math.min(t,e.length-1),n=(n??=-1)<-1?Math.max(e.length+n,-1):Math.min(n,e.length-1));let a=[];for(let o=t;i*o<i*n;o+=r)a.push(e[o]);return a}function Je(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}function Ye(e){return Xe(new Date,e)}function Xe(e,t){let n=new Intl.DateTimeFormat(void 0,{month:`long`}),r=new Intl.DateTimeFormat(void 0,{month:`short`}),i=e=>e<10?`0`+e:e.toString();return t.replace(/%[YmdbBHM%]/g,t=>{switch(t){case`%Y`:return e.getFullYear().toString();case`%m`:return i(e.getMonth()+1);case`%d`:return i(e.getDate());case`%b`:return r.format(e);case`%B`:return n.format(e);case`%H`:return i(e.getHours());case`%M`:return i(e.getMinutes());case`%%`:return`%`;default:return t}})}function Ze(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Qe(e,t,n,r){if(r===0)return e;let i=r==null||r<0?1/0:r,a=t.length===0?RegExp(`(?=)`,`gu`):new RegExp(Ze(t),`gu`);return e.replaceAll(a,e=>i>0?(--i,n):e)}var $e=class extends Error{},et=class extends Error{},tt=new Map,P=class{type=`RuntimeValue`;value;get builtins(){return tt}constructor(e=void 0){this.value=e}__bool__(){return new R(!!this.value)}toString(){return String(this.value)}},F=class extends P{type=`IntegerValue`},I=class extends P{type=`FloatValue`;toString(){return this.value%1==0?this.value.toFixed(1):this.value.toString()}},L=class extends P{type=`StringValue`;_builtins;get builtins(){return this._builtins??=new Map([[`upper`,new U(()=>new L(this.value.toUpperCase()))],[`lower`,new U(()=>new L(this.value.toLowerCase()))],[`strip`,new U(()=>new L(this.value.trim()))],[`title`,new U(()=>new L(Je(this.value)))],[`capitalize`,new U(()=>new L(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],[`length`,new F(this.value.length)],[`rstrip`,new U(()=>new L(this.value.trimEnd()))],[`lstrip`,new U(()=>new L(this.value.trimStart()))],[`startswith`,new U(e=>{if(e.length===0)throw Error(`startswith() requires at least one argument`);let t=e[0];if(t instanceof L)return new R(this.value.startsWith(t.value));if(t instanceof H){for(let e of t.value){if(!(e instanceof L))throw Error(`startswith() tuple elements must be strings`);if(this.value.startsWith(e.value))return new R(!0)}return new R(!1)}throw Error(`startswith() argument must be a string or tuple of strings`)})],[`endswith`,new U(e=>{if(e.length===0)throw Error(`endswith() requires at least one argument`);let t=e[0];if(t instanceof L)return new R(this.value.endsWith(t.value));if(t instanceof H){for(let e of t.value){if(!(e instanceof L))throw Error(`endswith() tuple elements must be strings`);if(this.value.endsWith(e.value))return new R(!0)}return new R(!1)}throw Error(`endswith() argument must be a string or tuple of strings`)})],[`split`,new U(e=>{let t=e[0]??new W;if(!(t instanceof L||t instanceof W))throw Error(`sep argument must be a string or null`);let n=e[1]??new F(-1);if(!(n instanceof F))throw Error(`maxsplit argument must be a number`);let r=[];if(t instanceof W){let e=this.value.trimStart();for(let{0:t,index:i}of e.matchAll(/\S+/g)){if(n.value!==-1&&r.length>=n.value&&i!==void 0){r.push(t+e.slice(i+t.length));break}r.push(t)}}else{if(t.value===``)throw Error(`empty separator`);r=this.value.split(t.value),n.value!==-1&&r.length>n.value&&r.push(r.splice(n.value).join(t.value))}return new H(r.map(e=>new L(e)))})],[`replace`,new U(e=>{if(e.length<2)throw Error(`replace() requires at least two arguments`);let t=e[0],n=e[1];if(!(t instanceof L&&n instanceof L))throw Error(`replace() arguments must be strings`);let r;if(r=e.length>2?e[2].type===`KeywordArgumentsValue`?e[2].value.get(`count`)??new W:e[2]:new W,!(r instanceof F||r instanceof W))throw Error(`replace() count argument must be a number or null`);return new L(Qe(this.value,t.value,n.value,r.value))})]])}},R=class extends P{type=`BooleanValue`},nt=/[\x7f-\uffff]/g;function rt(e){return e.replace(nt,e=>`\\u`+e.charCodeAt(0).toString(16).padStart(4,`0`))}function z(e,t={},n=0,r=!0){let{indent:i=null,ensureAscii:a=!1,separators:o=null,sortKeys:s=!1}=t,c,l;switch(o?[c,l]=o:i?(c=`,`,l=`: `):(c=`, `,l=`: `),e.type){case`NullValue`:return`null`;case`UndefinedValue`:return r?`null`:`undefined`;case`IntegerValue`:case`FloatValue`:case`BooleanValue`:return JSON.stringify(e.value);case`StringValue`:{let t=JSON.stringify(e.value);return a&&(t=rt(t)),t}case`ArrayValue`:case`ObjectValue`:{let o=i?` `.repeat(i):``,u=`
6
- `+o.repeat(n),d=u+o;if(e.type===`ArrayValue`){let a=e.value.map(e=>z(e,t,n+1,r));return i?`[${d}${a.join(`${c}${d}`)}${u}]`:`[${a.join(c)}]`}else{let o=Array.from(e.value.entries());s&&(o=o.sort(([e],[t])=>e.localeCompare(t)));let f=o.map(([e,o])=>{let s=JSON.stringify(e);a&&(s=rt(s));let c=`${s}${l}${z(o,t,n+1,r)}`;return i?`${d}${c}`:c});return i?`{${f.join(c)}${u}}`:`{${f.join(c)}}`}}default:throw Error(`Cannot convert to JSON: ${e.type}`)}}var B=class extends P{type=`ObjectValue`;_builtins;__bool__(){return new R(this.value.size>0)}get builtins(){return this._builtins??=new Map([[`get`,new U(([e,t])=>{if(!(e instanceof L))throw Error(`Object key must be a string: got ${e.type}`);return this.value.get(e.value)??t??new W})],[`items`,new U(()=>this.items())],[`keys`,new U(()=>this.keys())],[`values`,new U(()=>this.values())],[`dictsort`,new U(e=>{let t=new Map,n=e.filter(e=>e instanceof V?(t=e.value,!1):!0),r=n.at(0)??t.get(`case_sensitive`)??new R(!1);if(!(r instanceof R))throw Error(`case_sensitive must be a boolean`);let i=n.at(1)??t.get(`by`)??new L(`key`);if(!(i instanceof L))throw Error(`by must be a string`);if(![`key`,`value`].includes(i.value))throw Error(`by must be either 'key' or 'value'`);let a=n.at(2)??t.get(`reverse`)??new R(!1);if(!(a instanceof R))throw Error(`reverse must be a boolean`);return new H(Array.from(this.value.entries()).map(([e,t])=>new H([new L(e),t])).sort((e,t)=>{let n=i.value===`key`?0:1,o=e.value[n],s=t.value[n],c=ct(o,s,r.value);return a.value?-c:c}))})]])}items(){return new H(Array.from(this.value.entries()).map(([e,t])=>new H([new L(e),t])))}keys(){return new H(Array.from(this.value.keys()).map(e=>new L(e)))}values(){return new H(Array.from(this.value.values()))}toString(){return z(this,{},0,!1)}},V=class extends B{type=`KeywordArgumentsValue`},H=class extends P{type=`ArrayValue`;_builtins;get builtins(){return this._builtins??=new Map([[`length`,new F(this.value.length)]])}__bool__(){return new R(this.value.length>0)}toString(){return z(this,{},0,!1)}},it=class extends H{type=`TupleValue`},U=class extends P{type=`FunctionValue`},W=class extends P{type=`NullValue`},G=class extends P{type=`UndefinedValue`},at=class{constructor(e){this.parent=e}variables=new Map([[`namespace`,new U(e=>{if(e.length===0)return new B(new Map);if(e.length!==1||!(e[0]instanceof B))throw Error("`namespace` expects either zero arguments or a single object argument");return e[0]})]]);tests=at.TESTS;set(e,t){return this.declareVariable(e,ut(t))}declareVariable(e,t){if(this.variables.has(e))throw SyntaxError(`Variable already declared: ${e}`);return this.variables.set(e,t),t}setVariable(e,t){return this.variables.set(e,t),t}resolve(e){if(this.variables.has(e))return this;if(this.parent)return this.parent.resolve(e);throw Error(`Unknown variable: ${e}`)}lookupVariable(e){try{return this.resolve(e).variables.get(e)??new G}catch{return new G}}},K=at;fe(K,`TESTS`,new Map([[`boolean`,e=>e.type===`BooleanValue`],[`callable`,e=>e instanceof U],[`odd`,e=>{if(!(e instanceof F))throw Error(`cannot odd on ${e.type}`);return e.value%2!=0}],[`even`,e=>{if(!(e instanceof F))throw Error(`cannot even on ${e.type}`);return e.value%2==0}],[`false`,e=>e.type===`BooleanValue`&&!e.value],[`true`,e=>e.type===`BooleanValue`&&e.value],[`none`,e=>e.type===`NullValue`],[`string`,e=>e.type===`StringValue`],[`number`,e=>e instanceof F||e instanceof I],[`integer`,e=>e instanceof F],[`iterable`,e=>e.type===`ArrayValue`||e.type===`StringValue`],[`mapping`,e=>e instanceof B],[`sequence`,e=>e instanceof H||e instanceof B||e instanceof L],[`lower`,e=>{let t=e.value;return e.type===`StringValue`&&t===t.toLowerCase()}],[`upper`,e=>{let t=e.value;return e.type===`StringValue`&&t===t.toUpperCase()}],[`none`,e=>e.type===`NullValue`],[`defined`,e=>e.type!==`UndefinedValue`],[`undefined`,e=>e.type===`UndefinedValue`],[`equalto`,(e,t)=>e.value===t.value],[`eq`,(e,t)=>e.value===t.value]]));function ot(e){e.set(`false`,!1),e.set(`true`,!0),e.set(`none`,null),e.set(`raise_exception`,e=>{throw Error(e)}),e.set(`range`,Ke),e.set(`strftime_now`,Ye),e.set(`True`,!0),e.set(`False`,!1),e.set(`None`,null)}function st(e,t){let n=t.split(`.`),r=e;for(let e of n)if(r instanceof B)r=r.value.get(e)??new G;else if(r instanceof H){let t=parseInt(e,10);if(!isNaN(t)&&t>=0&&t<r.value.length)r=r.value[t];else return new G}else return new G;return r}function ct(e,t,n=!1){if(e instanceof W&&t instanceof W)return 0;if(e instanceof W||t instanceof W)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(e instanceof G&&t instanceof G)return 0;if(e instanceof G||t instanceof G)throw Error(`Cannot compare ${e.type} with ${t.type}`);let r=e=>e instanceof F||e instanceof I||e instanceof R,i=e=>e instanceof R?+!!e.value:e.value;if(r(e)&&r(t)){let n=i(e),r=i(t);return n<r?-1:+(n>r)}if(e.type!==t.type)throw Error(`Cannot compare different types: ${e.type} and ${t.type}`);switch(e.type){case`StringValue`:{let r=e.value,i=t.value;return n||(r=r.toLowerCase(),i=i.toLowerCase()),r<i?-1:+(r>i)}default:throw Error(`Cannot compare type: ${e.type}`)}}var lt=class{global;constructor(e){this.global=e??new K}run(e){return this.evaluate(e,this.global)}evaluateBinaryExpression(e,t){let n=this.evaluate(e.left,t);switch(e.operator.value){case`and`:return n.__bool__().value?this.evaluate(e.right,t):n;case`or`:return n.__bool__().value?n:this.evaluate(e.right,t)}let r=this.evaluate(e.right,t);switch(e.operator.value){case`==`:return new R(n.value==r.value);case`!=`:return new R(n.value!=r.value)}if(n instanceof G||r instanceof G){if(r instanceof G&&[`in`,`not in`].includes(e.operator.value))return new R(e.operator.value===`not in`);throw Error(`Cannot perform operation ${e.operator.value} on undefined values`)}else if(n instanceof W||r instanceof W)throw Error(`Cannot perform operation on null values`);else if(e.operator.value===`~`)return new L(n.value.toString()+r.value.toString());else if((n instanceof F||n instanceof I)&&(r instanceof F||r instanceof I)){let t=n.value,i=r.value;switch(e.operator.value){case`+`:case`-`:case`*`:{let a=e.operator.value===`+`?t+i:e.operator.value===`-`?t-i:t*i;return n instanceof I||r instanceof I?new I(a):new F(a)}case`/`:return new I(t/i);case`%`:{let e=t%i;return n instanceof I||r instanceof I?new I(e):new F(e)}case`<`:return new R(t<i);case`>`:return new R(t>i);case`>=`:return new R(t>=i);case`<=`:return new R(t<=i)}}else if(n instanceof H&&r instanceof H)switch(e.operator.value){case`+`:return new H(n.value.concat(r.value))}else if(r instanceof H){let t=r.value.find(e=>e.value===n.value)!==void 0;switch(e.operator.value){case`in`:return new R(t);case`not in`:return new R(!t)}}if(n instanceof L||r instanceof L)switch(e.operator.value){case`+`:return new L(n.value.toString()+r.value.toString())}if(n instanceof L&&r instanceof L)switch(e.operator.value){case`in`:return new R(r.value.includes(n.value));case`not in`:return new R(!r.value.includes(n.value))}if(n instanceof L&&r instanceof B)switch(e.operator.value){case`in`:return new R(r.value.has(n.value));case`not in`:return new R(!r.value.has(n.value))}throw SyntaxError(`Unknown operator "${e.operator.value}" between ${n.type} and ${r.type}`)}evaluateArguments(e,t){let n=[],r=new Map;for(let i of e)if(i.type===`SpreadExpression`){let e=i,r=this.evaluate(e.argument,t);if(!(r instanceof H))throw Error(`Cannot unpack non-iterable type: ${r.type}`);for(let e of r.value)n.push(e)}else if(i.type===`KeywordArgumentExpression`){let e=i;r.set(e.key.value,this.evaluate(e.value,t))}else{if(r.size>0)throw Error(`Positional arguments must come before keyword arguments`);n.push(this.evaluate(i,t))}return[n,r]}applyFilter(e,t,n){if(t.type===`Identifier`){let r=t;if(r.value===`safe`)return e;if(r.value===`tojson`)return new L(z(e,{}));if(e instanceof H)switch(r.value){case`list`:return e;case`first`:return e.value[0];case`last`:return e.value[e.value.length-1];case`length`:return new F(e.value.length);case`reverse`:return new H(e.value.slice().reverse());case`sort`:return new H(e.value.slice().sort((e,t)=>ct(e,t,!1)));case`join`:return new L(e.value.map(e=>e.value).join(``));case`string`:return new L(z(e,{},0,!1));case`unique`:{let t=new Set,n=[];for(let r of e.value)t.has(r.value)||(t.add(r.value),n.push(r));return new H(n)}default:throw Error(`Unknown ArrayValue filter: ${r.value}`)}else if(e instanceof L)switch(r.value){case`length`:case`upper`:case`lower`:case`title`:case`capitalize`:{let t=e.builtins.get(r.value);if(t instanceof U)return t.value([],n);if(t instanceof F)return t;throw Error(`Unknown StringValue filter: ${r.value}`)}case`trim`:return new L(e.value.trim());case`indent`:return new L(e.value.split(`
3
+ `)),t}function p(e,t){let n=f(e);return n!==e&&d(e)&&console.info(`[ShadowClaw] Chat-template control token(s) detected and stripped from "${t}" output. The provider or model may not be applying its chat template correctly. Original length: ${e.length}, cleaned length: ${n.length}.`),n}const m=`shadow-claw-browser-models`,h=16*1024*1024;function g(){return typeof caches<`u`&&typeof caches.open==`function`}function _(e){return`${e}?__sc_meta=1`}function v(e,t){return`${e}?__sc_chunk=${t}`}async function y(e,t=m){if(!g())return null;try{let n=await(await caches.open(t)).match(_(e));if(!n?.body)return null;let r=await n.text();return JSON.parse(r)}catch{return null}}async function b(e,t,n=m){if(g())try{await(await caches.open(n)).put(_(e),new Response(JSON.stringify(t),{headers:{"Content-Type":`application/json`}}))}catch(e){console.error(`writePartialMeta error:`,e)}}async function ee(e,t,n,r=m){if(g())try{await(await caches.open(r)).put(v(e,t),new Response(new Blob([n]),{headers:{"Content-Type":`application/octet-stream`,"Content-Length":String(n.byteLength)}}))}catch(e){console.error(`flushChunkToCache error:`,e)}}function te(e,t,n=m){let r=0,i=null;return new ReadableStream({async pull(a){if(i){let{done:e,value:t}=await i.read();if(!e){a.enqueue(t);return}i=null,r++}if(r>=t.chunks){a.close();return}try{let t=await(await caches.open(n)).match(v(e,r));if(!t?.body){a.error(Error(`ModelCache: missing cache chunk ${r} for ${e}`));return}i=t.body.getReader();let{done:o,value:s}=await i.read();o?(i=null,r++):a.enqueue(s)}catch(e){a.error(e)}},cancel(){i&&=(i.cancel(),null)}})}function ne(e,t){return new Promise((n,r)=>{if(t?.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};t?.addEventListener(`abort`,a,{once:!0})})}function re(e){return Math.min(15e3,1e3*2**(Math.max(1,e)-1))}async function x(e,t,n,r,i=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch){let a=r?.cacheName??`shadow-claw-browser-models`,o=r?.chunkSize??16777216,s=r?.maxAttempts??6,c=r?.headers??{},l=g(),u=0,d=0,f=null,p=!1,m=e;if(l){let t=await y(e,a);t&&!t.complete&&(u=t.chunks,d=t.received,f=t.total,p=t.acceptsRanges,t.resolvedUrl&&(m=t.resolvedUrl))}let h=null,_=null;for(let e=1;e<=s;e++){if(n?.aborted)throw new DOMException(`Aborted`,`AbortError`);let t={...c};d>0&&p&&(t.Range=`bytes=${d}-`);try{_=await i(m,{signal:n,headers:t})}catch(t){if(n?.aborted||t?.name===`AbortError`)throw t;if(h=t,e<s){await ne(re(e),n);continue}break}if(_.url&&(m=_.url),t.Range&&_.status===200&&(u=0,d=0),_.status!==200&&_.status!==206){if(h=Error(`ModelCache: Failed to fetch model from '${m}': ${_.status} ${_.statusText}`),_.status>=500&&e<s){await ne(re(e),n);continue}throw h}if(!_.body)throw Error(`ModelCache: Failed to fetch model from '${m}': No response body`);h=null;break}if(h||!_||!_.body)throw Error(`ModelCache: failed to download model from '${e}' after ${s} attempts: ${h?.message??String(h)}`);if(f==null)if(p=_.status===206||_.headers.get(`accept-ranges`)===`bytes`,_.status===206){let e=_.headers.get(`content-range`)?.match(/\/\s*(\d+)\s*$/);e&&(f=Number(e[1]))}else{let e=_.headers.get(`content-length`),t=e?Number(e):NaN;f=Number.isFinite(t)&&t>0?t:null}l&&await b(e,{chunks:u,received:d,total:f,acceptsRanges:p,complete:!1,resolvedUrl:m},a);let te=_.body;return new ReadableStream({async start(r){try{if(l&&u>0){let i=await caches.open(a),o=0;for(let a=0;a<u;a++){if(n?.aborted)throw new DOMException(`Aborted`,`AbortError`);let s=await i.match(v(e,a));if(s?.body){let e=s.body.getReader();for(;;){let{done:n,value:i}=await e.read();if(n)break;r.enqueue(i),o+=i.byteLength,t?.(o,f)}}else if(s&&typeof s.arrayBuffer==`function`){let e=await s.arrayBuffer(),n=new Uint8Array(e);r.enqueue(n),o+=n.byteLength,t?.(o,f)}}}let i=[],s=0,c=d;async function h(){if(s===0)return;let t=new Uint8Array(s),n=0;for(let e of i)t.set(e,n),n+=e.byteLength;i=[],s=0,l?(await ee(e,u,t,a),u++,d+=t.byteLength,await b(e,{chunks:u,received:d,total:f,acceptsRanges:p,complete:!1,resolvedUrl:m},a)):(u++,d+=t.byteLength)}let g=te.getReader();try{for(;;){if(n?.aborted)throw await g.cancel(),new DOMException(`Aborted`,`AbortError`);let{done:e,value:a}=await g.read();if(e)break;r.enqueue(a),i.push(a),s+=a.byteLength,c+=a.byteLength,t?.(c,f),s>=o&&await h()}await h(),l&&await b(e,{chunks:u,received:d,total:f,acceptsRanges:p,complete:!0,resolvedUrl:m},a),t?.(c,f,!0),r.close()}catch(e){try{await g.cancel()}catch{}throw e}}catch(e){r.error(e)}}})}async function S(e,t,n,r,i=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch){let a=r?.cacheName??`shadow-claw-browser-models`;try{let n=await y(e,a);if(n?.complete)return t?.(n.received,n.received,!0),te(e,n,a)}catch(e){console.warn(`loadModelStream cache check failed, falling back to download:`,e)}return x(e,t,n,r,i)}let C=null;function ie(e){C=e}function ae(){C=null}function w(e=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch,t,n){let r=t?.cacheName??`shadow-claw-browser-models`;return async function(i,a){let o=typeof i==`string`?i:i instanceof URL?i.toString():i.url,s=(a?.method||(typeof i==`object`&&`method`in i?i.method:`GET`)||`GET`).toUpperCase(),c=a?.headers||(typeof i==`object`&&`headers`in i?i.headers:void 0);if(c instanceof Headers?c.has(`Range`)||c.has(`range`):c&&typeof c==`object`&&(`Range`in c||`range`in c))return e(i,{...a||{},cache:`no-store`});if(s!==`GET`||!g())return e(i,a);try{let i=await y(o,r);if(i?.complete){n?.(o,i.received,i.received,!0),C?.(o,i.received,i.received,!0);let e=te(o,i,r);return new Response(e,{status:200,statusText:`OK`,headers:{"Content-Type":`application/octet-stream`,...i.total!=null&&i.total>0?{"Content-Length":String(i.total)}:{}}})}let s=await S(o,(e,t,r)=>{n?.(o,e,t,!!r),C?.(o,e,t,!!r)},a?.signal??void 0,{cacheName:r,...t||{}},e),c=(await y(o,r))?.total;return new Response(s,{status:200,statusText:`OK`,headers:{"Content-Type":`application/octet-stream`,...c!=null&&c>0?{"Content-Length":String(c)}:{}}})}catch(t){return console.warn(`[ModelCacheFetch] Cache stream failed for ${o}, falling back to native fetch:`,t),e(i,a)}}}var oe=Object.defineProperty,se=(e,t,n)=>t in e?oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,T=(e,t,n)=>(se(e,typeof t==`symbol`?t:t+``,n),n),E=Object.freeze({Text:`Text`,NumericLiteral:`NumericLiteral`,StringLiteral:`StringLiteral`,Identifier:`Identifier`,Equals:`Equals`,OpenParen:`OpenParen`,CloseParen:`CloseParen`,OpenStatement:`OpenStatement`,CloseStatement:`CloseStatement`,OpenExpression:`OpenExpression`,CloseExpression:`CloseExpression`,OpenSquareBracket:`OpenSquareBracket`,CloseSquareBracket:`CloseSquareBracket`,OpenCurlyBracket:`OpenCurlyBracket`,CloseCurlyBracket:`CloseCurlyBracket`,Comma:`Comma`,Dot:`Dot`,Colon:`Colon`,Pipe:`Pipe`,CallOperator:`CallOperator`,AdditiveBinaryOperator:`AdditiveBinaryOperator`,MultiplicativeBinaryOperator:`MultiplicativeBinaryOperator`,ComparisonBinaryOperator:`ComparisonBinaryOperator`,UnaryOperator:`UnaryOperator`,Comment:`Comment`}),D=class{constructor(e,t){this.value=e,this.type=t}};function ce(e){return/\w/.test(e)}function O(e){return/[0-9]/.test(e)}function le(e){return/\s/.test(e)}var ue=[[`{%`,E.OpenStatement],[`%}`,E.CloseStatement],[`{{`,E.OpenExpression],[`}}`,E.CloseExpression],[`(`,E.OpenParen],[`)`,E.CloseParen],[`{`,E.OpenCurlyBracket],[`}`,E.CloseCurlyBracket],[`[`,E.OpenSquareBracket],[`]`,E.CloseSquareBracket],[`,`,E.Comma],[`.`,E.Dot],[`:`,E.Colon],[`|`,E.Pipe],[`<=`,E.ComparisonBinaryOperator],[`>=`,E.ComparisonBinaryOperator],[`==`,E.ComparisonBinaryOperator],[`!=`,E.ComparisonBinaryOperator],[`<`,E.ComparisonBinaryOperator],[`>`,E.ComparisonBinaryOperator],[`+`,E.AdditiveBinaryOperator],[`-`,E.AdditiveBinaryOperator],[`~`,E.AdditiveBinaryOperator],[`*`,E.MultiplicativeBinaryOperator],[`/`,E.MultiplicativeBinaryOperator],[`%`,E.MultiplicativeBinaryOperator],[`=`,E.Equals]],de=new Map([[`n`,`
4
+ `],[`t`,` `],[`r`,`\r`],[`b`,`\b`],[`f`,`\f`],[`v`,`\v`],[`'`,`'`],[`"`,`"`],[`\\`,`\\`]]);function fe(e,t={}){return e.endsWith(`
5
+ `)&&(e=e.slice(0,-1)),t.lstrip_blocks&&(e=e.replace(/^[ \t]*({[#%-])/gm,`$1`)),t.trim_blocks&&(e=e.replace(/([#%-]})\n/g,`$1`)),e.replace(/(\s*){%(-?)\s*(?:end)?generation\s*(-?)%}(\s*)/gs,(e,t,n,r,i)=>(n?``:t)+(r?``:i))}function pe(e,t={}){let n=[],r=fe(e,t),i=0,a=0,o=e=>{let t=``;for(;e(r[i]);){if(r[i]===`\\`){if(++i,i>=r.length)throw SyntaxError(`Unexpected end of input`);let e=r[i++],n=de.get(e);if(n===void 0)throw SyntaxError(`Unexpected escaped character: ${e}`);t+=n;continue}if(t+=r[i++],i>=r.length)throw SyntaxError(`Unexpected end of input`)}return t},s=()=>{let e=n.at(-1);e&&e.type===E.Text&&(e.value=e.value.trimEnd(),e.value===``&&n.pop())},c=()=>{for(;i<r.length&&le(r[i]);)++i};main:for(;i<r.length;){let e=n.at(-1)?.type;if(e===void 0||e===E.CloseStatement||e===E.CloseExpression||e===E.Comment){let e=``;for(;i<r.length&&!(r[i]===`{`&&(r[i+1]===`%`||r[i+1]===`{`||r[i+1]===`#`));)e+=r[i++];if(e.length>0){n.push(new D(e,E.Text));continue}}if(r[i]===`{`&&r[i+1]===`#`){i+=2;let e=r[i]===`-`;e&&++i;let t=``;for(;r[i]!==`#`||r[i+1]!==`}`;){if(i+2>=r.length)throw SyntaxError(`Missing end of comment tag`);t+=r[i++]}let a=t.endsWith(`-`);a&&(t=t.slice(0,-1)),e&&s(),n.push(new D(t,E.Comment)),i+=2,a&&c();continue}if(r.slice(i,i+3)===`{%-`){s(),n.push(new D(`{%`,E.OpenStatement)),i+=3;continue}if(r.slice(i,i+3)===`{{-`){s(),n.push(new D(`{{`,E.OpenExpression)),a=0,i+=3;continue}if(o(le),r.slice(i,i+3)===`-%}`){n.push(new D(`%}`,E.CloseStatement)),i+=3,c();continue}if(r.slice(i,i+3)===`-}}`){n.push(new D(`}}`,E.CloseExpression)),i+=3,c();continue}let t=r[i];if(t===`-`||t===`+`){let e=n.at(-1)?.type;if(e===E.Text||e===void 0)throw SyntaxError(`Unexpected character: ${t}`);switch(e){case E.Identifier:case E.NumericLiteral:case E.StringLiteral:case E.CloseParen:case E.CloseSquareBracket:break;default:{++i;let e=o(O);n.push(new D(`${t}${e}`,e.length>0?E.NumericLiteral:E.UnaryOperator));continue}}}for(let[e,t]of ue)if(!(e===`}}`&&a>0)&&r.slice(i,i+e.length)===e){n.push(new D(e,t)),t===E.OpenExpression?a=0:t===E.OpenCurlyBracket?++a:t===E.CloseCurlyBracket&&--a,i+=e.length;continue main}if(t===`'`||t===`"`){++i;let e=o(e=>e!==t);n.push(new D(e,E.StringLiteral)),++i;continue}if(O(t)){let e=o(O);if(r[i]===`.`&&O(r[i+1])){++i;let t=o(O);e=`${e}.${t}`}n.push(new D(e,E.NumericLiteral));continue}if(ce(t)){let e=o(ce);n.push(new D(e,E.Identifier));continue}throw SyntaxError(`Unexpected character: ${t}`)}return n}var k=class{type=`Statement`},me=class extends k{constructor(e){super(),this.body=e}type=`Program`},he=class extends k{constructor(e,t,n){super(),this.test=e,this.body=t,this.alternate=n}type=`If`},ge=class extends k{constructor(e,t,n,r){super(),this.loopvar=e,this.iterable=t,this.body=n,this.defaultBlock=r}type=`For`},_e=class extends k{type=`Break`},ve=class extends k{type=`Continue`},ye=class extends k{constructor(e,t,n){super(),this.assignee=e,this.value=t,this.body=n}type=`Set`},be=class extends k{constructor(e,t,n){super(),this.name=e,this.args=t,this.body=n}type=`Macro`},xe=class extends k{constructor(e){super(),this.value=e}type=`Comment`},A=class extends k{type=`Expression`},Se=class extends A{constructor(e,t,n){super(),this.object=e,this.property=t,this.computed=n}type=`MemberExpression`},Ce=class extends A{constructor(e,t){super(),this.callee=e,this.args=t}type=`CallExpression`},j=class extends A{constructor(e){super(),this.value=e}type=`Identifier`},M=class extends A{constructor(e){super(),this.value=e}type=`Literal`},we=class extends M{type=`IntegerLiteral`},Te=class extends M{type=`FloatLiteral`},Ee=class extends M{type=`StringLiteral`},De=class extends M{type=`ArrayLiteral`},Oe=class extends M{type=`TupleLiteral`},ke=class extends M{type=`ObjectLiteral`},N=class extends A{constructor(e,t,n){super(),this.operator=e,this.left=t,this.right=n}type=`BinaryExpression`},Ae=class extends A{constructor(e,t){super(),this.operand=e,this.filter=t}type=`FilterExpression`},je=class extends k{constructor(e,t){super(),this.filter=e,this.body=t}type=`FilterStatement`},Me=class extends A{constructor(e,t){super(),this.lhs=e,this.test=t}type=`SelectExpression`},Ne=class extends A{constructor(e,t,n){super(),this.operand=e,this.negate=t,this.test=n}type=`TestExpression`},Pe=class extends A{constructor(e,t){super(),this.operator=e,this.argument=t}type=`UnaryExpression`},Fe=class extends A{constructor(e=void 0,t=void 0,n=void 0){super(),this.start=e,this.stop=t,this.step=n}type=`SliceExpression`},Ie=class extends A{constructor(e,t){super(),this.key=e,this.value=t}type=`KeywordArgumentExpression`},Le=class extends A{constructor(e){super(),this.argument=e}type=`SpreadExpression`},Re=class extends k{constructor(e,t,n){super(),this.call=e,this.callerArgs=t,this.body=n}type=`CallStatement`},ze=class extends A{constructor(e,t,n){super(),this.condition=e,this.trueExpr=t,this.falseExpr=n}type=`Ternary`};function Be(e){let t=new me([]),n=0;function r(t,r){let i=e[n++];if(!i||i.type!==t)throw Error(`Parser Error: ${r}. ${i.type} !== ${t}.`);return i}function i(e){if(!c(e))throw SyntaxError(`Expected ${e}`);++n}function a(){switch(e[n].type){case E.Comment:return new xe(e[n++].value);case E.Text:return l();case E.OpenStatement:return u();case E.OpenExpression:return d();default:throw SyntaxError(`Unexpected token type: ${e[n].type}`)}}function o(...t){return n+t.length<=e.length&&t.every((t,r)=>t===e[n+r].type)}function s(...t){return e[n]?.type===E.OpenStatement&&e[n+1]?.type===E.Identifier&&t.includes(e[n+1]?.value)}function c(...t){return n+t.length<=e.length&&t.every((t,r)=>e[n+r].type===`Identifier`&&t===e[n+r].value)}function l(){return new Ee(r(E.Text,`Expected text token`).value)}function u(){if(r(E.OpenStatement,`Expected opening statement token`),e[n].type!==E.Identifier)throw SyntaxError(`Unknown statement, got ${e[n].type}`);let t=e[n].value,c;switch(t){case`set`:++n,c=f();break;case`if`:++n,c=p(),r(E.OpenStatement,`Expected {% token`),i(`endif`),r(E.CloseStatement,`Expected %} token`);break;case`macro`:++n,c=m(),r(E.OpenStatement,`Expected {% token`),i(`endmacro`),r(E.CloseStatement,`Expected %} token`);break;case`for`:++n,c=g(),r(E.OpenStatement,`Expected {% token`),i(`endfor`),r(E.CloseStatement,`Expected %} token`);break;case`call`:{++n;let e=null;o(E.OpenParen)&&(e=S());let t=T();if(t.type!==`Identifier`)throw SyntaxError(`Expected identifier following call statement`);let l=S();r(E.CloseStatement,`Expected closing statement token`);let u=[];for(;!s(`endcall`);)u.push(a());r(E.OpenStatement,`Expected '{%'`),i(`endcall`),r(E.CloseStatement,`Expected closing statement token`),c=new Re(new Ce(t,l),e,u);break}case`break`:++n,r(E.CloseStatement,`Expected closing statement token`),c=new _e;break;case`continue`:++n,r(E.CloseStatement,`Expected closing statement token`),c=new ve;break;case`filter`:{++n;let e=T();e instanceof j&&o(E.OpenParen)&&(e=x(e)),r(E.CloseStatement,`Expected closing statement token`);let t=[];for(;!s(`endfilter`);)t.push(a());r(E.OpenStatement,`Expected '{%'`),i(`endfilter`),r(E.CloseStatement,`Expected '%}'`),c=new je(e,t);break}default:throw SyntaxError(`Unknown statement type: ${t}`)}return c}function d(){r(E.OpenExpression,`Expected opening expression token`);let e=_();return r(E.CloseExpression,`Expected closing expression token`),e}function f(){let e=h(),t=null,c=[];if(o(E.Equals))++n,t=h();else{for(r(E.CloseStatement,`Expected %} token`);!s(`endset`);)c.push(a());r(E.OpenStatement,`Expected {% token`),i(`endset`)}return r(E.CloseStatement,`Expected closing statement token`),new ye(e,t,c)}function p(){let e=_();r(E.CloseStatement,`Expected closing statement token`);let t=[],i=[];for(;!s(`elif`,`else`,`endif`);)t.push(a());if(s(`elif`)){++n,++n;let e=p();i.push(e)}else if(s(`else`))for(++n,++n,r(E.CloseStatement,`Expected closing statement token`);!s(`endif`);)i.push(a());return new he(e,t,i)}function m(){let e=T();if(e.type!==`Identifier`)throw SyntaxError(`Expected identifier following macro statement`);let t=S();r(E.CloseStatement,`Expected closing statement token`);let n=[];for(;!s(`endmacro`);)n.push(a());return new be(e,t,n)}function h(e=!1){let t=e?T:_,r=[t()],i=o(E.Comma);for(;i&&(++n,r.push(t()),o(E.Comma)););return i?new Oe(r):r[0]}function g(){let e=h(!0);if(!(e instanceof j||e instanceof Oe))throw SyntaxError(`Expected identifier/tuple for the loop variable, got ${e.type} instead`);if(!c(`in`))throw SyntaxError("Expected `in` keyword following loop variable");++n;let t=_();r(E.CloseStatement,`Expected closing statement token`);let i=[];for(;!s(`endfor`,`else`);)i.push(a());let o=[];if(s(`else`))for(++n,++n,r(E.CloseStatement,`Expected closing statement token`);!s(`endfor`);)o.push(a());return new ge(e,t,i,o)}function _(){return v()}function v(){let e=y();if(c(`if`)){++n;let t=y();return c(`else`)?(++n,new ze(t,e,v())):new Me(e,t)}return e}function y(){let t=b();for(;c(`or`);){let r=e[n];++n;let i=b();t=new N(r,t,i)}return t}function b(){let t=ee();for(;c(`and`);){let r=e[n];++n;let i=ee();t=new N(r,t,i)}return t}function ee(){let t;for(;c(`not`);){let r=e[n];++n,t=new Pe(r,ee())}return t??te()}function te(){let t=ne();for(;;){let r;if(c(`not`,`in`))r=new D(`not in`,E.Identifier),n+=2;else if(c(`in`))r=e[n++];else if(o(E.ComparisonBinaryOperator))r=e[n++];else break;let i=ne();t=new N(r,t,i)}return t}function ne(){let t=w();for(;o(E.AdditiveBinaryOperator);){let r=e[n];++n;let i=w();t=new N(r,t,i)}return t}function re(){let e=ae(T());return o(E.OpenParen)?x(e):e}function x(e){let t=new Ce(e,S());return t=ae(t),o(E.OpenParen)&&(t=x(t)),t}function S(){r(E.OpenParen,`Expected opening parenthesis for arguments list`);let e=C();return r(E.CloseParen,`Expected closing parenthesis for arguments list`),e}function C(){let t=[];for(;!o(E.CloseParen);){let r;if(e[n].type===E.MultiplicativeBinaryOperator&&e[n].value===`*`)++n,r=new Le(_());else if(r=_(),o(E.Equals)){if(++n,!(r instanceof j))throw SyntaxError(`Expected identifier for keyword argument`);let e=_();r=new Ie(r,e)}t.push(r),o(E.Comma)&&++n}return t}function ie(){let e=[],t=!1;for(;!o(E.CloseSquareBracket);)o(E.Colon)?(e.push(void 0),++n,t=!0):(e.push(_()),o(E.Colon)&&(++n,t=!0));if(e.length===0)throw SyntaxError(`Expected at least one argument for member/slice expression`);if(t){if(e.length>3)throw SyntaxError(`Expected 0-3 arguments for slice expression`);return new Fe(...e)}return e[0]}function ae(t){for(;o(E.Dot)||o(E.OpenSquareBracket);){let i=e[n];++n;let a,o=i.type===E.OpenSquareBracket;if(o)a=ie(),r(E.CloseSquareBracket,`Expected closing square bracket`);else if(a=T(),a.type!==`Identifier`)throw SyntaxError(`Expected identifier following dot operator`);t=new Se(t,a,o)}return t}function w(){let t=oe();for(;o(E.MultiplicativeBinaryOperator);){let r=e[n++],i=oe();t=new N(r,t,i)}return t}function oe(){let e=se();for(;c(`is`);){++n;let t=c(`not`);t&&++n;let r=T();if(!(r instanceof j))throw SyntaxError(`Expected identifier for the test`);e=new Ne(e,t,r)}return e}function se(){let e=re();for(;o(E.Pipe);){++n;let t=T();if(!(t instanceof j))throw SyntaxError(`Expected identifier for the filter`);o(E.OpenParen)&&(t=x(t)),e=new Ae(e,t)}return e}function T(){let t=e[n++];switch(t.type){case E.NumericLiteral:{let e=t.value;return e.includes(`.`)?new Te(Number(e)):new we(Number(e))}case E.StringLiteral:{let r=t.value;for(;o(E.StringLiteral);)r+=e[n++].value;return new Ee(r)}case E.Identifier:return new j(t.value);case E.OpenParen:{let e=h();return r(E.CloseParen,"Expected closing parenthesis, got ${tokens[current].type} instead."),e}case E.OpenSquareBracket:{let e=[];for(;!o(E.CloseSquareBracket);)e.push(_()),o(E.Comma)&&++n;return++n,new De(e)}case E.OpenCurlyBracket:{let e=new Map;for(;!o(E.CloseCurlyBracket);){let t=_();r(E.Colon,`Expected colon between key and value in object literal`);let i=_();e.set(t,i),o(E.Comma)&&++n}return++n,new ke(e)}default:throw SyntaxError(`Unexpected token: ${t.type}`)}}for(;n<e.length;)t.body.push(a());return t}function Ve(e,t,n=1){if(t===void 0&&(t=e,e=0),n===0)throw Error(`range() step must not be zero`);let r=[];if(n>0)for(let i=e;i<t;i+=n)r.push(i);else for(let i=e;i>t;i+=n)r.push(i);return r}function He(e,t,n,r=1){let i=Math.sign(r);i>=0?(t=(t??=0)<0?Math.max(e.length+t,0):Math.min(t,e.length),n=(n??=e.length)<0?Math.max(e.length+n,0):Math.min(n,e.length)):(t=(t??=e.length-1)<0?Math.max(e.length+t,-1):Math.min(t,e.length-1),n=(n??=-1)<-1?Math.max(e.length+n,-1):Math.min(n,e.length-1));let a=[];for(let o=t;i*o<i*n;o+=r)a.push(e[o]);return a}function Ue(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}function We(e){return Ge(new Date,e)}function Ge(e,t){let n=new Intl.DateTimeFormat(void 0,{month:`long`}),r=new Intl.DateTimeFormat(void 0,{month:`short`}),i=e=>e<10?`0`+e:e.toString();return t.replace(/%[YmdbBHM%]/g,t=>{switch(t){case`%Y`:return e.getFullYear().toString();case`%m`:return i(e.getMonth()+1);case`%d`:return i(e.getDate());case`%b`:return r.format(e);case`%B`:return n.format(e);case`%H`:return i(e.getHours());case`%M`:return i(e.getMinutes());case`%%`:return`%`;default:return t}})}function Ke(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function qe(e,t,n,r){if(r===0)return e;let i=r==null||r<0?1/0:r,a=t.length===0?RegExp(`(?=)`,`gu`):new RegExp(Ke(t),`gu`);return e.replaceAll(a,e=>i>0?(--i,n):e)}var Je=class extends Error{},Ye=class extends Error{},Xe=new Map,P=class{type=`RuntimeValue`;value;get builtins(){return Xe}constructor(e=void 0){this.value=e}__bool__(){return new R(!!this.value)}toString(){return String(this.value)}},F=class extends P{type=`IntegerValue`},I=class extends P{type=`FloatValue`;toString(){return this.value%1==0?this.value.toFixed(1):this.value.toString()}},L=class extends P{type=`StringValue`;_builtins;get builtins(){return this._builtins??=new Map([[`upper`,new U(()=>new L(this.value.toUpperCase()))],[`lower`,new U(()=>new L(this.value.toLowerCase()))],[`strip`,new U(()=>new L(this.value.trim()))],[`title`,new U(()=>new L(Ue(this.value)))],[`capitalize`,new U(()=>new L(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],[`length`,new F(this.value.length)],[`rstrip`,new U(()=>new L(this.value.trimEnd()))],[`lstrip`,new U(()=>new L(this.value.trimStart()))],[`startswith`,new U(e=>{if(e.length===0)throw Error(`startswith() requires at least one argument`);let t=e[0];if(t instanceof L)return new R(this.value.startsWith(t.value));if(t instanceof H){for(let e of t.value){if(!(e instanceof L))throw Error(`startswith() tuple elements must be strings`);if(this.value.startsWith(e.value))return new R(!0)}return new R(!1)}throw Error(`startswith() argument must be a string or tuple of strings`)})],[`endswith`,new U(e=>{if(e.length===0)throw Error(`endswith() requires at least one argument`);let t=e[0];if(t instanceof L)return new R(this.value.endsWith(t.value));if(t instanceof H){for(let e of t.value){if(!(e instanceof L))throw Error(`endswith() tuple elements must be strings`);if(this.value.endsWith(e.value))return new R(!0)}return new R(!1)}throw Error(`endswith() argument must be a string or tuple of strings`)})],[`split`,new U(e=>{let t=e[0]??new W;if(!(t instanceof L||t instanceof W))throw Error(`sep argument must be a string or null`);let n=e[1]??new F(-1);if(!(n instanceof F))throw Error(`maxsplit argument must be a number`);let r=[];if(t instanceof W){let e=this.value.trimStart();for(let{0:t,index:i}of e.matchAll(/\S+/g)){if(n.value!==-1&&r.length>=n.value&&i!==void 0){r.push(t+e.slice(i+t.length));break}r.push(t)}}else{if(t.value===``)throw Error(`empty separator`);r=this.value.split(t.value),n.value!==-1&&r.length>n.value&&r.push(r.splice(n.value).join(t.value))}return new H(r.map(e=>new L(e)))})],[`replace`,new U(e=>{if(e.length<2)throw Error(`replace() requires at least two arguments`);let t=e[0],n=e[1];if(!(t instanceof L&&n instanceof L))throw Error(`replace() arguments must be strings`);let r;if(r=e.length>2?e[2].type===`KeywordArgumentsValue`?e[2].value.get(`count`)??new W:e[2]:new W,!(r instanceof F||r instanceof W))throw Error(`replace() count argument must be a number or null`);return new L(qe(this.value,t.value,n.value,r.value))})]])}},R=class extends P{type=`BooleanValue`},Ze=/[\x7f-\uffff]/g;function Qe(e){return e.replace(Ze,e=>`\\u`+e.charCodeAt(0).toString(16).padStart(4,`0`))}function z(e,t={},n=0,r=!0){let{indent:i=null,ensureAscii:a=!1,separators:o=null,sortKeys:s=!1}=t,c,l;switch(o?[c,l]=o:i?(c=`,`,l=`: `):(c=`, `,l=`: `),e.type){case`NullValue`:return`null`;case`UndefinedValue`:return r?`null`:`undefined`;case`IntegerValue`:case`FloatValue`:case`BooleanValue`:return JSON.stringify(e.value);case`StringValue`:{let t=JSON.stringify(e.value);return a&&(t=Qe(t)),t}case`ArrayValue`:case`ObjectValue`:{let o=i?` `.repeat(i):``,u=`
6
+ `+o.repeat(n),d=u+o;if(e.type===`ArrayValue`){let a=e.value.map(e=>z(e,t,n+1,r));return i?`[${d}${a.join(`${c}${d}`)}${u}]`:`[${a.join(c)}]`}else{let o=Array.from(e.value.entries());s&&(o=o.sort(([e],[t])=>e.localeCompare(t)));let f=o.map(([e,o])=>{let s=JSON.stringify(e);a&&(s=Qe(s));let c=`${s}${l}${z(o,t,n+1,r)}`;return i?`${d}${c}`:c});return i?`{${f.join(c)}${u}}`:`{${f.join(c)}}`}}default:throw Error(`Cannot convert to JSON: ${e.type}`)}}var B=class extends P{type=`ObjectValue`;_builtins;__bool__(){return new R(this.value.size>0)}get builtins(){return this._builtins??=new Map([[`get`,new U(([e,t])=>{if(!(e instanceof L))throw Error(`Object key must be a string: got ${e.type}`);return this.value.get(e.value)??t??new W})],[`items`,new U(()=>this.items())],[`keys`,new U(()=>this.keys())],[`values`,new U(()=>this.values())],[`dictsort`,new U(e=>{let t=new Map,n=e.filter(e=>e instanceof V?(t=e.value,!1):!0),r=n.at(0)??t.get(`case_sensitive`)??new R(!1);if(!(r instanceof R))throw Error(`case_sensitive must be a boolean`);let i=n.at(1)??t.get(`by`)??new L(`key`);if(!(i instanceof L))throw Error(`by must be a string`);if(![`key`,`value`].includes(i.value))throw Error(`by must be either 'key' or 'value'`);let a=n.at(2)??t.get(`reverse`)??new R(!1);if(!(a instanceof R))throw Error(`reverse must be a boolean`);return new H(Array.from(this.value.entries()).map(([e,t])=>new H([new L(e),t])).sort((e,t)=>{let n=i.value===`key`?0:1,o=e.value[n],s=t.value[n],c=rt(o,s,r.value);return a.value?-c:c}))})]])}items(){return new H(Array.from(this.value.entries()).map(([e,t])=>new H([new L(e),t])))}keys(){return new H(Array.from(this.value.keys()).map(e=>new L(e)))}values(){return new H(Array.from(this.value.values()))}toString(){return z(this,{},0,!1)}},V=class extends B{type=`KeywordArgumentsValue`},H=class extends P{type=`ArrayValue`;_builtins;get builtins(){return this._builtins??=new Map([[`length`,new F(this.value.length)]])}__bool__(){return new R(this.value.length>0)}toString(){return z(this,{},0,!1)}},$e=class extends H{type=`TupleValue`},U=class extends P{type=`FunctionValue`},W=class extends P{type=`NullValue`},G=class extends P{type=`UndefinedValue`},et=class{constructor(e){this.parent=e}variables=new Map([[`namespace`,new U(e=>{if(e.length===0)return new B(new Map);if(e.length!==1||!(e[0]instanceof B))throw Error("`namespace` expects either zero arguments or a single object argument");return e[0]})]]);tests=et.TESTS;set(e,t){return this.declareVariable(e,at(t))}declareVariable(e,t){if(this.variables.has(e))throw SyntaxError(`Variable already declared: ${e}`);return this.variables.set(e,t),t}setVariable(e,t){return this.variables.set(e,t),t}resolve(e){if(this.variables.has(e))return this;if(this.parent)return this.parent.resolve(e);throw Error(`Unknown variable: ${e}`)}lookupVariable(e){try{return this.resolve(e).variables.get(e)??new G}catch{return new G}}},K=et;T(K,`TESTS`,new Map([[`boolean`,e=>e.type===`BooleanValue`],[`callable`,e=>e instanceof U],[`odd`,e=>{if(!(e instanceof F))throw Error(`cannot odd on ${e.type}`);return e.value%2!=0}],[`even`,e=>{if(!(e instanceof F))throw Error(`cannot even on ${e.type}`);return e.value%2==0}],[`false`,e=>e.type===`BooleanValue`&&!e.value],[`true`,e=>e.type===`BooleanValue`&&e.value],[`none`,e=>e.type===`NullValue`],[`string`,e=>e.type===`StringValue`],[`number`,e=>e instanceof F||e instanceof I],[`integer`,e=>e instanceof F],[`iterable`,e=>e.type===`ArrayValue`||e.type===`StringValue`],[`mapping`,e=>e instanceof B],[`sequence`,e=>e instanceof H||e instanceof B||e instanceof L],[`lower`,e=>{let t=e.value;return e.type===`StringValue`&&t===t.toLowerCase()}],[`upper`,e=>{let t=e.value;return e.type===`StringValue`&&t===t.toUpperCase()}],[`none`,e=>e.type===`NullValue`],[`defined`,e=>e.type!==`UndefinedValue`],[`undefined`,e=>e.type===`UndefinedValue`],[`equalto`,(e,t)=>e.value===t.value],[`eq`,(e,t)=>e.value===t.value]]));function tt(e){e.set(`false`,!1),e.set(`true`,!0),e.set(`none`,null),e.set(`raise_exception`,e=>{throw Error(e)}),e.set(`range`,Ve),e.set(`strftime_now`,We),e.set(`True`,!0),e.set(`False`,!1),e.set(`None`,null)}function nt(e,t){let n=t.split(`.`),r=e;for(let e of n)if(r instanceof B)r=r.value.get(e)??new G;else if(r instanceof H){let t=parseInt(e,10);if(!isNaN(t)&&t>=0&&t<r.value.length)r=r.value[t];else return new G}else return new G;return r}function rt(e,t,n=!1){if(e instanceof W&&t instanceof W)return 0;if(e instanceof W||t instanceof W)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(e instanceof G&&t instanceof G)return 0;if(e instanceof G||t instanceof G)throw Error(`Cannot compare ${e.type} with ${t.type}`);let r=e=>e instanceof F||e instanceof I||e instanceof R,i=e=>e instanceof R?+!!e.value:e.value;if(r(e)&&r(t)){let n=i(e),r=i(t);return n<r?-1:+(n>r)}if(e.type!==t.type)throw Error(`Cannot compare different types: ${e.type} and ${t.type}`);switch(e.type){case`StringValue`:{let r=e.value,i=t.value;return n||(r=r.toLowerCase(),i=i.toLowerCase()),r<i?-1:+(r>i)}default:throw Error(`Cannot compare type: ${e.type}`)}}var it=class{global;constructor(e){this.global=e??new K}run(e){return this.evaluate(e,this.global)}evaluateBinaryExpression(e,t){let n=this.evaluate(e.left,t);switch(e.operator.value){case`and`:return n.__bool__().value?this.evaluate(e.right,t):n;case`or`:return n.__bool__().value?n:this.evaluate(e.right,t)}let r=this.evaluate(e.right,t);switch(e.operator.value){case`==`:return new R(n.value==r.value);case`!=`:return new R(n.value!=r.value)}if(n instanceof G||r instanceof G){if(r instanceof G&&[`in`,`not in`].includes(e.operator.value))return new R(e.operator.value===`not in`);throw Error(`Cannot perform operation ${e.operator.value} on undefined values`)}else if(n instanceof W||r instanceof W)throw Error(`Cannot perform operation on null values`);else if(e.operator.value===`~`)return new L(n.value.toString()+r.value.toString());else if((n instanceof F||n instanceof I)&&(r instanceof F||r instanceof I)){let t=n.value,i=r.value;switch(e.operator.value){case`+`:case`-`:case`*`:{let a=e.operator.value===`+`?t+i:e.operator.value===`-`?t-i:t*i;return n instanceof I||r instanceof I?new I(a):new F(a)}case`/`:return new I(t/i);case`%`:{let e=t%i;return n instanceof I||r instanceof I?new I(e):new F(e)}case`<`:return new R(t<i);case`>`:return new R(t>i);case`>=`:return new R(t>=i);case`<=`:return new R(t<=i)}}else if(n instanceof H&&r instanceof H)switch(e.operator.value){case`+`:return new H(n.value.concat(r.value))}else if(r instanceof H){let t=r.value.find(e=>e.value===n.value)!==void 0;switch(e.operator.value){case`in`:return new R(t);case`not in`:return new R(!t)}}if(n instanceof L||r instanceof L)switch(e.operator.value){case`+`:return new L(n.value.toString()+r.value.toString())}if(n instanceof L&&r instanceof L)switch(e.operator.value){case`in`:return new R(r.value.includes(n.value));case`not in`:return new R(!r.value.includes(n.value))}if(n instanceof L&&r instanceof B)switch(e.operator.value){case`in`:return new R(r.value.has(n.value));case`not in`:return new R(!r.value.has(n.value))}throw SyntaxError(`Unknown operator "${e.operator.value}" between ${n.type} and ${r.type}`)}evaluateArguments(e,t){let n=[],r=new Map;for(let i of e)if(i.type===`SpreadExpression`){let e=i,r=this.evaluate(e.argument,t);if(!(r instanceof H))throw Error(`Cannot unpack non-iterable type: ${r.type}`);for(let e of r.value)n.push(e)}else if(i.type===`KeywordArgumentExpression`){let e=i;r.set(e.key.value,this.evaluate(e.value,t))}else{if(r.size>0)throw Error(`Positional arguments must come before keyword arguments`);n.push(this.evaluate(i,t))}return[n,r]}applyFilter(e,t,n){if(t.type===`Identifier`){let r=t;if(r.value===`safe`)return e;if(r.value===`tojson`)return new L(z(e,{}));if(e instanceof H)switch(r.value){case`list`:return e;case`first`:return e.value[0];case`last`:return e.value[e.value.length-1];case`length`:return new F(e.value.length);case`reverse`:return new H(e.value.slice().reverse());case`sort`:return new H(e.value.slice().sort((e,t)=>rt(e,t,!1)));case`join`:return new L(e.value.map(e=>e.value).join(``));case`string`:return new L(z(e,{},0,!1));case`unique`:{let t=new Set,n=[];for(let r of e.value)t.has(r.value)||(t.add(r.value),n.push(r));return new H(n)}default:throw Error(`Unknown ArrayValue filter: ${r.value}`)}else if(e instanceof L)switch(r.value){case`length`:case`upper`:case`lower`:case`title`:case`capitalize`:{let t=e.builtins.get(r.value);if(t instanceof U)return t.value([],n);if(t instanceof F)return t;throw Error(`Unknown StringValue filter: ${r.value}`)}case`trim`:return new L(e.value.trim());case`indent`:return new L(e.value.split(`
7
7
  `).map((e,t)=>t===0||e.length===0?e:` `+e).join(`
8
- `));case`join`:case`string`:return e;case`int`:{let t=parseInt(e.value,10);return new F(isNaN(t)?0:t)}case`float`:{let t=parseFloat(e.value);return new I(isNaN(t)?0:t)}default:throw Error(`Unknown StringValue filter: ${r.value}`)}else if(e instanceof F||e instanceof I)switch(r.value){case`abs`:return e instanceof F?new F(Math.abs(e.value)):new I(Math.abs(e.value));case`int`:return new F(Math.floor(e.value));case`float`:return new I(e.value);case`string`:return new L(e.toString());default:throw Error(`Unknown NumericValue filter: ${r.value}`)}else if(e instanceof B)switch(r.value){case`items`:return new H(Array.from(e.value.entries()).map(([e,t])=>new H([new L(e),t])));case`length`:return new F(e.value.size);default:{let t=e.builtins.get(r.value);if(t)return t instanceof U?t.value([],n):t;throw Error(`Unknown ObjectValue filter: ${r.value}`)}}else if(e instanceof R)switch(r.value){case`bool`:return new R(e.value);case`int`:return new F(+!!e.value);case`float`:return new I(+!!e.value);case`string`:return new L(e.value?`true`:`false`);default:throw Error(`Unknown BooleanValue filter: ${r.value}`)}throw Error(`Cannot apply filter "${r.value}" to type: ${e.type}`)}else if(t.type===`CallExpression`){let r=t;if(r.callee.type!==`Identifier`)throw Error(`Unknown filter: ${r.callee.type}`);let i=r.callee.value;if(i===`tojson`){let[,t]=this.evaluateArguments(r.args,n),i=t.get(`indent`)??new W;if(!(i instanceof F||i instanceof W))throw Error(`If set, indent must be a number`);let a=t.get(`ensure_ascii`)??new R(!1);if(!(a instanceof R))throw Error(`If set, ensure_ascii must be a boolean`);let o=t.get(`sort_keys`)??new R(!1);if(!(o instanceof R))throw Error(`If set, sort_keys must be a boolean`);let s=t.get(`separators`)??new W,c=null;if(s instanceof H||s instanceof it){if(s.value.length!==2)throw Error(`separators must be a tuple of two strings`);let[e,t]=s.value;if(!(e instanceof L)||!(t instanceof L))throw Error(`separators must be a tuple of two strings`);c=[e.value,t.value]}else if(!(s instanceof W))throw Error(`If set, separators must be a tuple of two strings`);return new L(z(e,{indent:i.value,ensureAscii:a.value,sortKeys:o.value,separators:c}))}else if(i===`join`){let t;if(e instanceof L)t=Array.from(e.value);else if(e instanceof H)t=e.value.map(e=>e.value);else throw Error(`Cannot apply filter "${i}" to type: ${e.type}`);let[a,o]=this.evaluateArguments(r.args,n),s=a.at(0)??o.get(`separator`)??new L(``);if(!(s instanceof L))throw Error(`separator must be a string`);return new L(t.join(s.value))}else if(i===`int`||i===`float`){let[t,a]=this.evaluateArguments(r.args,n),o=t.at(0)??a.get(`default`)??(i===`int`?new F(0):new I(0));if(e instanceof L){let t=i===`int`?parseInt(e.value,10):parseFloat(e.value);return isNaN(t)?o:i===`int`?new F(t):new I(t)}else if(e instanceof F||e instanceof I)return e;else if(e instanceof R)return i===`int`?new F(+!!e.value):new I(+!!e.value);else throw Error(`Cannot apply filter "${i}" to type: ${e.type}`)}else if(i==="default"){let[t,i]=this.evaluateArguments(r.args,n),a=t[0]??new L(``),o=t[1]??i.get(`boolean`)??new R(!1);if(!(o instanceof R))throw Error("`default` filter flag must be a boolean");return e instanceof G||o.value&&!e.__bool__().value?a:e}if(e instanceof H){switch(i){case`sort`:{let[t,i]=this.evaluateArguments(r.args,n),a=t.at(0)??i.get(`reverse`)??new R(!1);if(!(a instanceof R))throw Error(`reverse must be a boolean`);let o=t.at(1)??i.get(`case_sensitive`)??new R(!1);if(!(o instanceof R))throw Error(`case_sensitive must be a boolean`);let s=t.at(2)??i.get(`attribute`)??new W;if(!(s instanceof L||s instanceof F||s instanceof W))throw Error(`attribute must be a string, integer, or null`);let c=e=>s instanceof W?e:st(e,s instanceof F?String(s.value):s.value);return new H(e.value.slice().sort((e,t)=>{let n=ct(c(e),c(t),o.value);return a.value?-n:n}))}case`selectattr`:case`rejectattr`:{let t=i===`selectattr`;if(e.value.some(e=>!(e instanceof B)))throw Error(`\`${i}\` can only be applied to array of objects`);if(r.args.some(e=>e.type!==`StringLiteral`))throw Error(`arguments of \`${i}\` must be strings`);let[a,o,s]=r.args.map(e=>this.evaluate(e,n)),c;if(o){let e=n.tests.get(o.value);if(!e)throw Error(`Unknown test: ${o.value}`);c=e}else c=(...e)=>e[0].__bool__().value;return new H(e.value.filter(e=>{let n=e.value.get(a.value),r=n?c(n,s):!1;return t?r:!r}))}case`map`:{let[,t]=this.evaluateArguments(r.args,n);if(t.has(`attribute`)){let n=t.get(`attribute`);if(!(n instanceof L))throw Error(`attribute must be a string`);let r=t.get(`default`);return new H(e.value.map(e=>{if(!(e instanceof B))throw Error(`items in map must be an object`);let t=st(e,n.value);return t instanceof G?r??new G:t}))}else throw Error("`map` expressions without `attribute` set are not currently supported.")}}throw Error(`Unknown ArrayValue filter: ${i}`)}else if(e instanceof L){switch(i){case`indent`:{let[t,i]=this.evaluateArguments(r.args,n),a=t.at(0)??i.get(`width`)??new F(4);if(!(a instanceof F))throw Error(`width must be a number`);let o=t.at(1)??i.get(`first`)??new R(!1),s=t.at(2)??i.get(`blank`)??new R(!1),c=e.value.split(`
8
+ `));case`join`:case`string`:return e;case`int`:{let t=parseInt(e.value,10);return new F(isNaN(t)?0:t)}case`float`:{let t=parseFloat(e.value);return new I(isNaN(t)?0:t)}default:throw Error(`Unknown StringValue filter: ${r.value}`)}else if(e instanceof F||e instanceof I)switch(r.value){case`abs`:return e instanceof F?new F(Math.abs(e.value)):new I(Math.abs(e.value));case`int`:return new F(Math.floor(e.value));case`float`:return new I(e.value);case`string`:return new L(e.toString());default:throw Error(`Unknown NumericValue filter: ${r.value}`)}else if(e instanceof B)switch(r.value){case`items`:return new H(Array.from(e.value.entries()).map(([e,t])=>new H([new L(e),t])));case`length`:return new F(e.value.size);default:{let t=e.builtins.get(r.value);if(t)return t instanceof U?t.value([],n):t;throw Error(`Unknown ObjectValue filter: ${r.value}`)}}else if(e instanceof R)switch(r.value){case`bool`:return new R(e.value);case`int`:return new F(+!!e.value);case`float`:return new I(+!!e.value);case`string`:return new L(e.value?`true`:`false`);default:throw Error(`Unknown BooleanValue filter: ${r.value}`)}throw Error(`Cannot apply filter "${r.value}" to type: ${e.type}`)}else if(t.type===`CallExpression`){let r=t;if(r.callee.type!==`Identifier`)throw Error(`Unknown filter: ${r.callee.type}`);let i=r.callee.value;if(i===`tojson`){let[,t]=this.evaluateArguments(r.args,n),i=t.get(`indent`)??new W;if(!(i instanceof F||i instanceof W))throw Error(`If set, indent must be a number`);let a=t.get(`ensure_ascii`)??new R(!1);if(!(a instanceof R))throw Error(`If set, ensure_ascii must be a boolean`);let o=t.get(`sort_keys`)??new R(!1);if(!(o instanceof R))throw Error(`If set, sort_keys must be a boolean`);let s=t.get(`separators`)??new W,c=null;if(s instanceof H||s instanceof $e){if(s.value.length!==2)throw Error(`separators must be a tuple of two strings`);let[e,t]=s.value;if(!(e instanceof L)||!(t instanceof L))throw Error(`separators must be a tuple of two strings`);c=[e.value,t.value]}else if(!(s instanceof W))throw Error(`If set, separators must be a tuple of two strings`);return new L(z(e,{indent:i.value,ensureAscii:a.value,sortKeys:o.value,separators:c}))}else if(i===`join`){let t;if(e instanceof L)t=Array.from(e.value);else if(e instanceof H)t=e.value.map(e=>e.value);else throw Error(`Cannot apply filter "${i}" to type: ${e.type}`);let[a,o]=this.evaluateArguments(r.args,n),s=a.at(0)??o.get(`separator`)??new L(``);if(!(s instanceof L))throw Error(`separator must be a string`);return new L(t.join(s.value))}else if(i===`int`||i===`float`){let[t,a]=this.evaluateArguments(r.args,n),o=t.at(0)??a.get(`default`)??(i===`int`?new F(0):new I(0));if(e instanceof L){let t=i===`int`?parseInt(e.value,10):parseFloat(e.value);return isNaN(t)?o:i===`int`?new F(t):new I(t)}else if(e instanceof F||e instanceof I)return e;else if(e instanceof R)return i===`int`?new F(+!!e.value):new I(+!!e.value);else throw Error(`Cannot apply filter "${i}" to type: ${e.type}`)}else if(i==="default"){let[t,i]=this.evaluateArguments(r.args,n),a=t[0]??new L(``),o=t[1]??i.get(`boolean`)??new R(!1);if(!(o instanceof R))throw Error("`default` filter flag must be a boolean");return e instanceof G||o.value&&!e.__bool__().value?a:e}if(e instanceof H){switch(i){case`sort`:{let[t,i]=this.evaluateArguments(r.args,n),a=t.at(0)??i.get(`reverse`)??new R(!1);if(!(a instanceof R))throw Error(`reverse must be a boolean`);let o=t.at(1)??i.get(`case_sensitive`)??new R(!1);if(!(o instanceof R))throw Error(`case_sensitive must be a boolean`);let s=t.at(2)??i.get(`attribute`)??new W;if(!(s instanceof L||s instanceof F||s instanceof W))throw Error(`attribute must be a string, integer, or null`);let c=e=>s instanceof W?e:nt(e,s instanceof F?String(s.value):s.value);return new H(e.value.slice().sort((e,t)=>{let n=rt(c(e),c(t),o.value);return a.value?-n:n}))}case`selectattr`:case`rejectattr`:{let t=i===`selectattr`;if(e.value.some(e=>!(e instanceof B)))throw Error(`\`${i}\` can only be applied to array of objects`);if(r.args.some(e=>e.type!==`StringLiteral`))throw Error(`arguments of \`${i}\` must be strings`);let[a,o,s]=r.args.map(e=>this.evaluate(e,n)),c;if(o){let e=n.tests.get(o.value);if(!e)throw Error(`Unknown test: ${o.value}`);c=e}else c=(...e)=>e[0].__bool__().value;return new H(e.value.filter(e=>{let n=e.value.get(a.value),r=n?c(n,s):!1;return t?r:!r}))}case`map`:{let[,t]=this.evaluateArguments(r.args,n);if(t.has(`attribute`)){let n=t.get(`attribute`);if(!(n instanceof L))throw Error(`attribute must be a string`);let r=t.get(`default`);return new H(e.value.map(e=>{if(!(e instanceof B))throw Error(`items in map must be an object`);let t=nt(e,n.value);return t instanceof G?r??new G:t}))}else throw Error("`map` expressions without `attribute` set are not currently supported.")}}throw Error(`Unknown ArrayValue filter: ${i}`)}else if(e instanceof L){switch(i){case`indent`:{let[t,i]=this.evaluateArguments(r.args,n),a=t.at(0)??i.get(`width`)??new F(4);if(!(a instanceof F))throw Error(`width must be a number`);let o=t.at(1)??i.get(`first`)??new R(!1),s=t.at(2)??i.get(`blank`)??new R(!1),c=e.value.split(`
9
9
  `),l=` `.repeat(a.value);return new L(c.map((e,t)=>!o.value&&t===0||!s.value&&e.length===0?e:l+e).join(`
10
- `))}case`replace`:{let t=e.builtins.get(`replace`);if(!(t instanceof U))throw Error(`replace filter not available`);let[i,a]=this.evaluateArguments(r.args,n);return t.value([...i,new V(a)],n)}}throw Error(`Unknown StringValue filter: ${i}`)}else if(e instanceof B){let t=e.builtins.get(i);if(t&&t instanceof U){let[e,i]=this.evaluateArguments(r.args,n);return i.size>0&&e.push(new V(i)),t.value(e,n)}throw Error(`Unknown ObjectValue filter: ${i}`)}else throw Error(`Cannot apply filter "${i}" to type: ${e.type}`)}throw Error(`Unknown filter: ${t.type}`)}evaluateFilterExpression(e,t){let n=this.evaluate(e.operand,t);return this.applyFilter(n,e.filter,t)}evaluateTestExpression(e,t){let n=this.evaluate(e.operand,t),r=t.tests.get(e.test.value);if(!r)throw Error(`Unknown test: ${e.test.value}`);let i=r(n);return new R(e.negate?!i:i)}evaluateSelectExpression(e,t){return this.evaluate(e.test,t).__bool__().value?this.evaluate(e.lhs,t):new G}evaluateUnaryExpression(e,t){let n=this.evaluate(e.argument,t);switch(e.operator.value){case`not`:return new R(!n.value);default:throw SyntaxError(`Unknown operator: ${e.operator.value}`)}}evaluateTernaryExpression(e,t){return this.evaluate(e.condition,t).__bool__().value?this.evaluate(e.trueExpr,t):this.evaluate(e.falseExpr,t)}evalProgram(e,t){return this.evaluateBlock(e.body,t)}evaluateBlock(e,t){let n=``;for(let r of e){let e=this.evaluate(r,t);e.type!==`NullValue`&&e.type!==`UndefinedValue`&&(n+=e.toString())}return new L(n)}evaluateIdentifier(e,t){return t.lookupVariable(e.value)}evaluateCallExpression(e,t){let[n,r]=this.evaluateArguments(e.args,t);r.size>0&&n.push(new V(r));let i=this.evaluate(e.callee,t);if(i.type!==`FunctionValue`)throw Error(`Cannot call something that is not a function: got ${i.type}`);return i.value(n,t)}evaluateSliceExpression(e,t,n){if(!(e instanceof H||e instanceof L))throw Error(`Slice object must be an array or string`);let r=this.evaluate(t.start,n),i=this.evaluate(t.stop,n),a=this.evaluate(t.step,n);if(!(r instanceof F||r instanceof G))throw Error(`Slice start must be numeric or undefined`);if(!(i instanceof F||i instanceof G))throw Error(`Slice stop must be numeric or undefined`);if(!(a instanceof F||a instanceof G))throw Error(`Slice step must be numeric or undefined`);return e instanceof H?new H(qe(e.value,r.value,i.value,a.value)):new L(qe(Array.from(e.value),r.value,i.value,a.value).join(``))}evaluateMemberExpression(e,t){let n=this.evaluate(e.object,t),r;if(e.computed){if(e.property.type===`SliceExpression`)return this.evaluateSliceExpression(n,e.property,t);r=this.evaluate(e.property,t)}else r=new L(e.property.value);let i;if(n instanceof B){if(!(r instanceof L))throw Error(`Cannot access property with non-string: got ${r.type}`);i=n.value.get(r.value)??n.builtins.get(r.value)}else if(n instanceof H||n instanceof L)if(r instanceof F)i=n.value.at(r.value),n instanceof L&&(i=new L(n.value.at(r.value)));else if(r instanceof L)i=n.builtins.get(r.value);else throw Error(`Cannot access property with non-string/non-number: got ${r.type}`);else{if(!(r instanceof L))throw Error(`Cannot access property with non-string: got ${r.type}`);i=n.builtins.get(r.value)}return i instanceof P?i:new G}evaluateSet(e,t){let n=e.value?this.evaluate(e.value,t):this.evaluateBlock(e.body,t);if(e.assignee.type===`Identifier`){let r=e.assignee.value;t.setVariable(r,n)}else if(e.assignee.type===`TupleLiteral`){let r=e.assignee;if(!(n instanceof H))throw Error(`Cannot unpack non-iterable type in set: ${n.type}`);let i=n.value;if(i.length!==r.value.length)throw Error(`Too ${r.value.length>i.length?`few`:`many`} items to unpack in set`);for(let e=0;e<r.value.length;++e){let n=r.value[e];if(n.type!==`Identifier`)throw Error(`Cannot unpack to non-identifier in set: ${n.type}`);t.setVariable(n.value,i[e])}}else if(e.assignee.type===`MemberExpression`){let r=e.assignee,i=this.evaluate(r.object,t);if(!(i instanceof B))throw Error(`Cannot assign to member of non-object`);if(r.property.type!==`Identifier`)throw Error(`Cannot assign to member with non-identifier property`);i.value.set(r.property.value,n)}else throw Error(`Invalid LHS inside assignment expression: ${JSON.stringify(e.assignee)}`);return new W}evaluateIf(e,t){let n=this.evaluate(e.test,t);return this.evaluateBlock(n.__bool__().value?e.body:e.alternate,t)}evaluateFor(e,t){let n=new K(t),r,i;if(e.iterable.type===`SelectExpression`){let t=e.iterable;i=this.evaluate(t.lhs,n),r=t.test}else i=this.evaluate(e.iterable,n);if(!(i instanceof H||i instanceof B))throw Error(`Expected iterable or object type in for loop: got ${i.type}`);i instanceof B&&(i=i.keys());let a=[],o=[];for(let t=0;t<i.value.length;++t){let s=new K(n),c=i.value[t],l;if(e.loopvar.type===`Identifier`)l=t=>t.setVariable(e.loopvar.value,c);else if(e.loopvar.type===`TupleLiteral`){let t=e.loopvar;if(c.type!==`ArrayValue`)throw Error(`Cannot unpack non-iterable type: ${c.type}`);let n=c;if(t.value.length!==n.value.length)throw Error(`Too ${t.value.length>n.value.length?`few`:`many`} items to unpack`);l=e=>{for(let r=0;r<t.value.length;++r){if(t.value[r].type!==`Identifier`)throw Error(`Cannot unpack non-identifier type: ${t.value[r].type}`);e.setVariable(t.value[r].value,n.value[r])}}}else throw Error(`Invalid loop variable(s): ${e.loopvar.type}`);r&&(l(s),!this.evaluate(r,s).__bool__().value)||(a.push(c),o.push(l))}let s=``,c=!0;for(let t=0;t<a.length;++t){let r=new Map([[`index`,new F(t+1)],[`index0`,new F(t)],[`revindex`,new F(a.length-t)],[`revindex0`,new F(a.length-t-1)],[`first`,new R(t===0)],[`last`,new R(t===a.length-1)],[`length`,new F(a.length)],[`previtem`,t>0?a[t-1]:new G],[`nextitem`,t<a.length-1?a[t+1]:new G]]);n.setVariable(`loop`,new B(r)),o[t](n);try{let t=this.evaluateBlock(e.body,n);s+=t.value}catch(e){if(e instanceof et)continue;if(e instanceof $e)break;throw e}c=!1}if(c){let t=this.evaluateBlock(e.defaultBlock,n);s+=t.value}return new L(s)}evaluateMacro(e,t){return t.setVariable(e.name.value,new U((t,n)=>{let r=new K(n);t=t.slice();let i;t.at(-1)?.type===`KeywordArgumentsValue`&&(i=t.pop());for(let n=0;n<e.args.length;++n){let a=e.args[n],o=t[n];if(a.type===`Identifier`){let e=a;if(!o)throw Error(`Missing positional argument: ${e.value}`);r.setVariable(e.value,o)}else if(a.type===`KeywordArgumentExpression`){let e=a,t=o??i?.value.get(e.key.value)??this.evaluate(e.value,r);r.setVariable(e.key.value,t)}else throw Error(`Unknown argument type: ${a.type}`)}return this.evaluateBlock(e.body,r)})),new W}evaluateCallStatement(e,t){let n=new U((t,n)=>{let r=new K(n);if(e.callerArgs)for(let n=0;n<e.callerArgs.length;++n){let i=e.callerArgs[n];if(i.type!==`Identifier`)throw Error(`Caller parameter must be an identifier, got ${i.type}`);r.setVariable(i.value,t[n]??new G)}return this.evaluateBlock(e.body,r)}),[r,i]=this.evaluateArguments(e.call.args,t);r.push(new V(i));let a=this.evaluate(e.call.callee,t);if(a.type!==`FunctionValue`)throw Error(`Cannot call something that is not a function: got ${a.type}`);let o=new K(t);return o.setVariable(`caller`,n),a.value(r,o)}evaluateFilterStatement(e,t){let n=this.evaluateBlock(e.body,t);return this.applyFilter(n,e.filter,t)}evaluate(e,t){if(!e)return new G;switch(e.type){case`Program`:return this.evalProgram(e,t);case`Set`:return this.evaluateSet(e,t);case`If`:return this.evaluateIf(e,t);case`For`:return this.evaluateFor(e,t);case`Macro`:return this.evaluateMacro(e,t);case`CallStatement`:return this.evaluateCallStatement(e,t);case`Break`:throw new $e;case`Continue`:throw new et;case`IntegerLiteral`:return new F(e.value);case`FloatLiteral`:return new I(e.value);case`StringLiteral`:return new L(e.value);case`ArrayLiteral`:return new H(e.value.map(e=>this.evaluate(e,t)));case`TupleLiteral`:return new it(e.value.map(e=>this.evaluate(e,t)));case`ObjectLiteral`:{let n=new Map;for(let[r,i]of e.value){let e=this.evaluate(r,t);if(!(e instanceof L))throw Error(`Object keys must be strings: got ${e.type}`);n.set(e.value,this.evaluate(i,t))}return new B(n)}case`Identifier`:return this.evaluateIdentifier(e,t);case`CallExpression`:return this.evaluateCallExpression(e,t);case`MemberExpression`:return this.evaluateMemberExpression(e,t);case`UnaryExpression`:return this.evaluateUnaryExpression(e,t);case`BinaryExpression`:return this.evaluateBinaryExpression(e,t);case`FilterExpression`:return this.evaluateFilterExpression(e,t);case`FilterStatement`:return this.evaluateFilterStatement(e,t);case`TestExpression`:return this.evaluateTestExpression(e,t);case`SelectExpression`:return this.evaluateSelectExpression(e,t);case`Ternary`:return this.evaluateTernaryExpression(e,t);case`Comment`:return new W;default:throw SyntaxError(`Unknown node type: ${e.type}`)}}};function ut(e){switch(typeof e){case`number`:return Number.isInteger(e)?new F(e):new I(e);case`string`:return new L(e);case`boolean`:return new R(e);case`undefined`:return new G;case`object`:return e===null?new W:Array.isArray(e)?new H(e.map(ut)):new B(new Map(Object.entries(e).map(([e,t])=>[e,ut(t)])));case`function`:return new U((t,n)=>ut(e(...t.map(e=>e.value))??null));default:throw Error(`Cannot convert to runtime value: ${e}`)}}var q=`
11
- `,dt=`{%- `,ft=` -%}`;function pt(e){switch(e.operator.type){case`MultiplicativeBinaryOperator`:return 4;case`AdditiveBinaryOperator`:return 3;case`ComparisonBinaryOperator`:return 2;case`Identifier`:return e.operator.value===`and`?1:e.operator.value===`in`||e.operator.value===`not in`?2:0}return 0}function mt(e,t=` `){let n=typeof t==`number`?` `.repeat(t):t;return Y(e.body,0,n).replace(/\n$/,``)}function J(...e){return dt+e.join(` `)+ft}function Y(e,t,n){return e.map(e=>ht(e,t,n)).join(q)}function ht(e,t,n){let r=n.repeat(t);switch(e.type){case`Program`:return Y(e.body,t,n);case`If`:return gt(e,t,n);case`For`:return _t(e,t,n);case`Set`:return vt(e,t,n);case`Macro`:return yt(e,t,n);case`Break`:return r+J(`break`);case`Continue`:return r+J(`continue`);case`CallStatement`:return bt(e,t,n);case`FilterStatement`:return xt(e,t,n);case`Comment`:return r+`{# `+e.value+` #}`;default:return r+`{{- `+X(e)+` -}}`}}function gt(e,t,n){let r=n.repeat(t),i=[],a=e;for(;a&&(i.push({test:a.test,body:a.body}),a.alternate.length===1&&a.alternate[0].type===`If`);)a=a.alternate[0];let o=r+J(`if`,X(i[0].test))+q+Y(i[0].body,t+1,n);for(let e=1;e<i.length;++e)o+=q+r+J(`elif`,X(i[e].test))+q+Y(i[e].body,t+1,n);return a&&a.alternate.length>0&&(o+=q+r+J(`else`)+q+Y(a.alternate,t+1,n)),o+=q+r+J(`endif`),o}function _t(e,t,n){let r=n.repeat(t),i=``;if(e.iterable.type===`SelectExpression`){let t=e.iterable;i=`${X(t.lhs)} if ${X(t.test)}`}else i=X(e.iterable);let a=r+J(`for`,X(e.loopvar),`in`,i)+q+Y(e.body,t+1,n);return e.defaultBlock.length>0&&(a+=q+r+J(`else`)+q+Y(e.defaultBlock,t+1,n)),a+=q+r+J(`endfor`),a}function vt(e,t,n){let r=n.repeat(t),i=X(e.assignee),a=e.value?X(e.value):``,o=r+J(`set`,`${i}${e.value?` = `+a:``}`);return e.body.length===0?o:o+q+Y(e.body,t+1,n)+q+r+J(`endset`)}function yt(e,t,n){let r=n.repeat(t),i=e.args.map(X).join(`, `);return r+J(`macro`,`${e.name.value}(${i})`)+q+Y(e.body,t+1,n)+q+r+J(`endmacro`)}function bt(e,t,n){let r=n.repeat(t),i=e.callerArgs&&e.callerArgs.length>0?`(${e.callerArgs.map(X).join(`, `)})`:``,a=X(e.call),o=r+J(`call${i}`,a)+q;return o+=Y(e.body,t+1,n)+q,o+=r+J(`endcall`),o}function xt(e,t,n){let r=n.repeat(t),i=r+J(`filter`,e.filter.type===`Identifier`?e.filter.value:X(e.filter))+q;return i+=Y(e.body,t+1,n)+q,i+=r+J(`endfilter`),i}function X(e,t=-1){switch(e.type){case`SpreadExpression`:return`*${X(e.argument)}`;case`Identifier`:return e.value;case`IntegerLiteral`:return`${e.value}`;case`FloatLiteral`:return`${e.value}`;case`StringLiteral`:return JSON.stringify(e.value);case`BinaryExpression`:{let n=e,r=pt(n),i=X(n.left,r),a=X(n.right,r+1),o=`${i} ${n.operator.value} ${a}`;return r<t?`(${o})`:o}case`UnaryExpression`:{let t=e;return t.operator.value+(t.operator.value===`not`?` `:``)+X(t.argument,1/0)}case`CallExpression`:{let t=e,n=t.args.map(X).join(`, `);return`${X(t.callee)}(${n})`}case`MemberExpression`:{let t=e,n=X(t.object);[`Identifier`,`MemberExpression`,`CallExpression`,`StringLiteral`,`IntegerLiteral`,`FloatLiteral`,`ArrayLiteral`,`TupleLiteral`,`ObjectLiteral`].includes(t.object.type)||(n=`(${n})`);let r=X(t.property);return!t.computed&&t.property.type!==`Identifier`&&(r=`(${r})`),t.computed?`${n}[${r}]`:`${n}.${r}`}case`FilterExpression`:{let t=e,n=X(t.operand,1/0);return t.filter.type===`CallExpression`?`${n} | ${X(t.filter)}`:`${n} | ${t.filter.value}`}case`SelectExpression`:{let t=e;return`${X(t.lhs)} if ${X(t.test)}`}case`TestExpression`:{let t=e;return`${X(t.operand)} is${t.negate?` not`:``} ${t.test.value}`}case`ArrayLiteral`:case`TupleLiteral`:{let t=e.value.map(X),n=e.type===`ArrayLiteral`?`[]`:`()`;return`${n[0]}${t.join(`, `)}${n[1]}`}case`ObjectLiteral`:return`{${Array.from(e.value.entries()).map(([e,t])=>`${X(e)}: ${X(t)}`).join(`, `)}}`;case`SliceExpression`:{let t=e;return`${t.start?X(t.start):``}:${t.stop?X(t.stop):``}${t.step?`:${X(t.step)}`:``}`}case`KeywordArgumentExpression`:{let t=e;return`${t.key.value}=${X(t.value)}`}case`Ternary`:{let n=e,r=`${X(n.trueExpr)} if ${X(n.condition,0)} else ${X(n.falseExpr)}`;return t>-1?`(${r})`:r}default:throw Error(`Unknown expression type: ${e.type}`)}}var St=class{parsed;constructor(e){let t=ve(e,{lstrip_blocks:!0,trim_blocks:!0});this.parsed=Ge(t)}render(e){let t=new K;if(ot(t),e)for(let[n,r]of Object.entries(e))t.set(n,r);return new lt(t).run(this.parsed).value}format(e){return mt(this.parsed,e?.indent||` `)}};const Ct=new Map,wt=new Map;function Tt(e){return typeof e==`string`?e:e?Array.isArray(e)?e.map(e=>{if(!e)return``;if(typeof e==`string`)return e;if(e.type===`text`)return e.text||e.value||``;if(e.type===`tool_use`)return`[TOOL_CALL ${e.name}] ${JSON.stringify(e.input||{})}`;if(e.type===`tool_result`){let t=typeof e.content==`string`?e.content:JSON.stringify(e.content||``);return`[TOOL_RESULT ${e.tool_use_id||``}] ${t}`}return e.type===`attachment`?`[ATTACHMENT ${e.mediaType||`file`}] ${e.fileName||`attachment`}`:``}).filter(Boolean).join(`
12
- `):typeof e==`object`?JSON.stringify(e):String(e):``}async function Et(t,n){let r=String(t||``).trim();if(!r)return null;if(Ct.has(r))return Ct.get(r);let i=n||(typeof globalThis.fetch==`function`?globalThis.fetch.bind(globalThis):void 0);if(!i)return null;let a=n||le(i),o=`https://huggingface.co/${encodeURI(r)}/resolve/main/tokenizer_config.json`;try{let t=await a(o);if(t.ok){let n=await t.json();if(n&&typeof n==`object`){if(!n.chat_template)try{let e=await a(`https://huggingface.co/${encodeURI(r)}/resolve/main/chat_template.jinja`);if(e.ok){let t=await e.text();t&&t.trim()&&(n.chat_template=t.trim())}}catch{}if(typeof n.model_max_length==`number`&&Number.isFinite(n.model_max_length)&&n.model_max_length>0&&n.model_max_length<=2097152){let t=e.getModelInfo(r);e.registerModelInfo(r,{contextWindow:n.model_max_length,maxOutput:t?.maxOutput??null,...t||{}})}return Ct.set(r,n),n}}}catch{}return null}function Dt(e){if(!(!e||!Array.isArray(e)||e.length===0))return e.map(e=>e.type===`function`&&e.function?e:{type:`function`,function:{name:e.name,description:e.description||``,parameters:e.input_schema||e.parameters||{type:`object`,properties:{}}}})}function Ot(e,t){let n=String(t||``).trim(),r=[];for(let t of e){if(!t)continue;let e=String(t.role||`user`).toLowerCase(),i=Tt(t.content);e===`system`?n=n?`${n}\n\n${i}`:i:e===`tool`?r.push({role:`tool`,content:i}):e===`assistant`||e===`model`?r.push({role:`assistant`,content:i,...t.tool_calls?{tool_calls:t.tool_calls}:{}}):r.push({role:`user`,content:i})}let i=[];for(let e of r)if(i.length>0&&i[i.length-1].role===e.role&&e.role!==`tool`){let t=i[i.length-1];t.content=t.content?`${t.content}\n\n${e.content}`:e.content,e.tool_calls&&(t.tool_calls=[...t.tool_calls||[],...e.tool_calls])}else i.push({...e});i.length>0&&i[0].role===`assistant`&&i.unshift({role:`user`,content:`Hello`}),i.length===0&&!n&&i.push({role:`user`,content:`Hello`});let a=[];return n&&a.push({role:`system`,content:n}),a.push(...i),a}async function kt(e){let{modelName:t=``,messages:n,systemPrompt:r,tools:i,documents:a,addGenerationPrompt:o=!0,customFetch:s}=e,c=null;typeof e.template==`string`?c=e.template:e.template&&typeof e.template==`object`&&(i&&i.length>0&&`tool_use`in e.template?c=e.template.tool_use:`default`in e.template&&(c=e.template.default));let l=e.bosToken,u=e.eosToken;if(!c&&t){let e=await Et(t,s);e&&(typeof e.chat_template==`string`?c=e.chat_template:e.chat_template&&typeof e.chat_template==`object`&&(i&&i.length>0&&`tool_use`in e.chat_template?c=e.chat_template.tool_use:`default`in e.chat_template&&(c=e.chat_template.default)),!l&&e.bos_token&&(l=typeof e.bos_token==`string`?e.bos_token:e.bos_token.content),!u&&e.eos_token&&(u=typeof e.eos_token==`string`?e.eos_token:e.eos_token.content))}c||=`{%- for message in messages -%}
10
+ `))}case`replace`:{let t=e.builtins.get(`replace`);if(!(t instanceof U))throw Error(`replace filter not available`);let[i,a]=this.evaluateArguments(r.args,n);return t.value([...i,new V(a)],n)}}throw Error(`Unknown StringValue filter: ${i}`)}else if(e instanceof B){let t=e.builtins.get(i);if(t&&t instanceof U){let[e,i]=this.evaluateArguments(r.args,n);return i.size>0&&e.push(new V(i)),t.value(e,n)}throw Error(`Unknown ObjectValue filter: ${i}`)}else throw Error(`Cannot apply filter "${i}" to type: ${e.type}`)}throw Error(`Unknown filter: ${t.type}`)}evaluateFilterExpression(e,t){let n=this.evaluate(e.operand,t);return this.applyFilter(n,e.filter,t)}evaluateTestExpression(e,t){let n=this.evaluate(e.operand,t),r=t.tests.get(e.test.value);if(!r)throw Error(`Unknown test: ${e.test.value}`);let i=r(n);return new R(e.negate?!i:i)}evaluateSelectExpression(e,t){return this.evaluate(e.test,t).__bool__().value?this.evaluate(e.lhs,t):new G}evaluateUnaryExpression(e,t){let n=this.evaluate(e.argument,t);switch(e.operator.value){case`not`:return new R(!n.value);default:throw SyntaxError(`Unknown operator: ${e.operator.value}`)}}evaluateTernaryExpression(e,t){return this.evaluate(e.condition,t).__bool__().value?this.evaluate(e.trueExpr,t):this.evaluate(e.falseExpr,t)}evalProgram(e,t){return this.evaluateBlock(e.body,t)}evaluateBlock(e,t){let n=``;for(let r of e){let e=this.evaluate(r,t);e.type!==`NullValue`&&e.type!==`UndefinedValue`&&(n+=e.toString())}return new L(n)}evaluateIdentifier(e,t){return t.lookupVariable(e.value)}evaluateCallExpression(e,t){let[n,r]=this.evaluateArguments(e.args,t);r.size>0&&n.push(new V(r));let i=this.evaluate(e.callee,t);if(i.type!==`FunctionValue`)throw Error(`Cannot call something that is not a function: got ${i.type}`);return i.value(n,t)}evaluateSliceExpression(e,t,n){if(!(e instanceof H||e instanceof L))throw Error(`Slice object must be an array or string`);let r=this.evaluate(t.start,n),i=this.evaluate(t.stop,n),a=this.evaluate(t.step,n);if(!(r instanceof F||r instanceof G))throw Error(`Slice start must be numeric or undefined`);if(!(i instanceof F||i instanceof G))throw Error(`Slice stop must be numeric or undefined`);if(!(a instanceof F||a instanceof G))throw Error(`Slice step must be numeric or undefined`);return e instanceof H?new H(He(e.value,r.value,i.value,a.value)):new L(He(Array.from(e.value),r.value,i.value,a.value).join(``))}evaluateMemberExpression(e,t){let n=this.evaluate(e.object,t),r;if(e.computed){if(e.property.type===`SliceExpression`)return this.evaluateSliceExpression(n,e.property,t);r=this.evaluate(e.property,t)}else r=new L(e.property.value);let i;if(n instanceof B){if(!(r instanceof L))throw Error(`Cannot access property with non-string: got ${r.type}`);i=n.value.get(r.value)??n.builtins.get(r.value)}else if(n instanceof H||n instanceof L)if(r instanceof F)i=n.value.at(r.value),n instanceof L&&(i=new L(n.value.at(r.value)));else if(r instanceof L)i=n.builtins.get(r.value);else throw Error(`Cannot access property with non-string/non-number: got ${r.type}`);else{if(!(r instanceof L))throw Error(`Cannot access property with non-string: got ${r.type}`);i=n.builtins.get(r.value)}return i instanceof P?i:new G}evaluateSet(e,t){let n=e.value?this.evaluate(e.value,t):this.evaluateBlock(e.body,t);if(e.assignee.type===`Identifier`){let r=e.assignee.value;t.setVariable(r,n)}else if(e.assignee.type===`TupleLiteral`){let r=e.assignee;if(!(n instanceof H))throw Error(`Cannot unpack non-iterable type in set: ${n.type}`);let i=n.value;if(i.length!==r.value.length)throw Error(`Too ${r.value.length>i.length?`few`:`many`} items to unpack in set`);for(let e=0;e<r.value.length;++e){let n=r.value[e];if(n.type!==`Identifier`)throw Error(`Cannot unpack to non-identifier in set: ${n.type}`);t.setVariable(n.value,i[e])}}else if(e.assignee.type===`MemberExpression`){let r=e.assignee,i=this.evaluate(r.object,t);if(!(i instanceof B))throw Error(`Cannot assign to member of non-object`);if(r.property.type!==`Identifier`)throw Error(`Cannot assign to member with non-identifier property`);i.value.set(r.property.value,n)}else throw Error(`Invalid LHS inside assignment expression: ${JSON.stringify(e.assignee)}`);return new W}evaluateIf(e,t){let n=this.evaluate(e.test,t);return this.evaluateBlock(n.__bool__().value?e.body:e.alternate,t)}evaluateFor(e,t){let n=new K(t),r,i;if(e.iterable.type===`SelectExpression`){let t=e.iterable;i=this.evaluate(t.lhs,n),r=t.test}else i=this.evaluate(e.iterable,n);if(!(i instanceof H||i instanceof B))throw Error(`Expected iterable or object type in for loop: got ${i.type}`);i instanceof B&&(i=i.keys());let a=[],o=[];for(let t=0;t<i.value.length;++t){let s=new K(n),c=i.value[t],l;if(e.loopvar.type===`Identifier`)l=t=>t.setVariable(e.loopvar.value,c);else if(e.loopvar.type===`TupleLiteral`){let t=e.loopvar;if(c.type!==`ArrayValue`)throw Error(`Cannot unpack non-iterable type: ${c.type}`);let n=c;if(t.value.length!==n.value.length)throw Error(`Too ${t.value.length>n.value.length?`few`:`many`} items to unpack`);l=e=>{for(let r=0;r<t.value.length;++r){if(t.value[r].type!==`Identifier`)throw Error(`Cannot unpack non-identifier type: ${t.value[r].type}`);e.setVariable(t.value[r].value,n.value[r])}}}else throw Error(`Invalid loop variable(s): ${e.loopvar.type}`);r&&(l(s),!this.evaluate(r,s).__bool__().value)||(a.push(c),o.push(l))}let s=``,c=!0;for(let t=0;t<a.length;++t){let r=new Map([[`index`,new F(t+1)],[`index0`,new F(t)],[`revindex`,new F(a.length-t)],[`revindex0`,new F(a.length-t-1)],[`first`,new R(t===0)],[`last`,new R(t===a.length-1)],[`length`,new F(a.length)],[`previtem`,t>0?a[t-1]:new G],[`nextitem`,t<a.length-1?a[t+1]:new G]]);n.setVariable(`loop`,new B(r)),o[t](n);try{let t=this.evaluateBlock(e.body,n);s+=t.value}catch(e){if(e instanceof Ye)continue;if(e instanceof Je)break;throw e}c=!1}if(c){let t=this.evaluateBlock(e.defaultBlock,n);s+=t.value}return new L(s)}evaluateMacro(e,t){return t.setVariable(e.name.value,new U((t,n)=>{let r=new K(n);t=t.slice();let i;t.at(-1)?.type===`KeywordArgumentsValue`&&(i=t.pop());for(let n=0;n<e.args.length;++n){let a=e.args[n],o=t[n];if(a.type===`Identifier`){let e=a;if(!o)throw Error(`Missing positional argument: ${e.value}`);r.setVariable(e.value,o)}else if(a.type===`KeywordArgumentExpression`){let e=a,t=o??i?.value.get(e.key.value)??this.evaluate(e.value,r);r.setVariable(e.key.value,t)}else throw Error(`Unknown argument type: ${a.type}`)}return this.evaluateBlock(e.body,r)})),new W}evaluateCallStatement(e,t){let n=new U((t,n)=>{let r=new K(n);if(e.callerArgs)for(let n=0;n<e.callerArgs.length;++n){let i=e.callerArgs[n];if(i.type!==`Identifier`)throw Error(`Caller parameter must be an identifier, got ${i.type}`);r.setVariable(i.value,t[n]??new G)}return this.evaluateBlock(e.body,r)}),[r,i]=this.evaluateArguments(e.call.args,t);r.push(new V(i));let a=this.evaluate(e.call.callee,t);if(a.type!==`FunctionValue`)throw Error(`Cannot call something that is not a function: got ${a.type}`);let o=new K(t);return o.setVariable(`caller`,n),a.value(r,o)}evaluateFilterStatement(e,t){let n=this.evaluateBlock(e.body,t);return this.applyFilter(n,e.filter,t)}evaluate(e,t){if(!e)return new G;switch(e.type){case`Program`:return this.evalProgram(e,t);case`Set`:return this.evaluateSet(e,t);case`If`:return this.evaluateIf(e,t);case`For`:return this.evaluateFor(e,t);case`Macro`:return this.evaluateMacro(e,t);case`CallStatement`:return this.evaluateCallStatement(e,t);case`Break`:throw new Je;case`Continue`:throw new Ye;case`IntegerLiteral`:return new F(e.value);case`FloatLiteral`:return new I(e.value);case`StringLiteral`:return new L(e.value);case`ArrayLiteral`:return new H(e.value.map(e=>this.evaluate(e,t)));case`TupleLiteral`:return new $e(e.value.map(e=>this.evaluate(e,t)));case`ObjectLiteral`:{let n=new Map;for(let[r,i]of e.value){let e=this.evaluate(r,t);if(!(e instanceof L))throw Error(`Object keys must be strings: got ${e.type}`);n.set(e.value,this.evaluate(i,t))}return new B(n)}case`Identifier`:return this.evaluateIdentifier(e,t);case`CallExpression`:return this.evaluateCallExpression(e,t);case`MemberExpression`:return this.evaluateMemberExpression(e,t);case`UnaryExpression`:return this.evaluateUnaryExpression(e,t);case`BinaryExpression`:return this.evaluateBinaryExpression(e,t);case`FilterExpression`:return this.evaluateFilterExpression(e,t);case`FilterStatement`:return this.evaluateFilterStatement(e,t);case`TestExpression`:return this.evaluateTestExpression(e,t);case`SelectExpression`:return this.evaluateSelectExpression(e,t);case`Ternary`:return this.evaluateTernaryExpression(e,t);case`Comment`:return new W;default:throw SyntaxError(`Unknown node type: ${e.type}`)}}};function at(e){switch(typeof e){case`number`:return Number.isInteger(e)?new F(e):new I(e);case`string`:return new L(e);case`boolean`:return new R(e);case`undefined`:return new G;case`object`:return e===null?new W:Array.isArray(e)?new H(e.map(at)):new B(new Map(Object.entries(e).map(([e,t])=>[e,at(t)])));case`function`:return new U((t,n)=>at(e(...t.map(e=>e.value))??null));default:throw Error(`Cannot convert to runtime value: ${e}`)}}var q=`
11
+ `,ot=`{%- `,st=` -%}`;function ct(e){switch(e.operator.type){case`MultiplicativeBinaryOperator`:return 4;case`AdditiveBinaryOperator`:return 3;case`ComparisonBinaryOperator`:return 2;case`Identifier`:return e.operator.value===`and`?1:e.operator.value===`in`||e.operator.value===`not in`?2:0}return 0}function lt(e,t=` `){let n=typeof t==`number`?` `.repeat(t):t;return Y(e.body,0,n).replace(/\n$/,``)}function J(...e){return ot+e.join(` `)+st}function Y(e,t,n){return e.map(e=>ut(e,t,n)).join(q)}function ut(e,t,n){let r=n.repeat(t);switch(e.type){case`Program`:return Y(e.body,t,n);case`If`:return dt(e,t,n);case`For`:return ft(e,t,n);case`Set`:return pt(e,t,n);case`Macro`:return mt(e,t,n);case`Break`:return r+J(`break`);case`Continue`:return r+J(`continue`);case`CallStatement`:return ht(e,t,n);case`FilterStatement`:return gt(e,t,n);case`Comment`:return r+`{# `+e.value+` #}`;default:return r+`{{- `+X(e)+` -}}`}}function dt(e,t,n){let r=n.repeat(t),i=[],a=e;for(;a&&(i.push({test:a.test,body:a.body}),a.alternate.length===1&&a.alternate[0].type===`If`);)a=a.alternate[0];let o=r+J(`if`,X(i[0].test))+q+Y(i[0].body,t+1,n);for(let e=1;e<i.length;++e)o+=q+r+J(`elif`,X(i[e].test))+q+Y(i[e].body,t+1,n);return a&&a.alternate.length>0&&(o+=q+r+J(`else`)+q+Y(a.alternate,t+1,n)),o+=q+r+J(`endif`),o}function ft(e,t,n){let r=n.repeat(t),i=``;if(e.iterable.type===`SelectExpression`){let t=e.iterable;i=`${X(t.lhs)} if ${X(t.test)}`}else i=X(e.iterable);let a=r+J(`for`,X(e.loopvar),`in`,i)+q+Y(e.body,t+1,n);return e.defaultBlock.length>0&&(a+=q+r+J(`else`)+q+Y(e.defaultBlock,t+1,n)),a+=q+r+J(`endfor`),a}function pt(e,t,n){let r=n.repeat(t),i=X(e.assignee),a=e.value?X(e.value):``,o=r+J(`set`,`${i}${e.value?` = `+a:``}`);return e.body.length===0?o:o+q+Y(e.body,t+1,n)+q+r+J(`endset`)}function mt(e,t,n){let r=n.repeat(t),i=e.args.map(X).join(`, `);return r+J(`macro`,`${e.name.value}(${i})`)+q+Y(e.body,t+1,n)+q+r+J(`endmacro`)}function ht(e,t,n){let r=n.repeat(t),i=e.callerArgs&&e.callerArgs.length>0?`(${e.callerArgs.map(X).join(`, `)})`:``,a=X(e.call),o=r+J(`call${i}`,a)+q;return o+=Y(e.body,t+1,n)+q,o+=r+J(`endcall`),o}function gt(e,t,n){let r=n.repeat(t),i=r+J(`filter`,e.filter.type===`Identifier`?e.filter.value:X(e.filter))+q;return i+=Y(e.body,t+1,n)+q,i+=r+J(`endfilter`),i}function X(e,t=-1){switch(e.type){case`SpreadExpression`:return`*${X(e.argument)}`;case`Identifier`:return e.value;case`IntegerLiteral`:return`${e.value}`;case`FloatLiteral`:return`${e.value}`;case`StringLiteral`:return JSON.stringify(e.value);case`BinaryExpression`:{let n=e,r=ct(n),i=X(n.left,r),a=X(n.right,r+1),o=`${i} ${n.operator.value} ${a}`;return r<t?`(${o})`:o}case`UnaryExpression`:{let t=e;return t.operator.value+(t.operator.value===`not`?` `:``)+X(t.argument,1/0)}case`CallExpression`:{let t=e,n=t.args.map(X).join(`, `);return`${X(t.callee)}(${n})`}case`MemberExpression`:{let t=e,n=X(t.object);[`Identifier`,`MemberExpression`,`CallExpression`,`StringLiteral`,`IntegerLiteral`,`FloatLiteral`,`ArrayLiteral`,`TupleLiteral`,`ObjectLiteral`].includes(t.object.type)||(n=`(${n})`);let r=X(t.property);return!t.computed&&t.property.type!==`Identifier`&&(r=`(${r})`),t.computed?`${n}[${r}]`:`${n}.${r}`}case`FilterExpression`:{let t=e,n=X(t.operand,1/0);return t.filter.type===`CallExpression`?`${n} | ${X(t.filter)}`:`${n} | ${t.filter.value}`}case`SelectExpression`:{let t=e;return`${X(t.lhs)} if ${X(t.test)}`}case`TestExpression`:{let t=e;return`${X(t.operand)} is${t.negate?` not`:``} ${t.test.value}`}case`ArrayLiteral`:case`TupleLiteral`:{let t=e.value.map(X),n=e.type===`ArrayLiteral`?`[]`:`()`;return`${n[0]}${t.join(`, `)}${n[1]}`}case`ObjectLiteral`:return`{${Array.from(e.value.entries()).map(([e,t])=>`${X(e)}: ${X(t)}`).join(`, `)}}`;case`SliceExpression`:{let t=e;return`${t.start?X(t.start):``}:${t.stop?X(t.stop):``}${t.step?`:${X(t.step)}`:``}`}case`KeywordArgumentExpression`:{let t=e;return`${t.key.value}=${X(t.value)}`}case`Ternary`:{let n=e,r=`${X(n.trueExpr)} if ${X(n.condition,0)} else ${X(n.falseExpr)}`;return t>-1?`(${r})`:r}default:throw Error(`Unknown expression type: ${e.type}`)}}var _t=class{parsed;constructor(e){let t=pe(e,{lstrip_blocks:!0,trim_blocks:!0});this.parsed=Be(t)}render(e){let t=new K;if(tt(t),e)for(let[n,r]of Object.entries(e))t.set(n,r);return new it(t).run(this.parsed).value}format(e){return lt(this.parsed,e?.indent||` `)}};const vt=new Map,yt=new Map;function bt(e){return typeof e==`string`?e:e?Array.isArray(e)?e.map(e=>{if(!e)return``;if(typeof e==`string`)return e;if(e.type===`text`)return e.text||e.value||``;if(e.type===`tool_use`)return`[TOOL_CALL ${e.name}] ${JSON.stringify(e.input||{})}`;if(e.type===`tool_result`){let t=typeof e.content==`string`?e.content:JSON.stringify(e.content||``);return`[TOOL_RESULT ${e.tool_use_id||``}] ${t}`}return e.type===`attachment`?`[ATTACHMENT ${e.mediaType||`file`}] ${e.fileName||`attachment`}`:``}).filter(Boolean).join(`
12
+ `):typeof e==`object`?JSON.stringify(e):String(e):``}async function xt(t,n){let r=String(t||``).trim();if(!r)return null;if(vt.has(r))return vt.get(r);let i=n||(typeof globalThis.fetch==`function`?globalThis.fetch.bind(globalThis):void 0);if(!i)return null;let a=n||w(i),o=`https://huggingface.co/${encodeURI(r)}/resolve/main/tokenizer_config.json`;try{let t=await a(o);if(t.ok){let n=await t.json();if(n&&typeof n==`object`){if(!n.chat_template)try{let e=await a(`https://huggingface.co/${encodeURI(r)}/resolve/main/chat_template.jinja`);if(e.ok){let t=await e.text();t&&t.trim()&&(n.chat_template=t.trim())}}catch{}if(typeof n.model_max_length==`number`&&Number.isFinite(n.model_max_length)&&n.model_max_length>0&&n.model_max_length<=2097152){let t=e.getModelInfo(r);e.registerModelInfo(r,{contextWindow:n.model_max_length,maxOutput:t?.maxOutput??null,...t||{}})}return vt.set(r,n),n}}}catch{}return null}function St(e){if(!(!e||!Array.isArray(e)||e.length===0))return e.map(e=>e.type===`function`&&e.function?e:{type:`function`,function:{name:e.name,description:e.description||``,parameters:e.input_schema||e.parameters||{type:`object`,properties:{}}}})}function Ct(e,t){let n=String(t||``).trim(),r=[];for(let t of e){if(!t)continue;let e=String(t.role||`user`).toLowerCase(),i=bt(t.content);e===`system`?n=n?`${n}\n\n${i}`:i:e===`tool`?r.push({role:`tool`,content:i}):e===`assistant`||e===`model`?r.push({role:`assistant`,content:i,...t.tool_calls?{tool_calls:t.tool_calls}:{}}):r.push({role:`user`,content:i})}let i=[];for(let e of r)if(i.length>0&&i[i.length-1].role===e.role&&e.role!==`tool`){let t=i[i.length-1];t.content=t.content?`${t.content}\n\n${e.content}`:e.content,e.tool_calls&&(t.tool_calls=[...t.tool_calls||[],...e.tool_calls])}else i.push({...e});i.length>0&&i[0].role===`assistant`&&i.unshift({role:`user`,content:`Hello`}),i.length===0&&!n&&i.push({role:`user`,content:`Hello`});let a=[];return n&&a.push({role:`system`,content:n}),a.push(...i),a}async function wt(e){let{modelName:t=``,messages:n,systemPrompt:r,tools:i,documents:a,addGenerationPrompt:o=!0,customFetch:s}=e,c=null;typeof e.template==`string`?c=e.template:e.template&&typeof e.template==`object`&&(i&&i.length>0&&`tool_use`in e.template?c=e.template.tool_use:`default`in e.template&&(c=e.template.default));let l=e.bosToken,u=e.eosToken;if(!c&&t){let e=await xt(t,s);e&&(typeof e.chat_template==`string`?c=e.chat_template:e.chat_template&&typeof e.chat_template==`object`&&(i&&i.length>0&&`tool_use`in e.chat_template?c=e.chat_template.tool_use:`default`in e.chat_template&&(c=e.chat_template.default)),!l&&e.bos_token&&(l=typeof e.bos_token==`string`?e.bos_token:e.bos_token.content),!u&&e.eos_token&&(u=typeof e.eos_token==`string`?e.eos_token:e.eos_token.content))}c||=`{%- for message in messages -%}
13
13
  {{- '<|im_start|>' + message.role + '
14
14
  ' + message.content + '<|im_end|>
15
15
  ' -}}
@@ -17,11 +17,11 @@ import{C as e,b as t,c as n,r}from"./chunk-BkKN8FNP.js";import{i}from"./chunk-DF
17
17
  {%- if add_generation_prompt -%}
18
18
  {{- '<|im_start|>assistant
19
19
  ' -}}
20
- {%- endif -%}`;let d=Ot(n,r),f=Dt(i),p=wt.get(c);return p||(p=new St(c),wt.set(c,p)),p.render({messages:d,tools:f,documents:a||null,add_generation_prompt:o,bos_token:l||``,eos_token:u||``,pad_token:e.padToken||``,unk_token:e.unkToken||``})}function At(){let e=globalThis;return e.Summarizer||e.ai?.summarizer}function jt(){let e=globalThis;return e.Writer||e.ai?.writer}function Mt(){let e=globalThis;return e.Rewriter||e.ai?.rewriter}function Nt(){let e=globalThis;return e.LanguageDetector||e.ai?.languageDetector||e.translation?.languageDetector}function Pt(){let e=globalThis;return e.Translator||e.ai?.translator||e.translation?.translator}function Ft(){let e=globalThis;return e.Proofreader||e.ai?.proofreader}function It(){let e=globalThis;return e.SemanticEmbedder||e.TextEmbedder||e.ai?.semanticEmbedder||e.ai?.textEmbedder}async function Lt(){if(typeof navigator>`u`||!(`gpu`in navigator))return!1;try{let e=await navigator.gpu.requestAdapter({powerPreference:`high-performance`});if(!e||e.isFallbackAdapter===!0||e.features&&!e.features.has(`shader-f16`))return!1;let t=e.info||(typeof e.requestAdapterInfo==`function`?await e.requestAdapterInfo():null);if(t){let e=(t.vendor||``).toLowerCase(),n=(t.architecture||``).toLowerCase(),r=(t.description||``).toLowerCase(),i=(t.device||``).toLowerCase(),a=(t.adapterType||t.deviceType||t.type||``).toLowerCase();if(a===`cpu`||a===`software`||n===`swiftshader`||n===`llvmpipe`||n===`softpipe`||n===`lavapipe`||n===`cpu`||e.includes(`swiftshader`)||r.includes(`llvmpipe`)||r.includes(`softpipe`)||r.includes(`lavapipe`)||r.includes(`software`)||r.includes(`basic render`)||i.includes(`llvmpipe`)||i.includes(`softpipe`)||i.includes(`lavapipe`)||i.includes(`swiftshader`)||i.includes(`basic render`))return!1}let n=await e.requestDevice();return n?(typeof n.destroy==`function`&&n.destroy(),!0):!1}catch{return!1}}function Rt(e){let t=e.toLowerCase();return t.includes(`webgpu`)||t.includes(`webgpuinit`)||t.includes(`no available backend`)||t.includes(`webnn`)||t.includes(`error_code: 9`)||t.includes(`could not find an implementation`)||t.includes(`gatherblockquantized`)||t.includes(`ort_not_implemented`)||t.includes(`error_code: 6`)||t.includes(`bad_alloc`)||t.includes(`out of memory`)||t.includes(`allocation failed`)}let zt=n;async function Bt(){try{let e=await i();if(e){let t=await a(e,r.PROMPT_API_FALLBACK_MODEL);if(t&&typeof t==`string`)return t}}catch{}return zt}async function Z(e,t){try{return await e.create(t)}catch(n){let r=String(n?.message||n),i=globalThis,a=i.TRANSFORMERS_CONFIG?.device??``;if((a===`webgpu`||a.startsWith(`webnn`))&&Rt(r)){let o=await Bt();return console.warn(`Built-in AI Polyfill: ${a} backend failed (${r.slice(0,120)}). Retrying with WASM/q4 CPU fallback (${o})...`,n),i.TRANSFORMERS_CONFIG||={apiKey:`dummy`},i.TRANSFORMERS_CONFIG.device=`wasm`,i.TRANSFORMERS_CONFIG.dtype=`q4`,i.TRANSFORMERS_CONFIG.modelName=o,i.TRANSFORMERS_CONFIG.env||(i.TRANSFORMERS_CONFIG.env={useBrowserCache:!1,useWasmCache:!0,fetch:le()}),await e.create(t)}throw n}}async function Q(){let e=globalThis,t=[];`document`in e||(e.document={defaultView:e,documentElement:null,querySelector:()=>null,querySelectorAll:()=>[],createElement:e=>typeof OffscreenCanvas<`u`&&e===`canvas`?new OffscreenCanvas(300,150):{}}),`MutationObserver`in e||(e.MutationObserver=class{observe(){}disconnect(){}takeRecords(){return[]}});let n;if(!(`LanguageModel`in e)&&!e.ai?.languageModel){if(n=await Bt(),e.TRANSFORMERS_CONFIG)e.TRANSFORMERS_CONFIG.env||(e.TRANSFORMERS_CONFIG.env={useBrowserCache:!1,useWasmCache:!0,fetch:le()});else{let t=`wasm`,o=`q4f16`,s=null,c=null;try{let e=await i();e&&(s=await a(e,r.PROMPT_API_BACKEND)||await a(e,r.TRANSFORMERS_JS_BACKEND)||null,c=await a(e,r.PROMPT_API_DTYPE_STRATEGY)||await a(e,r.TRANSFORMERS_JS_DTYPE_STRATEGY)||null)}catch{}s===`wasm`?t=`wasm`:s===`webgpu`?t=`webgpu`:s&&s.startsWith(`webnn`)?t=`webnn`:typeof navigator<`u`&&(`ml`in navigator?t=`webnn`:`gpu`in navigator&&await Lt()&&(t=`webgpu`)),o=c&&c!==`auto`?c:`q4f16`,e.TRANSFORMERS_CONFIG={apiKey:`dummy`,device:t,dtype:o,...n?{modelName:n}:{},env:{useBrowserCache:!1,useWasmCache:!0,fetch:le()}}}t.push(import(`./chunk-BuquFeWd.js`).then(t=>{t?.LanguageModel&&!e.LanguageModel&&(e.LanguageModel=t.LanguageModel)}).catch(()=>{}))}e.TRANSFORMERS_CONFIG&&(n||=await Bt(),n&&(e.TRANSFORMERS_CONFIG.modelName=n)),At()||t.push(import(`./chunk--WxTVWiq.js`).then(t=>{t?.Summarizer&&!e.Summarizer&&(e.Summarizer=t.Summarizer)}).catch(()=>{})),jt()||t.push(import(`./chunk-l1qz7ZUx.js`).then(t=>{t?.Writer&&!e.Writer&&(e.Writer=t.Writer)}).catch(()=>{})),Mt()||t.push(import(`./chunk-DaDVY8Zu.js`).then(t=>{t?.Rewriter&&!e.Rewriter&&(e.Rewriter=t.Rewriter)}).catch(()=>{})),Nt()||t.push(import(`./chunk-D5LklvEB.js`).then(t=>{t?.LanguageDetector&&!e.LanguageDetector&&(e.LanguageDetector=t.LanguageDetector)}).catch(()=>{})),Pt()||t.push(import(`./chunk-DQ1cyYQE.js`).then(t=>{t?.Translator&&!e.Translator&&(e.Translator=t.Translator)}).catch(()=>{})),t.length>0&&await Promise.all(t)}function $(e,t){if(t)return n=>{!n||typeof n.addEventListener!=`function`||(t({status:`running`,progress:0,message:`Downloading ${e} model... 0%`}),n.addEventListener(`downloadprogress`,n=>{let r=Number(n?.loaded),i=Number(n?.total),a=null,o=``;Number.isFinite(r)&&Number.isFinite(i)&&i>0?(a=Math.max(0,Math.min(1,r/i)),o=` ${Math.round(a*100)}%`):Number.isFinite(r)&&r>=0&&r<=1?(a=Math.max(0,Math.min(1,r)),o=` ${Math.round(a*100)}%`):Number.isFinite(r)&&r>1&&(o=` (${(r/1024/1024).toFixed(1)} MB downloaded)`),t({status:`running`,progress:a,message:`Downloading ${e} model...${o}`})}))}}async function Vt(e,t){await Q();let n=At();if(!n)throw Error(`Summarizer API is not supported or polyfilled`);let r=$(`Summarizer`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.summarize(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Ht(e,t){await Q();let n=jt();if(!n)throw Error(`Writer API is not supported or polyfilled`);let r=$(`Writer`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.write(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Ut(e,t){await Q();let n=Mt();if(!n)throw Error(`Rewriter API is not supported or polyfilled`);let r=$(`Rewriter`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.rewrite(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Wt(e,t){await Q();let n=Nt();if(!n)throw Error(`Language Detector API is not supported or polyfilled`);let r=$(`LanguageDetector`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.detect(e)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Gt(e,t){await Q();let n=Pt();if(!n)throw Error(`Translator API is not supported or polyfilled`);let r=$(`Translator`,t?.onProgress),i=await Z(n,{...t,...r?{monitor:r}:{}});try{return await i.translate(e)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Kt(e,t){await Q();let n=Ft();if(n){let r=$(`Proofreader`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{if(typeof i.proofread==`function`)return await i.proofread(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}return await Ut(e,{context:t?.context?`Proofread and correct grammar, spelling, and style errors. ${t.context}`:`Proofread and correct grammar, spelling, and style errors.`,onProgress:t?.onProgress})}async function qt(e,t){await Q();let n=It();if(!n)throw Error(`Semantic Embedder API is not supported in this browser environment. Enable #semantic-embedder-api in chrome://flags or Edge Canary.`);let r=$(`SemanticEmbedder`,t?.onProgress),i=await Z(n,{...t?.taskType?{taskType:t.taskType}:{},...r?{monitor:r}:{}});try{return await i.embed(e)}finally{typeof i.destroy==`function`&&i.destroy()}}function Jt(e){return`[Attachment: ${e.fileName} (${e.mimeType}) is available in chat history${e.path?` at ${e.path}`:``}]`}function Yt(e){return e.map(e=>e.type===`text`?e.text:e.type===`image`?`[Image: ${e.media_type}, ${Math.ceil(e.data.length*3/4)} bytes base64-encoded]`:``).filter(Boolean).join(`
21
- `)}function Xt(e,t){if(!Qt(t))return Yt(e);let n=[];for(let t of e)t.type===`text`?n.push({type:`text`,text:t.text}):t.type===`image`&&n.push({type:`image_url`,image_url:{url:`data:${t.media_type};base64,${t.data}`}});return n}function Zt(e,t){if(!Qt(t))return Yt(e);let n=[];for(let t of e)t.type===`text`?n.push({type:`text`,text:t.text}):t.type===`image`&&n.push({type:`image`,source:{type:`base64`,media_type:t.media_type,data:t.data}});return n}function Qt(e){let t=m(e);return t.images||t.routerByFeatures}function $t(e){let t=m(e);return t.audio||t.routerByFeatures}function en(e){let t=m(e);return t.documents||t.routerByFeatures}function tn(e){let t=e.toLowerCase();return t.includes(`wav`)?`wav`:t.includes(`flac`)?`flac`:t.includes(`ogg`)?`ogg`:t.includes(`aac`)?`aac`:t.includes(`webm`)?`webm`:t.includes(`mp4`)?`mp4`:`mp3`}function nn(e,t){let n=[],r=Qt(t);for(let i of e){if(i?.type===`text`){n.push({type:`text`,text:i.text||``});continue}i?.type===`attachment`&&(i.mediaType===`image`&&typeof i.data==`string`&&i.data&&r?n.push({type:`image_url`,image_url:{url:`data:${i.mimeType};base64,${i.data}`}}):i.mediaType===`audio`&&typeof i.data==`string`&&i.data&&$t(t)?n.push({type:`input_audio`,input_audio:{data:i.data,format:tn(i.mimeType)}}):n.push({type:`text`,text:Jt(i)}))}return n}function rn(e){return typeof e!=`string`||e.trim().length===0?``:e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``)}function an(e){let t=rn(e);return t?t.includes(`claude-1`)||t.includes(`claude-2`)||t.includes(`claude-v1`)||t.includes(`claude-v2`)||t.includes(`claude-instant`):!1}function on(t){if(typeof t!=`string`||t.trim().length===0)return!1;let n=e.getModelInfo(t);if(typeof n?.supportsPromptCaching==`boolean`)return n.supportsPromptCaching;let r=rn(t);return!an(r)&&!!(r.includes(`claude-3-5-sonnet`)||r.includes(`claude-3-5-haiku`)||r.includes(`claude-3-7-sonnet`)||r.includes(`claude-3-haiku`)||r.includes(`claude-3-opus`)||/claude-(?:sonnet|opus|haiku)-[4-9]/.test(r)||/claude-[4-9]-(?:sonnet|opus|haiku)/.test(r))}function sn(e,t){let n=[],r=Qt(t);for(let i of e){if(i?.type===`text`){let e=typeof i.text==`string`?i.text:``;if(e.trim().length===0)continue;n.push({type:`text`,text:e,...i.cache_control&&{cache_control:i.cache_control}});continue}if(i?.type===`tool_use`){n.push(i);continue}if(i?.type===`thinking`){n.push({type:`thinking`,thinking:i.thinking||``,...typeof i.signature==`string`&&{signature:i.signature}});continue}if(i?.type===`redacted_thinking`){n.push({type:`redacted_thinking`,data:i.data||``});continue}if(i?.type===`tool_result`){Array.isArray(i.content)?n.push({...i,content:Zt(i.content,t)}):n.push(i);continue}i?.type===`attachment`&&(i.mediaType===`image`&&typeof i.data==`string`&&i.data&&r?n.push({type:`image`,source:{type:`base64`,media_type:i.mimeType,data:i.data},...i.cache_control&&{cache_control:i.cache_control}}):i.mediaType===`document`&&typeof i.data==`string`&&i.data&&en(t)?n.push({type:`document`,source:{type:`base64`,media_type:`application/pdf`,data:i.data},...i.cache_control&&{cache_control:i.cache_control}}):n.push({type:`text`,text:Jt(i),...i.cache_control&&{cache_control:i.cache_control}}))}return n}function cn(e,t){let n={"Content-Type":`application/json`,...e.headers};return e.apiKeyHeaderFormat?n[e.apiKeyHeader]=e.apiKeyHeaderFormat.replace(`{key}`,t):n[e.apiKeyHeader]=t,n}var ln=class{provider;constructor(e){this.provider=e}formatRequest(e,t,n){throw Error(`Not implemented`)}parseResponse(e){throw Error(`Not implemented`)}},un=class extends ln{formatRequest(t,n,r){let{model:i,maxTokens:a,system:o,contextCompression:s,reasoning:c}=r,l=[];o&&l.push({role:`system`,content:o});for(let e of t){if(e.role===`system`){if(o)continue;l.push(e);continue}if(e.role===`assistant`&&Array.isArray(e.content)){let t=e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
22
- `),n=e.content.filter(e=>e.type===`tool_use`),r={role:`assistant`,content:t||null};n.length>0&&(r.tool_calls=n.map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input)}}))),l.push(r);continue}if(e.role===`user`&&Array.isArray(e.content)){let t=e.content.filter(e=>e.type===`tool_result`),n=nn(e.content,i),r=n.filter(e=>e.type===`text`).map(e=>e.text).join(`
23
- `);if(t.length===0){n.length>0&&l.push({role:`user`,content:n});continue}r&&l.push({role:`user`,content:r});for(let e of t){let t;t=typeof e.content==`string`?e.content:Array.isArray(e.content)?Xt(e.content,i):JSON.stringify(e.content),l.push({role:`tool`,tool_call_id:e.tool_use_id,content:t})}continue}l.push(e)}let u=e.getModelInfo(i),d=(this.provider.id!==`ollama`||u?.supportsTools!==!1)&&n?.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.input_schema}}))||[],f={model:i,max_tokens:a,messages:l,...d.length>0&&{tools:d}};return this.provider.id===`ollama`&&u?.contextWindow&&u.contextWindow>0&&(f.options={...f.options||{},num_ctx:u.contextWindow}),this.provider.id===`openrouter`&&s&&(f.plugins=[{id:`context-compression`,enabled:!0}]),(this.provider.reasoningParam===`reasoning`||this.provider.reasoningParam===`thinkingConfig`)&&c&&(f.reasoning=c),f}parseResponse(e){let t=e.choices?.[0];if(!t)throw Error(`No choices in OpenAI response`);let{message:n,finish_reason:r}=t,i=[],a=`end_turn`;if(typeof n.content==`string`&&n.content){let e=v(n.content,`openai`);e&&i.push({type:`text`,text:e})}if(n.tool_calls&&Array.isArray(n.tool_calls)){a=`tool_use`;for(let e of n.tool_calls){let t;try{t=typeof e.function.arguments==`string`?JSON.parse(e.function.arguments):e.function.arguments}catch(e){console.error(`Failed to parse tool arguments:`,e),t={}}i.push({type:`tool_use`,id:e.id||`call_${Date.now()}_${Math.random()}`,name:e.function.name,input:t})}}return r===`tool_calls`&&(a=`tool_use`),{content:i,stop_reason:a,usage:{input_tokens:e.usage?.prompt_tokens||0,output_tokens:e.usage?.completion_tokens||0}}}},dn=class extends ln{formatRequest(t,n,r){let{model:i,maxTokens:a,system:o,reasoning:s}=r,c=e.getModelInfo(i),l=!(an(i)||c?.supportsPromptCaching===!1)&&(r.promptCaching===!0||r.promptCaching!==!1&&on(i)),u=t.filter(e=>e.role!==`system`).map(e=>Array.isArray(e.content)?{...e,content:sn(e.content,i)}:{...e}),d=n?.map(e=>({name:e.name,description:e.description,input_schema:e.input_schema}))||[];if(l&&d.length>0){let e=d[d.length-1];e.cache_control={type:`ephemeral`}}let f=l&&typeof o==`string`&&o.trim().length>0?[{type:`text`,text:o,cache_control:{type:`ephemeral`}}]:o;if(l&&u.length>1)for(let e=u.length-1;e>=0;e--){let t=u[e];if(t.role===`user`){if(typeof t.content==`string`)u[e]={...t,content:[{type:`text`,text:t.content,cache_control:{type:`ephemeral`}}]};else if(Array.isArray(t.content)&&t.content.length>0){let n=[...t.content],r=n.length-1,i=n[r];i&&typeof i==`object`&&!i.cache_control&&(n[r]={...i,cache_control:{type:`ephemeral`}},u[e]={...t,content:n})}break}}let p={model:i,max_tokens:a,...o&&{system:f},messages:u,...d.length>0&&{tools:d}};if(this.provider.reasoningParam===`thinking`&&s?.max_tokens&&Number.isFinite(s.max_tokens))p.thinking={type:`enabled`,budget_tokens:Math.max(1024,Math.floor(s.max_tokens))};else if(this.provider.reasoningParam===`thinking`&&typeof s?.effort==`string`){let e=bn(s.effort);e>0&&(p.thinking={type:`enabled`,budget_tokens:Math.max(1024,Math.floor(a*e))})}return p}parseResponse(e){return{content:Array.isArray(e.content)?e.content.map(e=>e?.type!==`text`||typeof e?.text!=`string`?e:{...e,text:v(e.text,`anthropic`)}).filter(e=>e?.type!==`text`||typeof e.text==`string`&&e.text.length>0):[],stop_reason:e.stop_reason||`end_turn`,usage:{input_tokens:e.usage?.input_tokens||0,output_tokens:e.usage?.output_tokens||0,cache_read_input_tokens:e.usage?.cache_read_input_tokens||0,cache_creation_input_tokens:e.usage?.cache_creation_input_tokens||0}}}};function fn(e,t){return e.map(e=>{if(e.type===`text`)return{text:e.text};if(e.type===`image_url`){let t=e.image_url.url;if(t.startsWith(`data:`)){let e=t.match(/^data:([^;]+);base64,(.+)$/);if(e)return{inlineData:{mimeType:e[1],data:e[2]}}}}if(e.type===`document_url`||e.type===`audio_url`||e.type===`video_url`){let t=e[e.type]?.url;if(t?.startsWith(`data:`)){let e=t.match(/^data:([^;]+);base64,(.+)$/);if(e)return{inlineData:{mimeType:e[1],data:e[2]}}}}if(e.type===`tool_use`)return{functionCall:{name:e.name,args:e.input||{}}};if(e.type===`tool_result`){let t;return t=typeof e.content==`string`?e.content:Array.isArray(e.content)?Yt(e.content):typeof e.output==`string`?e.output:JSON.stringify(e.output??e.content??``),{functionResponse:{name:e.name,response:{result:t}}}}return{text:``}}).filter(Boolean)}var pn=class extends ln{formatRequest(e,t,n){let{model:r,maxTokens:i,system:a}=n,o=e.filter(e=>e.role!==`system`).map(e=>({role:e.role===`assistant`?`model`:e.role===`tool`?`function`:`user`,parts:Array.isArray(e.content)?fn(e.content,r):[{text:e.content||``}]})),s=t?.map(e=>({name:e.name,description:e.description,parameters:e.input_schema}))||[];return{contents:o,...a&&{system_instruction:{parts:[{text:a}]}},generationConfig:{maxOutputTokens:i},...s.length>0&&{tools:[{function_declarations:s}]}}}parseResponse(e){let t=e.candidates?.[0];if(!t)throw Error(`No candidates in Gemini response`);let n=[],r=`end_turn`;if(t.content?.parts)for(let e of t.content.parts){if(e.text){let t=v(e.text,`openai`);t&&n.push({type:`text`,text:t})}e.functionCall&&(r=`tool_use`,n.push({type:`tool_use`,id:`call_${Date.now()}_${Math.random()}`,name:e.functionCall.name,input:e.functionCall.args||{}}))}if(t.finishReason===`SAFETY`)throw Error(`Gemini response blocked by safety filters`);return{content:n,stop_reason:r,usage:{input_tokens:e.usageMetadata?.promptTokenCount||0,output_tokens:e.usageMetadata?.candidatesTokenCount||0}}}};function mn(e){return e.replace(/<\|channel>[\s\S]*?<channel\|>/g,``).replace(/^[ \t]+$/gm,``).replace(/\n{3,}/g,`
20
+ {%- endif -%}`;let d=Ct(n,r),f=St(i),p=yt.get(c);return p||(p=new _t(c),yt.set(c,p)),p.render({messages:d,tools:f,documents:a||null,add_generation_prompt:o,bos_token:l||``,eos_token:u||``,pad_token:e.padToken||``,unk_token:e.unkToken||``})}function Tt(){let e=globalThis;return e.Summarizer||e.ai?.summarizer}function Et(){let e=globalThis;return e.Writer||e.ai?.writer}function Dt(){let e=globalThis;return e.Rewriter||e.ai?.rewriter}function Ot(){let e=globalThis;return e.LanguageDetector||e.ai?.languageDetector||e.translation?.languageDetector}function kt(){let e=globalThis;return e.Translator||e.ai?.translator||e.translation?.translator}function At(){let e=globalThis;return e.Proofreader||e.ai?.proofreader}function jt(){let e=globalThis;return e.SemanticEmbedder||e.TextEmbedder||e.ai?.semanticEmbedder||e.ai?.textEmbedder}async function Mt(){if(typeof navigator>`u`||!(`gpu`in navigator))return!1;try{let e=await navigator.gpu.requestAdapter({powerPreference:`high-performance`});if(!e||e.isFallbackAdapter===!0||e.features&&!e.features.has(`shader-f16`))return!1;let t=e.info||(typeof e.requestAdapterInfo==`function`?await e.requestAdapterInfo():null);if(t){let e=(t.vendor||``).toLowerCase(),n=(t.architecture||``).toLowerCase(),r=(t.description||``).toLowerCase(),i=(t.device||``).toLowerCase(),a=(t.adapterType||t.deviceType||t.type||``).toLowerCase();if(a===`cpu`||a===`software`||n===`swiftshader`||n===`llvmpipe`||n===`softpipe`||n===`lavapipe`||n===`cpu`||e.includes(`swiftshader`)||r.includes(`llvmpipe`)||r.includes(`softpipe`)||r.includes(`lavapipe`)||r.includes(`software`)||r.includes(`basic render`)||i.includes(`llvmpipe`)||i.includes(`softpipe`)||i.includes(`lavapipe`)||i.includes(`swiftshader`)||i.includes(`basic render`))return!1}let n=await e.requestDevice();return n?(typeof n.destroy==`function`&&n.destroy(),!0):!1}catch{return!1}}function Nt(e){let t=e.toLowerCase();return t.includes(`webgpu`)||t.includes(`webgpuinit`)||t.includes(`no available backend`)||t.includes(`webnn`)||t.includes(`error_code: 9`)||t.includes(`could not find an implementation`)||t.includes(`gatherblockquantized`)||t.includes(`ort_not_implemented`)||t.includes(`error_code: 6`)||t.includes(`bad_alloc`)||t.includes(`out of memory`)||t.includes(`allocation failed`)}let Pt=n;async function Ft(){try{let e=await i();if(e){let t=await a(e,r.PROMPT_API_FALLBACK_MODEL);if(t&&typeof t==`string`)return t}}catch{}return Pt}async function Z(e,t){try{return await e.create(t)}catch(n){let r=String(n?.message||n),i=globalThis,a=i.TRANSFORMERS_CONFIG?.device??``;if((a===`webgpu`||a.startsWith(`webnn`))&&Nt(r)){let o=await Ft();return console.warn(`Built-in AI Polyfill: ${a} backend failed (${r.slice(0,120)}). Retrying with WASM/q4 CPU fallback (${o})...`,n),i.TRANSFORMERS_CONFIG||={apiKey:`dummy`},i.TRANSFORMERS_CONFIG.device=`wasm`,i.TRANSFORMERS_CONFIG.dtype=`q4`,i.TRANSFORMERS_CONFIG.modelName=o,i.TRANSFORMERS_CONFIG.env||(i.TRANSFORMERS_CONFIG.env={useBrowserCache:!1,useWasmCache:!0,fetch:w()}),await e.create(t)}throw n}}async function Q(){let e=globalThis,t=[];`document`in e||(e.document={defaultView:e,documentElement:null,querySelector:()=>null,querySelectorAll:()=>[],createElement:e=>typeof OffscreenCanvas<`u`&&e===`canvas`?new OffscreenCanvas(300,150):{}}),`MutationObserver`in e||(e.MutationObserver=class{observe(){}disconnect(){}takeRecords(){return[]}});let n;if(!(`LanguageModel`in e)&&!e.ai?.languageModel){if(n=await Ft(),e.TRANSFORMERS_CONFIG)e.TRANSFORMERS_CONFIG.env||(e.TRANSFORMERS_CONFIG.env={useBrowserCache:!1,useWasmCache:!0,fetch:w()});else{let t=`wasm`,o=`q4f16`,s=null,c=null;try{let e=await i();e&&(s=await a(e,r.PROMPT_API_BACKEND)||await a(e,r.TRANSFORMERS_JS_BACKEND)||null,c=await a(e,r.PROMPT_API_DTYPE_STRATEGY)||await a(e,r.TRANSFORMERS_JS_DTYPE_STRATEGY)||null)}catch{}s===`wasm`?t=`wasm`:s===`webgpu`?t=`webgpu`:s&&s.startsWith(`webnn`)?t=`webnn`:typeof navigator<`u`&&(`ml`in navigator?t=`webnn`:`gpu`in navigator&&await Mt()&&(t=`webgpu`)),o=c&&c!==`auto`?c:`q4f16`,e.TRANSFORMERS_CONFIG={apiKey:`dummy`,device:t,dtype:o,...n?{modelName:n}:{},env:{useBrowserCache:!1,useWasmCache:!0,fetch:w()}}}t.push(import(`./chunk-BuquFeWd.js`).then(t=>{t?.LanguageModel&&!e.LanguageModel&&(e.LanguageModel=t.LanguageModel)}).catch(()=>{}))}e.TRANSFORMERS_CONFIG&&(n||=await Ft(),n&&(e.TRANSFORMERS_CONFIG.modelName=n)),Tt()||t.push(import(`./chunk--WxTVWiq.js`).then(t=>{t?.Summarizer&&!e.Summarizer&&(e.Summarizer=t.Summarizer)}).catch(()=>{})),Et()||t.push(import(`./chunk-l1qz7ZUx.js`).then(t=>{t?.Writer&&!e.Writer&&(e.Writer=t.Writer)}).catch(()=>{})),Dt()||t.push(import(`./chunk-DaDVY8Zu.js`).then(t=>{t?.Rewriter&&!e.Rewriter&&(e.Rewriter=t.Rewriter)}).catch(()=>{})),Ot()||t.push(import(`./chunk-D5LklvEB.js`).then(t=>{t?.LanguageDetector&&!e.LanguageDetector&&(e.LanguageDetector=t.LanguageDetector)}).catch(()=>{})),kt()||t.push(import(`./chunk-DQ1cyYQE.js`).then(t=>{t?.Translator&&!e.Translator&&(e.Translator=t.Translator)}).catch(()=>{})),t.length>0&&await Promise.all(t)}function $(e,t){if(t)return n=>{!n||typeof n.addEventListener!=`function`||(t({status:`running`,progress:0,message:`Downloading ${e} model... 0%`}),n.addEventListener(`downloadprogress`,n=>{let r=Number(n?.loaded),i=Number(n?.total),a=null,o=``;Number.isFinite(r)&&Number.isFinite(i)&&i>0?(a=Math.max(0,Math.min(1,r/i)),o=` ${Math.round(a*100)}%`):Number.isFinite(r)&&r>=0&&r<=1?(a=Math.max(0,Math.min(1,r)),o=` ${Math.round(a*100)}%`):Number.isFinite(r)&&r>1&&(o=` (${(r/1024/1024).toFixed(1)} MB downloaded)`),t({status:`running`,progress:a,message:`Downloading ${e} model...${o}`})}))}}async function It(e,t){await Q();let n=Tt();if(!n)throw Error(`Summarizer API is not supported or polyfilled`);let r=$(`Summarizer`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.summarize(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Lt(e,t){await Q();let n=Et();if(!n)throw Error(`Writer API is not supported or polyfilled`);let r=$(`Writer`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.write(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Rt(e,t){await Q();let n=Dt();if(!n)throw Error(`Rewriter API is not supported or polyfilled`);let r=$(`Rewriter`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.rewrite(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}async function zt(e,t){await Q();let n=Ot();if(!n)throw Error(`Language Detector API is not supported or polyfilled`);let r=$(`LanguageDetector`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{return await i.detect(e)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Bt(e,t){await Q();let n=kt();if(!n)throw Error(`Translator API is not supported or polyfilled`);let r=$(`Translator`,t?.onProgress),i=await Z(n,{...t,...r?{monitor:r}:{}});try{return await i.translate(e)}finally{typeof i.destroy==`function`&&i.destroy()}}async function Vt(e,t){await Q();let n=At();if(n){let r=$(`Proofreader`,t?.onProgress),i=await Z(n,{...t||{},...r?{monitor:r}:{}});try{if(typeof i.proofread==`function`)return await i.proofread(e,t?.context?{context:t.context}:void 0)}finally{typeof i.destroy==`function`&&i.destroy()}}return await Rt(e,{context:t?.context?`Proofread and correct grammar, spelling, and style errors. ${t.context}`:`Proofread and correct grammar, spelling, and style errors.`,onProgress:t?.onProgress})}async function Ht(e,t){await Q();let n=jt();if(!n)throw Error(`Semantic Embedder API is not supported in this browser environment. Enable #semantic-embedder-api in chrome://flags or Edge Canary.`);let r=$(`SemanticEmbedder`,t?.onProgress),i=await Z(n,{...t?.taskType?{taskType:t.taskType}:{},...r?{monitor:r}:{}});try{return await i.embed(e)}finally{typeof i.destroy==`function`&&i.destroy()}}function Ut(e){return`[Attachment: ${e.fileName} (${e.mimeType}) is available in chat history${e.path?` at ${e.path}`:``}]`}function Wt(e){return e.map(e=>e.type===`text`?e.text:e.type===`image`?`[Image: ${e.media_type}, ${Math.ceil(e.data.length*3/4)} bytes base64-encoded]`:``).filter(Boolean).join(`
21
+ `)}function Gt(e,t){if(!qt(t))return Wt(e);let n=[];for(let t of e)t.type===`text`?n.push({type:`text`,text:t.text}):t.type===`image`&&n.push({type:`image_url`,image_url:{url:`data:${t.media_type};base64,${t.data}`}});return n}function Kt(e,t){if(!qt(t))return Wt(e);let n=[];for(let t of e)t.type===`text`?n.push({type:`text`,text:t.text}):t.type===`image`&&n.push({type:`image`,source:{type:`base64`,media_type:t.media_type,data:t.data}});return n}function qt(e){let t=l(e);return t.images||t.routerByFeatures}function Jt(e){let t=l(e);return t.audio||t.routerByFeatures}function Yt(e){let t=l(e);return t.documents||t.routerByFeatures}function Xt(e){let t=e.toLowerCase();return t.includes(`wav`)?`wav`:t.includes(`flac`)?`flac`:t.includes(`ogg`)?`ogg`:t.includes(`aac`)?`aac`:t.includes(`webm`)?`webm`:t.includes(`mp4`)?`mp4`:`mp3`}function Zt(e,t){let n=[],r=qt(t);for(let i of e){if(i?.type===`text`){n.push({type:`text`,text:i.text||``});continue}i?.type===`attachment`&&(i.mediaType===`image`&&typeof i.data==`string`&&i.data&&r?n.push({type:`image_url`,image_url:{url:`data:${i.mimeType};base64,${i.data}`}}):i.mediaType===`audio`&&typeof i.data==`string`&&i.data&&Jt(t)?n.push({type:`input_audio`,input_audio:{data:i.data,format:Xt(i.mimeType)}}):n.push({type:`text`,text:Ut(i)}))}return n}function Qt(e){return typeof e!=`string`||e.trim().length===0?``:e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``)}function $t(e){let t=Qt(e);return t?t.includes(`claude-1`)||t.includes(`claude-2`)||t.includes(`claude-v1`)||t.includes(`claude-v2`)||t.includes(`claude-instant`):!1}function en(t){if(typeof t!=`string`||t.trim().length===0)return!1;let n=e.getModelInfo(t);if(typeof n?.supportsPromptCaching==`boolean`)return n.supportsPromptCaching;let r=Qt(t);return!$t(r)&&!!(r.includes(`claude-3-5-sonnet`)||r.includes(`claude-3-5-haiku`)||r.includes(`claude-3-7-sonnet`)||r.includes(`claude-3-haiku`)||r.includes(`claude-3-opus`)||/claude-(?:sonnet|opus|haiku)-[4-9]/.test(r)||/claude-[4-9]-(?:sonnet|opus|haiku)/.test(r))}function tn(e,t){let n=[],r=qt(t);for(let i of e){if(i?.type===`text`){let e=typeof i.text==`string`?i.text:``;if(e.trim().length===0)continue;n.push({type:`text`,text:e,...i.cache_control&&{cache_control:i.cache_control}});continue}if(i?.type===`tool_use`){n.push(i);continue}if(i?.type===`thinking`){n.push({type:`thinking`,thinking:i.thinking||``,...typeof i.signature==`string`&&{signature:i.signature}});continue}if(i?.type===`redacted_thinking`){n.push({type:`redacted_thinking`,data:i.data||``});continue}if(i?.type===`tool_result`){Array.isArray(i.content)?n.push({...i,content:Kt(i.content,t)}):n.push(i);continue}i?.type===`attachment`&&(i.mediaType===`image`&&typeof i.data==`string`&&i.data&&r?n.push({type:`image`,source:{type:`base64`,media_type:i.mimeType,data:i.data},...i.cache_control&&{cache_control:i.cache_control}}):i.mediaType===`document`&&typeof i.data==`string`&&i.data&&Yt(t)?n.push({type:`document`,source:{type:`base64`,media_type:`application/pdf`,data:i.data},...i.cache_control&&{cache_control:i.cache_control}}):n.push({type:`text`,text:Ut(i),...i.cache_control&&{cache_control:i.cache_control}}))}return n}function nn(e,t){let n={"Content-Type":`application/json`,...e.headers};return e.apiKeyHeaderFormat?n[e.apiKeyHeader]=e.apiKeyHeaderFormat.replace(`{key}`,t):n[e.apiKeyHeader]=t,n}var rn=class{provider;constructor(e){this.provider=e}formatRequest(e,t,n){throw Error(`Not implemented`)}parseResponse(e){throw Error(`Not implemented`)}},an=class extends rn{formatRequest(t,n,r){let{model:i,maxTokens:a,system:o,contextCompression:s,reasoning:c}=r,l=[];o&&l.push({role:`system`,content:o});for(let e of t){if(e.role===`system`){if(o)continue;l.push(e);continue}if(e.role===`assistant`&&Array.isArray(e.content)){let t=e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
22
+ `),n=e.content.filter(e=>e.type===`tool_use`),r={role:`assistant`,content:t||null};n.length>0&&(r.tool_calls=n.map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input)}}))),l.push(r);continue}if(e.role===`user`&&Array.isArray(e.content)){let t=e.content.filter(e=>e.type===`tool_result`),n=Zt(e.content,i),r=n.filter(e=>e.type===`text`).map(e=>e.text).join(`
23
+ `);if(t.length===0){n.length>0&&l.push({role:`user`,content:n});continue}r&&l.push({role:`user`,content:r});for(let e of t){let t;t=typeof e.content==`string`?e.content:Array.isArray(e.content)?Gt(e.content,i):JSON.stringify(e.content),l.push({role:`tool`,tool_call_id:e.tool_use_id,content:t})}continue}l.push(e)}let u=e.getModelInfo(i),d=(this.provider.id!==`ollama`||u?.supportsTools!==!1)&&n?.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.input_schema}}))||[],f={model:i,max_tokens:a,messages:l,...d.length>0&&{tools:d}};return this.provider.id===`ollama`&&u?.contextWindow&&u.contextWindow>0&&(f.options={...f.options||{},num_ctx:u.contextWindow}),this.provider.id===`openrouter`&&s&&(f.plugins=[{id:`context-compression`,enabled:!0}]),(this.provider.reasoningParam===`reasoning`||this.provider.reasoningParam===`thinkingConfig`)&&c&&(f.reasoning=c),f}parseResponse(e){let t=e.choices?.[0];if(!t)throw Error(`No choices in OpenAI response`);let{message:n,finish_reason:r}=t,i=[],a=`end_turn`;if(typeof n.content==`string`&&n.content){let e=p(n.content,`openai`);e&&i.push({type:`text`,text:e})}if(n.tool_calls&&Array.isArray(n.tool_calls)){a=`tool_use`;for(let e of n.tool_calls){let t;try{t=typeof e.function.arguments==`string`?JSON.parse(e.function.arguments):e.function.arguments}catch(e){console.error(`Failed to parse tool arguments:`,e),t={}}i.push({type:`tool_use`,id:e.id||`call_${Date.now()}_${Math.random()}`,name:e.function.name,input:t})}}return r===`tool_calls`&&(a=`tool_use`),{content:i,stop_reason:a,usage:{input_tokens:e.usage?.prompt_tokens||0,output_tokens:e.usage?.completion_tokens||0}}}},on=class extends rn{formatRequest(t,n,r){let{model:i,maxTokens:a,system:o,reasoning:s}=r,c=e.getModelInfo(i),l=!($t(i)||c?.supportsPromptCaching===!1)&&(r.promptCaching===!0||r.promptCaching!==!1&&en(i)),u=t.filter(e=>e.role!==`system`).map(e=>Array.isArray(e.content)?{...e,content:tn(e.content,i)}:{...e}),d=n?.map(e=>({name:e.name,description:e.description,input_schema:e.input_schema}))||[];if(l&&d.length>0){let e=d[d.length-1];e.cache_control={type:`ephemeral`}}let f=l&&typeof o==`string`&&o.trim().length>0?[{type:`text`,text:o,cache_control:{type:`ephemeral`}}]:o;if(l&&u.length>1)for(let e=u.length-1;e>=0;e--){let t=u[e];if(t.role===`user`){if(typeof t.content==`string`)u[e]={...t,content:[{type:`text`,text:t.content,cache_control:{type:`ephemeral`}}]};else if(Array.isArray(t.content)&&t.content.length>0){let n=[...t.content],r=n.length-1,i=n[r];i&&typeof i==`object`&&!i.cache_control&&(n[r]={...i,cache_control:{type:`ephemeral`}},u[e]={...t,content:n})}break}}let p={model:i,max_tokens:a,...o&&{system:f},messages:u,...d.length>0&&{tools:d}};if(this.provider.reasoningParam===`thinking`&&s?.max_tokens&&Number.isFinite(s.max_tokens))p.thinking={type:`enabled`,budget_tokens:Math.max(1024,Math.floor(s.max_tokens))};else if(this.provider.reasoningParam===`thinking`&&typeof s?.effort==`string`){let e=hn(s.effort);e>0&&(p.thinking={type:`enabled`,budget_tokens:Math.max(1024,Math.floor(a*e))})}return p}parseResponse(e){return{content:Array.isArray(e.content)?e.content.map(e=>e?.type!==`text`||typeof e?.text!=`string`?e:{...e,text:p(e.text,`anthropic`)}).filter(e=>e?.type!==`text`||typeof e.text==`string`&&e.text.length>0):[],stop_reason:e.stop_reason||`end_turn`,usage:{input_tokens:e.usage?.input_tokens||0,output_tokens:e.usage?.output_tokens||0,cache_read_input_tokens:e.usage?.cache_read_input_tokens||0,cache_creation_input_tokens:e.usage?.cache_creation_input_tokens||0}}}};function sn(e,t){return e.map(e=>{if(e.type===`text`)return{text:e.text};if(e.type===`image_url`){let t=e.image_url.url;if(t.startsWith(`data:`)){let e=t.match(/^data:([^;]+);base64,(.+)$/);if(e)return{inlineData:{mimeType:e[1],data:e[2]}}}}if(e.type===`document_url`||e.type===`audio_url`||e.type===`video_url`){let t=e[e.type]?.url;if(t?.startsWith(`data:`)){let e=t.match(/^data:([^;]+);base64,(.+)$/);if(e)return{inlineData:{mimeType:e[1],data:e[2]}}}}if(e.type===`tool_use`)return{functionCall:{name:e.name,args:e.input||{}}};if(e.type===`tool_result`){let t;return t=typeof e.content==`string`?e.content:Array.isArray(e.content)?Wt(e.content):typeof e.output==`string`?e.output:JSON.stringify(e.output??e.content??``),{functionResponse:{name:e.name,response:{result:t}}}}return{text:``}}).filter(Boolean)}var cn=class extends rn{formatRequest(e,t,n){let{model:r,maxTokens:i,system:a}=n,o=e.filter(e=>e.role!==`system`).map(e=>({role:e.role===`assistant`?`model`:e.role===`tool`?`function`:`user`,parts:Array.isArray(e.content)?sn(e.content,r):[{text:e.content||``}]})),s=t?.map(e=>({name:e.name,description:e.description,parameters:e.input_schema}))||[];return{contents:o,...a&&{system_instruction:{parts:[{text:a}]}},generationConfig:{maxOutputTokens:i},...s.length>0&&{tools:[{function_declarations:s}]}}}parseResponse(e){let t=e.candidates?.[0];if(!t)throw Error(`No candidates in Gemini response`);let n=[],r=`end_turn`;if(t.content?.parts)for(let e of t.content.parts){if(e.text){let t=p(e.text,`openai`);t&&n.push({type:`text`,text:t})}e.functionCall&&(r=`tool_use`,n.push({type:`tool_use`,id:`call_${Date.now()}_${Math.random()}`,name:e.functionCall.name,input:e.functionCall.args||{}}))}if(t.finishReason===`SAFETY`)throw Error(`Gemini response blocked by safety filters`);return{content:n,stop_reason:r,usage:{input_tokens:e.usageMetadata?.promptTokenCount||0,output_tokens:e.usageMetadata?.candidatesTokenCount||0}}}};function ln(e){return e.replace(/<\|channel>[\s\S]*?<channel\|>/g,``).replace(/^[ \t]+$/gm,``).replace(/\n{3,}/g,`
24
24
 
25
- `).trim()}function hn(e){let t=/<\|tool_call>call:([a-zA-Z_][a-zA-Z0-9_]*)(\{[\s\S]*?\})?<tool_call\|>/g,n=[];return{toolBlocks:n,residualText:e.replace(t,(e,t,r)=>{let i={};if(r)try{let e=JSON.parse(r);e&&typeof e==`object`&&!Array.isArray(e)&&(i=e)}catch{}return n.push({type:`tool_use`,id:`mesh_llm_call_${Date.now()}_${Math.random().toString(36).slice(2)}`,name:t,input:i}),``}).replace(/^[ \t]+$/gm,``).replace(/\n{3,}/g,`
25
+ `).trim()}function un(e){let t=/<\|tool_call>call:([a-zA-Z_][a-zA-Z0-9_]*)(\{[\s\S]*?\})?<tool_call\|>/g,n=[];return{toolBlocks:n,residualText:e.replace(t,(e,t,r)=>{let i={};if(r)try{let e=JSON.parse(r);e&&typeof e==`object`&&!Array.isArray(e)&&(i=e)}catch{}return n.push({type:`tool_use`,id:`mesh_llm_call_${Date.now()}_${Math.random().toString(36).slice(2)}`,name:t,input:i}),``}).replace(/^[ \t]+$/gm,``).replace(/\n{3,}/g,`
26
26
 
27
- `).trim()}}function gn(e){if(!e||!Array.isArray(e.content))return e;let t=[],n=!1;for(let r of e.content){if(r.type!==`text`){t.push(r);continue}let{toolBlocks:e,residualText:i}=hn(mn(r.text));i&&t.push({type:`text`,text:i}),e.length>0&&(n=!0,t.push(...e))}return{...e,content:t,stop_reason:n||e.stop_reason===`tool_use`?`tool_use`:e.stop_reason}}const _n={openai:un,anthropic:dn,google:pn,"mesh-llm":class extends un{parseResponse(e){return gn(super.parseResponse(e))}}};function vn(e){let t=_n[e.format];if(!t)throw Error(`Unsupported provider format: ${e.format}`);return new t(e)}function yn(e,t,n,r){return vn(e).formatRequest(t,n,r)}function bn(e){let t=e.toLowerCase();return t===`none`?0:t===`max`||t===`xhigh`?.95:t===`high`?.8:t===`medium`?.5:t===`low`?.2:t===`minimal`?.1:0}function xn(e,t){return vn(e).parseResponse(t)}function Sn(t){let n=e.getModelInfo(t);if(n?.contextWindow)return n.contextWindow;let r=t.toLowerCase();return r.includes(`gpt-4.1`)?1047576:r.includes(`gpt-5`)?4e5:r.includes(`gpt-4o`)||r.includes(`gpt-4-turbo`)?128e3:r===`gpt-4`||r.startsWith(`gpt-4-`)?8192:r.includes(`gpt-3.5-turbo`)?16385:r.includes(`gpt-3.5`)?4096:r.includes(`o1`)||r.includes(`o3`)||r.includes(`o4`)?2e5:r.includes(`claude-opus-4`)||r.includes(`claude-sonnet-4`)?1e6:r.includes(`claude`)?2e5:r.includes(`gemini-nano`)?4096:r.includes(`gemini-1.5-pro`)?2097152:r.includes(`gemini-2.5`)||r.includes(`gemini-2.0`)||r.includes(`gemini-1.5`)?1048576:r.includes(`gemini-1.0`)||r.includes(`gemini-pro`)?32768:r.includes(`gemini`)?1048576:r.includes(`llama-3.1`)||r.includes(`llama-3-1`)?128e3:r.includes(`llama-3`)?8192:r.includes(`llama`)?4096:r.includes(`gemma-4-12b`)||r.includes(`gemma-4-26b`)||r.includes(`gemma-4-31b`)||r.includes(`gemma-4-e9b`)||r.includes(`gemma-4-e27b`)?256e3:r.includes(`gemma-4`)||r.includes(`gemma 4`)||r.includes(`gemma-3-4b`)||r.includes(`gemma-3-12b`)||r.includes(`gemma-3-27b`)?128e3:r.includes(`gemma-3`)||r.includes(`gemma 3`)?32e3:r.includes(`gemma-2`)||r.includes(`gemma-7b`)||r.includes(`gemma-2b`)||r.includes(`gemma`)?8192:r.includes(`mistral-large`)?128e3:r.includes(`mistral`)?32e3:r.includes(`amazon.titan`)?8192:r.includes(`amazon.nova-micro`)||r.includes(`nova-micro`)?128e3:r.includes(`amazon.nova`)||r.includes(`nova-pro`)||r.includes(`nova-lite`)?3e5:r.includes(`ai21`)?8192:r.includes(`cohere`)||r.includes(`phi-4-mini`)?128e3:r.includes(`phi-4`)?16384:r.includes(`phi-3.5`)||r.includes(`128k`)?128e3:r.includes(`phi-3`)?4096:r.includes(`qwen3.5`)?262144:r.includes(`qwen3-0.6b`)||r.includes(`qwen3-1.7b`)?40960:r.includes(`qwen3`)?128e3:r===`mesh`?242144:4096}function Cn(e,t){if(e===`translate`)return`Translate the following text from ${t.sourceLanguage||`auto`} to ${t.targetLanguage}. Provide ONLY the raw translated text without commentary or quotation marks:\n\n${t.text}`;if(e===`summarize`)return`Summarize the following text (type: ${t.type||`tldr`}, format: ${t.format||`plain-text`}, length: ${t.length||`medium`}). Provide ONLY the summary:\n\n${t.text}`;if(e===`write`)return`Draft content for the following request (context: ${t.context||`none`}):\n\n${t.prompt}`;if(e===`rewrite`)return`Rewrite the following text (tone: ${t.tone||`standard`}, length: ${t.length||`as-is`}):\n\n${t.text}`;if(e===`proofread`)return`Proofread and correct grammar, spelling, and style in the following text. Provide ONLY the corrected text:\n\n${t.text}`;if(e===`detect-language`)return`Detect the language of the following text. Return ONLY a JSON array of objects with "detectedLanguage" (BCP 47 code) and "confidence" (0.0 - 1.0), e.g. [{"detectedLanguage":"en","confidence":0.99}]:\n\n${t.text}`;if(e===`semantic-embedder`)return`Provide a concise semantic description/representation for the following content:\n\n${JSON.stringify(t.text)}`;throw Error(`Unknown native AI task type: ${e}`)}async function wn(e){if(e.toolsBackendPref)return e.toolsBackendPref;if(e.db)try{let{getConfig:t}=await import(`./chunk-0WvYaMdi.js`),n=await t(e.db,r.BUILTIN_AI_TOOLS_BACKEND);if(n)return n}catch{}return`active_provider`}async function Tn(e,t,n){if(n.apiKey!==void 0)return n.apiKey;if(o!==void 0&&o.env){let e=o.env.SHADOW_CLAW_API_KEY;if(e)return e;switch(t){case`openrouter`:if(o.env.OPENROUTER_API_KEY)return o.env.OPENROUTER_API_KEY;break;case`huggingface`:if(o.env.HUGGINGFACE_API_KEY||o.env.HF_TOKEN)return o.env.HUGGINGFACE_API_KEY||o.env.HF_TOKEN||``;break;case`gemini_proxy`:if(o.env.GEMINI_API_KEY)return o.env.GEMINI_API_KEY;break}let n=`${t.toUpperCase()}_API_KEY`;if(o.env[n])return o.env[n]}if(n.db)try{let{getConfig:e}=await import(`./chunk-0WvYaMdi.js`),r=await e(n.db,`api_key:${t}`)||await e(n.db,`apiKey`);if(r)return r}catch{}return``}async function En(e){let{taskType:n,input:i,onProgress:a}=e;if(await wn(e)===`local`){if(n===`summarize`)return await Vt(i.text,{...i,onProgress:a});if(n===`write`)return await Ht(i.prompt,{...i,onProgress:a});if(n===`rewrite`)return await Ut(i.text,{...i,onProgress:a});if(n===`proofread`)return await Kt(i.text,{...i,onProgress:a});if(n===`detect-language`)return await Wt(i.text,{onProgress:a});if(n===`translate`)return await Gt(i.text,{sourceLanguage:i.sourceLanguage||`auto`,targetLanguage:i.targetLanguage||`en`,...i,onProgress:a});if(n===`semantic-embedder`)return await qt(i.text,{...i,onProgress:a});throw Error(`Unknown native AI task: ${n}`)}let s=d()?`openrouter`:`prompt_api`,c=e.providerId;if(!c&&e.db)try{let{getConfig:t}=await import(`./chunk-0WvYaMdi.js`);c=await t(e.db,r.PROVIDER)||s}catch{}c||=o!==void 0&&(o.env.SHADOW_CLAW_PROVIDER||o.env.SHADOW_CLAW_DEFAULT_PROVIDER)||s;let l=Cn(n,i);if(c===`prompt_api`){await Q();let e=globalThis,t=e.LanguageModel||e.ai?.languageModel;if(t&&typeof t.create==`function`){let e;try{e=await t.create()}catch(e){console.warn(`Prompt API session creation failed in active provider task:`,e)}if(e)try{let t=await e.prompt(l),r=String(t||``).trim();if(n===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}finally{typeof e.destroy==`function`&&e.destroy()}}}let u=t(c);if(!u||!u.baseUrl||u.baseUrl.startsWith(`builtin://`)||u.baseUrl.startsWith(`local://`)||u.format===`prompt_api`||u.format===`transformers_js`){if(n===`summarize`)return await Vt(i.text,i);if(n===`write`)return await Ht(i.prompt,i);if(n===`rewrite`)return await Ut(i.text,i);if(n===`proofread`)return await Kt(i.text,i);if(n===`detect-language`)return await Wt(i.text);if(n===`translate`)return await Gt(i.text,{sourceLanguage:i.sourceLanguage||`auto`,targetLanguage:i.targetLanguage||`en`,...i});if(n===`semantic-embedder`)return await qt(i.text,i);throw Error(`Provider ${c} not found and no local fallback available`)}let f=await Tn(u,c,e);if(u.requiresApiKey!==!1&&!f)throw Error(`Provider "${u.name||c}" requires an API key for task "${n}". Please provide an API key or configure tools backend.`);let p=e.model||u.defaultModel||`default`,m={...cn(u,f),...e.headers||{}},h=yn(u,[{role:`user`,content:l}],[],{maxTokens:e.maxTokens||2048,model:p,system:`You are a specialized text task assistant. Fulfill the user request directly and accurately without conversational filler.`}),g=await fetch(u.baseUrl,{body:JSON.stringify(h),headers:m,method:`POST`});if(!g.ok){let e=await g.text();throw Error(`Active provider task API error ${g.status}: ${e}`)}let _=xn(u,await g.json()).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(n===`detect-language`)try{let e=JSON.parse(_);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return _}export{f as A,ee as C,u as D,c as E,d as O,se as S,p as T,Ht as _,Sn as a,ce as b,Z as c,Q as d,Bt as f,Gt as g,Vt as h,yn as i,l as k,Wt as l,Ut as m,En as n,gn as o,Kt as p,cn as r,xn as s,Cn as t,qt as u,Ot as v,v as w,T as x,kt as y};
27
+ `).trim()}}function dn(e){if(!e||!Array.isArray(e.content))return e;let t=[],n=!1;for(let r of e.content){if(r.type!==`text`){t.push(r);continue}let{toolBlocks:e,residualText:i}=un(ln(r.text));i&&t.push({type:`text`,text:i}),e.length>0&&(n=!0,t.push(...e))}return{...e,content:t,stop_reason:n||e.stop_reason===`tool_use`?`tool_use`:e.stop_reason}}const fn={openai:an,anthropic:on,google:cn,"mesh-llm":class extends an{parseResponse(e){return dn(super.parseResponse(e))}}};function pn(e){let t=fn[e.format];if(!t)throw Error(`Unsupported provider format: ${e.format}`);return new t(e)}function mn(e,t,n,r){return pn(e).formatRequest(t,n,r)}function hn(e){let t=e.toLowerCase();return t===`none`?0:t===`max`||t===`xhigh`?.95:t===`high`?.8:t===`medium`?.5:t===`low`?.2:t===`minimal`?.1:0}function gn(e,t){return pn(e).parseResponse(t)}function _n(t){let n=e.getModelInfo(t);if(n?.contextWindow)return n.contextWindow;let r=t.toLowerCase();return r.includes(`gpt-4.1`)?1047576:r.includes(`gpt-5`)?4e5:r.includes(`gpt-4o`)||r.includes(`gpt-4-turbo`)?128e3:r===`gpt-4`||r.startsWith(`gpt-4-`)?8192:r.includes(`gpt-3.5-turbo`)?16385:r.includes(`gpt-3.5`)?4096:r.includes(`o1`)||r.includes(`o3`)||r.includes(`o4`)?2e5:r.includes(`claude-opus-4`)||r.includes(`claude-sonnet-4`)?1e6:r.includes(`claude`)?2e5:r.includes(`gemini-nano`)?4096:r.includes(`gemini-1.5-pro`)?2097152:r.includes(`gemini-2.5`)||r.includes(`gemini-2.0`)||r.includes(`gemini-1.5`)?1048576:r.includes(`gemini-1.0`)||r.includes(`gemini-pro`)?32768:r.includes(`gemini`)?1048576:r.includes(`llama-3.1`)||r.includes(`llama-3-1`)?128e3:r.includes(`llama-3`)?8192:r.includes(`llama`)?4096:r.includes(`gemma-4-12b`)||r.includes(`gemma-4-26b`)||r.includes(`gemma-4-31b`)||r.includes(`gemma-4-e9b`)||r.includes(`gemma-4-e27b`)?256e3:r.includes(`gemma-4`)||r.includes(`gemma 4`)||r.includes(`gemma-3-4b`)||r.includes(`gemma-3-12b`)||r.includes(`gemma-3-27b`)?128e3:r.includes(`gemma-3`)||r.includes(`gemma 3`)?32e3:r.includes(`gemma-2`)||r.includes(`gemma-7b`)||r.includes(`gemma-2b`)||r.includes(`gemma`)?8192:r.includes(`mistral-large`)?128e3:r.includes(`mistral`)?32e3:r.includes(`amazon.titan`)?8192:r.includes(`amazon.nova-micro`)||r.includes(`nova-micro`)?128e3:r.includes(`amazon.nova`)||r.includes(`nova-pro`)||r.includes(`nova-lite`)?3e5:r.includes(`ai21`)?8192:r.includes(`cohere`)||r.includes(`phi-4-mini`)?128e3:r.includes(`phi-4`)?16384:r.includes(`phi-3.5`)||r.includes(`128k`)?128e3:r.includes(`phi-3`)?4096:r.includes(`qwen3.5`)?262144:r.includes(`qwen3-0.6b`)||r.includes(`qwen3-1.7b`)?40960:r.includes(`qwen3`)?128e3:r===`mesh`?242144:4096}function vn(e,t){if(e===`translate`)return`Translate the following text from ${t.sourceLanguage||`auto`} to ${t.targetLanguage}. Provide ONLY the raw translated text without commentary or quotation marks:\n\n${t.text}`;if(e===`summarize`)return`Summarize the following text (type: ${t.type||`tldr`}, format: ${t.format||`plain-text`}, length: ${t.length||`medium`}). Provide ONLY the summary:\n\n${t.text}`;if(e===`write`)return`Draft content for the following request (context: ${t.context||`none`}):\n\n${t.prompt}`;if(e===`rewrite`)return`Rewrite the following text (tone: ${t.tone||`standard`}, length: ${t.length||`as-is`}):\n\n${t.text}`;if(e===`proofread`)return`Proofread and correct grammar, spelling, and style in the following text. Provide ONLY the corrected text:\n\n${t.text}`;if(e===`detect-language`)return`Detect the language of the following text. Return ONLY a JSON array of objects with "detectedLanguage" (BCP 47 code) and "confidence" (0.0 - 1.0), e.g. [{"detectedLanguage":"en","confidence":0.99}]:\n\n${t.text}`;if(e===`semantic-embedder`)return`Provide a concise semantic description/representation for the following content:\n\n${JSON.stringify(t.text)}`;throw Error(`Unknown native AI task type: ${e}`)}async function yn(e){if(e.toolsBackendPref)return e.toolsBackendPref;if(e.db)try{let{getConfig:t}=await import(`./chunk-0WvYaMdi.js`),n=await t(e.db,r.BUILTIN_AI_TOOLS_BACKEND);if(n)return n}catch{}return`active_provider`}async function bn(e,t,n){if(n.apiKey!==void 0)return n.apiKey;if(s!==void 0&&s.env){let e=s.env.SHADOW_CLAW_API_KEY;if(e)return e;switch(t){case`openrouter`:if(s.env.OPENROUTER_API_KEY)return s.env.OPENROUTER_API_KEY;break;case`huggingface`:if(s.env.HUGGINGFACE_API_KEY||s.env.HF_TOKEN)return s.env.HUGGINGFACE_API_KEY||s.env.HF_TOKEN||``;break;case`gemini_proxy`:if(s.env.GEMINI_API_KEY)return s.env.GEMINI_API_KEY;break}let n=`${t.toUpperCase()}_API_KEY`;if(s.env[n])return s.env[n]}if(n.db)try{let{getConfig:e}=await import(`./chunk-0WvYaMdi.js`),r=await e(n.db,`api_key:${t}`)||await e(n.db,`apiKey`);if(r)return r}catch{}return``}async function xn(e){let{taskType:n,input:i,onProgress:a}=e;if(await yn(e)===`local`){if(n===`summarize`)return await It(i.text,{...i,onProgress:a});if(n===`write`)return await Lt(i.prompt,{...i,onProgress:a});if(n===`rewrite`)return await Rt(i.text,{...i,onProgress:a});if(n===`proofread`)return await Vt(i.text,{...i,onProgress:a});if(n===`detect-language`)return await zt(i.text,{onProgress:a});if(n===`translate`)return await Bt(i.text,{sourceLanguage:i.sourceLanguage||`auto`,targetLanguage:i.targetLanguage||`en`,...i,onProgress:a});if(n===`semantic-embedder`)return await Ht(i.text,{...i,onProgress:a});throw Error(`Unknown native AI task: ${n}`)}let c=o()?`openrouter`:`prompt_api`,l=e.providerId;if(!l&&e.db)try{let{getConfig:t}=await import(`./chunk-0WvYaMdi.js`);l=await t(e.db,r.PROVIDER)||c}catch{}l||=s!==void 0&&(s.env.SHADOW_CLAW_PROVIDER||s.env.SHADOW_CLAW_DEFAULT_PROVIDER)||c;let u=vn(n,i);if(l===`prompt_api`){await Q();let e=globalThis,t=e.LanguageModel||e.ai?.languageModel;if(t&&typeof t.create==`function`){let e;try{e=await t.create()}catch(e){console.warn(`Prompt API session creation failed in active provider task:`,e)}if(e)try{let t=await e.prompt(u),r=String(t||``).trim();if(n===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}finally{typeof e.destroy==`function`&&e.destroy()}}}let d=t(l);if(!d||!d.baseUrl||d.baseUrl.startsWith(`builtin://`)||d.baseUrl.startsWith(`local://`)||d.format===`prompt_api`||d.format===`transformers_js`){if(n===`summarize`)return await It(i.text,i);if(n===`write`)return await Lt(i.prompt,i);if(n===`rewrite`)return await Rt(i.text,i);if(n===`proofread`)return await Vt(i.text,i);if(n===`detect-language`)return await zt(i.text);if(n===`translate`)return await Bt(i.text,{sourceLanguage:i.sourceLanguage||`auto`,targetLanguage:i.targetLanguage||`en`,...i});if(n===`semantic-embedder`)return await Ht(i.text,i);throw Error(`Provider ${l} not found and no local fallback available`)}let f=await bn(d,l,e);if(d.requiresApiKey!==!1&&!f)throw Error(`Provider "${d.name||l}" requires an API key for task "${n}". Please provide an API key or configure tools backend.`);let p=e.model||d.defaultModel||`default`,m={...nn(d,f),...e.headers||{}},h=mn(d,[{role:`user`,content:u}],[],{maxTokens:e.maxTokens||2048,model:p,system:`You are a specialized text task assistant. Fulfill the user request directly and accurately without conversational filler.`}),g=await fetch(d.baseUrl,{body:JSON.stringify(h),headers:m,method:`POST`});if(!g.ok){let e=await g.text();throw Error(`Active provider task API error ${g.status}: ${e}`)}let _=gn(d,await g.json()).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(n===`detect-language`)try{let e=JSON.parse(_);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return _}export{h as C,S,c as T,Lt as _,_n as a,ae as b,Z as c,Q as d,Ft as f,Bt as g,It as h,mn as i,zt as l,Rt as m,xn as n,dn as o,Vt as p,nn as r,gn as s,vn as t,Ht as u,Ct as v,p as w,ie as x,wt as y};
@@ -0,0 +1 @@
1
+ import{t as e}from"./chunk-CXi9LU9e2.js";export{e as importRemoteArtifacts};