shieldcortex 4.12.11 → 4.12.12
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/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.meta +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +6 -6
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__c2b92077._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_01f6ceb0._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_11878109._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_1bfd1423._.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_35a9932a._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_35c9f22e._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_37f17371._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_836b4a04._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_9770c429._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_9dd626ed._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c219bf07._.js +8 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_e94d2da2._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{dashboard_d5fc66fc._.js → dashboard_fefd3b85._.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_protection_ProtectionOverview_tsx_54554a97._.js +3 -1
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_xray_XRayOverview_tsx_ceba698e._.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/079a5be036130e37.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/1770a8ce7abb2437.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/1a074f8ddc7cd385.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/24da99d1341bd573.css +3 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/2aa8afb655c1c2e5.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/385ec610bad1acc5.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/3d53807a9a943ce7.js +15 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/4f57582c2d186438.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/7fca141efba9d353.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/8593e1796c9d043d.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/c288964c4c00982a.js +3 -0
- package/dist/api/routes/admin.js +295 -8
- package/dist/api/visualization-server.js +5 -0
- package/dist/audit/index.d.ts +2 -1
- package/dist/audit/index.js +1 -1
- package/dist/audit/memory-scanner.d.ts +66 -1
- package/dist/audit/memory-scanner.js +441 -28
- package/dist/cli/review-copilot.d.ts +1 -0
- package/dist/cli/review-copilot.js +197 -0
- package/dist/cloud/cli.js +3 -1
- package/dist/cloud/config.d.ts +17 -0
- package/dist/cloud/config.js +110 -25
- package/dist/database/init.js +37 -0
- package/dist/database/schema.sql +20 -0
- package/dist/defence/explainer/index.d.ts +5 -0
- package/dist/defence/explainer/index.js +28 -0
- package/dist/defence/explainer/prompt.d.ts +2 -0
- package/dist/defence/explainer/prompt.js +49 -0
- package/dist/defence/explainer/schema.d.ts +3 -0
- package/dist/defence/explainer/schema.js +204 -0
- package/dist/defence/explainer/types.d.ts +26 -0
- package/dist/defence/explainer/types.js +1 -0
- package/dist/defence/judge/annotate.d.ts +8 -0
- package/dist/defence/judge/annotate.js +107 -0
- package/dist/defence/judge/annotations-store.d.ts +4 -0
- package/dist/defence/judge/annotations-store.js +67 -0
- package/dist/defence/judge/decision.d.ts +10 -0
- package/dist/defence/judge/decision.js +165 -0
- package/dist/defence/judge/fallback.d.ts +4 -0
- package/dist/defence/judge/fallback.js +19 -0
- package/dist/defence/judge/grouping.d.ts +4 -0
- package/dist/defence/judge/grouping.js +52 -0
- package/dist/defence/judge/index.d.ts +9 -0
- package/dist/defence/judge/index.js +34 -0
- package/dist/defence/judge/prompt.d.ts +3 -0
- package/dist/defence/judge/prompt.js +49 -0
- package/dist/defence/judge/runner.d.ts +3 -0
- package/dist/defence/judge/runner.js +160 -0
- package/dist/defence/judge/schema.d.ts +15 -0
- package/dist/defence/judge/schema.js +118 -0
- package/dist/defence/judge/telemetry.d.ts +28 -0
- package/dist/defence/judge/telemetry.js +43 -0
- package/dist/defence/judge/types.d.ts +67 -0
- package/dist/defence/judge/types.js +1 -0
- package/dist/defence/judge/worker.d.ts +1 -0
- package/dist/defence/judge/worker.js +106 -0
- package/dist/defence/quarantine/review.js +16 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.js +10 -1
- package/dist/lib.d.ts +9 -1
- package/dist/lib.js +7 -1
- package/dist/license/gate.d.ts +1 -1
- package/dist/license/gate.js +6 -0
- package/package.json +4 -1
- package/plugins/openclaw/dist/openclaw.plugin.json +1 -1
- package/scripts/ensure-bin-executable.mjs +17 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__4a575c8d._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_0734b815._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_21edaee1._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_354daf70._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_8481163e._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_a3053031._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_a38f5767._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_f6813b70._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/1482af194911d5e7.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/2c2a280eeaed7ed2.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/2f92786ac35bbdb9.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/90f35860c69b2f0b.js +0 -9
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/915d5a8cf2d0807e.css +0 -3
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/927fe0465516b94a.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/99a618b860658c5c.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/b31e08a78b0cb6fb.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/c2ccb1c0ed7b2af2.js +0 -1
- /package/dashboard/.next/standalone/dashboard/.next/static/{Azzglh6qPGDH5Kl8B76tx → 5HSptYF0HaABlloA3Hir3}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{Azzglh6qPGDH5Kl8B76tx → 5HSptYF0HaABlloA3Hir3}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{Azzglh6qPGDH5Kl8B76tx → 5HSptYF0HaABlloA3Hir3}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,27918,e=>{"use strict";var a=e.i(27493),t=e.i(4),s=e.i(45434),r=e.i(36062),i=e.i(71259),n=e.i(24929);let c=(0,n.default)("file-search",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]]),l=(0,n.default)("folder-search",[["path",{d:"M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1",key:"1bw5m7"}],["path",{d:"m21 21-1.9-1.9",key:"1g2n9r"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}]]);var d=e.i(66949);let o=(0,n.default)("radar",[["path",{d:"M19.07 4.93A10 10 0 0 0 6.99 3.34",key:"z3du51"}],["path",{d:"M4 6h.01",key:"oypzma"}],["path",{d:"M2.29 9.62A10 10 0 1 0 21.31 8.35",key:"qzzz0"}],["path",{d:"M16.24 7.76A6 6 0 1 0 8.23 16.67",key:"1yjesh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M17.99 11.66A6 6 0 0 1 15.77 16.67",key:"1u2y91"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"m13.41 10.59 5.66-5.66",key:"mhq4k0"}]]);var x=e.i(76344),m=e.i(48615),v=e.i(88969),h=e.i(94156),u=e.i(16467),p=e.i(95659),g=e.i(81523),y=e.i(40950),f=e.i(46194);function j({score:e,size:t=160,label:s}){let r=2*Math.PI*42,i=e/100*r,n=e<=50?"var(--sc-coral)":e<=75?"var(--sc-amber)":"var(--sc-cyan)",c=e<=50?"var(--sc-glow-coral)":e<=75?"rgba(245, 158, 11, 0.15)":"var(--sc-glow-cyan)";return(0,a.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,a.jsxs)("div",{className:"relative",style:{width:t,height:t},children:[(0,a.jsxs)("svg",{viewBox:"0 0 100 100",className:"h-full w-full -rotate-90",style:{filter:`drop-shadow(0 0 12px ${c})`},children:[(0,a.jsx)("circle",{cx:"50",cy:"50",r:42,fill:"none",stroke:"var(--sc-bg-elevated)",strokeWidth:"7"}),(0,a.jsx)("circle",{cx:"50",cy:"50",r:42,fill:"none",stroke:n,strokeWidth:"7",strokeDasharray:`${i} ${r}`,strokeLinecap:"round",className:"transition-all duration-1000 ease-out"})]}),(0,a.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[(0,a.jsx)("span",{className:"text-3xl font-bold",style:{color:n},children:e}),(0,a.jsx)("span",{className:"text-[11px] text-[var(--sc-text-muted)]",children:"trust"})]})]}),s&&(0,a.jsx)("span",{className:"text-xs font-medium text-[var(--sc-text-secondary)]",children:s})]})}var b=e.i(16511);let N=(0,n.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var k=e.i(27528),w=e.i(77744),S=e.i(22534),C=e.i(45688),B=e.i(71921),F=e.i(1235);let E=S.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";function $({findingId:e,status:s,hasFile:r,compact:n=!1}){let c,l,d,[o,x]=(0,t.useState)(!1),[h,u]=(0,t.useState)(""),[p,y]=(0,t.useState)(!1),f=(c=(0,F.useQueryClient)(),(0,B.useMutation)({mutationFn:async({id:e,status:a,note:t})=>{let s=await (0,v.gatedFetch)(`${E}/api/xray/findings/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:a,note:t})});if(!s.ok)throw Error(await (0,v.readApiError)(s,"Failed to update finding"));return s.json()},onSuccess:()=>{c.invalidateQueries({queryKey:["xray-findings"]}),c.invalidateQueries({queryKey:["xray-findings-stats"]})}})),j=(l=(0,F.useQueryClient)(),(0,B.useMutation)({mutationFn:async({id:e,note:a})=>{let t=await (0,v.gatedFetch)(`${E}/api/xray/findings/${e}/quarantine`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({note:a})});if(!t.ok)throw Error(await (0,v.readApiError)(t,"Failed to quarantine file"));return t.json()},onSuccess:()=>{l.invalidateQueries({queryKey:["xray-findings"]}),l.invalidateQueries({queryKey:["xray-findings-stats"]})}})),S=(d=(0,F.useQueryClient)(),(0,B.useMutation)({mutationFn:async e=>{let a=await (0,v.gatedFetch)(`${E}/api/xray/findings/${e}`,{method:"DELETE"});if(!a.ok)throw Error(await (0,v.readApiError)(a,"Failed to delete finding"));return a.json()},onSuccess:()=>{d.invalidateQueries({queryKey:["xray-findings"]}),d.invalidateQueries({queryKey:["xray-findings-stats"]})}})),C=a=>{switch(a){case"reviewed":f.mutate({id:e,status:"reviewed"},{onSuccess:()=>m.toast.success("Marked as reviewed"),onError:e=>m.toast.error(`Failed to update: ${e.message}`)});break;case"ignored":f.mutate({id:e,status:"ignored",note:h},{onSuccess:()=>{m.toast.info("Finding ignored — removed from active list"),x(!1),u(""),y(!0)},onError:e=>m.toast.error(`Failed to ignore: ${e.message}`)});break;case"resolved":f.mutate({id:e,status:"resolved",note:h},{onSuccess:()=>{m.toast.success("Finding resolved — removed from active list"),x(!1),u(""),y(!0)},onError:e=>m.toast.error(`Failed to resolve: ${e.message}`)});break;case"quarantine":j.mutate({id:e,note:h},{onSuccess:e=>{m.toast.warning(e.moved?"File quarantined and moved":"Marked quarantined (file not found)"),y(!0)},onError:e=>m.toast.error(`Quarantine failed: ${e.message}`)});break;case"delete":S.mutate(e,{onSuccess:()=>{m.toast.success("Finding deleted"),y(!0)},onError:e=>m.toast.error(`Failed to delete: ${e.message}`)})}};if(p)return(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-[var(--sc-cyan)] italic animate-pulse",children:[(0,a.jsx)(b.Check,{size:12})," Done — removing from list..."]});if("resolved"===s)return(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-[var(--sc-cyan)]",children:[(0,a.jsx)(b.Check,{size:12})," Resolved"]});if("quarantined"===s)return(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-[var(--sc-amber)]",children:[(0,a.jsx)(k.Shield,{size:12})," Quarantined"]});if("ignored"===s)return(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-[var(--sc-text-muted)]",children:[(0,a.jsx)(N,{size:12})," Ignored"]});let $=n?"sm":"md",A=f.isPending||j.isPending||S.isPending;return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:["new"===s&&(0,a.jsxs)(g.Button,{variant:"ghost",size:$,onClick:()=>C("reviewed"),disabled:A,children:[(0,a.jsx)(i.Eye,{size:12})," Mark reviewed"]}),(0,a.jsxs)(g.Button,{variant:"cyan",size:$,onClick:()=>x(!o),disabled:A,children:[(0,a.jsx)(b.Check,{size:12})," Resolve"]}),(0,a.jsxs)(g.Button,{variant:"ghost",size:$,onClick:()=>C("ignored"),disabled:A,children:[(0,a.jsx)(N,{size:12})," Safe to ignore"]}),r&&(0,a.jsxs)(g.Button,{variant:"coral",size:$,onClick:()=>C("quarantine"),disabled:A,children:[(0,a.jsx)(k.Shield,{size:12})," Quarantine file"]}),(0,a.jsx)(g.Button,{variant:"ghost",size:$,onClick:()=>C("delete"),disabled:A,children:(0,a.jsx)(w.Trash2,{size:12})})]}),o&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{value:h,onChange:e=>u(e.target.value),placeholder:"What did you do about it? (optional)",className:"flex-1 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 py-1.5 text-xs text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan","aria-label":"Resolution note",onKeyDown:e=>{"Enter"===e.key&&C("resolved")}}),(0,a.jsx)(g.Button,{variant:"cyan",size:"sm",onClick:()=>C("resolved"),disabled:A,children:"Done"})]})]})}var A=e.i(13808),z=e.i(76624),R=e.i(23457);function M({finding:e}){let t=(0,R.useLocalAiExplain)();return(0,a.jsxs)("div",{className:"mt-3 space-y-3",children:[(0,a.jsxs)(g.Button,{variant:"outline",size:"sm",onClick:()=>{t.mutate({kind:"xray_finding",title:e.title,content:[`Title: ${e.title}`,`Description: ${e.description}`,e.file?`File: ${e.line?`${e.file}:${e.line}`:e.file}`:"",e.evidence?`Evidence: ${e.evidence}`:"",e.guidance?.whatItMeans?`Scanner meaning: ${e.guidance.whatItMeans}`:"",e.guidance?.whatToDo?`Scanner guidance: ${e.guidance.whatToDo}`:"",e.guidance?.falsePositiveNote?`False positive note: ${e.guidance.falsePositiveNote}`:""].filter(Boolean).join("\n"),source:e.file?`xray:${e.file}`:"xray",signals:[e.severity,e.category,e.status??"",e.guidance?.urgency??"",e.systemFile?"system-file":""].filter(Boolean),metadata:{id:e.id,file:e.file,line:e.line,severity:e.severity,category:e.category,status:e.status,detectedAt:e.detectedAt,systemFile:e.systemFile,guidance:e.guidance}},{onSuccess:e=>{m.toast.success(e.explanation.synthetic?"Fallback explanation generated":"Local explanation generated")},onError:e=>m.toast.error(e instanceof Error?e.message:"Local explanation failed")})},disabled:t.isPending,children:[(0,a.jsx)(A.Sparkles,{size:13}),t.isPending?"Explaining":"Explain"]}),t.data?.explanation&&(0,a.jsx)(z.LocalAiExplanationPanel,{explanation:t.data.explanation}),t.error&&(0,a.jsx)("div",{className:"rounded-lg border border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 p-3 text-sm text-[var(--sc-coral)]",children:t.error instanceof Error?t.error.message:"Local explanation failed"})]})}var L=e.i(31309);function P(e){return e?new Date(e).toLocaleString():"—"}function D(){var e;let[n,b]=(0,t.useState)("scanner"),[N,k]=(0,t.useState)(""),[w,S]=(0,t.useState)(!1),[B,F]=(0,t.useState)(null),[A,z]=(0,t.useState)("ALL"),[R,D]=(0,t.useState)("all"),[W,q]=(0,t.useState)("all"),[T,G]=(0,t.useState)(""),[I,Q]=(0,t.useState)("all"),[H,X]=(0,t.useState)("all"),[K,O]=(0,t.useState)(""),[V,_]=(0,t.useState)(!1),[U,J]=(0,t.useState)("new"),{data:Y}=(0,L.useXRayHistory)({risk:A,targetType:R,deep:W,search:T}),{data:Z}=(0,L.useXRayActivity)(8,{kind:I}),{data:ee}=(0,L.useXRayWatchSessions)(8,{state:H}),{data:ea}=(0,L.useXRayStatus)(),{data:et}=(0,C.useQuery)({queryKey:["xray-findings-stats"],queryFn:async()=>{let e=await (0,v.gatedFetch)(`${E}/api/xray/findings/stats`);if(!e.ok)throw Error(await (0,v.readApiError)(e,"Failed to fetch finding stats"));return e.json()},refetchInterval:15e3}),{data:es}=(e={status:"all"===U?void 0:U},(0,C.useQuery)({queryKey:["xray-findings",e],queryFn:async()=>{let a=new URLSearchParams;e?.status&&a.set("status",e.status),e?.severity&&a.set("severity",e.severity),e?.limit&&a.set("limit",String(e.limit));let t=a.toString()?`?${a}`:"",s=await (0,v.gatedFetch)(`${E}/api/xray/findings${t}`);if(!s.ok)throw Error(await (0,v.readApiError)(s,"Failed to fetch findings"));return s.json()},refetchInterval:15e3})),er=(0,t.useMemo)(()=>Y?.entries??[],[Y?.entries]),ei=Z?.entries??[],en=ee?.entries??[],ec=(0,L.useXRayScan)(),el=(0,L.usePickXRayTarget)(),ed=B??(er.length>0?er[0].id:null),eo=(0,L.useXRayHistoryEntry)(ed),{data:ex}=(0,L.useActiveWatchers)(),em=(0,L.useStartWatch)(),ev=(0,L.useStopWatch)(),eh=ex?.watchers??[],eu=ec.data?.result,ep=ec.data?.persistedFindings??[],eg=ec.error,ey=eg instanceof v.FeatureLockedError;(0,h.useMemoryWebSocket)({onMessage:e=>{if("xray_detection"===e.type){let a=e.data;m.toast.warning(a.summary||"X-Ray detection",{description:`Risk: ${a.riskLevel||"unknown"}`,duration:8e3})}}});let ef=eo.data?.entry??er.find(e=>e.id===ed)??null,ej=eu??ef?.result??null,eb=(0,t.useMemo)(()=>({total:er.length,avgScore:er.length?Math.round(er.reduce((e,a)=>e+a.trustScore,0)/er.length):null}),[er]),eN=ea?.capabilities,ek=ea?.summary,ew=[{id:"scanner",label:"Scanner",icon:(0,a.jsx)(x.ScanSearch,{size:14})},{id:"history",label:"History",count:eb.total},{id:"watch",label:"Watch",count:ek?.activeWatchRoots??0},{id:"activity",label:"Activity"},{id:"findings",label:"Findings",count:et?.new??0}];return(0,a.jsx)("div",{className:"h-full overflow-y-auto",children:(0,a.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,a.jsx)(y.PageHeader,{eyebrow:"Supply Chain Security",title:"X-Ray Scanner",subtitle:"Scan packages, files, and directories for hidden risk signals.",tabs:ew,activeTab:n,onTabChange:e=>b(e),actions:(0,a.jsx)("div",{className:"flex items-center gap-3",children:(0,a.jsxs)(p.Badge,{variant:eN?.deepScan?"cyan":"muted",dot:!0,children:["Deep scan ",eN?.deepScan?"enabled":"gated"]})})}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,a.jsx)(f.StatCard,{label:"Total Scans",value:ek?.scans??0,icon:x.ScanSearch,accent:"cyan"}),(0,a.jsx)(f.StatCard,{label:"High Risk",value:ek?.highRiskScans??0,icon:s.Activity,accent:"coral"}),(0,a.jsx)(f.StatCard,{label:"Watch Roots",value:ek?.activeWatchRoots??0,icon:i.Eye,accent:"cyan"}),(0,a.jsx)(f.StatCard,{label:"Avg Trust",value:eb.avgScore??"—",icon:c,accent:eb.avgScore&&eb.avgScore>=70?"cyan":"amber"})]}),"scanner"===n&&(0,a.jsxs)("div",{className:"grid gap-6 xl:grid-cols-[1.2fr_0.8fr]",children:[(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)(u.GlassCard,{strong:!0,className:"p-6",children:[(0,a.jsxs)("form",{onSubmit:e=>{e.preventDefault(),N.trim()&&ec.mutate({target:N.trim(),deep:w})},children:[(0,a.jsx)("label",{className:"text-sm font-semibold text-[var(--sc-text-primary)]",children:"What do you want to scan?"}),(0,a.jsx)("input",{value:N,onChange:e=>k(e.target.value),placeholder:"Package name, file path, or directory...",className:"mt-3 w-full rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-4 py-3 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan"}),(0,a.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-3",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>el.mutate("file",{onSuccess:e=>{e.path&&k(e.path)}}),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] px-4 py-2.5 text-sm font-medium text-[var(--sc-text-secondary)] transition-all hover:bg-[var(--sc-surface-interactive-hover)] hover:text-[var(--sc-text-primary)]",children:[(0,a.jsx)(c,{size:14})," Browse file"]}),(0,a.jsxs)("button",{type:"button",onClick:()=>el.mutate("folder",{onSuccess:e=>{e.path&&k(e.path)}}),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] px-4 py-2.5 text-sm font-medium text-[var(--sc-text-secondary)] transition-all hover:bg-[var(--sc-surface-interactive-hover)] hover:text-[var(--sc-text-primary)]",children:[(0,a.jsx)(l,{size:14})," Browse folder"]}),(0,a.jsxs)("label",{className:"inline-flex items-center gap-2 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] px-3 py-2.5 text-sm text-[var(--sc-text-secondary)]",children:[(0,a.jsx)("input",{type:"checkbox",checked:w,onChange:e=>S(e.target.checked),className:"h-4 w-4 rounded border-[var(--sc-border)] accent-[var(--sc-cyan)]"}),"Deep scan",!eN?.deepScan&&(0,a.jsx)(d.Lock,{size:12,className:"text-[var(--sc-coral)]"})]}),(0,a.jsxs)(g.Button,{type:"submit",variant:"coral",glow:!0,disabled:ec.isPending||!N.trim(),children:[ec.isPending?"Scanning…":"Run Scan",(0,a.jsx)(r.ArrowRight,{size:14})]})]}),(0,a.jsx)("p",{className:"mt-3 text-xs text-[var(--sc-text-muted)]",children:"Native macOS picker via local API, or paste a path / package name directly."})]}),el.isError&&(0,a.jsx)("div",{className:"mt-3 rounded-xl border border-[var(--sc-coral)]/20 bg-[var(--sc-coral)]/5 px-4 py-3 text-sm text-[var(--sc-coral)]",children:el.error instanceof Error?el.error.message:"Failed to open native picker"}),eg&&(0,a.jsx)("div",{className:`mt-4 rounded-xl px-4 py-3 text-sm ${ey?"border border-[var(--sc-amber)]/20 bg-[var(--sc-amber)]/5 text-[var(--sc-amber)]":"border border-[var(--sc-coral)]/20 bg-[var(--sc-coral)]/5 text-[var(--sc-coral)]"}`,children:eg.message})]}),(0,a.jsxs)(u.GlassCard,{className:`p-6 ${ec.isPending?"scan-sweep":""}`,children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Scan Result"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)(p.Badge,{variant:"muted",children:[eb.total," scans"]}),(0,a.jsxs)(p.Badge,{variant:"muted",children:["Avg ",eb.avgScore??"—"]})]})]}),ej?(0,a.jsxs)("div",{className:"mt-5 space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-start gap-6",children:[(0,a.jsx)(j,{score:ej.trustScore,size:120}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,a.jsx)("h4",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:ej.target}),(0,a.jsx)(p.Badge,{variant:(0,p.riskVariant)(ej.riskLevel),children:ej.riskLevel})]}),(0,a.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,a.jsxs)(p.Badge,{variant:"muted",children:[ej.filesScanned," files"]}),(0,a.jsx)(p.Badge,{variant:"muted",children:ej.deepScan?"Deep":"Standard"}),(0,a.jsx)(p.Badge,{variant:"muted",children:P(ej.scannedAt)})]})]})]}),(0,a.jsx)("div",{className:"space-y-3",children:0===ej.findings.length?(0,a.jsx)("div",{className:"rounded-xl border border-[var(--sc-cyan)]/20 bg-[var(--sc-cyan)]/5 px-4 py-4 text-sm text-[var(--sc-cyan)]",children:"No findings detected. This target looks clean."}):ej.findings.map((e,t)=>(0,a.jsxs)(u.GlassCard,{severity:e.severity,className:"p-4",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)(p.Badge,{variant:(0,p.riskVariant)(e.severity),children:e.severity}),(0,a.jsx)(p.Badge,{variant:"muted",children:e.category})]}),(0,a.jsx)("p",{className:"mt-2 text-sm font-semibold text-[var(--sc-text-primary)]",children:e.title}),(0,a.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-secondary)]",children:e.description}),(e.file||e.evidence)&&(0,a.jsxs)("div",{className:"mt-2 space-y-0.5 font-mono text-xs text-[var(--sc-text-muted)]",children:[e.file&&(0,a.jsxs)("div",{children:["File: ",e.line?`${e.file}:${e.line}`:e.file]}),e.evidence&&(0,a.jsxs)("div",{children:["Evidence: ",e.evidence]})]}),(0,a.jsx)(M,{finding:{...e,id:ep[t]?.id,status:ep[t]?.status}}),ep[t]&&(0,a.jsx)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3",children:(0,a.jsx)($,{findingId:ep[t].id,status:ep[t].status,hasFile:!!e.file,compact:!0})})]},`${e.title}-${t}`))})]}):(0,a.jsx)("div",{className:"mt-5 rounded-xl bg-[var(--sc-bg-elevated)] px-5 py-8 text-center text-sm text-[var(--sc-text-muted)]",children:"Run a scan or select one from history to see results here."})]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)(u.GlassCard,{strong:!0,className:"p-5",children:[(0,a.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Capabilities"}),(0,a.jsx)("div",{className:"mt-4 space-y-3",children:[{label:"Local scan",enabled:eN?.localScan??!0},{label:"Watch mode",enabled:eN?.watchMode??!0},{label:"Preinstall hook",enabled:eN?.preinstallHook??!1},{label:"npm inspection",enabled:eN?.npmInspection??!1},{label:"Deep scan",enabled:eN?.deepScan??!1}].map(e=>(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-3 py-2",children:[(0,a.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:e.label}),(0,a.jsx)(p.Badge,{variant:e.enabled?"cyan":"muted",dot:!0,children:e.enabled?"On":"Off"})]},e.label))})]}),(0,a.jsxs)(u.GlassCard,{strong:!0,className:"p-5",children:[(0,a.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Quick stats"}),(0,a.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-3 py-2",children:[(0,a.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Watch roots"}),(0,a.jsxs)("span",{className:"text-sm font-semibold text-[var(--sc-text-primary)]",children:[ek?.activeWatchRoots??0," active"]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-3 py-2",children:[(0,a.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Stale roots"}),(0,a.jsx)("span",{className:"text-sm font-semibold text-[var(--sc-amber)]",children:ek?.staleWatchRoots??0})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-3 py-2",children:[(0,a.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Blocked events"}),(0,a.jsx)("span",{className:"text-sm font-semibold text-[var(--sc-coral)]",children:ek?.blockedEvents??0})]})]})]})]})]}),"history"===n&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)(u.GlassCard,{className:"p-4",children:[(0,a.jsxs)("div",{className:"grid gap-3 lg:grid-cols-[1fr_auto_auto]",children:[(0,a.jsx)("input",{value:T,onChange:e=>G(e.target.value),placeholder:"Filter by file, folder, or package...",className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-4 py-2.5 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan"}),(0,a.jsxs)("select",{value:A,onChange:e=>z(e.target.value),className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-4 py-2.5 text-sm text-[var(--sc-text-primary)]",children:[(0,a.jsx)("option",{value:"ALL",children:"All risk"}),(0,a.jsx)("option",{value:"CRITICAL",children:"Critical"}),(0,a.jsx)("option",{value:"HIGH",children:"High"}),(0,a.jsx)("option",{value:"MEDIUM",children:"Medium"}),(0,a.jsx)("option",{value:"LOW",children:"Low"}),(0,a.jsx)("option",{value:"SAFE",children:"Safe"})]}),(0,a.jsxs)("select",{value:R,onChange:e=>D(e.target.value),className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-4 py-2.5 text-sm text-[var(--sc-text-primary)]",children:[(0,a.jsx)("option",{value:"all",children:"All targets"}),(0,a.jsx)("option",{value:"file",children:"Files"}),(0,a.jsx)("option",{value:"dir",children:"Directories"}),(0,a.jsx)("option",{value:"npm",children:"Packages"})]})]}),(0,a.jsx)("div",{className:"mt-3 flex gap-2",children:["all","true","false"].map(e=>(0,a.jsx)("button",{onClick:()=>q(e),className:`rounded-lg px-3 py-1.5 text-xs font-medium transition-all ${W===e?"bg-[var(--sc-coral)] text-white":"bg-[var(--sc-surface-interactive)] text-[var(--sc-text-muted)] hover:text-[var(--sc-text-secondary)]"}`,children:"all"===e?"All scans":"true"===e?"Deep only":"Standard only"},e))})]}),(0,a.jsxs)("div",{className:"grid gap-6 xl:grid-cols-[0.45fr_0.55fr]",children:[(0,a.jsx)("div",{className:"space-y-3",children:0===er.length?(0,a.jsx)(u.GlassCard,{className:"p-5 text-center text-sm text-[var(--sc-text-muted)]",children:"No matching scan history yet."}):er.map(e=>(0,a.jsxs)(u.GlassCard,{hover:!0,selected:ed===e.id,onClick:()=>{F(e.id),k(e.target),S(e.deepScan)},className:"p-4",children:[(0,a.jsx)("div",{className:"truncate text-sm font-semibold text-[var(--sc-text-primary)]",children:e.target}),(0,a.jsx)("div",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:P(e.scannedAt)}),(0,a.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,a.jsx)(p.Badge,{variant:(0,p.riskVariant)(e.riskLevel),children:e.riskLevel}),(0,a.jsxs)(p.Badge,{variant:"muted",children:["Score ",e.trustScore]}),(0,a.jsxs)(p.Badge,{variant:"muted",children:[e.findingCount," findings"]})]})]},e.id))}),ej?(0,a.jsxs)(u.GlassCard,{strong:!0,className:"p-6",children:[(0,a.jsxs)("div",{className:"flex items-start gap-5",children:[(0,a.jsx)(j,{score:ej.trustScore,size:100}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h4",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:ej.target}),(0,a.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,a.jsx)(p.Badge,{variant:(0,p.riskVariant)(ej.riskLevel),children:ej.riskLevel}),(0,a.jsxs)(p.Badge,{variant:"muted",children:[ej.filesScanned," files"]}),(0,a.jsx)(p.Badge,{variant:"muted",children:ej.deepScan?"Deep":"Standard"})]})]})]}),(0,a.jsx)("div",{className:"mt-5 space-y-3",children:0===ej.findings.length?(0,a.jsx)("div",{className:"rounded-xl border border-[var(--sc-cyan)]/20 bg-[var(--sc-cyan)]/5 px-4 py-3 text-sm text-[var(--sc-cyan)]",children:"Clean — no findings."}):ej.findings.map((e,t)=>(0,a.jsxs)(u.GlassCard,{severity:e.severity,className:"p-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(p.Badge,{variant:(0,p.riskVariant)(e.severity),children:e.severity}),(0,a.jsx)("span",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e.title})]}),(0,a.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:e.description}),(0,a.jsx)(M,{finding:e})]},`${e.title}-${t}`))})]}):(0,a.jsx)(u.GlassCard,{className:"flex items-center justify-center p-8 text-sm text-[var(--sc-text-muted)]",children:"Select a scan from the list to view details."})]})]}),"watch"===n&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)(u.GlassCard,{strong:!0,className:"p-6",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Start Watching"}),(0,a.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-muted)]",children:"Monitor a directory for file changes and automatically scan for threats in real-time."}),(0,a.jsxs)("form",{className:"mt-4 flex flex-wrap items-end gap-3",onSubmit:e=>{e.preventDefault(),K.trim()&&em.mutate({target:K.trim(),deep:V})},children:[(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)("input",{value:K,onChange:e=>O(e.target.value),placeholder:"Directory path, e.g. /Users/michael/Development/project",className:"w-full rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-4 py-3 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan"})}),(0,a.jsxs)("button",{type:"button",onClick:()=>el.mutate("folder",{onSuccess:e=>{e.path&&O(e.path)}}),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] px-4 py-3 text-sm font-medium text-[var(--sc-text-secondary)] transition-all hover:bg-[var(--sc-surface-interactive-hover)] hover:text-[var(--sc-text-primary)]",children:[(0,a.jsx)(l,{size:14})," Browse"]}),(0,a.jsxs)("label",{className:"inline-flex items-center gap-2 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] px-3 py-3 text-sm text-[var(--sc-text-secondary)]",children:[(0,a.jsx)("input",{type:"checkbox",checked:V,onChange:e=>_(e.target.checked),className:"h-4 w-4 rounded accent-[var(--sc-cyan)]"}),"Deep"]}),(0,a.jsxs)(g.Button,{type:"submit",variant:"cyan",disabled:em.isPending||!K.trim(),children:[em.isPending?"Starting…":"Start Watch",(0,a.jsx)(i.Eye,{size:14})]})]}),em.isSuccess&&(0,a.jsxs)("p",{className:"mt-3 text-sm text-[var(--sc-cyan)]",children:["Watching ",em.data.root]}),em.isError&&(0,a.jsx)("p",{className:"mt-3 text-sm text-[var(--sc-coral)]",children:em.error instanceof Error?em.error.message:"Failed to start watch"})]}),eh.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"mb-3 text-sm font-semibold uppercase tracking-wider text-[var(--sc-text-muted)]",children:"Active Watchers (This Session)"}),(0,a.jsx)("div",{className:"grid gap-3 lg:grid-cols-2",children:eh.map(e=>(0,a.jsxs)(u.GlassCard,{className:"flex items-center justify-between p-4",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"truncate text-sm font-semibold text-[var(--sc-text-primary)]",children:e.root}),(0,a.jsxs)("p",{className:"text-xs text-[var(--sc-text-muted)]",children:["PID ",e.pid]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(p.Badge,{variant:"cyan",dot:!0,pulse:!0,children:"Watching"}),(0,a.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>ev.mutate(e.root),disabled:ev.isPending,children:"Stop"})]})]},e.root))})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsx)("h4",{className:"text-sm font-semibold uppercase tracking-wider text-[var(--sc-text-muted)]",children:"Session History"}),(0,a.jsx)("div",{className:"flex gap-2",children:["all","active","stale","ended"].map(e=>(0,a.jsx)("button",{onClick:()=>X(e),className:`rounded-lg px-3 py-1.5 text-xs font-medium capitalize transition-all ${H===e?"bg-[var(--sc-coral)] text-white":"bg-[var(--sc-surface-interactive)] text-[var(--sc-text-muted)] hover:text-[var(--sc-text-secondary)]"}`,children:e},e))})]}),0===en.length?(0,a.jsxs)(u.GlassCard,{className:"p-8 text-center text-sm text-[var(--sc-text-muted)]",children:["No watch sessions recorded yet. Start a watcher above or use ",(0,a.jsx)("code",{className:"font-mono text-[var(--sc-cyan)]",children:"shieldcortex xray --watch ./src"})," from the CLI."]}):(0,a.jsx)("div",{className:"grid gap-4 lg:grid-cols-2",children:en.map(e=>(0,a.jsxs)(u.GlassCard,{className:"p-5",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"truncate text-sm font-semibold text-[var(--sc-text-primary)]",children:e.root}),(0,a.jsxs)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:["Started ",P(e.startedAt)]})]}),(0,a.jsx)(p.Badge,{variant:"active"===e.state?"cyan":"stale"===e.state?"amber":"muted",dot:!0,pulse:"active"===e.state,children:e.state})]}),(0,a.jsx)("p",{className:"mt-2 text-sm text-[var(--sc-text-secondary)]",children:e.lastEventSummary??"No detections yet"}),(0,a.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,a.jsxs)(p.Badge,{variant:"muted",children:[e.changesDetected," changes"]}),(0,a.jsxs)(p.Badge,{variant:"muted",children:[e.findingsDetected," findings"]}),(0,a.jsx)(p.Badge,{variant:(0,p.riskVariant)(e.highestRiskLevel),children:e.highestRiskLevel})]})]},e.id))})]}),"activity"===n&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex gap-2",children:["all","scan","watch","preinstall"].map(e=>(0,a.jsx)("button",{onClick:()=>Q(e),className:`rounded-lg px-3 py-1.5 text-xs font-medium capitalize transition-all ${I===e?"bg-[var(--sc-coral)] text-white":"bg-[var(--sc-surface-interactive)] text-[var(--sc-text-muted)] hover:text-[var(--sc-text-secondary)]"}`,children:"all"===e?"All activity":e},e))}),0===ei.length?(0,a.jsx)(u.GlassCard,{className:"p-8 text-center text-sm text-[var(--sc-text-muted)]",children:"No matching automatic events yet."}):(0,a.jsx)("div",{className:"space-y-3",children:ei.map(e=>(0,a.jsx)(u.GlassCard,{className:"p-4",children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(o,{size:14,className:"shrink-0 text-[var(--sc-coral)]"}),(0,a.jsx)("span",{className:"text-sm font-semibold capitalize text-[var(--sc-text-primary)]",children:e.kind})]}),(0,a.jsx)("p",{className:"mt-1 truncate text-sm text-[var(--sc-text-secondary)]",children:e.target}),(0,a.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:e.summary})]}),(0,a.jsx)(p.Badge,{variant:"pass"===e.status?"safe":"blocked"===e.status?"critical":"warn"===e.status?"medium":"amber",children:e.status})]})},e.id))})]}),"findings"===n&&(0,a.jsxs)("div",{className:"space-y-4",children:[et&&(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,a.jsxs)(p.Badge,{variant:"coral",children:[et.new," new"]}),(0,a.jsxs)(p.Badge,{variant:"muted",children:[et.reviewed," reviewed"]}),(0,a.jsxs)(p.Badge,{variant:"cyan",children:[et.resolved," resolved"]}),(0,a.jsxs)(p.Badge,{variant:"amber",children:[et.quarantined," quarantined"]}),(0,a.jsxs)(p.Badge,{variant:"muted",children:[et.ignored," ignored"]}),(0,a.jsxs)(p.Badge,{variant:"muted",children:[et.total," total"]})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:[{key:"new",label:"Needs attention",accent:!0},{key:"reviewed",label:"Reviewed",accent:!1},{key:"resolved",label:"Resolved",accent:!1},{key:"ignored",label:"Ignored",accent:!1},{key:"quarantined",label:"Quarantined",accent:!1},{key:"all",label:"Everything",accent:!1}].map(({key:e,label:t,accent:s})=>(0,a.jsxs)("button",{onClick:()=>J(e),className:`rounded-lg px-3 py-1.5 text-xs font-medium transition-all ${U===e?s?"bg-[var(--sc-coral)] text-white":"bg-[var(--sc-cyan)] text-[var(--sc-bg-deep)]":"bg-[var(--sc-surface-interactive)] text-[var(--sc-text-muted)] hover:text-[var(--sc-text-secondary)]"}`,children:[t,"new"===e&&et&&et.new>0&&(0,a.jsx)("span",{className:"ml-1.5 rounded-full bg-white/20 px-1.5 py-0.5 text-[10px] font-bold",children:et.new})]},e))}),es?.findings&&0!==es.findings.length?(0,a.jsx)("div",{className:"space-y-3",children:es.findings.map(e=>(0,a.jsxs)(u.GlassCard,{severity:e.severity,className:"p-5",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)(p.Badge,{variant:(0,p.riskVariant)(e.severity),children:e.severity}),(0,a.jsx)(p.Badge,{variant:"muted",children:e.category}),e.systemFile&&(0,a.jsx)(p.Badge,{variant:"muted",children:"System file — likely safe"}),e.guidance?.urgency==="usually-safe"&&!e.systemFile&&(0,a.jsx)(p.Badge,{variant:"cyan",children:"Usually safe"}),e.guidance?.urgency==="act-now"&&(0,a.jsx)(p.Badge,{variant:"critical",dot:!0,pulse:!0,children:"Act now"})]}),(0,a.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:e.title}),e.guidance&&(0,a.jsxs)("div",{className:"mt-3 space-y-3 rounded-xl bg-[var(--sc-bg-elevated)] p-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--sc-text-muted)]",children:"What this means"}),(0,a.jsx)("p",{className:"mt-1 text-sm leading-relaxed text-[var(--sc-text-secondary)]",children:e.guidance.whatItMeans})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--sc-cyan)]",children:"What to do"}),(0,a.jsx)("p",{className:"mt-1 text-sm leading-relaxed text-[var(--sc-text-secondary)]",children:e.guidance.whatToDo})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--sc-text-muted)]",children:"False positive?"}),(0,a.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[var(--sc-text-muted)]",children:e.guidance.falsePositiveNote})]})]}),(e.file||e.evidence)&&(0,a.jsxs)("div",{className:"mt-3 space-y-0.5 font-mono text-xs text-[var(--sc-text-muted)]",children:[e.file&&(0,a.jsxs)("div",{children:["File: ",e.line?`${e.file}:${e.line}`:e.file]}),e.evidence&&(0,a.jsxs)("div",{children:["Evidence: ",e.evidence]})]}),(0,a.jsx)(M,{finding:e}),(0,a.jsx)("div",{className:"mt-2 text-xs text-[var(--sc-text-muted)]",children:P(e.detectedAt)}),(0,a.jsx)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3",children:(0,a.jsx)($,{findingId:e.id,status:e.status,hasFile:!!e.file,compact:!0})})]},e.id))}):(0,a.jsxs)(u.GlassCard,{className:"p-8 text-center",children:[(0,a.jsx)("p",{className:"text-sm text-[var(--sc-text-primary)]",children:"new"===U?"All clear — no findings need attention":`No ${"all"===U?"":U+" "}findings`}),(0,a.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"new"===U?"Run an X-Ray scan or start a watcher to monitor for threats.":"Findings move here when you take action on them."})]})]})]})})}e.s(["XRayOverview",()=>D],27918)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95659,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"bg-[var(--sc-coral)]/15 text-[var(--sc-coral)] border-[var(--sc-coral)]/30",high:"bg-[var(--sc-coral-mid)]/15 text-[var(--sc-coral-mid)] border-[var(--sc-coral-mid)]/30",medium:"bg-[var(--sc-amber)]/15 text-[var(--sc-amber)] border-[var(--sc-amber)]/30",low:"bg-[var(--sc-cyan-mid)]/15 text-[var(--sc-cyan-mid)] border-[var(--sc-cyan-mid)]/30",safe:"bg-[var(--sc-cyan)]/15 text-[var(--sc-cyan)] border-[var(--sc-cyan)]/30",info:"bg-[var(--sc-text-muted)]/15 text-[var(--sc-text-secondary)] border-[var(--sc-text-muted)]/30",coral:"bg-[var(--sc-coral)]/15 text-[var(--sc-coral)] border-[var(--sc-coral)]/30",cyan:"bg-[var(--sc-cyan)]/15 text-[var(--sc-cyan)] border-[var(--sc-cyan)]/30",amber:"bg-[var(--sc-amber)]/15 text-[var(--sc-amber)] border-[var(--sc-amber)]/30",muted:"bg-[var(--sc-surface-interactive)] text-[var(--sc-text-secondary)] border-[var(--sc-border)]"},s={critical:"bg-[var(--sc-coral)]",high:"bg-[var(--sc-coral-mid)]",medium:"bg-[var(--sc-amber)]",low:"bg-[var(--sc-cyan-mid)]",safe:"bg-[var(--sc-cyan)]",info:"bg-[var(--sc-text-muted)]",coral:"bg-[var(--sc-coral)]",cyan:"bg-[var(--sc-cyan)]",amber:"bg-[var(--sc-amber)]",muted:"bg-[var(--sc-text-muted)]"};function c({children:e,variant:c="muted",className:n,dot:i=!1,pulse:l=!1}){return(0,t.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-wider",r[c],n),children:[i&&(0,t.jsx)("span",{className:(0,a.cn)("h-1.5 w-1.5 rounded-full",s[c],l&&"animate-pulse")}),e]})}function n(e){let t=e.toUpperCase();return"CRITICAL"===t?"critical":"HIGH"===t?"high":"MEDIUM"===t?"medium":"LOW"===t?"low":"SAFE"===t?"safe":"info"}e.s(["Badge",()=>c,"riskVariant",()=>n])},16467,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"severity-critical",high:"severity-high",medium:"severity-medium",low:"severity-low",safe:"severity-safe",info:"severity-info"};function s({children:e,className:s,hover:c=!1,hoverCyan:n=!1,strong:i=!1,severity:l,onClick:o,selected:d=!1}){return(0,t.jsx)("div",{className:(0,a.cn)(i?"glass-card-strong":"glass-card",c&&"glass-card-hover cursor-pointer",n&&"glass-card-hover-cyan cursor-pointer",o&&!c&&!n&&"cursor-pointer",l&&r[l],d&&"border-[var(--sc-cyan)] shadow-[0_0_20px_var(--sc-glow-cyan)]",s),onClick:o,onKeyDown:o?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),o())}:void 0,role:o?"button":void 0,tabIndex:o?0:void 0,children:e})}e.s(["GlassCard",()=>s])},53615,84982,e=>{"use strict";var t=e.i(27493),a=e.i(76490);function r({className:e}){return(0,t.jsx)("div",{className:(0,a.cn)("animate-pulse rounded-xl bg-[var(--sc-surface-interactive)]",e)})}function s(){return(0,t.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(r,{className:"h-3 w-24"}),(0,t.jsx)(r,{className:"h-7 w-56"}),(0,t.jsx)(r,{className:"h-4 w-80"})]}),(0,t.jsx)(r,{className:"h-10 w-96"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(r,{className:"h-24"}),(0,t.jsx)(r,{className:"h-24"}),(0,t.jsx)(r,{className:"h-24"}),(0,t.jsx)(r,{className:"h-24"})]}),(0,t.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,t.jsx)(r,{className:"h-64"}),(0,t.jsx)(r,{className:"h-64"})]})]})}e.s(["PageSkeleton",()=>s],53615);let c=(0,e.i(24929).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>c],84982)},84012,e=>{"use strict";let t=(0,e.i(24929).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],84012)},25903,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"BailoutToCSR",{enumerable:!0,get:function(){return s}});let r=e.r(40909);function s({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new r.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},27601,(e,t,a)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"encodeURIPath",{enumerable:!0,get:function(){return r}})},54220,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"PreloadChunks",{enumerable:!0,get:function(){return l}});let r=e.r(27493),s=e.r(9854),c=e.r(13595),n=e.r(27601),i=e.r(54218);function l({moduleIds:e}){if("u">typeof window)return null;let t=c.workAsyncStorage.getStore();if(void 0===t)return null;let a=[];if(t.reactLoadableManifest&&e){let r=t.reactLoadableManifest;for(let t of e){if(!r[t])continue;let e=r[t].files;a.push(...e)}}if(0===a.length)return null;let l=(0,i.getDeploymentIdQueryOrEmptyString)();return(0,r.jsx)(r.Fragment,{children:a.map(e=>{let a=`${t.assetPrefix}/_next/${(0,n.encodeURIPath)(e)}${l}`;return e.endsWith(".css")?(0,r.jsx)("link",{precedence:"dynamic",href:a,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,s.preload)(a,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},73735,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return o}});let r=e.r(27493),s=e.r(4),c=e.r(25903),n=e.r(54220);function i(e){return{default:e&&"default"in e?e.default:e}}let l={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},o=function(e){let t={...l,...e},a=(0,s.lazy)(()=>t.loader().then(i)),o=t.loading;function d(e){let i=o?(0,r.jsx)(o,{isLoading:!0,pastDelay:!0,error:null}):null,l=!t.ssr||!!t.loading,d=l?s.Suspense:s.Fragment,u=t.ssr?(0,r.jsxs)(r.Fragment,{children:["u"<typeof window?(0,r.jsx)(n.PreloadChunks,{moduleIds:t.modules}):null,(0,r.jsx)(a,{...e})]}):(0,r.jsx)(c.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(a,{...e})});return(0,r.jsx)(d,{...l?{fallback:i}:{},children:u})}return d.displayName="LoadableComponent",d}},74133,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return s}});let r=e.r(77637)._(e.r(73735));function s(e,t){let a={};"function"==typeof e&&(a.loader=e);let s={...a,...t};return(0,r.default)({...s,modules:s.loadableGenerated?.modules})}("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esModule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},6847,e=>{"use strict";let t=(0,e.i(24929).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);e.s(["Search",()=>t],6847)},13808,e=>{"use strict";let t=(0,e.i(24929).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",()=>t],13808)},46194,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={coral:{icon:"text-[var(--sc-coral)]",iconBg:"bg-[var(--sc-coral)]/10",trendUp:"text-[var(--sc-coral)]",trendDown:"text-[var(--sc-cyan)]"},cyan:{icon:"text-[var(--sc-cyan)]",iconBg:"bg-[var(--sc-cyan)]/10",trendUp:"text-[var(--sc-cyan)]",trendDown:"text-[var(--sc-coral)]"},amber:{icon:"text-[var(--sc-amber)]",iconBg:"bg-[var(--sc-amber)]/10",trendUp:"text-[var(--sc-amber)]",trendDown:"text-[var(--sc-text-muted)]"},muted:{icon:"text-[var(--sc-text-secondary)]",iconBg:"bg-[var(--sc-surface-interactive)]",trendUp:"text-[var(--sc-cyan)]",trendDown:"text-[var(--sc-coral)]"}};function s({label:e,value:s,icon:c,trend:n,accent:i="cyan",className:l}){let o=r[i];return(0,t.jsx)("div",{className:(0,a.cn)("glass-card p-5",l),children:(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs font-medium uppercase tracking-wider text-[var(--sc-text-muted)]",children:e}),(0,t.jsx)("p",{className:"mt-2 text-2xl font-bold text-[var(--sc-text-primary)]",children:s}),n&&(0,t.jsxs)("p",{className:(0,a.cn)("mt-1 text-xs",n.value>=0?o.trendUp:o.trendDown),children:[n.value>=0?"+":"",n.value,"% ",n.label]})]}),(0,t.jsx)("div",{className:(0,a.cn)("rounded-xl p-2.5",o.iconBg),children:(0,t.jsx)(c,{size:20,className:o.icon})})]})})}e.s(["StatCard",()=>s])},77744,76624,23457,e=>{"use strict";let t=(0,e.i(24929).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",()=>t],77744);var a=e.i(27493),r=e.i(95659);function s({explanation:e}){return(0,a.jsxs)("div",{className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/70 p-3",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)(r.Badge,{variant:e.synthetic?"amber":"cyan",children:e.synthetic?"Fallback":"Local AI"}),(0,a.jsxs)(r.Badge,{variant:"muted",children:[Math.round(100*e.confidence),"% confidence"]})]}),(0,a.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:e.summary}),(0,a.jsx)("p",{className:"mt-1 text-sm leading-6 text-[var(--sc-text-secondary)]",children:e.whyItMatters}),e.riskSignals.length>0&&(0,a.jsx)("div",{className:"mt-3 flex flex-wrap gap-1.5",children:e.riskSignals.map(e=>(0,a.jsx)("span",{className:"rounded bg-[var(--sc-bg-elevated)] px-2 py-1 text-[11px] text-[var(--sc-text-secondary)]",children:e},e))}),e.evidence.length>0&&(0,a.jsx)("div",{className:"mt-3 space-y-2",children:e.evidence.map((e,t)=>(0,a.jsxs)("div",{className:"rounded border border-[var(--sc-border)] bg-[var(--sc-bg-surface)] px-2 py-1.5",children:[(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-[0.14em] text-[var(--sc-text-muted)]",children:e.reason}),(0,a.jsxs)("div",{className:"mt-1 break-words text-xs text-[var(--sc-text-primary)]",children:['"',e.snippet,'"']})]},`${e.snippet}-${t}`))}),e.nextSteps.length>0&&(0,a.jsxs)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3",children:[(0,a.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--sc-text-muted)]",children:"Next steps"}),(0,a.jsx)("div",{className:"mt-2 space-y-1",children:e.nextSteps.map(e=>(0,a.jsx)("div",{className:"text-xs leading-5 text-[var(--sc-text-secondary)]",children:e},e))})]})]})}e.s(["LocalAiExplanationPanel",()=>s],76624);var c=e.i(22534),n=e.i(71921),i=e.i(88969);let l=c.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function o(e){let t=await (0,i.gatedFetch)(`${l}/api/v1/local-ai/explain`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to generate local explanation"));return t.json()}function d(){return(0,n.useMutation)({mutationFn:o})}e.s(["useLocalAiExplain",()=>d],23457)},18509,e=>{"use strict";let t=(0,e.i(24929).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",()=>t],18509)},15771,e=>{"use strict";let t=(0,e.i(24929).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],15771)},51069,e=>{"use strict";let t=(0,e.i(24929).default)("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);e.s(["ShieldAlert",()=>t],51069)},63312,50279,e=>{"use strict";var t=e.i(22534),a=e.i(45688),r=e.i(71921),s=e.i(1235),c=e.i(88969);let n=t.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function i(){let e=await (0,c.authFetch)(`${n}/api/license/status`);if(!e.ok)throw Error("Failed to fetch license status");return e.json()}async function l(e){let t=await (0,c.authFetch)(`${n}/api/license/activate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e})});if(!t.ok)throw Error((await t.json().catch(()=>({error:"Activation failed"}))).error||"Activation failed");return t.json()}async function o(){let e=await (0,c.authFetch)(`${n}/api/license/deactivate`,{method:"POST"});if(!e.ok)throw Error("Failed to deactivate license");return e.json()}function d(){return(0,a.useQuery)({queryKey:["license-status"],queryFn:i,refetchInterval:6e4,retry:2})}function u(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:e=>l(e),onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}function m(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:o,onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}e.s(["useActivateLicense",()=>u,"useDeactivateLicense",()=>m,"useLicenseStatus",()=>d],63312),e.s(["PLAN_PRICING",0,{pro:{label:"Pro",price:"£29/mo"},team:{label:"Team",price:"£99/mo"}},"TIER_BG",0,{free:"bg-[var(--sc-surface-interactive)]",pro:"bg-[var(--sc-cyan)]/10",team:"bg-[var(--sc-coral)]/10",enterprise:"bg-[var(--sc-amber)]/10"},"TIER_COLOURS",0,{free:"text-[var(--sc-text-muted)]",pro:"text-[var(--sc-cyan)]",team:"text-[var(--sc-coral)]",enterprise:"text-[var(--sc-amber)]"},"TIER_LABELS",0,{free:"Free",pro:"Pro",team:"Team",enterprise:"Enterprise"}],50279)},75025,e=>{"use strict";let t=(0,e.i(24929).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],75025)},19711,e=>{"use strict";var t=e.i(27493),a=e.i(66949);let r=(0,e.i(24929).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);var s=e.i(63312),c=e.i(50279),n=e.i(81523);function i({feature:e,children:i,label:l}){let{data:o}=(0,s.useLicenseStatus)();if(!o)return(0,t.jsx)(t.Fragment,{children:i});let d=o.features.find(t=>t.feature===e);if(!d||d.enabled)return(0,t.jsx)(t.Fragment,{children:i});let u=d.requiredTier;return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"pointer-events-none select-none opacity-20 blur-[3px]",children:i}),(0,t.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center rounded-2xl bg-[var(--sc-card-bg-strong)] backdrop-blur-sm",children:[(0,t.jsx)("div",{className:"rounded-xl bg-[var(--sc-coral)]/10 p-3",children:(0,t.jsx)(a.Lock,{size:24,className:"text-[var(--sc-coral)]"})}),(0,t.jsxs)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:[c.TIER_LABELS[u]," Feature"]}),l&&(0,t.jsx)("p",{className:"mt-1 max-w-xs text-center text-xs text-[var(--sc-text-muted)]",children:l}),(0,t.jsx)("a",{href:"https://shieldcortex.ai/pricing",target:"_blank",rel:"noopener noreferrer",className:"mt-4",children:(0,t.jsxs)(n.Button,{variant:"coral",size:"sm",glow:!0,children:["Upgrade to ",c.TIER_LABELS[u],(0,t.jsx)(r,{size:12})]})})]})]})}e.s(["ProFeatureGate",()=>i],19711)},9070,e=>{e.v(t=>Promise.all(["static/chunks/5274a6127d41c42c.js"].map(t=>e.l(t))).then(()=>t(13213)))}]);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,27241,e=>{"use strict";let t,a,r,s,c;var i=e.i(27493),l=e.i(16871),n=e.i(4),o=e.i(53615),d=e.i(18509),x=e.i(24929);let m=(0,x.default)("radio-tower",[["path",{d:"M4.9 16.1C1 12.2 1 5.8 4.9 1.9",key:"s0qx1y"}],["path",{d:"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5",key:"1idnkw"}],["circle",{cx:"12",cy:"9",r:"2",key:"1092wv"}],["path",{d:"M16.2 4.8c2 2 2.26 5.11.8 7.47",key:"ojru2q"}],["path",{d:"M19.1 1.9a9.96 9.96 0 0 1 0 14.1",key:"rhi7fg"}],["path",{d:"M9.5 18h5",key:"mfy3pd"}],["path",{d:"m8 22 4-11 4 11",key:"25yftu"}]]);var p=e.i(27528),u=e.i(51069),v=e.i(46194),h=e.i(40950),g=e.i(22534),b=e.i(45688),y=e.i(71921),j=e.i(1235),f=e.i(88969);let N=g.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function w(){let e=await (0,f.authFetch)(`${N}/api/iron-dome/status`);if(!e.ok)throw Error(await (0,f.readApiError)(e,"Failed to fetch Iron Dome status"));return e.json()}async function k(e){let t=await (0,f.authFetch)(`${N}/api/iron-dome/activate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profile:e})});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to activate Iron Dome"));return t.json()}async function C(){let e=await (0,f.authFetch)(`${N}/api/iron-dome/deactivate`,{method:"POST"});if(!e.ok)throw Error(await (0,f.readApiError)(e,"Failed to deactivate Iron Dome"));return e.json()}async function S(e){let t=await (0,f.authFetch)(`${N}/api/iron-dome/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to update Iron Dome configuration"));return t.json()}async function _(e){let t=await (0,f.authFetch)(`${N}/api/iron-dome/scan`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:e})});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to scan text"));return t.json()}async function A(){let e=await (0,f.authFetch)(`${N}/api/iron-dome/emergency-stop`,{method:"POST"});if(!e.ok)throw Error(await (0,f.readApiError)(e,"Failed to trigger emergency stop"));return e.json()}async function E(e){let t=await (0,f.authFetch)(`${N}/api/iron-dome/resume`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:e||"Resumed via dashboard"})});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to resume operations"));return t.json()}async function P(){let e=await (0,f.authFetch)(`${N}/api/control/status`);if(!e.ok)throw Error(await (0,f.readApiError)(e,"Failed to fetch control status"));return e.json()}async function L(e){let t=new URLSearchParams;e&&t.set("limit",e.toString());let a=await (0,f.authFetch)(`${N}/api/iron-dome/audit?${t}`);if(!a.ok)throw Error(await (0,f.readApiError)(a,"Failed to fetch Iron Dome audit"));return a.json()}function z(){return(0,b.useQuery)({queryKey:["iron-dome-status"],queryFn:w,refetchInterval:3e4,retry:2})}var F=e.i(87353);let T=g.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function $(e){let t=new URLSearchParams;e?.limit&&t.set("limit",String(e.limit)),e?.severity&&t.set("severity",e.severity),e?.outcome&&t.set("outcome",e.outcome),e?.tool&&t.set("tool",e.tool);let a=await (0,f.authFetch)(`${T}/api/v1/intercepts?${t}`);if(!a.ok)throw Error(await (0,f.readApiError)(a,"Failed to fetch interceptor events"));return a.json()}function I(e){return(0,b.useQuery)({queryKey:["interceptor-events",e],queryFn:()=>$(e),refetchInterval:3e4,retry:2})}var M=e.i(84982);let q=(0,x.default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);var R=e.i(15771),D=e.i(77715),O=e.i(66949),Q=e.i(71259);let K=(0,x.default)("radio",[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),B=(0,x.default)("shield-off",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71",key:"1jlk70"}],["path",{d:"M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264",key:"18rp1v"}]]),U=(0,x.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]),V=(0,x.default)("scan",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]),H=(0,x.default)("octagon-x",[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]),J=(0,x.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]),G=(0,x.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);var W=e.i(77744),X=e.i(19711);let Z=g.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001",Y=[{id:1,name:"Block API key patterns",priority:1,condition_type:"regex",condition_value:"sk-[a-zA-Z0-9]{32,}",action:"block",enabled:!0},{id:2,name:"Quarantine code injection",priority:2,condition_type:"regex",condition_value:"eval\\(|Function\\(",action:"quarantine",enabled:!0},{id:3,name:"Allow internal docs",priority:10,condition_type:"source",condition_value:"agent:docs-helper",action:"allow",enabled:!1}],ee=[{id:1,name:"Internal tool abuse",category:"tool_misuse",severity:"high",regex:"execute_tool\\(.*?delete|drop|truncate",description:"Detects attempts to use internal tools for destructive operations.",enabled:!0},{id:2,name:"PII exfiltration",category:"data_leak",severity:"critical",regex:"(SSN|social.security|\\d{3}-\\d{2}-\\d{4})",description:"Catches social security number patterns in agent memory writes.",enabled:!0},{id:3,name:"Prompt override attempt",category:"injection",severity:"medium",regex:"ignore.*(previous|above|prior).*instructions",description:"Detects common prompt injection override phrases.",enabled:!0}],et=[{id:1,name:"Strict Healthcare",description:"Blocks all PII patterns, requires approval for external actions, whitelists only HIPAA-compliant channels.",is_active:!0},{id:2,name:"Dev Sandbox",description:"Permissive mode for development. Allows all channels, logs but does not block. Ideal for testing.",is_active:!1}];function ea(){let e,t,a,{data:r,isLoading:s,isLocked:c}={...e=(0,b.useQuery)({queryKey:["custom-patterns"],queryFn:()=>(0,f.gatedFetch)(`${Z}/api/patterns`).then(e=>{if(!e.ok)throw Error("Failed to fetch custom patterns");return e.json()}),retry:(e,t)=>!(t instanceof f.FeatureLockedError)&&e<2,refetchInterval:3e4}),isLocked:e.error instanceof f.FeatureLockedError},l=(t=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>(0,f.gatedFetch)(`${Z}/api/patterns`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{t.invalidateQueries({queryKey:["custom-patterns"]})}})),o=(a=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>(0,f.gatedFetch)(`${Z}/api/patterns/${e}`,{method:"DELETE"}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{a.invalidateQueries({queryKey:["custom-patterns"]})}})),d=(0,y.useMutation)({mutationFn:({id:e,text:t})=>(0,f.gatedFetch)(`${Z}/api/patterns/${e}/test`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:t})}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)}))}),[x,m]=(0,n.useState)(!1),[p,u]=(0,n.useState)(null),[v,h]=(0,n.useState)({name:"",category:"custom",severity:"medium",regex:"",description:""}),g=r?.patterns??[],N=!0,w="";if(v.regex)try{new RegExp(v.regex)}catch(e){N=!1,w=e.message}return c?(0,i.jsx)(er,{}):(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)(q,{size:16,className:"text-[var(--sc-coral)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Custom Injection Patterns"}),(0,i.jsxs)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:[g.length,"/50"]})]}),(0,i.jsxs)("button",{onClick:()=>m(!x),className:"flex items-center gap-1 px-2 py-1 text-xs bg-[var(--sc-coral)]/20 text-[var(--sc-coral)] rounded hover:bg-[var(--sc-coral)]/30 transition-colors",children:[(0,i.jsx)(G,{size:12})," Add Pattern"]})]}),x&&(0,i.jsxs)("form",{onSubmit:e=>{e.preventDefault(),l.mutate(v,{onSuccess:()=>{m(!1),h({name:"",category:"custom",severity:"medium",regex:"",description:""})}})},className:"p-3 bg-[var(--sc-bg-elevated)] rounded-lg space-y-2",children:[(0,i.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,i.jsx)("input",{value:v.name,onChange:e=>h(t=>({...t,name:e.target.value})),placeholder:"Pattern name",required:!0,className:"px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)]"}),(0,i.jsxs)("select",{value:v.severity,onChange:e=>h(t=>({...t,severity:e.target.value})),className:"px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)]",children:[(0,i.jsx)("option",{value:"critical",children:"Critical"}),(0,i.jsx)("option",{value:"high",children:"High"}),(0,i.jsx)("option",{value:"medium",children:"Medium"}),(0,i.jsx)("option",{value:"low",children:"Low"})]})]}),(0,i.jsxs)("div",{className:"relative",children:[(0,i.jsx)("input",{value:v.regex,onChange:e=>h(t=>({...t,regex:e.target.value})),placeholder:"Regex pattern",required:!0,className:`w-full px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border rounded text-[var(--sc-text-primary)] font-mono placeholder:text-[var(--sc-text-muted)] ${N?"border-[var(--sc-border)]":"border-[var(--sc-coral)]"}`}),!N&&(0,i.jsx)("p",{className:"text-[10px] text-[var(--sc-coral)] mt-0.5",children:w})]}),(0,i.jsx)("input",{value:v.description,onChange:e=>h(t=>({...t,description:e.target.value})),placeholder:"Description (optional)",className:"w-full px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)]"}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)("button",{type:"submit",disabled:l.isPending||!N,className:"px-3 py-1 text-xs bg-[var(--sc-coral)] text-[var(--sc-text-primary)] rounded hover:bg-[var(--sc-coral)] disabled:opacity-50",children:l.isPending?"Creating...":"Create"}),(0,i.jsx)("button",{type:"button",onClick:()=>m(!1),className:"px-3 py-1 text-xs text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]",children:"Cancel"})]}),l.error&&(0,i.jsx)("p",{className:"text-xs text-[var(--sc-coral)]",children:l.error.message})]}),s?(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] py-4 text-center",children:"Loading patterns..."}):0===g.length?(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] py-4 text-center",children:'No custom patterns yet. Click "Add Pattern" to create one.'}):(0,i.jsx)("div",{className:"space-y-1",children:g.map(e=>(0,i.jsxs)("div",{className:"px-3 py-2 bg-[var(--sc-bg-elevated)] rounded text-xs space-y-1",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)("span",{className:"text-[var(--sc-text-primary)] flex-1 font-medium",children:e.name}),(0,i.jsx)("span",{className:`px-1.5 py-0.5 rounded text-[10px] font-medium ${"critical"===e.severity||"high"===e.severity?"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)]":"medium"===e.severity?"bg-[var(--sc-amber)]/20 text-[var(--sc-amber)]":"bg-[var(--sc-bg-elevated)]/20 text-[var(--sc-text-secondary)]"}`,children:e.severity}),(0,i.jsx)("button",{onClick:()=>u(p?.id===e.id?null:{id:e.id,text:""}),className:"text-[var(--sc-text-muted)] hover:text-[var(--sc-cyan)]",title:"Test pattern",children:(0,i.jsx)(J,{size:12})}),(0,i.jsx)("button",{onClick:()=>o.mutate(e.id),className:"text-[var(--sc-text-muted)] hover:text-[var(--sc-coral)]",children:(0,i.jsx)(W.Trash2,{size:12})})]}),(0,i.jsx)("code",{className:"text-[var(--sc-text-muted)] text-[10px] block truncate",children:e.regex}),p?.id===e.id&&(0,i.jsxs)("div",{className:"flex gap-2 mt-1",children:[(0,i.jsx)("input",{value:p.text,onChange:t=>u({id:e.id,text:t.target.value}),placeholder:"Test text...",className:"flex-1 px-2 py-1 text-[10px] bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)]"}),(0,i.jsx)("button",{onClick:()=>d.mutate({id:e.id,text:p.text}),disabled:!p.text,className:"px-2 py-1 text-[10px] bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)] rounded hover:bg-[var(--sc-cyan)]/30 disabled:opacity-50",children:"Test"}),d.data&&(0,i.jsxs)("span",{className:"text-[10px] text-[var(--sc-text-secondary)] self-center",children:[d.data.count," matches"]})]})]},e.id))})]})}function er(){return(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)(q,{size:16,className:"text-[var(--sc-coral)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Custom Injection Patterns"}),(0,i.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:"0/50"})]}),(0,i.jsx)("div",{className:"space-y-1",children:ee.map(e=>(0,i.jsxs)("div",{className:"px-3 py-2 bg-[var(--sc-bg-elevated)] rounded text-xs space-y-1",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)("span",{className:"text-[var(--sc-text-primary)] flex-1 font-medium",children:e.name}),(0,i.jsx)("span",{className:`px-1.5 py-0.5 rounded text-[10px] font-medium ${"critical"===e.severity||"high"===e.severity?"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)]":"bg-[var(--sc-amber)]/20 text-[var(--sc-amber)]"}`,children:e.severity})]}),(0,i.jsx)("code",{className:"text-[var(--sc-text-muted)] text-[10px] block truncate",children:e.regex})]},e.id))})]})}function es(){return(0,i.jsx)("div",{className:"bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded-xl p-4",children:(0,i.jsx)(X.ProFeatureGate,{feature:"custom_injection_patterns",label:"Define up to 50 custom regex patterns for detecting domain-specific threats.",children:(0,i.jsx)(ea,{})})})}var ec=e.i(16511);let ei=g.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";function el(){let e,t,a,r,{data:s,isLoading:c,isLocked:l}={...e=(0,b.useQuery)({queryKey:["custom-policies"],queryFn:()=>(0,f.gatedFetch)(`${ei}/api/iron-dome/policies`).then(e=>{if(!e.ok)throw Error("Failed to fetch custom policies");return e.json()}),retry:(e,t)=>!(t instanceof f.FeatureLockedError)&&e<2,refetchInterval:3e4}),isLocked:e.error instanceof f.FeatureLockedError},o=(t=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>(0,f.gatedFetch)(`${ei}/api/iron-dome/policies`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{t.invalidateQueries({queryKey:["custom-policies"]})}})),d=(a=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>(0,f.gatedFetch)(`${ei}/api/iron-dome/policies/${e}`,{method:"DELETE"}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{a.invalidateQueries({queryKey:["custom-policies"]})}})),x=(r=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>(0,f.gatedFetch)(`${ei}/api/iron-dome/policies/${e}/activate`,{method:"PUT"}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{r.invalidateQueries({queryKey:["custom-policies"]})}})),[m,u]=(0,n.useState)(!1),[v,h]=(0,n.useState)({name:"",description:""}),g=s?.policies??[];return l?(0,i.jsx)(en,{}):(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)(p.Shield,{size:16,className:"text-[var(--sc-coral)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Custom Iron Dome Policies"}),(0,i.jsxs)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:[g.length,"/10"]})]}),(0,i.jsxs)("button",{onClick:()=>u(!m),className:"flex items-center gap-1 px-2 py-1 text-xs bg-[var(--sc-coral)]/20 text-[var(--sc-coral)] rounded hover:bg-[var(--sc-coral)]/30 transition-colors",children:[(0,i.jsx)(G,{size:12})," Create Policy"]})]}),m&&(0,i.jsxs)("form",{onSubmit:e=>{e.preventDefault(),o.mutate({name:v.name,description:v.description,config:{}},{onSuccess:()=>{u(!1),h({name:"",description:""})}})},className:"p-3 bg-[var(--sc-bg-elevated)]/50 rounded-lg space-y-2",children:[(0,i.jsx)("input",{value:v.name,onChange:e=>h(t=>({...t,name:e.target.value})),placeholder:"Policy name",required:!0,className:"w-full px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)]"}),(0,i.jsx)("textarea",{value:v.description,onChange:e=>h(t=>({...t,description:e.target.value})),placeholder:"Description",rows:2,className:"w-full px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] resize-none"}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)("button",{type:"submit",disabled:o.isPending,className:"px-3 py-1 text-xs bg-[var(--sc-coral)] text-[var(--sc-text-primary)] rounded hover:bg-[var(--sc-coral)] disabled:opacity-50",children:o.isPending?"Creating...":"Create"}),(0,i.jsx)("button",{type:"button",onClick:()=>u(!1),className:"px-3 py-1 text-xs text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]",children:"Cancel"})]}),o.error&&(0,i.jsx)("p",{className:"text-xs text-[var(--sc-coral)]",children:o.error.message})]}),c?(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] py-4 text-center",children:"Loading policies..."}):0===g.length?(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] py-4 text-center",children:'No custom policies yet. Click "Create Policy" to get started.'}):(0,i.jsx)("div",{className:"space-y-1",children:g.map(e=>(0,i.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2 bg-[var(--sc-bg-elevated)]/30 rounded text-xs",children:[(0,i.jsxs)("div",{className:"flex-1",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)("span",{className:"text-[var(--sc-text-primary)] font-medium",children:e.name}),1===e.is_active&&(0,i.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)] text-[10px] font-medium",children:"Active"})]}),e.description&&(0,i.jsx)("p",{className:"text-[var(--sc-text-muted)] text-[10px] mt-0.5",children:e.description})]}),!e.is_active&&(0,i.jsxs)("button",{onClick:()=>x.mutate(e.id),className:"flex items-center gap-1 px-2 py-1 text-[10px] bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)] rounded hover:bg-[var(--sc-cyan)]/30",title:"Set active",children:[(0,i.jsx)(ec.Check,{size:10})," Activate"]}),(0,i.jsx)("button",{onClick:()=>d.mutate(e.id),className:"text-[var(--sc-text-muted)] hover:text-[var(--sc-coral)]",children:(0,i.jsx)(W.Trash2,{size:12})})]},e.id))})]})}function en(){return(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)(p.Shield,{size:16,className:"text-[var(--sc-coral)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Custom Iron Dome Policies"}),(0,i.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:"0/10"})]}),(0,i.jsx)("div",{className:"space-y-1",children:et.map(e=>(0,i.jsx)("div",{className:"flex items-center gap-3 px-3 py-2 bg-[var(--sc-bg-elevated)]/30 rounded text-xs",children:(0,i.jsxs)("div",{className:"flex-1",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)("span",{className:"text-[var(--sc-text-primary)] font-medium",children:e.name}),e.is_active&&(0,i.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)] text-[10px] font-medium",children:"Active"})]}),(0,i.jsx)("p",{className:"text-[var(--sc-text-muted)] text-[10px] mt-0.5",children:e.description})]})},e.id))})]})}function eo(){return(0,i.jsx)("div",{className:"bg-[var(--sc-bg-surface)]/50 border border-[var(--sc-border)] rounded-xl p-4",children:(0,i.jsx)(X.ProFeatureGate,{feature:"custom_iron_dome_policies",label:"Create custom Iron Dome policies with tailored action gates and trust levels.",children:(0,i.jsx)(el,{})})})}let ed=[{id:"personal",label:"Personal",description:"Lighter touch for solo use",icon:p.Shield},{id:"enterprise",label:"Enterprise",description:"Financial & data protection",icon:O.Lock},{id:"school",label:"School",description:"GDPR strict, pupil data guarded",icon:U},{id:"paranoid",label:"Paranoid",description:"Everything requires approval",icon:d.AlertTriangle}],ex=[{name:"Injection Scanner",description:"40+ patterns across 8 categories",icon:V},{name:"Instruction Gateway",description:"Trusted channel validation",icon:K},{name:"Action Gate",description:"Approve / block external actions",icon:O.Lock},{name:"PII Guard",description:"Block sensitive data output",icon:Q.Eye},{name:"Kill Switch",description:"Emergency stop phrase",icon:B},{name:"Sub-Agent Control",description:"Restrict spawned agent operations",icon:U}],em={critical:"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)] border-[var(--sc-coral)]/30",high:"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)] border-[var(--sc-coral)]/30",medium:"bg-[var(--sc-amber)]/20 text-[var(--sc-amber)] border-[var(--sc-amber)]/30",low:"bg-[var(--sc-bg-elevated)]/20 text-[var(--sc-text-secondary)] border-[var(--sc-border)]/30"},ep={CRITICAL:"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)]",HIGH:"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)]",MEDIUM:"bg-[var(--sc-amber)]/20 text-[var(--sc-amber)]",LOW:"bg-[var(--sc-bg-elevated)]/20 text-[var(--sc-text-secondary)]",NONE:"bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)]"};function eu(){let e,t,a,r,s,{data:c,isLoading:l}=z(),{data:o}=(0,b.useQuery)({queryKey:["iron-dome-audit",50],queryFn:()=>L(50),refetchInterval:3e4,retry:2}),d=(e=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>k(e),onSuccess:()=>{e.invalidateQueries({queryKey:["iron-dome-status"]}),e.invalidateQueries({queryKey:["iron-dome-audit"]})}})),x=(t=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:C,onSuccess:()=>{t.invalidateQueries({queryKey:["iron-dome-status"]})}})),m=(a=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>S(e),onSuccess:()=>{a.invalidateQueries({queryKey:["iron-dome-status"]}),a.invalidateQueries({queryKey:["iron-dome-audit"]})}})),u=(0,y.useMutation)({mutationFn:_}),v=(r=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:A,onSuccess:()=>{r.invalidateQueries({queryKey:["iron-dome-status"]}),r.invalidateQueries({queryKey:["iron-dome-audit"]}),r.invalidateQueries({queryKey:["control-status"]})}})),h=(s=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>E(e),onSuccess:()=>{s.invalidateQueries({queryKey:["control-status"]}),s.invalidateQueries({queryKey:["iron-dome-status"]}),s.invalidateQueries({queryKey:["iron-dome-audit"]})}})),{data:g}=(0,b.useQuery)({queryKey:["control-status"],queryFn:P,refetchInterval:5e3,retry:2}),[f,N]=(0,n.useState)(""),[w,F]=(0,n.useState)(null),[T,$]=(0,n.useState)(""),I=c?.enabled??!1,O=g?.killSwitchActive??!1,Q=g?.killSwitchMeta??null,K=c?.profile,U=c?.config,G=U?.killPhrase??"",[W,X]=(0,n.useState)(G),[Z,Y]=(0,n.useState)(G);G!==Z&&(Y(G),X(G));let ee=o?.logs??[],et=ee.filter(e=>"BLOCK"===e.firewall_result).length,ea=ee.filter(e=>"ALLOW"===e.firewall_result).length,er=!!U&&W.trim()!==(U?.killPhrase??"");return(0,i.jsxs)("div",{className:"space-y-6",children:[(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[l?(0,i.jsx)("span",{className:"text-[10px] text-[var(--sc-text-muted)] animate-pulse",children:"Loading..."}):(0,i.jsx)("span",{className:`text-[10px] font-medium px-2 py-0.5 rounded-full ${I?"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)] border border-[var(--sc-coral)]/30":"bg-[var(--sc-bg-elevated)]/50 text-[var(--sc-text-muted)]"}`,children:I?"ACTIVE":"INACTIVE"}),I&&(0,i.jsxs)("button",{onClick:()=>{x.mutate()},disabled:x.isPending,className:"flex items-center gap-1.5 px-3 py-1.5 bg-[var(--sc-coral)]/10 border border-[var(--sc-coral)]/30 hover:bg-[var(--sc-coral)]/20 disabled:opacity-50 rounded-lg text-xs font-medium text-[var(--sc-coral)] transition-colors",children:[x.isPending?(0,i.jsx)(M.Loader2,{size:12,className:"animate-spin"}):(0,i.jsx)(B,{size:12}),"Deactivate"]})]}),(0,i.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,i.jsxs)("div",{className:"glass-card p-6",children:[(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)] mb-3",children:"Security Profiles"}),(0,i.jsx)("div",{className:"grid grid-cols-2 gap-2",children:ed.map(({id:e,label:t,description:a,icon:r})=>(0,i.jsxs)("button",{onClick:()=>{d.mutate(e)},disabled:d.isPending,className:`text-left p-3 rounded-lg border transition-colors ${K===e?"border-[var(--sc-coral)]/50 bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]":"border-[var(--sc-border)] bg-[var(--sc-bg-elevated)]/50 text-[var(--sc-text-secondary)] hover:border-[var(--sc-text-muted)]"}`,children:[(0,i.jsxs)("div",{className:"flex items-center gap-1.5 mb-1",children:[(0,i.jsx)(r,{size:12}),(0,i.jsx)("span",{className:"text-xs font-medium",children:t})]}),(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:a})]},e))})]}),(0,i.jsxs)("div",{className:"glass-card p-6",children:[(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)] mb-3",children:"Module Status"}),(0,i.jsx)("div",{className:"space-y-2",children:ex.map(({name:e,description:t,icon:a})=>(0,i.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2 rounded-lg bg-[var(--sc-bg-elevated)]/50",children:[(0,i.jsx)(a,{size:14,className:I?"text-[var(--sc-coral)]":"text-[var(--sc-text-muted)]"}),(0,i.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,i.jsx)("div",{className:"text-xs font-medium text-[var(--sc-text-primary)]",children:e}),(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)] truncate",children:t})]}),(0,i.jsx)("span",{className:`w-2 h-2 rounded-full ${I?"bg-[var(--sc-coral)]":"bg-[var(--sc-text-muted)]"}`})]},e))})]})]}),U&&(0,i.jsxs)("div",{className:"glass-card p-6",children:[(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)] mb-3",children:"Active Configuration"}),(0,i.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 text-xs",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)] uppercase mb-1",children:"Trusted Channels"}),(0,i.jsx)("div",{className:"flex flex-wrap gap-1",children:U.trustedChannels.map(e=>(0,i.jsx)("span",{className:"px-1.5 py-0.5 bg-[var(--sc-bg-elevated)] rounded text-[var(--sc-text-secondary)]",children:e},e))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)] uppercase mb-1",children:"Requires Approval"}),(0,i.jsx)("div",{className:"flex flex-wrap gap-1",children:U.requireApproval.map(e=>(0,i.jsx)("span",{className:"px-1.5 py-0.5 bg-[var(--sc-coral)]/10 border border-[var(--sc-coral)]/20 rounded text-[var(--sc-coral)]",children:e},e))})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)] uppercase mb-1",children:"Kill Phrase"}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)("input",{type:"text",value:W,onChange:e=>X(e.target.value),placeholder:"Set emergency stop phrase",className:"w-full bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] rounded-lg px-3 py-2 text-xs text-[var(--sc-text-primary)] font-mono placeholder:text-[var(--sc-text-muted)] focus:outline-none focus:ring-1 focus:ring-[var(--sc-coral)]"}),(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)("button",{onClick:()=>m.mutate({killPhrase:W.trim()}),disabled:m.isPending||!W.trim()||!er,className:"px-3 py-1.5 rounded-lg bg-[var(--sc-coral)] hover:bg-[var(--sc-coral)]/80 disabled:opacity-50 text-[11px] font-medium text-[var(--sc-text-primary)] transition-colors",children:m.isPending?"Saving...":"Save phrase"}),(0,i.jsx)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:I?"Say this in a conversation to trigger lockdown.":"This will apply the next time Iron Dome is active."})]})]})]})]})]}),O?(0,i.jsxs)("div",{className:"glass-card-strong p-6 border-2 !border-[var(--sc-coral)]/50 animate-pulse-slow",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,i.jsx)(H,{size:18,className:"text-[var(--sc-coral)]"}),(0,i.jsx)("h3",{className:"text-sm font-bold text-[var(--sc-coral)] uppercase tracking-wide",children:"Kill Switch Active"}),(0,i.jsx)("span",{className:"ml-auto text-[10px] bg-[var(--sc-coral)]/20 text-[var(--sc-coral)] px-2 py-0.5 rounded-full border border-[var(--sc-coral)]/30",children:"LOCKDOWN"})]}),(0,i.jsx)("p",{className:"text-xs text-[var(--sc-coral)]/80 mb-2",children:"All agent operations are blocked. No memory reads, writes, graph queries, or consolidation. Iron Dome remains active and continues protecting."}),Q&&(0,i.jsxs)("div",{className:"bg-[var(--sc-coral)]/10 border border-[var(--sc-coral)]/20 rounded-lg p-3 mb-4 space-y-1",children:[(0,i.jsxs)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:[(0,i.jsx)("span",{className:"text-[var(--sc-coral)] font-medium",children:"Triggered:"})," ",new Date(Q.triggeredAt).toLocaleString()]}),(0,i.jsxs)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:[(0,i.jsx)("span",{className:"text-[var(--sc-coral)] font-medium",children:"Source:"})," ","kill_phrase"===Q.source?`Kill phrase "${Q.phrase}"`:"manual"===Q.source?"Manual (dashboard)":"mcp_tool"===Q.source?"MCP tool":Q.source]}),void 0!==Q.memoryCountAtTrigger&&(0,i.jsxs)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:[(0,i.jsx)("span",{className:"text-[var(--sc-coral)] font-medium",children:"Memories at trigger:"})," ",Q.memoryCountAtTrigger]})]}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)("input",{type:"text",value:T,onChange:e=>$(e.target.value),placeholder:"Reason for resuming (required)...",className:"w-full bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] rounded-lg px-3 py-2 text-xs text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus:outline-none focus:ring-1 focus:ring-green-500"}),(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsxs)("button",{onClick:()=>{T.trim()&&(h.mutate(T.trim()),$(""))},disabled:h.isPending||!T.trim(),className:"flex items-center gap-1.5 px-4 py-2 bg-[var(--sc-cyan)] hover:bg-[var(--sc-cyan-mid)] disabled:opacity-50 rounded-lg text-xs font-medium text-[var(--sc-text-primary)] transition-colors",children:[h.isPending?(0,i.jsx)(M.Loader2,{size:12,className:"animate-spin"}):(0,i.jsx)(J,{size:12}),"Resume Agent"]}),(0,i.jsx)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Only resume after you've investigated the threat"})]})]})]}):(0,i.jsxs)("div",{className:"glass-card p-6 !border-[var(--sc-coral)]/30",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,i.jsx)(H,{size:14,className:"text-[var(--sc-coral)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-coral)]",children:"Emergency Stop"})]}),(0,i.jsx)("p",{className:"text-xs text-[var(--sc-text-secondary)] mb-3",children:"Immediately halts your agent when you suspect it has been compromised or is acting on poisoned data. Blocks ALL operations — no reads, writes, or modifications. Iron Dome stays active."}),U?.killPhrase&&(0,i.jsxs)("p",{className:"text-[10px] text-[var(--sc-text-muted)] mb-3",children:["Kill phrase: ",(0,i.jsxs)("span",{className:"font-mono text-[var(--sc-text-secondary)]",children:['"',U.killPhrase,'"']})," — say this in conversation for hands-free stop"]}),(0,i.jsxs)("button",{onClick:()=>v.mutate(),disabled:v.isPending,className:"flex items-center gap-1.5 px-4 py-2 bg-[var(--sc-coral)] hover:bg-[var(--sc-coral)]/80 disabled:opacity-50 rounded-lg text-xs font-bold text-[var(--sc-text-primary)] uppercase tracking-wider transition-colors",children:[v.isPending?(0,i.jsx)(M.Loader2,{size:12,className:"animate-spin"}):(0,i.jsx)(H,{size:14}),"Emergency Stop"]})]}),(0,i.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,i.jsxs)("div",{className:"glass-card p-6",children:[(0,i.jsxs)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)] mb-3",children:[(0,i.jsx)(V,{size:14,className:"inline mr-1.5 text-[var(--sc-coral)]"}),"Injection Scanner"]}),(0,i.jsx)("textarea",{value:f,onChange:e=>N(e.target.value),placeholder:"Paste suspicious text to scan for injection patterns...",className:"w-full h-28 bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] rounded-lg p-3 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] resize-none focus:outline-none focus:ring-1 focus:ring-[var(--sc-coral)] focus:border-[var(--sc-coral)]"}),(0,i.jsxs)("button",{onClick:()=>{f.trim()&&u.mutate(f,{onSuccess:e=>F(e)})},disabled:u.isPending||!f.trim(),className:"mt-2 flex items-center gap-1.5 px-3 py-1.5 bg-[var(--sc-coral)] hover:bg-[var(--sc-coral)]/80 disabled:opacity-50 rounded-lg text-xs font-medium text-[var(--sc-text-primary)] transition-colors",children:[u.isPending?(0,i.jsx)(M.Loader2,{size:12,className:"animate-spin"}):(0,i.jsx)(q,{size:12}),"Scan"]}),w&&(0,i.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[w.clean?(0,i.jsx)(R.CheckCircle2,{size:14,className:"text-[var(--sc-cyan)]"}):(0,i.jsx)(D.XCircle,{size:14,className:"text-[var(--sc-coral)]"}),(0,i.jsx)("span",{className:`text-[10px] font-medium px-2 py-0.5 rounded-full ${ep[w.riskLevel]??"bg-[var(--sc-bg-elevated)]/20 text-[var(--sc-text-secondary)]"}`,children:w.riskLevel}),(0,i.jsx)("span",{className:"text-xs text-[var(--sc-text-secondary)]",children:w.summary})]}),w.detections.map((e,t)=>(0,i.jsxs)("div",{className:`border rounded-lg p-3 ${em[e.severity]??"border-[var(--sc-border)]"}`,children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,i.jsx)("span",{className:"text-[10px] font-medium uppercase",children:e.severity}),(0,i.jsx)("span",{className:"text-xs text-[var(--sc-text-primary)]",children:e.category.replace(/_/g," ")})]}),(0,i.jsx)("p",{className:"text-[11px] text-[var(--sc-text-secondary)] mb-1",children:e.description}),(0,i.jsx)("code",{className:"text-[10px] text-[var(--sc-text-muted)] bg-[var(--sc-bg-elevated)] px-1.5 py-0.5 rounded block truncate",children:e.match})]},t))]})]}),(0,i.jsxs)("div",{className:"glass-card p-6",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Event Feed"}),(0,i.jsxs)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:["Last ",ee.length," events"]})]}),(0,i.jsxs)("div",{className:"grid grid-cols-3 gap-2 mb-3",children:[(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)]/50 rounded-lg p-2 text-center",children:[(0,i.jsx)("div",{className:"text-sm font-bold text-[var(--sc-text-primary)]",children:ee.length}),(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Total"})]}),(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)]/50 rounded-lg p-2 text-center",children:[(0,i.jsx)("div",{className:"text-sm font-bold text-[var(--sc-coral)]",children:et}),(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Blocked"})]}),(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)]/50 rounded-lg p-2 text-center",children:[(0,i.jsx)("div",{className:"text-sm font-bold text-[var(--sc-cyan)]",children:ea}),(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Allowed"})]})]}),(0,i.jsx)("div",{className:"space-y-1 max-h-72 overflow-y-auto",children:0===ee.length?(0,i.jsxs)("div",{className:"text-center py-6",children:[(0,i.jsx)(p.Shield,{size:20,className:"text-[var(--sc-text-muted)] mx-auto mb-1.5"}),(0,i.jsx)("p",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"No Iron Dome events yet"})]}):ee.map((e,t)=>(0,i.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded-md bg-[var(--sc-bg-elevated)]/50 text-xs",children:[(0,i.jsx)("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${"BLOCK"===e.firewall_result?"bg-[var(--sc-coral)]":"bg-[var(--sc-cyan)]"}`}),(0,i.jsx)("span",{className:"text-[var(--sc-text-secondary)] truncate flex-1",children:(e.reason??"").replace(/^\[iron-dome:\w+\]\s*/,"")}),(0,i.jsx)("span",{className:"text-[10px] text-[var(--sc-text-muted)] shrink-0",children:new Date(e.timestamp).toLocaleTimeString()})]},e.id??t))})]})]}),(0,i.jsx)(es,{}),(0,i.jsx)(eo,{})]})}var ev=e.i(42098);let eh=(0,x.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);var eg=e.i(13808);let eb=(0,x.default)("tags",[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]]),ey=(0,x.default)("wand-sparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);var ej=e.i(17278);let ef=(0,x.default)("square-check-big",[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),eN=(0,x.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]),ew=(0,x.default)("square-minus",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}]]);function ek({action:e,item:t,onConfirm:a,onCancel:r}){let[s,c]=(0,n.useState)(""),l="yes"===s.trim().toLowerCase(),o="memory_file"===t.source_type;return(0,i.jsx)("div",{className:"fixed inset-0 bg-black/60 flex items-center justify-center z-50",children:(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded-xl p-6 max-w-md w-full mx-4",children:[(0,i.jsxs)("h3",{className:"text-sm font-semibold text-[var(--sc-text-primary)] mb-2",children:["approve"===e?"Approve":"Reject"," quarantined item?"]}),(0,i.jsx)("p",{className:"text-xs text-[var(--sc-text-secondary)] mb-1",children:(0,i.jsx)("strong",{children:t.title||"Untitled"})}),(0,i.jsx)("p",{className:"text-xs text-[var(--sc-text-muted)] mb-4",children:"approve"===e?o?"This will mark the memory-file finding as reviewed. The source file is not modified.":"This will approve the item and promote it into memory.":o?"This will dismiss the memory-file finding. The source file is not deleted or edited.":"This will permanently discard the memory."}),(0,i.jsxs)("div",{className:"mb-4",children:[(0,i.jsxs)("label",{className:"text-xs text-[var(--sc-text-secondary)] block mb-1",children:["Type ",(0,i.jsx)("strong",{className:"text-[var(--sc-text-primary)]",children:"YES"})," to confirm:"]}),(0,i.jsx)("input",{type:"text",value:s,onChange:e=>c(e.target.value),className:"w-full bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] text-[var(--sc-text-primary)] text-sm rounded-lg px-3 py-2 focus:ring-[var(--sc-cyan)] focus:border-[var(--sc-cyan)]",autoFocus:!0,onKeyDown:e=>{"Enter"===e.key&&l&&a(),"Escape"===e.key&&r()}})]}),(0,i.jsxs)("div",{className:"flex gap-2 justify-end",children:[(0,i.jsx)("button",{onClick:r,className:"px-3 py-1.5 text-xs text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)] transition-colors",children:"Cancel"}),(0,i.jsx)("button",{onClick:a,disabled:!l,className:`px-3 py-1.5 text-xs rounded-lg transition-colors ${l?"approve"===e?"bg-[var(--sc-cyan)] text-[var(--sc-text-primary)] hover:bg-[var(--sc-cyan-mid)]":"bg-[var(--sc-coral)] text-[var(--sc-text-primary)] hover:bg-[var(--sc-coral-mid)]":"bg-[var(--sc-bg-elevated)] text-[var(--sc-text-muted)] cursor-not-allowed"}`,children:"approve"===e&&o?"Mark reviewed":"approve"===e?"Approve":"Reject"})]})]})})}function eC({annotation:e}){var t;return(0,i.jsxs)("div",{className:"mb-3 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)]/70 p-3",children:[(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,i.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--sc-cyan)]",children:[(0,i.jsx)(eh,{size:12})," Local AI Explainer"]}),(0,i.jsx)("span",{className:"rounded border border-[var(--sc-border)] px-2 py-0.5 text-[10px] uppercase tracking-[0.12em] text-[var(--sc-text-secondary)]",children:e.category.replace(/_/g," ")}),(0,i.jsx)("span",{className:`rounded border px-2 py-0.5 text-[10px] uppercase tracking-[0.12em] ${"approve"===(t=e.suggestedAction)?"text-[var(--sc-cyan)] bg-[var(--sc-cyan)]/10 border-[var(--sc-cyan)]/25":"reject"===t?"text-[var(--sc-coral)] bg-[var(--sc-coral)]/10 border-[var(--sc-coral)]/25":"create_rule"===t?"text-[var(--sc-amber)] bg-[var(--sc-amber)]/10 border-[var(--sc-amber)]/25":"text-[var(--sc-text-secondary)] bg-[var(--sc-surface-interactive)] border-[var(--sc-border)]"}`,children:e.suggestedAction.replace(/_/g," ")}),(0,i.jsxs)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:[Math.round(100*e.confidence),"% confidence"]}),e.similarGroupKey&&(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 text-[10px] text-[var(--sc-text-muted)]",children:[(0,i.jsx)(eb,{size:11})," ",e.similarGroupKey]})]}),(0,i.jsx)("p",{className:"mt-2 text-xs leading-5 text-[var(--sc-text-primary)]",children:e.summary}),(0,i.jsx)("p",{className:"mt-1 text-[11px] leading-5 text-[var(--sc-text-secondary)]",children:e.reasoning}),e.evidence.length>0&&(0,i.jsx)("div",{className:"mt-2 space-y-1.5",children:e.evidence.map((e,t)=>(0,i.jsxs)("div",{className:"rounded border border-[var(--sc-border)] bg-[var(--sc-bg-surface)] px-2 py-1.5",children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:e.reason}),(0,i.jsxs)("div",{className:"mt-0.5 text-[11px] text-[var(--sc-text-primary)] break-words",children:['"',e.snippet,'"']})]},`${e.snippet}-${t}`))})]})}function eS(){let{projectFilter:e}=(0,ev.useDashboardStore)(),[t,a]=(0,n.useState)("pending"),{data:r,isLoading:s}=(0,F.useQuarantine)(t,100,e||void 0),{data:c}=(0,F.useReviewCopilotStatus)(),l=(0,F.useApproveQuarantine)(),o=(0,F.useRejectQuarantine)(),x=(0,F.useBulkApproveQuarantine)(),m=(0,F.useBulkRejectQuarantine)(),p=(0,F.useAnnotateQuarantine)(),u=(0,F.useAnnotatePendingQuarantine)(),[v,h]=(0,n.useState)(null),[g,b]=(0,n.useState)(new Set),[y,j]=(0,n.useState)(null),f=l.error?.message||o.error?.message||x.error?.message||m.error?.message||p.error?.message||u.error?.message||null,N=r?.items??[],w=N.filter(e=>"pending"===e.status),k=N.filter(e=>e.annotation),C=w.filter(e=>!e.annotation),S=w.filter(e=>g.has(e.id)).filter(e=>"memory_file"===e.source_type).length,_=(()=>{let e=new Map;for(let t of k){let a=t.annotation?.similarGroupKey;a&&e.set(a,(e.get(a)??0)+1)}return[...e.entries()].sort((e,t)=>t[1]-e[1]).slice(0,3)})(),A=w.length>0&&w.every(e=>g.has(e.id)),E=w.some(e=>g.has(e.id)),P=p.isPending||u.isPending,L=!!(c?.enabled&&c.featureEnabled&&c.modelCached);return(0,i.jsxs)("div",{className:"space-y-6",children:[v&&(0,i.jsx)(ek,{action:v.action,item:v.item,onConfirm:()=>{v&&("approve"===v.action?l.mutate(v.item.id):o.mutate({id:v.item.id}),h(null))},onCancel:()=>h(null)}),y&&(0,i.jsx)("div",{className:"fixed inset-0 bg-black/60 flex items-center justify-center z-50",children:(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded-xl p-6 max-w-md w-full mx-4",children:[(0,i.jsxs)("h3",{className:"text-sm font-semibold text-[var(--sc-text-primary)] mb-2",children:["approve"===y?"Approve":"Reject"," ",g.size," item",1!==g.size?"s":"","?"]}),(0,i.jsx)("p",{className:"text-xs text-[var(--sc-text-secondary)] mb-4",children:"approve"===y?S>0?"Memory-file findings will be marked reviewed without editing files. Other selected items will be promoted into memory.":"This will approve all selected items and promote them into memory.":S>0?"Memory-file findings will be dismissed without editing files. Other selected memories will be discarded.":"This will permanently discard all selected memories."}),(0,i.jsxs)("div",{className:"flex gap-2 justify-end",children:[(0,i.jsx)("button",{onClick:()=>j(null),className:"px-3 py-1.5 text-xs text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)] transition-colors",children:"Cancel"}),(0,i.jsxs)("button",{onClick:()=>{if(!y||0===g.size)return;let e=Array.from(g);"approve"===y?x.mutate(e):m.mutate(e),b(new Set),j(null)},className:`px-3 py-1.5 text-xs rounded-lg transition-colors ${"approve"===y?"bg-[var(--sc-cyan)] text-[var(--sc-text-primary)] hover:bg-[var(--sc-cyan-mid)]":"bg-[var(--sc-coral)] text-[var(--sc-text-primary)] hover:bg-[var(--sc-coral-mid)]"}`,children:["approve"===y?"Approve":"Reject"," ",g.size," item",1!==g.size?"s":""]})]})]})}),(0,i.jsx)(X.ProFeatureGate,{feature:"local_ai_explainer",label:"Use a local model to explain and group quarantined items without sending content to the cloud.",children:(0,i.jsx)("div",{className:"glass-card p-5",children:(0,i.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between",children:[(0,i.jsxs)("div",{children:[(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,i.jsxs)("h3",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--sc-text-primary)]",children:[(0,i.jsx)(eg.Sparkles,{size:16,className:"text-[var(--sc-cyan)]"}),"Local AI Explainer"]}),(0,i.jsx)("span",{className:`rounded border px-2 py-0.5 text-[10px] uppercase tracking-[0.12em] ${c?.enabled?"border-[var(--sc-cyan)]/25 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]":"border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] text-[var(--sc-text-muted)]"}`,children:c?.enabled?"enabled":"disabled"}),(0,i.jsx)("span",{className:`rounded border px-2 py-0.5 text-[10px] uppercase tracking-[0.12em] ${c?.modelCached?"border-[var(--sc-cyan)]/25 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]":"border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] text-[var(--sc-text-muted)]"}`,children:c?.modelCached?"model cached":"model not cached"})]}),(0,i.jsx)("div",{className:"mt-2 text-xs leading-5 text-[var(--sc-text-secondary)]",children:c?.enabled?c.modelCached?"Explain unreviewed quarantine items locally; approve and reject decisions stay manual.":"Download the local model first: shieldcortex review-copilot download-model":"Enable from the CLI first: shieldcortex review-copilot enable"}),(0,i.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 text-[10px] text-[var(--sc-text-muted)]",children:[(0,i.jsxs)("span",{className:C.length>0?"text-[var(--sc-amber)]":"",children:[C.length," need explanation"]}),(0,i.jsxs)("span",{children:[k.length," explained in this view"]}),_.map(([e,t])=>(0,i.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,i.jsx)(eb,{size:11})," ",e,": ",t]},e))]})]}),(0,i.jsx)("div",{className:"flex flex-wrap gap-2",children:(0,i.jsxs)("button",{onClick:()=>{u.mutate({limit:Math.min(Math.max(C.length,1),100),project:e||void 0})},disabled:!L||P||0===C.length,className:"inline-flex items-center gap-1.5 rounded-lg bg-[var(--sc-cyan)]/10 px-3 py-1.5 text-xs font-semibold text-[var(--sc-cyan)] transition-colors hover:bg-[var(--sc-cyan)]/20 disabled:pointer-events-none disabled:opacity-45",children:[u.isPending?(0,i.jsx)(M.Loader2,{size:13,className:"animate-spin"}):(0,i.jsx)(ey,{size:13}),"Explain all"]})})]})})}),(0,i.jsxs)("div",{className:"glass-card p-5",children:[(0,i.jsx)("div",{className:"flex items-center justify-between",children:(0,i.jsx)("div",{className:"flex gap-1 bg-[var(--sc-bg-elevated)] rounded-lg p-0.5",children:["pending","approved","rejected"].map(e=>(0,i.jsx)("button",{onClick:()=>{a(e),b(new Set)},className:`px-3 py-1 text-xs rounded-md transition-colors capitalize ${t===e?"bg-[var(--sc-cyan)] text-[var(--sc-text-primary)]":"text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:e},e))})}),"pending"===t&&w.length>0&&(0,i.jsxs)("div",{className:"flex items-center gap-3 mt-3",children:[(0,i.jsxs)("button",{onClick:()=>{A?b(new Set):b(new Set(w.map(e=>e.id)))},className:"flex items-center gap-1.5 text-xs text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)] transition-colors",children:[A?(0,i.jsx)(ef,{size:14,className:"text-[var(--sc-cyan)]"}):E?(0,i.jsx)(ew,{size:14,className:"text-[var(--sc-cyan)]"}):(0,i.jsx)(eN,{size:14}),A?"Deselect all":"Select all"]}),E&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:[g.size," selected"]}),(0,i.jsxs)("button",{onClick:()=>j("approve"),className:"flex items-center gap-1 px-2.5 py-1 text-xs bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)] rounded-lg hover:bg-[var(--sc-cyan)]/20 transition-colors",children:[(0,i.jsx)(ec.Check,{size:12})," Approve"]}),(0,i.jsxs)("button",{onClick:()=>j("reject"),className:"flex items-center gap-1 px-2.5 py-1 text-xs bg-[var(--sc-coral)]/10 text-[var(--sc-coral)] rounded-lg hover:bg-[var(--sc-coral)]/20 transition-colors",children:[(0,i.jsx)(ej.X,{size:12})," Reject"]})]})]})]}),f&&(0,i.jsx)("div",{className:"glass-card p-5 border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 text-sm text-[var(--sc-coral)]",children:f}),(0,i.jsx)("div",{children:s?(0,i.jsx)("div",{className:"glass-card p-5 flex items-center justify-center h-32",children:(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] animate-pulse",children:"Loading quarantine items..."})}):0===N.length?(0,i.jsxs)("div",{className:"glass-card p-5 flex flex-col items-center justify-center h-32 text-[var(--sc-text-muted)]",children:[(0,i.jsx)(d.AlertTriangle,{size:24,className:"mb-2 text-[var(--sc-text-muted)]"}),(0,i.jsxs)("span",{className:"text-xs",children:["No ",t," items"]})]}):(0,i.jsx)("div",{className:"space-y-3",children:N.map(e=>{let t=(()=>{try{return JSON.parse(e.threat_indicators)}catch{return[]}})(),a="memory_file"===e.source_type;return(0,i.jsxs)("div",{className:`glass-card p-5 ${g.has(e.id)?"border-[var(--sc-cyan)]/50":"pending"===e.status&&!e.annotation?"border-[var(--sc-amber)]/35":""}`,children:[(0,i.jsxs)("div",{className:"flex items-start justify-between mb-2",children:[(0,i.jsxs)("div",{className:"flex items-start gap-2.5",children:["pending"===e.status&&(0,i.jsx)("button",{onClick:()=>{var t;return t=e.id,void b(e=>{let a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a})},className:"mt-0.5 text-[var(--sc-text-muted)] hover:text-[var(--sc-cyan)] transition-colors shrink-0",children:g.has(e.id)?(0,i.jsx)(ef,{size:14,className:"text-[var(--sc-cyan)]"}):(0,i.jsx)(eN,{size:14})}),(0,i.jsxs)("div",{children:[(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,i.jsx)("h4",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e.title||"Untitled"}),"pending"===e.status&&!e.annotation&&(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 rounded border border-[var(--sc-amber)]/25 bg-[var(--sc-amber)]/10 px-2 py-0.5 text-[9px] font-semibold uppercase tracking-[0.12em] text-[var(--sc-amber)]",children:[(0,i.jsx)(eh,{size:10})," Needs explanation"]})]}),(0,i.jsxs)("div",{className:"text-[10px] text-[var(--sc-text-muted)] mt-0.5",children:[e.source_type," · ",new Date(e.created_at).toLocaleString(),e.anomaly_score>0&&(0,i.jsxs)("span",{className:`ml-2 ${e.anomaly_score>.5?"text-[var(--sc-coral)]":"text-[var(--sc-amber)]"}`,children:["Anomaly: ",e.anomaly_score.toFixed(2)]})]}),a&&(0,i.jsx)("div",{className:"mt-1 break-all font-mono text-[10px] text-[var(--sc-text-muted)]",children:e.source_identifier})]})]}),(0,i.jsx)("span",{className:"text-[10px] text-[var(--sc-coral)] bg-[var(--sc-coral)]/10 px-2 py-0.5 rounded",children:e.reason?.slice(0,50)||"Threat detected"})]}),(0,i.jsx)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3 mb-3 text-xs text-[var(--sc-text-primary)] whitespace-pre-wrap break-words",children:e.content?.slice(0,500)||"No content"}),t.length>0&&(0,i.jsx)("div",{className:"flex gap-1 mb-3 flex-wrap",children:t.map((e,t)=>(0,i.jsx)("span",{className:"text-[9px] text-[var(--sc-amber)] bg-[var(--sc-amber)]/10 px-1.5 py-0.5 rounded",children:e},t))}),e.annotation&&(0,i.jsx)(eC,{annotation:e.annotation}),"pending"===e.status&&(0,i.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,i.jsxs)("button",{onClick:()=>p.mutate(e.id),disabled:!L||p.isPending||u.isPending,className:"flex items-center gap-1 px-3 py-1.5 text-xs bg-[var(--sc-bg-elevated)] text-[var(--sc-text-secondary)] border border-[var(--sc-border)] rounded-lg hover:text-[var(--sc-cyan)] transition-colors disabled:pointer-events-none disabled:opacity-45",children:[p.isPending?(0,i.jsx)(M.Loader2,{size:12,className:"animate-spin"}):(0,i.jsx)(ey,{size:12}),e.annotation?"Re-explain":"Explain"]}),(0,i.jsxs)("button",{onClick:()=>h({action:"approve",item:e}),disabled:l.isPending||x.isPending,className:"flex items-center gap-1 px-3 py-1.5 text-xs bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)] rounded-lg hover:bg-[var(--sc-cyan)]/20 transition-colors",children:[(0,i.jsx)(ec.Check,{size:12})," ",a?"Mark reviewed":"Approve"]}),(0,i.jsxs)("button",{onClick:()=>h({action:"reject",item:e}),disabled:o.isPending||m.isPending,className:"flex items-center gap-1 px-3 py-1.5 text-xs bg-[var(--sc-coral)]/10 text-[var(--sc-coral)] rounded-lg hover:bg-[var(--sc-coral)]/20 transition-colors",children:[(0,i.jsx)(ej.X,{size:12})," Reject"]})]}),e.reviewed_at&&(0,i.jsxs)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:["approved"===e.status?"Approved":"Rejected"," by ",e.reviewed_by," at ",new Date(e.reviewed_at).toLocaleString()]})]},e.id)})})})]})}let e_=(0,x.default)("download",[["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"}]]),eA=(0,x.default)("file-braces",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]);var eE=e.i(75025);let eP=g.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";function eL(){let e=(0,y.useMutation)({mutationFn:async({format:e,startTime:t,endTime:a})=>{let r=new URLSearchParams({format:e});t&&r.set("startTime",t),a&&r.set("endTime",a);let s=await (0,f.gatedFetch)(`${eP}/api/audit/export?${r}`);if(!s.ok)throw Error((await s.json().catch(()=>({}))).error||"Export failed");let c=await s.blob(),i=URL.createObjectURL(c),l=document.createElement("a");return l.href=i,l.download=`shieldcortex-audit-${Date.now()}.${"csv"===e?"csv":"json"}`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(i),200),{success:!0}}}),[t,a]=(0,n.useState)("json");return(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)(e_,{size:16,className:"text-[var(--sc-cyan)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Export Audit Logs"})]}),(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsxs)("div",{className:"flex rounded-lg overflow-hidden border border-[var(--sc-border)]",children:[(0,i.jsxs)("button",{onClick:()=>a("json"),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors ${"json"===t?"bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)]":"bg-[var(--sc-bg-elevated)] text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:[(0,i.jsx)(eA,{size:12})," JSON"]}),(0,i.jsxs)("button",{onClick:()=>a("csv"),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs transition-colors ${"csv"===t?"bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)]":"bg-[var(--sc-bg-elevated)] text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:[(0,i.jsx)(eE.FileText,{size:12})," CSV"]})]}),(0,i.jsxs)("button",{onClick:()=>e.mutate({format:t}),disabled:e.isPending,className:"flex items-center gap-1.5 px-4 py-1.5 text-xs bg-[var(--sc-cyan)] text-[var(--sc-text-primary)] rounded-lg hover:bg-[var(--sc-cyan)] disabled:opacity-50 transition-colors",children:[(0,i.jsx)(e_,{size:12}),e.isPending?"Exporting...":"Export"]})]}),e.error&&(0,i.jsx)("p",{className:"text-xs text-[var(--sc-coral)]",children:e.error.message}),e.isSuccess&&(0,i.jsx)("p",{className:"text-xs text-[var(--sc-cyan)]",children:"Export downloaded successfully."})]})}function ez(){return(0,i.jsx)("div",{className:"bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded-xl p-4",children:(0,i.jsx)(X.ProFeatureGate,{feature:"audit_export",label:"Export your full audit trail as JSON or CSV for compliance reporting.",children:(0,i.jsx)(eL,{})})})}var eF=e.i(76490);function eT({className:e,...t}){return(0,i.jsx)("div",{"data-slot":"card",className:(0,eF.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}function e$({className:e,...t}){return(0,i.jsx)("div",{"data-slot":"card-header",className:(0,eF.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function eI({className:e,...t}){return(0,i.jsx)("div",{"data-slot":"card-content",className:(0,eF.cn)("px-6",e),...t})}function eM(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}var eq=Symbol.for("react.lazy"),eR=n[" use ".trim().toString()];function eD(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===eq&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}var eO=((c=n.forwardRef((e,t)=>{let{children:a,...r}=e;if(eD(a)&&"function"==typeof eR&&(a=eR(a._payload)),n.isValidElement(a)){var s;let e,c,i=(s=a,(c=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(c=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),l=function(e,t){let a={...t};for(let r in t){let s=e[r],c=t[r];/^on[A-Z]/.test(r)?s&&c?a[r]=(...e)=>{let t=c(...e);return s(...e),t}:s&&(a[r]=s):"style"===r?a[r]={...s,...c}:"className"===r&&(a[r]=[s,c].filter(Boolean).join(" "))}return{...e,...a}}(r,a.props);return a.type!==n.Fragment&&(l.ref=t?function(...e){return t=>{let a=!1,r=e.map(e=>{let r=eM(e,t);return a||"function"!=typeof r||(a=!0),r});if(a)return()=>{for(let t=0;t<r.length;t++){let a=r[t];"function"==typeof a?a():eM(e[t],null)}}}}(t,i):i),n.cloneElement(a,l)}return n.Children.count(a)>1?n.Children.only(null):null})).displayName="Slot.SlotClone",t=c,(a=n.forwardRef((e,a)=>{let{children:r,...s}=e;eD(r)&&"function"==typeof eR&&(r=eR(r._payload));let c=n.Children.toArray(r),l=c.find(eK);if(l){let e=l.props.children,r=c.map(t=>t!==l?t:n.Children.count(e)>1?n.Children.only(null):n.isValidElement(e)?e.props.children:null);return(0,i.jsx)(t,{...s,ref:a,children:n.isValidElement(e)?n.cloneElement(e,void 0,r):null})}return(0,i.jsx)(t,{...s,ref:a,children:r})})).displayName="Slot.Slot",a),eQ=Symbol("radix.slottable");function eK(e){return n.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===eQ}var eB=e.i(2941);let eU=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,eV=eB.clsx,eH=(r="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",s={variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-[var(--sc-text-primary)] hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}},e=>{var t;if((null==s?void 0:s.variants)==null)return eV(r,null==e?void 0:e.class,null==e?void 0:e.className);let{variants:a,defaultVariants:c}=s,i=Object.keys(a).map(t=>{let r=null==e?void 0:e[t],s=null==c?void 0:c[t];if(null===r)return null;let i=eU(r)||eU(s);return a[t][i]}),l=e&&Object.entries(e).reduce((e,t)=>{let[a,r]=t;return void 0===r||(e[a]=r),e},{});return eV(r,i,null==s||null==(t=s.compoundVariants)?void 0:t.reduce((e,t)=>{let{class:a,className:r,...s}=t;return Object.entries(s).every(e=>{let[t,a]=e;return Array.isArray(a)?a.includes({...c,...l}[t]):({...c,...l})[t]===a})?[...e,a,r]:e},[]),null==e?void 0:e.class,null==e?void 0:e.className)});function eJ({className:e,variant:t="default",size:a="default",asChild:r=!1,...s}){return(0,i.jsx)(r?eO:"button",{"data-slot":"button","data-variant":t,"data-size":a,className:(0,eF.cn)(eH({variant:t,size:a,className:e})),...s})}var eG=e.i(76624),eW=e.i(23457);let eX={ALLOW:{color:"#22C55E",bg:"rgba(34, 197, 94, 0.15)",label:"Allowed"},BLOCK:{color:"#EF4444",bg:"rgba(239, 68, 68, 0.15)",label:"Blocked"},QUARANTINE:{color:"#EAB308",bg:"rgba(234, 179, 8, 0.15)",label:"Quarantined"}},eZ={PUBLIC:{color:"#94a3b8",bg:"rgba(148, 163, 184, 0.15)"},INTERNAL:{color:"#60a5fa",bg:"rgba(96, 165, 250, 0.15)"},CONFIDENTIAL:{color:"#f59e0b",bg:"rgba(245, 158, 11, 0.15)"},RESTRICTED:{color:"#ef4444",bg:"rgba(239, 68, 68, 0.15)"}},eY={instruction_injection:{color:"#ef4444",bg:"rgba(239, 68, 68, 0.15)"},privilege_escalation:{color:"#ef4444",bg:"rgba(239, 68, 68, 0.15)"},credential_leak:{color:"#ef4444",bg:"rgba(239, 68, 68, 0.15)"},encoding_obfuscation:{color:"#f59e0b",bg:"rgba(245, 158, 11, 0.15)"},fragmented_payload:{color:"#f59e0b",bg:"rgba(245, 158, 11, 0.15)"},external_url:{color:"#f59e0b",bg:"rgba(245, 158, 11, 0.15)"},pipeline_error:{color:"#94a3b8",bg:"rgba(148, 163, 184, 0.15)"}};function e0(e){return e>=.7?"#22C55E":e>=.4?"#EAB308":"#EF4444"}function e1(e){return e>.5?"#EF4444":e>.2?"#EAB308":"#94a3b8"}function e2({entry:e,onClose:t,onViewMemory:a}){let[r,s]=(0,n.useState)(!1),c=(0,eW.useLocalAiExplain)(),l=eX[e.firewall_result]||eX.ALLOW,o=eZ[e.sensitivity_level]||eZ.PUBLIC,d=function(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}(e.threat_indicators),x=function(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}(e.blocked_patterns),m=(0,n.useCallback)(()=>{let t=JSON.stringify(e,null,2);navigator.clipboard.writeText(t).then(()=>{s(!0),setTimeout(()=>s(!1),1500)})},[e]),p=(0,n.useCallback)(()=>{c.mutate({kind:"audit_event",title:`${e.firewall_result} audit event`,content:[`Audit ID: ${e.id}`,`Result: ${e.firewall_result}`,`Source: ${e.source_type}:${e.source_identifier}`,e.project?`Project: ${e.project}`:"",`Trust score: ${e.trust_score}`,`Anomaly score: ${e.anomaly_score}`,`Sensitivity: ${e.sensitivity_level}`,null!==e.fragmentation_score?`Fragmentation score: ${e.fragmentation_score}`:"",d.length?`Threat indicators: ${d.join(", ")}`:"",x.length?`Blocked patterns:
|
|
2
|
+
${x.join("\n")}`:"",e.reason?`Reason:
|
|
3
|
+
${e.reason}`:""].filter(Boolean).join("\n\n"),project:e.project,source:`${e.source_type}:${e.source_identifier}`,signals:[e.firewall_result,e.sensitivity_level,...d],metadata:{auditId:e.id,memoryId:e.memory_id,trustScore:e.trust_score,anomalyScore:e.anomaly_score,pipelineDurationMs:e.pipeline_duration_ms}})},[x,e,c,d]);return(0,i.jsxs)(eT,{className:"bg-[var(--sc-bg-surface)] border-[var(--sc-border)] overflow-hidden",children:[(0,i.jsxs)(e$,{className:"border-b border-[var(--sc-border)] pb-3",children:[(0,i.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)("span",{className:"px-2.5 py-1 rounded-md text-xs font-bold",style:{backgroundColor:l.bg,color:l.color},children:l.label}),(0,i.jsx)("span",{className:"px-2 py-0.5 rounded text-[10px] font-medium",style:{backgroundColor:o.bg,color:o.color},children:e.sensitivity_level})]}),(0,i.jsx)(eJ,{variant:"ghost",size:"sm",onClick:t,className:"text-[var(--sc-text-secondary)] hover:text-white -mt-1",children:"✕"})]}),(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-secondary)] mt-2",children:new Date(e.timestamp).toLocaleString()}),e.project&&(0,i.jsxs)("div",{className:"text-[10px] text-[var(--sc-text-muted)] mt-1",children:["Project: ",e.project]})]}),(0,i.jsxs)(eI,{className:"p-4 space-y-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("h4",{className:"text-xs font-medium text-[var(--sc-text-secondary)] mb-2",children:"Source"}),(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3",children:[(0,i.jsx)("div",{className:"flex items-center gap-2 mb-1",children:(0,i.jsx)("span",{className:"px-1.5 py-0.5 rounded text-[10px] font-medium bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]",children:e.source_type})}),e.source_identifier&&(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-primary)] mt-1 font-mono break-all",children:e.source_identifier})]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("h4",{className:"text-xs font-medium text-[var(--sc-text-secondary)] mb-2",children:"Scores"}),(0,i.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3",children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Trust"}),(0,i.jsxs)("div",{className:"text-lg font-bold",style:{color:e0(e.trust_score)},children:[(100*e.trust_score).toFixed(0),"%"]}),(0,i.jsx)("div",{className:"mt-1 h-1.5 bg-[var(--sc-bg-elevated)] rounded-full overflow-hidden",children:(0,i.jsx)("div",{className:"h-full rounded-full transition-all",style:{width:`${100*e.trust_score}%`,backgroundColor:e0(e.trust_score)}})})]}),(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3",children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Anomaly"}),(0,i.jsxs)("div",{className:"text-lg font-bold",style:{color:e1(e.anomaly_score)},children:[(100*e.anomaly_score).toFixed(0),"%"]}),(0,i.jsx)("div",{className:"mt-1 h-1.5 bg-[var(--sc-bg-elevated)] rounded-full overflow-hidden",children:(0,i.jsx)("div",{className:"h-full rounded-full transition-all",style:{width:`${100*e.anomaly_score}%`,backgroundColor:e1(e.anomaly_score)}})})]}),null!==e.fragmentation_score&&(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3",children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Fragmentation"}),(0,i.jsxs)("div",{className:"text-lg font-bold text-[var(--sc-text-primary)]",children:[(100*e.fragmentation_score).toFixed(0),"%"]}),(0,i.jsx)("div",{className:"mt-1 h-1.5 bg-[var(--sc-bg-elevated)] rounded-full overflow-hidden",children:(0,i.jsx)("div",{className:"h-full rounded-full bg-purple-500 transition-all",style:{width:`${100*e.fragmentation_score}%`}})})]}),null!==e.pipeline_duration_ms&&(0,i.jsxs)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3",children:[(0,i.jsx)("div",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"Pipeline"}),(0,i.jsxs)("div",{className:"text-lg font-bold text-[var(--sc-text-primary)]",children:[e.pipeline_duration_ms,"ms"]})]})]})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("h4",{className:"text-xs font-medium text-[var(--sc-text-secondary)] mb-2",children:"Threat Indicators"}),d.length>0?(0,i.jsx)("div",{className:"flex flex-wrap gap-1.5",children:d.map((e,t)=>{let a=eY[e]||{color:"#94a3b8",bg:"rgba(148, 163, 184, 0.15)"};return(0,i.jsx)("span",{className:"px-2 py-1 rounded text-[11px] font-medium",style:{backgroundColor:a.bg,color:a.color},children:e.replace(/_/g," ")},t)})}):(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"No threats detected"})]}),x.length>0&&(0,i.jsxs)("div",{children:[(0,i.jsx)("h4",{className:"text-xs font-medium text-[var(--sc-text-secondary)] mb-2",children:"Blocked Patterns"}),(0,i.jsx)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3 max-h-32 overflow-y-auto",children:x.map((e,t)=>(0,i.jsx)("div",{className:"text-[11px] text-[var(--sc-text-primary)] font-mono break-all mb-1 last:mb-0",children:e},t))})]}),e.reason&&(0,i.jsxs)("div",{children:[(0,i.jsx)("h4",{className:"text-xs font-medium text-[var(--sc-text-secondary)] mb-2",children:"Reason"}),(0,i.jsx)("div",{className:"bg-[var(--sc-bg-elevated)] rounded-lg p-3",children:(0,i.jsx)("p",{className:"text-xs text-[var(--sc-text-primary)] whitespace-pre-wrap leading-relaxed",children:e.reason})})]}),c.data?.explanation&&(0,i.jsx)(eG.LocalAiExplanationPanel,{explanation:c.data.explanation}),c.error&&(0,i.jsx)("div",{className:"rounded-lg border border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 p-3 text-xs text-[var(--sc-coral)]",children:c.error instanceof Error?c.error.message:"Local explanation failed"}),(0,i.jsxs)("div",{className:"flex gap-2 pt-2",children:[e.memory_id&&a&&(0,i.jsx)(eJ,{variant:"default",size:"sm",onClick:()=>a(e.memory_id),className:"flex-1 bg-blue-600 hover:bg-blue-700",children:"View Memory"}),(0,i.jsxs)(eJ,{variant:"outline",size:"sm",onClick:p,disabled:c.isPending,className:"flex-1 border-[var(--sc-border)] text-[var(--sc-text-primary)] hover:text-white",children:[c.isPending?(0,i.jsx)(M.Loader2,{size:13,className:"mr-1 animate-spin"}):(0,i.jsx)(eg.Sparkles,{size:13,className:"mr-1"}),"Explain"]}),(0,i.jsx)(eJ,{variant:"outline",size:"sm",onClick:m,className:`flex-1 border-[var(--sc-border)] transition-all ${r?"bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)] border-[var(--sc-cyan)]/50":"text-[var(--sc-text-primary)] hover:text-white"}`,children:r?"Copied":"Copy JSON"})]})]})]})}let e5={ALLOW:"bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]",BLOCK:"bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]",QUARANTINE:"bg-[var(--sc-amber)]/10 text-[var(--sc-amber)]"};function e4(){let{projectFilter:e,selectedAuditEntry:t,setSelectedAuditEntry:a}=(0,ev.useDashboardStore)(),[r,s]=(0,n.useState)("24h"),[c,l]=(0,n.useState)(void 0),[o,d]=(0,n.useState)(void 0),x={"24h":24,"7d":168,"30d":720},[m,p]=(0,n.useState)(()=>Date.now());(0,n.useEffect)(()=>{p(Date.now())},[r]);let u=(0,n.useMemo)(()=>new Date(6e4*Math.floor((m-36e5*x[r])/6e4)).toISOString(),[m,r]),{data:v,isLoading:h}=(0,F.useAuditLogs)({startTime:u,source:c,firewallResult:o,project:e||void 0,limit:200}),g=(0,n.useMemo)(()=>v?.logs??[],[v?.logs]),b=g.filter(e=>"BLOCK"===e.firewall_result).length,y=g.filter(e=>"QUARANTINE"===e.firewall_result).length,j=g.filter(e=>"ALLOW"===e.firewall_result).length,f=(0,n.useCallback)(e=>{if(!t||0===g.length)return;let r=g.findIndex(e=>e.id===t.id);"Escape"===e.key?a(null):"ArrowDown"===e.key&&r<g.length-1?(e.preventDefault(),a(g[r+1])):"ArrowUp"===e.key&&r>0&&(e.preventDefault(),a(g[r-1]))},[t,g,a]);return(0,n.useEffect)(()=>(window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)),[f]),(0,i.jsxs)("div",{className:"space-y-6",children:[(0,i.jsxs)("div",{className:"glass-card-strong p-5",children:[(0,i.jsx)("div",{className:"flex flex-col gap-4 xl:flex-row xl:items-start xl:justify-between mb-3",children:(0,i.jsx)("div",{className:"flex gap-1 bg-[var(--sc-bg-elevated)] rounded-lg p-0.5 ml-auto",children:["24h","7d","30d"].map(e=>(0,i.jsx)("button",{onClick:()=>s(e),className:`px-3 py-1 text-xs rounded-md transition-colors ${r===e?"bg-[var(--sc-cyan)] text-[var(--sc-text-primary)]":"text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:e},e))})}),(0,i.jsxs)("div",{className:"mb-4 grid gap-3 md:grid-cols-4",children:[(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)] p-3",children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Entries"}),(0,i.jsx)("div",{className:"mt-1 text-xl font-semibold text-[var(--sc-text-primary)]",children:g.length})]}),(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)] p-3",children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Allowed"}),(0,i.jsx)("div",{className:"mt-1 text-xl font-semibold text-[var(--sc-cyan)]",children:j})]}),(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)] p-3",children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Blocked"}),(0,i.jsx)("div",{className:"mt-1 text-xl font-semibold text-[var(--sc-coral)]",children:b})]}),(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)] p-3",children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Quarantined"}),(0,i.jsx)("div",{className:"mt-1 text-xl font-semibold text-[var(--sc-amber)]",children:y})]})]}),(0,i.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,i.jsxs)("select",{value:o||"",onChange:e=>d(e.target.value||void 0),className:"bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] text-[var(--sc-text-primary)] text-xs rounded-lg px-2 py-1",children:[(0,i.jsx)("option",{value:"",children:"All Results"}),(0,i.jsx)("option",{value:"ALLOW",children:"Allowed"}),(0,i.jsx)("option",{value:"BLOCK",children:"Blocked"}),(0,i.jsx)("option",{value:"QUARANTINE",children:"Quarantined"})]}),(0,i.jsxs)("select",{value:c||"",onChange:e=>l(e.target.value||void 0),className:"bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] text-[var(--sc-text-primary)] text-xs rounded-lg px-2 py-1",children:[(0,i.jsx)("option",{value:"",children:"All Sources"}),(0,i.jsx)("option",{value:"hook",children:"Hook"}),(0,i.jsx)("option",{value:"api",children:"API"}),(0,i.jsx)("option",{value:"agent",children:"Agent"}),(0,i.jsx)("option",{value:"user",children:"User"}),(0,i.jsx)("option",{value:"cli",children:"CLI"})]}),(0,i.jsx)("button",{onClick:()=>a(null),className:"ml-auto rounded-full border border-[var(--sc-border)] bg-[var(--sc-bg-surface)] px-3 py-1 text-xs text-[var(--sc-text-primary)] transition-colors hover:border-[var(--sc-border)] hover:text-[var(--sc-text-primary)]",children:"Clear selection"})]})]}),(0,i.jsxs)("div",{className:`grid gap-6 ${t?"xl:grid-cols-[minmax(0,1.35fr)_360px]":""}`,children:[(0,i.jsx)("div",{className:"glass-card overflow-hidden",children:h?(0,i.jsx)("div",{className:"flex items-center justify-center h-32",children:(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] animate-pulse",children:"Loading audit logs..."})}):0===g.length?(0,i.jsx)("div",{className:"flex items-center justify-center h-32",children:(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"No audit entries for this period"})}):(0,i.jsx)("div",{className:"overflow-x-auto",children:(0,i.jsxs)("table",{className:"w-full text-xs",children:[(0,i.jsx)("thead",{className:"bg-[var(--sc-bg-deep)]",children:(0,i.jsxs)("tr",{className:"border-b border-[var(--sc-border)]",children:[(0,i.jsx)("th",{className:"text-left text-[var(--sc-text-muted)] font-medium px-4 py-2",children:"Time"}),(0,i.jsx)("th",{className:"text-left text-[var(--sc-text-muted)] font-medium px-4 py-2",children:"Source"}),(0,i.jsx)("th",{className:"text-left text-[var(--sc-text-muted)] font-medium px-4 py-2",children:"Result"}),(0,i.jsx)("th",{className:"text-left text-[var(--sc-text-muted)] font-medium px-4 py-2",children:"Trust"}),(0,i.jsx)("th",{className:"text-left text-[var(--sc-text-muted)] font-medium px-4 py-2",children:"Anomaly"}),(0,i.jsx)("th",{className:"text-left text-[var(--sc-text-muted)] font-medium px-4 py-2",children:"Reason"})]})}),(0,i.jsx)("tbody",{children:g.map(e=>(0,i.jsxs)("tr",{onClick:()=>{a(t?.id===e.id?null:e)},className:`border-b border-[var(--sc-border)] cursor-pointer transition-colors ${t?.id===e.id?"bg-[var(--sc-cyan)]/10 hover:bg-[var(--sc-cyan)]/15":"hover:bg-[var(--sc-surface-interactive)]"}`,children:[(0,i.jsx)("td",{className:"px-4 py-2 text-[var(--sc-text-secondary)] whitespace-nowrap",children:new Date(e.timestamp).toLocaleString()}),(0,i.jsx)("td",{className:"px-4 py-2 text-[var(--sc-text-primary)]",children:e.source_type}),(0,i.jsx)("td",{className:"px-4 py-2",children:(0,i.jsx)("span",{className:`px-1.5 py-0.5 rounded text-[10px] font-medium ${e5[e.firewall_result]||"text-[var(--sc-text-secondary)]"}`,children:e.firewall_result})}),(0,i.jsx)("td",{className:"px-4 py-2 text-[var(--sc-text-secondary)]",children:e.trust_score.toFixed(1)}),(0,i.jsx)("td",{className:"px-4 py-2",children:(0,i.jsx)("span",{className:e.anomaly_score>.5?"text-[var(--sc-coral)]":e.anomaly_score>.2?"text-[var(--sc-amber)]":"text-[var(--sc-text-secondary)]",children:e.anomaly_score.toFixed(2)})}),(0,i.jsx)("td",{className:"px-4 py-2 text-[var(--sc-text-secondary)] max-w-xs truncate",children:e.reason||"—"})]},e.id))})]})})}),t&&(0,i.jsx)("div",{className:"xl:sticky xl:top-6 self-start",children:(0,i.jsx)(e2,{entry:t,onClose:()=>a(null)})})]}),(0,i.jsxs)("details",{className:"glass-card p-6",children:[(0,i.jsx)("summary",{className:"cursor-pointer list-none text-sm font-medium text-[var(--sc-text-primary)]",children:"Export audit trail"}),(0,i.jsx)("div",{className:"mt-4",children:(0,i.jsx)(ez,{})})]})]})}var e3=e.i(45434),e6=e.i(19331);let e8={critical:"border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]",high:"border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]",medium:"border-[var(--sc-amber)]/30 bg-[var(--sc-amber)]/10 text-[var(--sc-amber)]",low:"border-[var(--sc-border)] bg-[var(--sc-bg-elevated)]/80 text-[var(--sc-text-primary)]"},e7={approved:"bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]",denied:"bg-[var(--sc-amber)]/10 text-[var(--sc-amber)]",auto_denied:"bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]",warned:"bg-[var(--sc-amber)]/10 text-[var(--sc-amber)]",logged:"bg-[var(--sc-bg-elevated)] text-[var(--sc-text-primary)]",failure_allowed:"bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]",failure_denied:"bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]"};function e9(){let[e,t]=(0,n.useState)(""),[a,r]=(0,n.useState)(""),[s,c]=(0,n.useState)(""),{data:l,isLoading:o}=I({limit:100,severity:e||void 0,outcome:a||void 0,tool:s||void 0}),x=l?.entries??[],m=l?.summary,p=(0,n.useMemo)(()=>(m?.topTools??[]).map(e=>e.tool),[m?.topTools]);return(0,i.jsxs)("div",{className:"space-y-6",children:[(0,i.jsxs)("div",{className:"glass-card p-6",children:[(0,i.jsxs)("div",{className:"grid gap-3 md:grid-cols-4",children:[(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:[(0,i.jsx)(e3.Activity,{size:12}),"Total"]}),(0,i.jsx)("div",{className:"mt-2 text-xl font-semibold text-[var(--sc-text-primary)]",children:m?.total??0})]}),(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:[(0,i.jsx)(R.CheckCircle2,{size:12}),"Approved"]}),(0,i.jsx)("div",{className:"mt-2 text-xl font-semibold text-[var(--sc-cyan)]",children:m?.approved??0})]}),(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:[(0,i.jsx)(d.AlertTriangle,{size:12}),"Denied"]}),(0,i.jsx)("div",{className:"mt-2 text-xl font-semibold text-[var(--sc-amber)]",children:m?.denied??0})]}),(0,i.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:[(0,i.jsx)(u.ShieldAlert,{size:12}),"Failures"]}),(0,i.jsx)("div",{className:"mt-2 text-xl font-semibold text-[var(--sc-coral)]",children:m?.failures??0})]})]}),(0,i.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,i.jsxs)("select",{value:e,onChange:e=>t(e.target.value),className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 py-1.5 text-xs text-[var(--sc-text-primary)]",children:[(0,i.jsx)("option",{value:"",children:"All severities"}),(0,i.jsx)("option",{value:"critical",children:"Critical"}),(0,i.jsx)("option",{value:"high",children:"High"}),(0,i.jsx)("option",{value:"medium",children:"Medium"}),(0,i.jsx)("option",{value:"low",children:"Low"})]}),(0,i.jsxs)("select",{value:a,onChange:e=>r(e.target.value),className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 py-1.5 text-xs text-[var(--sc-text-primary)]",children:[(0,i.jsx)("option",{value:"",children:"All outcomes"}),(0,i.jsx)("option",{value:"approved",children:"Approved"}),(0,i.jsx)("option",{value:"denied",children:"Denied"}),(0,i.jsx)("option",{value:"auto_denied",children:"Auto denied"}),(0,i.jsx)("option",{value:"warned",children:"Warned"}),(0,i.jsx)("option",{value:"logged",children:"Logged"}),(0,i.jsx)("option",{value:"failure_allowed",children:"Failure allowed"}),(0,i.jsx)("option",{value:"failure_denied",children:"Failure denied"})]}),(0,i.jsxs)("select",{value:s,onChange:e=>c(e.target.value),className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 py-1.5 text-xs text-[var(--sc-text-primary)]",children:[(0,i.jsx)("option",{value:"",children:"Top tools"}),p.map(e=>(0,i.jsx)("option",{value:e,children:e},e))]})]})]}),(0,i.jsx)("div",{className:"glass-card-strong p-5 overflow-hidden",children:o?(0,i.jsx)("div",{className:"flex h-32 items-center justify-center text-sm text-[var(--sc-text-secondary)]",children:"Loading interceptor events…"}):0===x.length?(0,i.jsx)("div",{className:"flex h-32 items-center justify-center text-sm text-[var(--sc-text-secondary)]",children:"No interceptor events found for the current filters."}):(0,i.jsx)("div",{className:"divide-y divide-[var(--sc-border)]",children:x.map((e,t)=>(0,i.jsxs)("div",{className:"grid gap-4 px-5 py-4 lg:grid-cols-[220px_minmax(0,1fr)_220px]",children:[(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--sc-text-muted)]",children:[(0,i.jsx)(e6.Clock3,{size:12}),new Date(e.ts).toLocaleString()]}),(0,i.jsx)("div",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e.tool}),(0,i.jsx)("div",{className:`inline-flex rounded-full border px-2.5 py-1 text-[11px] ${e8[e.severity]??e8.low}`,children:e.severity.toUpperCase()})]}),(0,i.jsxs)("div",{className:"min-w-0",children:[(0,i.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Preview"}),(0,i.jsx)("p",{className:"mt-2 line-clamp-4 text-sm leading-6 text-[var(--sc-text-primary)]",children:e.preview||"No preview captured."}),(0,i.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(e.threats??[]).map(e=>(0,i.jsx)("span",{className:"rounded-full border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-2.5 py-1 text-[11px] text-[var(--sc-text-primary)]",children:e},e)),(!e.threats||0===e.threats.length)&&(0,i.jsx)("span",{className:"rounded-full border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-2.5 py-1 text-[11px] text-[var(--sc-text-secondary)]",children:"No explicit threat tags"})]})]}),(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Outcome"}),(0,i.jsx)("div",{className:`mt-1 inline-flex rounded-full px-2.5 py-1 text-[11px] ${e7[e.outcome]??e7.logged}`,children:e.outcome.replace(/_/g," ")})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Firewall"}),(0,i.jsx)("div",{className:"mt-1 text-sm text-[var(--sc-text-primary)]",children:e.firewallResult})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Action"}),(0,i.jsx)("div",{className:"mt-1 text-sm text-[var(--sc-text-primary)]",children:e.action})]}),(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:"text-[10px] uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Anomaly score"}),(0,i.jsx)("div",{className:"mt-1 text-sm text-[var(--sc-text-primary)]",children:e.anomalyScore.toFixed(2)})]})]})]},`${e.ts}-${e.tool}-${t}`))})})]})}let te=(0,x.default)("toggle-left",[["circle",{cx:"9",cy:"12",r:"3",key:"u3jwor"}],["rect",{width:"20",height:"14",x:"2",y:"5",rx:"7",key:"g7kal2"}]]),tt=(0,x.default)("toggle-right",[["circle",{cx:"15",cy:"12",r:"3",key:"1afu0r"}],["rect",{width:"20",height:"14",x:"2",y:"5",rx:"7",key:"g7kal2"}]]),ta=g.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";function tr(){let e,t,a,r,{data:s,isLoading:c,isLocked:l}={...e=(0,b.useQuery)({queryKey:["firewall-rules"],queryFn:()=>(0,f.gatedFetch)(`${ta}/api/firewall-rules`).then(e=>{if(!e.ok)throw Error("Failed to fetch firewall rules");return e.json()}),retry:(e,t)=>!(t instanceof f.FeatureLockedError)&&e<2,refetchInterval:3e4}),isLocked:e.error instanceof f.FeatureLockedError},o=(t=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>(0,f.gatedFetch)(`${ta}/api/firewall-rules`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{t.invalidateQueries({queryKey:["firewall-rules"]})}})),d=(a=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:({id:e,...t})=>(0,f.gatedFetch)(`${ta}/api/firewall-rules/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{a.invalidateQueries({queryKey:["firewall-rules"]})}})),x=(r=(0,j.useQueryClient)(),(0,y.useMutation)({mutationFn:e=>(0,f.gatedFetch)(`${ta}/api/firewall-rules/${e}`,{method:"DELETE"}).then(e=>e.ok?e.json():e.json().then(e=>{throw Error(e.error)})),onSuccess:()=>{r.invalidateQueries({queryKey:["firewall-rules"]})}})),[m,u]=(0,n.useState)(!1),[v,h]=(0,n.useState)({name:"",priority:100,condition_type:"regex",condition_value:"",action:"block"}),g=s?.rules??[];return l?(0,i.jsx)(ts,{}):(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)(p.Shield,{size:16,className:"text-[var(--sc-cyan)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Custom Firewall Rules"}),(0,i.jsxs)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:[g.length,"/25"]})]}),(0,i.jsxs)("button",{onClick:()=>u(!m),className:"flex items-center gap-1 px-2 py-1 text-xs bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)] rounded hover:bg-[var(--sc-cyan)]/30 transition-colors",children:[(0,i.jsx)(G,{size:12})," Add Rule"]})]}),m&&(0,i.jsxs)("form",{onSubmit:e=>{e.preventDefault(),o.mutate(v,{onSuccess:()=>{u(!1),h({name:"",priority:100,condition_type:"regex",condition_value:"",action:"block"})}})},className:"p-3 bg-[var(--sc-bg-elevated)]/50 rounded-lg space-y-2",children:[(0,i.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,i.jsx)("input",{value:v.name,onChange:e=>h(t=>({...t,name:e.target.value})),placeholder:"Rule name",required:!0,className:"px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)]"}),(0,i.jsx)("input",{value:v.priority,onChange:e=>h(t=>({...t,priority:Number(e.target.value)})),type:"number",placeholder:"Priority",className:"px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)]"})]}),(0,i.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,i.jsxs)("select",{value:v.condition_type,onChange:e=>h(t=>({...t,condition_type:e.target.value})),className:"px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)]",children:[(0,i.jsx)("option",{value:"regex",children:"Regex"}),(0,i.jsx)("option",{value:"source",children:"Source"}),(0,i.jsx)("option",{value:"keyword",children:"Keyword"})]}),(0,i.jsx)("input",{value:v.condition_value,onChange:e=>h(t=>({...t,condition_value:e.target.value})),placeholder:"Condition value",required:!0,className:"px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)]"}),(0,i.jsxs)("select",{value:v.action,onChange:e=>h(t=>({...t,action:e.target.value})),className:"px-2 py-1.5 text-xs bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded text-[var(--sc-text-primary)]",children:[(0,i.jsx)("option",{value:"block",children:"Block"}),(0,i.jsx)("option",{value:"quarantine",children:"Quarantine"}),(0,i.jsx)("option",{value:"allow",children:"Allow"})]})]}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)("button",{type:"submit",disabled:o.isPending,className:"px-3 py-1 text-xs bg-[var(--sc-cyan)] text-[var(--sc-text-primary)] rounded hover:bg-[var(--sc-cyan)]/80 disabled:opacity-50",children:o.isPending?"Creating...":"Create"}),(0,i.jsx)("button",{type:"button",onClick:()=>u(!1),className:"px-3 py-1 text-xs text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]",children:"Cancel"})]}),o.error&&(0,i.jsx)("p",{className:"text-xs text-[var(--sc-coral)]",children:o.error.message})]}),c?(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] py-4 text-center",children:"Loading rules..."}):0===g.length?(0,i.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)] py-4 text-center",children:'No custom rules yet. Click "Add Rule" to create one.'}):(0,i.jsx)("div",{className:"space-y-1",children:g.map(e=>(0,i.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2 bg-[var(--sc-bg-elevated)]/30 rounded text-xs",children:[(0,i.jsx)("span",{className:"text-[var(--sc-text-secondary)] w-6 text-right",children:e.priority}),(0,i.jsx)("span",{className:"text-[var(--sc-text-primary)] flex-1",children:e.name}),(0,i.jsx)("code",{className:"text-[var(--sc-text-muted)] text-[10px] max-w-[120px] truncate",children:e.condition_value}),(0,i.jsx)("span",{className:`px-1.5 py-0.5 rounded text-[10px] font-medium ${"block"===e.action?"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)]":"quarantine"===e.action?"bg-[var(--sc-amber)]/20 text-[var(--sc-amber)]":"bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)]"}`,children:e.action}),(0,i.jsx)("button",{onClick:()=>d.mutate({id:e.id,enabled:+!e.enabled}),className:"text-[var(--sc-text-muted)] hover:text-[var(--sc-text-primary)]",title:e.enabled?"Disable":"Enable",children:e.enabled?(0,i.jsx)(tt,{size:14,className:"text-[var(--sc-cyan)]"}):(0,i.jsx)(te,{size:14})}),(0,i.jsx)("button",{onClick:()=>x.mutate(e.id),className:"text-[var(--sc-text-muted)] hover:text-[var(--sc-coral)]",children:(0,i.jsx)(W.Trash2,{size:12})})]},e.id))})]})}function ts(){return(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsx)(p.Shield,{size:16,className:"text-[var(--sc-cyan)]"}),(0,i.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Custom Firewall Rules"}),(0,i.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:"0/25"})]}),(0,i.jsx)("div",{className:"space-y-1",children:Y.map(e=>(0,i.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2 bg-[var(--sc-bg-elevated)]/30 rounded text-xs",children:[(0,i.jsx)("span",{className:"text-[var(--sc-text-secondary)] w-6 text-right",children:e.priority}),(0,i.jsx)("span",{className:"text-[var(--sc-text-primary)] flex-1",children:e.name}),(0,i.jsx)("code",{className:"text-[var(--sc-text-muted)] text-[10px] max-w-[120px] truncate",children:e.condition_value}),(0,i.jsx)("span",{className:`px-1.5 py-0.5 rounded text-[10px] font-medium ${"block"===e.action?"bg-[var(--sc-coral)]/20 text-[var(--sc-coral)]":"quarantine"===e.action?"bg-[var(--sc-amber)]/20 text-[var(--sc-amber)]":"bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)]"}`,children:e.action})]},e.id))})]})}function tc(){return(0,i.jsx)("div",{className:"bg-[var(--sc-bg-surface)]/50 border border-[var(--sc-border)] rounded-xl p-4",children:(0,i.jsx)(X.ProFeatureGate,{feature:"custom_firewall_rules",label:"Add custom rules to control what gets blocked, allowed, or quarantined.",children:(0,i.jsx)(tr,{})})})}function ti(){return(0,i.jsx)("div",{className:"h-full overflow-y-auto bg-[var(--sc-bg-deep)]",children:(0,i.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,i.jsxs)("section",{className:"rounded-2xl border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/70 p-6",children:[(0,i.jsx)("div",{className:"text-[11px] uppercase tracking-[0.2em] text-[var(--sc-cyan)]",children:"Protection / Policies"}),(0,i.jsx)("h2",{className:"mt-3 text-3xl font-semibold text-[var(--sc-text-primary)]",children:"Policy management"}),(0,i.jsx)("p",{className:"mt-2 max-w-3xl text-sm text-[var(--sc-text-secondary)]",children:"Keep operator-tuned controls in one place. Firewall rules and Iron Dome policies should not be buried inside larger screens when they directly shape blocking, quarantine, and approval behavior."})]}),(0,i.jsxs)("div",{className:"grid gap-6 xl:grid-cols-2",children:[(0,i.jsx)(tc,{}),(0,i.jsx)(eo,{})]})]})})}function tl(){let e=(0,l.useSearchParams)().get("tab"),t=e&&["dome","quarantine","audit","intercepts","policies"].includes(e)?e:null,[a,r]=(0,n.useState)("dome"),s=t??a,{data:c}=z(),{data:o}=(0,F.useAuditStats)("24h"),{data:x}=(0,F.useQuarantine)("pending",10),{data:g}=I({limit:25}),b=[{id:"dome",label:"Iron Dome",icon:(0,i.jsx)(u.ShieldAlert,{size:14})},{id:"quarantine",label:"Quarantine",count:x?.total??0},{id:"audit",label:"Audit"},{id:"intercepts",label:"Intercepts",count:g?.summary?.total??0},{id:"policies",label:"Policies",locked:!1}];return(0,i.jsx)("div",{className:"h-full overflow-y-auto",children:(0,i.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,i.jsx)(h.PageHeader,{eyebrow:"Defence",title:"Protection",subtitle:"Active controls, review queues, and operator policy tuning.",tabs:b,activeTab:s,onTabChange:e=>r(e)}),(0,i.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,i.jsx)(v.StatCard,{label:"Iron Dome",value:c?.enabled?"Active":"Inactive",icon:p.Shield,accent:c?.enabled?"cyan":"muted"}),(0,i.jsx)(v.StatCard,{label:"Blocked (24h)",value:o?.blockedCount??0,icon:u.ShieldAlert,accent:o?.blockedCount?"coral":"muted"}),(0,i.jsx)(v.StatCard,{label:"Quarantine",value:x?.total??0,icon:d.AlertTriangle,accent:x?.total?"amber":"muted"}),(0,i.jsx)(v.StatCard,{label:"Intercepts",value:g?.summary?.total??0,icon:m,accent:"cyan"})]}),(0,i.jsxs)("div",{children:["dome"===s&&(0,i.jsx)(eu,{}),"quarantine"===s&&(0,i.jsx)(eS,{}),"audit"===s&&(0,i.jsx)(e4,{}),"intercepts"===s&&(0,i.jsx)(e9,{}),"policies"===s&&(0,i.jsx)(ti,{})]})]})})}function tn(){return(0,i.jsx)(n.Suspense,{fallback:(0,i.jsx)(o.PageSkeleton,{}),children:(0,i.jsx)(tl,{})})}e.s(["ProtectionOverview",()=>tn],27241)}]);
|