shieldcortex 4.17.0 → 4.18.1
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/README.md +49 -0
- package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/standalone/dashboard/.next/app-path-routes-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +4 -4
- package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +27 -3
- package/dashboard/.next/standalone/dashboard/.next/routes-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/build-manifest.json +18 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/next-font-manifest.json +11 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js +18 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page_client-reference-manifest.js +2 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/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/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page.js.nft.json +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 +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.html +9 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.meta +17 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.rsc +31 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay/__PAGE__.segment.rsc +9 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay.segment.rsc +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_full.segment.rsc +31 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_head.segment.rsc +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_index.segment.rsc +8 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_tree.segment.rsc +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +13 -13
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +13 -13
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +12 -12
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +12 -12
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/next-font-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/page.js.nft.json +1 -1
- 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 +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_tree.segment.rsc +5 -5
- 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 +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +13 -13
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +13 -13
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +13 -13
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +13 -13
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_tree.segment.rsc +5 -5
- 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 +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.rsc +11 -11
- 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 +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +11 -11
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +12 -12
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +12 -12
- 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 +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_tree.segment.rsc +5 -5
- package/dashboard/.next/standalone/dashboard/.next/server/app-paths-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/52d24__next-internal_server_app_(dashboard)_memory_replay_page_actions_b95fee26.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{9f1d4_@tanstack_68dcbde9._.js → 9f1d4_@tanstack_785e068c._.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{dashboard_25b568c3._.js → 9f1d4_next_c9fe89e1._.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{[root-of-the-server]__2de25d56._.js → [root-of-the-server]__60b060b2._.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__7f43774d._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__801e783f._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__8930a320._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_11e120e8._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_2373e047._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_283c47c0._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_2e20858e._.js +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_45d60d74._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ca514a1._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ccb6514._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_609078b2._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{dashboard_91003e6d._.js → dashboard_92148040._.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c33b336f._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_fac483f8._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_replay_page_tsx_d2b20535._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_protection_ProtectionOverview_tsx_54554a97._.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_d191b6dc._.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/middleware-build-manifest.js +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/next-font-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/next-font-manifest.json +46 -42
- package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +2 -2
- 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/0fa2c109e0d6d832.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/2d55e8cb58d80df0.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/349dace3a1c9af01.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/3505433bf7977a34.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/4d0b86f6afedd8b5.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/a7d5d0791c8c6223.css +2 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/b2a6e883eaa58507.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/bcfaf98940462e7d.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/d52895fa7c120f49.css +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/f70f563804550a9c.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/{turbopack-79214717b23f7452.js → turbopack-768a6a8b9db952e0.js} +2 -2
- package/dashboard/.next/standalone/dashboard/.next/static/media/4fa387ec64143e14-s.c36e1862.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/53b9e256198e5412-s.853d50a3.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/5ce348bf30bf5439-s.ebceb24d.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/6306c77e7c8268e4-s.ff4a2084.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/7178b3e590c64307-s.55554cd0.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/797e433ab948586e-s.p.479bea2b.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/7d817b4c03b0c5f1-s.f377b9c4.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/8a480f0b521d4e75-s.ea323500.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/bbc41e54d2fcbd21-s.d1207556.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/fef07dbb0973bf53-s.518e079e.woff2 +0 -0
- package/dist/api/routes/sessions.js +128 -6
- package/dist/cli/import-jsonl.js +3 -8
- package/dist/sessions/glob.d.ts +38 -0
- package/dist/sessions/glob.js +183 -0
- package/dist/sessions/import-jsonl.d.ts +9 -5
- package/dist/sessions/import-jsonl.js +89 -35
- package/package.json +1 -1
- package/plugins/openclaw/dist/openclaw.plugin.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__521be65c._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__52bd7a9f._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__6f881a23._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_1c5148b9._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_204d1c9e._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_415e5b1b._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_442a0173._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_64f63df9._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_7cb6f257._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_9b8695d8._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c343baff._.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/2473c16c0c2f6b5f.css +0 -2
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/5f18f98891076bc5.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/b053d5f11418d645.js +0 -3
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/bf725d638cce46d4.css +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/d05e311dfccb5729.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/d9ad4c35fc865415.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/e804a1fda2839550.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/e9f4b8da354f1005.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/fe6075d947234b5d.js +0 -1
- package/dashboard/.next/standalone/dashboard/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{9C0MR5ahRDqnfBA64wKCY → rBhx3Fsm2AhFxbr_xAimw}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{9C0MR5ahRDqnfBA64wKCY → rBhx3Fsm2AhFxbr_xAimw}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{9C0MR5ahRDqnfBA64wKCY → rBhx3Fsm2AhFxbr_xAimw}/_ssgManifest.js +0 -0
|
@@ -13,9 +13,12 @@
|
|
|
13
13
|
* Pagination cap chosen to match `routes/memories.ts`: 200 max for lists,
|
|
14
14
|
* 500 max for the event stream (replay needs more events at once).
|
|
15
15
|
*/
|
|
16
|
+
import { homedir, tmpdir } from 'os';
|
|
17
|
+
import { isAbsolute, join, normalize, resolve, sep } from 'path';
|
|
16
18
|
import { getDatabase } from '../../database/init.js';
|
|
17
19
|
import { getTimeline } from '../../sessions/timeline.js';
|
|
18
20
|
import { importJsonlTranscript } from '../../sessions/import-jsonl.js';
|
|
21
|
+
import { expandGlob, isGlobPattern } from '../../sessions/glob.js';
|
|
19
22
|
const SESSIONS_DEFAULT_LIMIT = 50;
|
|
20
23
|
const SESSIONS_MAX_LIMIT = 200;
|
|
21
24
|
const EVENTS_DEFAULT_LIMIT = 100;
|
|
@@ -133,16 +136,79 @@ export function registerSessionRoutes(app, requireNotLocked) {
|
|
|
133
136
|
res.status(500).json({ error: err.message });
|
|
134
137
|
}
|
|
135
138
|
});
|
|
136
|
-
// ── POST /api/sessions/import-jsonl
|
|
137
|
-
|
|
139
|
+
// ── POST /api/sessions/import-jsonl ────────────────────────────────
|
|
140
|
+
//
|
|
141
|
+
// Body forms:
|
|
142
|
+
// { path: "/abs/path/to/file.jsonl" } — import one file
|
|
143
|
+
// { path: "/glob/pattern/*.jsonl" } — import all matching files
|
|
144
|
+
// { } or { path: null } — default: ~/.claude/projects/**/*.jsonl
|
|
145
|
+
//
|
|
146
|
+
// Default glob exists so the dashboard's "Import JSONL" button has a
|
|
147
|
+
// useful zero-arg action. The CLI exposes the same behaviour.
|
|
148
|
+
app.post('/api/sessions/import-jsonl', requireNotLocked, async (req, res) => {
|
|
138
149
|
try {
|
|
139
150
|
const body = (req.body ?? {});
|
|
140
|
-
|
|
141
|
-
|
|
151
|
+
const explicit = typeof body.path === 'string' && body.path.length > 0 ? body.path : null;
|
|
152
|
+
const target = explicit ?? join(homedir(), '.claude', 'projects', '**', '*.jsonl');
|
|
153
|
+
let files;
|
|
154
|
+
try {
|
|
155
|
+
files = await resolveImportFiles(target);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
// Path-traversal rejection from resolveImportFiles → 400 (caller error),
|
|
159
|
+
// not 500 (server bug). Any other error rethrows.
|
|
160
|
+
if (err instanceof Error && /must be under/i.test(err.message)) {
|
|
161
|
+
res.status(400).json({ error: err.message });
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
throw err;
|
|
165
|
+
}
|
|
166
|
+
if (files.length === 0) {
|
|
167
|
+
res.status(404).json({ error: `no JSONL files matched: ${target}` });
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
let eventCount = 0;
|
|
171
|
+
let skipped = 0;
|
|
172
|
+
let malformed = 0;
|
|
173
|
+
let imported = 0;
|
|
174
|
+
let failed = 0;
|
|
175
|
+
let lastSessionId = null;
|
|
176
|
+
const errors = [];
|
|
177
|
+
for (const file of files) {
|
|
178
|
+
try {
|
|
179
|
+
const r = importJsonlTranscript(file);
|
|
180
|
+
eventCount += r.eventCount;
|
|
181
|
+
skipped += r.skipped;
|
|
182
|
+
malformed += r.malformed;
|
|
183
|
+
if (r.sessionId)
|
|
184
|
+
lastSessionId = r.sessionId;
|
|
185
|
+
imported++;
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
failed++;
|
|
189
|
+
errors.push({ path: file, error: err.message });
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Special case: a single literal path that doesn't exist → 404. The
|
|
193
|
+
// glob path already 404'd above when nothing matched; this covers
|
|
194
|
+
// the "user typed a wrong path" UX.
|
|
195
|
+
if (files.length === 1 &&
|
|
196
|
+
imported === 0 &&
|
|
197
|
+
errors.length === 1 &&
|
|
198
|
+
/not found|ENOENT/i.test(errors[0].error)) {
|
|
199
|
+
res.status(404).json({ error: errors[0].error });
|
|
142
200
|
return;
|
|
143
201
|
}
|
|
144
|
-
|
|
145
|
-
|
|
202
|
+
res.json({
|
|
203
|
+
filesMatched: files.length,
|
|
204
|
+
filesImported: imported,
|
|
205
|
+
filesFailed: failed,
|
|
206
|
+
eventCount,
|
|
207
|
+
skipped,
|
|
208
|
+
malformed,
|
|
209
|
+
sessionId: files.length === 1 ? lastSessionId : null,
|
|
210
|
+
errors: errors.slice(0, 10), // cap at 10 to keep response small
|
|
211
|
+
});
|
|
146
212
|
}
|
|
147
213
|
catch (err) {
|
|
148
214
|
const message = err.message;
|
|
@@ -151,3 +217,59 @@ export function registerSessionRoutes(app, requireNotLocked) {
|
|
|
151
217
|
}
|
|
152
218
|
});
|
|
153
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Resolve `target` into a list of absolute file paths, ensuring every
|
|
222
|
+
* result is rooted under a user-trusted directory. The dashboard binds to
|
|
223
|
+
* `localhost` by default, but constraining imports is a useful
|
|
224
|
+
* defence-in-depth measure when the dashboard is exposed via a tunnel,
|
|
225
|
+
* docker port-map, or a careless reverse proxy. A stray POST with
|
|
226
|
+
* `{ path: "/etc/secret.jsonl" }` should never read that file.
|
|
227
|
+
*
|
|
228
|
+
* Allowed roots:
|
|
229
|
+
* - the user's home directory (where `~/.claude/projects/...` lives)
|
|
230
|
+
* - the OS temp directory (where ad-hoc downloads + the test suite write)
|
|
231
|
+
*
|
|
232
|
+
* Both are per-user trust domains. Symlinks that point outside slip past
|
|
233
|
+
* this check because we don't `realpath()` for perf reasons — the user
|
|
234
|
+
* owns these trees, so a hostile symlink is a separate threat model.
|
|
235
|
+
*/
|
|
236
|
+
async function resolveImportFiles(target) {
|
|
237
|
+
const roots = trustedRoots();
|
|
238
|
+
// Expand `~` then make absolute. `path.normalize` collapses `..` so a
|
|
239
|
+
// pattern like `~/../etc/passwd` resolves to `/etc/passwd` *before* the
|
|
240
|
+
// under-root check below catches it.
|
|
241
|
+
const expanded = expandHome(target, homedir());
|
|
242
|
+
const absolute = isAbsolute(expanded) ? expanded : resolve(process.cwd(), expanded);
|
|
243
|
+
const normalized = normalize(absolute);
|
|
244
|
+
if (!isUnderTrustedRoot(normalized, roots)) {
|
|
245
|
+
throw new Error(`path must be under home or temp directory: ${target}`);
|
|
246
|
+
}
|
|
247
|
+
if (!isGlobPattern(normalized))
|
|
248
|
+
return [normalized];
|
|
249
|
+
// Defence in depth: `**` walks symlinked subtrees, so re-filter the
|
|
250
|
+
// expansion. A symlink that escapes the trusted roots gets dropped here.
|
|
251
|
+
return expandGlob(normalized).filter((p) => isUnderTrustedRoot(normalize(p), roots));
|
|
252
|
+
}
|
|
253
|
+
function trustedRoots() {
|
|
254
|
+
// Deduplicate — on some macOS configs `tmpdir()` is a subdir of `homedir()`.
|
|
255
|
+
const seen = new Set();
|
|
256
|
+
const entries = [];
|
|
257
|
+
for (const root of [homedir(), tmpdir()]) {
|
|
258
|
+
const n = normalize(root);
|
|
259
|
+
if (seen.has(n))
|
|
260
|
+
continue;
|
|
261
|
+
seen.add(n);
|
|
262
|
+
entries.push({ root: n, withSep: n.endsWith(sep) ? n : n + sep });
|
|
263
|
+
}
|
|
264
|
+
return { entries };
|
|
265
|
+
}
|
|
266
|
+
function isUnderTrustedRoot(p, roots) {
|
|
267
|
+
return roots.entries.some((r) => p === r.root || p.startsWith(r.withSep));
|
|
268
|
+
}
|
|
269
|
+
function expandHome(p, home) {
|
|
270
|
+
if (p === '~')
|
|
271
|
+
return home;
|
|
272
|
+
if (p.startsWith('~/') || p.startsWith('~\\'))
|
|
273
|
+
return join(home, p.slice(2));
|
|
274
|
+
return p;
|
|
275
|
+
}
|
package/dist/cli/import-jsonl.js
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
* Initialises the DB before importing so the call works from any cwd
|
|
10
10
|
* (the importer relies on the singleton `getDatabase()`).
|
|
11
11
|
*/
|
|
12
|
-
import { glob } from 'fs/promises';
|
|
13
12
|
import { homedir } from 'os';
|
|
14
13
|
import { join } from 'path';
|
|
15
14
|
import { existsSync } from 'fs';
|
|
15
|
+
import { expandGlob, isGlobPattern } from '../sessions/glob.js';
|
|
16
16
|
export async function handleImportJsonlCommand(args) {
|
|
17
17
|
if (args.includes('--help') || args.includes('-h')) {
|
|
18
18
|
printHelp();
|
|
@@ -74,15 +74,10 @@ Examples:
|
|
|
74
74
|
`);
|
|
75
75
|
}
|
|
76
76
|
async function resolveFiles(target) {
|
|
77
|
-
|
|
78
|
-
if (!/[*?[\]]/.test(target)) {
|
|
77
|
+
if (!isGlobPattern(target)) {
|
|
79
78
|
if (!existsSync(target))
|
|
80
79
|
return [];
|
|
81
80
|
return [target];
|
|
82
81
|
}
|
|
83
|
-
|
|
84
|
-
for await (const entry of glob(target)) {
|
|
85
|
-
matches.push(entry);
|
|
86
|
-
}
|
|
87
|
-
return matches.sort();
|
|
82
|
+
return expandGlob(target).sort();
|
|
88
83
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal portable glob expansion for the session-capture import flow.
|
|
3
|
+
*
|
|
4
|
+
* Node 22 added `fs.promises.glob`, but ShieldCortex's `engines.node`
|
|
5
|
+
* still declares `>=18.0.0` — using fs/promises.glob would break the
|
|
6
|
+
* CI matrix (Node 20) and any production deployment running an LTS
|
|
7
|
+
* earlier than 22. This module implements the narrow subset of glob
|
|
8
|
+
* semantics the importer actually needs:
|
|
9
|
+
*
|
|
10
|
+
* - Literal paths (no wildcards) — return as-is, caller checks existence.
|
|
11
|
+
* - Shell wildcards `*` `?` `[]` within a single directory segment.
|
|
12
|
+
* - `**` for any-depth recursion (only between `/`-separated segments;
|
|
13
|
+
* `**` inside a filename is treated as a regular `*` `*`).
|
|
14
|
+
*
|
|
15
|
+
* No braces, no extglob, no negation. The JSONL importer doesn't need
|
|
16
|
+
* those and pulling in a full glob package would inflate the install
|
|
17
|
+
* footprint for a single feature.
|
|
18
|
+
*/
|
|
19
|
+
export interface ExpandGlobOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Cap on the number of returned matches. Stops walking once hit so
|
|
22
|
+
* pathological globs against `/` don't lock up the API process.
|
|
23
|
+
*/
|
|
24
|
+
maxMatches?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns `true` when the pattern contains any glob metacharacter the
|
|
28
|
+
* walker treats specially. Used by callers to short-circuit literal
|
|
29
|
+
* paths and skip the walker entirely.
|
|
30
|
+
*/
|
|
31
|
+
export declare function isGlobPattern(pattern: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Expand a glob pattern to absolute file paths. Synchronous because
|
|
34
|
+
* the importer's callsites are already synchronous and the result is
|
|
35
|
+
* always small enough that I/O is not the bottleneck (sessions live
|
|
36
|
+
* on local disk under `~/.claude/projects/`).
|
|
37
|
+
*/
|
|
38
|
+
export declare function expandGlob(pattern: string, options?: ExpandGlobOptions): string[];
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal portable glob expansion for the session-capture import flow.
|
|
3
|
+
*
|
|
4
|
+
* Node 22 added `fs.promises.glob`, but ShieldCortex's `engines.node`
|
|
5
|
+
* still declares `>=18.0.0` — using fs/promises.glob would break the
|
|
6
|
+
* CI matrix (Node 20) and any production deployment running an LTS
|
|
7
|
+
* earlier than 22. This module implements the narrow subset of glob
|
|
8
|
+
* semantics the importer actually needs:
|
|
9
|
+
*
|
|
10
|
+
* - Literal paths (no wildcards) — return as-is, caller checks existence.
|
|
11
|
+
* - Shell wildcards `*` `?` `[]` within a single directory segment.
|
|
12
|
+
* - `**` for any-depth recursion (only between `/`-separated segments;
|
|
13
|
+
* `**` inside a filename is treated as a regular `*` `*`).
|
|
14
|
+
*
|
|
15
|
+
* No braces, no extglob, no negation. The JSONL importer doesn't need
|
|
16
|
+
* those and pulling in a full glob package would inflate the install
|
|
17
|
+
* footprint for a single feature.
|
|
18
|
+
*/
|
|
19
|
+
import { readdirSync, statSync } from 'fs';
|
|
20
|
+
import { join, sep, isAbsolute } from 'path';
|
|
21
|
+
import { homedir } from 'os';
|
|
22
|
+
const DEFAULT_MAX_MATCHES = 10_000;
|
|
23
|
+
/**
|
|
24
|
+
* Returns `true` when the pattern contains any glob metacharacter the
|
|
25
|
+
* walker treats specially. Used by callers to short-circuit literal
|
|
26
|
+
* paths and skip the walker entirely.
|
|
27
|
+
*/
|
|
28
|
+
export function isGlobPattern(pattern) {
|
|
29
|
+
return /[*?[\]]/.test(pattern);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Expand a glob pattern to absolute file paths. Synchronous because
|
|
33
|
+
* the importer's callsites are already synchronous and the result is
|
|
34
|
+
* always small enough that I/O is not the bottleneck (sessions live
|
|
35
|
+
* on local disk under `~/.claude/projects/`).
|
|
36
|
+
*/
|
|
37
|
+
export function expandGlob(pattern, options = {}) {
|
|
38
|
+
const max = options.maxMatches ?? DEFAULT_MAX_MATCHES;
|
|
39
|
+
const expanded = expandHome(pattern);
|
|
40
|
+
if (!isGlobPattern(expanded)) {
|
|
41
|
+
return [expanded];
|
|
42
|
+
}
|
|
43
|
+
const segments = expanded.split(/[\\/]+/);
|
|
44
|
+
// Determine the literal prefix — everything up to the first segment
|
|
45
|
+
// that has a wildcard. Walking starts from there.
|
|
46
|
+
let prefix = isAbsolute(expanded) ? sep : '';
|
|
47
|
+
let i = 0;
|
|
48
|
+
for (; i < segments.length; i++) {
|
|
49
|
+
if (isGlobPattern(segments[i]))
|
|
50
|
+
break;
|
|
51
|
+
prefix = prefix === sep ? sep + segments[i] : prefix ? join(prefix, segments[i]) : segments[i];
|
|
52
|
+
}
|
|
53
|
+
if (prefix === '')
|
|
54
|
+
prefix = '.';
|
|
55
|
+
const remaining = segments.slice(i);
|
|
56
|
+
const matches = [];
|
|
57
|
+
walk(prefix, remaining, matches, max);
|
|
58
|
+
return matches.sort();
|
|
59
|
+
}
|
|
60
|
+
/** Recursive matcher. */
|
|
61
|
+
function walk(currentDir, segments, out, max) {
|
|
62
|
+
if (out.length >= max)
|
|
63
|
+
return;
|
|
64
|
+
if (segments.length === 0)
|
|
65
|
+
return;
|
|
66
|
+
const [head, ...rest] = segments;
|
|
67
|
+
// `**` — match any number of directory levels (including zero).
|
|
68
|
+
if (head === '**') {
|
|
69
|
+
// Zero levels: continue at currentDir with `rest`.
|
|
70
|
+
walk(currentDir, rest, out, max);
|
|
71
|
+
// One-or-more: recurse into every subdirectory with the same `**`.
|
|
72
|
+
let entries = [];
|
|
73
|
+
try {
|
|
74
|
+
entries = readdirSync(currentDir, { withFileTypes: true });
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
for (const entry of entries) {
|
|
80
|
+
if (out.length >= max)
|
|
81
|
+
return;
|
|
82
|
+
if (entry.isDirectory()) {
|
|
83
|
+
walk(join(currentDir, String(entry.name)), segments, out, max);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const regex = segmentToRegex(head);
|
|
89
|
+
const isLastSegment = rest.length === 0;
|
|
90
|
+
let entries = [];
|
|
91
|
+
try {
|
|
92
|
+
entries = readdirSync(currentDir, { withFileTypes: true });
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
for (const entry of entries) {
|
|
98
|
+
if (out.length >= max)
|
|
99
|
+
return;
|
|
100
|
+
const name = String(entry.name);
|
|
101
|
+
if (!regex.test(name))
|
|
102
|
+
continue;
|
|
103
|
+
const full = join(currentDir, name);
|
|
104
|
+
if (isLastSegment) {
|
|
105
|
+
// Only files match a leaf glob — directories aren't useful for the importer.
|
|
106
|
+
if (entry.isFile())
|
|
107
|
+
out.push(full);
|
|
108
|
+
else if (entry.isSymbolicLink()) {
|
|
109
|
+
// Resolve symlinks lazily — a broken link just gets skipped.
|
|
110
|
+
try {
|
|
111
|
+
if (statSync(full).isFile())
|
|
112
|
+
out.push(full);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// ignore
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (entry.isDirectory() || entry.isSymbolicLink()) {
|
|
120
|
+
walk(full, rest, out, max);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** Convert a single shell-glob path segment to a regex. */
|
|
125
|
+
function segmentToRegex(segment) {
|
|
126
|
+
let pattern = '^';
|
|
127
|
+
let inCharClass = false;
|
|
128
|
+
for (let i = 0; i < segment.length; i++) {
|
|
129
|
+
const c = segment[i];
|
|
130
|
+
if (inCharClass) {
|
|
131
|
+
if (c === ']') {
|
|
132
|
+
inCharClass = false;
|
|
133
|
+
pattern += ']';
|
|
134
|
+
}
|
|
135
|
+
else if (c === '\\') {
|
|
136
|
+
pattern += '\\\\';
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
pattern += escapeForRegex(c);
|
|
140
|
+
}
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
switch (c) {
|
|
144
|
+
case '*':
|
|
145
|
+
pattern += '[^/\\\\]*';
|
|
146
|
+
break;
|
|
147
|
+
case '?':
|
|
148
|
+
pattern += '[^/\\\\]';
|
|
149
|
+
break;
|
|
150
|
+
case '[':
|
|
151
|
+
inCharClass = true;
|
|
152
|
+
pattern += '[';
|
|
153
|
+
break;
|
|
154
|
+
case '.':
|
|
155
|
+
case '+':
|
|
156
|
+
case '(':
|
|
157
|
+
case ')':
|
|
158
|
+
case '{':
|
|
159
|
+
case '}':
|
|
160
|
+
case '|':
|
|
161
|
+
case '^':
|
|
162
|
+
case '$':
|
|
163
|
+
pattern += '\\' + c;
|
|
164
|
+
break;
|
|
165
|
+
default:
|
|
166
|
+
pattern += c;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
pattern += '$';
|
|
170
|
+
return new RegExp(pattern);
|
|
171
|
+
}
|
|
172
|
+
function escapeForRegex(c) {
|
|
173
|
+
return /[.*+?^${}()|[\]\\]/.test(c) ? '\\' + c : c;
|
|
174
|
+
}
|
|
175
|
+
/** Expand a leading `~` to the user's home directory. */
|
|
176
|
+
function expandHome(p) {
|
|
177
|
+
if (p === '~')
|
|
178
|
+
return homedir();
|
|
179
|
+
if (p.startsWith('~/') || p.startsWith('~\\')) {
|
|
180
|
+
return join(homedir(), p.slice(2));
|
|
181
|
+
}
|
|
182
|
+
return p;
|
|
183
|
+
}
|
|
@@ -75,11 +75,15 @@ export interface ImportResult {
|
|
|
75
75
|
*/
|
|
76
76
|
export declare function parseTranscriptLine(line: unknown): SessionEventInput[];
|
|
77
77
|
/**
|
|
78
|
-
* Import one JSONL file.
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
78
|
+
* Import one JSONL file. Streams the file in 64 KB chunks via `readSync`
|
|
79
|
+
* and a `StringDecoder` (which handles UTF-8 sequences that span chunk
|
|
80
|
+
* boundaries) so a 500 MB transcript archive doesn't load into a single
|
|
81
|
+
* string. Parsed rows flush to SQLite in {@link FLUSH_BATCH_ROWS}-sized
|
|
82
|
+
* transactional batches.
|
|
83
|
+
*
|
|
84
|
+
* Malformed lines do NOT throw — they're counted and skipped so a single
|
|
85
|
+
* bad row never blocks the rest of the file. Idempotent on re-import via
|
|
86
|
+
* the `INSERT OR IGNORE` + `idx_session_events_dedupe` UNIQUE index.
|
|
83
87
|
*/
|
|
84
88
|
export declare function importJsonlTranscript(path: string): ImportResult;
|
|
85
89
|
export {};
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
* - Things we WILL preserve: prompts, assistant text, tool name +
|
|
29
29
|
* args + result, and timestamps.
|
|
30
30
|
*/
|
|
31
|
-
import {
|
|
31
|
+
import { openSync, readSync, closeSync, existsSync } from 'fs';
|
|
32
|
+
import { StringDecoder } from 'string_decoder';
|
|
32
33
|
import { createHash } from 'crypto';
|
|
33
34
|
import { getDatabase } from '../database/init.js';
|
|
34
35
|
/**
|
|
@@ -122,27 +123,57 @@ const INSERT_OR_IGNORE_SQL = `
|
|
|
122
123
|
(session_id, project, ts, kind, actor, payload, duration_ms, audit_id, content_hash)
|
|
123
124
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
124
125
|
`;
|
|
126
|
+
/** 64 KB read chunks — small enough to bound peak memory on huge transcripts, big enough to keep syscall overhead negligible. */
|
|
127
|
+
const READ_CHUNK_BYTES = 64 * 1024;
|
|
125
128
|
/**
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
|
|
129
|
+
* Flush rows to disk in transaction batches of this size. The full file is
|
|
130
|
+
* NOT held in memory; instead we keep at most one chunk-worth of parsed
|
|
131
|
+
* rows pending. Mid-file failure leaves earlier chunks committed, which is
|
|
132
|
+
* fine because `INSERT OR IGNORE` makes a re-run idempotent.
|
|
133
|
+
*/
|
|
134
|
+
const FLUSH_BATCH_ROWS = 2000;
|
|
135
|
+
/**
|
|
136
|
+
* Import one JSONL file. Streams the file in 64 KB chunks via `readSync`
|
|
137
|
+
* and a `StringDecoder` (which handles UTF-8 sequences that span chunk
|
|
138
|
+
* boundaries) so a 500 MB transcript archive doesn't load into a single
|
|
139
|
+
* string. Parsed rows flush to SQLite in {@link FLUSH_BATCH_ROWS}-sized
|
|
140
|
+
* transactional batches.
|
|
141
|
+
*
|
|
142
|
+
* Malformed lines do NOT throw — they're counted and skipped so a single
|
|
143
|
+
* bad row never blocks the rest of the file. Idempotent on re-import via
|
|
144
|
+
* the `INSERT OR IGNORE` + `idx_session_events_dedupe` UNIQUE index.
|
|
131
145
|
*/
|
|
132
146
|
export function importJsonlTranscript(path) {
|
|
133
147
|
if (!existsSync(path)) {
|
|
134
148
|
throw new Error(`JSONL transcript not found: ${path}`);
|
|
135
149
|
}
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
const
|
|
150
|
+
const db = getDatabase();
|
|
151
|
+
const stmt = db.prepare(INSERT_OR_IGNORE_SQL);
|
|
152
|
+
const countStmt = db.prepare('SELECT COUNT(*) AS c FROM session_events');
|
|
153
|
+
const flush = db.transaction((batch) => {
|
|
154
|
+
for (const row of batch) {
|
|
155
|
+
stmt.run(row.session_id, row.project ?? null, row.ts, row.kind, row.actor ?? null, typeof row.payload === 'string' ? row.payload : JSON.stringify(row.payload ?? null), row.duration_ms ?? null, row.audit_id ?? null, row.content_hash);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
139
158
|
let sessionId = null;
|
|
159
|
+
let eventCount = 0;
|
|
140
160
|
let skipped = 0;
|
|
141
161
|
let malformed = 0;
|
|
142
|
-
|
|
143
|
-
|
|
162
|
+
let inserted = 0;
|
|
163
|
+
const pending = [];
|
|
164
|
+
const drain = () => {
|
|
165
|
+
if (pending.length === 0)
|
|
166
|
+
return;
|
|
167
|
+
const before = countStmt.get().c;
|
|
168
|
+
flush(pending);
|
|
169
|
+
const after = countStmt.get().c;
|
|
170
|
+
inserted += after - before;
|
|
171
|
+
pending.length = 0;
|
|
172
|
+
};
|
|
173
|
+
const processLine = (line) => {
|
|
174
|
+
const trimmed = line.trim();
|
|
144
175
|
if (trimmed.length === 0)
|
|
145
|
-
|
|
176
|
+
return; // blank — not counted as skipped
|
|
146
177
|
let parsed;
|
|
147
178
|
try {
|
|
148
179
|
parsed = JSON.parse(trimmed);
|
|
@@ -150,44 +181,67 @@ export function importJsonlTranscript(path) {
|
|
|
150
181
|
catch {
|
|
151
182
|
malformed++;
|
|
152
183
|
skipped++;
|
|
153
|
-
|
|
184
|
+
return;
|
|
154
185
|
}
|
|
155
186
|
const events = parseTranscriptLine(parsed);
|
|
156
187
|
if (events.length === 0) {
|
|
157
188
|
skipped++;
|
|
158
|
-
|
|
189
|
+
return;
|
|
159
190
|
}
|
|
160
191
|
if (sessionId === null && events[0]?.session_id) {
|
|
161
192
|
sessionId = events[0].session_id;
|
|
162
193
|
}
|
|
163
194
|
for (const event of events) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
195
|
+
pending.push({ ...event, content_hash: hashEvent(event.kind, event.payload) });
|
|
196
|
+
eventCount++;
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
const fd = openSync(path, 'r');
|
|
200
|
+
try {
|
|
201
|
+
const buf = Buffer.alloc(READ_CHUNK_BYTES);
|
|
202
|
+
const decoder = new StringDecoder('utf8');
|
|
203
|
+
let leftover = '';
|
|
204
|
+
let position = 0;
|
|
205
|
+
while (true) {
|
|
206
|
+
const bytesRead = readSync(fd, buf, 0, READ_CHUNK_BYTES, position);
|
|
207
|
+
if (bytesRead === 0)
|
|
208
|
+
break;
|
|
209
|
+
position += bytesRead;
|
|
210
|
+
// StringDecoder buffers partial UTF-8 sequences across chunk boundaries.
|
|
211
|
+
const text = leftover + decoder.write(buf.subarray(0, bytesRead));
|
|
212
|
+
const lastNewline = text.lastIndexOf('\n');
|
|
213
|
+
if (lastNewline === -1) {
|
|
214
|
+
leftover = text;
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
const complete = text.slice(0, lastNewline);
|
|
218
|
+
leftover = text.slice(lastNewline + 1);
|
|
219
|
+
for (const rawLine of complete.split('\n')) {
|
|
220
|
+
processLine(rawLine.endsWith('\r') ? rawLine.slice(0, -1) : rawLine);
|
|
221
|
+
}
|
|
222
|
+
if (pending.length >= FLUSH_BATCH_ROWS)
|
|
223
|
+
drain();
|
|
224
|
+
}
|
|
225
|
+
// Anything decoder still has buffered (impossible for valid UTF-8, but
|
|
226
|
+
// handle the malformed-bytes-at-EOF case gracefully).
|
|
227
|
+
const tail = leftover + decoder.end();
|
|
228
|
+
if (tail.length > 0) {
|
|
229
|
+
for (const rawLine of tail.split('\n')) {
|
|
230
|
+
processLine(rawLine.endsWith('\r') ? rawLine.slice(0, -1) : rawLine);
|
|
231
|
+
}
|
|
168
232
|
}
|
|
169
233
|
}
|
|
170
|
-
|
|
171
|
-
|
|
234
|
+
finally {
|
|
235
|
+
closeSync(fd);
|
|
172
236
|
}
|
|
173
|
-
|
|
174
|
-
const stmt = db.prepare(INSERT_OR_IGNORE_SQL);
|
|
175
|
-
const before = db.prepare('SELECT COUNT(*) AS c FROM session_events').get().c;
|
|
176
|
-
const tx = db.transaction((batch) => {
|
|
177
|
-
for (const row of batch) {
|
|
178
|
-
stmt.run(row.session_id, row.project ?? null, row.ts, row.kind, row.actor ?? null, typeof row.payload === 'string' ? row.payload : JSON.stringify(row.payload ?? null), row.duration_ms ?? null, row.audit_id ?? null, row.content_hash);
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
tx(rows);
|
|
182
|
-
const after = db.prepare('SELECT COUNT(*) AS c FROM session_events').get().c;
|
|
183
|
-
const inserted = after - before;
|
|
237
|
+
drain();
|
|
184
238
|
// `eventCount` reflects the total events parsed from this file regardless
|
|
185
|
-
// of whether the dedupe index dropped them.
|
|
186
|
-
//
|
|
239
|
+
// of whether the dedupe index dropped them. Duplicates surface in `skipped`
|
|
240
|
+
// so callers see one consistent "anything not inserted" tally.
|
|
187
241
|
return {
|
|
188
242
|
sessionId,
|
|
189
|
-
eventCount
|
|
190
|
-
skipped: skipped + (
|
|
243
|
+
eventCount,
|
|
244
|
+
skipped: skipped + (eventCount - inserted),
|
|
191
245
|
malformed,
|
|
192
246
|
};
|
|
193
247
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shieldcortex",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.18.1",
|
|
4
4
|
"description": "Trustworthy memory and security for AI agents. Recall debugging, review queue, OpenClaw session capture, and memory poisoning defence for Claude Code, Codex, OpenClaw, LangChain, and MCP agents.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "shieldcortex-realtime",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.18.1",
|
|
4
4
|
"name": "ShieldCortex Real-time Scanner",
|
|
5
5
|
"description": "Real-time defence scanning on LLM input, memory extraction on LLM output, and active tool call interception with approval gating.",
|
|
6
6
|
"kind": null,
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},14865,(a,b,c)=>{"use strict";b.exports=a.r(18622)},16306,(a,b,c)=>{"use strict";b.exports=a.r(14865).vendored["react-ssr"].ReactJsxRuntime},98419,(a,b,c)=>{"use strict";b.exports=a.r(14865).vendored["react-ssr"].React},17878,a=>{"use strict";var b=a.i(16306),c=a.i(15896),d=a.i(30112),e=a.i(98416),f=a.i(16347),g=class extends f.Subscribable{constructor(a={}){super(),this.config=a,this.#a=new Map}#a;build(a,b,e){let f=b.queryKey,g=b.queryHash??(0,c.hashQueryKeyByOptions)(f,b),h=this.get(g);return h||(h=new d.Query({client:a,queryKey:f,queryHash:g,options:a.defaultQueryOptions(b),state:e,defaultOptions:a.getQueryDefaults(f)}),this.add(h)),h}add(a){this.#a.has(a.queryHash)||(this.#a.set(a.queryHash,a),this.notify({type:"added",query:a}))}remove(a){let b=this.#a.get(a.queryHash);b&&(a.destroy(),b===a&&this.#a.delete(a.queryHash),this.notify({type:"removed",query:a}))}clear(){e.notifyManager.batch(()=>{this.getAll().forEach(a=>{this.remove(a)})})}get(a){return this.#a.get(a)}getAll(){return[...this.#a.values()]}find(a){let b={exact:!0,...a};return this.getAll().find(a=>(0,c.matchQuery)(b,a))}findAll(a={}){let b=this.getAll();return Object.keys(a).length>0?b.filter(b=>(0,c.matchQuery)(a,b)):b}notify(a){e.notifyManager.batch(()=>{this.listeners.forEach(b=>{b(a)})})}onFocus(){e.notifyManager.batch(()=>{this.getAll().forEach(a=>{a.onFocus()})})}onOnline(){e.notifyManager.batch(()=>{this.getAll().forEach(a=>{a.onOnline()})})}},h=a.i(46674),i=f,j=class extends i.Subscribable{constructor(a={}){super(),this.config=a,this.#b=new Set,this.#c=new Map,this.#d=0}#b;#c;#d;build(a,b,c){let d=new h.Mutation({client:a,mutationCache:this,mutationId:++this.#d,options:a.defaultMutationOptions(b),state:c});return this.add(d),d}add(a){this.#b.add(a);let b=k(a);if("string"==typeof b){let c=this.#c.get(b);c?c.push(a):this.#c.set(b,[a])}this.notify({type:"added",mutation:a})}remove(a){if(this.#b.delete(a)){let b=k(a);if("string"==typeof b){let c=this.#c.get(b);if(c)if(c.length>1){let b=c.indexOf(a);-1!==b&&c.splice(b,1)}else c[0]===a&&this.#c.delete(b)}}this.notify({type:"removed",mutation:a})}canRun(a){let b=k(a);if("string"!=typeof b)return!0;{let c=this.#c.get(b),d=c?.find(a=>"pending"===a.state.status);return!d||d===a}}runNext(a){let b=k(a);if("string"!=typeof b)return Promise.resolve();{let c=this.#c.get(b)?.find(b=>b!==a&&b.state.isPaused);return c?.continue()??Promise.resolve()}}clear(){e.notifyManager.batch(()=>{this.#b.forEach(a=>{this.notify({type:"removed",mutation:a})}),this.#b.clear(),this.#c.clear()})}getAll(){return Array.from(this.#b)}find(a){let b={exact:!0,...a};return this.getAll().find(a=>(0,c.matchMutation)(b,a))}findAll(a={}){return this.getAll().filter(b=>(0,c.matchMutation)(a,b))}notify(a){e.notifyManager.batch(()=>{this.listeners.forEach(b=>{b(a)})})}resumePausedMutations(){let a=this.getAll().filter(a=>a.state.isPaused);return e.notifyManager.batch(()=>Promise.all(a.map(a=>a.continue().catch(c.noop))))}};function k(a){return a.options.scope?.id}var l=a.i(7903),m=a.i(59643);function n(a){return{onFetch:(b,d)=>{let e=b.options,f=b.fetchOptions?.meta?.fetchMore?.direction,g=b.state.data?.pages||[],h=b.state.data?.pageParams||[],i={pages:[],pageParams:[]},j=0,k=async()=>{let d=!1,k=(0,c.ensureQueryFn)(b.options,b.fetchOptions),l=async(a,e,f)=>{let g;if(d)return Promise.reject();if(null==e&&a.pages.length)return Promise.resolve(a);let h=(g={client:b.client,queryKey:b.queryKey,pageParam:e,direction:f?"backward":"forward",meta:b.options.meta},(0,c.addConsumeAwareSignal)(g,()=>b.signal,()=>d=!0),g),i=await k(h),{maxPages:j}=b.options,l=f?c.addToStart:c.addToEnd;return{pages:l(a.pages,i,j),pageParams:l(a.pageParams,e,j)}};if(f&&g.length){let a="backward"===f,b={pages:g,pageParams:h},c=(a?function(a,{pages:b,pageParams:c}){return b.length>0?a.getPreviousPageParam?.(b[0],b,c[0],c):void 0}:o)(e,b);i=await l(b,c,a)}else{let b=a??g.length;do{let a=0===j?h[0]??e.initialPageParam:o(e,i);if(j>0&&null==a)break;i=await l(i,a),j++}while(j<b)}return i};b.options.persister?b.fetchFn=()=>b.options.persister?.(k,{client:b.client,queryKey:b.queryKey,meta:b.options.meta,signal:b.signal},d):b.fetchFn=k}}}function o(a,{pages:b,pageParams:c}){let d=b.length-1;return b.length>0?a.getNextPageParam(b[d],b,c[d],c):void 0}var p=class{#e;#f;#g;#h;#i;#j;#k;#l;constructor(a={}){this.#e=a.queryCache||new g,this.#f=a.mutationCache||new j,this.#g=a.defaultOptions||{},this.#h=new Map,this.#i=new Map,this.#j=0}mount(){this.#j++,1===this.#j&&(this.#k=l.focusManager.subscribe(async a=>{a&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#l=m.onlineManager.subscribe(async a=>{a&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#j--,0===this.#j&&(this.#k?.(),this.#k=void 0,this.#l?.(),this.#l=void 0)}isFetching(a){return this.#e.findAll({...a,fetchStatus:"fetching"}).length}isMutating(a){return this.#f.findAll({...a,status:"pending"}).length}getQueryData(a){let b=this.defaultQueryOptions({queryKey:a});return this.#e.get(b.queryHash)?.state.data}ensureQueryData(a){let b=this.defaultQueryOptions(a),d=this.#e.build(this,b),e=d.state.data;return void 0===e?this.fetchQuery(a):(a.revalidateIfStale&&d.isStaleByTime((0,c.resolveStaleTime)(b.staleTime,d))&&this.prefetchQuery(b),Promise.resolve(e))}getQueriesData(a){return this.#e.findAll(a).map(({queryKey:a,state:b})=>[a,b.data])}setQueryData(a,b,d){let e=this.defaultQueryOptions({queryKey:a}),f=this.#e.get(e.queryHash),g=f?.state.data,h=(0,c.functionalUpdate)(b,g);if(void 0!==h)return this.#e.build(this,e).setData(h,{...d,manual:!0})}setQueriesData(a,b,c){return e.notifyManager.batch(()=>this.#e.findAll(a).map(({queryKey:a})=>[a,this.setQueryData(a,b,c)]))}getQueryState(a){let b=this.defaultQueryOptions({queryKey:a});return this.#e.get(b.queryHash)?.state}removeQueries(a){let b=this.#e;e.notifyManager.batch(()=>{b.findAll(a).forEach(a=>{b.remove(a)})})}resetQueries(a,b){let c=this.#e;return e.notifyManager.batch(()=>(c.findAll(a).forEach(a=>{a.reset()}),this.refetchQueries({type:"active",...a},b)))}cancelQueries(a,b={}){let d={revert:!0,...b};return Promise.all(e.notifyManager.batch(()=>this.#e.findAll(a).map(a=>a.cancel(d)))).then(c.noop).catch(c.noop)}invalidateQueries(a,b={}){return e.notifyManager.batch(()=>(this.#e.findAll(a).forEach(a=>{a.invalidate()}),a?.refetchType==="none")?Promise.resolve():this.refetchQueries({...a,type:a?.refetchType??a?.type??"active"},b))}refetchQueries(a,b={}){let d={...b,cancelRefetch:b.cancelRefetch??!0};return Promise.all(e.notifyManager.batch(()=>this.#e.findAll(a).filter(a=>!a.isDisabled()&&!a.isStatic()).map(a=>{let b=a.fetch(void 0,d);return d.throwOnError||(b=b.catch(c.noop)),"paused"===a.state.fetchStatus?Promise.resolve():b}))).then(c.noop)}fetchQuery(a){let b=this.defaultQueryOptions(a);void 0===b.retry&&(b.retry=!1);let d=this.#e.build(this,b);return d.isStaleByTime((0,c.resolveStaleTime)(b.staleTime,d))?d.fetch(b):Promise.resolve(d.state.data)}prefetchQuery(a){return this.fetchQuery(a).then(c.noop).catch(c.noop)}fetchInfiniteQuery(a){return a.behavior=n(a.pages),this.fetchQuery(a)}prefetchInfiniteQuery(a){return this.fetchInfiniteQuery(a).then(c.noop).catch(c.noop)}ensureInfiniteQueryData(a){return a.behavior=n(a.pages),this.ensureQueryData(a)}resumePausedMutations(){return m.onlineManager.isOnline()?this.#f.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#f}getDefaultOptions(){return this.#g}setDefaultOptions(a){this.#g=a}setQueryDefaults(a,b){this.#h.set((0,c.hashKey)(a),{queryKey:a,defaultOptions:b})}getQueryDefaults(a){let b=[...this.#h.values()],d={};return b.forEach(b=>{(0,c.partialMatchKey)(a,b.queryKey)&&Object.assign(d,b.defaultOptions)}),d}setMutationDefaults(a,b){this.#i.set((0,c.hashKey)(a),{mutationKey:a,defaultOptions:b})}getMutationDefaults(a){let b=[...this.#i.values()],d={};return b.forEach(b=>{(0,c.partialMatchKey)(a,b.mutationKey)&&Object.assign(d,b.defaultOptions)}),d}defaultQueryOptions(a){if(a._defaulted)return a;let b={...this.#g.queries,...this.getQueryDefaults(a.queryKey),...a,_defaulted:!0};return b.queryHash||(b.queryHash=(0,c.hashQueryKeyByOptions)(b.queryKey,b)),void 0===b.refetchOnReconnect&&(b.refetchOnReconnect="always"!==b.networkMode),void 0===b.throwOnError&&(b.throwOnError=!!b.suspense),!b.networkMode&&b.persister&&(b.networkMode="offlineFirst"),b.queryFn===c.skipToken&&(b.enabled=!1),b}defaultMutationOptions(a){return a?._defaulted?a:{...this.#g.mutations,...a?.mutationKey&&this.getMutationDefaults(a.mutationKey),...a,_defaulted:!0}}clear(){this.#e.clear(),this.#f.clear()}},q=a.i(14220),r=a.i(98419);function s({children:a}){let[c]=(0,r.useState)(()=>new p({defaultOptions:{queries:{staleTime:5e3,refetchOnWindowFocus:!1}}}));return(0,b.jsx)(q.QueryClientProvider,{client:c,children:a})}a.s(["Providers",()=>s],17878)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__521be65c._.js.map
|