shieldcortex 4.34.0 → 4.36.0
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 +1 -1
- 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 +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 +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 +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/react-loadable-manifest.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page.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 +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/replay/page.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page.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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 -9
- 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 +18 -19
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +18 -19
- 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 +18 -19
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +18 -19
- 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.rsc +18 -18
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture/__PAGE__.segment.rsc +1 -1
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +18 -18
- 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 +18 -18
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +18 -18
- 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 +18 -18
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +18 -18
- 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/replay.html +1 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.rsc +16 -16
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay/__PAGE__.segment.rsc +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_full.segment.rsc +16 -16
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.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 +18 -18
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +18 -18
- 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 +18 -18
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +18 -18
- 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 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +22 -25
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory/__PAGE__.segment.rsc +3 -3
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +22 -25
- 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 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +22 -24
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +3 -3
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +22 -24
- 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 +18 -18
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +18 -18
- 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 +22 -20
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +22 -20
- 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 +22 -20
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +22 -20
- 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 +22 -20
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +22 -20
- 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 +22 -20
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +22 -20
- 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 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +20 -19
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +20 -19
- 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 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +20 -22
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +20 -22
- 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 +18 -18
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +18 -18
- 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 +18 -19
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +18 -19
- 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 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +20 -22
- 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 +10 -9
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +20 -22
- 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/9f1d4_lucide-react_dist_esm_icons_47ec4567._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__7d500b5a._.js +1 -9
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__bea9887b._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{dashboard_45d60d74._.js → dashboard_01e81e69._.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_14d63e36._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_1b261cd5._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_1b3af814._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_44a1539a._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_4835c323._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_599483f2._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ca514a1._.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_a6877bbc._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c219bf07._.js +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_861871f9._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_overview_page_tsx_8c105626._.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_de7ac4f9._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_protection_ProtectionOverview_tsx_54554a97._.js +2 -2
- 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 -9
- 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/1600063be806f47c.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/61aaa0c660c32b96.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/69074f4a9b09c31d.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/881477f5d01c1d9b.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/8eabb856fd0e50b7.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/98ae91e0a6f5d317.css +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/a95dbcc1842ad9d7.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/{4d0b86f6afedd8b5.js → b8eceefe44227149.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/{f86a7ba98ba185c3.js → cfbc41857d998b74.js} +6 -6
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/d2837977142371d5.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/de9f5ba8bc67d4d9.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/e8884e7f3b85fd0b.js +1 -0
- package/dashboard/.next/standalone/dashboard/node_modules/source-map/package.json +73 -0
- package/dashboard/.next/standalone/dashboard/node_modules/source-map-support/package.json +31 -0
- package/dashboard/.next/standalone/dashboard/package.json +8 -6
- package/dist/api/routes/memories.js +14 -1
- package/dist/defence/quarantine/review.js +29 -7
- package/dist/defence/trust/recall-filter.js +6 -2
- package/dist/defence/trust/source-scorer.js +5 -0
- package/dist/memory/consolidate.js +50 -18
- package/dist/memory/lifecycle.js +13 -0
- package/dist/memory/store.d.ts +1 -0
- package/dist/memory/store.js +73 -54
- package/package.json +1 -1
- package/scripts/lib/recall-defence.mjs +254 -0
- package/scripts/lib/save-memory.mjs +12 -3
- package/scripts/prompt-recall-hook.mjs +33 -0
- package/scripts/session-start-hook.mjs +36 -4
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/9f1d4_lucide-react_dist_esm_icons_3a8e61d9._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__7f43774d._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_11e120e8._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_2373e047._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_283c47c0._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_30ecb37e._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ccb6514._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_6999a855._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c33b336f._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_44a9f72c._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_d191b6dc._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/0fa2c109e0d6d832.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/1aba5ddfecdd0947.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/349dace3a1c9af01.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/3b671e7effc074d1.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/6aba18b7aac42ccd.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/75769fa28c7a2e99.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/8d4a0f601450b091.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/aee9601911b790ca.css +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/bcfaf98940462e7d.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/c55c1a1a956d2aff.js +0 -1
- /package/dashboard/.next/standalone/dashboard/.next/static/{bUb5MH6iktj_Ue6clRY9Y → _JsmCyMaqewdhBNXZu1me}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{bUb5MH6iktj_Ue6clRY9Y → _JsmCyMaqewdhBNXZu1me}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{bUb5MH6iktj_Ue6clRY9Y → _JsmCyMaqewdhBNXZu1me}/_ssgManifest.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/buffer-from/index.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/buffer-from/package.json +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/array-set.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/base64-vlq.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/base64.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/binary-search.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/mapping-list.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/quick-sort.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/source-map-consumer.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/source-map-generator.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/source-node.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/util.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/source-map.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/LICENSE.md +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/README.md +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/browser-source-map-support.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/register.js +0 -0
- /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/source-map-support.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,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:i=!1,hoverCyan:n=!1,strong:c=!1,severity:l,onClick:o,selected:d=!1,title:u,statusLine:m,bodyPadding:h=!0}){let x=o?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),o())}:void 0;return(0,t.jsxs)("div",{className:(0,a.cn)("glass-card overflow-hidden",i&&"glass-card-hover cursor-pointer",n&&"glass-card-hover-cyan cursor-pointer",o&&!i&&!n&&"cursor-pointer",l&&r[l],d&&"border-[var(--term-electric)]",s),onClick:o,onKeyDown:x,role:o?"button":void 0,tabIndex:o?0:void 0,children:[void 0!==u&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--term-border)] bg-[var(--term-surface-2)] theme-glass:hidden",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-red)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-yellow)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-green)]"}),(0,t.jsx)("span",{className:"ml-2 text-xs select-none truncate text-[var(--term-text-muted)]",children:u})]}),(0,t.jsx)("div",{className:(0,a.cn)(h?"p-5":""),children:e}),void 0!==m&&(0,t.jsx)("div",{className:"px-4 py-2 text-xs border-t border-[var(--term-border)] bg-[var(--term-surface-2)] text-[var(--term-text-muted)] theme-glass:hidden",children:m})]})}e.s(["GlassCard",()=>s])},36062,31309,e=>{"use strict";let t=(0,e.i(24929).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",()=>t],36062);var a=e.i(22534),r=e.i(71921),s=e.i(45688),i=e.i(1235),n=e.i(88969);let c=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function l(e,t){let a=await (0,n.gatedFetch)(`${c}${e}`);if(!a.ok)throw Error(await (0,n.readApiError)(a,t));return a.json()}async function o(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/scan`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,n.readApiError)(t,"Failed to run X-Ray scan"));return t.json()}async function d(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/pick-target`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:e})});if(!t.ok)throw Error(await (0,n.readApiError)(t,`Failed to open ${e} picker`));return t.json()}function u(e,t){return!(t instanceof n.FeatureLockedError)&&e<2}function m(e){let t=new URLSearchParams;for(let[a,r]of Object.entries(e))r&&"all"!==r&&"ALL"!==r&&t.set(a,r);let a=t.toString();return a?`?${a}`:""}function h(){return(0,s.useQuery)({queryKey:["xray-status"],queryFn:()=>l("/api/xray/status","Failed to fetch X-Ray status"),refetchInterval:3e4,retry:u})}function x(e={}){return(0,s.useQuery)({queryKey:["xray-history",e],queryFn:()=>l(`/api/xray/history${m({risk:e.risk,targetType:e.targetType,deep:e.deep,search:e.search?.trim()||void 0})}`,"Failed to fetch X-Ray history"),refetchInterval:3e4,retry:u})}function v(e){return(0,s.useQuery)({queryKey:["xray-history-entry",e],queryFn:()=>l(`/api/xray/history/${e}`,"Failed to fetch X-Ray scan detail"),enabled:!!e,retry:u})}function y(e=25,t={}){return(0,s.useQuery)({queryKey:["xray-activity",e,t],queryFn:()=>l(`/api/xray/activity${m({limit:String(e),kind:t.kind,status:t.status,risk:t.risk,targetType:t.targetType,search:t.search?.trim()||void 0})}`,"Failed to fetch X-Ray activity"),refetchInterval:15e3,retry:u})}function p(e=20,t={}){return(0,s.useQuery)({queryKey:["xray-watch-sessions",e,t],queryFn:()=>l(`/api/xray/watch-sessions${m({limit:String(e),state:t.state,deep:t.deep,search:t.search?.trim()||void 0})}`,"Failed to fetch X-Ray watch sessions"),refetchInterval:15e3,retry:u})}function g(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:o,onSuccess:()=>{e.invalidateQueries({queryKey:["xray-history"]}),e.invalidateQueries({queryKey:["xray-activity"]}),e.invalidateQueries({queryKey:["xray-watch-sessions"]}),e.invalidateQueries({queryKey:["xray-status"]})}})}function f(){return(0,r.useMutation)({mutationFn:e=>d(e)})}async function b(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/watch/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,n.readApiError)(t,"Failed to start watch"));return t.json()}async function j(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/watch/stop`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({target:e})});if(!t.ok)throw Error(await (0,n.readApiError)(t,"Failed to stop watch"));return t.json()}function w(){return(0,s.useQuery)({queryKey:["xray-active-watchers"],queryFn:()=>l("/api/xray/watch/active","Failed to fetch active watchers"),refetchInterval:1e4})}function N(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:b,onSuccess:()=>{e.invalidateQueries({queryKey:["xray-watch-sessions"]}),e.invalidateQueries({queryKey:["xray-active-watchers"]}),e.invalidateQueries({queryKey:["xray-status"]})}})}function k(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:j,onSuccess:()=>{e.invalidateQueries({queryKey:["xray-watch-sessions"]}),e.invalidateQueries({queryKey:["xray-active-watchers"]}),e.invalidateQueries({queryKey:["xray-status"]})}})}e.s(["useActiveWatchers",()=>w,"usePickXRayTarget",()=>f,"useStartWatch",()=>N,"useStopWatch",()=>k,"useXRayActivity",()=>y,"useXRayHistory",()=>x,"useXRayHistoryEntry",()=>v,"useXRayScan",()=>g,"useXRayStatus",()=>h,"useXRayWatchSessions",()=>p],31309)},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)},46194,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text)]"},s={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 i({label:e,value:i,icon:n,trend:c,accent:l="cyan",className:o}){let d=s[l];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center justify-between gap-3 px-4 py-2 border-b border-[var(--term-border)] last:border-0",o),children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsx)(n,{size:14,className:"text-[var(--term-text-muted)] shrink-0","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-xs uppercase tracking-wider text-[var(--term-text-muted)] truncate",children:e})]}),(0,t.jsxs)("div",{className:"flex items-baseline gap-2 shrink-0",children:[(0,t.jsx)("span",{className:(0,a.cn)("text-base tabular-nums",r[l]),children:i}),c&&(0,t.jsxs)("span",{className:(0,a.cn)("text-xs tabular-nums",c.value>=0?"text-[var(--term-neon-fg)]":"text-[var(--term-danger)]"),children:[c.value>=0?"+":"",c.value,"%"]})]})]}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block glass-card p-5",o),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:i}),c&&(0,t.jsxs)("p",{className:(0,a.cn)("mt-1 text-xs",c.value>=0?d.trendUp:d.trendDown),children:[c.value>=0?"+":"",c.value,"% ",c.label]})]}),(0,t.jsx)("div",{className:(0,a.cn)("rounded-xl p-2.5",d.iconBg),children:(0,t.jsx)(n,{size:20,className:d.icon})})]})})]})}e.s(["StatCard",()=>i])},15771,63312,50279,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);var a=e.i(22534),r=e.i(45688),s=e.i(71921),i=e.i(1235),n=e.i(88969);let c=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function l(){let e=await (0,n.authFetch)(`${c}/api/license/status`);if(!e.ok)throw Error("Failed to fetch license status");return e.json()}async function o(e){let t=await (0,n.authFetch)(`${c}/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 d(){let e=await (0,n.authFetch)(`${c}/api/license/deactivate`,{method:"POST"});if(!e.ok)throw Error("Failed to deactivate license");return e.json()}function u(){return(0,r.useQuery)({queryKey:["license-status"],queryFn:l,refetchInterval:6e4,retry:2})}function m(){let e=(0,i.useQueryClient)();return(0,s.useMutation)({mutationFn:e=>o(e),onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}function h(){let e=(0,i.useQueryClient)();return(0,s.useMutation)({mutationFn:d,onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}e.s(["useActivateLicense",()=>m,"useDeactivateLicense",()=>h,"useLicenseStatus",()=>u],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)},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)},95659,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"text-[var(--term-danger)]",high:"text-[var(--term-danger)]",medium:"text-[var(--term-warn)]",low:"text-[var(--term-electric-fg)]",safe:"text-[var(--term-neon-fg)]",info:"text-[var(--term-text-muted)]",coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text-muted)]"},s={critical:"bg-[var(--term-danger)]",high:"bg-[var(--term-danger)]",medium:"bg-[var(--term-warn)]",low:"bg-[var(--term-electric)]",safe:"bg-[var(--term-neon)]",info:"bg-[var(--term-text-muted)]",coral:"bg-[var(--term-electric)]",cyan:"bg-[var(--term-neon)]",amber:"bg-[var(--term-warn)]",muted:"bg-[var(--term-text-muted)]"},i={critical:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",high:"theme-glass:bg-[var(--sc-coral-mid)]/15 theme-glass:border-[var(--sc-coral-mid)]/30",medium:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",low:"theme-glass:bg-[var(--sc-cyan-mid)]/15 theme-glass:border-[var(--sc-cyan-mid)]/30",safe:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",info:"theme-glass:bg-[var(--sc-text-muted)]/15 theme-glass:border-[var(--sc-text-muted)]/30",coral:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",cyan:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",amber:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",muted:"theme-glass:bg-[var(--sc-surface-interactive)] theme-glass:border-[var(--sc-border)]"};function n({children:e,variant:n="muted",className:c,dot:l=!1,pulse:o=!1}){return(0,t.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 px-1 text-[11px] font-semibold uppercase tracking-wider whitespace-nowrap",r[n],"theme-glass:rounded-full theme-glass:border theme-glass:px-2.5 theme-glass:py-0.5",i[n],c),children:[l&&(0,t.jsx)("span",{className:(0,a.cn)("h-1.5 w-1.5 rounded-full",s[n],o&&"animate-pulse"),"aria-hidden":!0}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"["}),(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"]"})]})}function c(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",()=>n,"riskVariant",()=>c])},81523,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(4);let s={coral:"border border-[var(--term-electric)] text-[var(--term-electric-fg)] bg-transparent hover:bg-[var(--term-electric)]/10",cyan:"border border-[var(--term-neon)] text-[var(--term-neon-fg)] bg-transparent hover:bg-[var(--term-neon)]/10",ghost:"border border-transparent text-[var(--term-text-muted)] bg-transparent hover:text-[var(--term-text)] hover:border-[var(--term-border)]",outline:"border border-[var(--term-border)] text-[var(--term-text-dim)] bg-transparent hover:border-[var(--term-text-muted)] hover:text-[var(--term-text)]"},i={sm:"px-2 py-1 text-xs",md:"px-3 py-1.5 text-sm",lg:"px-4 py-2 text-sm"},n={coral:"theme-glass:border-0 theme-glass:bg-gradient-to-br theme-glass:from-[var(--sc-coral)] theme-glass:to-[var(--sc-coral-dark)] theme-glass:text-white theme-glass:hover:shadow-[0_8px_30px_var(--sc-glow-coral-mid)]",cyan:"theme-glass:border-0 theme-glass:bg-[var(--sc-cyan)] theme-glass:text-[var(--sc-bg-deep)] theme-glass:hover:bg-[var(--sc-cyan-mid)]",ghost:"theme-glass:bg-transparent theme-glass:text-[var(--sc-text-secondary)] theme-glass:hover:bg-[var(--sc-surface-interactive)]",outline:"theme-glass:bg-transparent theme-glass:border theme-glass:border-[var(--sc-border)] theme-glass:text-[var(--sc-text-secondary)]"},c={sm:"theme-glass:px-3 theme-glass:py-1.5 theme-glass:text-xs theme-glass:rounded-lg",md:"theme-glass:px-4 theme-glass:py-2 theme-glass:text-sm theme-glass:rounded-xl",lg:"theme-glass:px-6 theme-glass:py-3 theme-glass:text-sm theme-glass:rounded-xl"},l=(0,r.forwardRef)(({variant:e="coral",size:r="md",glow:l=!1,pulse:o=!1,className:d,children:u,...m},h)=>(0,t.jsxs)("button",{ref:h,className:(0,a.cn)("inline-flex items-center justify-center gap-2 rounded-md font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",o?"disabled:pointer-events-none":"disabled:pointer-events-none disabled:opacity-50",s[e],i[r],"theme-glass:font-semibold theme-glass:transition-all theme-glass:hover:-translate-y-0.5",n[e],c[r],l&&"coral"===e&&"theme-glass:glow-coral-subtle",l&&"cyan"===e&&"theme-glass:glow-cyan-subtle",o&&"theme-glass:glow-cyan-pulse",d),type:"button",...m,children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-2 theme-glass:hidden",children:[o&&(0,t.jsx)("span",{className:"cli-cursor","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"["}),(0,t.jsx)("span",{className:"leading-none",children:u}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"]"})]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline-flex items-center gap-2",children:u})]}));l.displayName="Button",e.s(["Button",0,l])},66949,e=>{"use strict";let t=(0,e.i(24929).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",()=>t],66949)},40950,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(66949);function s({tabs:e,activeTab:s,onChange:i,className:n}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center gap-4 overflow-x-auto border-b border-[var(--term-border)] px-1 scrollbar-hide","theme-glass:gap-1 theme-glass:rounded-xl theme-glass:border-0 theme-glass:bg-[var(--sc-bg-surface)] theme-glass:p-1",n),role:"tablist",children:e.map(e=>{let n=e.id===s;return(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":n?"true":"false",onClick:()=>i(e.id),className:(0,a.cn)("relative flex shrink-0 items-center gap-2 px-1 py-2 text-xs font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",n?"text-[var(--term-electric-fg)]":"text-[var(--term-text-muted)] hover:text-[var(--term-text)]","theme-glass:font-medium theme-glass:font-sans theme-glass:rounded-lg theme-glass:px-3 theme-glass:py-2 sm:theme-glass:px-4 sm:theme-glass:text-sm",n&&"theme-glass:bg-[var(--sc-bg-elevated)] theme-glass:text-[var(--sc-text-primary)]",!n&&"theme-glass:hover:text-[var(--sc-text-secondary)]"),children:[e.icon,(0,t.jsx)("span",{children:e.label}),e.locked&&(0,t.jsx)(r.Lock,{size:11,className:"text-[var(--term-warn)] theme-glass:text-[var(--sc-coral)]"}),void 0!==e.count&&e.count>0&&(0,t.jsxs)("span",{className:"text-[var(--term-text-muted)] theme-glass:ml-0.5 theme-glass:rounded-full theme-glass:bg-[var(--sc-coral)]/15 theme-glass:px-1.5 theme-glass:py-0.5 theme-glass:text-[10px] theme-glass:font-bold theme-glass:text-[var(--sc-coral)]",children:[(0,t.jsxs)("span",{className:"theme-glass:hidden",children:["(",e.count,")"]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline",children:e.count})]}),n&&(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -bottom-px left-0 right-0 h-px bg-[var(--term-electric)] theme-glass:hidden"})]},e.id)})})}function i({eyebrow:e,title:r,subtitle:i,actions:n,tabs:c,activeTab:l,onTabChange:o,className:d}){return(0,t.jsxs)("div",{className:(0,a.cn)("space-y-3 theme-glass:space-y-4",d),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-4 theme-glass:gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"theme-glass:hidden",children:[e&&(0,t.jsxs)("p",{className:"text-[11px] uppercase tracking-wider text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]",children:"›"})," ",e]}),(0,t.jsxs)("h1",{className:"mt-1 flex items-baseline flex-wrap gap-2 text-base font-mono text-[var(--term-text)] sm:text-lg",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]","aria-hidden":!0,children:"$"}),(0,t.jsx)("span",{children:"shieldcortex"}),(0,t.jsx)("span",{className:"text-[var(--term-text-dim)]",children:r.toLowerCase()}),(0,t.jsx)("span",{className:"cli-cursor text-[var(--term-electric-fg)]","aria-hidden":!0})]}),i&&(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:"#"})," ",i]})]}),(0,t.jsxs)("div",{className:"hidden theme-glass:block",children:[e&&(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-[0.2em] text-[var(--sc-coral)] sm:text-[11px]",children:e}),(0,t.jsx)("h1",{className:"mt-1 text-xl font-bold text-[var(--sc-text-primary)] sm:text-2xl",children:r}),i&&(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)] sm:text-sm",children:i})]})]}),n&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:n})]}),c&&l&&o&&(0,t.jsx)(s,{tabs:c,activeTab:l,onChange:o})]})}e.s(["PageHeader",()=>i],40950)},19331,e=>{"use strict";let t=(0,e.i(24929).default)("clock-3",[["path",{d:"M12 6v6h4",key:"135r8i"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock3",()=>t],19331)},87353,e=>{"use strict";var t=e.i(22534),a=e.i(45688),r=e.i(71921),s=e.i(1235),i=e.i(88969),n=e.i(23147),c=e.i(35372);let l=t.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function o(e){let t=new URLSearchParams;e?.startTime&&t.set("startTime",e.startTime),e?.endTime&&t.set("endTime",e.endTime),e?.source&&t.set("source",e.source),e?.firewallResult&&t.set("firewallResult",e.firewallResult),e?.project&&t.set("project",e.project),e?.limit&&t.set("limit",e.limit.toString());let a=await (0,i.authFetch)(`${l}/api/v1/audit?${t}`);if(!a.ok)throw Error(await (0,i.readApiError)(a,"Failed to fetch audit logs"));return a.json()}async function d(e,t){let a=new URLSearchParams({timeRange:e});t&&a.set("project",t);let r=await (0,i.authFetch)(`${l}/api/v1/audit/stats?${a}`);if(!r.ok)throw Error(await (0,i.readApiError)(r,"Failed to fetch audit stats"));return r.json()}async function u(e="pending",t=50,a,r){let s=new URLSearchParams({status:e,limit:t.toString()});a&&s.set("project",a),r&&s.set("sourceType",r);let n=await (0,i.authFetch)(`${l}/api/v1/quarantine?${s}`);if(!n.ok)throw Error(await (0,i.readApiError)(n,"Failed to fetch quarantine"));return n.json()}async function m(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/${e}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reviewedBy:"dashboard"})});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to approve quarantined item"));return t.json()}async function h(e,t){let a=await (0,i.authFetch)(`${l}/api/v1/quarantine/${e}/reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reviewedBy:"dashboard",notes:t})});if(!a.ok)throw Error(await (0,i.readApiError)(a,"Failed to reject quarantined item"));return a.json()}async function x(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/bulk-approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e,reviewedBy:"dashboard"})});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to bulk approve quarantined items"));return t.json()}async function v(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/bulk-reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e,reviewedBy:"dashboard"})});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to bulk reject quarantined items"));return t.json()}async function y(){let e=await (0,i.authFetch)(`${l}/api/v1/review-copilot/status`);if(!e.ok)throw Error(await (0,i.readApiError)(e,"Failed to fetch Local AI status"));return e.json()}async function p(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/${e}/annotate`,{method:"POST",headers:{"Content-Type":"application/json"}});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to explain quarantined item"));return t.json()}async function g(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/annotate-pending`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to explain pending quarantine"));return t.json()}function f(e){let{isConnected:t}=(0,c.useWebSocketStatus)();return(0,a.useQuery)({queryKey:["audit-logs",e],queryFn:()=>o(e),refetchInterval:(0,n.wsGatedInterval)(t,3e4),retry:2})}function b(e="24h",t){let{isConnected:r}=(0,c.useWebSocketStatus)();return(0,a.useQuery)({queryKey:["audit-stats",e,t],queryFn:()=>d(e,t),refetchInterval:(0,n.wsGatedInterval)(r,3e4),retry:2})}function j(e="pending",t=50,r,s){let{isConnected:i}=(0,c.useWebSocketStatus)();return(0,a.useQuery)({queryKey:["quarantine",e,t,r,s],queryFn:()=>u(e,t,r,s),refetchInterval:(0,n.wsGatedInterval)(i,3e4),retry:2})}function w(){return(0,a.useQuery)({queryKey:["review-copilot-status"],queryFn:y,refetchInterval:3e4,retry:2})}function N(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:m,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["memories"]}),e.invalidateQueries({queryKey:["stats"]}),e.invalidateQueries({queryKey:["review-queue"]}),e.invalidateQueries({queryKey:["openclaw-sessions"]}),e.invalidateQueries({queryKey:["quality"]})}})}function k(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:({id:e,notes:t})=>h(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["review-queue"]})}})}function S(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:x,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["memories"]}),e.invalidateQueries({queryKey:["stats"]}),e.invalidateQueries({queryKey:["review-queue"]}),e.invalidateQueries({queryKey:["openclaw-sessions"]}),e.invalidateQueries({queryKey:["quality"]})}})}function q(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:v,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["review-queue"]})}})}function C(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:p,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["review-copilot-status"]})}})}function F(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:g,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["review-copilot-status"]})}})}e.s(["useAnnotatePendingQuarantine",()=>F,"useAnnotateQuarantine",()=>C,"useApproveQuarantine",()=>N,"useAuditLogs",()=>f,"useAuditStats",()=>b,"useBulkApproveQuarantine",()=>S,"useBulkRejectQuarantine",()=>q,"useQuarantine",()=>j,"useRejectQuarantine",()=>k,"useReviewCopilotStatus",()=>w])},14612,e=>{"use strict";var t=e.i(27493),a=e.i(4),r=e.i(56640),s=e.i(18509),i=e.i(36062),n=e.i(15771),c=e.i(19331),l=e.i(7571),o=e.i(75025),d=e.i(76344),u=e.i(27528),m=e.i(51069),h=e.i(16467),x=e.i(46194),v=e.i(95659),y=e.i(81523),p=e.i(40950),g=e.i(13808);let f=(0,e.i(24929).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);function b({ready:e,memoryCount:a,scanCount:r,blockedCount:s}){return!e||a>0||r>0||s>0?null:(0,t.jsxs)(h.GlassCard,{strong:!0,className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(g.Sparkles,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Welcome to ShieldCortex"})]}),(0,t.jsxs)("p",{className:"mt-2 max-w-2xl text-sm text-[var(--sc-text-secondary)]",children:["Nothing here yet. The dashboard is for ",(0,t.jsx)("strong",{className:"text-[var(--sc-text-primary)]",children:"visual review and bulk decisions"}),"; the ",(0,t.jsx)("code",{className:"font-mono",children:"shieldcortex"})," CLI and the agent hooks are for ",(0,t.jsx)("strong",{className:"text-[var(--sc-text-primary)]",children:"automation"}),". It fills in as your agents capture memories and the defence pipeline runs."]}),(0,t.jsxs)("div",{className:"mt-5 grid gap-3 sm:grid-cols-3",children:[(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(l.Database,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:"Capture memories"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:["Captured automatically as you work (Claude Code / OpenClaw hooks), or via the"," ",(0,t.jsx)("code",{className:"font-mono",children:"remember"})," MCP tool."]})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(f,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:"Generate audit data"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:["Run ",(0,t.jsx)("code",{className:"font-mono",children:"shieldcortex scan <file>"})," to push content through the defence pipeline and populate the audit log."]})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(d.ScanSearch,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:"Scan supply chain"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:["Run an X-Ray scan from the X-Ray page, or"," ",(0,t.jsx)("code",{className:"font-mono",children:"shieldcortex xray <path>"})," from the CLI."]})]})]})]})}var j=e.i(88069),w=e.i(87353),N=e.i(63312),k=e.i(31309),S=e.i(50279);function q(){let{data:e}=(0,j.useStats)(),{data:g}=(0,w.useAuditStats)("24h"),{data:f}=(0,w.useQuarantine)("pending",10),{data:q}=(0,w.useQuarantine)("pending",1,void 0,"memory_file"),{data:C}=(0,j.useQuality)(),{data:F}=(0,j.useContradictions)(),{data:Q}=(0,N.useLicenseStatus)(),{data:T}=(0,k.useXRayStatus)(),R=e?.total??0,$=e?.decayDistribution?.healthy??0,K=e?.decayDistribution?.fading??0,A=e?.decayDistribution?.critical??0,E=e?.decayDistribution?Math.round($/Math.max(1,R)*100):0,L=F?.count??F?.contradictions?.length??0,I=f?.total??0,M=q?.total??0,P=Math.max(0,I-M),O=g?.blockedCount??0,B=C?.duplicates?.count??0,z=C?.stale?.count??0,U=C?.neverAccessed?.count??0,D=T?.summary?.scans??0,X=(0,a.useMemo)(()=>{let e=[];return M>0&&e.push({title:`${M} memory file finding${1===M?"":"s"} need review`,detail:"These are scanned agent memory files, not stored ShieldCortex memories. Review or dismiss them without editing files.",severity:M>10?"critical":"medium",href:"/protection?tab=quarantine",cta:"Review files"}),P>0&&e.push({title:`${P} memory write${1===P?"":"s"} in quarantine`,detail:"Review blocked writes before they become silent operator debt.",severity:P>10?"critical":"medium",href:"/protection?tab=quarantine",cta:"Review writes"}),L>0&&e.push({title:`${L} contradiction${1===L?"":"s"} detected`,detail:"Conflicting facts reduce recall trust.",severity:L>5?"high":"medium",href:"/memory?tab=review",cta:"Resolve"}),O>0&&e.push({title:`${O} blocked operation${1===O?"":"s"} (24h)`,detail:"Defence pipeline blocked suspicious writes.",severity:"high",href:"/protection?tab=audit",cta:"View audit"}),z+B>0&&e.push({title:"Memory cleanup available",detail:`${z} stale, ${B} duplicate, ${U} unused memories.`,severity:"low",href:"/memory?tab=review",cta:"Clean up"}),e.slice(0,4)},[M,P,L,O,z,B,U]),_=M>0&&P>0?`${M} file finding${1===M?"":"s"}, ${P} write${1===P?"":"s"} pending.`:M>0?`${M} memory-file finding${1===M?"":"s"} pending.`:`${I} item${1===I?"":"s"} pending review.`;return(0,t.jsx)("div",{className:"h-full overflow-y-auto",children:(0,t.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,t.jsx)(p.PageHeader,{eyebrow:"ShieldCortex",title:"Command Centre",subtitle:"Stored-memory health, memory-file findings, threat pressure, and operational status at a glance."}),(0,t.jsx)(b,{ready:void 0!==e,memoryCount:R,scanCount:D,blockedCount:O}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-5",children:[(0,t.jsx)(x.StatCard,{label:"Stored Memories",value:R.toLocaleString(),icon:l.Database,accent:"cyan",trend:E>0?{value:E,label:"healthy"}:void 0}),(0,t.jsx)(x.StatCard,{label:"Memory Files Flagged",value:M.toLocaleString(),icon:o.FileText,accent:M>0?"amber":"muted"}),(0,t.jsx)(x.StatCard,{label:"Threats Blocked",value:O.toLocaleString(),icon:m.ShieldAlert,accent:O>0?"coral":"muted"}),(0,t.jsx)(x.StatCard,{label:"X-Ray Scans",value:D.toLocaleString(),icon:d.ScanSearch,accent:"cyan"}),(0,t.jsx)(x.StatCard,{label:"Health Score",value:`${E}%`,icon:u.Shield,accent:E>=80?"cyan":E>=50?"amber":"coral"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-6 lg:grid-cols-[1fr_1fr]",children:[(0,t.jsxs)(h.GlassCard,{className:"p-6",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Stored Memory Health"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-muted)]",children:"Decay distribution across ShieldCortex stored memories."}),(0,t.jsx)("div",{className:"mt-6 flex items-center justify-center",children:(0,t.jsxs)("div",{className:"relative h-40 w-40",children:[(0,t.jsxs)("svg",{viewBox:"0 0 100 100",className:"h-full w-full -rotate-90",children:[(0,t.jsx)("circle",{cx:"50",cy:"50",r:"42",fill:"none",stroke:"var(--sc-bg-elevated)",strokeWidth:"8"}),(0,t.jsx)("circle",{cx:"50",cy:"50",r:"42",fill:"none",stroke:"var(--sc-cyan)",strokeWidth:"8",strokeDasharray:`${2.64*E} 264`,strokeLinecap:"round",className:"transition-all duration-1000"})]}),(0,t.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[(0,t.jsxs)("span",{className:"text-3xl font-bold text-[var(--sc-text-primary)]",children:[E,"%"]}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:"healthy"})]})]})}),(0,t.jsxs)("div",{className:"mt-6 grid grid-cols-3 gap-3 text-center",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-lg font-semibold text-[var(--sc-cyan)]",children:$}),(0,t.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"Healthy"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-lg font-semibold text-[var(--sc-amber)]",children:K}),(0,t.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"Fading"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-lg font-semibold text-[var(--sc-coral)]",children:A}),(0,t.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"Critical"})]})]})]}),(0,t.jsxs)(h.GlassCard,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Urgent Actions"}),X.length>0&&(0,t.jsxs)(v.Badge,{variant:"coral",dot:!0,pulse:!0,children:[X.length," active"]})]}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-muted)]",children:"Quickest wins for trust, safety, and recall quality."}),(0,t.jsx)("div",{className:"mt-4 space-y-3",children:0===X.length?(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-xl bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(n.CheckCircle2,{size:18,className:"shrink-0 text-[var(--sc-cyan)]"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"All clear"}),(0,t.jsx)("p",{className:"text-xs text-[var(--sc-text-muted)]",children:"No urgent issues right now. Memory health looks stable."})]})]}):X.map(e=>(0,t.jsxs)(r.default,{href:e.href,className:"group flex items-start gap-3 rounded-xl bg-[var(--sc-bg-elevated)] p-4 transition-all hover:bg-[var(--sc-surface-interactive-hover)]",children:["critical"===e.severity||"high"===e.severity?(0,t.jsx)(s.AlertTriangle,{size:16,className:"mt-0.5 shrink-0 text-[var(--sc-coral)]"}):"medium"===e.severity?(0,t.jsx)(c.Clock3,{size:16,className:"mt-0.5 shrink-0 text-[var(--sc-amber)]"}):(0,t.jsx)(n.CheckCircle2,{size:16,className:"mt-0.5 shrink-0 text-[var(--sc-cyan)]"}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsx)("p",{className:"mt-0.5 text-xs text-[var(--sc-text-muted)]",children:e.detail})]}),(0,t.jsxs)("span",{className:"flex shrink-0 items-center gap-1 text-xs font-medium text-[var(--sc-cyan)] opacity-0 transition-opacity group-hover:opacity-100",children:[e.cta," ",(0,t.jsx)(i.ArrowRight,{size:12})]})]},e.title))})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(r.default,{href:"/xray",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(d.ScanSearch,{size:20,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Run X-Ray Scan"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Inspect packages and files for hidden risk."})]})}),(0,t.jsx)(r.default,{href:"/protection?tab=quarantine",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(s.AlertTriangle,{size:20,className:"text-[var(--sc-amber)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Review Quarantine"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:_})]})}),(0,t.jsx)(r.default,{href:"/memory?tab=recall",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(l.Database,{size:20,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Debug Recall"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Test queries and inspect ranking factors."})]})}),(0,t.jsx)(r.default,{href:"/protection?tab=dome",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(m.ShieldAlert,{size:20,className:"text-[var(--sc-coral)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Iron Dome"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Kill switch and behaviour gates."})]})})]}),(0,t.jsxs)(h.GlassCard,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Licence"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-muted)]",children:"Current tier and feature access."})]}),(0,t.jsx)(v.Badge,{variant:Q?.tier==="pro"?"cyan":Q?.tier==="team"?"coral":"muted",children:S.TIER_LABELS[Q?.tier??"free"]})]}),Q?.tier==="free"&&(0,t.jsxs)("div",{className:"mt-4 flex items-center gap-4 rounded-xl bg-gradient-to-r from-[var(--sc-coral)]/5 to-[var(--sc-cyan)]/5 p-4",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Unlock deep scanning, custom policies, and audit exports"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Pro starts at £29/mo with 10K cloud scans and 90-day retention."})]}),(0,t.jsx)("a",{href:"https://shieldcortex.ai/pricing",target:"_blank",rel:"noopener noreferrer",children:(0,t.jsx)(y.Button,{variant:"coral",size:"sm",glow:!0,children:"Upgrade"})})]})]})]})})}function C(){return(0,t.jsx)(q,{})}e.s(["default",()=>C],14612)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67307,e=>{"use strict";let t=(0,e.i(24929).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",()=>t],67307)},87927,e=>{"use strict";let t="shieldcortex.graph.intensity",a=new Set(["subtle","moderate","strong"]);function s(e){let s=e??window.localStorage;if(!s)return"moderate";let r=s.getItem(t);return"string"==typeof r&&a.has(r)?r:"moderate"}function r(e,a){let s=a??window.localStorage;s&&(s.setItem(t,e),"u">typeof CustomEvent&&window.dispatchEvent(new CustomEvent("shieldcortex:intensity-changed",{detail:e})))}function l(){return!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}e.s(["INTENSITY",0,{subtle:{breathPeriod:6e3,breathAmp:.03,particleCap:20,decayCreate:.98,decayRecall:.96},moderate:{breathPeriod:3e3,breathAmp:.08,particleCap:60,decayCreate:.96,decayRecall:.93},strong:{breathPeriod:1600,breathAmp:.14,particleCap:120,decayCreate:.94,decayRecall:.9}},"REDUCED_INTENSITY",0,{breathPeriod:1/0,breathAmp:0,particleCap:0,decayCreate:0,decayRecall:0},"isReducedMotion",()=>l,"loadIntensity",()=>s,"saveIntensity",()=>r])},16467,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let s={critical:"severity-critical",high:"severity-high",medium:"severity-medium",low:"severity-low",safe:"severity-safe",info:"severity-info"};function r({children:e,className:r,hover:l=!1,hoverCyan:c=!1,strong:i=!1,severity:n,onClick:m,selected:d=!1,title:o,statusLine:h,bodyPadding:x=!0}){let g=m?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),m())}:void 0;return(0,t.jsxs)("div",{className:(0,a.cn)("glass-card overflow-hidden",l&&"glass-card-hover cursor-pointer",c&&"glass-card-hover-cyan cursor-pointer",m&&!l&&!c&&"cursor-pointer",n&&s[n],d&&"border-[var(--term-electric)]",r),onClick:m,onKeyDown:g,role:m?"button":void 0,tabIndex:m?0:void 0,children:[void 0!==o&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--term-border)] bg-[var(--term-surface-2)] theme-glass:hidden",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-red)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-yellow)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-green)]"}),(0,t.jsx)("span",{className:"ml-2 text-xs select-none truncate text-[var(--term-text-muted)]",children:o})]}),(0,t.jsx)("div",{className:(0,a.cn)(x?"p-5":""),children:e}),void 0!==h&&(0,t.jsx)("div",{className:"px-4 py-2 text-xs border-t border-[var(--term-border)] bg-[var(--term-surface-2)] text-[var(--term-text-muted)] theme-glass:hidden",children:h})]})}e.s(["GlassCard",()=>r])},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)},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)},77744,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)},53615,e=>{"use strict";var t=e.i(27493),a=e.i(76490);function s({className:e}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center overflow-hidden rounded-md bg-[var(--term-surface-2)] text-[var(--term-text-muted)] text-xs leading-none animate-pulse px-2",e),"aria-busy":"true","aria-live":"polite",children:(0,t.jsx)("span",{className:"select-none whitespace-nowrap tracking-tighter",children:"█▓▓▓▒▒▒░░░░ ▓▓▒▒░░ █▓▒░ ▓▓▒░░ █▓▓▒░░░ ▓▒░░ █▒▒░"})}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block animate-pulse rounded-xl bg-[var(--sc-surface-interactive)]",e),"aria-busy":"true","aria-live":"polite"})]})}function r(){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)(s,{className:"h-3 w-24"}),(0,t.jsx)(s,{className:"h-7 w-56"}),(0,t.jsx)(s,{className:"h-4 w-80"})]}),(0,t.jsx)(s,{className:"h-10 w-96"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(s,{className:"h-24"}),(0,t.jsx)(s,{className:"h-24"}),(0,t.jsx)(s,{className:"h-24"}),(0,t.jsx)(s,{className:"h-24"})]}),(0,t.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,t.jsx)(s,{className:"h-64"}),(0,t.jsx)(s,{className:"h-64"})]})]})}e.s(["PageSkeleton",()=>r,"Skeleton",()=>s])},15771,63312,50279,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);var a=e.i(22534),s=e.i(45688),r=e.i(71921),l=e.i(1235),c=e.i(88969);let i=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function n(){let e=await (0,c.authFetch)(`${i}/api/license/status`);if(!e.ok)throw Error("Failed to fetch license status");return e.json()}async function m(e){let t=await (0,c.authFetch)(`${i}/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 d(){let e=await (0,c.authFetch)(`${i}/api/license/deactivate`,{method:"POST"});if(!e.ok)throw Error("Failed to deactivate license");return e.json()}function o(){return(0,s.useQuery)({queryKey:["license-status"],queryFn:n,refetchInterval:6e4,retry:2})}function h(){let e=(0,l.useQueryClient)();return(0,r.useMutation)({mutationFn:e=>m(e),onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}function x(){let e=(0,l.useQueryClient)();return(0,r.useMutation)({mutationFn:d,onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}e.s(["useActivateLicense",()=>h,"useDeactivateLicense",()=>x,"useLicenseStatus",()=>o],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)},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)},95659,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let s={critical:"text-[var(--term-danger)]",high:"text-[var(--term-danger)]",medium:"text-[var(--term-warn)]",low:"text-[var(--term-electric-fg)]",safe:"text-[var(--term-neon-fg)]",info:"text-[var(--term-text-muted)]",coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text-muted)]"},r={critical:"bg-[var(--term-danger)]",high:"bg-[var(--term-danger)]",medium:"bg-[var(--term-warn)]",low:"bg-[var(--term-electric)]",safe:"bg-[var(--term-neon)]",info:"bg-[var(--term-text-muted)]",coral:"bg-[var(--term-electric)]",cyan:"bg-[var(--term-neon)]",amber:"bg-[var(--term-warn)]",muted:"bg-[var(--term-text-muted)]"},l={critical:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",high:"theme-glass:bg-[var(--sc-coral-mid)]/15 theme-glass:border-[var(--sc-coral-mid)]/30",medium:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",low:"theme-glass:bg-[var(--sc-cyan-mid)]/15 theme-glass:border-[var(--sc-cyan-mid)]/30",safe:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",info:"theme-glass:bg-[var(--sc-text-muted)]/15 theme-glass:border-[var(--sc-text-muted)]/30",coral:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",cyan:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",amber:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",muted:"theme-glass:bg-[var(--sc-surface-interactive)] theme-glass:border-[var(--sc-border)]"};function c({children:e,variant:c="muted",className:i,dot:n=!1,pulse:m=!1}){return(0,t.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 px-1 text-[11px] font-semibold uppercase tracking-wider whitespace-nowrap",s[c],"theme-glass:rounded-full theme-glass:border theme-glass:px-2.5 theme-glass:py-0.5",l[c],i),children:[n&&(0,t.jsx)("span",{className:(0,a.cn)("h-1.5 w-1.5 rounded-full",r[c],m&&"animate-pulse"),"aria-hidden":!0}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"["}),(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"]"})]})}function i(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",()=>i])},66949,e=>{"use strict";let t=(0,e.i(24929).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",()=>t],66949)},40950,e=>{"use strict";var t=e.i(27493),a=e.i(76490),s=e.i(66949);function r({tabs:e,activeTab:r,onChange:l,className:c}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center gap-4 overflow-x-auto border-b border-[var(--term-border)] px-1 scrollbar-hide","theme-glass:gap-1 theme-glass:rounded-xl theme-glass:border-0 theme-glass:bg-[var(--sc-bg-surface)] theme-glass:p-1",c),role:"tablist",children:e.map(e=>{let c=e.id===r;return(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":c?"true":"false",onClick:()=>l(e.id),className:(0,a.cn)("relative flex shrink-0 items-center gap-2 px-1 py-2 text-xs font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",c?"text-[var(--term-electric-fg)]":"text-[var(--term-text-muted)] hover:text-[var(--term-text)]","theme-glass:font-medium theme-glass:font-sans theme-glass:rounded-lg theme-glass:px-3 theme-glass:py-2 sm:theme-glass:px-4 sm:theme-glass:text-sm",c&&"theme-glass:bg-[var(--sc-bg-elevated)] theme-glass:text-[var(--sc-text-primary)]",!c&&"theme-glass:hover:text-[var(--sc-text-secondary)]"),children:[e.icon,(0,t.jsx)("span",{children:e.label}),e.locked&&(0,t.jsx)(s.Lock,{size:11,className:"text-[var(--term-warn)] theme-glass:text-[var(--sc-coral)]"}),void 0!==e.count&&e.count>0&&(0,t.jsxs)("span",{className:"text-[var(--term-text-muted)] theme-glass:ml-0.5 theme-glass:rounded-full theme-glass:bg-[var(--sc-coral)]/15 theme-glass:px-1.5 theme-glass:py-0.5 theme-glass:text-[10px] theme-glass:font-bold theme-glass:text-[var(--sc-coral)]",children:[(0,t.jsxs)("span",{className:"theme-glass:hidden",children:["(",e.count,")"]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline",children:e.count})]}),c&&(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -bottom-px left-0 right-0 h-px bg-[var(--term-electric)] theme-glass:hidden"})]},e.id)})})}function l({eyebrow:e,title:s,subtitle:l,actions:c,tabs:i,activeTab:n,onTabChange:m,className:d}){return(0,t.jsxs)("div",{className:(0,a.cn)("space-y-3 theme-glass:space-y-4",d),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-4 theme-glass:gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"theme-glass:hidden",children:[e&&(0,t.jsxs)("p",{className:"text-[11px] uppercase tracking-wider text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]",children:"›"})," ",e]}),(0,t.jsxs)("h1",{className:"mt-1 flex items-baseline flex-wrap gap-2 text-base font-mono text-[var(--term-text)] sm:text-lg",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]","aria-hidden":!0,children:"$"}),(0,t.jsx)("span",{children:"shieldcortex"}),(0,t.jsx)("span",{className:"text-[var(--term-text-dim)]",children:s.toLowerCase()}),(0,t.jsx)("span",{className:"cli-cursor text-[var(--term-electric-fg)]","aria-hidden":!0})]}),l&&(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:"#"})," ",l]})]}),(0,t.jsxs)("div",{className:"hidden theme-glass:block",children:[e&&(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-[0.2em] text-[var(--sc-coral)] sm:text-[11px]",children:e}),(0,t.jsx)("h1",{className:"mt-1 text-xl font-bold text-[var(--sc-text-primary)] sm:text-2xl",children:s}),l&&(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)] sm:text-sm",children:l})]})]}),c&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:c})]}),i&&n&&m&&(0,t.jsx)(r,{tabs:i,activeTab:n,onChange:m})]})}e.s(["PageHeader",()=>l],40950)},81523,e=>{"use strict";var t=e.i(27493),a=e.i(76490),s=e.i(4);let r={coral:"border border-[var(--term-electric)] text-[var(--term-electric-fg)] bg-transparent hover:bg-[var(--term-electric)]/10",cyan:"border border-[var(--term-neon)] text-[var(--term-neon-fg)] bg-transparent hover:bg-[var(--term-neon)]/10",ghost:"border border-transparent text-[var(--term-text-muted)] bg-transparent hover:text-[var(--term-text)] hover:border-[var(--term-border)]",outline:"border border-[var(--term-border)] text-[var(--term-text-dim)] bg-transparent hover:border-[var(--term-text-muted)] hover:text-[var(--term-text)]"},l={sm:"px-2 py-1 text-xs",md:"px-3 py-1.5 text-sm",lg:"px-4 py-2 text-sm"},c={coral:"theme-glass:border-0 theme-glass:bg-gradient-to-br theme-glass:from-[var(--sc-coral)] theme-glass:to-[var(--sc-coral-dark)] theme-glass:text-white theme-glass:hover:shadow-[0_8px_30px_var(--sc-glow-coral-mid)]",cyan:"theme-glass:border-0 theme-glass:bg-[var(--sc-cyan)] theme-glass:text-[var(--sc-bg-deep)] theme-glass:hover:bg-[var(--sc-cyan-mid)]",ghost:"theme-glass:bg-transparent theme-glass:text-[var(--sc-text-secondary)] theme-glass:hover:bg-[var(--sc-surface-interactive)]",outline:"theme-glass:bg-transparent theme-glass:border theme-glass:border-[var(--sc-border)] theme-glass:text-[var(--sc-text-secondary)]"},i={sm:"theme-glass:px-3 theme-glass:py-1.5 theme-glass:text-xs theme-glass:rounded-lg",md:"theme-glass:px-4 theme-glass:py-2 theme-glass:text-sm theme-glass:rounded-xl",lg:"theme-glass:px-6 theme-glass:py-3 theme-glass:text-sm theme-glass:rounded-xl"},n=(0,s.forwardRef)(({variant:e="coral",size:s="md",glow:n=!1,pulse:m=!1,className:d,children:o,...h},x)=>(0,t.jsxs)("button",{ref:x,className:(0,a.cn)("inline-flex items-center justify-center gap-2 rounded-md font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",m?"disabled:pointer-events-none":"disabled:pointer-events-none disabled:opacity-50",r[e],l[s],"theme-glass:font-semibold theme-glass:transition-all theme-glass:hover:-translate-y-0.5",c[e],i[s],n&&"coral"===e&&"theme-glass:glow-coral-subtle",n&&"cyan"===e&&"theme-glass:glow-cyan-subtle",m&&"theme-glass:glow-cyan-pulse",d),type:"button",...h,children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-2 theme-glass:hidden",children:[m&&(0,t.jsx)("span",{className:"cli-cursor","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"["}),(0,t.jsx)("span",{className:"leading-none",children:o}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"]"})]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline-flex items-center gap-2",children:o})]}));n.displayName="Button",e.s(["Button",0,n])},84982,e=>{"use strict";let t=(0,e.i(24929).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],84982)},19331,e=>{"use strict";let t=(0,e.i(24929).default)("clock-3",[["path",{d:"M12 6v6h4",key:"135r8i"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock3",()=>t],19331)},71259,e=>{"use strict";let t=(0,e.i(24929).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",()=>t],71259)},77715,e=>{"use strict";let t=(0,e.i(24929).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",()=>t],77715)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,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:l=!1,hoverCyan:n=!1,strong:i=!1,severity:c,onClick:d,selected:o=!1,title:m,statusLine:x,bodyPadding:h=!0}){let u=d?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),d())}:void 0;return(0,t.jsxs)("div",{className:(0,a.cn)("glass-card overflow-hidden",l&&"glass-card-hover cursor-pointer",n&&"glass-card-hover-cyan cursor-pointer",d&&!l&&!n&&"cursor-pointer",c&&r[c],o&&"border-[var(--term-electric)]",s),onClick:d,onKeyDown:u,role:d?"button":void 0,tabIndex:d?0:void 0,children:[void 0!==m&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--term-border)] bg-[var(--term-surface-2)] theme-glass:hidden",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-red)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-yellow)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-green)]"}),(0,t.jsx)("span",{className:"ml-2 text-xs select-none truncate text-[var(--term-text-muted)]",children:m})]}),(0,t.jsx)("div",{className:(0,a.cn)(h?"p-5":""),children:e}),void 0!==x&&(0,t.jsx)("div",{className:"px-4 py-2 text-xs border-t border-[var(--term-border)] bg-[var(--term-surface-2)] text-[var(--term-text-muted)] theme-glass:hidden",children:x})]})}e.s(["GlassCard",()=>s])},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)},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}},6848,(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 c}});let r=e.r(27493),s=e.r(9854),l=e.r(13595),n=e.r(6848),i=e.r(54218);function c({moduleIds:e}){if("u">typeof window)return null;let t=l.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 c=(0,i.getDeploymentIdQueryOrEmptyString)();return(0,r.jsx)(r.Fragment,{children:a.map(e=>{let a=`${t.assetPrefix}/_next/${(0,n.encodeURIPath)(e)}${c}`;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 d}});let r=e.r(27493),s=e.r(4),l=e.r(25903),n=e.r(54220);function i(e){return{default:e&&"default"in e?e.default:e}}let c={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},d=function(e){let t={...c,...e},a=(0,s.lazy)(()=>t.loader().then(i)),d=t.loading;function o(e){let i=d?(0,r.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,c=!t.ssr||!!t.loading,o=c?s.Suspense:s.Fragment,m=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)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(a,{...e})});return(0,r.jsx)(o,{...c?{fallback:i}:{},children:m})}return o.displayName="LoadableComponent",o}},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)},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)},46194,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text)]"},s={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 l({label:e,value:l,icon:n,trend:i,accent:c="cyan",className:d}){let o=s[c];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center justify-between gap-3 px-4 py-2 border-b border-[var(--term-border)] last:border-0",d),children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsx)(n,{size:14,className:"text-[var(--term-text-muted)] shrink-0","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-xs uppercase tracking-wider text-[var(--term-text-muted)] truncate",children:e})]}),(0,t.jsxs)("div",{className:"flex items-baseline gap-2 shrink-0",children:[(0,t.jsx)("span",{className:(0,a.cn)("text-base tabular-nums",r[c]),children:l}),i&&(0,t.jsxs)("span",{className:(0,a.cn)("text-xs tabular-nums",i.value>=0?"text-[var(--term-neon-fg)]":"text-[var(--term-danger)]"),children:[i.value>=0?"+":"",i.value,"%"]})]})]}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block glass-card p-5",d),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:l}),i&&(0,t.jsxs)("p",{className:(0,a.cn)("mt-1 text-xs",i.value>=0?o.trendUp:o.trendDown),children:[i.value>=0?"+":"",i.value,"% ",i.label]})]}),(0,t.jsx)("div",{className:(0,a.cn)("rounded-xl p-2.5",o.iconBg),children:(0,t.jsx)(n,{size:20,className:o.icon})})]})})]})}e.s(["StatCard",()=>l])},15771,63312,50279,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);var a=e.i(22534),r=e.i(45688),s=e.i(71921),l=e.i(1235),n=e.i(88969);let i=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function c(){let e=await (0,n.authFetch)(`${i}/api/license/status`);if(!e.ok)throw Error("Failed to fetch license status");return e.json()}async function d(e){let t=await (0,n.authFetch)(`${i}/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,n.authFetch)(`${i}/api/license/deactivate`,{method:"POST"});if(!e.ok)throw Error("Failed to deactivate license");return e.json()}function m(){return(0,r.useQuery)({queryKey:["license-status"],queryFn:c,refetchInterval:6e4,retry:2})}function x(){let e=(0,l.useQueryClient)();return(0,s.useMutation)({mutationFn:e=>d(e),onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}function h(){let e=(0,l.useQueryClient)();return(0,s.useMutation)({mutationFn:o,onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}e.s(["useActivateLicense",()=>x,"useDeactivateLicense",()=>h,"useLicenseStatus",()=>m],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)},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)},95659,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"text-[var(--term-danger)]",high:"text-[var(--term-danger)]",medium:"text-[var(--term-warn)]",low:"text-[var(--term-electric-fg)]",safe:"text-[var(--term-neon-fg)]",info:"text-[var(--term-text-muted)]",coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text-muted)]"},s={critical:"bg-[var(--term-danger)]",high:"bg-[var(--term-danger)]",medium:"bg-[var(--term-warn)]",low:"bg-[var(--term-electric)]",safe:"bg-[var(--term-neon)]",info:"bg-[var(--term-text-muted)]",coral:"bg-[var(--term-electric)]",cyan:"bg-[var(--term-neon)]",amber:"bg-[var(--term-warn)]",muted:"bg-[var(--term-text-muted)]"},l={critical:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",high:"theme-glass:bg-[var(--sc-coral-mid)]/15 theme-glass:border-[var(--sc-coral-mid)]/30",medium:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",low:"theme-glass:bg-[var(--sc-cyan-mid)]/15 theme-glass:border-[var(--sc-cyan-mid)]/30",safe:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",info:"theme-glass:bg-[var(--sc-text-muted)]/15 theme-glass:border-[var(--sc-text-muted)]/30",coral:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",cyan:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",amber:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",muted:"theme-glass:bg-[var(--sc-surface-interactive)] theme-glass:border-[var(--sc-border)]"};function n({children:e,variant:n="muted",className:i,dot:c=!1,pulse:d=!1}){return(0,t.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 px-1 text-[11px] font-semibold uppercase tracking-wider whitespace-nowrap",r[n],"theme-glass:rounded-full theme-glass:border theme-glass:px-2.5 theme-glass:py-0.5",l[n],i),children:[c&&(0,t.jsx)("span",{className:(0,a.cn)("h-1.5 w-1.5 rounded-full",s[n],d&&"animate-pulse"),"aria-hidden":!0}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"["}),(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"]"})]})}function i(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",()=>n,"riskVariant",()=>i])},66949,e=>{"use strict";let t=(0,e.i(24929).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",()=>t],66949)},40950,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(66949);function s({tabs:e,activeTab:s,onChange:l,className:n}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center gap-4 overflow-x-auto border-b border-[var(--term-border)] px-1 scrollbar-hide","theme-glass:gap-1 theme-glass:rounded-xl theme-glass:border-0 theme-glass:bg-[var(--sc-bg-surface)] theme-glass:p-1",n),role:"tablist",children:e.map(e=>{let n=e.id===s;return(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":n?"true":"false",onClick:()=>l(e.id),className:(0,a.cn)("relative flex shrink-0 items-center gap-2 px-1 py-2 text-xs font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",n?"text-[var(--term-electric-fg)]":"text-[var(--term-text-muted)] hover:text-[var(--term-text)]","theme-glass:font-medium theme-glass:font-sans theme-glass:rounded-lg theme-glass:px-3 theme-glass:py-2 sm:theme-glass:px-4 sm:theme-glass:text-sm",n&&"theme-glass:bg-[var(--sc-bg-elevated)] theme-glass:text-[var(--sc-text-primary)]",!n&&"theme-glass:hover:text-[var(--sc-text-secondary)]"),children:[e.icon,(0,t.jsx)("span",{children:e.label}),e.locked&&(0,t.jsx)(r.Lock,{size:11,className:"text-[var(--term-warn)] theme-glass:text-[var(--sc-coral)]"}),void 0!==e.count&&e.count>0&&(0,t.jsxs)("span",{className:"text-[var(--term-text-muted)] theme-glass:ml-0.5 theme-glass:rounded-full theme-glass:bg-[var(--sc-coral)]/15 theme-glass:px-1.5 theme-glass:py-0.5 theme-glass:text-[10px] theme-glass:font-bold theme-glass:text-[var(--sc-coral)]",children:[(0,t.jsxs)("span",{className:"theme-glass:hidden",children:["(",e.count,")"]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline",children:e.count})]}),n&&(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -bottom-px left-0 right-0 h-px bg-[var(--term-electric)] theme-glass:hidden"})]},e.id)})})}function l({eyebrow:e,title:r,subtitle:l,actions:n,tabs:i,activeTab:c,onTabChange:d,className:o}){return(0,t.jsxs)("div",{className:(0,a.cn)("space-y-3 theme-glass:space-y-4",o),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-4 theme-glass:gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"theme-glass:hidden",children:[e&&(0,t.jsxs)("p",{className:"text-[11px] uppercase tracking-wider text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]",children:"›"})," ",e]}),(0,t.jsxs)("h1",{className:"mt-1 flex items-baseline flex-wrap gap-2 text-base font-mono text-[var(--term-text)] sm:text-lg",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]","aria-hidden":!0,children:"$"}),(0,t.jsx)("span",{children:"shieldcortex"}),(0,t.jsx)("span",{className:"text-[var(--term-text-dim)]",children:r.toLowerCase()}),(0,t.jsx)("span",{className:"cli-cursor text-[var(--term-electric-fg)]","aria-hidden":!0})]}),l&&(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:"#"})," ",l]})]}),(0,t.jsxs)("div",{className:"hidden theme-glass:block",children:[e&&(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-[0.2em] text-[var(--sc-coral)] sm:text-[11px]",children:e}),(0,t.jsx)("h1",{className:"mt-1 text-xl font-bold text-[var(--sc-text-primary)] sm:text-2xl",children:r}),l&&(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)] sm:text-sm",children:l})]})]}),n&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:n})]}),i&&c&&d&&(0,t.jsx)(s,{tabs:i,activeTab:c,onChange:d})]})}e.s(["PageHeader",()=>l],40950)},81523,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(4);let s={coral:"border border-[var(--term-electric)] text-[var(--term-electric-fg)] bg-transparent hover:bg-[var(--term-electric)]/10",cyan:"border border-[var(--term-neon)] text-[var(--term-neon-fg)] bg-transparent hover:bg-[var(--term-neon)]/10",ghost:"border border-transparent text-[var(--term-text-muted)] bg-transparent hover:text-[var(--term-text)] hover:border-[var(--term-border)]",outline:"border border-[var(--term-border)] text-[var(--term-text-dim)] bg-transparent hover:border-[var(--term-text-muted)] hover:text-[var(--term-text)]"},l={sm:"px-2 py-1 text-xs",md:"px-3 py-1.5 text-sm",lg:"px-4 py-2 text-sm"},n={coral:"theme-glass:border-0 theme-glass:bg-gradient-to-br theme-glass:from-[var(--sc-coral)] theme-glass:to-[var(--sc-coral-dark)] theme-glass:text-white theme-glass:hover:shadow-[0_8px_30px_var(--sc-glow-coral-mid)]",cyan:"theme-glass:border-0 theme-glass:bg-[var(--sc-cyan)] theme-glass:text-[var(--sc-bg-deep)] theme-glass:hover:bg-[var(--sc-cyan-mid)]",ghost:"theme-glass:bg-transparent theme-glass:text-[var(--sc-text-secondary)] theme-glass:hover:bg-[var(--sc-surface-interactive)]",outline:"theme-glass:bg-transparent theme-glass:border theme-glass:border-[var(--sc-border)] theme-glass:text-[var(--sc-text-secondary)]"},i={sm:"theme-glass:px-3 theme-glass:py-1.5 theme-glass:text-xs theme-glass:rounded-lg",md:"theme-glass:px-4 theme-glass:py-2 theme-glass:text-sm theme-glass:rounded-xl",lg:"theme-glass:px-6 theme-glass:py-3 theme-glass:text-sm theme-glass:rounded-xl"},c=(0,r.forwardRef)(({variant:e="coral",size:r="md",glow:c=!1,pulse:d=!1,className:o,children:m,...x},h)=>(0,t.jsxs)("button",{ref:h,className:(0,a.cn)("inline-flex items-center justify-center gap-2 rounded-md font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",d?"disabled:pointer-events-none":"disabled:pointer-events-none disabled:opacity-50",s[e],l[r],"theme-glass:font-semibold theme-glass:transition-all theme-glass:hover:-translate-y-0.5",n[e],i[r],c&&"coral"===e&&"theme-glass:glow-coral-subtle",c&&"cyan"===e&&"theme-glass:glow-cyan-subtle",d&&"theme-glass:glow-cyan-pulse",o),type:"button",...x,children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-2 theme-glass:hidden",children:[d&&(0,t.jsx)("span",{className:"cli-cursor","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"["}),(0,t.jsx)("span",{className:"leading-none",children:m}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"]"})]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline-flex items-center gap-2",children:m})]}));c.displayName="Button",e.s(["Button",0,c])},45256,76624,e=>{"use strict";let t=(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"}]]);e.s(["ExternalLink",()=>t],45256);var a=e.i(27493),r=e.i(95659),s=e.i(81523);function l({explanation:e,actions:t}){let l=t?.filter(Boolean)??[];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))})]}),l.length>0&&(0,a.jsx)("div",{className:"mt-3 flex flex-wrap gap-2 border-t border-[var(--sc-border)] pt-3",children:l.map(e=>(0,a.jsxs)(s.Button,{variant:e.variant??"outline",size:"sm",onClick:e.onClick,disabled:e.disabled||e.pending,children:[e.icon,e.pending?"Working":e.label]},e.key))})]})}e.s(["LocalAiExplanationPanel",()=>l],76624)},44250,e=>{"use strict";function t(e,t){let a=e.trim();if(!a)return"";let r=a.replace(/^file:\/+/,""),s=r.startsWith("/")?r:`/${r}`,l="number"==typeof t&&Number.isFinite(t)&&t>0?`:${t}`:"";return`vscode://file${s}${l}`}e.s(["buildEditorUrl",()=>t])},23457,e=>{"use strict";var t=e.i(22534),a=e.i(71921),r=e.i(88969);let s=t.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function l(e){let t=await (0,r.gatedFetch)(`${s}/api/v1/local-ai/explain`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,r.readApiError)(t,"Failed to generate local explanation"));return t.json()}function n(){return(0,a.useMutation)({mutationFn:l})}e.s(["useLocalAiExplain",()=>n])},84982,e=>{"use strict";let t=(0,e.i(24929).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],84982)},77744,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)},53615,e=>{"use strict";var t=e.i(27493),a=e.i(76490);function r({className:e}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center overflow-hidden rounded-md bg-[var(--term-surface-2)] text-[var(--term-text-muted)] text-xs leading-none animate-pulse px-2",e),"aria-busy":"true","aria-live":"polite",children:(0,t.jsx)("span",{className:"select-none whitespace-nowrap tracking-tighter",children:"█▓▓▓▒▒▒░░░░ ▓▓▒▒░░ █▓▒░ ▓▓▒░░ █▓▓▒░░░ ▓▒░░ █▒▒░"})}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block animate-pulse rounded-xl bg-[var(--sc-surface-interactive)]",e),"aria-busy":"true","aria-live":"polite"})]})}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,"Skeleton",()=>r])},19711,e=>{"use strict";var t=e.i(27493),a=e.i(66949),r=e.i(45256),s=e.i(63312),l=e.i(50279),n=e.i(81523);function i({feature:e,children:i,label:c}){let{data:d}=(0,s.useLicenseStatus)();if(!d)return(0,t.jsx)(t.Fragment,{children:i});let o=d.features.find(t=>t.feature===e);if(!o||o.enabled)return(0,t.jsx)(t.Fragment,{children:i});let m=o.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:[l.TIER_LABELS[m]," Feature"]}),c&&(0,t.jsx)("p",{className:"mt-1 max-w-xs text-center text-xs text-[var(--sc-text-muted)]",children:c}),(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 ",l.TIER_LABELS[m],(0,t.jsx)(r.ExternalLink,{size:12})]})})]})]})}e.s(["ProFeatureGate",()=>i])},9070,e=>{e.v(t=>Promise.all(["static/chunks/61aaa0c660c32b96.js"].map(t=>e.l(t))).then(()=>t(13213)))}]);
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "source-map",
|
|
3
|
+
"description": "Generates and consumes source maps",
|
|
4
|
+
"version": "0.6.1",
|
|
5
|
+
"homepage": "https://github.com/mozilla/source-map",
|
|
6
|
+
"author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
|
|
7
|
+
"contributors": [
|
|
8
|
+
"Tobias Koppers <tobias.koppers@googlemail.com>",
|
|
9
|
+
"Duncan Beevers <duncan@dweebd.com>",
|
|
10
|
+
"Stephen Crane <scrane@mozilla.com>",
|
|
11
|
+
"Ryan Seddon <seddon.ryan@gmail.com>",
|
|
12
|
+
"Miles Elam <miles.elam@deem.com>",
|
|
13
|
+
"Mihai Bazon <mihai.bazon@gmail.com>",
|
|
14
|
+
"Michael Ficarra <github.public.email@michael.ficarra.me>",
|
|
15
|
+
"Todd Wolfson <todd@twolfson.com>",
|
|
16
|
+
"Alexander Solovyov <alexander@solovyov.net>",
|
|
17
|
+
"Felix Gnass <fgnass@gmail.com>",
|
|
18
|
+
"Conrad Irwin <conrad.irwin@gmail.com>",
|
|
19
|
+
"usrbincc <usrbincc@yahoo.com>",
|
|
20
|
+
"David Glasser <glasser@davidglasser.net>",
|
|
21
|
+
"Chase Douglas <chase@newrelic.com>",
|
|
22
|
+
"Evan Wallace <evan.exe@gmail.com>",
|
|
23
|
+
"Heather Arthur <fayearthur@gmail.com>",
|
|
24
|
+
"Hugh Kennedy <hughskennedy@gmail.com>",
|
|
25
|
+
"David Glasser <glasser@davidglasser.net>",
|
|
26
|
+
"Simon Lydell <simon.lydell@gmail.com>",
|
|
27
|
+
"Jmeas Smith <jellyes2@gmail.com>",
|
|
28
|
+
"Michael Z Goddard <mzgoddard@gmail.com>",
|
|
29
|
+
"azu <azu@users.noreply.github.com>",
|
|
30
|
+
"John Gozde <john@gozde.ca>",
|
|
31
|
+
"Adam Kirkton <akirkton@truefitinnovation.com>",
|
|
32
|
+
"Chris Montgomery <christopher.montgomery@dowjones.com>",
|
|
33
|
+
"J. Ryan Stinnett <jryans@gmail.com>",
|
|
34
|
+
"Jack Herrington <jherrington@walmartlabs.com>",
|
|
35
|
+
"Chris Truter <jeffpalentine@gmail.com>",
|
|
36
|
+
"Daniel Espeset <daniel@danielespeset.com>",
|
|
37
|
+
"Jamie Wong <jamie.lf.wong@gmail.com>",
|
|
38
|
+
"Eddy Bruël <ejpbruel@mozilla.com>",
|
|
39
|
+
"Hawken Rives <hawkrives@gmail.com>",
|
|
40
|
+
"Gilad Peleg <giladp007@gmail.com>",
|
|
41
|
+
"djchie <djchie.dev@gmail.com>",
|
|
42
|
+
"Gary Ye <garysye@gmail.com>",
|
|
43
|
+
"Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
|
|
44
|
+
],
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "http://github.com/mozilla/source-map.git"
|
|
48
|
+
},
|
|
49
|
+
"main": "./source-map.js",
|
|
50
|
+
"files": [
|
|
51
|
+
"source-map.js",
|
|
52
|
+
"source-map.d.ts",
|
|
53
|
+
"lib/",
|
|
54
|
+
"dist/source-map.debug.js",
|
|
55
|
+
"dist/source-map.js",
|
|
56
|
+
"dist/source-map.min.js",
|
|
57
|
+
"dist/source-map.min.js.map"
|
|
58
|
+
],
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=0.10.0"
|
|
61
|
+
},
|
|
62
|
+
"license": "BSD-3-Clause",
|
|
63
|
+
"scripts": {
|
|
64
|
+
"test": "npm run build && node test/run-tests.js",
|
|
65
|
+
"build": "webpack --color",
|
|
66
|
+
"toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"doctoc": "^0.15.0",
|
|
70
|
+
"webpack": "^1.12.0"
|
|
71
|
+
},
|
|
72
|
+
"typings": "source-map"
|
|
73
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "source-map-support",
|
|
3
|
+
"description": "Fixes stack traces for files with source maps",
|
|
4
|
+
"version": "0.5.13",
|
|
5
|
+
"main": "./source-map-support.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "node build.js",
|
|
8
|
+
"serve-tests": "http-server -p 1336",
|
|
9
|
+
"prepublish": "npm run build",
|
|
10
|
+
"test": "mocha"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"buffer-from": "^1.0.0",
|
|
14
|
+
"source-map": "^0.6.0"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"browserify": "^4.2.3",
|
|
18
|
+
"coffeescript": "^1.12.7",
|
|
19
|
+
"http-server": "^0.11.1",
|
|
20
|
+
"mocha": "^3.5.3",
|
|
21
|
+
"webpack": "^1.15.0"
|
|
22
|
+
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/evanw/node-source-map-support"
|
|
26
|
+
},
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/evanw/node-source-map-support/issues"
|
|
29
|
+
},
|
|
30
|
+
"license": "MIT"
|
|
31
|
+
}
|
|
@@ -7,15 +7,12 @@
|
|
|
7
7
|
"dev": "next dev -p 3030",
|
|
8
8
|
"build": "next build && node scripts/copy-static.mjs",
|
|
9
9
|
"start": "next start -p 3030",
|
|
10
|
-
"lint": "eslint"
|
|
10
|
+
"lint": "eslint",
|
|
11
|
+
"test": "jest"
|
|
11
12
|
},
|
|
12
13
|
"dependencies": {
|
|
13
14
|
"@radix-ui/react-slot": "^1.2.4",
|
|
14
|
-
"@react-three/drei": "^10.7.7",
|
|
15
|
-
"@react-three/fiber": "^9.5.0",
|
|
16
|
-
"@react-three/postprocessing": "^3.0.4",
|
|
17
15
|
"@tanstack/react-query": "^5.90.19",
|
|
18
|
-
"@types/three": "^0.182.0",
|
|
19
16
|
"class-variance-authority": "^0.7.1",
|
|
20
17
|
"clsx": "^2.1.1",
|
|
21
18
|
"framer-motion": "^12.29.0",
|
|
@@ -28,16 +25,21 @@
|
|
|
28
25
|
"recharts": "^3.7.0",
|
|
29
26
|
"sonner": "^2.0.7",
|
|
30
27
|
"tailwind-merge": "^3.4.0",
|
|
31
|
-
"three": "^0.182.0",
|
|
32
28
|
"zustand": "^5.0.10"
|
|
33
29
|
},
|
|
34
30
|
"devDependencies": {
|
|
35
31
|
"@tailwindcss/postcss": "^4",
|
|
32
|
+
"@testing-library/dom": "^10.4.1",
|
|
33
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
34
|
+
"@testing-library/react": "^16.3.2",
|
|
35
|
+
"@types/jest": "^30.0.0",
|
|
36
36
|
"@types/node": "^20",
|
|
37
37
|
"@types/react": "^19",
|
|
38
38
|
"@types/react-dom": "^19",
|
|
39
39
|
"eslint": "^9",
|
|
40
40
|
"eslint-config-next": "16.1.4",
|
|
41
|
+
"jest": "^30.4.2",
|
|
42
|
+
"jest-environment-jsdom": "^30.4.1",
|
|
41
43
|
"tailwindcss": "^4",
|
|
42
44
|
"tw-animate-css": "^1.4.0",
|
|
43
45
|
"typescript": "^5"
|
|
@@ -553,7 +553,11 @@ export function registerMemoryRoutes(app, deps) {
|
|
|
553
553
|
salience,
|
|
554
554
|
memoryPurpose: memoryPurpose || undefined,
|
|
555
555
|
memoryScope: memoryScope || undefined,
|
|
556
|
-
}
|
|
556
|
+
}, undefined,
|
|
557
|
+
// Operator-attributable dashboard write → api:dashboard (trust 0.7):
|
|
558
|
+
// scanned like every write, but stays broadly recallable (above the
|
|
559
|
+
// sub-agent band) rather than the generic unattributed 0.3.
|
|
560
|
+
{ type: 'api', identifier: 'dashboard' });
|
|
557
561
|
res.status(201).json(memory);
|
|
558
562
|
}
|
|
559
563
|
catch (error) {
|
|
@@ -564,6 +568,15 @@ export function registerMemoryRoutes(app, deps) {
|
|
|
564
568
|
message: 'Use the dashboard control panel to resume memory creation.',
|
|
565
569
|
});
|
|
566
570
|
}
|
|
571
|
+
// The dashboard write is now scanned — surface a defence block as a 422,
|
|
572
|
+
// not a generic 500.
|
|
573
|
+
if (error.name === 'MemoryBlockedError') {
|
|
574
|
+
return res.status(422).json({
|
|
575
|
+
error: 'Blocked by the defence pipeline',
|
|
576
|
+
blocked: true,
|
|
577
|
+
message: error.message,
|
|
578
|
+
});
|
|
579
|
+
}
|
|
567
580
|
res.status(500).json({ error: error.message });
|
|
568
581
|
}
|
|
569
582
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getDatabase, withTransaction } from '../../database/init.js';
|
|
2
|
-
import { addMemory } from '../../memory/store.js';
|
|
2
|
+
import { addMemory, MemoryBlockedError } from '../../memory/store.js';
|
|
3
3
|
function getPendingQuarantineRow(id) {
|
|
4
4
|
const db = getDatabase();
|
|
5
|
-
const row = db.prepare(`SELECT id, original_title, original_content, project, source_type, source_identifier, reason
|
|
5
|
+
const row = db.prepare(`SELECT id, original_title, original_content, project, source_type, source_identifier, reason, firewall_result
|
|
6
6
|
FROM quarantine
|
|
7
7
|
WHERE id = ? AND status = 'pending'`).get(id);
|
|
8
8
|
return row ?? null;
|
|
@@ -31,16 +31,20 @@ function promoteApprovedQuarantineRow(row, reviewedBy) {
|
|
|
31
31
|
approvedFromQuarantine: true,
|
|
32
32
|
quarantineId: row.id,
|
|
33
33
|
quarantineReason: row.reason ?? null,
|
|
34
|
+
// Original provenance is preserved here (the trust now reflects the
|
|
35
|
+
// human approval, not the original source).
|
|
34
36
|
originalSourceType: row.source_type ?? null,
|
|
35
37
|
originalSourceIdentifier: row.source_identifier ?? null,
|
|
36
38
|
},
|
|
37
39
|
captureMethod: 'review',
|
|
38
40
|
reviewedBy,
|
|
39
41
|
sourceKind: normalizeSourceKind(row.source_type),
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
}, undefined,
|
|
43
|
+
// A human approving the item IS the parent-approval the quarantine was
|
|
44
|
+
// waiting for, so admit at user:approved (0.9 — out of the 0.5–0.7 auto-
|
|
45
|
+
// quarantine band, so it isn't re-quarantined in a loop). The pipeline still
|
|
46
|
+
// RE-SCANS, so genuinely-malicious content fails closed (caller catches it).
|
|
47
|
+
{ type: 'user', identifier: 'approved' });
|
|
44
48
|
}
|
|
45
49
|
function markPendingRowReviewed(id, status, reviewedBy) {
|
|
46
50
|
const db = getDatabase();
|
|
@@ -58,7 +62,25 @@ function approveExistingPendingRow(row, reviewedBy) {
|
|
|
58
62
|
status: 'approved',
|
|
59
63
|
};
|
|
60
64
|
}
|
|
61
|
-
|
|
65
|
+
// Never re-admit content the pipeline HARD-BLOCKED. Approving a BLOCK item
|
|
66
|
+
// rejects it instead of laundering hard-rejected poison back into memory.
|
|
67
|
+
if (row.firewall_result === 'BLOCK') {
|
|
68
|
+
markPendingRowReviewed(row.id, 'rejected', reviewedBy);
|
|
69
|
+
return { id: row.id, status: 'rejected' };
|
|
70
|
+
}
|
|
71
|
+
// QUARANTINE (soft hold): re-admit through the pipeline at operator-approved
|
|
72
|
+
// trust. If the content now hard-blocks, fail closed — reject, don't admit.
|
|
73
|
+
let memory;
|
|
74
|
+
try {
|
|
75
|
+
memory = promoteApprovedQuarantineRow(row, reviewedBy);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
if (e instanceof MemoryBlockedError) {
|
|
79
|
+
markPendingRowReviewed(row.id, 'rejected', reviewedBy);
|
|
80
|
+
return { id: row.id, status: 'rejected' };
|
|
81
|
+
}
|
|
82
|
+
throw e;
|
|
83
|
+
}
|
|
62
84
|
markPendingRowReviewed(row.id, 'approved', reviewedBy);
|
|
63
85
|
return {
|
|
64
86
|
id: row.id,
|
|
@@ -11,9 +11,13 @@ export function filterByTrust(results, minTrust, context) {
|
|
|
11
11
|
// Filter below minimum trust
|
|
12
12
|
if (score < minTrust)
|
|
13
13
|
return false;
|
|
14
|
-
// CONFIDENTIAL: only
|
|
14
|
+
// CONFIDENTIAL: context-scope only when the row actually DECLARES a
|
|
15
|
+
// context. metadata.context is not written on store today, so requiring
|
|
16
|
+
// equality dropped every CONFIDENTIAL (any email/phone-bearing) row from
|
|
17
|
+
// recall — silent amnesia. Drop only a declared-but-mismatched context.
|
|
15
18
|
if (item.sensitivity_level === 'CONFIDENTIAL') {
|
|
16
|
-
|
|
19
|
+
const rowContext = item.metadata?.context;
|
|
20
|
+
if (rowContext != null && context != null && rowContext !== context)
|
|
17
21
|
return false;
|
|
18
22
|
}
|
|
19
23
|
return true;
|
|
@@ -5,6 +5,11 @@ import { scoreAgent, buildAgentHierarchy } from './agent-scorer.js';
|
|
|
5
5
|
const BASE_SCORES = {
|
|
6
6
|
'user:direct': 1.0,
|
|
7
7
|
'user:approved': 0.9,
|
|
8
|
+
// Bulk import (restore from a backup/JSON). The generic `file` type is 0.6,
|
|
9
|
+
// which sits inside the 0.5–0.7 auto-quarantine band and would quarantine
|
|
10
|
+
// every imported row. Pin below the band so a benign restore succeeds while
|
|
11
|
+
// imported file data stays scanned + low-trust until reviewed.
|
|
12
|
+
'file:import': 0.4,
|
|
8
13
|
};
|
|
9
14
|
const TYPE_SCORES = {
|
|
10
15
|
user: 1.0,
|
|
@@ -408,16 +408,26 @@ export function clusterAndSummarise(options) {
|
|
|
408
408
|
bestCount = count;
|
|
409
409
|
}
|
|
410
410
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
411
|
+
try {
|
|
412
|
+
addMemory({
|
|
413
|
+
type: 'long_term',
|
|
414
|
+
category: category,
|
|
415
|
+
title: summaryTitle,
|
|
416
|
+
content: summaryContent,
|
|
417
|
+
project: bestProject || undefined,
|
|
418
|
+
tags: ['auto-summary'],
|
|
419
|
+
salience: 0.6,
|
|
420
|
+
}, undefined,
|
|
421
|
+
// System-generated consolidation summary — honest cli provenance
|
|
422
|
+
// (trust 0.9, above the auto-quarantine band so it isn't held).
|
|
423
|
+
{ type: 'cli', identifier: 'consolidate:summary' });
|
|
424
|
+
summariesCreated++;
|
|
425
|
+
}
|
|
426
|
+
catch {
|
|
427
|
+
// A summary whose content trips the (now-unconditional) defence scan
|
|
428
|
+
// must NOT abort the whole consolidation transaction — skip it, like the
|
|
429
|
+
// per-row guard in importMemories.
|
|
430
|
+
}
|
|
421
431
|
}
|
|
422
432
|
return { clusters, summariesCreated };
|
|
423
433
|
});
|
|
@@ -800,22 +810,44 @@ export function exportMemories(project) {
|
|
|
800
810
|
* Import memories from JSON
|
|
801
811
|
*/
|
|
802
812
|
export function importMemories(json) {
|
|
803
|
-
// Wrap in transaction for atomic import
|
|
813
|
+
// Wrap in transaction for atomic import. addMemory opens its own nested
|
|
814
|
+
// transaction (better-sqlite3 SAVEPOINT), so a per-row block rolls back only
|
|
815
|
+
// that row and the clean rows still commit.
|
|
804
816
|
return withTransaction(() => {
|
|
805
|
-
const db = getDatabase();
|
|
806
817
|
const memories = JSON.parse(json);
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
818
|
+
// SELECT * exports store tags/metadata as JSON TEXT — parse back to the
|
|
819
|
+
// array/object shapes addMemory expects.
|
|
820
|
+
const parseJsonField = (value, fallback) => {
|
|
821
|
+
if (typeof value !== 'string')
|
|
822
|
+
return value ?? fallback;
|
|
823
|
+
try {
|
|
824
|
+
return JSON.parse(value);
|
|
825
|
+
}
|
|
826
|
+
catch {
|
|
827
|
+
return fallback;
|
|
828
|
+
}
|
|
829
|
+
};
|
|
811
830
|
let imported = 0;
|
|
812
831
|
for (const memory of memories) {
|
|
813
832
|
try {
|
|
814
|
-
|
|
833
|
+
// Route every imported row through the defence pipeline + attribute it
|
|
834
|
+
// to file:import (trust 0.4 — below the auto-quarantine band). Closes
|
|
835
|
+
// the raw-INSERT bypass that admitted unscanned rows at trust 1.0 /
|
|
836
|
+
// 'user:direct'. The pipeline BLOCKs poisoned rows (caught below).
|
|
837
|
+
addMemory({
|
|
838
|
+
type: memory.type,
|
|
839
|
+
category: memory.category,
|
|
840
|
+
title: String(memory.title ?? ''),
|
|
841
|
+
content: String(memory.content ?? ''),
|
|
842
|
+
project: typeof memory.project === 'string' ? memory.project : undefined,
|
|
843
|
+
tags: parseJsonField(memory.tags, []),
|
|
844
|
+
salience: typeof memory.salience === 'number' ? memory.salience : 0.5,
|
|
845
|
+
metadata: parseJsonField(memory.metadata, {}),
|
|
846
|
+
}, DEFAULT_CONFIG, { type: 'file', identifier: 'import' });
|
|
815
847
|
imported++;
|
|
816
848
|
}
|
|
817
849
|
catch {
|
|
818
|
-
// Skip
|
|
850
|
+
// Skip rows the defence pipeline blocks (poisoned), or invalid entries.
|
|
819
851
|
}
|
|
820
852
|
}
|
|
821
853
|
return imported;
|