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.
- package/.well-known/mcp/server-card.json +1 -1
- package/.well-known/mcp.json +1 -1
- package/README.md +5 -1
- package/dist/cli/chunk-BCLxzLO92.js +5 -0
- package/dist/cli/chunk-BHNCi3ui2.js +1 -0
- package/dist/cli/chunk-BMPhLSn8.js +1 -0
- package/dist/cli/chunk-BMW6QB5-2.js +27 -0
- package/dist/cli/chunk-BQCWtrzh.js +1 -0
- package/dist/cli/chunk-BQCWtrzh2.js +1 -0
- package/dist/cli/chunk-BdJUjMuz.js +1 -0
- package/dist/cli/chunk-C47WdxKx2.js +1 -0
- package/dist/cli/{chunk-D9dku_3t.js → chunk-CAqvQuGr.js} +1 -1
- package/dist/cli/{chunk-DoVxObGa2.js → chunk-CHzhUS1N2.js} +1 -1
- package/dist/cli/chunk-CUMlq7Jw2.js +263 -0
- package/dist/cli/chunk-CXi9LU9e2.js +110 -0
- package/dist/cli/chunk-ChefnX-r.js +110 -0
- package/dist/cli/{chunk-zvi71-77.js → chunk-D3JxbzjI2.js} +15 -15
- package/dist/cli/chunk-D7VYMl092.js +1 -0
- package/dist/cli/chunk-DNIduiJ82.js +91 -0
- package/dist/cli/{chunk-C4UfzPK4.js → chunk-DTbrldk_.js} +1 -1
- package/dist/cli/chunk-DZ8YBXax.js +969 -0
- package/dist/cli/chunk-DduRvw8B2.js +1 -0
- package/dist/cli/chunk-DnYxGjdu2.js +1 -0
- package/dist/cli/chunk-Ea7nXmgb2.js +1 -0
- package/dist/cli/{chunk-BRiGkTIi.js → chunk-EohNY8vW.js} +1 -1
- package/dist/cli/chunk-LIIpZlwP2.js +1 -0
- package/dist/cli/chunk-LIJZHJml2.js +1 -0
- package/dist/cli/chunk-MHBh2BgF2.js +91 -0
- package/dist/cli/{chunk-BQ7lHA7c.js → chunk-SKgLGyTY.js} +1 -1
- package/dist/cli/chunk-kcJSXcbq2.js +1 -0
- package/dist/cli/cli.js +12 -11
- package/dist/headless-agent.js +191 -187
- package/dist/lib/components/index.js +21 -21
- package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
- package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
- package/dist/lib/components/settings/shadow-claw-git.js +1 -1
- package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
- package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
- package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
- package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
- package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
- package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
- package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
- package/dist/lib/components/shadow-claw-channel-config.js +1 -1
- package/dist/lib/components/shadow-claw-channels.js +1 -1
- package/dist/lib/components/shadow-claw-chat.js +1 -1
- package/dist/lib/components/shadow-claw-control-plane.js +1 -1
- package/dist/lib/components/shadow-claw-conversations.js +1 -1
- package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
- package/dist/lib/components/shadow-claw-files.js +1 -1
- package/dist/lib/components/shadow-claw-git.js +1 -1
- package/dist/lib/components/shadow-claw-llm.js +1 -1
- package/dist/lib/components/shadow-claw-networking.js +1 -1
- package/dist/lib/components/shadow-claw-notifications.js +1 -1
- package/dist/lib/components/shadow-claw-pages.js +1 -1
- package/dist/lib/components/shadow-claw-peerjs.js +1 -1
- package/dist/lib/components/shadow-claw-settings.js +1 -1
- package/dist/lib/components/shadow-claw-storage.js +1 -1
- package/dist/lib/components/shadow-claw-task-server.js +1 -1
- package/dist/lib/components/shadow-claw-tasks.js +1 -1
- package/dist/lib/components/shadow-claw-terminal.js +1 -1
- package/dist/lib/components/shadow-claw-tools.js +1 -1
- package/dist/lib/components/shadow-claw-webvm.js +1 -1
- package/dist/lib/components/shadow-claw.js +1 -1
- package/dist/lib/{configurePeerJs-DSRcNp3v.js → configurePeerJs-CdPzmpyI.js} +2 -2
- package/dist/lib/{configurePeerJs-DSRcNp3v.js.map → configurePeerJs-CdPzmpyI.js.map} +1 -1
- package/dist/lib/index.js +21 -21
- package/dist/lib/{initControlPlane-CWfE_Oan.js → initControlPlane-BLymRW34.js} +7 -7
- package/dist/lib/{initControlPlane-CWfE_Oan.js.map → initControlPlane-BLymRW34.js.map} +1 -1
- package/dist/lib/{orchestrator-BEUug1TW.js → orchestrator-DZkhJj7f.js} +13 -2
- package/dist/lib/{orchestrator-BEUug1TW.js.map → orchestrator-DZkhJj7f.js.map} +1 -1
- package/dist/lib/{orchestrator-CGUzfGbE.js → orchestrator-ZsQTRknI.js} +5 -5
- package/dist/lib/{orchestrator-CGUzfGbE.js.map → orchestrator-ZsQTRknI.js.map} +1 -1
- package/dist/lib/{peerjs-BSD88rT3.js → peerjs-CJYfnR5V.js} +3 -3
- package/dist/lib/{peerjs-BSD88rT3.js.map → peerjs-CJYfnR5V.js.map} +1 -1
- package/dist/lib/{push-client-CC3qifgc.js → push-client-C9hIPqLZ.js} +2 -2
- package/dist/lib/{push-client-CC3qifgc.js.map → push-client-C9hIPqLZ.js.map} +1 -1
- package/dist/lib/{shadow-claw-BWS-UVnE.js → shadow-claw-8qL2-QoK.js} +4 -4
- package/dist/lib/{shadow-claw-BWS-UVnE.js.map → shadow-claw-8qL2-QoK.js.map} +1 -1
- package/dist/lib/{shadow-claw-channel-config-DwMn3nFJ.js → shadow-claw-channel-config-CvnbqGBy.js} +3 -3
- package/dist/lib/{shadow-claw-channel-config-DwMn3nFJ.js.map → shadow-claw-channel-config-CvnbqGBy.js.map} +1 -1
- package/dist/lib/{shadow-claw-channels-BdE4cUlx.js → shadow-claw-channels-CkCvjWn1.js} +2 -2
- package/dist/lib/{shadow-claw-channels-BdE4cUlx.js.map → shadow-claw-channels-CkCvjWn1.js.map} +1 -1
- package/dist/lib/{shadow-claw-chat-DqaMoE9C.js → shadow-claw-chat-B1YEHKN3.js} +3 -3
- package/dist/lib/{shadow-claw-chat-DqaMoE9C.js.map → shadow-claw-chat-B1YEHKN3.js.map} +1 -1
- package/dist/lib/{shadow-claw-control-plane-D3DUDO29.js → shadow-claw-control-plane-jjo789IE.js} +6 -6
- package/dist/lib/{shadow-claw-control-plane-D3DUDO29.js.map → shadow-claw-control-plane-jjo789IE.js.map} +1 -1
- package/dist/lib/{shadow-claw-conversations-XT-OXogj.js → shadow-claw-conversations-MMT7wYH3.js} +2 -2
- package/dist/lib/{shadow-claw-conversations-XT-OXogj.js.map → shadow-claw-conversations-MMT7wYH3.js.map} +1 -1
- package/dist/lib/{shadow-claw-file-viewer-DJqxyd97.js → shadow-claw-file-viewer-qSkD1RQK.js} +2 -2
- package/dist/lib/{shadow-claw-file-viewer-DJqxyd97.js.map → shadow-claw-file-viewer-qSkD1RQK.js.map} +1 -1
- package/dist/lib/{shadow-claw-files-CUEJlA1o.js → shadow-claw-files-Cg8ycQ_N.js} +2 -2
- package/dist/lib/{shadow-claw-files-CUEJlA1o.js.map → shadow-claw-files-Cg8ycQ_N.js.map} +1 -1
- package/dist/lib/{shadow-claw-git-D_iVcb86.js → shadow-claw-git-gaClz-ZC.js} +3 -3
- package/dist/lib/{shadow-claw-git-D_iVcb86.js.map → shadow-claw-git-gaClz-ZC.js.map} +1 -1
- package/dist/lib/{shadow-claw-llm-C2msAsyU.js → shadow-claw-llm-DyOz0qzT.js} +2 -2
- package/dist/lib/{shadow-claw-llm-C2msAsyU.js.map → shadow-claw-llm-DyOz0qzT.js.map} +1 -1
- package/dist/lib/{shadow-claw-networking-D2NvodC-.js → shadow-claw-networking-B2xx0UUR.js} +2 -2
- package/dist/lib/{shadow-claw-networking-D2NvodC-.js.map → shadow-claw-networking-B2xx0UUR.js.map} +1 -1
- package/dist/lib/{shadow-claw-notifications-BcvVn_vu.js → shadow-claw-notifications-BjKfZy0k.js} +2 -2
- package/dist/lib/{shadow-claw-notifications-BcvVn_vu.js.map → shadow-claw-notifications-BjKfZy0k.js.map} +1 -1
- package/dist/lib/{shadow-claw-pages-CTMXRhEX.js → shadow-claw-pages-CJ2tsMtL.js} +2 -2
- package/dist/lib/{shadow-claw-pages-CTMXRhEX.js.map → shadow-claw-pages-CJ2tsMtL.js.map} +1 -1
- package/dist/lib/{shadow-claw-peerjs-C2YvypqM.js → shadow-claw-peerjs-CazCkXQ1.js} +3 -3
- package/dist/lib/{shadow-claw-peerjs-C2YvypqM.js.map → shadow-claw-peerjs-CazCkXQ1.js.map} +1 -1
- package/dist/lib/{shadow-claw-settings-B0hiDwEt.js → shadow-claw-settings-qro6pO9I.js} +2 -2
- package/dist/lib/{shadow-claw-settings-B0hiDwEt.js.map → shadow-claw-settings-qro6pO9I.js.map} +1 -1
- package/dist/lib/{shadow-claw-storage-Dt4yg4Q4.js → shadow-claw-storage-ewDdvCGa.js} +2 -2
- package/dist/lib/{shadow-claw-storage-Dt4yg4Q4.js.map → shadow-claw-storage-ewDdvCGa.js.map} +1 -1
- package/dist/lib/{shadow-claw-task-server-B2gbZaz4.js → shadow-claw-task-server-DpqQcNIs.js} +2 -2
- package/dist/lib/{shadow-claw-task-server-B2gbZaz4.js.map → shadow-claw-task-server-DpqQcNIs.js.map} +1 -1
- package/dist/lib/{shadow-claw-tasks-Bxq-niuM.js → shadow-claw-tasks-B2fMF4qE.js} +2 -2
- package/dist/lib/{shadow-claw-tasks-Bxq-niuM.js.map → shadow-claw-tasks-B2fMF4qE.js.map} +1 -1
- package/dist/lib/{shadow-claw-terminal-BfbW3xtg.js → shadow-claw-terminal-B25kQJC3.js} +2 -2
- package/dist/lib/{shadow-claw-terminal-BfbW3xtg.js.map → shadow-claw-terminal-B25kQJC3.js.map} +1 -1
- package/dist/lib/{shadow-claw-tools-BNSAaK0Y.js → shadow-claw-tools-B0y8JzoA.js} +10 -3
- package/dist/lib/{shadow-claw-tools-BNSAaK0Y.js.map → shadow-claw-tools-B0y8JzoA.js.map} +1 -1
- package/dist/lib/{shadow-claw-webvm-Dc2KmEXq.js → shadow-claw-webvm-CoCedIza.js} +2 -2
- package/dist/lib/{shadow-claw-webvm-Dc2KmEXq.js.map → shadow-claw-webvm-CoCedIza.js.map} +1 -1
- package/dist/lib/{syncWebMcpRegistration-BIL83P0Q.js → syncWebMcpRegistration-JKLALq4e.js} +2 -2
- package/dist/lib/{syncWebMcpRegistration-BIL83P0Q.js.map → syncWebMcpRegistration-JKLALq4e.js.map} +1 -1
- package/dist/lib/worker/utils/sandboxedEval.d.ts +8 -0
- package/dist/public/.well-known/mcp/server-card.json +1 -1
- package/dist/public/.well-known/mcp.json +1 -1
- package/dist/public/AGENTS.md +1 -1
- package/dist/public/README.md +5 -1
- package/dist/public/agent.worker.js +1 -1
- package/dist/public/components/shadow-claw-tools/shadow-claw-tools.html +1 -1
- package/dist/public/{configurePeerJs-B925t9C7.js → configurePeerJs-BrHeJGw1.js} +1 -1
- package/dist/public/docs/decisions/headless-cli-agent-participant.md +1 -1
- package/dist/public/docs/example/article/index.html +1 -1
- package/dist/public/docs/publishing/index.html +1 -1
- package/dist/public/docs/skill-creator/index.html +1 -1
- package/dist/public/docs/subsystems/cli.md +33 -23
- package/dist/public/docs/subsystems/skills.md +17 -0
- package/dist/public/docs/subsystems/tools.md +1 -1
- package/dist/public/e2e/README.md +2 -2
- package/dist/public/{e2e-bridge-CE1xleGn.js → e2e-bridge-D_lyH__p.js} +1 -1
- package/dist/public/{executeTool-DtTrsZHV.js → executeTool-b6DnRhcv.js} +2 -1
- package/dist/public/{file-viewer-LEEStSq-.js → file-viewer-CKrQoxZi.js} +1 -1
- package/dist/public/index.html +1 -1
- package/dist/public/index.js +1 -1
- package/dist/public/{initControlPlane-e2JgxXEb.js → initControlPlane-Dn-XFuxg.js} +1 -1
- package/dist/public/llms.txt +2 -0
- package/dist/public/main/index.html +1 -1
- package/dist/public/main/memory/index.html +1 -1
- package/dist/public/{orchestrator-Baif6kmu.js → orchestrator-0BnBtxHO.js} +3 -2
- package/dist/public/{orchestrator-TndREZPL.js → orchestrator-C3GKZriH.js} +1 -1
- package/dist/public/{peerjs-DE6WF3h2.js → peerjs-CgfLEp2N.js} +1 -1
- package/dist/public/{push-client-B_IkTpNm.js → push-client-D6DLiY1s.js} +1 -1
- package/dist/public/service-worker.js +1 -1
- package/dist/public/{shadow-claw-channels-BCGz36Zl.js → shadow-claw-channels-DSijinZ9.js} +1 -1
- package/dist/public/{shadow-claw-chat-H9U9jbqD.js → shadow-claw-chat-BeHlAjnA.js} +1 -1
- package/dist/public/{shadow-claw-control-plane-CeKh64s2.js → shadow-claw-control-plane-BfF_AZSg.js} +2 -2
- package/dist/public/{shadow-claw-conversations-C26t1HXN.js → shadow-claw-conversations-Bb_2bVLJ.js} +1 -1
- package/dist/public/{shadow-claw-DBeXILmk.js → shadow-claw-f71DlRdV.js} +2 -2
- package/dist/public/{shadow-claw-file-viewer-DWUoTjkr.js → shadow-claw-file-viewer-B67000Mm.js} +1 -1
- package/dist/public/{shadow-claw-files-BQ8DSX-z.js → shadow-claw-files-DeZZYt01.js} +1 -1
- package/dist/public/{shadow-claw-git-CIXyISw-.js → shadow-claw-git-Ccy25LuW.js} +2 -2
- package/dist/public/{shadow-claw-llm-D_GpOSZE.js → shadow-claw-llm-XjYcTlXT.js} +1 -1
- package/dist/public/{shadow-claw-networking-BYp5K3B7.js → shadow-claw-networking-efXQtydQ.js} +1 -1
- package/dist/public/{shadow-claw-notifications-ZiXmPweY.js → shadow-claw-notifications-Cq2ZSeJa.js} +1 -1
- package/dist/public/{shadow-claw-pages-BHXwf3BD.js → shadow-claw-pages-BVFNSSb1.js} +1 -1
- package/dist/public/{shadow-claw-settings-BfvDvt9c.js → shadow-claw-settings-B3sHxPh9.js} +2 -2
- package/dist/public/{shadow-claw-storage-Bvn85DII.js → shadow-claw-storage-DNdlzCgC.js} +1 -1
- package/dist/public/{shadow-claw-task-server-DZL_d8FC.js → shadow-claw-task-server-BJq0rpju.js} +1 -1
- package/dist/public/{shadow-claw-tasks-Cy8jzd8q.js → shadow-claw-tasks-CkF1uMeZ.js} +1 -1
- package/dist/public/{shadow-claw-terminal-BgEXr82T.js → shadow-claw-terminal-CnHhcpA-.js} +1 -1
- package/dist/public/{shadow-claw-tools-BjnssRSi.js → shadow-claw-tools-iw0fljud.js} +8 -1
- package/dist/public/{shadow-claw-webvm-tZ1VDoVA.js → shadow-claw-webvm-Bliu4V__.js} +1 -1
- package/dist/public/{syncWebMcpRegistration-CLMvJ4kV.js → syncWebMcpRegistration-D91usEMu.js} +1 -1
- package/package.json +1 -1
- package/src/cli/cli.ts +26 -2
- package/src/cli/commands/agent.test.ts +421 -0
- package/src/cli/commands/agent.ts +270 -20
- package/src/components/shadow-claw-tools/shadow-claw-tools.html +7 -0
- package/src/worker/headless-agent.ts +14 -0
- package/src/worker/headless-types.ts +39 -0
- package/src/worker/utils/native-eval-executor.test.ts +36 -0
- package/src/worker/utils/native-eval-executor.ts +58 -0
- package/src/worker/utils/sandboxedEval.ts +36 -0
- package/dist/cli/chunk-1BmpU7jO2.js +0 -1
- package/dist/cli/chunk-54Euq8Ji2.js +0 -1
- package/dist/cli/chunk-BTitwCgT2.js +0 -88
- package/dist/cli/chunk-Bjh76Dai.js +0 -1081
- package/dist/cli/chunk-C2HeZQ6K.js +0 -1
- package/dist/cli/chunk-CxdpafWg.js +0 -1
- package/dist/cli/chunk-DEy72ZNV2.js +0 -88
- package/dist/cli/chunk-Da1BZyqf.js +0 -1
- package/dist/cli/chunk-FHsJD-Sf2.js +0 -27
- package/dist/cli/chunk-aWgoVB7x2.js +0 -1
- package/dist/cli/chunk-hOceZVB92.js +0 -371
- 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
|
|
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
|
|
4
|
-
`],[`t`,` `],[`r`,`\r`],[`b`,`\b`],[`f`,`\f`],[`v`,`\v`],[`'`,`'`],[`"`,`"`],[`\\`,`\\`]]);function
|
|
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=
|
|
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
|
|
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(
|
|
11
|
-
`,
|
|
12
|
-
`):typeof e==`object`?JSON.stringify(e):String(e):``}async function
|
|
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=
|
|
21
|
-
`)}function
|
|
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=
|
|
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)?
|
|
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
|
|
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
|
|
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};
|