shieldcortex 4.6.4 → 4.6.7
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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.rsc +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.rsc +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +1 -1
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection/__PAGE__.segment.rsc +1 -1
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +3 -3
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray/__PAGE__.segment.rsc +1 -1
- 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 +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +2 -2
- 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/dashboard_c219bf07._.js +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_settings_SettingsView_tsx_16dc83a7._.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/490bb998f5a16fcb.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/{344b86872b9c4525.js → 90f35860c69b2f0b.js} +3 -3
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/915d5a8cf2d0807e.css +3 -0
- package/dist/api/routes/memories.js +4 -1
- package/dist/cloud/sync-queue.js +1 -1
- package/dist/database/init.js +62 -0
- package/dist/setup/openclaw.js +9 -10
- package/package.json +1 -1
- package/plugins/openclaw/dist/index.js +11 -1
- package/plugins/openclaw/dist/openclaw.plugin.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/8eaf3adbd52b96d5.css +0 -3
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/abc5967c868b0fe9.js +0 -1
- /package/dashboard/.next/standalone/dashboard/.next/static/{ng0doEBxE4bijqUCWUE8a → sG7_2zW-_zI42it71Ihgy}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{ng0doEBxE4bijqUCWUE8a → sG7_2zW-_zI42it71Ihgy}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{ng0doEBxE4bijqUCWUE8a → sG7_2zW-_zI42it71Ihgy}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/d878b929b21636c4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57043,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n3:I[27657,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n4:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"ViewportBoundary\"]\n9:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"MetadataBoundary\"]\nb:I[30687,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
1
|
+
<!DOCTYPE html><!--sG7_2zW__zI42it71Ihgy--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/d878b929b21636c4.js"/><script src="/_next/static/chunks/d9ad4c35fc865415.js" async=""></script><script src="/_next/static/chunks/43d761df92da7cb6.js" async=""></script><script src="/_next/static/chunks/e281719dbabcca1d.js" async=""></script><script src="/_next/static/chunks/9e56d1f8f4d7adcb.js" async=""></script><script src="/_next/static/chunks/turbopack-79214717b23f7452.js" async=""></script><script src="/_next/static/chunks/102f894cc892994d.js" async=""></script><script src="/_next/static/chunks/417032eeb2cd875f.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/d878b929b21636c4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57043,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n3:I[27657,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n4:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"ViewportBoundary\"]\n9:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"MetadataBoundary\"]\nb:I[30687,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"sG7_2zW-_zI42it71Ihgy\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/102f894cc892994d.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/417032eeb2cd875f.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"/
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"QhthYhK3oSEWFguP/f8l9qddhO3+L2MOG/2oK63qChU=\"\n}"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,42424,e=>{"use strict";var t=e.i(27493),s=e.i(16871),r=e.i(4),a=e.i(53615),c=e.i(24929);let i=(0,c.default)("cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]),n=(0,c.default)("credit-card",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);var l=e.i(54130),d=e.i(40950),o=e.i(16467),x=e.i(95659),u=e.i(81523),m=e.i(18509),p=e.i(15771),v=e.i(19331),y=e.i(7571),h=e.i(84012);let b=(0,c.default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var g=e.i(67307);let j=(0,c.default)("server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);var f=e.i(51069),N=e.i(45688),k=e.i(71921),w=e.i(1235),S=e.i(88969);let C=[],q="http://localhost:3001";function A(){return(0,N.useQuery)({queryKey:["cloud-config"],queryFn:async()=>{var e;let t,s,r=await (0,S.authFetch)(`${q}/api/cloud/config`);if(!r.ok)throw Error(await (0,S.readApiError)(r,"Failed to fetch cloud config"));return t=(e=await r.json()).syncControls&&"object"==typeof e.syncControls?e.syncControls:{},s=e.openclawMemory&&"object"==typeof e.openclawMemory?e.openclawMemory:{},{enabled:!!e.enabled,apiKeySet:!!e.apiKeySet,baseUrl:"string"==typeof e.baseUrl?e.baseUrl:"https://api.shieldcortex.ai",syncControls:{projectMode:"projectMode"in t&&("include"===t.projectMode||"exclude"===t.projectMode)?t.projectMode:"all",projects:Array.isArray(t.projects)?t.projects.filter(e=>"string"==typeof e):C,contentMode:"contentMode"in t&&"metadata"===t.contentMode?"metadata":"full",excludeSensitive:"excludeSensitive"in t&&!!t.excludeSensitive},openclawMemory:{autoMemory:"autoMemory"in s&&!!s.autoMemory,dedupe:"dedupe"in s&&!!s.dedupe,noveltyThreshold:"noveltyThreshold"in s&&"number"==typeof s.noveltyThreshold?s.noveltyThreshold:.88,maxRecent:"maxRecent"in s&&"number"==typeof s.maxRecent?s.maxRecent:300}}},refetchInterval:3e4})}let E="http://localhost:3001",M=[];function T(){return(0,N.useQuery)({queryKey:["cloud-sync-status"],queryFn:async()=>{var e;let t,s,r,a,c=await (0,S.authFetch)(`${E}/api/cloud/sync-status`);if(!c.ok)throw Error(await (0,S.readApiError)(c,"Failed to fetch sync status"));return t=(e=await c.json()).controls&&"object"==typeof e.controls?e.controls:{},r="byKind"in(s=e.queue&&"object"==typeof e.queue?e.queue:{})&&s.byKind&&"object"==typeof s.byKind?s.byKind:{},a=e=>({pending:Number(r[e]?.pending??0),failed:Number(r[e]?.failed??0),synced:Number(r[e]?.synced??0)}),{enabled:!!e.enabled,apiKeySet:!!e.apiKeySet,baseUrl:"string"==typeof e.baseUrl?e.baseUrl:"https://api.shieldcortex.ai",featureEnabled:!!e.featureEnabled,requiredTier:"pro"===e.requiredTier||"team"===e.requiredTier||"enterprise"===e.requiredTier?e.requiredTier:"free",controls:{projectMode:"projectMode"in t&&("include"===t.projectMode||"exclude"===t.projectMode)?t.projectMode:"all",projects:Array.isArray(t.projects)?t.projects.filter(e=>"string"==typeof e):M,contentMode:"contentMode"in t&&"metadata"===t.contentMode?"metadata":"full",excludeSensitive:"excludeSensitive"in t&&!!t.excludeSensitive},lastSyncAt:"string"==typeof e.lastSyncAt||null===e.lastSyncAt?e.lastSyncAt??null:null,device:{id:e.device&&"object"==typeof e.device&&"id"in e.device&&"string"==typeof e.device.id?e.device.id:"unknown",name:e.device&&"object"==typeof e.device&&"name"in e.device&&"string"==typeof e.device.name?e.device.name:"Unknown device",platform:e.device&&"object"==typeof e.device&&"platform"in e.device&&"string"==typeof e.device.platform?e.device.platform:"unknown"},queue:{pending:Number(s.pending??0),failed:Number(s.failed??0),synced:Number(s.synced??0),byKind:{audit:a("audit"),quarantine:a("quarantine"),memory:a("memory"),graph:a("graph"),unknown:a("unknown")},oldestPendingAt:"string"==typeof s.oldestPendingAt||null===s.oldestPendingAt?s.oldestPendingAt??null:null,nextRetryAt:"string"==typeof s.nextRetryAt||null===s.nextRetryAt?s.nextRetryAt??null:null,lastError:"string"==typeof s.lastError||null===s.lastError?s.lastError??null:null,lastErrorKind:"audit"===s.lastErrorKind||"quarantine"===s.lastErrorKind||"memory"===s.lastErrorKind||"graph"===s.lastErrorKind||"unknown"===s.lastErrorKind?s.lastErrorKind:null,latestFailureAt:"string"==typeof s.latestFailureAt||null===s.latestFailureAt?s.latestFailureAt??null:null}}},refetchInterval:3e4,staleTime:15e3})}var $=e.i(63312),L=e.i(50279);function R(e){let t=Math.max(0,Math.floor((Date.now()-new Date(e).getTime())/1e3));if(t<60)return`${t}s ago`;let s=Math.floor(t/60);if(s<60)return`${s}m ago`;let r=Math.floor(s/60);if(r<24)return`${r}h ago`;let a=Math.floor(r/24);return`${a}d ago`}function K(e){let t=Math.max(0,Math.floor((new Date(e).getTime()-Date.now())/1e3));if(t<60)return`in ${t}s`;let s=Math.floor(t/60);if(s<60)return`in ${s}m`;let r=Math.floor(s/60);if(r<24)return`in ${r}h`;let a=Math.floor(r/24);return`in ${a}d`}function I(){var e;let{data:s,isLoading:r}=T(),{data:a}=(0,$.useLicenseStatus)();if(r||!s)return null;let c="border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/70 text-[var(--sc-text-primary)]",n="Cloud sync disabled",l="Enable cloud sync and activate a Team licence to start replicating local data.",d=i;(e=s.lastSyncAt)&&(Date.now(),new Date(e).getTime());let o=s.queue.byKind.memory.pending+s.queue.byKind.graph.pending,x=s.queue.byKind.memory.failed+s.queue.byKind.graph.failed,u=s.queue.byKind.audit.failed+s.queue.byKind.quarantine.failed+s.queue.byKind.unknown.failed;return s.enabled&&s.apiKeySet&&!s.featureEnabled?(c="border-[var(--sc-amber)]/30 bg-[var(--sc-amber)]/10 text-[var(--sc-amber)]",n="Cloud configured but licence locked",l=`Cloud sync requires the ${L.TIER_LABELS[s.requiredTier]} tier. Current tier: ${L.TIER_LABELS[a?.tier??"free"]}.`,d=b):s.enabled&&s.apiKeySet&&o>0&&x>0?(c="border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]",n="Cloud sync needs attention",l=s.queue.lastError??"One or more queued sync jobs are failing.",d=f.ShieldAlert):s.enabled&&s.apiKeySet&&x>0?(c="border-[var(--sc-amber)]/30 bg-[var(--sc-amber)]/10 text-[var(--sc-amber)]",n=`${x} failed sync job${1===x?"":"s"} need clearing`,l=s.queue.lastError?`${s.queue.lastError}${s.queue.latestFailureAt?` Last failure ${R(s.queue.latestFailureAt)}.`:""}`:"These items exhausted retries and won't sync automatically. Clear them or investigate the cause.",d=m.AlertTriangle):s.enabled&&s.apiKeySet&&o>0?(c="border-[var(--sc-amber)]/30 bg-[var(--sc-amber)]/10 text-[var(--sc-amber)]",n="Cloud sync is catching up",l=s.queue.nextRetryAt?`Next retry ${K(s.queue.nextRetryAt)}.`:"Queued jobs are waiting to flush.",d=g.RefreshCw):s.enabled&&s.apiKeySet&&(c="border-[var(--sc-cyan)]/30 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]",n="Cloud sync healthy",l=s.lastSyncAt?`Last successful sync ${R(s.lastSyncAt)}.`:"Connected and ready to sync.",u>0&&(l+=` Auxiliary audit/quarantine history: ${u} failed job${1===u?"":"s"}.`),d=p.CheckCircle2),(0,t.jsx)("div",{className:`rounded-2xl border p-4 ${c}`,children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)(d,{size:18,className:"mt-0.5 shrink-0"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-sm font-semibold",children:n}),(0,t.jsx)("p",{className:"mt-1 text-sm opacity-90",children:l})]})]})})}function P({label:e,value:s,detail:r,icon:a}){return(0,t.jsxs)("div",{className:"glass-card p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-xs uppercase tracking-[0.2em] text-[var(--sc-text-muted)]",children:e}),(0,t.jsx)(a,{size:15,className:"text-[var(--sc-text-muted)]"})]}),(0,t.jsx)("div",{className:"mt-2 text-2xl font-semibold text-[var(--sc-text-primary)]",children:s}),(0,t.jsx)("div",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:r})]})}function F({label:e,pending:s,failed:r,synced:a}){return(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-3",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e}),(0,t.jsxs)("div",{className:"mt-3 grid grid-cols-3 gap-2 text-xs",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-[var(--sc-text-muted)]",children:"Pending"}),(0,t.jsx)("div",{className:"mt-1 font-semibold text-[var(--sc-amber)]",children:s})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-[var(--sc-text-muted)]",children:"Failed"}),(0,t.jsx)("div",{className:"mt-1 font-semibold text-[var(--sc-coral)]",children:r})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-[var(--sc-text-muted)]",children:"Synced"}),(0,t.jsx)("div",{className:"mt-1 font-semibold text-[var(--sc-cyan)]",children:a})]})]})]})}function _(){let e,{data:s}=A(),{data:a}=(0,N.useQuery)({queryKey:["cloud-projects"],queryFn:async()=>{let e=await (0,S.authFetch)(`${q}/api/cloud/projects`);if(!e.ok)throw Error(await (0,S.readApiError)(e,"Failed to fetch cloud projects"));return e.json()},staleTime:3e4}),c=(e=(0,w.useQueryClient)(),(0,k.useMutation)({mutationFn:async e=>{let t=await (0,S.authFetch)(`${q}/api/cloud/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,S.readApiError)(t,"Failed to update cloud config"));return t.json()},onSuccess:()=>{e.invalidateQueries({queryKey:["cloud-config"]}),e.invalidateQueries({queryKey:["cloud-sync-status"]})}})),[i,n]=(0,r.useState)(null),l=a?.projects??[],d=i??s?.syncControls??{projectMode:"all",projects:[],contentMode:"full",excludeSensitive:!1},o="all"!==d.projectMode,[x,u]=(0,r.useState)("idle");async function m(){try{await c.mutateAsync({cloudSyncProjectMode:d.projectMode,cloudSyncProjects:d.projects,cloudSyncContentMode:d.contentMode,cloudSyncExcludeSensitive:d.excludeSensitive}),n(null),u("saved"),setTimeout(()=>u("idle"),2e3)}catch{u("error"),setTimeout(()=>u("idle"),3e3)}}return(0,t.jsxs)("div",{className:"glass-card-strong p-5",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Sync Controls"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-secondary)]",children:"Decide what leaves this device before it hits the cloud replica."})]}),(0,t.jsx)("button",{type:"button",onClick:()=>void m(),disabled:c.isPending,className:`rounded-lg border px-3 py-2 text-sm font-medium transition disabled:cursor-not-allowed disabled:opacity-50 ${"saved"===x?"border-[var(--sc-cyan)]/50 bg-[var(--sc-cyan)]/20 text-[var(--sc-cyan)]":"error"===x?"border-[var(--sc-coral)]/50 bg-[var(--sc-coral)]/20 text-[var(--sc-coral)]":"border-[var(--sc-cyan)]/30 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)] hover:bg-[var(--sc-cyan)]/20"}`,children:c.isPending?"Saving...":"saved"===x?"✓ Saved":"error"===x?"Failed to save":"Save controls"})]}),(0,t.jsxs)("div",{className:"mt-5 grid gap-4",children:[(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.2em] text-[var(--sc-text-muted)]",children:"Content mode"}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 text-[11px] text-[var(--sc-text-secondary)]",children:[(0,t.jsx)("span",{className:"rounded-full border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/60 px-2.5 py-1",children:"metadata"===d.contentMode?"Metadata only":"Full content"}),(0,t.jsxs)("span",{className:"rounded-full border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/60 px-2.5 py-1",children:["Sensitive filter ",d.excludeSensitive?"on":"off"]})]}),(0,t.jsxs)("div",{className:"mt-3 grid gap-2 md:grid-cols-2",children:[(0,t.jsxs)("label",{className:`rounded-lg border p-3 text-sm ${"full"===d.contentMode?"border-[var(--sc-cyan)]/40 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]":"border-[var(--sc-border)] text-[var(--sc-text-primary)]"}`,children:[(0,t.jsx)("input",{type:"radio",className:"mr-2",checked:"full"===d.contentMode,onChange:()=>n(e=>({...e??d,contentMode:"full"}))}),"Full content",(0,t.jsx)("div",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:"Titles and memory bodies replicate to cloud."})]}),(0,t.jsxs)("label",{className:`rounded-lg border p-3 text-sm ${"metadata"===d.contentMode?"border-[var(--sc-cyan)]/40 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]":"border-[var(--sc-border)] text-[var(--sc-text-primary)]"}`,children:[(0,t.jsx)("input",{type:"radio",className:"mr-2",checked:"metadata"===d.contentMode,onChange:()=>n(e=>({...e??d,contentMode:"metadata"}))}),"Metadata only",(0,t.jsx)("div",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:"Projects, tags, salience, and graph remain; body content is redacted."})]})]})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.2em] text-[var(--sc-text-muted)]",children:"Project scope"}),(0,t.jsx)("div",{className:"mt-3 flex flex-wrap gap-2",children:["all","include","exclude"].map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>n(t=>({...t??d,projectMode:e})),className:`rounded-full border px-3 py-1.5 text-xs font-medium uppercase tracking-wide ${d.projectMode===e?"border-[var(--sc-cyan)]/40 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]":"border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/60 text-[var(--sc-text-primary)]"}`,children:e},e))}),(0,t.jsx)("p",{className:"mt-3 text-xs text-[var(--sc-text-secondary)]",children:"all"===d.projectMode?"All local projects are eligible for sync.":"include"===d.projectMode?"Only the selected projects will sync.":"Selected projects stay local-only."}),o&&(0,t.jsxs)("details",{className:"mt-3 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/40 p-3",children:[(0,t.jsxs)("summary",{className:"cursor-pointer list-none text-sm font-medium text-[var(--sc-text-primary)]",children:["Choose projects ",d.projects.length>0?`(${d.projects.length} selected)`:""]}),(0,t.jsx)("div",{className:"mt-3 max-h-48 overflow-y-auto",children:0===l.length?(0,t.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"No named projects found in local memory yet."}):(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:l.map(e=>{let s=d.projects.includes(e.project);return(0,t.jsxs)("button",{type:"button",onClick:()=>{var t;return t=e.project,void n(e=>{let s=e??d,r=s.projects.includes(t)?s.projects.filter(e=>e!==t):[...s.projects,t].sort((e,t)=>e.localeCompare(t));return{...s,projects:r}})},className:`rounded-full border px-3 py-1.5 text-xs ${s?"border-[var(--sc-cyan)]/40 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]":"border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 text-[var(--sc-text-primary)]"}`,children:[e.project," ",(0,t.jsxs)("span",{className:"text-[var(--sc-text-muted)]",children:["(",e.count,")"]})]},e.project)})})})]})]}),(0,t.jsxs)("label",{className:"flex items-start gap-3 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4 text-sm text-[var(--sc-text-primary)]",children:[(0,t.jsx)("input",{type:"checkbox",className:"mt-0.5",checked:d.excludeSensitive,onChange:e=>n(t=>({...t??d,excludeSensitive:e.target.checked}))}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"font-medium text-[var(--sc-text-primary)]",children:"Exclude sensitive memories"}),(0,t.jsx)("div",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:"Skip memories whose sensitivity level is higher than INTERNAL when syncing to cloud."})]})]}),c.isError&&(0,t.jsx)("div",{className:"rounded-xl border border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 p-3 text-sm text-[var(--sc-coral)]",children:c.error.message})]})]})}function U({sync:e,cloudConfig:s}){return(0,t.jsxs)("div",{className:"glass-card-strong p-5",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Current policy"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-secondary)]",children:"The snapshot below is the current cloud posture. Edit it in Sync Controls when you need to change what leaves this device."}),(0,t.jsxs)("div",{className:"mt-4 grid gap-3 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.2em] text-[var(--sc-text-muted)]",children:"Sync scope"}),(0,t.jsx)("div",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:e.controls.projectMode}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:[e.controls.projects.length," selected project",1===e.controls.projects.length?"":"s"]})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.2em] text-[var(--sc-text-muted)]",children:"Content mode"}),(0,t.jsx)("div",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:"metadata"===e.controls.contentMode?"Metadata only":"Full content"}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:["Sensitive filter ",e.controls.excludeSensitive?"enabled":"off"]})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.2em] text-[var(--sc-text-muted)]",children:"Cloud endpoint"}),(0,t.jsx)("div",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:e.baseUrl})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.2em] text-[var(--sc-text-muted)]",children:"OpenClaw complement"}),(0,t.jsxs)("div",{className:"mt-2 grid grid-cols-2 gap-2 text-xs text-[var(--sc-text-primary)]",children:[(0,t.jsxs)("span",{children:["Auto-memory: ",s.openclawMemory.autoMemory?"On":"Off"]}),(0,t.jsxs)("span",{children:["Dedupe: ",s.openclawMemory.dedupe?"On":"Off"]}),(0,t.jsxs)("span",{children:["Novelty: ",s.openclawMemory.noveltyThreshold]}),(0,t.jsxs)("span",{children:["Recent window: ",s.openclawMemory.maxRecent]})]})]})]})]})}function z(){let e,s=(e=(0,w.useQueryClient)(),(0,k.useMutation)({mutationFn:async()=>{let e=await (0,S.authFetch)(`${E}/api/cloud/sync-queue/clear-failed`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(!e.ok)throw Error(await (0,S.readApiError)(e,"Failed to clear failed items"));return e.json()},onSuccess:()=>{e.invalidateQueries({queryKey:["cloud-sync-status"]})}}));return(0,t.jsx)("button",{type:"button",onClick:()=>s.mutate(),disabled:s.isPending,className:"shrink-0 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)]/50 px-3 py-1.5 text-xs text-[var(--sc-text-secondary)] transition hover:border-[var(--sc-text-muted)] hover:text-[var(--sc-text-primary)] disabled:opacity-50",children:s.isPending?"Clearing...":s.isSuccess?`Cleared ${s.data?.cleared??0}`:"Clear failed"})}function O(){let{data:e,isLoading:s,refetch:r,isFetching:a}=T(),{data:c,isLoading:n}=A(),{data:l,isLoading:d}=(0,$.useLicenseStatus)();if(s||n||d||!e||!c||!l)return(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsx)("div",{className:"glass-card p-6 text-sm text-[var(--sc-text-secondary)]",children:"Loading cloud diagnostics..."})});let o=l.tier,x=e.queue.byKind.memory,u=e.queue.byKind.graph,b=x.failed+u.failed,f=e.queue.byKind.audit.failed+e.queue.byKind.quarantine.failed+e.queue.byKind.unknown.failed,N=e.lastSyncAt?R(e.lastSyncAt):"Never",k=b>0?"Needs review":x.pending+u.pending>0?"Catching up":"Healthy";return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[(0,t.jsx)("span",{className:`rounded-full px-2.5 py-1 font-medium ${L.TIER_BG[o]} ${L.TIER_COLOURS[o]}`,children:L.TIER_LABELS[o]}),(0,t.jsxs)("span",{className:"rounded-full border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/70 px-2.5 py-1 text-[var(--sc-text-primary)]",children:["Last sync: ",N]}),(0,t.jsx)("button",{type:"button",onClick:()=>void r(),disabled:a,className:"rounded-full border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/70 px-2.5 py-1 text-[var(--sc-text-muted)] transition hover:text-[var(--sc-text-primary)] disabled:opacity-50",title:"Refresh sync status",children:(0,t.jsx)(g.RefreshCw,{size:12,className:a?"animate-spin":""})})]}),(0,t.jsx)(I,{}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-5",children:[(0,t.jsx)(P,{label:"Replication",value:k,detail:`${b} failed \xb7 ${x.pending+u.pending} pending`,icon:g.RefreshCw}),(0,t.jsx)(P,{label:"Device",value:e.device.name,detail:`${e.device.platform} \xb7 ${e.device.id.slice(0,12)}`,icon:j}),(0,t.jsx)(P,{label:"Cloud Target",value:new URL(e.baseUrl).host,detail:e.enabled?"Configured target":"Disabled in config",icon:i}),(0,t.jsx)(P,{label:"Memory Queue",value:x.pending,detail:`${x.failed} failed \xb7 ${x.synced} synced`,icon:y.Database}),(0,t.jsx)(P,{label:"Graph Queue",value:u.pending,detail:`${u.failed} failed \xb7 ${u.synced} synced`,icon:h.GitBranch})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-6 xl:grid-cols-[1.35fr_0.95fr]",children:[(0,t.jsxs)("div",{className:"glass-card p-5",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Replication"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-secondary)]",children:"Memory and graph sync queues. Items are synced to your cloud replica automatically."})]}),b>0&&(0,t.jsx)(z,{})]}),(0,t.jsxs)("div",{className:"mt-5 grid grid-cols-1 gap-3 md:grid-cols-2",children:[(0,t.jsx)(F,{label:"Memory",...x}),(0,t.jsx)(F,{label:"Graph",...u})]}),(0,t.jsxs)("details",{className:"mt-5 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/30 p-4",children:[(0,t.jsx)("summary",{className:"cursor-pointer list-none text-sm font-medium text-[var(--sc-text-primary)]",children:"Advanced transport signals"}),(0,t.jsxs)("div",{className:"mt-4 grid grid-cols-1 gap-3 md:grid-cols-2",children:[(0,t.jsx)(F,{label:"Audit",...e.queue.byKind.audit}),(0,t.jsx)(F,{label:"Quarantine",...e.queue.byKind.quarantine})]}),(0,t.jsx)("div",{className:"mt-4 overflow-hidden rounded-xl border border-[var(--sc-border)]",children:(0,t.jsxs)("table",{className:"min-w-full divide-y divide-[var(--sc-border)] text-sm",children:[(0,t.jsx)("thead",{className:"bg-[var(--sc-bg-deep)]/70 text-[var(--sc-text-secondary)]",children:(0,t.jsxs)("tr",{children:[(0,t.jsx)("th",{className:"px-4 py-3 text-left font-medium",children:"Signal"}),(0,t.jsx)("th",{className:"px-4 py-3 text-left font-medium",children:"Current value"}),(0,t.jsx)("th",{className:"px-4 py-3 text-left font-medium",children:"Why it matters"})]})}),(0,t.jsxs)("tbody",{className:"divide-y divide-[var(--sc-border)] bg-[var(--sc-bg-surface)]/40 text-[var(--sc-text-primary)]",children:[(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{className:"px-4 py-3",children:"Oldest queued job"}),(0,t.jsx)("td",{className:"px-4 py-3",children:e.queue.oldestPendingAt?R(e.queue.oldestPendingAt):"None queued"}),(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--sc-text-secondary)]",children:"If this stays old while pending grows, the local worker is falling behind."})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{className:"px-4 py-3",children:"Next retry"}),(0,t.jsx)("td",{className:"px-4 py-3",children:e.queue.nextRetryAt?K(e.queue.nextRetryAt):"Idle"}),(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--sc-text-secondary)]",children:"Confirms whether failures are retrying normally or the queue is stuck."})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{className:"px-4 py-3",children:"Failed jobs in history"}),(0,t.jsx)("td",{className:"px-4 py-3",children:b}),(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--sc-text-secondary)]",children:"These are retained replication dead-letter records for memory and graph sync."})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{className:"px-4 py-3",children:"Auxiliary failed history"}),(0,t.jsx)("td",{className:"px-4 py-3",children:f}),(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--sc-text-secondary)]",children:"Audit and quarantine retry history is shown here for debugging, but it does not mean memory replication is currently blocked."})]}),(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{className:"px-4 py-3",children:"Latest memory sync"}),(0,t.jsx)("td",{className:"px-4 py-3",children:e.lastSyncAt?R(e.lastSyncAt):"Not recorded"}),(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--sc-text-secondary)]",children:"This is the best quick indicator for whether cloud replication is actually current."})]})]})]})})]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsx)(_,{}),(0,t.jsx)(U,{sync:e,cloudConfig:c}),(0,t.jsxs)("div",{className:"glass-card-strong p-5",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Last actionable error"}),(0,t.jsx)("div",{className:"mt-4 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:e.queue.lastError?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:`flex items-center gap-2 text-sm font-medium ${e.queue.pending>0?"text-[var(--sc-coral)]":"text-[var(--sc-amber)]"}`,children:[(0,t.jsx)(m.AlertTriangle,{size:16}),e.queue.lastErrorKind?`${e.queue.lastErrorKind} queue`:"Unknown queue"]}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--sc-text-primary)]",children:e.queue.lastError}),e.queue.latestFailureAt&&(0,t.jsxs)("div",{className:"mt-2 text-xs text-[var(--sc-text-muted)]",children:["Recorded ",R(e.queue.latestFailureAt)]}),e.queue.nextRetryAt&&(0,t.jsxs)("div",{className:"mt-3 inline-flex items-center gap-1 rounded-full bg-[var(--sc-bg-surface)] px-2 py-1 text-xs text-[var(--sc-text-secondary)]",children:[(0,t.jsx)(v.Clock3,{size:12}),"Retry ",K(e.queue.nextRetryAt)]})]}):(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-[var(--sc-cyan)]",children:[(0,t.jsx)(p.CheckCircle2,{size:16}),"No recent sync errors recorded."]})})]})]})]})]})}var B=e.i(27528);let D=(0,c.default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);var Q=e.i(77715),G=e.i(84982),H=e.i(13808),J=e.i(66949);let V=(0,c.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),X=(0,c.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var Y=e.i(22534);let W="https://api.shieldcortex.ai",Z=Y.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001",ee=["Custom injection patterns","Custom Iron Dome policies","Custom firewall rules","Audit export (JSON/CSV)","Skill scanner deep mode"];function et(){let{data:e,isLoading:s}=(0,$.useLicenseStatus)(),a=(0,$.useActivateLicense)(),c=(0,$.useDeactivateLicense)(),i=function(){let e=(0,w.useQueryClient)(),[t,s]=(0,r.useState)("idle"),[a,c]=(0,r.useState)(null),[i,n]=(0,r.useState)(null),l=(0,r.useCallback)(async(e,t)=>{s("submitting"),c(null);try{let r=await fetch(`${W}/v1/billing/quick-checkout`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,plan:t})}),a=await r.json();if(!r.ok||!a.checkout_url||!a.setup_id)throw Error(a.error||"Failed to create checkout session");n(a.setup_id),window.open(a.checkout_url,"_blank"),s("polling")}catch(e){c(e instanceof Error?e.message:"Checkout failed"),s("error")}},[]);return(0,r.useEffect)(()=>{if("polling"!==t||!i)return;let r=setInterval(async()=>{try{let t=await fetch(`${W}/v1/billing/setup-status/${i}`),a=await t.json();if("complete"===a.status&&a.license_key){clearInterval(r),s("activating");try{if(!(await (0,S.authFetch)(`${Z}/api/license/activate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:a.license_key})})).ok)throw Error("Local activation failed");e.invalidateQueries({queryKey:["license-status"]}),s("complete")}catch{c('Payment succeeded but local activation failed. Use "I Have a Key" to activate manually.'),s("error")}}else"expired"===a.status?(clearInterval(r),c("Setup expired. Please try again."),s("error")):"complete"!==a.status||a.license_key||(clearInterval(r),c("Licence key was already retrieved. Check your dashboard or try again."),s("error"))}catch{}},3e3),a=setTimeout(()=>{clearInterval(r),c('Checkout timed out. If you completed payment, use "I Have a Key" or contact support.'),s("error")},9e5);return()=>{clearInterval(r),clearTimeout(a)}},[t,i,e]),{state:t,error:a,startCheckout:l,reset:(0,r.useCallback)(()=>{s("idle"),c(null),n(null)},[])}}(),[n,l]=(0,r.useState)(""),[d,o]=(0,r.useState)("default"),[x,u]=(0,r.useState)(""),[m,v]=(0,r.useState)("pro"),[y,h]=(0,r.useState)(!1);if(s||!e)return(0,t.jsx)("div",{className:"bg-[var(--sc-bg-surface)] border border-[var(--sc-border)] rounded-xl p-4 mb-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(B.Shield,{size:16,className:"text-[var(--sc-text-muted)]"}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)] animate-pulse",children:"Loading licence..."})]})});let b=e.tier;if("free"===b)return(0,t.jsxs)("div",{className:"relative overflow-hidden rounded-xl mb-4 bg-gradient-to-br from-slate-900 via-[var(--sc-bg-surface)] to-cyan-950/30 border border-[var(--sc-cyan)]/30",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-[var(--sc-cyan)]/5 rounded-full blur-2xl -translate-y-1/2 translate-x-1/2"}),(0,t.jsxs)("div",{className:"relative p-5",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,t.jsx)("div",{className:"flex items-center justify-center w-8 h-8 rounded-lg bg-[var(--sc-cyan)]/10 border border-[var(--sc-cyan)]/20",children:(0,t.jsx)(H.Sparkles,{size:16,className:"text-[var(--sc-cyan)]"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-[var(--sc-text-primary)]",children:"Unlock Pro Features"}),(0,t.jsx)("p",{className:"text-[11px] text-[var(--sc-text-secondary)] mt-0.5",children:"Your defence pipeline is fully active. Upgrade for advanced controls."})]})]}),(0,t.jsx)("span",{className:"text-[10px] font-medium px-2 py-0.5 rounded-full bg-[var(--sc-bg-elevated)] text-[var(--sc-text-secondary)] border border-[var(--sc-border)]",children:"Free"})]}),(0,t.jsx)("div",{className:"grid grid-cols-2 gap-x-4 gap-y-1.5 mb-4",children:ee.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs",children:[(0,t.jsx)(J.Lock,{size:10,className:"text-[var(--sc-cyan)]/60 shrink-0"}),(0,t.jsx)("span",{className:"text-[var(--sc-text-secondary)]",children:e})]},e))}),"complete"===i.state?(0,t.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-[var(--sc-cyan)]/10 border border-[var(--sc-cyan)]/20 rounded-lg",children:[(0,t.jsx)(p.CheckCircle2,{size:16,className:"text-[var(--sc-cyan)] shrink-0"}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-cyan)]",children:"Pro activated! Your dashboard is refreshing..."})]}):"polling"===i.state||"activating"===i.state?(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-[var(--sc-cyan)]/10 border border-[var(--sc-cyan)]/20 rounded-lg",children:[(0,t.jsx)(G.Loader2,{size:14,className:"text-[var(--sc-cyan)] animate-spin shrink-0"}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-cyan)]",children:"activating"===i.state?"Activating licence...":"Complete payment in the Stripe tab..."})]}),(0,t.jsx)("button",{onClick:()=>{i.reset(),o("default")},className:"text-[10px] text-[var(--sc-text-muted)] hover:text-[var(--sc-text-primary)] transition-colors",children:"Cancel"})]}):"checkout"===d?(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] text-[var(--sc-text-muted)] mb-1 block",children:"Email"}),(0,t.jsx)("input",{type:"email",placeholder:"you@company.com",value:x,onChange:e=>u(e.target.value),className:"w-full bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] rounded-lg px-3 py-2 text-xs text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus:outline-none focus:ring-1 focus:ring-[var(--sc-cyan)]",autoFocus:!0})]}),(0,t.jsx)("div",{className:"flex gap-2",children:["pro","team"].map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>v(e),className:`flex-1 px-3 py-2 text-xs font-medium rounded-lg border transition-colors ${m===e?"bg-[var(--sc-cyan)]/20 border-[var(--sc-cyan)]/50 text-[var(--sc-cyan)]":"bg-[var(--sc-bg-elevated)] border-[var(--sc-border)] text-[var(--sc-text-secondary)] hover:border-[var(--sc-border)]"}`,children:[L.PLAN_PRICING[e].label," — ",L.PLAN_PRICING[e].price]},e))}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:()=>i.startCheckout(x,m),disabled:"submitting"===i.state||!x.trim(),className:"flex-1 inline-flex items-center justify-center gap-1.5 px-4 py-2 text-xs font-medium bg-[var(--sc-cyan)] hover:bg-[var(--sc-cyan-mid)] disabled:opacity-50 text-[var(--sc-text-primary)] rounded-lg transition-colors",children:"submitting"===i.state?(0,t.jsx)(G.Loader2,{size:12,className:"animate-spin"}):"Continue to Checkout"}),(0,t.jsx)("button",{onClick:()=>{o("default"),i.reset()},className:"px-3 py-2 text-xs text-[var(--sc-text-muted)] hover:text-[var(--sc-text-primary)] transition-colors",children:"Back"})]}),i.error&&(0,t.jsx)("p",{className:"text-xs text-[var(--sc-coral)]",children:i.error})]}):"activate"===d?(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),n.trim()&&a.mutate(n.trim(),{onSuccess:()=>{l(""),o("default")}})},className:"flex gap-2",children:[(0,t.jsx)("input",{type:"text",placeholder:"sc_pro_...",value:n,onChange:e=>l(e.target.value),className:"flex-1 bg-[var(--sc-bg-elevated)] border border-[var(--sc-border)] rounded-lg px-3 py-2 text-xs text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus:outline-none focus:ring-1 focus:ring-[var(--sc-cyan)]",autoFocus:!0}),(0,t.jsx)("button",{type:"submit",disabled:a.isPending||!n.trim(),className:"px-4 py-2 text-xs font-medium bg-[var(--sc-cyan)] hover:bg-[var(--sc-cyan-mid)] disabled:opacity-50 text-[var(--sc-text-primary)] rounded-lg transition-colors",children:a.isPending?(0,t.jsx)(G.Loader2,{size:12,className:"animate-spin"}):"Activate"}),(0,t.jsx)("button",{type:"button",onClick:()=>{o("default"),l(""),a.reset()},className:"px-3 py-2 text-xs text-[var(--sc-text-muted)] hover:text-[var(--sc-text-primary)] transition-colors",children:"Back"})]}),a.isError&&(0,t.jsx)("p",{className:"text-xs text-[var(--sc-coral)]",children:a.error instanceof Error?a.error.message:"Activation failed"})]}):(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("button",{onClick:()=>o("checkout"),className:"inline-flex items-center gap-1.5 px-4 py-2 text-xs font-medium bg-[var(--sc-cyan)] hover:bg-[var(--sc-cyan-mid)] text-[var(--sc-text-primary)] rounded-lg transition-colors",children:"Upgrade to Pro"}),(0,t.jsxs)("button",{onClick:()=>o("activate"),className:"inline-flex items-center gap-1.5 px-4 py-2 text-xs font-medium bg-[var(--sc-bg-elevated)] hover:bg-[var(--sc-bg-elevated)] text-[var(--sc-text-primary)] rounded-lg transition-colors border border-[var(--sc-border)]",children:[(0,t.jsx)(D,{size:12}),"I Have a Key"]})]}),i.error&&(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("p",{className:"text-xs text-[var(--sc-coral)]",children:i.error}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:()=>{i.reset(),o("checkout")},className:"text-[10px] text-[var(--sc-cyan)] hover:text-[var(--sc-cyan)] transition-colors",children:"Try Again"}),(0,t.jsx)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:"·"}),(0,t.jsx)("button",{onClick:()=>{i.reset(),o("activate")},className:"text-[10px] text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)] transition-colors",children:"I Have a Key"})]})]})]})]})]});let g=e.features.filter(e=>e.enabled).length,j=e.features.length;return(0,t.jsxs)("div",{className:"bg-[var(--sc-bg-surface)] border border-[var(--sc-cyan)]/40 rounded-xl p-4 mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(B.Shield,{size:16,className:L.TIER_COLOURS[b]}),(0,t.jsx)("h3",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Licence"}),(0,t.jsx)("span",{className:`text-[10px] font-semibold px-1.5 py-0.5 rounded ${L.TIER_COLOURS[b]} ${L.TIER_BG[b]}`,children:L.TIER_LABELS[b]})]}),(0,t.jsxs)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:[g,"/",j," features"]})]}),(0,t.jsxs)("div",{className:"space-y-2 mb-3",children:[e.email&&(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,t.jsx)("span",{className:"text-[var(--sc-text-muted)]",children:"Email"}),(0,t.jsx)("span",{className:"text-[var(--sc-text-primary)]",children:e.email})]}),null!==e.daysUntilExpiry&&(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,t.jsx)("span",{className:"text-[var(--sc-text-muted)]",children:"Expires"}),(0,t.jsx)("span",{className:e.daysUntilExpiry<=7?"text-[var(--sc-amber)]":"text-[var(--sc-text-primary)]",children:e.daysUntilExpiry<=0?"Expired (grace period)":`${e.daysUntilExpiry} days`})]})]}),(0,t.jsxs)("button",{onClick:()=>h(!y),className:"flex items-center gap-1 text-[10px] text-[var(--sc-text-muted)] hover:text-[var(--sc-text-primary)] transition-colors mb-2",children:[y?(0,t.jsx)(X,{size:12}):(0,t.jsx)(V,{size:12}),y?"Hide features":"Show features"]}),y&&(0,t.jsx)("div",{className:"space-y-1.5 mb-3",children:e.features.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[e.enabled?(0,t.jsx)(p.CheckCircle2,{size:12,className:"text-[var(--sc-cyan)] shrink-0"}):(0,t.jsx)(Q.XCircle,{size:12,className:"text-[var(--sc-text-muted)] shrink-0"}),(0,t.jsx)("span",{className:e.enabled?"text-[var(--sc-text-primary)]":"text-[var(--sc-text-muted)]",children:e.description.split(".")[0]}),!e.enabled&&(0,t.jsx)("span",{className:`text-[9px] px-1 py-0.5 rounded ${L.TIER_COLOURS[e.requiredTier]} ${L.TIER_BG[e.requiredTier]}`,children:L.TIER_LABELS[e.requiredTier]})]},e.feature))}),(0,t.jsx)("button",{onClick:()=>{confirm(`Remove your ${L.TIER_LABELS[b]} licence key? You will lose access to paid features.`)&&c.mutate()},disabled:c.isPending,className:"text-[10px] text-[var(--sc-text-muted)] hover:text-[var(--sc-coral)] transition-colors",children:"Deactivate"})]})}function es(){let e=(0,s.useSearchParams)().get("tab"),a=e&&["cloud","licence","admin"].includes(e)?e:null,[c,m]=(0,r.useState)("cloud"),p=a??c,{data:v}=(0,$.useLicenseStatus)(),y=[{id:"cloud",label:"Cloud Sync",icon:(0,t.jsx)(i,{size:14})},{id:"licence",label:"Licence",icon:(0,t.jsx)(n,{size:14})},{id:"admin",label:"Admin",icon:(0,t.jsx)(l.Settings,{size:14})}];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)(d.PageHeader,{eyebrow:"Configuration",title:"Settings",subtitle:"Cloud sync, licence management, and system configuration.",tabs:y,activeTab:p,onTabChange:e=>m(e),actions:(0,t.jsx)(x.Badge,{variant:v?.tier==="pro"?"cyan":v?.tier==="team"?"coral":"muted",children:L.TIER_LABELS[v?.tier??"free"]})}),(0,t.jsxs)("div",{children:["cloud"===p&&(0,t.jsx)(O,{}),"licence"===p&&(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)(et,{}),(0,t.jsxs)(o.GlassCard,{className:"p-6",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Upgrade"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--sc-text-secondary)]",children:"Pro unlocks deep X-Ray scanning, custom firewall rules, custom Iron Dome policies, audit exports, and more. Team adds cloud sync and team management."}),(0,t.jsx)("div",{className:"mt-4 flex gap-3",children:(0,t.jsx)("a",{href:"https://shieldcortex.ai/pricing",target:"_blank",rel:"noopener noreferrer",children:(0,t.jsx)(u.Button,{variant:"coral",glow:!0,children:"View pricing"})})})]})]}),"admin"===p&&(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)(o.GlassCard,{className:"p-6",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"System Information"}),(0,t.jsxs)("div",{className:"mt-4 space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-4 py-3",children:[(0,t.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Dashboard"}),(0,t.jsx)("span",{className:"font-mono text-sm text-[var(--sc-text-primary)]",children:"localhost:3030"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-4 py-3",children:[(0,t.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:"API Server"}),(0,t.jsx)("span",{className:"font-mono text-sm text-[var(--sc-text-primary)]",children:"localhost:3001"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-4 py-3",children:[(0,t.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Database"}),(0,t.jsx)("span",{className:"font-mono text-sm text-[var(--sc-text-primary)]",children:"~/.shieldcortex/memories.db"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-[var(--sc-bg-elevated)] px-4 py-3",children:[(0,t.jsx)("span",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Licence Tier"}),(0,t.jsx)(x.Badge,{variant:v?.tier==="pro"?"cyan":v?.tier==="team"?"coral":"muted",children:L.TIER_LABELS[v?.tier??"free"]})]})]})]})})]})]})})}function er(){return(0,t.jsx)(r.Suspense,{fallback:(0,t.jsx)(a.PageSkeleton,{}),children:(0,t.jsx)(es,{})})}e.s(["SettingsView",()=>er],42424)}]);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,21090,e=>{"use strict";var t=e.i(27493),s=e.i(16871),r=e.i(4),a=e.i(53615),i=e.i(74133),c=e.i(7571),l=e.i(84012),n=e.i(24929);let d=(0,n.default)("inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);var o=e.i(6847),m=e.i(13808),u=e.i(40950),x=e.i(46194),p=e.i(88069),h=e.i(22534),v=e.i(71921),y=e.i(45688),g=e.i(1235),f=e.i(88969);let j=h.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";function b(e){return(e.status??"active")!=="archived"&&(e.status??"active")!=="suppressed"&&!e.reviewedAt}function N(e,t){if(!e)return e;let s=(e,s)=>e.map(e=>e.id===t.id?t:e).filter(s),r=e.sections.contradictions.map(e=>({...e,memoryA:e.memoryA.id===t.id?t:e.memoryA,memoryB:e.memoryB.id===t.id?t:e.memoryB})).filter(e=>b(e.memoryA)&&b(e.memoryB)),a=e.sections.duplicates.map(e=>({...e,memoryA:e.memoryA.id===t.id?t:e.memoryA,memoryB:e.memoryB.id===t.id?t:e.memoryB})).filter(e=>b(e.memoryA)&&b(e.memoryB)),i={stale:s(e.sections.stale,e=>b(e)&&(e.decayedScore??1)<.3),neverUsed:s(e.sections.neverUsed,e=>{var t;return b(e)&&0===e.accessCount&&!!(t=e.createdAt)&&Date.now()-new Date(t).getTime()>=864e5}),lowTrust:s(e.sections.lowTrust,e=>b(e)&&(e.trustScore??1)<.7),noisyAutoExtracted:s(e.sections.noisyAutoExtracted,e=>b(e)&&("auto"===e.captureMethod||e.tags?.includes("auto-extracted"))),projectless:s(e.sections.projectless,e=>b(e)&&!(e.project&&e.project.trim())&&"global"!==e.scope),duplicates:a,contradictions:r};return{...e,summary:{stale:i.stale.length,neverUsed:i.neverUsed.length,lowTrust:i.lowTrust.length,noisyAutoExtracted:i.noisyAutoExtracted.length,projectless:i.projectless.length,duplicates:i.duplicates.length,contradictions:i.contradictions.length},openClaw:e.openClaw,sections:i}}async function w(e){let t=e?`?project=${encodeURIComponent(e)}`:"",s=await (0,f.authFetch)(`${j}/api/review/queue${t}`);if(!s.ok)throw Error(await (0,f.readApiError)(s,"Failed to fetch review queue"));return s.json()}async function C(e){let t=await (0,f.authFetch)(`${j}/api/memories/${e.id}/review`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to update review state"));return t.json()}async function k(e){let t=await (0,f.authFetch)(`${j}/api/memories/merge`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to merge memories"));return t.json()}function S(e){return(0,y.useQuery)({queryKey:["review-queue",e],queryFn:()=>w(e),staleTime:3e4})}var A=e.i(16467),M=e.i(95659),B=e.i(81523);let E=h.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function F(e){let t=new URLSearchParams;t.set("query",e.query),e.project&&t.set("project",e.project),e.expectedId&&t.set("expectedId",String(e.expectedId));let s=await (0,f.authFetch)(`${E}/api/recall/explain?${t.toString()}`);if(!s.ok)throw Error("Failed to explain recall");return s.json()}async function T(e,t){let s=new URLSearchParams({mode:"search",query:e,limit:"8"});t&&s.set("project",t);let r=await (0,f.authFetch)(`${E}/api/memories?${s.toString()}`);if(!r.ok)throw Error("Failed to fetch memory candidates");return(await r.json()).memories}var $=e.i(42098);function q({score:e}){let s=Math.round(100*e);return(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--sc-bg-deep)]",children:(0,t.jsx)("div",{className:"h-full rounded-full transition-all",style:{width:`${s}%`,background:"linear-gradient(90deg, var(--sc-cyan), var(--sc-coral))"}})}),(0,t.jsxs)("span",{className:"text-[10px] tabular-nums text-[var(--sc-text-muted)]",children:[s,"%"]})]})}function P({result:e}){let[s,a]=(0,r.useState)(!1),i=e.memory;return(0,t.jsxs)(A.GlassCard,{hover:!0,className:"p-4",onClick:()=>a(e=>!e),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-[var(--sc-text-primary)]",children:i.title}),(0,t.jsxs)("div",{className:"mt-1.5 flex flex-wrap items-center gap-1.5",children:[(0,t.jsx)(M.Badge,{variant:"muted",children:i.category}),(0,t.jsx)(M.Badge,{variant:"cyan",children:i.project||"global"}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/1e3);if(t<60)return"just now";let s=Math.floor(t/60);if(s<60)return`${s}m ago`;let r=Math.floor(s/60);if(r<24)return`${r}h ago`;let a=Math.floor(r/24);return`${a}d ago`}(i.createdAt)})]}),(0,t.jsx)(q,{score:e.relevanceScore})]}),(0,t.jsx)("div",{className:"shrink-0 rounded-lg bg-[var(--sc-cyan)]/10 px-2.5 py-1.5 text-center",children:(0,t.jsx)("span",{className:"text-sm font-semibold tabular-nums text-[var(--sc-cyan)]",children:e.relevanceScore.toFixed(2)})})]}),s&&(0,t.jsxs)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3 text-xs text-[var(--sc-text-muted)]",children:[i.content.slice(0,200),i.content.length>200&&"..."]})]})}function D(){var e;let{projectFilter:s}=(0,$.useDashboardStore)(),[a,i]=(0,r.useState)(""),[c,l]=(0,r.useState)(""),[n,d]=(0,r.useState)(""),[m,u]=(0,r.useState)(null),x=(0,v.useMutation)({mutationFn:async e=>{let t="shieldcortex:recall-history",s=[e,...JSON.parse(window.localStorage.getItem(t)??"[]").filter(t=>t!==e)].slice(0,8);return window.localStorage.setItem(t,JSON.stringify(s)),s}}),{data:p,isLoading:h}=(e=(0,r.useMemo)(()=>c.trim()?{query:c.trim(),project:s,expectedId:m}:null,[c,s,m]),(0,y.useQuery)({queryKey:["recall-explain",e],queryFn:()=>F(e),enabled:!!e?.query?.trim(),staleTime:3e4})),{data:g=[]}=(0,y.useQuery)({queryKey:["memory-candidates",n,s],queryFn:()=>T(n,s),enabled:n.trim().length>=2,staleTime:3e4}),f=p?.results.length?p.results.reduce((e,t)=>e+t.relevanceScore,0)/p.results.length:0;return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(A.GlassCard,{className:"p-4",children:(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),a.trim()&&(l(a.trim()),x.mutate(a.trim()))},className:"flex gap-3",children:[(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(o.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--sc-text-muted)]"}),(0,t.jsx)("input",{value:a,onChange:e=>i(e.target.value),placeholder:"Why did we choose PostgreSQL over SQLite?",className:"h-10 w-full rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] pl-10 pr-4 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan"})]}),(0,t.jsx)(B.Button,{type:"submit",variant:"coral",size:"md",children:"Explain recall"})]})}),p&&!h&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(M.Badge,{variant:"cyan",children:[p.total," result",1===p.total?"":"s"]}),(0,t.jsxs)(M.Badge,{variant:"muted",children:["avg relevance ",f.toFixed(2)]})]}),h&&(0,t.jsx)("div",{className:"py-8 text-center text-sm text-[var(--sc-text-muted)] animate-pulse",children:"Analysing recall..."}),!h&&!p&&!c&&(0,t.jsx)("div",{className:"py-8 text-center text-sm text-[var(--sc-text-muted)]",children:"Type a query to see what the agent would remember"}),!h&&p&&0===p.results.length&&(0,t.jsx)("div",{className:"py-8 text-center text-sm text-[var(--sc-text-muted)]",children:"No recalled memories for this query."}),!h&&p&&p.results.length>0&&(0,t.jsx)("div",{className:"space-y-3",children:p.results.map(e=>(0,t.jsx)(P,{result:e},e.memory.id))}),(0,t.jsxs)("details",{className:"glass-card",children:[(0,t.jsx)("summary",{className:"cursor-pointer select-none p-4 text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Advanced: Recall Debugger"}),(0,t.jsxs)("div",{className:"space-y-6 border-t border-[var(--sc-border)] p-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Expected memory"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:"Search for a memory you expected to appear, then compare its rank."}),(0,t.jsx)("input",{value:n,onChange:e=>d(e.target.value),placeholder:"Search a memory to compare...",className:"mt-3 h-9 w-full rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan"}),(0,t.jsx)("div",{className:"mt-3 space-y-2",children:g.map(e=>(0,t.jsxs)("button",{onClick:()=>{u(e.id),d(e.title)},className:`block w-full rounded-lg border px-3 py-2 text-left text-sm ${m===e.id?"border-[var(--sc-cyan)]/50 bg-[var(--sc-cyan)]/10 text-[var(--sc-text-primary)]":"border-[var(--sc-border)] bg-[var(--sc-bg-surface)] text-[var(--sc-text-primary)] hover:border-[var(--sc-text-muted)]"}`,children:[(0,t.jsx)("div",{className:"font-medium",children:e.title}),(0,t.jsxs)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:[e.category," · ",e.project||"workspace"]})]},e.id))})]}),p?.expectedMemory&&(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Eligibility breakdown"}),(0,t.jsxs)("div",{className:"mt-3 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-3 text-sm text-[var(--sc-text-primary)]",children:[(0,t.jsx)("div",{className:"text-base font-medium",children:p.expectedMemory.title}),(0,t.jsxs)("div",{className:"mt-2 space-y-1 text-xs text-[var(--sc-text-secondary)]",children:[(0,t.jsxs)("div",{children:["Rank: ",p.expectedMemory.rank??"not returned"]}),(0,t.jsxs)("div",{children:["Status: ",p.expectedMemory.status]}),(0,t.jsxs)("div",{children:["Capture: ",p.expectedMemory.captureMethod," · ",p.expectedMemory.sourceKind]}),(0,t.jsxs)("div",{children:["Eligible:"," ",(0,t.jsx)(M.Badge,{variant:p.expectedMemory.eligible?"safe":"coral",children:p.expectedMemory.eligible?"yes":"no"})]})]}),(0,t.jsx)("div",{className:"mt-3 space-y-1",children:p.expectedMemory.reasons.map(e=>(0,t.jsx)("div",{className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 px-3 py-2 text-xs text-[var(--sc-text-secondary)]",children:e},e))})]})]}),p?.misses&&p.misses.length>0&&(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:["Likely misses (",p.misses.length,")"]}),(0,t.jsx)("div",{className:"mt-3 space-y-3",children:p.misses.map(e=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-3",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:[e.captureMethod," · salience ",e.salience.toFixed(2)]}),(0,t.jsx)("ul",{className:"mt-2 space-y-1 text-xs text-[var(--sc-text-secondary)]",children:e.whyNotRecalled.map(e=>(0,t.jsxs)("li",{children:["• ",e]},e))})]},e.id))})]}),!p&&(0,t.jsx)("div",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Run a recall query first, then use this section to debug ranking and misses."})]})]})]})}var L=e.i(15771);let R=(0,n.default)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);var K=e.i(51069);let I=(0,n.default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]),z=(0,n.default)("cloud-off",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193",key:"yfwify"}],["path",{d:"M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07",key:"jlfiyv"}]]),U=(0,n.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);var Q=e.i(80039);let O=(0,n.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);function G({memory:e,reasons:s,onAction:r,busy:a=!1}){let i=e.tags??[],c=e.trustScore??1,l=function(e){if(!e)return null;let t=Math.floor((Date.now()-new Date(e).getTime())/36e5);if(t<1)return"just now";if(t<24)return`${t}h ago`;let s=Math.floor(t/24);return s<7?`${s}d ago`:`${Math.floor(s/7)}w ago`}(e.createdAt),n=e.project?.trim();return(0,t.jsxs)("div",{className:"glass-card-strong flex flex-col",children:[(0,t.jsxs)("div",{className:"max-h-[160px] overflow-y-auto p-6 pb-3",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map(e=>(0,t.jsx)(M.Badge,{variant:e.variant,children:e.label},e.label))}),(0,t.jsx)("h3",{className:"mt-3 text-lg font-bold leading-tight text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsx)("div",{className:"mt-2 text-sm leading-relaxed text-[var(--sc-text-secondary)]",children:e.content}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-1.5 text-xs text-[var(--sc-text-muted)]",children:[i.length>0&&(0,t.jsx)("span",{children:i.join(" · ")}),i.length>0&&(0,t.jsx)("span",{children:"·"}),n&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:n}),(0,t.jsx)("span",{children:"·"})]}),l&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:l}),(0,t.jsx)("span",{children:"·"})]}),(0,t.jsxs)("span",{children:["trust ",c.toFixed(2)]}),e.captureMethod&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:"·"}),(0,t.jsx)("span",{children:e.captureMethod})]})]})]}),(0,t.jsx)("div",{className:"border-t border-[var(--sc-border)] px-6 py-4",children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsx)(B.Button,{variant:"cyan",size:"sm",disabled:a,onClick:()=>r("keep"),children:"Keep"}),(0,t.jsx)(B.Button,{variant:"coral",size:"sm",disabled:a,onClick:()=>r("suppress"),children:"Suppress"}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("archive"),children:[(0,t.jsx)(I,{className:"h-3.5 w-3.5"}),"Archive"]}),(0,t.jsxs)("details",{className:"ml-auto",children:[(0,t.jsx)("summary",{className:"cursor-pointer text-xs text-[var(--sc-text-muted)] hover:text-[var(--sc-text-secondary)]",children:"More actions"}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("pin"),children:[(0,t.jsx)(Q.Pin,{className:"h-3 w-3"}),e.pinned?"Unpin":"Pin"]}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("canonical"),children:[(0,t.jsx)(O,{className:"h-3 w-3"}),"Make canonical"]}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("global"),children:[(0,t.jsx)(U,{className:"h-3 w-3"}),"global"===e.scope?"Project scope":"Make global"]}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("cloudExclude"),children:[(0,t.jsx)(z,{className:"h-3 w-3"}),e.cloudExcluded?"Include in cloud":"Exclude from cloud"]})]})]})]})})]})}let _={lowTrust:{label:"Low Trust",reasonLabel:"LOW TRUST",reasonVariant:"coral"},stale:{label:"Stale",reasonLabel:"STALE",reasonVariant:"amber"},noisyAutoExtracted:{label:"Noisy Auto",reasonLabel:"AUTO-EXTRACTED",reasonVariant:"medium"},neverUsed:{label:"Never Used",reasonLabel:"NEVER USED",reasonVariant:"muted"},projectless:{label:"Projectless",reasonLabel:"NO PROJECT",reasonVariant:"info"}},V=["lowTrust","stale","noisyAutoExtracted","neverUsed","projectless"];function H(){let e,s,a,i,c,{projectFilter:l,selectedMemory:n,setSelectedMemory:d}=(0,$.useDashboardStore)(),{data:o,isLoading:m}=S(l),u=(e=(0,g.useQueryClient)(),(0,v.useMutation)({mutationFn:C,onSuccess:t=>{e.setQueriesData({queryKey:["review-queue"]},e=>N(e,t)),e.setQueriesData({queryKey:["memories"]},e=>e?{...e,memories:e.memories.map(e=>e.id===t.id?t:e)}:e),e.invalidateQueries({queryKey:["review-queue"]}),e.invalidateQueries({queryKey:["memories"]}),e.invalidateQueries({queryKey:["quality"]}),e.invalidateQueries({queryKey:["contradictions"]}),e.invalidateQueries({queryKey:["stats"]})}})),x=(s=(0,g.useQueryClient)(),(0,v.useMutation)({mutationFn:k,onSuccess:(e,t)=>{s.setQueriesData({queryKey:["review-queue"]},s=>{var r,a;return r=t.keptId,a=t.removedId,s?N({...s,sections:{...s.sections,stale:s.sections.stale.filter(e=>e.id!==a),neverUsed:s.sections.neverUsed.filter(e=>e.id!==a),lowTrust:s.sections.lowTrust.filter(e=>e.id!==a),noisyAutoExtracted:s.sections.noisyAutoExtracted.filter(e=>e.id!==a),projectless:s.sections.projectless.filter(e=>e.id!==a),duplicates:s.sections.duplicates.filter(e=>e.memoryA.id!==a&&e.memoryB.id!==a),contradictions:s.sections.contradictions.filter(e=>e.memoryA.id!==a&&e.memoryB.id!==a)}},{...e,id:r}):s}),s.setQueriesData({queryKey:["memories"]},s=>s?{...s,memories:s.memories.filter(e=>e.id!==t.removedId).map(s=>s.id===t.keptId?e:s)}:s),s.invalidateQueries({queryKey:["review-queue"]}),s.invalidateQueries({queryKey:["memories"]}),s.invalidateQueries({queryKey:["quality"]}),s.invalidateQueries({queryKey:["contradictions"]}),s.invalidateQueries({queryKey:["stats"]}),s.invalidateQueries({queryKey:["graph"]})}})),[p,h]=(0,r.useState)("lowTrust"),[y,f]=(0,r.useState)(0),[j,b]=(0,r.useState)(null),[w,A]=(0,r.useState)(!1),M=(0,r.useRef)(0),E=u.isPending||x.isPending||w,F=o?.sections[p]??[],T=F.length,q=F[y]??null,P=o?.sections.contradictions??[],D=o?.sections.duplicates??[];(0,r.useEffect)(()=>{T>0&&y>=T&&f(T-1)},[T,y]);let I=(e,t)=>{b({kind:e,message:t}),"success"===e&&setTimeout(()=>b(null),2e3)},z=async e=>{if(!q||w)return;let t=function(e,t){switch(e){case"keep":return"restore";case"suppress":return"suppress";case"archive":return"archive";case"pin":return t.pinned?"unpin":"pin";case"canonical":return"canonicalize";case"global":return"global"===t.scope?"rescopeProject":"rescopeGlobal";case"cloudExclude":return t.cloudExcluded?"includeCloud":"excludeCloud"}}(e,q);A(!0),await new Promise(e=>setTimeout(e,250)),M.current++;try{b(null);let e=await u.mutateAsync({id:q.id,action:t,reviewedBy:"dashboard-review",project:q.project??null,scope:q.scope});n?.id===e.id&&d(e),I("success",`${{restore:"Kept",suppress:"Suppressed",archive:"Archived",pin:"Pinned",unpin:"Unpinned",canonicalize:"Marked canonical",rescopeGlobal:"Made global",rescopeProject:"Moved to project scope",excludeCloud:"Excluded from cloud",includeCloud:"Included in cloud"}[t]??"Updated"}: ${e.title}`)}catch(e){I("error",e instanceof Error?e.message:"Failed to update")}finally{A(!1)}},U=async(e,t)=>{try{b(null),await u.mutateAsync({id:e.id,action:"canonicalize",reviewedBy:"dashboard-review"}),await u.mutateAsync({id:t.id,action:"suppress",reviewedBy:"dashboard-review"}),I("success",`Kept "${e.title}", suppressed "${t.title}"`)}catch(e){I("error",e instanceof Error?e.message:"Failed to resolve contradiction")}},Q=async(e,t)=>{try{b(null);let s=await x.mutateAsync({keptId:e.id,removedId:t.id,reviewedBy:"dashboard-merge"});n?.id===t.id&&d(s),I("success",`Merged duplicate into "${e.title}"`)}catch(e){I("error",e instanceof Error?e.message:"Failed to merge")}},O=V.reduce((e,t)=>e+(o?.summary[t]??0),0)+(o?.summary.contradictions??0)+(o?.summary.duplicates??0);if(m)return(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsx)("div",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Loading review queue…"})});if(0===O&&o)return(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)("div",{className:"glass-card-strong flex flex-col items-center justify-center p-12 text-center",children:[(0,t.jsx)(L.CheckCircle2,{className:"h-12 w-12 text-[var(--sc-cyan)]"}),(0,t.jsx)("h3",{className:"mt-4 text-xl font-semibold text-[var(--sc-text-primary)]",children:"All caught up"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--sc-text-secondary)]",children:"No memories need review right now."})]})});let H=T>0?Math.round((y+1)/T*100):0;return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:V.map(e=>{let s=_[e],r=o?.summary[e]??0,a=p===e;return(0,t.jsxs)("button",{onClick:()=>{h(e),f(0),b(null)},className:`rounded-full border px-3 py-1.5 text-xs font-semibold transition-colors ${a?"border-[var(--sc-coral)]/50 bg-[var(--sc-coral)] text-white":"border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] text-[var(--sc-text-secondary)] hover:border-[var(--sc-text-muted)]"}`,children:[s.label," ",r]},e)})}),j&&(0,t.jsx)("div",{className:`rounded-2xl border px-4 py-3 text-sm ${"error"===j.kind?"border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]":"border-[var(--sc-cyan)]/30 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]"}`,children:(0,t.jsxs)("div",{className:"flex items-start gap-2",children:["success"===j.kind&&(0,t.jsx)(L.CheckCircle2,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,t.jsx)("span",{children:j.message})]})}),q?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--sc-text-muted)]",children:[(0,t.jsxs)("span",{children:["Card ",y+1," of ",T," · ",_[p].label," queue"]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{type:"button",disabled:0===y,onClick:()=>f(e=>Math.max(0,e-1)),className:"rounded px-2 py-0.5 text-[var(--sc-text-secondary)] transition-colors hover:bg-[var(--sc-surface-interactive)] disabled:opacity-30",children:"← Prev"}),(0,t.jsx)("button",{type:"button",disabled:y>=T-1,onClick:()=>f(e=>Math.min(T-1,e+1)),className:"rounded px-2 py-0.5 text-[var(--sc-text-secondary)] transition-colors hover:bg-[var(--sc-surface-interactive)] disabled:opacity-30",children:"Next →"})]})]}),(0,t.jsx)("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-[var(--sc-bg-elevated)]",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-[var(--sc-cyan)] transition-all",style:{width:`${H}%`}})})]}),(0,t.jsx)("div",{className:w?"sc-card-exit":"sc-card-enter",style:{transition:"opacity 200ms ease, transform 200ms ease"},children:(0,t.jsx)(G,{memory:q,reasons:(a=[],i=_[p],a.push({label:i.reasonLabel,variant:i.reasonVariant}),c=q.trustScore??1,"lowTrust"!==p&&c<.7&&a.push({label:`TRUST ${c.toFixed(1)}`,variant:"coral"}),"lowTrust"===p&&a.push({label:`${c.toFixed(2)}`,variant:"coral"}),("auto"===q.captureMethod||q.tags?.includes("auto-extracted"))&&"noisyAutoExtracted"!==p&&a.push({label:"AUTO-EXTRACTED",variant:"medium"}),a),onAction:z,busy:E})},M.current)]}):(0,t.jsx)("div",{className:"glass-card-strong p-8 text-center",children:(0,t.jsxs)("p",{className:"text-sm text-[var(--sc-text-secondary)]",children:["No ",_[p].label.toLowerCase()," memories to review."]})}),(0,t.jsxs)("div",{className:"glass-card-strong p-5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(K.ShieldAlert,{size:16,className:"text-[var(--sc-amber)]"}),(0,t.jsxs)("h3",{className:"text-base font-semibold text-[var(--sc-text-primary)]",children:["Contradictions (",P.length,")"]})]}),0===P.length?(0,t.jsx)("p",{className:"mt-3 text-sm text-[var(--sc-text-secondary)]",children:"No contradictions detected."}):(0,t.jsx)("div",{className:"mt-4 space-y-4",children:P.slice(0,8).map(e=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-amber)]/20 bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Score"}),(0,t.jsxs)("div",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:[Math.round(100*e.score),"%"]})]}),(0,t.jsx)("div",{className:"text-right text-xs text-[var(--sc-text-muted)]",children:e.sharedTopics.length?e.sharedTopics.join(" · "):"No shared topic"})]}),(0,t.jsx)("div",{className:"mt-3 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/60 p-3 text-sm text-[var(--sc-text-primary)]",children:e.reason}),(0,t.jsx)("div",{className:"mt-4 grid gap-3 md:grid-cols-2",children:[e.memoryA,e.memoryB].map((s,r)=>{let a=0===r?e.memoryB:e.memoryA;return(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/70 p-3",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:0===r?"A":"B"}),(0,t.jsx)("div",{className:"mt-1 text-sm font-medium text-[var(--sc-text-primary)]",children:s.title}),(0,t.jsx)("div",{className:"mt-1 line-clamp-2 text-xs text-[var(--sc-text-secondary)]",children:s.content}),(0,t.jsxs)("div",{className:"mt-2 text-xs text-[var(--sc-text-muted)]",children:["trust ",(s.trustScore??1).toFixed(2)," · ",s.captureMethod||"manual"]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,t.jsx)(B.Button,{variant:"cyan",size:"sm",disabled:E,onClick:()=>U(s,a),children:"Keep this"}),(0,t.jsx)(B.Button,{variant:"ghost",size:"sm",disabled:E,onClick:()=>u.mutateAsync({id:s.id,action:"suppress",reviewedBy:"dashboard-review"}).then(()=>I("success",`Suppressed: ${s.title}`)).catch(e=>I("error",e instanceof Error?e.message:"Failed to suppress")),children:"Suppress"})]})]},s.id)})})]},`${e.memoryA.id}-${e.memoryB.id}`))})]}),(0,t.jsxs)("div",{className:"glass-card-strong p-5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(R,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsxs)("h3",{className:"text-base font-semibold text-[var(--sc-text-primary)]",children:["Duplicates (",D.length,")"]})]}),0===D.length?(0,t.jsx)("p",{className:"mt-3 text-sm text-[var(--sc-text-secondary)]",children:"No duplicate candidates detected."}):(0,t.jsx)("div",{className:"mt-4 space-y-3",children:D.slice(0,8).map(e=>{let s=e.recommendedKeepId===e.memoryA.id?e.memoryA:e.memoryB,r=e.recommendedKeepId===e.memoryA.id?e.memoryB:e.memoryA;return(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:["“",e.memoryA.title,"” vs “",e.memoryB.title,"”"]}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:[e.similarity," · ",e.sharedWords," shared words"]})]})}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,t.jsx)(B.Button,{variant:"cyan",size:"sm",disabled:E,onClick:()=>Q(e.memoryA,e.memoryB),children:"Keep A"}),(0,t.jsx)(B.Button,{variant:"outline",size:"sm",disabled:E,onClick:()=>Q(e.memoryB,e.memoryA),children:"Keep B"}),(0,t.jsx)(B.Button,{variant:"ghost",size:"sm",disabled:E,onClick:()=>Q(s,r),children:"Merge (recommended)"})]})]},`${e.memoryA.id}-${e.memoryB.id}`)})})]})]})}var W=e.i(25264),X=e.i(35238),J=e.i(38),Y=e.i(71917),Z=e.i(74421),ee=r,et=e.i(31569);function es(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class er extends ee.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if(t&&e.isPresent&&!this.props.isPresent){let e=t.offsetParent,s=(0,Z.isHTMLElement)(e)&&e.offsetWidth||0,r=(0,Z.isHTMLElement)(e)&&e.offsetHeight||0,a=this.props.sizeRef.current;a.height=t.offsetHeight||0,a.width=t.offsetWidth||0,a.top=t.offsetTop,a.left=t.offsetLeft,a.right=s-a.width-a.left,a.bottom=r-a.height-a.top}return null}componentDidUpdate(){}render(){return this.props.children}}function ea({children:e,isPresent:s,anchorX:a,anchorY:i,root:c}){let l=(0,ee.useId)(),n=(0,ee.useRef)(null),d=(0,ee.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:o}=(0,ee.useContext)(et.MotionConfigContext),m=function(...e){return r.useCallback(function(...e){return t=>{let s=!1,r=e.map(e=>{let r=es(e,t);return s||"function"!=typeof r||(s=!0),r});if(s)return()=>{for(let t=0;t<r.length;t++){let s=r[t];"function"==typeof s?s():es(e[t],null)}}}}(...e),e)}(n,e.props?.ref??e?.ref);return(0,ee.useInsertionEffect)(()=>{let{width:e,height:t,top:r,left:m,right:u,bottom:x}=d.current;if(s||!n.current||!e||!t)return;let p="left"===a?`left: ${m}`:`right: ${u}`,h="bottom"===i?`bottom: ${x}`:`top: ${r}`;n.current.dataset.motionPopId=l;let v=document.createElement("style");o&&(v.nonce=o);let y=c??document.head;return y.appendChild(v),v.sheet&&v.sheet.insertRule(`
|
|
2
|
-
[data-motion-pop-id="${
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,21090,e=>{"use strict";var t=e.i(27493),s=e.i(16871),r=e.i(4),a=e.i(53615),i=e.i(74133),l=e.i(7571),c=e.i(84012),n=e.i(24929);let o=(0,n.default)("inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);var d=e.i(6847),u=e.i(13808),m=e.i(40950),x=e.i(46194),p=e.i(88069),h=e.i(22534),v=e.i(71921),y=e.i(45688),g=e.i(1235),f=e.i(88969);let j=h.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";function b(e){return(e.status??"active")!=="archived"&&(e.status??"active")!=="suppressed"&&!e.reviewedAt}function N(e,t){if(!e)return e;let s=(e,s)=>e.map(e=>e.id===t.id?t:e).filter(s),r=e.sections.contradictions.map(e=>({...e,memoryA:e.memoryA.id===t.id?t:e.memoryA,memoryB:e.memoryB.id===t.id?t:e.memoryB})).filter(e=>b(e.memoryA)&&b(e.memoryB)),a=e.sections.duplicates.map(e=>({...e,memoryA:e.memoryA.id===t.id?t:e.memoryA,memoryB:e.memoryB.id===t.id?t:e.memoryB})).filter(e=>b(e.memoryA)&&b(e.memoryB)),i={stale:s(e.sections.stale,e=>b(e)&&(e.decayedScore??1)<.3),neverUsed:s(e.sections.neverUsed,e=>{var t;return b(e)&&0===e.accessCount&&!!(t=e.createdAt)&&Date.now()-new Date(t).getTime()>=864e5}),lowTrust:s(e.sections.lowTrust,e=>b(e)&&(e.trustScore??1)<.7),noisyAutoExtracted:s(e.sections.noisyAutoExtracted,e=>b(e)&&("auto"===e.captureMethod||e.tags?.includes("auto-extracted"))),projectless:s(e.sections.projectless,e=>b(e)&&!(e.project&&e.project.trim())&&"global"!==e.scope),duplicates:a,contradictions:r};return{...e,summary:{stale:i.stale.length,neverUsed:i.neverUsed.length,lowTrust:i.lowTrust.length,noisyAutoExtracted:i.noisyAutoExtracted.length,projectless:i.projectless.length,duplicates:i.duplicates.length,contradictions:i.contradictions.length},openClaw:e.openClaw,sections:i}}async function w(e){let t=e?`?project=${encodeURIComponent(e)}`:"",s=await (0,f.authFetch)(`${j}/api/review/queue${t}`);if(!s.ok)throw Error(await (0,f.readApiError)(s,"Failed to fetch review queue"));return s.json()}async function C(e){let t=await (0,f.authFetch)(`${j}/api/memories/${e.id}/review`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to update review state"));return t.json()}async function k(e){let t=await (0,f.authFetch)(`${j}/api/memories/merge`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,f.readApiError)(t,"Failed to merge memories"));return t.json()}function S(e){return(0,y.useQuery)({queryKey:["review-queue",e],queryFn:()=>w(e),staleTime:3e4})}var A=e.i(16467),M=e.i(95659),B=e.i(81523);let E=h.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function T(e){let t=new URLSearchParams;t.set("query",e.query),e.project&&t.set("project",e.project),e.expectedId&&t.set("expectedId",String(e.expectedId));let s=await (0,f.authFetch)(`${E}/api/recall/explain?${t.toString()}`);if(!s.ok)throw Error("Failed to explain recall");return s.json()}async function F(e,t){let s=new URLSearchParams({mode:"search",query:e,limit:"8"});t&&s.set("project",t);let r=await (0,f.authFetch)(`${E}/api/memories?${s.toString()}`);if(!r.ok)throw Error("Failed to fetch memory candidates");return(await r.json()).memories}var $=e.i(42098);function q({score:e}){let s=Math.round(100*e);return(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--sc-bg-deep)]",children:(0,t.jsx)("div",{className:"h-full rounded-full transition-all",style:{width:`${s}%`,background:"linear-gradient(90deg, var(--sc-cyan), var(--sc-coral))"}})}),(0,t.jsxs)("span",{className:"text-[10px] tabular-nums text-[var(--sc-text-muted)]",children:[s,"%"]})]})}function P({result:e}){let[s,a]=(0,r.useState)(!1),i=e.memory;return(0,t.jsxs)(A.GlassCard,{hover:!0,className:"p-4",onClick:()=>a(e=>!e),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-[var(--sc-text-primary)]",children:i.title}),(0,t.jsxs)("div",{className:"mt-1.5 flex flex-wrap items-center gap-1.5",children:[(0,t.jsx)(M.Badge,{variant:"muted",children:i.category}),(0,t.jsx)(M.Badge,{variant:"cyan",children:i.project||"global"}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/1e3);if(t<60)return"just now";let s=Math.floor(t/60);if(s<60)return`${s}m ago`;let r=Math.floor(s/60);if(r<24)return`${r}h ago`;let a=Math.floor(r/24);return`${a}d ago`}(i.createdAt)})]}),(0,t.jsx)(q,{score:e.relevanceScore})]}),(0,t.jsx)("div",{className:"shrink-0 rounded-lg bg-[var(--sc-cyan)]/10 px-2.5 py-1.5 text-center",children:(0,t.jsx)("span",{className:"text-sm font-semibold tabular-nums text-[var(--sc-cyan)]",children:e.relevanceScore.toFixed(2)})})]}),s&&(0,t.jsxs)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3 text-xs text-[var(--sc-text-muted)]",children:[i.content.slice(0,200),i.content.length>200&&"..."]})]})}function D(){var e;let{projectFilter:s}=(0,$.useDashboardStore)(),[a,i]=(0,r.useState)(""),[l,c]=(0,r.useState)(""),[n,o]=(0,r.useState)(""),[u,m]=(0,r.useState)(null),x=(0,v.useMutation)({mutationFn:async e=>{let t="shieldcortex:recall-history",s=[e,...JSON.parse(window.localStorage.getItem(t)??"[]").filter(t=>t!==e)].slice(0,8);return window.localStorage.setItem(t,JSON.stringify(s)),s}}),{data:p,isLoading:h}=(e=(0,r.useMemo)(()=>l.trim()?{query:l.trim(),project:s,expectedId:u}:null,[l,s,u]),(0,y.useQuery)({queryKey:["recall-explain",e],queryFn:()=>T(e),enabled:!!e?.query?.trim(),staleTime:3e4})),{data:g=[]}=(0,y.useQuery)({queryKey:["memory-candidates",n,s],queryFn:()=>F(n,s),enabled:n.trim().length>=2,staleTime:3e4}),f=p?.results.length?p.results.reduce((e,t)=>e+t.relevanceScore,0)/p.results.length:0;return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(A.GlassCard,{className:"p-4",children:(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),a.trim()&&(c(a.trim()),x.mutate(a.trim()))},className:"flex gap-3",children:[(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(d.Search,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--sc-text-muted)]"}),(0,t.jsx)("input",{value:a,onChange:e=>i(e.target.value),placeholder:"Why did we choose PostgreSQL over SQLite?",className:"h-10 w-full rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] pl-10 pr-4 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan"})]}),(0,t.jsx)(B.Button,{type:"submit",variant:"coral",size:"md",children:"Explain recall"})]})}),p&&!h&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(M.Badge,{variant:"cyan",children:[p.total," result",1===p.total?"":"s"]}),(0,t.jsxs)(M.Badge,{variant:"muted",children:["avg relevance ",f.toFixed(2)]})]}),h&&(0,t.jsx)("div",{className:"py-8 text-center text-sm text-[var(--sc-text-muted)] animate-pulse",children:"Analysing recall..."}),!h&&!p&&!l&&(0,t.jsx)("div",{className:"py-8 text-center text-sm text-[var(--sc-text-muted)]",children:"Type a query to see what the agent would remember"}),!h&&p&&0===p.results.length&&(0,t.jsx)("div",{className:"py-8 text-center text-sm text-[var(--sc-text-muted)]",children:"No recalled memories for this query."}),!h&&p&&p.results.length>0&&(0,t.jsx)("div",{className:"space-y-3",children:p.results.map(e=>(0,t.jsx)(P,{result:e},e.memory.id))}),(0,t.jsxs)("details",{className:"glass-card",children:[(0,t.jsx)("summary",{className:"cursor-pointer select-none p-4 text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Advanced: Recall Debugger"}),(0,t.jsxs)("div",{className:"space-y-6 border-t border-[var(--sc-border)] p-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Expected memory"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)]",children:"Search for a memory you expected to appear, then compare its rank."}),(0,t.jsx)("input",{value:n,onChange:e=>o(e.target.value),placeholder:"Search a memory to compare...",className:"mt-3 h-9 w-full rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 text-sm text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus-ring-cyan"}),(0,t.jsx)("div",{className:"mt-3 space-y-2",children:g.map(e=>(0,t.jsxs)("button",{onClick:()=>{m(e.id),o(e.title)},className:`block w-full rounded-lg border px-3 py-2 text-left text-sm ${u===e.id?"border-[var(--sc-cyan)]/50 bg-[var(--sc-cyan)]/10 text-[var(--sc-text-primary)]":"border-[var(--sc-border)] bg-[var(--sc-bg-surface)] text-[var(--sc-text-primary)] hover:border-[var(--sc-text-muted)]"}`,children:[(0,t.jsx)("div",{className:"font-medium",children:e.title}),(0,t.jsxs)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:[e.category," · ",e.project||"workspace"]})]},e.id))})]}),p?.expectedMemory&&(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Eligibility breakdown"}),(0,t.jsxs)("div",{className:"mt-3 rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-3 text-sm text-[var(--sc-text-primary)]",children:[(0,t.jsx)("div",{className:"text-base font-medium",children:p.expectedMemory.title}),(0,t.jsxs)("div",{className:"mt-2 space-y-1 text-xs text-[var(--sc-text-secondary)]",children:[(0,t.jsxs)("div",{children:["Rank: ",p.expectedMemory.rank??"not returned"]}),(0,t.jsxs)("div",{children:["Status: ",p.expectedMemory.status]}),(0,t.jsxs)("div",{children:["Capture: ",p.expectedMemory.captureMethod," · ",p.expectedMemory.sourceKind]}),(0,t.jsxs)("div",{children:["Eligible:"," ",(0,t.jsx)(M.Badge,{variant:p.expectedMemory.eligible?"safe":"coral",children:p.expectedMemory.eligible?"yes":"no"})]})]}),(0,t.jsx)("div",{className:"mt-3 space-y-1",children:p.expectedMemory.reasons.map(e=>(0,t.jsx)("div",{className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 px-3 py-2 text-xs text-[var(--sc-text-secondary)]",children:e},e))})]})]}),p?.misses&&p.misses.length>0&&(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:["Likely misses (",p.misses.length,")"]}),(0,t.jsx)("div",{className:"mt-3 space-y-3",children:p.misses.map(e=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-3",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:[e.captureMethod," · salience ",e.salience.toFixed(2)]}),(0,t.jsx)("ul",{className:"mt-2 space-y-1 text-xs text-[var(--sc-text-secondary)]",children:e.whyNotRecalled.map(e=>(0,t.jsxs)("li",{children:["• ",e]},e))})]},e.id))})]}),!p&&(0,t.jsx)("div",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Run a recall query first, then use this section to debug ranking and misses."})]})]})]})}var R=e.i(15771);let L=(0,n.default)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);var I=e.i(51069);let K=(0,n.default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]),U=(0,n.default)("cloud-off",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193",key:"yfwify"}],["path",{d:"M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07",key:"jlfiyv"}]]),z=(0,n.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);var Q=e.i(80039);let O=(0,n.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);function G({memory:e,reasons:s,onAction:r,busy:a=!1}){let i=e.tags??[],l=e.trustScore??1,c=function(e){if(!e)return null;let t=Math.floor((Date.now()-new Date(e).getTime())/36e5);if(t<1)return"just now";if(t<24)return`${t}h ago`;let s=Math.floor(t/24);return s<7?`${s}d ago`:`${Math.floor(s/7)}w ago`}(e.createdAt),n=e.project?.trim();return(0,t.jsxs)("div",{className:"glass-card-strong flex flex-col",children:[(0,t.jsxs)("div",{className:"max-h-[160px] overflow-y-auto p-6 pb-3",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map(e=>(0,t.jsx)(M.Badge,{variant:e.variant,children:e.label},e.label))}),(0,t.jsx)("h3",{className:"mt-3 text-lg font-bold leading-tight text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsx)("div",{className:"mt-2 text-sm leading-relaxed text-[var(--sc-text-secondary)]",children:e.content}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-1.5 text-xs text-[var(--sc-text-muted)]",children:[i.length>0&&(0,t.jsx)("span",{children:i.join(" · ")}),i.length>0&&(0,t.jsx)("span",{children:"·"}),n&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:n}),(0,t.jsx)("span",{children:"·"})]}),c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:c}),(0,t.jsx)("span",{children:"·"})]}),(0,t.jsxs)("span",{children:["trust ",l.toFixed(2)]}),e.captureMethod&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{children:"·"}),(0,t.jsx)("span",{children:e.captureMethod})]})]})]}),(0,t.jsx)("div",{className:"border-t border-[var(--sc-border)] px-6 py-4",children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsx)(B.Button,{variant:"cyan",size:"sm",disabled:a,onClick:()=>r("keep"),children:"Keep"}),(0,t.jsx)(B.Button,{variant:"coral",size:"sm",disabled:a,onClick:()=>r("suppress"),children:"Suppress"}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("archive"),children:[(0,t.jsx)(K,{className:"h-3.5 w-3.5"}),"Archive"]}),(0,t.jsxs)("details",{className:"ml-auto",children:[(0,t.jsx)("summary",{className:"cursor-pointer text-xs text-[var(--sc-text-muted)] hover:text-[var(--sc-text-secondary)]",children:"More actions"}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("pin"),children:[(0,t.jsx)(Q.Pin,{className:"h-3 w-3"}),e.pinned?"Unpin":"Pin"]}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("canonical"),children:[(0,t.jsx)(O,{className:"h-3 w-3"}),"Make canonical"]}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("global"),children:[(0,t.jsx)(z,{className:"h-3 w-3"}),"global"===e.scope?"Project scope":"Make global"]}),(0,t.jsxs)(B.Button,{variant:"ghost",size:"sm",disabled:a,onClick:()=>r("cloudExclude"),children:[(0,t.jsx)(U,{className:"h-3 w-3"}),e.cloudExcluded?"Include in cloud":"Exclude from cloud"]})]})]})]})})]})}let V={lowTrust:"lowTrust",stale:"stale",noisyAutoExtracted:"noisyAutoExtracted",neverUsed:"neverUsed",projectless:"projectless",duplicates:null,contradictions:null},_={lowTrust:{label:"Low Trust",reasonLabel:"LOW TRUST",reasonVariant:"coral"},stale:{label:"Stale",reasonLabel:"STALE",reasonVariant:"amber"},noisyAutoExtracted:{label:"Noisy Auto",reasonLabel:"AUTO-EXTRACTED",reasonVariant:"medium"},neverUsed:{label:"Never Used",reasonLabel:"NEVER USED",reasonVariant:"muted"},projectless:{label:"Projectless",reasonLabel:"NO PROJECT",reasonVariant:"info"}},H=["lowTrust","stale","noisyAutoExtracted","neverUsed","projectless"];function W(){let e,s,a,i,l,{projectFilter:c,selectedMemory:n,setSelectedMemory:o,reviewFocus:d,setReviewFocus:u}=(0,$.useDashboardStore)(),{data:m,isLoading:x}=S(c),p=(e=(0,g.useQueryClient)(),(0,v.useMutation)({mutationFn:C,onSuccess:t=>{e.setQueriesData({queryKey:["review-queue"]},e=>N(e,t)),e.setQueriesData({queryKey:["memories"]},e=>e?{...e,memories:e.memories.map(e=>e.id===t.id?t:e)}:e),e.invalidateQueries({queryKey:["review-queue"]}),e.invalidateQueries({queryKey:["memories"]}),e.invalidateQueries({queryKey:["quality"]}),e.invalidateQueries({queryKey:["contradictions"]}),e.invalidateQueries({queryKey:["stats"]})}})),h=(s=(0,g.useQueryClient)(),(0,v.useMutation)({mutationFn:k,onSuccess:(e,t)=>{s.setQueriesData({queryKey:["review-queue"]},s=>{var r,a;return r=t.keptId,a=t.removedId,s?N({...s,sections:{...s.sections,stale:s.sections.stale.filter(e=>e.id!==a),neverUsed:s.sections.neverUsed.filter(e=>e.id!==a),lowTrust:s.sections.lowTrust.filter(e=>e.id!==a),noisyAutoExtracted:s.sections.noisyAutoExtracted.filter(e=>e.id!==a),projectless:s.sections.projectless.filter(e=>e.id!==a),duplicates:s.sections.duplicates.filter(e=>e.memoryA.id!==a&&e.memoryB.id!==a),contradictions:s.sections.contradictions.filter(e=>e.memoryA.id!==a&&e.memoryB.id!==a)}},{...e,id:r}):s}),s.setQueriesData({queryKey:["memories"]},s=>s?{...s,memories:s.memories.filter(e=>e.id!==t.removedId).map(s=>s.id===t.keptId?e:s)}:s),s.invalidateQueries({queryKey:["review-queue"]}),s.invalidateQueries({queryKey:["memories"]}),s.invalidateQueries({queryKey:["quality"]}),s.invalidateQueries({queryKey:["contradictions"]}),s.invalidateQueries({queryKey:["stats"]}),s.invalidateQueries({queryKey:["graph"]})}})),[y,f]=(0,r.useState)("lowTrust"),[j,b]=(0,r.useState)(0),[w,A]=(0,r.useState)(null),[M,E]=(0,r.useState)(!1),T=(0,r.useRef)(0),F=(0,r.useRef)(null),q=(0,r.useRef)(null),P=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!d||!m||P.current===d)return;P.current=d;let e=V[d];e?(f(e),b(0)):"duplicates"===d?setTimeout(()=>q.current?.scrollIntoView({behavior:"smooth",block:"start"}),100):"contradictions"===d&&setTimeout(()=>F.current?.scrollIntoView({behavior:"smooth",block:"start"}),100),u(null)},[d,m,u]);let D=p.isPending||h.isPending||M,K=m?.sections[y]??[],U=K.length,z=K[j]??null,Q=m?.sections.contradictions??[],O=m?.sections.duplicates??[];(0,r.useEffect)(()=>{U>0&&j>=U&&b(U-1)},[U,j]);let W=(e,t)=>{A({kind:e,message:t}),"success"===e&&setTimeout(()=>A(null),2e3)},X=async e=>{if(!z||M)return;let t=function(e,t){switch(e){case"keep":return"restore";case"suppress":return"suppress";case"archive":return"archive";case"pin":return t.pinned?"unpin":"pin";case"canonical":return"canonicalize";case"global":return"global"===t.scope?"rescopeProject":"rescopeGlobal";case"cloudExclude":return t.cloudExcluded?"includeCloud":"excludeCloud"}}(e,z);E(!0),await new Promise(e=>setTimeout(e,250)),T.current++;try{A(null);let e=await p.mutateAsync({id:z.id,action:t,reviewedBy:"dashboard-review",project:z.project??null,scope:z.scope});n?.id===e.id&&o(e),W("success",`${{restore:"Kept",suppress:"Suppressed",archive:"Archived",pin:"Pinned",unpin:"Unpinned",canonicalize:"Marked canonical",rescopeGlobal:"Made global",rescopeProject:"Moved to project scope",excludeCloud:"Excluded from cloud",includeCloud:"Included in cloud"}[t]??"Updated"}: ${e.title}`)}catch(e){W("error",e instanceof Error?e.message:"Failed to update")}finally{E(!1)}},J=async(e,t)=>{try{A(null),await p.mutateAsync({id:e.id,action:"canonicalize",reviewedBy:"dashboard-review"}),await p.mutateAsync({id:t.id,action:"suppress",reviewedBy:"dashboard-review"}),W("success",`Kept "${e.title}", suppressed "${t.title}"`)}catch(e){W("error",e instanceof Error?e.message:"Failed to resolve contradiction")}},Y=async(e,t)=>{try{A(null);let s=await h.mutateAsync({keptId:e.id,removedId:t.id,reviewedBy:"dashboard-merge"});n?.id===t.id&&o(s),W("success",`Merged duplicate into "${e.title}"`)}catch(e){W("error",e instanceof Error?e.message:"Failed to merge")}},Z=H.reduce((e,t)=>e+(m?.summary[t]??0),0)+(m?.summary.contradictions??0)+(m?.summary.duplicates??0);if(x)return(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsx)("div",{className:"text-sm text-[var(--sc-text-secondary)]",children:"Loading review queue…"})});if(0===Z&&m)return(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)("div",{className:"glass-card-strong flex flex-col items-center justify-center p-12 text-center",children:[(0,t.jsx)(R.CheckCircle2,{className:"h-12 w-12 text-[var(--sc-cyan)]"}),(0,t.jsx)("h3",{className:"mt-4 text-xl font-semibold text-[var(--sc-text-primary)]",children:"All caught up"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-[var(--sc-text-secondary)]",children:"No memories need review right now."})]})});let ee=U>0?Math.round((j+1)/U*100):0;return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:H.map(e=>{let s=_[e],r=m?.summary[e]??0,a=y===e;return(0,t.jsxs)("button",{onClick:()=>{f(e),b(0),A(null)},className:`rounded-full border px-3 py-1.5 text-xs font-semibold transition-colors ${a?"border-[var(--sc-coral)]/50 bg-[var(--sc-coral)] text-white":"border-[var(--sc-border)] bg-[var(--sc-surface-interactive)] text-[var(--sc-text-secondary)] hover:border-[var(--sc-text-muted)]"}`,children:[s.label," ",r]},e)})}),w&&(0,t.jsx)("div",{className:`rounded-2xl border px-4 py-3 text-sm ${"error"===w.kind?"border-[var(--sc-coral)]/30 bg-[var(--sc-coral)]/10 text-[var(--sc-coral)]":"border-[var(--sc-cyan)]/30 bg-[var(--sc-cyan)]/10 text-[var(--sc-cyan)]"}`,children:(0,t.jsxs)("div",{className:"flex items-start gap-2",children:["success"===w.kind&&(0,t.jsx)(R.CheckCircle2,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,t.jsx)("span",{children:w.message})]})}),z?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--sc-text-muted)]",children:[(0,t.jsxs)("span",{children:["Card ",j+1," of ",U," · ",_[y].label," queue"]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{type:"button",disabled:0===j,onClick:()=>b(e=>Math.max(0,e-1)),className:"rounded px-2 py-0.5 text-[var(--sc-text-secondary)] transition-colors hover:bg-[var(--sc-surface-interactive)] disabled:opacity-30",children:"← Prev"}),(0,t.jsx)("button",{type:"button",disabled:j>=U-1,onClick:()=>b(e=>Math.min(U-1,e+1)),className:"rounded px-2 py-0.5 text-[var(--sc-text-secondary)] transition-colors hover:bg-[var(--sc-surface-interactive)] disabled:opacity-30",children:"Next →"})]})]}),(0,t.jsx)("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-[var(--sc-bg-elevated)]",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-[var(--sc-cyan)] transition-all",style:{width:`${ee}%`}})})]}),(0,t.jsx)("div",{className:M?"sc-card-exit":"sc-card-enter",style:{transition:"opacity 200ms ease, transform 200ms ease"},children:(0,t.jsx)(G,{memory:z,reasons:(a=[],i=_[y],a.push({label:i.reasonLabel,variant:i.reasonVariant}),l=z.trustScore??1,"lowTrust"!==y&&l<.7&&a.push({label:`TRUST ${l.toFixed(1)}`,variant:"coral"}),"lowTrust"===y&&a.push({label:`${l.toFixed(2)}`,variant:"coral"}),("auto"===z.captureMethod||z.tags?.includes("auto-extracted"))&&"noisyAutoExtracted"!==y&&a.push({label:"AUTO-EXTRACTED",variant:"medium"}),a),onAction:X,busy:D})},T.current)]}):(0,t.jsx)("div",{className:"glass-card-strong p-8 text-center",children:(0,t.jsxs)("p",{className:"text-sm text-[var(--sc-text-secondary)]",children:["No ",_[y].label.toLowerCase()," memories to review."]})}),(0,t.jsxs)("div",{ref:F,className:"glass-card-strong p-5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(I.ShieldAlert,{size:16,className:"text-[var(--sc-amber)]"}),(0,t.jsxs)("h3",{className:"text-base font-semibold text-[var(--sc-text-primary)]",children:["Contradictions (",Q.length,")"]})]}),0===Q.length?(0,t.jsx)("p",{className:"mt-3 text-sm text-[var(--sc-text-secondary)]",children:"No contradictions detected."}):(0,t.jsx)("div",{className:"mt-4 space-y-4",children:Q.slice(0,8).map(e=>(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-amber)]/20 bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:"Score"}),(0,t.jsxs)("div",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:[Math.round(100*e.score),"%"]})]}),(0,t.jsx)("div",{className:"text-right text-xs text-[var(--sc-text-muted)]",children:e.sharedTopics.length?e.sharedTopics.join(" · "):"No shared topic"})]}),(0,t.jsx)("div",{className:"mt-3 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/60 p-3 text-sm text-[var(--sc-text-primary)]",children:e.reason}),(0,t.jsx)("div",{className:"mt-4 grid gap-3 md:grid-cols-2",children:[e.memoryA,e.memoryB].map((s,r)=>{let a=0===r?e.memoryB:e.memoryA;return(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]/70 p-3",children:[(0,t.jsx)("div",{className:"text-xs uppercase tracking-[0.18em] text-[var(--sc-text-muted)]",children:0===r?"A":"B"}),(0,t.jsx)("div",{className:"mt-1 text-sm font-medium text-[var(--sc-text-primary)]",children:s.title}),(0,t.jsx)("div",{className:"mt-1 line-clamp-2 text-xs text-[var(--sc-text-secondary)]",children:s.content}),(0,t.jsxs)("div",{className:"mt-2 text-xs text-[var(--sc-text-muted)]",children:["trust ",(s.trustScore??1).toFixed(2)," · ",s.captureMethod||"manual"]}),(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2",children:[(0,t.jsx)(B.Button,{variant:"cyan",size:"sm",disabled:D,onClick:()=>J(s,a),children:"Keep this"}),(0,t.jsx)(B.Button,{variant:"ghost",size:"sm",disabled:D,onClick:()=>p.mutateAsync({id:s.id,action:"suppress",reviewedBy:"dashboard-review"}).then(()=>W("success",`Suppressed: ${s.title}`)).catch(e=>W("error",e instanceof Error?e.message:"Failed to suppress")),children:"Suppress"})]})]},s.id)})})]},`${e.memoryA.id}-${e.memoryB.id}`))})]}),(0,t.jsxs)("div",{ref:q,className:"glass-card-strong p-5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(L,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsxs)("h3",{className:"text-base font-semibold text-[var(--sc-text-primary)]",children:["Duplicates (",O.length,")"]})]}),0===O.length?(0,t.jsx)("p",{className:"mt-3 text-sm text-[var(--sc-text-secondary)]",children:"No duplicate candidates detected."}):(0,t.jsx)("div",{className:"mt-4 space-y-3",children:O.slice(0,8).map(e=>{let s=e.recommendedKeepId===e.memoryA.id?e.memoryA:e.memoryB,r=e.recommendedKeepId===e.memoryA.id?e.memoryB:e.memoryA;return(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/60 p-4",children:[(0,t.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:["“",e.memoryA.title,"” vs “",e.memoryB.title,"”"]}),(0,t.jsxs)("div",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:[e.similarity," · ",e.sharedWords," shared words"]})]})}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,t.jsx)(B.Button,{variant:"cyan",size:"sm",disabled:D,onClick:()=>Y(e.memoryA,e.memoryB),children:"Keep A"}),(0,t.jsx)(B.Button,{variant:"outline",size:"sm",disabled:D,onClick:()=>Y(e.memoryB,e.memoryA),children:"Keep B"}),(0,t.jsx)(B.Button,{variant:"ghost",size:"sm",disabled:D,onClick:()=>Y(s,r),children:"Merge (recommended)"})]})]},`${e.memoryA.id}-${e.memoryB.id}`)})})]})]})}var X=e.i(25264),J=e.i(35238),Y=e.i(38),Z=e.i(71917),ee=e.i(74421),et=r,es=e.i(31569);function er(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class ea extends et.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if(t&&e.isPresent&&!this.props.isPresent){let e=t.offsetParent,s=(0,ee.isHTMLElement)(e)&&e.offsetWidth||0,r=(0,ee.isHTMLElement)(e)&&e.offsetHeight||0,a=this.props.sizeRef.current;a.height=t.offsetHeight||0,a.width=t.offsetWidth||0,a.top=t.offsetTop,a.left=t.offsetLeft,a.right=s-a.width-a.left,a.bottom=r-a.height-a.top}return null}componentDidUpdate(){}render(){return this.props.children}}function ei({children:e,isPresent:s,anchorX:a,anchorY:i,root:l}){let c=(0,et.useId)(),n=(0,et.useRef)(null),o=(0,et.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:d}=(0,et.useContext)(es.MotionConfigContext),u=function(...e){return r.useCallback(function(...e){return t=>{let s=!1,r=e.map(e=>{let r=er(e,t);return s||"function"!=typeof r||(s=!0),r});if(s)return()=>{for(let t=0;t<r.length;t++){let s=r[t];"function"==typeof s?s():er(e[t],null)}}}}(...e),e)}(n,e.props?.ref??e?.ref);return(0,et.useInsertionEffect)(()=>{let{width:e,height:t,top:r,left:u,right:m,bottom:x}=o.current;if(s||!n.current||!e||!t)return;let p="left"===a?`left: ${u}`:`right: ${m}`,h="bottom"===i?`bottom: ${x}`:`top: ${r}`;n.current.dataset.motionPopId=c;let v=document.createElement("style");d&&(v.nonce=d);let y=l??document.head;return y.appendChild(v),v.sheet&&v.sheet.insertRule(`
|
|
2
|
+
[data-motion-pop-id="${c}"] {
|
|
3
3
|
position: absolute !important;
|
|
4
4
|
width: ${e}px !important;
|
|
5
5
|
height: ${t}px !important;
|
|
6
6
|
${p}px !important;
|
|
7
7
|
${h}px !important;
|
|
8
8
|
}
|
|
9
|
-
`),()=>{y.contains(v)&&y.removeChild(v)}},[s]),(0,t.jsx)(er,{isPresent:s,childRef:n,sizeRef:d,children:ee.cloneElement(e,{ref:m})})}let ei=({children:e,initial:s,isPresent:a,onExitComplete:i,custom:c,presenceAffectsLayout:l,mode:n,anchorX:d,anchorY:o,root:m})=>{let u=(0,X.useConstant)(ec),x=(0,r.useId)(),p=!0,h=(0,r.useMemo)(()=>(p=!1,{id:x,initial:s,isPresent:a,custom:c,onExitComplete:e=>{for(let t of(u.set(e,!0),u.values()))if(!t)return;i&&i()},register:e=>(u.set(e,!1),()=>u.delete(e))}),[a,u,i]);return l&&p&&(h={...h}),(0,r.useMemo)(()=>{u.forEach((e,t)=>u.set(t,!1))},[a]),r.useEffect(()=>{a||u.size||!i||i()},[a]),"popLayout"===n&&(e=(0,t.jsx)(ea,{isPresent:a,anchorX:d,anchorY:o,root:m,children:e})),(0,t.jsx)(Y.PresenceContext.Provider,{value:h,children:e})};function ec(){return new Map}var el=e.i(31319);let en=e=>e.key||"";function ed(e){let t=[];return r.Children.forEach(e,e=>{(0,r.isValidElement)(e)&&t.push(e)}),t}let eo=({children:e,custom:s,initial:a=!0,onExitComplete:i,presenceAffectsLayout:c=!0,mode:l="sync",propagate:n=!1,anchorX:d="left",anchorY:o="top",root:m})=>{let[u,x]=(0,el.usePresence)(n),p=(0,r.useMemo)(()=>ed(e),[e]),h=n&&!u?[]:p.map(en),v=(0,r.useRef)(!0),y=(0,r.useRef)(p),g=(0,X.useConstant)(()=>new Map),f=(0,r.useRef)(new Set),[j,b]=(0,r.useState)(p),[N,w]=(0,r.useState)(p);(0,J.useIsomorphicLayoutEffect)(()=>{v.current=!1,y.current=p;for(let e=0;e<N.length;e++){let t=en(N[e]);h.includes(t)?(g.delete(t),f.current.delete(t)):!0!==g.get(t)&&g.set(t,!1)}},[N,h.length,h.join("-")]);let C=[];if(p!==j){let e=[...p];for(let t=0;t<N.length;t++){let s=N[t],r=en(s);h.includes(r)||(e.splice(t,0,s),C.push(s))}return"wait"===l&&C.length&&(e=C),w(ed(e)),b(p),null}let{forceRender:k}=(0,r.useContext)(W.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:N.map(e=>{let r=en(e),j=(!n||!!u)&&(p===N||h.includes(r));return(0,t.jsx)(ei,{isPresent:j,initial:(!v.current||!!a)&&void 0,custom:s,presenceAffectsLayout:c,mode:l,root:m,onExitComplete:j?void 0:()=>{if(f.current.has(r)||(f.current.add(r),!g.has(r)))return;g.set(r,!0);let e=!0;g.forEach(t=>{t||(e=!1)}),e&&(k?.(),w(y.current),n&&x?.(),i&&i())},anchorX:d,anchorY:o,children:e},r)})})};var em=e.i(85506);function eu({session:e,expanded:s,onToggle:r}){let a=e.models[0]||"model unknown";return(0,t.jsxs)(A.GlassCard,{hover:!0,className:"p-4",children:[(0,t.jsxs)("button",{onClick:r,className:"w-full text-left",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:`h-2 w-2 rounded-full ${e.threats>0?"bg-[var(--sc-coral)]":"bg-[var(--sc-cyan)]"}`}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-[var(--sc-text-primary)]",children:e.sessionId})]}),(0,t.jsxs)("div",{className:"mt-1 pl-4 text-xs text-[var(--sc-text-muted)]",children:[function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let r=Math.floor(s/24);if(r<7)return`${r}d ago`;let a=Math.floor(r/7);return`${a}w ago`}(e.lastSeenAt)," · ",a]})]}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-[var(--sc-text-muted)]",children:s?"▾":"▸"})]}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,t.jsxs)(M.Badge,{variant:"muted",children:["Saved: ",e.saved]}),(0,t.jsxs)(M.Badge,{variant:"muted",children:["Skipped: ",e.skipped]}),(0,t.jsxs)(M.Badge,{variant:e.threats>0?"coral":"muted",children:["Threats: ",e.threats]}),e.autoExtracted>0&&(0,t.jsxs)(M.Badge,{variant:"muted",children:["Auto: ",e.autoExtracted]}),e.quarantined>0&&(0,t.jsxs)(M.Badge,{variant:"amber",children:["Quarantined: ",e.quarantined]})]})]}),(0,t.jsx)(eo,{children:s&&e.memories.length>0&&(0,t.jsx)(em.motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:"easeInOut"},className:"overflow-hidden",children:(0,t.jsx)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3 space-y-2",children:e.memories.map(e=>(0,t.jsx)("div",{className:"flex items-center justify-between gap-3 rounded-lg bg-[var(--sc-bg-elevated)]/60 px-3 py-2",children:(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"truncate text-sm text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsxs)("div",{className:"mt-0.5 flex items-center gap-2",children:[(0,t.jsx)(M.Badge,{variant:"muted",children:e.category}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:new Date(e.createdAt).toLocaleDateString("en-GB",{day:"2-digit",month:"2-digit",year:"numeric"})})]})]})},e.id))})})})]})}let ex={architecture:"#FFD700",pattern:"#FFB347",preference:"#FFA500",error:"#FF6B6B",context:"#FFC080",learning:"#FFE4B5",todo:"#FF8C00",note:"#FFCC66",relationship:"#00D4FF",custom:"#FFB347"},ep={short_term:"#FFD700",episodic:"#FFB347",long_term:"#FF8C00"};function eh(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let r=Math.floor(s/24);if(r<7)return`${r}d ago`;let a=Math.floor(r/7);return`${a}w ago`}function ev({memory:e,isSelected:s,onSelect:r,isChecked:a,onCheck:i}){let c=ex[e.category]||ex.custom,l=ep[e.type]||ep.short_term;return(0,t.jsxs)("div",{onClick:()=>r(e),className:`bg-[var(--sc-bg-surface)] border rounded-lg p-3 hover:border-[var(--sc-border)] cursor-pointer transition-colors relative ${s?"border-[var(--sc-cyan)]":"border-[var(--sc-border)]"}`,children:[(0,t.jsx)("div",{className:"h-0.5 rounded-full bg-[var(--sc-bg-elevated)] mb-2 overflow-hidden",children:(0,t.jsx)("div",{className:"h-full rounded-full",style:{width:`${100*e.salience}%`,backgroundColor:c}})}),i&&(0,t.jsx)("input",{type:"checkbox",checked:a??!1,onChange:t=>{t.stopPropagation(),i(e.id,t.target.checked)},onClick:e=>e.stopPropagation(),className:"absolute top-3 right-3 w-4 h-4 accent-blue-500"}),(0,t.jsx)("h3",{className:"text-sm font-semibold text-[var(--sc-text-primary)] truncate pr-6",children:e.title}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mt-1",children:[(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium",style:{backgroundColor:c+"22",color:c},children:e.category}),(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium",style:{backgroundColor:l+"22",color:l},children:e.type.replace("_","-")}),e.status&&"active"!==e.status&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium bg-[var(--sc-amber)]/15 text-[var(--sc-amber)]",children:e.status}),e.pinned&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium bg-[var(--sc-cyan)]/15 text-[var(--sc-cyan)]",children:"pinned"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mt-2 flex-wrap",children:[e.sourceKind&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-bg-elevated)] text-[var(--sc-text-primary)]",children:e.sourceKind}),e.captureMethod&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-bg-elevated)] text-[var(--sc-text-primary)]",children:e.captureMethod}),"number"==typeof e.trustScore&&(0,t.jsxs)("span",{className:`text-[10px] px-1.5 py-0.5 rounded ${e.trustScore<.7?"bg-[var(--sc-coral)]/15 text-[var(--sc-coral)]":"bg-[var(--sc-cyan)]/15 text-[var(--sc-cyan)]"}`,children:["trust ",e.trustScore.toFixed(2)]}),e.cloudExcluded&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-amber)]/15 text-[var(--sc-amber)]",children:"cloud excluded"})]}),(0,t.jsx)("p",{className:"text-[13px] text-[var(--sc-text-secondary)] mt-1.5 line-clamp-3 leading-snug",children:e.content}),e.tags.length>0&&(0,t.jsxs)("div",{className:"flex items-center gap-1 mt-2 flex-wrap",children:[e.tags.slice(0,3).map(e=>(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-bg-elevated)] text-[var(--sc-text-secondary)]",children:e},e)),e.tags.length>3&&(0,t.jsxs)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:["+",e.tags.length-3," more"]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between mt-2 text-[11px] text-[var(--sc-text-muted)]",children:[(0,t.jsxs)("span",{children:["Created ",eh(e.createdAt)]}),(0,t.jsxs)("span",{children:["Accessed ",eh(e.lastAccessed)]})]})]})}function ey(){let[e,s]=(0,r.useState)("sessions"),[a,i]=(0,r.useState)("recent"),[c,l]=(0,r.useState)(""),[n,d]=(0,r.useState)(null),{selectedMemory:o,setSelectedMemory:m,projectFilter:u,typeFilter:x,categoryFilter:h}=(0,$.useDashboardStore)(),{data:v}=(0,p.useOpenClawSessions)(),{data:y=[]}=(0,p.useMemoriesWithRealtime)({limit:1e3,project:u||void 0,type:x||void 0,category:h||void 0,mode:c?"search":"recent",query:c||void 0});(0,p.useAccessMemory)();let g=(0,r.useMemo)(()=>v?.sessions??[],[v?.sessions]),f=(0,r.useMemo)(()=>{let e=[...y];switch(a){case"salience":e.sort((e,t)=>t.salience-e.salience);break;case"recent":e.sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime());break;case"oldest":e.sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime())}return e},[y,a]),j=(0,r.useCallback)(e=>{d(t=>t===e?null:e)},[]),b=(0,r.useCallback)(e=>m(e),[m]);return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center overflow-hidden rounded-lg border border-[var(--sc-border)]",children:[(0,t.jsxs)("button",{onClick:()=>s("sessions"),className:`px-3 py-1.5 text-xs font-medium transition-colors ${"sessions"===e?"bg-[var(--sc-border)] text-[var(--sc-text-primary)]":"text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:["Sessions"," ",(0,t.jsx)("span",{className:"ml-1 text-[var(--sc-text-muted)]",children:g.length})]}),(0,t.jsxs)("button",{onClick:()=>s("all"),className:`px-3 py-1.5 text-xs font-medium transition-colors ${"all"===e?"bg-[var(--sc-border)] text-[var(--sc-text-primary)]":"text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:["All"," ",(0,t.jsx)("span",{className:"ml-1 text-[var(--sc-text-muted)]",children:y.length})]})]}),(0,t.jsxs)("select",{value:a,onChange:e=>i(e.target.value),className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-2 py-1.5 text-xs text-[var(--sc-text-primary)]",children:[(0,t.jsx)("option",{value:"salience",children:"Salience"}),(0,t.jsx)("option",{value:"recent",children:"Recent"}),(0,t.jsx)("option",{value:"oldest",children:"Oldest"})]}),(0,t.jsx)("input",{type:"text",value:c,onChange:e=>l(e.target.value),placeholder:"Search memories...",className:"ml-auto w-56 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 py-1.5 text-xs text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus:border-[var(--sc-cyan)] focus:outline-none"})]}),"sessions"===e&&(0,t.jsxs)("div",{className:"space-y-3",children:[0===g.length&&(0,t.jsx)(A.GlassCard,{className:"p-6",children:(0,t.jsx)("p",{className:"text-sm text-[var(--sc-text-secondary)]",children:"No OpenClaw sessions found. Sessions appear after OpenClaw hooks capture memories."})}),g.map(e=>(0,t.jsx)(eu,{session:e,expanded:n===e.sessionId,onToggle:()=>j(e.sessionId)},e.sessionId))]}),"all"===e&&(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2 2xl:grid-cols-3",children:[0===f.length&&(0,t.jsx)(A.GlassCard,{className:"col-span-full p-6",children:(0,t.jsx)("p",{className:"text-sm text-[var(--sc-text-secondary)]",children:c?"No memories match your search.":"No memories found."})}),f.map(e=>(0,t.jsx)(ev,{memory:e,isSelected:o?.id===e.id,onSelect:b},e.id))]})]})}function eg(){return(0,t.jsx)(ey,{})}let ef=(0,i.default)(()=>e.A(9070),{loadableGenerated:{modules:[13213]},ssr:!1,loading:()=>(0,t.jsx)("div",{className:"flex h-[600px] items-center justify-center text-[var(--sc-text-muted)]",children:"Loading graph..."})});function ej(){let e=(0,s.useSearchParams)().get("tab"),a=e&&["recall","review","capture","graph"].includes(e)?e:null,[i,n]=(0,r.useState)("recall"),h=a??i,{data:v}=(0,p.useStats)(),{data:y}=(0,p.useContradictions)(),{data:g}=(0,p.useQuality)(),{data:f}=S(),j=v?.total??0,b=v?.decayDistribution?.healthy??0,N=y?.count??y?.contradictions?.length??0,w=g?.duplicates?.count??0,C=f?Object.values(f.summary).reduce((e,t)=>e+t,0):0,k=[{id:"recall",label:"Recall",icon:(0,t.jsx)(o.Search,{size:14})},{id:"review",label:"Review",count:C||void 0},{id:"capture",label:"Capture",icon:(0,t.jsx)(m.Sparkles,{size:14})},{id:"graph",label:"Graph",icon:(0,t.jsx)(l.GitBranch,{size:14})}];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)(u.PageHeader,{eyebrow:"Memory",title:"Memory Operations",subtitle:"Search, review, capture, and explore your knowledge base.",tabs:k,activeTab:h,onTabChange:e=>n(e)}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(x.StatCard,{label:"Total Memories",value:j.toLocaleString(),icon:c.Database,accent:"cyan"}),(0,t.jsx)(x.StatCard,{label:"Healthy",value:b.toLocaleString(),icon:m.Sparkles,accent:"cyan"}),(0,t.jsx)(x.StatCard,{label:"Contradictions",value:N,icon:d,accent:N>0?"coral":"muted"}),(0,t.jsx)(x.StatCard,{label:"Duplicates",value:w,icon:l.GitBranch,accent:w>0?"amber":"muted"})]}),(0,t.jsxs)("div",{children:["recall"===h&&(0,t.jsx)(D,{}),"review"===h&&(0,t.jsx)(H,{}),"capture"===h&&(0,t.jsx)(eg,{}),"graph"===h&&(0,t.jsx)("div",{className:"h-[600px] rounded-2xl border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]",children:(0,t.jsx)(ef,{})})]})]})})}function eb(){return(0,t.jsx)(r.Suspense,{fallback:(0,t.jsx)(a.PageSkeleton,{}),children:(0,t.jsx)(ej,{})})}e.s(["default",()=>eb],21090)}]);
|
|
9
|
+
`),()=>{y.contains(v)&&y.removeChild(v)}},[s]),(0,t.jsx)(ea,{isPresent:s,childRef:n,sizeRef:o,children:et.cloneElement(e,{ref:u})})}let el=({children:e,initial:s,isPresent:a,onExitComplete:i,custom:l,presenceAffectsLayout:c,mode:n,anchorX:o,anchorY:d,root:u})=>{let m=(0,J.useConstant)(ec),x=(0,r.useId)(),p=!0,h=(0,r.useMemo)(()=>(p=!1,{id:x,initial:s,isPresent:a,custom:l,onExitComplete:e=>{for(let t of(m.set(e,!0),m.values()))if(!t)return;i&&i()},register:e=>(m.set(e,!1),()=>m.delete(e))}),[a,m,i]);return c&&p&&(h={...h}),(0,r.useMemo)(()=>{m.forEach((e,t)=>m.set(t,!1))},[a]),r.useEffect(()=>{a||m.size||!i||i()},[a]),"popLayout"===n&&(e=(0,t.jsx)(ei,{isPresent:a,anchorX:o,anchorY:d,root:u,children:e})),(0,t.jsx)(Z.PresenceContext.Provider,{value:h,children:e})};function ec(){return new Map}var en=e.i(31319);let eo=e=>e.key||"";function ed(e){let t=[];return r.Children.forEach(e,e=>{(0,r.isValidElement)(e)&&t.push(e)}),t}let eu=({children:e,custom:s,initial:a=!0,onExitComplete:i,presenceAffectsLayout:l=!0,mode:c="sync",propagate:n=!1,anchorX:o="left",anchorY:d="top",root:u})=>{let[m,x]=(0,en.usePresence)(n),p=(0,r.useMemo)(()=>ed(e),[e]),h=n&&!m?[]:p.map(eo),v=(0,r.useRef)(!0),y=(0,r.useRef)(p),g=(0,J.useConstant)(()=>new Map),f=(0,r.useRef)(new Set),[j,b]=(0,r.useState)(p),[N,w]=(0,r.useState)(p);(0,Y.useIsomorphicLayoutEffect)(()=>{v.current=!1,y.current=p;for(let e=0;e<N.length;e++){let t=eo(N[e]);h.includes(t)?(g.delete(t),f.current.delete(t)):!0!==g.get(t)&&g.set(t,!1)}},[N,h.length,h.join("-")]);let C=[];if(p!==j){let e=[...p];for(let t=0;t<N.length;t++){let s=N[t],r=eo(s);h.includes(r)||(e.splice(t,0,s),C.push(s))}return"wait"===c&&C.length&&(e=C),w(ed(e)),b(p),null}let{forceRender:k}=(0,r.useContext)(X.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:N.map(e=>{let r=eo(e),j=(!n||!!m)&&(p===N||h.includes(r));return(0,t.jsx)(el,{isPresent:j,initial:(!v.current||!!a)&&void 0,custom:s,presenceAffectsLayout:l,mode:c,root:u,onExitComplete:j?void 0:()=>{if(f.current.has(r)||(f.current.add(r),!g.has(r)))return;g.set(r,!0);let e=!0;g.forEach(t=>{t||(e=!1)}),e&&(k?.(),w(y.current),n&&x?.(),i&&i())},anchorX:o,anchorY:d,children:e},r)})})};var em=e.i(85506);function ex({session:e,expanded:s,onToggle:r}){let a=e.models[0]||"model unknown";return(0,t.jsxs)(A.GlassCard,{hover:!0,className:"p-4",children:[(0,t.jsxs)("button",{onClick:r,className:"w-full text-left",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:`h-2 w-2 rounded-full ${e.threats>0?"bg-[var(--sc-coral)]":"bg-[var(--sc-cyan)]"}`}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-[var(--sc-text-primary)]",children:e.sessionId})]}),(0,t.jsxs)("div",{className:"mt-1 pl-4 text-xs text-[var(--sc-text-muted)]",children:[function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let r=Math.floor(s/24);if(r<7)return`${r}d ago`;let a=Math.floor(r/7);return`${a}w ago`}(e.lastSeenAt)," · ",a]})]}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-[var(--sc-text-muted)]",children:s?"▾":"▸"})]}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,t.jsxs)(M.Badge,{variant:"muted",children:["Saved: ",e.saved]}),(0,t.jsxs)(M.Badge,{variant:"muted",children:["Skipped: ",e.skipped]}),(0,t.jsxs)(M.Badge,{variant:e.threats>0?"coral":"muted",children:["Threats: ",e.threats]}),e.autoExtracted>0&&(0,t.jsxs)(M.Badge,{variant:"muted",children:["Auto: ",e.autoExtracted]}),e.quarantined>0&&(0,t.jsxs)(M.Badge,{variant:"amber",children:["Quarantined: ",e.quarantined]})]})]}),(0,t.jsx)(eu,{children:s&&e.memories.length>0&&(0,t.jsx)(em.motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:"easeInOut"},className:"overflow-hidden",children:(0,t.jsx)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3 space-y-2",children:e.memories.map(e=>(0,t.jsx)("div",{className:"flex items-center justify-between gap-3 rounded-lg bg-[var(--sc-bg-elevated)]/60 px-3 py-2",children:(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"truncate text-sm text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsxs)("div",{className:"mt-0.5 flex items-center gap-2",children:[(0,t.jsx)(M.Badge,{variant:"muted",children:e.category}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:new Date(e.createdAt).toLocaleDateString("en-GB",{day:"2-digit",month:"2-digit",year:"numeric"})})]})]})},e.id))})})})]})}let ep={architecture:"#FFD700",pattern:"#FFB347",preference:"#FFA500",error:"#FF6B6B",context:"#FFC080",learning:"#FFE4B5",todo:"#FF8C00",note:"#FFCC66",relationship:"#00D4FF",custom:"#FFB347"},eh={short_term:"#FFD700",episodic:"#FFB347",long_term:"#FF8C00"};function ev(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let r=Math.floor(s/24);if(r<7)return`${r}d ago`;let a=Math.floor(r/7);return`${a}w ago`}function ey({memory:e,isSelected:s,onSelect:r,isChecked:a,onCheck:i}){let l=ep[e.category]||ep.custom,c=eh[e.type]||eh.short_term;return(0,t.jsxs)("div",{onClick:()=>r(e),className:`bg-[var(--sc-bg-surface)] border rounded-lg p-3 hover:border-[var(--sc-border)] cursor-pointer transition-colors relative ${s?"border-[var(--sc-cyan)]":"border-[var(--sc-border)]"}`,children:[(0,t.jsx)("div",{className:"h-0.5 rounded-full bg-[var(--sc-bg-elevated)] mb-2 overflow-hidden",children:(0,t.jsx)("div",{className:"h-full rounded-full",style:{width:`${100*e.salience}%`,backgroundColor:l}})}),i&&(0,t.jsx)("input",{type:"checkbox",checked:a??!1,onChange:t=>{t.stopPropagation(),i(e.id,t.target.checked)},onClick:e=>e.stopPropagation(),className:"absolute top-3 right-3 w-4 h-4 accent-blue-500"}),(0,t.jsx)("h3",{className:"text-sm font-semibold text-[var(--sc-text-primary)] truncate pr-6",children:e.title}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mt-1",children:[(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium",style:{backgroundColor:l+"22",color:l},children:e.category}),(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium",style:{backgroundColor:c+"22",color:c},children:e.type.replace("_","-")}),e.status&&"active"!==e.status&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium bg-[var(--sc-amber)]/15 text-[var(--sc-amber)]",children:e.status}),e.pinned&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full font-medium bg-[var(--sc-cyan)]/15 text-[var(--sc-cyan)]",children:"pinned"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 mt-2 flex-wrap",children:[e.sourceKind&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-bg-elevated)] text-[var(--sc-text-primary)]",children:e.sourceKind}),e.captureMethod&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-bg-elevated)] text-[var(--sc-text-primary)]",children:e.captureMethod}),"number"==typeof e.trustScore&&(0,t.jsxs)("span",{className:`text-[10px] px-1.5 py-0.5 rounded ${e.trustScore<.7?"bg-[var(--sc-coral)]/15 text-[var(--sc-coral)]":"bg-[var(--sc-cyan)]/15 text-[var(--sc-cyan)]"}`,children:["trust ",e.trustScore.toFixed(2)]}),e.cloudExcluded&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-amber)]/15 text-[var(--sc-amber)]",children:"cloud excluded"})]}),(0,t.jsx)("p",{className:"text-[13px] text-[var(--sc-text-secondary)] mt-1.5 line-clamp-3 leading-snug",children:e.content}),e.tags.length>0&&(0,t.jsxs)("div",{className:"flex items-center gap-1 mt-2 flex-wrap",children:[e.tags.slice(0,3).map(e=>(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-[var(--sc-bg-elevated)] text-[var(--sc-text-secondary)]",children:e},e)),e.tags.length>3&&(0,t.jsxs)("span",{className:"text-[10px] text-[var(--sc-text-muted)]",children:["+",e.tags.length-3," more"]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between mt-2 text-[11px] text-[var(--sc-text-muted)]",children:[(0,t.jsxs)("span",{children:["Created ",ev(e.createdAt)]}),(0,t.jsxs)("span",{children:["Accessed ",ev(e.lastAccessed)]})]})]})}function eg(){let[e,s]=(0,r.useState)("sessions"),[a,i]=(0,r.useState)("recent"),[l,c]=(0,r.useState)(""),[n,o]=(0,r.useState)(null),{selectedMemory:d,setSelectedMemory:u,projectFilter:m,typeFilter:x,categoryFilter:h}=(0,$.useDashboardStore)(),{data:v}=(0,p.useOpenClawSessions)(),{data:y=[]}=(0,p.useMemoriesWithRealtime)({limit:1e3,project:m||void 0,type:x||void 0,category:h||void 0,mode:l?"search":"recent",query:l||void 0});(0,p.useAccessMemory)();let g=(0,r.useMemo)(()=>v?.sessions??[],[v?.sessions]),f=(0,r.useMemo)(()=>{let e=[...y];switch(a){case"salience":e.sort((e,t)=>t.salience-e.salience);break;case"recent":e.sort((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime());break;case"oldest":e.sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime())}return e},[y,a]),j=(0,r.useCallback)(e=>{o(t=>t===e?null:e)},[]),b=(0,r.useCallback)(e=>u(e),[u]);return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center overflow-hidden rounded-lg border border-[var(--sc-border)]",children:[(0,t.jsxs)("button",{onClick:()=>s("sessions"),className:`px-3 py-1.5 text-xs font-medium transition-colors ${"sessions"===e?"bg-[var(--sc-border)] text-[var(--sc-text-primary)]":"text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:["Sessions"," ",(0,t.jsx)("span",{className:"ml-1 text-[var(--sc-text-muted)]",children:g.length})]}),(0,t.jsxs)("button",{onClick:()=>s("all"),className:`px-3 py-1.5 text-xs font-medium transition-colors ${"all"===e?"bg-[var(--sc-border)] text-[var(--sc-text-primary)]":"text-[var(--sc-text-secondary)] hover:text-[var(--sc-text-primary)]"}`,children:["All"," ",(0,t.jsx)("span",{className:"ml-1 text-[var(--sc-text-muted)]",children:y.length})]})]}),(0,t.jsxs)("select",{value:a,onChange:e=>i(e.target.value),className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-2 py-1.5 text-xs text-[var(--sc-text-primary)]",children:[(0,t.jsx)("option",{value:"salience",children:"Salience"}),(0,t.jsx)("option",{value:"recent",children:"Recent"}),(0,t.jsx)("option",{value:"oldest",children:"Oldest"})]}),(0,t.jsx)("input",{type:"text",value:l,onChange:e=>c(e.target.value),placeholder:"Search memories...",className:"ml-auto w-56 rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] px-3 py-1.5 text-xs text-[var(--sc-text-primary)] placeholder:text-[var(--sc-text-muted)] focus:border-[var(--sc-cyan)] focus:outline-none"})]}),"sessions"===e&&(0,t.jsxs)("div",{className:"space-y-3",children:[0===g.length&&(0,t.jsx)(A.GlassCard,{className:"p-6",children:(0,t.jsx)("p",{className:"text-sm text-[var(--sc-text-secondary)]",children:"No OpenClaw sessions found. Sessions appear after OpenClaw hooks capture memories."})}),g.map(e=>(0,t.jsx)(ex,{session:e,expanded:n===e.sessionId,onToggle:()=>j(e.sessionId)},e.sessionId))]}),"all"===e&&(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2 2xl:grid-cols-3",children:[0===f.length&&(0,t.jsx)(A.GlassCard,{className:"col-span-full p-6",children:(0,t.jsx)("p",{className:"text-sm text-[var(--sc-text-secondary)]",children:l?"No memories match your search.":"No memories found."})}),f.map(e=>(0,t.jsx)(ey,{memory:e,isSelected:d?.id===e.id,onSelect:b},e.id))]})]})}function ef(){return(0,t.jsx)(eg,{})}let ej=(0,i.default)(()=>e.A(9070),{loadableGenerated:{modules:[13213]},ssr:!1,loading:()=>(0,t.jsx)("div",{className:"flex h-[600px] items-center justify-center text-[var(--sc-text-muted)]",children:"Loading graph..."})});function eb(){let e=(0,s.useSearchParams)().get("tab"),a=e&&["recall","review","capture","graph"].includes(e)?e:null,[i,n]=(0,r.useState)("recall"),h=a??i,{data:v}=(0,p.useStats)(),{data:y}=(0,p.useContradictions)(),{data:g}=(0,p.useQuality)(),{data:f}=S(),j=v?.total??0,b=v?.decayDistribution?.healthy??0,N=y?.count??y?.contradictions?.length??0,w=g?.duplicates?.count??0,C=f?Object.values(f.summary).reduce((e,t)=>e+t,0):0,k=[{id:"recall",label:"Recall",icon:(0,t.jsx)(d.Search,{size:14})},{id:"review",label:"Review",count:C||void 0},{id:"capture",label:"Capture",icon:(0,t.jsx)(u.Sparkles,{size:14})},{id:"graph",label:"Graph",icon:(0,t.jsx)(c.GitBranch,{size:14})}];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)(m.PageHeader,{eyebrow:"Memory",title:"Memory Operations",subtitle:"Search, review, capture, and explore your knowledge base.",tabs:k,activeTab:h,onTabChange:e=>n(e)}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(x.StatCard,{label:"Total Memories",value:j.toLocaleString(),icon:l.Database,accent:"cyan"}),(0,t.jsx)(x.StatCard,{label:"Healthy",value:b.toLocaleString(),icon:u.Sparkles,accent:"cyan"}),(0,t.jsx)(x.StatCard,{label:"Contradictions",value:N,icon:o,accent:N>0?"coral":"muted"}),(0,t.jsx)(x.StatCard,{label:"Duplicates",value:w,icon:c.GitBranch,accent:w>0?"amber":"muted"})]}),(0,t.jsxs)("div",{children:["recall"===h&&(0,t.jsx)(D,{}),"review"===h&&(0,t.jsx)(W,{}),"capture"===h&&(0,t.jsx)(ef,{}),"graph"===h&&(0,t.jsx)("div",{className:"h-[600px] rounded-2xl border border-[var(--sc-border)] bg-[var(--sc-bg-surface)]",children:(0,t.jsx)(ej,{})})]})]})})}function eN(){return(0,t.jsx)(r.Suspense,{fallback:(0,t.jsx)(a.PageSkeleton,{}),children:(0,t.jsx)(eb,{})})}e.s(["default",()=>eN],21090)}]);
|