@preventive/triage 1.0.0-alpha.37 → 1.0.0-alpha.39
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 +16 -0
- package/common/bundle-compare-diff.d.ts +3 -0
- package/common/bundle-compare-diff.js +522 -0
- package/common/bundle-compare-inputs.d.ts +2 -0
- package/common/bundle-compare-inputs.js +65 -0
- package/common/bundle-metadata.d.ts +6 -2
- package/common/bundle-metadata.js +63 -20
- package/common/bundle-pkg-of.d.ts +1 -0
- package/common/bundle-pkg-of.js +90 -0
- package/common/bundle-source-links.js +7 -0
- package/common/bundle-sourcemap.d.ts +10 -0
- package/common/bundle-sourcemap.js +100 -0
- package/common/bundle-sources.d.ts +3 -1
- package/common/bundle-sources.js +47 -19
- package/common/code-language.js +16 -2
- package/common/default-scan-models.ts +2 -1
- package/common/dependency-reviews.d.ts +23 -0
- package/common/dependency-reviews.js +81 -0
- package/common/finding-duplicates.js +58 -0
- package/common/finding-filters.js +274 -0
- package/common/github-pr.ts +1 -1
- package/common/gzip.js +59 -0
- package/common/line-diff.d.ts +8 -0
- package/common/line-diff.js +56 -0
- package/common/linked-workspace-groups.js +63 -0
- package/common/managed/npm-packages.d.ts +5 -0
- package/common/managed/npm-packages.js +34 -0
- package/common/managed/permissions.ts +1 -5
- package/common/managed/routes.js +123 -12
- package/common/managed/team-app.d.ts +2 -0
- package/common/managed/team-app.js +31 -0
- package/common/managed/triage.ts +1 -1
- package/common/managed/upload-seal.ts +126 -0
- package/common/pretty-print.d.ts +5 -0
- package/common/pretty-print.js +24 -0
- package/common/revalidation-conflicts.js +48 -0
- package/common/revalidation-input-groups.js +56 -0
- package/common/workspace-app.js +23 -0
- package/common/workspace-groups.js +176 -0
- package/out/brotli-fallback.js +3 -3
- package/out/chunk-2KBF5TZ7.js +2 -0
- package/out/chunk-2XUEZHIP.js +28 -0
- package/out/chunk-35VE6CDH.js +2 -0
- package/out/chunk-3BZ7JERB.js +1 -0
- package/out/chunk-45WIN3SW.js +1 -0
- package/out/chunk-4XCDFGDP.js +10 -0
- package/out/chunk-6C76GAXK.js +1 -0
- package/out/chunk-7ZKDKGAH.js +1 -0
- package/out/chunk-ABW5FVSN.js +1 -0
- package/out/chunk-C4Z6ZBXV.js +10 -0
- package/out/chunk-CMQA4DM6.js +1 -0
- package/out/chunk-CVVJAXVY.js +2 -0
- package/out/chunk-DIJJNTRH.js +10 -0
- package/out/chunk-F4OMDNEY.js +1 -0
- package/out/chunk-GJ4IUCNS.js +1 -0
- package/out/chunk-GMFXFEUA.js +2 -0
- package/out/chunk-GNXOKIGP.js +80 -0
- package/out/chunk-GZ4MS3TE.js +13 -0
- package/out/chunk-HIV7SVI7.js +1 -0
- package/out/chunk-IU3CCINR.js +3 -0
- package/out/chunk-JVBB4LZX.js +1 -0
- package/out/chunk-K3X5EJBQ.js +2 -0
- package/out/chunk-KEX2ATEW.js +2 -0
- package/out/chunk-KYCNJVB7.js +1 -0
- package/out/chunk-NRPC74AM.js +1 -0
- package/out/chunk-OOJM4CTU.js +1 -0
- package/out/chunk-PNHBZGDD.js +1 -0
- package/out/chunk-QSLWGJBQ.js +223 -0
- package/out/chunk-R5O6FAW4.js +2 -0
- package/out/chunk-RFZQQXSG.js +17 -0
- package/out/chunk-TINZZKP5.js +33 -0
- package/out/chunk-TUII34K2.js +1 -0
- package/out/chunk-TZ5KB2Y5.js +10 -0
- package/out/chunk-UNTRGE26.js +2 -0
- package/out/chunk-UYAXVRVL.js +1 -0
- package/out/chunk-V3ME6FI5.js +2 -0
- package/out/chunk-V5O7M2YT.js +1 -0
- package/out/chunk-VIHGO77Y.js +1 -0
- package/out/chunk-W4J3MGLB.js +1 -0
- package/out/chunk-WGG7KQUH.js +1 -0
- package/out/chunk-XNGEQO7Y.js +2 -0
- package/out/chunk-XRWAV3DX.js +7 -0
- package/out/chunk-XYDGU6BM.js +51 -0
- package/out/chunk-XYFXXB2G.js +10 -0
- package/out/chunk-YVZH5SHP.js +1 -0
- package/out/chunk-ZPD5R5RP.js +3 -0
- package/out/client-managed-import.js +3 -87
- package/out/client-managed.js +26 -338
- package/out/client-sync.js +8 -14
- package/out/graph.js +17 -30
- package/out/index.html +34 -0
- package/out/prism.js +6 -2
- package/out/terminal.js +241 -257
- package/out/view.css +1 -1
- package/out/view.js +76 -520
- package/package.json +89 -7
- package/risk/files/characters.js +196 -0
- package/risk/files/hosts.js +205 -0
- package/risk/files/readability.js +171 -0
- package/risk/files/runs-code.js +358 -0
- package/risk/files/script.js +114 -0
- package/risk/files/stamps.js +46 -0
- package/risk/index.d.ts +142 -0
- package/risk/index.js +7 -0
- package/risk/npm/assess.js +219 -0
- package/risk/npm/combined.js +65 -0
- package/risk/npm/compare.js +228 -0
- package/risk/npm/dependencies.js +153 -0
- package/risk/npm/diff.js +43 -0
- package/risk/npm/downloads.js +84 -0
- package/risk/npm/files.js +34 -0
- package/risk/npm/held.js +60 -0
- package/risk/npm/install-scripts.js +34 -0
- package/risk/npm/malware.js +36 -0
- package/risk/npm/manifest.js +65 -0
- package/risk/npm/new-dependency.js +30 -0
- package/risk/npm/old-version.js +108 -0
- package/risk/npm/registry.js +282 -0
- package/risk/npm/release.js +85 -0
- package/risk/npm/specs.js +124 -0
- package/risk/npm/tarball.js +113 -0
- package/server-e2e/http.ts +7 -7
- package/server-e2e/npm-proxy.ts +1 -1
- package/server-e2e/objstore/fetch-mint-guard.ts +2 -2
- package/server-e2e/objstore/handlers.ts +1 -1
- package/server-e2e/objstore/tokens.ts +1 -1
- package/server-e2e/sign.ts +1 -1
- package/server-managed/bundle-advisories.ts +74 -12
- package/server-managed/bundle-cache.ts +37 -4
- package/server-managed/bundle-commits.ts +140 -0
- package/server-managed/bundle-summary-cache.ts +24 -10
- package/server-managed/config.ts +4 -0
- package/server-managed/db-methods.ts +98 -11
- package/server-managed/db-neon.ts +39 -4
- package/server-managed/db-schema.ts +14 -2
- package/server-managed/db-table-names.ts +1 -1
- package/server-managed/db.ts +7 -3
- package/server-managed/dependency-reviews.ts +248 -0
- package/server-managed/github-app.ts +9 -3
- package/server-managed/github-errors.ts +21 -2
- package/server-managed/github-issue-oauth.ts +5 -6
- package/server-managed/github-metadata.ts +115 -0
- package/server-managed/github-oauth.ts +38 -2
- package/server-managed/http-response.ts +26 -0
- package/server-managed/http.ts +952 -53
- package/server-managed/index.ts +11 -5
- package/server-managed/kept.ts +28 -0
- package/server-managed/locked-packages.ts +85 -0
- package/server-managed/lru.ts +30 -0
- package/server-managed/npm-insights.ts +440 -0
- package/server-managed/npm-kept.ts +65 -0
- package/server-managed/npm-loads.ts +167 -0
- package/server-managed/npm-manifest.ts +115 -0
- package/server-managed/npm-packages.ts +378 -0
- package/server-managed/npm-provenance.ts +123 -0
- package/server-managed/npm-risk.ts +177 -0
- package/server-managed/pretty-print.ts +352 -0
- package/server-managed/public-workspace.ts +78 -7
- package/server-managed/rename-diff-worker.js +26 -0
- package/server-managed/rename-diff.ts +270 -0
- package/server-managed/report-sources.ts +13 -2
- package/server-managed/repository-browser.ts +19 -5
- package/server-managed/repository-risk.ts +418 -0
- package/server-managed/session.ts +16 -2
- package/server-managed/sql.ts +5 -2
- package/server-managed/storage-encryption.ts +5 -3
- package/server-managed/storage-payload.ts +4 -0
- package/server-managed/storage-stores.ts +2 -0
- package/server-managed/storage.ts +6 -3
- package/server-managed/team-app.ts +94 -0
- package/server-managed/team-feed.ts +1 -1
- package/server-managed/team-npm-scopes.ts +77 -0
- package/server-managed/type-only-worker.js +19 -0
- package/server-managed/type-only.ts +103 -0
- package/server-managed/uploads.ts +25 -4
- package/server-managed/upstream-cache.ts +147 -5
- package/server-managed/view-as.ts +58 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import{a as B,b as xe,c as ms,d as Qe,e as X,f as vs}from"./chunk-YVZH5SHP.js";import{a as $e}from"./chunk-TZ5KB2Y5.js";import{a as gs,d as bs}from"./chunk-XYFXXB2G.js";import{a as I}from"./chunk-DIJJNTRH.js";import{D as ye,F as fs,J as Xe,L as hs,a as us,q as ps}from"./chunk-GNXOKIGP.js";import{a as q,b as ns,c as is}from"./chunk-C4Z6ZBXV.js";import{a as os,b as $,c as u,d as k,f as re,g,j as S}from"./chunk-2XUEZHIP.js";import{b as _e}from"./chunk-TUII34K2.js";import{a as as,c as be,d as ls,i as cs,m as ve,n as we,o as ds}from"./chunk-V5O7M2YT.js";var ws={default:{className:"brand-deepview",mark:'<path class="fg" d="M7.843 6.719c-1.605 0-2.926 1.292-3.477 1.947.466.58 1.872 2.024 3.496 2.024s2.907-1.292 3.486-2.005c-.627-.703-1.88-1.966-3.505-1.966m.019 3.857c-1.51 0-2.802-1.263-3.353-1.9.55-.617 1.814-1.852 3.334-1.852 1.51 0 2.698 1.12 3.335 1.852-.533.618-1.787 1.9-3.316 1.9m-.019-3.42c-.826 0-1.577.694-1.577 1.596 0 .789.599 1.577 1.577 1.577.893 0 1.587-.684 1.587-1.577-.01-.779-.627-1.596-1.587-1.596m0 3.069a1.476 1.476 0 0 1-1.482-1.473c0-.722.599-1.491 1.482-1.491.846 0 1.482.693 1.492 1.491 0 .808-.618 1.473-1.492 1.473m.01-2.727c-.637 0-1.264.532-1.264 1.244 0 .627.475 1.235 1.245 1.245.684 0 1.254-.522 1.254-1.244 0-.58-.475-1.236-1.235-1.245m-.02 2.403a1.167 1.167 0 0 1-1.149-1.159c0-.532.456-1.14 1.169-1.149.56 0 1.149.427 1.159 1.15 0 .636-.485 1.158-1.179 1.158m-.769-1.833c-.19.238-.275.494-.237.864l.74.057zm1.026-.294c-.295-.057-.665 0-.912.228l.323.607zm.133.047-.38.56.988.114c-.057-.275-.323-.579-.608-.674m-.124.741.456.912c.21-.209.352-.484.314-.836zm-1.225.504a.97.97 0 0 0 .57.617l.399-.551zm.713.664c.313.076.636.01.845-.161l-.295-.618zm-.637 1.55c0 .028-.028.066-.066.066h-.59c-.028 0-.066-.028-.066-.066s.029-.066.067-.066h.579c.048 0 .076.028.076.066m.712 0c0 .028-.028.066-.066.066h-.437c-.028 0-.066-.028-.066-.066s.028-.066.066-.066h.437c.038 0 .066.028.066.066m.666 0c0 .028-.029.066-.067.066h-.37c-.029 0-.067-.028-.067-.066s.029-.066.067-.066h.37c.038 0 .067.028.067.066m-1.672.351c0 .029-.029.067-.067.067h-.295c-.028 0-.066-.028-.066-.066 0-.029.029-.067.067-.067h.294c.038 0 .066.028.066.066m.694 0c0 .029-.028.067-.066.067h-.409c-.028 0-.066-.028-.066-.066 0-.029.028-.067.066-.067h.399c.038 0 .076.028.076.066m.732 0c0 .029-.029.067-.067.067h-.465c-.029 0-.067-.028-.067-.066 0-.029.029-.067.067-.067h.465c.038 0 .067.028.067.066m-1.093.371a.065.065 0 0 1-.067.066h-.627c-.028 0-.075-.028-.066-.066 0-.028.029-.066.067-.066h.627c.038 0 .066.028.066.066m.684 0a.065.065 0 0 1-.066.066h-.39c-.028 0-.076-.028-.066-.066 0-.028.028-.066.066-.066h.39c.038 0 .066.028.066.066M5.088 6.263c-.019-.105-.114-.19-.237-.19s-.257.104-.257.237.105.238.247.238c.105 0 .218-.076.238-.18h.864v.826l.095-.048V6.31c0-.028-.019-.057-.048-.057h-.902zm-.237.19c-.076 0-.143-.066-.143-.143s.066-.142.143-.142.142.066.142.143c.01.076-.066.142-.143.142m2.89-.323H6.38l.418-.475v-.332a.255.255 0 0 0 .218-.248c0-.123-.114-.256-.256-.256s-.266.114-.266.257c0 .123.095.228.209.247v.284l-.456.523v.893l.095-.047v-.742h1.396c.029 0 .067-.009.067-.057 0-.028-.019-.047-.067-.047m-1.13-1.054c0-.076.066-.152.152-.152s.152.066.152.151c0 .076-.066.152-.152.152s-.152-.066-.152-.152m-.836 5.264h-.874c-.019-.105-.114-.219-.247-.219s-.256.105-.256.257c0 .132.114.275.266.275.104 0 .218-.076.237-.19h.827v.608l-.257.285a.3.3 0 0 0-.095-.019c-.133 0-.256.105-.256.228 0 .133.104.238.237.238.124 0 .247-.105.247-.238a.23.23 0 0 0-.057-.152l.285-.304v-.712c0-.029-.019-.058-.057-.058m-1.121.219a.16.16 0 0 1-.152-.161c0-.077.066-.162.152-.162s.152.066.152.152-.066.171-.152.171m.713 1.14c-.076 0-.143-.066-.143-.143s.066-.133.143-.133.142.067.142.143c0 .066-.066.133-.143.133m5.472-1.377a.24.24 0 0 0-.237.208h-1.13c-.029 0-.038.02-.038.048v.712l-.323.39h-.029a.245.245 0 0 0-.247.247c0 .133.114.256.247.256s.247-.113.247-.256a.26.26 0 0 0-.123-.219l.313-.38v-.674h1.083c.019.105.114.2.238.2.133 0 .266-.105.266-.257 0-.133-.105-.276-.266-.276m-1.758 1.767a.15.15 0 0 1-.143-.152c0-.075.067-.142.143-.142s.152.066.152.143a.15.15 0 0 1-.152.151m1.758-1.33a.15.15 0 0 1-.143-.152.147.147 0 0 1 .294.001.15.15 0 0 1-.152.151M8.917 5.55h-.399a.075.075 0 0 1-.076-.076c0-.028.029-.066.067-.066h.418c.028 0 .066.028.066.066s-.038.076-.076.076m.742 0H9.22c-.038 0-.067-.028-.067-.076 0-.028.029-.066.067-.066h.437c.038 0 .066.028.066.066s-.028.076-.066.076m.883 0h-.598c-.029 0-.067-.028-.067-.076 0-.028.029-.066.067-.066h.598c.028 0 .066.028.066.066s-.028.076-.066.076m-1.282.4h-.741c-.038 0-.076-.029-.076-.067s.028-.076.066-.076h.75c.039 0 .067.038.067.076 0 .029-.028.067-.066.067m.797 0h-.503c-.038 0-.076-.029-.076-.067s.028-.066.066-.066h.513c.038 0 .067.028.067.066 0 .029-.029.067-.067.067m.476 0h-.19c-.039 0-.067-.029-.067-.067s.028-.066.066-.066h.2c.028 0 .066.028.066.066 0 .029-.028.067-.075.067m-1.682.398h-.332c-.039 0-.077-.028-.077-.066s.029-.066.067-.066h.342c.038 0 .076.028.076.066s-.028.066-.076.066m.789 0h-.494c-.038 0-.067-.028-.067-.066s.029-.066.067-.066h.494c.038 0 .066.028.066.066s-.028.066-.066.066m.893 0h-.599c-.038 0-.076-.028-.076-.066s.028-.066.066-.066h.618c.028 0 .066.028.066.066s-.028.066-.076.066m.418.305a.69.69 0 0 0-.674.712c0 .086.019.18.048.257l.085.066c-.028-.085-.057-.171-.057-.304 0-.285.228-.646.598-.646.295 0 .599.228.599.636a.58.58 0 0 1-.599.59.8.8 0 0 1-.237-.048l.123.114a.4.4 0 0 0 .114.01c.39 0 .684-.276.684-.666 0-.313-.266-.712-.684-.722m.353.552-.019-.01-.161.19-.143-.01-.057-.047-.019-.133.19-.2a.28.28 0 0 0-.361.077c-.076.095-.076.209-.038.351l-.247.304.171.152.266-.266c.142.038.285.019.38-.095a.31.31 0 0 0 .038-.313"/>'},"claude-security":{className:"brand-claude",mark:`<path class="fg" d="${as}"/>`},"codex-security":{className:"brand-codex",mark:'<path class="fg" d="M11.04 8.364a1.72 1.72 0 0 0-.152-1.432 1.8 1.8 0 0 0-1.925-.846 1.8 1.8 0 0 0-.778-.498 1.8 1.8 0 0 0-.927-.05 1.8 1.8 0 0 0-.827.414 1.77 1.77 0 0 0-.507.767 1.8 1.8 0 0 0-.683.297 1.75 1.75 0 0 0-.499.549 1.75 1.75 0 0 0 .22 2.07 1.72 1.72 0 0 0 .151 1.432 1.8 1.8 0 0 0 1.926.846 1.77 1.77 0 0 0 1.333.587c.78 0 1.47-.496 1.707-1.227a1.8 1.8 0 0 0 .684-.298 1.75 1.75 0 0 0 .499-.548 1.75 1.75 0 0 0-.222-2.063m-2.667 3.678a1.33 1.33 0 0 1-.851-.304l.042-.024 1.413-.804a.23.23 0 0 0 .116-.199V8.747l.597.34q.01.005.011.015v1.629a1.323 1.323 0 0 1-1.328 1.31m-2.857-1.203a1.3 1.3 0 0 1-.158-.879l.042.025 1.414.805a.23.23 0 0 0 .23 0l1.729-.982v.68a.02.02 0 0 1-.01.018l-1.431.814a1.34 1.34 0 0 1-1.816-.48m-.372-3.037a1.32 1.32 0 0 1 .7-.574v1.656a.22.22 0 0 0 .114.197l1.72.979-.598.34a.02.02 0 0 1-.021 0L5.63 9.587a1.304 1.304 0 0 1-.487-1.791zm4.907 1.125L8.327 7.94l.596-.34a.02.02 0 0 1 .02 0l1.43.814a1.3 1.3 0 0 1 .512.528 1.3 1.3 0 0 1-.118 1.4 1.33 1.33 0 0 1-.595.436V9.122a.23.23 0 0 0-.12-.195m.594-.881-.042-.025-1.411-.812a.23.23 0 0 0-.232 0l-1.727.983v-.68a.02.02 0 0 1 .008-.018l1.429-.813a1.34 1.34 0 0 1 1.425.061 1.3 1.3 0 0 1 .55 1.298zM6.908 9.252l-.597-.34a.02.02 0 0 1-.012-.016V7.271c0-.249.073-.493.209-.703s.329-.378.557-.483a1.35 1.35 0 0 1 1.415.18l-.042.023-1.413.804a.23.23 0 0 0-.116.2zm.324-.69.77-.438.77.438v.875l-.768.437-.77-.437z"/>'},deepsec:{className:"brand-vercel",mark:'<path class="fg" d="m8 5.97 3.5 6.062h-7Z"/>'},"markdown-generic":{className:"brand-markdown",mark:'<path class="fg" d="M4 7h1.2l1.2 1.5L7.6 7h1.2v4H7.6V8.8L6.4 10 5.2 8.8V11H4zm5.6 0h1.2v2.3H12l-1.8 1.8-1.8-1.8h1.2Z"/>'},piolium:{className:"brand-piolium",mark:'<path class="fg" d="M8 6.4 5.6 7.2v2.3c0 1.6 1 2.7 2.4 3.3 1.4-.6 2.4-1.7 2.4-3.3V7.2Z"/>'}},qo={default:["#2563eb","#fff"],"claude-security":["#d97757","#fff"],"codex-security":["#fff","#000"],deepsec:["#000","#fff"],piolium:["#fbb829","#1c1b19"],"markdown-generic":["#374151","#fff"]},et=Object.fromEntries(Object.entries(ws).map(([t,{className:e,mark:s}])=>{let[r,o]=qo[t],n=t==="codex-security"||t==="deepsec"?` stroke="${o}" stroke-width=".5"`:"";return[t,`<svg class="file-icon ${e}" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path class="bg" fill="${r}"${n} d="M3 2h6l4 4v8H3z"/><path fill="rgba(0,0,0,.18)" d="M9 2v4h4Z"/><g fill="${o}">${s}</g></svg>`]})),Pl=Object.fromEntries(Object.entries(ws).map(([t,{className:e,mark:s}])=>[t,`<span class="report-logo ${e}" aria-hidden="true"><svg viewBox="${t==="default"?"3.5 4 9 9":"4 5 8 8"}" width="14" height="14">${s}</svg></span>`]));function jl(t){let e=t.toLowerCase();if(e.endsWith(".generic-md")){let s=t.slice(0,-11);try{return decodeURIComponent(s)}catch{return s}}return e.endsWith(".codex")?t.slice(0,-6).replaceAll("__","/"):t}var Ho={__proto__:null,js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"jsx",ts:"typescript",mts:"typescript",cts:"typescript",tsx:"tsx",json:"json",css:"css",html:"markup",htm:"markup",xml:"markup",svg:"markup",yml:"yaml",yaml:"yaml",sh:"bash",bash:"bash",md:"markdown",markdown:"markdown",sol:"solidity",php:"php",phtml:"php",rs:"rust",rb:"ruby",py:"python",pyw:"python",pyi:"python",java:"java",cpp:"cpp",cc:"cpp",cxx:"cpp","c++":"cpp",hpp:"cpp",hh:"cpp",hxx:"cpp","h++":"cpp",h:"cpp",c:"c",m:"objectivec",mm:"objectivec"},ys={__proto__:null,module:"javascript",commonjs:"javascript","module-typescript":"typescript","commonjs-typescript":"typescript",json:"json",solidity:"solidity",php:"php",shell:"bash",rust:"rust",java:"java",objc:"objectivec",objcpp:"objectivec",c:"c","c-header":"c",cpp:"cpp","cpp-header":"cpp",ruby:"ruby",podspec:"ruby",podfile:"ruby",fastlane:"ruby","podfile-lock":"yaml",xml:"markup"};function Uo(t){if(typeof t!="string")return!1;let e=t.length-1,s=0;for(;s<e&&/\s/u.test(t[s]);)s++;for(;e>s&&/\s/u.test(t[e]);)e--;return s<e&&t[s]==="{"&&t[e]==="}"}function ke(t,e,s){if(typeof e=="string"&&ys[e])return ys[e];if(typeof t!="string")return null;let r=t.slice(t.lastIndexOf("/")+1),o=r.lastIndexOf(".");if(o<=0)return null;let n=r.slice(o+1).toLowerCase();return n==="map"?Uo(s)?"json":null:Ho[n]??null}var Go=Object.freeze({javascript:"JavaScript",jsx:"JSX",typescript:"TypeScript",tsx:"TSX",json:"JSON",css:"CSS",markup:"HTML",yaml:"YAML",bash:"Shell",markdown:"Markdown",solidity:"Solidity",php:"PHP",rust:"Rust",ruby:"Ruby",java:"Java",cpp:"C++",c:"C",objectivec:"Objective-C",python:"Python",go:"Go",kotlin:"Kotlin",swift:"Swift",dart:"Dart",sql:"SQL",lua:"Lua",csharp:"C#",scala:"Scala",vue:"Vue",svelte:"Svelte"}),Vo=Object.freeze({py:"python",pyw:"python",go:"go",kt:"kotlin",kts:"kotlin",swift:"swift",dart:"dart",sql:"sql",lua:"lua",cs:"csharp",scala:"scala",sc:"scala",vue:"vue",svelte:"svelte"});function Wo(t){let e=typeof t=="string"?t.slice(t.lastIndexOf("/")+1):"",s=e.lastIndexOf("."),r=s>0?e.slice(s+1).trim().toLowerCase():"",o=ke(t)??Vo[r];return o?{key:o,label:Go[o]??o}:r?{key:`extension:${r}`,label:`.${r}`}:{key:"other",label:"Other"}}function tt(t,e){let s=new Map,r=0,o=0;for(let[n,i]of t){let a=Wo(n),c=s.get(a.key)??{...a,files:0,lines:0,bytes:0};c.files++,c.lines+=i,c.bytes+=e.get(n)??0,s.set(a.key,c),o+=i,r+=e.get(n)??0}return{files:t.size,lines:o,bytes:r,languages:[...s.values()].toSorted((n,i)=>i.lines-n.lines||n.label.localeCompare(i.label))}}var Ko=new Set(["module","commonjs","json","module-typescript","commonjs-typescript"]),Zo=new Set(["solidity","php","shell","rust"]),Jo=new Set(["java","kotlin","gradle","objc","objcpp","swift","c","cpp","c-header","cpp-header","ruby","python","cmake","podspec","podfile","podfile-lock","template","xml","env","fastlane","pbxproj"]),Yo=new Set(["resource","resource:base64"]),ks=new Set(["stat:file","stat:directory"]),Xo=new Set([...Ko,...Zo,...Jo,...Yo,"patch","directory",...ks]),st=t=>ks.has(t);var _s=t=>t==="directory"||t==="stat:directory"?"directory":"file";function Qo(t,e,s){if(t===e)return t;let r=st(t);if(r!==st(e)&&_s(t)===_s(e))return r?e:t;throw new Error(`format conflict for '${s}' ('${e}' vs '${t}')`)}function H(t,e){return e===""?t:t==="."?e:`${t}/${e}`}var en=/^(?=[A-Za-z0-9-]{1,39}\/)[A-Za-z0-9](?:-?[A-Za-z0-9])*\/(?!\.\.?$)[\w.-]{1,100}$/u,tn=/^(?!\.\.?(?:\/|$))[\w.~@+-]+(?:\/(?!\.\.?(?:\/|$))[\w.~@+-]+)*$/u,sn=/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u,oe={github:t=>typeof t=="string"&&en.test(t),directory:t=>typeof t=="string"&&t.length<=1024&&(t===""||tn.test(t)),commit:t=>typeof t=="string"&&sn.test(t)},Ss=(t,e)=>t?.toLowerCase()===e?.toLowerCase();var Ee=(t,e,s)=>{if(t===void 0)return;U(t)||v(!1,`${s} must be an object`);for(let o of Object.keys(t))Object.hasOwn(e,o)||v(!1,`unknown ${s} key '${o}'`);let r=Object.entries(e).map(([o,n])=>typeof n=="object"?[o,Ee(t[o],n,`${s}.${o}`)]:(t[o]!==void 0&&!n(t[o])&&v(!1,`invalid ${s}.${o}: ${JSON.stringify(t[o])}`),[o,t[o]])).filter(([,o])=>o!==void 0);return r.length===0?void 0:Object.freeze(A(r))},Ce=(t,e="bundle repo")=>Ee(t,oe,e),rn=(t,e)=>e??(G(t)?"npm":void 0),Ms=(t,{ecosystem:e,repo:s},r)=>{if(s===void 0)return;rn(t,e)===void 0&&v(!1,`${r}: '${t}' is no dependency's bucket, and carries no repo`);let o=Ce(s,`${r} module '${t}' repo`);return o?.github===void 0&&v(!1,`${r} module '${t}' repo has no github`),o},Me=({name:t,version:e,ecosystem:s,repo:r,files:o})=>({name:t,version:e,...s===void 0?{}:{ecosystem:s},...r===void 0?{}:{repo:r},files:o});function rt({name:t,version:e,ecosystem:s,repo:r,files:o},n,i){return v(s===void 0||typeof s=="string"),Me({name:t,version:e??void 0,ecosystem:s,repo:Ms(n,{ecosystem:s,repo:r},i),files:A(Object.entries(o))})}function Es(t,{scope:e="full"}={}){let s=new Set;for(let[r,{files:o}]of t)if(!(e!=="full"&&!G(r)))for(let n of Object.keys(o))s.add(H(r,n));return s}function on(t,{what:e,files:s,formats:r,scope:o}){if(t.includes("\\"))return"holds a '\\'";if(ne(t))return"escapes the root";if(o!=="full"&&!G(t))return`is outside node_modules, which a '${o}'-scope ${e} does not record`;if(!s.has(t))return`names no file the ${e} records`;let n=r.get(t);return n==="directory"?"is a directory capture, not a file":st(n)?`is a payload-free '${n}' record, not a file`:null}function Cs(t,{what:e,files:s,formats:r,scope:o}){for(let n of t){let i=on(n,{what:e,files:s,formats:r,scope:o});v(i===null,`${e}: executable entry '${n}' ${i}`)}}function Os(t,{what:e,files:s,formats:r,scope:o="full"}){if(t===void 0)return new Set;let n=`${e}: executable`;v(Array.isArray(t),`${n} must be an array of file paths`);let i=new Set;for(let a of t)v(typeof a=="string"&&a!=="",`${n} entry must be a non-empty string`),v(!i.has(a),`${n} entry '${a}' is listed twice`),i.add(a);return Cs(i,{what:e,files:s,formats:r,scope:o}),i}function Is(t,{what:e,modules:s,formats:r,scope:o}){if(t.size!==0)return Cs(t,{what:e,files:Es(s,{scope:o}),formats:r,scope:o}),Oe(t)}function v(t,e){if(!t)throw new Error(e)}function As(t,e){let[s,r]=[t.split("/"),e.split("/")];for(;s.length>0&&s[0]===r[0];)s.shift(),r.shift();if(s.length===0&&r.length===0)return 0;if(s.length<2)return r.length<2&&s>r?1:-1;if(r.length<2)return 1;if(s[0]==="*")return-1;if(r[0]==="*"||s[0]==="node_modules")return 1;if(r[0]==="node_modules")return-1;let[o,n]=[s,r].map(i=>i.join(String.fromCodePoint(0)));if(o<n)return-1;if(o>n)return 1;throw new Error("Unreachable")}var Se=(t,e)=>As(t[0],e[0]),U=t=>t&&[null,Object.prototype].includes(Object.getPrototypeOf(t)),A=t=>Object.setPrototypeOf(Object.fromEntries(t),null),Oe=t=>[...t].toSorted(As),ot=(t,{sorted:e=!0}={})=>{let s=e?[...t].toSorted(Se):[...t];return A(s.map(([r,o])=>[r,o instanceof Map?ot(o,{sorted:e}):o]))},xs=(t,e)=>t.get(e)??t.set(e,new Map).get(e),Rs=t=>new Map(Object.entries(t).map(([e,s])=>[e,U(s)?Rs(s):s]));function ne(t){if(t.startsWith("/"))return!0;if(!t.includes(".."))return!1;let e=0;for(let s of t.split("/"))if(!(s==="."||s==="")){if(s!=="..")e++;else if(--e<0)return!0}return!1}var zs=t=>t.includes("\\")||ne(t),P=(t,e)=>v(!zs(t),`${e}: path '${t}' escapes the root or holds a '\\'`),Ls=(t,e)=>v(typeof t=="string"&&t!==""&&!zs(t),`${e}: invalid entry ${JSON.stringify(t)}`);function Ns(t,e){v(Array.isArray(t),`${e}: entries must be an array of file paths`);let s=new Set;for(let r of t)Ls(r,e),v(!s.has(r),`${e}: entry '${r}' is listed twice`),s.add(r);return s}function Ps(t,e){for(let s of t)Ls(s,e);return Oe(t)}function Ts(t,e){P(t,"formats"),v(Xo.has(e),`unknown format '${e}' for ${t}`)}function js(t){v(U(t));let e=new Map;for(let[s,r]of Object.entries(t)){Ts(s,r);let o=s===""?".":s;v(!e.has(o),`duplicate format key '${o}'`),e.set(o,r)}return e}function Bs(t){for(let[e,s]of t)Ts(e,s);return ot(t)}function Fs(t){for(let[,e]of t){v(e instanceof Map);for(let[s,r]of e){P(s,"imports"),v(r instanceof Map);for(let[,o]of r){if(typeof o=="string"){P(o,"imports");continue}v(o instanceof Map&&o.size>0,"import target must be a file or a non-empty {platform: file} map");for(let[n,i]of o)v(typeof n=="string"&&n.length>0&&!n.includes("/"),`invalid platform key '${n}'`),v(typeof i=="string"),P(i,"imports")}}}}function Ds(t){v(U(t));let e=Rs(t);return Fs(e),e}function qs(t){return Fs(t),ot(t)}function Hs(t,{skipEmpty:e=!1,repo:s=!0,what:r}={}){let o={modules:[],sources:[]};for(let[n,i]of t){if(e&&Object.keys(i.files).length===0)continue;let a=G(n);a&&v(i.name&&i.version&&i.files);let c=A(Object.entries(i.files).toSorted(Se));o[a?"modules":"sources"].push([n,Me({...i,repo:s?Ms(n,i,r):void 0,files:c})])}return{modules:A(o.modules.toSorted(Se)),sources:A(o.sources.toSorted(Se))}}function nn(t,e){let s=t instanceof Map;if(s!==e instanceof Map)return!1;if(!s)return t===e;if(t.size!==e.size)return!1;for(let[r,o]of t)if(e.get(r)!==o)return!1;return!0}var $s=t=>t instanceof Map?`{${[...t].map(([e,s])=>`${e}: ${s}`).join(", ")}}`:t;function Us(t,e,s){let r=new Map,o=n=>{for(let[i,a]of n){let c=xs(r,i);for(let[l,p]of a){let d=xs(c,l);for(let[f,h]of p)d.has(f)?v(nn(d.get(f),h),`${s}: import '${f}' from '${l}' resolves differently ('${$s(d.get(f))}' vs '${$s(h)}')`):d.set(f,h instanceof Map?new Map(h):h)}}};return o(t),o(e),r}function Gs(t,e,s){let r=new Map,o=n=>{for(let[i,a]of n){let c=r.get(i);if(c===void 0){r.set(i,a);continue}try{r.set(i,Qo(a,c,i))}catch(l){throw new Error(`${s}: ${l.message}`,{cause:l})}}};return o(t),o(e),r}function Vs(t,e,s,r){if(t.size===0)return new Set(e);let o=Es(s,{scope:r}),n=new Set(e);for(let i of t)o.has(i)||n.add(i);return n}var an=/(?:^|\/)\.{0,2}(?:\/|$)/u;function Ie(t,e,s){let r=H(t,e);return(r!=="."||e!=="")&&an.test(r)&&v(!1,`${s}: non-canonical file key ${JSON.stringify(r)}`),r.includes("\\")&&v(!1,`${s}: file key '${r}' holds a '\\', which no path may`),r}function Ae(t,e,s){let r=new Map;for(let[o,{files:n}]of t){typeof o!="string"&&v(!1,`${e}: bucket dir ${String(o)} is not a string`),P(o,e);for(let i of Object.keys(n)){let a=Ie(o,i,e),c=r.get(a);c!==void 0&&s(a,c,o),r.set(a,o)}}return r}var Ws=(t,e)=>s=>v(!1,`duplicate file key '${s}' across ${t} buckets -- module bucketing changed between writes (a workspace package without a version now owns its own bucket); regenerate the ${e}`);function Ks(t,e,s){let r=new Map,o=n=>{for(let[i,a]of n){let c=r.get(i);if(c===void 0){r.set(i,Me({...a,files:Object.assign(Object.create(null),a.files)}));continue}v(c.name===a.name,`${s}: module '${i}' name mismatch ('${c.name}' vs '${a.name}')`),v(c.version===a.version,`${s}: module '${i}' version mismatch ('${c.version}' vs '${a.version}')`+(c.version==null==(a.version==null)?"":" -- an artifact from an older stasis may record a placeholder version for a workspace package without one; regenerate it (bundle=replace / lock=replace)")),v(c.ecosystem===a.ecosystem,`${s}: module '${i}' ecosystem mismatch ('${c.ecosystem??"(none)"}' vs '${a.ecosystem??"(none)"}')`),c.repo===void 0&&a.repo!==void 0&&r.set(i,Me({...c,repo:a.repo}));for(let[l,p]of Object.entries(a.files))Object.hasOwn(c.files,l)?v(c.files[l]===p,`${s}: content mismatch for '${H(i,l)}'`):c.files[l]=p}};return o(t),o(e),Ae(r,s,(n,i,a)=>v(!1,`${s}: file '${n}' is bucketed under both '${i}' and '${a}' -- module bucketing changed between the artifacts (a workspace package without a version now owns its own bucket); regenerate the artifact (bundle=replace / lock=replace)`)),r}function G(t){return t.split("/").includes("node_modules")}function ln(t){let e="node_modules/",s=t.length;for(;(s=t.lastIndexOf(e,s-1))!==-1;)if(s===0||t[s-1]==="/")return s;return-1}function Zs(t){let e="node_modules/",s=ln(t);if(s===-1)return null;let r=s+e.length,o=t.slice(r).split("/"),n=o[0].startsWith("@")?2:1;if(o.length<=n||o.slice(0,n).some(a=>!a))return null;let i=o.slice(0,n).join("/");return{dir:t.slice(0,r)+i,rel:o.slice(n).join("/"),name:i}}var F=1,Js=0,Ys=Ws("bundle","artifact (bundle=replace)"),Xs=t=>Zs(t)??{dir:".",rel:t==="."?"":t,name:null};function cn(){throw new Error("bundle: file contents are not retained by this contents-free Bundle")}var dn=(t,{files:e,...s})=>{let r=Object.create(null);for(let[o,n]of Object.entries(e))typeof n!="symbol"&&v(!1,`bundle: file '${H(t,o)}' is not a placeholder`),Object.defineProperty(r,o,{get:cn,enumerable:!0});return{...s,files:Object.freeze(r)}},nt=(t,e)=>{if(t===void 0&&e===void 0)return;let s=new Map;for(let r of[t,e])for(let[o,n]of Object.entries(r??{})){if(!Array.isArray(n))continue;let i=s.get(o);i===void 0&&s.set(o,i=new Set);for(let a of n)i.add(a)}return A([...s.keys()].toSorted().map(r=>[r,Oe(s.get(r))]))},Gl=(t,e)=>Object.hasOwn(oe,t)&&oe[t](e),un=(t,e)=>{if(t?.github===void 0||!Ss(t.github,e?.github))return;let s=Object.keys(oe).filter(r=>t[r]!==void 0&&(r==="github"||t[r]===e[r]));return A(s.map(r=>[r,t[r]]))},pn=t=>{if(!U(t)||t.root!==!0||Object.hasOwn(t,"directory"))return t;let{root:e,...s}=t;return s},Qs=t=>typeof t=="string"&&/^[\w.+@/~'!()*-]+$/u.test(t),it={name:Qs,version:Qs},er={npm:it,composer:it,cargo:it},fn=(t,e)=>A(Object.keys(er).map(s=>{let[r,o]=[t?.[s],e?.[s]];return[s,r?.name!==void 0&&r.name===o?.name?A(Object.entries(r).filter(([n,i])=>i===o[n])):void 0]})),z=class t{static VERSION=F;version=F;config;entries;modules;formats;imports;executable;reason;#e;get repo(){return this.#e}set repo(e){this.#e=Ce(e)}#t;get package(){return this.#t}set package(e){this.#t=Ee(e,er,"bundle package")}constructor({config:e={scope:"full"},entries:s,modules:r,formats:o,imports:n,executable:i,reason:a,repo:c,package:l,version:p=F}={}){v([Js,F].includes(p)),v(["node_modules","full"].includes(e.scope)),this.version=p,this.config=e,this.entries=s??new Set,this.modules=r??new Map,this.formats=o??new Map,this.imports=n??new Map,this.executable=i??new Set,this.reason=a,this.repo=Ce(c),this.package=l}get sources(){let e=new Map;for(let[s,{files:r}]of this.modules)for(let[o,n]of Object.entries(r))e.set(H(s,o),n);return e}static isResourceFormat(e){return e==="resource"||e==="resource:base64"||e==="directory"}get hasCode(){for(let[e,{files:s}]of this.modules)for(let r of Object.keys(s))if(!t.isResourceFormat(this.formats.get(H(e,r))))return!0;return!1}static parse(e){return t.fromJSON(JSON.parse(e))}static fileKeyAt(e){let[s,r,o,n]=e;if(typeof r=="string"){if(e.length===2&&s==="sources"){let i=Xs(r);return Ie(i.dir,i.rel,"bundle")}if(e.length===4&&(s==="sources"||s==="modules")&&o==="files"&&typeof n=="string")return Ie(r,n,"bundle")}}static fromJSON(e,{contents:s=!0}={}){v(e.version===F||e.version===Js),v(["node_modules","full"].includes(e.config?.scope));let r=js(e.formats),o=new Map,n=new Set;if(e.version===F){let c=e.config.scope==="full";if(e.modules!==void 0){v(typeof e.modules=="object"&&e.modules!==null);for(let[l,p]of Object.entries(e.modules))v(G(l)),P(l,"bundle"),v(p?.name&&p.version&&p.files),o.set(l,rt(p,l,"bundle"))}if(c){v(e.sources&&typeof e.sources=="object");for(let[l,p]of Object.entries(e.sources))v(!G(l)),P(l,"bundle"),v(p?.name&&p.files),o.set(l,rt(p,l,"bundle"));e.entries!==void 0&&(n=Ns(e.entries,"bundle"))}else v(e.entries===void 0),v(e.sources===void 0)}else{v(e.sources);for(let[c,l]of Object.entries(e.sources)){P(c,"bundle");let{dir:p,rel:d,name:f}=Xs(c);v(!ne(p)&&!ne(d)),o.has(p)||o.set(p,{name:f,version:null,files:Object.create(null)});let{files:h}=o.get(p);v(!Object.hasOwn(h,d),"bundle: duplicate file key '.' (v0 '' and '.')"),h[d]=l}}let i=Ae(o,"bundle",Ys),a=Ds(e.imports);if(!s)for(let[c,l]of o)o.set(c,dn(c,l));return new t({version:e.version,config:e.config,entries:n,modules:o,formats:r,imports:a,executable:e.version===F?Os(e.executable,{what:"bundle",files:i,formats:r,scope:e.config.scope}):new Set,reason:U(e.reason)?e.reason:void 0,repo:pn(e.repo),package:e.package})}serialize(){Ae(this.modules,"bundle",Ys);let{modules:e,sources:s}=Hs(this.modules,{skipEmpty:!0,what:"bundle"}),r=this.config.scope==="full",o={version:F,config:this.config};this.repo!==void 0&&(o.repo=this.repo),this.package!==void 0&&(o.package=this.package),r&&(o.entries=Ps(this.entries,"bundle")),o.formats=Bs(this.formats),o.imports=qs(this.imports);let n=Is(this.executable,{what:"bundle",modules:this.modules,formats:this.formats,scope:this.config.scope});return n!==void 0&&(o.executable=n),this.reason!==void 0&&(o.reason=nt(this.reason,void 0)),r&&(o.sources=s),o.modules=e,JSON.stringify(o,void 0,2)}withReason(e){let{version:s,config:r,entries:o,modules:n,formats:i,imports:a,executable:c,repo:l,package:p}=this,d=nt(this.reason,{[e]:[...this.sources.keys()]});return new t({version:s,config:r,entries:o,modules:n,formats:i,imports:a,executable:c,reason:d,repo:l,package:p})}merge(e){return v(this.config.scope===e.config.scope,`bundle merge: scope mismatch ('${this.config.scope}' vs '${e.config.scope}')`),new t({config:{scope:this.config.scope},entries:new Set([...this.entries,...e.entries]),modules:Ks(this.modules,e.modules,"bundle merge"),formats:Gs(this.formats,e.formats,"bundle merge"),imports:Us(this.imports,e.imports,"bundle merge"),executable:Vs(this.executable,e.executable,e.modules,this.config.scope),reason:nt(this.reason,e.reason),repo:un(this.repo,e.repo),package:fn(this.package,e.package)})}};var tr=/^webpack(?:-internal)?:\/\/[^/]*\//u,sr=/^[a-z][\d+.a-z-]*:/iu,hn=/^file:/iu,rr=/^(?:file|ftp|https?|wss?):/iu,mn=/^(?:[a-z][\d+.a-z-]*:\/\/[^/]*\/?|\/\/[^/]+\/|[a-z]:\/|\/)?/iu,W=t=>mn.exec(t)[0],ze=t=>W(t).includes("://"),Q=t=>t.replace(ze(t)?/[#?].*$/su:/\?.*$/su,""),or=t=>t.slice(t.lastIndexOf("/")+1),Re=(t,e)=>URL.parse(t,e)?.href??null;function V(t){let e=W(t),s=e.includes("://")&&Re(t);if(s)return s;let r=[];for(let n of t.slice(e.length).split("/"))n===""||n==="."||(n!==".."?r.push(n):r.length>0&&r.at(-1)!==".."?r.pop():e||r.push(".."));let o=/^[a-z]:\/$/iu.test(e)?e.toUpperCase():e.startsWith("//")?e.toLowerCase():e;return o?o.replace(/\/?$/u,"/")+r.join("/"):r.join("/")||"."}function nr(t,e){let s=W(e);return ze(t)&&!s.includes(":")?Re(e,t)??V(`${t}/../${e}`):V(s==="/"?W(t).replace(/\/?$/u,"")+e:s?e:`${t}/../${e}`)}function gn(t){try{return decodeURIComponent(t)}catch{return t}}function ae(t,e){let s=t.replaceAll("\\","/");if(tr.test(s))return V(s.replace(tr,""));let r=rr.test(s)?Re(s)??s:s,o=/^file:\/\/([^/#]*)([^#]*)/isu.exec(r);if(o){let[,i,a]=o;return V(gn(i&&i.toLowerCase()!=="localhost"?`//${i}${a}`:a).replace(/^\/(?=[a-z]:\/)/iu,""))}if(sr.test(r)&&!W(r).includes(":"))return r;if(e===void 0)return V(r);if(hn.test(e)&&!W(r))return ae(Re(r,e)??r);let n=ae(e);return W(r)&&!ze(n)?V(r):nr(n,r)}var bn=/^(?:@[\dA-Za-z~-][\w.~-]*\/)?[\dA-Za-z~-][\w.~-]*$/u;function at(t){let e=t.split("/").slice(0,t.startsWith("@")?2:1).join("/");return bn.test(e)?e:null}var vn=new Set([".pnpm",".bun",".deno"]),wn=/^\d+\.\d+\.\d+(?:-[\d.a-z-]+)?(?:\+[\d.a-z-]+)?$/iu;function yn(t,e){let s=`${e.replace("/","+")}@`,r=t.startsWith(s)?t.slice(s.length).split(/[(_]/u)[0]:null;return wn.test(r)?r:null}function ir(t){let e=Q(t).split("/"),s=e.lastIndexOf("node_modules"),r=s<0?null:at(e.slice(s+1).join("/"));if(r===null)return null;let o=s+1+r.split("/").length;if(o>=e.length||e.slice(o).includes(""))return null;let n=e.slice(0,o).join("/");return{name:r,version:vn.has(e[s-2])?yn(e[s-1],r):null,root:n,path:t.slice(n.length+1)}}var _n=new Map([["js","jsx"],["mjs","jsx"],["cjs","jsx"],["jsx","jsx"],["es","jsx"],["es6","jsx"],["ts","ts"],["mts","ts"],["cts","ts"],["tsx","tsx"],["json","json"]]);function lt(t){let e=or(Q(t));return/^[\w-]+$/u.test(e)?"jsx":_n.get(/\.([\da-z]+)$/iu.exec(e)?.[1].toLowerCase())??null}var xn=[".js",".mjs",".cjs",".jsx",".ts",".tsx",".mts",".cts",".json"],$n=[".ios",".android",".web"];function kn(t){let e=t.map(i=>/\.[a-z]+(?=\.\w+$)/u.exec(or(Q(i.path??"")))?.[0]),s=$n.map(i=>[i,e.filter(a=>a===i).length]).toSorted((i,a)=>a[1]-i[1]),[[r,o],[,n]]=s;return[...o===n?[]:[r],".native","",".browser",".node"]}var Sn=new Map([[".js",[".ts",".tsx"]],[".jsx",[".tsx"]],[".mjs",[".mts"]],[".cjs",[".cts"]]]),Mn=["index","main","browser","node"],En=["","src/","lib/","dist/","build/"],Cn=new Set(["lib","dist","build","out","esm","cjs"]);function*On(t,e){yield t;let s=/\.[^./]+$/u.exec(t)?.[0];for(let r of Sn.get(s)??[])yield t.slice(0,-s.length)+r;for(let r of t.endsWith("/")?[`${t}index`]:[t,`${t}/index`])for(let o of xn)for(let n of e)yield r+n+o;if(s)for(let r of e.filter(Boolean))yield t.slice(0,-s.length)+r+s}function*In(t){let e=t;for(;;){e.startsWith("src/")||(yield`src/${e}`),e!==t&&(yield e);let s=e.indexOf("/");if(s<0||!Cn.has(e.slice(0,s)))return;e=e.slice(s+1)}}function ar(t){let e=new Map,s=new Map,r=new Map;for(let o of t){if(o.path!==null&&e.set(o.path,o),!o.package)continue;s.set(o.package.name,(s.get(o.package.name)??new Set).add(o.package.root)),(r.get(o.package.root)??r.set(o.package.root,[]).get(o.package.root)).push(o)}return{byPath:e,roots:s,byRoot:r,platforms:kn(t),found:new Map}}function ie(t,e){if(!t.found.has(e)){let s=Q(e),r=On(s,t.platforms).map(o=>o+e.slice(s.length));t.found.set(e,t.byPath.get(r.find(o=>t.byPath.has(o)))??null)}return t.found.get(e)}function An(t,e,s){let r=t.roots.get(s);if(!r)return null;let o=e.path.split("/");for(let n=o.length-1;n>=0;n--){let i=[...o.slice(0,n),"node_modules",s].join("/");if(r.has(i))return i}return r.size===1?[...r][0]:null}var Rn=new Set(["assert","async_hooks","buffer","child_process","cluster","console","constants","crypto","dgram","diagnostics_channel","dns","domain","events","fs","http","http2","https","inspector","module","net","os","path","perf_hooks","process","punycode","querystring","readline","repl","stream","string_decoder","sys","timers","tls","trace_events","tty","url","util","v8","vm","wasi","worker_threads","zlib","_http_agent","_http_client","_http_common","_http_incoming","_http_outgoing","_http_server","_stream_duplex","_stream_passthrough","_stream_readable","_stream_transform","_stream_wrap","_stream_writable","_tls_common","_tls_wrap","assert/strict","dns/promises","fs/promises","inspector/promises","path/posix","path/win32","readline/promises","stream/consumers","stream/promises","stream/web","timers/promises","util/types"]);function zn(t){if(t.startsWith("node:")||Rn.has(t))return{builtin:!0};let e=at(Q(t));return e===null?{}:{package:e}}function ct(){let t=[],e=new Map,s=(o,n,i)=>{let a=e.get(o)??e.set(o,new Set).get(o);a.has(n)||(a.add(n),t.push(i))};return{edges:t,add:s,link:(o,n,i)=>{o&&n&&n!==o&&s(o,n,{from:o,to:n,kind:i})}}}function Ln(t,e){for(let r of Mn)for(let o of En){let n=ie(t,`${e}/${o}${r}`);if(n)return n}let s=t.byRoot.get(e);return s?.length===1?s[0]:null}function Nn(t,e,s,r){return/^\/[^?]/u.test(s)?ie(t,e+s)??In(s.slice(1)).map(o=>ie(t,`${e}/${o}`)).find(Boolean):ie(t,e+s)??r(t,e)}function dt(t,e,s,r=Ln){let o=/^(?:\.{1,2}|[a-z]:)?\\/iu.test(s)?s.replaceAll("\\","/"):s,n=rr.test(o);if(n||/^(?:\.{1,2}(?:\/|$)|\/|[a-z]:\/)/iu.test(o)||ze(o)){let l=n?ae(o):nr(e.path,o),p=ie(t,l);return p?{to:p}:{to:null,path:l}}if(sr.test(o)&&t.byPath.has(o))return{to:t.byPath.get(o)};let i=at(Q(s)),a=i===null?null:An(t,e,i);if(a===null)return{to:null,...zn(s)};let c=Nn(t,a,s.slice(i.length),r);return c?{to:c}:{to:null,package:i}}var E=class extends Error{name="SourceMapError"},cr=new Uint8Array(128).fill(255);for(let[t,e]of[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/,;"].entries())cr[e.codePointAt(0)]=t;function ut(t){let e=new Int32Array(t.length*2);return e.set(t),e}function Pn(t){let{starts:e,columns:s,sources:r,names:o}=t;for(let n=0;n+1<e.length;n++){let[i,a]=[e[n],e[n+1]],c=i+1;for(;c<a&&s[c-1]<=s[c];)c++;if(c>=a)continue;let l=Array.from(s.subarray(i,a),(p,d)=>[p,r[i+d],o[i+d]]).sort((p,d)=>p[0]-d[0]);for(let[p,[d,f,h]]of l.entries())[s[i+p],r[i+p],o[i+p]]=[d,f,h]}return t}function Tn(t){let e=[0],s=new Int32Array(1024),r=new Int32Array(1024),o=new Int32Array(1024),n=0;for(let{mappings:i,files:a,line:c,column:l,names:p,nameCount:d}of t){if(typeof i!="string")throw new E("mappings is not a string");for(;e.length<=c;)e.push(n);let f=[0,0,0,0,0],h=0,b=0,y=1,O=l;for(let m=0;m<=i.length;m++){let x=m<i.length?cr[i.codePointAt(m)]??255:64;if(x<32){if(b+=x*y,h===5)throw new E(`mappings: a segment of more than 5 fields at ${m}`);f[h++]+=b%2?(1-b)/2:b/2,b=0,y=1;continue}if(x<64){if(b+=(x-32)*y,y*=32,y>2**30)throw new E(`mappings: a value at ${m} runs past 32 bits`);continue}if(x===255)throw new E(`mappings: ${JSON.stringify(i[m])} at ${m} is not a base64 digit`);if(y!==1)throw new E(`mappings: the value before ${m} is cut off`);if(h>0){if(h===2||h===3)throw new E(`mappings: a segment of ${h} fields before ${m}`);let N=h===1?-1:a[f[1]];if(N===void 0)throw new E(`mappings: source ${f[1]} before ${m} is not in sources`);if(f[0]<0)throw new E(`mappings: a negative generated column before ${m}`);n===s.length&&([s,r,o]=[ut(s),ut(r),ut(o)]),s[n]=f[0]+O,r[n]=N,o[n++]=h===5&&f[4]>=0&&f[4]<d?p+f[4]:-1,h=0}x===65&&(e.push(n),f[0]=0,O=0)}}return e.push(n),Pn({starts:Int32Array.from(e),columns:s.slice(0,n),sources:r.slice(0,n),names:o.slice(0,n)})}var dr=new WeakMap,pt=t=>dr.get(t),le=t=>typeof t=="object"&&t!==null&&!Array.isArray(t);function R(t,e){if(!t)throw new E(e)}function lr(t,e){if(t===void 0)return[];R(Array.isArray(t),`${e} is not an array`);for(let s of t)R(typeof s=="string"||s===null,`${e} holds ${JSON.stringify(s)}`);return t}function jn(t,e,s,r){let o=t.bySource.get(e);if(o!==void 0)return t.files[o].content??=s,t.files[o].ignored||=r,o;let n=e===null?null:ae(e,t.mapPath);return t.files.push({source:e,path:n,package:n===null?null:ir(n),content:s,ignored:r}),e!==null&&t.bySource.set(e,t.files.length-1),t.files.length-1}function ur(t,e,s,r){R(t.version===3,`version ${JSON.stringify(t.version)} is not 3`),R(t.sourceRoot===void 0||typeof t.sourceRoot=="string","sourceRoot is not a string");let o=lr(t.sources,"sources"),n=lr(t.sourcesContent,"sourcesContent"),i=t.ignoreList??t.x_google_ignoreList??[];R(Array.isArray(i)&&i.every(d=>Number.isInteger(d)&&d>=0&&d<o.length),"ignoreList is not a list of indices into sources");let a=new Set(i),c=t.sourceRoot?t.sourceRoot.replace(/\/?$/u,"/"):"",l=o.map((d,f)=>jn(e,d===null?null:c+d,n[f]??null,a.has(f))),p=Array.isArray(t.names)?t.names:[];e.parts.push({mappings:t.mappings,files:l,line:s,column:r,names:e.names.length,nameCount:p.length}),e.names.push(...p)}function Bn(t,e){R(t.version===3,`version ${JSON.stringify(t.version)} is not 3`),R(Array.isArray(t.sections),"sections is not an array");for(let[s,r]of t.sections.entries()){let{offset:o,map:n}=le(r)?r:{};R(le(o)&&[o.line,o.column].every(a=>Number.isInteger(a)&&a>=0),`sections[${s}].offset is not a line and a column`),R(le(n)&&n.sections===void 0,`sections[${s}].map is not a plain source map`);let i=t.sections[s-1]?.offset;R(!i||i.line<o.line||i.line===o.line&&i.column<=o.column,`sections[${s}] starts before sections[${s-1}]`),ur(n,e,o.line,o.column)}}function ft(t,e={}){if(!le(e))throw new TypeError("readSourceMap: options is not an object");if(e.path!==void 0&&typeof e.path!="string")throw new TypeError("readSourceMap: options.path is not a string");let s=t;if(typeof t=="string"||t instanceof Uint8Array)try{let n=typeof t=="string"?t:new TextDecoder("utf-8",{fatal:!0}).decode(t);s=JSON.parse(n.replace(/^\)\]\}'[^\n]*\n/u,""))}catch(n){throw new E(`not JSON: ${n.message}`,{cause:n})}R(le(s),"not a JSON object");let r={files:[],bySource:new Map,mapPath:e.path,parts:[],names:[]};s.sections===void 0?ur(s,r,0,0):Bn(s,r);let o={files:r.files};return dr.set(o,{...Tn(r.parts),nameList:r.names}),o}var Fn=/\r\n?|[\n\u2028\u2029]/gu;function pr(t){let e=[0];for(let s of t.matchAll(Fn))e.push(s.index+s[0].length);return e}function fr(t,e,s,r){let[o,n]=[e,s];for(;o<n;){let i=o+n>>1;t[i]<=r?o=i+1:n=i}return o-1}function ce(t,e){let s=fr(t,0,t.length,e);return[s,e-t[s]]}function Dn(t,[e,s]){if(e>=t.starts.length-1)return-1;let r=t.starts[e],o=fr(t.columns,r,t.starts[e+1],s);return o<r?-1:o}function hr(t,e,s,r){let o=pt(t),n=ce(e,s),[i,a]=ce(e,r),c=new Map,l=Dn(o,n);for(let d=n[0];d<=i&&d<o.starts.length-1;d++){let f=d===n[0]&&l>=0?l:o.starts[d];for(let h=f;h<o.starts[d+1];h++){let b=o.sources[h];if(d===i&&o.columns[h]>=a)break;b>=0&&c.set(b,(c.get(b)??0)+1)}}let[p]=[...c].reduce((d,f)=>f[1]>d[1]?f:d,[-1,0]);return p<0?null:t.files[p]}var ht=/\s+/uy,gr=`
|
|
2
|
+
\r\u2028\u2029`,mt=/[\n\r\u2028\u2029]/gu,mr=/[\n\r\u2028\u2029]/u,K=/[\w$\u0080-]+/uy,br=new Set(["return","typeof","instanceof","in","of","new","delete","void","throw","case","default","extends","do","else","yield","await"]),qn=new Set(["if","while","for","with"]),vr=new Set(["break","continue","debugger"]),Hn=new Set(["(","[","${",",","=",":","?","!","~","+","-","*","/","%","&","|","^","<",">"]);function Un(t,e){return t?.type!=="word"?Hn.has(t?.value):e&&["return","yield"].includes(t.value)?!1:br.has(t.value)&&!["do","else"].includes(t.value)}function Gn(t){let e=t.at(-1);return e?.type==="word"&&(qn.has(e.value)||e.value==="await"&&t.at(-2)?.value==="for")}function Vn(t){return t?t.type==="word"?br.has(t.value)||vr.has(t.value)||t.label===!0:t.value===")"?t.control:t.value==="}"?!t.object:t.type==="punctuator"&&!["++","--","]"].includes(t.value):!0}var Wn=(t,e)=>t.startsWith(`\r
|
|
3
|
+
`,e+1)?3:2,Kn=/\\(?:u\{([\da-f]+)\}|u([\da-f]{4})|x([\da-f]{2})|([0-3][0-7]{0,2}|[4-7][0-7]?)|(\r\n|[\n\r\u2028\u2029])|(.))/giu,Zn={b:"\b",f:"\f",n:`
|
|
4
|
+
`,r:"\r",t:" ",v:"\v"};function wr(t){return t.includes("\\")?t.replace(Kn,(e,s,r,o,n,i,a)=>{if(i!==void 0)return"";if(n!==void 0)return String.fromCodePoint(Number.parseInt(n,8));let c=Number.parseInt(s??r??o,16);return Number.isNaN(c)?Zn[a]??a:String.fromCodePoint(Math.min(c,1114111))}):t}function Jn(t,e){let s=t[e],r=e+1;for(;r<t.length&&t[r]!==s&&!gr.includes(t[r]);)r+=t[r]==="\\"?Wn(t,r):1;return[t[r]===s?wr(t.slice(e+1,r)):null,r+1]}function Yn(t,e){let s=e+1,r=!1;for(;s<t.length&&!gr.includes(t[s])&&(r||t[s]!=="/");)t[s]==="\\"?s++:t[s]==="["?r=!0:t[s]==="]"&&(r=!1),s++;return K.lastIndex=s+1,K.test(t)?K.lastIndex:s+1}function Xn(t,e,s){for(let r=e;r<t.length;r++)if(t[r]==="\\")r++;else{if(t[r]==="`")return r+1;if(t[r]==="$"&&t[r+1]==="{")return s.push("template"),r+2}return t.length}function Qn(t){let e=[],s=[],r=[],o=0,n=0;for(;o<t.length;){let i=e.length;if(ht.lastIndex=o,ht.test(t)&&(o=ht.lastIndex),o>=t.length)break;let a=t[o],c=t[o+1];if(K.lastIndex=o,a==="/"&&c==="/")mt.lastIndex=o+2,o=mt.test(t)?mt.lastIndex-1:t.length;else if(a==="/"&&c==="*"){let l=t.indexOf("*/",o+2);o=l<0?t.length:l+2}else if(a==='"'||a==="'"){let[l,p]=Jn(t,o);e.push({type:"string",value:l}),o=p}else if(a==="`"||a==="}"&&s.at(-1)==="template"){a==="}"&&s.pop();let l=s.length,p=Xn(t,o+1,s),d=a==="`"&&s.length===l&&t[p-1]==="`";e.push({type:"string",value:d?wr(t.slice(o+1,p-1)):null}),s.length>l&&e.push({type:"punctuator",value:"${"}),o=p}else if(a==="/"&&Vn(e.at(-1)))o=Yn(t,o),e.push({type:"regex"});else if(K.test(t)){let l=vr.has(e.at(-1)?.value)&&!mr.test(t.slice(n,o));e.push({type:"word",value:t.slice(o,K.lastIndex),...l&&{label:l}}),o=K.lastIndex}else{a==="{"&&s.push(Un(e.at(-1),mr.test(t.slice(n,o)))?"object":"block");let l=a==="}"?s.pop():void 0;a==="("&&r.push(Gn(e));let p=(a==="+"||a==="-")&&c===a||a==="="&&c===">"?a+c:a;e.push({type:"punctuator",value:p,...a===")"&&{control:r.pop()===!0},...a==="}"&&{object:l==="object"}}),o+=p.length}e.length>i&&(n=o)}return e}var gt=t=>t?.type==="string"&&t.value!==null,yr=new Set(["type","typeof"]),ei=(t,e)=>t[e+1]?.type==="word"&&!(t[e+1].value==="as"&&t[e+2]?.type==="word"&&t[e+2].value!=="as");function ti(t,e){let s=!1;for(let r=e+1;r<t.length&&t[r].value!=="}";r++)if(!(r>e+1&&t[r-1].value!==",")){if(!yr.has(t[r].value)||!ei(t,r))return!1;s=!0}return s}function si(t,e){for(let s=e;s<t.length;s++){let{value:r}=t[s];if(r===";"||s>e&&(r==="import"||r==="export"))return null;if(r==="from"&>(t[s+1]))return t[s+1].value}return null}function ri(t,e){let[s,r,o]=[t[e].value,t[e+1],t[e+2]],n=s==="import"?"import":"export-from";if(s==="import"&>(r))return{kind:n,specifier:r.value};if(yr.has(r?.value)&&![",","from"].includes(o?.value)||r?.value==="{"&&ti(t,e+1)||s==="export"&&!["{","*"].includes(r?.value)||s==="import"&&r?.type!=="word"&&!["{","*"].includes(r?.value))return null;let i=si(t,e+1);return i===null?null:{kind:n,specifier:i}}function oi(t,e){let[s,r]=[t[e+2],t[e+3]];if(s?.value!==")")return gt(s)&&[")",","].includes(r?.value)?s.value:null}function _r(t,e=new Set){let s=Qn(t),r=[];for(let[o,n]of s.entries()){if(n.type!=="word"||[".","#","function"].includes(s[o-1]?.value)||s[o-1]?.value==="="&&s[o-3]?.value==="type"&&s[o-4]?.value==="import")continue;let i=s[o+1]?.value==="(",a=i?oi(s,o):void 0;if((n.value==="require"||e.has(n.value))&&a!==void 0)r.push({kind:"require",specifier:a,...n.value!=="require"&&{callee:n.value}});else if(n.value==="import"&&i)a!==void 0&&r.push({kind:"dynamic-import",specifier:a});else if(n.value==="import"||n.value==="export"){let c=ri(s,o);c&&r.push(c)}}return r}var ni=/^[\w$]*__d\(/gmu,ii=([t,e,s,...r])=>(typeof t=="number"||typeof t=="string")&&(e===void 0||typeof e=="object")&&(s===void 0||typeof s=="string")&&r.length===0;function xr(t){let e=/\);?\s*$/u.exec(t)?.index,s=null,r=e===void 0?-1:t.lastIndexOf("},",e);for(;r>=0&&/[\d"]/u.test(t[r+2]);){let o;try{o=JSON.parse(`[${t.slice(r+2,e)}]`)}catch{break}if(!ii(o))break;s=o,r=r>0?t.lastIndexOf("},",r-1):-1}return s}function ai(t){let e=/^[^(]*\(\s*(?:function\s*[\w$]*\s*)?\(([^)]*)\)/u.exec(t)?.[1].split(",").slice(1,4).map(r=>r.trim().replaceAll("$","\\$"));if(!e?.length)return[];let s=t.matchAll(new RegExp(`(?<=[^\\w$.#]|\\.\\.\\.)(?:${e.join("|")})\\((\\d+|"(?:[^"\\\\]|\\\\.)*")[,)]`,"gu"));return[...new Set([...s].map(r=>JSON.parse(r[1])))]}function li(t,e){if(Array.isArray(t))return t;let s=Object.entries(t??{}).filter(([r])=>/^\d+$/u.test(r)).map(([,r])=>r);return s.length>0?s:ai(e)}function ci(t,e){let s=new Map(e.files.map((o,n)=>[o,n])),r=t.flatMap((o,n)=>o.file?[{k:n,at:s.get(o.file)}]:[]);for(let o=0;o<(r[0]?.k??0);o++)t[o].file=e.files[r[0].at-r[0].k+o]??null;for(let[o,{k:n,at:i}]of r.entries()){let a=r[o+1];if(!(a&&a.at-i!==a.k-n))for(let c=n+1;c<(a?.k??t.length);c++)t[c].file=e.files[i+c-n]??null}}function di(t,e){let s=[...t.matchAll(ni)].map(l=>l.index);if(s.length===0)return null;let r=pr(t),o=l=>t.slice(r[l],r[l+1]),n=[];for(let[l,p]of s.entries()){let[d]=ce(r,p),[f]=ce(r,(s[l+1]??t.length)-1),h=xr(o(f));for(;!h&&f>d;)h=xr(o(--f));if(!h)throw new Error(`bundleEdges: the Metro module at line ${d+1} ends in no define params`);let b=r[f+1]??t.length;n.push({id:h[0],file:hr(e,r,p,b),dependencies:li(h[1],t.slice(p,b))})}ci(n,e);let i=new Map(n.map(l=>[l.id,l])),{edges:a,link:c}=ct();for(let{file:l,dependencies:p}of n)for(let d of p)c(l,i.get(d)?.file,"dependency");return a}var ui=t=>t.path!==null&&!["json",null].includes(lt(t.path)),$r=t=>t.path!==null&<(t.path)===null;function kr(t){let e=/^_([A-Za-z]+)\d+$/u.exec(t)?.[1];if(e)return[e,"interopRequireDefault"];let s=/^_(interopRequire(?:Default|Wildcard)|jsx(?:Dev)?Runtime|callSuper)$/u.exec(t)?.[1];return s==="callSuper"?["getPrototypeOf","possibleConstructorReturn","interopRequireDefault"]:s?[s]:[]}var pi={jsxRuntime:"react/jsx-runtime",jsxDevRuntime:"react/jsx-dev-runtime"};function fi(t){let{sources:e,names:s,nameList:r}=pt(t),o=new Map,n=new Map,i=t.files.map(()=>new Set);for(let a=0;a<s.length;a++)s[a]<0||e[a]<0||(n.has(s[a])||n.set(s[a],kr(r[s[a]]).length>0),n.get(s[a])&&i[e[a]].add(r[s[a]]));for(let[a,c]of i.entries()){if(c.size===0)continue;let l=t.files[a],p=new Set(Array.from((l.content??"").matchAll(/(?:function|var|let|const)\s+(_[A-Za-z]+\d*)\b/gu),f=>f[1])),d=[...c].filter(f=>!p.has(f)&&!p.has(f.replace(/\d+$/u,""))).flatMap(kr);d.length>0&&o.set(l,d.map(f=>pi[f]??`@babel/runtime/helpers/${f}`))}return o}function hi(t,e){let s=new Map;for(let[n,i]of t){let a=s.get(n)??s.set(n,new Map).get(n);for(let c of i)a.set(c,dt(e,n,c,()=>null))}let r=new Set([...s.values()].flatMap(n=>[...n.values()].map(i=>i.to))),o=(n,i)=>e.byRoot.get(i).find(a=>!r.has(a))??e.byRoot.get(i)[0];return(n,i)=>{let a=s.get(n)?.get(i);return a?.to?a:dt(e,n,i,o)}}var Sr=t=>/(?:^|\/)__prelude__$/u.test(t.source??""),Mr=t=>t?.package?.name==="metro-runtime"&&t.package.path==="src/polyfills/require.js";function mi(t){if(!t.files.some(Sr)&&!Mr(t.files[0]))return null;if(!t.files.some(d=>d.content!==null&&!Sr(d)&&!Mr(d)))throw new Error("bundleEdges: the Metro map carries no sourcesContent, which its edges are read from; pass the bundle as `code`");let e=ar(t.files),s=t.files[t.files.findIndex($r)+1],r=t.files.find(d=>d.package?.name==="metro-runtime"&&d.package.path==="src/modules/asyncRequire.js"),o=new Map(t.files.filter(d=>d.content!==null&&ui(d)).map(d=>[d,_r(d.content)])),n=fi(t),i=[...o].map(([d,f])=>[d,f.flatMap(({specifier:h})=>h===null?[]:[h])]),a=hi([...i,...n],e),{edges:c,add:l,link:p}=ct();for(let d of t.files){$r(d)&&p(d,s,"dependency");for(let{kind:f,specifier:h}of o.get(d)??[]){let b=h===null?{to:null}:a(d,h);b.to!==d&&l(d,`${f}\0${JSON.stringify(h)}`,{from:d,kind:f,specifier:h,...b}),f==="dynamic-import"&&p(d,r,"dependency")}for(let f of n.get(d)??[])p(d,a(d,f).to,"dependency")}return c}var gi=(t,e)=>e==null?mi(t):di(e,t);function bt(t,e){let s=gi(t,e);if(!s)throw new Error(`bundleEdges: not a Metro ${e==null?"map":"bundle"}; edges-lite.js reads only those, edges.js reads others`);return{edges:s}}function Er(t){let e=JSON.parse(t.replace(/^\)\]\}'[^\n]*\n/u,"")),s=ft(e),r=e.sections?e.sections.reduce((o,n)=>o+(n.map.names?.length??0),0):e.names?.length??null;return{json:{version:e.version,file:e.file,sourceRoot:e.sourceRoot},map:s,namesCount:r}}function de(t){if(t.map)return t.map.files.flatMap(s=>s.source===null?[]:[[s.source,s.content]]);let e=t.json?.sourcesContent??[];return(t.json?.sources??[]).map((s,r)=>[s,e[r]??null])}function bi(t,e){let s=new Map;for(let{from:r,to:o,specifier:n}of e(t).edges){if(r.source===null||o?.source==null||o.source===r.source)continue;let i=typeof n=="string"?[r.source,o.source,n]:[r.source,o.source];s.set(i.join("\0"),i)}return[...s.values()]}function vi(t){try{return bt(t)}catch{return{edges:[]}}}var wi=Object.freeze([]);function Le(t){return t?.edges?t.edges:t?.map?(t.edges=bi(t.map,vi),t.edges):wi}var vt=new WeakMap,wt=new WeakMap;function Cr(t){let e=Le(t);if(!vt.has(e)){let s=new Map;for(let[r,o]of e)s.has(r)||s.set(r,new Set),s.get(r).add(o);vt.set(e,s)}return vt.get(e)}function ac(t){let e=Le(t);if(!wt.has(e)){let s=new Map;for(let[r,o,n]of e)n!==void 0&&(s.has(r)||s.set(r,new Map),s.get(r).set(n,o));wt.set(e,s)}return wt.get(e)}var yt=new WeakMap,_t=new WeakMap,xt=new WeakMap,$t=new WeakMap,kt=new WeakMap,St=new WeakMap;function Ne(t){if(t?.metadataOnly)return new Map;let e=t?.bundle??t?.json;if(e&&yt.has(e))return yt.get(e);let s=new Map;if(!t)return s;if(t.kind==="stasis"){if(!t.bundle)return s;let r=t.bundle.formats;for(let[o,n]of t.bundle.sources)typeof n=="string"&&(z.isResourceFormat(r?.get(o))||s.set(o,n))}else if(t.kind==="sourcemap")for(let[r,o]of de(t))typeof o=="string"&&s.set(r,o);return e&&yt.set(e,s),s}function pc(t){let e=1;for(let s=t.indexOf(`
|
|
5
|
+
`);s!==-1;s=t.indexOf(`
|
|
6
|
+
`,s+1))e++;return e}var Or=new WeakMap;function fc(t){let e=Or.get(t);if(!e){let s=[...t.keys()].toSorted();e={paths:s,numbers:new Map(s.map((r,o)=>[r,o+1]))},Or.set(t,e)}return e}function Ir(t){let e=t?.bundle??t?.json;if(e&&_t.has(e))return _t.get(e);let s=new Map(Ne(t));for(let[r,o]of t?.npmBinaries??[])s.set(r,{format:"digest",...o});if(t?.kind==="stasis"&&t.bundle){let r=t.bundle.formats;for(let[o,n]of t.bundle.sources){if(typeof n!="string")continue;let i=r?.get(o);i==="resource"?s.set(o,n):i==="resource:base64"&&s.set(o,{format:"base64",data:n})}}return e&&_t.set(e,s),s}var yi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function _i(t){let e=t.endsWith("=");if(e?t.length%4!==0||t.at(-3)==="=":t.length%4===1)return null;let s=e?t.slice(0,t.endsWith("==")?-2:-1):t;if(/[^A-Za-z0-9+/]/u.test(s))return null;let r=s.length%4;return r>1&&yi.indexOf(s.at(-1))&(r===2?15:3)?null:Math.floor(s.length*3/4)}function xi(t){return typeof t=="string"?_e(t):t?.format==="digest"?t.size:t?.format==="base64"?_i(t.data):null}function T(t){if(t?.fileSizes)return t.fileSizes;let e=t?.bundle??t?.json;if(e&&xt.has(e))return xt.get(e);let s=new Map,r=Ir(t),o=t?.kind==="stasis"?t.bundle?.sources.keys():t&&de(t).map(([n])=>n);for(let n of o??[])s.set(n,xi(r.get(n)));return e&&xt.set(e,s),s}function Mt(t){if(t?.metadataOnly)return t.unsizedFiles??new Set;let e=T(t);if(St.has(e))return St.get(e);let s=new Set;for(let r of Ir(t).keys())e.get(r)===null&&s.add(r);return St.set(e,s),s}function hc(t){let e=T(t);if(kt.has(e))return kt.get(e);let s=Mt(t),r=t?.kind==="stasis"?t.bundle?.formats:null,o=new Map;for(let[n,i]of e)i===null&&!s.has(n)||o.set(n,z.isResourceFormat(r?.get(n))||t?.npmBinaries?.has(n)?"resource":"source");return kt.set(e,o),o}function mc(t){let e=T(t),s=t?.kind==="stasis"?t.bundle?.formats:null;if(!s||s.size===0)return e;if($t.has(e))return $t.get(e);let r=new Map;for(let[o,n]of e)z.isResourceFormat(s.get(o))||r.set(o,n);return $t.set(e,r),r}function Et(t){if(t?.kind!=="stasis"||!t.bundle?.modules)return null;let e=new Map;for(let[s,r]of t.bundle.modules)for(let o of Object.keys(r.files))e.set(s==="."?o:`${s}/${o}`,s);return e}function gc(t,e=null,s=(r,o)=>o.name){let r=new Map;if(t?.kind!=="stasis"||!t.bundle?.modules)return r;let o=e===null?null:Et(t),n=e===null?null:new Set([...e].map(i=>o?.get(i)));for(let[i,a]of t.bundle.modules){if(n&&!n.has(i)||!i.includes("node_modules")||!a?.name||typeof a.version!="string"||!a.version)continue;let c=s(i,a),l=r.get(c);l||(l=new Set,r.set(c,l)),l.add(a.version)}return r}var $i=6,Ct=$i,Pe=new WeakMap,ki=new Set(["terminal","code","search","compare"]);function Mc(t,e=null){return!!e||ki.has(t)}var Si=/^sha512-[A-Za-z0-9+/]{86}==$/u;function Mi(t){if(t.fileHashes)return Promise.resolve(t.fileHashes);if(Pe.has(t))return Pe.get(t);let e=(async()=>{let s=[...Ne(t)],r=new Map;for(let o=0;o<s.length;o+=32){let n=await Promise.all(s.slice(o,o+32).map(async([i,a])=>[i,await us(a)]));for(let[i,a]of n)r.set(i,a)}return t.fileHashes=r,r})();return Pe.set(t,e),e.catch(()=>Pe.delete(t)),e}function Ei(t){if(typeof t!="string")return 0;let e=/\S/gu,s=/[\r\n]/gu,r=0;for(;e.test(t)&&(r++,s.lastIndex=e.lastIndex,!!s.test(t));)e.lastIndex=s.lastIndex;return r}function It(t){return t.lineCounts??=new Map([...Ne(t)].map(([e,s])=>[e,Ei(s)]))}function Ot(t){return t instanceof Map?Object.fromEntries([...t].map(([e,s])=>[e,Ot(s)])):t}async function Ec(t){let e=await Mi(t),s=T(t),r=It(t),o={version:Ct,integrity:t.integrity,kind:t.kind,size:t.size,codeStats:tt(r,s),files:[...s].map(([i,a])=>[i,a,e.get(i)??null,r.get(i)??null])},n=Mt(t);if(n.size>0&&(o.unsized=[...n]),t.kind==="sourcemap"){let{version:i,file:a,sourceRoot:c,names:l}=t.json,p=de(t);o.json={version:i,file:a,sourceRoot:c,sources:p.map(([f])=>f)},o.sourceSizes=p.map(([,f])=>typeof f=="string"?_e(f):null),o.namesCount=t.namesCount??l?.length??null;let d=new Map(o.files.map(([f],h)=>[f,h]));o.edges=Le(t).map(([f,h,...b])=>[d.get(f),d.get(h),...b])}else{let i=t.bundle,a={version:i.version,config:i.config,repo:i.repo,package:i.package,formats:Ot(i.formats),imports:Ot(i.imports),reason:i.reason,executable:[...i.executable]};if(i.version===0)a.sources=Object.fromEntries([...s.keys()].map(c=>[c,null]));else{let c={},l={};for(let[p,d]of i.modules){let f=p.split("/").includes("node_modules")?c:l;Object.defineProperty(f,p,{enumerable:!0,value:{name:d.name,version:d.version,ecosystem:d.ecosystem,repo:d.repo,files:Object.fromEntries(Object.keys(d.files).map(h=>[h,null]))}})}a.modules=c,i.config.scope==="full"&&(a.sources=l,a.entries=[...i.entries])}o.bundle=a}return o}function Cc(t,e){if(![1,2,3,4,5,Ct].includes(t?.version)||t.integrity!==e||!["stasis","sourcemap"].includes(t.kind)||!Number.isSafeInteger(t.size)||t.size<0||!Array.isArray(t.files))throw new Error("Invalid bundle metadata");let s=t.version!==Ct,r=t.version===1,o=new Map,n=new Map,i=new Map;for(let l of t.files){if(!Array.isArray(l)||l.length!==4&&!(r&&l.length===3))throw new Error("Invalid bundle metadata file");let[p,d,f,h]=l;if(typeof p!="string"||n.has(p)||d!==null&&(!Number.isSafeInteger(d)||d<0)||f!==null&&(typeof f!="string"||!Si.test(f))||d===null&&f!==null||r&&d!==null&&f===null||h!=null&&(!Number.isSafeInteger(h)||h<0))throw new Error("Invalid bundle metadata file");n.set(p,d),f!==null&&o.set(p,f),h!=null&&i.set(p,h)}let a=new Set(t.unsized??[]);if(t.unsized!==void 0&&(r||!Array.isArray(t.unsized)||a.size!==t.unsized.length)||[...a].some(l=>typeof l!="string"||!n.has(l)||n.get(l)!==null))throw new Error("Invalid bundle metadata");let c={integrity:e,kind:t.kind,size:t.size,metadataOnly:!0,fileSizes:n,fileHashes:o,lineCounts:i,unsizedFiles:a,stale:s};if(t.kind==="stasis"){c.bundle=z.parse(JSON.stringify(t.bundle));let l=c.bundle.sources;if(l.size!==n.size||[...l.keys()].some(d=>!n.has(d)))throw new Error("Invalid bundle metadata inventory");let p=c.bundle.formats;if(!r&&[...n].some(([d,f])=>o.has(d)!==(f!==null&&!z.isResourceFormat(p.get(d)))))throw new Error("Invalid bundle metadata inventory");if([...a].some(d=>p.get(d)!=="resource:base64"))throw new Error("Invalid bundle metadata inventory")}else{if(!t.json||typeof t.json!="object"||![null,void 0].includes(t.namesCount)&&(!Number.isSafeInteger(t.namesCount)||t.namesCount<0))throw new Error("Invalid sourcemap metadata");if(!Array.isArray(t.json.sources)||t.json.sources.some(l=>!n.has(l))||!Array.isArray(t.sourceSizes)||t.sourceSizes.length!==t.json.sources.length||t.sourceSizes.some(l=>l!==null&&(!Number.isSafeInteger(l)||l<0))||[...n].some(([l,p])=>o.has(l)!==(p!==null))||a.size>0)throw new Error("Invalid sourcemap inventory");c.json=t.json,c.sourceSizes=t.sourceSizes,c.namesCount=t.namesCount,t.edges!==void 0&&(c.edges=Ci(t.edges,t.files))}if(t.codeStats===void 0)c.codeStats=tt(i,n);else{let l=t.codeStats,p=d=>Number.isSafeInteger(d)&&d>=0;if(!l||![l.files,l.lines,l.bytes].every(p)||!Array.isArray(l.languages)||l.languages.some(d=>!d||typeof d.key!="string"||typeof d.label!="string"||![d.files,d.lines,d.bytes].every(p)))throw new Error("Invalid bundle code stats");c.codeStats=l}return c}function Ci(t,e){if(!Array.isArray(t))throw new Error("Invalid sourcemap edges");return t.map(s=>{if(!Array.isArray(s)||![2,3].includes(s.length)||s[0]===s[1]||s.length===3&&typeof s[2]!="string"||s.slice(0,2).some(r=>!Number.isSafeInteger(r)||r<0||r>=e.length))throw new Error("Invalid sourcemap edges");return[e[s[0]][0],e[s[1]][0],...s.slice(2)]})}function Oc(t,{integrity:e,kind:s,size:r}){if(s==="stasis")return{integrity:e,kind:s,size:r,bundle:z.parse(t)};if(s!=="sourcemap")throw new Error("Unsupported bundle format");return{integrity:e,kind:s,size:r,...Er(t)}}var C=ns(class extends is{constructor(t){if(super(t),t.type!==q.PROPERTY&&t.type!==q.ATTRIBUTE&&t.type!==q.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!gs(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===re||e===g)return e;let s=t.element,r=t.name;if(t.type===q.PROPERTY){if(e===s[r])return re}else if(t.type===q.BOOLEAN_ATTRIBUTE){if(!!e===s.hasAttribute(r))return re}else if(t.type===q.ATTRIBUTE&&s.getAttribute(r)===e+"")return re;return bs(t),e}});function Dc(t,e){let s=fs(t);if(s===null)return null;let r=e.replace(/\.(?:md|markdown)$/iu,""),o=new Set;return s.map(({displayName:n,data:i})=>{let a=`${r}: ${n}`.replaceAll("%","%25").replaceAll(/[\\/\p{Cc}]/gu,"_")+".generic-md";if(o.has(a))throw new Error(`Markdown (generic): products produce the same report name: ${a}`);return o.add(a),{name:a,content:JSON.stringify(i)}})}var Oi=new Map([["openai/gpt-6-astra","GPT-6 Astra"],["openai/gpt-6-astra-pro","GPT-6 Astra Pro"],["openai/gpt-5.6-sol","GPT-5.6 Sol"],["openai/gpt-5.6-terra","GPT-5.6 Terra"],["openai/gpt-5.6-luna","GPT-5.6 Luna"],["anthropic/claude-fable-5.1","Claude Fable 5.1"],["anthropic/claude-opus-5","Claude Opus 5"],["anthropic/claude-sonnet-5","Claude Sonnet 5"],["moonshotai/kimi-k3","Kimi K3"],["z-ai/glm-5.3","GLM 5.3"],["qwen/qwen3.8-max","Qwen3.8 Max"],["deepseek/deepseek-v4.1-flash","DeepSeek V4.1 Flash"],["deepseek/deepseek-v4-pro","DeepSeek V4 Pro"]]),Ii=new Map([["openai","OpenAI"],["anthropic","Anthropic"],["moonshotai","Moonshot AI"],["google","Google"],["nvidia","NVIDIA"],["qwen","Qwen"],["deepseek","DeepSeek"],["x-ai","xAI"],["z-ai","Z.ai"],["mistralai","Mistral AI"]]),Ai=new Map([["gpt","GPT"],["gptoss","GPT OSS"],["oss","OSS"],["o","O"],["ai","AI"],["api","API"],["4o","4o"],["k3","K3"],["k4","K4"],["qwen","Qwen"],["kimi","Kimi"],["mimo","MiMo"],["gemini","Gemini"],["claude","Claude"],["fable","Fable"],["opus","Opus"],["sonnet","Sonnet"],["astra","Astra"],["terra","Terra"],["luna","Luna"],["codex","Codex"],["deepseek","DeepSeek"],["nemotron","Nemotron"],["gemma","Gemma"]]);function Ar(t){let e=t.replace(/:free$/u,"").replaceAll("_","-").split("-").filter(Boolean),s=[];for(let o=0;o<e.length;o++){let n=e[o],i=e[o+1];if(/^\d+$/u.test(n)&&/^\d+$/u.test(i??"")){s.push(`${n}.${i}`),o++;continue}let a=Ai.get(n.toLowerCase());s.push(a??(/^(?:[a-z]+\d+|\d+[a-z]+)$/iu.test(n)?n.toUpperCase():n[0]?.toUpperCase()+n.slice(1)))}return s.join(" ").replace(/^GPT (\d)/u,"GPT-$1")}function Z(t){return Oi.get(t)??Ar(t.includes("/")?t.slice(t.indexOf("/")+1):t)}function ue(t){let e=t.includes("/")?t.split("/")[0]:"other";return{key:e,name:Ii.get(e)??(e==="other"?"Other":Ar(e))}}function J(t){return t==="xhigh"?"Extra high":t?t[0].toUpperCase()+t.slice(1):"Unavailable"}function ee(t){return t.efforts.includes("max")?"max":t.efforts.at(-1)??null}async function Te(t,e=fetch){let s=await e("/api/admin/scan/models",{credentials:"same-origin",headers:{accept:"application/json"},signal:t});if(!s.ok)throw new Error(`HTTP ${s.status}`);let r=await s.json();return Ri(r)}function Ri(t){if(!Array.isArray(t?.models))throw new Error("No model catalogue returned");let e=t.models.filter(s=>typeof s?.id=="string"&&s.id.length>0).map(s=>({id:s.id,efforts:Array.isArray(s.efforts)?[...new Set(s.efforts.filter(r=>typeof r=="string"&&r.length>0))]:[]}));if(e.length===0)throw new Error("No models available");return{models:e,defaultModel:e.find(s=>s.id===t.defaultModel)?.id??e[0].id}}var Rr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="m4.7 15.96 4.73-2.65.08-.23-.08-.13H9.2l-.79-.05-2.7-.07-2.34-.1-2.26-.12-.57-.12-.54-.7.06-.36.48-.32.68.06 1.52.1 2.28.16 1.65.1 2.45.25h.39l.05-.15-.13-.1-.1-.1-2.36-1.6-2.55-1.68-1.34-.97-.72-.5-.37-.46-.16-1 .66-.73.88.06.23.06.89.69 1.9 1.48L8.9 8.6l.36.3.15-.1.02-.07-.17-.28L7.9 6.02l-1.45-2.5-.64-1.02-.17-.62a3 3 0 0 1-.1-.73L6.28.13 6.7 0l1 .13.41.37.62 1.41 1 2.23 1.56 3.03.46.9.24.83.09.26h.16V9l.12-1.7.24-2.1.23-2.7.08-.76.38-.9.74-.5.59.28.48.69-.07.44-.28 1.85-.56 2.9-.37 1.95h.21l.25-.25.98-1.3 1.65-2.07.73-.81.85-.9.55-.44h1.04l.76 1.13-.34 1.16-1.07 1.35-.88 1.14-1.26 1.7-.8 1.36.08.11.19-.02 2.85-.6 1.55-.28L23 9.42l.83.4.1.39-.34.8-1.97.49-2.3.46-3.44.81-.05.03.05.06 1.55.15.66.04h1.63l3.02.22.79.52.47.64-.08.49-1.21.62-1.64-.4-3.83-.9-1.31-.33h-.19v.1l1.1 1.08 2 1.8 2.51 2.34.13.57-.32.46-.34-.05-2.2-1.66-.86-.74-1.93-1.62h-.12v.17l.44.65 2.35 3.52.12 1.08-.17.35-.61.21-.67-.12-1.37-1.92-1.42-2.17-1.14-1.94-.14.08-.67 7.25-.32.37-.73.28-.6-.46-.33-.75.32-1.47.4-1.93.3-1.53.3-1.9.16-.63v-.04l-.15.02-1.43 1.96-2.18 2.95-1.73 1.84-.41.17-.72-.37.07-.66.4-.6 2.39-3.03 1.44-1.88.93-1.09-.01-.16h-.05l-6.35 4.12-1.13.15-.49-.46.07-.75.23-.24 1.9-1.31"/></svg>`;var zr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="M23.75 4.48c-.26-.12-.37.11-.51.24l-.14.13c-.37.4-.8.66-1.37.63a2.7 2.7 0 0 0-2.17.85 2 2 0 0 0-1.24-1.55c-.36-.16-.71-.31-.96-.65-.17-.24-.22-.51-.3-.78-.06-.16-.11-.32-.3-.35-.2-.03-.27.14-.35.28q-.46.87-.43 1.84a4 4 0 0 0 1.84 3.4q.2.12.13.32l-.26.83c-.06.18-.14.22-.33.14a6 6 0 0 1-1.74-1.18c-.86-.83-1.63-1.74-2.6-2.46l-.69-.47c-.98-.96.13-1.74.4-1.84.26-.1.09-.43-.79-.42-.87 0-1.67.3-2.68.68l-.47.14a10 10 0 0 0-2.88-.1 6.2 6.2 0 0 0-4.5 2.62 7.7 7.7 0 0 0-1.26 6.07 9.3 9.3 0 0 0 3.36 5.65 9 9 0 0 0 6.44 2.14 7.6 7.6 0 0 0 5-1.86c.46.24.96.33 1.77.4.63.06 1.24-.03 1.7-.13.74-.15.7-.84.43-.96-2.16-1-1.68-.6-2.11-.92 1.1-1.3 2.74-2.65 3.39-7 .05-.35 0-.57 0-.85 0-.17.03-.24.23-.26a4 4 0 0 0 1.54-.47c1.4-.77 1.96-2.02 2.1-3.52.02-.23 0-.47-.25-.59M11.58 18c-2.09-1.64-3.1-2.18-3.52-2.16-.4.02-.32.47-.23.76s.2.49.37.74c.11.17.19.42-.12.6-.67.42-1.84-.13-1.9-.16a8.7 8.7 0 0 1-3.3-3.3 10 10 0 0 1-1.3-4.5c-.01-.38.1-.51.48-.58a5 5 0 0 1 1.53-.04 9.6 9.6 0 0 1 5.47 2.77c.87.86 1.53 1.89 2.2 2.9a14 14 0 0 0 2.48 2.9q.51.45.9.68c-.8.1-2.15.11-3.06-.61m1-6.44a.3.3 0 0 1 .42-.29.3.3 0 0 1 .2.3.3.3 0 0 1-.31.3.3.3 0 0 1-.3-.31m3.11 1.6q-.3.13-.59.16a1.3 1.3 0 0 1-.8-.26c-.27-.23-.47-.36-.55-.76a2 2 0 0 1 .02-.58c.07-.33-.01-.54-.24-.73q-.3-.22-.69-.2l-.25-.08a.25.25 0 0 1-.12-.36 1 1 0 0 1 .2-.2c.35-.2.76-.14 1.14.01.35.14.62.4 1 .78.4.45.46.58.69.92q.27.38.44.84.1.3-.25.46"/></svg>`;var Lr=u`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 24 24"><path fill="#4285F4" d="M21.35 12.27q0-1.19-.2-2.27H12v4.3h5.24a4.5 4.5 0 0 1-1.94 2.94v2.45h3.15c1.85-1.7 2.9-4.2 2.9-7.42"/><path fill="#34A853" d="M12 21.8c2.64 0 4.86-.87 6.48-2.35L15.33 17a6 6 0 0 1-3.33.92 5.9 5.9 0 0 1-5.51-4.06H3.24v2.52A9.8 9.8 0 0 0 12 21.8"/><path fill="#FBBC05" d="M6.49 13.86a6 6 0 0 1 0-3.72V7.62H3.24a9.8 9.8 0 0 0 0 8.76z"/><path fill="#EA4335" d="M12 6.08c1.43 0 2.72.49 3.74 1.45l2.8-2.8A9.3 9.3 0 0 0 12 2.2a9.8 9.8 0 0 0-8.76 5.42l3.25 2.52A5.9 5.9 0 0 1 12 6.08"/></svg>`;var Nr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="m9.27 15.29 7.98-5.9c.39-.29.95-.17 1.13.27a6.6 6.6 0 0 1-1.4 7.17 6.5 6.5 0 0 1-7.15 1.41L7.1 19.5a8.96 8.96 0 0 0 13.95-9.38l.01.01c-.98-4.23.24-5.92 2.75-9.38L24 .5l-3.3 3.3zm-1.65 1.42c-2.79-2.67-2.3-6.8.07-9.18a6.7 6.7 0 0 1 7.17-1.43l2.7-1.25a8 8 0 0 0-1.82-1 9 9 0 0 0-9.76 1.97 9 9 0 0 0-1.96 9.76c1.02 2.5-.65 4.25-2.34 6.03-.6.63-1.2 1.25-1.68 1.92z"/></svg>`;var Pr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24"><path fill="gold" d="M3.43 3.4h3.43v3.43H3.43zm13.71 0h3.43v3.43h-3.43z"/><path fill="#FFAF00" d="M3.43 6.83h6.86v3.43H3.43zm10.28 0h6.86v3.43h-6.86z"/><path fill="#FF8205" d="M3.43 10.26h17.14v3.43H3.43z"/><path fill="#FA500F" d="M3.43 13.69h3.43v3.42H3.43zm6.86 0h3.43v3.42h-3.43zm6.85 0h3.43v3.42h-3.43z"/><path fill="#E10500" d="M0 17.11h10.29v3.43H0zm13.71 0H24v3.43H13.71z"/></svg>`;var At=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="m1.05 16.92 9.54 2.55a21 21 0 0 0 .06 2.03l5.96 1.6a12 12 0 0 1-5.59.86l-.18-.02h-.04l-.09-.01-.1-.01-.15-.02-.1-.01-.11-.02-.32-.05h-.05l-.07-.02-.1-.02-.08-.02-.1-.02-.07-.01-.1-.02-.09-.02-.1-.03-.06-.01-.09-.03-.09-.02-.1-.02-.08-.03-.1-.03-.07-.02-.08-.02-.1-.03-.1-.03-.06-.02-.08-.03-.09-.03-.06-.02-.05-.02-.06-.02-.1-.04-.06-.02-.08-.03-.09-.04-.09-.03-.08-.04-.1-.04-.05-.02-.07-.03-.04-.02-.06-.03-.1-.05-.06-.02-.1-.05-.06-.03-.08-.04-.09-.04-.1-.05-.04-.02-.1-.06-.06-.03-.06-.03-.05-.03-.1-.05-.05-.03-.05-.03-.07-.04-.09-.05-.09-.06-.05-.03-.08-.06-.07-.03-.07-.05-.07-.05-.06-.04-.05-.03-.05-.03-.04-.03-.04-.03-.06-.04-.07-.05-.07-.05-.08-.06-.05-.04-.08-.06-.07-.06-.09-.06-.04-.04-.07-.05-.07-.06-.1-.07-.04-.04-.04-.04-.05-.04-.04-.04-.06-.05-.07-.06-.07-.06-.06-.06-.07-.06-.05-.05-.1-.09-.09-.1-.03-.02-.04-.04-.07-.07-.05-.06-.05-.05-.17-.18-.08-.09-.06-.07-.07-.08-.04-.04-.05-.07-.06-.06-.05-.06-.03-.03-.04-.06-.07-.08-.04-.05-.05-.07-.02-.02a12 12 0 0 1-1.44-2.4m-1.02-5.8 11.36 3.04a21 21 0 0 0-.47 2.01l10.81 2.9a12 12 0 0 1-1.84 2L.66 15.92l-.02-.04-.03-.1-.05-.16-.01-.02-.2-.74-.04-.13-.02-.08-.02-.1-.02-.08-.01-.09-.02-.08-.02-.1-.07-.42-.02-.12v-.08l-.02-.1-.02-.17v-.04a12 12 0 0 1-.04-2.15m1.6-5.15 11.94 3.2q-.54.9-1 1.87l11.29 3.03q-.22 1.22-.67 2.36l-11.55-3.09L.12 10.26l.02-.1v-.05l.02-.07.01-.08.02-.1.09-.44.03-.13.02-.08.02-.1.07-.27.03-.1.02-.08.03-.1.03-.08.03-.1.02-.08.03-.1a12 12 0 0 1 1.01-2.23zm4.44-4.4L17.35 4.6a21 21 0 0 0-1.69 1.72l7.83 2.1q.4 1.28.51 2.66L2.1 5.2l.05-.06.03-.04.04-.06.04-.06.06-.08.05-.07.07-.09.05-.06.05-.07.06-.07.06-.08.05-.07.07-.07.05-.07.07-.08.05-.06.07-.08.06-.06.06-.07.06-.06.07-.08.06-.06.06-.07.17-.17.1-.1.06-.05.07-.07a12 12 0 0 1 2.28-1.68M12.02 0h.41l.08.01h.16l.09.01h.1l.15.02h.08l.05.01h.08l.08.02h.04l.1.01.06.01.1.01.09.01.04.01.06.01.2.03.08.01.06.02.14.02.1.02.1.02.05.01.08.02h.04l.06.02.04.01.07.02h.05l.07.02.1.03.1.03.12.03.11.03.05.02.07.02.08.02.07.02.05.02.05.01.08.03.1.03.1.04.05.02.06.02.1.03.1.04.12.05.1.04.05.02.06.02.04.02.06.03.04.01.06.03.1.05.1.04.08.04.08.03.06.03.09.05.09.04.1.06.05.02.05.03.05.02.06.04.04.02.05.03.1.05.1.06.08.05.06.03.05.03.1.06.09.06.1.06.03.02.07.05.08.05.04.03.06.04.06.04.03.02.16.11.08.06.07.05.05.05.09.06.08.06.04.03.05.05.09.06.07.07.09.07q1.07.9 1.9 2.03L7.23 1l.06-.02.07-.03.08-.04.09-.03q.15-.07.34-.13l.1-.04.09-.03.08-.03.1-.03.26-.09.1-.02.08-.03.1-.03.08-.02.1-.03.09-.02.09-.02.1-.02.09-.03.09-.02.1-.02.08-.02.1-.02.1-.01.1-.02.08-.02.1-.02h.1l.09-.02.1-.02.1-.01.08-.01.11-.01.09-.01.1-.01.29-.03h.1l.1-.01h.1l.1-.01h.29z"/></svg>`;var Tr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="M10.21 8.98V7.62l.39-.02c3.6-.12 5.96 3.18 5.96 3.18s-2.55 3.65-5.28 3.65a3 3 0 0 1-1.07-.17v-4.11c1.4.17 1.68.8 2.52 2.25l1.88-1.62a5 5 0 0 0-3.67-1.85zm0-4.47v2.02l.39-.02c5-.17 8.26 4.23 8.26 4.23s-3.75 4.69-7.65 4.69q-.5 0-1-.1v1.25q.42.06.84.06c3.62 0 6.25-1.9 8.79-4.17.42.35 2.15 1.2 2.5 1.57-2.42 2.08-8.05 3.76-11.24 3.76q-.45 0-.9-.05v1.76H24v-15zm0 9.75v1.07c-3.36-.61-4.29-4.2-4.29-4.2a7.2 7.2 0 0 1 4.29-2.14v1.17a3.2 3.2 0 0 0-2.5 1.17s.6 2.28 2.5 2.94m-5.96-3.3a8.3 8.3 0 0 1 5.96-3.34v-1.1C5.8 6.9 2 10.72 2 10.72s2.16 6.43 8.21 7.02v-1.17c-4.44-.57-5.96-5.61-5.96-5.61"/></svg>`;var jr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="M9.2 8.66V6.4q0-.3.24-.43L14 3.35a4 4 0 0 1 2.11-.52 4.54 4.54 0 0 1 4.67 4.57q0 .25-.03.54l-4.7-2.76a.8.8 0 0 0-.87 0zm10.61 8.8v-5.4a.8.8 0 0 0-.42-.74l-5.97-3.47 1.95-1.12a.4.4 0 0 1 .47 0l4.54 2.62a4.7 4.7 0 0 1 2.2 3.95 4.5 4.5 0 0 1-2.77 4.16m-12-4.76-1.96-1.14a.5.5 0 0 1-.24-.43V5.9a4.4 4.4 0 0 1 4.6-4.47q1.52.02 2.7.92L8.24 5.07a.8.8 0 0 0-.43.73zM12 15.13l-2.8-1.57v-3.33L12 8.66l2.8 1.57v3.33zm1.8 7.23q-1.52-.02-2.72-.93l4.69-2.71a.8.8 0 0 0 .43-.74v-6.9l1.97 1.15q.25.14.24.42v5.24a4.44 4.44 0 0 1-4.61 4.47m-5.64-5.3L3.6 14.43a4.7 4.7 0 0 1-2.18-3.95A4.5 4.5 0 0 1 4.2 6.33v5.42q0 .49.43.74l5.95 3.45-1.95 1.12a.4.4 0 0 1-.48 0m-.26 3.9a4.5 4.5 0 0 1-4.67-4.52q.01-.3.05-.57l4.69 2.7a.8.8 0 0 0 .85 0l5.97-3.44v2.26q0 .28-.23.43L10 20.43q-.95.53-2.11.52m5.9 2.82a5.95 5.95 0 0 0 5.82-4.75A5.96 5.96 0 0 0 22 8.85q.19-.75.2-1.5a5.93 5.93 0 0 0-7.83-5.64A6 6 0 0 0 10.2 0a5.95 5.95 0 0 0-5.83 4.76A5.95 5.95 0 0 0 2 14.94q-.19.75-.2 1.5a5.93 5.93 0 0 0 7.83 5.63 6 6 0 0 0 4.17 1.72z"/></svg>`;var Br=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="M18.65 3.87a5.09 5.09 0 1 1 0 10.17l5.05 5.05c.64.64.19 1.74-.72 1.74H8.48a8.48 8.48 0 0 1 0-16.96zM8.48 7.26a5.09 5.09 0 1 0 0 10.18 5.09 5.09 0 0 0 0-10.18"/></svg>`;var Fr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="m12.6 1.34 1.18 2.08a.2.2 0 0 0 .15.09h5.56q.26 0 .44.32L21.4 6.4c.19.34.24.48.02.84l-.76 1.3-.37.66c-.1.2-.22.28-.04.51l2.66 4.64c.17.3.1.5-.05.77q-.65 1.17-1.33 2.34c-.16.27-.35.37-.68.37q-1.16-.03-2.33.01a.1.1 0 0 0-.08.05l-2.7 4.74c-.17.3-.38.37-.73.37h-3.02a.5.5 0 0 1-.46-.27l-1.34-2.32a.1.1 0 0 0-.08-.05H4.98q-.42.05-.8-.1l-1.6-2.77a.5.5 0 0 1 0-.54l1.2-2.12a.2.2 0 0 0 0-.2L1.9 11.38l-.79-1.4c-.16-.31-.17-.5.1-.96L2.6 6.57q.18-.34.58-.34h2.59a.1.1 0 0 0 .1-.06l2.81-4.9a.5.5 0 0 1 .42-.24h1.59L11.7 1c.35 0 .73.03.9.34m-3.43.4-.05.03L6.25 6.8a.2.2 0 0 1-.13.08H3.25q-.08 0-.04.07L9.02 17.1q.04.06-.03.06l-2.8.01a.2.2 0 0 0-.2.12L4.67 19.6q-.06.12.07.12h5.72q.06 0 .1.07l1.4 2.45q.08.12.14 0l5-8.76.8-1.38a.1.1 0 0 1 .09 0l1.42 2.53a.1.1 0 0 0 .1.06l2.77-.02.04-.02v-.04l-2.9-5.09a.1.1 0 0 1 0-.1l.29-.52 1.12-1.97q.03-.06-.04-.06H9.2q-.09 0-.04-.08l1.43-2.5a.1.1 0 0 0 0-.12l-1.37-2.4zm6.3 8.02q.06 0 .03.06l-.84 1.47-2.6 4.58-.06.03-.05-.03L8.5 9.84q-.03-.05.03-.05l.21-.02z"/></svg>`;var Dr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="M12 0C8.02 0 4.76.26 2.5 2.52.22 4.78 0 8.03 0 12.02c0 3.97.23 7.23 2.5 9.49C4.75 23.77 8.01 24 12 24s7.24-.23 9.5-2.5c2.28-2.24 2.5-5.5 2.5-9.48s-.23-7.24-2.5-9.5S15.98 0 12 0M4.9 7.4h5.63c1.47 0 3 .07 3.76.83.75.75.83 2.23.83 3.68v4.54a.15.15 0 0 1-.15.15h-1.95a.15.15 0 0 1-.15-.15v-4.62c0-.8-.04-1.63-.46-2.05-.36-.36-1.03-.44-1.72-.46H7.16a.15.15 0 0 0-.15.15v6.98a.15.15 0 0 1-.15.15H4.9a.15.15 0 0 1-.15-.15v-8.9a.15.15 0 0 1 .15-.14m12.14 0h1.95a.15.15 0 0 1 .15.15v8.9a.15.15 0 0 1-.15.14h-1.95a.15.15 0 0 1-.15-.14v-8.9a.15.15 0 0 1 .15-.14m-8.12 3.55h2.05q.13 0 .15.15v5.35a.15.15 0 0 1-.15.15H8.92a.15.15 0 0 1-.15-.15V11.1a.15.15 0 0 1 .15-.15"/></svg>`;var qr=u`<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" fill-rule="evenodd" style="flex:none;line-height:1" viewBox="0 0 24 24"><path d="M12.1 2 9.94 4.95H.65L2.83 2zm11.15 17.05L21.08 22h-9.24L14 19.05zM24 2 9.26 22H0L14.74 2z"/></svg>`;var Hr={anthropic:Rr,deepseek:zr,google:Lr,mistralai:Pr,moonshot:At,moonshotai:At,nvidia:Tr,openai:jr,openrouter:Br,qwen:Fr,xiaomi:Dr,"x-ai":Nr,"z-ai":qr},zi=u`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="4" y="4" width="12" height="12" rx="3"/><path d="M8 1v3m4-3v3M8 16v3m4-3v3M1 8h3m-3 4h3m12-4h3m-3 4h3"/></svg>`;function Rt(t){return Object.hasOwn(Hr,t)?Hr[t]:zi}function Li(t){if(/^https?:\/\//iu.test(t)){try{let s=new URL(t),r=s.pathname.split("/").filter(Boolean);if(r.length>=2)return{owner:`${s.host}/${r[0]}`,name:r.slice(1).join("/")}}catch{}return{owner:null,name:t}}let e=/^([^\s/:]+)\/(.+)$/u.exec(t);return e?{owner:e[1],name:e[2]}:{owner:null,name:t}}var Ur=t=>t.normalize("NFKC").toLocaleLowerCase(),zt=(t,e)=>t.localeCompare(e,void 0,{numeric:!0,sensitivity:"base"}),Lt=Symbol("other repositories");function Gr(t,e="",s=null,{includeSingletonOrganizations:r=!1}={}){let o=t.map(m=>({...m,...m.special?{owner:null,name:m.label}:Li(m.label)})),n=new Map;for(let m of o)m.owner!=null&&n.set(m.owner,(n.get(m.owner)??0)+1);let i=r?1:2,a=[...n].filter(([,m])=>m>=i).toSorted(([m],[x])=>zt(m,x)).map(([m,x])=>({value:m,name:m,count:x})),c=m=>(n.get(m.owner)??0)<i,l=o.filter(m=>!m.special&&!m.reset&&c(m)).length;l>0&&a.push({value:Lt,name:"Other",count:l});let p=a.some(m=>m.value===s)?s:null,d=Ur(e.trim()).split(/\s+/u).filter(Boolean),f=m=>d.every(x=>Ur(m.label).includes(x)),h=o.filter(m=>m.reset||m.special&&f(m)),b=o.filter(m=>!m.reset&&!m.special&&f(m)&&(p==null||(p===Lt?c(m):m.owner===p))),y=new Map;for(let m of b){let x=(n.get(m.owner)??0)>=i?m.owner:null;y.has(x)||y.set(x,[]),y.get(x).push(m)}let O=[...y].toSorted(([m],[x])=>m==null?1:x==null?-1:zt(m,x)).map(([m,x])=>({label:m??(a.some(N=>N.value!==Lt)?"Other":null),organization:m!=null,options:x.toSorted((N,Je)=>zt(N.label,Je.label))}));return{facets:a,activeFacet:p,pinned:h,sections:O,count:b.length+h.filter(m=>!m.reset).length,total:o.filter(m=>!m.reset).length,showFacets:a.length>1}}function Ni(t,e,s){let r=t[0].getBoundingClientRect().top,o=1;for(;o<t.length&&Math.abs(t[o].getBoundingClientRect().top-r)<1;)o++;if(o===1&&(s==="ArrowLeft"||s==="ArrowRight"))return e;let n=e+{ArrowLeft:-1,ArrowRight:1,ArrowUp:-o,ArrowDown:o}[s];if(n<0)return s==="ArrowUp"?-1:e;let i=Math.floor((t.length-1)/o);return n<t.length?n:Math.floor(e/o)<i?t.length-1:e}var j=class extends S{static properties={options:{attribute:!1},value:{attribute:!1},label:{type:String},placeholder:{type:String},disabled:{type:Boolean},_query:{state:!0},_facet:{state:!0},_open:{state:!0}};static styles=$`:host{display:block;min-width:0}:host,.menu{-webkit-app-region:no-drag;app-region:no-drag}*{box-sizing:border-box}button,input{font:inherit;color:var(--text)}button{cursor:default;user-select:none}.trigger{display:flex;align-items:center;gap:.6rem;width:100%;height:2rem;padding:.28rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);background:var(--bg);text-align:left;font-size:.76rem}.trigger:hover:not(:disabled){border-color:var(--muted)}.trigger:disabled{opacity:.5}:host([variant=filter]){display:inline-block;max-width:min(20rem,100%)}:host([variant=filter]) .trigger{height:30px;min-width:8.5rem;background:transparent;font-size:.8rem;font-weight:500;border-radius:var(--ui-radius, 4px)}.name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.option-copy{flex:1;min-width:0;display:grid;gap:.08rem}.secondary{color:var(--muted);font-size:.64rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.secondary.is-warning{color:var(--warning);font-weight:600}.avatar{display:grid;place-items:center;flex:0 0 1.5rem;width:1.5rem;height:1.5rem;border-radius:50%;color:var(--accent);background:rgb(from var(--accent) r g b / .13);font-family:sans-serif;font-size:.62rem;font-weight:600}.detail,.count{flex:0 0 auto;color:var(--muted);font-size:.66rem;font-variant-numeric:tabular-nums;white-space:nowrap}svg{flex:0 0 auto;width:.9rem;height:.9rem;color:var(--muted)}.menu{visibility:hidden;position:fixed;inset:auto;margin:0;padding:0;overflow:hidden;border:1px solid var(--border);border-radius:var(--ui-radius, 8px);background:var(--bg);color:var(--text);box-shadow:0 .6rem 1.6rem #0006;user-select:none}.menu:popover-open{display:flex;flex-direction:column}.menu[data-positioned]{visibility:visible}.search{display:flex;align-items:center;gap:.5rem;flex:0 0 auto;padding:.55rem .65rem;border-bottom:1px solid var(--border)}input{flex:1;min-width:0;width:0;padding:.15rem 0;border:0;background:transparent;font-size:.78rem;outline:none}input::placeholder{color:var(--muted)}.search:focus-within{box-shadow:inset 0 -2px var(--accent)}.body{display:flex;min-height:0;flex:1}.facets{width:10.5rem;flex:0 0 auto;padding:.35rem;overflow:auto;overscroll-behavior:none;border-right:1px solid var(--border);background:rgb(from var(--bg) r g b / .25)}.org{display:flex;align-items:center;gap:.4rem;width:100%;padding:.4rem .45rem;border:0;border-radius:var(--ui-radius, 4px);background:transparent;text-align:left;font-size:.7rem}.org[aria-pressed=true]{color:var(--accent);background:rgb(from var(--accent) r g b / .1)}.results{flex:1;min-width:0;overflow:auto;overscroll-behavior:none;padding:.3rem}.group+.group{margin-top:.35rem;padding-top:.35rem;border-top:1px solid var(--border)}.heading{position:sticky;top:-.3rem;z-index:1;display:flex;align-items:center;gap:.4rem;margin:0;padding:.4rem .5rem;color:var(--muted);background:var(--bg);font-size:.68rem;font-weight:600}.heading svg{width:.8rem;height:.8rem}.option{display:flex;align-items:center;gap:.65rem;width:100%;padding:.35rem .5rem;border:0;border-radius:var(--ui-radius, 4px);background:transparent;text-align:left;font-size:.76rem}.option svg{width:.8rem;height:.8rem;opacity:0;color:var(--accent)}.option[aria-selected=true]{color:var(--accent);background:rgb(from var(--accent) r g b / .1)}.option[aria-selected=true] svg{opacity:1}.option:disabled{opacity:.45}.option:hover:not(:disabled),.org:hover{background:rgb(from var(--text) r g b / .05)}.pinned{padding-bottom:.25rem;margin-bottom:.25rem;border-bottom:1px solid var(--border)}.empty{margin:0;padding:1.3rem .7rem;color:var(--muted);font-size:.76rem}button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media(max-width:40rem){.facets{width:8.5rem}}@media(max-width:28rem){.facets{width:7rem}.option{gap:.35rem}}`;constructor(){super(),this.options=[],this.value=null,this.label="Choose",this.placeholder="Choose",this.disabled=!1,this._query="",this._facet=null,this._open=!1,this._menuHeight=null,this._onViewport=()=>this._position()}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("tooltip-root-connected",{bubbles:!0,composed:!0})),window.addEventListener("resize",this._onViewport),window.addEventListener("scroll",this._onViewport,!0),this._scrollRoots=[];for(let e=this.getRootNode();e.host;e=e.host.getRootNode())e.addEventListener("scroll",this._onViewport,!0),this._scrollRoots.push(e)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this._onViewport),window.removeEventListener("scroll",this._onViewport,!0);for(let e of this._scrollRoots??[])e.removeEventListener("scroll",this._onViewport,!0);this._scrollRoots=[]}render(){let e=this.options.find(i=>i.value===this.value),s=this.choices(),o=[...s.pinned,...s.sections.flatMap(i=>i.options)].filter(i=>!i.disabled),n=o.find(i=>i.value===this.value)?.value??o[0]?.value;return u`<button type="button" class="trigger" popovertarget="selector-menu" aria-label="${this.label}" aria-haspopup="dialog" aria-expanded="${this._open}" ?disabled="${this.disabled}">${e?this.optionIcon(e):g}<span class="name" data-tooltip-truncated data-tooltip="${e?.label??g}">${e?.label??this.placeholder}</span>${e?.detail?u`<span class="detail" data-tooltip-truncated data-tooltip="${e.detail}">${e.detail}</span>`:g} <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m4 6 4 4 4-4"/></svg></button><div class="menu" id="selector-menu" popover="auto" role="dialog" aria-label="${this.label}" @beforetoggle="${this._beforeToggle}" @toggle="${this._toggle}" @keydown="${this._keyDown}"><div class="search"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="7" cy="7" r="4.5"/><path d="m10.5 10.5 3.5 3.5"/></svg> <input type="search" placeholder="${`${this.searchLabel}\u2026`}" aria-label="${this.searchLabel}" aria-controls="selector-options" .value="${C(this._query)}" @input="${i=>{this._query=i.target.value}}"> <span class="count" role="status">${s.count}${s.count===s.total?"":` / ${s.total}`}</span></div><div class="body">${s.showFacets?u`<div class="facets" role="group" aria-label="${this.facetLabel}"><button type="button" class="org" aria-pressed="${s.activeFacet==null}" @click="${()=>this._filterFacet(null)}"><span class="name">${this.allFacetsLabel}</span><span class="count">${s.total}</span></button> ${s.facets.map(i=>u`<button type="button" class="org" aria-pressed="${s.activeFacet===i.value}" @click="${()=>this._filterFacet(i.value)}"><span class="name" data-tooltip-truncated data-tooltip="${i.name}">${i.name}</span><span class="count">${i.count}</span></button>`)}</div>`:g}<div class="results" id="selector-options" role="listbox" aria-label="${this.optionsLabel}">${s.pinned.length>0?u`<div class="pinned">${s.pinned.map(i=>this._option(i,!1,n))}</div>`:g} ${s.sections.map((i,a)=>u`<div class="group" role="group" aria-labelledby="${i.label?`selector-group-${a}`:g}">${i.label?u`<h3 class="heading" id="${`selector-group-${a}`}">${i.organization?u`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.2" aria-hidden="true"><path d="M3 14V3h6v11M9 7h4v7M1 14h14M5 6h2M5 9h2M5 12h2"/></svg>`:g}${i.label}</h3>`:g} ${i.options.map(c=>this._option(c,i.organization,n))}</div>`)} ${s.count?g:u`<p class="empty">${this.options.length>0?this.noMatchesLabel:this.emptyLabel}</p>`}</div></div></div>`}get menuWidth(){return 360}optionIcon(e){return e.initials?u`<span class="avatar" aria-hidden="true">${e.initials}</span>`:g}optionTooltip(e){return e.label}_option(e,s,r){let o=e.displayLabel??(s?e.name:e.label),n=this.optionTooltip(e);return u`<button type="button" class="option" role="option" ?data-reset="${e.reset}" ?disabled="${e.disabled}" aria-label="${e.label}" aria-selected="${e.value===this.value}" tabindex="${e.value===r?0:-1}" @click="${()=>this._pick(e.value)}"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m3 8 3 3 7-7"/></svg>${this.optionIcon(e)}<span class="option-copy"><span class="name" ?data-tooltip-truncated="${o===n}" data-tooltip="${n}">${o}</span>${e.secondary?u`<span class="${e.secondaryWarning?"secondary is-warning":"secondary"}" ?data-tooltip-truncated="${!e.secondaryWarning}" data-tooltip="${e.secondaryWarning??e.secondary}">${e.secondary}</span>`:g}</span>${e.detail?u`<span class="detail">${e.detail}</span>`:g}</button>`}updated(e){this.disabled&&this._open&&this._close(!1),e.has("options")&&(this._menuHeight=null),this._position(),(e.has("_query")||e.has("_facet"))&&(this.renderRoot.querySelector(".results").scrollTop=0)}_beforeToggle(e){this._open=e.newState==="open",delete e.target.dataset.positioned,this._open&&(this._query="",this._facet=null,this._menuHeight=null)}async _toggle(e){e.newState==="open"&&(await this.updateComplete,!(!this._open||!this.isConnected)&&(this._position(),this.renderRoot.querySelector("input").focus({preventScroll:!0})))}_position(){let e=this.renderRoot.querySelector(".menu");if(!e?.matches(":popover-open"))return;let s=this.renderRoot.querySelector(".trigger").getBoundingClientRect(),r=8,o=e.querySelector(".facets")!=null,n=Math.min(Math.max(s.width,o?560:this.menuWidth),window.innerWidth-r*2),i=window.innerHeight-s.bottom-r-4,a=s.top-r-4;e.style.width=`${n}px`,this._menuHeight??=Math.min(480,e.querySelector(".search").offsetHeight+Math.max(e.querySelector(".results").scrollHeight,e.querySelector(".facets")?.scrollHeight??0)+2);let c=this._menuHeight,l=i<c&&a>i;e.style.maxHeight=`${Math.max(0,Math.min(c,l?a:i))}px`,e.style.left=`${Math.max(r,Math.min(s.left,window.innerWidth-n-r))}px`,e.style.top=`${Math.max(r,l?s.top-e.offsetHeight-4:s.bottom+4)}px`,e.dataset.positioned=""}_filterFacet(e){this._facet=e,this.renderRoot.querySelector("input").focus({preventScroll:!0})}_keyDown(e){if(e.stopPropagation(),e.key==="Escape"){e.preventDefault(),this._close();return}let s=this.renderRoot.querySelector("input"),r=this.renderRoot.activeElement,o=[...this.renderRoot.querySelectorAll(".option:not(:disabled)")],n=o.indexOf(r);if(r!==s&&n<0)return;if(e.key==="Enter"&&r===s){e.preventDefault(),(this.renderRoot.querySelector(".option:not([data-reset]):not(:disabled)")??o[0])?.click();return}let i;if(r===s)if(e.key==="ArrowDown")i=0;else if(e.key==="ArrowUp")i=-1;else return;else if(e.key.startsWith("Arrow"))i=Ni(o,n,e.key);else if(e.key==="Home")i=0;else if(e.key==="End")i=o.length-1;else if(e.key.length===1&&e.key!==" "&&!e.ctrlKey&&!e.metaKey&&!e.altKey){e.preventDefault(),this._query+=e.key,s.focus();return}else return;e.preventDefault();for(let[a,c]of o.entries())c.tabIndex=a===i?0:-1;i<0?s.focus():o[i]?.focus()}_pick(e){this.disabled||!this.options.some(s=>s.value===e&&!s.disabled)||(this._close(),this.dispatchEvent(new CustomEvent(this.changeEvent,{detail:{value:e},bubbles:!0,composed:!0})))}_close(e=!0){this.renderRoot.querySelector(".menu").hidePopover(),this._open=!1,e&&this.renderRoot.querySelector(".trigger").focus({preventScroll:!0})}};var Nt=class extends j{constructor(){super(),this.label="Choose repository",this.placeholder="Choose repository"}get searchLabel(){return"Search repositories"}get optionsLabel(){return"Repositories"}get facetLabel(){return"Filter by organization"}get allFacetsLabel(){return"All organizations"}get noMatchesLabel(){return"No matching repositories"}get emptyLabel(){return"No repositories available"}get changeEvent(){return"repository-change"}choices(){return Gr(this.options,this._query,this._facet)}};customElements.get("repository-selector")||customElements.define("repository-selector",Nt);function Pi(t){return t.map(e=>{let s=e.format==="npm"?"npm":["sourcemap","sourcemaps"].includes(e.kind)||e.filename.toLowerCase().endsWith(".map")?"sourcemap":"stasis",r=s==="npm"?e.detail??"":s==="sourcemap"?"Sourcemap":"Stasis",o=[];if(e.date&&o.push(e.date),typeof e.size=="string"&&!["","\u2014"].includes(e.size)&&o.push(e.size),e.files){o.push(`${e.files.length.toLocaleString()} files`);let{lines:n}=xe(e.files);n!=null&&o.push(`${n.toLocaleString()} LoC`)}else e.summary&&(Number.isSafeInteger(e.summary.files)&&e.summary.files>=0&&o.push(`${e.summary.files.toLocaleString()} files`),Number.isSafeInteger(e.summary.lines)&&e.summary.lines>=0&&o.push(`${e.summary.lines.toLocaleString()} LoC`));return{value:e.id,label:e.filename,displayLabel:e.displayLabel,detail:r,format:s,secondary:o.join(" \xB7 "),...e.dateWarning&&{secondaryWarning:e.dateWarning}}})}var Vr=t=>t.displayLabel??t.label,Pt=class extends j{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[j.styles,$`.bundle-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 1.05rem;width:1.05rem;height:1.05rem;color:var(--muted)}.bundle-icon img,.bundle-icon svg{display:block;width:100%;height:100%;opacity:1;color:inherit}.option{gap:.5rem;padding-block:.25rem}.option-copy{gap:0}.option .name{line-height:1.3}.option .bundle-icon{flex-basis:1.35rem;width:1.35rem;height:1.35rem;margin-right:.15rem}.secondary{line-height:1.25;font-variant-numeric:tabular-nums}:host([versions]) .group{display:grid;gap:.1rem;font-size:.76rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,calc(max(var(--option-width, 6ch),var(--secondary-width, 0ch) * .76) + 1rem)),1fr))}:host([versions]) .secondary{font-size:.76em}:host([versions]) .option{flex-wrap:wrap;align-content:start;gap:0 .8rem;padding:.3rem .45rem;font-variant-numeric:tabular-nums}:host([versions]) .option>svg,:host([versions]) .option .bundle-icon{display:none}:host([versions]) .option-copy{flex:0 1 auto}:host([versions]) .option .detail{font-size:.62rem;line-height:1.6}:host([versions]) .trigger .name:has(+.detail){flex:0 1 auto}:host([versions]) .trigger .detail{flex:1 1 0%;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:right}`];constructor(){super(),this.bundles=null,this.noun="bundle",this.versions=!1,this.label="Choose bundle",this.placeholder="Choose bundle"}get searchLabel(){return`Search ${this.noun}s`}get optionsLabel(){return`${this.noun[0].toUpperCase()}${this.noun.slice(1)}s`}get noMatchesLabel(){return`No matching ${this.noun}s`}get emptyLabel(){return this.noun==="bundle"?"No stored bundles":`No other ${this.noun}s`}get changeEvent(){return"bundle-change"}get menuWidth(){return this.versions?500:super.menuWidth}willUpdate(e){if(e.has("bundles")&&this.bundles&&(this.options=Pi(this.bundles)),e.has("options")&&this.versions){let s=r=>Math.min(Math.max(0,...this.options.map(o=>r(o)?.length??0)),28);this.style.setProperty("--option-width",`${s(Vr)}ch`),this.style.setProperty("--secondary-width",`${s(r=>r.secondary)}ch`)}}optionTooltip(e){return Vr(e)}optionIcon(e){return e.format?u`<span class="bundle-icon" aria-hidden="true">${e.format==="npm"?I(ls):e.format==="sourcemap"?I(be):u`<img src="./stasis.svg" alt="">`}</span>`:g}choices(){let e=this._query.normalize("NFKC").toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),s=this.options.filter(o=>e.every(n=>`${o.label} ${o.detail}`.normalize("NFKC").toLocaleLowerCase().includes(n))),r=this.versions?s:s.toSorted((o,n)=>o.label.localeCompare(n.label,void 0,{numeric:!0,sensitivity:"base"}));return{pinned:[],sections:[{label:null,options:r}],facets:[],showFacets:!1,count:r.length,total:this.options.length}}};customElements.get("bundle-selector")||customElements.define("bundle-selector",Pt);var Wr=[{key:"metro",label:"metro",subtitle:"Metro bundle contents"},{key:"run",label:"run",subtitle:"Node.js CLI"},{key:"add",label:"add",subtitle:"Manually added files"}];function Kr(t){let e=t.filter(r=>r.id!=="all");if(e.length===0)return null;let s=new Map(e.map(r=>[String(r.id).replace(/^reason:/u,""),r]));return s.size!==e.length||[...s.keys()].some(r=>!Wr.some(o=>o.key===r))?null:[{id:"",label:"All files",subtitle:"Everything"},...Wr.filter(r=>s.has(r.key)).map(({key:r,...o})=>({...o,id:s.get(r).id,subtitle:r==="run"&&s.has("metro")?"Bundler and Node.js CLI":o.subtitle}))]}var Tt=class extends S{static properties={reasons:{attribute:!1},value:{attribute:!1},label:{type:String}};constructor(){super(),this.reasons=[],this.value="",this.label="Choose scope"}_select(e){this.dispatchEvent(new CustomEvent("scope-change",{detail:{value:e},bubbles:!0,composed:!0}))}render(){let e=this.reasons.filter(o=>o.id!=="all");if(e.length===0)return g;let s=Kr(e);if(!s)return u`<label class="scope-field"><span>Scope</span><select aria-label="${this.label}" .value="${C(this.value==="all"?"":this.value)}" @change="${o=>this._select(o.target.value)}"><option value="">All files</option>${e.map(o=>u`<option value="${o.id}">${o.label??o.id}</option>`)}</select></label>`;let r=s.find(o=>o.id===this.value)??s[0];return u`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${s.map(o=>u`<label class="scope-option"><input type="radio" name="scope" value="${o.id}" .checked="${r.id===o.id}" @change="${()=>this._select(o.id)}"><span>${o.label}</span></label>`)}</div><span class="scope-description" id="scope-description">${r.subtitle}</span></div>`}static styles=$`:host{display:block;min-width:0}*{box-sizing:border-box}.scope-toggle,.scope-field{cursor:default;user-select:none;-webkit-user-select:none}.scope-toggle{display:flex;align-items:center;justify-content:end;flex-wrap:wrap;gap:.4rem .7rem;min-width:0;min-height:var(--scope-height, 2rem)}.scope-options{display:flex;flex-shrink:0;min-width:0;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);overflow:hidden;background:var(--bg)}.scope-option{position:relative;flex:1 0 auto}.scope-option+.scope-option{border-left:1px solid var(--border)}.scope-option input{position:absolute;width:1px;height:1px;opacity:0}.scope-option span{display:grid;place-items:center;height:calc(var(--scope-height, 2rem) - 2px);padding:.3rem .55rem;color:var(--muted);font-size:.74rem;white-space:nowrap}.scope-option:hover span{color:var(--text);background:var(--surface-active)}.scope-option input:checked+span{color:var(--text);background:var(--surface-active);font-weight:500}.scope-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}.scope-description{order:-1;min-width:0;color:var(--muted);font-size:.66rem;line-height:1rem;text-align:right}.scope-field{display:flex;align-items:center;justify-content:end;gap:.5rem;min-width:0;max-width:100%;margin-left:auto;color:var(--muted);font-size:.7rem}select{width:13rem;height:var(--scope-height, auto);min-width:0;max-width:100%;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);background:var(--bg);color:var(--text);font:inherit;font-size:.76rem}:host([compact]) .scope-toggle{min-height:0;gap:.3rem .5rem}:host([compact]) .scope-option span{height:auto;padding:2px 8px;font-size:.68rem;line-height:1.2}:host([compact]) .scope-field{font-size:.68rem}:host([compact]) .scope-description{display:none}:host([compact]) select{width:auto;max-width:22ch;padding:2px 6px;font-size:.68rem;line-height:1.2}`};customElements.get("bundle-scope-selector")||customElements.define("bundle-scope-selector",Tt);function jt(t){let e=new Map(t.map(r=>[r.id,r])),s=new Set;return t.flatMap(r=>{if(s.has(r.id))return[];let o=r.id.endsWith("-pro")?r.id.slice(0,-4):r.id,n=e.get(o),i=e.get(`${o}-pro`);return!/(?:^|\/)gpt-.+$/u.test(o)||o.endsWith("-pro")||!n||!i?[r]:(s.add(n.id),s.add(i.id),[{...n,pro:i}])})}function Bt(t){return[...Map.groupBy(jt(t),s=>ue(s.id).key)].map(([s,r])=>({key:s,models:r}))}function Zr(t,e){if(t.length===0)return[];let s=Math.min(t.length,Math.max(1,e)),r=t.map(l=>l.models.length*2+3),o=r.reduce((l,p)=>l+p,0),n=Math.max(...r);for(;n<o;){let l=Math.floor((n+o)/2),p=0,d=1;for(let f of r)p+f>l&&(d++,p=0),p+=f;d>s?n=l+1:o=l}let i=[],a=[],c=0;for(let[l,p]of t.entries())a.length>0&&(c+r[l]>n||t.length-l===s-i.length-1)&&(i.push(a),a=[],c=0),a.push(p),c+=r[l];return i.push(a),i}var Ti=u`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m4 6 4 4 4-4"/></svg>`,Ft=class extends S{static properties={loadModels:{attribute:!1},pending:{type:Boolean},value:{attribute:!1},effort:{attribute:!1},hasExtra:{type:Boolean,attribute:"has-extra"},_models:{state:!0},_error:{state:!0},_menuColumns:{state:!0}};static styles=$`:host{display:block;min-width:0;container:scan-controls / inline-size}*{box-sizing:border-box}.layout{display:grid;grid-template-columns:minmax(16rem,1fr) minmax(14rem,1fr);gap:1.25rem;align-items:start}.layout.with-extra{grid-template-columns:minmax(16rem,.9fr) minmax(14rem,1.2fr) minmax(14rem,auto)}.field{min-width:0;min-height:4.9rem}.model-placeholder{height:3.25rem;display:flex;align-items:center;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);color:var(--muted);background:var(--bg);font-size:.75rem}.effort-placeholder{height:.3rem;margin:1rem .6rem;border-radius:999px;background:var(--surface-active)}.label{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem;color:var(--muted);font-size:.72rem}output{color:var(--text);font-size:.72rem;font-weight:500}details{position:relative}.model-control{position:relative}summary{display:flex;align-items:center;gap:.55rem;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);background:var(--bg);color:var(--text);list-style:none;transition:border-color .12s,background .12s}summary:hover,details[open] summary{border-color:var(--muted);background:var(--surface-active)}summary::-webkit-details-marker{display:none}summary,.menu{user-select:none}summary>svg{width:.9rem;height:.9rem;margin-left:auto;color:var(--muted)}.selected-copy{display:grid;gap:.1rem;flex:1;min-width:0}.selected-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:500}.selected-copy small{color:var(--muted);font-size:.63rem}.pro-space{width:3.65rem;flex:0 0 3.65rem}.pro-toggle,.pro-checkbox{position:absolute;right:2.05rem;top:50%;transform:translateY(-50%);align-items:center;justify-content:center;gap:.3rem;width:3.65rem;height:1.65rem;padding:.2rem .3rem;color:var(--muted);font:inherit;font-size:.65rem;font-weight:600;cursor:default;user-select:none}.pro-toggle{display:var(--switch-button-display, inline-flex);border:1px solid var(--border);border-radius:var(--ui-radius, 5px);background:var(--bg)}.pro-checkbox{display:var(--switch-checkbox-display, none)}.pro-checkbox input{width:.85rem;height:.85rem;margin:0;accent-color:var(--accent)}.pro-toggle:hover{border-color:var(--muted);color:var(--text)}.pro-track{position:relative;flex:0 0 1.3rem;height:.8rem;border-radius:var(--ui-radius, 999px);background:var(--border)}.pro-track:after{content:"";position:absolute;top:.15rem;left:.15rem;width:.5rem;height:.5rem;border-radius:50%;background:var(--muted);transition:transform .12s,background .12s}.pro-toggle[aria-checked=true]{color:var(--accent);border-color:rgb(from var(--accent) r g b / .45);background:rgb(from var(--accent) r g b / .08)}.pro-toggle[aria-checked=true] .pro-track{background:rgb(from var(--accent) r g b / .25)}.pro-toggle[aria-checked=true] .pro-track:after{transform:translate(.5rem);background:var(--accent)}.icon{display:inline-grid;place-items:center;width:1.7rem;height:1.5rem;flex:0 0 1.7rem;color:var(--text)}.icon svg{display:block;width:1.12rem;height:1.12rem}.icon.openai{color:#10a37f}.icon.anthropic{color:#d97757}.icon.moonshotai{color:#8068d9}.icon.google{color:#4285f4}.icon.nvidia{color:#76b900}.icon.qwen{color:#f97316}.icon.deepseek{color:#4d8dff}.icon.xiaomi{color:#ff6900}.icon.moonshotai svg{transform:scale(.78)}.icon.qwen svg{transform:scale(.82)}.icon.nvidia svg{transform:scale(.86)}.icon.deepseek svg{transform:scale(.9)}.extra{display:flex;min-width:0;min-height:4.9rem;align-items:flex-end;align-self:end;padding-bottom:.05rem}.menu{visibility:hidden;position:fixed;z-index:1000;width:min(46rem,calc(100vw - 1rem));max-height:calc(100dvh - 1rem);overflow:auto;overscroll-behavior:contain;padding:.65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 9px);background:var(--surface-active);color:var(--text);box-shadow:0 .65rem 1.8rem #0000008c}details[open] .menu[data-positioned]{visibility:visible}.groups{display:grid;grid-template-columns:repeat(var(--model-columns, 1),minmax(0,1fr));gap:1rem;align-items:start}.provider-column{min-width:0}fieldset{min-width:0;margin:0 0 .6rem;padding:0;border:0}fieldset:last-child{margin-bottom:0}legend{display:flex;align-items:center;gap:.45rem;width:100%;min-height:1.9rem;padding:.35rem .5rem .25rem;border-bottom:1px solid rgb(from var(--border) r g b / .7);color:var(--muted);font-size:.64rem;font-weight:700;letter-spacing:.055em;text-transform:uppercase}legend .icon{width:.88rem;height:1.25rem;flex-basis:.88rem}legend .icon svg{width:.88rem;height:.88rem}.choice{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:var(--ui-radius, 4px);font-size:.76rem}.choice:hover{background:rgb(from var(--text) r g b / .05)}.choice:has(:checked){color:var(--accent);background:rgb(from var(--accent) r g b / .1)}.choice input{margin:0;accent-color:var(--accent)}.choice span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slider{--thumb-size: 1rem;padding:.15rem .6rem 0}input[type=range]{appearance:none;display:block;width:100%;height:var(--thumb-size);margin:.4rem 0 .5rem;padding:0;border:0;background:transparent}input[type=range]::-webkit-slider-runnable-track{height:.3rem;border-radius:var(--ui-radius, 999px);background:linear-gradient(to right,var(--accent) var(--effort-fill),var(--surface-active) var(--effort-fill))}input[type=range]::-moz-range-track{height:.3rem;border-radius:var(--ui-radius, 999px);background:linear-gradient(to right,var(--accent) var(--effort-fill),var(--surface-active) var(--effort-fill))}input[type=range]::-webkit-slider-thumb{appearance:none;width:var(--thumb-size);height:var(--thumb-size);margin-top:calc((.3rem - var(--thumb-size)) / 2);border:0;border-radius:50%;background:var(--accent)}input[type=range]::-moz-range-thumb{width:var(--thumb-size);height:var(--thumb-size);border:0;border-radius:50%;background:var(--accent)}input[type=range]:disabled{opacity:.5}.steps{position:relative;height:1.3rem;margin:0 calc(var(--thumb-size) / 2)}.step{position:absolute;top:0;left:var(--step-position);transform:translate(-50%);padding:.35rem 0 0;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.62rem;white-space:nowrap;cursor:default}.step:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:1px;height:.2rem;background:var(--muted)}.step.active{color:var(--accent)}:is(summary,input,button):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.message{margin:0;color:var(--muted);font-size:.75rem}.error{color:var(--critical, #e5534b)}.retry{margin-left:.5rem;padding:.2rem .4rem;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);background:var(--bg);color:var(--text);font:inherit}@container scan-controls (max-width: 50rem){.layout.with-extra{grid-template-columns:minmax(16rem,1fr) minmax(14rem,1fr)}.layout.with-extra .extra{grid-column:1 / -1;align-self:start;min-height:0}}@container scan-controls (max-width: 33rem){.layout,.layout.with-extra{grid-template-columns:minmax(0,1fr);gap:1rem}.layout.with-extra .extra{grid-column:auto}}`;constructor(){super(),this.loadModels=Te,this.pending=!1,this.value=null,this.effort=null,this.hasExtra=!1,this._models=[],this._error=null,this._menuColumns=1,this._positionRequest=0,this._onOutside=e=>{e.composedPath().includes(this)||this._close()},this._onViewportChange=()=>this._positionMenu()}connectedCallback(){super.connectedCallback(),document.addEventListener("pointerdown",this._onOutside),window.addEventListener("resize",this._onViewportChange),window.addEventListener("scroll",this._onViewportChange,!0),this.hasUpdated&&this._load()}updated(e){(e.has("loadModels")||e.has("pending"))&&this.isConnected&&this._load(),e.has("_models")&&this.renderRoot.querySelector("details")?.open&&(this._resetMenuPosition(),this._positionMenu())}disconnectedCallback(){super.disconnectedCallback(),this._controller?.abort(),document.removeEventListener("pointerdown",this._onOutside),window.removeEventListener("resize",this._onViewportChange),window.removeEventListener("scroll",this._onViewportChange,!0)}async _load(){if(this._controller?.abort(),this.pending)return;let e=new AbortController;this._controller=e,this._error=null;let s=!1,r=o=>{if(e.signal.aborted)return;s=!0,this._models=o.models;let n=o.models.find(i=>i.id===this.value);n?n.efforts.includes(this.effort)||this._setEffort(ee(n)):this._select(o.defaultModel)};try{r(await this.loadModels(e.signal,r))}catch(o){!e.signal.aborted&&!s&&(this._error=String(o?.message??o))}}_close(){this._resetMenuPosition();let e=this.renderRoot.querySelector("details");e&&(e.open=!1)}_resetMenuPosition(){this._positionRequest++;let e=this.renderRoot.querySelector(".menu");e&&delete e.dataset.positioned}_toggleMenu(e){this._resetMenuPosition(),e.currentTarget.open&&this._positionMenu()}get _selectedRow(){return jt(this._models).find(e=>e.id===this.value||e.pro?.id===this.value)}async _positionMenu(){let e=++this._positionRequest,s=this.renderRoot.querySelector("details"),r=this.renderRoot.querySelector("summary"),o=this.renderRoot.querySelector(".menu");if(!s?.open||!r||!o)return;let n=r.getBoundingClientRect(),i=6,a=8,c=Bt(this._models),l=c.reduce((Ye,ge)=>Ye+ge.models.length,0),p=Math.min(3,c.length,Math.ceil((l+c.length*1.5)/9)),d=parseFloat(getComputedStyle(o).fontSize),f=0;for(let Ye of o.querySelectorAll(".choice span, legend")){let ge=document.createRange();ge.selectNodeContents(Ye),f=Math.max(f,ge.getBoundingClientRect().width)}let h=Math.max(11*d,Math.min(18*d,f+2.5*d)),b=1.3*d+2,y=Math.max(1,Math.min(p,Math.floor((window.innerWidth-a*2-b+d)/(h+d)))),O=Math.min(y*h+(y-1)*d+b,window.innerWidth-a*2),m=Math.max(a,Math.min(n.left,window.innerWidth-O-a));if(this._menuColumns=y,await this.updateComplete,e!==this._positionRequest||!this.isConnected||!s.open)return;o.style.left=`${m}px`,o.style.width=`${O}px`,o.style.setProperty("--model-columns",y),o.style.maxHeight=`${Math.max(0,window.innerHeight-a*2)}px`;let x=o.getBoundingClientRect().height,N=window.innerHeight-n.bottom-i-a,Je=n.top-i-a,Do=N<x&&Je>N?n.top-i-x:n.bottom+i;o.style.bottom="auto",o.style.top=`${Math.max(a,Math.min(Do,window.innerHeight-x-a))}px`,o.dataset.positioned=""}_select(e,{preserveEffort:s=!1,close:r=!0}={}){let o=this._models.find(n=>n.id===e);o&&(this.value=e,this._setEffort(s&&o.efforts.includes(this.effort)?this.effort:ee(o)),r&&this._close())}_selectRow(e){let s=this._selectedRow?.pro?.id===this.value;this._select(s&&e.pro?e.pro.id:e.id)}_togglePro(){let e=this._selectedRow;e?.pro&&this._select(this.value===e.pro.id?e.id:e.pro.id,{preserveEffort:!0,close:!1})}_setEffort(e){this.effort=e,this.dispatchEvent(new CustomEvent("model-change",{detail:{model:this.value,effort:e},bubbles:!0,composed:!0}))}render(){let e=this._models.find(n=>n.id===this.value);if(this.pending||!e)return u`<div class="${`layout ${this.hasExtra?"with-extra":""}`}" aria-busy="true"><div class="field"><span class="label">Model</span><div class="model-placeholder" role="${this._error?"alert":"status"}">${this._error?u`Couldn’t load models. <button type="button" class="retry" @click="${()=>{this._load()}}">Retry</button>`:"Loading models\u2026"}</div></div><div class="field" aria-hidden="true"><span class="label">Effort</span><div class="effort-placeholder"></div></div>${this.hasExtra?u`<div class="extra"><slot name="effort-extra"></slot></div>`:g}</div>`;let s=this._selectedRow,r=ue(e.id),o=Zr(Bt(this._models),this._menuColumns);return u`${this._error?u`<p class="message error" role="alert">Couldn’t refresh models: ${this._error}<button class="retry" @click="${()=>{this._load()}}">Retry</button></p>`:g}<div class="${`layout ${this.hasExtra?"with-extra":""}`}"><div class="field"><span class="label" id="model-label">Model</span><div class="model-control"><details @toggle="${this._toggleMenu}" @keydown="${n=>{n.key==="Escape"&&(this._close(),this.renderRoot.querySelector("summary")?.focus())}}"><summary aria-labelledby="model-label selected-model" @click="${this._resetMenuPosition}"><span class="${`icon ${r.key}`}" aria-hidden="true">${Rt(r.key)}</span><span class="selected-copy"><strong id="selected-model">${Z(s.id)}</strong><small>${r.name}</small></span>${s.pro?u`<span class="pro-space" aria-hidden="true"></span>`:g}${Ti}</summary><div class="menu"><div class="groups">${o.map(n=>u`<div class="provider-column">${n.map(i=>this._modelSection(i))}</div>`)}</div></div></details>${s.pro?u`<button type="button" class="pro-toggle" role="switch" aria-label="Pro model" aria-checked="${e.id===s.pro.id}" @click="${this._togglePro}"><span>Pro</span><span class="pro-track" aria-hidden="true"></span></button><label class="pro-checkbox"><input type="checkbox" aria-label="Pro model" .checked="${e.id===s.pro.id}" @change="${this._togglePro}"><span>Pro</span></label>`:g}</div></div>${e.efforts.length>0?this._effortSlider(e.efforts):u`<div class="field" aria-hidden="true"></div>`} ${this.hasExtra?u`<div class="extra"><slot name="effort-extra"></slot></div>`:g}</div>`}_modelSection({key:e,models:s}){return u`<fieldset><legend><span class="${`icon ${e}`}" aria-hidden="true">${Rt(e)}</span>${ue(s[0].id).name}</legend>${s.map(r=>u`<label class="choice"><input type="radio" name="scan-model" value="${r.id}" .checked="${r.id===this.value||r.pro?.id===this.value}" @change="${()=>{this._selectRow(r),this.renderRoot.querySelector("summary")?.focus()}}"><span>${Z(r.id)}</span></label>`)}</fieldset>`}_effortSlider(e){let s=Math.max(0,e.indexOf(this.effort)),r=Math.max(1,e.length-1);return u`<div class="field"><div class="label"><label for="effort">Effort</label><output for="effort">${J(e[s])}</output></div><div class="slider" style="${`--effort-fill: calc(var(--thumb-size) / 2 + (100% - var(--thumb-size)) * ${s/r})`}"><input id="effort" type="range" min="0" max="${r}" step="1" .value="${String(s)}" ?disabled="${e.length===1}" aria-valuetext="${J(e[s])}" @input="${o=>this._setEffort(e[Number(o.target.value)])}"><div class="steps">${e.map((o,n)=>u`<button type="button" class="${`step ${o===this.effort?"active":""}`}" style="${`--step-position: ${n/r*100}%`}" aria-label="${`Set effort to ${J(o)}`}" aria-pressed="${o===this.effort}" @click="${()=>this._setEffort(o)}">${J(o)}</button>`)}</div></div></div>`}};customElements.get("scan-model-picker")||customElements.define("scan-model-picker",Ft);var Dt=class extends j{constructor(){super(),this.label="Choose workspace",this.placeholder="Choose workspace"}get searchLabel(){return"Search workspaces"}get optionsLabel(){return"Workspaces"}get noMatchesLabel(){return"No matching workspaces"}get emptyLabel(){return"No workspaces available"}get changeEvent(){return"workspace-change"}choices(){let e=this._query.normalize("NFKC").toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),s=this.options.filter(r=>e.every(o=>r.label.normalize("NFKC").toLocaleLowerCase().includes(o))).toSorted((r,o)=>r.label.localeCompare(o.label,void 0,{numeric:!0,sensitivity:"base"}));return{pinned:[],sections:[{label:null,options:s}],facets:[],showFacets:!1,count:s.length,total:this.options.length}}};customElements.get("workspace-selector")||customElements.define("workspace-selector",Dt);var je=u`<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3v10M3 8h10"/></svg>`,Be=u`<svg viewBox="0 0 16 16" aria-hidden="true"><path d="m4 4 8 8M12 4l-8 8"/></svg>`,Fe=$`.row-action{display:grid;place-items:center;flex:0 0 auto;width:1.5rem;height:1.5rem;padding:.25rem;border:0;border-radius:var(--ui-radius, 4px);color:var(--muted);background:transparent}.row-action:hover:not(:disabled){color:var(--text);background:var(--surface-active)}.row-action:disabled{opacity:.4}.row-action svg{width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-width:1.4}`;var pe=t=>({kind:t,sourceIds:[null],ids:new Set}),qt=class extends S{static properties={mode:{type:String},loadSources:{attribute:!1},restore:{attribute:!1},_sources:{state:!0},_loading:{state:!0},_error:{state:!0},_merge:{state:!0},_link:{state:!0}};constructor(){super(),this.mode="link",this._sources=null,this._loading=!1,this._error=null,this._merge=pe("bundle"),this._link=pe("repository")}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("tooltip-root-connected",{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this._controller?.abort()}updated(e){if(e.has("loadSources")){this._load();return}e.has("mode")&&this._selectOnlySource(),e.has("restore")&&this._restore(),["_sources","_merge","_link","mode","restore"].some(s=>e.has(s))&&this._notify()}get _current(){return this.mode==="merge"?this._merge:this._link}get _parents(){if(this.mode==="merge")return this._sources?.merge?.bundles??[];let e=this._sources?.link?.reports??[];return this._current.kind==="workspace"?(this._sources?.link?.workspaces??[]).filter(s=>e.some(r=>s.reports.includes(r.id))):(this._sources?.link?.repositories??[]).filter(s=>e.some(r=>r.repoIds.includes(s.id)))}get _selectedParents(){let e=this._parents;return this._current.sourceIds.map(s=>e.find(r=>r.id===s)).filter(Boolean)}get _parent(){return this._selectedParents[0]}get _scopeOptions(){let e=this._sources?.link?.reports??[];return this._parents.map(s=>{let r=e.filter(o=>this._current.kind==="workspace"?s.reports.includes(o.id):o.repoIds.includes(s.id)).length;return{value:s.id,label:s.label,detail:`${r} ${r===1?"report":"reports"}`}})}get _inputs(){let e=this._selectedParents;return e.length===0?[]:this.mode==="merge"?(this._sources?.merge?.results??[]).filter(s=>s.bundleId===e[0].id):(this._sources?.link?.reports??[]).filter(s=>this._current.kind==="workspace"?e[0].reports.includes(s.id):s.repoIds.some(r=>e.some(o=>o.id===r)))}get selection(){let e=this._selectedParents,s=e[0],r=s?this.mode==="link"&&this._current.kind==="repository"?{kind:"repository",ids:e.map(o=>o.id),label:e.map(o=>o.label).join(", ")}:{kind:this._current.kind,id:s.id,label:s.label??s.filename}:null;return{mode:this.mode,source:r,inputs:this._loading||this._error?[]:this._inputs.filter(o=>this._current.ids.has(o.id))}}_notify(){this.dispatchEvent(new CustomEvent("report-inputs-change",{detail:this.selection,bubbles:!0,composed:!0}))}async _load(){this._controller?.abort();let e=this._controller=new AbortController;this._loading=!0,this._error=null,this._notify();let s=!1,r=o=>{if(e.signal.aborted)return;let n=!s;s=!0,this._sources=o,n&&(this._merge=pe("bundle"),this._link=pe(Array.isArray(o.link?.workspaces)?"workspace":"repository")),this._selectOnlySource(),n&&this._restore(),this._loading=!1,this._notify()};try{r(this.loadSources?await this.loadSources(e.signal,r):{merge:{bundles:[],results:[]},link:{repositories:[],reports:[]}})}catch(o){!e.signal.aborted&&!s&&(this._error=String(o?.message??o))}finally{e.signal.aborted||(this._loading=!1,this._notify())}}_setCurrent(e){this.mode==="merge"?this._merge=e:this._link=e}_selectSource(e,s=0){if(s<0||s>=this._current.sourceIds.length||this._current.sourceIds.includes(e)||!this._parents.some(o=>o.id===e))return;let r=new Set(this.mode==="link"&&this._current.kind==="repository"?this._inputs.map(o=>o.id):[]);this._setCurrent({...this._current,sourceIds:this._current.sourceIds.map((o,n)=>n===s?e:o)}),this._setCurrent({...this._current,ids:new Set(this._inputs.filter(o=>!r.has(o.id)||this._current.ids.has(o.id)).map(o=>o.id))}),this._notify()}get _canAddRepository(){return this.mode==="link"&&this._current.kind==="repository"&&!this._loading&&!this._current.sourceIds.includes(null)&&this._parents.some(e=>!this._current.sourceIds.includes(e.id))}_addRepository(){this._canAddRepository&&(this._link={...this._link,sourceIds:[...this._link.sourceIds,null]},this._focusRepository(this._link.sourceIds.length-1))}_removeRepository(e){this.mode!=="link"||this._link.kind!=="repository"||this._loading||this._link.sourceIds.length<=1||e<0||e>=this._link.sourceIds.length||(this._link={...this._link,sourceIds:this._link.sourceIds.filter((s,r)=>r!==e)},this._link={...this._link,ids:new Set(this._inputs.filter(s=>this._link.ids.has(s.id)).map(s=>s.id))},this._notify(),this._focusRepository(Math.min(e,this._link.sourceIds.length-1)))}async _focusRepository(e){await this.updateComplete,this.renderRoot?.querySelectorAll("repository-selector")[e]?.renderRoot?.querySelector(".trigger")?.focus()}_changeKind(e){["workspace","repository"].includes(e)&&(e==="workspace"&&!Array.isArray(this._sources?.link?.workspaces)||(e!==this._link.kind&&(this._link=pe(e)),this._selectOnlySource(),this._notify()))}_selectOnlySource(){this.mode==="link"&&this._current.sourceIds.length===1&&this._current.sourceIds[0]==null&&this._parents.length===1&&this._selectSource(this._parents[0].id)}_toggle(e,s){if(!this._inputs.some(o=>o.id===e))return;let r=new Set(this._current.ids);s?r.add(e):r.delete(e),this._setCurrent({...this._current,ids:r}),this._notify()}_selectAll(e){this._setCurrent({...this._current,ids:new Set(e?this._inputs.map(s=>s.id):[])}),this._notify()}_restore(){let e=this.restore;if(!this._sources||e?.mode!==this.mode||!e.source)return;let s=this.mode==="merge"?"bundle":e.source.kind;if(this.mode==="link"&&(s==="workspace"?!Array.isArray(this._sources.link?.workspaces):s!=="repository"))return;let r=this.mode==="link"&&s==="repository"?e.source.ids??[e.source.id]:[e.source.id],o=[...new Set(r)].filter(n=>n!=null);this._setCurrent({kind:s,sourceIds:o.length>0?o:[null],ids:new Set}),this._setCurrent({...this._current,ids:new Set(this._inputs.filter(n=>e.inputIds.includes(n.id)).map(n=>n.id))})}render(){let e=this.mode==="merge",s=this._inputs,r=s.filter(i=>this._current.ids.has(i.id)).length,o=Array.isArray(this._sources?.link?.workspaces),n=this._parent?e?"No scan results for this bundle.":`No saved reports in this ${this._current.kind}.`:e?"Choose a bundle to see its scan results.":this._parents.length===0?"No saved reports with app findings.":`Choose a ${this._current.kind} to see its saved reports.`;return u`<section class="panel" aria-label="${e?"Merge scan results":"Link saved reports"}" aria-busy="${this._loading}"><div class="source">${!e&&o?u`<div class="kinds" role="radiogroup" aria-label="Report source">${[["workspace","Workspace"],["repository","Repository"]].map(([i,a])=>u`<button type="button" role="radio" aria-checked="${i===this._link.kind}" @click="${()=>this._changeKind(i)}">${a}</button>`)}</div>`:g}<div class="field">${e?u`<span>Bundle with scan results</span>`:g} ${e?u`<bundle-selector .bundles="${this._parents}" .value="${this._current.sourceIds[0]}" ?disabled="${this._loading||this._parents.length===0}" @bundle-change="${i=>this._selectSource(i.detail.value)}"></bundle-selector>`:this._current.kind==="workspace"?u`<workspace-selector .options="${this._scopeOptions}" .value="${this._current.sourceIds[0]}" ?disabled="${this._loading}" @workspace-change="${i=>this._selectSource(i.detail.value)}"></workspace-selector>`:this._repositoryFields()}</div></div><div class="input-results">${this._error?u`<p class="empty" role="alert">Couldn’t load report inputs: ${this._error} <button type="button" @click="${()=>{this._load()}}">Retry</button></p>`:this._loading&&this._sources==null?u`<p class="empty" role="status">Loading report inputs…</p>`:s.length>0?u`<div class="list-head"><label><input type="checkbox" aria-label="Select all" ?disabled="${this._loading}" .checked="${r===s.length}" .indeterminate="${r>0&&r<s.length}" @change="${i=>this._selectAll(i.target.checked)}"><strong>All</strong></label><span>${r} of ${s.length} selected</span></div><div class="list">${s.map(i=>this._row(i))}</div>`:u`<p class="empty">${e&&this._parents.length===0?"No scan results available.":n}</p>`}</div></section>`}_repositoryFields(){let e=this._current.sourceIds,s=this._scopeOptions;return u`<div class="repository-fields"><div class="repository-rows">${e.map((r,o)=>u`<div class="repository-row"><repository-selector .options="${s.filter(n=>n.value===r||!e.includes(n.value))}" .value="${r}" label="${`Choose repository ${o+1}`}" ?disabled="${this._loading}" @repository-change="${n=>this._selectSource(n.detail.value,o)}"></repository-selector>${e.length>1?u`<button type="button" class="row-action" aria-label="${`Remove repository ${o+1}`}" ?disabled="${this._loading}" @click="${()=>this._removeRepository(o)}">${Be}</button>`:g}</div>`)}</div><button type="button" class="row-action" aria-label="Add repository" ?disabled="${!this._canAddRepository}" @click="${()=>this._addRepository()}">${je}</button></div>`}_row(e){let s=this.mode==="link"?e.appFindings:e.findings,r=[e.model?Z(e.model):null,s==null?null:`${s} ${this.mode==="link"?"app ":""}${s===1?"finding":"findings"}`,e.createdAt,e.repo?`${e.repo}${e.directory?`/${e.directory}`:""}`:null].filter(Boolean),o=e.title??e.filename,n=r.join(" \xB7 ");return u`<label class="option"><input type="checkbox" ?disabled="${this._loading}" .checked="${this._current.ids.has(e.id)}" @change="${i=>this._toggle(e.id,i.target.checked)}">${I(et[e.analyzer]??et.default)}<span class="copy"><strong data-tooltip-truncated data-tooltip="${o}">${o}</strong><span data-tooltip-truncated data-tooltip="${n}">${n}</span></span></label>`}static styles=[$`:host{display:block;min-width:0}*{box-sizing:border-box}button,.field>span,.list-head,.empty:not([role=alert]){cursor:default;user-select:none;-webkit-user-select:none}.panel{border:1px solid var(--border);border-radius:var(--ui-radius, 9px);background:var(--surface);overflow:hidden}.source{display:flex;flex-wrap:wrap;align-items:start;gap:.7rem;padding:.85rem .9rem;border-bottom:1px solid var(--border)}.field{display:grid;flex:1 1 14rem;gap:.3rem;max-width:32rem;min-width:0}.field>span{color:var(--muted);font-size:.72rem}button{padding:.3rem .55rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);color:var(--text);background:var(--bg);font:inherit;font-size:.74rem;cursor:default}.repository-fields{display:flex;align-items:start;gap:.4rem}.repository-fields>.row-action{margin-top:.25rem}.repository-rows{display:grid;flex:1;min-width:0;gap:.65rem}.repository-row{display:flex;align-items:center;gap:.4rem}.repository-row repository-selector{flex:1}.kinds{display:flex;width:fit-content;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);overflow:hidden}.kinds button{padding-block:.5rem;border:0;border-radius:0;color:var(--muted)}.kinds button+button{border-left:1px solid var(--border)}.kinds button[aria-checked=true]{color:var(--text);background:var(--surface-active)}.list-head{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.55rem .9rem;border-bottom:1px solid var(--border)}.list-head label{display:flex;align-items:center;gap:.55rem;user-select:none}.list-head strong{color:var(--text);font-size:.74rem;font-weight:600}.list-head>span{color:var(--muted);font-size:.68rem}.input-results{height:16rem;display:flex;flex-direction:column;overflow:auto}.list{min-height:0;overflow:auto;overscroll-behavior:none}.option{display:flex;align-items:center;gap:.55rem;min-width:0;padding:.35rem .9rem;user-select:none}.option+.option{border-top:1px solid var(--border)}.option:hover{background:var(--surface-active)}input{width:.85rem;height:.85rem;margin:0;flex:0 0 auto;accent-color:var(--accent)}.file-icon{width:1.4rem;height:1.4rem;flex:0 0 auto}.copy{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex:1;min-width:0}.copy strong,.copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy strong{flex:1;color:var(--text);font-size:.74rem;font-weight:500}.copy span{max-width:55%;color:var(--muted);font-size:.66rem}.empty{margin:0;padding:1rem .9rem;color:var(--muted);font-size:.76rem}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}`,Fe]};customElements.get("scan-report-inputs")||customElements.define("scan-report-inputs",qt);var ji=u`<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M6 4h7M6 8h7M6 12h7M3 4h.01M3 8h.01M3 12h.01"/></svg>`,Bi=u`<svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="7" cy="7" r="4.5"/><path d="m10.5 10.5 3 3M7 5v4M5 7h4"/></svg>`,Ht=class extends S{static properties={isolate:{type:Boolean},vertical:{type:Boolean,reflect:!0}};constructor(){super(),this.isolate=!1,this.vertical=!1}_select(e){this.isolate!==e&&(this.isolate=e,this.dispatchEvent(new CustomEvent("depth-change",{detail:{isolate:e},bubbles:!0,composed:!0})))}render(){return u`<div class="scan-depth"><div class="depth-options" role="radiogroup" aria-label="Scan depth" aria-orientation="${this.vertical?"vertical":"horizontal"}" aria-describedby="${this.vertical?g:"scan-depth-description"}">${[[!1,"List",ji],[!0,"Isolate",Bi]].map(([e,s,r])=>u`<label class="depth-choice"><input type="radio" name="scan-depth" value="${e?"isolate":"list"}" .checked="${this.isolate===e}" @change="${()=>this._select(e)}"><span>${r}${s}</span></label>`)}</div>${this.vertical?g:u`<div class="depth-description" id="scan-depth-description" aria-live="polite"><span class="${this.isolate?"inactive":""}" aria-hidden="${this.isolate}">Regular scan depth</span><span class="${this.isolate?"":"inactive"}" aria-hidden="${!this.isolate}">Deeper search at ~10x the tokens spent</span></div>`}</div>`}static styles=$`:host{display:block;width:19rem;max-width:100%;min-width:0}*{box-sizing:border-box}.scan-depth{display:grid;gap:.4rem;width:100%;min-width:0;user-select:none}.depth-options{display:flex;position:relative;padding:.2rem;border:1px solid var(--border);border-radius:var(--ui-radius, 8px);background:var(--bg)}.depth-options:before{content:"";position:absolute;inset:.2rem auto .2rem .2rem;width:calc((100% - .4rem)/2);border-radius:var(--ui-radius, 5px);background:var(--surface-active);box-shadow:0 1px 3px #0000001f,inset 0 0 0 1px rgb(from var(--accent) r g b / .18);transition:transform .16s ease-out}.depth-options:has(input[value=isolate]:checked):before{transform:translate(100%)}.depth-choice{position:relative;flex:1;min-width:0}.depth-choice input{position:absolute;width:1px;height:1px;opacity:0}.depth-choice span{display:flex;align-items:center;justify-content:center;gap:.4rem;height:1.9rem;padding:.3rem .65rem;border-radius:var(--ui-radius, 5px);color:var(--muted);font-size:.76rem;font-weight:500;transition:color .12s}.depth-choice svg{width:.95rem;height:.95rem;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.depth-choice:hover span{color:var(--text)}.depth-choice input:checked+span{color:var(--accent)}.depth-choice input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}.depth-description{display:grid;color:var(--muted);font-size:.68rem;line-height:1.4}.depth-description span{grid-area:1 / 1}.depth-description .inactive{visibility:hidden}@media(prefers-reduced-motion:reduce){.depth-options:before,.depth-choice span{transition:none}}:host([vertical]){width:5.8rem}:host([vertical]) .depth-options{flex-direction:column}:host([vertical]) .depth-options:before{inset:.2rem .2rem auto;width:auto;height:calc((100% - .4rem)/2)}:host([vertical]) .depth-options:has(input[value=isolate]:checked):before{transform:translateY(100%)}:host([vertical]) .depth-choice span{justify-content:flex-start;height:1.7rem;padding:.25rem .5rem;font-size:.72rem}`};customElements.get("scan-depth-toggle")||customElements.define("scan-depth-toggle",Ht);var Ut=["security","generic","correctness"],Fi=t=>JSON.stringify([t.mode,t.model,t.effort,t.isolate]);function Jr(t){let e=t[0];return e?.model&&t.every(s=>s.model===e.model&&s.effort===e.effort)?{model:e.model,effort:e.effort}:null}function Yr(t,e){let s=e.models.find(r=>r.id===t?.model)??e.models.find(r=>r.id===e.defaultModel)??e.models[0];return s?{model:s.id,effort:s.efforts.includes(t?.effort)?t.effort:ee(s)}:null}function Gt(t,e){let s=e.models.find(r=>r.id===e.defaultModel)??e.models[0];return s?(t.length>0?t:[{mode:"generic",isolate:!1}]).map(r=>{let o=e.models.find(n=>n.id===r.model)??s;return{...r,mode:Ut.includes(r.mode)?r.mode:"generic",model:o.id,effort:o.efforts.includes(r.effort)?r.effort:ee(o),isolate:!!r.isolate}}):[]}function Vt(t){let e=new Set;return t.map(s=>{let r=Fi(s),o=e.has(r);return e.add(r),o})}var Wt=class extends S{static properties={value:{attribute:!1},loadModels:{attribute:!1},appModel:{attribute:!1},appModelAutomatic:{attribute:!1},_rows:{state:!0},_loading:{state:!0},_error:{state:!0},_resolvedAppModel:{state:!0},_appModelOpen:{state:!0}};constructor(){super(),this.value=[],this.appModel=null,this.appModelAutomatic=!0,this._resolvedAppModel=null,this._appModelOpen=!1,this._appModelsAgree=!0,this._rows=[],this._catalogue={models:[]},this._nextId=0,this._loading=!0,this._error=null}disconnectedCallback(){super.disconnectedCallback(),this._controller?.abort()}updated(e){if(e.has("loadModels")){this._load();return}e.has("value")&&this.value!==this._lastEmitted&&!this._loading?(this._setRows(this.value),this._notify()):(e.has("appModel")||e.has("appModelAutomatic"))&&!this._loading&&this._notify()}_setRows(e){this._rows=Gt(e,this._catalogue).map(s=>({...s,id:s.id??++this._nextId}))}_notify(){let e=this._loading&&this._rows.length===0?this.value:this._rows.map(({id:r,...o})=>o);this._loading||this._syncAppModel();let s=!this._loading&&!this._error&&this._resolvedAppModel!=null&&e.length>0&&!Vt(e).includes(!0);this._lastEmitted=e,this.dispatchEvent(new CustomEvent("regimes-change",{detail:{value:e,ready:s,appModel:this._resolvedAppModel??this.appModel,appModelAutomatic:this.appModelAutomatic},bubbles:!0,composed:!0}))}_syncAppModel(){let e=Jr(this._rows),s=Yr((this.appModelAutomatic?e:null)??this.appModel??this._rows[0],this._catalogue);(this.appModel?.model!==s?.model||this.appModel?.effort!==s?.effort)&&(this.appModel=s),this._resolvedAppModel=this.appModel;let r=!!e&&e.model===s?.model&&e.effort===s?.effort;r!==this._appModelsAgree&&(this._appModelOpen=!r),this._appModelsAgree=r}_changeAppModel(e){e.model===this._resolvedAppModel?.model&&e.effort===this._resolvedAppModel?.effort||(this.appModelAutomatic=!1,this.appModel={model:e.model,effort:e.effort},this._notify())}async _load(){this._controller?.abort();let e=this._controller=new AbortController;this._loading=!0,this._error=null,this._notify();let s=!1,r=o=>{e.signal.aborted||(s=!0,this._catalogue=o,this._sharedModels=()=>Promise.resolve(o),this._setRows(this._rows.length>0?this._rows:this.value),this._loading=!1,this._notify())};try{r(await this.loadModels(e.signal,r))}catch(o){!e.signal.aborted&&!s&&(this._error=String(o?.message??o))}finally{e.signal.aborted||(this._loading=!1,this._notify())}}_change(e,s){let r=this._rows.find(n=>n.id===e);if(!r)return;let o=Gt([{...r,...s}],this._catalogue)[0];o&&(this._rows=this._rows.map(n=>n.id===e?o:n),this._notify())}_add(){let e=this._rows.at(-1);e&&(this._rows=[...this._rows,{...e,id:++this._nextId}],this._notify())}_remove(e){this._rows.length<=1||(this._rows=this._rows.filter(s=>s.id!==e),this._notify())}render(){let e=this._loading&&this._rows.length===0,s=e?(this.value.length>0?this.value:[{mode:"generic",isolate:!1}]).map((o,n)=>({...o,id:`pending-${n}`})):this._rows,r=Vt(this._rows);return u`<section aria-label="Scan regimes" aria-busy="${this._loading}"><div class="heading"><h2>Scan regimes</h2><span>${s.length} ${s.length===1?"regime":"regimes"}</span></div>${this._error?u`<p class="message" role="alert">Couldn’t load models: ${this._error} <button type="button" @click="${()=>{this._load()}}">Retry</button></p>`:g} ${$e(s,o=>o.id,(o,n)=>this._row(o,n,r[n],e))}<div class="footer"><button type="button" class="add" ?disabled="${this._loading||this._rows.length===0}" @click="${this._add}"><span aria-hidden="true">+</span> Add regime</button><span class="message" role="status">${r.includes(!0)?"Change or remove duplicate regimes to run the scan":"Results from these regimes will be merged"}</span></div>${e?u`<div class="app-model"><div class="app-model-placeholder">App model: Loading…</div></div>`:this._appModelRow()}</section>`}_appModelRow(){let e=this._resolvedAppModel;return e?u`<details class="app-model" .open="${C(this._appModelOpen)}" @toggle="${s=>{this._appModelOpen=s.currentTarget.open}}"><summary><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m6 3 5 5-5 5"/></svg><span class="app-model-name">App model: <strong>${Z(e.model)}</strong></span><span class="app-model-effort">Effort: <strong>${J(e.effort)}</strong></span></summary><div class="app-model-controls"><scan-model-picker .loadModels="${this._sharedModels}" .value="${C(e.model)}" .effort="${C(e.effort)}" @model-change="${s=>{s.stopPropagation(),this._changeAppModel(s.detail)}}"></scan-model-picker></div></details>`:g}_row(e,s,r,o=!1){return u`<div class="${`row${r?" duplicate":""}`}" ?inert="${o}" role="group" aria-label="${`Regime ${s+1}`}" aria-describedby="${r?`duplicate-${e.id}`:g}"><div class="mode" role="radiogroup" aria-label="Scan mode">${Ut.map(n=>u`<label class="mode-choice"><input type="radio" name="${`regime-mode-${e.id}`}" .checked="${e.mode===n}" @change="${()=>this._change(e.id,{mode:n})}"><span>${n[0].toUpperCase()+n.slice(1)}</span></label>`)}</div><scan-model-picker .pending="${o}" .loadModels="${this._sharedModels}" .value="${C(e.model)}" .effort="${C(e.effort)}" @model-change="${n=>{n.stopPropagation(),this._change(e.id,n.detail)}}"></scan-model-picker><div class="row-actions"><scan-depth-toggle vertical .isolate="${e.isolate}" @depth-change="${n=>{n.stopPropagation(),this._change(e.id,{isolate:n.detail.isolate})}}"></scan-depth-toggle>${r?u`<span class="duplicate-label" id="${`duplicate-${e.id}`}">Duplicate regime</span>`:g}</div><button type="button" class="remove" aria-label="${`Remove regime ${s+1}`}" ?disabled="${this._rows.length===1}" @click="${()=>this._remove(e.id)}"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.4" aria-hidden="true"><path d="m4 4 8 8M12 4l-8 8"/></svg></button></div>`}static styles=$`:host{display:block;min-width:0;container:regime-editor / inline-size}*{box-sizing:border-box}.heading{display:flex;align-items:baseline;gap:.65rem;margin-bottom:.75rem}h2{margin:0;color:var(--text);font-size:.85rem;font-weight:600}.heading>span{color:var(--muted);font-size:.7rem}.row{position:relative;display:grid;grid-template-columns:7.75rem minmax(0,1fr) 5.8rem;align-items:start;gap:1rem;padding:.85rem 0;border-top:1px solid var(--border)}.mode{display:grid;min-width:0;border:1px solid var(--border);border-radius:var(--ui-radius, 6px);overflow:hidden;background:var(--bg)}.mode-choice{position:relative;user-select:none}.mode-choice+.mode-choice{border-top:1px solid var(--border)}.mode-choice input{position:absolute;width:1px;height:1px;opacity:0}.mode-choice span{display:block;padding:.2rem .6rem;color:var(--muted);font-size:.72rem;line-height:1.15rem}.mode-choice:hover span{background:var(--surface-active)}.mode-choice input:checked+span{color:var(--accent);background:rgb(from var(--accent) r g b / .1);box-shadow:inset 2px 0 var(--accent);font-weight:600}.mode-choice input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}button{border:1px solid var(--border);border-radius:var(--ui-radius, 5px);color:var(--text);background:var(--bg);font:inherit;font-size:.74rem;cursor:default}button{padding:.4rem .55rem;user-select:none}button:hover:not(:disabled){background:var(--surface-active)}button:disabled{opacity:.35}.row-actions{position:relative;display:flex;align-items:center;align-self:stretch;min-height:4.65rem;padding:.8rem 0 .25rem}.remove{position:absolute;top:.15rem;right:0;display:grid;place-items:center;width:1.5rem;height:1.5rem;padding:.25rem;border:0;background:transparent;color:var(--muted)}.duplicate-label{position:absolute;right:.15rem;bottom:-.05rem;transform:rotate(-7deg);padding:.1rem .3rem;border:1px solid rgb(from var(--critical, #e5534b) r g b / .45);border-radius:3px;color:var(--critical, #e5534b);background:var(--surface);font-size:.6rem;line-height:1rem;white-space:nowrap;pointer-events:none;user-select:none}svg{width:1rem;height:1rem}.footer{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;padding-top:.6rem;border-top:1px solid var(--border)}.add{display:flex;align-items:center;gap:.3rem}.app-model{margin-top:.7rem;border-top:1px solid var(--border)}.app-model-placeholder{padding:.65rem 0 .1rem;color:var(--muted);font-size:.74rem}.app-model>summary{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .8rem;padding:.65rem 0 .1rem;color:var(--muted);font-size:.74rem;list-style:none;cursor:default;user-select:none}.app-model>summary::-webkit-details-marker{display:none}.app-model>summary:hover{color:var(--text)}.app-model>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--ui-radius, 3px)}.app-model>summary svg{width:.8rem;height:.8rem;flex:0 0 .8rem}.app-model[open]>summary svg{transform:rotate(90deg)}.app-model strong{color:var(--text);font-weight:500}.app-model-name{min-width:0;overflow-wrap:anywhere}.app-model-effort{white-space:nowrap}.app-model-controls{padding:.85rem 0 .15rem}.message{margin:0;color:var(--muted);font-size:.7rem}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@container regime-editor (max-width: 54rem){.row{grid-template-columns:minmax(0,1fr) 5.8rem}scan-model-picker{grid-row:2;grid-column:1 / -1}.mode{grid-column:1;max-width:9rem}.row-actions{grid-column:2}}`};customElements.get("scan-regime-editor")||customElements.define("scan-regime-editor",Wt);var Xr=`:host{display:block;min-width:0;color:var(--text);container:mode-selector / inline-size}*{box-sizing:border-box}section{overflow:hidden;border:1px solid var(--border);border-radius:var(--ui-radius, 9px);background:var(--surface)}header{display:flex;align-items:baseline;gap:.8rem;padding:.85rem 1rem .7rem}h2{margin:0;font-size:.86rem;font-weight:600}header>span{color:var(--muted);font-size:.73rem}fieldset{min-width:0;margin:0;padding:0;border:0}.modes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;padding:0 1rem .9rem}.mode{position:relative;display:flex;align-items:flex-start;gap:.55rem;padding:.7rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 7px);background:var(--bg);cursor:default;text-align:left}.mode:hover{background:var(--surface-active)}.mode:has(:checked){border-color:rgb(from var(--accent) r g b / .6);background:rgb(from var(--accent) r g b / .07)}input{position:absolute;width:1px;height:1px;opacity:0;margin:0}.mode:has(:focus-visible),.subtype-option:has(:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.mode-icon{display:flex;flex-shrink:0;color:var(--muted);padding-top:.1rem}.mode-icon svg{width:1rem;height:1rem}.mode-copy{display:grid;min-width:0;gap:.35rem;padding-right:.55rem}.mode-copy strong{font-size:.78rem;font-weight:500;line-height:1.3}.mode-copy>span{color:var(--muted);font-size:.69rem;line-height:1.4}.mode:has(:checked) .mode-copy strong,.mode:has(:checked) .mode-icon{color:var(--accent)}.indicator{position:absolute;right:.55rem;top:.75rem;width:.55rem;height:.55rem;border:1px solid var(--muted);border-radius:50%;opacity:.5}.mode:has(:checked) .indicator{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 2px var(--bg);opacity:1}.subtype-wrap{border-top:1px solid var(--border);background:rgb(from var(--accent) r g b / .025)}.subtype-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;padding:.7rem .9rem .45rem}.report-subtypes{grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:.7rem}.subtype-option{position:relative;display:grid;gap:.12rem;padding:.42rem .55rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);color:var(--muted);background:var(--bg);text-align:left}.subtype-option strong{color:var(--text);font-size:.72rem;font-weight:500}.subtype-option span{font-size:.62rem}.subtype-option:has(:checked){border-color:rgb(from var(--accent) r g b / .55);background:rgb(from var(--accent) r g b / .1)}.subtype-option:has(:checked) strong{color:var(--accent)}.subtype-help{margin:0;padding:.15rem .9rem .72rem;color:var(--muted);font-size:.68rem;line-height:1.4}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@container mode-selector (max-width: 48rem){.modes,.subtype-options{grid-template-columns:repeat(2,minmax(0,1fr))}}@container mode-selector (max-width: 30rem){.mode-icon{display:none}header>span{display:none}}
|
|
7
|
+
`;var qi=[{id:"code",label:"Code",detail:"Run a full scan of the codebase",icon:we},{id:"dependencies",label:"Dependency alerts",detail:"Validate incoming alerts against actual code",icon:cs},{id:"agentic",label:"Agentic",detail:"Free-form analysis with your instructions",icon:ds},{id:"report",label:"Reports",detail:"Link saved reports or merge scan results",icon:ve}],Hi=[{id:"generic",label:"Generic",detail:"Free-form code scan: wide-scoped, most results"},{id:"security",label:"Security",detail:"Security findings only"},{id:"correctness",label:"Correctness",detail:"Guided correctness scan"},{id:"advanced",label:"Advanced",detail:"Merge multiple regimes"}],Ui=[{id:"link",label:"Link",detail:"Link findings across saved reports"},{id:"merge",label:"Merge",detail:"Combine scan results for one bundle"}],Kt=class extends S{static properties={mode:{},analyzer:{},reportMode:{}};static styles=os(Xr);constructor(){super(),this.mode="code",this.analyzer="generic",this.reportMode="link"}_choose(e,s){this.dispatchEvent(new CustomEvent(e,{detail:s,bubbles:!0,composed:!0}))}render(){let e=this.mode==="code",s=this.mode==="report",r=e?Hi:Ui,o=e?this.analyzer:this.reportMode;return u`<section aria-labelledby="mode-heading"><header><h2 id="mode-heading">Scan mode</h2><span>Choose what the server should analyze</span></header><fieldset class="modes"><legend class="sr-only">Scan mode</legend>${qi.map(n=>u`<label class="mode"><input type="radio" name="scan-mode" .checked="${this.mode===n.id}" aria-label="${n.label}" @change="${()=>this._choose("scan-mode-change",{mode:n.id})}"> <span class="mode-icon" aria-hidden="true">${I(n.icon)}</span> <span class="mode-copy"><strong>${n.label}</strong><span>${n.detail}</span></span> <span class="indicator" aria-hidden="true"></span></label>`)}</fieldset>${e||s?u`<div class="subtype-wrap"><fieldset class="${`subtype-options ${s?"report-subtypes":""}`}"><legend class="sr-only">${e?"Code subtype":"Reports submode"}</legend>${r.map(n=>u`<label class="subtype-option"><input type="radio" name="scan-focus" .checked="${o===n.id}" aria-label="${n.label}" @change="${()=>e?this._choose("scan-analyzer-change",{analyzer:n.id}):this._choose("scan-report-mode-change",{mode:n.id})}"> <strong>${n.label}</strong><span>${n.detail}</span></label>`)}</fieldset>${e?u`<p class="subtype-help">Focusing controls how effort is spent: while Generic can also find security issues, a focused Security scan is likely to find more.</p>`:g}</div>`:g}</section>`}};customElements.get("scan-mode-selector")||customElements.define("scan-mode-selector",Kt);var Qr=$`:host{display:block;box-sizing:border-box;color:var(--text)}*{box-sizing:border-box}.wrap{max-width:76rem;margin:0 auto;container:scan-page / inline-size}.head{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;min-height:2.1rem;margin-bottom:.45rem}.head-title{display:flex;align-items:center;gap:.65rem}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}h1{margin:0;font-size:1.65rem;font-weight:600;letter-spacing:-.035em}.head-tabs{display:inline-flex;flex-shrink:0;margin-left:auto;margin-block:calc(-.25rem - 1px);border:1px solid var(--border);border-radius:var(--ui-radius, 6px);overflow:hidden}.head-tabs button{border:0;border-right:1px solid var(--border);padding:.25rem .6rem;color:var(--muted);background:transparent;font:inherit;font-size:.75rem;line-height:1.5}.head-tabs button:last-child{border-right:0}.head-tabs button.active{color:var(--text);background:var(--surface-active)}.head-tabs button:hover{color:var(--text)}.source-choice.single-repository{grid-template-columns:1fr}.head-actions{margin-left:auto;display:flex;gap:.45rem}button,select,input{font:inherit}button,summary,select,h1,.intro,.panel-head,.pane-head,.field>span,.field label,.bundle-label,.bundle-stats,.check,.switch,.offline-help,.empty,.choice-empty{cursor:default;user-select:none;-webkit-user-select:none}input:not([type=checkbox],[type=radio]),textarea{cursor:text;user-select:text;-webkit-user-select:text}a{cursor:default;text-decoration:none}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.intro-row{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem 1rem;margin-bottom:1.15rem}.intro{margin:0;max-width:52rem;color:var(--muted);font-size:.82rem;line-height:1.5}:host([hide-heading]) .intro-row{gap:.5rem 1rem;margin-bottom:1.25rem}:host([hide-heading]) .intro{max-width:46rem;font-size:.875rem;line-height:1.65}.intro span{display:block}.notice{margin:0 0 1rem;padding:.55rem .7rem;border:1px solid rgb(from var(--accent) r g b / .35);border-radius:var(--ui-radius, 7px);color:var(--text);background:rgb(from var(--accent) r g b / .08);font-size:.78rem}.setup{display:grid;gap:.85rem}.panel{border:1px solid var(--border);border-radius:var(--ui-radius, 9px);background:var(--surface);overflow:hidden}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:.7rem;padding:.72rem .9rem;border-bottom:1px solid var(--border)}.panel-head h2{margin:0;font-size:.86rem;font-weight:600}.panel-head p{margin:0;color:var(--muted);font-size:.72rem}.bundle-choice{display:grid;grid-template-columns:minmax(16rem,1.2fr) minmax(0,1fr);gap:1rem;align-items:end;padding:.85rem .9rem}.field{display:grid;gap:.3rem;min-width:0}.source-choice>.field>span,.bundle-label{height:1.25rem}.bundle-label{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:0}.create-bundle-button{display:inline-flex;align-items:center;flex:none;height:1.25rem;padding:0 calc(.4rem + 1px);border:0;border-radius:var(--ui-radius, 4px);color:var(--muted);background:transparent;font-size:.65rem;white-space:nowrap}.create-bundle-button:hover{color:var(--text);background:var(--surface-active)}.create-bundle-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field label,.scope-field>span{color:var(--muted);font-size:.68rem}select{min-width:0;height:2rem;padding:.28rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);color:var(--text);background:var(--bg);font-size:.76rem}.bundle-stats{display:grid;grid-template-columns:repeat(4,max-content);align-items:center;gap:.45rem 1.1rem;min-width:0}.metric{display:inline-flex;align-items:center;gap:.3rem;min-width:0;white-space:nowrap}.metric svg{flex:0 0 auto;width:.85rem;height:.85rem;margin-right:.1rem;color:var(--muted)}.metric strong{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:.72rem;font-weight:600;font-variant-numeric:tabular-nums}.metric span{color:var(--muted);font-size:.7rem}.source-choice{display:grid;grid-template-columns:minmax(12rem,.8fr) minmax(16rem,1.2fr);gap:.7rem;align-items:end;padding:.85rem .9rem}.source-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.7rem 1rem;grid-column:1 / -1;min-width:0}.scope-slot{justify-self:end;width:min(34rem,100%);min-height:2rem}.source-footer .bundle-stats{min-height:2rem}.choice-empty{display:flex;align-items:center;height:2rem;padding:.28rem .5rem;border:1px dashed var(--border);border-radius:var(--ui-radius, 5px);color:var(--muted);background:var(--bg);font-size:.72rem}.choice-empty a{margin-left:.4rem;color:var(--accent);white-space:nowrap}.choice-empty a:hover{color:var(--text)}.choice-empty a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--ui-radius, 2px)}.scope-head{display:flex;align-items:center;gap:.55rem;padding:.72rem .9rem;list-style:none;cursor:default;user-select:none}.scope-head::-webkit-details-marker{display:none}.scope-head:hover{background:var(--surface-active)}.scope-head:focus-visible{outline:2px solid var(--accent);outline-offset:-3px;border-radius:var(--ui-radius, 8px)}.scope-chevron{width:.85rem;height:.85rem;flex:0 0 auto;transition:transform .15s}.scope-panel[open] .scope-chevron{transform:rotate(90deg)}.scope-panel[open] .scope-head{border-bottom:1px solid var(--border)}.scope-head h2{margin:0;font-size:.86rem;font-weight:600}.scope-head p{display:flex;flex-wrap:wrap;justify-content:end;gap:.15rem .65rem;margin:0 0 0 auto;color:var(--muted);font-size:.7rem;font-variant-numeric:tabular-nums;text-align:right}.scope-head p span{white-space:nowrap}.scope-head p span+span{padding-left:.65rem;border-left:1px solid var(--border)}.scope-grid{display:grid;grid-template-columns:minmax(13rem,.75fr) minmax(0,1.25fr);min-height:0}.scope-pane{min-width:0}.scope-pane+.scope-pane{border-left:1px solid var(--border)}.pane-head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;padding:.55rem .75rem;border-bottom:1px solid var(--border)}.pane-head strong{font-size:.72rem;font-weight:600}.pane-head span{color:var(--muted);font-size:.65rem;font-variant-numeric:tabular-nums}.package-list{max-height:22rem;overflow:auto;overscroll-behavior:none}.package-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.45rem;width:100%;padding:.42rem .7rem;border:0;border-bottom:1px solid var(--border);color:var(--text);background:transparent;text-align:left}.package-row:hover{background:var(--surface-active)}.package-row input,.file input{width:.85rem;height:.85rem;accent-color:var(--accent)}.package-name,.package-size{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.package-name{font-size:.7rem}.package-size{color:var(--muted);font-size:.64rem;font-variant-numeric:tabular-nums}.package-row.excluded .package-name{color:var(--muted);text-decoration:line-through}.file-panel{min-width:0}.file-list{display:grid;grid-template-columns:minmax(0,1fr);max-height:22rem;overflow:auto;overscroll-behavior:none}.file{display:flex;align-items:center;gap:.45rem;min-width:0;padding:.35rem .75rem;border-bottom:1px solid var(--border)}.file input{flex:0 0 auto}.file-copy{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.file-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem}.file-meta{flex:0 1 auto;min-width:0;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.66rem;font-variant-numeric:tabular-nums}.excluded .file-path{color:var(--muted);text-decoration:line-through}.file-foot{display:flex;justify-content:space-between;gap:.6rem;padding:.6rem .8rem;color:var(--muted);font-size:.7rem}.options{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:1rem;position:relative;z-index:2;overflow:visible;padding:.85rem .9rem 1rem}.options-grid{display:grid;grid-column:1 / -1;gap:.7rem;min-width:0}.checks{position:relative;display:grid;grid-column:2;grid-row:3;align-content:center;justify-items:end;margin-top:1rem}.offline-help{position:absolute;top:calc(50% + .75rem);right:0;color:var(--muted);font-size:.66rem;line-height:1.4;white-space:nowrap}.check{display:inline-flex;align-items:center;gap:.4rem;color:var(--text);font-size:.75rem}.check input{width:.85rem;height:.85rem;accent-color:var(--accent)}.switch{display:inline-flex;align-items:center;gap:.45rem;color:var(--text);font-size:.74rem;cursor:default}.switch input{position:var(--switch-input-position, absolute);width:var(--switch-input-size, 1px);height:var(--switch-input-size, 1px);opacity:var(--switch-input-opacity, 0);margin:0;accent-color:var(--accent)}.switch-track{display:var(--switch-track-display, block);position:relative;width:2rem;height:1.1rem;border-radius:var(--ui-radius, 999px);background:var(--surface-active);transition:background .12s}.switch-track:after{content:"";position:absolute;top:.15rem;left:.15rem;width:.8rem;height:.8rem;border-radius:50%;background:var(--muted);transition:transform .12s,background .12s}.switch input:checked+.switch-track{background:rgb(from var(--accent) r g b / .4)}.switch input:checked+.switch-track:after{transform:translate(.9rem);background:var(--accent)}.checks .switch input:checked+.switch-track{background:rgb(from var(--critical, #e5534b) r g b / .3)}.checks .switch input:checked+.switch-track:after{background:var(--critical, #e5534b)}.switch input:focus-visible+.switch-track{outline:2px solid var(--accent);outline-offset:2px}.options-footer{display:flex;flex-wrap:wrap;grid-column:1;grid-row:3;align-items:end;gap:.7rem;min-width:0;margin-top:1rem}.options-footer slot[name=before-run]{display:contents}.agentic-fields{display:grid;gap:.65rem;padding:.85rem .9rem 1rem}.agentic-panel .panel-head{align-items:center}.prompt-row{display:flex;align-items:start;gap:.4rem;min-width:0}.prompt-row textarea{flex:1;width:0}textarea{min-width:0;resize:vertical;padding:.4rem .5rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);color:var(--text);background:var(--bg);font:inherit;font-size:.76rem}.run{padding:.48rem .8rem;border:0;border-radius:var(--ui-radius, 6px);color:var(--bg);background:var(--accent);font-size:.8rem;font-weight:600}.run:disabled{opacity:.45}.summary{align-self:end;padding-block:.48rem;color:var(--muted);font-size:.74rem}.history{display:grid;gap:.6rem}.scan-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:1rem;padding:.85rem .9rem}.scan-row+.scan-row{border-top:1px solid var(--border)}.scan-main{min-width:0}.scan-title{display:flex;align-items:center;gap:.45rem;min-width:0}.scan-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem}.scan-meta{display:block;margin-top:.25rem;color:var(--muted);font-size:.7rem}.status{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .4rem;border-radius:999px;font-size:.66rem;font-weight:600;text-transform:capitalize}.status:before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:currentColor}.status.running{color:var(--accent);background:rgb(from var(--accent) r g b / .1)}.status.completed{color:#48b878;background:#48b8781a}.status.stopped{color:var(--muted);background:var(--surface-active)}.scan-actions{display:flex;align-items:center;gap:.45rem}.action{padding:.35rem .55rem;border:1px solid var(--border);border-radius:var(--ui-radius, 5px);color:var(--text);background:var(--bg);font-size:.72rem;white-space:nowrap}.action:hover{border-color:var(--muted);background:var(--surface-active)}.empty{margin:0;padding:1.2rem;color:var(--muted);font-size:.8rem}@container scan-page (max-width: 48rem){.bundle-choice,.source-choice,.source-footer{grid-template-columns:1fr;gap:.7rem}.scope-grid{grid-template-columns:1fr}.scope-pane+.scope-pane{border-top:1px solid var(--border);border-left:0}}@container scan-page (max-width: 42rem){.options{display:block;padding-bottom:3rem}.checks{margin-top:.8rem}.offline-help{max-width:100%;white-space:normal}.options-footer{margin-top:.8rem}}@container scan-page (max-width: 34rem){.bundle-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem .65rem}.scope-head{flex-wrap:wrap}.scope-head p{flex-basis:100%;justify-content:start;margin-left:1.4rem;text-align:left}.scope-head p span{white-space:normal}.scope-head p span+span{padding-left:0;border-left:0}.scan-row{grid-template-columns:1fr;gap:.55rem}.scan-actions{justify-content:flex-start}.head-tabs{margin-left:0}}`;var eo={code:I(we),report:I(ve)},Zt=class extends S{static properties={hideHeading:{type:Boolean,attribute:"hide-heading"},sourceLoading:{type:Boolean,attribute:!1},selection:{attribute:!1},scopeLabel:{type:String,attribute:"scope-label"},createBundleHref:{attribute:!1},source:{attribute:!1},loadBundle:{attribute:!1},loadModels:{attribute:!1},loadReportSources:{attribute:!1},canRun:{attribute:!1},_loadingBundle:{state:!0},_bundleError:{state:!0},_tab:{state:!0},_mode:{state:!0},_bundles:{state:!0},_repositories:{state:!0},_reportMode:{state:!0},_reportInput:{state:!0},_reportRestore:{state:!0},_scans:{state:!0},_selectedRepoId:{state:!0},_selectedBundleId:{state:!0},_reason:{state:!0},_excluded:{state:!0},_excludedModules:{state:!0},_prompts:{state:!0},_options:{state:!0},_regimes:{state:!0},_regimesReady:{state:!0},_appModel:{state:!0},_appModelAutomatic:{state:!0},_notice:{state:!0}};static styles=[Qr,Fe];constructor(){super(),this.loadModels=Te,this.canRun=!0,this.hideHeading=!1,this._tab="new",this._mode="code",this.source=null,this.selection=null,this.scopeLabel="Repository",this._pendingSelection=null,this.sourceLoading=!1,this.loadBundle=null,this._loadingBundle=!1,this._bundleError=null,this._bundles=[],this._repositories=[],this._reportMode="link",this._reportInput=null,this._reportRestore=null,this._scans=[],this._selectedRepoId=null,this._selectedBundleId=this._bundles[0]?.id??null,this._reason=this._bundles[0]?.reasons[0]?.id??"",this._excluded=new Set,this._excludedModules=new Set,this._nextPromptId=1,this._prompts=[{id:1,text:""}],this._options={analyzer:"generic",model:null,effort:null,cached:!1,isolate:!1},this._regimes=[],this._appModel=null,this._appModelAutomatic=!0,this._regimesReady=!1,this._notice=null,this._timers=new Set}willUpdate(e){if(e.has("selection")&&(this._pendingSelection=this.selection),e.has("source")&&(this._bundles=this.source?.bundles??[],this._repositories=this.source?.repositories??[],this._scans=this.source?.scans??[]),e.has("source")||e.has("selection")){this._excluded=new Set,this._excludedModules=new Set;let s=this._repositories.find(n=>n.id===this._selectedRepoId),r=this._pendingSelection,o=r?this._bundles.find(n=>n.id===r.bundleId&&(r.repoId==null||n.repoId===r.repoId)):this._bundles.find(n=>n.id===this._selectedBundleId&&n.repoId===this._selectedRepoId)??(this.scopeLabel==="Workspace"?null:this._bundles.find(n=>n.id===this._selectedBundleId))??(s?this._bundles.find(n=>n.repoId===s.id):this._bundles[0]);this._selectedRepoId=o?.repoId??r?.repoId??s?.id??this._repositories[0]?.id??"unattached",this._selectedBundleId=o?.id??null,this._reason=o?.reasons?.[0]?.id??"",r&&(this._tab="new",this._mode=["report","dependencies"].includes(r.mode)?r.mode:"code",r.mode==="report"&&(this._reportMode="link",this._reportRestore=null,this._reportInput=null,this._pendingSelection=null),this._notice=r.mode==="report"||o||this.source==null?null:"The selected bundle is no longer available in this source. Choose another bundle.",o&&(this._pendingSelection=null))}}updated(e){(e.has("source")||e.has("selection")||e.has("loadBundle"))&&this._loadSelectedBundle()}async _loadSelectedBundle(){this._bundleController?.abort(),this._loadingBundle=!1,this._bundleError=null;let e=this._bundle;if(!this.loadBundle||!e||Array.isArray(e.files))return;let s=this._bundleController=new AbortController;this._loadingBundle=!0;try{let r=await this.loadBundle(e,s.signal);if(s.signal.aborted)return;this._bundles=this._bundles.map(o=>o.id===e.id?{...r,repoId:o.repoId,repo:o.repo}:o),this._reason=r.reasons?.[0]?.id??""}catch(r){s.signal.aborted||(this._bundleError=String(r?.message??r))}finally{s.signal.aborted||(this._loadingBundle=!1)}}disconnectedCallback(){super.disconnectedCallback(),this._bundleController?.abort();for(let e of this._timers)clearTimeout(e);this._timers.clear()}get _repoBundles(){return this._bundles.filter(e=>e.repoId===this._selectedRepoId)}get _bundle(){return this._repoBundles.find(e=>e.id===this._selectedBundleId)}get _reasonData(){return this._bundle?.reasons.find(e=>e.id===this._reason)??this._bundle?.reasons[0]}_packageLabel(e){return e==="__own__"?"Own code":e}get _scopeFiles(){let e=this._reasonData,s=e?.fileModules,r=e?.filePaths?new Set(e.filePaths):null;return(this._bundle?.files??[]).filter(o=>(s==null||s.includes(o.module))&&(r==null||r.has(o.path))).toSorted((o,n)=>n.bytes-o.bytes)}get _files(){return Qe(this._scopeFiles)}render(){return u`<div class="wrap">${this.hideHeading?u`<h1 class="sr-only">Scans</h1>`:u`<div class="head"><div class="head-title"><slot name="navigation"></slot><h1>Scans</h1></div></div>`}<div class="intro-row"><p class="intro">${this._tab==="history"?"Review past scans and save completed results as reports.":this._mode==="report"?"Choose inputs and start a scan. Save the report when it finishes.":"Choose a bundle and start a scan. Save the report when it finishes."}</p><div class="head-tabs" role="tablist" aria-label="Scan views"><button class="${this._tab==="new"?"active":""}" role="tab" aria-selected="${this._tab==="new"}" @click="${()=>{this._tab="new"}}">New scan</button> <button class="${this._tab==="history"?"active":""}" role="tab" aria-selected="${this._tab==="history"}" @click="${()=>{this._tab="history"}}">Scan history</button></div></div>${this._notice?u`<p class="notice" role="status">${this._notice}</p>`:g} ${this._bundleError?u`<p class="notice" role="alert">Couldn’t load bundle: ${this._bundleError}<button @click="${()=>{this._loadSelectedBundle()}}">Retry</button></p>`:g} ${this._tab==="new"?this._newScan():this._history()}</div>`}_newScan(){let e=this._mode,s=this._bundle,r=e==="code"?this._files:e==="dependencies"?this._scopeFiles:s?.files??[],o=this._excluded,n=this._excludedModules,i=r.filter(h=>!o.has(h.path)&&!n.has(h.module)),a=xe(s?.files?i:null),c=new Map;for(let h of r){let b=c.get(h.module)??{bytes:0,count:0,included:0};b.bytes+=h.bytes,b.count++,o.has(h.path)||b.included++,c.set(h.module,b)}let l=[...c.keys()].toSorted((h,b)=>c.get(b).bytes-c.get(h).bytes||this._packageLabel(h).localeCompare(this._packageLabel(b))),p=r.slice(0,80),d=l.filter(h=>!n.has(h)).length,f=this._reportInput?.mode===this._reportMode?this._reportInput.inputs:[];return u`<div class="setup"><scan-mode-selector .mode="${e}" .analyzer="${this._options.analyzer}" .reportMode="${this._reportMode}" @scan-mode-change="${h=>this._changeMode(h.detail.mode)}" @scan-analyzer-change="${h=>this._setOption("analyzer",h.detail.analyzer)}" @scan-report-mode-change="${h=>{this._reportMode=h.detail.mode,this._reportRestore=null}}"></scan-mode-selector>${e==="report"?u`<scan-report-inputs .mode="${this._reportMode}" .loadSources="${this.loadReportSources}" .restore="${this._reportRestore}" @report-inputs-change="${h=>{this._reportInput=h.detail}}"></scan-report-inputs>`:this._sourcePanel(s,r)} ${e==="code"?u`<details class="panel scope-panel"><summary class="scope-head"><svg class="scope-chevron" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 3 5 5-5 5"/></svg><h2>Source filter</h2><p><span>${i.length} of ${r.length} files · ${d} of ${l.length} packages</span> <span>${B(a.bytes)} · ${a.lines==null?"\u2014":a.lines.toLocaleString()} LoC</span></p></summary><div class="scope-grid"><section class="scope-pane package-pane" aria-label="Packages in bundle"><div class="pane-head"><strong>Packages</strong><span>${l.length} total · sorted by size</span></div><div class="package-list">${l.map(h=>{let{bytes:b,count:y,included:O}=c.get(h),m=!n.has(h);return u`<label class="${`package-row ${m?"":"excluded"}`}"><input type="checkbox" .checked="${m}" @change="${x=>this._toggleModule(h)}"><span class="package-name" data-tooltip-truncated data-tooltip="${this._packageLabel(h)}">${this._packageLabel(h)}</span><span class="package-size">${B(b)} · ${O}/${y}</span></label>`})}</div></section><section class="scope-pane file-panel" aria-label="Largest files in bundle"><div class="pane-head"><strong>Largest files</strong><span>showing ${p.length} of ${r.length}</span></div>${r.length===0?u`<p class="empty">No files in this selection.</p>`:u`<div class="file-list">${p.map(h=>{let b=!o.has(h.path)&&!n.has(h.module);return u`<label class="${`file ${b?"":"excluded"}`}"><input type="checkbox" .checked="${b}" @change="${y=>this._toggleFile(h,y.target.checked)}"><span class="file-copy"><span class="file-path" data-tooltip-truncated data-tooltip="${h.path}">${h.path}</span><span class="file-meta">${h.size} · ${this._packageLabel(h.module)}</span></span></label>`})}</div>`}</section></div></details>`:g} ${e==="agentic"?this._agenticPanel():g}<slot name="access"></slot>${this._optionsPanel(e,s,e==="report"?f.length:i.length)}</div>`}_sourcePanel(e,s){if(this.sourceLoading)return u`<section class="panel source-panel" aria-busy="true"><div class="panel-head"><h2>Source</h2></div><p class="empty" role="status">Loading scan sources…</p></section>`;let r=this._mode==="code"?this._repoBundles.map(l=>l.files?{...l,files:Qe(l.files)}:l.summary?{...l,summary:{...l.summary,files:l.summary.codeFiles}}:l):this._repoBundles,o=ms(e,s,this._mode),n=new Map;for(let l of this._bundles)n.set(l.repoId,(n.get(l.repoId)??0)+1);let i=this._repositories.length>1,a=["code","agentic","dependencies"].includes(this._mode)&&e!=null&&(!e.filename.toLowerCase().endsWith(".map")||e.reasons?.some(l=>l.id!=="all")),c=this._repositories.map(l=>{let p=n.get(l.id)??0;return{value:l.id,label:l.label,detail:`${p} ${p===1?"bundle":"bundles"}`,special:l.id==="unattached"}});return u`<section class="panel source-panel" aria-busy="${this._loadingBundle}"><div class="panel-head"><h2>Source</h2></div><div class="${`source-choice ${i?"":"single-repository"}`}">${i?u`<div class="field"><span>${this.scopeLabel}</span>${this.scopeLabel==="Workspace"?u`<workspace-selector .options="${c}" .value="${this._selectedRepoId}" @workspace-change="${l=>this._selectRepoById(l.detail.value)}"></workspace-selector>`:u`<repository-selector .options="${c}" .value="${this._selectedRepoId}" @repository-change="${l=>this._selectRepoById(l.detail.value)}"></repository-selector>`}</div>`:g}<div class="field">${i||this.createBundleHref?this._bundleLabel():g}${r.length>0?u`<bundle-selector .bundles="${r}" .value="${e?.id??null}" @bundle-change="${l=>this._selectBundleById(l.detail.value)}"></bundle-selector>`:this._emptyBundles()}</div><div class="source-footer"><div class="bundle-stats" aria-label="Bundle statistics"><div class="metric"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><ellipse cx="8" cy="4" rx="5" ry="2"/><path d="M3 4v8c0 1.1 2.2 2 5 2s5-.9 5-2V4M3 8c0 1.1 2.2 2 5 2s5-.9 5-2"/></svg><strong>${e?.size??"\u2014"}</strong><span>bundle size</span></div><div class="metric">${eo.report}<strong>${o.files??"\u2014"}</strong><span>files</span></div><div class="metric">${eo.code}<strong>${o.lines==null?"\u2014":o.lines.toLocaleString()}</strong><span>LoC</span></div><div class="metric">${I(be)}<strong>${o.packages??"\u2014"}</strong><span>packages</span></div></div>${a?u`<div class="scope-slot">${this._scopeField(e)}</div>`:g}</div></div></section>`}_bundleLabel(){let e=this.createBundleHref?.(this._selectedRepoId);return u`<div class="bundle-label"><span>Bundle</span>${e?u`<a class="create-bundle-button" href="${e}">Create a bundle</a>`:g}</div>`}_emptyBundles(){let e=this.createBundleHref?.(this._selectedRepoId);return u`<div class="choice-empty"><span>${this._bundles.length===0?"No stored bundles.":`No stored bundles for this ${this.scopeLabel.toLowerCase()}.`}</span>${e?u`<a href="${e}">Create?</a>`:g}</div>`}_scopeField(e){if(!["code","agentic","dependencies"].includes(this._mode))return g;let s=(e?.reasons??[]).filter(r=>r.id!=="all");return s.length===0?g:u`<bundle-scope-selector .reasons="${s}" .value="${this._reason}" label="${this._mode==="agentic"?"Choose agentic scope":"Choose scan scope"}" @scope-change="${r=>this._changeReason(r.detail.value)}"></bundle-scope-selector>`}_optionsPanel(e,s,r){let o=e==="report"?`${r} ${this._reportMode==="merge"?"scan results":"reports"} selected`:`${s?.filename??"No bundle selected"} \xB7 ${r} files will be analyzed`,n=e==="code"&&this._options.analyzer==="advanced",i=!this.canRun||(e==="report"?r===0:s==null||r===0||n&&(!this._regimesReady||this._regimes.length===0));return u`<section class="panel options"><div class="options-grid">${n?u`<scan-regime-editor .loadModels="${this.loadModels}" .value="${this._regimes}" .appModel="${this._appModel}" .appModelAutomatic="${this._appModelAutomatic}" @regimes-change="${a=>{this._regimesReady=a.detail.ready,this._regimes=a.detail.value,this._appModel=a.detail.appModel,this._appModelAutomatic=a.detail.appModelAutomatic}}"></scan-regime-editor>`:u`<scan-model-picker .loadModels="${this.loadModels}" ?has-extra="${e==="code"}" .value="${this._options.model}" .effort="${this._options.effort}" @model-change="${a=>{this._options={...this._options,model:a.detail.model,effort:a.detail.effort}}}">${e==="code"?u`<scan-depth-toggle slot="effort-extra" .isolate="${this._options.isolate}" @depth-change="${a=>this._setOption("isolate",a.detail.isolate)}"></scan-depth-toggle>`:g}</scan-model-picker>`}</div><div class="options-footer"><slot name="before-run"></slot><button type="button" class="run" ?disabled="${i}" @click="${()=>this._runScan()}">${e==="report"?this._reportMode==="merge"?"Merge results":"Link reports":"Run scan"}</button><span class="summary">${o}</span></div><div class="checks"><label class="switch"><input type="checkbox" aria-describedby="${this._options.cached?"offline-help":g}" .checked="${this._options.cached}" @change="${a=>this._setOption("cached",a.target.checked)}"><span class="switch-track" aria-hidden="true"></span><span>Offline</span></label>${this._options.cached?u`<small class="offline-help" id="offline-help">Cache only, no new model requests</small>`:g}</div></section>`}_history(){return u`<section class="panel history"><div class="panel-head"><h2>Scan history</h2><p>${this._scans.length} scans</p></div>${this._scans.length===0?u`<p class="empty">No scans yet.</p>`:this._scans.map(e=>this._scanRow(e))}</section>`}_scanRow(e){let s=e.status==="completed"?e.reportSaved?u`<button type="button" class="action" @click="${()=>this._deleteSavedReport(e)}">Delete saved report</button>`:u`<button type="button" class="action" @click="${()=>this._saveReport(e)}">Save report</button>`:g;return u`<div class="scan-row"><div class="scan-main"><div class="scan-title"><strong data-tooltip-truncated data-tooltip="${e.bundleName}">${e.bundleName}</strong><span class="${`status ${e.status}`}">${e.status}</span></div><span class="scan-meta">${e.reason} · ${e.files} ${e.mode==="report"?e.reportMode==="merge"?"results":"reports":"files"} · ${e.createdAt}${e.duration?` \xB7 ${e.duration}`:""}${e.reportSaved?" \xB7 Report saved":e.status==="completed"?" \xB7 Report available":""}</span></div><span class="scan-actions">${s}${e.status==="running"?u`<button type="button" class="action" @click="${()=>this._stopScan(e)}">Stop</button>`:g}${e.status==="stopped"?u`<button type="button" class="action" @click="${()=>this._restartScan(e)}">Restart as new scan</button>`:g}</span><span aria-hidden="true"></span></div>`}_selectBundle(e){this._pendingSelection=null,this._selectedRepoId=e.repoId,this._selectedBundleId=e.id,this._reason=e.reasons?.[0]?.id??"",this._excluded=new Set,this._excludedModules=new Set,this._notice=null,this._loadSelectedBundle()}_selectBundleById(e){let s=this._repoBundles.find(r=>r.id===e);s!=null&&this._selectBundle(s)}_selectRepoById(e){if(e===this._selectedRepoId||!this._repositories.some(r=>r.id===e))return;this._selectedRepoId=e,this._pendingSelection=null;let s=this._bundles.find(r=>r.repoId===e);this._selectedBundleId=s?.id??null,this._reason=s?.reasons[0]?.id??"",this._excluded=new Set,this._excludedModules=new Set,this._notice=null,this._loadSelectedBundle()}_changeMode(e){!["dependencies","code","agentic","report"].includes(e)||e===this._mode||(this._mode=e,this._reportInput=null,this._reportRestore=null,this._excluded=new Set,this._excludedModules=new Set,this._notice=null)}_changeReason(e){this._reason=e,this._excluded=new Set,this._excludedModules=new Set}_toggleFile(e,s){let r=new Set(this._excluded);s?r.delete(e.path):r.add(e.path),this._excluded=r}_toggleModule(e){let s=new Set(this._excludedModules);s.has(e)?s.delete(e):s.add(e),this._excludedModules=s}_setOption(e,s){this._options[e]!==s&&(e==="analyzer"&&s==="advanced"&&(this._regimesReady=!1,this._regimes.length===0&&(this._regimes=[{mode:this._options.analyzer,model:this._options.model,effort:this._options.effort,isolate:this._options.isolate}])),this._options={...this._options,[e]:s})}_agenticPanel(){return u`<section class="panel agentic-panel"><div class="panel-head"><h2>Agentic instructions</h2><button type="button" class="row-action" aria-label="Add prompt" @click="${()=>this._addPrompt()}">${je}</button></div><div class="agentic-fields">${$e(this._prompts,e=>e.id,(e,s)=>u`<div class="prompt-row"><textarea aria-label="${`Prompt ${s+1}`}" rows="3" placeholder="${this._promptPlaceholder(s)}" .value="${C(e.text)}" @input="${r=>{this._prompts=this._prompts.map(o=>o.id===e.id?{...o,text:r.target.value}:o)}}"></textarea>${this._prompts.length>1?u`<button type="button" class="row-action" aria-label="${`Remove prompt ${s+1}`}" @click="${()=>this._removePrompt(e.id)}">${Be}</button>`:g}</div>`)}</div></section>`}_promptPlaceholder(e){let s=["","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth"][e];return s!=null?`What should the ${s?`${s} `:""}agent focus on?`:`What should agent ${e+1} focus on?`}async _addPrompt(){this._prompts=[...this._prompts,{id:++this._nextPromptId,text:""}],await this.updateComplete,this.renderRoot?.querySelector(".prompt-row:last-child textarea")?.focus()}_removePrompt(e){this._prompts.length>1&&(this._prompts=this._prompts.filter(s=>s.id!==e))}_runScan(){if(!this.canRun)return;let e=this._mode,s=e==="code"&&this._options.analyzer==="advanced";if(s&&(!this._regimesReady||this._regimes.length===0))return;let r=this._bundle,o=this._reportInput?.mode===this._reportMode?this._reportInput:null,n=o?.inputs??[],i=e==="code"?this._files.filter(l=>!this._excluded.has(l.path)&&!this._excludedModules.has(l.module)):e==="dependencies"?this._scopeFiles:r?.files??[];if(e==="report"&&(!o?.source||n.length===0)||e!=="report"&&(!r||i.length===0))return;let a={id:`scan-${Date.now()}`,mode:e,bundleId:e==="report"?this._reportMode==="merge"?o.source.id:null:r?.id??null,bundleName:e==="report"?o.source.label:r.filename,reason:e==="report"?this._reportMode==="merge"?"Merge scan results":"Link saved reports":this._reasonData?.label??"All files",status:"running",createdAt:"Just now",duration:"",files:e==="report"?n.length:i.length,reportSaved:!1,cached:this._options.cached,isolate:e==="code"&&this._options.isolate,model:this._options.model,effort:this._options.effort};e!=="report"&&(a.repoId=this._selectedRepoId,a.scopeId=this._reason),e==="code"&&(a.analyzer=this._options.analyzer),s&&(a.regimes=this._regimes.map(l=>({...l})),a.appModel=this._appModel?{...this._appModel}:null,a.appModelAutomatic=this._appModelAutomatic,a.reason=`Advanced \xB7 ${a.regimes.length} regimes \xB7 ${a.reason}`,a.model=null,a.effort=null,a.isolate=!1),e==="agentic"&&(a.prompts=this._prompts.map(l=>l.text)),e==="report"&&(a.reportMode=this._reportMode,a.reportSource={...o.source},a.inputIds=n.map(l=>l.id)),this._scans=[a,...this._scans],this._tab="history",this._notice="Scan started. The server will update its status as work progresses.";let c=setTimeout(()=>{this._timers.delete(c),a.status==="running"&&(a.status="completed",a.duration="2m 14s",this._notice="Scan completed. Its report is ready to save.",this.requestUpdate())},2200);this._timers.add(c)}_stopScan(e){e.status==="running"&&(e.status="stopped",e.duration=e.duration||"stopped by user",this._notice="Scan stopped. It cannot continue, but you can restart it as a new scan.",this.requestUpdate())}_restartScan(e){if(this._options={...this._options,model:e.model??this._options.model,effort:e.effort??this._options.effort,cached:e.cached??!1,isolate:e.isolate??!1,analyzer:e.analyzer??"generic"},e.mode==="report"){this._mode="report",this._reportMode=e.reportMode==="link"?"link":"merge",this._reportInput=null,this._reportRestore={mode:this._reportMode,source:e.reportSource,inputIds:e.inputIds??[]},this._tab="new",this._notice="New report scan settings restored from the stopped run.";return}let s=this._bundles.find(r=>r.id===e.bundleId&&(e.repoId==null||r.repoId===e.repoId));s&&(this._selectBundle(s),this._mode=e.mode??"dependencies",e.mode==="agentic"&&(this._prompts=(e.prompts?.length>0?e.prompts:[""]).map(r=>({id:++this._nextPromptId,text:r}))),e.regimes?.length>0&&(this._options={...this._options,analyzer:"advanced"},this._regimes=e.regimes.map(r=>({...r})),this._appModel=e.appModel?{...e.appModel}:null,this._appModelAutomatic=e.appModelAutomatic!==!1,this._regimesReady=!1),this._reason=s.reasons.find(r=>r.label===e.reason)?.id??s.reasons[0]?.id??"",this._reason=e.scopeId??this._reason,this._tab="new",this._notice="New scan settings restored from the stopped run.")}_saveReport(e){e.reportSaved=!0,this._notice="Report saved. You can delete it from Reports and save this completed scan again.",this.requestUpdate()}_deleteSavedReport(e){e.reportSaved=!1,this._notice="Saved report deleted. The completed scan can be saved again.",this.requestUpdate()}};customElements.get("deepview-scan-page")||customElements.define("deepview-scan-page",Zt);var Gi=k`<path d="M8 1C4.5 1 4 1.5 4 3v1h4v1H3C1.5 5 1 6 1 8s.5 3 2 3h1V9c0-1.5 1-2 2.5-2H10c1.5 0 2-.5 2-2V3c0-1.5-.5-2-4-2Z" fill="#3776ab"/><path d="M8 1C4.5 1 4 1.5 4 3v1h4v1H3C1.5 5 1 6 1 8s.5 3 2 3h1V9c0-1.5 1-2 2.5-2H10c1.5 0 2-.5 2-2V3c0-1.5-.5-2-4-2Z" fill="#ffd43b" transform="rotate(180 8 8)"/><circle cx="6" cy="2.8" r=".65" fill="#fff"/><circle cx="10" cy="13.2" r=".65" fill="#fff"/>`,Vi=k`<path d="M6.42 2.11 6.81 .49 9.19 .49 9.58 2.11 11.05 2.72 12.47 1.85 14.15 3.53 13.28 4.95 13.89 6.42 15.51 6.81 15.51 9.19 13.89 9.58 13.28 11.05 14.15 12.47 12.47 14.15 11.05 13.28 9.58 13.89 9.19 15.51 6.81 15.51 6.42 13.89 4.95 13.28 3.53 14.15 1.85 12.47 2.72 11.05 2.11 9.58 .49 9.19 .49 6.81 2.11 6.42 2.72 4.95 1.85 3.53 3.53 1.85 4.95 2.72ZM8 3.7a4.3 4.3 0 1 0 0 8.6 4.3 4.3 0 1 0 0 -8.6Z" fill="#c97d5d" fill-rule="evenodd"/><text x="8" y="10.8" text-anchor="middle" fill="currentColor" font-family="serif" font-size="8" font-weight="700">R</text>`;var Wi=k`<g fill="#8892bf" transform="translate(0 .5) scale(.5)"><path d="M28 10a4 4 0 0 0-4-4h-6v6a6 6 0 0 1-6 6h-2v2h2v6h4v-6h8v6h4V16h2v-4a2 2 0 0 0-2-2"/><path d="M12 4H8v2a6 6 0 0 0-6 6v6a2 2 0 0 0 2 2v2H2.5a.5.5 0 0 0-.5.5v3a.5.5 0 0 0 .5.5H6a2 2 0 0 0 2-2v-8h4a4 4 0 0 0 4-4V8a4 4 0 0 0-4-4M6 14H4v-2h2Z"/></g>`,Ki=/^(?:(?:un)?licen[cs]e|copying)(?:-[^/.]*)?(?:\.(?:mit|bsd|isc|apache|[al]?gpl|mpl|epl|eupl|cddl|cc0|zlib|psf|boost|bsl|artistic|unicode|ofl|wtfpl|lesser|lib)(?:v?\d[^/.]*|-[^/.]*)?)?(?:\.\d[^/.]*)*(?:\.(?:md|markdown|txt|text|rst|adoc|asciidoc|org))?$/iu,Zi=new Set(["resource:base64","directory","binary"]),Ji=t=>Zi.has(t);function Yi(t,e,s){return s!==null&&s!=="markdown"||Ji(e)?!1:Ki.test(t.slice(t.lastIndexOf("/")+1))}function Wu(t,e){return(t?.kind==="stasis"?t.bundle?.formats?.get(e):void 0)??(t?.npmBinaries?.has(e)?"binary":void 0)}var Xi=t=>{let e=t.slice(t.lastIndexOf("/")+1),s=e.lastIndexOf(".");return s>0?e.slice(s+1).toLowerCase():""},Qi=new Set(["node","so","dylib","dll"]);function ea(t,e){let s=ke(t,e);if(s===null&&/\.map$/iu.test(t))return"map";if(Yi(t,e,s))return"license";if(["javascript","jsx"].includes(s))return"js";if(["typescript","tsx"].includes(s))return"ts";let r=Xi(t);return["c","cpp","objectivec"].includes(s)&&r==="h"?"header":["solidity","rust","php","python","json","markdown","css","yaml","markup","java","ruby","c","cpp"].includes(s)?s:s==="bash"?"shell":s==="objectivec"?"objc":r==="wasm"?"wasm":Qi.has(r)?"native":"generic"}var ta=k`<path d="M1.5 3.4 5.3 2l5.4 1.6 3.8-1.4v10.4l-3.8 1.4-5.4-1.6-3.8 1.4Z" fill="#3fa59a" fill-opacity=".22" stroke="#3fa59a" stroke-width="1.1" stroke-linejoin="round"/><path d="M5.3 2v10.4m5.4-8.8V14" stroke="#3fa59a" stroke-width="1.1"/>`,sa=k`<circle cx="8" cy="2.6" r="1" fill="currentColor"/><path d="M8 3.6v9.9m-3.5 0h7M3 4.6h10M3 4.6 1.2 9.2M3 4.6l1.8 4.6M13 4.6l-1.8 4.6M13 4.6l1.8 4.6" fill="none" stroke="currentColor" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/><path d="M1 9.2h4a2 2 0 0 1-4 0Zm10 0h4a2 2 0 0 1-4 0Z" fill="currentColor"/>`,ra=k`<rect x="1" y="1" width="14" height="14" rx="2" fill="#663399"/><text x="14" y="13.2" text-anchor="end" fill="#fff" font-family="sans-serif" font-size="6.4" font-weight="700" letter-spacing="-.2">CSS</text>`,oa=k`<path d="M1 11.5v-7h2l1.7 2.3 1.7-2.3h2v7h-2V7.8L4.7 10 3 7.8v3.7Zm10.2-7h2V8H15l-2.8 3.5L9.4 8h1.8Z" fill="var(--green, #3fb950)"/>`,D=(t,e,s="#fff")=>e.length>2?k`<rect x="1" y="1" width="14" height="14" rx="2" fill=${t}/><text x="8" y="10.6" text-anchor="middle" fill=${s} font-family="sans-serif" font-size="6.2" font-weight="700" letter-spacing="-.2">${e}</text>`:k`<rect x="1" y="1" width="14" height="14" rx="2" fill=${t}/><text x="8" y="11.5" text-anchor="middle" fill=${s} font-family="sans-serif" font-size="8" font-weight="700">${e}</text>`,na={__proto__:null,js:D("#e6c84f","JS","#202020"),ts:D("#3178c6","TS"),solidity:k`<path d="m8 1 4 6-4 2-4-2Z" fill="currentColor"/><path d="m4 8 4 2 4-2-4 7Z" fill="currentColor" opacity=".65"/>`,rust:Vi,php:Wi,python:Gi,map:ta,markdown:oa,license:sa,css:ra,json:k`<path d="M3 1h6l5 5v8a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1Z" fill="#e6c84f"/><path d="M9 1v4a1 1 0 0 0 1 1h4Z" fill="#202020" opacity=".2"/><path d="M6.5 6.5h-.75a.75.75 0 0 0-.75.75v1.5L4 9.5l1 .75v1.5a.75.75 0 0 0 .75.75h.75m3-6h.75a.75.75 0 0 1 .75.75v1.5l1 .75-1 .75v1.5a.75.75 0 0 1-.75.75H9.5" fill="none" stroke="#202020" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>`,yaml:D("#cb171e","YML"),shell:k`<rect x="1.5" y="2.5" width="13" height="11" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.1"/><path d="m4.2 6 2 2-2 2m3.3 0h4.2" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>`,markup:k`<path d="M4.8 4.5 1.5 8l3.3 3.5m6.4-7L14.5 8l-3.3 3.5M9.3 3 6.7 13" fill="none" stroke="#e34c26" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>`,wasm:D("#654ff0","WA"),native:k`<rect x="4" y="4" width="8" height="8" rx="1" fill="none" stroke="currentColor" stroke-width="1.1"/><rect x="6.4" y="6.4" width="3.2" height="3.2" fill="currentColor"/><path d="M6 1.5V4m4-2.5V4M6 12v2.5m4-2.5v2.5M1.5 6H4m-2.5 4H4M12 6h2.5M12 10h2.5" stroke="currentColor" stroke-width="1.1" stroke-linecap="round"/>`,java:k`<path d="M5.4 5.8c-.9-1 .9-1.7 0-3M8.4 5.8c-.9-1 .9-1.7 0-3" fill="none" stroke="#e76f00" stroke-width="1.1" stroke-linecap="round"/><path d="M2.5 7h9v3.3A3.7 3.7 0 0 1 7.8 14H6.2a3.7 3.7 0 0 1-3.7-3.7Z" fill="#5382a1"/><path d="M11.5 8.2h.9a1.6 1.6 0 0 1 0 3.2h-1.1" fill="none" stroke="#5382a1" stroke-width="1.1"/>`,objc:D("#438eff","OC"),c:D("#3949ab","C"),cpp:D("#00599c","C++"),header:D("#607d8b","H"),ruby:k`<path d="M4.5 2.5h7L14.5 6 8 14 1.5 6Z" fill="#cc342d"/><path d="M1.5 6h13M4.5 2.5 6 6l2 8 2-8 1.5-3.5M6 6l2-3.5L10 6" fill="none" stroke="#fff" stroke-opacity=".55" stroke-width=".7" stroke-linejoin="round"/>`},ia=k`<path d="M4 1.5h5l3 3v10H4Zm5 0v3h3M6 8h4M6 10.5h4" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/>`;function Ku(t,e){let s=ea(t,e);return u`<svg class="source-file-icon" data-file-type="${s}" width="16" height="16" viewBox="0 0 16 16" style="flex: none" aria-hidden="true">${na[s]??ia}</svg>`}var Zu=u`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.2" style="flex: none" aria-hidden="true"><path d="M1.5 4V2.5h5L8 4h6.5v9h-13Z" stroke-linejoin="round"/></svg>`,aa=u`<svg class="bundle-code-tree-npm" width="12" height="12" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M1 1h14v14H1Zm3 3v8h4V6h2v6h2V4Z"/></svg>`,la=u`<svg class="bundle-code-tree-soldeer" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><path d="m8 1 6 3.5v7L8 15l-6-3.5v-7Z" fill="none" stroke="currentColor" stroke-width="1"/><path d="m8 3 2.5 4L8 8.5 5.5 7Zm-2.5 5L8 9.5 10.5 8 8 13Z" fill="currentColor"/></svg>`,ca=u`<svg class="bundle-code-tree-composer" width="12" height="12" viewBox="0 0 16 16" aria-hidden="true"><path d="M8 1 15 4.5v7L8 15l-7-3.5v-7Z" fill="#8892bf"/><path d="m1 4.5 7 3.5 7-3.5M8 8v7M4.5 2.75l7 3.5" fill="none" stroke="var(--surface, #fff)" stroke-width=".9"/></svg>`,da=u`<svg class="bundle-code-tree-cargo" width="12" height="12" viewBox="9.25 6.14 14 14" aria-hidden="true"><path d="m16.264 11.547 6.2-2.446v8.16l-6.2 2.485Zm0-.019-6.2-2.481v8.123l6.2 2.522Z" fill="#e5ac3d" stroke="#73561f" stroke-miterlimit="10" stroke-width=".05430921534373718px"/><path d="m16.277 11.508 6.169-2.435-6.2-2.531-6.2 2.467Z" fill="#e3b04e" stroke="#73561f" stroke-miterlimit="10" stroke-width=".05430921534373718px"/><path d="m12.82 10.149 6.196-2.467" fill="none" stroke="#73561f" stroke-miterlimit="10" stroke-width=".05430921534373718px"/><path d="m18.301 7.395-6.24 2.484 1.482.593 6.196-2.466z" fill="#fff" stroke="#73561f" stroke-miterlimit="10" stroke-width=".04741218643894885px" opacity=".3"/><path d="m13.562 10.47-1.453-.565v1.645l.201-.136.18.285.104.04.138-.121.137.228.129.05.189-.166.238.332.137.053zm-1.423 7.576 1.461.545-.023-1.645-.2.139-.184-.282-.104-.039-.136.123-.14-.226-.131-.049-.186.169-.243-.329-.137-.051z" fill="#fff" stroke="#73561f" stroke-miterlimit="10" stroke-width=".06661495224335688px" opacity=".3"/><path d="m21.426 13.49-.172-.039V13.4l.148-.208a.1.1 0 0 0 .018-.065.035.035 0 0 0-.037-.03l-.189.006-.015-.045.118-.222a.07.07 0 0 0 .007-.063.04.04 0 0 0-.045-.018l-.2.051-.024-.037.084-.229a.06.06 0 0 0 0-.058.04.04 0 0 0-.051-.006l-.2.094-.032-.027.047-.227a.05.05 0 0 0-.016-.052.05.05 0 0 0-.056.007l-.2.133-.039-.017.007-.215a.04.04 0 0 0-.026-.043.07.07 0 0 0-.058.02l-.184.166-.045-.006-.033-.2a.036.036 0 0 0-.036-.032.08.08 0 0 0-.057.031l-.164.194-.049.005-.071-.168a.036.036 0 0 0-.044-.021.1.1 0 0 0-.055.042l-.138.214-.05.016-.107-.135a.04.04 0 0 0-.05-.008.1.1 0 0 0-.05.051l-.107.226-.05.026-.138-.1a.05.05 0 0 0-.055 0 .1.1 0 0 0-.044.058l-.071.228-.049.036-.164-.054a.06.06 0 0 0-.057.017.1.1 0 0 0-.036.063l-.033.223-.045.044-.184-.01a.08.08 0 0 0-.058.029.1.1 0 0 0-.026.065l.007.209-.039.05-.2.035a.1.1 0 0 0-.056.04.1.1 0 0 0-.016.065l.046.187-.032.054-.2.079a.1.1 0 0 0-.051.049.07.07 0 0 0 0 .062l.084.157-.024.057-.2.119a.1.1 0 0 0-.045.057.06.06 0 0 0 .007.057l.118.122-.015.058-.189.155a.1.1 0 0 0-.037.062.045.045 0 0 0 .018.05l.148.082v.055l-.172.185a.1.1 0 0 0-.028.065.04.04 0 0 0 .028.041l.172.039v.051l-.148.208a.1.1 0 0 0-.018.065.035.035 0 0 0 .037.03l.189-.006.015.045-.118.222a.07.07 0 0 0-.007.063.04.04 0 0 0 .045.018l.2-.051.024.037-.084.229a.06.06 0 0 0 0 .058.04.04 0 0 0 .051.006l.2-.094.032.027-.046.227a.05.05 0 0 0 .016.051.05.05 0 0 0 .056-.007l.2-.133.039.017-.007.215a.04.04 0 0 0 .026.043.07.07 0 0 0 .058-.02l.184-.166.045.006.033.2a.035.035 0 0 0 .036.032.08.08 0 0 0 .057-.031l.164-.194.049-.005.071.168a.036.036 0 0 0 .044.02.1.1 0 0 0 .055-.042l.138-.214.05-.016.107.135a.04.04 0 0 0 .05.008.1.1 0 0 0 .05-.051l.107-.226.05-.027.138.1a.05.05 0 0 0 .055 0 .1.1 0 0 0 .044-.058l.071-.228.049-.036.164.054a.06.06 0 0 0 .057-.017.1.1 0 0 0 .036-.063l.033-.223.045-.044.184.01a.08.08 0 0 0 .058-.029.1.1 0 0 0 .026-.065l-.007-.209.039-.05.2-.035a.1.1 0 0 0 .056-.04.1.1 0 0 0 .016-.065l-.046-.187.017-.053.2-.079a.1.1 0 0 0 .051-.049.07.07 0 0 0 0-.062l-.084-.157.024-.057.2-.119a.1.1 0 0 0 .045-.057.06.06 0 0 0-.007-.057l-.118-.122.015-.058.189-.155a.1.1 0 0 0 .037-.062.045.045 0 0 0-.018-.05l-.148-.082v-.055l.172-.185a.1.1 0 0 0 .028-.065.04.04 0 0 0-.014-.039m-1.153 1.988c-.066.013-.108-.037-.094-.112a.21.21 0 0 1 .145-.16c.066-.013.108.037.094.112a.21.21 0 0 1-.145.16m-.059-.39a.19.19 0 0 0-.132.146l-.061.325a2.3 2.3 0 0 1-.619.4 1.4 1.4 0 0 1-.632.123l-.061-.273c-.013-.057-.072-.072-.132-.033l-.252.164a1 1 0 0 1-.13-.106l1.226-.521q.022-.007.023-.026v-.455c0-.013-.009-.012-.023-.006l-.359.152v-.288l.388-.165a.16.16 0 0 1 .239.115c.015.057.049.249.072.3s.117.172.217.13l.611-.26.022-.012a3 3 0 0 1-.139.23Zm-1.7 1.13c-.066.043-.131.026-.145-.037a.2.2 0 0 1 .094-.192c.066-.043.131-.026.145.037a.2.2 0 0 1-.09.192Zm-.465-1.779a.18.18 0 0 1-.062.2c-.062.055-.134.056-.161 0a.18.18 0 0 1 .062-.2c.066-.051.138-.053.165 0Zm-.143.416.263-.234a.16.16 0 0 0 .057-.178l-.054-.105.213-.09v1l-.429.182a1.4 1.4 0 0 1-.057-.407c.001-.052.001-.11.011-.168Zm1.152-.587v-.3l.506-.215c.026-.011.185-.047.185.077 0 .1-.122.192-.222.234l-.47.2Zm1.84-.516v.118l-.154.065a.04.04 0 0 0-.022.036v.074a.31.31 0 0 1-.176.3c-.078.043-.165.036-.176-.01-.046-.253-.123-.278-.245-.327a1 1 0 0 0 .308-.578.3.3 0 0 0-.235-.315.57.57 0 0 0-.322.026l-1.592.677a2.7 2.7 0 0 1 .84-.853l.188.127c.042.029.113 0 .157-.063l.21-.3a.94.94 0 0 1 1.027.33l-.144.4c-.025.069 0 .128.057.13l.277.011q.004.073.004.152Zm-1.591-1.044c.049-.069.126-.1.172-.069s.045.113 0 .183-.126.1-.172.069-.044-.114.005-.184Zm1.427.6a.19.19 0 0 1 .161-.133c.062 0 .089.066.062.142a.19.19 0 0 1-.161.133c-.057-.006-.085-.07-.058-.15Z" opacity=".55"/><path d="M0 16.309h22.926v9.971L45.72 13.139 22.926 0v9.97H0z" fill="#231f20" transform="matrix(0 -.029 .022 .013 10.451 11.138)"/><path d="M0 16.309h22.926v9.971L45.72 13.139 22.926 0v9.97H0z" fill="#231f20" transform="matrix(0 -.029 .022 .013 15.013 12.984)"/></svg>`;function Ju(t){return t==="composer"?ca:t==="cargo"?da:t==="soldeer"?la:aa}function Jt(t,e){let s=new Map,r=t?.kind==="stasis"?t.bundle?.reason:null;if(!r||typeof r!="object"||Array.isArray(r))return s;let o=new Set(e??[...T(t)].filter(([,n])=>n!=null).map(([n])=>n));for(let[n,i]of Object.entries(r).toSorted(([a],[c])=>a.localeCompare(c))){if(!n||!Array.isArray(i))continue;let a=new Set(i.filter(c=>typeof c=="string"&&o.has(c)));a.size>0&&s.set(n,a)}return[...s.values()].some(n=>n.size<o.size)||s.clear(),s}function ua(t,e,s){let r=new Set;for(let[o,n]of t)vs(o,s?.get(o))&&r.add(e(n));return r}function pa(t,e,s){let r=new Set;for(let o of t?.bundle?.entries??[]){let n=e.get(o);n!==void 0&&r.add(s(n))}return r}function op(t,e,s,r){let o=s.has(r)?r:null;if(o===null)return{tree:t,origToStripped:e,selected:o};let n=new Map([...e].filter(([c])=>s.get(o).has(c))),i=new Set(n.values());return{tree:Object.fromEntries([...i].map(c=>[c,{...t[c],imports:(t[c].imports??[]).filter(l=>i.has(l))}])),origToStripped:n,selected:o}}function to(t){if(t?.kind==="sourcemap")return Cr(t);let e=new Map;if(t?.kind!=="stasis"||!t.bundle)return e;for(let s of t.bundle.imports.values())for(let[r,o]of s){e.has(r)||e.set(r,new Set);for(let n of o.values()){let i=typeof n=="string"?[n]:n instanceof Map?n.values():[];for(let a of i)typeof a=="string"&&e.get(r).add(a)}}return e}function np(t,e,s=e,r){let o=to(t),n=new Set(t?.bundle?.entries??[]),i=[],a=new Set,c=[...n];for(let l of c){if(a.has(l))continue;if(a.add(l),e.has(l)){n.has(l)&&i.push({file:e.get(l)});continue}if(s.has(l))continue;let p=[];for(let d of o.get(l)??[])e.has(d)?p.push(e.get(d)):!s.has(d)&&o.has(d)&&(p.push(d),c.push(d));i.push({file:l,origFile:l,virtual:!0,...n.has(l)?{}:{entry:!1},pkg:X(l,{packageDir:r?.get(l)}),imports:p})}return i}function ip(t,e,s,r,o=e){let n=to(t),i=new Set;for(let[c,l]of e)X(c,{packageDir:r?.get(c)})==="__own__"&&i.add(s(l));for(let c of pa(t,e,s))i.add(c);if(i.size===0){let c=ua(e,s,r),l=new Set;for(let[p,d]of n){let f=e.get(p);if(!(f===void 0||!c.has(s(f))))for(let h of d){let b=e.get(h);b!==void 0&&s(f)!==s(b)&&l.add(s(b))}}for(let p of c)l.has(p)||i.add(p)}let a=new Set;for(let[c,l]of n)if(!o.has(c)&&X(c,{packageDir:r?.get(c)})==="__own__")for(let p of l){let d=e.get(p);d!==void 0&&a.add(s(d))}return a.size>0&&i.add("__own__"),{roots:[...i],appImports:[...a]}}function so(t){let{data:e}=hs(t);return e&&Yt(e)>0?e:null}function Yt(t){return(Xe(t)??[]).filter(e=>(Array.isArray(e)?e:[e]).some(s=>s&&typeof s=="object"&&ps(s,s.source??t.source))).length}function up(t,e){let s=[],r=new Map;for(let{name:n,content:i,fallbackRepo:a}of t){if(typeof i!="string")continue;let c=so(i);if(!c)continue;let l=Xe(c),p=ye(c)??ye({repo:{github:a}}),d=new Set(p?[p]:[]);if(!p)for(let f of l.flat()){if(/(?:^|\/)(?:node_modules|dependencies)\//u.test(f?.file??""))continue;let h=ye(f);h&&d.add(h)}for(let f of d)r.set(f,{id:f,label:f});s.push({id:n,filename:n,repoIds:[...d],analyzer:c.source,appFindings:Yt(c)})}let o=new Set(s.map(n=>n.id));return{merge:{bundles:[],results:[]},link:{reports:s,repositories:[...r.values()],workspaces:e.map(n=>({id:n.id,label:n.name,reports:n.reports.filter(i=>o.has(i))})).filter(n=>n.reports.length>0)}}}function pp(t,e){let s=(t.reports??[]).filter(i=>i.visible&&i.repoId!=null).flatMap(i=>{let a=so(i.content??"");return a?[{id:i.id,filename:i.filename,repoIds:[i.repoId],repo:i.repoFullName,directory:i.repoDirectory,analyzer:i.analyzer,appFindings:Yt(a)}]:[]}),r=new Map((t.repos??[]).map(i=>[i.repoId,{id:i.repoId,label:i.fullName}]));for(let i of s)r.has(i.repoIds[0])||r.set(i.repoIds[0],{id:i.repoIds[0],label:i.repo??String(i.repoIds[0])});let o=e.results??[],n=new Set(o.map(i=>i.bundleId));return{merge:{bundles:(e.bundles??[]).filter(i=>n.has(i.id)).map(i=>({...i,size:B(i.byteSize)})),results:o},link:{repositories:[...r.values()].filter(i=>s.some(a=>a.repoIds.includes(i.id))),reports:s}}}var Qt=/(?![\t\n\r])\p{Cc}|[\u202A-\u202E\u2066-\u2069]/gu,fa=/\P{ASCII}/u;function no(t){if(typeof t!="string")return{kind:"binary",controls:null};let e=new Map;for(let[r]of t.matchAll(Qt))e.set(r.codePointAt(0),(e.get(r.codePointAt(0))??0)+1);let s=t.search(fa);if(s!==-1)for(let[r,o]of Sa(t,s)??[])e.set(r,o);return{kind:s===-1?"ascii":"utf8",controls:e.size>0?e:null}}var ha=/(?=\p{Emoji})\p{Extended_Pictographic}(?:\u{FE0F}|[\u{1F3FB}-\u{1F3FF}])?$/u,ma=/^(?=\p{Emoji})\p{Extended_Pictographic}/u,io=/(?=\p{Emoji})\p{Extended_Pictographic}$/u,ga=/^[\d#*]$/u,Xt=t=>t>=917536&&t<=917631,ba=new Set(["gbeng","gbsct","gbwls"]),va=(t,e,s)=>s-e===10?String.fromCodePoint(...Array.from({length:5},(r,o)=>t.codePointAt(e+2*o)-917504)):"";function wa(t,e,s,r){if(s===13&&(t[e+1]===`
|
|
8
|
+
`||r&&e+1===t.length)||s===8205&&ha.test(t.slice(Math.max(0,e-4),e))&&ma.test(t.slice(e+1,e+3))||(s===65038||s===65039)&&io.test(t.slice(Math.max(0,e-2),e))||s===65039&&ga.test(t[e-1]??"")&&t[e+1]==="\u20E3")return e+1;if(Xt(s)&&!Xt(t.codePointAt(e-2))){let o=e;for(;Xt(t.codePointAt(o));)o+=2;if(t.codePointAt(e-2)===127988&&t.codePointAt(o-2)===917631&&ba.has(va(t,e,o-2)))return o}return-1}var ya=/[\u115F\u1160\u3164\uFFA0\u{E0001}\u{E0020}-\u{E007F}]|[\uFE00-\uFE0F]|[\u{E0100}-\u{E01EF}]/u,De=/[\uFE00-\uFE0F\u115F\u1160\u3164\uFFA0\uDB40]/g,ao=t=>new Set(t.split(" ").flatMap(e=>{let[s,r=s]=e.split("-").map(o=>Number.parseInt(o,16));return Array.from({length:r-s+1},(o,n)=>s+n)})),_a=new Map([[65024,"30 1000 1002 1004 1010-1011 1015 1019-101a 101c-101d 1022 1031 1075 1078 107a 1080 2018-2019 201c-201d 210b 2110 2112 211b 212c 2130-2131 2133 2205 2229-222a 223d 2242-2243 2248 2268-2269 2272-2273 228a-228b 2293-2295 2297 229c 22cd 22da-22dd 29b7 2a3c-2a3d 2a6c 2a9d-2a9e 2aac-2aad 2acb-2acc 3001-3002 31c0 31c6 31c9 31cf-31d2 31d4-31d5 31d7 31db-31dd 31e5 a856 a85c a85e-a860 a868 aa60-aa66 aa6b-aa6c aa6f aa7a ff01 ff0c ff0e ff10 ff1a-ff1b ff1f 10ac5-10ac6 10ad6-10ad7 10ae1 13091 1310f 1311c 13121 13127 13139 131a0 131b1 131b8-131b9 131cb 131e0 131f9-131fa 1327b 1327f 13285 1328c 132aa 132cb 132dc 132e7 13307 1331b 13322 1333c 13377-13378 13399-1339a 133d3 133e4-133e5 133e7 133ee 133f2 133f5-133f6 13416 13419-1341a 13423 13443-13446 13be8-13bea 13f72 1d49c 1d49e-1d49f 1d4a2 1d4a5-1d4a6 1d4a9-1d4ac 1d4ae-1d4b5 1db10"],[65025,"2018-2019 201c-201d 210b 2110 2112 211b 212c 2130-2131 2133 3001-3002 31c6 31cf 31dd ff01 ff0c ff0e ff1a-ff1b ff1f 13093 13132 13139 13187 131b1 131ee 131f8-131fa 13257 1327f 1328b 132a4 13308 13312-13314 1331b 13321-13322 13331 133e8 13419 13f1f 14274 1d49c 1d49e-1d49f 1d4a2 1d4a5-1d4a6 1d4a9-1d4ac 1d4ae-1d4b5"],[65026,"2018-2019 201c-201d 13117 13139 13183 131a0 131ba 131ee 13216 1327b 132a4 132e7 132e9 132f8 132fd 13302-13303 13310-13314 1331c 13321 13331 1334a 13361 13373 1337d 13385 133af-133b0 133bf 133db 133dd 13419 1342c 1342e 14274 1d4cf"],[65027,"13012 130b8 130ba 1310f 1312f 13139 13184 1319c-1319d 1319f 131b1 131db 13205 13296 13338 13419"],[65028,"13139 1340d"],[65029,"13139 14274"],[65030,"1312f 13139 13184 131db 131ee 13205 132a4 132e9 1332b 13338 13370-13371 13419 14274"]].map(([t,e])=>[t,ao(e)])),xa=ao("23 2a 30-39 a9 ae 203c 2049 2122 2139 2194-2199 21a9-21aa 231a-231b 2328 23cf 23e9-23f3 23f8-23fa 24c2 25aa-25ab 25b6 25c0 25fb-25fe 2600-2604 260e 2611 2614-2615 2618 261d 2620 2622-2623 2626 262a 262e-262f 2638-263a 2640 2642 2648-2653 265f-2660 2663 2665-2666 2668 267b 267e-267f 2692-2697 2699 269b-269c 26a0-26a1 26a7 26aa-26ab 26b0-26b1 26bd-26be 26c4-26c5 26c8 26ce-26cf 26d1 26d3-26d4 26e9-26ea 26f0-26f5 26f7-26fa 26fd 2702 2705 2708-270d 270f 2712 2714 2716 271d 2721 2728 2733-2734 2744 2747 274c 274e 2753-2755 2757 2763-2764 2795-2797 27a1 27b0 27bf 2934-2935 2b05-2b07 2b1b-2b1c 2b50 2b55 3030 303d 3297 3299 1f004 1f170-1f171 1f17e-1f17f 1f202 1f21a 1f22f 1f237 1f30d-1f30f 1f315 1f31c 1f321 1f324-1f32c 1f336 1f378 1f37d 1f393 1f396-1f397 1f399-1f39b 1f39e-1f39f 1f3a7 1f3ac-1f3ae 1f3c2 1f3c4 1f3c6 1f3ca-1f3ce 1f3d4-1f3e0 1f3ed 1f3f3 1f3f5 1f3f7 1f408 1f415 1f41f 1f426 1f43f 1f441-1f442 1f446-1f449 1f44d-1f44e 1f453 1f46a 1f47d 1f4a3 1f4b0 1f4b3 1f4bb 1f4bf 1f4cb 1f4da 1f4df 1f4e4-1f4e6 1f4ea-1f4ed 1f4f7 1f4f9-1f4fb 1f4fd 1f508 1f50d 1f512-1f513 1f549-1f54a 1f550-1f567 1f56f-1f570 1f573-1f579 1f587 1f58a-1f58d 1f590 1f5a5 1f5a8 1f5b1-1f5b2 1f5bc 1f5c2-1f5c4 1f5d1-1f5d3 1f5dc-1f5de 1f5e1 1f5e3 1f5e8 1f5ef 1f5f3 1f5fa 1f610 1f687 1f68d 1f691 1f694 1f698 1f6ad 1f6b2 1f6b9-1f6ba 1f6bc 1f6cb 1f6cd-1f6cf 1f6e0-1f6e5 1f6e9 1f6f0 1f6f3"),$a=[[65024,65039],[917760,917999]],ro=[[12593,12643],[12645,12686]];function oo(t,e){if(e===0)return;let s=e>=2?t.codePointAt(e-2):0;return s>65535?s:t.codePointAt(e-1)}var te=(t,...e)=>t!==void 0&&e.some(([s,r])=>t>=s&&t<=r);function ka(t,e,s){let r=e+(s>65535?2:1),o=t.codePointAt(r),n=oo(t,e);switch(s){case 4447:return te(o,[4449,4519],[55216,55238]);case 4448:return te(n,[4352,4446],[43360,43388]);case 12644:return te(n,...ro)||te(o,...ro);case 65440:return te(n,[65441,65500])||te(o,[65441,65500]);default:return(s===65038||s===65039?xa.has(n):_a.get(s)?.has(n))||$a.some(([i,a])=>s===i&&t[r]==="-"&&t.codePointAt(r+1)===a||s===a&&t[e-1]==="-"&&oo(t,e-1)===i)||(s===65038||s===65039)&&n===s&&io.test(t.slice(Math.max(0,e-3),e-1))}}function Sa(t,e=0){let s=null;De.lastIndex=e;for(let r=De.exec(t);r;r=De.exec(t)){let o=r.index,n=t.codePointAt(o);if(!ya.test(String.fromCodePoint(n)))continue;let i=wa(t,o,n,!1);i!==-1?De.lastIndex=i:ka(t,o,n)||(s??=new Map,s.set(n,(s.get(n)??0)+1))}return s}var co={stringOrComment:/((?=\/)(?<=(?:^|\.\.\.|[(,=:[!&|?{};>+\-*/%^<~]|(?<![\p{ID_Continue}$.#])(?:await|case|default|delete|do|else|extends|in|instanceof|new|of|return|throw|typeof|void|yield))[ \t]*)\/(?![/*])(?:[^/\\[\n]|\\.|\[(?:[^\]\\\n]|\\.)*(?:\]|(?=\\?$)))+(?:\/[a-z]*|(?=\\?$))|"(?:[^"\\\n]|\\(?:\r\n|[\s\S]))*(?:"|$)|'(?:[^'\\\n]|\\(?:\r\n|[\s\S]))*(?:'|$)|`(?:[^`\\]|\\(?:\r\n|[\s\S]))*(?:`|(?![\s\S])))|(?<![ \t])[ \t]*(?:\/\*[\s\S]*?(?:\*\/|(?![\s\S]))|\/\/.*|(?<![\s\S])\uFEFF?#!.*)[ \t]*/gmu,droppable:/(?<![\p{ID_Continue}$\\\u200C\u200D])[ \t]+|[ \t]+(?![\p{ID_Continue}$\\\u200C\u200D])/gu,needed:(t,e,s)=>"+-/".includes(t[e-1])&&t[e+s.length]===t[e-1]||t[e-2]==="\uE000"&&/[\p{ID_Continue}$\\\u200C\u200D]/u.test(t[e+s.length])},Ma={stringOrComment:/("(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*')|[ \t]*\/\*[\s\S]*?\*\/[ \t]*/gu,droppable:/(?<=[{};,:>(])[ \t]+|[ \t]+(?=[{};,>)!])|(?<=[+~])[ \t]+|[ \t]+(?=[+~])/gu,needed:(t,e,s,r)=>/[+~]/u.test(t[e-1]+t[e+s.length])&&(r>0||/^\s*--[^:]*:/u.test(t.slice(Math.max(...["{",";","}"].map(o=>t.lastIndexOf(o,e)))+1,e)))},fe=co.stringOrComment,uo=t=>/\.[cm]?js$/iu.test(t)?co:/\.css$/iu.test(t)?Ma:null,es=4*1024*1024;function po(t,{stringOrComment:e,droppable:s,needed:r}){let n=(t.length>es?t.slice(0,t.lastIndexOf(`
|
|
9
|
+
`,es)+1||es):t).replaceAll(e,(d,f)=>(f===void 0?"":f[0]==="/"?"/\uE000/":'""')+d.replaceAll(/[^\n]/gu,"")).replaceAll(/^[ \t]+/gmu,"").split(`
|
|
10
|
+
`).filter(d=>d.trim()!==""),i=n.join(`
|
|
11
|
+
`),a=i.length-(n.length-1),c=0,l=0,p=0;for(let{0:d,index:f}of i.matchAll(s)){for(;p<f;p++)c=Math.max(0,c+(i[p]==="("?1:i[p]===")"?-1:0));r(i,f,d,c)||(l+=d.length)}return n.length>0&&a>110*n.length&&l<.01*a?Math.round(a/n.length):0}var Ea=/\.[cm]?[jt]sx?$/iu,Ca=/^\uFEFF?#!.*\bnode\b/u,qe=(t,e)=>typeof e=="string"&&(Ea.test(t)||Ca.test(e)),He=100,lo=1024;function he(t){let e=null;return s=>{if(!e){e=[];for(let i=t.indexOf(`
|
|
12
|
+
`),a=0;i!==-1;i=t.indexOf(`
|
|
13
|
+
`,i+1),a++)a%lo===0&&e.push(i)}let r=e.length,o=0;for(;o<r;){let i=o+r>>1;e[i]<s?o=i+1:r=i}if(o===0)return 1;let n=(o-1)*lo+1;for(let i=t.indexOf(`
|
|
14
|
+
`,e[o-1]+1);i!==-1&&i<s;i=t.indexOf(`
|
|
15
|
+
`,i+1))n++;return n+1}}var Ia=1e3,Ue=/(?:\.(?:md|markdown|mdown|mkdn|mdx|txt|rst|adoc|asciidoc|asc|textile|rdoc|org|creole|mediawiki|wiki|pod)|(?:^|\/)(?:licen[cs]e|copying|notice|authors|contributors|readme|changelog|changes|history)(?:-[^/.]*)?(?:\.\d[^/.]*)*)$/iu,Aa=/^\s*(?:\/\/|\/\*)[#@] sourceMappingURL=/u,Ra=/^\s*(?:\/\/|\/\*)[#@] sourceMappingURL=data:[^\s,]*,[\w+/=%.~-]*\s*(?:\*\/)?\s*$/u,Ge=/\.map$/iu,za=/\.min\.[^/.]+$/iu,La=/(?<![\p{ID_Continue}$])_0x[0-9a-f]{4,6}(?![\p{ID_Continue}$])/gu,Na=20,Pa=/while\s*\(\s*!!\[\]\s*\)/u,Ta=1e3;function ja(t){let e=new Set;for(let[r]of t.matchAll(La))if(e.add(r),e.size===Ta)break;let s=Pa.test(t);return e.size>=Na||s?{names:e.size,loop:s}:null}var Ba=256*1024,Fa=/\.(?:[cm]?[jt]s|[jt]sx)$/iu,Da=/\.d\.[cm]?ts$/iu,fo=(t,e)=>typeof e=="number"&&e>=Ba&&Fa.test(t)&&!Da.test(t);function ho(t,e){let s=no(e);if(s.kind==="binary")return{...s,category:"binary",longest:0,longLines:0,average:0,inlineMap:0,obfuscation:null};let r=0,o=0,n=0,i=0;for(let l=0;l<=e.length;){let p=e.indexOf(`
|
|
16
|
+
`,l),d=p===-1?e.length:p,f=d-l-(e[d-1]==="\r"?1:0);Aa.test(e.slice(l,l+64))&&Ra.test(e.slice(l,d))?r+=f:(f>Ia&&(n++,o+=f),i=Math.max(i,f)),l=d+1}let a=Ue.test(t)||Ge.test(t)?null:ja(e),c={...s,longest:i,longLines:n,average:0,inlineMap:r,obfuscation:a};if(Ge.test(t))return{...c,category:"map"};if(Ue.test(t))return{...c,category:r>0?"inline-map":s.kind};if(n===0){let l=uo(t),p=l!==null&&i>110?po(e,l):0;return{...c,average:p,category:r>0?"inline-map":p>0?"minified":s.kind}}return o/(e.length-r)<.5&&!za.test(t)?{...c,category:"long"}:{...c,category:r>0?"inline-map":"minified"}}var ts=t=>t.category==="long"?t.kind:t.category;function mo(t){let e=[...Ua(t.controls),...t.longLines>0&&["long","minified","inline-map"].includes(t.category)?["long"]:[]],s=ts(t);return se.get(s).mark||e.length===0?[...e,s]:e}var go=(t,e)=>e==="long"&&t.category!=="long"?"notice":se.get(e).mark,se=new Map([["binary",{name:"Binary",tag:"Binary",mark:"warn"}],["controls",{name:"Control chars",tag:"Controls",mark:"warn"}],["invisible",{name:"Invisible chars",tag:"Invisible",mark:"warn"}],["long",{name:"Long lines",tag:"Long lines",mark:"warn"}],["minified",{name:"Minified",tag:"Minified",short:"Min",mark:"notice"}],["map",{name:"Source maps",tag:"Map",mark:"notice"}],["inline-map",{name:"Inline source maps",tag:"Inline map",mark:"notice"}],["utf8",{name:"UTF-8",tag:"UTF-8",mark:null}],["ascii",{name:"ASCII",tag:"ASCII",mark:null}]]),qa=new RegExp(Qt.source,"u"),Ha=(t,e)=>[...t??[]].filter(([s])=>qa.test(String.fromCodePoint(s))===(e==="controls")).toSorted((s,r)=>r[1]-s[1]||s[0]-r[0]),Ua=t=>t?["controls","invisible"].filter(e=>Ha(t,e).length>0):[];var bo=1e3,vo=String.raw`[\p{L}\p{N}](?:[\p{L}\p{N}-]*[\p{L}\p{N}])?`,Ga=new RegExp(String.raw`\b(?:https?|wss?|ftp)\??:\/\/(?:[^\s/@'"\x60]*@)?(${vo}(?:\.${vo})+)(?![\p{L}\p{N}-]|\.[\p{L}\p{N}_$-])`,"giu"),Va=/\.(?:\p{L}{2,}|xn--[a-z0-9-]+)$/u,Wa=/^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$/u,Ka=/^(?:localhost|.+\.(?:localhost|local|test|invalid|example|internal)|(?:.+\.)?example\.(?:com|net|org)|127(?:\.\d+){3}|0\.0\.0\.0|(?:.+\.)?w3\.org)$/u,Za=/\\([/.])/gu,Ja=new Set(["issues","pull","pulls","blob","tree","wiki","discussions","commit","commits","compare","blame","security","projects","labels","milestone","milestones","releases","tags","graphs","network","stargazers"]),Ya=new Set(["sponsors","orgs","apps","marketplace","features","topics","collections","settings","login","search","explore","about"]),Xa=new Set(["blob","tree","blame","wiki"]),Qa=/\.(?:patch|diff|atom)$/iu,wo=/\.git$/iu,el=t=>{try{return decodeURIComponent(t)}catch{return t}};function tl(t){let e=null;try{e=new URL(t.replace(/^(\w+)\?:/u,"$1:").replace(/[)\]}>.,;:!]+$/u,""))}catch{}if(!e)return"github.com/";let s=e.pathname.split("/").slice(1).map(el);s.length>1&&s.at(-1)===""&&s.pop();let[r,o="",n,...i]=s,a=r!==""&&o!==""&&!wo.test(o)&&Ja.has(n)&&!(n==="releases"&&i.includes("download"))&&!(n==="blob"&&e.searchParams.has("raw"))&&!(!Xa.has(n)&&Qa.test(s.at(-1)));return e.hostname.replace(/\.$/u,"")==="github.com"&&(s.length===1||Ya.has(r)||a)?"github.com":`github.com/${r}/${o.replace(wo,"")}`.toLowerCase()}function _o(t,e){if(!qe(t,e)||!(e.includes("://")||e.includes(":\\/\\/")))return null;let s=new Map,r=he(e);for(let{1:o,index:n}of e.matchAll(fe)){if(s.size>=bo)break;let i=o?.startsWith("/")?o.replace(/\/[a-z]*$/u,""):o,a=i?.includes("\\")?i.replaceAll(Za,"$1"):i;if(a?.includes("://"))for(let{1:c,index:l}of a.matchAll(Ga)){let p=c.toLowerCase(),d=p==="github.com"?tl(/^[^\s'"\u0060]*/u.exec(a.slice(l))[0]):p;if(!s.has(d)&&(Va.test(p)||Wa.test(p))&&!Ka.test(p)&&s.set(d,r(n+l)),s.size>=bo)break}}return s.size>0?s:null}var Ve=String.raw`[\p{L}\p{N}_-]`,_=(t,e="")=>new RegExp(String.raw`(?<!${Ve})${t}${e}(?!\.?${Ve})`,"giu"),yo=t=>new RegExp(String.raw`(?<=(?:(?:^|[\s'"\x60(=,<>])(?:https?|wss?|ftp)\??:|['"\x60(=,])\\?\/\\?\/(?:[^\s/@'"\x60]*@)?(?:${Ve}+\.)*)${t}(?!\.?${Ve}|(?::[^\s/@'"\x60]*)?@)`,"giu"),We=new Map([["Exfiltration","critical"],["Remote","high"],["IP lookup","moderate"]]),[L,M,Y]=[...We.keys()].map(t=>({tag:t})),ss=new Map([["webhook-site",{...L,name:"webhook.site",pattern:_(String.raw`webhook\.site`)}],["pipedream",{...L,name:"Pipedream",pattern:_(String.raw`pipedream\.net`)}],["requestbin",{...L,name:"RequestBin",pattern:_(String.raw`(?:requestbin\.(?:net|com)|requestb\.in)`)}],["requestcatcher",{...L,name:"Request Catcher",pattern:_(String.raw`requestcatcher\.com`)}],["requestrepo",{...L,name:"requestrepo",pattern:_(String.raw`requestrepo\.com`)}],["beeceptor",{...L,name:"Beeceptor",pattern:_(String.raw`beeceptor\.com`)}],["oast",{...L,name:"OAST",pattern:_(String.raw`(?:interact\.sh|interactsh\.com|oast\.(?:pro|live|site|online|fun|me)|oastify\.com|burpcollaborator\.net)`)}],["canarytokens",{...L,name:"Canarytokens",pattern:_(String.raw`canarytokens\.(?:com|org)`)}],["dnslog",{...L,name:"DNSLog",pattern:_(String.raw`dnslog\.cn`)}],["ceye",{...L,name:"CEYE",pattern:_(String.raw`ceye\.io`)}],["telegram",{...M,name:"Telegram",pattern:_(String.raw`api\.telegram\.org`)}],["discord",{...M,name:"Discord webhook",pattern:_(String.raw`discord(?:app)?\.com`,String.raw`/api(?:/v\d+)?/webhooks`)}],["slack",{...M,name:"Slack webhook",pattern:_(String.raw`hooks\.slack\.com`,"/(?:services|workflows|triggers)")}],["pastebin",{...M,name:"Pastebin",pattern:_(String.raw`pastebin\.com`)}],["paste-ee",{...M,name:"paste.ee",pattern:_(String.raw`paste\.ee`)}],["transfer-sh",{...M,name:"transfer.sh",pattern:yo(String.raw`transfer\.sh`)}],["file-io",{...M,name:"file.io",pattern:yo(String.raw`file\.io`)}],["0x0",{...M,name:"0x0.st",pattern:_(String.raw`0x0\.st`)}],["ngrok",{...M,name:"ngrok",pattern:_(String.raw`ngrok(?:-free)?\.(?:io|app|dev)`)}],["localtunnel",{...M,name:"localtunnel",pattern:_(String.raw`loca\.lt`)}],["cloudflare-tunnel",{...M,name:"Cloudflare Tunnel",pattern:_(String.raw`trycloudflare\.com`)}],["serveo",{...M,name:"Serveo",pattern:_(String.raw`serveo\.net`)}],["pipedream-api",{...M,name:"Pipedream API",pattern:_(String.raw`pipedream\.com`)}],["bun",{...M,name:"Bun install",pattern:_(String.raw`bun\.(?:sh|com)`,"/install")}],["ipinfo",{...Y,name:"ipinfo",pattern:_(String.raw`ipinfo\.io`)}],["ipify",{...Y,name:"ipify",pattern:_(String.raw`ipify\.org`)}],["ifconfig-me",{...Y,name:"ifconfig.me",pattern:_(String.raw`ifconfig\.me`)}],["icanhazip",{...Y,name:"icanhazip",pattern:_(String.raw`icanhazip\.com`)}],["ip-api",{...Y,name:"ip-api",pattern:_(String.raw`ip-api\.com`)}],["ipapi",{...Y,name:"ipapi",pattern:_(String.raw`ipapi\.com?`)}],["checkip",{...Y,name:"checkip",pattern:_(String.raw`checkip\.amazonaws\.com`)}]]),sl=new RegExp([...ss.values()].map(({pattern:t})=>t.source).join("|"),"iu");function xo(t,e){if(typeof e!="string"||Ue.test(t)||Ge.test(t)||!sl.test(e))return null;let s=new Map,r=he(e);for(let[o,{pattern:n}]of ss){let i=new Set;for(let{index:a}of e.matchAll(n))if(i.add(r(a)).size>=He)break;i.size>0&&s.set(o,[...i])}return s.size>0?s:null}function rl(t,e){let s=t&&new Map([...t].filter(([r])=>ss.get(r).tag===e));return s?.size>0?s:null}var $o=t=>[...We.keys()].map(e=>[e,rl(t,e)]).filter(([,e])=>e);function ko(t,e,s){let r=[...We.values()],o=r.indexOf(We.get(t));return r[s!==void 0&&[...e.keys()].some(n=>!s?.has(n))?Math.max(0,o-1):o]}var Lo=String.raw`/\*(?:[^*]|\*(?!/)){0,100}\*/|//[^\n]{0,100}\n`,w=String.raw`(?:\s|${Lo})*`,rs=String.raw`(?:${w}\??\.${w}(?:call|apply))?${w}(?:\?\.${w})?\(`,ol=String.raw`(?!${w}(?<quote>["'\u0060])\s*return\s+this\s*;?\s*\k<quote>${w}\))`,So=String.raw`process${w}\.${w}env(?![\p{ID_Continue}$])(?!${w}(?:\??\.|\[))`,nl=String.raw`${w}\)${w}\??\.${w}(?:filter|find|findLast|some|every|reduce)(?![\p{ID_Continue}$])`,Mo=String.raw`(?:\{${w}\.\.\.${w})?`,il=String.raw`(?=JSON|Object|URLSearchParams)(?<![\p{ID_Continue}$.])(?:JSON${w}\.${w}stringify|URLSearchParams)${w}\(${w}${Mo}${So}`+String.raw`|(?=Object)(?<![\p{ID_Continue}$.])Object${w}\.${w}(?:values|entries)${w}\(${w}${Mo}${So}(?!${nl})`,Eo=new RegExp(String.raw`eval|Function${rs}|vm["'\x60]|_compile|child_process|\.(?:npmrc|ssh|aws)|_TOKEN|(?:stringify|values|entries|URLSearchParams)${w}\(${w}(?:\{${w}\.\.\.${w})?process${w}\.${w}env|publish|whoami|registry\.(?:npmjs\.org|yarnpkg\.com)`,"u"),Co="globalThis|window|global|self",Oo=t=>String.raw`(?=${Co}|${t})(?<![\p{ID_Continue}$#])(?<!(?<!\.)\.${w})(?<!\bfunction${w})(?:(?:${Co})${w}\??\.${w})?${t}`,me="(?:NPM|GITHUB)_TOKEN",No=String.raw`\s{0,4}=(?![=>])`,al=String.raw`\s{0,4}(?:\?:|:\s{0,4}(?:string|number|boolean|unknown|any)(?![\p{ID_Continue}$]))`,Po=String.raw`\s{0,4}(?:(?:\)\s{0,4}){1,4}(?![\s)]{0,8}(?:[.[(]|\?\.))|&&|\|\||\?\?|\?(?!\.)|[;,:}\]]|$)`,ll=String.raw`(?=NPM|GITHUB)(?<![\p{ID_Continue}$])(?<!\b(?:const|let|var)\s{1,4})`+String.raw`(?:(?<!(?:!|\bdelete\s)[\s(]{0,4}(?:[\p{ID_Continue}$]{1,64}\s{0,4}\??\.\s{0,4}){0,4})|(?!${me}${Po}))`+String.raw`${me}(?![\p{ID_Continue}$])(?!${al})(?:(?!${No})|(?<=[{,]\s{0,64}${me}))`,cl=new RegExp(String.raw`${fe.source}|(?<eval>${Oo("eval")}(?![\p{ID_Continue}$])(?!\s*\?:))|(?<function>${Oo("Function")}${rs}${ol})`+String.raw`|(?<compile>\.${w}_compile(?:${rs}|${w}=(?![=>])))|(?<tokens>${ll})|(?<env>${il})|(?<put>\.${w}put${w}\()`,"gmu"),dl=/\.(?:npmrc|ssh|aws)|_TOKEN|publish|whoami|registry\./u,ul=new RegExp(String.raw`^\s{0,4}\]${No}`,"u"),pl=new RegExp(String.raw`^\s{0,4}\]${Po}`,"mu"),fl=/(?:!|\bdelete\s)[\s(]{0,4}(?:[\p{ID_Continue}$]{1,64}\s{0,4}\??\.\s{0,4}){0,4}[\p{ID_Continue}$]{1,64}\s{0,4}(?:\?\.\s{0,4})?\[\s{0,4}$/u,hl=/\\(?:x([\da-f]{2})|u([\da-f]{4})|u\{([\da-f]{1,6})\}|([0-3][0-7]{0,2}|[4-7][0-7]?)|(\r\n|[^]))/giu,ml=new Map([["n",`
|
|
17
|
+
`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"]]),gl=new Set([`
|
|
18
|
+
`,"\r",`\r
|
|
19
|
+
`,"\u2028","\u2029"]),bl=t=>t.replace(hl,(e,s,r,o,n,i)=>{if(i!==void 0)return gl.has(i)?"":ml.get(i)??i;let a=n===void 0?Number.parseInt(s??r??o,16):Number.parseInt(n,8);return a<=1114111?String.fromCodePoint(a):e}),Io=String.raw`registry\.(?:npmjs\.org|yarnpkg\.com)`,vl=new RegExp(String.raw`(?:[/\\]{2}|\bhttps?:[/\\]?)(?:[^/\\?#]{0,256}@)?${Io}|^(["'\u0060])${Io}(?=\1$|[/:?#])`,"iu"),wl=/[\t\n\r]/gu,yl=[["credential-files",/(?<![\w$.-])\.(?:npmrc|ssh|aws)(?![\w-])/gu],["tokens",new RegExp(String.raw`^["'\u0060]${me}["'\u0060]$|(?:\$\{?|%)${me}(?![\p{ID_Continue}$])`,"gu")],["publish",/(?<![\w-])(?:npm|pnpm|yarn)(?:\s+-{1,2}\w[\w-]*(?:=\S*|\s+(?!-)\S+)?){0,8}?\s+publish(?![\w-])|\/-\/whoami(?![\w-])/gu]],_l=[["vm",/^(["'\u0060])(?:node:)?vm\1$/u],["child-process",/^(["'\u0060])(?:node:)?child_process\1$/u],["publish",/^(["'\u0060])libnpmpublish\1$/u]],xl=/^(["'\u0060])(?:npm|pnpm|yarn)\1$/u,$l=/^(["'\u0060])publish\1$/u,Ao=/^(["'\u0060])-/u,kl=new RegExp(String.raw`^(?:[\s,[]|${Lo})*$`,"u"),Sl=/^(["'\u0060])put\1$/iu,Ml=new RegExp(String.raw`\bmethod["']?${w}[:=]${w}$`,"u"),El=new RegExp(String.raw`(?:(?:require[\w$]*${w}(?:\?\.${w})?|\bimport${w})\(|\b(?:from|import))${w}$`,"u"),Cl=new RegExp(String.raw`\b(?:import|export)${w}type\b(?!${w}(?:from\b|=))[^;'"\x60]*(?:\bfrom|=${w}require${w}\()${w}$`,"u"),Ke={tag:"eval",note:"Runs a string as code"},Ro={tag:"credentials",note:"Reaches for credentials"},Ze=new Map([["eval",{...Ke,name:"eval"}],["function",{...Ke,name:"Function"}],["vm",{...Ke,name:"vm"}],["compile",{...Ke,name:"Module._compile"}],["child-process",{tag:"child_process",note:"Runs other programs",name:"child_process"}],["credential-files",{...Ro,name:".npmrc, .ssh or .aws"}],["tokens",{...Ro,name:"NPM_TOKEN or GITHUB_TOKEN"}],["env",{tag:"whole env",note:"Reads out the whole environment",name:"process.env, by JSON.stringify, Object.entries or values, URLSearchParams",mark:"critical"}],["publish",{tag:"publish",note:"Publishes to npm",name:"npm publish, /-/whoami or a registry PUT",mark:"critical"}]]);function To(t,e){if(!qe(t,e))return null;let s=new Map,r=(n,i)=>{let a=s.get(n);a?a.length<He&&a.push(i):s.set(n,[i])};if(jo(e,0,r),s.has("registry"))for(let n of s.get("put")??[])r("publish",n);if(![...Ze.keys()].some(n=>s.has(n)))return null;let o=he(e);return new Map([...Ze.keys()].filter(n=>s.has(n)).map(n=>[n,[...new Set(s.get(n).map(o))].toSorted((i,a)=>i-a)]))}function jo(t,e,s){if(!Eo.test(t))return;let r=0,o=!1,n=!1;for(let{0:i,1:a,groups:c,index:l}of t.matchAll(cl)){if(a===void 0){for(let b of Ol)c[b]&&s(b,e+l);continue}if(a[0]==="/")continue;let p=a[0]==="`"&&Eo.test(a)?Rl(a):[];for(let[b,y]of p)jo(a.slice(b,y),e+l+b,s);let d=p.length===0?a:Al(a,p),f=()=>{let b=t.slice(l+i.length,l+i.length+20);return!ul.test(b)&&(!pl.test(b)||!fl.test(t.slice(Math.max(0,l-300),l)))},h=dl.test(d)?yl.flatMap(([b,y])=>[...d.matchAll(y)].map(({index:O})=>[b,O])):[];for(let[b,y]of h)(b!=="tokens"||y>0||f())&&s(b,e+l+y);d.includes("registry.")&&vl.test(bl(d).replace(wl,""))&&s("registry",e+l);for(let[b,y]of _l)y.test(a)&&Il(t,l)&&s(b,e+l);n&&kl.test(t.slice(r,l))?($l.test(a)&&s("publish",e+l),n=Ao.test(a)||o,o=Ao.test(a)):n=!1,xl.test(a)&&([n,o]=[!0,!1]),Sl.test(a)&&Ml.test(t.slice(Math.max(0,l-300),l))&&s("put",e+l),r=l+i.length}}var Ol=["eval","function","compile","tokens","env","put"];function Il(t,e){let s=t.slice(Math.max(0,e-300),e);return El.test(s)&&!Cl.test(s)}function Al(t,e){let s=[],r=0;for(let[o,n]of e)s.push(t.slice(r,o)," ".repeat(n-o)),r=n;return s.push(t.slice(r)),s.join("")}function Rl(t){let e=[];for(let s=t.indexOf("${");s!==-1;s=t.indexOf("${",s)){let r=0;for(;t[s-1-r]==="\\";)r++;if(r%2===1){s+=2;continue}let o=zl(t,s+2);e.push([s+2,o]),s=o}return e}var zo=new RegExp(fe.source,"muy");function zl(t,e){let s=0;for(let r=e;r<t.length;r++){let o=t[r];if("\"'`/ ".includes(o)){zo.lastIndex=r;let n=zo.exec(t);if(n){r+=n[0].length-1;continue}}if(o==="{")s++;else if(o==="}"&&s--===0)return r}return t.length}var $p=t=>[...new Set([...Ze].filter(([e])=>t.some(s=>s.has(e))).map(([,{tag:e}])=>e))].join(", ");var Bo=t=>[...new Map([...t?.keys()??[]].map(e=>Ze.get(e)).map(({tag:e,mark:s})=>[e,{name:e,severity:s??"high"}])).values()];var Cp=["critical","high","moderate","low","notice"],Fo=t=>t==="warn"?"high":"notice";function Ll({path:t,bytes:e,readability:s,runsCode:r,exfiltration:o}){let n=ts(s),i=n!=="ascii"&&n!=="map"&&se.get(n).mark;return[...Bo(r),...$o(o).map(([a,c])=>({name:a,severity:ko(a,c)})),...fo(t,e)?[{name:"Large",severity:"notice"}]:[],...s.obfuscation?[{name:"Obfuscated",severity:"high"}]:[],...mo(s).filter(a=>a==="controls"||a==="long").map(a=>({name:se.get(a).tag,severity:Fo(go(s,a))})),...i?[{name:se.get(n).tag,severity:Fo(i)}]:[]]}function Op(t,e,s){let r=ho(t,e),o=xo(t,e),n=To(t,e);return{readability:r,runsCode:n,exfiltration:o,hosts:_o(t,e),stamps:Ll({path:t,bytes:s,readability:r,runsCode:n,exfiltration:o})}}function Pp(t,e=[]){let s=new Map,r=t.flatMap(o=>{let n=e.filter(a=>a.bundles?.includes(o.integrity));return(n.length>0?n.map(a=>({id:a.id,label:a.name})):[{id:"unattached",label:"Unattached"}]).map(a=>(s.set(a.id,a),{id:o.integrity,integrity:o.integrity,filename:o.name,repoId:a.id,repo:a.label,files:null,reasons:[],size:"\u2014"}))});return{repositories:[...s.values()],bundles:r,reports:[],scans:[]}}function Tp(t,e){if(e.error)throw new Error(e.error);let s=Et(e),r=e.kind==="stasis"?e.bundle?.formats:null,o=It(e),n=[...T(e)].filter(([,a])=>a!=null).map(([a,c])=>({path:a,format:r?.get(a)??null,bytes:c,lines:o.get(a)??0,size:B(c),module:X(a,{packageDir:s?.get(a)})})),i=[{id:"all",label:"All",filePaths:null},...[...Jt(e,n.map(a=>a.path))].map(([a,c])=>({id:`reason:${a}`,label:a,filePaths:[...c]}))];return{...t,files:n,reasons:i,size:B(e.size)}}export{et as a,Pl as b,jl as c,C as d,j as e,Dc as f,Te as g,Ri as h,Rt as i,Gr as j,ke as k,Ji as l,Wu as m,Ku as n,Zu as o,aa as p,Ju as q,tt as r,Gl as s,z as t,ac as u,Ne as v,pc as w,fc as x,Ir as y,xi as z,T as A,hc as B,mc as C,Et as D,gc as E,Mc as F,Mi as G,Ei as H,It as I,Ec as J,Cc as K,Oc as L,Jt as M,ua as N,pa as O,op as P,to as Q,np as R,ip as S,Pp as T,Tp as U,up as V,pp as W,wa as X,He as Y,Ia as Z,Na as _,Ta as $,ho as aa,ts as ba,mo as ca,go as da,se as ea,Ha as fa,We as ga,ss as ha,$o as ia,ko as ja,Ze as ka,$p as la,Cp as ma,Op as na};
|
|
20
|
+
/*!
|
|
21
|
+
* PHP elephant adapted from Material Icon Theme:
|
|
22
|
+
* https://github.com/material-extensions/vscode-material-icon-theme/blob/main/icons/php_elephant.svg
|
|
23
|
+
* Copyright (c) 2025 Material Extensions
|
|
24
|
+
*
|
|
25
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
26
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
27
|
+
* in the Software without restriction, including without limitation the rights
|
|
28
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
29
|
+
* of the Software, and to permit persons to whom the Software is furnished to do
|
|
30
|
+
* so, subject to the following conditions:
|
|
31
|
+
*
|
|
32
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
33
|
+
* copies or substantial portions of the Software.
|
|
34
|
+
*
|
|
35
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
36
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
37
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
38
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
39
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
40
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
41
|
+
* SOFTWARE.
|
|
42
|
+
*/
|
|
43
|
+
/*! Bundled license information:
|
|
44
|
+
|
|
45
|
+
lit-html/directives/live.js:
|
|
46
|
+
(**
|
|
47
|
+
* @license
|
|
48
|
+
* Copyright 2020 Google LLC
|
|
49
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
50
|
+
*)
|
|
51
|
+
*/
|