sliccy 6.71.0 → 6.73.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/README.md +4 -3
- package/dist/node-server/_shared/sign-and-forward.d.ts +6 -0
- package/dist/node-server/_shared/sign-and-forward.d.ts.map +1 -1
- package/dist/node-server/_shared/sign-and-forward.js +22 -1
- package/dist/node-server/_shared/sign-and-forward.js.map +1 -1
- package/dist/ui/assets/{account-store-yQMPeovo.js → account-store-BuVWWg4g.js} +3 -3
- package/dist/ui/assets/{account-store-DFQ8Dgj9.js → account-store-Dc-E87aK.js} +2 -2
- package/dist/ui/assets/{adobe-t02nptZw.js → adobe-DhSQa1GO.js} +1 -1
- package/dist/ui/assets/{adobe-C0N_GiSE.js → adobe-qoXKYi_7.js} +2 -2
- package/dist/ui/assets/{apply-layout-BIMv75Rh.js → apply-layout-CmtM1OI1.js} +1 -1
- package/dist/ui/assets/{apps-N_cHAFMa.js → apps-DXei5jWs.js} +1 -1
- package/dist/ui/assets/{azure-openai-DCgUdhkV.js → azure-openai-BU3jkdBF.js} +1 -1
- package/dist/ui/assets/{azure-openai-DITUdhKw.js → azure-openai-kGzmQ_gd.js} +1 -1
- package/dist/ui/assets/{backend-local-CsZd2f8u.js → backend-local-B6kc_FvN.js} +2 -2
- package/dist/ui/assets/{cerebras-DXvruR-f.js → cerebras-BFzwGzc8.js} +1 -1
- package/dist/ui/assets/{cerebras-BKsOcNmK.js → cerebras-Dy9qdKPE.js} +1 -1
- package/dist/ui/assets/{client-CSGMDS3X.js → client-BGJKiXya.js} +1 -1
- package/dist/ui/assets/{composer-speech-B31O0GIg.js → composer-speech-DjiKeqzE.js} +1 -1
- package/dist/ui/assets/{connect-surface-BxkxiSNH.js → connect-surface-_7IgUsFb.js} +1 -1
- package/dist/ui/assets/{discovery-preference-lWdnjDWF.js → discovery-preference-DnRQbFjv.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-SaPIFvTd.js → ensure-speech-assets-D9TyM6uW.js} +1 -1
- package/dist/ui/assets/{float-topology-De3nA4jm.js → float-topology-BX3WJDxo.js} +1 -1
- package/dist/ui/assets/follower-navigate-watcher-B9JWWBt4.js +1 -0
- package/dist/ui/assets/{fs-DDemTXw8.js → fs-DFixibqD.js} +2 -2
- package/dist/ui/assets/{fs-mfTn4f6R.js → fs-DQberWD7.js} +1 -1
- package/dist/ui/assets/github-BxAcEWAM.js +2 -0
- package/dist/ui/assets/{github-D3_RDWlR.js → github-D_fXbTbQ.js} +1 -1
- package/dist/ui/assets/{github-copilot-Dblzr8C1.js → github-copilot-BPWzy0Xo.js} +1 -1
- package/dist/ui/assets/{github-copilot-DBMMN7nj.js → github-copilot-Bxz89bj_.js} +1 -1
- package/dist/ui/assets/{github-install-S3gH1LN1.js → github-install-BcINIt7W.js} +1 -1
- package/dist/ui/assets/{github-zip-w452Q-_E.js → github-zip-BpiLLNZg.js} +1 -1
- package/dist/ui/assets/{hear-BfIzJaKG.js → hear-B93gms6h.js} +1 -1
- package/dist/ui/assets/{hear-gw7ynFW0.js → hear-WHQF6n_v.js} +1 -1
- package/dist/ui/assets/{host-command-C-OOmT75.js → host-command-DVTPKi1L.js} +1 -1
- package/dist/ui/assets/installer-CyaKvN2m.js +3 -0
- package/dist/ui/assets/{js-realm-worker-kzfHhxZE.js → js-realm-worker-CidRCEJX.js} +1 -1
- package/dist/ui/assets/{kernel-worker-CKJO9mkv.js → kernel-worker-DOJcEOQ_.js} +639 -639
- package/dist/ui/assets/{kokoro-engine-k0nXmrdW.js → kokoro-engine-vHEgB5uZ.js} +1 -1
- package/dist/ui/assets/{lick-urls-DLSVBTRW.js → lick-urls-DEfVsxzt.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-Cxjciab-.js → lick-ws-bridge-C5jpbwXT.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-vaDFKuEL.js → lick-ws-bridge-Cn0JxFJP.js} +1 -1
- package/dist/ui/assets/{local-llm-CKMcrybN.js → local-llm-B7K4wTc6.js} +1 -1
- package/dist/ui/assets/{local-llm-bBO3kMGG.js → local-llm-BJWp5icu.js} +1 -1
- package/dist/ui/assets/{main-NDI7TUj5.js → main-a02U5M9G.js} +3 -3
- package/dist/ui/assets/mount-Cm64PL1z.js +1 -0
- package/dist/ui/assets/mount-aJSBQ7sj.js +2 -0
- package/dist/ui/assets/{mount-bridge-client-D5axbHW9.js → mount-bridge-client-CdactLBz.js} +1 -1
- package/dist/ui/assets/mount-recovery-BKppbelz.js +2 -0
- package/dist/ui/assets/{new-session-B4NDvbFN.js → new-session-PmqHao7W.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-BTERUpnb.js → oauth-bootstrap-OJcslCSj.js} +2 -2
- package/dist/ui/assets/{oauth-service-KeQsTKOW.js → oauth-service-C9Jn4g2n.js} +1 -1
- package/dist/ui/assets/{oauth-service-BWDgBZaN.js → oauth-service-DNcIcWT8.js} +1 -1
- package/dist/ui/assets/{openai-codex-YzN0-rk7.js → openai-codex-Bv-imcoM.js} +1 -1
- package/dist/ui/assets/{openai-codex-Tm1Y39dv.js → openai-codex-CYly41Y0.js} +1 -1
- package/dist/ui/assets/{openrouter-L1Z1bzso.js → openrouter-DO5WvDWN.js} +1 -1
- package/dist/ui/assets/{openrouter-DT4yW9JI.js → openrouter-J-ycWIJD.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BNIfHZiC.js → openrouter-oauth-CFD1A67C.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BbRCDNH_.js → openrouter-oauth-DMlC1C_K.js} +1 -1
- package/dist/ui/assets/{page-approval-service-D6ou384J.js → page-approval-service-BwheP_IN.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-DvZFQHmG.js → panel-rpc-handlers-BDY-10YP.js} +2 -2
- package/dist/ui/assets/{panelize-shell-BusmMR6B.js → panelize-shell-BuwzGhwR.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-Bw9y6i0a.js → port-bridge-client-CqQzd6rs.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-V3i4ld9z.js → port-bridge-client-VUdCD0pB.js} +1 -1
- package/dist/ui/assets/{provider-CR0TbkfA.js → provider-BSsTn-L_.js} +2 -2
- package/dist/ui/assets/{provider-DcNunfGw.js → provider-BhU0zb85.js} +1 -1
- package/dist/ui/assets/{provider-settings-uQZPJpQ-.js → provider-settings-1-gireds.js} +1 -1
- package/dist/ui/assets/{provider-settings-CmFmQOKw.js → provider-settings-Cs1AC8DE.js} +2 -2
- package/dist/ui/assets/{provider-store-access-D39HNRa8.js → provider-store-access-DhSRscW_.js} +2 -2
- package/dist/ui/assets/provider-store-access-vKVdQSJR.js +1 -0
- package/dist/ui/assets/{providers-CpDGMO7m.js → providers-D9UPT6Cm.js} +1 -1
- package/dist/ui/assets/{providers-CVxe90mP.js → providers-M-hs_Ho5.js} +2 -2
- package/dist/ui/assets/proxied-fetch-5-UeqOh8.js +2 -0
- package/dist/ui/assets/proxied-fetch-CWqWgyRG.js +1 -0
- package/dist/ui/assets/{quick-llm-Ct6grxEh.js → quick-llm-YeJSmz2c.js} +1 -1
- package/dist/ui/assets/{recovery-screen-BtyCzv9Q.js → recovery-screen-Ba5xgxqI.js} +1 -1
- package/dist/ui/assets/redirect-uri-VdQocoGn.js +1 -0
- package/dist/ui/assets/{secret-env-0q_I_PmT.js → secret-env-D-b2fLc6.js} +1 -1
- package/dist/ui/assets/secret-topology-DzxAuCnz.js +1 -0
- package/dist/ui/assets/{secrets-bridge-client-Bz8CHwrq.js → secrets-bridge-client-C6W2y020.js} +1 -1
- package/dist/ui/assets/{session-freezer-Bv1AQxPg.js → session-freezer-BPgOJqHh.js} +3 -3
- package/dist/ui/assets/{setup-feature-flags-remote-BqAkCaPE.js → setup-feature-flags-remote-CaVkw_WZ.js} +1 -1
- package/dist/ui/assets/{setup-standalone-prelude-EvR5fr1C.js → setup-standalone-prelude-DdQgcnCm.js} +2 -2
- package/dist/ui/assets/{setup-sudo-Ba1ZKNJf.js → setup-sudo-DTO3S0U7.js} +2 -2
- package/dist/ui/assets/{skills-BLthDf6N.js → skills-BMrBv0gu.js} +1 -1
- package/dist/ui/assets/slicc-version-C-fMcAtA.js +1 -0
- package/dist/ui/assets/{speak-CPyB70vx.js → speak-BKeTIQet.js} +1 -1
- package/dist/ui/assets/{speak-BU_1au5-.js → speak-DojWcMh7.js} +1 -1
- package/dist/ui/assets/{src-BXAvZ-ei.js → src-C1dIx3UV.js} +189 -142
- package/dist/ui/assets/{store-B-jkwqm-.js → store-B_wawQT3.js} +1 -1
- package/dist/ui/assets/{store-DdWTmm3h.js → store-Bb3MDuJw.js} +1 -1
- package/dist/ui/assets/{sudo-BeUuC0o9.js → sudo-DN1-Hy4S.js} +2 -2
- package/dist/ui/assets/tool-ui-DRnUkp2g.js +1 -0
- package/dist/ui/assets/transformers-env-BHtkkEox.js +1 -0
- package/dist/ui/assets/transformers-env-BbJm3nro.js +1 -0
- package/dist/ui/assets/{tray-leader-CochmofT.js → tray-leader-wwljq4Tw.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-Dqijtz8l.js → tray-leave-runtime-5MLCSmgw.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-BXoU8ne0.js → tray-runtime-config-BoItLnrD.js} +1 -1
- package/dist/ui/assets/tray-runtime-config-DAGrwZQV.js +1 -0
- package/dist/ui/assets/{upgrade-detection-f52RtdSL.js → upgrade-detection-BWBoKii8.js} +1 -1
- package/dist/ui/assets/{voice-reply-sVHTZ7lW.js → voice-reply-CpvxYJTw.js} +1 -1
- package/dist/ui/assets/{wc-attach-Cs2JeOdI.js → wc-attach-DDaQOa8_.js} +2 -2
- package/dist/ui/assets/{wc-extension-BI4I-KdP.js → wc-extension-DdDd5Y_M.js} +2 -2
- package/dist/ui/assets/wc-float-label-BhT8N0Fl.js +1 -0
- package/dist/ui/assets/{wc-follower-4iPR_Tul.js → wc-follower-cBDizOQ9.js} +3 -3
- package/dist/ui/assets/wc-live-CHh-NGIZ.js +8 -0
- package/dist/ui/assets/{wc-nav-B5V0ZfKc.js → wc-nav-CwD8K8To.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-YcNmsJ75.js → wc-onboarding-VVFE8cLN.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-DNzomi1i.js → wc-placeholder-CiutuaNG.js} +2 -2
- package/dist/ui/assets/{wc-settings--zuiJWUa.js → wc-settings-C8fW0nag.js} +3 -3
- package/dist/ui/assets/wc-shell-CDdjB8aV.js +117 -0
- package/dist/ui/assets/{wc-sprinkles-CcJhUBxA.js → wc-sprinkles-D1Q7jho7.js} +2 -2
- package/dist/ui/assets/{wc-tray-9TbX3W4_.js → wc-tray-DhQql48L.js} +2 -2
- package/dist/ui/assets/{wc-tray-scoops-MegcQ3OZ.js → wc-tray-scoops-CpmuS87s.js} +1 -1
- package/dist/ui/assets/{whisper-engine-B8PhWzXe.js → whisper-engine-DSv6HorQ.js} +1 -1
- package/dist/ui/assets/{whisper-session-CX9bk3dj.js → whisper-session-C1hZx_cc.js} +2 -2
- package/dist/ui/assets/{xai-grok-DjZBl8MI.js → xai-grok-D5qZeGy6.js} +1 -1
- package/dist/ui/assets/{xai-grok-QgmTZ127.js → xai-grok-DtGi369r.js} +1 -1
- package/dist/ui/index.html +12 -12
- package/dist/ui/packages/webapp/index.html +12 -12
- package/package.json +1 -1
- package/dist/ui/assets/follower-navigate-watcher-BwI5acCE.js +0 -1
- package/dist/ui/assets/github-Cj9EgGkZ.js +0 -2
- package/dist/ui/assets/installer-BesmgfFs.js +0 -3
- package/dist/ui/assets/mount-C9lbsxh0.js +0 -1
- package/dist/ui/assets/mount-DT8z_PVy.js +0 -2
- package/dist/ui/assets/mount-recovery-mi1lXBvI.js +0 -2
- package/dist/ui/assets/provider-store-access-DG1MMrgG.js +0 -1
- package/dist/ui/assets/proxied-fetch-Cf4bBarA.js +0 -1
- package/dist/ui/assets/proxied-fetch-DLOgqk5A.js +0 -2
- package/dist/ui/assets/redirect-uri-Cs2XQJRH.js +0 -1
- package/dist/ui/assets/secret-topology-3L5_wLhL.js +0 -1
- package/dist/ui/assets/slicc-version-BOhPSJSS.js +0 -1
- package/dist/ui/assets/tool-ui-t6ocn6AG.js +0 -1
- package/dist/ui/assets/transformers-env-2x0fcgXG.js +0 -1
- package/dist/ui/assets/transformers-env-DQiiTgcj.js +0 -1
- package/dist/ui/assets/tray-runtime-config-BDiVOcsu.js +0 -1
- package/dist/ui/assets/wc-float-label-Dsdaicq7.js +0 -1
- package/dist/ui/assets/wc-live-AqeIm2i0.js +0 -8
- package/dist/ui/assets/wc-shell-Db9tKR47.js +0 -117
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ If this scares, confuses, or excites you, keep reading.
|
|
|
11
11
|
|
|
12
12
|
# slicc — Self-Licking Ice Cream Cone
|
|
13
13
|
|
|
14
|
-
[](https://github.com/ai-ecoverse/vibe-coded-badge-action)
|
|
15
15
|
|
|
16
16
|
[](https://www.npmjs.com/package/sliccy)
|
|
17
17
|
|
|
@@ -69,7 +69,8 @@ SLICC is for you if:
|
|
|
69
69
|
- **See image-producing tool results directly in chat.** Supported `<img:data:image/...;base64,...>` markers from commands such as `open --view` and `screencapture` render as bounded, lazy-loaded inline images in chat tool rows. Each tool body displays at most four images and shows an explicit overflow indication when more are present.
|
|
70
70
|
- **Serve driveable previews.** `serve --bridge <dir>` mints a URL whose every visitor tab becomes a live, leader-driveable synthetic-CDP target — the agent can navigate/click/evaluate/screenshot and weave in webhook licks. **Security: opt-in only; cross-subdomain cookie risk accepted and documented (host-only cookies isolated per preview; `Domain=.sliccy.now` cookies readable across all previews).**
|
|
71
71
|
- **Publish persistent previews.** `serve --ttl 30d <dir>` uploads an immutable snapshot that remains available without the tray leader for up to 30 days; `serve --stop <token>` revokes it early.
|
|
72
|
-
- **Click a file the agent mentions.** When the agent writes a file name in chat — `bb.jsh`, `check.sh`, `packages/webapp/src/main.ts:42` — SLICC checks it against the workspace in the background and turns the ones that really exist into links. Clicking opens a preview; a mention that does not resolve stays plain text, so there are no dead links. A file with uncommitted changes opens on its diff.
|
|
72
|
+
- **Click a file the agent mentions.** When the agent writes a file name in chat — `bb.jsh`, `check.sh`, `packages/webapp/src/main.ts:42` — SLICC checks it against the workspace in the background and turns the ones that really exist into links. Clicking opens a preview; a mention that does not resolve stays plain text, so there are no dead links. A file with uncommitted changes opens on its diff. Names are read in the context of what the agent has already DONE: after `echo "test" > /home/lars/foo.md`, a later "see foo.md" links to that exact file — even when it lives outside the workspace, and even when three other `foo.md` files exist.
|
|
73
|
+
- **Read markdown and HTML, or read their source.** A `.md` or `.html` preview opens as the document — formatted prose, a laid-out page — with a **Source** toggle for the syntax-highlighted markup (and **Diff** when the file has uncommitted changes). HTML renders in a sandboxed frame that cannot run scripts or reach the app.
|
|
73
74
|
- **Preview any file, not just the well-known types.** The previewer identifies files from their CONTENT rather than a list of extensions, so an unrecognized extension (`.jsh`, a `Justfile`) previews as source instead of refusing. Text is syntax-highlighted, PDFs render inline, and images, audio, and video play as before.
|
|
74
75
|
- **Add visual and file context directly in chat.** Drop images or files onto the workspace, or use the paperclip button. Dropped `.skill` archives still install into `/workspace/skills`.
|
|
75
76
|
- **Inspect experimental features from the avatar menu.** When centrally managed flags enable the surface for the current runtime, click your avatar and choose **Experimental features…** to open its standalone dialog. The dialog may honestly be empty: `experimental-settings` controls its availability but is not itself user-toggleable.
|
|
@@ -78,7 +79,7 @@ SLICC is for you if:
|
|
|
78
79
|
- **Delegate parallel work to scoops.** Split tasks into isolated sub-agents with their own sandboxes and context, then let the main agent coordinate the results.
|
|
79
80
|
- **Turn one-off wins into reusable workflows.** Package behavior as skills, build interactive sprinkles, and react to external events with webhooks and cron-driven licks.
|
|
80
81
|
- **Mount your local file system.** By default, SLICC is confined to your browser. But you can ask it to mount folders from your local file system, so it can read and write from there. Mount into an empty path such as `/mnt/myproject` so you do not hide existing skills or scripts.
|
|
81
|
-
- **Mount remote storage as if it were local.** Beyond local folders, `mount --source` bridges S3 buckets, S3-compatible services like Cloudflare R2 and MinIO, and Adobe da.live repositories into the same VFS surface. Reads use TTL+ETag caching with conditional revalidation; writes use ETag-conditional PUTs that surface concurrent-edit conflicts as `EBUSY`. Credentials live server-side (`~/.slicc/secrets.env` in CLI, `chrome.storage.local` in the extension via the **Extension options** page) and never reach the agent. After setup: `mount --source s3://my-bucket --profile r2 /mnt/r2` or `mount --source
|
|
82
|
+
- **Mount remote storage as if it were local.** Beyond local folders, `mount --source` bridges S3 buckets, S3-compatible services like Cloudflare R2 and MinIO, and Adobe authoring content — both da.live repositories and Helix 6 sites on the AEM Source Bus — into the same VFS surface. Reads use TTL+ETag caching with conditional revalidation; writes use ETag-conditional PUTs that surface concurrent-edit conflicts as `EBUSY`. Credentials live server-side (`~/.slicc/secrets.env` in CLI, `chrome.storage.local` in the extension via the **Extension options** page) and never reach the agent. After setup: `mount --source s3://my-bucket --profile r2 /mnt/r2`, `mount --source da://my-org/my-repo /mnt/da`, or `mount --source aem://my-org/my-site /mnt/aem`. A `da://` source checks the site config first and re-routes to the Source Bus when the site has been upgraded to Helix 6, rather than quietly mounting a store that no longer holds its content. See [docs/mounts.md](docs/mounts.md) for the full guide.
|
|
82
83
|
|
|
83
84
|
## Getting started
|
|
84
85
|
|
|
@@ -32,6 +32,12 @@ export interface DaSignAndForwardEnvelope {
|
|
|
32
32
|
method: SignedMethod;
|
|
33
33
|
/** Path including leading slash, e.g. `/source/<org>/<repo>/<key>`. */
|
|
34
34
|
path: string;
|
|
35
|
+
/**
|
|
36
|
+
* Upstream origin. Omit for `https://admin.da.live` (Helix 5 DA);
|
|
37
|
+
* `https://api.aem.live` selects the Helix 6 Source Bus. Anything
|
|
38
|
+
* else is rejected as `invalid_request`.
|
|
39
|
+
*/
|
|
40
|
+
origin?: string;
|
|
35
41
|
query?: Record<string, string>;
|
|
36
42
|
headers?: Record<string, string>;
|
|
37
43
|
bodyBase64?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign-and-forward.d.ts","sourceRoot":"","sources":["../src/sign-and-forward.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,QAAA,MAAM,eAAe,YAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAC1E,KAAK,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sign-and-forward.d.ts","sourceRoot":"","sources":["../src/sign-and-forward.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,QAAA,MAAM,eAAe,YAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAC1E,KAAK,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AA+BrD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,uBAAuB,GAC/B,iBAAiB,GACjB,iBAAiB,GACjB,wBAAwB,GACxB,cAAc,GACd,UAAU,CAAC;AAEf,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,uBAAuB,CAAC;CACpC;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC/C;AA+FD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,EAClD,KAAK,EAAE,YAAY,EACnB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAsF9B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,EAClD,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAsE9B"}
|
|
@@ -31,7 +31,20 @@ const HOP_BY_HOP = new Set([
|
|
|
31
31
|
'transfer-encoding',
|
|
32
32
|
'upgrade',
|
|
33
33
|
]);
|
|
34
|
+
/**
|
|
35
|
+
* Default upstream for DA envelopes — the Helix 5 Document Authoring admin.
|
|
36
|
+
*/
|
|
34
37
|
const DA_ORIGIN = 'https://admin.da.live';
|
|
38
|
+
/**
|
|
39
|
+
* Origins a DA envelope is allowed to target. `admin.da.live` is the
|
|
40
|
+
* Helix 5 DA store; `api.aem.live` is the Helix 6 Source Bus, which
|
|
41
|
+
* serves the same IMS-bearer contract under
|
|
42
|
+
* `/<org>/sites/<site>/source/...`. Both are reached with the same
|
|
43
|
+
* Adobe IMS access token, so one envelope type covers both — but the
|
|
44
|
+
* set stays closed so a malformed (or hostile) envelope can't turn the
|
|
45
|
+
* orchestrator into an open proxy for the caller's IMS token.
|
|
46
|
+
*/
|
|
47
|
+
const DA_ALLOWED_ORIGINS = new Set([DA_ORIGIN, 'https://api.aem.live']);
|
|
35
48
|
// ---------------- helpers ----------------
|
|
36
49
|
function isAllowedMethod(m) {
|
|
37
50
|
return typeof m === 'string' && ALLOWED_METHODS.includes(m);
|
|
@@ -200,9 +213,17 @@ export async function executeDaSignAndForward(env, fetchImpl = fetch) {
|
|
|
200
213
|
errorCode: 'invalid_request',
|
|
201
214
|
};
|
|
202
215
|
}
|
|
216
|
+
const origin = env.origin ?? DA_ORIGIN;
|
|
217
|
+
if (!DA_ALLOWED_ORIGINS.has(origin)) {
|
|
218
|
+
return {
|
|
219
|
+
ok: false,
|
|
220
|
+
error: `origin '${origin}' is not an allowed DA upstream`,
|
|
221
|
+
errorCode: 'invalid_request',
|
|
222
|
+
};
|
|
223
|
+
}
|
|
203
224
|
let url;
|
|
204
225
|
try {
|
|
205
|
-
url = new URL(
|
|
226
|
+
url = new URL(origin + env.path);
|
|
206
227
|
if (env.query) {
|
|
207
228
|
for (const [k, v] of Object.entries(env.query)) {
|
|
208
229
|
url.searchParams.set(k, v);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign-and-forward.js","sourceRoot":"","sources":["../src/sign-and-forward.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,sDAAsD;AAEtD,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAG1E,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAE/C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,YAAY;IACZ,YAAY;IACZ,oBAAoB;IACpB,qBAAqB;IACrB,IAAI;IACJ,SAAS;IACT,mBAAmB;IACnB,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"sign-and-forward.js","sourceRoot":"","sources":["../src/sign-and-forward.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-
|
|
2
|
-
import{n as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{c as r,d as i,f as a,l as o,r as s,t as c,u as l}from"./bedrock-camp-C8bCNVSq.js";import"./libesm-BI4UHVqp.js";import{t as u}from"./logger-DDBAeTLF.js";import"./src-CAWTvdAa.js";import{o as d,t as f}from"./proxied-fetch-DLOgqk5A.js";import{n as p}from"./float-topology-De3nA4jm.js";import"./secret-topology-3L5_wLhL.js";import{t as m}from"./secrets-bridge-client-Bz8CHwrq.js";import"./image-markers-BXtVm4og.js";import"./tool-ui-DfXu6quJ.js";import{n as h,o as g,t as _}from"./providers-CVxe90mP.js";import{n as v,t as y}from"./panel-rpc-B3MSVImO.js";var b={assign:0,create:0,clone:0,discard:0,update:0};function x(e){return Array.isArray(e)}function S(e){return w(e,null)}function C(e){return w(typeof e,`object`)&&!S(e)}function w(e,t){return e===t}function ee(e){if(!C(e))return!1;let t=globalThis.Object.getPrototypeOf(e);return!S(t)&&w(typeof t.constructor,`function`)&&!(w(t.constructor,globalThis.Object)||w(t.constructor.name,`Object`))}function te(e){return w(e,`__proto__`)||w(e,`constructor`)||w(e,`prototype`)}function ne(e,t){return te(t)?Object.prototype.hasOwnProperty.call(e,t):t in e}function re(e){return Object.getOwnPropertyNames(e)}function ie(e){return Object.getOwnPropertySymbols(e)}function T(e){return globalThis.ArrayBuffer.isView(e)}function ae(e){return e instanceof globalThis.RegExp}function oe(e){return e instanceof globalThis.Set}function se(e){return e instanceof globalThis.Map}function ce(e){return e}function le(e){return ne(e,`~kind`)||ne(e,`~unsafe`)}function ue(e){let t={},n=Object.getOwnPropertyDescriptors(e);for(let e of Object.keys(n)){if(te(e))continue;let r=n[e];ne(r,`value`)&&Object.defineProperty(t,e,{...r,value:E(r.value)})}return t}function de(e){let t={};for(let n of re(e))te(n)||(t[n]=E(e[n]));for(let n of ie(e))t[n]=E(e[n]);return t}function fe(e){return ee(e)?ce(e):le(e)?ue(e):de(e)}function pe(e){return e.map(e=>E(e))}function me(e){return e.slice()}function he(e){return new RegExp(e.source,e.flags)}function ge(e){return new Map(E([...e.entries()]))}function _e(e){return new Set(E([...e.values()]))}function E(e){return T(e)?me(e):ae(e)?he(e):se(e)?ge(e):oe(e)?_e(e):x(e)?pe(e):C(e)?fe(e):e}function ve(e){return b.clone+=1,E(e)}var ye={immutableTypes:!1,maxErrors:8,useAcceleration:!0,exactOptionalPropertyTypes:!1,enumerableKind:!1,correctiveParse:!1,unionPrioritySort:!0};function be(){return ye}function xe(e,t){for(let n of Object.keys(t))Object.defineProperty(e,n,{configurable:!0,writable:!0,enumerable:!1,value:t[n]});return e}function Se(e,t){return{...e,...t}}function Ce(e,t,n={}){b.create+=1;let r=be(),i=Se(t,n),a=r.enumerableKind?Se(i,e):xe(i,e);return r.immutableTypes?Object.freeze(a):a}function we(e,t,n){b.update+=1;let r=be(),i=ve(e);for(let e of Object.keys(t))Object.defineProperty(i,e,{configurable:!0,writable:!0,enumerable:r.enumerableKind,value:t[e]});for(let e of Object.keys(n))Object.defineProperty(i,e,{configurable:!0,enumerable:!0,writable:!0,value:n[e]});return i}function Te(e){return C(e)}function Ee(e){return we(e,{"~optional":!0},{})}function De(e,t){return we(Ee(e),{},t)}function Oe(e,t){return Ce({"~kind":`Array`},{type:`array`,items:e},t)}function ke(e,t={}){return De(e,t)}function Ae(e){return ke(e)}function je(e){return Te(e)&&ne(e,`~optional`)}function Me(e){return re(e).filter(t=>!je(e[t]))}function Ne(e,t={}){let n=Me(e);return Ce({"~kind":`Object`},{type:`object`,...n.length>0?{required:n}:{},properties:e},t)}var Pe;(function(e){e[e.Array=0]=`Array`,e[e.BigInt=1]=`BigInt`,e[e.Boolean=2]=`Boolean`,e[e.Date=3]=`Date`,e[e.Constructor=4]=`Constructor`,e[e.Function=5]=`Function`,e[e.Null=6]=`Null`,e[e.Number=7]=`Number`,e[e.Object=8]=`Object`,e[e.RegExp=9]=`RegExp`,e[e.String=10]=`String`,e[e.Symbol=11]=`Symbol`,e[e.TypeArray=12]=`TypeArray`,e[e.Undefined=13]=`Undefined`})(Pe||={}),Array.from({length:256}).map((e,t)=>BigInt(t));var Fe=new Float64Array(1);new DataView(Fe.buffer),new Uint8Array(Fe.buffer),new TextEncoder;var Ie=`-?(?:0|[1-9][0-9]*)`,Le=`-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?`;function Re(e){return Ce({"~kind":`Number`},{type:`number`},e)}function D(e){return Ce({"~kind":`String`},{type:`string`},e)}var ze=`^${Ie}$`;`${Le}`;function Be(e,t){return Array.from({length:t-e+1},(t,n)=>String.fromCharCode(e+n))}var Ve=[...Be(97,122),...Be(65,90)],He=[`0`,...Be(49,57)];[...He],[...Ve,...He],[...He],new RegExp(ze);function Ue(e,t){try{return Promise.resolve(t(We))}catch(e){return Promise.reject(e)}}var We={startSpan:Ue,addEvent:()=>{},setAttributes:()=>{},setStatus:()=>{}};Object.freeze(We);var Ge=Symbol.for(`yaml.alias`),Ke=Symbol.for(`yaml.document`),O=Symbol.for(`yaml.map`),qe=Symbol.for(`yaml.pair`),Je=Symbol.for(`yaml.scalar`),Ye=Symbol.for(`yaml.seq`),k=Symbol.for(`yaml.node.type`),A=e=>!!e&&typeof e==`object`&&e[k]===Ge,Xe=e=>!!e&&typeof e==`object`&&e[k]===Ke,Ze=e=>!!e&&typeof e==`object`&&e[k]===O,j=e=>!!e&&typeof e==`object`&&e[k]===qe,M=e=>!!e&&typeof e==`object`&&e[k]===Je,Qe=e=>!!e&&typeof e==`object`&&e[k]===Ye;function N(e){if(e&&typeof e==`object`)switch(e[k]){case O:case Ye:return!0}return!1}function P(e){if(e&&typeof e==`object`)switch(e[k]){case Ge:case O:case Je:case Ye:return!0}return!1}var $e=e=>(M(e)||N(e))&&!!e.anchor,F=Symbol(`break visit`),et=Symbol(`skip children`),tt=Symbol(`remove node`);function nt(e,t){let n=rt(t);Xe(e)?I(null,e.contents,n,Object.freeze([e]))===tt&&(e.contents=null):I(null,e,n,Object.freeze([]))}nt.BREAK=F,nt.SKIP=et,nt.REMOVE=tt;function I(e,t,n,r){let i=it(e,t,n,r);if(P(i)||j(i))return at(e,r,i),I(e,i,n,r);if(typeof i!=`symbol`){if(N(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=I(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===F)return F;else i===tt&&(t.items.splice(e,1),--e)}}else if(j(t)){r=Object.freeze(r.concat(t));let e=I(`key`,t.key,n,r);if(e===F)return F;e===tt&&(t.key=null);let i=I(`value`,t.value,n,r);if(i===F)return F;i===tt&&(t.value=null)}}return i}function rt(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function it(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(Ze(t))return n.Map?.(e,t,r);if(Qe(t))return n.Seq?.(e,t,r);if(j(t))return n.Pair?.(e,t,r);if(M(t))return n.Scalar?.(e,t,r);if(A(t))return n.Alias?.(e,t,r)}function at(e,t,n){let r=t[t.length-1];if(N(r))r.items[e]=n;else if(j(r))e===`key`?r.key=n:r.value=n;else if(Xe(r))r.contents=n;else{let e=A(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}function ot(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function st(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=st(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=st(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=st(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=st(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function L(e,t,n){if(Array.isArray(e))return e.map((e,t)=>L(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!$e(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var ct=class{constructor(e){Object.defineProperty(this,k,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Xe(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=L(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?st(i,{"":o},``,o):o}},lt=class extends ct{constructor(e){super(Ge),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],nt(e,{Node:(e,t)=>{(A(t)||$e(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(L(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=ut(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(ot(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function ut(e,t,n){if(A(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}if(N(t)){let r=0;for(let i of t.items){let t=ut(e,i,n);t>r&&(r=t)}return r}if(j(t)){let r=ut(e,t.key,n),i=ut(e,t.value,n);return Math.max(r,i)}return 1}var dt=e=>!e||typeof e!=`function`&&typeof e!=`object`,R=class extends ct{constructor(e){super(Je),this.value=e}toJSON(e,t){return t?.keep?this.value:L(this.value,e,t)}toString(){return String(this.value)}};R.BLOCK_FOLDED=`BLOCK_FOLDED`,R.BLOCK_LITERAL=`BLOCK_LITERAL`,R.PLAIN=`PLAIN`,R.QUOTE_DOUBLE=`QUOTE_DOUBLE`,R.QUOTE_SINGLE=`QUOTE_SINGLE`;var ft=`tag:yaml.org,2002:`;function pt(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function mt(e,t,n){if(Xe(e)&&(e=e.contents),P(e))return e;if(j(e)){let t=n.schema[O].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??(c.anchor=i(e)),new lt(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=ft+t.slice(2));let l=pt(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new R(e);return c&&(c.node=t),t}l=e instanceof Map?o[O]:Symbol.iterator in Object(e)?o[Ye]:o[O]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new R(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function ht(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return mt(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}var gt=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done,_t=class extends ct{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>P(t)||j(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(gt(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(N(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,ht(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(N(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&M(i)?i.value:i:N(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!j(t))return!1;let n=t.value;return n==null||e&&M(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return N(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(N(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,ht(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}},vt=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function yt(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var z=(e,t,n)=>e.endsWith(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-C9Jn4g2n.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-5-UeqOh8.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DpPqYZJF.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{c as r,d as i,f as a,l as o,r as s,t as c,u as l}from"./bedrock-camp-C8bCNVSq.js";import"./libesm-BI4UHVqp.js";import{t as u}from"./logger-DDBAeTLF.js";import"./src-CAWTvdAa.js";import{o as d,r as f}from"./proxied-fetch-5-UeqOh8.js";import{n as p}from"./float-topology-BX3WJDxo.js";import"./secret-topology-DzxAuCnz.js";import{t as m}from"./secrets-bridge-client-C6W2y020.js";import"./image-markers-BXtVm4og.js";import"./tool-ui-DfXu6quJ.js";import{n as h,o as g,t as _}from"./providers-M-hs_Ho5.js";import{n as v,t as y}from"./panel-rpc-B3MSVImO.js";var b={assign:0,create:0,clone:0,discard:0,update:0};function x(e){return Array.isArray(e)}function S(e){return w(e,null)}function C(e){return w(typeof e,`object`)&&!S(e)}function w(e,t){return e===t}function ee(e){if(!C(e))return!1;let t=globalThis.Object.getPrototypeOf(e);return!S(t)&&w(typeof t.constructor,`function`)&&!(w(t.constructor,globalThis.Object)||w(t.constructor.name,`Object`))}function te(e){return w(e,`__proto__`)||w(e,`constructor`)||w(e,`prototype`)}function ne(e,t){return te(t)?Object.prototype.hasOwnProperty.call(e,t):t in e}function re(e){return Object.getOwnPropertyNames(e)}function ie(e){return Object.getOwnPropertySymbols(e)}function T(e){return globalThis.ArrayBuffer.isView(e)}function ae(e){return e instanceof globalThis.RegExp}function oe(e){return e instanceof globalThis.Set}function se(e){return e instanceof globalThis.Map}function ce(e){return e}function le(e){return ne(e,`~kind`)||ne(e,`~unsafe`)}function ue(e){let t={},n=Object.getOwnPropertyDescriptors(e);for(let e of Object.keys(n)){if(te(e))continue;let r=n[e];ne(r,`value`)&&Object.defineProperty(t,e,{...r,value:E(r.value)})}return t}function de(e){let t={};for(let n of re(e))te(n)||(t[n]=E(e[n]));for(let n of ie(e))t[n]=E(e[n]);return t}function fe(e){return ee(e)?ce(e):le(e)?ue(e):de(e)}function pe(e){return e.map(e=>E(e))}function me(e){return e.slice()}function he(e){return new RegExp(e.source,e.flags)}function ge(e){return new Map(E([...e.entries()]))}function _e(e){return new Set(E([...e.values()]))}function E(e){return T(e)?me(e):ae(e)?he(e):se(e)?ge(e):oe(e)?_e(e):x(e)?pe(e):C(e)?fe(e):e}function ve(e){return b.clone+=1,E(e)}var ye={immutableTypes:!1,maxErrors:8,useAcceleration:!0,exactOptionalPropertyTypes:!1,enumerableKind:!1,correctiveParse:!1,unionPrioritySort:!0};function be(){return ye}function xe(e,t){for(let n of Object.keys(t))Object.defineProperty(e,n,{configurable:!0,writable:!0,enumerable:!1,value:t[n]});return e}function Se(e,t){return{...e,...t}}function Ce(e,t,n={}){b.create+=1;let r=be(),i=Se(t,n),a=r.enumerableKind?Se(i,e):xe(i,e);return r.immutableTypes?Object.freeze(a):a}function we(e,t,n){b.update+=1;let r=be(),i=ve(e);for(let e of Object.keys(t))Object.defineProperty(i,e,{configurable:!0,writable:!0,enumerable:r.enumerableKind,value:t[e]});for(let e of Object.keys(n))Object.defineProperty(i,e,{configurable:!0,enumerable:!0,writable:!0,value:n[e]});return i}function Te(e){return C(e)}function Ee(e){return we(e,{"~optional":!0},{})}function De(e,t){return we(Ee(e),{},t)}function Oe(e,t){return Ce({"~kind":`Array`},{type:`array`,items:e},t)}function ke(e,t={}){return De(e,t)}function Ae(e){return ke(e)}function je(e){return Te(e)&&ne(e,`~optional`)}function Me(e){return re(e).filter(t=>!je(e[t]))}function Ne(e,t={}){let n=Me(e);return Ce({"~kind":`Object`},{type:`object`,...n.length>0?{required:n}:{},properties:e},t)}var Pe;(function(e){e[e.Array=0]=`Array`,e[e.BigInt=1]=`BigInt`,e[e.Boolean=2]=`Boolean`,e[e.Date=3]=`Date`,e[e.Constructor=4]=`Constructor`,e[e.Function=5]=`Function`,e[e.Null=6]=`Null`,e[e.Number=7]=`Number`,e[e.Object=8]=`Object`,e[e.RegExp=9]=`RegExp`,e[e.String=10]=`String`,e[e.Symbol=11]=`Symbol`,e[e.TypeArray=12]=`TypeArray`,e[e.Undefined=13]=`Undefined`})(Pe||={}),Array.from({length:256}).map((e,t)=>BigInt(t));var Fe=new Float64Array(1);new DataView(Fe.buffer),new Uint8Array(Fe.buffer),new TextEncoder;var Ie=`-?(?:0|[1-9][0-9]*)`,Le=`-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?`;function Re(e){return Ce({"~kind":`Number`},{type:`number`},e)}function D(e){return Ce({"~kind":`String`},{type:`string`},e)}var ze=`^${Ie}$`;`${Le}`;function Be(e,t){return Array.from({length:t-e+1},(t,n)=>String.fromCharCode(e+n))}var Ve=[...Be(97,122),...Be(65,90)],He=[`0`,...Be(49,57)];[...He],[...Ve,...He],[...He],new RegExp(ze);function Ue(e,t){try{return Promise.resolve(t(We))}catch(e){return Promise.reject(e)}}var We={startSpan:Ue,addEvent:()=>{},setAttributes:()=>{},setStatus:()=>{}};Object.freeze(We);var Ge=Symbol.for(`yaml.alias`),Ke=Symbol.for(`yaml.document`),O=Symbol.for(`yaml.map`),qe=Symbol.for(`yaml.pair`),Je=Symbol.for(`yaml.scalar`),Ye=Symbol.for(`yaml.seq`),k=Symbol.for(`yaml.node.type`),A=e=>!!e&&typeof e==`object`&&e[k]===Ge,Xe=e=>!!e&&typeof e==`object`&&e[k]===Ke,Ze=e=>!!e&&typeof e==`object`&&e[k]===O,j=e=>!!e&&typeof e==`object`&&e[k]===qe,M=e=>!!e&&typeof e==`object`&&e[k]===Je,Qe=e=>!!e&&typeof e==`object`&&e[k]===Ye;function N(e){if(e&&typeof e==`object`)switch(e[k]){case O:case Ye:return!0}return!1}function P(e){if(e&&typeof e==`object`)switch(e[k]){case Ge:case O:case Je:case Ye:return!0}return!1}var $e=e=>(M(e)||N(e))&&!!e.anchor,F=Symbol(`break visit`),et=Symbol(`skip children`),tt=Symbol(`remove node`);function nt(e,t){let n=rt(t);Xe(e)?I(null,e.contents,n,Object.freeze([e]))===tt&&(e.contents=null):I(null,e,n,Object.freeze([]))}nt.BREAK=F,nt.SKIP=et,nt.REMOVE=tt;function I(e,t,n,r){let i=it(e,t,n,r);if(P(i)||j(i))return at(e,r,i),I(e,i,n,r);if(typeof i!=`symbol`){if(N(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=I(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===F)return F;else i===tt&&(t.items.splice(e,1),--e)}}else if(j(t)){r=Object.freeze(r.concat(t));let e=I(`key`,t.key,n,r);if(e===F)return F;e===tt&&(t.key=null);let i=I(`value`,t.value,n,r);if(i===F)return F;i===tt&&(t.value=null)}}return i}function rt(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function it(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(Ze(t))return n.Map?.(e,t,r);if(Qe(t))return n.Seq?.(e,t,r);if(j(t))return n.Pair?.(e,t,r);if(M(t))return n.Scalar?.(e,t,r);if(A(t))return n.Alias?.(e,t,r)}function at(e,t,n){let r=t[t.length-1];if(N(r))r.items[e]=n;else if(j(r))e===`key`?r.key=n:r.value=n;else if(Xe(r))r.contents=n;else{let e=A(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}function ot(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function st(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=st(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=st(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=st(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=st(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function L(e,t,n){if(Array.isArray(e))return e.map((e,t)=>L(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!$e(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var ct=class{constructor(e){Object.defineProperty(this,k,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Xe(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=L(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?st(i,{"":o},``,o):o}},lt=class extends ct{constructor(e){super(Ge),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],nt(e,{Node:(e,t)=>{(A(t)||$e(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(L(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=ut(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(ot(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function ut(e,t,n){if(A(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}if(N(t)){let r=0;for(let i of t.items){let t=ut(e,i,n);t>r&&(r=t)}return r}if(j(t)){let r=ut(e,t.key,n),i=ut(e,t.value,n);return Math.max(r,i)}return 1}var dt=e=>!e||typeof e!=`function`&&typeof e!=`object`,R=class extends ct{constructor(e){super(Je),this.value=e}toJSON(e,t){return t?.keep?this.value:L(this.value,e,t)}toString(){return String(this.value)}};R.BLOCK_FOLDED=`BLOCK_FOLDED`,R.BLOCK_LITERAL=`BLOCK_LITERAL`,R.PLAIN=`PLAIN`,R.QUOTE_DOUBLE=`QUOTE_DOUBLE`,R.QUOTE_SINGLE=`QUOTE_SINGLE`;var ft=`tag:yaml.org,2002:`;function pt(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function mt(e,t,n){if(Xe(e)&&(e=e.contents),P(e))return e;if(j(e)){let t=n.schema[O].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??(c.anchor=i(e)),new lt(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=ft+t.slice(2));let l=pt(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new R(e);return c&&(c.node=t),t}l=e instanceof Map?o[O]:Symbol.iterator in Object(e)?o[Ye]:o[O]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new R(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function ht(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return mt(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}var gt=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done,_t=class extends ct{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>P(t)||j(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(gt(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(N(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,ht(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(N(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&M(i)?i.value:i:N(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!j(t))return!1;let n=t.value;return n==null||e&&M(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return N(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(N(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,ht(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}},vt=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function yt(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var z=(e,t,n)=>e.endsWith(`
|
|
3
3
|
`)?yt(n,t):n.includes(`
|
|
4
4
|
`)?`
|
|
5
5
|
`+yt(n,t):(e.endsWith(` `)?``:` `)+n,bt=`flow`,xt=`block`,St=`quoted`;function Ct(e,t,n=`flow`,{indentAtStart:r,lineWidth:i=80,minContentWidth:a=20,onFold:o,onOverflow:s}={}){if(!i||i<0)return e;i<a&&(a=0);let c=Math.max(1+a,1+i-t.length);if(e.length<=c)return e;let l=[],u={},d=i-t.length;typeof r==`number`&&(r>i-Math.max(2,a)?l.push(0):d=i-r);let f,p,m=!1,h=-1,g=-1,_=-1;n===`block`&&(h=wt(e,h,t.length),h!==-1&&(d=h+c));for(let r;r=e[h+=1];){if(n===`quoted`&&r===`\\`){switch(g=h,e[h+1]){case`x`:h+=3;break;case`u`:h+=5;break;case`U`:h+=9;break;default:h+=1}_=h}if(r===`
|
|
@@ -60,4 +60,4 @@ Do NOT continue the conversation. Do NOT answer questions inside the conversatio
|
|
|
60
60
|
<conversation>
|
|
61
61
|
${e}
|
|
62
62
|
</conversation>`}async function xn(e,t,n,r,i,a,s){let c=await o(e,{systemPrompt:n,messages:[{role:`user`,content:[{type:`text`,text:r}],timestamp:Date.now()}]},{maxTokens:i,apiKey:t,headers:a,signal:s});if(c.stopReason===`error`)throw Error(`Compaction call failed: ${c.errorMessage||`Unknown error`}`);return c.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
63
|
-
`).trim()}async function Sn(e){let t=bn(_n(e.messages));return xn(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var Cn=yn,wn=`Generate a short title (3 to 6 words) summarizing what this conversation was about. Output ONLY the title text — no quotes, no punctuation other than what belongs in the title, no preamble.`,Tn=`slicc_oauth_extra_domains`;function En(e){try{let t=e.getItem(Tn);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function Dn(e,t){try{e.setItem(Tn,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}u(`secret-scrub`),u(`image-processor`),u(`tool-adapter`);function On(e,t){let n={input:0,output:0,cacheRead:0,cacheWrite:0},i=r(e);if(!i)return n;let a;for(let e of t.values()){let t=r(e.id);!t||t.family!==i.family||(!a||t.major>a.major||t.major===a.major&&t.minor>a.minor)&&(a={major:t.major,minor:t.minor,cost:e.cost})}return a?.cost??n}u(`model-policy`);var kn=`/etc/models`;function An(){return{sections:{}}}function jn(e,t,n){return e.providerId===t?e.modelId===`*`||e.modelId===n:!1}function Mn(e,t){return e.sections[t]??[]}function Nn(e,t,n,r){return Mn(e,t).some(e=>e.deny&&jn(e,n,r))}function Pn(e,t,n,r){let i=Mn(e,t);return i.some(e=>e.deny&&jn(e,n,r))?!1:n===t||i.some(e=>!e.deny&&jn(e,n,r))}var Fn=An();function In(){return Fn}function Ln(e,t,n){return`add \`${t}:${n}\` (or \`${t}:*\`) under \`[${e}]\` in ${kn}`}var Rn=e({ACCOUNTS_KEY:()=>G,__test__:()=>Jn,addAccount:()=>pr,applyProviderDefaults:()=>tr,clearAllSettings:()=>Lr,clearApiKey:()=>Mr,clearBaseUrl:()=>Fr,clearSelectedProvider:()=>kr,exportProviders:()=>Ir,getAccounts:()=>X,getAllAvailableModels:()=>or,getAllExtraOAuthDomains:()=>ur,getApiKey:()=>Ar,getApiKeyForProvider:()=>Cr,getApiVersionForProvider:()=>Tr,getAvailableProviders:()=>Yn,getBaseUrl:()=>Nr,getBaseUrlForProvider:()=>Z,getDeploymentForProvider:()=>wr,getExtraOAuthDomains:()=>sr,getOAuthAccountInfo:()=>$n,getProviderConfig:()=>q,getProviderModels:()=>J,getRawApiKeyForProvider:()=>Sr,getSelectedModelId:()=>Q,getSelectedProvider:()=>$,isModelHiddenFromPicker:()=>rr,logoutOAuthAccount:()=>gr,maskOAuthTokenWithRetry:()=>_r,migrateLegacyAuthOnlySelection:()=>Kn,modelRunsOnProvider:()=>Gr,persistOAuthMaskViaServiceWorker:()=>vr,policyVisible:()=>ar,providerOffersLlmModels:()=>Xn,removeAccount:()=>hr,resolveCurrentModel:()=>Kr,resolveModelById:()=>Wr,resolveModelByShorthand:()=>qr,resolveModelIdForScoop:()=>oi,resolveModelSelectionForScoop:()=>$r,saveOAuthAccount:()=>br,setApiKey:()=>jr,setBaseUrl:()=>Pr,setExtraOAuthDomains:()=>cr,setExtraOAuthDomainsAsync:()=>lr,setSelectedModelId:()=>Er,setSelectedProvider:()=>Or}),zn=l,Bn=i,G=`slicc_accounts`,K=`selected-model`,Vn=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Hn=new Set([`github`]);function Un(e){let t;try{t=a()}catch{return!1}return t.includes(e)&&!g(e)}var Wn=!1;function Gn(){if(!Wn){Wn=!0;for(let e of Vn)try{localStorage.removeItem(e)}catch{}Kn()}}function Kn(){try{let e=localStorage.getItem(K);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Hn.has(n)||Un(n))&&localStorage.removeItem(K)}}}catch{}try{let e=localStorage.getItem(G);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&Un(e.providerId)));n.length!==t.length&&localStorage.setItem(G,JSON.stringify(n))}catch{}}function qn(){Wn=!1}var Jn={_resetLegacyCleanup:qn};function Yn(){let e=a().filter(g),t=h();return[...new Set([...e,...t])].filter(e=>!_(e)?.hidden)}function Xn(e){try{if(J(e).length>0)return!0}catch{}try{if(i(e).length>0)return!0}catch{}let t=_(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function Zn(e,t){try{if(J(e).some(e=>e.id===t))return!0}catch{}try{if(i(e).some(e=>e.id===t))return!0}catch{}let n=_(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function q(e){return _(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Qn(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.cost!==void 0&&(e.cost=t.cost,e.inputCost=t.cost.input,e.outputCost=t.cost.output,e.cacheReadCost=t.cost.cacheRead,e.cacheWriteCost=t.cost.cacheWrite),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function J(e){try{if(e===`bedrock-camp`){let e=c(Z(`bedrock-camp`));return Bn(`amazon-bedrock`).filter(t=>s(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=q(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Y.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of a())try{for(let t of Bn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=n.api===`openai`?`openai`:`anthropic`,a=`${e}-${i}`,o=r.get(n.id),s;if(o)s={...o,api:a,provider:e};else if(s=zr(e,n.id,``,a),n.name&&(s.name=n.name),i===`anthropic`){let e=On(n.id,r);s.cost=e,s.inputCost=e.input,s.outputCost=e.output,s.cacheReadCost=e.cacheRead,s.cacheWriteCost=e.cacheWrite}let c=t.modelOverrides?.[n.id];return c&&Qn(s,c),Qn(s,n),s})}if(t.isOAuth){let n=Bn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Qn(i,a),i})}return Bn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Y.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function $n(e){let t=X().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,scopes:t.scopes,expired:n}}var er=Object.assign({})[`/packages/webapp/providers.json`]??[],Y=u(`provider-settings`);function tr(e=er){if(e.length===0||X().length>0)return;let t=new Set(Yn());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){Y.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}pr(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(K)&&localStorage.setItem(K,`${n.providerId}:${n.model}`)}var nr=[/haiku/i];function rr(e){return nr.some(t=>t.test(e))}function ir(e){return e.filter(e=>!rr(e.id))}function ar(e,t){let n=ei();if(n===null)return e;let r=In();return e.filter(e=>!Nn(r,n,t,e.id))}function or(){let e=X();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=q(n.providerId);if(e.hidden||Un(n.providerId))continue;let r=ar(ir(J(n.providerId)),n.providerId);if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function X(){Gn();let e=localStorage.getItem(G);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function sr(e){return En(localStorage)[e]??[]}function cr(e,t){let n=En(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,Dn(localStorage,n)}async function lr(e,t){if(v()){cr(e,t);return}let n=y();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{Dn(localStorage,r)}catch(t){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function ur(){return En(localStorage)}function dr(e){localStorage.setItem(G,JSON.stringify(e))}async function fr(e){if(v()){dr(e);return}let t=y();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(G,r)}catch(e){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function pr(e,t,n,r,i){let a=X().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),dr(a)}async function mr(e){let t=p();try{if(t===`extension-direct`){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Y.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Y.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else if(t===`extension-delegate`){let t=await m(`secrets.delete`,{name:`oauth.${e}.token`});t?.error&&Y.error(`Bridge secrets.delete returned error`,{providerId:e,error:t.error})}else if(t!==`connect`){let t=await fetch(d(`/api/secrets/oauth/${e}`),{method:`DELETE`,headers:f()});!t.ok&&t.status!==404&&Y.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Y.error(`OAuth replica removal failed`,{providerId:e,topology:t,error:n instanceof Error?n.message:String(n)})}}async function hr(e){let t=X().find(t=>t.providerId===e),n=q(e);t&&n?.isOAuth&&await gr(e),await mr(e),await fr(X().filter(t=>t.providerId!==e));let r=localStorage.getItem(K)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(K)}async function gr(e){let t=X().find(t=>t.providerId===e);if(!t)return;let r=q(e);if(r?.isOAuth){if(r.onOAuthLogout)try{await r.onOAuthLogout()}catch(t){Y.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(r.getOAuthLogoutUrl){let i=r.getOAuthLogoutUrl(t);if(i){let{openIdpLogoutUrl:t}=await n(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-KeQsTKOW.js`);return{openIdpLogoutUrl:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]));await t(i).catch(t=>{Y.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await fr(X().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await mr(e)}}async function _r(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function vr(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await _r(()=>t.sendMaskRequest(r),n);if(!i){Y.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}function yr(e,t){if(e.accessToken)return`scopes`in e?e.scopes:t?.scopes}async function br(e){let t=X().find(t=>t.providerId===e.providerId),n=X().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl,scopes:yr(e,t)}),await fr(n);let r=q(e.providerId)?.oauthTokenDomains??[],i=sr(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=p();try{if(s===`extension-direct`)await vr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Y.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message});let r=typeof t==`object`&&t?t:void 0;r?.error&&Y.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:r.error}),n(r??{})})}),getAccounts:X,saveAccounts:fr});else if(s===`extension-delegate`)await vr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>m(`secrets.mask-oauth-token`,t).then(t=>(t?.error&&Y.warn(`Bridge mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t??{})).catch(t=>(Y.error(`Bridge mask-oauth-token transport failed`,{providerId:e.providerId,error:t instanceof Error?t.message:String(t)}),{})),getAccounts:X,saveAccounts:fr});else if(s!==`connect`){let t=await fetch(d(`/api/secrets/oauth-update`),{method:`POST`,headers:f({"Content-Type":`application/json`}),body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json();if(typeof n.maskedValue==`string`){let t=X(),r=t.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=n.maskedValue,await fr(t))}else Y.warn(`OAuth replica POST ok but missing maskedValue`,{providerId:e.providerId})}else Y.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Y.error(`OAuth replica sync failed`,{providerId:e.providerId,topology:s,error:t instanceof Error?t.message:String(t)})}}var xr=`local`;function Sr(e){let t=X().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Cr(e){let t=X().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(q(e).optionalApiKey?xr:null):null}function Z(e){return X().find(t=>t.providerId===e)?.baseUrl??null}function wr(e){return X().find(t=>t.providerId===e)?.deployment??null}function Tr(e){return X().find(t=>t.providerId===e)?.apiVersion??null}function Q(){let e=localStorage.getItem(K)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Er(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...h(),...Yn()]),i=n.includes(`.`);if(r.has(n)||!i){localStorage.setItem(K,e);return}}let n=$();localStorage.setItem(K,`${n}:${e}`)}function Dr(){return localStorage.getItem(K)||``}function $(){let e=Dr(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=X(),r=Q();if(r){let e=n.find(e=>Xn(e.providerId)&&Zn(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>Xn(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function Or(e){let t=Q();localStorage.setItem(K,`${e}:${t}`)}function kr(){let e=Q();localStorage.setItem(K,e)}function Ar(){return Cr($())}function jr(e){let t=$();pr(t,e,Z(t)??void 0)}async function Mr(){await hr($())}function Nr(){return Z($())}function Pr(e){let t=$(),n=Sr(t);n&&pr(t,n,e||void 0)}function Fr(){let e=$(),t=Sr(e);t&&pr(e,t)}function Ir(){let e=X(),t=$(),n=Q();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function Lr(){let e=X();await Promise.allSettled(e.map(e=>hr(e.providerId))),localStorage.removeItem(G),localStorage.removeItem(K);for(let e of Vn)localStorage.removeItem(e)}function Rr(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function zr(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${Rr(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function Br(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function Vr(e,t,n){let r=J(e).find(e=>e.id===t);return r?n?{...r,baseUrl:n}:r:null}function Hr(e,t,n,r){return n.isOAuth?J(t).find(e=>e.id===r)||{...e,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`?{...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}:e}function Ur(e,t,n,r,i){if(t.isOAuth)return Vr(e,n,r)??zr(e,n,r);if(i)throw Error(`Model ${n} is not available from provider ${e}`);return Kr()}function Wr(e,t){if(!e)return Kr();let n=t??$(),r=Z(n),i=q(n);if(t!==void 0){let t=Vr(n,e,r);if(t)return t}try{let t=zn(Br(n,i),e);if(!t?.id)throw Error(`Model ${e} not found`);let a=Hr(t,n,i,e);return r?{...a,baseUrl:r}:a}catch(a){return Y.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:n,modelId:e,error:a instanceof Error?a.message:String(a)}),Ur(n,i,e,r,t!==void 0)}}function Gr(e,t){return e.provider===t||e.provider===Br(t,q(t))}function Kr(){let e=$(),t=Q(),n=Z(e),r=J(e),i=q(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=Br(e,i),a=zn(t,o);if(!a?.id)throw Error(`Model ${o} not found in ${t} registry`);let s=a;return i.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Y.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?zr(e,o,n):zn(`anthropic`,`claude-sonnet-4-0`)}}function qr(e){let t=e.toLowerCase();if(!t)return null;let n=null;try{n=$()}catch{}if(n!==null){let e=Jr(t,[n]);if(e!==null)return e}return Jr(t,X().map(e=>e.providerId))}function Jr(e,t){let n=null,r=-1;for(let i of t)for(let t of J(i)){let i=t.id.toLowerCase(),a=(t.name??``).toLowerCase();if(!i.includes(e)&&!a.includes(e))continue;let o=t.contextWindow??0;(o>r||o===r&&si(t.id,n??``)>0)&&(r=o,n=t.id)}return n}function Yr(){let e=[];try{for(let t of X())e.includes(t.providerId)||e.push(t.providerId)}catch{}try{let t=$();e.includes(t)||e.push(t)}catch{}return e}function Xr(e){let t=e.indexOf(`:`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1),i=Yr().includes(n);if(i)return{providerId:n,modelId:r,configured:i};let a=!1;try{a=Yn().includes(n)}catch{}return a?{providerId:n,modelId:r,configured:!1}:null}function Zr(e,t,n=!0){let r=[e],i=n?Jr(e.toLowerCase(),[t]):null;i!==null&&i!==e&&r.push(i);let a=[];try{a=J(t)}catch{}for(let n of r)if(!(a.length>0&&!a.some(e=>e.id===n)))try{if(Wr(n,t).id===n)return{modelId:n,providerId:t}}catch(r){Y.debug(`selectModelFromProvider: candidate did not resolve`,{input:e,candidate:n,providerId:t,error:r instanceof Error?r.message:String(r)})}return null}function Qr(e){return e.map(e=>`${e.providerId}:${e.modelId}`).join(`, `)}function $r(e){if(!e)return{ok:!1,error:`unknown model: (empty)`};let t=Xr(e);if(t)return ii(e,t);let n=null;try{n=$()}catch{}if(n!==null){let t=Zr(e,n);if(t)return ri(t)}return ai(e,n)}function ei(){try{return $()}catch{return null}}function ti(e){let t=ei();return t===null||Pn(In(),t,e.providerId,e.modelId)}function ni(e){let t=ei()??`<none>`;return{ok:!1,error:`model not allowed: ${`${e.providerId}:${e.modelId}`} is blocked by ${kn} while "${t}" is selected — ${Ln(t,e.providerId,e.modelId)}`}}function ri(e){return ti(e)?{ok:!0,selection:e}:ni(e)}function ii(e,t){if(!t.configured){let n=Yr();return{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" is not configured${n.length>0?`; configured: ${n.join(`, `)}`:``})`}}let n=Zr(t.modelId,t.providerId);return n?ri(n):{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" does not offer "${t.modelId}")`}}function ai(e,t){let n=Yr().filter(e=>e!==t);for(let t of[`exact`,`shorthand`]){let r=[];for(let i of n){let n=t===`exact`?e:Jr(e.toLowerCase(),[i]);if(n===null)continue;let a=Zr(n,i,!1);a&&r.push(a)}let i=r.filter(ti);if(i.length===0&&r.length>0)return ni(r[0]);if(i.length===1)return{ok:!0,selection:i[0]};if(i.length>1)return{ok:!1,error:`ambiguous model: ${e} matches ${Qr(i)} — qualify it as provider:model`}}return{ok:!1,error:`unknown model: ${e}`}}function oi(e){let t=$r(e);return t.ok?t.selection.modelId:null}function si(e,t){let n=e.match(/\d+/g)?.map(Number)??[],r=t.match(/\d+/g)?.map(Number)??[],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}export{_r as A,oi as B,q as C,$ as D,Q as E,Xn as F,cr as G,br as H,hr as I,Or as J,lr as K,Kr as L,Gr as M,vr as N,rr as O,ar as P,Sn as Q,Wr as R,$n as S,Sr as T,jr as U,$r as V,Pr as W,Cn as X,On as Y,wn as Z,Yn as _,tr as a,wr as b,Fr as c,X as d,or as f,Tr as g,Cr as h,pr as i,Kn as j,gr as k,kr as l,Ar as m,Jn as n,Lr as o,ur as p,Er as q,Rn as r,Mr as s,G as t,Ir as u,Nr as v,J as w,sr as x,Z as y,qr as z};
|
|
63
|
+
`).trim()}async function Sn(e){let t=bn(_n(e.messages));return xn(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var Cn=yn,wn=`Generate a short title (3 to 6 words) summarizing what this conversation was about. Output ONLY the title text — no quotes, no punctuation other than what belongs in the title, no preamble.`,Tn=`slicc_oauth_extra_domains`;function En(e){try{let t=e.getItem(Tn);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function Dn(e,t){try{e.setItem(Tn,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}u(`secret-scrub`),u(`image-processor`),u(`tool-adapter`);function On(e,t){let n={input:0,output:0,cacheRead:0,cacheWrite:0},i=r(e);if(!i)return n;let a;for(let e of t.values()){let t=r(e.id);!t||t.family!==i.family||(!a||t.major>a.major||t.major===a.major&&t.minor>a.minor)&&(a={major:t.major,minor:t.minor,cost:e.cost})}return a?.cost??n}u(`model-policy`);var kn=`/etc/models`;function An(){return{sections:{}}}function jn(e,t,n){return e.providerId===t?e.modelId===`*`||e.modelId===n:!1}function Mn(e,t){return e.sections[t]??[]}function Nn(e,t,n,r){return Mn(e,t).some(e=>e.deny&&jn(e,n,r))}function Pn(e,t,n,r){let i=Mn(e,t);return i.some(e=>e.deny&&jn(e,n,r))?!1:n===t||i.some(e=>!e.deny&&jn(e,n,r))}var Fn=An();function In(){return Fn}function Ln(e,t,n){return`add \`${t}:${n}\` (or \`${t}:*\`) under \`[${e}]\` in ${kn}`}var Rn=e({ACCOUNTS_KEY:()=>G,__test__:()=>Jn,addAccount:()=>pr,applyProviderDefaults:()=>tr,clearAllSettings:()=>Lr,clearApiKey:()=>Mr,clearBaseUrl:()=>Fr,clearSelectedProvider:()=>kr,exportProviders:()=>Ir,getAccounts:()=>X,getAllAvailableModels:()=>or,getAllExtraOAuthDomains:()=>ur,getApiKey:()=>Ar,getApiKeyForProvider:()=>Cr,getApiVersionForProvider:()=>Tr,getAvailableProviders:()=>Yn,getBaseUrl:()=>Nr,getBaseUrlForProvider:()=>Z,getDeploymentForProvider:()=>wr,getExtraOAuthDomains:()=>sr,getOAuthAccountInfo:()=>$n,getProviderConfig:()=>q,getProviderModels:()=>J,getRawApiKeyForProvider:()=>Sr,getSelectedModelId:()=>Q,getSelectedProvider:()=>$,isModelHiddenFromPicker:()=>rr,logoutOAuthAccount:()=>gr,maskOAuthTokenWithRetry:()=>_r,migrateLegacyAuthOnlySelection:()=>Kn,modelRunsOnProvider:()=>Gr,persistOAuthMaskViaServiceWorker:()=>vr,policyVisible:()=>ar,providerOffersLlmModels:()=>Xn,removeAccount:()=>hr,resolveCurrentModel:()=>Kr,resolveModelById:()=>Wr,resolveModelByShorthand:()=>qr,resolveModelIdForScoop:()=>oi,resolveModelSelectionForScoop:()=>$r,saveOAuthAccount:()=>br,setApiKey:()=>jr,setBaseUrl:()=>Pr,setExtraOAuthDomains:()=>cr,setExtraOAuthDomainsAsync:()=>lr,setSelectedModelId:()=>Er,setSelectedProvider:()=>Or}),zn=l,Bn=i,G=`slicc_accounts`,K=`selected-model`,Vn=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Hn=new Set([`github`]);function Un(e){let t;try{t=a()}catch{return!1}return t.includes(e)&&!g(e)}var Wn=!1;function Gn(){if(!Wn){Wn=!0;for(let e of Vn)try{localStorage.removeItem(e)}catch{}Kn()}}function Kn(){try{let e=localStorage.getItem(K);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Hn.has(n)||Un(n))&&localStorage.removeItem(K)}}}catch{}try{let e=localStorage.getItem(G);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&Un(e.providerId)));n.length!==t.length&&localStorage.setItem(G,JSON.stringify(n))}catch{}}function qn(){Wn=!1}var Jn={_resetLegacyCleanup:qn};function Yn(){let e=a().filter(g),t=h();return[...new Set([...e,...t])].filter(e=>!_(e)?.hidden)}function Xn(e){try{if(J(e).length>0)return!0}catch{}try{if(i(e).length>0)return!0}catch{}let t=_(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function Zn(e,t){try{if(J(e).some(e=>e.id===t))return!0}catch{}try{if(i(e).some(e=>e.id===t))return!0}catch{}let n=_(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function q(e){return _(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Qn(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.cost!==void 0&&(e.cost=t.cost,e.inputCost=t.cost.input,e.outputCost=t.cost.output,e.cacheReadCost=t.cost.cacheRead,e.cacheWriteCost=t.cost.cacheWrite),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function J(e){try{if(e===`bedrock-camp`){let e=c(Z(`bedrock-camp`));return Bn(`amazon-bedrock`).filter(t=>s(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=q(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Y.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of a())try{for(let t of Bn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=n.api===`openai`?`openai`:`anthropic`,a=`${e}-${i}`,o=r.get(n.id),s;if(o)s={...o,api:a,provider:e};else if(s=zr(e,n.id,``,a),n.name&&(s.name=n.name),i===`anthropic`){let e=On(n.id,r);s.cost=e,s.inputCost=e.input,s.outputCost=e.output,s.cacheReadCost=e.cacheRead,s.cacheWriteCost=e.cacheWrite}let c=t.modelOverrides?.[n.id];return c&&Qn(s,c),Qn(s,n),s})}if(t.isOAuth){let n=Bn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Qn(i,a),i})}return Bn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Y.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function $n(e){let t=X().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,scopes:t.scopes,expired:n}}var er=Object.assign({})[`/packages/webapp/providers.json`]??[],Y=u(`provider-settings`);function tr(e=er){if(e.length===0||X().length>0)return;let t=new Set(Yn());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){Y.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}pr(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(K)&&localStorage.setItem(K,`${n.providerId}:${n.model}`)}var nr=[/haiku/i];function rr(e){return nr.some(t=>t.test(e))}function ir(e){return e.filter(e=>!rr(e.id))}function ar(e,t){let n=ei();if(n===null)return e;let r=In();return e.filter(e=>!Nn(r,n,t,e.id))}function or(){let e=X();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=q(n.providerId);if(e.hidden||Un(n.providerId))continue;let r=ar(ir(J(n.providerId)),n.providerId);if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function X(){Gn();let e=localStorage.getItem(G);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function sr(e){return En(localStorage)[e]??[]}function cr(e,t){let n=En(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,Dn(localStorage,n)}async function lr(e,t){if(v()){cr(e,t);return}let n=y();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{Dn(localStorage,r)}catch(t){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function ur(){return En(localStorage)}function dr(e){localStorage.setItem(G,JSON.stringify(e))}async function fr(e){if(v()){dr(e);return}let t=y();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(G,r)}catch(e){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function pr(e,t,n,r,i){let a=X().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),dr(a)}async function mr(e){let t=p();try{if(t===`extension-direct`){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Y.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Y.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else if(t===`extension-delegate`){let t=await m(`secrets.delete`,{name:`oauth.${e}.token`});t?.error&&Y.error(`Bridge secrets.delete returned error`,{providerId:e,error:t.error})}else if(t!==`connect`){let t=await fetch(d(`/api/secrets/oauth/${e}`),{method:`DELETE`,headers:f()});!t.ok&&t.status!==404&&Y.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Y.error(`OAuth replica removal failed`,{providerId:e,topology:t,error:n instanceof Error?n.message:String(n)})}}async function hr(e){let t=X().find(t=>t.providerId===e),n=q(e);t&&n?.isOAuth&&await gr(e),await mr(e),await fr(X().filter(t=>t.providerId!==e));let r=localStorage.getItem(K)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(K)}async function gr(e){let t=X().find(t=>t.providerId===e);if(!t)return;let r=q(e);if(r?.isOAuth){if(r.onOAuthLogout)try{await r.onOAuthLogout()}catch(t){Y.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(r.getOAuthLogoutUrl){let i=r.getOAuthLogoutUrl(t);if(i){let{openIdpLogoutUrl:t}=await n(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-C9Jn4g2n.js`);return{openIdpLogoutUrl:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]));await t(i).catch(t=>{Y.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await fr(X().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await mr(e)}}async function _r(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function vr(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await _r(()=>t.sendMaskRequest(r),n);if(!i){Y.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}function yr(e,t){if(e.accessToken)return`scopes`in e?e.scopes:t?.scopes}async function br(e){let t=X().find(t=>t.providerId===e.providerId),n=X().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl,scopes:yr(e,t)}),await fr(n);let r=q(e.providerId)?.oauthTokenDomains??[],i=sr(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=p();try{if(s===`extension-direct`)await vr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Y.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message});let r=typeof t==`object`&&t?t:void 0;r?.error&&Y.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:r.error}),n(r??{})})}),getAccounts:X,saveAccounts:fr});else if(s===`extension-delegate`)await vr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>m(`secrets.mask-oauth-token`,t).then(t=>(t?.error&&Y.warn(`Bridge mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t??{})).catch(t=>(Y.error(`Bridge mask-oauth-token transport failed`,{providerId:e.providerId,error:t instanceof Error?t.message:String(t)}),{})),getAccounts:X,saveAccounts:fr});else if(s!==`connect`){let t=await fetch(d(`/api/secrets/oauth-update`),{method:`POST`,headers:f({"Content-Type":`application/json`}),body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json();if(typeof n.maskedValue==`string`){let t=X(),r=t.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=n.maskedValue,await fr(t))}else Y.warn(`OAuth replica POST ok but missing maskedValue`,{providerId:e.providerId})}else Y.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Y.error(`OAuth replica sync failed`,{providerId:e.providerId,topology:s,error:t instanceof Error?t.message:String(t)})}}var xr=`local`;function Sr(e){let t=X().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Cr(e){let t=X().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(q(e).optionalApiKey?xr:null):null}function Z(e){return X().find(t=>t.providerId===e)?.baseUrl??null}function wr(e){return X().find(t=>t.providerId===e)?.deployment??null}function Tr(e){return X().find(t=>t.providerId===e)?.apiVersion??null}function Q(){let e=localStorage.getItem(K)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Er(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...h(),...Yn()]),i=n.includes(`.`);if(r.has(n)||!i){localStorage.setItem(K,e);return}}let n=$();localStorage.setItem(K,`${n}:${e}`)}function Dr(){return localStorage.getItem(K)||``}function $(){let e=Dr(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=X(),r=Q();if(r){let e=n.find(e=>Xn(e.providerId)&&Zn(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>Xn(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function Or(e){let t=Q();localStorage.setItem(K,`${e}:${t}`)}function kr(){let e=Q();localStorage.setItem(K,e)}function Ar(){return Cr($())}function jr(e){let t=$();pr(t,e,Z(t)??void 0)}async function Mr(){await hr($())}function Nr(){return Z($())}function Pr(e){let t=$(),n=Sr(t);n&&pr(t,n,e||void 0)}function Fr(){let e=$(),t=Sr(e);t&&pr(e,t)}function Ir(){let e=X(),t=$(),n=Q();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function Lr(){let e=X();await Promise.allSettled(e.map(e=>hr(e.providerId))),localStorage.removeItem(G),localStorage.removeItem(K);for(let e of Vn)localStorage.removeItem(e)}function Rr(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function zr(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${Rr(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function Br(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function Vr(e,t,n){let r=J(e).find(e=>e.id===t);return r?n?{...r,baseUrl:n}:r:null}function Hr(e,t,n,r){return n.isOAuth?J(t).find(e=>e.id===r)||{...e,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`?{...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}:e}function Ur(e,t,n,r,i){if(t.isOAuth)return Vr(e,n,r)??zr(e,n,r);if(i)throw Error(`Model ${n} is not available from provider ${e}`);return Kr()}function Wr(e,t){if(!e)return Kr();let n=t??$(),r=Z(n),i=q(n);if(t!==void 0){let t=Vr(n,e,r);if(t)return t}try{let t=zn(Br(n,i),e);if(!t?.id)throw Error(`Model ${e} not found`);let a=Hr(t,n,i,e);return r?{...a,baseUrl:r}:a}catch(a){return Y.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:n,modelId:e,error:a instanceof Error?a.message:String(a)}),Ur(n,i,e,r,t!==void 0)}}function Gr(e,t){return e.provider===t||e.provider===Br(t,q(t))}function Kr(){let e=$(),t=Q(),n=Z(e),r=J(e),i=q(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=Br(e,i),a=zn(t,o);if(!a?.id)throw Error(`Model ${o} not found in ${t} registry`);let s=a;return i.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Y.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?zr(e,o,n):zn(`anthropic`,`claude-sonnet-4-0`)}}function qr(e){let t=e.toLowerCase();if(!t)return null;let n=null;try{n=$()}catch{}if(n!==null){let e=Jr(t,[n]);if(e!==null)return e}return Jr(t,X().map(e=>e.providerId))}function Jr(e,t){let n=null,r=-1;for(let i of t)for(let t of J(i)){let i=t.id.toLowerCase(),a=(t.name??``).toLowerCase();if(!i.includes(e)&&!a.includes(e))continue;let o=t.contextWindow??0;(o>r||o===r&&si(t.id,n??``)>0)&&(r=o,n=t.id)}return n}function Yr(){let e=[];try{for(let t of X())e.includes(t.providerId)||e.push(t.providerId)}catch{}try{let t=$();e.includes(t)||e.push(t)}catch{}return e}function Xr(e){let t=e.indexOf(`:`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1),i=Yr().includes(n);if(i)return{providerId:n,modelId:r,configured:i};let a=!1;try{a=Yn().includes(n)}catch{}return a?{providerId:n,modelId:r,configured:!1}:null}function Zr(e,t,n=!0){let r=[e],i=n?Jr(e.toLowerCase(),[t]):null;i!==null&&i!==e&&r.push(i);let a=[];try{a=J(t)}catch{}for(let n of r)if(!(a.length>0&&!a.some(e=>e.id===n)))try{if(Wr(n,t).id===n)return{modelId:n,providerId:t}}catch(r){Y.debug(`selectModelFromProvider: candidate did not resolve`,{input:e,candidate:n,providerId:t,error:r instanceof Error?r.message:String(r)})}return null}function Qr(e){return e.map(e=>`${e.providerId}:${e.modelId}`).join(`, `)}function $r(e){if(!e)return{ok:!1,error:`unknown model: (empty)`};let t=Xr(e);if(t)return ii(e,t);let n=null;try{n=$()}catch{}if(n!==null){let t=Zr(e,n);if(t)return ri(t)}return ai(e,n)}function ei(){try{return $()}catch{return null}}function ti(e){let t=ei();return t===null||Pn(In(),t,e.providerId,e.modelId)}function ni(e){let t=ei()??`<none>`;return{ok:!1,error:`model not allowed: ${`${e.providerId}:${e.modelId}`} is blocked by ${kn} while "${t}" is selected — ${Ln(t,e.providerId,e.modelId)}`}}function ri(e){return ti(e)?{ok:!0,selection:e}:ni(e)}function ii(e,t){if(!t.configured){let n=Yr();return{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" is not configured${n.length>0?`; configured: ${n.join(`, `)}`:``})`}}let n=Zr(t.modelId,t.providerId);return n?ri(n):{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" does not offer "${t.modelId}")`}}function ai(e,t){let n=Yr().filter(e=>e!==t);for(let t of[`exact`,`shorthand`]){let r=[];for(let i of n){let n=t===`exact`?e:Jr(e.toLowerCase(),[i]);if(n===null)continue;let a=Zr(n,i,!1);a&&r.push(a)}let i=r.filter(ti);if(i.length===0&&r.length>0)return ni(r[0]);if(i.length===1)return{ok:!0,selection:i[0]};if(i.length>1)return{ok:!1,error:`ambiguous model: ${e} matches ${Qr(i)} — qualify it as provider:model`}}return{ok:!1,error:`unknown model: ${e}`}}function oi(e){let t=$r(e);return t.ok?t.selection.modelId:null}function si(e,t){let n=e.match(/\d+/g)?.map(Number)??[],r=t.match(/\d+/g)?.map(Number)??[],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}export{_r as A,oi as B,q as C,$ as D,Q as E,Xn as F,cr as G,br as H,hr as I,Or as J,lr as K,Kr as L,Gr as M,vr as N,rr as O,ar as P,Sn as Q,Wr as R,$n as S,Sr as T,jr as U,$r as V,Pr as W,Cn as X,On as Y,wn as Z,Yn as _,tr as a,wr as b,Fr as c,X as d,or as f,Tr as g,Cr as h,pr as i,Kn as j,gr as k,kr as l,Ar as m,Jn as n,Lr as o,ur as p,Er as q,Rn as r,Mr as s,G as t,Ir as u,Nr as v,J as w,sr as x,Z as y,qr as z};
|