@preventive/triage 1.0.0-alpha.44 → 1.0.0-alpha.46
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/client/linked-findings.js +3 -0
- package/common/bundle-metadata.d.ts +1 -0
- package/common/bundle-metadata.js +1 -1
- package/common/bundle-sources.js +25 -2
- package/common/default-scan-models.ts +1 -1
- package/common/dependency-reviews.d.ts +0 -5
- package/common/dependency-reviews.js +0 -17
- package/common/line-diff.js +5 -4
- package/common/managed/agent-tasks.ts +292 -0
- package/common/managed/github-agents.ts +92 -0
- package/common/managed/github-logins.ts +49 -0
- package/common/managed/roles.ts +7 -0
- package/common/managed/routes.js +88 -7
- package/common/managed/team-app.d.ts +5 -2
- package/common/managed/team-app.js +2 -2
- package/common/server-info.ts +3 -0
- package/common/workspace-app.js +6 -3
- package/out/brotli-fallback.js +3 -3
- package/out/chunk-2XUEZHIP.js +18 -18
- package/out/chunk-2ZDZWLFY.js +1 -0
- package/out/chunk-3PS4KWD2.js +10 -0
- package/out/chunk-4HI2MSAV.js +17 -0
- package/out/chunk-4UFAMJAX.js +1 -0
- package/out/chunk-7C7DWL7I.js +1 -0
- package/out/chunk-7XRR4OFU.js +1 -0
- package/out/chunk-BC2UCLFJ.js +1 -0
- package/out/chunk-BOIXMUU5.js +3 -0
- package/out/chunk-C4Z6ZBXV.js +6 -6
- package/out/chunk-CC4OM6TZ.js +3 -0
- package/out/chunk-G24A42V6.js +2 -0
- package/out/chunk-GDPCLSOS.js +2 -0
- package/out/chunk-GO7FT4OD.js +1 -0
- package/out/chunk-I2MDGSQX.js +3 -0
- package/out/chunk-IYPY47MC.js +1 -0
- package/out/chunk-IZ7POWI3.js +18 -0
- package/out/chunk-JCIIBLKR.js +1 -1
- package/out/chunk-JKGQ3O7O.js +6 -0
- package/out/chunk-LE5ZWLG4.js +235 -0
- package/out/chunk-MSION3G4.js +36 -0
- package/out/chunk-NRPC74AM.js +1 -1
- package/out/chunk-OKRLLE5I.js +17 -0
- package/out/chunk-OOJM4CTU.js +1 -1
- package/out/chunk-PNHBZGDD.js +1 -1
- package/out/chunk-PXK7EU4V.js +1 -0
- package/out/chunk-QB4CBOX2.js +1 -0
- package/out/chunk-R3NZFXVR.js +1 -0
- package/out/chunk-R5O6FAW4.js +1 -1
- package/out/chunk-S6GIXWQW.js +52 -0
- package/out/chunk-SXV2T5C4.js +80 -0
- package/out/chunk-TUII34K2.js +1 -1
- package/out/chunk-V3KWNNMY.js +1 -0
- package/out/chunk-VFWMQ3LG.js +2 -0
- package/out/chunk-VH4XMZIW.js +2 -0
- package/out/chunk-WFYLMF6Z.js +10 -0
- package/out/chunk-WQ74ZBZF.js +7 -0
- package/out/client-managed-import.js +3 -3
- package/out/client-managed.js +31 -35
- package/out/client-sync.js +11 -11
- package/out/compare.js +35 -0
- package/out/dialogs.js +51 -0
- package/out/github-issue-authorized.html +1 -1
- package/out/github-issue-authorized.js +1 -1
- package/out/graph.js +17 -17
- package/out/index.html +30 -34
- package/out/prism.js +14 -14
- package/out/scan.js +2 -0
- package/out/terminal.js +294 -293
- package/out/view.css +1 -1
- package/out/view.js +16 -107
- package/package.json +53 -6
- package/risk/actions/findings.js +161 -0
- package/risk/actions/resolve.js +219 -0
- package/risk/actions/scripts/commands.js +182 -0
- package/risk/actions/scripts/grade.js +113 -0
- package/risk/actions/scripts/packages.js +123 -0
- package/risk/actions/scripts/shell.js +169 -0
- package/risk/actions/uses.js +76 -0
- package/risk/actions/workflow.js +110 -0
- package/risk/files/hosts.js +6 -6
- package/risk/files/readability.js +23 -17
- package/risk/files/runs-code.js +18 -6
- package/risk/files/script.js +7 -3
- package/risk/files/stamps.js +8 -7
- package/risk/index.d.ts +71 -1
- package/risk/index.js +6 -2
- package/risk/npm/assess.js +1 -1
- package/risk/npm/compare.js +34 -10
- package/risk/npm/files.js +413 -2
- package/risk/npm/tarball.js +56 -73
- package/server-e2e/app.ts +5 -4
- package/server-e2e/http.ts +5 -2
- package/server-managed/agent-merges.ts +198 -0
- package/server-managed/app-agents.ts +30 -0
- package/server-managed/avatar-store.ts +1 -0
- package/server-managed/bundle-cache.ts +7 -1
- package/server-managed/combined.ts +3 -2
- package/server-managed/commit-coauthors.ts +83 -0
- package/server-managed/commit-lockfiles.ts +72 -0
- package/server-managed/config.ts +6 -0
- package/server-managed/db-methods.ts +66 -19
- package/server-managed/db-neon.ts +89 -21
- package/server-managed/db-schema.ts +13 -2
- package/server-managed/db.ts +9 -1
- package/server-managed/dependabot-access.ts +60 -0
- package/server-managed/dependabot-alerts.ts +185 -0
- package/server-managed/dependency-review-comments.ts +97 -0
- package/server-managed/dependency-reviews.ts +78 -18
- package/server-managed/github-accounts.ts +33 -0
- package/server-managed/github-actions.ts +71 -0
- package/server-managed/github-app.ts +33 -13
- package/server-managed/github-errors.ts +2 -0
- package/server-managed/github-issue-links.ts +11 -5
- package/server-managed/github-link-oauth.ts +69 -0
- package/server-managed/github-links.ts +204 -0
- package/server-managed/github-oauth.ts +5 -2
- package/server-managed/github-pulls.ts +2 -2
- package/server-managed/github-requests.ts +39 -0
- package/server-managed/github-users.ts +30 -0
- package/server-managed/http-response.ts +10 -2
- package/server-managed/http.ts +1251 -97
- package/server-managed/index.ts +13 -8
- package/server-managed/kept-briefly.ts +37 -0
- package/server-managed/locked-packages.ts +37 -16
- package/server-managed/lockfile-scope.ts +49 -0
- package/server-managed/npm-delta-worker.js +23 -0
- package/server-managed/npm-delta.ts +178 -0
- package/server-managed/npm-insights.ts +20 -11
- package/server-managed/npm-kept.ts +83 -6
- package/server-managed/npm-loads.ts +114 -37
- package/server-managed/npm-packages.ts +110 -64
- package/server-managed/npm-risk.ts +4 -1
- package/server-managed/pretty-print.ts +67 -23
- package/server-managed/pull-comment-reviews.ts +161 -0
- package/server-managed/pull-dependencies.ts +300 -0
- package/server-managed/pull-dependency-reviews.ts +318 -0
- package/server-managed/pull-reviews.ts +205 -0
- package/server-managed/queue.ts +16 -0
- package/server-managed/release-commits.ts +84 -0
- package/server-managed/rename-diff.ts +22 -13
- package/server-managed/report-sources.ts +1 -1
- package/server-managed/report-store.ts +42 -9
- package/server-managed/repository-actions.ts +218 -0
- package/server-managed/repository-agents.ts +220 -0
- package/server-managed/repository-browser.ts +166 -37
- package/server-managed/repository-changes.ts +284 -0
- package/server-managed/repository-code.ts +52 -0
- package/server-managed/repository-dependency-reviews.ts +157 -0
- package/server-managed/repository-history.ts +461 -0
- package/server-managed/repository-issues.ts +181 -0
- package/server-managed/repository-pulse.ts +439 -0
- package/server-managed/repository-risk-audit.ts +13 -0
- package/server-managed/repository-risk-read.ts +170 -0
- package/server-managed/repository-risk.ts +133 -118
- package/server-managed/reviewed-dependencies.ts +149 -0
- package/server-managed/session.ts +27 -9
- package/server-managed/sql.ts +6 -3
- package/server-managed/storage-stores.ts +5 -0
- package/server-managed/storage.ts +4 -2
- package/server-managed/team-app.ts +19 -3
- package/server-managed/team-reports.ts +24 -12
- package/server-managed/upstream-cache.ts +12 -0
- package/server-managed/workspace-shares.ts +4 -1
- package/server.ts +25 -5
- package/out/chunk-2ABLKCOY.js +0 -46
- package/out/chunk-2KBF5TZ7.js +0 -2
- package/out/chunk-35VE6CDH.js +0 -2
- package/out/chunk-3BZ7JERB.js +0 -1
- package/out/chunk-4XCDFGDP.js +0 -10
- package/out/chunk-5LSXOLUS.js +0 -1
- package/out/chunk-5RCM2J63.js +0 -1
- package/out/chunk-7B6HB4D7.js +0 -1
- package/out/chunk-AJ4GTATZ.js +0 -3
- package/out/chunk-CH4UN6WK.js +0 -225
- package/out/chunk-CMQA4DM6.js +0 -1
- package/out/chunk-CVVJAXVY.js +0 -2
- package/out/chunk-DIJJNTRH.js +0 -10
- package/out/chunk-EDKLBQQN.js +0 -17
- package/out/chunk-F47DXCEV.js +0 -33
- package/out/chunk-FK3DZEKL.js +0 -1
- package/out/chunk-G6AJWENO.js +0 -1
- package/out/chunk-GJ4IUCNS.js +0 -1
- package/out/chunk-GNXOKIGP.js +0 -80
- package/out/chunk-GZ4MS3TE.js +0 -13
- package/out/chunk-GZWM7UQM.js +0 -2
- package/out/chunk-IU3CCINR.js +0 -3
- package/out/chunk-K3X5EJBQ.js +0 -2
- package/out/chunk-KEX2ATEW.js +0 -2
- package/out/chunk-KYCNJVB7.js +0 -1
- package/out/chunk-LPCTJYNA.js +0 -7
- package/out/chunk-O4RJY5TP.js +0 -2
- package/out/chunk-OD4LPN3H.js +0 -1
- package/out/chunk-QWDWTBM7.js +0 -1
- package/out/chunk-QYWKC557.js +0 -1
- package/out/chunk-R75XOKUP.js +0 -1
- package/out/chunk-SWTLADW5.js +0 -1
- package/out/chunk-T7OKH4VW.js +0 -1
- package/out/chunk-TZ5KB2Y5.js +0 -10
- package/out/chunk-UNTRGE26.js +0 -2
- package/out/chunk-UTR2LVME.js +0 -2
- package/out/chunk-UYAXVRVL.js +0 -1
- package/out/chunk-V3ME6FI5.js +0 -2
- package/out/chunk-V5O7M2YT.js +0 -1
- package/out/chunk-VIHGO77Y.js +0 -1
- package/out/chunk-W4J3MGLB.js +0 -1
- package/out/chunk-WGG7KQUH.js +0 -1
- package/out/chunk-XYFXXB2G.js +0 -10
- package/out/chunk-ZESLQCTF.js +0 -6
package/out/chunk-2ABLKCOY.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import{a as ft,e as gt,l as oe,o as bt,t as vt}from"./chunk-ZESLQCTF.js";import{a as z,b as re,c as ut,d as $e}from"./chunk-R75XOKUP.js";import{a as F,b as wt}from"./chunk-OD4LPN3H.js";import{a as se}from"./chunk-TZ5KB2Y5.js";import{a as ht,d as mt}from"./chunk-XYFXXB2G.js";import{a as R}from"./chunk-DIJJNTRH.js";import{D as te,F as dt,J as ye,L as pt,q as ct}from"./chunk-GNXOKIGP.js";import{a as P,b as st,c as ot}from"./chunk-C4Z6ZBXV.js";import{a as rt,b as y,c as l,d as $,f as U,g as m,j as k}from"./chunk-2XUEZHIP.js";import{a as it,c as X,d as nt,i as at,m as Q,n as ee,o as lt}from"./chunk-V5O7M2YT.js";var _t={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="${it}"/>`},"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"/>'}},Hr={default:["#2563eb","#fff"],"claude-security":["#d97757","#fff"],"codex-security":["#fff","#000"],deepsec:["#000","#fff"],piolium:["#fbb829","#1c1b19"],"markdown-generic":["#374151","#fff"]},ke=Object.fromEntries(Object.entries(_t).map(([r,{className:e,mark:t}])=>{let[s,o]=Hr[r],i=r==="codex-security"||r==="deepsec"?` stroke="${o}" stroke-width=".5"`:"";return[r,`<svg class="file-icon ${e}" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path class="bg" fill="${s}"${i} d="M3 2h6l4 4v8H3z"/><path fill="rgba(0,0,0,.18)" d="M9 2v4h4Z"/><g fill="${o}">${t}</g></svg>`]})),vi=Object.fromEntries(Object.entries(_t).map(([r,{className:e,mark:t}])=>[r,`<span class="report-logo ${e}" aria-hidden="true"><svg viewBox="${r==="default"?"3.5 4 9 9":"4 5 8 8"}" width="14" height="14">${t}</svg></span>`]));function _i(r){let e=r.toLowerCase();if(e.endsWith(".generic-md")){let t=r.slice(0,-11);try{return decodeURIComponent(t)}catch{return t}}return e.endsWith(".codex")?r.slice(0,-6).replaceAll("__","/"):r}var C=st(class extends ot{constructor(r){if(super(r),r.type!==P.PROPERTY&&r.type!==P.ATTRIBUTE&&r.type!==P.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!ht(r))throw Error("`live` bindings can only contain a single expression")}render(r){return r}update(r,[e]){if(e===U||e===m)return e;let t=r.element,s=r.name;if(r.type===P.PROPERTY){if(e===t[s])return U}else if(r.type===P.BOOLEAN_ATTRIBUTE){if(!!e===t.hasAttribute(s))return U}else if(r.type===P.ATTRIBUTE&&t.getAttribute(s)===e+"")return U;return mt(r),e}});function Li(r,e){let t=dt(r);if(t===null)return null;let s=e.replace(/\.(?:md|markdown)$/iu,""),o=new Set;return t.map(({displayName:i,data:n})=>{let a=`${s}: ${i}`.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(n)}})}var qr=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"]]),jr=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"]]),Ur=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 xt(r){let e=r.replace(/:free$/u,"").replaceAll("_","-").split("-").filter(Boolean),t=[];for(let o=0;o<e.length;o++){let i=e[o],n=e[o+1];if(/^\d+$/u.test(i)&&/^\d+$/u.test(n??"")){t.push(`${i}.${n}`),o++;continue}let a=Ur.get(i.toLowerCase());t.push(a??(/^(?:[a-z]+\d+|\d+[a-z]+)$/iu.test(i)?i.toUpperCase():i[0]?.toUpperCase()+i.slice(1)))}return t.join(" ").replace(/^GPT (\d)/u,"GPT-$1")}function T(r){return qr.get(r)??xt(r.includes("/")?r.slice(r.indexOf("/")+1):r)}function V(r){let e=r.includes("/")?r.split("/")[0]:"other";return{key:e,name:jr.get(e)??(e==="other"?"Other":xt(e))}}function B(r){return r==="xhigh"?"Extra high":r?r[0].toUpperCase()+r.slice(1):"Unavailable"}function H(r){return r.efforts.includes("max")?"max":r.efforts.at(-1)??null}async function ie(r,e=fetch){let t=await e("/api/admin/scan/models",{credentials:"same-origin",headers:{accept:"application/json"},signal:r});if(!t.ok)throw new Error(`HTTP ${t.status}`);let s=await t.json();return Vr(s)}function Vr(r){if(!Array.isArray(r?.models))throw new Error("No model catalogue returned");let e=r.models.filter(t=>typeof t?.id=="string"&&t.id.length>0).map(t=>({id:t.id,efforts:Array.isArray(t.efforts)?[...new Set(t.efforts.filter(s=>typeof s=="string"&&s.length>0))]:[]}));if(e.length===0)throw new Error("No models available");return{models:e,defaultModel:e.find(t=>t.id===r.defaultModel)?.id??e[0].id}}var yt=l`<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 $t=l`<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 kt=l`<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 St=l`<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 Mt=l`<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 Se=l`<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 Et=l`<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 Ct=l`<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 Rt=l`<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 It=l`<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 At=l`<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 Lt=l`<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 zt={anthropic:yt,deepseek:$t,google:kt,mistralai:Mt,moonshot:Se,moonshotai:Se,nvidia:Et,openai:Ct,openrouter:Rt,qwen:It,xiaomi:At,"x-ai":St,"z-ai":Lt},Gr=l`<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 Me(r){return Object.hasOwn(zt,r)?zt[r]:Gr}function Wr(r){if(/^https?:\/\//iu.test(r)){try{let t=new URL(r),s=t.pathname.split("/").filter(Boolean);if(s.length>=2)return{owner:`${t.host}/${s[0]}`,name:s.slice(1).join("/")}}catch{}return{owner:null,name:r}}let e=/^([^\s/:]+)\/(.+)$/u.exec(r);return e?{owner:e[1],name:e[2]}:{owner:null,name:r}}var Ot=r=>r.normalize("NFKC").toLocaleLowerCase(),Ee=(r,e)=>r.localeCompare(e,void 0,{numeric:!0,sensitivity:"base"}),Ce=Symbol("other repositories");function Nt(r,e="",t=null,{includeSingletonOrganizations:s=!1}={}){let o=r.map(u=>({...u,...u.special?{owner:null,name:u.label}:Wr(u.label)})),i=new Map;for(let u of o)u.owner!=null&&i.set(u.owner,(i.get(u.owner)??0)+1);let n=s?1:2,a=[...i].filter(([,u])=>u>=n).toSorted(([u],[_])=>Ee(u,_)).map(([u,_])=>({value:u,name:u,count:_})),d=u=>(i.get(u.owner)??0)<n,c=o.filter(u=>!u.special&&!u.reset&&d(u)).length;c>0&&a.push({value:Ce,name:"Other",count:c});let h=a.some(u=>u.value===t)?t:null,p=Ot(e.trim()).split(/\s+/u).filter(Boolean),b=u=>p.every(_=>Ot(u.label).includes(_)),f=o.filter(u=>u.reset||u.special&&b(u)),x=o.filter(u=>!u.reset&&!u.special&&b(u)&&(h==null||(h===Ce?d(u):u.owner===h))),S=new Map;for(let u of x){let _=(i.get(u.owner)??0)>=n?u.owner:null;S.has(_)||S.set(_,[]),S.get(_).push(u)}let v=[...S].toSorted(([u],[_])=>u==null?1:_==null?-1:Ee(u,_)).map(([u,_])=>({label:u??(a.some(L=>L.value!==Ce)?"Other":null),organization:u!=null,options:_.toSorted((L,_e)=>Ee(L.label,_e.label))}));return{facets:a,activeFacet:h,pinned:f,sections:v,count:x.length+f.filter(u=>!u.reset).length,total:o.filter(u=>!u.reset).length,showFacets:a.length>1}}function Kr(r,e,t){let s=r[0].getBoundingClientRect().top,o=1;for(;o<r.length&&Math.abs(r[o].getBoundingClientRect().top-s)<1;)o++;if(o===1&&(t==="ArrowLeft"||t==="ArrowRight"))return e;let i=e+{ArrowLeft:-1,ArrowRight:1,ArrowUp:-o,ArrowDown:o}[t];if(i<0)return t==="ArrowUp"?-1:e;let n=Math.floor((r.length-1)/o);return i<r.length?i:Math.floor(e/o)<n?r.length-1:e}var A=class extends k{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=y`: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(n=>n.value===this.value),t=this.choices(),o=[...t.pinned,...t.sections.flatMap(n=>n.options)].filter(n=>!n.disabled),i=o.find(n=>n.value===this.value)?.value??o[0]?.value;return l`<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):m}<span class="name" data-tooltip-truncated data-tooltip="${e?.label??m}">${e?.label??this.placeholder}</span>${e?.detail?l`<span class="detail" data-tooltip-truncated data-tooltip="${e.detail}">${e.detail}</span>`:m} <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="${n=>{this._query=n.target.value}}"> <span class="count" role="status">${t.count}${t.count===t.total?"":` / ${t.total}`}</span></div><div class="body">${t.showFacets?l`<div class="facets" role="group" aria-label="${this.facetLabel}"><button type="button" class="org" aria-pressed="${t.activeFacet==null}" @click="${()=>this._filterFacet(null)}"><span class="name">${this.allFacetsLabel}</span><span class="count">${t.total}</span></button> ${t.facets.map(n=>l`<button type="button" class="org" aria-pressed="${t.activeFacet===n.value}" @click="${()=>this._filterFacet(n.value)}"><span class="name" data-tooltip-truncated data-tooltip="${n.name}">${n.name}</span><span class="count">${n.count}</span></button>`)}</div>`:m}<div class="results" id="selector-options" role="listbox" aria-label="${this.optionsLabel}">${t.pinned.length>0?l`<div class="pinned">${t.pinned.map(n=>this._option(n,!1,i))}</div>`:m} ${t.sections.map((n,a)=>l`<div class="group" role="group" aria-labelledby="${n.label?`selector-group-${a}`:m}">${n.label?l`<h3 class="heading" id="${`selector-group-${a}`}">${n.organization?l`<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>`:m}${n.label}</h3>`:m} ${n.options.map(d=>this._option(d,n.organization,i))}</div>`)} ${t.count?m:l`<p class="empty">${this.options.length>0?this.noMatchesLabel:this.emptyLabel}</p>`}</div></div></div>`}get menuWidth(){return 360}optionIcon(e){return e.initials?l`<span class="avatar" aria-hidden="true">${e.initials}</span>`:m}optionTooltip(e){return e.label}_option(e,t,s){let o=e.displayLabel??(t?e.name:e.label),i=this.optionTooltip(e);return l`<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===s?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===i}" data-tooltip="${i}">${o}</span>${e.secondary?l`<span class="${e.secondaryWarning?"secondary is-warning":"secondary"}" ?data-tooltip-truncated="${!e.secondaryWarning}" data-tooltip="${e.secondaryWarning??e.secondary}">${e.secondary}</span>`:m}</span>${e.detail?l`<span class="detail">${e.detail}</span>`:m}</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 t=this.renderRoot.querySelector(".trigger").getBoundingClientRect(),s=8,o=e.querySelector(".facets")!=null,i=Math.min(Math.max(t.width,o?560:this.menuWidth),window.innerWidth-s*2),n=window.innerHeight-t.bottom-s-4,a=t.top-s-4;e.style.width=`${i}px`,this._menuHeight??=Math.min(480,e.querySelector(".search").offsetHeight+Math.max(e.querySelector(".results").scrollHeight,e.querySelector(".facets")?.scrollHeight??0)+2);let d=this._menuHeight,c=n<d&&a>n;e.style.maxHeight=`${Math.max(0,Math.min(d,c?a:n))}px`,e.style.left=`${Math.max(s,Math.min(t.left,window.innerWidth-i-s))}px`,e.style.top=`${Math.max(s,c?t.top-e.offsetHeight-4:t.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 t=this.renderRoot.querySelector("input"),s=this.renderRoot.activeElement,o=[...this.renderRoot.querySelectorAll(".option:not(:disabled)")],i=o.indexOf(s);if(s!==t&&i<0)return;if(e.key==="Enter"&&s===t){e.preventDefault(),(this.renderRoot.querySelector(".option:not([data-reset]):not(:disabled)")??o[0])?.click();return}let n;if(s===t)if(e.key==="ArrowDown")n=0;else if(e.key==="ArrowUp")n=-1;else return;else if(e.key.startsWith("Arrow"))n=Kr(o,i,e.key);else if(e.key==="Home")n=0;else if(e.key==="End")n=o.length-1;else if(e.key.length===1&&e.key!==" "&&!e.ctrlKey&&!e.metaKey&&!e.altKey){e.preventDefault(),this._query+=e.key,t.focus();return}else return;e.preventDefault();for(let[a,d]of o.entries())d.tabIndex=a===n?0:-1;n<0?t.focus():o[n]?.focus()}_pick(e){this.disabled||!this.options.some(t=>t.value===e&&!t.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 Re=class extends A{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 Nt(this.options,this._query,this._facet)}};customElements.get("repository-selector")||customElements.define("repository-selector",Re);function Yr(r){return r.map(e=>{let t=e.format==="npm"?"npm":["sourcemap","sourcemaps"].includes(e.kind)||e.filename.toLowerCase().endsWith(".map")?"sourcemap":"stasis",s=t==="npm"?e.detail??"":t==="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:i}=re(e.files);i!=null&&o.push(`${i.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:s,format:t,secondary:o.join(" \xB7 "),...e.dateWarning&&{secondaryWarning:e.dateWarning}}})}var Pt=r=>r.displayLabel??r.label,Ie=class extends A{static properties={bundles:{attribute:!1},noun:{},versions:{type:Boolean,reflect:!0}};static styles=[A.styles,y`.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=Yr(this.bundles)),e.has("options")&&this.versions){let t=s=>Math.min(Math.max(0,...this.options.map(o=>s(o)?.length??0)),28);this.style.setProperty("--option-width",`${t(Pt)}ch`),this.style.setProperty("--secondary-width",`${t(s=>s.secondary)}ch`)}}optionTooltip(e){return Pt(e)}optionIcon(e){return e.format?l`<span class="bundle-icon" aria-hidden="true">${e.format==="npm"?R(nt):e.format==="sourcemap"?R(X):l`<img src="./stasis.svg" alt="">`}</span>`:m}choices(){let e=this._query.normalize("NFKC").toLocaleLowerCase().trim().split(/\s+/u).filter(Boolean),t=this.options.filter(o=>e.every(i=>`${o.label} ${o.detail}`.normalize("NFKC").toLocaleLowerCase().includes(i))),s=this.versions?t:t.toSorted((o,i)=>o.label.localeCompare(i.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("bundle-selector")||customElements.define("bundle-selector",Ie);var Tt=[{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 Bt(r){let e=r.filter(s=>s.id!=="all");if(e.length===0)return null;let t=new Map(e.map(s=>[String(s.id).replace(/^reason:/u,""),s]));return t.size!==e.length||[...t.keys()].some(s=>!Tt.some(o=>o.key===s))?null:[{id:"",label:"All files",subtitle:"Everything"},...Tt.filter(s=>t.has(s.key)).map(({key:s,...o})=>({...o,id:t.get(s).id,subtitle:s==="run"&&t.has("metro")?"Bundler and Node.js CLI":o.subtitle}))]}var Ae=class extends k{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 m;let t=Bt(e);if(!t)return l`<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=>l`<option value="${o.id}">${o.label??o.id}</option>`)}</select></label>`;let s=t.find(o=>o.id===this.value)??t[0];return l`<div class="scope-toggle"><div class="scope-options" role="radiogroup" aria-label="${this.label}" aria-describedby="scope-description">${t.map(o=>l`<label class="scope-option"><input type="radio" name="scope" value="${o.id}" .checked="${s.id===o.id}" @change="${()=>this._select(o.id)}"><span>${o.label}</span></label>`)}</div><span class="scope-description" id="scope-description">${s.subtitle}</span></div>`}static styles=y`: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",Ae);function Le(r){let e=new Map(r.map(s=>[s.id,s])),t=new Set;return r.flatMap(s=>{if(t.has(s.id))return[];let o=s.id.endsWith("-pro")?s.id.slice(0,-4):s.id,i=e.get(o),n=e.get(`${o}-pro`);return!/(?:^|\/)gpt-.+$/u.test(o)||o.endsWith("-pro")||!i||!n?[s]:(t.add(i.id),t.add(n.id),[{...i,pro:n}])})}function ze(r){return[...Map.groupBy(Le(r),t=>V(t.id).key)].map(([t,s])=>({key:t,models:s}))}function Dt(r,e){if(r.length===0)return[];let t=Math.min(r.length,Math.max(1,e)),s=r.map(c=>c.models.length*2+3),o=s.reduce((c,h)=>c+h,0),i=Math.max(...s);for(;i<o;){let c=Math.floor((i+o)/2),h=0,p=1;for(let b of s)h+b>c&&(p++,h=0),h+=b;p>t?i=c+1:o=c}let n=[],a=[],d=0;for(let[c,h]of r.entries())a.length>0&&(d+s[c]>i||r.length-c===t-n.length-1)&&(n.push(a),a=[],d=0),a.push(h),d+=s[c];return n.push(a),n}var Zr=l`<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>`,Oe=class extends k{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=y`: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=ie,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 t=!1,s=o=>{if(e.signal.aborted)return;t=!0,this._models=o.models;let i=o.models.find(n=>n.id===this.value);i?i.efforts.includes(this.effort)||this._setEffort(H(i)):this._select(o.defaultModel)};try{s(await this.loadModels(e.signal,s))}catch(o){!e.signal.aborted&&!t&&(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 Le(this._models).find(e=>e.id===this.value||e.pro?.id===this.value)}async _positionMenu(){let e=++this._positionRequest,t=this.renderRoot.querySelector("details"),s=this.renderRoot.querySelector("summary"),o=this.renderRoot.querySelector(".menu");if(!t?.open||!s||!o)return;let i=s.getBoundingClientRect(),n=6,a=8,d=ze(this._models),c=d.reduce((xe,J)=>xe+J.models.length,0),h=Math.min(3,d.length,Math.ceil((c+d.length*1.5)/9)),p=parseFloat(getComputedStyle(o).fontSize),b=0;for(let xe of o.querySelectorAll(".choice span, legend")){let J=document.createRange();J.selectNodeContents(xe),b=Math.max(b,J.getBoundingClientRect().width)}let f=Math.max(11*p,Math.min(18*p,b+2.5*p)),x=1.3*p+2,S=Math.max(1,Math.min(h,Math.floor((window.innerWidth-a*2-x+p)/(f+p)))),v=Math.min(S*f+(S-1)*p+x,window.innerWidth-a*2),u=Math.max(a,Math.min(i.left,window.innerWidth-v-a));if(this._menuColumns=S,await this.updateComplete,e!==this._positionRequest||!this.isConnected||!t.open)return;o.style.left=`${u}px`,o.style.width=`${v}px`,o.style.setProperty("--model-columns",S),o.style.maxHeight=`${Math.max(0,window.innerHeight-a*2)}px`;let _=o.getBoundingClientRect().height,L=window.innerHeight-i.bottom-n-a,_e=i.top-n-a,Fr=L<_&&_e>L?i.top-n-_:i.bottom+n;o.style.bottom="auto",o.style.top=`${Math.max(a,Math.min(Fr,window.innerHeight-_-a))}px`,o.dataset.positioned=""}_select(e,{preserveEffort:t=!1,close:s=!0}={}){let o=this._models.find(i=>i.id===e);o&&(this.value=e,this._setEffort(t&&o.efforts.includes(this.effort)?this.effort:H(o)),s&&this._close())}_selectRow(e){let t=this._selectedRow?.pro?.id===this.value;this._select(t&&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(i=>i.id===this.value);if(this.pending||!e)return l`<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?l`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?l`<div class="extra"><slot name="effort-extra"></slot></div>`:m}</div>`;let t=this._selectedRow,s=V(e.id),o=Dt(ze(this._models),this._menuColumns);return l`${this._error?l`<p class="message error" role="alert">Couldn’t refresh models: ${this._error}<button class="retry" @click="${()=>{this._load()}}">Retry</button></p>`:m}<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="${i=>{i.key==="Escape"&&(this._close(),this.renderRoot.querySelector("summary")?.focus())}}"><summary aria-labelledby="model-label selected-model" @click="${this._resetMenuPosition}"><span class="${`icon ${s.key}`}" aria-hidden="true">${Me(s.key)}</span><span class="selected-copy"><strong id="selected-model">${T(t.id)}</strong><small>${s.name}</small></span>${t.pro?l`<span class="pro-space" aria-hidden="true"></span>`:m}${Zr}</summary><div class="menu"><div class="groups">${o.map(i=>l`<div class="provider-column">${i.map(n=>this._modelSection(n))}</div>`)}</div></div></details>${t.pro?l`<button type="button" class="pro-toggle" role="switch" aria-label="Pro model" aria-checked="${e.id===t.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===t.pro.id}" @change="${this._togglePro}"><span>Pro</span></label>`:m}</div></div>${e.efforts.length>0?this._effortSlider(e.efforts):l`<div class="field" aria-hidden="true"></div>`} ${this.hasExtra?l`<div class="extra"><slot name="effort-extra"></slot></div>`:m}</div>`}_modelSection({key:e,models:t}){return l`<fieldset><legend><span class="${`icon ${e}`}" aria-hidden="true">${Me(e)}</span>${V(t[0].id).name}</legend>${t.map(s=>l`<label class="choice"><input type="radio" name="scan-model" value="${s.id}" .checked="${s.id===this.value||s.pro?.id===this.value}" @change="${()=>{this._selectRow(s),this.renderRoot.querySelector("summary")?.focus()}}"><span>${T(s.id)}</span></label>`)}</fieldset>`}_effortSlider(e){let t=Math.max(0,e.indexOf(this.effort)),s=Math.max(1,e.length-1);return l`<div class="field"><div class="label"><label for="effort">Effort</label><output for="effort">${B(e[t])}</output></div><div class="slider" style="${`--effort-fill: calc(var(--thumb-size) / 2 + (100% - var(--thumb-size)) * ${t/s})`}"><input id="effort" type="range" min="0" max="${s}" step="1" .value="${String(t)}" ?disabled="${e.length===1}" aria-valuetext="${B(e[t])}" @input="${o=>this._setEffort(e[Number(o.target.value)])}"><div class="steps">${e.map((o,i)=>l`<button type="button" class="${`step ${o===this.effort?"active":""}`}" style="${`--step-position: ${i/s*100}%`}" aria-label="${`Set effort to ${B(o)}`}" aria-pressed="${o===this.effort}" @click="${()=>this._setEffort(o)}">${B(o)}</button>`)}</div></div></div>`}};customElements.get("scan-model-picker")||customElements.define("scan-model-picker",Oe);var Ne=class extends A{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),t=this.options.filter(s=>e.every(o=>s.label.normalize("NFKC").toLocaleLowerCase().includes(o))).toSorted((s,o)=>s.label.localeCompare(o.label,void 0,{numeric:!0,sensitivity:"base"}));return{pinned:[],sections:[{label:null,options:t}],facets:[],showFacets:!1,count:t.length,total:this.options.length}}};customElements.get("workspace-selector")||customElements.define("workspace-selector",Ne);var ne=l`<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3v10M3 8h10"/></svg>`,ae=l`<svg viewBox="0 0 16 16" aria-hidden="true"><path d="m4 4 8 8M12 4l-8 8"/></svg>`,le=y`.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 G=r=>({kind:r,sourceIds:[null],ids:new Set}),Pe=class extends k{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=G("bundle"),this._link=G("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(t=>e.has(t))&&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(t=>e.some(s=>t.reports.includes(s.id))):(this._sources?.link?.repositories??[]).filter(t=>e.some(s=>s.repoIds.includes(t.id)))}get _selectedParents(){let e=this._parents;return this._current.sourceIds.map(t=>e.find(s=>s.id===t)).filter(Boolean)}get _parent(){return this._selectedParents[0]}get _scopeOptions(){let e=this._sources?.link?.reports??[];return this._parents.map(t=>{let s=e.filter(o=>this._current.kind==="workspace"?t.reports.includes(o.id):o.repoIds.includes(t.id)).length;return{value:t.id,label:t.label,detail:`${s} ${s===1?"report":"reports"}`}})}get _inputs(){let e=this._selectedParents;return e.length===0?[]:this.mode==="merge"?(this._sources?.merge?.results??[]).filter(t=>t.bundleId===e[0].id):(this._sources?.link?.reports??[]).filter(t=>this._current.kind==="workspace"?e[0].reports.includes(t.id):t.repoIds.some(s=>e.some(o=>o.id===s)))}get selection(){let e=this._selectedParents,t=e[0],s=t?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:t.id,label:t.label??t.filename}:null;return{mode:this.mode,source:s,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 t=!1,s=o=>{if(e.signal.aborted)return;let i=!t;t=!0,this._sources=o,i&&(this._merge=G("bundle"),this._link=G(Array.isArray(o.link?.workspaces)?"workspace":"repository")),this._selectOnlySource(),i&&this._restore(),this._loading=!1,this._notify()};try{s(this.loadSources?await this.loadSources(e.signal,s):{merge:{bundles:[],results:[]},link:{repositories:[],reports:[]}})}catch(o){!e.signal.aborted&&!t&&(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,t=0){if(t<0||t>=this._current.sourceIds.length||this._current.sourceIds.includes(e)||!this._parents.some(o=>o.id===e))return;let s=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,i)=>i===t?e:o)}),this._setCurrent({...this._current,ids:new Set(this._inputs.filter(o=>!s.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((t,s)=>s!==e)},this._link={...this._link,ids:new Set(this._inputs.filter(t=>this._link.ids.has(t.id)).map(t=>t.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=G(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,t){if(!this._inputs.some(o=>o.id===e))return;let s=new Set(this._current.ids);t?s.add(e):s.delete(e),this._setCurrent({...this._current,ids:s}),this._notify()}_selectAll(e){this._setCurrent({...this._current,ids:new Set(e?this._inputs.map(t=>t.id):[])}),this._notify()}_restore(){let e=this.restore;if(!this._sources||e?.mode!==this.mode||!e.source)return;let t=this.mode==="merge"?"bundle":e.source.kind;if(this.mode==="link"&&(t==="workspace"?!Array.isArray(this._sources.link?.workspaces):t!=="repository"))return;let s=this.mode==="link"&&t==="repository"?e.source.ids??[e.source.id]:[e.source.id],o=[...new Set(s)].filter(i=>i!=null);this._setCurrent({kind:t,sourceIds:o.length>0?o:[null],ids:new Set}),this._setCurrent({...this._current,ids:new Set(this._inputs.filter(i=>e.inputIds.includes(i.id)).map(i=>i.id))})}render(){let e=this.mode==="merge",t=this._inputs,s=t.filter(n=>this._current.ids.has(n.id)).length,o=Array.isArray(this._sources?.link?.workspaces),i=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 l`<section class="panel" aria-label="${e?"Merge scan results":"Link saved reports"}" aria-busy="${this._loading}"><div class="source">${!e&&o?l`<div class="kinds" role="radiogroup" aria-label="Report source">${[["workspace","Workspace"],["repository","Repository"]].map(([n,a])=>l`<button type="button" role="radio" aria-checked="${n===this._link.kind}" @click="${()=>this._changeKind(n)}">${a}</button>`)}</div>`:m}<div class="field">${e?l`<span>Bundle with scan results</span>`:m} ${e?l`<bundle-selector .bundles="${this._parents}" .value="${this._current.sourceIds[0]}" ?disabled="${this._loading||this._parents.length===0}" @bundle-change="${n=>this._selectSource(n.detail.value)}"></bundle-selector>`:this._current.kind==="workspace"?l`<workspace-selector .options="${this._scopeOptions}" .value="${this._current.sourceIds[0]}" ?disabled="${this._loading}" @workspace-change="${n=>this._selectSource(n.detail.value)}"></workspace-selector>`:this._repositoryFields()}</div></div><div class="input-results">${this._error?l`<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?l`<p class="empty" role="status">Loading report inputs…</p>`:t.length>0?l`<div class="list-head"><label><input type="checkbox" aria-label="Select all" ?disabled="${this._loading}" .checked="${s===t.length}" .indeterminate="${s>0&&s<t.length}" @change="${n=>this._selectAll(n.target.checked)}"><strong>All</strong></label><span>${s} of ${t.length} selected</span></div><div class="list">${t.map(n=>this._row(n))}</div>`:l`<p class="empty">${e&&this._parents.length===0?"No scan results available.":i}</p>`}</div></section>`}_repositoryFields(){let e=this._current.sourceIds,t=this._scopeOptions;return l`<div class="repository-fields"><div class="repository-rows">${e.map((s,o)=>l`<div class="repository-row"><repository-selector .options="${t.filter(i=>i.value===s||!e.includes(i.value))}" .value="${s}" label="${`Choose repository ${o+1}`}" ?disabled="${this._loading}" @repository-change="${i=>this._selectSource(i.detail.value,o)}"></repository-selector>${e.length>1?l`<button type="button" class="row-action" aria-label="${`Remove repository ${o+1}`}" ?disabled="${this._loading}" @click="${()=>this._removeRepository(o)}">${ae}</button>`:m}</div>`)}</div><button type="button" class="row-action" aria-label="Add repository" ?disabled="${!this._canAddRepository}" @click="${()=>this._addRepository()}">${ne}</button></div>`}_row(e){let t=this.mode==="link"?e.appFindings:e.findings,s=[e.model?T(e.model):null,t==null?null:`${t} ${this.mode==="link"?"app ":""}${t===1?"finding":"findings"}`,e.createdAt,e.repo?`${e.repo}${e.directory?`/${e.directory}`:""}`:null].filter(Boolean),o=e.title??e.filename,i=s.join(" \xB7 ");return l`<label class="option"><input type="checkbox" ?disabled="${this._loading}" .checked="${this._current.ids.has(e.id)}" @change="${n=>this._toggle(e.id,n.target.checked)}">${R(ke[e.analyzer]??ke.default)}<span class="copy"><strong data-tooltip-truncated data-tooltip="${o}">${o}</strong><span data-tooltip-truncated data-tooltip="${i}">${i}</span></span></label>`}static styles=[y`: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}`,le]};customElements.get("scan-report-inputs")||customElements.define("scan-report-inputs",Pe);var Jr=l`<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M6 4h7M6 8h7M6 12h7M3 4h.01M3 8h.01M3 12h.01"/></svg>`,Xr=l`<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>`,Te=class extends k{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 l`<div class="scan-depth"><div class="depth-options" role="radiogroup" aria-label="Scan depth" aria-orientation="${this.vertical?"vertical":"horizontal"}" aria-describedby="${this.vertical?m:"scan-depth-description"}">${[[!1,"List",Jr],[!0,"Isolate",Xr]].map(([e,t,s])=>l`<label class="depth-choice"><input type="radio" name="scan-depth" value="${e?"isolate":"list"}" .checked="${this.isolate===e}" @change="${()=>this._select(e)}"><span>${s}${t}</span></label>`)}</div>${this.vertical?m:l`<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=y`: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",Te);var Be=["security","generic","correctness"],Qr=r=>JSON.stringify([r.mode,r.model,r.effort,r.isolate]);function Ft(r){let e=r[0];return e?.model&&r.every(t=>t.model===e.model&&t.effort===e.effort)?{model:e.model,effort:e.effort}:null}function Ht(r,e){let t=e.models.find(s=>s.id===r?.model)??e.models.find(s=>s.id===e.defaultModel)??e.models[0];return t?{model:t.id,effort:t.efforts.includes(r?.effort)?r.effort:H(t)}:null}function De(r,e){let t=e.models.find(s=>s.id===e.defaultModel)??e.models[0];return t?(r.length>0?r:[{mode:"generic",isolate:!1}]).map(s=>{let o=e.models.find(i=>i.id===s.model)??t;return{...s,mode:Be.includes(s.mode)?s.mode:"generic",model:o.id,effort:o.efforts.includes(s.effort)?s.effort:H(o),isolate:!!s.isolate}}):[]}function Fe(r){let e=new Set;return r.map(t=>{let s=Qr(t),o=e.has(s);return e.add(s),o})}var He=class extends k{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=De(e,this._catalogue).map(t=>({...t,id:t.id??++this._nextId}))}_notify(){let e=this._loading&&this._rows.length===0?this.value:this._rows.map(({id:s,...o})=>o);this._loading||this._syncAppModel();let t=!this._loading&&!this._error&&this._resolvedAppModel!=null&&e.length>0&&!Fe(e).includes(!0);this._lastEmitted=e,this.dispatchEvent(new CustomEvent("regimes-change",{detail:{value:e,ready:t,appModel:this._resolvedAppModel??this.appModel,appModelAutomatic:this.appModelAutomatic},bubbles:!0,composed:!0}))}_syncAppModel(){let e=Ft(this._rows),t=Ht((this.appModelAutomatic?e:null)??this.appModel??this._rows[0],this._catalogue);(this.appModel?.model!==t?.model||this.appModel?.effort!==t?.effort)&&(this.appModel=t),this._resolvedAppModel=this.appModel;let s=!!e&&e.model===t?.model&&e.effort===t?.effort;s!==this._appModelsAgree&&(this._appModelOpen=!s),this._appModelsAgree=s}_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 t=!1,s=o=>{e.signal.aborted||(t=!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{s(await this.loadModels(e.signal,s))}catch(o){!e.signal.aborted&&!t&&(this._error=String(o?.message??o))}finally{e.signal.aborted||(this._loading=!1,this._notify())}}_change(e,t){let s=this._rows.find(i=>i.id===e);if(!s)return;let o=De([{...s,...t}],this._catalogue)[0];o&&(this._rows=this._rows.map(i=>i.id===e?o:i),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(t=>t.id!==e),this._notify())}render(){let e=this._loading&&this._rows.length===0,t=e?(this.value.length>0?this.value:[{mode:"generic",isolate:!1}]).map((o,i)=>({...o,id:`pending-${i}`})):this._rows,s=Fe(this._rows);return l`<section aria-label="Scan regimes" aria-busy="${this._loading}"><div class="heading"><h2>Scan regimes</h2><span>${t.length} ${t.length===1?"regime":"regimes"}</span></div>${this._error?l`<p class="message" role="alert">Couldn’t load models: ${this._error} <button type="button" @click="${()=>{this._load()}}">Retry</button></p>`:m} ${se(t,o=>o.id,(o,i)=>this._row(o,i,s[i],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">${s.includes(!0)?"Change or remove duplicate regimes to run the scan":"Results from these regimes will be merged"}</span></div>${e?l`<div class="app-model"><div class="app-model-placeholder">App model: Loading…</div></div>`:this._appModelRow()}</section>`}_appModelRow(){let e=this._resolvedAppModel;return e?l`<details class="app-model" .open="${C(this._appModelOpen)}" @toggle="${t=>{this._appModelOpen=t.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>${T(e.model)}</strong></span><span class="app-model-effort">Effort: <strong>${B(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="${t=>{t.stopPropagation(),this._changeAppModel(t.detail)}}"></scan-model-picker></div></details>`:m}_row(e,t,s,o=!1){return l`<div class="${`row${s?" duplicate":""}`}" ?inert="${o}" role="group" aria-label="${`Regime ${t+1}`}" aria-describedby="${s?`duplicate-${e.id}`:m}"><div class="mode" role="radiogroup" aria-label="Scan mode">${Be.map(i=>l`<label class="mode-choice"><input type="radio" name="${`regime-mode-${e.id}`}" .checked="${e.mode===i}" @change="${()=>this._change(e.id,{mode:i})}"><span>${i[0].toUpperCase()+i.slice(1)}</span></label>`)}</div><scan-model-picker .pending="${o}" .loadModels="${this._sharedModels}" .value="${C(e.model)}" .effort="${C(e.effort)}" @model-change="${i=>{i.stopPropagation(),this._change(e.id,i.detail)}}"></scan-model-picker><div class="row-actions"><scan-depth-toggle vertical .isolate="${e.isolate}" @depth-change="${i=>{i.stopPropagation(),this._change(e.id,{isolate:i.detail.isolate})}}"></scan-depth-toggle>${s?l`<span class="duplicate-label" id="${`duplicate-${e.id}`}">Duplicate regime</span>`:m}</div><button type="button" class="remove" aria-label="${`Remove regime ${t+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=y`: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",He);var qt=`: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}}
|
|
2
|
-
`;var ts=[{id:"code",label:"Code",detail:"Run a full scan of the codebase",icon:ee},{id:"dependencies",label:"Dependency alerts",detail:"Validate incoming alerts against actual code",icon:at},{id:"agentic",label:"Agentic",detail:"Free-form analysis with your instructions",icon:lt},{id:"report",label:"Reports",detail:"Link saved reports or merge scan results",icon:Q}],rs=[{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"}],ss=[{id:"link",label:"Link",detail:"Link findings across saved reports"},{id:"merge",label:"Merge",detail:"Combine scan results for one bundle"}],qe=class extends k{static properties={mode:{},analyzer:{},reportMode:{}};static styles=rt(qt);constructor(){super(),this.mode="code",this.analyzer="generic",this.reportMode="link"}_choose(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}render(){let e=this.mode==="code",t=this.mode==="report",s=e?rs:ss,o=e?this.analyzer:this.reportMode;return l`<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>${ts.map(i=>l`<label class="mode"><input type="radio" name="scan-mode" .checked="${this.mode===i.id}" aria-label="${i.label}" @change="${()=>this._choose("scan-mode-change",{mode:i.id})}"> <span class="mode-icon" aria-hidden="true">${R(i.icon)}</span> <span class="mode-copy"><strong>${i.label}</strong><span>${i.detail}</span></span> <span class="indicator" aria-hidden="true"></span></label>`)}</fieldset>${e||t?l`<div class="subtype-wrap"><fieldset class="${`subtype-options ${t?"report-subtypes":""}`}"><legend class="sr-only">${e?"Code subtype":"Reports submode"}</legend>${s.map(i=>l`<label class="subtype-option"><input type="radio" name="scan-focus" .checked="${o===i.id}" aria-label="${i.label}" @change="${()=>e?this._choose("scan-analyzer-change",{analyzer:i.id}):this._choose("scan-report-mode-change",{mode:i.id})}"> <strong>${i.label}</strong><span>${i.detail}</span></label>`)}</fieldset>${e?l`<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>`:m}</div>`:m}</section>`}};customElements.get("scan-mode-selector")||customElements.define("scan-mode-selector",qe);var jt=y`: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 Ut={code:R(ee),report:R(Q)},je=class extends k{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=[jt,le];constructor(){super(),this.loadModels=ie,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 t=this._repositories.find(i=>i.id===this._selectedRepoId),s=this._pendingSelection,o=s?this._bundles.find(i=>i.id===s.bundleId&&(s.repoId==null||i.repoId===s.repoId)):this._bundles.find(i=>i.id===this._selectedBundleId&&i.repoId===this._selectedRepoId)??(this.scopeLabel==="Workspace"?null:this._bundles.find(i=>i.id===this._selectedBundleId))??(t?this._bundles.find(i=>i.repoId===t.id):this._bundles[0]);this._selectedRepoId=o?.repoId??s?.repoId??t?.id??this._repositories[0]?.id??"unattached",this._selectedBundleId=o?.id??null,this._reason=o?.reasons?.[0]?.id??"",s&&(this._tab="new",this._mode=["report","dependencies"].includes(s.mode)?s.mode:"code",s.mode==="report"&&(this._reportMode="link",this._reportRestore=null,this._reportInput=null,this._pendingSelection=null),this._notice=s.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 t=this._bundleController=new AbortController;this._loadingBundle=!0;try{let s=await this.loadBundle(e,t.signal);if(t.signal.aborted)return;this._bundles=this._bundles.map(o=>o.id===e.id?{...s,repoId:o.repoId,repo:o.repo}:o),this._reason=s.reasons?.[0]?.id??""}catch(s){t.signal.aborted||(this._bundleError=String(s?.message??s))}finally{t.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,t=e?.fileModules,s=e?.filePaths?new Set(e.filePaths):null;return(this._bundle?.files??[]).filter(o=>(t==null||t.includes(o.module))&&(s==null||s.has(o.path))).toSorted((o,i)=>i.bytes-o.bytes)}get _files(){return $e(this._scopeFiles)}render(){return l`<div class="wrap">${this.hideHeading?l`<h1 class="sr-only">Scans</h1>`:l`<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?l`<p class="notice" role="status">${this._notice}</p>`:m} ${this._bundleError?l`<p class="notice" role="alert">Couldn’t load bundle: ${this._bundleError}<button @click="${()=>{this._loadSelectedBundle()}}">Retry</button></p>`:m} ${this._tab==="new"?this._newScan():this._history()}</div>`}_newScan(){let e=this._mode,t=this._bundle,s=e==="code"?this._files:e==="dependencies"?this._scopeFiles:t?.files??[],o=this._excluded,i=this._excludedModules,n=s.filter(f=>!o.has(f.path)&&!i.has(f.module)),a=re(t?.files?n:null),d=new Map;for(let f of s){let x=d.get(f.module)??{bytes:0,count:0,included:0};x.bytes+=f.bytes,x.count++,o.has(f.path)||x.included++,d.set(f.module,x)}let c=[...d.keys()].toSorted((f,x)=>d.get(x).bytes-d.get(f).bytes||this._packageLabel(f).localeCompare(this._packageLabel(x))),h=s.slice(0,80),p=c.filter(f=>!i.has(f)).length,b=this._reportInput?.mode===this._reportMode?this._reportInput.inputs:[];return l`<div class="setup"><scan-mode-selector .mode="${e}" .analyzer="${this._options.analyzer}" .reportMode="${this._reportMode}" @scan-mode-change="${f=>this._changeMode(f.detail.mode)}" @scan-analyzer-change="${f=>this._setOption("analyzer",f.detail.analyzer)}" @scan-report-mode-change="${f=>{this._reportMode=f.detail.mode,this._reportRestore=null}}"></scan-mode-selector>${e==="report"?l`<scan-report-inputs .mode="${this._reportMode}" .loadSources="${this.loadReportSources}" .restore="${this._reportRestore}" @report-inputs-change="${f=>{this._reportInput=f.detail}}"></scan-report-inputs>`:this._sourcePanel(t,s)} ${e==="code"?l`<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>${n.length} of ${s.length} files · ${p} of ${c.length} packages</span> <span>${z(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>${c.length} total · sorted by size</span></div><div class="package-list">${c.map(f=>{let{bytes:x,count:S,included:v}=d.get(f),u=!i.has(f);return l`<label class="${`package-row ${u?"":"excluded"}`}"><input type="checkbox" .checked="${u}" @change="${_=>this._toggleModule(f)}"><span class="package-name" data-tooltip-truncated data-tooltip="${this._packageLabel(f)}">${this._packageLabel(f)}</span><span class="package-size">${z(x)} · ${v}/${S}</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 ${h.length} of ${s.length}</span></div>${s.length===0?l`<p class="empty">No files in this selection.</p>`:l`<div class="file-list">${h.map(f=>{let x=!o.has(f.path)&&!i.has(f.module);return l`<label class="${`file ${x?"":"excluded"}`}"><input type="checkbox" .checked="${x}" @change="${S=>this._toggleFile(f,S.target.checked)}"><span class="file-copy"><span class="file-path" data-tooltip-truncated data-tooltip="${f.path}">${f.path}</span><span class="file-meta">${f.size} · ${this._packageLabel(f.module)}</span></span></label>`})}</div>`}</section></div></details>`:m} ${e==="agentic"?this._agenticPanel():m}<slot name="access"></slot>${this._optionsPanel(e,t,e==="report"?b.length:n.length)}</div>`}_sourcePanel(e,t){if(this.sourceLoading)return l`<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 s=this._mode==="code"?this._repoBundles.map(c=>c.files?{...c,files:$e(c.files)}:c.summary?{...c,summary:{...c.summary,files:c.summary.codeFiles}}:c):this._repoBundles,o=ut(e,t,this._mode),i=new Map;for(let c of this._bundles)i.set(c.repoId,(i.get(c.repoId)??0)+1);let n=this._repositories.length>1,a=["code","agentic","dependencies"].includes(this._mode)&&e!=null&&(!e.filename.toLowerCase().endsWith(".map")||e.reasons?.some(c=>c.id!=="all")),d=this._repositories.map(c=>{let h=i.get(c.id)??0;return{value:c.id,label:c.label,detail:`${h} ${h===1?"bundle":"bundles"}`,special:c.id==="unattached"}});return l`<section class="panel source-panel" aria-busy="${this._loadingBundle}"><div class="panel-head"><h2>Source</h2></div><div class="${`source-choice ${n?"":"single-repository"}`}">${n?l`<div class="field"><span>${this.scopeLabel}</span>${this.scopeLabel==="Workspace"?l`<workspace-selector .options="${d}" .value="${this._selectedRepoId}" @workspace-change="${c=>this._selectRepoById(c.detail.value)}"></workspace-selector>`:l`<repository-selector .options="${d}" .value="${this._selectedRepoId}" @repository-change="${c=>this._selectRepoById(c.detail.value)}"></repository-selector>`}</div>`:m}<div class="field">${n||this.createBundleHref?this._bundleLabel():m}${s.length>0?l`<bundle-selector .bundles="${s}" .value="${e?.id??null}" @bundle-change="${c=>this._selectBundleById(c.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">${Ut.report}<strong>${o.files??"\u2014"}</strong><span>files</span></div><div class="metric">${Ut.code}<strong>${o.lines==null?"\u2014":o.lines.toLocaleString()}</strong><span>LoC</span></div><div class="metric">${R(X)}<strong>${o.packages??"\u2014"}</strong><span>packages</span></div></div>${a?l`<div class="scope-slot">${this._scopeField(e)}</div>`:m}</div></div></section>`}_bundleLabel(){let e=this.createBundleHref?.(this._selectedRepoId);return l`<div class="bundle-label"><span>Bundle</span>${e?l`<a class="create-bundle-button" href="${e}">Create a bundle</a>`:m}</div>`}_emptyBundles(){let e=this.createBundleHref?.(this._selectedRepoId);return l`<div class="choice-empty"><span>${this._bundles.length===0?"No stored bundles.":`No stored bundles for this ${this.scopeLabel.toLowerCase()}.`}</span>${e?l`<a href="${e}">Create?</a>`:m}</div>`}_scopeField(e){if(!["code","agentic","dependencies"].includes(this._mode))return m;let t=(e?.reasons??[]).filter(s=>s.id!=="all");return t.length===0?m:l`<bundle-scope-selector .reasons="${t}" .value="${this._reason}" label="${this._mode==="agentic"?"Choose agentic scope":"Choose scan scope"}" @scope-change="${s=>this._changeReason(s.detail.value)}"></bundle-scope-selector>`}_optionsPanel(e,t,s){let o=e==="report"?`${s} ${this._reportMode==="merge"?"scan results":"reports"} selected`:`${t?.filename??"No bundle selected"} \xB7 ${s} files will be analyzed`,i=e==="code"&&this._options.analyzer==="advanced",n=!this.canRun||(e==="report"?s===0:t==null||s===0||i&&(!this._regimesReady||this._regimes.length===0));return l`<section class="panel options"><div class="options-grid">${i?l`<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>`:l`<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"?l`<scan-depth-toggle slot="effort-extra" .isolate="${this._options.isolate}" @depth-change="${a=>this._setOption("isolate",a.detail.isolate)}"></scan-depth-toggle>`:m}</scan-model-picker>`}</div><div class="options-footer"><slot name="before-run"></slot><button type="button" class="run" ?disabled="${n}" @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":m}" .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?l`<small class="offline-help" id="offline-help">Cache only, no new model requests</small>`:m}</div></section>`}_history(){return l`<section class="panel history"><div class="panel-head"><h2>Scan history</h2><p>${this._scans.length} scans</p></div>${this._scans.length===0?l`<p class="empty">No scans yet.</p>`:this._scans.map(e=>this._scanRow(e))}</section>`}_scanRow(e){let t=e.status==="completed"?e.reportSaved?l`<button type="button" class="action" @click="${()=>this._deleteSavedReport(e)}">Delete saved report</button>`:l`<button type="button" class="action" @click="${()=>this._saveReport(e)}">Save report</button>`:m;return l`<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">${t}${e.status==="running"?l`<button type="button" class="action" @click="${()=>this._stopScan(e)}">Stop</button>`:m}${e.status==="stopped"?l`<button type="button" class="action" @click="${()=>this._restartScan(e)}">Restart as new scan</button>`:m}</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 t=this._repoBundles.find(s=>s.id===e);t!=null&&this._selectBundle(t)}_selectRepoById(e){if(e===this._selectedRepoId||!this._repositories.some(s=>s.id===e))return;this._selectedRepoId=e,this._pendingSelection=null;let t=this._bundles.find(s=>s.repoId===e);this._selectedBundleId=t?.id??null,this._reason=t?.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,t){let s=new Set(this._excluded);t?s.delete(e.path):s.add(e.path),this._excluded=s}_toggleModule(e){let t=new Set(this._excludedModules);t.has(e)?t.delete(e):t.add(e),this._excludedModules=t}_setOption(e,t){this._options[e]!==t&&(e==="analyzer"&&t==="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]:t})}_agenticPanel(){return l`<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()}">${ne}</button></div><div class="agentic-fields">${se(this._prompts,e=>e.id,(e,t)=>l`<div class="prompt-row"><textarea aria-label="${`Prompt ${t+1}`}" rows="3" placeholder="${this._promptPlaceholder(t)}" .value="${C(e.text)}" @input="${s=>{this._prompts=this._prompts.map(o=>o.id===e.id?{...o,text:s.target.value}:o)}}"></textarea>${this._prompts.length>1?l`<button type="button" class="row-action" aria-label="${`Remove prompt ${t+1}`}" @click="${()=>this._removePrompt(e.id)}">${ae}</button>`:m}</div>`)}</div></section>`}_promptPlaceholder(e){let t=["","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth"][e];return t!=null?`What should the ${t?`${t} `:""}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(t=>t.id!==e))}_runScan(){if(!this.canRun)return;let e=this._mode,t=e==="code"&&this._options.analyzer==="advanced";if(t&&(!this._regimesReady||this._regimes.length===0))return;let s=this._bundle,o=this._reportInput?.mode===this._reportMode?this._reportInput:null,i=o?.inputs??[],n=e==="code"?this._files.filter(c=>!this._excluded.has(c.path)&&!this._excludedModules.has(c.module)):e==="dependencies"?this._scopeFiles:s?.files??[];if(e==="report"&&(!o?.source||i.length===0)||e!=="report"&&(!s||n.length===0))return;let a={id:`scan-${Date.now()}`,mode:e,bundleId:e==="report"?this._reportMode==="merge"?o.source.id:null:s?.id??null,bundleName:e==="report"?o.source.label:s.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"?i.length:n.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),t&&(a.regimes=this._regimes.map(c=>({...c})),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(c=>c.text)),e==="report"&&(a.reportMode=this._reportMode,a.reportSource={...o.source},a.inputIds=i.map(c=>c.id)),this._scans=[a,...this._scans],this._tab="history",this._notice="Scan started. The server will update its status as work progresses.";let d=setTimeout(()=>{this._timers.delete(d),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(d)}_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 t=this._bundles.find(s=>s.id===e.bundleId&&(e.repoId==null||s.repoId===e.repoId));t&&(this._selectBundle(t),this._mode=e.mode??"dependencies",e.mode==="agentic"&&(this._prompts=(e.prompts?.length>0?e.prompts:[""]).map(s=>({id:++this._nextPromptId,text:s}))),e.regimes?.length>0&&(this._options={...this._options,analyzer:"advanced"},this._regimes=e.regimes.map(s=>({...s})),this._appModel=e.appModel?{...e.appModel}:null,this._appModelAutomatic=e.appModelAutomatic!==!1,this._regimesReady=!1),this._reason=t.reasons.find(s=>s.label===e.reason)?.id??t.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",je);var os=$`<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"/>`,is=$`<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 ns=$`<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>`,as=/^(?:(?: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,ls=new Set(["resource:base64","directory","binary"]),cs=r=>ls.has(r);function ds(r,e,t){return t!==null&&t!=="markdown"||cs(e)?!1:as.test(r.slice(r.lastIndexOf("/")+1))}function Da(r,e){return(r?.kind==="stasis"?r.bundle?.formats?.get(e):void 0)??(r?.npmBinaries?.has(e)?"binary":void 0)}var ps=r=>{let e=r.slice(r.lastIndexOf("/")+1),t=e.lastIndexOf(".");return t>0?e.slice(t+1).toLowerCase():""},us=new Set(["node","so","dylib","dll"]);function hs(r,e){let t=ft(r,e);if(t===null&&/\.map$/iu.test(r))return"map";if(ds(r,e,t))return"license";if(["javascript","jsx"].includes(t))return"js";if(["typescript","tsx"].includes(t))return"ts";let s=ps(r);return["c","cpp","objectivec"].includes(t)&&s==="h"?"header":["solidity","rust","php","python","json","markdown","css","yaml","markup","java","ruby","c","cpp"].includes(t)?t:t==="bash"?"shell":t==="objectivec"?"objc":s==="wasm"?"wasm":us.has(s)?"native":"generic"}var ms=$`<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"/>`,fs=$`<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"/>`,gs=$`<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>`,bs=$`<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)"/>`,O=(r,e,t="#fff")=>e.length>2?$`<rect x="1" y="1" width="14" height="14" rx="2" fill=${r}/><text x="8" y="10.6" text-anchor="middle" fill=${t} font-family="sans-serif" font-size="6.2" font-weight="700" letter-spacing="-.2">${e}</text>`:$`<rect x="1" y="1" width="14" height="14" rx="2" fill=${r}/><text x="8" y="11.5" text-anchor="middle" fill=${t} font-family="sans-serif" font-size="8" font-weight="700">${e}</text>`,vs={__proto__:null,js:O("#e6c84f","JS","#202020"),ts:O("#3178c6","TS"),solidity:$`<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:is,php:ns,python:os,map:ms,markdown:bs,license:fs,css:gs,json:$`<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:O("#cb171e","YML"),shell:$`<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:$`<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:O("#654ff0","WA"),native:$`<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:$`<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:O("#438eff","OC"),c:O("#3949ab","C"),cpp:O("#00599c","C++"),header:O("#607d8b","H"),ruby:$`<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"/>`},ws=$`<path d="M4 1.5h5l3 3v10H4Zm5 0v3h3M6 8h4M6 10.5h4" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/>`;function Fa(r,e){let t=hs(r,e);return l`<svg class="source-file-icon" data-file-type="${t}" width="16" height="16" viewBox="0 0 16 16" style="flex: none" aria-hidden="true">${vs[t]??ws}</svg>`}var Ha=l`<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>`,_s=l`<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>`,xs=l`<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>`,ys=l`<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>`,$s=l`<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 qa(r){return r==="composer"?ys:r==="cargo"?$s:r==="soldeer"?xs:_s}function Ue(r,e){let t=new Map,s=r?.kind==="stasis"?r.bundle?.reason:null;if(!s||typeof s!="object"||Array.isArray(s))return t;let o=new Set(e??[...oe(r)].filter(([,i])=>i!=null).map(([i])=>i));for(let[i,n]of Object.entries(s).toSorted(([a],[d])=>a.localeCompare(d))){if(!i||!Array.isArray(n))continue;let a=new Set(n.filter(d=>typeof d=="string"&&o.has(d)));a.size>0&&t.set(i,a)}return[...t.values()].some(i=>i.size<o.size)||t.clear(),t}function ks(r,e,t){let s=new Set;for(let[o,i]of r)wt(o,t?.get(o))&&s.add(e(i));return s}function Ss(r,e,t){let s=new Set;for(let o of r?.bundle?.entries??[]){let i=e.get(o);i!==void 0&&s.add(t(i))}return s}function Za(r,e,t,s){let o=t.has(s)?s:null;if(o===null)return{tree:r,origToStripped:e,selected:o};let i=new Map([...e].filter(([d])=>t.get(o).has(d))),n=new Set(i.values());return{tree:Object.fromEntries([...n].map(d=>[d,{...r[d],imports:(r[d].imports??[]).filter(c=>n.has(c))}])),origToStripped:i,selected:o}}function Vt(r){if(r?.kind==="sourcemap")return gt(r);let e=new Map;if(r?.kind!=="stasis"||!r.bundle)return e;for(let t of r.bundle.imports.values())for(let[s,o]of t){e.has(s)||e.set(s,new Set);for(let i of o.values()){let n=typeof i=="string"?[i]:i instanceof Map?i.values():[];for(let a of n)typeof a=="string"&&e.get(s).add(a)}}return e}function Ja(r,e,t=e,s){let o=Vt(r),i=new Set(r?.bundle?.entries??[]),n=[],a=new Set,d=[...i];for(let c of d){if(a.has(c))continue;if(a.add(c),e.has(c)){i.has(c)&&n.push({file:e.get(c)});continue}if(t.has(c))continue;let h=[];for(let p of o.get(c)??[])e.has(p)?h.push(e.get(p)):!t.has(p)&&o.has(p)&&(h.push(p),d.push(p));n.push({file:c,origFile:c,virtual:!0,...i.has(c)?{}:{entry:!1},pkg:F(c,{packageDir:s?.get(c)}),imports:h})}return n}function Xa(r,e,t,s,o=e){let i=Vt(r),n=new Set;for(let[d,c]of e)F(d,{packageDir:s?.get(d)})==="__own__"&&n.add(t(c));for(let d of Ss(r,e,t))n.add(d);if(n.size===0){let d=ks(e,t,s),c=new Set;for(let[h,p]of i){let b=e.get(h);if(!(b===void 0||!d.has(t(b))))for(let f of p){let x=e.get(f);x!==void 0&&t(b)!==t(x)&&c.add(t(x))}}for(let h of d)c.has(h)||n.add(h)}let a=new Set;for(let[d,c]of i)if(!o.has(d)&&F(d,{packageDir:s?.get(d)})==="__own__")for(let h of c){let p=e.get(h);p!==void 0&&a.add(t(p))}return a.size>0&&n.add("__own__"),{roots:[...n],appImports:[...a]}}function Gt(r){let{data:e}=pt(r);return e&&Ve(e)>0?e:null}function Ve(r){return(ye(r)??[]).filter(e=>(Array.isArray(e)?e:[e]).some(t=>t&&typeof t=="object"&&ct(t,t.source??r.source))).length}function sl(r,e){let t=[],s=new Map;for(let{name:i,content:n,fallbackRepo:a}of r){if(typeof n!="string")continue;let d=Gt(n);if(!d)continue;let c=ye(d),h=te(d)??te({repo:{github:a}}),p=new Set(h?[h]:[]);if(!h)for(let b of c.flat()){if(/(?:^|\/)(?:node_modules|dependencies)\//u.test(b?.file??""))continue;let f=te(b);f&&p.add(f)}for(let b of p)s.set(b,{id:b,label:b});t.push({id:i,filename:i,repoIds:[...p],analyzer:d.source,appFindings:Ve(d)})}let o=new Set(t.map(i=>i.id));return{merge:{bundles:[],results:[]},link:{reports:t,repositories:[...s.values()],workspaces:e.map(i=>({id:i.id,label:i.name,reports:i.reports.filter(n=>o.has(n))})).filter(i=>i.reports.length>0)}}}function ol(r,e){let t=(r.reports??[]).filter(n=>n.visible&&n.repoId!=null).flatMap(n=>{let a=Gt(n.content??"");return a?[{id:n.id,filename:n.filename,repoIds:[n.repoId],repo:n.repoFullName,directory:n.repoDirectory,analyzer:n.analyzer,appFindings:Ve(a)}]:[]}),s=new Map((r.repos??[]).map(n=>[n.repoId,{id:n.repoId,label:n.fullName}]));for(let n of t)s.has(n.repoIds[0])||s.set(n.repoIds[0],{id:n.repoIds[0],label:n.repo??String(n.repoIds[0])});let o=e.results??[],i=new Set(o.map(n=>n.bundleId));return{merge:{bundles:(e.bundles??[]).filter(n=>i.has(n.id)).map(n=>({...n,size:z(n.byteSize)})),results:o},link:{repositories:[...s.values()].filter(n=>t.some(a=>a.repoIds.includes(n.id))),reports:t}}}var We=/(?![\t\n\r])\p{Cc}|[\u202A-\u202E\u2066-\u2069]/gu,Ms=/\P{ASCII}/u;function Yt(r){if(typeof r!="string")return{kind:"binary",controls:null};let e=new Map;for(let[s]of r.matchAll(We))e.set(s.codePointAt(0),(e.get(s.codePointAt(0))??0)+1);let t=r.search(Ms);if(t!==-1)for(let[s,o]of Bs(r,t)??[])e.set(s,o);return{kind:t===-1?"ascii":"utf8",controls:e.size>0?e:null}}var Es=/(?=\p{Emoji})\p{Extended_Pictographic}(?:\u{FE0F}|[\u{1F3FB}-\u{1F3FF}])?$/u,Cs=/^(?=\p{Emoji})\p{Extended_Pictographic}/u,Zt=/(?=\p{Emoji})\p{Extended_Pictographic}$/u,Rs=/^[\d#*]$/u,Ge=r=>r>=917536&&r<=917631,Is=new Set(["gbeng","gbsct","gbwls"]),As=(r,e,t)=>t-e===10?String.fromCodePoint(...Array.from({length:5},(s,o)=>r.codePointAt(e+2*o)-917504)):"";function Ls(r,e,t,s){if(t===13&&(r[e+1]===`
|
|
3
|
-
`||s&&e+1===r.length)||t===8205&&Es.test(r.slice(Math.max(0,e-4),e))&&Cs.test(r.slice(e+1,e+3))||(t===65038||t===65039)&&Zt.test(r.slice(Math.max(0,e-2),e))||t===65039&&Rs.test(r[e-1]??"")&&r[e+1]==="\u20E3")return e+1;if(Ge(t)&&!Ge(r.codePointAt(e-2))){let o=e;for(;Ge(r.codePointAt(o));)o+=2;if(r.codePointAt(e-2)===127988&&r.codePointAt(o-2)===917631&&Is.has(As(r,e,o-2)))return o}return-1}var zs=/[\u115F\u1160\u3164\uFFA0\u{E0001}\u{E0020}-\u{E007F}]|[\uFE00-\uFE0F]|[\u{E0100}-\u{E01EF}]/u,ce=/[\uFE00-\uFE0F\u115F\u1160\u3164\uFFA0\uDB40]/g,Jt=r=>new Set(r.split(" ").flatMap(e=>{let[t,s=t]=e.split("-").map(o=>Number.parseInt(o,16));return Array.from({length:s-t+1},(o,i)=>t+i)})),Os=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(([r,e])=>[r,Jt(e)])),Ns=Jt("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"),Ps=[[65024,65039],[917760,917999]],Wt=[[12593,12643],[12645,12686]];function Kt(r,e){if(e===0)return;let t=e>=2?r.codePointAt(e-2):0;return t>65535?t:r.codePointAt(e-1)}var q=(r,...e)=>r!==void 0&&e.some(([t,s])=>r>=t&&r<=s);function Ts(r,e,t){let s=e+(t>65535?2:1),o=r.codePointAt(s),i=Kt(r,e);switch(t){case 4447:return q(o,[4449,4519],[55216,55238]);case 4448:return q(i,[4352,4446],[43360,43388]);case 12644:return q(i,...Wt)||q(o,...Wt);case 65440:return q(i,[65441,65500])||q(o,[65441,65500]);default:return(t===65038||t===65039?Ns.has(i):Os.get(t)?.has(i))||Ps.some(([n,a])=>t===n&&r[s]==="-"&&r.codePointAt(s+1)===a||t===a&&r[e-1]==="-"&&Kt(r,e-1)===n)||(t===65038||t===65039)&&i===t&&Zt.test(r.slice(Math.max(0,e-3),e-1))}}function Bs(r,e=0){let t=null;ce.lastIndex=e;for(let s=ce.exec(r);s;s=ce.exec(r)){let o=s.index,i=r.codePointAt(o);if(!zs.test(String.fromCodePoint(i)))continue;let n=Ls(r,o,i,!1);n!==-1?ce.lastIndex=n:Ts(r,o,i)||(t??=new Map,t.set(i,(t.get(i)??0)+1))}return t}var Qt={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:(r,e,t)=>"+-/".includes(r[e-1])&&r[e+t.length]===r[e-1]||r[e-2]==="\uE000"&&/[\p{ID_Continue}$\\\u200C\u200D]/u.test(r[e+t.length])},Ds={stringOrComment:/("(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*')|[ \t]*\/\*[\s\S]*?\*\/[ \t]*/gu,droppable:/(?<=[{};,:>(])[ \t]+|[ \t]+(?=[{};,>)!])|(?<=[+~])[ \t]+|[ \t]+(?=[+~])/gu,needed:(r,e,t,s)=>/[+~]/u.test(r[e-1]+r[e+t.length])&&(s>0||/^\s*--[^:]*:/u.test(r.slice(Math.max(...["{",";","}"].map(o=>r.lastIndexOf(o,e)))+1,e)))},W=Qt.stringOrComment,er=r=>/\.[cm]?js$/iu.test(r)?Qt:/\.css$/iu.test(r)?Ds:null,Ke=4*1024*1024;function tr(r,{stringOrComment:e,droppable:t,needed:s}){let i=(r.length>Ke?r.slice(0,r.lastIndexOf(`
|
|
4
|
-
`,Ke)+1||Ke):r).replaceAll(e,(p,b)=>(b===void 0?"":b[0]==="/"?"/\uE000/":'""')+p.replaceAll(/[^\n]/gu,"")).replaceAll(/^[ \t]+/gmu,"").split(`
|
|
5
|
-
`).filter(p=>p.trim()!==""),n=i.join(`
|
|
6
|
-
`),a=n.length-(i.length-1),d=0,c=0,h=0;for(let{0:p,index:b}of n.matchAll(t)){for(;h<b;h++)d=Math.max(0,d+(n[h]==="("?1:n[h]===")"?-1:0));s(n,b,p,d)||(c+=p.length)}return i.length>0&&a>110*i.length&&c<.01*a?Math.round(a/i.length):0}var Fs=/\.[cm]?[jt]sx?$/iu,Hs=/^\uFEFF?#!.*\bnode\b/u,de=(r,e)=>typeof e=="string"&&(Fs.test(r)||Hs.test(e)),pe=100,Xt=1024;function K(r){let e=null;return t=>{if(!e){e=[];for(let n=r.indexOf(`
|
|
7
|
-
`),a=0;n!==-1;n=r.indexOf(`
|
|
8
|
-
`,n+1),a++)a%Xt===0&&e.push(n)}let s=e.length,o=0;for(;o<s;){let n=o+s>>1;e[n]<t?o=n+1:s=n}if(o===0)return 1;let i=(o-1)*Xt+1;for(let n=r.indexOf(`
|
|
9
|
-
`,e[o-1]+1);n!==-1&&n<t;n=r.indexOf(`
|
|
10
|
-
`,n+1))i++;return i+1}}var js=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,Us=/^\s*(?:\/\/|\/\*)[#@] sourceMappingURL=/u,Vs=/^\s*(?:\/\/|\/\*)[#@] sourceMappingURL=data:[^\s,]*,[\w+/=%.~-]*\s*(?:\*\/)?\s*$/u,he=/\.map$/iu,Gs=/\.min\.[^/.]+$/iu,Ws=/(?<![\p{ID_Continue}$])_0x[0-9a-f]{4,6}(?![\p{ID_Continue}$])/gu,Ks=20,Ys=/while\s*\(\s*!!\[\]\s*\)/u,Zs=1e3;function Js(r){let e=new Set;for(let[s]of r.matchAll(Ws))if(e.add(s),e.size===Zs)break;let t=Ys.test(r);return e.size>=Ks||t?{names:e.size,loop:t}:null}var Xs=256*1024,Qs=/\.(?:[cm]?[jt]s|[jt]sx)$/iu,eo=/\.d\.[cm]?ts$/iu,rr=(r,e)=>typeof e=="number"&&e>=Xs&&Qs.test(r)&&!eo.test(r);function sr(r,e){let t=Yt(e);if(t.kind==="binary")return{...t,category:"binary",longest:0,longLines:0,average:0,inlineMap:0,obfuscation:null};let s=0,o=0,i=0,n=0;for(let c=0;c<=e.length;){let h=e.indexOf(`
|
|
11
|
-
`,c),p=h===-1?e.length:h,b=p-c-(e[p-1]==="\r"?1:0);Us.test(e.slice(c,c+64))&&Vs.test(e.slice(c,p))?s+=b:(b>js&&(i++,o+=b),n=Math.max(n,b)),c=p+1}let a=ue.test(r)||he.test(r)?null:Js(e),d={...t,longest:n,longLines:i,average:0,inlineMap:s,obfuscation:a};if(he.test(r))return{...d,category:"map"};if(ue.test(r))return{...d,category:s>0?"inline-map":t.kind};if(i===0){let c=er(r),h=c!==null&&n>110?tr(e,c):0;return{...d,average:h,category:s>0?"inline-map":h>0?"minified":t.kind}}return o/(e.length-s)<.5&&!Gs.test(r)?{...d,category:"long"}:{...d,category:s>0?"inline-map":"minified"}}var Ye=r=>r.category==="long"?r.kind:r.category;function or(r){let e=[...so(r.controls),...r.longLines>0&&["long","minified","inline-map"].includes(r.category)?["long"]:[]],t=Ye(r);return j.get(t).mark||e.length===0?[...e,t]:e}var ir=(r,e)=>e==="long"&&r.category!=="long"?"notice":j.get(e).mark,j=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}]]),to=new RegExp(We.source,"u"),ro=(r,e)=>[...r??[]].filter(([t])=>to.test(String.fromCodePoint(t))===(e==="controls")).toSorted((t,s)=>s[1]-t[1]||t[0]-s[0]),so=r=>r?["controls","invisible"].filter(e=>ro(r,e).length>0):[];var nr=1e3,ar=String.raw`[\p{L}\p{N}](?:[\p{L}\p{N}-]*[\p{L}\p{N}])?`,oo=new RegExp(String.raw`\b(?:https?|wss?|ftp)\??:\/\/(?:[^\s/@'"\x60]*@)?(${ar}(?:\.${ar})+)(?![\p{L}\p{N}-]|\.[\p{L}\p{N}_$-])`,"giu"),io=/\.(?:\p{L}{2,}|xn--[a-z0-9-]+)$/u,no=/^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$/u,ao=/^(?:localhost|.+\.(?:localhost|local|test|invalid|example|internal)|(?:.+\.)?example\.(?:com|net|org)|127(?:\.\d+){3}|0\.0\.0\.0|(?:.+\.)?w3\.org)$/u,lo=/\\([/.])/gu,co=new Set(["issues","pull","pulls","blob","tree","wiki","discussions","commit","commits","compare","blame","security","projects","labels","milestone","milestones","releases","tags","graphs","network","stargazers"]),po=new Set(["sponsors","orgs","apps","marketplace","features","topics","collections","settings","login","search","explore","about"]),uo=new Set(["blob","tree","blame","wiki"]),ho=/\.(?:patch|diff|atom)$/iu,lr=/\.git$/iu,mo=r=>{try{return decodeURIComponent(r)}catch{return r}};function fo(r){let e=null;try{e=new URL(r.replace(/^(\w+)\?:/u,"$1:").replace(/[)\]}>.,;:!]+$/u,""))}catch{}if(!e)return"github.com/";let t=e.pathname.split("/").slice(1).map(mo);t.length>1&&t.at(-1)===""&&t.pop();let[s,o="",i,...n]=t,a=s!==""&&o!==""&&!lr.test(o)&&co.has(i)&&!(i==="releases"&&n.includes("download"))&&!(i==="blob"&&e.searchParams.has("raw"))&&!(!uo.has(i)&&ho.test(t.at(-1)));return e.hostname.replace(/\.$/u,"")==="github.com"&&(t.length===1||po.has(s)||a)?"github.com":`github.com/${s}/${o.replace(lr,"")}`.toLowerCase()}function dr(r,e){if(!de(r,e)||!(e.includes("://")||e.includes(":\\/\\/")))return null;let t=new Map,s=K(e);for(let{1:o,index:i}of e.matchAll(W)){if(t.size>=nr)break;let n=o?.startsWith("/")?o.replace(/\/[a-z]*$/u,""):o,a=n?.includes("\\")?n.replaceAll(lo,"$1"):n;if(a?.includes("://"))for(let{1:d,index:c}of a.matchAll(oo)){let h=d.toLowerCase(),p=h==="github.com"?fo(/^[^\s'"\u0060]*/u.exec(a.slice(c))[0]):h;if(!t.has(p)&&(io.test(h)||no.test(h))&&!ao.test(h)&&t.set(p,s(i+c)),t.size>=nr)break}}return t.size>0?t:null}var me=String.raw`[\p{L}\p{N}_-]`,w=(r,e="")=>new RegExp(String.raw`(?<!${me})${r}${e}(?!\.?${me})`,"giu"),cr=r=>new RegExp(String.raw`(?<=(?:(?:^|[\s'"\x60(=,<>])(?:https?|wss?|ftp)\??:|['"\x60(=,])\\?\/\\?\/(?:[^\s/@'"\x60]*@)?(?:${me}+\.)*)${r}(?!\.?${me}|(?::[^\s/@'"\x60]*)?@)`,"giu"),fe=new Map([["Exfiltration","critical"],["Remote","high"],["IP lookup","moderate"]]),[I,M,D]=[...fe.keys()].map(r=>({tag:r})),Ze=new Map([["webhook-site",{...I,name:"webhook.site",pattern:w(String.raw`webhook\.site`)}],["pipedream",{...I,name:"Pipedream",pattern:w(String.raw`pipedream\.net`)}],["requestbin",{...I,name:"RequestBin",pattern:w(String.raw`(?:requestbin\.(?:net|com)|requestb\.in)`)}],["requestcatcher",{...I,name:"Request Catcher",pattern:w(String.raw`requestcatcher\.com`)}],["requestrepo",{...I,name:"requestrepo",pattern:w(String.raw`requestrepo\.com`)}],["beeceptor",{...I,name:"Beeceptor",pattern:w(String.raw`beeceptor\.com`)}],["oast",{...I,name:"OAST",pattern:w(String.raw`(?:interact\.sh|interactsh\.com|oast\.(?:pro|live|site|online|fun|me)|oastify\.com|burpcollaborator\.net)`)}],["canarytokens",{...I,name:"Canarytokens",pattern:w(String.raw`canarytokens\.(?:com|org)`)}],["dnslog",{...I,name:"DNSLog",pattern:w(String.raw`dnslog\.cn`)}],["ceye",{...I,name:"CEYE",pattern:w(String.raw`ceye\.io`)}],["telegram",{...M,name:"Telegram",pattern:w(String.raw`api\.telegram\.org`)}],["discord",{...M,name:"Discord webhook",pattern:w(String.raw`discord(?:app)?\.com`,String.raw`/api(?:/v\d+)?/webhooks`)}],["slack",{...M,name:"Slack webhook",pattern:w(String.raw`hooks\.slack\.com`,"/(?:services|workflows|triggers)")}],["pastebin",{...M,name:"Pastebin",pattern:w(String.raw`pastebin\.com`)}],["paste-ee",{...M,name:"paste.ee",pattern:w(String.raw`paste\.ee`)}],["transfer-sh",{...M,name:"transfer.sh",pattern:cr(String.raw`transfer\.sh`)}],["file-io",{...M,name:"file.io",pattern:cr(String.raw`file\.io`)}],["0x0",{...M,name:"0x0.st",pattern:w(String.raw`0x0\.st`)}],["ngrok",{...M,name:"ngrok",pattern:w(String.raw`ngrok(?:-free)?\.(?:io|app|dev)`)}],["localtunnel",{...M,name:"localtunnel",pattern:w(String.raw`loca\.lt`)}],["cloudflare-tunnel",{...M,name:"Cloudflare Tunnel",pattern:w(String.raw`trycloudflare\.com`)}],["serveo",{...M,name:"Serveo",pattern:w(String.raw`serveo\.net`)}],["pipedream-api",{...M,name:"Pipedream API",pattern:w(String.raw`pipedream\.com`)}],["bun",{...M,name:"Bun install",pattern:w(String.raw`bun\.(?:sh|com)`,"/install")}],["ipinfo",{...D,name:"ipinfo",pattern:w(String.raw`ipinfo\.io`)}],["ipify",{...D,name:"ipify",pattern:w(String.raw`ipify\.org`)}],["ifconfig-me",{...D,name:"ifconfig.me",pattern:w(String.raw`ifconfig\.me`)}],["icanhazip",{...D,name:"icanhazip",pattern:w(String.raw`icanhazip\.com`)}],["ip-api",{...D,name:"ip-api",pattern:w(String.raw`ip-api\.com`)}],["ipapi",{...D,name:"ipapi",pattern:w(String.raw`ipapi\.com?`)}],["checkip",{...D,name:"checkip",pattern:w(String.raw`checkip\.amazonaws\.com`)}]]),go=new RegExp([...Ze.values()].map(({pattern:r})=>r.source).join("|"),"iu");function pr(r,e){if(typeof e!="string"||ue.test(r)||he.test(r)||!go.test(e))return null;let t=new Map,s=K(e);for(let[o,{pattern:i}]of Ze){let n=new Set;for(let{index:a}of e.matchAll(i))if(n.add(s(a)).size>=pe)break;n.size>0&&t.set(o,[...n])}return t.size>0?t:null}function bo(r,e){let t=r&&new Map([...r].filter(([s])=>Ze.get(s).tag===e));return t?.size>0?t:null}var ur=r=>[...fe.keys()].map(e=>[e,bo(r,e)]).filter(([,e])=>e);function hr(r,e,t){let s=[...fe.values()],o=s.indexOf(fe.get(r));return s[t!==void 0&&[...e.keys()].some(i=>!t?.has(i))?Math.max(0,o-1):o]}var et=String.raw`/\*(?:[^*]|\*(?!/)){0,100}\*/|//[^\n]{0,100}\n`,g=String.raw`(?:\s|${et})*`,Xe=String.raw`(?:${g}\??\.${g}(?:call|apply))?${g}(?:\?\.${g})?\(`,vo=String.raw`(?!${g}(?<quote>["'\u0060])\s*return\s+this\s*;?\s*\k<quote>${g}\))`,mr=String.raw`process${g}\.${g}env(?![\p{ID_Continue}$])(?!${g}(?:\??\.|\[))`,wo=String.raw`${g}\)${g}\??\.${g}(?:filter|find|findLast|some|every|reduce)(?![\p{ID_Continue}$])`,fr=String.raw`(?:\{${g}\.\.\.${g})?`,_o=String.raw`(?=JSON|Object|URLSearchParams)(?<![\p{ID_Continue}$.])(?:JSON${g}\.${g}stringify|URLSearchParams)${g}\(${g}${fr}${mr}`+String.raw`|(?=Object)(?<![\p{ID_Continue}$.])Object${g}\.${g}(?:values|entries)${g}\(${g}${fr}${mr}(?!${wo})`,ve=String.raw`(?:(?:ba|z|da|k|mk|c|tc|fi|a)?sh|pwsh|powershell)`,Mr=String.raw`(?:(?:\/[\w.-]{1,40}){0,8}\/)?(?:env(?:[^\S\n]+(?:-[\w-]{1,20}(?:=\S{0,100}|[^\S\n]+(?!-)[^\s=]{1,100})?|\w{1,40}=\S{0,100})){0,6}[^\S\n]+)?`,xo=String.raw`curl|wget|\|\s*(?:sudo|${Mr}${ve})|powershell|pwsh|rundll32|osascript|mshta|certutil|bitsadmin|\/dev\/(?:tcp|udp)|iex|invoke-expression`+String.raw`|\$profile|profile\.ps1|config\.fish|conf\.d|bashrc|zshrc|zshenv|zlogin|bash_profile|bash_login|zprofile|\.profile|Launch(?:Agents|Daemons)|systemd|systemctl|\.claude|\.vscode|trufflehog|metadata\.google\.internal|["'\x60\/\\]gh(?:\.exe)?["'\x60]`,Er=String.raw`auth(?:[^\S\n]|[\\^\x60]\r?\n)+token|169\.254\.169\.254|Runner\.Worker|\/proc\/`,Cr=new RegExp(xo,"iu"),yo=new RegExp(String.raw`eval|Function${Xe}|vm["'\x60]|_compile|child_process|\.(?:npmrc|ssh|aws)|_TOKEN|${Er}|(?:stringify|values|entries|URLSearchParams)${g}\(${g}(?:\{${g}\.\.\.${g})?process${g}\.${g}env|publish|whoami|registry\.(?:npmjs\.org|yarnpkg\.com)`,"u"),Qe={test:r=>yo.test(r)||Cr.test(r)},gr="globalThis|window|global|self",br=r=>String.raw`(?=${gr}|${r})(?<![\p{ID_Continue}$#])(?<!(?<!\.)\.${g})(?<!\bfunction${g})(?:(?:${gr})${g}\??\.${g})?${r}`,Z="(?:NPM|GITHUB)_TOKEN",Rr=String.raw`\s{0,4}=(?![=>])`,$o=String.raw`\s{0,4}(?:\?:|:\s{0,4}(?:string|number|boolean|unknown|any)(?![\p{ID_Continue}$]))`,Ir=String.raw`\s{0,4}(?:(?:\)\s{0,4}){1,4}(?![\s)]{0,8}(?:[.[(]|\?\.))|&&|\|\||\?\?|\?(?!\.)|[;,:}\]]|$)`,ko=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})|(?!${Z}${Ir}))`+String.raw`${Z}(?![\p{ID_Continue}$])(?!${$o})(?:(?!${Rr})|(?<=[{,]\s{0,64}${Z}))`,So=new RegExp(String.raw`${W.source}|(?<eval>${br("eval")}(?![\p{ID_Continue}$])(?!\s*\?:))|(?<function>${br("Function")}${Xe}${vo})`+String.raw`|(?<compile>\.${g}_compile(?:${Xe}|${g}=(?![=>])))|(?<tokens>${ko})|(?<env>${_o})|(?<put>\.${g}put${g}\()`,"gmu"),Mo=new RegExp(String.raw`\.(?:npmrc|ssh|aws)|_TOKEN|${Er}|publish|whoami|registry\.`,"u"),Eo={test:r=>Mo.test(r)||Cr.test(r)},Co=new RegExp(String.raw`^\s{0,4}\]${Rr}`,"u"),Ro=new RegExp(String.raw`^\s{0,4}\]${Ir}`,"mu"),Io=/(?:!|\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,Ao=/\\(?: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,Lo=new Map([["n",`
|
|
12
|
-
`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"]]),zo=new Set([`
|
|
13
|
-
`,"\r",`\r
|
|
14
|
-
`,"\u2028","\u2029"]),Oo=r=>r.replace(Ao,(e,t,s,o,i,n)=>{if(n!==void 0)return zo.has(n)?"":Lo.get(n)??n;let a=i===void 0?Number.parseInt(t??s??o,16):Number.parseInt(i,8);return a<=1114111?String.fromCodePoint(a):e}),vr=String.raw`registry\.(?:npmjs\.org|yarnpkg\.com)`,No=new RegExp(String.raw`(?:[/\\]{2}|\bhttps?:[/\\]?)(?:[^/\\?#]{0,256}@)?${vr}|^(["'\u0060])${vr}(?=\1$|[/:?#])`,"iu"),Po=/[\t\n\r]/gu,tt=String.raw`[\\^\u0060]\r?\n`,wr=String.raw`(?:[^\n;|&]|${tt})`,_r=String.raw`\u0060\r?\n`,To=String.raw`(?:[^\n;|&"']|${tt}|"[^"\n]*"|'[^'\n]*'|"(?![^"\n]*")|'(?![^'\n]*'))`,E=String.raw`(?:[^\S\n]|${tt})`,be=String.raw`(?:${E}+--?\w[\w-]*(?:=\S*|${E}+(?!-)\S+)?){0,6}?`,Bo=String.raw`(?<![\w.-])(?:curl|wget)(?:\.exe)?${E}(?:(?!(?:curl|wget)(?![\w-]))${To}){0,2000}?["']?(?:https?|s?ftps?|scp):\\?\/\\?\/|(?<![|\\]|(?<![\w.\/-])${ve}\s*)\|\s*(?:sudo${be}(?:${E}+--)?${E}+)?${Mr}${ve}(?![\w)|$-])`+String.raw`|(?<![\w.-])(?:powershell|pwsh)(?:\.exe)?[^\S\n]+-\w|(?<![\w.-])(?:rundll32|osascript|mshta)(?:\.exe)?(?![\w-])`+String.raw`|(?<![\w.-])certutil(?:\.exe)?${E}${wr}{0,100}?-urlcache|(?<![\w.-])bitsadmin(?:\.exe)?${E}${wr}{0,100}?\/transfer|\/dev\/(?:tcp|udp)\/`+String.raw`|(?<![\w$.-])(?:iex|invoke-expression)(?![\w-])(?:[^\n;|&]|${_r}){0,200}?(?:(?<![\w$.-])(?:iwr|irm|invoke-webrequest|invoke-restmethod)(?![\w-])|\.downloadstring\s*\()`+String.raw`|(?<![\w$.-])(?:iwr|irm|invoke-webrequest|invoke-restmethod)(?![\w-])(?:(?!(?:iwr|irm|invoke-webrequest|invoke-restmethod)(?![\w-]))(?:[^\n;|&]|${_r})){0,2000}\|\s*(?:iex|invoke-expression)(?![\w-])`,Y=String.raw`(?:\\?\/|\\{1,2})`,Ar=String.raw`(?<![\w.-])\.(?:bashrc|zshrc|zshenv|zlogin|bash_profile|bash_login|zprofile)(?![\w-])|(?<=[\/\\])(?<!\.[\w-]*[\/\\])\.profile(?![\w-])|(?<![\w-])Launch(?:Agents|Daemons)(?![\w-])|systemd${Y}user(?![\w-])|fish${Y}(?:config\.fish|conf\.d)(?![\w-])`+String.raw`|(?<![\w$])\$profile(?![\w-])|(?<![\w.-])Microsoft\.\w+_profile\.ps1(?![\w-])|(?:PowerShell|\$pshome)${Y}profile\.ps1(?![\w-])|systemctl${be}${E}+--user${be}${E}+enable(?![\w-])|systemctl${be}${E}+enable(?:${E}+[^\s;|&]+){0,6}?${E}+--user(?![\w-])|(?<![\w.-])\.claude${Y}settings(?:\.local)?\.json|(?<![\w.-])\.vscode${Y}tasks\.json`,Do=String.raw`(?<![\w.-])[gG][hH](?:\.[eE][xX][eE])?${E}+auth${E}+token(?![\w-])`,Fo=String.raw`[\d*?[\]-]{1,20}|\$\{[^}\n]{0,100}\}|\$\([^)\n]{0,200}\)|\u0060[^\u0060\n]{0,200}\u0060|\$\w{1,64}|\{\w{0,64}\}|%d`,xr=String.raw`(?<![\w.-]|(?<![\/\\])\/|[\w.~%-](?:\\?\/){2})`,yr=String.raw`(?![\w-]|\.[\w-]|(?::[^\s\/@'"\x60]{0,64})?@)`,Ho=String.raw`(?<![\p{ID_Continue}$-])trufflehog(?![\p{ID_Continue}$-])`,Lr=[["credential-files",/(?<![\w$.-])\.(?:npmrc|ssh|aws)(?![\w-])/gu],["tokens",new RegExp(String.raw`^["'\u0060]${Z}["'\u0060]$|(?:\$\{?|%)${Z}(?![\p{ID_Continue}$])`,"gu")],["gh-token",new RegExp(Do,"gu")],["cloud-metadata",new RegExp(String.raw`${xr}169\.254\.169\.254${yr}(?!(?::\d{1,5})?\\?\/metadata\\?\/instance(?![\w-]))|${xr}metadata\.google\.internal${yr}`,"giu")],["runner-worker",/(?<![\w$-])Runner\.Worker(?![\w$-])/gu],["process-memory",new RegExp(String.raw`\/proc\/(?:${Fo})\/mem(?![\w-])`,"gu")],["trufflehog",new RegExp(Ho,"giu")],["publish",/(?<![\w-])(?:npm|pnpm|yarn)(?:\s+-{1,2}\w[\w-]*(?:=\S*|\s+(?!-)\S+)?){0,8}?\s+publish(?![\w-])|\/-\/whoami(?![\w-])/gu],["shell",new RegExp(Bo,"giu")],["persistence",new RegExp(Ar,"giu")]],qo=new Set(["gh-token","runner-worker","process-memory","trufflehog","shell","persistence"]),zr=Lr.filter(([r])=>qo.has(r)),jo=/(?:\.(?:sh|bash|zsh|ksh|mksh|dash|ash|csh|tcsh|fish|command|bat|cmd|ps1|psm1)|(?:^|[\\/])\.(?:bashrc|zshrc|zshenv|zlogin|bash_profile|bash_login|zprofile|profile))$/iu,Uo=/^[ \t]*#.*$|^((?:[^'"\n#\\]|\\.|'[^'\n]*'|"(?:[^"\n\\]|\\.)*")*?[ \t;&|])#.*$/gmu,Vo=/\.psm?1$/iu,Go=/^\uFEFF?#!\s*\S*\/(?:env\s+(?:(?:-\S+|\w+=\S*)\s+)*)?pwsh(?![\w-])/u,Wo=/^((?:[^'"\n#\u0060]|\u0060.|'[^'\n]*'|"(?:[^"\n\u0060]|\u0060.)*")*?)(?:(?<=^|[\s;({=,])<#[\s\S]*?(?:#>|(?![\s\S]))|(?<=^|[ \t;&|])#.*$)/gmu,Ko=/\.(?:bat|cmd)$/iu,Yo=/^[ \t]*@?(?:::|rem(?![\w-])).*$|(?<=&|\|\|)[ \t]*@?rem(?![\w-]).*$/gimu,Zo=new RegExp(String.raw`^\uFEFF?#!\s*\S*\/(?:env\s+(?:(?:-\S+|\w+=\S*)\s+)*)?${ve}(?![\w-])`,"u"),Or=[["claude",/^(["'\u0060])\.claude\1$/iu,/^(["'\u0060])settings(?:\.local)?\.json\1$/iu],["vscode",/^(["'\u0060])\.vscode\1$/iu,/^(["'\u0060])tasks\.json\1$/iu]],Jo=/^(["'\u0060])\.profile\1$/iu,Xo=/(?:homedir\s*\(\s*\)|\b(?:HOME|USERPROFILE)|(["'\u0060])~\1)\s*,\s*$/u,Qo=[["vm",/^(["'\u0060])(?:node:)?vm\1$/u],["child-process",/^(["'\u0060])(?:node:)?child_process\1$/u],["publish",/^(["'\u0060])libnpmpublish\1$/u]],ei=/^(["'\u0060])(?:npm|pnpm|yarn)\1$/u,ti=/^(["'\u0060])publish\1$/u,$r=/^(["'\u0060])-/u,kr=new RegExp(String.raw`^(?:[\s,[]|${et})*$`,"u"),ri=/^(["'\u0060])put\1$/iu,si=new RegExp(String.raw`\bmethod["']?${g}[:=]${g}$`,"u"),oi=/^(["'\u0060])(?:\S*[\\/]|[a-z]:[\\/][^\n]*[\\/])?(?:curl|wget|certutil|bitsadmin|powershell|pwsh|systemctl|gh)(?:\.exe)?\1$/iu,ii=/[;|&]/u,ni=new RegExp(String.raw`^(?:[\s,[\]\w$.?]|${et})*$`,"u"),Je=new RegExp(Ar,"iu"),ai=new RegExp(String.raw`(?:(?:require[\w$]*${g}(?:\?\.${g})?|\bimport${g})\(|\b(?:from|import))${g}$`,"u"),li=new RegExp(String.raw`\b(?:import|export)${g}type\b(?!${g}(?:from\b|=))[^;'"\x60]*(?:\bfrom|=${g}require${g}\()${g}$`,"u"),ge={tag:"eval",note:"Runs a string as code"},N={tag:"credentials",note:"Reaches for credentials"},we=new Map([["eval",{...ge,name:"eval"}],["function",{...ge,name:"Function"}],["vm",{...ge,name:"vm"}],["compile",{...ge,name:"Module._compile"}],["child-process",{tag:"child_process",note:"Runs other programs",name:"child_process"}],["credential-files",{...N,name:".npmrc, .ssh or .aws"}],["tokens",{...N,name:"NPM_TOKEN or GITHUB_TOKEN"}],["gh-token",{...N,name:"gh auth token"}],["cloud-metadata",{...N,name:"169.254.169.254 or metadata.google.internal"}],["runner-worker",{...N,name:"Runner.Worker"}],["process-memory",{...N,name:"/proc/<pid>/mem"}],["trufflehog",{...N,name:"trufflehog"}],["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"}],["shell",{tag:"shell",note:"Runs shell commands fetching or handing off code",name:"curl or wget a URL, | sh, powershell -\u2026, iex, rundll32, osascript, /dev/tcp"}],["persistence",{tag:"persistence",note:"Names a place code runs from again later",name:".bashrc, .zshrc, $PROFILE, LaunchAgents, systemd user units, .claude/settings.json, .vscode/tasks.json",mark:"critical"}]]);function Nr(r,e){let t=de(r,e),s=typeof e=="string"&&(jo.test(r)||Zo.test(e));if(!t&&!s)return null;let o=new Map,i=(a,d)=>{let c=o.get(a);c?c.length<pe&&c.push(d):o.set(a,[d])};if(t&&Pr(e,0,i),s&&Qe.test(e)){let a=Ko.test(r)?Yo:Vo.test(r)||Go.test(e)?Wo:Uo,d=e.replace(a,(c,h="")=>h+c.slice(h.length).replaceAll(/[^\n]/gu," "));for(let[c,h]of zr)for(let{index:p}of d.matchAll(h))i(c,p)}if(o.has("registry"))for(let a of o.get("put")??[])i("publish",a);for(let[a]of Or)if(o.has(`${a}-file`))for(let d of o.get(`${a}-dir`)??[])i("persistence",d);if(![...we.keys()].some(a=>o.has(a)))return null;let n=K(e);return new Map([...we.keys()].filter(a=>o.has(a)).map(a=>[a,[...new Set(o.get(a).map(n))].toSorted((d,c)=>d-c)]))}function Pr(r,e,t){if(!Qe.test(r))return;let s=null,o=null,i=0,n=!1,a=!1;for(let{0:d,1:c,groups:h,index:p}of r.matchAll(So)){if(c===void 0){for(let v of ci)h[v]&&t(v,e+p);continue}if(c[0]==="/")continue;let b=c[0]==="`"&&Qe.test(c)?ui(c):[];for(let[v,u]of b)Pr(c.slice(v,u),e+p+v,t);let f=b.length===0?c:pi(c,b),x=()=>{let v=r.slice(p+d.length,p+d.length+20);return!Co.test(v)&&(!Ro.test(v)||!Io.test(r.slice(Math.max(0,p-300),p)))},S=Eo.test(f)?Lr.flatMap(([v,u])=>f.search(u)===-1?[]:[...f.matchAll(u)].map(({index:_})=>[v,_])):[];for(let[v,u]of S)(v!=="tokens"||u>0||x())&&t(v,e+p+u);f.includes("registry.")&&No.test(Oo(f).replace(Po,""))&&t("registry",e+p);for(let[v,u]of Qo)u.test(c)&&di(r,p)&&t(v,e+p);Jo.test(c)&&Xo.test(r.slice(Math.max(0,p-100),p))&&t("persistence",e+p);for(let[v,u,_]of Or)u.test(c)&&t(`${v}-dir`,e+p),_.test(c)&&t(`${v}-file`,e+p);if(a&&kr.test(r.slice(i,p))?(ti.test(c)&&t("publish",e+p),a=$r.test(c)||n,n=$r.test(c)):a=!1,ei.test(c)&&([a,n]=[!0,!1]),o&&o.arguments<20&&ni.test(r.slice(i,p))){let v=f.slice(1,-1);o.line+=` ${ii.test(v)?`"${v.replaceAll('"',"'")}"`:v}`,o.arguments++;let{line:u}=o,_=zr.find(([,L])=>u.search(L)!==-1);_&&(t(_[0],o.at),o=null)}else o=null;if(oi.test(c)&&(o={arguments:0,at:e+p,line:c.slice(1,-1)}),s&&s.text.length+f.length<200&&kr.test(r.slice(i,p))){let[v,u]=[s.text.slice(1,-1),f.slice(1,-1)];!Je.test(v)&&!Je.test(u)&&Je.test(`${v}/${u}`)&&t("persistence",s.at)}s={text:f,at:e+p},ri.test(c)&&si.test(r.slice(Math.max(0,p-300),p))&&t("put",e+p),i=p+d.length}}var ci=["eval","function","compile","tokens","env","put"];function di(r,e){let t=r.slice(Math.max(0,e-300),e);return ai.test(t)&&!li.test(t)}function pi(r,e){let t=[],s=0;for(let[o,i]of e)t.push(r.slice(s,o)," ".repeat(i-o)),s=i;return t.push(r.slice(s)),t.join("")}function ui(r){let e=[];for(let t=r.indexOf("${");t!==-1;t=r.indexOf("${",t)){let s=0;for(;r[t-1-s]==="\\";)s++;if(s%2===1){t+=2;continue}let o=hi(r,t+2);e.push([t+2,o]),t=o}return e}var Sr=new RegExp(W.source,"muy");function hi(r,e){let t=0;for(let s=e;s<r.length;s++){let o=r[s];if("\"'`/ ".includes(o)){Sr.lastIndex=s;let i=Sr.exec(r);if(i){s+=i[0].length-1;continue}}if(o==="{")t++;else if(o==="}"&&t--===0)return s}return r.length}var fl=r=>[...new Set([...we].filter(([e])=>r.some(t=>t.has(e))).map(([,{tag:e}])=>e))].join(", ");var gl=new Set([N.tag]),Tr=r=>[...new Map([...r?.keys()??[]].map(e=>we.get(e)).map(({tag:e,mark:t})=>[e,{name:e,severity:t??"high"}])).values()];var xl=["critical","high","moderate","low","notice"],Br=r=>r==="warn"?"high":"notice";function mi({path:r,bytes:e,readability:t,runsCode:s,exfiltration:o}){let i=Ye(t),n=i!=="ascii"&&i!=="map"&&j.get(i).mark;return[...Tr(s),...ur(o).map(([a,d])=>({name:a,severity:hr(a,d)})),...rr(r,e)?[{name:"Large",severity:"notice"}]:[],...t.obfuscation?[{name:"Obfuscated",severity:"high"}]:[],...or(t).filter(a=>a==="controls"||a==="long").map(a=>({name:j.get(a).tag,severity:Br(ir(t,a))})),...n?[{name:j.get(i).tag,severity:Br(n)}]:[]]}function yl(r,e,t){let s=sr(r,e),o=pr(r,e),i=Nr(r,e);return{readability:s,runsCode:i,exfiltration:o,hosts:dr(r,e),stamps:mi({path:r,bytes:t,readability:s,runsCode:i,exfiltration:o})}}var Dr=(r,e)=>new Date(Date.parse(r)+e*864e5);function fi(r){let e=[];if(!r?.days)return e;for(let t=r.days.length-1;t>=6;t-=7){let s=0;for(let o=t-6;o<=t;o++)s+=r.days[o];e.push({from:Dr(r.start,t-6),to:Dr(r.start,t),total:s})}return e.toReversed()}function kl(r){let e=[];if(!r?.days)return e;let t=Date.parse(r.start),s=null;r.days.forEach((i,n)=>{let a=new Date(t+n*864e5);a.getUTCDate()===1&&(s={from:a,to:a,total:0},e.push(s)),s&&(s.total+=i,s.to=a)});let o=e.at(-1);return o&&new Date(o.to.getTime()+864e5).getUTCDate()!==1&&e.pop(),e}var gi=[[10,55e7],[20,405e6],[50,285e6],[100,225e6],[200,165e6],[500,95e6],[1e3,5e7],[2e3,2e7],[5e3,4e6],[1e4,85e4],[2e4,155e3],[5e4,18e3],[1e5,2e3],[1/0,0]];function Sl(r){let e=fi(r).slice(-6);if(e.length===0)return null;let t=Math.max(...e.map(s=>s.total));return gi.find(([,s])=>t>=s)[0]}var Ml=r=>r<=200?"is-solid":r<=5e3?"is-top":r<=2e4?"is-mid":r<=1e5?"is-low":"is-unpopular";var El=r=>r>2e4;function Ol(r,e=[]){let t=new Map,s=r.flatMap(o=>{let i=e.filter(a=>a.bundles?.includes(o.integrity));return(i.length>0?i.map(a=>({id:a.id,label:a.name})):[{id:"unattached",label:"Unattached"}]).map(a=>(t.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:[...t.values()],bundles:s,reports:[],scans:[]}}function Nl(r,e){if(e.error)throw new Error(e.error);let t=bt(e),s=e.kind==="stasis"?e.bundle?.formats:null,o=vt(e),i=[...oe(e)].filter(([,a])=>a!=null).map(([a,d])=>({path:a,format:s?.get(a)??null,bytes:d,lines:o.get(a)??0,size:z(d),module:F(a,{packageDir:t?.get(a)})})),n=[{id:"all",label:"All",filePaths:null},...[...Ue(e,i.map(a=>a.path))].map(([a,d])=>({id:`reason:${a}`,label:a,filePaths:[...d]}))];return{...r,files:i,reasons:n,size:z(e.size)}}export{ke as a,vi as b,_i as c,C as d,A as e,Li as f,ie as g,Vr as h,Me as i,Nt as j,cs as k,Da as l,Fa as m,Ha as n,_s as o,qa as p,Ue as q,ks as r,Ss as s,Za as t,Vt as u,Ja as v,Xa as w,Ol as x,Nl as y,sl as z,ol as A,Ls as B,pe as C,js as D,Ks as E,Zs as F,sr as G,Ye as H,or as I,ir as J,j as K,ro as L,fe as M,Ze as N,ur as O,hr as P,we as Q,fl as R,xl as S,yl as T,Dr as U,fi as V,kl as W,Sl as X,Ml as Y,El as Z};
|
|
15
|
-
/*!
|
|
16
|
-
* PHP elephant adapted from Material Icon Theme:
|
|
17
|
-
* https://github.com/material-extensions/vscode-material-icon-theme/blob/main/icons/php_elephant.svg
|
|
18
|
-
* Copyright (c) 2025 Material Extensions
|
|
19
|
-
*
|
|
20
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
21
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
22
|
-
* in the Software without restriction, including without limitation the rights
|
|
23
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
24
|
-
* of the Software, and to permit persons to whom the Software is furnished to do
|
|
25
|
-
* so, subject to the following conditions:
|
|
26
|
-
*
|
|
27
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
28
|
-
* copies or substantial portions of the Software.
|
|
29
|
-
*
|
|
30
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
31
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
32
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
33
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
34
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
35
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
36
|
-
* SOFTWARE.
|
|
37
|
-
*/
|
|
38
|
-
/*! Bundled license information:
|
|
39
|
-
|
|
40
|
-
lit-html/directives/live.js:
|
|
41
|
-
(**
|
|
42
|
-
* @license
|
|
43
|
-
* Copyright 2020 Google LLC
|
|
44
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
45
|
-
*)
|
|
46
|
-
*/
|
package/out/chunk-2KBF5TZ7.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var n=`.managed-comment{container:managed-comment / inline-size;white-space:normal}.managed-comment-row{display:grid;grid-template-columns:minmax(0,max-content) minmax(0,1fr) auto;align-items:start;gap:.35rem .65rem;line-height:1.5}.managed-comment-author{grid-column:1;grid-row:1;display:flex;align-items:center;gap:.45rem;min-width:0;max-width:14rem;& strong{overflow:hidden;text-overflow:ellipsis;font-weight:600}}.managed-comment-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:1.3rem;height:1.3rem;overflow:hidden;border-radius:50%;background:rgb(from var(--muted) r g b / .15);color:var(--muted);font-size:.65rem;font-weight:600;& img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}& img[hidden]{display:none}}.managed-comment-body{grid-column:2;grid-row:1;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;& a{color:var(--accent);text-decoration:none}& a:hover{text-decoration:underline}& a.comment-self-ref{text-decoration:underline dotted;text-underline-offset:2px}& a.comment-self-ref:hover{text-decoration:underline solid}}.managed-comment-time{color:var(--muted);font-size:.7rem;font-weight:400;white-space:nowrap;text-align:right}.managed-comment-meta{grid-column:3;grid-row:1;justify-self:end;display:flex;align-items:center;gap:.5rem;min-height:1.3rem}.managed-comment-actions{display:flex;align-items:center;gap:.15rem}.managed-comment-row:not(:has(.managed-comment-author)){grid-template-columns:minmax(0,1fr) auto;.managed-comment-body{grid-column:1}.managed-comment-meta{grid-column:2}}@container managed-comment (max-width: 28rem){.managed-comment-row:has(.managed-comment-meta){grid-template-columns:minmax(0,max-content) minmax(0,1fr);.managed-comment-meta{grid-column:1 / -1;grid-row:1}.managed-comment-author,.managed-comment-body{grid-row:2}}.managed-comment-row:not(:has(.managed-comment-author)){grid-template-columns:minmax(0,1fr)}.managed-comment-author{max-width:9rem}}
|
|
2
|
-
`;export{n as a};
|
package/out/chunk-35VE6CDH.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as n}from"./chunk-DIJJNTRH.js";import{c as t,g as i}from"./chunk-2XUEZHIP.js";import{c as d,l as s,m}from"./chunk-V5O7M2YT.js";var c=[["manage","Overview"],["manage-bundles","Bundles"],["manage-scans","Scans"],["manage-reports","Reports"],["manage-deduplication","Deduplication","admin"],["manage-repos","Repositories","admin"],["admin-users","Users","admin"],["manage-teams","Teams","admin"],["manage-import","Import","admin"],["manage-links","Links"],["manage-history","History"]];function h(e,r,l=!1){return t`<header class="manage-header"><nav class="manage-nav" aria-label="Management pages">${c.filter(([a,,o])=>(o==null||o===r)&&(a!=="manage-links"||l)).map(([a,o])=>t`<button type="button" aria-current="${e===a?"page":i}" @click="${()=>{document.dispatchEvent(new CustomEvent("managed-admin-navigate",{detail:{view:a},bubbles:!0,composed:!0}))}}">${o}</button>`)}</nav></header>`}function v(e){if(e==="bundle")return n(d);if(e==="report"||e==="preview")return n(m);if(e==="scan")return n(s);let r={users:"M10.75 4.75a2.75 2.75 0 1 1-5.5 0 2.75 2.75 0 0 1 5.5 0ZM3 14v-1.5A3.5 3.5 0 0 1 6.5 9h3a3.5 3.5 0 0 1 3.5 3.5V14",team:"M8.5 5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM1.5 14v-1.5A3.5 3.5 0 0 1 5 9h2a3.5 3.5 0 0 1 3.5 3.5V14M11 2.75a2.5 2.5 0 0 1 0 4.5m1 2a3 3 0 0 1 2.5 3V14",repo:"M3 12.5V3a1.5 1.5 0 0 1 1.5-1.5H13v13H4.5a1.5 1.5 0 0 1 0-3H13M7 1.5v6l2-1.5 2 1.5v-6",history:"M2 5a6.25 6.25 0 1 1-.25 5M1.5 1.5V5H5M8 4.5V8l3 1.5",arrow:"M3 8h10M9 4l4 4-4 4",show:"M1 8s2.5-4.5 7-4.5S15 8 15 8s-2.5 4.5-7 4.5S1 8 1 8Zm9 0a2 2 0 1 0-4 0 2 2 0 0 0 4 0",hide:"m2 2 12 12M6 3.75A8 8 0 0 1 8 3.5c4.5 0 7 4.5 7 4.5a12 12 0 0 1-2 2.5M3.5 5A13 13 0 0 0 1 8s2.5 4.5 7 4.5a8 8 0 0 0 3-.6",download:"M8 2v8M5 7l3 3 3-3M2 11v3h12v-3",upload:"M8 11V2m-3 3 3-3 3 3M2 10v4h12v-4"};return t`<svg class="${e==="repo"?"repo-icon":i}" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="${r[e]??r.repo}"></path></svg>`}var w=`:host{display:flex;flex-direction:column;position:relative;padding:0 clamp(1rem,3vw,3rem) 3rem;color:var(--text);container-type:inline-size;font-family:var(--sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);font-size:.875rem;line-height:1.5;--panel:color-mix(in srgb, var(--bg) 50%, var(--surface));--panel-hover:color-mix(in srgb, var(--text) 3%, var(--panel))}*,*:before,*:after{box-sizing:border-box}button,summary,select,label,legend,h1,h2,h3,.section-heading,.ui-hint,.page-intro>.intro,.count,.result-count,.repository-count,.breadcrumb-separator,.list-head,.report-list-head,.history-head,.bundle-group-head,.drop-copy,.local-import-copy,.location-field>span,.empty:not(.error,[role=alert]),.msg:not(.error,[role=alert]),.local-import-message:not(.error,[role=status]),.data-empty,.revision-empty{cursor:default;user-select:none;-webkit-user-select:none}input:not([type=checkbox],[type=radio]),textarea,[contenteditable],pre,code,.mono{cursor:text;user-select:text;-webkit-user-select:text}.wrap{width:100%;max-width:76rem;margin:0 auto;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:none;scrollbar-gutter:stable}.manage-header{position:sticky;top:0;z-index:2}.wrap:has(>.manage-list){display:flex;flex-direction:column;overflow:hidden;scrollbar-gutter:auto}.wrap:has(>.manage-list)>:not(.manage-list){flex:none}.manage-list{position:relative;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.manage-nav button{flex:0 0 auto;position:relative;min-height:3.7rem;padding:.9rem 0;border:0;border-radius:0;color:var(--muted);background:none;font-size:.8rem;font-weight:500;white-space:nowrap}.manage-nav button:hover,.manage-nav button[aria-current=page]{color:var(--text)}.manage-nav button[aria-current=page]:after{content:"";position:absolute;bottom:.6rem;inset-inline:0;height:2px;background:var(--accent);border-radius:var(--ui-radius, 2px)}.manage-nav button:focus-visible{outline-offset:-3px}.head{display:flex;align-items:center;flex-wrap:wrap;gap:.7rem;margin:0 0 .5rem}h1,.head h1{margin:0;font-size:1.9rem;font-weight:600;letter-spacing:-.045em;line-height:1.2}.count{display:inline-flex;align-items:center;justify-content:center;min-width:1.6rem;padding:.12rem .5rem;border:1px solid var(--border);border-radius:6px;color:var(--muted);background:var(--surface);font-size:.73rem;font-weight:500;font-variant-numeric:tabular-nums}button,input,select{font:inherit}button,select,input[type=checkbox]{cursor:default}button,a,input,select{-webkit-app-region:no-drag}button,a{transition:background .15s,color .15s,border-color .15s}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button:disabled,select:disabled{opacity:.45}input:not([type=checkbox]),select{min-width:0;min-height:2.25rem;padding:.45rem .65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 7px);background:var(--bg);color:var(--text);font-size:.8rem}input::placeholder{color:var(--muted)}input[type=checkbox]{accent-color:var(--accent)}.btn,.drop-browse{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.25rem;height:auto;padding:.45rem .8rem;border:1px solid var(--border);border-radius:var(--ui-radius, 7px);background:var(--surface);color:var(--text);font-size:.8rem;font-weight:500;text-decoration:none;white-space:nowrap}.btn:hover:not(:disabled),.drop-browse:hover:not(:disabled){background:var(--surface-active);border-color:var(--muted)}.btn.primary,.drop-browse{color:var(--bg);background:var(--accent);border-color:var(--accent)}.btn.primary:hover:not(:disabled),.drop-browse:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.btn svg,.icon-btn svg{width:1rem;height:1rem}.icon-btn{width:2rem;height:2rem}.avatar{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg));border:1px solid color-mix(in srgb,var(--accent) 16%,var(--border))}.breadcrumb{display:flex;align-items:center;flex-basis:100%;gap:.4rem;margin-bottom:.8rem}.breadcrumb-manage{padding:.1rem 0;border:0;background:transparent;color:var(--muted);font-size:.78rem}.breadcrumb-manage:hover{color:var(--text)}.breadcrumb-separator{color:var(--muted)}.msg{margin:1rem 0;padding:1.1rem 1.25rem;border:1px solid var(--border);border-radius:var(--ui-radius, 9px);color:var(--muted);font-size:.85rem}.msg.error{color:var(--critical);border-color:color-mix(in srgb,var(--critical) 35%,var(--border))}.empty{padding:3.5rem 1.5rem;border:1px dashed var(--border);border-radius:var(--ui-radius, 10px);color:var(--muted);text-align:center}.empty strong{display:block;margin-bottom:.4rem;color:var(--text);font-size:.95rem;font-weight:500}.empty p{margin:0;font-size:.85rem}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@container (max-width: 35rem){.drop-copy>span{display:none}.manage-nav{gap:1.2rem;margin-bottom:1.75rem}.manage-nav button{min-height:3.25rem}h1,.head h1{font-size:1.65rem}.intro{margin-bottom:1.5rem}}@media(prefers-reduced-motion:reduce){button,a{transition:none}}.collection-toolbar input{flex:1;max-width:26rem;min-width:10rem}.collection-toolbar select{min-width:10rem}.result-count{text-align:right;white-space:nowrap;margin-left:auto;color:var(--muted);font-size:.75rem;font-variant-numeric:tabular-nums}@container (max-width: 35rem){.collection-toolbar input{flex-basis:100%;max-width:none}}.manage-nav{display:flex;gap:1.35rem;align-items:stretch;overflow-x:auto;scrollbar-width:thin;border-bottom:1px solid var(--border);margin-bottom:1.5rem;padding:0 .1rem}.wrap>:not(.manage-header),.manage-nav{-webkit-app-region:no-drag;app-region:no-drag}@media(display-mode:window-controls-overlay){.manage-header{display:flow-root}.manage-header:before{content:"";float:right;width:var(--wco-right-toolbar, 0px);height:var(--wco-titlebar-height)}.manage-nav{width:max-content;max-width:100%;border-bottom:0}.manage-nav button{min-height:var(--wco-titlebar-height);padding-block:.35rem}.manage-nav button[aria-current=page]:after{bottom:0}}.intro{margin:0 0 1.25rem;max-width:46rem;color:var(--muted);font-size:.875rem;line-height:1.65}.collection-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:.85rem}.page-intro{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:1.25rem}.page-intro .intro{margin:0}.page-intro>.btn{margin-block:calc(-.45rem - 1px)}a{cursor:default}.loading-rows{border:1px solid var(--border);border-radius:var(--ui-radius, 10px);overflow:hidden}.loading-row{display:grid;align-content:center;gap:.6rem;min-height:4.25rem;padding:.85rem 1rem}.loading-row+.loading-row{border-top:1px solid var(--border)}.loading-row span{width:40%;height:.65rem;border-radius:3px;background:color-mix(in srgb,var(--muted) 15%,transparent)}.loading-row span+span{width:65%;height:.5rem}.drop-card{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.7rem .85rem;border:1px dashed color-mix(in srgb,var(--muted) 35%,var(--border));border-radius:var(--ui-radius, 8px);background:var(--panel)}.drop-icon{display:grid;place-items:center;flex-shrink:0;width:1.8rem;height:1.8rem;color:var(--muted)}.drop-icon svg{width:1.1rem;height:1.1rem}.drop-copy{min-width:0;display:flex;align-items:baseline;flex-wrap:wrap;gap:.2rem .6rem}.drop-copy strong{font-size:.8rem;font-weight:500}.drop-copy>span{color:var(--muted);font-size:.75rem}.drop-browse{min-width:7rem;margin-left:auto;flex-shrink:0}.content-hidden .filename,.content-hidden .report-name,.content-hidden .report-uploader{color:var(--muted)}.status{display:inline-flex;align-items:center;gap:.3rem;width:fit-content;padding:.1rem .4rem;border:1px solid var(--border);border-radius:5px;color:var(--muted);font-size:.65rem}.status:before{content:"";width:.25rem;height:.25rem;border-radius:50%;background:currentcolor}.status.visible{color:var(--green);border-color:rgb(from var(--green) r g b / .2);background:rgb(from var(--green) r g b / .06)}
|
|
2
|
-
`;export{h as a,v as b,w as c};
|
package/out/chunk-3BZ7JERB.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function n(t){return typeof t=="string"&&/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u.test(t)?t:null}export{n as a};
|
package/out/chunk-4XCDFGDP.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{d as o}from"./chunk-XYFXXB2G.js";import{b as s,c as i}from"./chunk-C4Z6ZBXV.js";import{g as r}from"./chunk-2XUEZHIP.js";var u=s(class extends i{constructor(){super(...arguments),this.key=r}render(t,e){return this.key=t,e}update(t,[e,m]){return e!==this.key&&(o(t),this.key=e),m}});export{u as a};
|
|
2
|
-
/*! Bundled license information:
|
|
3
|
-
|
|
4
|
-
lit-html/directives/keyed.js:
|
|
5
|
-
(**
|
|
6
|
-
* @license
|
|
7
|
-
* Copyright 2021 Google LLC
|
|
8
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
9
|
-
*)
|
|
10
|
-
*/
|