@preventive/triage 1.0.0-alpha.36 → 1.0.0-alpha.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +16 -0
  2. package/common/bundle-compare-diff.d.ts +3 -0
  3. package/common/bundle-compare-diff.js +522 -0
  4. package/common/bundle-compare-inputs.d.ts +2 -0
  5. package/common/bundle-compare-inputs.js +65 -0
  6. package/common/bundle-metadata.d.ts +6 -2
  7. package/common/bundle-metadata.js +63 -20
  8. package/common/bundle-pkg-of.d.ts +1 -0
  9. package/common/bundle-pkg-of.js +90 -0
  10. package/common/bundle-source-links.js +7 -0
  11. package/common/bundle-sourcemap.d.ts +10 -0
  12. package/common/bundle-sourcemap.js +100 -0
  13. package/common/bundle-sources.d.ts +3 -1
  14. package/common/bundle-sources.js +47 -19
  15. package/common/code-language.js +16 -2
  16. package/common/default-scan-models.ts +2 -1
  17. package/common/dependency-reviews.d.ts +23 -0
  18. package/common/dependency-reviews.js +81 -0
  19. package/common/finding-duplicates.js +58 -0
  20. package/common/finding-filters.js +274 -0
  21. package/common/github-pr.ts +1 -1
  22. package/common/gzip.js +59 -0
  23. package/common/line-diff.d.ts +8 -0
  24. package/common/line-diff.js +56 -0
  25. package/common/linked-workspace-groups.js +63 -0
  26. package/common/managed/npm-packages.d.ts +5 -0
  27. package/common/managed/npm-packages.js +34 -0
  28. package/common/managed/permissions.ts +1 -5
  29. package/common/managed/routes.js +123 -12
  30. package/common/managed/team-app.d.ts +2 -0
  31. package/common/managed/team-app.js +31 -0
  32. package/common/managed/triage.ts +1 -1
  33. package/common/managed/upload-seal.ts +126 -0
  34. package/common/pretty-print.d.ts +5 -0
  35. package/common/pretty-print.js +24 -0
  36. package/common/revalidation-conflicts.js +48 -0
  37. package/common/revalidation-input-groups.js +56 -0
  38. package/common/workspace-app.js +23 -0
  39. package/common/workspace-groups.js +176 -0
  40. package/out/brotli-fallback.js +3 -3
  41. package/out/chunk-2KBF5TZ7.js +2 -0
  42. package/out/chunk-2XUEZHIP.js +28 -0
  43. package/out/chunk-35VE6CDH.js +2 -0
  44. package/out/chunk-3BZ7JERB.js +1 -0
  45. package/out/chunk-4XCDFGDP.js +10 -0
  46. package/out/chunk-5FKRIJGF.js +1 -0
  47. package/out/chunk-6Z5XLSPJ.js +1 -0
  48. package/out/chunk-ABW5FVSN.js +1 -0
  49. package/out/chunk-BJKRVROW.js +1 -0
  50. package/out/chunk-BYUEDJOM.js +7 -0
  51. package/out/chunk-C4Z6ZBXV.js +10 -0
  52. package/out/chunk-CMQA4DM6.js +1 -0
  53. package/out/chunk-CVVJAXVY.js +2 -0
  54. package/out/chunk-DCQX2J3C.js +223 -0
  55. package/out/chunk-DIJJNTRH.js +10 -0
  56. package/out/chunk-F4OMDNEY.js +1 -0
  57. package/out/chunk-FU4MTW7F.js +1 -0
  58. package/out/chunk-GJ4IUCNS.js +1 -0
  59. package/out/chunk-GMFXFEUA.js +2 -0
  60. package/out/chunk-GNXOKIGP.js +80 -0
  61. package/out/chunk-GZ4MS3TE.js +13 -0
  62. package/out/chunk-HIV7SVI7.js +1 -0
  63. package/out/chunk-IU3CCINR.js +3 -0
  64. package/out/chunk-JAKWIZWL.js +2 -0
  65. package/out/chunk-K3X5EJBQ.js +2 -0
  66. package/out/chunk-KEX2ATEW.js +2 -0
  67. package/out/chunk-KYCNJVB7.js +1 -0
  68. package/out/chunk-NRPC74AM.js +1 -0
  69. package/out/chunk-OJ5DGP5E.js +33 -0
  70. package/out/chunk-OOJM4CTU.js +1 -0
  71. package/out/chunk-PNHBZGDD.js +1 -0
  72. package/out/chunk-R5O6FAW4.js +2 -0
  73. package/out/chunk-RFZQQXSG.js +17 -0
  74. package/out/chunk-SD2WJAXN.js +48 -0
  75. package/out/chunk-TUII34K2.js +1 -0
  76. package/out/chunk-TZ5KB2Y5.js +10 -0
  77. package/out/chunk-UNTRGE26.js +2 -0
  78. package/out/chunk-UYAXVRVL.js +1 -0
  79. package/out/chunk-V3ME6FI5.js +2 -0
  80. package/out/chunk-V5O7M2YT.js +1 -0
  81. package/out/chunk-VIHGO77Y.js +1 -0
  82. package/out/chunk-W4J3MGLB.js +1 -0
  83. package/out/chunk-WGG7KQUH.js +1 -0
  84. package/out/chunk-XYFXXB2G.js +10 -0
  85. package/out/chunk-YVZH5SHP.js +1 -0
  86. package/out/chunk-ZPD5R5RP.js +3 -0
  87. package/out/client-managed-import.js +3 -87
  88. package/out/client-managed.js +26 -338
  89. package/out/client-sync.js +8 -14
  90. package/out/graph.js +17 -30
  91. package/out/index.html +34 -0
  92. package/out/prism.js +6 -2
  93. package/out/terminal.js +241 -257
  94. package/out/view.css +1 -1
  95. package/out/view.js +76 -520
  96. package/package.json +88 -7
  97. package/risk/files/characters.js +196 -0
  98. package/risk/files/hosts.js +205 -0
  99. package/risk/files/readability.js +164 -0
  100. package/risk/files/runs-code.js +329 -0
  101. package/risk/files/script.js +112 -0
  102. package/risk/files/stamps.js +46 -0
  103. package/risk/index.d.ts +142 -0
  104. package/risk/index.js +7 -0
  105. package/risk/npm/assess.js +219 -0
  106. package/risk/npm/combined.js +65 -0
  107. package/risk/npm/compare.js +222 -0
  108. package/risk/npm/dependencies.js +153 -0
  109. package/risk/npm/diff.js +43 -0
  110. package/risk/npm/downloads.js +84 -0
  111. package/risk/npm/files.js +34 -0
  112. package/risk/npm/held.js +60 -0
  113. package/risk/npm/install-scripts.js +33 -0
  114. package/risk/npm/malware.js +36 -0
  115. package/risk/npm/manifest.js +65 -0
  116. package/risk/npm/new-dependency.js +30 -0
  117. package/risk/npm/old-version.js +108 -0
  118. package/risk/npm/registry.js +282 -0
  119. package/risk/npm/release.js +85 -0
  120. package/risk/npm/specs.js +124 -0
  121. package/risk/npm/tarball.js +113 -0
  122. package/server-e2e/http.ts +7 -7
  123. package/server-e2e/npm-proxy.ts +1 -1
  124. package/server-e2e/objstore/fetch-mint-guard.ts +2 -2
  125. package/server-e2e/objstore/handlers.ts +1 -1
  126. package/server-e2e/objstore/tokens.ts +1 -1
  127. package/server-e2e/sign.ts +1 -1
  128. package/server-managed/bundle-advisories.ts +68 -11
  129. package/server-managed/bundle-build-worker.js +1 -1
  130. package/server-managed/bundle-build.ts +6 -2
  131. package/server-managed/bundle-cache.ts +37 -4
  132. package/server-managed/bundle-commits.ts +140 -0
  133. package/server-managed/bundle-summary-cache.ts +24 -10
  134. package/server-managed/config.ts +4 -0
  135. package/server-managed/db-methods.ts +98 -11
  136. package/server-managed/db-neon.ts +39 -4
  137. package/server-managed/db-schema.ts +14 -2
  138. package/server-managed/db-table-names.ts +1 -1
  139. package/server-managed/db.ts +7 -3
  140. package/server-managed/dependency-reviews.ts +248 -0
  141. package/server-managed/github-issue-oauth.ts +5 -6
  142. package/server-managed/github-metadata.ts +115 -0
  143. package/server-managed/github-oauth.ts +38 -2
  144. package/server-managed/http-response.ts +26 -0
  145. package/server-managed/http.ts +943 -52
  146. package/server-managed/index.ts +11 -5
  147. package/server-managed/kept.ts +28 -0
  148. package/server-managed/locked-packages.ts +85 -0
  149. package/server-managed/lru.ts +30 -0
  150. package/server-managed/npm-insights.ts +440 -0
  151. package/server-managed/npm-kept.ts +65 -0
  152. package/server-managed/npm-loads.ts +167 -0
  153. package/server-managed/npm-manifest.ts +115 -0
  154. package/server-managed/npm-packages.ts +378 -0
  155. package/server-managed/npm-provenance.ts +123 -0
  156. package/server-managed/npm-risk.ts +177 -0
  157. package/server-managed/pretty-print.ts +352 -0
  158. package/server-managed/public-workspace.ts +78 -7
  159. package/server-managed/rename-diff-worker.js +26 -0
  160. package/server-managed/rename-diff.ts +270 -0
  161. package/server-managed/report-sources.ts +13 -2
  162. package/server-managed/repository-browser.ts +19 -5
  163. package/server-managed/repository-risk.ts +413 -0
  164. package/server-managed/session.ts +16 -2
  165. package/server-managed/sql.ts +5 -2
  166. package/server-managed/storage-encryption.ts +5 -3
  167. package/server-managed/storage-payload.ts +4 -0
  168. package/server-managed/storage-stores.ts +2 -0
  169. package/server-managed/storage.ts +6 -3
  170. package/server-managed/team-app.ts +94 -0
  171. package/server-managed/team-feed.ts +1 -1
  172. package/server-managed/team-npm-scopes.ts +77 -0
  173. package/server-managed/type-only-worker.js +19 -0
  174. package/server-managed/type-only.ts +103 -0
  175. package/server-managed/uploads.ts +25 -4
  176. package/server-managed/upstream-cache.ts +147 -5
  177. package/server-managed/view-as.ts +58 -0
@@ -0,0 +1 @@
1
+ var f=new TextEncoder,c=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0});function u(e){if(typeof e!="string")throw new TypeError(`encodeUtf8 expects a string, got ${typeof e}`);if(!e.isWellFormed())throw new TypeError("encodeUtf8: input contains lone surrogates");return f.encode(e)}var i=2;function d(e){if(typeof e!="string")throw new TypeError(`utf8ByteLength expects a string, got ${typeof e}`);if(/[\u0100-\uFFFF]/.test(e))return f.encode(e).byteLength;let n=/[\u0080-\u00FF]/gu,r=e.length;for(;n.test(e);){let t=n.lastIndex-1;for(let o=0;t<e.length&&o<i;t++)e.codePointAt(t)>127?(r++,o=0):o++;n.lastIndex=t}return r}function l(e){if(!ArrayBuffer.isView(e)&&!(e instanceof ArrayBuffer))throw new TypeError(`decodeUtf8 expects a BufferSource, got ${e===null?"null":typeof e}`);return c.decode(e)}export{u as a,d as b,l as c};
@@ -0,0 +1,10 @@
1
+ import{b as m,c as h,d as A,e as D,f as y}from"./chunk-XYFXXB2G.js";import{a as k,b as w,c as V}from"./chunk-C4Z6ZBXV.js";import{f as P}from"./chunk-2XUEZHIP.js";var b=(s,f,c)=>{let p=new Map;for(let e=f;e<=c;e++)p.set(s[e],e);return p},I=w(class extends V{constructor(s){if(super(s),s.type!==k.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,f,c){let p;c===void 0?c=f:f!==void 0&&(p=f);let e=[],n=[],o=0;for(let a of s)e[o]=p?p(a,o):o,n[o]=c(a,o),o++;return{values:n,keys:e}}render(s,f,c){return this.dt(s,f,c).values}update(s,[f,c,p]){let e=D(s),{values:n,keys:o}=this.dt(f,c,p);if(!Array.isArray(e))return this.ut=o,n;let a=this.ut??=[],u=[],v,g,t=0,l=e.length-1,r=0,i=n.length-1;for(;t<=l&&r<=i;)if(e[t]===null)t++;else if(e[l]===null)l--;else if(a[t]===o[r])u[r]=h(e[t],n[r]),t++,r++;else if(a[l]===o[i])u[i]=h(e[l],n[i]),l--,i--;else if(a[t]===o[i])u[i]=h(e[t],n[i]),m(s,u[i+1],e[t]),t++,i--;else if(a[l]===o[r])u[r]=h(e[l],n[r]),m(s,e[t],e[l]),l--,r++;else if(v===void 0&&(v=b(o,r,i),g=b(a,t,l)),v.has(a[t]))if(v.has(a[l])){let d=g.get(o[r]),x=d!==void 0?e[d]:null;if(x===null){let C=m(s,e[t]);h(C,n[r]),u[r]=C}else u[r]=h(x,n[r]),m(s,e[t],x),e[d]=null;r++}else y(e[l]),l--;else y(e[t]),t++;for(;r<=i;){let d=m(s,u[i+1]);h(d,n[r]),u[r++]=d}for(;t<=l;){let d=e[t++];d!==null&&y(d)}return this.ut=o,A(s,u),P}});export{I as a};
2
+ /*! Bundled license information:
3
+
4
+ lit-html/directives/repeat.js:
5
+ (**
6
+ * @license
7
+ * Copyright 2017 Google LLC
8
+ * SPDX-License-Identifier: BSD-3-Clause
9
+ *)
10
+ */
@@ -0,0 +1,2 @@
1
+ import{a as v}from"./chunk-2KBF5TZ7.js";import{a as u}from"./chunk-K3X5EJBQ.js";import{g,h as f}from"./chunk-CVVJAXVY.js";import{a as l}from"./chunk-KYCNJVB7.js";import{d as p}from"./chunk-IU3CCINR.js";import"./chunk-UYAXVRVL.js";import"./chunk-PNHBZGDD.js";import{a as y}from"./chunk-R5O6FAW4.js";import"./chunk-CMQA4DM6.js";import"./chunk-4XCDFGDP.js";import"./chunk-3BZ7JERB.js";import"./chunk-XYFXXB2G.js";import"./chunk-C4Z6ZBXV.js";import{a as h,c as t,g as m}from"./chunk-2XUEZHIP.js";import"./chunk-TUII34K2.js";import"./chunk-V5O7M2YT.js";import"./chunk-OOJM4CTU.js";var x={triage:"Status",color:"Label",flagged:"Flagged",fix:"Fix",comment:"Comment"},$={inprogress:"In progress",fixed:"Fixed",invalid:"Invalid",deleted:"Deleted",ignored:"Ignored"};function w(a,e){return e==="triage"?$[a?.triage]??"Untriaged":e==="flagged"?a?.flagged?"Yes":"No":a?.[e]||"None"}function b(a,e){return Object.entries(x).flatMap(([i,s])=>{let r=w(a,i);if(e===void 0)return a?.[i]===void 0?[]:[{label:s,after:r}];let o=w(e,i);return o===r?[]:[{label:s,before:o,after:r}]})}var _=`dialog{width:min(94vw,720px);max-width:720px;max-height:calc(100dvh - 4rem);margin-block:2rem;padding:0;overflow:hidden;background:rgb(from var(--surface) r g b / 1)}dialog[open]{display:flex;flex-direction:column}header{display:flex;align-items:start;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border-bottom:1px solid var(--border);flex:none}.history-heading{min-width:0}header h3{display:flex;align-items:center;gap:.55rem;margin:0;line-height:1.5}header svg{flex:none;color:var(--muted)}header .detail-action{flex:none;width:1.75rem;height:1.75rem}.location{margin-top:.4rem;color:var(--muted);font:.76rem/1.5 ui-monospace,monospace;overflow-wrap:anywhere}.history-summary{display:flex;justify-content:space-between;gap:.5rem;flex:none;padding:.5rem 1rem .25rem;color:var(--muted);font-size:.72rem}.history-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:.75rem 1rem 1rem;font-size:.82rem;line-height:1.5}.timeline{list-style:none}.event{position:relative;display:grid;grid-template-columns:2rem minmax(0,1fr);gap:.75rem;padding-bottom:1rem}.event:last-child{padding-bottom:0}.event:not(:last-child):before{content:"";position:absolute;top:2.4rem;bottom:.4rem;left:calc(1rem - .5px);width:1px;background:var(--border)}.managed-comment-avatar{width:2rem;height:2rem;font-size:.8rem;background:var(--surface-active)}.event-content{min-width:0}.event-meta{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.15rem .75rem}.event-user{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .45rem;min-width:0;overflow-wrap:anywhere}.event-user strong{font-weight:600}.username{color:var(--muted);font-size:.75rem}time{color:var(--muted);font-size:.7rem;white-space:nowrap}.event-action{margin-top:.1rem;color:var(--muted);font-size:.75rem}.changes{margin-top:.65rem;border:1px solid var(--border);border-radius:var(--ui-radius, 7px);overflow:hidden}.change{display:grid;grid-template-columns:4.5rem minmax(0,1fr);align-items:baseline;gap:.65rem;padding:.4rem .6rem}.change+.change{border-top:1px solid var(--border)}dt{color:var(--muted);font-size:.75rem}dd{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:baseline;gap:.65rem}dd.snapshot{grid-template-columns:minmax(0,1fr)}.before,.after{white-space:pre-wrap;overflow-wrap:anywhere}.before,.change-arrow{color:var(--muted)}.after{font-weight:500}.history-state{padding:1.5rem .5rem;text-align:center;color:var(--muted)}.history-state strong{display:block;margin-bottom:.35rem;color:var(--text);font-weight:500}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(width<=540px){dialog{margin-block:1rem;max-height:calc(100dvh - 2rem)}header{padding:.65rem}.history-summary{padding-inline:.65rem}.history-body{padding:.65rem}.event{gap:.6rem}.event-meta{flex-direction:column}.change{grid-template-columns:minmax(0,1fr);gap:.3rem;padding:.35rem .5rem}dd{gap:.45rem}}
2
+ `;var c=class extends g{static styles=[...g.styles,h(y),h(v),h(_)];static properties={finding:{attribute:!1},teamId:{attribute:!1},_events:{state:!0},_loading:{state:!0},_error:{state:!0}};constructor(){super(),this._events=[],this._loading=!0,this._error=!1}beforeOpen(){this._load()}async _load(){if(!this.isCurrent()){this._finish(null);return}this._loading=!0,this._error=!1;let{_managedReportId:e,id:i}=this.finding;this._key=`finding-history:${this.teamId??""}:${e}:${i}`,l.invalidate([this._key]);let s=l.load(this._key,"issue history",async r=>{let o=new URLSearchParams({finding:i});this.teamId&&o.set("team",this.teamId);let d=await p(`/api/reports/${encodeURIComponent(e)}/triage/history?${o}`,{credentials:"same-origin",signal:r});if(!d.ok)throw new Error(`History request failed (${d.status})`);let n=await d.json();if(n.finding!==i||!Array.isArray(n.events))throw new Error("Invalid history response");return n.events});this._owner=l.resources.get(this._key),this._signal=this._owner.controller.signal,this._signal.addEventListener("abort",this._onClose,{once:!0});try{let r=await s;if(this._settled||!this.isConnected)return;if(!this.isCurrent()){this._finish(null);return}this._events=r}catch(r){if(this._settled||!this.isConnected)return;r.name==="AbortError"||!this.isCurrent()?this._finish(null):this._error=!0}finally{this._loading=!1}}disconnectedCallback(){this._signal?.removeEventListener("abort",this._onClose),this._owner&&l.resources.get(this._key)===this._owner&&l.invalidate([this._key]),this._events=[],super.disconnectedCallback()}_onKeydown=e=>{e.key==="Escape"&&e.stopPropagation()};_renderEvent(e,i){let s=this._events[i+1],r=b(e.entry,s?.entry),o=new Date(e.at),d=e.actorLogin?`@${e.actorLogin}`:"";return t`<li class="event">${e.actorId?u(e.actorId,e.actorName||e.actorLogin):t`<span class="managed-comment-avatar" aria-hidden="true">${(e.actorLogin?.[0]||"?").toUpperCase()}</span>`}<div class="event-content"><div class="event-meta"><div class="event-user"><strong>${e.actorName||d||"Unknown user"}</strong> ${e.actorName&&d?t`<span class="username">${d}</span>`:m}</div><time datetime="${o.toISOString()}" data-tooltip="${o.toLocaleString()}">${o.toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}</time></div><p class="event-action">${e.entry===null?"Cleared triage":s?"Updated triage":"Recorded triage state"}</p>${r.length>0?t`<dl class="changes">${r.map(n=>t`<div class="change"><dt>${n.label}</dt><dd class="${n.before===void 0?"snapshot":""}">${n.before===void 0?m:t`<span class="before"><span class="sr-only">Previously: </span>${n.before}</span> <span class="change-arrow" aria-hidden="true">→</span>`} <span class="after"><span class="sr-only">${n.before===void 0?"Recorded: ":"Changed to: "}</span>${n.after}</span></dd></div>`)}</dl>`:m}</div></li>`}render(){let e=this.finding??{};return t`<dialog aria-labelledby="history-title" @close="${this._onClose}" @keydown="${this._onKeydown}"><header><div class="history-heading"><h3 id="history-title"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11a9 9 0 1 1 2.5 7M3 5v6h6M12 7v5l3 2"/></svg>Issue history</h3><p class="location">${e.file}${e.line?`:${e.line}`:""}</p></div><button type="button" class="detail-action" aria-label="Close issue history" @click="${this._onClose}">×</button></header>${!this._loading&&!this._error&&this._events.length>0?t`<div class="history-summary"><span>${this._events.length} ${this._events.length===1?"record":"records"}</span><span>Newest first</span></div>`:m}<div class="history-body" aria-busy="${String(this._loading)}">${this._loading?t`<p class="history-state" role="status">Loading history…</p>`:this._error?t`<div class="history-state" role="alert"><strong>Couldn’t load issue history</strong><p>Close and reopen to try again.</p></div>`:this._events.length===0?t`<div class="history-state" role="status"><strong>No triage changes yet</strong><p>Changes to status, labels, flags, and fixes will appear here.</p></div>`:t`<ol class="timeline">${this._events.map((i,s)=>this._renderEvent(i,s))}</ol>`}</div></dialog>`}};customElements.define("finding-history-dialog",c);function F(a){return a.isCurrent()?f("finding-history-dialog",a):Promise.resolve(null)}export{F as openFindingHistoryDialog};
@@ -0,0 +1 @@
1
+ var a=["admin","manage","triage","view","none"];function p(e){return typeof e=="string"&&a.includes(e)}function c(e,o){let n=a.indexOf(e);return n!==-1&&n<=a.indexOf(o)}function s(e){if(!e?.startsWith("#public="))return null;let o=/^#public=([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]{43})$/u.exec(e);return o?{id:o[1],token:o[2]}:{id:"",token:""}}var l=globalThis.location?.hash,i=s(l);globalThis.addEventListener?.("hashchange",()=>{let e=globalThis.location?.hash;e?.startsWith("#public=")&&e!==l&&globalThis.location.reload()});function h(){return i}function d(e=i){return`/api/shares/${encodeURIComponent(e.id)}/workspace`}function g(e,o=i){return o?`${e.replace(/#.*$/su,"")}#public=${o.id}.${o.token}`:e}function f(e=null){let o=["anthropic/claude-opus-5.5","anthropic/claude-fable-5.1","anthropic/claude-sonnet-5.5","anthropic/claude-haiku-5.5","openai/gpt-6-astra","openai/gpt-6-astra-pro","openai/gpt-6.1-sol","openai/gpt-6.1-sol-pro","openai/gpt-6-luna","openai/gpt-6-luna-pro","moonshotai/kimi-k3","google/gemini-3.8-flash","google/gemma-4-31b-it","x-ai/grok-4.7","z-ai/glm-5.3","qwen/qwen3.8-max","deepseek/deepseek-v4.1-flash","deepseek/deepseek-v4-pro","mistralai/mistral-large-4-0"],n=e==="moonshot"?"moonshotai":e,r=o.filter(t=>!["anthropic","openai","moonshot"].includes(e??"")||t.startsWith(`${n}/`)).map(t=>({id:t,efforts:["low","medium","high","xhigh","max"]}));return{models:r,defaultModel:r[0].id}}export{a,p as b,c,f as d,s as e,h as f,d as g,g as h};
@@ -0,0 +1,2 @@
1
+ import{a,c as i,j as r}from"./chunk-2XUEZHIP.js";var s=`:host{display:inline-flex;flex-shrink:0;vertical-align:middle;--switch-track-width: 26px;--switch-track-height: 14px}button,.checkbox-mode{align-items:center;gap:8px;box-sizing:border-box;height:30px;margin:0;padding:0 .6rem;border:1px solid var(--border);border-radius:var(--ui-radius, 4px);background:transparent;color:var(--muted);font:inherit;font-size:.78rem;font-weight:500;line-height:1;white-space:nowrap;cursor:default}button{display:var(--switch-button-display, inline-flex);&:hover:not(:disabled){color:var(--text);background:rgb(from var(--text) r g b / .04)}&[aria-pressed=true]{color:var(--text)}&:disabled{opacity:.4}&:focus-visible{outline:1px solid var(--accent);outline-offset:-2px}}.checkbox-mode{display:var(--switch-checkbox-display, none);border:0;color:var(--text);&:has(:disabled){opacity:.4}& input{width:.85rem;height:.85rem;margin:0;accent-color:var(--accent)}}.track{position:relative;flex-shrink:0;width:var(--switch-track-width);height:var(--switch-track-height);background:var(--border);border-radius:var(--ui-radius, 8px);transition:background .15s;&:after{content:"";position:absolute;top:2px;left:2px;width:calc(var(--switch-track-height) - 4px);height:calc(var(--switch-track-height) - 4px);border-radius:50%;background:var(--muted);transition:transform .15s,background .15s}}button[aria-pressed=true] .track{background:color-mix(in oklch,var(--accent) 22%,transparent);&:after{transform:translate(calc(var(--switch-track-width) - var(--switch-track-height)));background:var(--accent)}}:host([borderless]) :is(button,.checkbox-mode){height:100%;border:0;border-radius:0}:host([compact]){--switch-track-width: 22px;--switch-track-height: 12px}:host([compact]) :is(button,.checkbox-mode){height:auto;gap:7px;padding:2px 8px;border-radius:var(--ui-radius, 6px);font-size:.68rem;line-height:1.2}
2
+ `;var t=class extends r{static properties={checked:{type:Boolean,reflect:!0},disabled:{type:Boolean,reflect:!0},label:{type:String},accessibleLabel:{type:String,attribute:"accessible-label"}};static styles=a(s);constructor(){super(),this.checked=!1,this.disabled=!1,this.label="",this.accessibleLabel=""}_checkboxClick(e){(this.disabled||e.target.tagName!=="INPUT")&&e.stopPropagation()}render(){return i`<button type="button" part="button" aria-pressed="${String(this.checked)}" aria-label="${this.accessibleLabel||this.label}" ?disabled="${this.disabled}"><span>${this.label}</span><span class="track" part="track" aria-hidden="true"></span></button> <label class="checkbox-mode" @click="${this._checkboxClick}"><input type="checkbox" part="checkbox" .checked="${this.checked}" ?disabled="${this.disabled}" aria-label="${this.accessibleLabel||this.label}"> <span>${this.label}</span></label>`}};customElements.get("mode-switch")||customElements.define("mode-switch",t);
@@ -0,0 +1 @@
1
+ var r="m5.875 10.154 1.376-.772.023-.067-.023-.037h-.067l-.23-.015-.787-.02-.681-.03-.661-.035-.166-.035-.156-.205.016-.103.14-.094.2.018.442.03.665.046.481.028.714.075h.113l.016-.047-.039-.028-.03-.028-.687-.466-.744-.492-.39-.284-.21-.143-.106-.135-.046-.294.19-.21.258.017.065.018.26.2.557.43.726.535.106.089.042-.03.006-.022-.048-.08-.395-.713-.422-.726-.187-.301-.05-.18a1 1 0 0 1-.03-.213l.218-.296.12-.039.29.039.123.106.18.413.293.65.453.884.133.262.07.242.027.075h.046v-.043l.038-.497.069-.611.067-.787.023-.221.11-.266.218-.143.17.081.14.2-.02.13-.083.54-.163.846-.106.567h.062l.07-.07.287-.382.482-.602.213-.239.248-.264.159-.125h.301l.221.329-.099.34-.31.393-.256.333-.369.496-.23.397.021.032.055-.006.832-.177.45-.081.537-.092.243.113.026.115-.096.236-.573.141-.673.135-1.003.237-.012.01.014.017.452.042.193.01h.473l.88.066.23.153.138.186-.023.141-.354.181-.478-.113-1.116-.266-.383-.096h-.053v.032l.32.312.584.528.731.68.037.168-.094.133-.099-.014-.643-.484-.248-.218-.561-.472H9.08v.05l.129.189.684 1.027.035.315-.05.103-.177.062-.194-.036-.4-.561-.413-.632-.333-.567-.041.023-.197 2.116-.092.108-.212.082-.177-.135-.094-.218.094-.43.113-.561.092-.447.083-.554.05-.184-.004-.013-.04.006-.418.574-.636.858-.503.539-.12.048-.21-.108.02-.193.117-.172.696-.886.42-.549.27-.317-.001-.046h-.016l-1.85 1.201-.328.042-.142-.132.018-.218.067-.071.556-.383Z",e="M11.998 24c-.321 0-.641-.084-.922-.247l-2.936-1.737c-.438-.245-.224-.332-.08-.383c.585-.203.703-.25 1.328-.604c.065-.037.151-.023.218.017l2.256 1.339c.082.045.197.045.272 0l8.795-5.076c.082-.047.134-.141.134-.238V6.921c0-.099-.053-.192-.137-.242l-8.791-5.072c-.081-.047-.189-.047-.271 0L3.075 6.68C2.99 6.729 2.936 6.825 2.936 6.921v10.15c0 .097.054.189.139.235l2.409 1.392c1.307.654 2.108-.116 2.108-.89V7.787c0-.142.114-.253.256-.253h1.115c.139 0 .255.112.255.253v10.021c0 1.745-.95 2.745-2.604 2.745c-.508 0-.909 0-2.026-.551L2.28 18.675c-.57-.329-.922-.945-.922-1.604V6.921c0-.659.353-1.275.922-1.603l8.795-5.082c.557-.315 1.296-.315 1.848 0l8.794 5.082c.57.329.924.944.924 1.603v10.15c0 .659-.354 1.273-.924 1.604l-8.794 5.078C12.643 23.916 12.324 24 11.998 24zM19.099 13.993c0-1.9-1.284-2.406-3.987-2.763c-2.731-.361-3.009-.548-3.009-1.187c0-.528.235-1.233 2.258-1.233c1.807 0 2.473.389 2.747 1.607c.024.115.129.199.247.199h1.141c.071 0 .138-.031.186-.081c.048-.054.074-.123.067-.196c-.177-2.098-1.571-3.076-4.388-3.076c-2.508 0-4.004 1.058-4.004 2.833c0 1.925 1.488 2.457 3.895 2.695c2.88.282 3.103.703 3.103 1.269c0 .983-.789 1.402-2.642 1.402c-2.327 0-2.839-.584-3.011-1.742c-.02-.124-.126-.215-.253-.215h-1.137c-.141 0-.254.112-.254.253c0 1.482.806 3.248 4.655 3.248C17.501 17.007 19.099 15.91 19.099 13.993z",t='<svg class="file-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2 2 5v6l6 3 6-3V5L8 2Z"/><path d="M2 5l6 3 6-3"/><path d="M8 8v6"/></svg>',o='<svg class="file-icon" viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M1 1h14v14H1Zm3 3v8h4V6h2v6h2V4Z"/></svg>',i='<svg class="file-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2.5" y="4" width="11" height="9" rx="1.2"/><path d="M6 4V3h4v1"/></svg>',l='<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" aria-hidden="true"><path d="m4.5 4.5 7 2-5 5z"/><circle cx="4.5" cy="4.5" r="2" fill="currentColor"/><circle cx="11.5" cy="6.5" r="2" fill="currentColor"/><circle cx="6.5" cy="11.5" r="2" fill="currentColor"/></svg>',h='<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><rect x="1" y="1.5" width="14" height="3" rx=".5"/><rect x="1" y="6.5" width="8" height="3" rx=".5"/><rect x="11" y="6.5" width="4" height="3" rx=".5"/><rect x="1" y="11.5" width="4" height="3" rx=".5"/><rect x="7" y="11.5" width="8" height="3" rx=".5"/></svg>',n='<svg viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M1 1h4v4H1zm5 5h4v4H6zm5 5h4v4h-4z"/><path d="M6 1h4v4H6zm5 0h4v4h-4zM1 6h4v4H1zm10 0h4v4h-4zM1 11h4v4H1zm5 0h4v4H6z" opacity=".35"/></svg>',c='<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="8" cy="2.5" r="1.5" fill="currentColor"/><circle cx="3" cy="13" r="1.5" fill="currentColor"/><circle cx="8" cy="13" r="1.5" fill="currentColor"/><circle cx="13" cy="13" r="1.5" fill="currentColor"/><path d="M8 4v3M8 7H3m5 0h5M3 7v4M8 7v4M13 7v4"/></svg>',d='<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.38a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>',s='<svg class="file-icon" viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6.67 8.67a3.33 3.33 0 0 0 5.03.36l2-2a3.33 3.33 0 0 0-4.71-4.71l-1.15 1.14"/><path d="M9.33 7.33a3.33 3.33 0 0 0-5.03-.36l-2 2a3.33 3.33 0 0 0 4.71 4.71l1.14-1.14"/></svg>',a='<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 1.5H2.5a1 1 0 0 0-1 1V5m9.5-3.5h2.5a1 1 0 0 1 1 1V5M1.5 11v2.5a1 1 0 0 0 1 1H5m6 0h2.5a1 1 0 0 0 1-1V11"/><circle cx="7.25" cy="7.25" r="2.75"/><path d="m9.25 9.25 2.25 2.25"/></svg>',v='<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 1.5H4a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.5L9 1.5ZM9 1.5v4h4M5.5 8h5m-5 3h3.5"/></svg>',u='<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m4.5 4.5-3 3.5 3 3.5m7-7 3 3.5-3 3.5M9.5 2l-3 12"/></svg>',x='<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6.5 3.5 1.6 3.9L12 9l-3.9 1.6-1.6 3.9-1.6-3.9L1 9l3.9-1.6 1.6-3.9ZM12 1.5v4m-2-2h4"/></svg>',g='<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg>',p='<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" aria-hidden="true"><path d="M1 8h3.5m7 0H15"/><circle cx="8" cy="8" r="3.5"/></svg>',w='<svg viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round" aria-hidden="true"><path d="M2 2h5.5l6.5 6.5-5.5 5.5L2 7.5Z"/><circle cx="5" cy="5" r="1"/></svg>',C='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m10 2 4 4-8 8H2v-4l8-8Zm-1 1 4 4"/></svg>',k='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 4h12M6 4V2h4v2M4 4l.6 10h6.8L12 4M6.5 7v4m3-4v4"/></svg>';export{r as a,e as b,t as c,o as d,i as e,l as f,h as g,n as h,c as i,d as j,s as k,a as l,v as m,u as n,x as o,g as p,p as q,w as r,C as s,k as t};
@@ -0,0 +1 @@
1
+ import{a as Ne}from"./chunk-GJ4IUCNS.js";import{a as V,b as N}from"./chunk-PNHBZGDD.js";import{a as d,c as m}from"./chunk-TUII34K2.js";var v=new Uint8Array([68,86,69,49]),$=12,st=32,ct="deepview-passkey.v1.content-key";function q(){return!(typeof window>"u"||typeof PublicKeyCredential>"u"||typeof navigator>"u"||!navigator.credentials)}async function $e(){if(typeof PublicKeyCredential>"u")return!1;let e=PublicKeyCredential.getClientCapabilities;if(typeof e!="function")return null;try{let t=await e.call(PublicKeyCredential);if(!t||typeof t!="object")return null;let r=t["extension:prf"],n=t.prf;return r===!0||n===!0?!0:r===!1||n===!1?!1:null}catch{return null}}function Z(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}async function he(e){if(e.length<32)throw new Error(`PRF output too short (${e.length} bytes; need \u2265 32)`);let t=await crypto.subtle.importKey("raw",e,"HKDF",!1,["deriveBits"]),r=await crypto.subtle.deriveBits({name:"HKDF",hash:"SHA-256",salt:new Uint8Array,info:d(ct)},t,st*8);return new Uint8Array(r)}function ve(e){return crypto.subtle.importKey("raw",e,{name:"AES-GCM"},!1,["encrypt","decrypt"])}async function A(e,t,r){let n=Z($),a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:n,additionalData:r},e,t)),o=new Uint8Array(v.length+$+a.length);return o.set(v,0),o.set(n,v.length),o.set(a,v.length+$),o}async function O(e,t,r){if(!E(t))throw new Error("passkey: missing envelope magic");if(t.length<v.length+$+16)throw new Error("passkey: envelope too short");let n=t.subarray(v.length,v.length+$),a=t.subarray(v.length+$);return new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:n,additionalData:r},e,a))}function E(e){if(e.length<v.length)return!1;for(let t=0;t<v.length;t++)if(e[t]!==v[t])return!1;return!0}async function Te(e){if(!q())throw new Error("passkey: not supported in this environment");let t=Z(32),r=Z(32),n=await navigator.credentials.create({publicKey:{challenge:t,rp:{name:e.rpName,id:e.rpId},user:{id:e.userId,name:e.userName,displayName:e.userName},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],authenticatorSelection:{residentKey:"required",userVerification:"required"},extensions:{prf:{eval:{first:r}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(n instanceof PublicKeyCredential))throw new Error("passkey: registration returned no credential");let a=new Uint8Array(n.rawId).toBase64({alphabet:"base64url",omitPadding:!0}),o=n.getClientExtensionResults().prf,i=o?.results?.first?new Uint8Array(o.results.first):null;return{credentialId:a,prfSalt:r.toBase64({alphabet:"base64url",omitPadding:!0}),prfOutput:i}}async function Ee(e){if(!q())throw new Error("passkey: not supported in this environment");let t=Z(32),r=Uint8Array.fromBase64(e.credentialId,{alphabet:"base64url"}),n=Uint8Array.fromBase64(e.prfSalt,{alphabet:"base64url"}),a=await navigator.credentials.get({publicKey:{challenge:t,rpId:e.rpId,allowCredentials:[{type:"public-key",id:r}],userVerification:"required",extensions:{prf:{eval:{first:n}}},timeout:e.timeoutMs??12e4},...e.signal?{signal:e.signal}:{}});if(!(a instanceof PublicKeyCredential))throw new Error("passkey: assertion returned no credential");let i=a.getClientExtensionResults().prf?.results?.first;if(!i)throw new Error("passkey: authenticator did not return PRF output (extension unsupported)");return new Uint8Array(i)}var T=Object.freeze(["deepview.workspaces","deepview.sync.sessions","deepview.sync.userEnabled","deepview.sync.password","deepview.repoUrls","deepview.fileCounts","deepview.workspaceApp","deepview.lastFile","deepview.scan.access"]),p=new Map,ee=!1,S=new Map,w=new Map,Q=new Set;function Kt(e){let t=()=>e();return Q.add(t),ee&&queueMicrotask(()=>{if(Q.has(t))try{t()}catch(r){console.warn("secure-storage after-hydrate listener:",r)}}),()=>Q.delete(t)}function lt(){for(let e of Q)try{e()}catch(t){console.warn("secure-storage after-hydrate listener:",t)}}function re(e){let t=Re()??"";return d(`deepview.secure.v1|${t}|${e}`)}function be(e){try{let t=Uint8Array.fromBase64(e);if(E(t))return t}catch{}return null}function me(e){return p.get(e)??null}async function He(e,t){if(typeof t!="string")throw new TypeError("secure-storage: value must be a string");if(x()&&!y())throw new Error(`secure-storage: vault locked, cannot save "${e}"`);if(Le())throw new Error(`secure-storage: wipe in progress, cannot save "${e}"`);let r=p.has(e),n=p.get(e);p.set(e,t),w.set(e,t);let a=S.get(e)??Promise.resolve(),o=()=>{w.get(e)===t&&w.delete(e)},i=a.catch(()=>{}).then(()=>ut(e,t)).then(()=>o(),s=>{throw o(),p.get(e)===t&&(r?p.set(e,n):p.delete(e)),s});S.set(e,i.catch(()=>{})),await i}async function _t(e){let t=Symbol("secure-storage:removed");p.delete(e),w.set(e,t);let r=S.get(e)??Promise.resolve(),n=()=>{try{localStorage.removeItem(e)}catch{}w.get(e)===t&&(w.delete(e),p.delete(e))},a=r.catch(()=>{}).then(()=>n());S.set(e,a.catch(()=>{})),await a}async function ut(e,t){let r=y();if(r){let n=await A(r,d(t),re(e));localStorage.setItem(e,n.toBase64())}else localStorage.setItem(e,t)}async function Se(){ee||te(()=>{Se().catch(e=>console.warn("secure-storage rehydrate:",e))}),ee=!0;for(let e of[...p.keys()])w.has(e)||p.delete(e);await Ve(T,!0)}async function Mt(e){if(!T.includes(e))throw new Error(`secure-storage: unknown secure key "${e}"`);return w.has(e)||p.delete(e),(await Ve([e],!1)).get(e)??null}async function Ve(e,t){let r=y(),n=[],a=new Map;for(let o of e){if(w.has(o)){a.set(o,me(o));continue}let i=localStorage.getItem(o);if(i===null)continue;let s=be(i);if(s){if(!r)continue;try{let c=await O(r,s,re(o));if(w.has(o)){a.set(o,me(o));continue}let u=m(c);p.set(o,u),a.set(o,u)}catch(c){console.warn(`secure-storage: decrypt failed for "${o}":`,c)}}else p.set(o,i),a.set(o,i),r&&x()&&n.push([o,i])}return t&&lt(),n.length>0&&queueMicrotask(()=>{for(let[o,i]of n)p.get(o)===i&&He(o,i).catch(s=>{console.warn(`secure-storage: self-heal failed for "${o}":`,s)})}),a}async function qe(e,t){let r=S.get(e)??Promise.resolve(),n=async()=>{if(w.has(e))return;let o=localStorage.getItem(e);if(o===null)return;let i=await t(o);i!==null&&(w.has(e)||(localStorage.setItem(e,i.storageValue),p.set(e,i.cacheValue)))},a=r.catch(()=>{}).then(n);S.set(e,a.catch(()=>{})),await a}async function Nt({seal:e}){for(let t of T)await qe(t,async r=>{if(be(r))return null;let n=y();return n?{storageValue:(await A(n,d(r),re(t))).toBase64(),cacheValue:r}:null})}async function $t({open:e}){for(let t of T)await qe(t,async r=>{let n=be(r);if(!n)return null;let a=await e(n,re(t)),o=m(a);return{storageValue:o,cacheValue:o}})}var ft="deepview.secure.v1.mutate:";function Tt(e,t){return T.includes(e)?navigator.locks.request(ft+e,async()=>{let r=S.get(e);r&&await r.catch(()=>{}),await Se();let n=me(e),a=await t(n);if(!(a==null||a===n)){if(typeof a!="string")throw new TypeError(`secure-storage: mutate updater for "${e}" must return a string`);await He(e,a)}}):Promise.reject(new Error(`secure-storage: mutate() called with non-secure key "${e}"`))}async function We(){await Promise.allSettled([...S.values()]),w.clear(),S.clear()}typeof window<"u"&&window.addEventListener("storage",e=>{!ee||!e.key||!T.includes(e.key)||Se().catch(()=>{})});var G="deepview.passkey.v1",L="deepview.passkey.userId",ae="deepview.passkey.cleanDisable",F="deepview.passkey.v1.write",dt="deepview.triage.v1|",pt="deepview.opfs.v1|",wt="deepview.bundle.v1|",l=null,b=null,I=null,j=0;function qt(){return j>0}var xe=0;function Le(){return xe>0}function C(){try{let e=localStorage.getItem(G);if(!e)return null;let t=JSON.parse(e);return t&&typeof t=="object"&&t.enabled===!0&&typeof t.credentialId=="string"&&t.credentialId.length>0&&typeof t.prfSalt=="string"&&t.prfSalt.length>0&&typeof t.userId=="string"&&t.userId.length>0?t:null}catch{return null}}function je(e){localStorage.setItem(G,JSON.stringify(e))}function yt(){localStorage.removeItem(G)}function gt(){try{let t=localStorage.getItem(L);if(t){let r=Uint8Array.fromBase64(t,{alphabet:"base64url"});if(r.length===16)return r}}catch{}let e=new Uint8Array(16);crypto.getRandomValues(e);try{localStorage.setItem(L,e.toBase64({alphabet:"base64url",omitPadding:!0}))}catch{}return e}function oe(){return typeof location>"u"?"":location.hostname}function x(){return C()!==null}function ht(){return l!==null}function Wt(){return!(!q()||typeof navigator>"u"||!navigator.locks?.request||!oe())}function Re(){return b}function vt(){if(C()!==null)return!1;try{return localStorage.getItem(ae)==="1"?!1:localStorage.getItem(L)!==null}catch{return!1}}function y(){return l}function Ge(){return d(dt+(b??""))}function ie(e){if(typeof e!="string")throw new TypeError("passkey vault: OPFS AAD requires a filename string");return d(pt+(b??"")+"|"+e)}function se(e){if(typeof e!="string")throw new TypeError("passkey vault: bundle AAD requires a slot string");return d(wt+(b??"")+"|"+e)}var Ae=new Set;function te(e){return Ae.add(e),()=>Ae.delete(e)}function R(){for(let e of Ae)try{e()}catch(t){console.warn("passkey vault listener:",t)}}async function jt({signal:e}={}){let t=C();if(!t)return!1;let r;try{r=await Ee({credentialId:t.credentialId,prfSalt:t.prfSalt,rpId:t.rpId??oe(),...e?{signal:e}:{}})}catch(a){if(a&&a.name==="NotAllowedError"||a&&a.name==="AbortError")return!1;throw a&&a.message?.includes("PRF")?W(a):a}if(!r||r.length<32)throw W();let n=await he(r);return r.fill(0),navigator.locks.request(F,async()=>{let a=C();if(!a||a.credentialId!==t.credentialId)throw n.fill(0),new Error("passkey: vault state changed during unlock (another tab wiped or re-enabled it). Reload this page and try again.");return l=await ve(n),n.fill(0),b=a.userId,I=a.credentialId,R(),!0})}function W(e){let t=new Error("Your browser or authenticator doesn't support passkey-derived encryption keys (the WebAuthn PRF extension). Try Chrome 116+, Safari 18+, or Firefox 130+ on a device with a platform authenticator (TouchID / Windows Hello).");return e&&(t.cause=e),t}function Gt({migrate:e,userName:t,rpName:r,signal:n,acknowledgeOrphan:a}){if(!q())throw new Error("passkey: WebAuthn unavailable in this environment");if(vt()&&!a)throw new Error("passkey: a previous vault exists on this device with no metadata. Any data encrypted under the old passkey will be unreadable after a new setup. Call enableEncryption({acknowledgeOrphan: true}) to proceed, or wipeAllVaultData() to start clean first.");let o=oe();return navigator.locks.request(F,async()=>{if(x())throw new Error("passkey: encryption is already enabled");if(await $e()===!1)throw W();let s=gt(),c=await Te({userName:t||"DeepView user",userId:s,rpName:r||"DeepView",rpId:o,...n?{signal:n}:{}}),u=c.prfOutput;if(!u)try{u=await Ee({credentialId:c.credentialId,prfSalt:c.prfSalt,rpId:o,...n?{signal:n}:{}})}catch(P){let ge=s.toBase64({alphabet:"base64url",omitPadding:!0});await ne({credentialId:c.credentialId,rpId:o,userId:ge}).catch(()=>{});try{localStorage.removeItem(L)}catch{}throw P&&P.message?.includes("PRF")?W(P):P}if(!u||u.length<32){let P=s.toBase64({alphabet:"base64url",omitPadding:!0});await ne({credentialId:c.credentialId,rpId:o,userId:P}).catch(()=>{});try{localStorage.removeItem(L)}catch{}throw W()}let h=await he(u);u.fill(0);let M=await ve(h);h.fill(0);let Me=s.toBase64({alphabet:"base64url",omitPadding:!0}),ot={enabled:!0,credentialId:c.credentialId,prfSalt:c.prfSalt,userId:Me,rpId:o,createdAt:Date.now()};l=M,b=Me,I=c.credentialId,je(ot),typeof e=="function"&&await e({seal:(ge,it)=>A(M,ge,it)});try{localStorage.removeItem(ae)}catch{}return R(),!0})}async function Jt({migrate:e}){if(!x())return{disabled:!1,signalAttempted:!1};if(!ht())throw new Error("passkey: must unlock before disabling encryption");j+=1;try{return await navigator.locks.request(F,async()=>{let t=C();if(!t)return{disabled:!1,signalAttempted:!1};let r=l;if(!r)return{disabled:!1,signalAttempted:!1};if(yt(),l=null,I=null,typeof e=="function"){let a=(o,i)=>O(r,o,i);try{await e({open:a})}catch(o){throw je(t),l=r,I=t.credentialId,R(),o}}b=null;try{localStorage.setItem(ae,"1")}catch{}let n=await ne(t).catch(()=>!1);return R(),{disabled:!0,signalAttempted:n}})}finally{j-=1}}async function ne({credentialId:e,rpId:t,userId:r}){if(typeof PublicKeyCredential>"u"||!t)return!1;let n=PublicKeyCredential,a=!1;if(typeof n.signalUnknownCredential=="function"){a=!0;try{await n.signalUnknownCredential({rpId:t,credentialId:e})}catch{}}if(typeof n.signalAllAcceptedCredentials=="function"&&r){a=!0;try{await n.signalAllAcceptedCredentials({rpId:t,userId:r,allAcceptedCredentialIds:[]})}catch{}}return a}async function Et(e,t){try{return await e.removeEntry(t,{recursive:!0}),null}catch(r){return r?.name==="NotFoundError"?null:`${t}: ${r?.message??String(r)}`}}async function mt(e){let t=[];if(typeof navigator>"u"||!navigator.storage?.getDirectory)return t;let r;try{r=await navigator.storage.getDirectory()}catch(n){return t.push(`storage root: ${n?.message??String(n)}`),t}for(let n of e){let a=await Et(r,n);a&&t.push(a)}return t}async function Xt({refuseIfEnabled:e=!1}={}){j+=1,xe+=1;try{return await navigator.locks.request(F,async()=>{if(e&&x())throw new Error("passkey: encryption was just enabled in another tab. Reload this page to unlock instead of wiping.");await We();let t=C();if(t)try{await ne({credentialId:t.credentialId,rpId:t.rpId??oe(),userId:t.userId})}catch{}try{localStorage.removeItem(G)}catch{}try{localStorage.removeItem(L)}catch{}try{localStorage.removeItem(ae)}catch{}for(let n of["deepview.workspaces","deepview.sync.sessions","deepview.sync.userEnabled","deepview.repoUrls","deepview.fileCounts","deepview.workspaceApp","deepview.lastFile","deepview.scan.access","deepview.triage","deepview.triage.pending","deepview.passkey.firstImportPrompted","deepview.viewMode"])try{localStorage.removeItem(n)}catch{}try{let n=[];for(let a=0;a<localStorage.length;a+=1){let o=localStorage.key(a);o&&o.startsWith("deepview.report:")&&n.push(o)}for(let a of n)try{localStorage.removeItem(a)}catch{}}catch{}l=null,b=null,I=null,R();let r=await mt(["deepview-reports","deepview-bundles"]);if(r.length>0)throw new Error(`passkey: wipe partially succeeded \u2014 localStorage cleared but the following OPFS paths could not be removed: ${r.join("; ")}. Open DevTools \u2192 Application \u2192 Storage \u2192 Origin Private File System to inspect, or use the browser's site-data clear tool to finish.`)})}finally{j-=1,xe-=1}}function zt(e){return l?A(l,e,Ge()):Promise.reject(new Error("passkey: vault locked, cannot seal triage"))}function Yt(e){return l?O(l,e,Ge()):Promise.reject(new Error("passkey: vault locked, cannot open triage"))}function ce(e,t){return l?A(l,e,ie(t)):Promise.reject(new Error("passkey: vault locked, cannot seal OPFS file"))}function Je(e,t){return l?O(l,e,ie(t)):Promise.reject(new Error("passkey: vault locked, cannot open OPFS file"))}function le(e,t){return l?A(l,e,se(t)):Promise.reject(new Error("passkey: vault locked, cannot seal bundle"))}function ue(e,t){return l?O(l,e,se(t)):Promise.reject(new Error("passkey: vault locked, cannot open bundle"))}typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key!==G)return;let t=C();(!t&&l||t&&l&&t.credentialId!==I)&&(l=null,b=null,I=null),R()});var ke="__meta__",bt="deepview-reports",Ue="deepview-bundles",k="deepview.report:";function Ze(e,t,r,n){return navigator.locks.request(`deepview-storage/${e}/${t}`,{mode:r},n)}function nr(e,t,r){return Ze(e,t,"shared",r)}function z(e,t,r){return Ze(e,t,"exclusive",()=>navigator.locks.request(F,{mode:"shared"},r))}var Xe=!1;async function Pe(e,{create:t,warnOnce:r=!1}={}){try{return await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:t})}catch(n){return r&&!Xe&&(Xe=!0,console.warn("OPFS unavailable, falling back to gzipped localStorage (limited quota).",n)),null}}async function Y(e,t){let r=await e.createWritable();try{await r.write(t),await r.close()}catch(n){try{await r.abort(n)}catch{}throw n}}async function Oe(e,t){if(!E(e))return e;if(!y())throw new Error(`storage: vault locked, cannot decrypt "${t}"`);return await Je(e,t)}function we(e){return e.length===0?!0:e.length>=18&&e[0]===31&&e[1]===139&&e.at(-4)===0&&e.at(-3)===0&&e.at(-2)===0&&e.at(-1)===0}async function Ce(e,t){J(e)===t&&(console.warn(`storage: report "${e}" is an empty/corrupt on-disk entry \u2014 quarantining, will read as missing`),await navigator.locks.request(F,{mode:"exclusive"},async()=>{if(J(e)!==t)return;f(e),g.delete(e);let r=await U();if(r)try{await r.removeEntry(e)}catch{}ye(e),f(e),D(e,"delete")}))}async function De(e,t,r){try{(await t.getFile()).size===0&&await e.removeEntry(r)}catch{}}async function H(e,t,r,n,a=()=>{}){if(x()&&!y())throw a(),new Error(`storage: vault locked, cannot save ${n}`);let o=y(),i=o?await t(e,r):e;if(y()!==o)throw a(),new Error(`storage: vault state changed mid-save for ${n}; retry`);return i}function U(){return Pe(bt,{create:!0,warnOnce:!0})}function fe(e){try{return localStorage.getItem(k+e)}catch{return null}}function ye(e){try{localStorage.removeItem(k+e)}catch{}}function St(){let e=[];for(let t=0;t<localStorage.length;t++){let r=localStorage.key(t);r&&r.startsWith(k)&&e.push(r.slice(k.length))}return e}var g=new Map,B=new Map,Ie=new Map;function f(e){Ie.set(e,(Ie.get(e)??0)+1)}function J(e){return Ie.get(e)??0}var Fe=new Set;function ar(e){return Fe.add(e),()=>Fe.delete(e)}function D(e,t){for(let r of Fe)try{r(e,t)}catch(n){console.warn("storage file-change listener:",n)}}async function xt(){let e=new Set(St()),t=await U();if(t)for await(let[r]of t.entries())e.add(r);return[...e].toSorted()}async function ze(e,t){if(typeof e!="string"||e.includes("\0"))throw new Error("Invalid report name: contains NUL byte or is not a string");if(t==="")throw new Error(`Refusing to save empty report "${e}"`);return f(e),z("report",e,async()=>{let r=await U();if(r){let o=await V(d(t));o=await H(o,ce,e,`"${e}"`,()=>f(e));let i=await r.getFileHandle(e,{create:!0}),s=await i.createWritable();try{await s.write(o),await s.close()}catch(c){g.delete(e),f(e);try{await s.abort(c)}catch{}throw await De(r,i,e),c}g.set(e,t),f(e),ye(e),D(e,"save");return}let n=d(t);n=await V(n),n=await H(n,ce,e,`"${e}"`,()=>f(e));let a=n.toBase64();try{localStorage.setItem(k+e,a),g.set(e,t),f(e),D(e,"save")}catch(o){throw f(e),new Error(`localStorage write failed for ${e}: ${o.message}`,{cause:o})}})}async function Ye(e,t){let r=fe(e);if(r===null)return null;let n=Uint8Array.fromBase64(r);if(n=await Oe(n,e),we(n))throw await Ce(e,t),new Error(`File not found: ${e}`);return m(await N(n))}async function or(e){if(g.has(e))return g.get(e);if(B.has(e))return B.get(e);let t=J(e),r=(async()=>{let n=await U();if(n){let o;try{o=await n.getFileHandle(e)}catch(u){if(u instanceof DOMException&&u.name==="NotFoundError"){let h=await Ye(e,t);if(h!==null)return ze(e,h).catch(M=>{console.warn(`storage: stranded-localStorage migration of "${e}" failed:`,M)}),h}throw u}let i=await o.getFile(),s=new Uint8Array(await i.arrayBuffer());if(s=await Oe(s,e),we(s))throw await Ce(e,t),new Error(`File not found: ${e}`);if(s.length>=2&&s[0]===31&&s[1]===139){let u=await N(s);return m(u)}let c=m(s);return ze(e,c).catch(u=>{console.warn(`storage: legacy-uncompressed migration of "${e}" failed:`,u)}),c}let a=await Ye(e,t);if(a===null)throw new Error(`File not found: ${e}`);return a})();B.set(e,r);try{let n=await r;return J(e)===t&&g.set(e,n),n}finally{B.delete(e)}}async function At(e){let t=J(e),r=await U(),n;if(r){let a=null;try{a=await r.getFileHandle(e)}catch(o){if(!(o instanceof DOMException)||o.name!=="NotFoundError")throw o;let i=fe(e);if(i===null)throw o;n=Uint8Array.fromBase64(i)}if(a){let o=await a.getFile();n=new Uint8Array(await o.arrayBuffer())}}else{let a=fe(e);if(a===null)throw new Error(`File not found: ${e}`);n=Uint8Array.fromBase64(a)}if(n=await Oe(n,e),we(n))throw await Ce(e,t),new Error(`File not found: ${e}`);return n}async function ir(e){let t=await At(e),r=t[0]===31&&t[1]===139?await N(t):t;return m(r)}async function sr(e,t){if(typeof e!="string"||e.includes("\0"))throw new Error("Invalid report name: contains NUL byte or is not a string");if(we(t))throw new Error(`Refusing to save empty report bytes for "${e}"`);return f(e),g.delete(e),z("report",e,async()=>{let r=await H(t,ce,e,`"${e}"`,()=>f(e)),n=await U();if(n){let a=await n.getFileHandle(e,{create:!0}),o=await a.createWritable();try{await o.write(r),await o.close()}catch(i){f(e);try{await o.abort(i)}catch{}throw await De(n,a,e),i}f(e),ye(e),D(e,"save");return}try{localStorage.setItem(k+e,r.toBase64()),f(e),D(e,"save")}catch(a){throw f(e),new Error(`localStorage write failed for ${e}: ${a.message}`,{cause:a})}})}async function cr(e){return f(e),g.delete(e),B.delete(e),z("report",e,async()=>{let t=await U();if(t){try{await t.removeEntry(e)}catch(r){if(!(r instanceof DOMException)||r.name!=="NotFoundError")throw f(e),r}ye(e),f(e),D(e,"delete");return}localStorage.removeItem(k+e),f(e),D(e,"delete")})}var X="_meta.json",de=".index-v1",Be=new Set;function lr(e){return Be.add(e),()=>Be.delete(e)}function pe(e,t){for(let r of Be)try{r(e,t)}catch(n){console.warn("storage bundle-change listener:",n)}}function _(){return Pe(Ue,{create:!0})}function K(e){return e.replaceAll("/","_")}async function Ke(e){let t;try{let a=await(await e.getFileHandle(X)).getFile();t=new Uint8Array(await a.arrayBuffer())}catch(n){return n instanceof DOMException&&n.name==="NotFoundError"?[]:(console.warn("readBundleMeta: failed to read _meta.json:",n),[])}let r=t;if(E(t)){if(!y())return console.warn("readBundleMeta: vault locked, returning empty bundle list"),[];try{r=await ue(t,ke)}catch(a){return console.warn("readBundleMeta: decrypt failed (tampering, key mismatch, or vault identity drift):",a),[]}}try{let n=JSON.parse(m(r));return Array.isArray(n)?n:[]}catch(n){return console.warn("readBundleMeta: JSON.parse failed:",n),[]}}async function Qe(e,t){let r=d(JSON.stringify(t));r=await H(r,le,ke,"bundle metadata");try{await e.removeEntry(X)}catch{}let n=await e.getFileHandle(X,{create:!0});await Y(n,r)}var et=`${Ue}/${X}`;function _e(e){return navigator.locks.request(et,e)}async function ur(){let e=await _();return e?[...await navigator.locks.request(et,{mode:"shared"},()=>Ke(e))].toSorted((r,n)=>r.name.localeCompare(n.name)):[]}function fr(){return tt(()=>!0)}function dr(){return tt((e,t)=>t.kind==="file"&&/^sha512-[A-Za-z0-9+_]{86}==$/u.test(e))}async function tt(e){if(typeof navigator>"u"||!navigator.storage?.getDirectory)return!1;let t=await Pe(Ue,{create:!1});if(!t)return!1;try{for await(let[r,n]of t.entries())if(e(r,n))return!0}catch{}return!1}async function pr(e,t){let r=await _();if(!r)throw new Error(`Cannot save bundle ${e}: OPFS unavailable`);let n=t instanceof Uint8Array?t:d(t),a=await Ne(n),o=K(a),i=e.toLowerCase().endsWith(".map")?await V(n):n;return z("bundle",a,async()=>{i=await H(i,le,a,`bundle "${e}"`);try{await r.removeEntry(o)}catch{}let s=await r.getFileHandle(o,{create:!0});await Y(s,i);try{await _e(async()=>{let c=await Ke(r),u=c.findIndex(h=>h.integrity===a);u>=0?c[u]={integrity:a,name:e}:c.push({integrity:a,name:e}),await Qe(r,c)})}catch(c){try{await r.removeEntry(o),pe(a,"delete")}catch{}throw c}return pe(a,"save"),{integrity:a,name:e}})}async function wr(e){let t=await _();if(t)return z("bundle",e,async()=>{try{await t.removeEntry(K(e))}catch(r){if(!(r instanceof DOMException)||r.name!=="NotFoundError")throw r}pe(e,"delete");try{await _e(async()=>{try{await t.removeEntry(K(e)+de)}catch(a){if(!(a instanceof DOMException)||a.name!=="NotFoundError")throw a}let r=await Ke(t),n=r.filter(a=>a.integrity!==e);n.length!==r.length&&await Qe(t,n)})}finally{pe(e,"delete")}})}async function yr(e){let t=await _();if(!t)throw new Error("OPFS unavailable");let n=await(await t.getFileHandle(K(e))).getFile(),a=new Uint8Array(await n.arrayBuffer());if(E(a)){if(!y())throw new Error(`storage: vault locked, cannot read bundle "${e}"`);a=await ue(a,e)}return a.length>=2&&a[0]===31&&a[1]===139?await N(a):a}async function gr(e){let t=await _();if(!t||x()&&!y())return null;try{let r=await t.getFileHandle(K(e)+de),n=new Uint8Array(await(await r.getFile()).arrayBuffer());return E(n)&&(n=await ue(n,e+de)),JSON.parse(m(await N(n)))}catch{return null}}async function hr(e,t){let r=await V(d(JSON.stringify(t)));return navigator.locks.request(F,{mode:"shared"},()=>_e(async()=>{let n=await _();if(!n)return;await n.getFileHandle(K(e));let a=e+de,o=await H(r,le,a,"bundle index"),i=await n.getFileHandle(K(a),{create:!0});await Y(i,o)}))}async function It(e,t){let r=await U();if(r){let i=null;try{i=await r.getFileHandle(e)}catch(s){if(!(s instanceof DOMException)||s.name!=="NotFoundError")throw s}if(i){let s=await i.getFile(),c=new Uint8Array(await s.arrayBuffer()),u=await t(c);if(u===null)return;g.delete(e),B.delete(e),f(e);let h=await r.getFileHandle(e,{create:!0});try{await Y(h,u)}catch(M){throw await De(r,h,e),M}f(e);return}}let n=fe(e);if(n===null)return;let a=Uint8Array.fromBase64(n),o=await t(a);o!==null&&(g.delete(e),B.delete(e),f(e),localStorage.setItem(k+e,o.toBase64()),f(e))}function rt(e,t){return e.seal?r=>E(r)?null:e.seal(r,t):r=>E(r)?e.open(r,t):null}async function nt(e){let t=await xt();for(let r of t)try{await It(r,rt(e,ie(r)))}catch(n){if(n instanceof DOMException&&n.name==="NotFoundError")continue;throw n}}var vr=({seal:e})=>nt({seal:e}),Er=({open:e})=>nt({open:e});async function Ft(){let e=await _();if(!e)return{dir:null,keys:[]};let t=[];for await(let[r]of e.entries())t.push(r);return{dir:e,keys:t}}function Bt(e){return e===X?ke:e.startsWith("sha512-")?e.replaceAll("_","/"):null}async function kt(e,t,r){let a=await(await e.getFileHandle(t)).getFile(),o=new Uint8Array(await a.arrayBuffer()),i=await r(o);if(i===null)return;let s=await e.getFileHandle(t,{create:!0});await Y(s,i)}async function at(e){let{dir:t,keys:r}=await Ft();if(t)for(let n of r){let a=Bt(n);if(a!==null)try{await kt(t,n,rt(e,se(a)))}catch(o){if(o instanceof DOMException&&o.name==="NotFoundError")continue;throw o}}}var mr=({seal:e})=>at({seal:e}),br=({open:e})=>at({open:e});te(()=>{g.clear(),B.clear()});export{E as a,F as b,qt as c,x as d,ht as e,Wt as f,vt as g,y as h,Ge as i,te as j,jt as k,Gt as l,Jt as m,Xt as n,zt as o,Yt as p,Kt as q,me as r,He as s,_t as t,Se as u,Mt as v,Nt as w,$t as x,Tt as y,nr as z,ar as A,xt as B,ze as C,or as D,At as E,ir as F,sr as G,cr as H,lr as I,ur as J,fr as K,dr as L,pr as M,wr as N,yr as O,gr as P,hr as Q,vr as R,Er as S,mr as T,br as U};
@@ -0,0 +1 @@
1
+ function f(e){return e==="inprogress"||e==="fixed"||e==="invalid"||e==="deleted"||e==="ignored"?e:void 0}function d(e){if(e)return f(e.triage)??(e.deleted?"deleted":void 0)}function l(e){let n=d(e);return n===void 0||n==="ignored"}function c(e){return e?!e.color&&!d(e)&&!e.comment&&!e.fix&&!(e.ignoredReports&&e.ignoredReports.length>0)&&e.flagged===void 0:!0}function R(e,n,r){let t=e.get(n)?.ignoredReports;return Array.isArray(t)&&t.includes(r)}function y(e,n){return Array.isArray(e?.scopedIgnoredReports)&&e.scopedIgnoredReports.includes(n)}function u(e){if(!e||typeof e!="object")return;let n=e,r={};typeof n.color=="string"&&n.color&&(r.color=n.color);let t=f(n.triage)??(n.deleted?"deleted":void 0);if(t&&(r.triage=t),typeof n.comment=="string"&&n.comment&&(r.comment=n.comment),typeof n.fix=="string"&&n.fix&&(r.fix=n.fix),typeof n.flagged=="boolean"&&(r.flagged=n.flagged),Array.isArray(n.ignoredReports)){let o=n.ignoredReports.filter(i=>typeof i=="string"&&i.length>0);o.length>0&&(r.ignoredReports=o)}if(Array.isArray(n.scopedIgnoredReports)&&r.ignoredReports){let o=[...new Set(n.scopedIgnoredReports.filter(i=>typeof i=="string"&&r.ignoredReports.includes(i)))];o.length>0&&(r.scopedIgnoredReports=o)}return c(r)?void 0:r}function g(e,n){let r=e??[],t=n??[];if(r.length!==t.length)return!1;if(r.length===0)return!0;let o=new Set(r);for(let i of t)if(!o.has(i))return!1;return!0}function a(e,n){let r=e??{},t=n??{};return(r.color??"")===(t.color??"")&&(d(r)??"")===(d(t)??"")&&(r.comment??"")===(t.comment??"")&&(r.fix??"")===(t.fix??"")&&r.flagged===t.flagged&&g(r.ignoredReports,t.ignoredReports)&&g(r.scopedIgnoredReports,t.scopedIgnoredReports)}function p(e,n,r){let t=e.get(n),o=u({...t,...r});return o===void 0?e.delete(n):a(t,o)?!1:(e.set(n,o),!0)}function T(e,n,r){let t=u(r),o=e.get(n);return t===void 0?e.delete(n):a(o,t)?!1:(e.set(n,t),!0)}function x(e,n,r,t,o=!1){let i=new Set(e.get(n)?.ignoredReports??[]);t?i.add(r):i.delete(r);let s=new Set(e.get(n)?.scopedIgnoredReports??[]);return t&&o&&s.add(r),p(e,n,{ignoredReports:i.size>0?[...i]:void 0,scopedIgnoredReports:[...s]})}export{d as a,l as b,R as c,y as d,u as e,p as f,T as g,x as h};
@@ -0,0 +1 @@
1
+ import{A as d,B as e,C as f,D as g,E as h,F as i,G as j,H as k,I as l,J as m,K as n,L as o,M as p,N as q,O as r,P as s,Q as t,R as u,S as v,T as w,U as x,d as b,z as c}from"./chunk-VIHGO77Y.js";import"./chunk-GJ4IUCNS.js";import{b as a}from"./chunk-PNHBZGDD.js";import"./chunk-TUII34K2.js";import"./chunk-OOJM4CTU.js";export{q as deleteBundle,k as deleteFile,a as gunzipBytes,n as hasAnyBundles,o as hasStoredBundleBytes,b as isEncryptionEnabled,m as listBundles,e as listFiles,x as migrateOpfsBundlesDecrypt,w as migrateOpfsBundlesEncrypt,v as migrateOpfsFilesDecrypt,u as migrateOpfsFilesEncrypt,l as onBundleMutated,d as onFileMutated,r as readBundle,s as readBundleIndex,g as readFile,h as readFileBytes,i as readFileFresh,p as saveBundle,t as saveBundleIndex,f as saveFile,j as saveFileBytes,c as withStoredItem};
@@ -0,0 +1,10 @@
1
+ import{h as _}from"./chunk-2XUEZHIP.js";var{I:c}=_,o=e=>e;var v=e=>e.strings===void 0,A=()=>document.createComment(""),u=(e,s,t)=>{let a=e._$AA.parentNode,l=s===void 0?e._$AB:s._$AA;if(t===void 0){let r=a.insertBefore(A(),l),$=a.insertBefore(A(),l);t=new c(r,$,e,e.options)}else{let r=t._$AB.nextSibling,$=t._$AM,n=$!==e;if(n){let i;t._$AQ?.(e),t._$AM=e,t._$AP!==void 0&&(i=e._$AU)!==$._$AU&&t._$AP(i)}if(r!==l||n){let i=t._$AA;for(;i!==r;){let m=o(i).nextSibling;o(a).insertBefore(i,l),i=m}}}return t},f=(e,s,t=e)=>(e._$AI(s,t),e),p={},T=(e,s=p)=>e._$AH=s,P=e=>e._$AH,g=e=>{e._$AR(),e._$AA.remove()};export{v as a,u as b,f as c,T as d,P as e,g as f};
2
+ /*! Bundled license information:
3
+
4
+ lit-html/directive-helpers.js:
5
+ (**
6
+ * @license
7
+ * Copyright 2020 Google LLC
8
+ * SPDX-License-Identifier: BSD-3-Clause
9
+ *)
10
+ */
@@ -0,0 +1 @@
1
+ function c(e){return!Number.isFinite(e)||e<0?"\u2014":e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:e<1073741824?`${(e/1048576).toFixed(1)} MiB`:`${(e/1073741824).toFixed(1)} GiB`}function s(e){return Array.isArray(e)?e.reduce((n,r)=>({bytes:n.bytes!=null&&Number.isFinite(r.bytes)?n.bytes+r.bytes:null,lines:n.lines!=null&&Number.isFinite(r.lines)?n.lines+r.lines:null}),{bytes:0,lines:0}):{bytes:null,lines:null}}function f(e,n,r){if(Array.isArray(e?.files))return{files:n.length,lines:s(n).lines,packages:new Set(n.map(o=>o.module)).size};let t=o=>Number.isSafeInteger(o)&&o>=0?o:null,u=e?.summary;return{files:t(u?.[r==="code"?"codeFiles":"files"]),lines:t(u?.lines),packages:null}}function _(e){return(e??[]).filter(n=>!["resource:base64","directory"].includes(n.format))}function i(e,{packageDir:n=null}={}){if(n){if(n!=="."){let r=n.match(/(?:^|\/)node_modules\/(@[^/]+\/[^/]+|[^/]+)$/u);return r&&r[1]!==".pnpm"?r[1]:n}}else{let r=/\.sol$/iu.test(e)?/(?:^|\/)(?:node_modules\/(@[^/]+\/[^/]+|[^/]+)|dependencies\/(@[^/]+\/[^/]+|[^/]+)\/)/gu:/(?:^|\/)node_modules\/(@[^/]+\/[^/]+|[^/]+)/gu,t;for(;(t=r.exec(e))!==null;){let u=t[1]??t[2];if(u!==".pnpm")return u}}return"__own__"}function l(e,n=null){return i(e,{packageDir:n})==="__own__"||!!n&&!/(?:^|\/)(?:node_modules|dependencies|vendor)(?:\/|$)/u.test(n)}function m(e,n=null){let r=[],t=[];for(let u of e)(l(u,n?.get(u))?r:t).push(u);return[...r,...t]}function p(e){return e==="__own__"?"Own source":typeof e!="string"?e:e.match(/^(?:.*\/)?vendor\/(.+)$/u)?.[1]??e}export{c as a,s as b,f as c,_ as d,i as e,l as f,m as g,p as h};
@@ -0,0 +1,3 @@
1
+ import{b as w,c as f,j as m,l as k}from"./chunk-HIV7SVI7.js";import{a as h}from"./chunk-TUII34K2.js";var x=3,y=4,H=/^[\w-]{4}$/u,_=/^[\w-]{8}$/u,u="AAAA",R={report:`deepview/finding-link/report/v1
2
+ `,workspace:`deepview/finding-link/workspace/v1
3
+ `},p=new Map;function $(t,e){return`${t}\0${e}`}function I(t){return typeof t=="string"&&H.test(t)}async function T(t,e){let n=R[t];if(!n||typeof e!="string"||!e)return null;let i=$(t,e),o=p.get(i);if(o!==void 0)return o;let r;try{let s=await crypto.subtle.digest("SHA-256",h(n+e));r=new Uint8Array(s).slice(0,x).toBase64({alphabet:"base64url",omitPadding:!0})}catch{return null}return p.set(i,r),r}function E(t,e){return typeof e!="string"||!e?null:p.get($(t,e))??null}function N(t,e){let n=[];for(let[i,o]of[["report",t],["workspace",e]]){if(o==null||o===""){n.push(u);continue}if(!I(o))throw new TypeError(`encodeFindingRef: ${i} must be a link hint token, not a name`);n.push(o)}return n.every(i=>i===u)?null:n[0]===u?`w${n[1]}`:n.join("")}function b(t){let e=[t.slice(0,y),t.slice(y)].map(n=>n===u?null:n);return{report:e[0],workspace:e[1]}}function a({id:t,report:e,workspace:n}={}){if(!f(t))throw new TypeError("encodeFindingRef: a persistent finding id is required");let i=[`finding=${encodeURIComponent(t)}`],o=N(e,n);return o&&i.push(`v=${o}`),i.join("&")}function O(t,e){let n=a(t);return typeof location>"u"?`${e??""}#${n}`:`${location.origin}${e??location.pathname}#${n}`}function A(t){let e=typeof t=="string"?t:typeof location>"u"?"":location.hash;if(!e)return null;let n=e.replace(/^#/u,"");if(!n)return null;let i={id:null,report:null,workspace:null};for(let o of n.split("&")){let r=o.indexOf("=");if(r<0)continue;let s=o.slice(0,r),c=o.slice(r+1);if(!c)continue;if(s==="v"){if(c.length===5&&c[0]==="w"&&I(c.slice(1))){let g=c.slice(1);Object.assign(i,{report:null,workspace:g===u?null:g});continue}if(!_.test(c))continue;Object.assign(i,b(c));continue}if(s!=="finding"||c.length>w*3)continue;let d;try{d=decodeURIComponent(c)}catch{continue}f(d)&&(i.id=d)}return i.id?i:null}function U(t,{managed:e=!1}={}){if(typeof location>"u")return null;let n;try{n=new URL(t)}catch{return null}if(n.href!==t||n.protocol!==location.protocol||n.host!==location.host||n.username||n.password)return null;let i=k(n);if(i?.finding)return{id:i.finding.id,fragment:a(i.finding),path:m(i)};if(e&&i?.view!=="home"&&!/\/(?:index|view)\.html$/u.test(n.pathname))return null;let o=A(n.hash);if(!o)return null;let r=a(o);return{id:o.id,fragment:r,path:`/#${r}`}}function l(t,e){if(typeof t!="string")return!1;let n=t.replaceAll("\\","/");return n.startsWith(`${e}/`)||n.includes(`/${e}/`)}function C(t){let e=!1;for(let n of t){for(let i of n.groups??[])for(let o of i){if(l(o.file,"node_modules"))return"node_modules";l(o.file,"vendor")&&(e=!0)}for(let i of Object.keys(n.tree??{})){if(l(i,"node_modules"))return"node_modules";l(i,"vendor")&&(e=!0)}}return e?"vendor":"dependencies"}export{l as a,C as b,T as c,E as d,a as e,O as f,A as g,U as h};