sparkforensics-server 0.5.1 → 0.5.2
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/package.json +1 -1
- package/public/assets/{AutoscalingChurn-5hDGIXi4.js → AutoscalingChurn-8t3U3isq.js} +1 -1
- package/public/assets/{CacheUtilization-CT2SCnJJ.js → CacheUtilization-CJs9tTum.js} +1 -1
- package/public/assets/CachingOpportunity-D1NcHs0V.js +1 -0
- package/public/assets/{ColdStart-B38OiAOp.js → ColdStart-CdRJ9gD8.js} +1 -1
- package/public/assets/{ConfigAudit-BoplryCH.js → ConfigAudit-B5Gbe5js.js} +1 -1
- package/public/assets/CoreUsageArea-a--NTRGY.js +1 -0
- package/public/assets/{Dashboard-BgKodJl2.js → Dashboard-C1hNeX49.js} +2 -2
- package/public/assets/DisclosureContext-ZpE6CkHx.js +1 -0
- package/public/assets/{DuplicatePlanSubtree-BqS2A2j4.js → DuplicatePlanSubtree-dobXdz7E.js} +1 -1
- package/public/assets/{ExecutorUtilization-Dp52QGWo.js → ExecutorUtilization-D9grwi7t.js} +1 -1
- package/public/assets/{GcPressure-CT1yzR_s.js → GcPressure-8-G2ri10.js} +1 -1
- package/public/assets/{IncompleteRun-C7Qkjtjn.js → IncompleteRun-B91lky7a.js} +1 -1
- package/public/assets/{JobFailures-WHl3ELfh.js → JobFailures-BsWvBMyJ.js} +1 -1
- package/public/assets/{MemoryUtilization-D8IUDHJI.js → MemoryUtilization-BM5schZI.js} +1 -1
- package/public/assets/{OverBroadcast-6oSSAQ_R.js → OverBroadcast-DdN8JIJH.js} +1 -1
- package/public/assets/{PartitionSizing-BwdFL-mw.js → PartitionSizing-CY5HDYtp.js} +1 -1
- package/public/assets/{PlanExplorer-DcxmiQWL.js → PlanExplorer-DgHCDBD_.js} +1 -1
- package/public/assets/PlanGraphRoute-DH3KJb8j.js +1 -0
- package/public/assets/{RetryWaste-BTbeHkJc.js → RetryWaste-DOnE9vGF.js} +1 -1
- package/public/assets/{ShuffleIO-CRhrYNE0.js → ShuffleIO-MMnDESkF.js} +1 -1
- package/public/assets/{Skew-DSNXRG9V.js → Skew-BmZZJ5ms.js} +1 -1
- package/public/assets/{SlowHost-B7Lwu2EU.js → SlowHost-CsJzfEqo.js} +1 -1
- package/public/assets/{SmallFiles-C082c2rd.js → SmallFiles-BoK3R1Ex.js} +1 -1
- package/public/assets/{SpeculationWaste-BS2vpadr.js → SpeculationWaste-CnVxB5AJ.js} +1 -1
- package/public/assets/Spill-BhNicyBy.js +1 -0
- package/public/assets/{StageFailed-D3ac9Sou.js → StageFailed-mAhHU4l_.js} +1 -1
- package/public/assets/StageFindingGroup-BEtPWcT0.js +1 -0
- package/public/assets/{StageHeader-pI1nTwVf.js → StageHeader-DJkYkrsU.js} +1 -1
- package/public/assets/{StageShape-eO5le8iG.js → StageShape-BDxRknLp.js} +1 -1
- package/public/assets/{StageSlowness-BaNyfNvL.js → StageSlowness-BPRw-otN.js} +1 -1
- package/public/assets/{Straggler-D5Fnok_y.js → Straggler-CZCbnOWP.js} +1 -1
- package/public/assets/{TaskFailures-BWnC-K_G.js → TaskFailures-C57YcLFQ.js} +1 -1
- package/public/assets/{TinyTask-8_5lpq_2.js → TinyTask-Bi84qU7n.js} +1 -1
- package/public/assets/{UnderBroadcast-DJ0XSwth.js → UnderBroadcast-DdQV7htE.js} +1 -1
- package/public/assets/{finding-anchor-Cys8Z6Yn.js → finding-anchor-Cl6_5hfV.js} +1 -1
- package/public/assets/{impact-sort-BTQndbof.js → impact-sort-CssZ6MT2.js} +1 -1
- package/public/assets/index-2h_TgUAb.css +2 -0
- package/public/assets/index-B-03mG7K.js +14 -0
- package/public/assets/{parser-worker-DmeCnLWU.js → parser-worker-CA5RxqKc.js} +8 -8
- package/public/assets/{select-DIYN6D3y.js → select-CQjNhprm.js} +1 -1
- package/public/assets/{usePagedRows-BxvdFnPk.js → usePagedRows-Dyl6T8Ok.js} +1 -1
- package/public/assets/useRecentFiles-XZEnLlal.js +11 -0
- package/public/assets/{useSortMode-B8SRfAoG.js → useSortMode-Dhvit8dt.js} +1 -1
- package/public/docs/404.html +2 -2
- package/public/docs/assets/{app.D2GqAkhy.js → app.eYTPqTeq.js} +1 -1
- package/public/docs/assets/chunks/@localSearchIndexroot.u_e5bQz4.js +1 -0
- package/public/docs/assets/chunks/{VPLocalSearchBox.BS4cSmtW.js → VPLocalSearchBox.DsZrQKQR.js} +1 -1
- package/public/docs/assets/chunks/{theme.BuxVpb0H.js → theme.DsTNE2pE.js} +2 -2
- package/public/docs/assets/contributor-guide_architecture_detector-contract_threshold-tables.md.CKjWG56Y.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_state-and-history_run-comparison-internals.md.CZA0JLtV.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_state-and-history_run-comparison-internals.md.uuAKpY0Y.lean.js → contributor-guide_architecture_state-and-history_run-comparison-internals.md.CZA0JLtV.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol_cli-and-mcp.md.DC1YqXBp.js +1 -0
- package/public/docs/assets/{user-guide_getting-started_ci-and-automation.md.DpnfKz3x.js → user-guide_getting-started_ci-and-automation.md.OUQqw3mI.js} +5 -4
- package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.OUQqw3mI.lean.js +1 -0
- package/public/docs/assets/{user-guide_mcp-tools_compare-runs.md.CPowlb2q.js → user-guide_mcp-tools_compare-runs.md.Cc_gLoix.js} +3 -2
- package/public/docs/assets/{user-guide_mcp-tools_compare-runs.md.CPowlb2q.lean.js → user-guide_mcp-tools_compare-runs.md.Cc_gLoix.lean.js} +1 -1
- package/public/docs/assets/{user-guide_mcp-tools_evaluate-budgets.md.Dq5Azk8G.js → user-guide_mcp-tools_evaluate-budgets.md.BB0nDY3Z.js} +2 -2
- package/public/docs/assets/{user-guide_mcp-tools_evaluate-budgets.md.Dq5Azk8G.lean.js → user-guide_mcp-tools_evaluate-budgets.md.BB0nDY3Z.lean.js} +1 -1
- package/public/docs/assets/user-guide_run-comparison.md.BUALkohi.js +1 -0
- package/public/docs/assets/user-guide_run-comparison.md.BUALkohi.lean.js +1 -0
- package/public/docs/assets/user-guide_run-comparison_how-stages-are-matched.md.DSXGu2tA.js +1 -0
- package/public/docs/assets/user-guide_run-comparison_how-stages-are-matched.md.DSXGu2tA.lean.js +1 -0
- package/public/docs/assets/user-guide_understanding-findings.md.C9YRruMT.js +1 -0
- package/public/docs/assets/user-guide_understanding-findings.md.C9YRruMT.lean.js +1 -0
- package/public/docs/contributor-guide/architecture/board-widgets/caching-and-memory.html +3 -3
- package/public/docs/contributor-guide/architecture/board-widgets/plan-advisor.html +3 -3
- package/public/docs/contributor-guide/architecture/board-widgets/visual-system-and-templating.html +3 -3
- package/public/docs/contributor-guide/architecture/board-widgets.html +3 -3
- package/public/docs/contributor-guide/architecture/detector-contract/plan-attribution.html +3 -3
- package/public/docs/contributor-guide/architecture/detector-contract/threshold-tables.html +5 -5
- package/public/docs/contributor-guide/architecture/detector-contract.html +3 -3
- package/public/docs/contributor-guide/architecture/drill-down/plan-graph.html +3 -3
- package/public/docs/contributor-guide/architecture/drill-down.html +3 -3
- package/public/docs/contributor-guide/architecture/impact-estimation/caveats-tuning-and-coverage.html +3 -3
- package/public/docs/contributor-guide/architecture/impact-estimation/stage-union-rollup.html +3 -3
- package/public/docs/contributor-guide/architecture/impact-estimation.html +3 -3
- package/public/docs/contributor-guide/architecture/index.html +3 -3
- package/public/docs/contributor-guide/architecture/overview.html +3 -3
- package/public/docs/contributor-guide/architecture/state-and-history/history-server-intake.html +3 -3
- package/public/docs/contributor-guide/architecture/state-and-history/run-comparison-internals.html +5 -5
- package/public/docs/contributor-guide/architecture/state-and-history.html +3 -3
- package/public/docs/contributor-guide/architecture/widget-rendering/findings-tab.html +3 -3
- package/public/docs/contributor-guide/architecture/widget-rendering/investigation-routing.html +3 -3
- package/public/docs/contributor-guide/architecture/widget-rendering/list-sort-mode.html +3 -3
- package/public/docs/contributor-guide/architecture/widget-rendering/reference-section.html +3 -3
- package/public/docs/contributor-guide/architecture/widget-rendering/row-expand-contract.html +3 -3
- package/public/docs/contributor-guide/architecture/widget-rendering.html +3 -3
- package/public/docs/contributor-guide/architecture/worker-protocol/cli-and-mcp.html +5 -5
- package/public/docs/contributor-guide/architecture/worker-protocol/core-and-event-validation.html +3 -3
- package/public/docs/contributor-guide/architecture/worker-protocol/evidence-availability.html +3 -3
- package/public/docs/contributor-guide/architecture/worker-protocol/evidence-report.html +3 -3
- package/public/docs/contributor-guide/architecture/worker-protocol.html +3 -3
- package/public/docs/contributor-guide/contributing.html +3 -3
- package/public/docs/contributor-guide/development-setup.html +3 -3
- package/public/docs/contributor-guide/testing.html +3 -3
- package/public/docs/hashmap.json +1 -1
- package/public/docs/index.html +3 -3
- package/public/docs/tuning-reference/anti-patterns.html +3 -3
- package/public/docs/tuning-reference/aqe.html +3 -3
- package/public/docs/tuning-reference/bottleneck-broadcast-sizing.html +3 -3
- package/public/docs/tuning-reference/bottleneck-cold-start.html +3 -3
- package/public/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +3 -3
- package/public/docs/tuning-reference/bottleneck-failures.html +3 -3
- package/public/docs/tuning-reference/bottleneck-gc.html +3 -3
- package/public/docs/tuning-reference/bottleneck-job-failure-rate.html +3 -3
- package/public/docs/tuning-reference/bottleneck-memory-utilization.html +3 -3
- package/public/docs/tuning-reference/bottleneck-retry-waste.html +3 -3
- package/public/docs/tuning-reference/bottleneck-shuffle.html +3 -3
- package/public/docs/tuning-reference/bottleneck-skew.html +3 -3
- package/public/docs/tuning-reference/bottleneck-slow-host.html +3 -3
- package/public/docs/tuning-reference/bottleneck-small-files.html +3 -3
- package/public/docs/tuning-reference/bottleneck-spill.html +3 -3
- package/public/docs/tuning-reference/bottleneck-straggler.html +3 -3
- package/public/docs/tuning-reference/bottleneck-tiny-tasks.html +3 -3
- package/public/docs/tuning-reference/bottleneck-utilization.html +3 -3
- package/public/docs/tuning-reference/caching.html +3 -3
- package/public/docs/tuning-reference/cluster-config.html +3 -3
- package/public/docs/tuning-reference/config.html +3 -3
- package/public/docs/tuning-reference/data-formats.html +3 -3
- package/public/docs/tuning-reference/index.html +3 -3
- package/public/docs/tuning-reference/intro.html +3 -3
- package/public/docs/tuning-reference/joins.html +3 -3
- package/public/docs/tuning-reference/memory-model.html +3 -3
- package/public/docs/tuning-reference/metrics.html +3 -3
- package/public/docs/tuning-reference/partitioning.html +3 -3
- package/public/docs/tuning-reference/pyspark.html +3 -3
- package/public/docs/tuning-reference/shuffle.html +3 -3
- package/public/docs/tuning-reference/spark-architecture.html +3 -3
- package/public/docs/tuning-reference/table-formats.html +3 -3
- package/public/docs/user-guide/alternative-log-retrieval/managed-platforms.html +3 -3
- package/public/docs/user-guide/alternative-log-retrieval/ssh-bastion.html +3 -3
- package/public/docs/user-guide/alternative-log-retrieval.html +3 -3
- package/public/docs/user-guide/getting-started/ci-and-automation.html +8 -7
- package/public/docs/user-guide/getting-started/reading-the-dashboard.html +3 -3
- package/public/docs/user-guide/getting-started/regression-metric-keys.html +3 -3
- package/public/docs/user-guide/getting-started/tuning-thresholds.html +3 -3
- package/public/docs/user-guide/getting-started.html +3 -3
- package/public/docs/user-guide/mcp-tools/compare-runs.html +7 -6
- package/public/docs/user-guide/mcp-tools/diagnose-run.html +3 -3
- package/public/docs/user-guide/mcp-tools/evaluate-budgets.html +5 -5
- package/public/docs/user-guide/mcp-tools/get-finding-documentation.html +3 -3
- package/public/docs/user-guide/mcp-tools/get-finding-evidence.html +3 -3
- package/public/docs/user-guide/mcp-tools/get-reference-doc.html +3 -3
- package/public/docs/user-guide/mcp-tools/get-run-summary.html +3 -3
- package/public/docs/user-guide/mcp-tools/list-runs.html +3 -3
- package/public/docs/user-guide/mcp-tools.html +3 -3
- package/public/docs/user-guide/run-comparison/how-stages-are-matched.html +5 -5
- package/public/docs/user-guide/run-comparison.html +5 -5
- package/public/docs/user-guide/understanding-findings.html +5 -5
- package/public/export-template.html +3 -3
- package/public/index.html +3 -3
- package/vendor-core/cli/budgets.js +62 -2
- package/vendor-core/cli/regression-budgets.js +35 -0
- package/vendor-core/comparison-output.js +2 -1
- package/vendor-core/core-source-hash.txt +1 -1
- package/vendor-core/detectors.js +219 -56
- package/vendor-core/docs-content/detection/chrn.md +3 -1
- package/vendor-core/docs-content/detection/cold.md +2 -1
- package/vendor-core/docs-content/detection/plan.md +9 -2
- package/vendor-core/docs-content/detection/shfl.md +8 -2
- package/vendor-core/docs-content/detection/skew.md +11 -5
- package/vendor-core/docs-content/detection/slow.md +6 -2
- package/vendor-core/docs-content/detection/spill.md +4 -1
- package/vendor-core/docs-content/detection/strag.md +5 -3
- package/vendor-core/docs-content/detection/tiny.md +3 -2
- package/vendor-core/evidence-report.js +11 -11
- package/vendor-core/finding-presentation.js +39 -13
- package/vendor-core/finding-types.js +50 -6
- package/vendor-core/mcp-server-factory.js +6 -2
- package/vendor-core/mcp-tools.js +10 -1
- package/vendor-core/median.js +8 -0
- package/vendor-core/run-comparison.js +2 -0
- package/vendor-core/sequence-alignment.js +83 -0
- package/vendor-core/stage-alignment.js +387 -63
- package/vendor-core/stage-quantiles.js +3 -1
- package/vendor-core/stage-structure.js +83 -0
- package/public/assets/CachingOpportunity-D_O_WkbH.js +0 -1
- package/public/assets/CoreUsageArea-csgwNxkl.js +0 -1
- package/public/assets/DisclosureContext-B0siMVdg.js +0 -1
- package/public/assets/PlanGraphRoute-pqnHTt4i.js +0 -1
- package/public/assets/Spill-B4DVKHXx.js +0 -1
- package/public/assets/StageFindingGroup-D9naK109.js +0 -1
- package/public/assets/index-BcqTLKFp.css +0 -2
- package/public/assets/index-DCeWge12.js +0 -13
- package/public/assets/useRecentFiles-C3Ov47U7.js +0 -11
- package/public/docs/assets/chunks/@localSearchIndexroot.D4OdkQjy.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract_threshold-tables.md.fkPBXsU2.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_state-and-history_run-comparison-internals.md.uuAKpY0Y.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol_cli-and-mcp.md.Dk08VS7n.js +0 -1
- package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.DpnfKz3x.lean.js +0 -1
- package/public/docs/assets/user-guide_run-comparison.md.B6aNtDYF.js +0 -1
- package/public/docs/assets/user-guide_run-comparison.md.B6aNtDYF.lean.js +0 -1
- package/public/docs/assets/user-guide_run-comparison_how-stages-are-matched.md.XBzQ1oEU.js +0 -1
- package/public/docs/assets/user-guide_run-comparison_how-stages-are-matched.md.XBzQ1oEU.lean.js +0 -1
- package/public/docs/assets/user-guide_understanding-findings.md.Dqt2H_C1.js +0 -1
- package/public/docs/assets/user-guide_understanding-findings.md.Dqt2H_C1.lean.js +0 -1
- /package/public/docs/assets/{contributor-guide_architecture_detector-contract_threshold-tables.md.fkPBXsU2.lean.js → contributor-guide_architecture_detector-contract_threshold-tables.md.CKjWG56Y.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_architecture_worker-protocol_cli-and-mcp.md.Dk08VS7n.lean.js → contributor-guide_architecture_worker-protocol_cli-and-mcp.md.DC1YqXBp.lean.js} +0 -0
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{E as t,M as n,c as r,d as i,g as a,h as o,l as s,m as c,u as l}from"./charts-vendor-0VMaLVLN.js";import{$ as u,B as d,F as f,G as p,H as m,I as h,J as g,K as _,L as v,M as y,N as b,P as x,Q as S,R as C,U as w,V as T,W as E,X as D,Y as O,Z as k,q as A,z as j}from"./react-vendor-DEdfrRTJ.js";import{D as M,Et as N,F as P,L as F,M as ee,N as I,P as te,Tt as L,U as R,X as z,Y as ne,Z as B,_t as V,a as re,b as ie,bt as ae,d as oe,f as se,gt as ce,h as le,ht as ue,i as de,lt as fe,mt as pe,n as me,nt as he,o as ge,p as _e,r as ve,u as ye,ut as be,vt as xe,yt as H}from"./DisclosureContext-B0siMVdg.js";import{p as Se}from"./plan-graph-vendor-BYl-AzN5.js";import{$ as Ce,B as we,Ct as Te,Et as Ee,F as De,G as Oe,H as ke,I as Ae,J as je,K as Me,L as Ne,M as Pe,N as Fe,P as Ie,Q as Le,R as Re,S as ze,Tt as U,U as Be,V as Ve,W as He,X as Ue,Y as We,Z as Ge,_ as Ke,_t as qe,a as Je,at as Ye,bt as Xe,c as Ze,ct as Qe,d as $e,dt as et,et as tt,f as nt,g as rt,gt as it,h as at,ht as ot,i as st,it as ct,lt,m as ut,mt as dt,n as ft,nt as pt,o as mt,ot as ht,p as gt,q as _t,r as vt,s as yt,st as bt,t as xt,tt as St,ut as Ct,v as wt,vt as Tt,wt as Et,y as Dt}from"./index-DCeWge12.js";var Ot={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]};Ot.node;var kt=V(Ot),At={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};At.node;var jt=V(At),Mt={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};Mt.node;var Nt=V(Mt),Pt={name:`ellipsis`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]],aliases:[`more-horizontal`]};Pt.node;var Ft=V(Pt),It={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};It.node;var Lt=V(It),Rt={name:`keyboard`,size:24,node:[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]};Rt.node;var zt=V(Rt),W=e(n(),1),G=Se();function Bt({className:e,orientation:t=`horizontal`,...n}){return(0,G.jsx)(_,{"data-slot":`tabs`,"data-orientation":t,className:L(`group/tabs flex gap-2 data-horizontal:flex-col`,e),...n})}var Vt=N(`group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none data-[variant=chrome]:w-full data-[variant=chrome]:items-end data-[variant=chrome]:justify-start data-[variant=chrome]:gap-1 data-[variant=chrome]:rounded-none data-[variant=chrome]:border-b data-[variant=chrome]:border-border data-[variant=chrome]:p-0 group-data-horizontal/tabs:data-[variant=chrome]:h-auto`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`,chrome:`bg-transparent`}},defaultVariants:{variant:`default`}});function Ht({className:e,variant:t=`default`,...n}){return(0,G.jsx)(w,{"data-slot":`tabs-list`,"data-variant":t,className:L(Vt({variant:t}),e),...n})}function Ut({className:e,...t}){return(0,G.jsx)(p,{"data-slot":`tabs-trigger`,className:L(`relative inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:cursor-default disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:cursor-default aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100`,`group-data-[variant=chrome]/tabs-list:h-auto group-data-[variant=chrome]/tabs-list:flex-none group-data-[variant=chrome]/tabs-list:gap-2 group-data-[variant=chrome]/tabs-list:rounded-t-md group-data-[variant=chrome]/tabs-list:rounded-b-none group-data-[variant=chrome]/tabs-list:border-x group-data-[variant=chrome]/tabs-list:border-t group-data-[variant=chrome]/tabs-list:border-transparent group-data-[variant=chrome]/tabs-list:px-4 group-data-[variant=chrome]/tabs-list:py-2 group-data-[variant=chrome]/tabs-list:text-sm group-data-[variant=chrome]/tabs-list:font-semibold group-data-[variant=chrome]/tabs-list:text-muted-foreground group-data-[variant=chrome]/tabs-list:hover:bg-muted/40 group-data-[variant=chrome]/tabs-list:hover:text-foreground`,`group-data-[variant=chrome]/tabs-list:data-active:-mb-px group-data-[variant=chrome]/tabs-list:data-active:border-border group-data-[variant=chrome]/tabs-list:data-active:bg-background group-data-[variant=chrome]/tabs-list:data-active:text-foreground group-data-[variant=chrome]/tabs-list:data-active:shadow-none dark:group-data-[variant=chrome]/tabs-list:data-active:border-border dark:group-data-[variant=chrome]/tabs-list:data-active:bg-background`,`before:absolute before:inset-x-3 before:top-0 before:h-0.5 before:rounded-full before:bg-accent before:opacity-0 before:transition-opacity group-data-[variant=chrome]/tabs-list:data-active:before:opacity-100`,`tap-target-comfortable tap-target-comfortable--sm`,e),...t})}function Wt({className:e,...t}){return(0,G.jsx)(E,{"data-slot":`tabs-content`,className:L(`flex-1 text-sm outline-none`,e),...t})}var Gt={executorMetrics:`Executor metrics`,rddStorageSnapshots:`RDD storage snapshots`,sqlPlan:`SQL plan`,sparkConfiguration:`Spark configuration`,taskCoreTime:`Task and core time`,infrastructureContext:`Infrastructure context`,sourceContext:`Source context`,costContext:`Cost context`};function Kt(e){return Gt[e]}var qt={revealRequest:0,evidenceCardOpen:!0,setEvidenceCardOpen:()=>{},revealEvidence:()=>{},registerRow:()=>{}},Jt=(0,W.createContext)(null);function Yt({children:e}){let[t,n]=(0,W.useState)(!1),r=(0,W.useRef)(null),[i,a]=(0,W.useState)(0),o=(0,W.useRef)(new Map),s=(0,W.useCallback)((e,t)=>{t?o.current.set(e,t):o.current.delete(e)},[]),c=(0,W.useCallback)(e=>{r.current=e,n(!0),a(e=>e+1)},[]);(0,W.useLayoutEffect)(()=>{let e=r.current;e&&i!==0&&queueMicrotask(()=>{o.current.get(e)?.focus()})},[i]);let l=(0,W.useMemo)(()=>({revealRequest:i,evidenceCardOpen:t,setEvidenceCardOpen:n,revealEvidence:c,registerRow:s}),[i,t,c,s]);return(0,G.jsx)(Jt.Provider,{value:l,children:e})}function Xt(){return(0,W.useContext)(Jt)??qt}function Zt(){let{revealEvidence:e}=Xt();return{revealEvidence:e}}function Qt(){let{revealRequest:e,evidenceCardOpen:t,setEvidenceCardOpen:n}=Xt();return{revealRequest:e,evidenceCardOpen:t,setEvidenceCardOpen:n}}function $t(){let{registerRow:e}=Xt();return e}function en({...e}){return(0,G.jsx)(h,{"data-slot":`dropdown-menu`,...e})}function tn({...e}){return(0,G.jsx)(f,{"data-slot":`dropdown-menu-trigger`,...e})}function nn({align:e=`start`,alignOffset:t=0,side:n=`bottom`,sideOffset:r=4,className:i,...a}){return(0,G.jsx)(C,{children:(0,G.jsx)(v,{className:`isolate z-50 outline-none`,align:e,alignOffset:t,side:n,sideOffset:r,children:(0,G.jsx)(j,{"data-slot":`dropdown-menu-content`,className:L(`z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:animate-none`,i),...a})})})}function K({className:e,inset:t,variant:n=`default`,...r}){return(0,G.jsx)(d,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:L(`group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive`,e),...r})}function rn({className:e,children:t,checked:n,inset:r,...i}){return(0,G.jsxs)(m,{"data-slot":`dropdown-menu-checkbox-item`,"data-inset":r,className:L(`relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:n,...i,children:[(0,G.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex items-center justify-center`,"data-slot":`dropdown-menu-checkbox-item-indicator`,children:(0,G.jsx)(T,{children:(0,G.jsx)(kt,{})})}),t]})}function an({className:e,...t}){return(0,G.jsx)(x,{"data-slot":`dropdown-menu-separator`,className:L(`-mx-1 my-1 h-px bg-border`,e),...t})}function on({className:e,type:t,...n}){return(0,G.jsx)(b,{type:t,"data-slot":`input`,className:L(`h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,e),...n})}var sn=N(`group/toggle inline-flex cursor-pointer items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-default disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent hover:bg-muted`},size:{default:`h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,sm:`h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`}},defaultVariants:{variant:`default`,size:`default`}});function cn({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,G.jsx)(y,{"data-slot":`toggle`,className:L(sn({variant:t,size:n,className:e})),...r})}var ln={light:``,dark:`.dark`},un={width:320,height:200},dn=W.createContext(null);function fn({id:e,className:n,children:r,config:i,initialDimension:a=un,...o}){let s=W.useId(),c=`chart-${e??s.replace(/:/g,``)}`;return(0,G.jsx)(dn.Provider,{value:{config:i},children:(0,G.jsxs)(`div`,{"data-slot":`chart`,"data-chart":c,className:L(`flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden`,n),...o,children:[(0,G.jsx)(pn,{id:c,config:i}),(0,G.jsx)(t,{initialDimension:a,children:r})]})})}var pn=({id:e,config:t})=>{let n=Object.entries(t).filter(([,e])=>e.theme??e.color);return n.length?(0,G.jsx)(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(ln).map(([t,r])=>`
|
|
2
|
-
${r} [data-chart=${e}] {
|
|
3
|
-
${n.map(([e,n])=>{let r=n.theme?.[t]??n.color;return r?` --color-${e}: ${r};`:null}).join(`
|
|
4
|
-
`)}
|
|
5
|
-
}
|
|
6
|
-
`).join(`
|
|
7
|
-
`)}}):null};async function mn(e){if(navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(e);return}catch{}let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t);try{if(t.select(),!document.execCommand(`copy`))throw Error(`copy unavailable`)}finally{t.remove()}}var hn=`(prefers-reduced-motion: reduce)`;function gn(e){if(typeof window>`u`||!window.matchMedia)return()=>{};let t=window.matchMedia(hn);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function _n(){return typeof window>`u`||!window.matchMedia?!1:window.matchMedia(hn).matches}function vn(){return(0,W.useSyncExternalStore)(gn,_n,()=>!1)}var yn={accent:`var(--color-accent)`,warning:`var(--color-warning)`,critical:`var(--color-critical)`,info:`var(--color-info)`,clean:`var(--color-clean)`,muted:`var(--color-muted-foreground)`},bn=`var(--color-popover-foreground)`,xn={background:`var(--color-popover)`,border:`1px solid var(--color-border)`,borderRadius:6,color:bn,fontSize:12,padding:`6px 10px`},Sn={contentStyle:xn,labelStyle:{color:bn,fontWeight:600},itemStyle:{color:bn}};function Cn(e,t){return[e,...t].map(e=>e.join(` `)).join(`
|
|
8
|
-
`)}function wn({caption:e,columns:t,rows:n,align:r}){let[i,a]=(0,W.useState)(!1),[o,s]=(0,W.useState)(!1);async function c(){try{await mn(Cn(t,n)),s(!0),setTimeout(()=>s(!1),1500)}catch{}}return(0,G.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`button`,{type:`button`,className:`cursor-pointer text-muted-foreground text-xs underline`,"aria-expanded":i,onClick:()=>a(e=>!e),children:`▤ Table`}),(0,G.jsx)(`button`,{type:`button`,className:`cursor-pointer text-muted-foreground text-xs underline`,onClick:c,children:`⧉ Copy`}),(0,G.jsx)(`span`,{"aria-live":`polite`,className:`text-xs text-muted-foreground`,children:o?`Copied`:``})]}),(0,G.jsxs)(Pe,{className:i?void 0:`sr-only`,children:[(0,G.jsx)(Ie,{className:`sr-only`,children:e}),(0,G.jsx)(Ne,{children:(0,G.jsx)(Re,{children:t.map((e,t)=>(0,G.jsx)(Ae,{className:r?.[t]===`right`?`text-right`:void 0,children:e},e))})}),(0,G.jsx)(Fe,{children:n.map((e,t)=>(0,G.jsx)(Re,{children:e.map((e,t)=>(0,G.jsx)(De,{className:r?.[t]===`right`?`text-right`:void 0,children:e},t))},t))})]})]})}var Tn=new Set([l,s,i,a,o,c,r]);function En(e){if(!(0,W.isValidElement)(e))return e;let{children:t,isAnimationActive:n}=e.props,r=t==null?t:W.Children.map(t,En),i=Tn.has(e.type)&&n===void 0;return!i&&r===t?e:(0,W.cloneElement)(e,i?{isAnimationActive:!1}:{},...t==null?[]:[r])}function Dn({title:e,ariaLabel:t,height:n,children:r,table:i}){let a=vn()?En(r):r,o=me();return(0,G.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[e?(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-medium`,children:e}):null,o?(0,G.jsx)(fn,{role:`img`,"aria-label":t,config:{},className:`aspect-auto w-full`,style:{height:n},initialDimension:{width:320,height:n},children:a}):(0,G.jsx)(`div`,{style:{height:n},"aria-hidden":!0}),i?(0,G.jsx)(wn,{...i}):null]})}function On(e){let t=(0,W.useId)(),[n,r]=(0,W.useState)(!1);return e?{tooltipProps:{title:e,"aria-describedby":t,onFocus:()=>r(!0),onBlur:()=>r(!1)},srOnlyTooltip:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{id:t,className:`sr-only`,children:e}),n?(0,G.jsx)(`span`,{"aria-hidden":`true`,"data-testid":`visible-tooltip`,className:`pointer-events-none absolute top-full left-0 z-50 mt-1 max-w-xs rounded-md border border-border bg-foreground px-2 py-1 text-xs font-normal whitespace-normal text-background shadow-md`,children:e}):null]})}:{tooltipProps:{},srOnlyTooltip:null}}function kn({confidence:e,validationRequired:t,evidenceKey:n}){let{tooltipProps:r,srOnlyTooltip:i}=On(t),{revealEvidence:a}=Zt(),o=!!e&&e!==`high`,s=!!n;return!o&&!s?null:(0,G.jsxs)(`span`,{className:`relative inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-muted/60 px-2.5 text-xs font-medium text-muted-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,tabIndex:o?0:void 0,...o?r:{},children:[o?(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block size-2 shrink-0 rounded-full border border-dashed border-current`}):null,o?`${e} confidence`:null,o?i:null,o&&s?(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`opacity-60`,children:`·`}):null,s?(0,G.jsx)(`button`,{type:`button`,"aria-label":`Evidence: ${Kt(n)}`,className:`tap-target-comfortable tap-target-comfortable--sm inline-flex min-h-[22px] cursor-pointer items-center rounded-sm text-primary outline-none hover:underline underline-offset-2 focus-visible:ring-2 focus-visible:ring-ring/50`,onClick:()=>a(n),children:Kt(n)}):null]})}function An(e,t){return e.filter(e=>e.type===t)}function jn(e){return`stageIds`in e?e.stageIds:void 0}function Mn({title:e,children:t,defaultOpen:n=!1}){let[r,i]=(0,W.useState)(n);return(0,G.jsxs)(ve,{open:r,onOpenChange:i,className:`space-y-2`,children:[(0,G.jsxs)(re,{"aria-expanded":String(r),className:`tap-target-comfortable tap-target-comfortable--sm flex cursor-pointer items-center gap-2 bg-transparent text-left`,children:[(0,G.jsx)(`h3`,{className:`font-heading text-sm font-medium`,children:e}),r?(0,G.jsx)(ue,{"aria-hidden":`true`,className:`size-4 shrink-0 text-muted-foreground`}):(0,G.jsx)(ce,{"aria-hidden":`true`,className:`size-4 shrink-0 text-muted-foreground`})]}),(0,G.jsx)(de,{keepMounted:!0,children:t})]})}function Nn({...e}){return(0,G.jsx)(g,{"data-slot":`dialog`,...e})}function Pn({...e}){return(0,G.jsx)(O,{"data-slot":`dialog-portal`,...e})}function Fn({className:e,...t}){return(0,G.jsx)(u,{"data-slot":`dialog-overlay`,className:L(`fixed inset-0 isolate z-50 bg-(--overlay-scrim) duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:animate-none`,e),...t})}function In({className:e,children:t,showCloseButton:n=!0,...r}){return(0,G.jsxs)(Pn,{children:[(0,G.jsx)(Fn,{}),(0,G.jsxs)(D,{"data-slot":`dialog-content`,className:L(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:animate-none`,e),...r,children:[t,n&&(0,G.jsxs)(S,{"data-slot":`dialog-close`,render:(0,G.jsx)(U,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`}),children:[(0,G.jsx)(ot,{}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function Ln({className:e,...t}){return(0,G.jsx)(`div`,{"data-slot":`dialog-header`,className:L(`flex flex-col gap-2`,e),...t})}function Rn({className:e,showCloseButton:t=!1,children:n,...r}){return(0,G.jsxs)(`div`,{"data-slot":`dialog-footer`,className:L(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,e),...r,children:[n,t&&(0,G.jsx)(S,{render:(0,G.jsx)(U,{variant:`outline`}),children:`Close`})]})}function zn({className:e,...t}){return(0,G.jsx)(A,{"data-slot":`dialog-title`,className:L(`font-heading text-base leading-none font-medium`,e),...t})}function Bn({className:e,...t}){return(0,G.jsx)(k,{"data-slot":`dialog-description`,className:L(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function Vn({title:e,rows:t,children:n,collapsible:r=!1,defaultOpen:i=!1}){let a=t.filter(e=>!!e);if(a.length===0&&!n)return null;let o=(0,G.jsx)(`div`,{className:`grid min-w-0 grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm`,children:a.map(([e,t],n)=>(0,G.jsxs)(W.Fragment,{children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:e}),(0,G.jsx)(`span`,{className:`break-words`,children:t})]},n))});return r&&e?(0,G.jsx)(Mn,{title:e,defaultOpen:i,children:(0,G.jsxs)(`div`,{className:`space-y-2`,children:[o,n]})}):(0,G.jsxs)(`section`,{className:`space-y-2`,children:[e?(0,G.jsx)(`h3`,{className:`font-heading text-sm font-medium`,children:e}):null,o,n]})}function Hn(e){return String(e).replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function Un(e,{title:t=`plan`}={}){if(!e)return``;let n=[`digraph "${Hn(t)}" {`,` rankdir=BT;`,` node [shape=box];`],r=new WeakMap,i=[],a=0;return dt(e,(e,t)=>{let o=`n${a++}`;r.set(e,o);let s=e.detail&&e.detail!==e.name?`${e.name}\\n${e.detail}`:e.name;n.push(` ${o} [label="${Hn(s)}"];`),t&&i.push(` ${r.get(t)} -> ${o};`)},{dedupe:!0}),[...n,...i,`}`].join(`
|
|
9
|
-
`)}var Wn=`Derived from best-effort plan-text parsing: cross-check against the Summary tab before acting.`,Gn=`Derived from best-effort plan-text parsing: cross-check against the Tree tab before acting.`,Kn=`Derived from best-effort plan-text parsing: cross-check against the Tree tab or View plan graph before acting.`;function qn(e){try{return ct(e)}catch{return null}}function Jn(e){try{return Ye(e)}catch{return null}}function Yn(e,t){try{return Un(e,{title:`stage-${t}`})||null}catch{return null}}function Xn(e,t,n,r){if(!n||r==null)return null;try{return ht(e,t,n,r)}catch{return null}}function Zn(e,t){let n=t.stages.get(e);return(n?.sqlExecutionId==null?null:t.sql.get(n.sqlExecutionId))?.planTree??null}function Qn(e){switch(e.kind){case`scan`:return[e.path?[`Path`,e.path]:null,e.format?[`Format`,e.format]:null,e.projectedColumns?.length?[`Columns`,e.projectedColumns.join(`, `)]:null,e.pushedFilters?.length?[`Filters`,e.pushedFilters.join(`, `)]:null];case`join`:return[[`Left keys`,e.leftKeys?.length?e.leftKeys.join(`, `):`(none)`],[`Right keys`,e.rightKeys?.length?e.rightKeys.join(`, `):`(none)`]];case`agg`:return[[`Group by`,e.groupByKeys?.length?e.groupByKeys.join(`, `):`(none)`],[`Functions`,e.aggregations?.length?e.aggregations.join(`, `):`(none)`]];case`exchange`:return[e.partitioning?[`Partitioning`,e.partitioning]:null,e.keys?.length?[`Keys`,e.keys.join(`, `)]:null,e.numPartitions?[`Partitions`,String(e.numPartitions)]:null];default:return[]}}function $n({rows:e}){let[t,n]=(0,W.useState)(!1);return(0,G.jsxs)(`details`,{className:`pt-1 pl-4`,onToggle:e=>n(e.currentTarget.open),children:[(0,G.jsx)(`summary`,{className:`cursor-pointer text-xs text-muted-foreground`,children:`full detail`}),t?(0,G.jsx)(`div`,{className:`pt-1`,children:(0,G.jsx)(Vn,{rows:e})}):null]})}function er({node:e,depth:t,durationMap:n}){let r=(0,W.useRef)(null),[i,a]=(0,W.useState)(t<=1);(0,W.useEffect)(()=>{r.current&&(r.current.open=t<=1)},[]);let o=bt(e.name),s=e.detail??``,c=qn(e),l=c?Qn(c):[],u=l.some(Boolean),d=c?.kind===`scan`?``:Ct(e.name,s),f=e.exchangeRole===`read`?e.children[0]:void 0,p=n?.get(f??e),m=(f??e).metrics??[],h=m.length>0?lt(m):``,g=(f??e).children??[],_=g.length>0||m.length>0||u;return(0,G.jsxs)(`details`,{ref:r,"data-op":o,className:`rounded-md`,onToggle:e=>a(e.currentTarget.open),children:[(0,G.jsxs)(`summary`,{className:`flex list-none flex-wrap items-center gap-2 rounded-md px-1.5 py-1 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&::-webkit-details-marker]:hidden ${_?`cursor-pointer hover:bg-muted`:`cursor-default`}`,children:[_?(0,G.jsx)(jt,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-muted-foreground transition-transform ${i?`rotate-90`:``}`}):(0,G.jsx)(`span`,{className:`size-3.5 shrink-0`}),(0,G.jsx)(`span`,{className:`font-medium`,children:e.name}),d?(0,G.jsx)(`span`,{title:s,className:`text-xs text-muted-foreground`,children:d}):null,c?.warning?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(oe,{type:`duplicatePlanSubtree`,impactBand:`warning`,className:ze}),(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:c.warning.detail}),(0,G.jsx)(_e,{children:(0,G.jsx)(kn,{confidence:`low`})})]}):null,p!=null&&p>0?(0,G.jsxs)(`span`,{title:`Approximate wall-time attributed to this operator`,className:`text-xs text-muted-foreground`,children:[`~`,B(p)]}):null,h?(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:h}):null]}),m.length>0?(0,G.jsx)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1 pt-1 pl-6 text-xs text-muted-foreground`,children:m.map((e,t)=>(0,G.jsxs)(`span`,{children:[e.name,`: `,Qe(e)]},t))}):null,u?(0,G.jsx)($n,{rows:l}):null,g.length>0?(0,G.jsx)(`div`,{className:`ml-[7px] space-y-1 border-l border-border/60 pt-1 pl-3.5`,children:g.map((e,r)=>(0,G.jsx)(er,{node:e,depth:t+1,durationMap:n},r))}):null]})}function tr(e){return`${e.path||`(unknown path)`} (${e.format})`}function nr(e){let t=e.leftKeys.length||e.rightKeys.length?` on ${e.leftKeys.join(`, `)||`(none)`} / ${e.rightKeys.join(`, `)||`(none)`}`:``;return`${e.joinType}${t}`}function rr(e){let t=e.aggregations.join(`, `)||`(none)`;return e.groupByKeys.length?`${t} by ${e.groupByKeys.join(`, `)}`:t}function ir(e){let t=new Map;for(let n of e)t.set(n.partitioning,(t.get(n.partitioning)??0)+1);return[...t.entries()].map(([e,t])=>`${e}×${t}`).join(`, `)}function ar({summary:e,hasPlanGraph:t}){let{scans:n,joins:r,aggs:i,exchanges:a,warnings:o}=e,s=a.length>=4,c=s||o.length>0,l=t?Kn:Gn;return(0,G.jsx)(Vn,{rows:[n.length>0&&[`Sources (${n.length})`,n.map(tr).join(`, `)],r.length>0&&[`Joins (${r.length})`,r.map(nr).join(`; `)],i.length>0&&[`Aggregations (${i.length})`,i.map(rr).join(`; `)],a.length>0&&[`Exchanges (${a.length})`,(0,G.jsxs)(G.Fragment,{children:[ir(a),s?(0,G.jsxs)(G.Fragment,{children:[` `,(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`— consider whether some joins/aggregations could share a partitioning scheme to avoid redundant shuffles.`}),` `,(0,G.jsx)(_e,{children:(0,G.jsx)(kn,{confidence:`low`})})]}):null]})],o.length>0&&[`Warnings (${o.length})`,(0,G.jsxs)(`span`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,G.jsx)(oe,{type:`duplicatePlanSubtree`,impactBand:`warning`,className:`bg-plan-aggregate/8 text-plan-aggregate`}),o.map(e=>e.detail).join(`; `),(0,G.jsx)(_e,{children:(0,G.jsx)(kn,{confidence:`low`})})]})]],children:c?(0,G.jsx)(_e,{children:(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:l})}):null})}function or({stageId:e,appModel:t}){let n=H(e=>e.openPlanGraph),r=Zn(e,t);if(!r)return null;let i=t.stages.get(e),a=Xn(r,t,i?.sqlExecutionId==null?null:t.sql.get(i.sqlExecutionId),i?.sqlExecutionId),o=Jn(r),s=Yn(r,e);return(0,G.jsxs)(Bt,{defaultValue:`tree`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,G.jsxs)(Ht,{"aria-label":`Plan view`,children:[(0,G.jsx)(Ut,{value:`tree`,children:`Tree`}),(0,G.jsx)(Ut,{value:`summary`,children:`Summary`})]}),(0,G.jsx)(`div`,{className:`flex gap-2`,children:s?(0,G.jsx)(U,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>n(e),children:`View plan graph`}):null})]}),(0,G.jsx)(Wt,{value:`tree`,children:(0,G.jsxs)(`div`,{className:`space-y-2 pt-3`,children:[(0,G.jsx)(er,{node:r,depth:0,durationMap:a}),(0,G.jsx)(_e,{children:(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Showing initial (pre-AQE) plan. Metrics reflect operators as planned; adaptive optimizations may have rewritten the actual execution.`})}),o&&o.warnings.length>0?(0,G.jsx)(_e,{children:(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:Wn})}):null]})}),(0,G.jsx)(Wt,{value:`summary`,children:(0,G.jsx)(`div`,{className:`pt-3`,children:o?(0,G.jsx)(ar,{summary:o,hasPlanGraph:s!=null}):(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Plan summary couldn’t be parsed.`})})})]})}var sr=`0.1.0`;function cr(e,t,n,r,i,a){return dr({schemaVersion:3,provenance:a,app:e.app,stages:[...e.stages.values()],jobs:[...e.jobs.values()],sql:[...e.sql.values()],executors:e.executors,runAggregates:e.runAggregates,evidenceAvailability:e.evidenceAvailability,catalog:t,configFindings:n,skippedLines:r,interpretation:i})}var lr=`__sparkforensicsMap`,ur=`__sparkforensicsSet`;function dr(e){return e instanceof Map?{[lr]:[...e].map(([e,t])=>[dr(e),dr(t)])}:e instanceof Set?{[ur]:[...e].map(dr)}:Array.isArray(e)?e.map(dr):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,dr(t)])):e}function fr(e){if(Array.isArray(e))return e.map(fr);if(e&&typeof e==`object`){let t=e;return Array.isArray(t[lr])?new Map(t[lr].map(([e,t])=>[fr(e),fr(t)])):Array.isArray(t[ur])?new Set(t[ur].map(fr)):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,fr(t)]))}return e}var pr=[/\bip(?:-\d{1,3}){4}(?:\.[a-z0-9][a-z0-9-]*)*/gi,/\b(?:\d{1,3}\.){3}\d{1,3}\b/g],mr=[/\bapplication_\d{10,}_\d+\b/g];function hr(e,t){if(typeof e==`string`){for(let{patterns:n,out:r}of t)for(let t of n){let n=e.match(t);if(n)for(let e of n)r.add(e)}return}if(Array.isArray(e)){for(let n of e)hr(n,t);return}if(e&&typeof e==`object`)for(let n of Object.values(e))hr(n,t)}function gr(e,t){if(Array.isArray(e)){for(let n of e)gr(n,t);return}if(e&&typeof e==`object`)for(let[n,r]of Object.entries(e))n===`host`&&typeof r==`string`&&r.length>0?t.add(r):gr(r,t)}function _r(e){if(Array.isArray(e))return e.map(e=>_r(e));if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=n===`failureGroups`&&Array.isArray(r)?r.map(e=>e&&typeof e==`object`?pt(e):e):_r(r);return t}return e}var vr=new Set([`stageFailureReason`,`exception`,`failureReason`]);function yr(e){if(Array.isArray(e))return e.map(e=>yr(e));if(e&&typeof e==`object`){let t=e.type===`stageFailed`,n={};for(let[r,i]of Object.entries(e))n[r]=(vr.has(r)||t&&r===`valueText`)&&typeof i==`string`?tt:yr(i);return n}return e}function br(e){return yr(_r(e))}function xr(e,t){if(e)for(let[n,r]of Object.entries(e)){let e=n.slice(n.lastIndexOf(`.`)+1).toLowerCase();(e===`host`||e===`hostname`)&&r&&t.add(r)}}function Sr(e){let t=new Set,n=new Set,r=e?.summary?.app?.id;return typeof r==`string`&&r.length>0&&t.add(r),gr(e?.findings,n),hr(e,[{patterns:pr,out:n},{patterns:mr,out:t}]),{appIds:t,hosts:n}}function Cr(e,t){let n=new Map;return[...e].sort((e,t)=>e.localeCompare(t,`en`,{numeric:!0})).forEach((e,r)=>n.set(e,`${t}-${r+1}`)),n}function wr(e,t){if(typeof e==`string`){let n=e;for(let[e,r]of t)n=n.split(e).join(r);return n}if(Array.isArray(e))return e.map(e=>wr(e,t));if(e&&typeof e==`object`){let n={};for(let[r,i]of Object.entries(e))n[r]=wr(i,t);return n}return e}function Tr(e,t){let n=[...t.appIds?Cr(t.appIds,`app`):[],...Cr(t.hosts,`host`)];return n.sort((e,t)=>t[0].length-e[0].length),wr(e,n)}function Er(e){return e.name==null?e:{...e,name:e.id??null}}function Dr(e){let t=br(e),{appIds:n,hosts:r}=Sr(t),i=Tr(t,{appIds:n,hosts:r}),a=i.summary?.app;return a?{...i,summary:{...i.summary,app:Er(a)}}:i}function Or(e){let t=br(e),n=new Set,r=new Set,i=t.app?.id;typeof i==`string`&&i.length>0&&n.add(i),gr(t.executors.added,r),gr(t.executors.removed,r),gr(t.catalog,r),gr(t.configFindings,r),xr(t.app?.config,r),hr(t,[{patterns:pr,out:r},{patterns:mr,out:n}]);let a=Tr(t,{appIds:n,hosts:r});if(!a.app)return a;let o=Er(a.app);return o.config?.[`spark.app.name`]==null?{...a,app:o}:{...a,app:{...o,config:{...o.config,"spark.app.name":o.id??``}}}}function kr(e,t,n){let r=fr(Or(dr({app:e.app,stages:[...e.stages.values()],jobs:[...e.jobs.values()],sql:[...e.sql.values()],executors:e.executors,runAggregates:e.runAggregates,evidenceAvailability:e.evidenceAvailability,catalog:t,configFindings:n}))),i=e=>new Map(e.map(e=>[e.id,e]));return{appModel:{app:r.app,stages:i(r.stages),jobs:i(r.jobs),sql:i(r.sql),executors:r.executors,runAggregates:r.runAggregates,evidenceAvailability:r.evidenceAvailability,skippedLines:e.skippedLines,unreadableSqlExecutions:e.unreadableSqlExecutions},catalog:r.catalog,configFindings:r.configFindings}}var Ar=String.raw`(?:\`(?:[^\`]|\`\`)*\`|[A-Za-z0-9_$]+)`,jr=RegExp(`^${Ar}(?:\\.${Ar})*$`),Mr=new RegExp(Ar,`g`),Nr=/\.\.\.(?:\s*\d+ more fields)?/;function Pr(e){let t=[],n=0,r=!1,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(o==="`")r=!r;else if(r)continue;else o===`(`||o===`[`||o===`{`?n++:o===`)`||o===`]`||o===`}`?n--:o===`,`&&n===0&&(t.push({text:e.slice(i,a).trim(),terminated:!0}),i=a+1)}return t.push({text:e.slice(i).trim(),terminated:!1}),t}function q(e){return e===``||Nr.test(e)}function Fr(e){return jr.test(e)?(e.match(Mr)??[]).map(e=>{if(!e.startsWith("`"))return e;let t=e.slice(1,-1).replace(/``/g,"`");return/[.`]/.test(t)?e:t}).join(`.`):null}var Ir=/((?:[A-Za-z][A-Za-z0-9+.-]*:\/{1,3}|\/)[^\s,[\]()#]+?)\/_delta_log(?=[/[\],\s)]|$)/g;function Lr(e){let t=new Set,n=!1;for(let r of e){if(!r.planTree){n=!0;continue}dt(r.planTree,e=>{for(let r of[e.name,e.detail??``]){let e=r.split(`/_delta_log`).length-1;if(e===0)continue;let i=[...r.matchAll(Ir)];i.length<e&&(n=!0);for(let e of i)q(e[1])?n=!0:t.add(e[1].replace(/\/+$/,``))}},{dedupe:!0})}return{paths:t,unreliable:n}}function Rr(e){let{paths:t,unreliable:n}=Lr(e),[r]=t;return!n&&t.size===1?{kind:`path`,target:r}:null}var zr=`DeltaMerge`,Br=/^(?:Delta: )?MERGE operation\b/,Vr=/\b(?:re)?writing\b/i;function Hr(e){let t=t=>t!==void 0&&/^Execute\s+MergeIntoCommand\b/.test(e.get(t)?.planTree?.name??``);return[...e.values()].filter(e=>Br.test(e.description??``)&&!t(e.rootExecutionId)).sort((e,t)=>e.id-t.id)}function Ur(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.members[e.members.length-1].id+1===n.id?e.members.push(n):t.push({members:[n],unclean:null})}let n=t.map(({members:e})=>{let t=e.map(e=>e.startTime);return t.every(e=>typeof e==`number`)?[Math.min(...t),Math.max(...t)]:null});return t.forEach((e,t)=>{let r=n[t];if(r===null){e.unclean=`start time missing`;return}n.some((e,n)=>n!==t&&e!==null&&e[0]<=r[1]&&r[0]<=e[1])?e.unclean=`overlaps another merge in time`:e.members.some(e=>Vr.test(e.description??``))||(e.unclean=`no write phase`)}),t}function Wr(e){return Ur(Hr(e)).map(e=>{let t=e.members[0].id,n=e.members[e.members.length-1].id,r=e.unclean===null?Rr(e.members):null,i=t===n?`${t}`:`${t}-${n}`;return{sqlExecutionId:t,nodeId:null,command:zr,recognized:!0,kind:r?.kind??null,target:r?.target??null,outputRows:null,raw:`Delta MERGE operation, executions ${i}${e.unclean?` (${e.unclean})`:``}`}})}var Gr=[`MergeIntoCommand`,`UpdateCommand`,`DeleteCommand`,`WriteIntoDelta`,`WriteIntoDeltaCommand`,`SaveIntoDataSourceCommand`];function Kr(e){return Gr.includes(e)}function qr(e){let t=new Map;for(let n of e.values()){if(n.rootExecutionId===void 0||n.rootExecutionId===n.id)continue;let e=t.get(n.rootExecutionId);e?e.push(n):t.set(n.rootExecutionId,[n])}return t}function Jr(e,t){let n=e.commandArguments,r=`${t}\nArguments: `;return n!==void 0&&n.startsWith(r)?n.slice(r.length):null}var Yr=/^`[^`]+`(?:\.`[^`]+`){1,2}$/;function Xr(e){let t=Pr(e).filter(e=>Yr.test(e.text));if(t.length!==1||!t[0].terminated)return null;let n=Fr(t[0].text);if(!n||q(n))return null;let r=n.split(`.`);return{kind:`table`,target:r.length===3&&r[0]===`spark_catalog`?r.slice(1).join(`.`):n}}function Zr(e){let t=Pr(e)[1];if(!t?.terminated||!/^\[[\s\S]*\]$/.test(t.text))return null;let n=t.text.slice(1,-1),r=[...n.matchAll(/(?:^|, )([A-Za-z0-9_.-]+)=/g)],i=r.flatMap((e,t)=>e[1].toLowerCase()===`path`?[n.slice(e.index+e[0].length,t+1<r.length?r[t+1].index:n.length)]:[]);return i.length!==1||q(i[0])||/\*{5,}\(redacted\)/.test(i[0])?null:{kind:`path`,target:i[0]}}var Qr={fromArguments:Xr,scansTarget:!1},$r={...Qr,scansTarget:!0},ei={MergeIntoCommand:$r,UpdateCommand:$r,DeleteCommand:$r,WriteIntoDelta:Qr,WriteIntoDeltaCommand:Qr,SaveIntoDataSourceCommand:{fromArguments:e=>e.includes(`DeltaDataSource`)?Zr(e):null,scansTarget:!1}};function ti(e,t,n,r){if(!Kr(e)||n!==t.planTree)return null;let i=ei[e],a=Jr(t,e),o=a===null?null:i.fromArguments(a);return o||!i.scansTarget?o:t.rootExecutionId===t.id?Rr(r.get(t.id)??[]):null}var ni=/^\w+ DeltaTableV2\([^,\s]*,([^,\n]*),(?:Some\(CatalogTable\(\n(?:Catalog: (\S+)\n)?Database: (\S+)\nTable: (\S+)\n|None,)/,ri=/^[A-Za-z0-9_$]+$/;function ii(e){let t=ni.exec(e);if(!t)return null;let[,n,r,i,a]=t;if(a===void 0)return n&&!q(n)?{kind:`path`,target:n}:null;if(![i,a,r??`spark_catalog`].every(e=>ri.test(e)))return null;let o=`${i}.${a}`;return{kind:`table`,target:r===void 0||r===`spark_catalog`?o:`${r}.${o}`}}function ai(e){return(e.command===`AppendDataExecV1`||e.command===`OverwriteByExpressionExecV1`)&&/^\w+ \S*DeltaCatalog\$StagedDeltaTableV2@/.test(e.raw)}var oi=new Set([`Write`,`Insert`,`Save`,`Overwrite`,`Append`,`Merge`,`Update`,`Delete`,`Truncate`,`Replace`,`Drop`,`Load`,`Vacuum`,`Convert`,`Clone`,`Restore`,`Optimize`,`Alter`,`Reorg`,`Rename`,`Call`]),si=[`TableAsSelect`,`AddPartition`,`DropPartition`,`RenamePartition`,`RecoverPartitions`],ci=new Set([`WriteFiles`,`AppendColumns`,`AppendColumnsWithObject`,`MergeRows`,`StateStoreSave`,`StateStoreRestore`,`SessionWindowStateStoreSave`,`SessionWindowStateStoreRestore`,`UpdateEventTimeWatermarkColumn`]);function li(e){return e.replace(/^Execute\s+/,``).trim().replace(/Exec$/,``)}function ui(e){if(Ti(e))return!0;let t=e.split(/\s/,1)[0];return ci.has(t)||t.includes(`Join`)?!1:si.some(e=>t.includes(e))?!0:(t.match(/[A-Z][a-z0-9]*/g)??[]).some(e=>oi.has(e))}function di(e,t){let n=/^(?:Execute\s+)?(\S+)\s*([\s\S]*)$/.exec(e.trim());return!n||li(n[1])!==t?``:n[2]}function fi(e){let[t,n,r]=e,i=n&&/^(Map\(.*\)|\[.*\])$/s.test(n.text)&&n.terminated?r:n;return!t?.terminated||q(t.text)||!i||!/^(true|false)$/.test(i.text)?null:{kind:`path`,target:t.text}}function pi(e){let t=e[0];if(!t)return null;let n=/^\[Database: ([^,\]]+), TableName: ([^,\]]+)[,\]]/.exec(t.text);if(n&&/\]$/.test(t.text)){let e=Fr(`${n[1].trim()}.${n[2].trim()}`);return e&&!q(e)?{kind:`table`,target:e}:null}if(!t.terminated||q(t.text))return null;let r=Fr(t.text);return r?{kind:`table`,target:r}:null}function mi(e){let t=/^Map\(([\s\S]*)\)$/.exec(e);if(!t)return null;let n=t[1],r=[...n.matchAll(/(?:^|, )([A-Za-z0-9_.\-]+) -> /g)],i=new Map;return r.forEach((e,t)=>{let a=e.index+e[0].length,o=t+1<r.length?r[t+1].index:n.length;i.set(e[1].toLowerCase(),n.slice(a,o))}),i}function hi(e){let[,t,n]=e;if(!t?.terminated||!n||n.text===``)return null;let r=mi(t.text);if(!r)return null;let i=r.get(`path`),a=r.get(`dbtable`)??r.get(`table`);if(i===void 0==(a===void 0))return null;let o=i??a;return q(o)||/\*{5,}\(redacted\)/.test(o)?null:i===void 0?{kind:`jdbcTable`,target:o}:{kind:`path`,target:o}}function gi(e,t,n){let r=new Set;for(let i of e.matchAll(t))r.add(i[2]===void 0||q(i[1])?null:n(i[1]));let[i]=r;return r.size===1?i:null}function _i(e){return e?{kind:(e.match(Mr)?.length??0)>=3?`table`:`unqualifiedTable`,target:e}:null}function vi(e){return _i(gi(e,/\b\w*Write\(table=([^,()\s]*)([,)])?/g,Fr))}function yi(e){let[t,n]=e;return!t?.terminated||!/^[\w.$]+@[0-9a-f]+$/.test(t.text)||!n?.terminated||q(n.text)?null:_i(Fr(n.text))}function bi(e){let[t]=e,n=t?.terminated?/^delta\.`([^`]*)`$/.exec(t.text):null;return n&&!q(n[1])?{kind:`path`,target:n[1]}:null}var xi=new Set([`AppendData`,`OverwriteByExpression`,`OverwritePartitionsDynamic`,`ReplaceData`,`WriteDelta`,`WriteToDataSourceV2`,`AppendDataExecV1`,`OverwriteByExpressionExecV1`]),Si=new Set([`CreateTableAsSelect`,`AtomicCreateTableAsSelect`,`ReplaceTableAsSelect`,`AtomicReplaceTableAsSelect`]),Ci=new Set([`WriteIntoDelta`,`WriteIntoDeltaCommand`,`MergeIntoCommand`,`UpdateCommand`,`DeleteCommand`,`CreateDeltaTableCommand`,`OptimizeTableCommand`,`RestoreTableCommand`,`DeltaReorgTableCommand`]),wi={InsertIntoHadoopFsRelationCommand:fi,InsertIntoHiveTable:pi,CreateHiveTableAsSelectCommand:pi,OptimizedCreateHiveTableAsSelectCommand:pi,CreateDataSourceTableAsSelectCommand:pi,SaveIntoDataSourceCommand:hi};function Ti(e){return e in wi||xi.has(e)||Si.has(e)||Ci.has(e)}function Ei(e,t){let n=wi[e];return n?[!0,n(Pr(di(t,e)))]:xi.has(e)?[!0,ii(t)??vi(t)]:Si.has(e)?[!0,yi(Pr(di(t,e)))]:e===`MergeIntoCommand`?[!0,null]:Ci.has(e)?[!0,bi(Pr(di(t,e)))]:[!1,null]}function Di(e){let t=e.metrics?.find(e=>e.name===`number of output rows`);return t!==void 0&&Number.isFinite(t.value)?t.value:null}function Oi(e,t,n,r){dt(t,t=>{let i=li(t.name);if(!ui(i))return;let a=t.detail??``,[o,s]=Ei(i,a),c=s??ti(i,e,t,n);r.push({sqlExecutionId:e.id,nodeId:t.id??null,command:i,recognized:o,kind:c?.kind??null,target:c?.target??null,outputRows:Di(t),raw:a===``?t.name:a})},{dedupe:!0})}function ki(e,t){for(let n of e){if(n.target!==null||!ai(n))continue;let r=t.get(n.sqlExecutionId)?.rootExecutionId;if(r===void 0||r===n.sqlExecutionId)continue;let i=e.filter(e=>e.sqlExecutionId===r&&Si.has(e.command));i.length===1&&i[0].target!==null&&(n.kind=i[0].kind,n.target=i[0].target)}}function Ai(e,t={}){let n=[],r=new Map;for(let n of t.unreadableSqlExecutions??[])e.get(n)?.planTree||r.set(n,`unreadableStart`);let i=qr(e);for(let t of[...e.keys()].sort((e,t)=>e-t)){let a=e.get(t);a.planTree?Oi(a,a.planTree,i,n):r.set(t,r.get(t)??`noPlan`)}return ki(n,e),n.push(...Wr(e)),n.sort((e,t)=>e.sqlExecutionId-t.sqlExecutionId),{writes:n,executionsWithoutPlan:[...r].sort((e,t)=>e[0]-t[0]).map(([e,t])=>({sqlExecutionId:e,reason:t})),skippedLines:t.skippedLines??null}}var ji={skew:[],stageShape:[`rule`],shuffle:[],partitionSizing:[`rule`],spill:[`spillMagnitude`],gc:[`direction`],slowHost:[`variant`,`host`,`hostTaskShare`,`hostMeanMs`,`dimension`,`executorId`,`execMaxValue`],stageSlowness:[],stageFailed:[`variant`,`numTasks`,`memoryBytesSpilled`,`failedTaskDetails`],failures:[`failedTasks`,`dominantReason`,`dominantError`,`failureGroups`,`otherFailedTasks`],straggler:[`unit`,`speculativeTasks`,`stragglerCount`],speculationWaste:[],retryWaste:[`numTasks`,`memoryBytesSpilled`,`retriedTaskDetails`],tinyTask:[],incompleteRun:[],coldStart:[],utilization:[`cpuUtilizationPct`],memoryUtilization:[`variant`,`rule`,`executorId`,`heap`,`dataUnavailable`],cacheUtilization:[`variant`,`rddId`,`rddName`,`memorySize`,`diskSize`,`numCachedPartitions`,`numPartitions`,`dataUnavailable`],coreLocality:[`nonLocalTaskCount`],autoscalingChurn:[`shortLivedExecutorCount`],cachingOpportunity:[`variant`,`relation`,`format`,`relations`,`operator`,`executionIds`,`totalReadBytes`],jobFailureRate:[`failedJobs`,`totalJobs`,`failedTasks`,`totalTasks`,`avgJobDurationMs`,`taskFailureRate`],configAudit:[`property`],duplicatePlanSubtree:[`executionId`,`stageIds`,`stageShares`,`occurrencesIdentical`,`rootName`,`subtreeSize`,`sampleRelation`,`groupIndex`],smallFiles:[`executionId`,`stageIds`,`fileCount`,`direction`,`nodeName`],underBroadcast:[`executionId`,`stageIds`,`largerSideBytes`],overBroadcast:[`executionId`,`stageIds`]};function Mi(e){let t=e,n={};for(let r of[...ji[e.type]].sort())t[r]!==void 0&&(n[r]=t[r]);return n}function Ni(e){let t={id:e.id??null,type:e.type,name:$e(Ze(e.type)),tag:fe(e.type),impactBand:e.impactBand,stageId:e.stageId??null,metric:e.metric??null,value:e.value??null,...e.valueText==null?{}:{valueText:e.valueText},recommendation:e.recommendation??null,detectorVersion:e.detectorVersion??1,evidence:Mi(e),remediation:e.remediation??[],actionLabel:yt(e)};e.confidence!=null&&(t.confidence=e.confidence),e.validationRequired!=null&&(t.validationRequired=e.validationRequired),e.docAnchor!=null&&(t.docAnchor=e.docAnchor),e.impactEstimate!=null&&(t.impactEstimate=e.impactEstimate);let n=ut(e.impactEstimate);return n&&(t.impact=n.text,t.impactMeaning=n.meaning),e.tunedThresholds!=null&&(t.tunedThresholds=e.tunedThresholds),t}function Pi(e){return[...e].sort((e,t)=>{let n=(R[e.impactBand]??9)-(R[t.impactBand]??9);if(n!==0)return n;if(e.type!==t.type)return e.type<t.type?-1:1;let r=e.stageId??-1,i=t.stageId??-1;return r===i?(e.id??``)<(t.id??``)?-1:+((e.id??``)>(t.id??``)):r-i})}function Fi(e,t){let n=e.filter(I);return ee(n,t).map(e=>{let t=P(e.findings),n=t[0],r=t.map(e=>e.id).filter(e=>e!=null),i={type:e.type,tag:fe(e.type),actionLabel:yt(n),findingCount:e.findingCount,findingIds:r};if(e.kind===`time`)return{...i,kind:`time`,stageCount:e.stageCount,recoverableMsHigh:e.recoverableMsHigh,impact:he(e.recoverableMsHigh,e.recoverableMsHigh),impactMeaning:`of run time`};if(e.kind===`resource`){let t=F(e);return{...i,kind:`resource`,unit:e.unit,total:e.total,impact:t,impactMeaning:t?rt(n.impactEstimate?.rawWaste):null}}return{...i,kind:`count`,byImpactBand:e.byImpactBand,impact:null,impactMeaning:null}})}function Ii(e,t,n){let r=new Set(e.filter(te).map(e=>e.type)),i=Ve(t,e),a=[],o=[];for(let[e,{thresholdSummary:t}]of Object.entries(wt())){if(r.has(e))continue;let s=Ce(e,n),c=s?{type:e,tag:fe(e),thresholdSummary:Dt(e,n),tunedThresholds:s}:{type:e,tag:fe(e),thresholdSummary:t},l=i.notRunReason(e);l?o.push({...c,reason:l}):a.push(c)}return{cleanChecks:a,notRunChecks:o}}function Li(e){let t={critical:0,warning:0,info:0};for(let n of e)n.impactBand in t&&(t[n.impactBand]+=1);return t}function Ri(e){return{title:e.title,summary:e.summary,steps:e.shown.map(t=>{let n=vt(t,e.outcome);return{key:t.key,stageId:t.stageId,type:t.lead.type,tag:fe(t.lead.type),leadFindingId:t.lead.id??null,actionLabel:yt(t.lead),recommendation:n,impact:at(t.lead),impactMeaning:Ke(t.lead),relatedTypes:t.related.map(e=>e.type),text:st(t.lead,n,t.stageId)}}),remainingPlaces:e.remaining,copyText:e.copyText}}var zi={},Bi=new WeakMap,Vi=new WeakMap;function Hi(e,t){let n=t??zi,r=e.get(n);return r||(r=new WeakMap,e.set(n,r)),r}var Ui=new WeakMap;function Wi(e,t){let n=Hi(Ui,t),r=n.get(e);if(r)return r;let{app:i,stages:a,executors:o,sql:s,jobs:c,runAggregates:l}=e,u={catalog:_t(i,a,o?.added??[],o?.removed??[],c??new Map,s??new Map,l??null,{thresholds:t}),config:je(i)};return n.set(e,u),u}function Gi(e,t){let n=Hi(Vi,t),r=n.get(e);if(r)return r;let{catalog:i,config:a}=Wi(e,t),o=kr(e,i,a),s=Dr(Ki(o.appModel,t,{catalog:o.catalog,config:o.configFindings}));return n.set(e,s),s}function Ki(e,t,n){let r=Hi(Bi,t),i=r.get(e);if(i)return i;let{app:a,stages:o,executors:s,sql:c,jobs:l,evidenceAvailability:u}=e,{catalog:d,config:f}=n??Wi(e,t),p=[...d,...f],m=Pi(p.map(Ni)),h=Fi(p,o??new Map),{cleanChecks:g,notRunChecks:_}=Ii(p,o??new Map,t),v=Ge(t),y=p.filter(I),b={...e,stages:o??new Map,jobs:l??new Map,executors:s??{added:[],removed:[]}},x=ft(b,p),S=x.outcome,C={schemaVersion:5,summary:{app:{id:a?.id??null,name:a?.name??null,sparkVersion:a?.sparkVersion??null},stageCount:o?.size??0,jobCount:l?.size??0,sqlExecutionCount:c?.size??0,findingCount:m.length,impactBandCounts:Li(m),actionableFindingCount:y.length,actionableImpactBandCounts:Li(y),clean:ke({jobs:l??new Map,stages:o??new Map},p),outcome:{failedJobs:S.failedJobs,totalJobs:S.totalJobs,failureReason:S.reason,failureReasonStageId:S.reason==null?null:S.reasonStageId},runShape:nt(b),...v?{tunedThresholds:v}:{}},verdict:Ri(x),evidenceAvailability:u??null,detectors:Ue(t),findings:m,writeTargets:Ai(c??new Map,{skippedLines:e.skippedLines,unreadableSqlExecutions:e.unreadableSqlExecutions}),recommendations:h,cleanChecks:g,notRunChecks:_};return r.set(e,C),C}function qi(e,t){return typeof t==`number`&&/bytes$/i.test(e)?ne(t):typeof t==`object`&&t?JSON.stringify(t):String(t)}function Ji(e){let t=[` - failureGroups: ${e.length}`];for(let n of e)if(t.push(` - ${n.count} task(s): ${St(n)}`),n.stackExcerpt){t.push(``);for(let e of n.stackExcerpt.split(`
|
|
10
|
-
`))t.push(` ${e}`);t.push(``)}return t}function Yi(e){let t=ut(e);return t?`${t.text}${t.meaning?` ${t.meaning}`:``} (estimateMethod: ${e.estimateMethod})`:null}function Xi(e,t){let{failedJobs:n,totalJobs:r,failureReason:i,failureReasonStageId:a}=e;if(r===0)return null;if(n>0){let e=n<r?`${n} of ${r} jobs failed.`:r===1?`The run's one job failed.`:`All ${r} jobs failed.`;return i?`${e} Spark's recorded reason${a==null?``:` (stage ${a})`}: ${i}`:e}let o=r===1?`Its one job succeeded.`:`All ${r} jobs succeeded.`;return t?`${o} The log has no end-of-run record, so jobs still running when it stops are not counted.`:o}function Zi(e){let t=[];if(e.wallClockMs!=null&&t.push(`- Wall-clock: ${B(e.wallClockMs)}`),e.efficiencyPct!=null&&t.push(`- Efficiency: ${e.efficiencyPct}% (share of the run with a stage running)`),e.unusedCoreTimePct!=null&&t.push(`- Unused core time: ${e.unusedCoreTimePct}% (driver idle plus executor slack, as a share of available core time)`),e.peakBusyCores!=null&&t.push(`- Peak busy cores: ${z(e.peakBusyCores)}`),e.etlPhasesMs){let{extract:n,transform:r,load:i}=e.etlPhasesMs;t.push(`- ETL phases (summed stage time): extract ${B(n)}, transform ${B(r)}, load ${B(i)}`)}return t}function Qi(e){let t=[`## Verdict`,``,e.title];if(e.summary.length>0&&t.push(``,e.summary.join(` `)),e.steps.length>0&&(t.push(``),e.steps.forEach((e,n)=>{if(t.push(`${n+1}. [${e.tag}] ${e.text}`),e.relatedTypes.length>0){let n=e.relatedTypes.map(Ze).join(`, `);t.push(` - Also flagged here, likely the same cause: ${n}.`)}}),e.remainingPlaces>0)){let n=`${e.remainingPlaces} more place${e.remainingPlaces===1?``:`s`}`;t.push(``,`${n} to look at in the Findings section below.`)}return t.push(``),t}function $i(e,t){let{summary:n,verdict:r,findings:i,evidenceAvailability:a,detectors:o,recommendations:s,cleanChecks:c,notRunChecks:l}=e,u=[];u.push(`# Spark run evidence report`),u.push(``),u.push(`- Application: ${n.app.name??`(unknown)`} (${n.app.id??`n/a`})`),u.push(`- Spark version: ${n.app.sparkVersion??`n/a`}`),n.tunedThresholds&&u.push(`- Tuned thresholds: ${Le(n.tunedThresholds)}`),u.push(`- Stages: ${n.stageCount} · Jobs: ${n.jobCount} · SQL executions: ${n.sqlExecutionCount}`),u.push(`- Findings: ${n.findingCount} (critical ${n.impactBandCounts.critical}, warning ${n.impactBandCounts.warning}, info ${n.impactBandCounts.info})`);let d=n.actionableImpactBandCounts;u.push(`- Findings to act on: ${n.actionableFindingCount} (critical ${d.critical}, warning ${d.warning}, info ${d.info})`);let f=Xi(n.outcome,t);f&&u.push(`- Outcome: ${f}`),n.clean&&u.push(`- Clean run: no findings, no failed jobs, and every check could run.`),u.push(...Zi(n.runShape)),u.push(``),u.push(...Qi(r)),s.length>0&&(u.push(`## Fix these first (${s.length})`),u.push(``),s.forEach((e,t)=>{u.push(`${t+1}. [${e.tag}] ${e.actionLabel}`);let n=e.kind===`count`?Object.entries(e.byImpactBand??{}).map(([e,t])=>`${t} ${e}`).join(`, `):e.impact&&`${e.impact}${e.impactMeaning?` ${e.impactMeaning}`:``}`;u.push(` - ${n?`${n} · `:``}×${e.findingCount} finding(s)`)}),u.push(``)),u.push(`## Findings (${i.length})`),u.push(``);for(let e of i){let t=e.stageId==null?``:` (stage ${e.stageId})`;u.push(`### ${e.name} · ${e.impactBand}${t}`),u.push(`- action: ${e.actionLabel}`),e.metric!=null&&u.push(`- ${e.metric}: ${e.valueText??e.value}`),e.recommendation&&u.push(`- ${e.recommendation}`),e.confidence&&u.push(`- confidence: ${e.confidence}`),e.validationRequired&&u.push(`- validation: ${e.validationRequired}`),e.tunedThresholds&&u.push(`- tuned thresholds: ${We(e.tunedThresholds)}`);let n=e.impactEstimate?Yi(e.impactEstimate):null;n&&u.push(`- impact: ${n}`);let r=e.impactEstimate?gt(e):null;r&&u.push(`- estimate: ${r}`),u.push(`- detector version: ${e.detectorVersion}`);let i=Object.entries(e.evidence??{}).sort(([e],[t])=>e<t?-1:+(e>t));if(i.length){u.push(`- evidence:`);for(let[e,t]of i)e===`failureGroups`&&Array.isArray(t)?u.push(...Ji(t)):u.push(` - ${e}: ${qi(e,t)}`)}u.push(``)}if(a?.entries?.length){u.push(`## Evidence availability`),u.push(``);for(let e of a.entries)u.push(`- ${e.key}: ${e.state} (${e.summary})`);u.push(``)}if(Array.isArray(o)&&o.length){u.push(`## Detectors`),u.push(``);for(let e of o){let t=e.tunedThresholds?` (tuned: ${We(e.tunedThresholds)})`:``;u.push(`- ${e.type} (v${e.version}, ${e.scope}), thresholds: ${JSON.stringify(e.thresholds)}${t}`)}u.push(``)}if(l.length>0){u.push(`## Not checked on this log (${l.length})`),u.push(``),u.push(`The log lacked the data these checks need, so they neither passed nor failed.`),u.push(``);for(let e of l)u.push(`- [${e.tag}] ${e.type}: ${e.reason}`);u.push(``)}if(c.length>0){u.push(`## Clean checks (${c.length})`),u.push(``);for(let e of c){let t=e.tunedThresholds?` (tuned: ${We(e.tunedThresholds)})`:``;u.push(`- [${e.tag}] ${e.type}: ${e.thresholdSummary}${t}`)}u.push(``)}return u.join(`
|
|
11
|
-
`)}function ea(e,t){let n=`stageIds`in e.evidence?e.evidence.stageIds:null;return Je({...e,stageId:mt({stageId:e.stageId,stageIds:n})},t)}function ta(e,{redact:t=!1,markdown:n=!0,findingsFilter:r,thresholds:i}={}){let a=t?Gi(e,i):Ki(e,i),o=a.findings.some(e=>e.type===`incompleteRun`);return r&&(a={...a,findings:a.findings.filter(e=>ea(e,r))}),{markdown:n?$i(a,o):``,json:a}}var J=Uint8Array,Y=Uint16Array,na=Int32Array,ra=new J([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),ia=new J([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),aa=new J([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),oa=function(e,t){for(var n=new Y(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new na(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},sa=oa(ra,2),ca=sa.b,la=sa.r;ca[28]=258,la[258]=28;var ua=oa(ia,0);ua.b;for(var da=ua.r,fa=new Y(32768),X=0;X<32768;++X){var Z=(X&43690)>>1|(X&21845)<<1;Z=(Z&52428)>>2|(Z&13107)<<2,Z=(Z&61680)>>4|(Z&3855)<<4,fa[X]=((Z&65280)>>8|(Z&255)<<8)>>1}for(var pa=(function(e,t,n){for(var r=e.length,i=0,a=new Y(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new Y(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(n){s=new Y(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var l=i<<4|e[i],u=t-e[i],d=o[e[i]-1]++<<u,f=d|(1<<u)-1;d<=f;++d)s[fa[d]>>c]=l}else for(s=new Y(r),i=0;i<r;++i)e[i]&&(s[i]=fa[o[e[i]-1]++]>>15-e[i]);return s}),ma=new J(288),X=0;X<144;++X)ma[X]=8;for(var X=144;X<256;++X)ma[X]=9;for(var X=256;X<280;++X)ma[X]=7;for(var X=280;X<288;++X)ma[X]=8;for(var ha=new J(32),X=0;X<32;++X)ha[X]=5;var ga=pa(ma,9,0),_a=pa(ha,5,0),va=function(e){return(e+7)/8|0},ya=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new J(e.subarray(t,n))},Q=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},ba=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},xa=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,a=n.slice();if(!i)return{t:Oa,l:0};if(i==1){var o=new J(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var s=n[0],c=n[1],l=0,u=1,d=2;for(n[0]={s:-1,f:s.f+c.f,l:s,r:c};u!=i-1;)s=n[n[l].f<n[d].f?l++:d++],c=n[l!=u&&n[l].f<n[d].f?l++:d++],n[u++]={s:-1,f:s.f+c.f,l:s,r:c};for(var f=a[0].s,r=1;r<i;++r)a[r].s>f&&(f=a[r].s);var p=new Y(f+1),m=Sa(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<<g;for(a.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});r<i;++r){var v=a[r].s;if(p[v]>t)h+=_-(1<<m-p[v]),p[v]=t;else break}for(h>>=g;h>0;){var y=a[r].s;p[y]<t?h-=1<<t-p[y]++-1:++r}for(;r>=0&&h;--r){var b=a[r].s;p[b]==t&&(--p[b],++h)}m=t}return{t:new J(p),l:m}},Sa=function(e,t,n){return e.s==-1?Math.max(Sa(e.l,t,n+1),Sa(e.r,t,n+1)):t[e.s]=n},Ca=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new Y(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},wa=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},Ta=function(e,t,n){var r=n.length,i=va(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a<r;++a)e[i+a+4]=n[a];return(i+4+r)*8},Ea=function(e,t,n,r,i,a,o,s,c,l,u){Q(t,u++,n),++i[256];for(var d=xa(i,15),f=d.t,p=d.l,m=xa(a,15),h=m.t,g=m.l,_=Ca(f),v=_.c,y=_.n,b=Ca(h),x=b.c,S=b.n,C=new Y(19),w=0;w<v.length;++w)++C[v[w]&31];for(var w=0;w<x.length;++w)++C[x[w]&31];for(var T=xa(C,7),E=T.t,D=T.l,O=19;O>4&&!E[aa[O-1]];--O);var k=l+5<<3,A=wa(i,ma)+wa(a,ha)+o,j=wa(i,f)+wa(a,h)+o+14+3*O+wa(C,E)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&k<=A&&k<=j)return Ta(t,u,e.subarray(c,c+l));var M,N,P,F;if(Q(t,u,1+(j<A)),u+=2,j<A){M=pa(f,p,0),N=f,P=pa(h,g,0),F=h;var ee=pa(E,D,0);Q(t,u,y-257),Q(t,u+5,S-1),Q(t,u+10,O-4),u+=14;for(var w=0;w<O;++w)Q(t,u+3*w,E[aa[w]]);u+=3*O;for(var I=[v,x],te=0;te<2;++te)for(var L=I[te],w=0;w<L.length;++w){var R=L[w]&31;Q(t,u,ee[R]),u+=E[R],R>15&&(Q(t,u,L[w]>>5&127),u+=L[w]>>12)}}else M=ga,N=ma,P=_a,F=ha;for(var w=0;w<s;++w){var z=r[w];if(z>255){var R=z>>18&31;ba(t,u,M[R+257]),u+=N[R+257],R>7&&(Q(t,u,z>>23&31),u+=ra[R]);var ne=z&31;ba(t,u,P[ne]),u+=F[ne],ne>3&&(ba(t,u,z>>5&8191),u+=ia[ne])}else ba(t,u,M[z]),u+=N[z]}return ba(t,u,M[256]),u+N[256]},Da=new na([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Oa=new J(0),ka=function(e,t,n,r,i,a){var o=a.z||e.length,s=new J(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=Da[t-1],f=d>>13,p=d&8191,m=(1<<n)-1,h=a.p||new Y(32768),g=a.h||new Y(m+1),_=Math.ceil(n/3),v=2*_,y=function(t){return(e[t]^e[t+1]<<_^e[t+2]<<v)&m},b=new na(25e3),x=new Y(288),S=new Y(32),C=0,w=0,T=a.i||0,E=0,D=a.w||0,O=0;T+2<o;++T){var k=y(T),A=T&32767,j=g[k];if(h[A]=j,g[k]=A,D<=T){var M=o-T;if((C>7e3||E>24576)&&(M>423||!l)){u=Ea(e,c,0,b,x,S,w,E,O,T-O,u),E=C=w=0,O=T;for(var N=0;N<286;++N)x[N]=0;for(var N=0;N<30;++N)S[N]=0}var P=2,F=0,ee=p,I=A-j&32767;if(M>2&&k==y(T-I))for(var te=Math.min(f,M)-1,L=Math.min(32767,T),R=Math.min(258,M);I<=L&&--ee&&A!=j;){if(e[T+P]==e[T+P-I]){for(var z=0;z<R&&e[T+z]==e[T+z-I];++z);if(z>P){if(P=z,F=I,z>te)break;for(var ne=Math.min(I,z-2),B=0,N=0;N<ne;++N){var V=T-I+N&32767,re=V-h[V]&32767;re>B&&(B=re,j=V)}}}A=j,j=h[A],I+=A-j&32767}if(F){b[E++]=268435456|la[P]<<18|da[F];var ie=la[P]&31,ae=da[F]&31;w+=ra[ie]+ia[ae],++x[257+ie],++S[ae],D=T+P,++C}else b[E++]=e[T],++x[e[T]]}}for(T=Math.max(T,D);T<o;++T)b[E++]=e[T],++x[e[T]];u=Ea(e,c,l,b,x,S,w,E,O,T-O,u),l||(a.r=u&7|c[u/8|0]<<3,u-=7,a.h=g,a.p=h,a.i=T,a.w=D)}else{for(var T=a.w||0;T<o+l;T+=65535){var oe=T+65535;oe>=o&&(c[u/8|0]=l,oe=o),u=Ta(c,u+1,e.subarray(T,oe))}a.i=o}return ya(s,0,r+va(u)+i)},Aa=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),ja=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=Aa[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},Ma=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new J(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return ka(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},Na=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},Pa=function(e,t){var n=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:t.level==9?2:0,e[9]=3,t.mtime!=0&&Na(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),n){e[3]=8;for(var r=0;r<=n.length;++r)e[r+10]=n.charCodeAt(r)}},Fa=function(e){return 10+(e.filename?e.filename.length+1:0)};function Ia(e,t){t||={};var n=ja(),r=e.length;n.p(e);var i=Ma(e,t,Fa(t),8),a=i.length;return Pa(i,t),Na(i,a-8,n.d()),Na(i,a-4,r),i}var La=typeof TextEncoder<`u`&&new TextEncoder,Ra=typeof TextDecoder<`u`&&new TextDecoder;try{Ra.decode(Oa,{stream:!0})}catch{}function za(e,t){if(t){for(var n=new J(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(La)return La.encode(e);for(var i=e.length,a=new J(e.length+(e.length>>1)),o=0,s=function(e){a[o++]=e},r=0;r<i;++r){if(o+5>a.length){var c=new J(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return ya(a,0,o)}function Ba(e,t,n,{redact:r,buildId:i,producer:a}){let o={appModel:e,catalog:t,configFindings:je(e.app)},s=r?kr(o.appModel,o.catalog,o.configFindings):o,c=xt(s.appModel,s.catalog,s.configFindings),l={coreVersion:sr,buildId:i,producer:a};return cr(s.appModel,s.catalog,s.configFindings,n,c,l)}var Va=32768;function Ha(e){let t=``;for(let n=0;n<e.length;n+=Va)t+=String.fromCharCode(...e.subarray(n,n+Va));return btoa(t)}function Ua(e){return Ha(Ia(za(JSON.stringify(e))))}var Wa=`__SPARKFORENSICS_RUN_GZ__`;function Ga(e){return`window.${Wa} = "${e}";`}var Ka=`export-template.html`,qa=`<script src="./data.js"><\/script>`;function Ja(e,t){let n=e.indexOf(qa);if(n===-1||e.indexOf(qa,n+1)!==-1)throw Error(`The HTML export template is missing or malformed in this build.`);let r=`<script>${Ga(t)}<\/script>`;return e.slice(0,n)+r+e.slice(n+33)}var Ya=`6e0ac29f74ae092b14c5700dfa86d3273fce7d1af59005c6e2e450a91da92d5e`,Xa=`sparkforensics-web 0.27.0`,Za={markdown:`md`,json:`json`,html:`html`};function Qa(e,t,n){let r=new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(i)}function $a(e,t,n){return`evidence-${String(e??`report`).replace(/[^\w.-]/g,`_`)}${n?`-redacted`:``}.${Za[t]}`}async function eo(){let e=await fetch(Ka);if(!e.ok)throw Error(`The HTML export template could not be loaded (HTTP ${e.status}).`);return e.text()}function to(){let e=H(e=>e.appModel),t=H(e=>e.catalog),n=H(e=>e.skippedLines),[r,i]=(0,W.useState)(!1),a=async()=>{try{let i=Ba(e,t,n,{redact:r,buildId:Ya,producer:Xa});Qa(Ja(await eo(),Ua(i)),$a(i.app?.id??null,`html`,r),`text/html`)}catch(e){console.error(`HTML export failed`,e),Te.error(`HTML export failed`,{description:e instanceof Error?e.message:String(e)})}},o=t=>{try{let{markdown:n,json:i}=ta(e,{redact:r}),a=$a(i.summary?.app?.id??null,t,r);t===`json`?Qa(`${JSON.stringify(i,null,2)}\n`,a,`application/json`):Qa(`${n}\n`,a,`text/markdown`)}catch(e){console.error(`Evidence export failed`,e),Te.error(`Evidence export failed`,{description:e instanceof Error?e.message:String(e)})}};return{redact:r,setRedact:i,download:e=>{e===`html`?a():o(e)}}}function no({redact:e,setRedact:t,download:n}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(rn,{checked:e,onClick:e=>e.preventDefault(),onCheckedChange:e=>t(!!e),children:`Redact identifiers`}),(0,G.jsx)(an,{}),(0,G.jsx)(K,{onClick:()=>n(`markdown`),children:`Download Markdown`}),(0,G.jsx)(K,{onClick:()=>n(`json`),children:`Download JSON`}),(0,G.jsx)(K,{onClick:()=>n(`html`),children:`Download HTML dashboard`})]})}function ro(){let e=to();return(0,G.jsxs)(en,{children:[(0,G.jsxs)(tn,{render:(0,G.jsx)(U,{variant:`ghost`,size:`sm`}),children:[(0,G.jsx)(Nt,{"aria-hidden":`true`}),`Export evidence`]}),(0,G.jsx)(nn,{align:`end`,children:(0,G.jsx)(no,{...e})})]})}function io({activeName:e,activeSub:t,activeId:n=null,entries:r,onPick:i,onRemove:a,onOpenNew:o}){let{pickRecent:s}=Be(),c=(0,W.useCallback)(e=>{if(i){i(e);return}s(e,r.find(t=>t.id===e)?.handle)},[i,r,s]);return(0,G.jsxs)(en,{children:[(0,G.jsxs)(tn,{className:L(Ee({variant:`ghost`}),`h-auto min-w-0 shrink max-w-40 flex-col items-start justify-center gap-0 py-1 sm:max-w-80`),children:[(0,G.jsxs)(`span`,{className:`flex w-full min-w-0 items-center gap-1.5`,children:[(0,G.jsx)(`span`,{className:`min-w-0 truncate font-heading text-sm font-semibold`,children:e??`No file`}),(0,G.jsx)(ce,{"aria-hidden":`true`,className:`ml-auto shrink-0 opacity-60`})]}),t?(0,G.jsx)(`span`,{className:`w-full min-w-0 truncate text-left text-xs text-muted-foreground`,children:t}):null]}),(0,G.jsxs)(nn,{className:`w-72 p-2`,children:[(0,G.jsx)(we,{entries:r,activeId:n,onPick:c,onRemove:a}),(0,G.jsx)(an,{}),(0,G.jsx)(K,{onClick:()=>o?.(),children:`Load new file…`})]})]})}function ao({open:e,entries:t,onSelect:n,onOpenChange:r}){let[i,a]=(0,W.useState)(``),o=(0,W.useRef)(null);(0,W.useEffect)(()=>{e||a(``)},[e]);let s=i.trim().toLowerCase(),c=s?t.filter(e=>e.label.toLowerCase().includes(s)||e.secondary.toLowerCase().includes(s)||String(e.executionId).includes(s)):t;function l(e){(o.current?.querySelectorAll(`button`)??[])[e]?.focus()}function u(e,t){e.key===`ArrowDown`?(e.preventDefault(),l(t+1)):e.key===`ArrowUp`&&(e.preventDefault(),l(t-1))}function d(e){e.key===`Enter`?c.length===1&&n(c[0].stageId):e.key===`ArrowDown`&&(e.preventDefault(),l(0))}return(0,G.jsx)(Nn,{open:e,onOpenChange:r,children:(0,G.jsxs)(In,{className:`flex max-h-[85vh] flex-col sm:max-w-xl`,children:[(0,G.jsxs)(Ln,{children:[(0,G.jsxs)(zn,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(it,{"aria-hidden":`true`,className:`size-4 text-plan-aggregate`}),`Open plan graph`]}),(0,G.jsx)(Bn,{children:`Choose which SQL execution's plan to open.`})]}),(0,G.jsx)(on,{autoFocus:!0,placeholder:`Filter executions…`,value:i,onChange:e=>a(e.target.value),onKeyDown:d}),c.length===0?(0,G.jsx)(`p`,{className:`px-1.5 py-1 text-sm text-muted-foreground`,children:`No matching executions`}):(0,G.jsx)(`ul`,{ref:o,className:`flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto`,children:c.map((e,t)=>(0,G.jsx)(`li`,{children:(0,G.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 cursor-pointer flex-col items-start gap-0.5 rounded-md px-1.5 py-1 text-left hover:bg-muted`,onClick:()=>n(e.stageId),onKeyDown:e=>u(e,t),children:[(0,G.jsxs)(`span`,{className:`flex w-full min-w-0 items-center gap-1.5`,children:[e.impactBand!=null&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ye,{impactBand:e.impactBand}),(0,G.jsxs)(`span`,{className:`shrink-0 text-xs font-normal text-muted-foreground`,children:[e.findingCount,` finding`,e.findingCount===1?``:`s`]})]}),(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.secondary})]}),(0,G.jsx)(`span`,{className:`w-full truncate text-xs text-muted-foreground`,children:e.label})]})},e.executionId))})]})})}var oo={name:`sparkforensics-web`,version:`0.27.0`,description:`Zero-backend browser dashboard that parses Apache Spark event logs to diagnose performance bottlenecks: skew, spill, GC pressure, stragglers, cache utilization, and more.`,private:!0,type:`module`,workspaces:[`.`,`packages/*`],license:`MIT`,author:`Agustin Recoba`,repository:{type:`git`,url:`git+https://github.com/shuffle-works/sparkforensics.git`},bugs:{url:`https://github.com/shuffle-works/sparkforensics/issues`},homepage:`https://github.com/shuffle-works/sparkforensics#readme`,keywords:[`apache-spark`,`spark`,`spark-history-server`,`performance`,`diagnostics`,`observability`,`event-log`,`dashboard`,`query-plan`],engines:{node:`>=22.18.0 <23.0.0 || >=23.6.0`},scripts:{test:`vitest run`,"test:watch":`vitest`,"test:coverage":`vitest run --coverage`,"test:core":`npm run test:coverage --workspace packages/core`,"test:cli":`npm run test:coverage --workspace packages/cli`,"test:mcp":`npm run test:coverage --workspace packages/mcp`,"test:server":`npm test --workspace packages/server`,lint:`eslint .`,release:`node scripts/publish-packages.mjs`,"local-server":`node packages/server/index.js`,"capture-components":`node dev/component-capture/capture.mjs`,"docs:fetch":`node scripts/fetch-tuning-docs.mjs`,"docs:bump":`node scripts/fetch-tuning-docs.mjs bump`,"doc-anchor-coverage":`node scripts/doc-anchor-coverage.js`,"split-detection-docs":`node scripts/split-detection-docs.mjs`,prepare:`git config core.hooksPath .githooks`,dev:`vite`,build:`npm run docs:build && vite build && vite build --config vite.export.config.ts --mode template`,"build:export":`vite build --config vite.export.config.ts`,preview:`vite preview`,"docs:dev":`node scripts/fetch-tuning-docs.mjs --allow-stale && node scripts/build-tuning-reference.mjs && vitepress dev docs-site`,"docs:build":`node scripts/fetch-tuning-docs.mjs && node scripts/build-tuning-reference.mjs && vitepress build docs-site`,"docs:preview":`vitepress preview docs-site`},devDependencies:{"@changesets/cli":`^3.0.3`,"@eslint/js":`^10.0.1`,"@tailwindcss/vite":`^4.3.3`,"@testing-library/jest-dom":`^7.0.1`,"@testing-library/react":`^16.3.3`,"@testing-library/user-event":`^14.6.7`,"@types/node":`^26.6.4`,"@types/react":`^19.3.0`,"@types/react-dom":`^19.3.0`,"@vitejs/plugin-react":`^5.2.0`,"@vitest/coverage-v8":`^5.0.3`,eslint:`^10.12.0`,"fake-indexeddb":`^6.2.5`,globals:`^17.13.0`,"js-yaml":`^5.4.2`,jsdom:`^30.1.1`,"markdown-it-footnote":`^4.0.0`,playwright:`^1.63.0`,shadcn:`^4.21.1`,tailwindcss:`^4.3.3`,typescript:`^7.0.2`,vite:`^8.3.2`,"vite-plugin-singlefile":`^2.3.3`,vitepress:`^1.6.4`,vitest:`^5.0.3`},dependencies:{"@base-ui/react":`^1.8.0`,"@dagrejs/dagre":`^3.1.1`,"@modelcontextprotocol/sdk":`^1.32.0`,"@sparkforensics/core":`*`,"@tanstack/react-table":`^9.2.4`,"@xyflow/react":`^12.12.0`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,"lucide-react":`^1.51.0`,react:`^19.3.0`,"react-dom":`^19.3.0`,"react-resizable-panels":`^4.14.2`,recharts:`^3.8.0`,sonner:`^2.0.8`,"tailwind-merge":`^3.7.0`,"tw-animate-css":`^1.4.0`,zod:`^4.6.5`,zustand:`^5.0.15`}};function so({keys:e}){return(0,G.jsx)(`span`,{className:`flex shrink-0 items-center gap-1`,children:e.map((e,t)=>(0,G.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t>0?(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`or`}):null,(0,G.jsx)(`kbd`,{className:`rounded-md border border-border bg-muted px-1.5 py-0.5 font-mono text-xs font-medium text-foreground`,children:e})]},e))})}function $({keys:e,children:t}){return(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-1.5`,children:[(0,G.jsx)(`span`,{className:`text-sm text-foreground`,children:t}),(0,G.jsx)(so,{keys:e})]})}function co({title:e,children:t}){return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`mb-1 text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:e}),(0,G.jsx)(`div`,{className:`divide-y divide-border/60`,children:t})]})}function lo({open:e,onOpenChange:t}){return(0,G.jsx)(Nn,{open:e,onOpenChange:t,children:(0,G.jsxs)(In,{className:`sm:max-w-md`,children:[(0,G.jsxs)(Ln,{children:[(0,G.jsx)(zn,{children:`Keyboard shortcuts`}),(0,G.jsx)(Bn,{children:`Everything below works from anywhere the board is loaded.`})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,G.jsxs)(co,{title:`Navigation`,children:[(0,G.jsx)($,{keys:[`Tab`,`Shift+Tab`],children:`Move between controls`}),(0,G.jsx)($,{keys:[`Enter`,`Space`],children:`Activate the focused control, open a stage's details, or sort a column`}),(0,G.jsx)($,{keys:[`Esc`],children:`Close the open dialog, or leave a full-page view like Plan graph`})]}),(0,G.jsxs)(co,{title:`Menus and lists`,children:[(0,G.jsx)($,{keys:[`↑`,`↓`],children:`Move between menu items or picker rows`}),(0,G.jsx)($,{keys:[`A–Z`,`0–9`],children:`Filter the Type and Stage dropdowns, and the plan execution picker, as you type`})]}),(0,G.jsxs)(co,{title:`Triage (Advanced view only)`,children:[(0,G.jsx)($,{keys:[`j`,`k`],children:`Next or previous finding, starting with the verdict's steps`}),(0,G.jsx)($,{keys:[`Enter`],children:`Show the focused finding's evidence, or expand a grouped finding`}),(0,G.jsx)($,{keys:[`f`],children:`Jump to the finding filters`}),(0,G.jsx)($,{keys:[`1`,`2`],children:`Switch to Findings or Full app report`})]}),(0,G.jsx)(co,{title:`Help`,children:(0,G.jsx)($,{keys:[`?`],children:`Open this list`})})]}),(0,G.jsxs)(`p`,{className:`text-center text-xs text-muted-foreground`,children:[`SparkForensics v`,oo.version]})]})})}var uo=`Show confidence levels, evidence, documentation links, finding filters and triage shortcuts (j/k, f, 1/2)`;function fo(){let e=ae()===`advanced`;return(0,G.jsxs)(cn,{variant:`outline`,pressed:e,onPressedChange:e=>xe.getState().setWidgetDensity(e?`advanced`:`basic`),className:`tap-target-comfortable aria-pressed:border-primary aria-pressed:bg-primary/10 aria-pressed:text-foreground aria-pressed:hover:bg-primary/15`,title:uo,children:[e?(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`size-1.5 shrink-0 rounded-full bg-primary`}):null,`Advanced view`]})}function po(){let e=ae()===`advanced`;return(0,G.jsx)(rn,{checked:e,onCheckedChange:e=>xe.getState().setWidgetDensity(e?`advanced`:`basic`),title:uo,children:`Advanced view`})}var mo=`docs/`;function ho(e,t){return e===`warning`?`${t} warning${t===1?``:`s`}`:`${t} ${e}`}function go(e,t){return e.stageId!=null&&t.includes(e.stageId)?!0:jn(e)?.some(e=>t.includes(e))??!1}function _o(e,t){let n=[];for(let[r,i]of e.sql){if(!i.planTree)continue;let a=et(r,e.stages),o=a.length>0?Math.min(...a):null;if(o==null)continue;let s=i.description,c=typeof s==`string`&&s.trim()?s:`SQL execution #${r}`,l=i.startTime,u=i.endTime,d=typeof l==`number`&&typeof u==`number`?B(u-l):null,f=t.filter(e=>go(e,a)),p=be(f)??null,m=f.length;n.push({executionId:r,stageId:o,label:c,secondary:d?`#${r} · ${d}`:`#${r}`,impactBand:p,findingCount:m})}return n.sort((e,t)=>{let n=e.impactBand?R[e.impactBand]:1/0,r=t.impactBand?R[t.impactBand]:1/0;return n===r?e.executionId-t.executionId:n-r}),n}function vo({onLoadNew:e,recentEntries:t,activeFileId:n,onPickRecent:r,onRemoveRecent:i,onCompare:a,onJumpToFindings:o,sectionControls:s,leadingContent:c}){let l=H(e=>e.appModel.app),u=H(e=>e.catalog),d=H(e=>e.skippedLines),f=H(e=>e.exportMode),{theme:p,toggle:m}=Et(),h=(0,W.useRef)(null),g=H(e=>e.comparison),_=a!=null&&!s&&!f&&n!=null&&l!=null&&!g.baselineId,v=to(),y=H(e=>e.appModel),b=(0,W.useMemo)(()=>_o(y,u),[y,u]),[x,S]=(0,W.useState)(!1),[C,w]=(0,W.useState)(!1);(0,W.useEffect)(()=>{function e(e){if(e.key!==`?`)return;let t=e.target,n=t?.tagName;n===`INPUT`||n===`TEXTAREA`||t?.isContentEditable||(e.preventDefault(),w(!0))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);function T(){if(b.length!==0){if(b.length===1){xe.getState().openPlanGraph(b[0].stageId,{initialScope:`full`});return}S(!0)}}function E(e){xe.getState().openPlanGraph(e,{initialScope:`full`}),S(!1)}let D=l?.name||`Spark Application`,O=[l?.id,l?.sparkVersion?`Spark ${l.sparkVersion}`:null].filter(Boolean).join(` · `),k=ie(),A=(0,W.useMemo)(()=>le(k),[k]),j=be(A),N=j?A.filter(e=>e.impactBand===j).length:0,P=k?.data.verdict,F=P?.clean??!1,ee=P?.failed??!1;return(0,G.jsxs)(`header`,{className:`sticky top-0 z-30 flex min-w-0 flex-wrap items-center gap-3 border-b border-border bg-background/95 px-4 py-2 backdrop-blur`,children:[s?null:(0,G.jsx)(`h1`,{className:`sr-only`,children:`SparkForensics`}),(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[!s&&!f?(0,G.jsx)(U,{variant:`ghost`,size:`icon`,className:`tap-target-comfortable shrink-0`,"aria-label":`New analysis`,title:`Start a new analysis`,onClick:e,children:(0,G.jsx)(Lt,{"aria-hidden":`true`})}):null,f?(0,G.jsxs)(`div`,{className:`flex min-w-0 shrink flex-col items-start justify-center gap-0 py-1`,children:[(0,G.jsx)(`span`,{className:`min-w-0 truncate font-heading text-sm font-semibold`,children:D}),O?(0,G.jsx)(`span`,{className:`w-full min-w-0 truncate text-left text-xs text-muted-foreground`,children:O}):null]}):(0,G.jsx)(io,{activeName:D,activeSub:O,activeId:n,entries:t,onPick:r,onRemove:i,onOpenNew:e}),d>0?(0,G.jsxs)(`div`,{className:`min-w-0 truncate text-xs text-warning`,children:[d,` line`,d===1?``:`s`,` skipped: malformed or invalid data`]}):null,c]}),s?(0,G.jsx)(`div`,{className:`flex min-w-0 shrink-0 flex-wrap items-center gap-3 max-sm:order-3 max-sm:w-full max-sm:shrink max-sm:gap-2`,children:s}):j?o?(0,G.jsx)(`button`,{type:`button`,"aria-label":`${ho(j,N)}: show them in Findings`,title:`Show them in Findings`,onClick:()=>o(j),className:L(M(),se({impactBand:j}),`tap-target-comfortable cursor-pointer font-mono hover:underline focus-visible:outline-none`),children:ho(j,N)}):(0,G.jsx)(ge,{label:ho(j,N),impactBand:j,className:`shrink-0`}):ee?(0,G.jsx)(ge,{label:`Run failed`,impactBand:`critical`,className:`shrink-0`}):F?(0,G.jsxs)(`span`,{className:L(`inline-flex shrink-0 items-center gap-1.5 rounded-full bg-clean/10 px-2 py-0.5 text-xs font-medium text-clean`),children:[(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block size-2 shrink-0 rounded-full bg-clean`}),`No findings`]}):(0,G.jsx)(`span`,{className:`inline-flex shrink-0 items-center rounded-full border border-border px-2 py-0.5 text-xs font-medium text-muted-foreground`,children:`Not fully checked`}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[!s&&g.baselineId&&!g.active?(0,G.jsx)(U,{variant:`ghost`,size:`sm`,className:`tap-target-comfortable`,onClick:()=>xe.getState().setComparisonActive(!0),children:`← Back to comparison`}):null,(0,G.jsxs)(`div`,{className:`hidden items-center gap-1 sm:flex`,children:[_?(0,G.jsxs)(U,{variant:`ghost`,size:`sm`,className:`tap-target-comfortable`,"aria-label":`Compare with another run`,title:`Compare with another run`,onClick:a,children:[(0,G.jsx)(Xe,{"aria-hidden":`true`}),(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`xl:hidden`,children:`Compare`}),(0,G.jsx)(`span`,{"aria-hidden":`true`,className:`hidden xl:inline`,children:`Compare with another run`})]}):null,!s&&!f?(0,G.jsx)(ro,{}):null,!s&&b.length>0?(0,G.jsxs)(U,{variant:`ghost`,size:`sm`,className:`tap-target-comfortable`,onClick:T,children:[(0,G.jsx)(it,{"aria-hidden":`true`,className:`text-plan-aggregate`}),`Plan graph`]}):null,s?null:(0,G.jsx)(fo,{}),f?null:(0,G.jsx)(U,{variant:`ghost`,size:`icon`,className:`tap-target-comfortable`,"aria-label":`Docs`,title:`Read the docs`,nativeButton:!1,render:(0,G.jsx)(`a`,{href:mo,target:`_blank`,rel:`noopener noreferrer`}),children:(0,G.jsx)(pe,{"aria-hidden":`true`})}),(0,G.jsx)(U,{variant:`ghost`,size:`icon`,className:`tap-target-comfortable`,"aria-label":`Keyboard shortcuts`,title:`Keyboard shortcuts (?)`,onClick:()=>w(!0),children:(0,G.jsx)(zt,{"aria-hidden":`true`})}),(0,G.jsx)(U,{variant:`ghost`,size:`icon`,className:`tap-target-comfortable`,"aria-label":`Toggle theme`,"aria-pressed":p===`light`,title:`Toggle theme`,onClick:m,children:p===`dark`?(0,G.jsx)(qe,{"aria-hidden":`true`}):(0,G.jsx)(Tt,{"aria-hidden":`true`})})]}),(0,G.jsxs)(en,{onOpenChange:(e,t)=>{!e&&t.reason===`outside-press`&&setTimeout(()=>{document.activeElement===document.body&&h.current?.focus()})},children:[(0,G.jsx)(tn,{ref:h,className:`tap-target-comfortable inline-flex size-8 items-center justify-center rounded-lg hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring/50 sm:hidden`,"aria-label":`More options`,children:(0,G.jsx)(Ft,{"aria-hidden":`true`})}),(0,G.jsxs)(nn,{align:`end`,children:[_?(0,G.jsxs)(K,{onClick:a,children:[(0,G.jsx)(Xe,{"aria-hidden":`true`}),`Compare with another run`]}):null,!s&&!f?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(no,{...v}),(0,G.jsx)(an,{})]}):null,!s&&b.length>0?(0,G.jsxs)(K,{onClick:T,children:[(0,G.jsx)(it,{"aria-hidden":`true`,className:`text-plan-aggregate`}),`Plan graph`]}):null,s?null:(0,G.jsx)(po,{}),f?null:(0,G.jsx)(K,{nativeButton:!1,render:(0,G.jsx)(`a`,{href:mo,target:`_blank`,rel:`noopener noreferrer`}),children:`Docs`}),(0,G.jsx)(K,{onClick:()=>w(!0),children:`Keyboard shortcuts`}),(0,G.jsx)(K,{onClick:m,children:`Toggle theme`})]})]})]}),(0,G.jsx)(ao,{open:x,entries:b,onSelect:E,onOpenChange:S}),(0,G.jsx)(lo,{open:C,onOpenChange:w})]})}function yo(e){let{pickRecent:t}=Be(),[n,r]=(0,W.useState)([]),i=(0,W.useCallback)(()=>{Oe().then(e=>r(e)).catch(()=>r([]))},[]);return(0,W.useEffect)(()=>{i()},[i,e]),{recentEntries:n,onPickRecent:(0,W.useCallback)(async e=>{let r=n.find(t=>t.id===e),a=await t(e,r?.handle);(a===`restored`||a===`gone`)&&i()},[n,t,i]),onRemoveRecent:(0,W.useCallback)(e=>{let t=n.find(t=>t.id===e);Me(e).catch(()=>{}).finally(i),t&&Te(`Removed "${t.appName||t.name}" from recent files`,{action:{label:`Undo`,onClick:()=>{He(t).catch(()=>{}).finally(i)}}})},[n,i])}}export{Qt as A,on as C,tn as D,nn as E,Ut as F,kt as I,Bt as M,Wt as N,Yt as O,Ht as P,sn as S,rn as T,yn as _,Vn as a,Dn as b,Bn as c,zn as d,Mn as f,On as g,kn as h,Zn as i,$t as j,Kt as k,Rn as l,An as m,vo as n,Nn as o,jn as p,or as r,In as s,yo as t,Ln as u,xn as v,en as w,mn as x,Sn as y};
|