watchbell 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/.next/BUILD_ID +1 -1
- package/server/.next/app-path-routes-manifest.json +1 -0
- package/server/.next/build-manifest.json +116 -105
- package/server/.next/prerender-manifest.json +3 -3
- package/server/.next/routes-manifest.json +6 -0
- package/server/.next/server/app/(console)/(private)/ai/agents/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/(private)/ai/models/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +15 -15
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/[...slug]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/[...slug]/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/[...slug]/page.js +55 -53
- package/server/.next/server/app/(console)/[...slug]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/[...slug]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/alerts/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/alerts/page.js +54 -52
- package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/apps/[id]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +23 -23
- package/server/.next/server/app/(console)/apps/[id]/page.js +54 -52
- package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/apps/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/apps/page.js +54 -52
- package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/backups/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/backups/page.js +54 -52
- package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/catalog/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/catalog/page.js +54 -52
- package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/connections/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +54 -54
- package/server/.next/server/app/(console)/connections/page.js +60 -58
- package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/d1/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/d1/page.js +54 -52
- package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/deployments/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/deployments/page.js +54 -52
- package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/dns/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/dns/page.js +54 -52
- package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/domains/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/domains/page.js +54 -52
- package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/events/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/events/page.js +54 -52
- package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/firebase/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +15 -15
- package/server/.next/server/app/(console)/firebase/page.js +55 -53
- package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/logs/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/logs/page.js +54 -52
- package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/manage/sections/page/app-paths-manifest.json +3 -0
- package/server/.next/server/app/(console)/manage/sections/page/build-manifest.json +22 -0
- package/server/.next/server/app/(console)/manage/sections/page/next-font-manifest.json +11 -0
- package/server/.next/server/app/(console)/manage/sections/page/react-loadable-manifest.json +1 -0
- package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +105 -0
- package/server/.next/server/app/(console)/manage/sections/page.js +104 -0
- package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -0
- package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +3 -0
- package/server/.next/server/app/(console)/neon/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +20 -20
- package/server/.next/server/app/(console)/neon/page.js +54 -52
- package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/overview/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +18 -18
- package/server/.next/server/app/(console)/overview/page.js +54 -52
- package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/repos/[id]/page.js +54 -52
- package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/repos/page.js +54 -52
- package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/settings/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/settings/page.js +54 -52
- package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/sql/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/sql/page.js +54 -52
- package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/status/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/status/page.js +54 -52
- package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/supabase/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +29 -29
- package/server/.next/server/app/(console)/supabase/page.js +54 -52
- package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/topology/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/topology/page.js +54 -52
- package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/turso/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/turso/page.js +54 -52
- package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/upstash/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/upstash/page.js +54 -52
- package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/uptime/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/uptime/page.js +54 -52
- package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/welcome/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/welcome/page.js +55 -53
- package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_global-error.html +1 -1
- package/server/.next/server/app/_global-error.rsc +3 -3
- package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
- package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_not-found.html +1 -1
- package/server/.next/server/app/_not-found.rsc +4 -4
- package/server/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/account/password/page/build-manifest.json +3 -3
- package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/account/password/page.js.nft.json +1 -1
- package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/collect/route.js +74 -71
- package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
- package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/daily/route.js +66 -63
- package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
- package/server/.next/server/app/api/health/route.js.nft.json +1 -1
- package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/status/route.js.nft.json +1 -1
- package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/telegram/webhook/route.js +71 -68
- package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/[[...rest]]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/advice/route.js +4 -4
- package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/chat/completions/route.js +2 -2
- package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/models/route.js +2 -2
- package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/questions/[id]/route.js +1 -1
- package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/questions/route.js +5 -5
- package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/mcp/route.js +5 -5
- package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/me/route.js +1 -1
- package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/openapi.json/route.js +1 -1
- package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/status/apps/[app]/route.js +4 -4
- package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/status/route.js +4 -4
- package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
- package/server/.next/server/app/api/watchdog/route.js +19 -18
- package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
- package/server/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/server/.next/server/app/invite/page/build-manifest.json +3 -3
- package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/invite/page.js.nft.json +1 -1
- package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/mfa/page/build-manifest.json +3 -3
- package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/mfa/page.js.nft.json +1 -1
- package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/mfa/setup/page/build-manifest.json +3 -3
- package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
- package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
- package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/page/build-manifest.json +3 -3
- package/server/.next/server/app/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/page.js.nft.json +1 -1
- package/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
- package/server/.next/server/app/s/[slug]/page/build-manifest.json +3 -3
- package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
- package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/setup/page/build-manifest.json +3 -3
- package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/setup/page.js.nft.json +1 -1
- package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/signin/page/build-manifest.json +3 -3
- package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
- package/server/.next/server/app/signin/page.js.nft.json +1 -1
- package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app-paths-manifest.json +1 -0
- package/server/.next/server/chunks/{[externals]__0fbnlnnial7w5._.js → [externals]__0qo8lpb70m87u._.js} +1 -1
- package/server/.next/server/chunks/{[externals]__1e0dmqhilgze5._.js → [externals]__100hq0n2xtenb._.js} +1 -1
- package/server/.next/server/chunks/{[externals]__1jhautmcwmgii._.js → [externals]__1irgb5qz1s3gv._.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__049ykc067tlsv._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__04q-9779vl4kn._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__04rnior8cyxtx._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0hju4mctdmvz9._.js → [root-of-the-server]__06ek056i_j_uk._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__06f9e4kpi0mw8._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__06jphm4auz_sh._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0rak0ce6prxwp._.js → [root-of-the-server]__06r-019fixp3f._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1-q6_msattgcu._.js → [root-of-the-server]__07uknh5b-embq._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0vctt_0kj1gz4._.js → [root-of-the-server]__07v5e0vzgl4n2._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__14zpwd7xntffk._.js → [root-of-the-server]__08fyoixg__c7n._.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0_rfeg3389imx._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0b2hzo6nez0we._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0b9tciqdsctau._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__15tt645jfx-br._.js → [root-of-the-server]__0b_4w-5x5u7ag._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1-37ctpn8yw_m._.js → [root-of-the-server]__0bnasoi-x21jc._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__08i_or_xyqg4g._.js → [root-of-the-server]__0d8ypilha-el8._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0f5l9--3_wjvx._.js → [root-of-the-server]__0flqwe7amc3mz._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__11kfkk5yxz4ge._.js → [root-of-the-server]__0fw19tsgp-vbq._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1_l4gp3r2d-7x._.js → [root-of-the-server]__0fw7l5y58_xcd._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0j68ia9q425ff._.js → [root-of-the-server]__0g1tldn4xjewd._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__03pc2mot62sow._.js → [root-of-the-server]__0h1qhdjpfq1d4._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0hpdrg-m0n6ty._.js → [root-of-the-server]__0h4n81_nqdr4j._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0i3n8l6ecdb4u._.js → [root-of-the-server]__0hty-wue10pro._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0jqgfbhrgi28s._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0m7i0l3nkbdfm._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0mwiq4mkf8pc5._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0mui3wh3lfb6m._.js → [root-of-the-server]__0npmbdrxybln5._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__010exlr_efe2h._.js → [root-of-the-server]__0nqw6z6fp8wad._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0_iz9zh9e_mov._.js → [root-of-the-server]__0olmk-rbbhxlo._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0nsie5dba69e6._.js → [root-of-the-server]__0owyb9lr5t5u-._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0p3lnkpxf2-xz._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0v1kcolrxwmob._.js → [root-of-the-server]__0si9k9jhdc0bm._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0ul6-jnt2oco7._.js → [root-of-the-server]__0t8d8b4qkw3y-._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0i1de88cj5y-p._.js → [root-of-the-server]__0tl5pxttllr4d._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0m7_0rarf_x86._.js → [root-of-the-server]__0uyh4jgcd9092._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0v4-g6c-ls39_._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0vgnlhvdoh3bn._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__15j_u2bz3jc-a._.js → [root-of-the-server]__0wy38l7k36j6g._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0j53mir12jire._.js → [root-of-the-server]__0xiz361p5kdhf._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0ogbwvwpnlx0b._.js → [root-of-the-server]__0z-07azr3zk8s._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0x0x6v75re5_e._.js → [root-of-the-server]__0zxyfd7u67hmv._.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__10c7apgidgs6x._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__1czhdqbxj_3ov._.js → [root-of-the-server]__10x3lu8jeqgbt._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0gs-x779qi1ba._.js → [root-of-the-server]__11-van59e9p2a._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__110c-t3wz3nzm._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__116b4n13dv75t._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__11k46kam6tbia._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__11tte6au1b-z-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__127dbd1prkw0n._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__12uj0887q1ayr._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__13_b24n_f4my4._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__13h--47xmg706._.js +5 -0
- package/server/.next/server/chunks/{[root-of-the-server]__1rf3slum5swk2._.js → [root-of-the-server]__145gadwk31inl._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0qesn8t6k9y_n._.js → [root-of-the-server]__14luo1ecxoqh-._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__15ddlx_ma_1iu._.js → [root-of-the-server]__162cm9ds1c5y2._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__19kwj690b37xf._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__19vsae2naddj5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1_l065umy451k._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1_ow7lgy0u7st._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0292lwnmh4wtc._.js → [root-of-the-server]__1aza-7l2pl-pm._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1bsyavebtmd7w._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1cju843cjyf1t._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__1flvcyht5uk7h._.js → [root-of-the-server]__1cla4k3dqtcfb._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1fnsa-f0t7bxj._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1g1176fer3j4e._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1hqy35gww7ps2._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1i92wg2yuvs4c._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__03e141znq0hr-._.js → [root-of-the-server]__1iv6vg3z9ho81._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1jh0el-zvg4hp._.js → [root-of-the-server]__1j3-sv7eqyhjb._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1j3w0-cp17tx4._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0alnp_0qkhzze._.js → [root-of-the-server]__1j_iy13gp2-on._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1kg91b3sadtoc._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1kjndfodqqamq._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1mami4vb3y5gd._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1mse65-7gtj-n._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1objhlwwrjfjk._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__1pscg7y0et34j._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1rw0i4x2ake3x._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1t9zp524wouer._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1v-789ydxj30e._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1vi0u2vkv3tk0._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1hw6s0e7p2-6g._.js → [root-of-the-server]__1w3svzao_gnxp._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1x7ucdyxuh2_k._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__08l1x_plf4dil._.js → [root-of-the-server]__1xdi98xyay6bn._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1qzor1nqajuyp._.js → [root-of-the-server]__20_1nfa6fiz-q._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__20b_clyk74g5u._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__20ev6t8zggct2._.js +3 -0
- package/server/.next/server/chunks/_004c7-39glldb._.js +4 -4
- package/server/.next/server/chunks/_008zv66xvj7ey._.js +37 -0
- package/server/.next/server/chunks/{_12uzjq-fbcuvb._.js → _01s3_8ssosvqi._.js} +1 -1
- package/server/.next/server/chunks/_03qlijpos6a21._.js +3 -0
- package/server/.next/server/chunks/_09l75j3ey14tc._.js +1 -1
- package/server/.next/server/chunks/_0a7533vs89s78._.js +7 -0
- package/server/.next/server/chunks/_0ejcrge5k4quv._.js +1 -1
- package/server/.next/server/chunks/_0k4iqzwm6w5_c._.js +37 -0
- package/server/.next/server/chunks/_0kmhvts35imzs._.js +1 -1
- package/server/.next/server/chunks/_0m1ll2r1g77ii._.js +1 -1
- package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
- package/server/.next/server/chunks/_0nt4hve0bi30h._.js +37 -0
- package/server/.next/server/chunks/_0op74d4yyc3ma._.js +1 -1
- package/server/.next/server/chunks/_0pf2g5n_ko5dq._.js +3 -0
- package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +1 -1
- package/server/.next/server/chunks/_0qr77omrkuewo._.js +3 -0
- package/server/.next/server/chunks/_0rjh9w2ih3j2h._.js +3 -0
- package/server/.next/server/chunks/_0sy878k2ywjbq._.js +3 -0
- package/server/.next/server/chunks/_0tz4o-qufnu3l._.js +4 -4
- package/server/.next/server/chunks/_0voowig3y32v1._.js +1 -1
- package/server/.next/server/chunks/_0wxm_716tjorj._.js +3 -0
- package/server/.next/server/chunks/_0xf7mtsrkgc9e._.js +1 -1
- package/server/.next/server/chunks/_0zkmkbrbc96-h._.js +3 -0
- package/server/.next/server/chunks/_1-pw7jw52sbti._.js +3 -0
- package/server/.next/server/chunks/_10vh_l3hht4_3._.js +4 -4
- package/server/.next/server/chunks/_14ymj3uzawde4._.js +7 -0
- package/server/.next/server/chunks/_15g-opioju_ju._.js +3 -0
- package/server/.next/server/chunks/_17aiz6zt-yv52._.js +1 -1
- package/server/.next/server/chunks/_1_son1yzo5xvl._.js +3 -0
- package/server/.next/server/chunks/_1b7pc6ohhqxs3._.js +1 -1
- package/server/.next/server/chunks/_1g_prqb_u33e3._.js +1 -1
- package/server/.next/server/chunks/_1i7qkrp3fnx1a._.js +37 -0
- package/server/.next/server/chunks/_1luzeov9x87mg._.js +7 -0
- package/server/.next/server/chunks/{_1jz6k3wy_s8br._.js → _1p0ced3sr0i_8._.js} +1 -1
- package/server/.next/server/chunks/_1v7q0xdxbqawm._.js +1 -1
- package/server/.next/server/chunks/_1zx_54or1pubb._.js +1 -1
- package/server/.next/server/chunks/node_modules_next_dist_1i-_xribpwttd._.js +313 -0
- package/server/.next/server/chunks/src_01jp2f5qmh8e2._.js +3 -0
- package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
- package/server/.next/server/chunks/src_088gmyaew7ds0._.js +3 -0
- package/server/.next/server/chunks/{src_08bzavsfds295._.js → src_0kwnhwi77unm7._.js} +2 -2
- package/server/.next/server/chunks/src_0xqorb3-ef3ub._.js +1 -1
- package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +3 -0
- package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +1 -1
- package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
- package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +3 -0
- package/server/.next/server/chunks/{src_03umyw-p7jhaj._.js → src_1dsh9rzlos6-1._.js} +2 -2
- package/server/.next/server/chunks/src_1hy7u0jtydq_d._.js +3 -0
- package/server/.next/server/chunks/src_1j2o14j0-23xv._.js +3 -0
- package/server/.next/server/chunks/src_1j71dvub05y-4._.js +3 -0
- package/server/.next/server/chunks/{src_0k78ifotuztod._.js → src_1no_yh953mran._.js} +2 -2
- package/server/.next/server/chunks/src_1s7yll47_n_hy._.js +3 -0
- package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +3 -3
- package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +3 -0
- package/server/.next/server/chunks/src_1wzm081p6qyre._.js +3 -3
- package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
- package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
- package/server/.next/server/chunks/src_lib_0oz4gm8agoidh._.js +6 -0
- package/server/.next/server/chunks/src_lib_0s_txig7jm3ty._.js +3 -3
- package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +15 -0
- package/server/.next/server/chunks/src_lib_0y-obfzqjj0c6._.js +6 -0
- package/server/.next/server/chunks/src_lib_10_w0ihgmx4e6._.js +6 -0
- package/server/.next/server/chunks/src_lib_15wd7ab4u5nrn._.js +3 -3
- package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +15 -0
- package/server/.next/server/chunks/{src_lib_0vl2-zp4wzw7n._.js → src_lib_1p21oczr6lh5a._.js} +1 -1
- package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +15 -0
- package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
- package/server/.next/server/chunks/src_lib_1yewk45thnv1h._.js +1 -1
- package/server/.next/server/chunks/src_lib_1z73euz6d3tus._.js +6 -0
- package/server/.next/server/chunks/src_lib_collector_auth_ts_0lqx92__e4zij._.js +4 -4
- package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +6 -6
- package/server/.next/server/chunks/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
- package/server/.next/server/chunks/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +6 -0
- package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +1 -1
- package/server/.next/server/chunks/src_lib_providers_info_ts_02x6g30rg2hsp._.js +3 -0
- package/server/.next/server/chunks/src_lib_view_databases_ts_0fdc7jkjvyrxi._.js +3 -0
- package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
- package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +1 -1
- package/server/.next/server/chunks/ssr/{[externals]__0vbbz7arebnub._.js → [externals]__0zvy4iicnrk95._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02qyxz9eh8_eh._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04ovk2bqwu87z._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__13rgl1h4g39l-._.js → [root-of-the-server]__052_cprs0alpy._.js} +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__18b1wk6-2gq4x._.js → [root-of-the-server]__0543ddliluvv3._.js} +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__168ahi_n-kf90._.js → [root-of-the-server]__08479d23kb1xv._.js} +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1drr27jyyhw7p._.js → [root-of-the-server]__08fqg76puqdfr._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09-0oydof-7uw._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09nm_hn1c8zhf._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__07n1hb3mk44lt._.js → [root-of-the-server]__0acmauri7z1sg._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ct71emqfru3b._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ryl_hnreck66._.js → [root-of-the-server]__0e9m8up0h1qhl._.js} +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1xa91qls2i3j4._.js → [root-of-the-server]__0h9gtpapca7i_._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0hln97a4qcziv._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ksvf4x4zcbpb._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0lc7my3iqbrsu._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0n7cj-oti5wct._.js +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ncef7_34ta3-._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1-o_iq-ed9vc8._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__10bkg3o65q6r4._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__12qymdfh83hht._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__13oi70jo-u731._.js +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__146kj3-h6fkaq._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0hbk3gqja86zp._.js → [root-of-the-server]__15n-r12rnj61t._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__16o4p3l21rdq3._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__17kocbnwlcw6d._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__19_nr6j2w-in_._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1gw6334w8y2my._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1i69oli51is1u._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__11y6b96ofb-c5._.js → [root-of-the-server]__1k1fmq0-rg3p0._.js} +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1lx2k37wgre3d._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1n1pq5j5p4_qn._.js → [root-of-the-server]__1owrn7crnsybx._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1w1472ukyh58r._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__20ht054m5-_d6._.js +1 -1
- package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +2 -2
- package/server/.next/server/chunks/ssr/_026w_ig6vy9bt._.js +1 -1
- package/server/.next/server/chunks/ssr/{_1wu_8nu5allm0._.js → _05kq3r87s7p3q._.js} +1 -1
- package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +2 -2
- package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_rtyc4t9xcdo._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_tr9fol2yq33._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_ul4mlc_pj5i._.js +2 -2
- package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
- package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
- package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
- package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
- package/server/.next/server/chunks/ssr/_0fnl7z-saj7nc._.js +1 -1
- package/server/.next/server/chunks/ssr/_0hykblvnwc2ar._.js +1 -1
- package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +2 -2
- package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +2 -2
- package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +2 -2
- package/server/.next/server/chunks/ssr/_0m1ll2r1g77ii._.js +1 -1
- package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +2 -2
- package/server/.next/server/chunks/ssr/{_08u2qnetu4ghm._.js → _0ooh0hh-r_12s._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
- package/server/.next/server/chunks/ssr/{_06sp8cllu_ljh._.js → _0pn3dn9s9es51._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0qnv1uc1_yv28._.js +2 -2
- package/server/.next/server/chunks/ssr/_0qo8tc43kjsf_._.js +1 -1
- package/server/.next/server/chunks/ssr/{_12348a3ug1-wo._.js → _0r04c1-snv6jw._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +1 -1
- package/server/.next/server/chunks/ssr/_0tcmsw8hszixv._.js +1 -1
- package/server/.next/server/chunks/ssr/{_216rrmkts392q._.js → _0tnfblwwlyvq2._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +2 -2
- package/server/.next/server/chunks/ssr/{_1exwj9ou5yh71._.js → _0x1vi7mal3bqd._.js} +2 -2
- package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
- package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
- package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +2 -2
- package/server/.next/server/chunks/ssr/{_1ibagew7zj8y6._.js → _11w5w9dpxcf1w._.js} +2 -2
- package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +2 -2
- package/server/.next/server/chunks/ssr/{_1p4i1e1kw70-_._.js → _14kop_5asppd8._.js} +2 -2
- package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +2 -2
- package/server/.next/server/chunks/ssr/_16t9k9e5cjvas._.js +1 -1
- package/server/.next/server/chunks/ssr/_18lgd6o04ugow._.js +2 -2
- package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
- package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
- package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +2 -2
- package/server/.next/server/chunks/ssr/_1b4uqc9fwt4dy._.js +1 -1
- package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +2 -2
- package/server/.next/server/chunks/ssr/_1c28jitsyufnt._.js +1 -1
- package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
- package/server/.next/server/chunks/ssr/_1dx207la592b7._.js +2 -2
- package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +2 -2
- package/server/.next/server/chunks/ssr/_1flla16o7o9ba._.js +1 -1
- package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
- package/server/.next/server/chunks/ssr/_1gl78598hz_ku._.js +1 -1
- package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +2 -2
- package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
- package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
- package/server/.next/server/chunks/ssr/_1nir32qtr99-r._.js +1 -1
- package/server/.next/server/chunks/ssr/_1sq12-1_02tzt._.js +2 -2
- package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +2 -2
- package/server/.next/server/chunks/ssr/_1ykxf4mi60jog._.js +2 -2
- package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
- package/server/.next/server/chunks/ssr/_1zr0t31h18f2p._.js +3 -0
- package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +2 -2
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1uaicj0j8stji.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_06a1fnrawxlh1.js +3 -0
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_215m-kkv06r4z.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_0ven9q46d3d7s.js +3 -0
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
- package/server/.next/server/chunks/ssr/node_modules_next_dist_0joxsz2q5dh6c._.js +2 -2
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pz49shx663y1.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1b0g9w0uow3x5.js +1 -1
- package/server/.next/server/chunks/ssr/src_00wh1gv_h2pjs._.js +1 -1
- package/server/.next/server/chunks/ssr/src_01jp2f5qmh8e2._.js +3 -0
- package/server/.next/server/chunks/ssr/src_025wo6h30c00a._.js +1 -1
- package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
- package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
- package/server/.next/server/chunks/ssr/src_09atx_ns_mlan._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0_kumjlw3o034._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0dl7jkqqm313f._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0f_ip1ke7i9r7._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0fdfz--89117z._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0ho313o5cu3-h._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0iefnjvaszvw_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0loe22pbn4cuu._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0nylfis4--x5j._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0ohsn5qzqqds_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0p0fk07bj9gpq._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0t6-d5hmzrbp1._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0usxo7vu7o2cj._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0widudneyf0oq._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0xau6d5z5e_md._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1-wu43p02yiel._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +1 -1
- package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
- package/server/.next/server/chunks/ssr/src_11iuy79j_finh._.js +3 -0
- package/server/.next/server/chunks/ssr/src_12x8sjp-qdw08._.js +1 -1
- package/server/.next/server/chunks/ssr/src_14aur12he3m2a._.js +1 -1
- package/server/.next/server/chunks/ssr/src_15aqc6akkqade._.js +1 -1
- package/server/.next/server/chunks/ssr/src_15zqi72ky6hi9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_19evuexp67uty._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1am4_ady64k2b._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1cbawr4iw5h-x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1ccrc8twenijg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1ctx1an_a3k7g._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1iyzhhf1u_gwo._.js +3 -0
- package/server/.next/server/chunks/ssr/{src_11_hakxhnybdd._.js → src_1ottjkdvhje3g._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1xsg-zd4lt_d4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1y0xvj1obxu7i._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1zpftf1xj-30l._.js +1 -1
- package/server/.next/server/chunks/ssr/src_20hs1ilkxmap0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1lhfs18es1mqc._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_loading_tsx_1qyzywm3br5h2._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_06n-9cjmbb-vu._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_loading_tsx_1niopfalguzs6._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_connect_loading_tsx_0q7g8dpf7-vgo._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_keys_04ypt31p11eq7._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_keys_loading_tsx_1hc7x_jx0xx0_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_0261l8yb2z9x1._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_loading_tsx_1dwhza0ud8asg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0hla-5y3iresx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_loading_tsx_1qtp-lo_o41cr._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_1o1z2qp3tik5x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_loading_tsx_02umaieh-00pu._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_0jamu-nm6x-dh._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_loading_tsx_0u2pi0tk7s3ch._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_1kor9sy67qpiw._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_loading_tsx_1hhnum-g2eq3n._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_1v003vrkwk19w._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_loading_tsx_0pjvu-xuxbxmh._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_app_(console)_1olpa0osy74mq._.js → src_app_(console)_1l7irblrb5fae._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_[___slug]_page_tsx_0b007i3c1v_vg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_page_tsx_0o082iagq_14b._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_catalog_page_tsx_1u2_-bv4yi5oo._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_02upf_c41dauw._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_d1_page_tsx_167hwnq_9uh81._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_0d1uyir4fe7pc._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_domains_1ut499n11u8_r._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_firebase_page_tsx_0g20hm13dvbc-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_17htk-vea5fna._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_neon_1ubea__gt06o0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_repos_[id]_page_tsx_1nkxthc4ethrj._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_16-sh45tpob8n._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_status_page_tsx_1zvj799nv4kah._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_uptime_148phfjye0539._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_welcome_page_tsx_1bw0x0riq-oem._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_app_signin_1y1xla7bcc5a1._.js → src_app_signin_1tg6pswa99jbe._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +1 -1
- package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
- package/server/.next/server/chunks/ssr/src_components_ui_dialog_tsx_1tn-i_6d3rhzt._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_lib_0vl2-zp4wzw7n._.js → src_lib_1p21oczr6lh5a._.js} +1 -1
- package/server/.next/server/chunks/ssr/src_lib_1yewk45thnv1h._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +3 -3
- package/server/.next/server/chunks/ssr/src_lib_copy_edition_ts_1y6lsdbj64t9p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_data_keep-active-db_ts_0p07g9b74uu3e._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
- package/server/.next/server/chunks/ssr/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +6 -0
- package/server/.next/server/chunks/ssr/{src_lib_demo_20zjotuzm1lm8._.js → src_lib_demo_0hdl7pzdqejqx._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_lib_providers_info_ts_02x6g30rg2hsp._.js +3 -0
- package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/middleware-build-manifest.js +116 -105
- package/server/.next/server/next-font-manifest.js +1 -1
- package/server/.next/server/next-font-manifest.json +4 -0
- package/server/.next/server/pages/404.html +1 -1
- package/server/.next/server/pages/500.html +1 -1
- package/server/.next/server/preview-props.json +3 -3
- package/server/.next/server/server-reference-manifest.js +1 -1
- package/server/.next/server/server-reference-manifest.json +212 -166
- package/server/.next/static/chunks/{3w445wy3mpp2f.js → 08dak2kh1c6_7.js} +1 -1
- package/server/.next/static/chunks/{2-8ra6gmaw_pb.js → 0b9slopuz4e8a.js} +1 -1
- package/server/.next/static/chunks/{3col9buetdxvh.js → 0dp-tuwkw7xf8.js} +2 -2
- package/server/.next/static/chunks/0fhj_pu5ntcfo.js +1 -0
- package/server/.next/static/chunks/{010bc8dzhxd_0.js → 0h9i512dn01kj.js} +1 -1
- package/server/.next/static/chunks/0ic6_-0gkd6p7.js +1 -0
- package/server/.next/static/chunks/{3s7hj7g12rmuh.js → 0icohez16w-ei.js} +1 -1
- package/server/.next/static/chunks/{08w0t5q93_9mu.js → 0j1wzqg4ukm70.js} +1 -1
- package/server/.next/static/chunks/{2cmw27buw9oce.js → 0kscmnb071fci.js} +1 -1
- package/server/.next/static/chunks/0ld78j1d4j201.js +1 -0
- package/server/.next/static/chunks/{1yb4_s_96v9tf.js → 0qlb-l1uyqku5.js} +1 -1
- package/server/.next/static/chunks/0udh0u8c6ovgf.css +3 -0
- package/server/.next/static/chunks/0y1ss0tjq0nq0.js +1 -0
- package/server/.next/static/chunks/{0dhgqjjm0zj6_.js → 1-oetq3mwlhds.js} +1 -1
- package/server/.next/static/chunks/{3uujo4bht1tqo.js → 11ywzwmfd_pt0.js} +1 -1
- package/server/.next/static/chunks/{1aoqsoecu-fy_.js → 1jaozq01v9r6e.js} +1 -1
- package/server/.next/static/chunks/1ky5exl-c1kbo.js +1 -0
- package/server/.next/static/chunks/{3o7se0ypyiqmz.js → 1lsu_fxiyaeiz.js} +1 -1
- package/server/.next/static/chunks/{1endj3d7bewa1.js → 1o3_amrh-sxr3.js} +1 -1
- package/server/.next/static/chunks/{1vi8tyc1ou2o3.js → 1w9o_jo_pejc5.js} +1 -1
- package/server/.next/static/chunks/{0nx0h-723nd_u.js → 1yvbs41m8_4nc.js} +2 -2
- package/server/.next/static/chunks/{0unx038_2rfsp.js → 22alexnun_rdm.js} +1 -1
- package/server/.next/static/chunks/{06lmwdlx-fkr8.js → 27qwmt1w6-iri.js} +1 -1
- package/server/.next/static/chunks/{02uvde7i-78p5.js → 29humkd2-_1oo.js} +1 -1
- package/server/.next/static/chunks/{0-7by9f00qb4d.js → 29j96yfhxsf41.js} +1 -1
- package/server/.next/static/chunks/{1483hxa9hair1.js → 29qnnsjsgsia6.js} +1 -1
- package/server/.next/static/chunks/{2pbnh717ldzfl.js → 2ii8j9xuvv604.js} +1 -1
- package/server/.next/static/chunks/{2ufr23d_eyosj.js → 2m0ftj__ody0m.js} +1 -1
- package/server/.next/static/chunks/{201zah03wlibg.js → 2q88116332v43.js} +1 -1
- package/server/.next/static/chunks/2rbtw3em5hkt4.js +1 -0
- package/server/.next/static/chunks/2sdyov_lz1uj4.js +1 -0
- package/server/.next/static/chunks/{1o4mdgq5lu1g_.js → 2toeyr9b_nk0e.js} +1 -1
- package/server/.next/static/chunks/{2zdjxqgm-44u1.js → 2w7qxt7ux-m1-.js} +1 -1
- package/server/.next/static/chunks/{18gwem_5y9wnt.js → 2zc1osymeruya.js} +1 -1
- package/server/.next/static/chunks/33fbppn5fotpk.js +1 -0
- package/server/.next/static/chunks/3auw1gobgv94g.js +1 -0
- package/server/.next/static/chunks/3b1p-xm7iow1_.js +1 -0
- package/server/.next/static/chunks/{2z6a725ntvlr6.js → 3gl2k6v182lli.js} +2 -2
- package/server/.next/static/chunks/{2lv5qmgi8nm4h.js → 3gurl_36kr7sg.js} +1 -1
- package/server/.next/static/chunks/{2n-h6_0i3mpxo.js → 3h-i_hcaaf7vs.js} +1 -1
- package/server/.next/static/chunks/{0dnjs3de2e_d1.js → 3kznplgmzot89.js} +1 -1
- package/server/.next/static/chunks/{0du6qnm4ee-qx.js → 3mb_v650fie_i.js} +1 -1
- package/server/.next/static/chunks/{1t2iu6ufyxecz.js → 3n_n6yeienmn-.js} +1 -1
- package/server/.next/static/chunks/{01oee9tptcjdb.js → 3nqciag05fif0.js} +1 -1
- package/server/.next/static/chunks/3r3mt51wqymgs.js +1 -0
- package/server/.next/static/chunks/3sg_npfod25zq.js +1 -0
- package/server/.next/static/chunks/{03fjh6klyhqv4.js → 3shbvizselyoq.js} +1 -1
- package/server/.next/static/chunks/3xxagngfonh62.js +1 -0
- package/server/.next/static/chunks/{3alfhqlczff2s.js → 3yv-enyk37whg.js} +1 -1
- package/server/node_modules/@next/env/package.json +1 -1
- package/server/node_modules/next/dist/build/analyze/snapshot.js +1 -1
- package/server/node_modules/next/dist/build/index.js +3 -3
- package/server/node_modules/next/dist/build/swc/index.js +1 -1
- package/server/node_modules/next/dist/build/turbopack-analyze/index.js +1 -1
- package/server/node_modules/next/dist/build/turbopack-build/impl.js +1 -1
- package/server/node_modules/next/dist/build/webpack-config.js +3 -3
- package/server/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +2 -2
- package/server/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +2 -2
- package/server/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +1 -1
- package/server/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/server/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
- package/server/node_modules/next/dist/server/config.js +1 -1
- package/server/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/server/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/server/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/server/node_modules/next/dist/server/lib/generate-agent-files.js +3 -3
- package/server/node_modules/next/dist/server/lib/router-server.js +1 -1
- package/server/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/server/node_modules/next/dist/server/lib/trace/tracer.js +1 -1
- package/server/node_modules/next/dist/server/typescript/rules/config.js +2 -2
- package/server/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -1
- package/server/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/server/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/server/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/server/node_modules/next/package.json +11 -11
- package/server/.next/server/chunks/[root-of-the-server]__03zcy67tjxii8._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__08j1jeemvo-th._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0abdjgj-muln9._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0b_bj-_t8b0b-._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0rxrv00e5e6fj._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0xyzhdj3z_1ro._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0zd61mh-juh2i._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__13scfgchwlitx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__15zbj_ehkvv-n._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__16dyxwm6pzumx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__16sp8qurcwsnf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__18qf1s7o0ia89._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1951xb3jdzdop._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1_1-jgxiadvs0._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1_2akhn6c9eqq._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1a9cd4d9ohf69._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1c2u-bg524-_w._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1c8_e0jqh_8na._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1g-be2zoiz2tf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1h96ebyza_vlh._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1hxhj2o7lea8i._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1i4bqqne6vibf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1i83m8i-3yn72._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1jrcnhad_b53j._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1ldcwvd42rpuz._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1pgtip37umn35._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1rl43iilsc-je._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1sj7uwyq1gpet._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1ta7-xvmtkjwr._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1voiad6r-u931._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1wlilsfzjqdw9._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1wonw7ft4hset._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__202r0hxhr5bnu._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__2196hxm-s7u6e._.js +0 -3
- package/server/.next/server/chunks/_01vdbh009dk-w._.js +0 -5
- package/server/.next/server/chunks/_061mqfu1rkl7g._.js +0 -34
- package/server/.next/server/chunks/_0c_vrxu6rin-k._.js +0 -3
- package/server/.next/server/chunks/_0qawxzcf--lyq._.js +0 -4
- package/server/.next/server/chunks/_0qrn1v02iivm8._.js +0 -3
- package/server/.next/server/chunks/_0s30ac32b7prb._.js +0 -3
- package/server/.next/server/chunks/_0vfrh5u-u4mis._.js +0 -3
- package/server/.next/server/chunks/_0vgojnnkcf1vu._.js +0 -4
- package/server/.next/server/chunks/_0vz0de4gz70-e._.js +0 -4
- package/server/.next/server/chunks/_1-mixh9aeqh7f._.js +0 -3
- package/server/.next/server/chunks/_1b63jfweu0o04._.js +0 -3
- package/server/.next/server/chunks/_1i57ar6zvd7yb._.js +0 -34
- package/server/.next/server/chunks/_1k2cwp1_wt6qm._.js +0 -3
- package/server/.next/server/chunks/_1kj2yv4-wk2kp._.js +0 -34
- package/server/.next/server/chunks/_1l82x0z8bo4pt._.js +0 -3
- package/server/.next/server/chunks/_1ozrnl_on86u7._.js +0 -34
- package/server/.next/server/chunks/_1xeuk6g48m3_1._.js +0 -3
- package/server/.next/server/chunks/src_0d5xqe2zx_935._.js +0 -3
- package/server/.next/server/chunks/src_0v4pdrc1yxyl8._.js +0 -3
- package/server/.next/server/chunks/src_0vva87j3z99p9._.js +0 -3
- package/server/.next/server/chunks/src_1zo6so07lgcdj._.js +0 -3
- package/server/.next/server/chunks/src_db_rows_ts_15b286wn1kn1e._.js +0 -3
- package/server/.next/server/chunks/src_lib_0485hz-c7h7dr._.js +0 -15
- package/server/.next/server/chunks/src_lib_0qcyomi01xvf1._.js +0 -15
- package/server/.next/server/chunks/src_lib_1d6edz_ucj01w._.js +0 -3
- package/server/.next/server/chunks/src_lib_1ryt-36ohhnm6._.js +0 -15
- package/server/.next/server/chunks/src_lib_1suc_xwzxtuej._.js +0 -3
- package/server/.next/server/chunks/src_lib_1uh73ofc-pe92._.js +0 -3
- package/server/.next/server/chunks/src_private_1yzfhupl3rlpx._.js +0 -6
- package/server/.next/server/chunks/ssr/[root-of-the-server]__004r8ubf3fp_i._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04a21b9fkrqs3._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0q36f5xjkzf4z._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0wf8q7-o-4n8y._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1e-xqsuqsd4ub._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__204_t7bzma353._.js +0 -3
- package/server/.next/server/chunks/ssr/_04e0uk5aqrgc3._.js +0 -3
- package/server/.next/server/chunks/ssr/_11o43qq2eyx_r._.js +0 -3
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_03amng1-xhfd1.js +0 -3
- package/server/.next/server/chunks/ssr/src_0qu78tivj78-x._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_0gm1y-wtw5gyd._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1qigx20w8bk53._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +0 -3
- package/server/.next/static/chunks/0anet8wttkax1.js +0 -1
- package/server/.next/static/chunks/0ao7kjrp6bp3l.js +0 -1
- package/server/.next/static/chunks/0b0rwd99q942r.js +0 -1
- package/server/.next/static/chunks/0dmi-v53phuqn.js +0 -1
- package/server/.next/static/chunks/0ilml-p3iktnr.js +0 -1
- package/server/.next/static/chunks/0y_0w1ek5fakj.js +0 -1
- package/server/.next/static/chunks/1fxuyn0k52n4v.css +0 -3
- package/server/.next/static/chunks/1k01h6men2hvb.js +0 -1
- package/server/.next/static/chunks/1mdaf7mwcfafr.js +0 -1
- package/server/.next/static/chunks/2mj8z5a9dz7bh.js +0 -1
- package/server/.next/static/chunks/2qltilq3pn4ia.js +0 -1
- package/server/.next/static/chunks/2wqgz94tksucm.js +0 -1
- package/server/.next/static/chunks/3ypdfkwyovory.js +0 -1
- /package/server/.next/static/{n3Kt7dFNHr9KDw7DgGz0m → 00CFAqN6pFBVkqJyXSd78}/_buildManifest.js +0 -0
- /package/server/.next/static/{n3Kt7dFNHr9KDw7DgGz0m → 00CFAqN6pFBVkqJyXSd78}/_clientMiddlewareManifest.js +0 -0
- /package/server/.next/static/{n3Kt7dFNHr9KDw7DgGz0m → 00CFAqN6pFBVkqJyXSd78}/_ssgManifest.js +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
module.exports=[34559,819645,e=>{"use strict";var t=e.i(666680);e.s(["f",0,function(e,a){if(!e||!a||!e.startsWith("Bearer "))return!1;let
|
|
1
|
+
module.exports=[34559,819645,e=>{"use strict";var t=e.i(666680);e.s(["f",0,function(e,a){if(!e||!a||!e.startsWith("Bearer "))return!1;let i=(0,t.createHash)("sha256").update(e.slice(7)).digest(),r=(0,t.createHash)("sha256").update(a).digest();return(0,t.timingSafeEqual)(i,r)}],34559);var a=e.i(518899),i=e.i(924924),r=e.i(473283),n=e.i(407602);async function s(){let e=await (0,i.f)().execute(a.B`
|
|
2
2
|
select pid, state, extract(epoch from now() - state_change)::int as idle_s,
|
|
3
3
|
coalesce(extract(epoch from now() - query_start)::int, 0) as run_s, left(query, 400) as query
|
|
4
|
-
from pg_stat_activity where usename = current_user and pid <> pg_backend_pid()`);return(0,
|
|
4
|
+
from pg_stat_activity where usename = current_user and pid <> pg_backend_pid()`);return(0,r.f)(e).map(e=>{var t;let a;return{pid:Number(e.pid),state:e.state,idleS:Number(e.idle_s),runS:Number(e.run_s),table:(t=e.query,(a=/(?:from|into|update|join)\s+"?ops"?\."?([a-z_]+)"?/i.exec(t??""))?a[1]:null)}})}async function o(e=10,t=10){let l=await s(),d=function(e,t=10,a=10){let i=function(e){let t=new Set,a=[];for(let i of e.filter(e=>"idle"===e.state&&e.table).sort((e,t)=>e.idleS-t.idleS))t.has(i.table)?i.idleS>=60&&a.push(i):t.add(i.table);return a}(e),r=e.filter(e=>!i.includes(e)),n=Math.max(0,r.length+1-t);return n?[...i,...[...r.filter(e=>"idle"===e.state&&e.idleS>=a).sort((e,t)=>t.idleS-e.idleS),...r.filter(e=>"idle"!==e.state&&e.runS>60).sort((e,t)=>t.runS-e.runS)].slice(0,n)]:i}(l,e,t),u=0;if(d.length){let e=d.map(e=>e.pid).filter(e=>Number.isInteger(e)&&e>0),t=await (0,i.f)().execute(a.B`select pg_terminate_backend(pid) as ok from unnest(array[${a.B.raw(e.join(","))}]::int[]) as pid`);u=(0,r.f)(t).filter(e=>e.ok).length}let c=function(e){let t=new Map;for(let a of e)t.set(a.table??"unknown",(t.get(a.table??"unknown")??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} \xd7${t}`)}(d);return u>0&&(console.info(`pool guard: ${l.length+1} connections, closed ${u} (${c.join(", ")})`),await (0,n.f)({kind:"ok",message:`Pool guard: closed ${u} of ${l.length+1} database connections`,detail:c.join(", ").slice(0,300),resourceId:null,actorUserId:null}).catch(()=>void 0)),{total:l.length+1,trimmed:u,culprits:c}}var l=e.i(77193),d=e.i(111970),u=e.i(662860);let c=[{name:"pool-guard",run:async()=>{(0,l.r)()&&await o().catch(e=>console.warn("pool guard failed:",e instanceof Error?e.message.slice(0,160):"error"))}},{name:"supabase-metrics",run:async(e,t)=>{(await (0,d.I)()).has("database")||await (0,u.E)(e,t?.deadline??e.getTime()+3e4)}}];var f=e.i(875225),p=e.i(260338),h=e.i(537622),m=e.i(749124),w=e.i(618916),g=e.i(612478),k=e.i(814964),y=e.i(971724),v=e.i(455744),b=e.i(898305),$=e.i(105954),T=e.i(180473),D=e.i(206033),I=e.i(140561);let S="application/vnd.google-apps.folder",z="https://www.googleapis.com/drive/v3/files",j="https://www.googleapis.com/upload/drive/v3/files",A="https://sheets.googleapis.com/v4/spreadsheets",E=y.z.object({error:y.z.object({errors:v.z.array(b.z.looseObject({reason:$.z.string().optional()})).optional(),status:$.z.string().optional()})});async function R(e,t,a,i,r){let n,s,o=r.timeoutMs??1e4,l={Authorization:`Bearer ${a}`,Accept:"application/json"};i?.raw?(l["Content-Type"]=i.contentType??"application/octet-stream",n=new Uint8Array(i.raw)):i&&void 0!==i.json&&(l["Content-Type"]="application/json",n=JSON.stringify(i.json));try{s=await (r.fetch??fetch)(t,{method:e,headers:l,body:n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Google Drive didn't answer within ${Math.round(o/1e3)} seconds.`:"Couldn't reach Google Drive."}}let d=await s.json().catch(()=>null);if(s.ok)return{ok:!0,data:d};let u=E.safeParse(d),c=u.success?u.data.error.errors?.find(e=>e.reason)?.reason??u.data.error.status:void 0;return 401===s.status?{ok:!1,kind:"auth",status:401,error:"Google Drive rejected the access token (401)."}:404===s.status?{ok:!1,kind:"missing",status:404,error:"Google Drive doesn't know this file (404)."}:403===s.status&&"storageQuotaExceeded"===c?{ok:!1,kind:"full",status:403,error:"Your Google Drive is full. Free some space; the next run tries again."}:429===s.status||s.status>=500||403===s.status&&/rateLimit/i.test(c??"")?{ok:!1,kind:"transient",status:s.status,error:`Google Drive is busy (${s.status}). The next run tries again.`}:{ok:!1,kind:"format",status:s.status,error:`Google Drive refused the request (${s.status}${c?` ${c}`:""}).`}}let _=y.z.object({id:$.z.string().min(1)}),F=e=>({ok:!1,kind:"format",error:`Google Drive answered ${e} in a format the console doesn't recognise.`});function P(e,t){if(!e.ok)return e;let a=_.safeParse(e.data);return a.success?{ok:!0,data:a.data.id}:F(t)}async function x(e,t,a={}){let i=`name = '${t.replace(/['\\]/g,"\\$&")}' and mimeType = '${S}' and trashed = false`,r=await R("GET",`${z}?${new URLSearchParams({q:i,fields:"files(id,name)",spaces:"drive",pageSize:"10"})}`,e,null,a);if(!r.ok)return r;let n=y.z.object({files:v.z.array(_)}).safeParse(r.data);return n.success?{ok:!0,data:n.data.files[0]?.id??null}:F("the folder search")}async function O(e,t,a={}){let i=await R("GET",`${z}/${encodeURIComponent(t)}?fields=id,trashed,name`,e,null,a);if(!i.ok)return"missing"===i.kind?{ok:!0,data:{usable:!1,name:null}}:i;let r=y.z.object({id:$.z.string(),trashed:T.z.boolean().optional(),name:$.z.string().optional()}).safeParse(i.data);return r.success?{ok:!0,data:{usable:!r.data.trashed,name:r.data.name?.trim()||null}}:F("the folder")}async function C(e,t,a={}){return P(await R("POST",`${z}?fields=id`,e,{json:{name:t,mimeType:S}},a),"the new folder")}async function B(e,t,a,i={}){return P(await R("POST",`${z}?fields=id`,e,{json:{name:t,mimeType:"application/vnd.google-apps.spreadsheet",parents:[a]}},i),"the new spreadsheet")}let G=e=>`'${e.replace(/'/g,"''")}'`;async function H(e,t,a,i={}){let r=await R("GET",`${A}/${encodeURIComponent(t)}?fields=sheets.properties(sheetId,title)`,e,null,i);if(!r.ok)return r;let n=y.z.object({sheets:v.z.array(y.z.object({properties:y.z.object({sheetId:D.z.number(),title:$.z.string()})})).default([])}).safeParse(r.data);if(!n.success)return F("the spreadsheet's tabs");let s=n.data.sheets.map(e=>e.properties),o=new Set(s.map(e=>e.title)),l=[],d=a.filter(e=>!o.has(e)),u=s[0];for(let e of(u&&d.length&&!a.includes(u.title)&&(l.push({updateSheetProperties:{properties:{sheetId:u.sheetId,title:d[0]},fields:"title"}}),d.shift()),d))l.push({addSheet:{properties:{title:e}}});if(!l.length)return{ok:!0,data:void 0};let c=await R("POST",`${A}/${encodeURIComponent(t)}:batchUpdate`,e,{json:{requests:l}},i);return c.ok?{ok:!0,data:void 0}:c}async function M(e,t,a,i={}){let r=encodeURIComponent(t),n=await R("POST",`${A}/${r}/values:batchClear`,e,{json:{ranges:a.map(e=>G(e.title))}},i);if(!n.ok)return n;let s=a.map(e=>({range:`${G(e.title)}!A1`,majorDimension:"ROWS",values:e.rows.map(e=>e.map(e=>e??""))})),o=await R("POST",`${A}/${r}/values:batchUpdate`,e,{json:{valueInputOption:"RAW",data:s}},i);return o.ok?{ok:!0,data:void 0}:o}let N="watchbell-backup-part";function U(e,t,a){return Buffer.concat([Buffer.from(`--${N}\r
|
|
5
5
|
Content-Type: application/json; charset=UTF-8\r
|
|
6
6
|
\r
|
|
7
7
|
${JSON.stringify(e)}\r
|
|
8
|
-
--${
|
|
8
|
+
--${N}\r
|
|
9
9
|
Content-Type: ${a}\r
|
|
10
10
|
\r
|
|
11
11
|
`),t,Buffer.from(`\r
|
|
12
|
-
--${
|
|
12
|
+
--${N}--`)])}async function L(e,t,a={}){let i=`multipart/related; boundary=${N}`,r=e=>{if(!e.ok)return e;let a=y.z.object({id:$.z.string().min(1),size:I.z.union([$.z.string(),D.z.number()]).optional()}).safeParse(e.data);return a.success?{ok:!0,data:{id:a.data.id,size:Number(a.data.size??t.content.length)||t.content.length}}:F("the upload")};if(t.fileId){let n=U({name:t.name,mimeType:t.mimeType},t.content,t.mimeType),s=await R("PATCH",`${j}/${encodeURIComponent(t.fileId)}?uploadType=multipart&fields=id,size`,e,{raw:n,contentType:i},a);if(s.ok||"missing"!==s.kind)return r(s)}let n=U({name:t.name,mimeType:t.mimeType,parents:[t.folderId]},t.content,t.mimeType);return r(await R("POST",`${j}?uploadType=multipart&fields=id,size`,e,{raw:n,contentType:i},a))}async function W(e,t,a={}){let i=await R("PATCH",`${z}/${encodeURIComponent(t)}?fields=id,trashed`,e,{json:{trashed:!0}},a);return i.ok||"missing"===i.kind?{ok:!0,data:void 0}:i}var q=e.i(992664);class Y extends Error{kind;constructor(e,t){super(t),this.kind=e}}async function J(e){let{month:t,partial:a,now:i}=e,r=(0,q.p)();if(!r)return{ok:!1,month:t,kind:"env",error:q.S};let n=await g.N();if(!n)return{ok:!1,month:t,kind:"not-connected",error:"Google Drive isn't connected."};if(!n.refreshToken){let e="The stored Google Drive token can't be read (the encryption key changed). Reconnect Google Drive.";return await g.r(n.id,{status:"error",lastError:e}),{ok:!1,month:t,kind:"failed",error:e}}let s=await g.z(t),o={sheetFileId:s?.sheetFileId??null,csvFileId:s?.csvFileId??null,driveFolderId:s?.driveFolderId??null},l=s?.status??"error";await g.W(t,{status:l,attempts:(s?.attempts??0)+1,startedAt:i});let d=e=>(o={...o,...e},g.W(t,{status:l,...e})),u={fetch:e.fetch},c=()=>{if(Date.now()>e.deadline)throw new Y("time","Stopped at the daily job's time budget; the next daily run continues where this one stopped.")},f=e=>{if(!e.ok)throw new Y("failed",e.error);return e.data};try{let s=await (0,q.B)(r,n.refreshToken,u);if(!s.ok){if("revoked"===s.kind)throw await g.r(n.id,{status:"error",lastError:q.L}),new Y("revoked",q.L);throw new Y("failed",s.error)}"error"===n.status&&await g.r(n.id,{status:"ok",lastError:null});let l=s.accessToken;c();let p=await g.M(),h=p?.id??null;if(p){let e=f(await O(l,p.id,u));e.usable?e.name&&e.name!==p.name&&await g.s(p.id,e.name):h=null}if(!h){c();let e=f(await x(l,k.R,u)),t=e?null:f(await x(l,k.C,u));h=e??t??f(await C(l,k.R,u)),await g.s(h,t?k.C:k.R)}let m=await g.f(t,a,i);c(),o.sheetFileId||await d({sheetFileId:f(await B(l,(0,k.F)(t),h,u)),driveFolderId:h}),c();let w=await H(l,o.sheetFileId,k.O,u);w.ok||"missing"!==w.kind||(await d({sheetFileId:f(await B(l,(0,k.F)(t),h,u)),driveFolderId:h}),c(),w=await H(l,o.sheetFileId,k.O,u)),f(w),c(),f(await M(l,o.sheetFileId,(0,k.m)(m),u)),c();let y=(0,k.b)((0,k.E)(m)),v=f(await L(l,{name:(0,k.V)(t),mimeType:"application/gzip",folderId:h,content:y,fileId:o.csvFileId},u));await d({csvFileId:v.id}),await g.W(t,{status:a?"partial":"ok",sizeBytes:v.size,error:null,finishedAt:new Date});let b=a?null:await K(l,i,e.deadline,u);return{ok:!0,month:t,retention:b,message:`${(0,k.n)(t)}${a?" so far":""} saved to Google Drive.`}}catch(r){let e=r instanceof Y?r:new Y("failed","The backup failed. The next daily run tries again.");r instanceof Y||console.error("backup failed:",r instanceof Error?r.name:"unknown");let i=a&&"partial"===l?"partial":"error";return await g.W(t,{status:i,error:e.message.slice(0,500),finishedAt:new Date}).catch(()=>void 0),{ok:!1,month:t,kind:e.kind,error:e.message}}}async function K(e,t,a,i){let r=(0,k.c)(await g.e(),t),n=[];for(let s of r){if(Date.now()>a)break;let r=!0;for(let t of[s.sheetFileId,s.csvFileId])t&&((await W(e,t,i)).ok||(r=!1));r&&(await g.W(s.month,{status:s.status,trashedAt:t}),n.push((0,k.n)(s.month)))}return n.length?`Moved to Drive trash: ${n.join(", ")}.`:null}async function V(e,t,a={}){let i=await g.N();if(!i||"error"===i.status&&i.lastError?.startsWith("invalid_grant"))return null;let r=(0,k.p)(await g.e(),e);if(!r)return null;let n=await J({month:r,partial:!1,now:e,deadline:t,...a});return n.ok?null:`${(0,k.n)(r)}: ${n.error}`}var Q=e.i(426099),X=e.i(433609),Z=e.i(13733),ee=e.i(656083),et=e.i(988294),ea=e.i(629955),ei=e.i(125160),er=e.i(800523),en=e.i(970465),es=e.i(607910),eo=e.i(880420),el=e.i(140318),ed=e.i(273083),eu=e.i(960049),ec=e.i(154491),ef=e.i(938739),ep=e.i(751762);let eh={github:"devops",deps:"devops",databases:"database",security:"hosting"};async function em(e){let[t]=await (0,i.f)().select({hour:(0,p.f)(w.rollupsHourly.hour)}).from(w.rollupsHourly),a=(0,ef.r)(t?.hour??null,e),r=await (0,i.f)().select().from(w.checks).where((0,f.b)((0,f.B)(w.checks.at,a),(0,f.S)(w.checks.at,(0,ef.b)(e)))).orderBy(w.checks.at),n=new Map;for(let e of r){let t=`${e.monitorId}|${(0,ef.b)(e.at).toISOString()}`,a=n.get(t);a?a.push(e):n.set(t,[e])}for(let[e,t]of n){let[a,r]=e.split("|"),n=(0,ef.z)(t);await (0,i.f)().insert(w.rollupsHourly).values({monitorId:a,hour:new Date(r),...n}).onConflictDoUpdate({target:[w.rollupsHourly.monitorId,w.rollupsHourly.hour],set:n})}}async function ew(e){let t=await (0,eu.J)().catch(()=>ed.f);await (0,i.f)().delete(w.checks).where((0,f.S)(w.checks.at,new Date(e.getTime()-864e5*t.checks))),await (0,i.f)().delete(w.rollupsHourly).where((0,f.S)(w.rollupsHourly.hour,new Date(e.getTime()-864e5*t.rollupsHourly))),await (0,i.f)().delete(w.deployments).where((0,f.b)((0,f.S)(w.deployments.createdAtProvider,new Date(e.getTime()-864e5*t.deployments)),(0,f.u)(w.deployments.isCurrent,!1),(0,f.u)(w.deployments.isPreviousProduction,!1))),await (0,i.f)().delete(w.events).where((0,f.S)(w.events.at,new Date(e.getTime()-864e5*t.events))),await (0,i.f)().delete(w.alerts).where((0,f.b)((0,f.E)(w.alerts.resolvedAt),(0,f.S)(w.alerts.resolvedAt,new Date(e.getTime()-864e5*t.alerts)))),await (0,i.f)().delete(w.collectorRuns).where((0,f.S)(w.collectorRuns.startedAt,new Date(e.getTime()-864e5*t.collectorRuns))),await (0,i.f)().delete(w.storedLogs).where((0,f.S)(w.storedLogs.at,new Date(e.getTime()-864e5*t.storedLogs))),await (0,i.f)().delete(w.recommendationDismissals).where((0,f.S)(w.recommendationDismissals.dismissedAt,new Date(e.getTime()-864e5*t.recommendationDismissals)))}async function eg(){let e=new Date,[t]=await (0,i.f)().insert(w.collectorRuns).values({startedAt:e,trigger:"vercel_cron"}).returning({id:w.collectorRuns.id}),a=[],r=await (0,d.I)(),n=[["rollups",()=>em(e)],["backup",async()=>{let t=await V(e,e.getTime()+2e4);t&&a.push(`backup: ${t}`)}],["retention",()=>ew(e)],["sync",async()=>{let t=(await (0,i.f)().select({id:w.accounts.id,label:w.accounts.label,provider:w.accounts.provider}).from(w.accounts).where((0,f.y)(w.accounts.provider,es.I))).filter(e=>!r.has(ec.D[e.provider]??"manage"));for(let[i,r]of t.entries()){if(Date.now()>e.getTime()+25e3){a.push(`sync: ${t.length-i} account${t.length-i>1?"s":""} left for the next run, time budget used`);break}let n=await (0,eo.k)(r.id);n.ok?(n.skippedTeams.length&&a.push(`sync ${r.provider}/${r.label}: skipped teams ${n.skippedTeams.join(", ")} (no access)`),n.overLimit&&a.push(`sync ${r.provider}/${r.label}: ${n.overLimit}`)):a.push(`sync ${r.provider}/${r.label}: ${n.error}`)}}],["github",async()=>{let t=await (0,Z.D)(Math.min(Date.now()+6e3,e.getTime()+35e3));t&&a.push(`github: ${t}`)}],["deps",async()=>{let t=await (0,X.e)(Math.min(Date.now()+X.o,e.getTime()+X.R));t&&a.push(`deps: ${t}`)}],["databases",()=>(0,el.f)({now:e,deadline:Math.min(Date.now()+15e3,e.getTime()+5e4),errors:a})],["keep-active",()=>(0,ea.V)(e,Math.min(Date.now()+5e3,e.getTime()+5e4),a)],["security",async()=>{for(let t of(await (0,er.h)((0,en.F)(e.getTime(),Date.now()))).failed)a.push(`security ${t}`)}],["advisor",async()=>{await (0,Q.O)(e)}]],s=[];try{for(let[e,t]of n)if(!r.has(eh[e]))try{await t(),s.push(e)}catch(t){a.push(`${e}: ${(0,ep.f)(t)}`)}await (0,ee.f)([{type:"system",kind:a.length?"warn":"info",message:a.length?"Daily jobs finished with problems":"Daily jobs finished",detail:"Rollups, the monthly backup when due, retention, a sync of every account, database sizes, the Next.js security check and the Advisor",resourceId:null}])}catch(e){a.push(`events: ${(0,ep.f)(e)}`)}finally{(0,h.f)(m.t),await (0,i.f)().update(w.collectorRuns).set({finishedAt:new Date,ok:0===a.length,errorSummary:a.join("\n").slice(0,2e3)||null,durationMs:Date.now()-e.getTime(),tasks:s}).where((0,f.u)(w.collectorRuns.id,t.id)).catch(()=>void 0)}await ek(a.length>0);let o=Date.now()-e.getTime();return{skipped:!1,ok:0===a.length,tasks:s,checks:0,durationMs:o,errors:a}}async function ek(e){let t=process.env.DAILY_HEARTBEAT_TOKEN;if(!t)return;let a=(0,ei.i)(t);if(!a)return void console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN holds no single hb_ token; set it to the heartbeat's token");let i=await (0,et._)(a,e?"fail":"ok",new Date).catch(e=>(console.warn("daily heartbeat: the ping couldn't be stored:",e instanceof Error?e.name:"error"),null));i?.status==="unknown"?console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN matches no heartbeat monitor (was it regenerated?)"):i?.status==="limited"&&console.warn("daily heartbeat: the ping was rate limited")}async function ey(e,t,a=new Date){if(e.skipped||0===t.length)return e;let i=[...e.tasks],r=[...e.errors];for(let e of t)try{await e.run(a),i.push(e.name)}catch(t){r.push(`${e.name}: ${(0,ep.f)(t)}`)}return{...e,tasks:i,errors:r,ok:0===r.length}}e.i(956846);var ev=e.i(310603);async function eb(e){let t=[...c,...ev.extensions.minuteSteps??[]];if(!t.length)return;let a=new Date,i={deadline:e+6e4-5e3};for(let e of t)try{await e.run(a,i)}catch{console.warn(`minute step ${e.name} failed`)}}async function e$(){return ey(await eg(),ev.extensions.dailySteps??[])}e.s(["W",0,e$,"m",0,eb],819645)}];
|
|
13
13
|
|
|
14
14
|
//# sourceMappingURL=src_lib_collector_auth_ts_0lqx92__e4zij._.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
module.exports=[380167,e=>{"use strict";var t=e.i(533102),a=e.i(406212),r=e.i(200123),n=e.i(595262);async function s(){let e=await (0,a.db)().execute(t.sql`
|
|
2
2
|
select pid, state, extract(epoch from now() - state_change)::int as idle_s,
|
|
3
3
|
coalesce(extract(epoch from now() - query_start)::int, 0) as run_s, left(query, 400) as query
|
|
4
|
-
from pg_stat_activity where usename = current_user and pid <> pg_backend_pid()`);return(0,r.f)(e).map(e=>{var t;let a;return{pid:Number(e.pid),state:e.state,idleS:Number(e.idle_s),runS:Number(e.run_s),table:(t=e.query,(a=/(?:from|into|update|join)\s+"?ops"?\."?([a-z_]+)"?/i.exec(t??""))?a[1]:null)}})}async function o(e=10,i=10){let l=await s(),u=function(e,t=10,a=10){let r=function(e){let t=new Set,a=[];for(let r of e.filter(e=>"idle"===e.state&&e.table).sort((e,t)=>e.idleS-t.idleS))t.has(r.table)?r.idleS>=60&&a.push(r):t.add(r.table);return a}(e),n=e.filter(e=>!r.includes(e)),s=Math.max(0,n.length+1-t);return s?[...r,...[...n.filter(e=>"idle"===e.state&&e.idleS>=a).sort((e,t)=>t.idleS-e.idleS),...n.filter(e=>"idle"!==e.state&&e.runS>60).sort((e,t)=>t.runS-e.runS)].slice(0,s)]:r}(l,e,i),d=0;if(u.length){let e=u.map(e=>e.pid).filter(e=>Number.isInteger(e)&&e>0),n=await (0,a.db)().execute(t.sql`select pg_terminate_backend(pid) as ok from unnest(array[${t.sql.raw(e.join(","))}]::int[]) as pid`);d=(0,r.f)(n).filter(e=>e.ok).length}let c=function(e){let t=new Map;for(let a of e)t.set(a.table??"unknown",(t.get(a.table??"unknown")??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} \xd7${t}`)}(u);return d>0&&(console.info(`pool guard: ${l.length+1} connections, closed ${d} (${c.join(", ")})`),await (0,n.f)({kind:"ok",message:`Pool guard: closed ${d} of ${l.length+1} database connections`,detail:c.join(", ").slice(0,300),resourceId:null,actorUserId:null}).catch(()=>void 0)),{total:l.length+1,trimmed:d,culprits:c}}var i=e.i(90879),l=e.i(366171);let u=[{name:"pool-guard",run:async()=>{(0,i.isCloud)()&&await o().catch(e=>console.warn("pool guard failed:",e instanceof Error?e.message.slice(0,160):"error"))}},{name:"supabase-metrics",run:async(e,t)=>{await (0,l.E)(e,t?.deadline??e.getTime()+3e4)}}];var d=e.i(336763),c=e.i(157406),p=e.i(668304);function f(e){if((0,i.isCloud)())for(let t of new Set(e))try{let e;e=t,(0,p.revalidateTag)(e,{expire:0})}catch(e){console.warn(`cache: couldn't expire ${t}: ${e instanceof Error?e.message.slice(0,120):"unknown"}`)}}var m=e.i(188477),h=e.i(530298),w=e.i(396918),g=e.i(727028),b=e.i(728335),k=e.i(760859);let y="Watchbell backups",v="Watchpost backups",I=["Overview","Applications","Incidents","Databases","Domains"],$=["January","February","March","April","May","June","July","August","September","October","November","December"];function A(e){let t=(0,b.zonedParts)(e);return`${t.year}-${String(t.month).padStart(2,"0")}`}function S(e){return{start:(0,b.dayStart)(`${e}-01`),end:(0,b.dayStart)(`${function(e){let[t,a]=e.split("-").map(Number);return 12===a?`${t+1}-01`:`${t}-${String(a+1).padStart(2,"0")}`}(e)}-01`)}}function D(e){let[t,a]=e.split("-").map(Number);return 1===a?`${t-1}-12`:`${t}-${String(a-1).padStart(2,"0")}`}function T(e){let[t,a]=e.split("-").map(Number);return`${$[a-1]} ${t}`}let E=e=>`Watchbell \xb7 ${e}`;function x(e){if(!e)return"";let t=(0,b.zonedParts)(e),a=e=>String(e).padStart(2,"0");return`${t.year}-${a(t.month)}-${a(t.day)} ${a(t.hour)}:${a(t.minute)}`}let z=(e,t)=>e>0?Math.round((e-t)/e*1e5)/1e3:"",R=e=>{if(!e.length)return null;let t=[...e].sort((e,t)=>e-t),a=Math.floor(t.length/2);return t.length%2?t[a]:Math.round((t[a-1]+t[a])/2)},j=e=>e.reduce((e,t)=>e+t,0),_=e=>"production"===e.target,M=e=>"ERROR"===e.state,q={supabase_project:"Supabase",neon_project:"Neon",firestore:"Firebase"};function N(e,t){if(!e)return"";let a=Date.parse(e);return Number.isFinite(a)?Math.floor((a-t.getTime())/864e5):""}let P=e=>null===e?"":Math.round(e/1048576*10)/10;function C(e){if(null===e)return"";if("number"==typeof e||"boolean"==typeof e)return String(e);let t=/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return/[",\r\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}let O=["record","at","subject","resource_id","checks","failures","p50_ms","p95_ms","max_ms","status_5xx","maintenance","type","kind","reason","count","message","detail"];var B=e.i(803237),F=e.i(788264),G=e.i(93387),U=e.i(857799),L=e.i(503313),W=e.i(827439);let H="backup.folder";async function V(){let[e]=await (0,a.db)().select().from(h.accounts).where((0,d.eq)(h.accounts.provider,"drive")).orderBy((0,w.asc)(h.accounts.createdAt)).limit(1);if(!e)return null;let t=(0,B.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,G.serverEnv)().OPS_ENCRYPTION_KEY);return{id:e.id,status:e.status,lastError:e.lastError,lastTestAt:e.lastTestAt,refreshToken:t}}async function J(e,t){let r=new Date;await (0,a.db)().update(h.accounts).set({...t,lastTestAt:r,updatedAt:r}).where((0,d.eq)(h.accounts.id,e))}async function K(){return(0,a.db)().select().from(h.backups).orderBy((0,w.desc)(h.backups.month)).limit(120)}async function Y(e){let[t]=await (0,a.db)().select().from(h.backups).where((0,d.eq)(h.backups.month,e)).limit(1);return t??null}async function X(e,t){let r=new Date;await (0,a.db)().insert(h.backups).values({month:e,...t,updatedAt:r}).onConflictDoUpdate({target:h.backups.month,set:{...t,updatedAt:r}})}async function Q(){let[e]=await (0,a.db)().select().from(h.settings).where((0,d.eq)(h.settings.key,H)).limit(1),t=e?.value;return"string"==typeof t?.id&&t.id?{id:t.id,name:"string"==typeof t.name&&t.name?t.name:null}:null}async function Z(e,t){let r=t?{id:e,name:t}:{id:e};await (0,a.db)().insert(h.settings).values({key:H,value:r}).onConflictDoUpdate({target:h.settings.key,set:{value:r,updatedAt:new Date}})}let ee=e=>"number"==typeof e&&Number.isFinite(e)?e:null;async function et(e,t,r){let{start:n,end:s}=S(e),o=t&&r<s?r:s,[i,l,u,c,p,f,m,g]=await Promise.all([(0,L.f)(),(0,a.db)().select({id:h.resources.id,name:h.resources.name}).from(h.resources).where((0,d.and)((0,d.eq)(h.resources.kind,"app"),(0,d.eq)(h.resources.monitored,!0),(0,d.isNull)(h.resources.goneAt))).orderBy((0,w.asc)(h.resources.name)).limit(500),(0,a.db)().select({r:h.rollupsHourly,appId:h.monitors.resourceId,app:h.resources.name,url:h.monitors.url,kind:h.monitors.kind,name:h.monitors.name}).from(h.rollupsHourly).innerJoin(h.monitors,(0,d.eq)(h.monitors.id,h.rollupsHourly.monitorId)).innerJoin(h.resources,(0,d.eq)(h.resources.id,h.monitors.resourceId)).where((0,d.and)((0,d.gte)(h.rollupsHourly.hour,n),(0,d.lt)(h.rollupsHourly.hour,o))).orderBy((0,w.asc)(h.rollupsHourly.hour)).limit(5e4),(0,a.db)().select({e:h.events,resource:h.resources.name}).from(h.events).leftJoin(h.resources,(0,d.eq)(h.resources.id,h.events.resourceId)).where((0,d.and)((0,d.gte)(h.events.at,n),(0,d.lt)(h.events.at,o))).orderBy((0,w.asc)(h.events.at)).limit(5e4),(0,a.db)().select().from(h.alerts).where((0,d.and)((0,d.gte)(h.alerts.startedAt,n),(0,d.lt)(h.alerts.startedAt,o))).orderBy((0,w.asc)(h.alerts.startedAt)).limit(5e3),(0,a.db)().select({appId:h.deployments.resourceId,target:h.deployments.target,state:h.deployments.state,createdAt:h.deployments.createdAtProvider}).from(h.deployments).where((0,d.and)((0,d.gte)(h.deployments.createdAtProvider,n),(0,d.lt)(h.deployments.createdAtProvider,o))).limit(1e4),(0,a.db)().select({r:h.resources,s:h.snapshots,account:h.accounts.label}).from(h.resources).innerJoin(h.accounts,(0,d.eq)(h.accounts.id,h.resources.accountId)).leftJoin(h.snapshots,(0,d.eq)(h.snapshots.resourceId,h.resources.id)).where((0,d.and)((0,d.inArray)(h.resources.kind,[...U.H]),(0,d.eq)(h.resources.monitored,!0),(0,d.isNull)(h.resources.goneAt))).limit(500),(0,W.p)()]),b=m.map(({r:e,s:t,account:a})=>{let r=t?.data??{},n=e.kind,s="neon_project"===n?(0,F.k)(F.s,r):null,o="supabase_project"===n?ee((0,F.k)(F.B,r).sizeBytes):s?(s.branches??[]).reduce((e,t)=>null===t.logicalSize?e:(e??0)+t.logicalSize,null):null;return{id:e.id,kind:n,account:a,state:t?.state??"unknown",sizeBytes:o,cuHours:s&&null!==ee(s.computeSeconds)?Math.round(s.computeSeconds/3600*10)/10:null,reads:"firestore"===n?ee((0,F.k)(F.w,r).reads):null}}),k=g.map(e=>({name:e.name,app:e.appName,tlsExpires:e.tls?.notAfter??null,domainExpires:e.rdap?.expiresAt??null,registrar:e.rdap?.registrar??null}));return{month:e,partial:t,generatedAt:r,book:i,apps:l,rollups:u.map(({r:e,appId:t,app:a,url:r,kind:n,name:s})=>({monitorId:e.monitorId,appId:t,app:a,path:(e=>{if("heartbeat"===e.kind)return` heartbeat ${e.name??""}`.trimEnd();try{return new URL(e.url).pathname}catch{return e.url}})({kind:n,name:s,url:r}),hour:e.hour,checks:e.checks,failures:e.failures,p50Ms:e.p50Ms,p95Ms:e.p95Ms,maxMs:e.maxMs,status5xx:e.status5xx,maintenance:e.maintenance})),events:c.map(({e,resource:t})=>({at:e.at,resourceId:e.resourceId,resource:t,type:e.type,kind:e.kind,reason:e.reason,count:e.count,message:e.message,detail:e.detail})),alerts:p.map(e=>({ruleKey:e.ruleKey,severity:e.severity,title:e.title,message:e.message,resourceId:e.resourceId,startedAt:e.startedAt,resolvedAt:e.resolvedAt})),deployments:f,databases:b,domains:k}}var ea=e.i(75064),er=e.i(909592),en=e.i(684330),es=e.i(492973),eo=e.i(246517),ei=e.i(260417),el=e.i(978071);let eu="application/vnd.google-apps.folder",ed="https://www.googleapis.com/drive/v3/files",ec="https://www.googleapis.com/upload/drive/v3/files",ep="https://sheets.googleapis.com/v4/spreadsheets",ef=ea.z.object({error:ea.z.object({errors:er.z.array(en.z.looseObject({reason:es.z.string().optional()})).optional(),status:es.z.string().optional()})});async function em(e,t,a,r,n){let s,o,i=n.timeoutMs??1e4,l={Authorization:`Bearer ${a}`,Accept:"application/json"};r?.raw?(l["Content-Type"]=r.contentType??"application/octet-stream",s=new Uint8Array(r.raw)):r&&void 0!==r.json&&(l["Content-Type"]="application/json",s=JSON.stringify(r.json));try{o=await (n.fetch??fetch)(t,{method:e,headers:l,body:s,signal:AbortSignal.timeout(i),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Google Drive didn't answer within ${Math.round(i/1e3)} seconds.`:"Couldn't reach Google Drive."}}let u=await o.json().catch(()=>null);if(o.ok)return{ok:!0,data:u};let d=ef.safeParse(u),c=d.success?d.data.error.errors?.find(e=>e.reason)?.reason??d.data.error.status:void 0;return 401===o.status?{ok:!1,kind:"auth",status:401,error:"Google Drive rejected the access token (401)."}:404===o.status?{ok:!1,kind:"missing",status:404,error:"Google Drive doesn't know this file (404)."}:403===o.status&&"storageQuotaExceeded"===c?{ok:!1,kind:"full",status:403,error:"Your Google Drive is full. Free some space; the next run tries again."}:429===o.status||o.status>=500||403===o.status&&/rateLimit/i.test(c??"")?{ok:!1,kind:"transient",status:o.status,error:`Google Drive is busy (${o.status}). The next run tries again.`}:{ok:!1,kind:"format",status:o.status,error:`Google Drive refused the request (${o.status}${c?` ${c}`:""}).`}}let eh=ea.z.object({id:es.z.string().min(1)}),ew=e=>({ok:!1,kind:"format",error:`Google Drive answered ${e} in a format the console doesn't recognise.`});function eg(e,t){if(!e.ok)return e;let a=eh.safeParse(e.data);return a.success?{ok:!0,data:a.data.id}:ew(t)}async function eb(e,t,a={}){let r=`name = '${t.replace(/['\\]/g,"\\$&")}' and mimeType = '${eu}' and trashed = false`,n=await em("GET",`${ed}?${new URLSearchParams({q:r,fields:"files(id,name)",spaces:"drive",pageSize:"10"})}`,e,null,a);if(!n.ok)return n;let s=ea.z.object({files:er.z.array(eh)}).safeParse(n.data);return s.success?{ok:!0,data:s.data.files[0]?.id??null}:ew("the folder search")}async function ek(e,t,a={}){let r=await em("GET",`${ed}/${encodeURIComponent(t)}?fields=id,trashed,name`,e,null,a);if(!r.ok)return"missing"===r.kind?{ok:!0,data:{usable:!1,name:null}}:r;let n=ea.z.object({id:es.z.string(),trashed:eo.z.boolean().optional(),name:es.z.string().optional()}).safeParse(r.data);return n.success?{ok:!0,data:{usable:!n.data.trashed,name:n.data.name?.trim()||null}}:ew("the folder")}async function ey(e,t,a={}){return eg(await em("POST",`${ed}?fields=id`,e,{json:{name:t,mimeType:eu}},a),"the new folder")}async function ev(e,t,a,r={}){return eg(await em("POST",`${ed}?fields=id`,e,{json:{name:t,mimeType:"application/vnd.google-apps.spreadsheet",parents:[a]}},r),"the new spreadsheet")}let eI=e=>`'${e.replace(/'/g,"''")}'`;async function e$(e,t,a,r={}){let n=await em("GET",`${ep}/${encodeURIComponent(t)}?fields=sheets.properties(sheetId,title)`,e,null,r);if(!n.ok)return n;let s=ea.z.object({sheets:er.z.array(ea.z.object({properties:ea.z.object({sheetId:ei.z.number(),title:es.z.string()})})).default([])}).safeParse(n.data);if(!s.success)return ew("the spreadsheet's tabs");let o=s.data.sheets.map(e=>e.properties),i=new Set(o.map(e=>e.title)),l=[],u=a.filter(e=>!i.has(e)),d=o[0];for(let e of(d&&u.length&&!a.includes(d.title)&&(l.push({updateSheetProperties:{properties:{sheetId:d.sheetId,title:u[0]},fields:"title"}}),u.shift()),u))l.push({addSheet:{properties:{title:e}}});if(!l.length)return{ok:!0,data:void 0};let c=await em("POST",`${ep}/${encodeURIComponent(t)}:batchUpdate`,e,{json:{requests:l}},r);return c.ok?{ok:!0,data:void 0}:c}async function eA(e,t,a,r={}){let n=encodeURIComponent(t),s=await em("POST",`${ep}/${n}/values:batchClear`,e,{json:{ranges:a.map(e=>eI(e.title))}},r);if(!s.ok)return s;let o=a.map(e=>({range:`${eI(e.title)}!A1`,majorDimension:"ROWS",values:e.rows.map(e=>e.map(e=>e??""))})),i=await em("POST",`${ep}/${n}/values:batchUpdate`,e,{json:{valueInputOption:"RAW",data:o}},r);return i.ok?{ok:!0,data:void 0}:i}let eS="watchbell-backup-part";function eD(e,t,a){return Buffer.concat([Buffer.from(`--${eS}\r
|
|
4
|
+
from pg_stat_activity where usename = current_user and pid <> pg_backend_pid()`);return(0,r.f)(e).map(e=>{var t;let a;return{pid:Number(e.pid),state:e.state,idleS:Number(e.idle_s),runS:Number(e.run_s),table:(t=e.query,(a=/(?:from|into|update|join)\s+"?ops"?\."?([a-z_]+)"?/i.exec(t??""))?a[1]:null)}})}async function o(e=10,i=10){let l=await s(),u=function(e,t=10,a=10){let r=function(e){let t=new Set,a=[];for(let r of e.filter(e=>"idle"===e.state&&e.table).sort((e,t)=>e.idleS-t.idleS))t.has(r.table)?r.idleS>=60&&a.push(r):t.add(r.table);return a}(e),n=e.filter(e=>!r.includes(e)),s=Math.max(0,n.length+1-t);return s?[...r,...[...n.filter(e=>"idle"===e.state&&e.idleS>=a).sort((e,t)=>t.idleS-e.idleS),...n.filter(e=>"idle"!==e.state&&e.runS>60).sort((e,t)=>t.runS-e.runS)].slice(0,s)]:r}(l,e,i),d=0;if(u.length){let e=u.map(e=>e.pid).filter(e=>Number.isInteger(e)&&e>0),n=await (0,a.db)().execute(t.sql`select pg_terminate_backend(pid) as ok from unnest(array[${t.sql.raw(e.join(","))}]::int[]) as pid`);d=(0,r.f)(n).filter(e=>e.ok).length}let c=function(e){let t=new Map;for(let a of e)t.set(a.table??"unknown",(t.get(a.table??"unknown")??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} \xd7${t}`)}(u);return d>0&&(console.info(`pool guard: ${l.length+1} connections, closed ${d} (${c.join(", ")})`),await (0,n.f)({kind:"ok",message:`Pool guard: closed ${d} of ${l.length+1} database connections`,detail:c.join(", ").slice(0,300),resourceId:null,actorUserId:null}).catch(()=>void 0)),{total:l.length+1,trimmed:d,culprits:c}}var i=e.i(90879),l=e.i(638809),u=e.i(366171);let d=[{name:"pool-guard",run:async()=>{(0,i.isCloud)()&&await o().catch(e=>console.warn("pool guard failed:",e instanceof Error?e.message.slice(0,160):"error"))}},{name:"supabase-metrics",run:async(e,t)=>{(await (0,l.I)()).has("database")||await (0,u.E)(e,t?.deadline??e.getTime()+3e4)}}];var c=e.i(336763),p=e.i(157406),f=e.i(668304);function m(e){if((0,i.isCloud)())for(let t of new Set(e))try{let e;e=t,(0,f.revalidateTag)(e,{expire:0})}catch(e){console.warn(`cache: couldn't expire ${t}: ${e instanceof Error?e.message.slice(0,120):"unknown"}`)}}var h=e.i(188477),w=e.i(530298),g=e.i(396918),b=e.i(727028),y=e.i(728335),k=e.i(760859);let v="Watchbell backups",I="Watchpost backups",$=["Overview","Applications","Incidents","Databases","Domains"],A=["January","February","March","April","May","June","July","August","September","October","November","December"];function S(e){let t=(0,y.zonedParts)(e);return`${t.year}-${String(t.month).padStart(2,"0")}`}function D(e){return{start:(0,y.dayStart)(`${e}-01`),end:(0,y.dayStart)(`${function(e){let[t,a]=e.split("-").map(Number);return 12===a?`${t+1}-01`:`${t}-${String(a+1).padStart(2,"0")}`}(e)}-01`)}}function T(e){let[t,a]=e.split("-").map(Number);return 1===a?`${t-1}-12`:`${t}-${String(a-1).padStart(2,"0")}`}function E(e){let[t,a]=e.split("-").map(Number);return`${A[a-1]} ${t}`}let x=e=>`Watchbell \xb7 ${e}`;function z(e){if(!e)return"";let t=(0,y.zonedParts)(e),a=e=>String(e).padStart(2,"0");return`${t.year}-${a(t.month)}-${a(t.day)} ${a(t.hour)}:${a(t.minute)}`}let R=(e,t)=>e>0?Math.round((e-t)/e*1e5)/1e3:"",j=e=>{if(!e.length)return null;let t=[...e].sort((e,t)=>e-t),a=Math.floor(t.length/2);return t.length%2?t[a]:Math.round((t[a-1]+t[a])/2)},_=e=>e.reduce((e,t)=>e+t,0),M=e=>"production"===e.target,q=e=>"ERROR"===e.state,N={supabase_project:"Supabase",neon_project:"Neon",firestore:"Firebase"};function P(e,t){if(!e)return"";let a=Date.parse(e);return Number.isFinite(a)?Math.floor((a-t.getTime())/864e5):""}let C=e=>null===e?"":Math.round(e/1048576*10)/10;function O(e){if(null===e)return"";if("number"==typeof e||"boolean"==typeof e)return String(e);let t=/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return/[",\r\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}let B=["record","at","subject","resource_id","checks","failures","p50_ms","p95_ms","max_ms","status_5xx","maintenance","type","kind","reason","count","message","detail"];var F=e.i(803237),G=e.i(788264),U=e.i(93387),L=e.i(857799),W=e.i(503313),H=e.i(827439);let V="backup.folder";async function J(){let[e]=await (0,a.db)().select().from(w.accounts).where((0,c.eq)(w.accounts.provider,"drive")).orderBy((0,g.asc)(w.accounts.createdAt)).limit(1);if(!e)return null;let t=(0,F.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,U.serverEnv)().OPS_ENCRYPTION_KEY);return{id:e.id,status:e.status,lastError:e.lastError,lastTestAt:e.lastTestAt,refreshToken:t}}async function K(e,t){let r=new Date;await (0,a.db)().update(w.accounts).set({...t,lastTestAt:r,updatedAt:r}).where((0,c.eq)(w.accounts.id,e))}async function Y(){return(0,a.db)().select().from(w.backups).orderBy((0,g.desc)(w.backups.month)).limit(120)}async function X(e){let[t]=await (0,a.db)().select().from(w.backups).where((0,c.eq)(w.backups.month,e)).limit(1);return t??null}async function Q(e,t){let r=new Date;await (0,a.db)().insert(w.backups).values({month:e,...t,updatedAt:r}).onConflictDoUpdate({target:w.backups.month,set:{...t,updatedAt:r}})}async function Z(){let[e]=await (0,a.db)().select().from(w.settings).where((0,c.eq)(w.settings.key,V)).limit(1),t=e?.value;return"string"==typeof t?.id&&t.id?{id:t.id,name:"string"==typeof t.name&&t.name?t.name:null}:null}async function ee(e,t){let r=t?{id:e,name:t}:{id:e};await (0,a.db)().insert(w.settings).values({key:V,value:r}).onConflictDoUpdate({target:w.settings.key,set:{value:r,updatedAt:new Date}})}let et=e=>"number"==typeof e&&Number.isFinite(e)?e:null;async function ea(e,t,r){let{start:n,end:s}=D(e),o=t&&r<s?r:s,[i,l,u,d,p,f,m,h]=await Promise.all([(0,W.f)(),(0,a.db)().select({id:w.resources.id,name:w.resources.name}).from(w.resources).where((0,c.and)((0,c.eq)(w.resources.kind,"app"),(0,c.eq)(w.resources.monitored,!0),(0,c.isNull)(w.resources.goneAt))).orderBy((0,g.asc)(w.resources.name)).limit(500),(0,a.db)().select({r:w.rollupsHourly,appId:w.monitors.resourceId,app:w.resources.name,url:w.monitors.url,kind:w.monitors.kind,name:w.monitors.name}).from(w.rollupsHourly).innerJoin(w.monitors,(0,c.eq)(w.monitors.id,w.rollupsHourly.monitorId)).innerJoin(w.resources,(0,c.eq)(w.resources.id,w.monitors.resourceId)).where((0,c.and)((0,c.gte)(w.rollupsHourly.hour,n),(0,c.lt)(w.rollupsHourly.hour,o))).orderBy((0,g.asc)(w.rollupsHourly.hour)).limit(5e4),(0,a.db)().select({e:w.events,resource:w.resources.name}).from(w.events).leftJoin(w.resources,(0,c.eq)(w.resources.id,w.events.resourceId)).where((0,c.and)((0,c.gte)(w.events.at,n),(0,c.lt)(w.events.at,o))).orderBy((0,g.asc)(w.events.at)).limit(5e4),(0,a.db)().select().from(w.alerts).where((0,c.and)((0,c.gte)(w.alerts.startedAt,n),(0,c.lt)(w.alerts.startedAt,o))).orderBy((0,g.asc)(w.alerts.startedAt)).limit(5e3),(0,a.db)().select({appId:w.deployments.resourceId,target:w.deployments.target,state:w.deployments.state,createdAt:w.deployments.createdAtProvider}).from(w.deployments).where((0,c.and)((0,c.gte)(w.deployments.createdAtProvider,n),(0,c.lt)(w.deployments.createdAtProvider,o))).limit(1e4),(0,a.db)().select({r:w.resources,s:w.snapshots,account:w.accounts.label}).from(w.resources).innerJoin(w.accounts,(0,c.eq)(w.accounts.id,w.resources.accountId)).leftJoin(w.snapshots,(0,c.eq)(w.snapshots.resourceId,w.resources.id)).where((0,c.and)((0,c.inArray)(w.resources.kind,[...L.H]),(0,c.eq)(w.resources.monitored,!0),(0,c.isNull)(w.resources.goneAt))).limit(500),(0,H.p)()]),b=m.map(({r:e,s:t,account:a})=>{let r=t?.data??{},n=e.kind,s="neon_project"===n?(0,G.k)(G.s,r):null,o="supabase_project"===n?et((0,G.k)(G.B,r).sizeBytes):s?(s.branches??[]).reduce((e,t)=>null===t.logicalSize?e:(e??0)+t.logicalSize,null):null;return{id:e.id,kind:n,account:a,state:t?.state??"unknown",sizeBytes:o,cuHours:s&&null!==et(s.computeSeconds)?Math.round(s.computeSeconds/3600*10)/10:null,reads:"firestore"===n?et((0,G.k)(G.w,r).reads):null}}),y=h.map(e=>({name:e.name,app:e.appName,tlsExpires:e.tls?.notAfter??null,domainExpires:e.rdap?.expiresAt??null,registrar:e.rdap?.registrar??null}));return{month:e,partial:t,generatedAt:r,book:i,apps:l,rollups:u.map(({r:e,appId:t,app:a,url:r,kind:n,name:s})=>({monitorId:e.monitorId,appId:t,app:a,path:(e=>{if("heartbeat"===e.kind)return` heartbeat ${e.name??""}`.trimEnd();try{return new URL(e.url).pathname}catch{return e.url}})({kind:n,name:s,url:r}),hour:e.hour,checks:e.checks,failures:e.failures,p50Ms:e.p50Ms,p95Ms:e.p95Ms,maxMs:e.maxMs,status5xx:e.status5xx,maintenance:e.maintenance})),events:d.map(({e,resource:t})=>({at:e.at,resourceId:e.resourceId,resource:t,type:e.type,kind:e.kind,reason:e.reason,count:e.count,message:e.message,detail:e.detail})),alerts:p.map(e=>({ruleKey:e.ruleKey,severity:e.severity,title:e.title,message:e.message,resourceId:e.resourceId,startedAt:e.startedAt,resolvedAt:e.resolvedAt})),deployments:f,databases:b,domains:y}}var er=e.i(75064),en=e.i(909592),es=e.i(684330),eo=e.i(492973),ei=e.i(246517),el=e.i(260417),eu=e.i(978071);let ed="application/vnd.google-apps.folder",ec="https://www.googleapis.com/drive/v3/files",ep="https://www.googleapis.com/upload/drive/v3/files",ef="https://sheets.googleapis.com/v4/spreadsheets",em=er.z.object({error:er.z.object({errors:en.z.array(es.z.looseObject({reason:eo.z.string().optional()})).optional(),status:eo.z.string().optional()})});async function eh(e,t,a,r,n){let s,o,i=n.timeoutMs??1e4,l={Authorization:`Bearer ${a}`,Accept:"application/json"};r?.raw?(l["Content-Type"]=r.contentType??"application/octet-stream",s=new Uint8Array(r.raw)):r&&void 0!==r.json&&(l["Content-Type"]="application/json",s=JSON.stringify(r.json));try{o=await (n.fetch??fetch)(t,{method:e,headers:l,body:s,signal:AbortSignal.timeout(i),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Google Drive didn't answer within ${Math.round(i/1e3)} seconds.`:"Couldn't reach Google Drive."}}let u=await o.json().catch(()=>null);if(o.ok)return{ok:!0,data:u};let d=em.safeParse(u),c=d.success?d.data.error.errors?.find(e=>e.reason)?.reason??d.data.error.status:void 0;return 401===o.status?{ok:!1,kind:"auth",status:401,error:"Google Drive rejected the access token (401)."}:404===o.status?{ok:!1,kind:"missing",status:404,error:"Google Drive doesn't know this file (404)."}:403===o.status&&"storageQuotaExceeded"===c?{ok:!1,kind:"full",status:403,error:"Your Google Drive is full. Free some space; the next run tries again."}:429===o.status||o.status>=500||403===o.status&&/rateLimit/i.test(c??"")?{ok:!1,kind:"transient",status:o.status,error:`Google Drive is busy (${o.status}). The next run tries again.`}:{ok:!1,kind:"format",status:o.status,error:`Google Drive refused the request (${o.status}${c?` ${c}`:""}).`}}let ew=er.z.object({id:eo.z.string().min(1)}),eg=e=>({ok:!1,kind:"format",error:`Google Drive answered ${e} in a format the console doesn't recognise.`});function eb(e,t){if(!e.ok)return e;let a=ew.safeParse(e.data);return a.success?{ok:!0,data:a.data.id}:eg(t)}async function ey(e,t,a={}){let r=`name = '${t.replace(/['\\]/g,"\\$&")}' and mimeType = '${ed}' and trashed = false`,n=await eh("GET",`${ec}?${new URLSearchParams({q:r,fields:"files(id,name)",spaces:"drive",pageSize:"10"})}`,e,null,a);if(!n.ok)return n;let s=er.z.object({files:en.z.array(ew)}).safeParse(n.data);return s.success?{ok:!0,data:s.data.files[0]?.id??null}:eg("the folder search")}async function ek(e,t,a={}){let r=await eh("GET",`${ec}/${encodeURIComponent(t)}?fields=id,trashed,name`,e,null,a);if(!r.ok)return"missing"===r.kind?{ok:!0,data:{usable:!1,name:null}}:r;let n=er.z.object({id:eo.z.string(),trashed:ei.z.boolean().optional(),name:eo.z.string().optional()}).safeParse(r.data);return n.success?{ok:!0,data:{usable:!n.data.trashed,name:n.data.name?.trim()||null}}:eg("the folder")}async function ev(e,t,a={}){return eb(await eh("POST",`${ec}?fields=id`,e,{json:{name:t,mimeType:ed}},a),"the new folder")}async function eI(e,t,a,r={}){return eb(await eh("POST",`${ec}?fields=id`,e,{json:{name:t,mimeType:"application/vnd.google-apps.spreadsheet",parents:[a]}},r),"the new spreadsheet")}let e$=e=>`'${e.replace(/'/g,"''")}'`;async function eA(e,t,a,r={}){let n=await eh("GET",`${ef}/${encodeURIComponent(t)}?fields=sheets.properties(sheetId,title)`,e,null,r);if(!n.ok)return n;let s=er.z.object({sheets:en.z.array(er.z.object({properties:er.z.object({sheetId:el.z.number(),title:eo.z.string()})})).default([])}).safeParse(n.data);if(!s.success)return eg("the spreadsheet's tabs");let o=s.data.sheets.map(e=>e.properties),i=new Set(o.map(e=>e.title)),l=[],u=a.filter(e=>!i.has(e)),d=o[0];for(let e of(d&&u.length&&!a.includes(d.title)&&(l.push({updateSheetProperties:{properties:{sheetId:d.sheetId,title:u[0]},fields:"title"}}),u.shift()),u))l.push({addSheet:{properties:{title:e}}});if(!l.length)return{ok:!0,data:void 0};let c=await eh("POST",`${ef}/${encodeURIComponent(t)}:batchUpdate`,e,{json:{requests:l}},r);return c.ok?{ok:!0,data:void 0}:c}async function eS(e,t,a,r={}){let n=encodeURIComponent(t),s=await eh("POST",`${ef}/${n}/values:batchClear`,e,{json:{ranges:a.map(e=>e$(e.title))}},r);if(!s.ok)return s;let o=a.map(e=>({range:`${e$(e.title)}!A1`,majorDimension:"ROWS",values:e.rows.map(e=>e.map(e=>e??""))})),i=await eh("POST",`${ef}/${n}/values:batchUpdate`,e,{json:{valueInputOption:"RAW",data:o}},r);return i.ok?{ok:!0,data:void 0}:i}let eD="watchbell-backup-part";function eT(e,t,a){return Buffer.concat([Buffer.from(`--${eD}\r
|
|
5
5
|
Content-Type: application/json; charset=UTF-8\r
|
|
6
6
|
\r
|
|
7
7
|
${JSON.stringify(e)}\r
|
|
8
|
-
--${
|
|
8
|
+
--${eD}\r
|
|
9
9
|
Content-Type: ${a}\r
|
|
10
10
|
\r
|
|
11
11
|
`),t,Buffer.from(`\r
|
|
12
|
-
--${
|
|
13
|
-
`}(w),(0,g.gzipSync)(Buffer.from(o,"utf8"),{level:9})),D=p(await eT(f,{name:`watchbell-${t}-raw.csv.gz`,mimeType:"application/gzip",folderId:h,content:A,fileId:i.csvFileId},d));await u({csvFileId:D.id}),await X(t,{status:a?"partial":"ok",sizeBytes:D.size,error:null,finishedAt:new Date});let B=a?null:await eO(f,r,e.deadline,d);return{ok:!0,month:t,retention:B,message:`${T(t)}${a?" so far":""} saved to Google Drive.`}}catch(n){let e=n instanceof eP?n:new eP("failed","The backup failed. The next daily run tries again.");n instanceof eP||console.error("backup failed:",n instanceof Error?n.name:"unknown");let r=a&&"partial"===l?"partial":"error";return await X(t,{status:r,error:e.message.slice(0,500),finishedAt:new Date}).catch(()=>void 0),{ok:!1,month:t,kind:e.kind,error:e.message}}}async function eO(e,t,a,r){let n=function(e,t){let a=A(t),r=e.filter(e=>"ok"===e.status&&e.month<a).map(e=>e.month).sort().reverse().slice(0,3);if(r.length<3)return[];let n=r[r.length-1];return e.filter(e=>!e.trashedAt&&e.month<n&&(e.sheetFileId||e.csvFileId))}(await K(),t),s=[];for(let o of n){if(Date.now()>a)break;let n=!0;for(let t of[o.sheetFileId,o.csvFileId])t&&((await eE(e,t,r)).ok||(n=!1));n&&(await X(o.month,{status:o.status,trashedAt:t}),s.push(T(o.month)))}return s.length?`Moved to Drive trash: ${s.join(", ")}.`:null}async function eB(e,t,a={}){let r=await V();if(!r||"error"===r.status&&r.lastError?.startsWith("invalid_grant"))return null;let n=function(e,t){let a=D(A(t)),r=new Map(e.map(e=>[e.month,e.status]));if("ok"!==r.get(a))return a;let n=a;for(let e=1;e<3;e++)if(n=D(n),"error"===r.get(n))return n;return null}(await K(),e);if(!n)return null;let s=await eC({month:n,partial:!1,now:e,deadline:t,...a});return s.ok?null:`${T(n)}: ${s.error}`}var eF=e.i(455891),eG=e.i(889234),eU=e.i(328586),eL=e.i(333407),eW=e.i(459702),eH=e.i(200346),eV=e.i(368230),eJ=e.i(584820),eK=e.i(902509),eY=e.i(668141),eX=e.i(242960),eQ=e.i(112515),eZ=e.i(185890);function e0(e){if(!e)return null;if("unknown"!==e.state)return e.state;let t=e.data?.lastGoodState;return"string"==typeof t&&eZ.f.includes(t)?t:null}let e1={turso_database:"Turso database",upstash_redis:"Upstash Redis",d1_database:"D1 database"};function e3(e,t){return"auth"===e.kind?"auth":"scope"===e.kind?t?"auth":"column":"missing"===e.kind?t?"unknown":"column":"unknown"}var e5=e.i(35048),e4=e.i(516464),e6=e.i(88316),e2=e.i(437122),e8=e.i(319718),e9=e.i(941536),e7=e.i(686454),te=e.i(122603);let tt="skipped the rest, time budget used";function ta(e){let t=e.deadline-Date.now()-500;if(t<250)throw Error(tt);return{timeoutMs:Math.min(5e3,t)}}async function tr(e,t,a){let r=!1;return{out:await (0,te.P)(t,3,async t=>{let n;try{n=ta(e)}catch{r=!0;return}return a(t,n)}),skipped:r}}function tn(e){if(e)throw Error(tt)}async function ts(e){let t=await (0,a.db)().select().from(h.accounts).where((0,d.and)((0,d.eq)(h.accounts.provider,e),(0,d.eq)(h.accounts.status,"ok"))),r=(0,G.serverEnv)().OPS_ENCRYPTION_KEY;return t.map(e=>({acc:e,credential:(0,B.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},r)}))}function to(e,t){return(0,a.db)().select({r:h.resources,s:h.snapshots}).from(h.resources).leftJoin(h.snapshots,(0,d.eq)(h.snapshots.resourceId,h.resources.id)).where((0,d.and)((0,d.eq)(h.resources.accountId,e),(0,d.eq)(h.resources.kind,t),(0,d.eq)(h.resources.monitored,!0),(0,d.isNull)(h.resources.goneAt))).limit(100)}let ti=e=>t.sql`${h.snapshots.data} || ${JSON.stringify(e)}::jsonb`;async function tl(e,t,r){let n=e0(e.s?{state:e.s.state,data:e.s.data}:null),s="unknown"===t.state,o=s?n?{lastGoodState:n}:{}:{...t.patch,lastGoodState:t.state},i=!s&&n!==t.state;return await (0,a.db)().insert(h.snapshots).values({resourceId:e.r.id,state:t.state,data:o,collectedAt:r,stateSince:r}).onConflictDoUpdate({target:h.snapshots.resourceId,set:{state:t.state,data:ti(o),...s?{}:{collectedAt:r},...i?{stateSince:r}:{}}}),s?null:function(e){let{prev:t,next:a}=e;if(null===t||"unknown"===t||"unknown"===a||t===a)return null;let r={resourceId:e.resourceId,type:"database",at:e.at};if("supabase_project"===e.kind)return"paused"===a?{...r,reason:"DatabasePaused",kind:"paused",message:"Supabase project paused",detail:"Status changed to INACTIVE"}:"ok"===a?{...r,reason:"DatabaseRestored",kind:"ok",message:"Supabase project active again",detail:"Status changed to ACTIVE_HEALTHY"}:"warn"===a?{...r,reason:"DatabaseUnhealthy",kind:"warn",message:"Supabase project unhealthy",detail:e.label}:"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`Supabase project: ${e.label.toLowerCase()}`,detail:e.label}:null;if("neon_project"===e.kind)return"err"===a?{...r,reason:"NeonSuspended",kind:"err",message:"Neon compute suspended",detail:e.label}:"err"===t&&("ok"===a||"idle"===a)?{...r,reason:"NeonAvailable",kind:"ok",message:"Neon compute available again",detail:e.label}:null;let n=e1[e.kind];if(n)return"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`${n}: ${e.label.toLowerCase()}`,detail:e.label}:"off"===a?{...r,reason:"DatabaseMissing",kind:"off",message:`${n} missing`,detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"DatabaseRestored",kind:"ok",message:`${n} available again`,detail:e.label}:null;if("err"===a){let t="Daily quota used up"===e.label;return{...r,reason:t?"FirestoreQuotaUsedUp":"FirestoreUnreachable",kind:"err",message:t?"Firestore daily quota used up":"Firestore not reachable",detail:e.label}}return"off"===a?{...r,reason:"FirestoreMissing",kind:"off",message:"Firestore database missing",detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"FirestoreReachable",kind:"ok",message:"Firestore reachable again",detail:e.label}:null}({kind:e.r.kind,resourceId:e.r.id,prev:n,next:t.state,label:t.label,at:r})}async function tu(e,t){await (0,a.db)().update(h.snapshots).set({data:ti(t)}).where((0,d.eq)(h.snapshots.resourceId,e.r.id))}let td=e=>(0,eL.f)(e);async function tc(e,t,r,n,s){if("auth"===e3(n,!0)){let e=(0,eQ.E)({ok:!1,kind:"auth",error:n.error});e&&await (0,a.db)().update(h.accounts).set({...e,updatedAt:s.now}).where((0,d.eq)(h.accounts.id,t.id))}for(let e of r)await tl(e,{state:"unknown",label:"Unknown",patch:{}},s.now);s.errors.push(`${e}/${t.label}: ${n.error}`)}let tp=e=>e.toISOString();async function tf(e){return e.length?new Set((await (0,a.db)().select({app:h.links.fromResourceId,state:h.snapshots.state,data:h.snapshots.data}).from(h.links).innerJoin(h.resources,(0,d.eq)(h.resources.id,h.links.toResourceId)).innerJoin(h.snapshots,(0,d.eq)(h.snapshots.resourceId,h.resources.id)).where((0,d.and)((0,d.eq)(h.links.kind,"uses_db"),(0,d.inArray)(h.links.fromResourceId,e),(0,d.eq)(h.resources.monitored,!0),(0,d.isNull)(h.resources.goneAt)))).filter(e=>"paused"===e.state||"unknown"===e.state&&"paused"===e.data.lastGoodState).map(e=>e.app)):new Set}async function tm(e){for(let{acc:t,credential:a}of(await ts("supabase"))){if(ta(e),!a){e.errors.push(`supabase/${t.label}: credential can't be read`);continue}let r=await to(t.id,"supabase_project");if(!r.length)continue;let n=await (0,e7.W)(a,ta(e));if(!n.ok){await tc("supabase",t,r,n,e);continue}let s=new Map(n.data.map(e=>[e.ref,e])),o=[];for(let t of r){let a=s.get(t.r.externalId);if(!a){o.push(await tl(t,{state:"off",label:"Not found",patch:{status:"REMOVED"}},e.now));continue}let r=(0,e6.P)(a.status),n=e0(t.s?{state:t.s.state,data:t.s.data}:null),i={status:a.status,region:a.region,pgVersion:a.pgVersion,orgSlug:a.orgSlug};"paused"===r.state&&"paused"!==n&&(i.pausedBeforeSeen=null===n),o.push(await tl(t,{state:r.state,label:r.label,patch:i},e.now))}await td(o);let i=new Map(r.map(e=>[e.r.externalId,e.r.id])),l=n.data.map(e=>({resourceId:i.get(e.ref)??null,accountId:t.id,status:e.status,orgSlug:e.orgSlug}));await (0,eH.z)(e.now,l,e.deadline).catch(()=>{console.warn("auto-restore failed"),e.errors.push("auto-restore failed")})}}async function th(e){for(let{acc:t,credential:a}of(await ts("supabase"))){if(ta(e),!a)continue;let r=await to(t.id,"supabase_project");if(!r.length)continue;let n=new Map(r.map(e=>[e.r.id,(0,F.k)(F.B,e.s?.data)])),s=new Map;for(let r of new Set([...n.values()].map(e=>e.orgSlug).filter(e=>!!e))){let n=await (0,e7.K)(a,r,ta(e));s.set(r,n.ok&&null!==n.data?"free"===n.data:null),n.ok||"scope"===n.kind||e.errors.push(`supabase/${t.label} plan: ${n.error}`)}let{skipped:o}=await tr(e,r,async(t,r)=>{let o=n.get(t.r.id),i={freeOrg:o.orgSlug?s.get(o.orgSlug)??null:null};if((o.status??"").startsWith("ACTIVE_")){let[n,s]=await Promise.all([(0,e7.F)(a,t.r.externalId,r),(0,e7.Z)(a,t.r.externalId,r)]);n.ok?Object.assign(i,{health:n.data.map(({name:e,status:t})=>({name:e,status:t})),healthAt:tp(e.now),healthError:null}):"column"===e3(n,!1)?i.healthError=n.error:e.errors.push(`supabase/${t.r.name} health: ${n.error}`),s.ok?Object.assign(i,{lastTrafficAt:(0,e6.H)(s.data)?.toISOString()??null,trafficAt:tp(e.now),trafficError:null}):"column"===e3(s,!1)?i.trafficError=s.error:e.errors.push(`supabase/${t.r.name} traffic: ${s.error}`)}await tu(t,i)});tn(o)}}async function tw(e){for(let{acc:t,credential:a}of(await ts("neon"))){if(ta(e),!a){e.errors.push(`neon/${t.label}: credential can't be read`);continue}let r=await to(t.id,"neon_project");if(!r.length)continue;let{out:n,skipped:s}=await tr(e,r,(e,t)=>Promise.all([(0,e9.Z)(a,e.r.externalId,t),(0,e9.k)(a,e.r.externalId,t),(0,e9.e)(a,e.r.externalId,t)])),o=n.flat().find(e=>void 0!==e&&!e.ok&&"auth"===e.kind);if(o){await tc("neon",t,r,o,e);continue}let i=[];for(let[t,a]of r.entries()){let r=n[t];if(!r)continue;let[s,o,l]=r;if(!s.ok||!o.ok||!l.ok){let t=[s,o,l].find(e=>!e.ok);"missing"===t.kind?i.push(await tl(a,{state:"off",label:"Not found",patch:{}},e.now)):(await tl(a,{state:"unknown",label:"Unknown",patch:{}},e.now),e.errors.push(`neon/${a.r.name}: ${t.error}`));continue}let u=(0,e4.p)({endpoints:o.data,computeSeconds:s.data.computeSeconds});i.push(await tl(a,{state:u.state,label:u.label,patch:{region:s.data.region,pgVersion:s.data.pgVersion,computeSeconds:s.data.computeSeconds,transferBytes:s.data.transferBytes,activeSeconds:s.data.activeSeconds,periodStart:s.data.periodStart,periodEnd:s.data.periodEnd,endpoints:o.data,branches:l.data}},e.now))}await td(i),tn(s)}}async function tg(e){for(let{acc:t,credential:a}of(await ts("firebase"))){ta(e);let r=a?(0,e8.p)(a):null;if(!r){e.errors.push(`firebase/${t.label}: credential can't be read`);continue}let n=await to(t.id,"firestore");if(!n.length)continue;let s=await (0,e8.X)(r,ta(e));if(!s.ok){await tc("firebase",t,n,s,e);continue}let{out:o,skipped:i}=await tr(e,n,(e,t)=>(0,e2.G)(s.data,e.r.externalId,t)),l=[];for(let[t,a]of n.entries()){let r=o[t];if(!r)continue;let n=(0,e5.g)(r);"unknown"!==n.state||r.ok||e.errors.push(`firebase/${a.r.name}: ${r.error}`);let s=r.ok?{latencyMs:r.data.latencyMs,pingError:null,pingReason:null,pingKind:null}:{pingError:r.error,pingReason:r.reason??null,pingKind:r.kind};l.push(await tl(a,{...n,patch:s},e.now))}await td(l),tn(i)}}async function tb(e){for(let{acc:t,credential:a}of(await ts("firebase"))){ta(e);let r=a?(0,e8.p)(a):null;if(!r)continue;let n=(await to(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,e8.X)(r,ta(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let o=(0,e5.a)(e.now),{skipped:i}=await tr(e,n,async(t,a)=>{let r=await (0,e2.W)(s.data,t.r.externalId,o,e.now,a);r.ok?await tu(t,{...r.data,opsAt:tp(e.now),opsError:null}):"column"===e3(r,!1)?await tu(t,{reads:null,writes:null,deletes:null,opsAt:tp(e.now),opsError:/requires billing/i.test(r.message??"")?"Not available on Spark: Firestore usage needs billing (Blaze plan)":"SERVICE_DISABLED"===r.reason?"Not readable: the Cloud Monitoring API is off in this project":"Not readable: the service account needs monitoring.viewer"}):e.errors.push(`firebase/${t.r.name} usage: ${r.error}`)});tn(i)}}async function tk(e){let t=Date.now()+2*Math.max(0,e.deadline-Date.now())/3,a=await ty(()=>tv({...e,deadline:t})),r=await ty(()=>tI(e));if(a)throw a;if(r)throw r}async function ty(e){try{return await e(),null}catch(e){return e instanceof Error?e:Error(String(e))}}async function tv(e){for(let{acc:t,credential:a}of(await ts("supabase")))if(ta(e),a)for(let r of(await to(t.id,"supabase_project"))){let t=(0,F.k)(F.B,r.s?.data);if(!(0,e6.z)({status:t.status??"",lastTrafficAt:t.lastTrafficAt?new Date(t.lastTrafficAt):null,sizeAt:t.sizeAt?new Date(t.sizeAt):null,now:e.now}))continue;let n=await (0,e7.r)(a,r.r.externalId,ta(e));n.ok?await tu(r,{sizeBytes:n.data,sizeAt:tp(e.now),sizeError:null}):"column"===e3(n,!1)?await tu(r,{sizeError:n.error}):e.errors.push(`supabase/${r.r.name} size: ${n.error}`)}}async function tI(e){for(let{acc:t,credential:a}of(await ts("firebase"))){ta(e);let r=a?(0,e8.p)(a):null;if(!r)continue;let n=(await to(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,e8.X)(r,ta(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let{skipped:o}=await tr(e,n,async(t,a)=>{let r=await (0,e2.q)(s.data,t.r.externalId,a);r.ok?await tu(t,{authUsers:r.data,authAt:tp(e.now),authError:null}):"column"===e3(r,!1)?await tu(t,{authError:"Not readable: the service account needs firebaseauth.viewer"}):e.errors.push(`firebase/${t.r.name} users: ${r.error}`)});tn(o)}}var t$=e.i(369179),tA=e.i(476866),tS=e.i(649297),tD=e.i(541211);async function tT(e){let[t]=await (0,a.db)().select({hour:(0,c.max)(h.rollupsHourly.hour)}).from(h.rollupsHourly),r=(0,tS.r)(t?.hour??null,e),n=await (0,a.db)().select().from(h.checks).where((0,d.and)((0,d.gte)(h.checks.at,r),(0,d.lt)(h.checks.at,(0,tS.b)(e)))).orderBy(h.checks.at),s=new Map;for(let e of n){let t=`${e.monitorId}|${(0,tS.b)(e.at).toISOString()}`,a=s.get(t);a?a.push(e):s.set(t,[e])}for(let[e,t]of s){let[r,n]=e.split("|"),s=(0,tS.z)(t);await (0,a.db)().insert(h.rollupsHourly).values({monitorId:r,hour:new Date(n),...s}).onConflictDoUpdate({target:[h.rollupsHourly.monitorId,h.rollupsHourly.hour],set:s})}}async function tE(e){let t=await (0,tA.J)().catch(()=>t$.f);await (0,a.db)().delete(h.checks).where((0,d.lt)(h.checks.at,new Date(e.getTime()-864e5*t.checks))),await (0,a.db)().delete(h.rollupsHourly).where((0,d.lt)(h.rollupsHourly.hour,new Date(e.getTime()-864e5*t.rollupsHourly))),await (0,a.db)().delete(h.deployments).where((0,d.and)((0,d.lt)(h.deployments.createdAtProvider,new Date(e.getTime()-864e5*t.deployments)),(0,d.eq)(h.deployments.isCurrent,!1),(0,d.eq)(h.deployments.isPreviousProduction,!1))),await (0,a.db)().delete(h.events).where((0,d.lt)(h.events.at,new Date(e.getTime()-864e5*t.events))),await (0,a.db)().delete(h.alerts).where((0,d.and)((0,d.isNotNull)(h.alerts.resolvedAt),(0,d.lt)(h.alerts.resolvedAt,new Date(e.getTime()-864e5*t.alerts)))),await (0,a.db)().delete(h.collectorRuns).where((0,d.lt)(h.collectorRuns.startedAt,new Date(e.getTime()-864e5*t.collectorRuns))),await (0,a.db)().delete(h.storedLogs).where((0,d.lt)(h.storedLogs.at,new Date(e.getTime()-864e5*t.storedLogs))),await (0,a.db)().delete(h.recommendationDismissals).where((0,d.lt)(h.recommendationDismissals.dismissedAt,new Date(e.getTime()-864e5*t.recommendationDismissals)))}async function tx(){let e=new Date,[t]=await (0,a.db)().insert(h.collectorRuns).values({startedAt:e,trigger:"vercel_cron"}).returning({id:h.collectorRuns.id}),r=[],n=[["rollups",()=>tT(e)],["backup",async()=>{let t=await eB(e,e.getTime()+2e4);t&&r.push(`backup: ${t}`)}],["retention",()=>tE(e)],["sync",async()=>{let t=await (0,a.db)().select({id:h.accounts.id,label:h.accounts.label,provider:h.accounts.provider}).from(h.accounts).where((0,d.inArray)(h.accounts.provider,eY.I));for(let[a,n]of t.entries()){if(Date.now()>e.getTime()+25e3){r.push(`sync: ${t.length-a} account${t.length-a>1?"s":""} left for the next run, time budget used`);break}let s=await (0,eX.k)(n.id);s.ok?(s.skippedTeams.length&&r.push(`sync ${n.provider}/${n.label}: skipped teams ${s.skippedTeams.join(", ")} (no access)`),s.overLimit&&r.push(`sync ${n.provider}/${n.label}: ${s.overLimit}`)):r.push(`sync ${n.provider}/${n.label}: ${s.error}`)}}],["github",async()=>{let t=await (0,eU.D)(Math.min(Date.now()+6e3,e.getTime()+35e3));t&&r.push(`github: ${t}`)}],["deps",async()=>{let t=await (0,eG.e)(Math.min(Date.now()+eG.o,e.getTime()+eG.R));t&&r.push(`deps: ${t}`)}],["databases",()=>tk({now:e,deadline:Math.min(Date.now()+15e3,e.getTime()+5e4),errors:r})],["keep-active",()=>(0,eH.V)(e,Math.min(Date.now()+5e3,e.getTime()+5e4),r)],["security",async()=>{for(let t of(await (0,eJ.h)((0,eK.F)(e.getTime(),Date.now()))).failed)r.push(`security ${t}`)}],["advisor",async()=>{await (0,eF.O)(e)}]],s=[];try{for(let[e,t]of n)try{await t(),s.push(e)}catch(t){r.push(`${e}: ${(0,tD.safeError)(t)}`)}await (0,eL.f)([{type:"system",kind:r.length?"warn":"info",message:r.length?"Daily jobs finished with problems":"Daily jobs finished",detail:"Rollups, the monthly backup when due, retention, a sync of every account, database sizes, the Next.js security check and the Advisor",resourceId:null}])}catch(e){r.push(`events: ${(0,tD.safeError)(e)}`)}finally{f(m.t),await (0,a.db)().update(h.collectorRuns).set({finishedAt:new Date,ok:0===r.length,errorSummary:r.join("\n").slice(0,2e3)||null,durationMs:Date.now()-e.getTime(),tasks:s}).where((0,d.eq)(h.collectorRuns.id,t.id)).catch(()=>void 0)}await tz(r.length>0);let o=Date.now()-e.getTime();return{skipped:!1,ok:0===r.length,tasks:s,checks:0,durationMs:o,errors:r}}async function tz(e){let t=process.env.DAILY_HEARTBEAT_TOKEN;if(!t)return;let a=(0,eV.i)(t);if(!a)return void console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN holds no single hb_ token; set it to the heartbeat's token");let r=await (0,eW._)(a,e?"fail":"ok",new Date).catch(e=>(console.warn("daily heartbeat: the ping couldn't be stored:",e instanceof Error?e.name:"error"),null));r?.status==="unknown"?console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN matches no heartbeat monitor (was it regenerated?)"):r?.status==="limited"&&console.warn("daily heartbeat: the ping was rate limited")}async function tR(e,t,a=new Date){if(e.skipped||0===t.length)return e;let r=[...e.tasks],n=[...e.errors];for(let e of t)try{await e.run(a),r.push(e.name)}catch(t){n.push(`${e.name}: ${(0,tD.safeError)(t)}`)}return{...e,tasks:r,errors:n,ok:0===n.length}}var tj=e.i(234195),t_=e.i(706959),tM=e.i(451682),tq=e.i(373200),tN=e.i(753535),tP=e.i(932378),tC=e.i(313903);let tO=/not enabled/i,tB=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),tF="Vercel Web Analytics answered in a format the console doesn't recognise.",tG=ea.z.object({data:ea.z.object({pageviews:ei.z.number().finite().nonnegative(),visitors:ei.z.number().finite().nonnegative()})}),tU=ea.z.object({data:er.z.array(tP.z.unknown())}),tL=ea.z.object({timestamp:es.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),tC.z.NEVER):a}),pageviews:ei.z.number().finite().nonnegative().nullish().catch(null)});async function tW(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),o=r.fetch??fetch,i=new AbortController,l=setTimeout(()=>i.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),u=r.signal?AbortSignal.any([i.signal,r.signal]):i.signal,d=(0,te.X)(u);async function c(l,c){let p=new URLSearchParams({projectId:a,teamId:t,...c,since:n,until:s});try{let t=await Promise.race([o(`https://api.vercel.com/v1/query/web-analytics/visits/${l}?${p}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:u,cache:"no-store"}),d]),a=null,r=!1;if(401===t.status||403===t.status)a=tB("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=tB("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),d]).catch(()=>"");tO.test(e)?r=!0:a=tB("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=tB("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),d])}}catch(e){if(u.aborted)throw e;return{kind:"fail",fail:tB("format",tF)}}}catch{return{kind:"fail",fail:u.aborted?i.signal.aborted&&!r.signal?.aborted?tB("transient","Vercel Web Analytics didn't answer in time."):tB("transient","Reading Vercel Web Analytics was cancelled."):tB("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([c("count",{}),c("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?tU.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:tB("format",tF),o=a.find(e=>"transient"===e.kind);if(o)return o;if(s)return s;if(!n?.success)return tB("format",tF);let i="body"===e.kind?tG.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=tL.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return tB("format",tF);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(i?.success)return{ok:!0,enabled:!0,total:i.data.data.pageviews,visitors:i.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(l),i.abort()}}var tH=e.i(178233);async function tV(e,t,a){let r=await (0,tM.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,te.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await tW(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,tN.r)(r.appId,{pageviews:(0,tH.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}var tJ=e.i(147100),tK=e.i(764266),tY=e.i(198552),tX=e.i(27479),tQ=e.i(707866),tZ=e.i(392710),t0=e.i(582888),t1=e.i(811539),t3=e.i(725321);async function t5(e){let t=[await ty(()=>t6(e)),await ty(()=>t8(e)),await ty(()=>t9(e))].find(e=>null!==e);if(t)throw t}let t4=e=>e.toISOString();async function t6(e){for(let{acc:t,credential:a}of(await ts("turso"))){if(ta(e),!a){e.errors.push(`turso/${t.label}: credential can't be read`);continue}let r=await to(t.id,"turso_database");if(!r.length)continue;let n=await (0,t0.u)(a,ta(e));if(!n.ok){await tc("turso",t,r,n,e);continue}let s=new Set(r.map(e=>String(e.r.meta.org??""))),o=[];for(let i of n.data.filter(e=>s.has(e.slug))){let[n,s]=await Promise.all([(0,t0.X)(a,i.slug,ta(e)),(0,t0.d)(a,i.slug,ta(e))]),l=r.filter(e=>e.r.meta.org===i.slug);if(!n.ok){for(let t of l)await tl(t,{state:"unknown",label:"Unknown",patch:{}},e.now);e.errors.push(`turso/${t.label}: ${n.error}`);continue}let u=new Map(n.data.map(e=>[e.id,e]));for(let t of l)o.push(await t2(t,u.get(t.r.externalId),i,s,e))}let i=new Set(n.data.map(e=>e.slug));for(let t of r.filter(e=>!i.has(String(e.r.meta.org??""))))o.push(await tl(t,{state:"off",label:"Organization not visible to this token",patch:{}},e.now));await td(o)}}async function t2(e,t,a,r,n){if(!t)return tl(e,{state:"off",label:"Not found",patch:{}},n.now);let s=(0,tQ.h)({blockReads:t.blockReads,blockWrites:t.blockWrites,orgBlockedReads:a.blockedReads,orgBlockedWrites:a.blockedWrites}),o={org:a.slug,group:t.group,primaryRegion:t.primaryRegion,plan:a.plan,blockReads:t.blockReads,blockWrites:t.blockWrites};if(r.ok){let e=r.data.byDb.get(t.id);Object.assign(o,{rowsRead:e?.rowsRead??null,rowsWritten:e?.rowsWritten??null,storageBytes:e?.storageBytes??null,orgRowsRead:r.data.org.rowsRead,orgRowsWritten:r.data.org.rowsWritten,orgStorageBytes:r.data.org.storageBytes,orgDatabases:r.data.org.databases,usageAt:t4(n.now),usageError:null})}else"column"===e3(r,!1)?o.usageError=r.error:n.errors.push(`turso/${e.r.name} usage: ${r.error}`);return tl(e,{...s,patch:o},n.now)}async function t8(e){for(let{acc:t,credential:a}of(await ts("upstash"))){ta(e);let r=a?(0,t1.L)(a):null;if(!r){e.errors.push(`upstash/${t.label}: credential can't be read`);continue}let n=await to(t.id,"upstash_redis");if(!n.length)continue;let s=await (0,t1.M)(r,ta(e));if(!s.ok){await tc("upstash",t,n,s,e);continue}let o=new Map(s.data.map(e=>[e.id,e])),{out:i,skipped:l}=await tr(e,n,(e,t)=>o.has(e.r.externalId)?(0,t1.Z)(r,e.r.externalId,t):Promise.resolve(null)),u=[];for(let[t,a]of n.entries()){let r=o.get(a.r.externalId);if(!r){u.push(await tl(a,{state:"off",label:"Not found",patch:{}},e.now));continue}let n=(0,tQ.t)(r.state),s={region:r.region,status:r.state,type:r.type},l=i[t];l?.ok?Object.assign(s,{...l.data,statsAt:t4(e.now),statsError:null}):l&&"column"===e3(l,!1)?s.statsError=l.error:l&&e.errors.push(`upstash/${a.r.name} stats: ${l.error}`),u.push(await tl(a,{...n,patch:s},e.now))}await td(u),tn(l)}}async function t9(e){let t={};for(let{acc:a,credential:r}of(await ts("cloudflare"))){if(ta(e),!r)continue;let n=await ae(a.id,r,e);if(!n.length){t[a.id]={d1:"error",analytics:null,at:t4(e.now),note:"No Cloudflare account found for this token"};continue}let s="ok",o=null;for(let t of n){let n=await (0,tZ.L)(r,t,ta(e));if(!n.ok){"error"==(s="scope"===n.kind||"auth"===n.kind?"missing":"error")&&e.errors.push(`d1/${a.label}: ${n.error}`);continue}await at(a.id,t,n.data,e.now);let i=(await to(a.id,"d1_database")).filter(e=>e.r.meta.accountId===t);if(!i.length)continue;let l=await (0,tZ.t)(r,t,(0,tZ.Y)(e.now),ta(e));o=l.ok?o??"ok":"scope"===l.kind?"missing":o??"error",l.ok||"scope"===l.kind||e.errors.push(`d1/${a.label} analytics: ${l.error}`);let{out:u,skipped:d}=await tr(e,i,(e,a)=>(0,tZ.m)(r,t,e.r.externalId,a)),c=new Map((l.ok?l.data:[]).map(e=>[e.databaseId,e])),p=u.map(e=>e?.ok?e.data.sizeBytes??0:0),f={accountRowsRead:l.ok?l.data.reduce((e,t)=>e+t.rowsRead,0):null,accountRowsWritten:l.ok?l.data.reduce((e,t)=>e+t.rowsWritten,0):null,accountSizeBytes:u.every(e=>e?.ok)?p.reduce((e,t)=>e+t,0):null,accountDatabases:n.data.length},m=[];for(let[t,a]of i.entries()){let r=u[t];void 0!==r&&m.push(await t7(a,r,c.get(a.r.externalId)??null,l.ok,l.ok?null:l.error,f,e))}await td(m),tn(d)}t[a.id]={d1:s,analytics:o,at:t4(e.now),note:null}}await (0,a.db)().insert(h.settings).values({key:t3.f,value:t}).onConflictDoUpdate({target:h.settings.key,set:{value:t,updatedAt:e.now}})}async function t7(e,t,a,r,n,s,o){let i={accountId:e.r.meta.accountId??null,createdAt:e.r.meta.createdAt??null,accountDatabases:s.accountDatabases};return(t.ok?Object.assign(i,{sizeBytes:t.data.sizeBytes,numTables:t.data.numTables,readReplication:t.data.readReplication,detailsAt:t4(o.now),detailsError:null}):"scope"===t.kind?i.detailsError=t.error:o.errors.push(`d1/${e.r.name}: ${t.error}`),r?Object.assign(i,{rowsRead:a?.rowsRead??0,rowsWritten:a?.rowsWritten??0,readQueries:a?.readQueries??0,writeQueries:a?.writeQueries??0,accountRowsRead:s.accountRowsRead,accountRowsWritten:s.accountRowsWritten,usageDay:(0,tZ.Y)(o.now),usageAt:t4(o.now),usageError:null}):i.usageError=n,null!==s.accountSizeBytes&&(i.accountSizeBytes=s.accountSizeBytes),t.ok||"transient"!==t.kind)?tl(e,{...(0,tQ.c)(r?s:{accountRowsRead:null,accountRowsWritten:null}),patch:i},o.now):tl(e,{state:"unknown",label:"Unknown",patch:{}},o.now)}async function ae(e,t,r){let n=new Set,s=await (0,tZ.N)(t,ta(r));if(s.ok)for(let e of s.data)n.add(e.id);for(let t of(await (0,a.db)().select({meta:h.resources.meta}).from(h.resources).where((0,d.and)((0,d.eq)(h.resources.accountId,e),(0,d.eq)(h.resources.kind,"zone"),(0,d.isNull)(h.resources.goneAt))).limit(200)))"string"==typeof t.meta.accountId&&/^[0-9a-f]{32}$/i.test(t.meta.accountId)&&n.add(t.meta.accountId);return[...n].slice(0,5)}async function at(e,t,r,n){let s=(await (0,a.db)().select({id:h.resources.id,externalId:h.resources.externalId,meta:h.resources.meta,goneAt:h.resources.goneAt}).from(h.resources).where((0,d.and)((0,d.eq)(h.resources.accountId,e),(0,d.eq)(h.resources.kind,"d1_database")))).filter(e=>e.meta.accountId===t),o=new Map(s.map(e=>[e.externalId,e])),i=new Set(r.map(e=>e.uuid));await (0,a.db)().transaction(async a=>{for(let s of r){let r={accountId:t,createdAt:s.createdAt},i=o.get(s.uuid);i?await a.update(h.resources).set({name:s.name,meta:r,lastSeenAt:n,goneAt:null,updatedAt:n}).where((0,d.eq)(h.resources.id,i.id)):await a.insert(h.resources).values({accountId:e,kind:"d1_database",externalId:s.uuid,name:s.name,meta:r,monitored:!0,lastSeenAt:n}).onConflictDoNothing({target:[h.resources.accountId,h.resources.kind,h.resources.externalId]})}let l=s.filter(e=>!i.has(e.externalId)&&!e.goneAt).map(e=>e.id);l.length&&await a.update(h.resources).set({goneAt:n,updatedAt:n}).where((0,d.inArray)(h.resources.id,l))})}var aa=e.i(628852);async function ar(e=new Date){let n=(0,ex.randomUUID)(),s=new Date(e.getTime()+aa.d).toISOString(),o=await (0,a.db)().execute(t.sql`
|
|
12
|
+
--${eD}--`)])}async function eE(e,t,a={}){let r=`multipart/related; boundary=${eD}`,n=e=>{if(!e.ok)return e;let a=er.z.object({id:eo.z.string().min(1),size:eu.z.union([eo.z.string(),el.z.number()]).optional()}).safeParse(e.data);return a.success?{ok:!0,data:{id:a.data.id,size:Number(a.data.size??t.content.length)||t.content.length}}:eg("the upload")};if(t.fileId){let s=eT({name:t.name,mimeType:t.mimeType},t.content,t.mimeType),o=await eh("PATCH",`${ep}/${encodeURIComponent(t.fileId)}?uploadType=multipart&fields=id,size`,e,{raw:s,contentType:r},a);if(o.ok||"missing"!==o.kind)return n(o)}let s=eT({name:t.name,mimeType:t.mimeType,parents:[t.folderId]},t.content,t.mimeType);return n(await eh("POST",`${ep}?uploadType=multipart&fields=id,size`,e,{raw:s,contentType:r},a))}async function ex(e,t,a={}){let r=await eh("PATCH",`${ec}/${encodeURIComponent(t)}?fields=id,trashed`,e,{json:{trashed:!0}},a);return r.ok||"missing"===r.kind?{ok:!0,data:void 0}:r}var ez=e.i(666680),eR=e.i(547963);let ej=eR.n.notSet("GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET",!0),e_="invalid_grant: Google Drive access was removed or has expired. Reconnect Google Drive.",eM=er.z.object({error:eo.z.string()});async function eq(e,t){let a,r=t.timeoutMs??1e4;try{a=await (t.fetch??fetch)("https://oauth2.googleapis.com/token",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:e.toString(),signal:AbortSignal.timeout(r),cache:"no-store"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`Google didn't answer within ${Math.round(r/1e3)} seconds.`:"Couldn't reach Google."}}let n=await a.json().catch(()=>null);if(a.ok)return{ok:!0,body:n};let s=eM.safeParse(n).success?n.error:null;return"invalid_grant"===s?{ok:!1,kind:"revoked",error:e_}:"invalid_client"===s||"unauthorized_client"===s?{ok:!1,kind:"client",error:`Google refused the OAuth client. Check GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET ${eR.n.checkWhere}.`}:429===a.status||a.status>=500?{ok:!1,kind:"transient",error:`Google returned an error (${a.status}). The next run tries again.`}:{ok:!1,kind:"format",error:`Google refused the request (${s??a.status}).`}}er.z.object({refresh_token:eo.z.string().min(1),scope:eo.z.string().optional()});let eN=er.z.object({access_token:eo.z.string().min(1)});async function eP(e,t,a={}){let r=await eq(new URLSearchParams({grant_type:"refresh_token",refresh_token:t,client_id:e.clientId,client_secret:e.clientSecret}),a);if(!r.ok)return r;let n=eN.safeParse(r.body);return n.success?{ok:!0,accessToken:n.data.access_token}:{ok:!1,kind:"format",error:"Google answered the token request in a format the console doesn't recognise."}}class eC extends Error{kind;constructor(e,t){super(t),this.kind=e}}async function eO(e){let{month:t,partial:a,now:r}=e,n=function(e=process.env){let t=e.GOOGLE_CLIENT_ID?.trim()??"",a=e.GOOGLE_CLIENT_SECRET?.trim()??"";return a&&/^[\w.-]+\.apps\.googleusercontent\.com$/.test(t)?{clientId:t,clientSecret:a}:null}();if(!n)return{ok:!1,month:t,kind:"env",error:ej};let s=await J();if(!s)return{ok:!1,month:t,kind:"not-connected",error:"Google Drive isn't connected."};if(!s.refreshToken){let e="The stored Google Drive token can't be read (the encryption key changed). Reconnect Google Drive.";return await K(s.id,{status:"error",lastError:e}),{ok:!1,month:t,kind:"failed",error:e}}let o=await X(t),i={sheetFileId:o?.sheetFileId??null,csvFileId:o?.csvFileId??null,driveFolderId:o?.driveFolderId??null},l=o?.status??"error";await Q(t,{status:l,attempts:(o?.attempts??0)+1,startedAt:r});let u=e=>(i={...i,...e},Q(t,{status:l,...e})),d={fetch:e.fetch},c=()=>{if(Date.now()>e.deadline)throw new eC("time","Stopped at the daily job's time budget; the next daily run continues where this one stopped.")},p=e=>{if(!e.ok)throw new eC("failed",e.error);return e.data};try{let o,l=await eP(n,s.refreshToken,d);if(!l.ok){if("revoked"===l.kind)throw await K(s.id,{status:"error",lastError:e_}),new eC("revoked",e_);throw new eC("failed",l.error)}"error"===s.status&&await K(s.id,{status:"ok",lastError:null});let f=l.accessToken;c();let m=await Z(),h=m?.id??null;if(m){let e=p(await ek(f,m.id,d));e.usable?e.name&&e.name!==m.name&&await ee(m.id,e.name):h=null}if(!h){c();let e=p(await ey(f,v,d)),t=e?null:p(await ey(f,I,d));h=e??t??p(await ev(f,v,d)),await ee(h,t?I:v)}let w=await ea(t,a,r);c(),i.sheetFileId||await u({sheetFileId:p(await eI(f,x(t),h,d)),driveFolderId:h}),c();let g=await eA(f,i.sheetFileId,$,d);g.ok||"missing"!==g.kind||(await u({sheetFileId:p(await eI(f,x(t),h,d)),driveFolderId:h}),c(),g=await eA(f,i.sheetFileId,$,d)),p(g),c(),p(await eS(f,i.sheetFileId,function(e){let{start:t,end:a}=D(e.month),r=e.partial&&e.generatedAt<a?e.generatedAt:a,n=e.deployments.filter(M),s=_(e.rollups.map(e=>e.checks)),o=_(e.rollups.map(e=>e.failures)),i=e=>(0,k.G)(e),l=[["Watchbell backup",e.month],["Covers",`${z(t)} to ${z(r)} ${(0,y.zoneName)()}${e.partial?" (month so far)":""}`],["Kind",e.partial?"Partial: Back up now":"Full month"],["Generated",`${z(e.generatedAt)} ${(0,y.zoneName)()}`],[],["Applications watched",e.apps.length],["Uptime, all monitors (%)",R(s,o)],["Checks (rolled-up hours)",s],["Failed checks",o],["Incidents (alerts opened)",e.alerts.length],["Critical incidents",e.alerts.filter(e=>"critical"===e.severity).length],["Production deployments",n.length],["Failed production deployments",n.filter(q).length],["Events",_(e.events.map(e=>e.count))]],u=[["Application","Monitors","Checks","Uptime (%)","p95 response, typical hour (ms)","p95 response, worst hour (ms)","5xx responses","Production deploys","Failed production deploys"]];for(let t of[...e.apps].sort((e,t)=>e.name.localeCompare(t.name))){let a=e.rollups.filter(e=>e.appId===t.id),r=a.map(e=>e.p95Ms).filter(e=>null!==e),s=n.filter(e=>e.appId===t.id);u.push([i(t.name),new Set(a.map(e=>e.monitorId)).size,_(a.map(e=>e.checks)),R(_(a.map(e=>e.checks)),_(a.map(e=>e.failures))),j(r),r.length?Math.max(...r):null,_(a.map(e=>e.status5xx)),s.length,s.filter(q).length])}let d=[["Rule","Severity","Subject",`Started (${(0,y.zoneName)()})`,`Resolved (${(0,y.zoneName)()})`,"Duration","Message"]];for(let t of[...e.alerts].sort((e,t)=>e.startedAt.getTime()-t.startedAt.getTime())){let a=(0,k.o)({title:t.title,message:t.message,causedBy:null,resourceId:t.resourceId},e.book);d.push([t.ruleKey,t.severity,a.title,z(t.startedAt),z(t.resolvedAt),function(e,t,a){let r=Math.max(0,Math.round(((t??a).getTime()-e.getTime())/6e4)),n=r<60?`${r} min`:r<2880?`${Math.floor(r/60)} h ${r%60} min`:`${Math.round(r/1440)} days`;return t?n:`${n} (still open)`}(t.startedAt,t.resolvedAt,r),a.message])}let c=[["Database","Provider","Account","State at backup","Status changes this month","Size (MB)","Neon CU-hours this period","Firestore reads (last reading)"]];for(let t of[...e.databases].sort((t,a)=>(0,k.X)(e.book,t.id).localeCompare((0,k.X)(e.book,a.id)))){let a=_(e.events.filter(e=>"database"===e.type&&e.resourceId===t.id).map(e=>e.count));c.push([(0,k.X)(e.book,t.id),N[t.kind],i(t.account),t.state,a,C(t.sizeBytes),t.cuHours,t.reads])}let p=[["Domain","Application","TLS certificate expires","TLS days left at month end","Domain expires (RDAP)","Domain days left at month end","Registrar"]];for(let t of[...e.domains].sort((e,t)=>e.name.localeCompare(t.name)))p.push([t.name,t.app?i(t.app):"",t.tlsExpires??"",P(t.tlsExpires,r),t.domainExpires??"",P(t.domainExpires,r),t.registrar??""]);return[{title:"Overview",rows:l},{title:"Applications",rows:u},{title:"Incidents",rows:d},{title:"Databases",rows:c},{title:"Domains",rows:p}]}(w),d)),c();let A=(o=function(e){let t=[B.join(",")];for(let a of[...e.rollups].sort((e,t)=>e.hour.getTime()-t.hour.getTime()||e.monitorId.localeCompare(t.monitorId)))t.push(["rollup",a.hour.toISOString(),(0,k.G)(`${a.app}${a.path}`),a.appId,a.checks,a.failures,a.p50Ms,a.p95Ms,a.maxMs,a.status5xx,a.maintenance,null,null,null,null,null,null].map(O).join(","));for(let a of[...e.events].sort((e,t)=>e.at.getTime()-t.at.getTime())){let r=a.resourceId&&e.book.db.some(e=>e.id===a.resourceId)?(0,k.X)(e.book,a.resourceId):(0,k.J)(a.resource??"",e.book);t.push(["event",a.at.toISOString(),r,a.resourceId,null,null,null,null,null,null,null,a.type,a.kind,a.reason,a.count,(0,k.J)(a.message,e.book,a.resourceId),(0,k.J)(a.detail,e.book,a.resourceId)].map(O).join(","))}return`${t.join("\r\n")}\r
|
|
13
|
+
`}(w),(0,b.gzipSync)(Buffer.from(o,"utf8"),{level:9})),S=p(await eE(f,{name:`watchbell-${t}-raw.csv.gz`,mimeType:"application/gzip",folderId:h,content:A,fileId:i.csvFileId},d));await u({csvFileId:S.id}),await Q(t,{status:a?"partial":"ok",sizeBytes:S.size,error:null,finishedAt:new Date});let T=a?null:await eB(f,r,e.deadline,d);return{ok:!0,month:t,retention:T,message:`${E(t)}${a?" so far":""} saved to Google Drive.`}}catch(n){let e=n instanceof eC?n:new eC("failed","The backup failed. The next daily run tries again.");n instanceof eC||console.error("backup failed:",n instanceof Error?n.name:"unknown");let r=a&&"partial"===l?"partial":"error";return await Q(t,{status:r,error:e.message.slice(0,500),finishedAt:new Date}).catch(()=>void 0),{ok:!1,month:t,kind:e.kind,error:e.message}}}async function eB(e,t,a,r){let n=function(e,t){let a=S(t),r=e.filter(e=>"ok"===e.status&&e.month<a).map(e=>e.month).sort().reverse().slice(0,3);if(r.length<3)return[];let n=r[r.length-1];return e.filter(e=>!e.trashedAt&&e.month<n&&(e.sheetFileId||e.csvFileId))}(await Y(),t),s=[];for(let o of n){if(Date.now()>a)break;let n=!0;for(let t of[o.sheetFileId,o.csvFileId])t&&((await ex(e,t,r)).ok||(n=!1));n&&(await Q(o.month,{status:o.status,trashedAt:t}),s.push(E(o.month)))}return s.length?`Moved to Drive trash: ${s.join(", ")}.`:null}async function eF(e,t,a={}){let r=await J();if(!r||"error"===r.status&&r.lastError?.startsWith("invalid_grant"))return null;let n=function(e,t){let a=T(S(t)),r=new Map(e.map(e=>[e.month,e.status]));if("ok"!==r.get(a))return a;let n=a;for(let e=1;e<3;e++)if(n=T(n),"error"===r.get(n))return n;return null}(await Y(),e);if(!n)return null;let s=await eO({month:n,partial:!1,now:e,deadline:t,...a});return s.ok?null:`${E(n)}: ${s.error}`}var eG=e.i(455891),eU=e.i(889234),eL=e.i(328586),eW=e.i(333407),eH=e.i(459702),eV=e.i(200346),eJ=e.i(368230),eK=e.i(584820),eY=e.i(902509),eX=e.i(668141),eQ=e.i(242960),eZ=e.i(112515),e0=e.i(185890);function e1(e){if(!e)return null;if("unknown"!==e.state)return e.state;let t=e.data?.lastGoodState;return"string"==typeof t&&e0.f.includes(t)?t:null}let e3={turso_database:"Turso database",upstash_redis:"Upstash Redis",d1_database:"D1 database"};function e5(e,t){return"auth"===e.kind?"auth":"scope"===e.kind?t?"auth":"column":"missing"===e.kind?t?"unknown":"column":"unknown"}var e4=e.i(35048),e6=e.i(516464),e2=e.i(88316),e8=e.i(437122),e9=e.i(319718),e7=e.i(941536),te=e.i(686454),tt=e.i(122603);let ta="skipped the rest, time budget used";function tr(e){let t=e.deadline-Date.now()-500;if(t<250)throw Error(ta);return{timeoutMs:Math.min(5e3,t)}}async function tn(e,t,a){let r=!1;return{out:await (0,tt.P)(t,3,async t=>{let n;try{n=tr(e)}catch{r=!0;return}return a(t,n)}),skipped:r}}function ts(e){if(e)throw Error(ta)}async function to(e){let t=await (0,a.db)().select().from(w.accounts).where((0,c.and)((0,c.eq)(w.accounts.provider,e),(0,c.eq)(w.accounts.status,"ok"))),r=(0,U.serverEnv)().OPS_ENCRYPTION_KEY;return t.map(e=>({acc:e,credential:(0,F.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},r)}))}function ti(e,t){return(0,a.db)().select({r:w.resources,s:w.snapshots}).from(w.resources).leftJoin(w.snapshots,(0,c.eq)(w.snapshots.resourceId,w.resources.id)).where((0,c.and)((0,c.eq)(w.resources.accountId,e),(0,c.eq)(w.resources.kind,t),(0,c.eq)(w.resources.monitored,!0),(0,c.isNull)(w.resources.goneAt))).limit(100)}let tl=e=>t.sql`${w.snapshots.data} || ${JSON.stringify(e)}::jsonb`;async function tu(e,t,r){let n=e1(e.s?{state:e.s.state,data:e.s.data}:null),s="unknown"===t.state,o=s?n?{lastGoodState:n}:{}:{...t.patch,lastGoodState:t.state},i=!s&&n!==t.state;return await (0,a.db)().insert(w.snapshots).values({resourceId:e.r.id,state:t.state,data:o,collectedAt:r,stateSince:r}).onConflictDoUpdate({target:w.snapshots.resourceId,set:{state:t.state,data:tl(o),...s?{}:{collectedAt:r},...i?{stateSince:r}:{}}}),s?null:function(e){let{prev:t,next:a}=e;if(null===t||"unknown"===t||"unknown"===a||t===a)return null;let r={resourceId:e.resourceId,type:"database",at:e.at};if("supabase_project"===e.kind)return"paused"===a?{...r,reason:"DatabasePaused",kind:"paused",message:"Supabase project paused",detail:"Status changed to INACTIVE"}:"ok"===a?{...r,reason:"DatabaseRestored",kind:"ok",message:"Supabase project active again",detail:"Status changed to ACTIVE_HEALTHY"}:"warn"===a?{...r,reason:"DatabaseUnhealthy",kind:"warn",message:"Supabase project unhealthy",detail:e.label}:"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`Supabase project: ${e.label.toLowerCase()}`,detail:e.label}:null;if("neon_project"===e.kind)return"err"===a?{...r,reason:"NeonSuspended",kind:"err",message:"Neon compute suspended",detail:e.label}:"err"===t&&("ok"===a||"idle"===a)?{...r,reason:"NeonAvailable",kind:"ok",message:"Neon compute available again",detail:e.label}:null;let n=e3[e.kind];if(n)return"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`${n}: ${e.label.toLowerCase()}`,detail:e.label}:"off"===a?{...r,reason:"DatabaseMissing",kind:"off",message:`${n} missing`,detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"DatabaseRestored",kind:"ok",message:`${n} available again`,detail:e.label}:null;if("err"===a){let t="Daily quota used up"===e.label;return{...r,reason:t?"FirestoreQuotaUsedUp":"FirestoreUnreachable",kind:"err",message:t?"Firestore daily quota used up":"Firestore not reachable",detail:e.label}}return"off"===a?{...r,reason:"FirestoreMissing",kind:"off",message:"Firestore database missing",detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"FirestoreReachable",kind:"ok",message:"Firestore reachable again",detail:e.label}:null}({kind:e.r.kind,resourceId:e.r.id,prev:n,next:t.state,label:t.label,at:r})}async function td(e,t){await (0,a.db)().update(w.snapshots).set({data:tl(t)}).where((0,c.eq)(w.snapshots.resourceId,e.r.id))}let tc=e=>(0,eW.f)(e);async function tp(e,t,r,n,s){if("auth"===e5(n,!0)){let e=(0,eZ.E)({ok:!1,kind:"auth",error:n.error});e&&await (0,a.db)().update(w.accounts).set({...e,updatedAt:s.now}).where((0,c.eq)(w.accounts.id,t.id))}for(let e of r)await tu(e,{state:"unknown",label:"Unknown",patch:{}},s.now);s.errors.push(`${e}/${t.label}: ${n.error}`)}let tf=e=>e.toISOString();async function tm(e){return e.length?new Set((await (0,a.db)().select({app:w.links.fromResourceId,state:w.snapshots.state,data:w.snapshots.data}).from(w.links).innerJoin(w.resources,(0,c.eq)(w.resources.id,w.links.toResourceId)).innerJoin(w.snapshots,(0,c.eq)(w.snapshots.resourceId,w.resources.id)).where((0,c.and)((0,c.eq)(w.links.kind,"uses_db"),(0,c.inArray)(w.links.fromResourceId,e),(0,c.eq)(w.resources.monitored,!0),(0,c.isNull)(w.resources.goneAt)))).filter(e=>"paused"===e.state||"unknown"===e.state&&"paused"===e.data.lastGoodState).map(e=>e.app)):new Set}async function th(e){if(!e.protectOnly||await (0,eV.g)())for(let{acc:t,credential:a}of(await to("supabase"))){if(tr(e),!a){e.errors.push(`supabase/${t.label}: credential can't be read`);continue}let r=await ti(t.id,"supabase_project");if(!r.length)continue;let n=await (0,te.W)(a,tr(e));if(!n.ok){e.protectOnly?e.errors.push(`supabase/${t.label}: ${n.error}`):await tp("supabase",t,r,n,e);continue}let s=new Map(n.data.map(e=>[e.ref,e])),o=[];for(let t of e.protectOnly?[]:r){let a=s.get(t.r.externalId);if(!a){o.push(await tu(t,{state:"off",label:"Not found",patch:{status:"REMOVED"}},e.now));continue}let r=(0,e2.P)(a.status),n=e1(t.s?{state:t.s.state,data:t.s.data}:null),i={status:a.status,region:a.region,pgVersion:a.pgVersion,orgSlug:a.orgSlug};"paused"===r.state&&"paused"!==n&&(i.pausedBeforeSeen=null===n),o.push(await tu(t,{state:r.state,label:r.label,patch:i},e.now))}await tc(o);let i=new Map(r.map(e=>[e.r.externalId,e.r.id])),l=n.data.map(e=>({resourceId:i.get(e.ref)??null,accountId:t.id,status:e.status,orgSlug:e.orgSlug}));await (0,eV.z)(e.now,l,e.deadline).catch(()=>{console.warn("auto-restore failed"),e.errors.push("auto-restore failed")})}}async function tw(e){for(let{acc:t,credential:a}of(await to("supabase"))){if(tr(e),!a)continue;let r=await ti(t.id,"supabase_project");if(!r.length)continue;let n=new Map(r.map(e=>[e.r.id,(0,G.k)(G.B,e.s?.data)])),s=new Map;for(let r of new Set([...n.values()].map(e=>e.orgSlug).filter(e=>!!e))){let n=await (0,te.K)(a,r,tr(e));s.set(r,n.ok&&null!==n.data?"free"===n.data:null),n.ok||"scope"===n.kind||e.errors.push(`supabase/${t.label} plan: ${n.error}`)}let{skipped:o}=await tn(e,r,async(t,r)=>{let o=n.get(t.r.id),i={freeOrg:o.orgSlug?s.get(o.orgSlug)??null:null};if((o.status??"").startsWith("ACTIVE_")){let[n,s]=await Promise.all([(0,te.F)(a,t.r.externalId,r),(0,te.Z)(a,t.r.externalId,r)]);n.ok?Object.assign(i,{health:n.data.map(({name:e,status:t})=>({name:e,status:t})),healthAt:tf(e.now),healthError:null}):"column"===e5(n,!1)?i.healthError=n.error:e.errors.push(`supabase/${t.r.name} health: ${n.error}`),s.ok?Object.assign(i,{lastTrafficAt:(0,e2.H)(s.data)?.toISOString()??null,trafficAt:tf(e.now),trafficError:null}):"column"===e5(s,!1)?i.trafficError=s.error:e.errors.push(`supabase/${t.r.name} traffic: ${s.error}`)}await td(t,i)});ts(o)}}async function tg(e){for(let{acc:t,credential:a}of(await to("neon"))){if(tr(e),!a){e.errors.push(`neon/${t.label}: credential can't be read`);continue}let r=await ti(t.id,"neon_project");if(!r.length)continue;let{out:n,skipped:s}=await tn(e,r,(e,t)=>Promise.all([(0,e7.Z)(a,e.r.externalId,t),(0,e7.k)(a,e.r.externalId,t),(0,e7.e)(a,e.r.externalId,t)])),o=n.flat().find(e=>void 0!==e&&!e.ok&&"auth"===e.kind);if(o){await tp("neon",t,r,o,e);continue}let i=[];for(let[t,a]of r.entries()){let r=n[t];if(!r)continue;let[s,o,l]=r;if(!s.ok||!o.ok||!l.ok){let t=[s,o,l].find(e=>!e.ok);"missing"===t.kind?i.push(await tu(a,{state:"off",label:"Not found",patch:{}},e.now)):(await tu(a,{state:"unknown",label:"Unknown",patch:{}},e.now),e.errors.push(`neon/${a.r.name}: ${t.error}`));continue}let u=(0,e6.p)({endpoints:o.data,computeSeconds:s.data.computeSeconds});i.push(await tu(a,{state:u.state,label:u.label,patch:{region:s.data.region,pgVersion:s.data.pgVersion,computeSeconds:s.data.computeSeconds,transferBytes:s.data.transferBytes,activeSeconds:s.data.activeSeconds,periodStart:s.data.periodStart,periodEnd:s.data.periodEnd,endpoints:o.data,branches:l.data}},e.now))}await tc(i),ts(s)}}async function tb(e){for(let{acc:t,credential:a}of(await to("firebase"))){tr(e);let r=a?(0,e9.p)(a):null;if(!r){e.errors.push(`firebase/${t.label}: credential can't be read`);continue}let n=await ti(t.id,"firestore");if(!n.length)continue;let s=await (0,e9.X)(r,tr(e));if(!s.ok){await tp("firebase",t,n,s,e);continue}let{out:o,skipped:i}=await tn(e,n,(e,t)=>(0,e8.G)(s.data,e.r.externalId,t)),l=[];for(let[t,a]of n.entries()){let r=o[t];if(!r)continue;let n=(0,e4.g)(r);"unknown"!==n.state||r.ok||e.errors.push(`firebase/${a.r.name}: ${r.error}`);let s=r.ok?{latencyMs:r.data.latencyMs,pingError:null,pingReason:null,pingKind:null}:{pingError:r.error,pingReason:r.reason??null,pingKind:r.kind};l.push(await tu(a,{...n,patch:s},e.now))}await tc(l),ts(i)}}async function ty(e){for(let{acc:t,credential:a}of(await to("firebase"))){tr(e);let r=a?(0,e9.p)(a):null;if(!r)continue;let n=(await ti(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,e9.X)(r,tr(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let o=(0,e4.a)(e.now),{skipped:i}=await tn(e,n,async(t,a)=>{let r=await (0,e8.W)(s.data,t.r.externalId,o,e.now,a);r.ok?await td(t,{...r.data,opsAt:tf(e.now),opsError:null}):"column"===e5(r,!1)?await td(t,{reads:null,writes:null,deletes:null,opsAt:tf(e.now),opsError:/requires billing/i.test(r.message??"")?"Not available on Spark: Firestore usage needs billing (Blaze plan)":"SERVICE_DISABLED"===r.reason?"Not readable: the Cloud Monitoring API is off in this project":"Not readable: the service account needs monitoring.viewer"}):e.errors.push(`firebase/${t.r.name} usage: ${r.error}`)});ts(i)}}async function tk(e){let t=Date.now()+2*Math.max(0,e.deadline-Date.now())/3,a=await tv(()=>tI({...e,deadline:t})),r=await tv(()=>t$(e));if(a)throw a;if(r)throw r}async function tv(e){try{return await e(),null}catch(e){return e instanceof Error?e:Error(String(e))}}async function tI(e){for(let{acc:t,credential:a}of(await to("supabase")))if(tr(e),a)for(let r of(await ti(t.id,"supabase_project"))){let t=(0,G.k)(G.B,r.s?.data);if(!(0,e2.z)({status:t.status??"",lastTrafficAt:t.lastTrafficAt?new Date(t.lastTrafficAt):null,sizeAt:t.sizeAt?new Date(t.sizeAt):null,now:e.now}))continue;let n=await (0,te.r)(a,r.r.externalId,tr(e));n.ok?await td(r,{sizeBytes:n.data,sizeAt:tf(e.now),sizeError:null}):"column"===e5(n,!1)?await td(r,{sizeError:n.error}):e.errors.push(`supabase/${r.r.name} size: ${n.error}`)}}async function t$(e){for(let{acc:t,credential:a}of(await to("firebase"))){tr(e);let r=a?(0,e9.p)(a):null;if(!r)continue;let n=(await ti(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,e9.X)(r,tr(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let{skipped:o}=await tn(e,n,async(t,a)=>{let r=await (0,e8.q)(s.data,t.r.externalId,a);r.ok?await td(t,{authUsers:r.data,authAt:tf(e.now),authError:null}):"column"===e5(r,!1)?await td(t,{authError:"Not readable: the service account needs firebaseauth.viewer"}):e.errors.push(`firebase/${t.r.name} users: ${r.error}`)});ts(o)}}var tA=e.i(369179),tS=e.i(476866),tD=e.i(873083),tT=e.i(649297),tE=e.i(541211);let tx={github:"devops",deps:"devops",databases:"database",security:"hosting"};async function tz(e){let[t]=await (0,a.db)().select({hour:(0,p.max)(w.rollupsHourly.hour)}).from(w.rollupsHourly),r=(0,tT.r)(t?.hour??null,e),n=await (0,a.db)().select().from(w.checks).where((0,c.and)((0,c.gte)(w.checks.at,r),(0,c.lt)(w.checks.at,(0,tT.b)(e)))).orderBy(w.checks.at),s=new Map;for(let e of n){let t=`${e.monitorId}|${(0,tT.b)(e.at).toISOString()}`,a=s.get(t);a?a.push(e):s.set(t,[e])}for(let[e,t]of s){let[r,n]=e.split("|"),s=(0,tT.z)(t);await (0,a.db)().insert(w.rollupsHourly).values({monitorId:r,hour:new Date(n),...s}).onConflictDoUpdate({target:[w.rollupsHourly.monitorId,w.rollupsHourly.hour],set:s})}}async function tR(e){let t=await (0,tS.J)().catch(()=>tA.f);await (0,a.db)().delete(w.checks).where((0,c.lt)(w.checks.at,new Date(e.getTime()-864e5*t.checks))),await (0,a.db)().delete(w.rollupsHourly).where((0,c.lt)(w.rollupsHourly.hour,new Date(e.getTime()-864e5*t.rollupsHourly))),await (0,a.db)().delete(w.deployments).where((0,c.and)((0,c.lt)(w.deployments.createdAtProvider,new Date(e.getTime()-864e5*t.deployments)),(0,c.eq)(w.deployments.isCurrent,!1),(0,c.eq)(w.deployments.isPreviousProduction,!1))),await (0,a.db)().delete(w.events).where((0,c.lt)(w.events.at,new Date(e.getTime()-864e5*t.events))),await (0,a.db)().delete(w.alerts).where((0,c.and)((0,c.isNotNull)(w.alerts.resolvedAt),(0,c.lt)(w.alerts.resolvedAt,new Date(e.getTime()-864e5*t.alerts)))),await (0,a.db)().delete(w.collectorRuns).where((0,c.lt)(w.collectorRuns.startedAt,new Date(e.getTime()-864e5*t.collectorRuns))),await (0,a.db)().delete(w.storedLogs).where((0,c.lt)(w.storedLogs.at,new Date(e.getTime()-864e5*t.storedLogs))),await (0,a.db)().delete(w.recommendationDismissals).where((0,c.lt)(w.recommendationDismissals.dismissedAt,new Date(e.getTime()-864e5*t.recommendationDismissals)))}async function tj(){let e=new Date,[t]=await (0,a.db)().insert(w.collectorRuns).values({startedAt:e,trigger:"vercel_cron"}).returning({id:w.collectorRuns.id}),r=[],n=await (0,l.I)(),s=[["rollups",()=>tz(e)],["backup",async()=>{let t=await eF(e,e.getTime()+2e4);t&&r.push(`backup: ${t}`)}],["retention",()=>tR(e)],["sync",async()=>{let t=(await (0,a.db)().select({id:w.accounts.id,label:w.accounts.label,provider:w.accounts.provider}).from(w.accounts).where((0,c.inArray)(w.accounts.provider,eX.I))).filter(e=>!n.has(tD.D[e.provider]??"manage"));for(let[a,n]of t.entries()){if(Date.now()>e.getTime()+25e3){r.push(`sync: ${t.length-a} account${t.length-a>1?"s":""} left for the next run, time budget used`);break}let s=await (0,eQ.k)(n.id);s.ok?(s.skippedTeams.length&&r.push(`sync ${n.provider}/${n.label}: skipped teams ${s.skippedTeams.join(", ")} (no access)`),s.overLimit&&r.push(`sync ${n.provider}/${n.label}: ${s.overLimit}`)):r.push(`sync ${n.provider}/${n.label}: ${s.error}`)}}],["github",async()=>{let t=await (0,eL.D)(Math.min(Date.now()+6e3,e.getTime()+35e3));t&&r.push(`github: ${t}`)}],["deps",async()=>{let t=await (0,eU.e)(Math.min(Date.now()+eU.o,e.getTime()+eU.R));t&&r.push(`deps: ${t}`)}],["databases",()=>tk({now:e,deadline:Math.min(Date.now()+15e3,e.getTime()+5e4),errors:r})],["keep-active",()=>(0,eV.V)(e,Math.min(Date.now()+5e3,e.getTime()+5e4),r)],["security",async()=>{for(let t of(await (0,eK.h)((0,eY.F)(e.getTime(),Date.now()))).failed)r.push(`security ${t}`)}],["advisor",async()=>{await (0,eG.O)(e)}]],o=[];try{for(let[e,t]of s)if(!n.has(tx[e]))try{await t(),o.push(e)}catch(t){r.push(`${e}: ${(0,tE.safeError)(t)}`)}await (0,eW.f)([{type:"system",kind:r.length?"warn":"info",message:r.length?"Daily jobs finished with problems":"Daily jobs finished",detail:"Rollups, the monthly backup when due, retention, a sync of every account, database sizes, the Next.js security check and the Advisor",resourceId:null}])}catch(e){r.push(`events: ${(0,tE.safeError)(e)}`)}finally{m(h.t),await (0,a.db)().update(w.collectorRuns).set({finishedAt:new Date,ok:0===r.length,errorSummary:r.join("\n").slice(0,2e3)||null,durationMs:Date.now()-e.getTime(),tasks:o}).where((0,c.eq)(w.collectorRuns.id,t.id)).catch(()=>void 0)}await t_(r.length>0);let i=Date.now()-e.getTime();return{skipped:!1,ok:0===r.length,tasks:o,checks:0,durationMs:i,errors:r}}async function t_(e){let t=process.env.DAILY_HEARTBEAT_TOKEN;if(!t)return;let a=(0,eJ.i)(t);if(!a)return void console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN holds no single hb_ token; set it to the heartbeat's token");let r=await (0,eH._)(a,e?"fail":"ok",new Date).catch(e=>(console.warn("daily heartbeat: the ping couldn't be stored:",e instanceof Error?e.name:"error"),null));r?.status==="unknown"?console.warn("daily heartbeat: DAILY_HEARTBEAT_TOKEN matches no heartbeat monitor (was it regenerated?)"):r?.status==="limited"&&console.warn("daily heartbeat: the ping was rate limited")}async function tM(e,t,a=new Date){if(e.skipped||0===t.length)return e;let r=[...e.tasks],n=[...e.errors];for(let e of t)try{await e.run(a),r.push(e.name)}catch(t){n.push(`${e.name}: ${(0,tE.safeError)(t)}`)}return{...e,tasks:r,errors:n,ok:0===n.length}}var tq=e.i(234195),tN=e.i(706959),tP=e.i(451682),tC=e.i(373200),tO=e.i(753535),tB=e.i(932378),tF=e.i(313903);let tG=/not enabled/i,tU=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),tL="Vercel Web Analytics answered in a format the console doesn't recognise.",tW=er.z.object({data:er.z.object({pageviews:el.z.number().finite().nonnegative(),visitors:el.z.number().finite().nonnegative()})}),tH=er.z.object({data:en.z.array(tB.z.unknown())}),tV=er.z.object({timestamp:eo.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),tF.z.NEVER):a}),pageviews:el.z.number().finite().nonnegative().nullish().catch(null)});async function tJ(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),o=r.fetch??fetch,i=new AbortController,l=setTimeout(()=>i.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),u=r.signal?AbortSignal.any([i.signal,r.signal]):i.signal,d=(0,tt.X)(u);async function c(l,c){let p=new URLSearchParams({projectId:a,teamId:t,...c,since:n,until:s});try{let t=await Promise.race([o(`https://api.vercel.com/v1/query/web-analytics/visits/${l}?${p}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:u,cache:"no-store"}),d]),a=null,r=!1;if(401===t.status||403===t.status)a=tU("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=tU("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),d]).catch(()=>"");tG.test(e)?r=!0:a=tU("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=tU("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),d])}}catch(e){if(u.aborted)throw e;return{kind:"fail",fail:tU("format",tL)}}}catch{return{kind:"fail",fail:u.aborted?i.signal.aborted&&!r.signal?.aborted?tU("transient","Vercel Web Analytics didn't answer in time."):tU("transient","Reading Vercel Web Analytics was cancelled."):tU("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([c("count",{}),c("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?tH.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:tU("format",tL),o=a.find(e=>"transient"===e.kind);if(o)return o;if(s)return s;if(!n?.success)return tU("format",tL);let i="body"===e.kind?tW.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=tV.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return tU("format",tL);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(i?.success)return{ok:!0,enabled:!0,total:i.data.data.pageviews,visitors:i.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(l),i.abort()}}var tK=e.i(178233);async function tY(e,t,a){let r=await (0,tP.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,tt.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await tJ(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,tO.r)(r.appId,{pageviews:(0,tK.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}var tX=e.i(147100),tQ=e.i(764266),tZ=e.i(198552),t0=e.i(27479),t1=e.i(707866),t3=e.i(392710),t5=e.i(582888),t4=e.i(811539),t6=e.i(725321);async function t2(e){let t=[await tv(()=>t9(e)),await tv(()=>ae(e)),await tv(()=>at(e))].find(e=>null!==e);if(t)throw t}let t8=e=>e.toISOString();async function t9(e){for(let{acc:t,credential:a}of(await to("turso"))){if(tr(e),!a){e.errors.push(`turso/${t.label}: credential can't be read`);continue}let r=await ti(t.id,"turso_database");if(!r.length)continue;let n=await (0,t5.u)(a,tr(e));if(!n.ok){await tp("turso",t,r,n,e);continue}let s=new Set(r.map(e=>String(e.r.meta.org??""))),o=[];for(let i of n.data.filter(e=>s.has(e.slug))){let[n,s]=await Promise.all([(0,t5.X)(a,i.slug,tr(e)),(0,t5.d)(a,i.slug,tr(e))]),l=r.filter(e=>e.r.meta.org===i.slug);if(!n.ok){for(let t of l)await tu(t,{state:"unknown",label:"Unknown",patch:{}},e.now);e.errors.push(`turso/${t.label}: ${n.error}`);continue}let u=new Map(n.data.map(e=>[e.id,e]));for(let t of l)o.push(await t7(t,u.get(t.r.externalId),i,s,e))}let i=new Set(n.data.map(e=>e.slug));for(let t of r.filter(e=>!i.has(String(e.r.meta.org??""))))o.push(await tu(t,{state:"off",label:"Organization not visible to this token",patch:{}},e.now));await tc(o)}}async function t7(e,t,a,r,n){if(!t)return tu(e,{state:"off",label:"Not found",patch:{}},n.now);let s=(0,t1.h)({blockReads:t.blockReads,blockWrites:t.blockWrites,orgBlockedReads:a.blockedReads,orgBlockedWrites:a.blockedWrites}),o={org:a.slug,group:t.group,primaryRegion:t.primaryRegion,plan:a.plan,blockReads:t.blockReads,blockWrites:t.blockWrites};if(r.ok){let e=r.data.byDb.get(t.id);Object.assign(o,{rowsRead:e?.rowsRead??null,rowsWritten:e?.rowsWritten??null,storageBytes:e?.storageBytes??null,orgRowsRead:r.data.org.rowsRead,orgRowsWritten:r.data.org.rowsWritten,orgStorageBytes:r.data.org.storageBytes,orgDatabases:r.data.org.databases,usageAt:t8(n.now),usageError:null})}else"column"===e5(r,!1)?o.usageError=r.error:n.errors.push(`turso/${e.r.name} usage: ${r.error}`);return tu(e,{...s,patch:o},n.now)}async function ae(e){for(let{acc:t,credential:a}of(await to("upstash"))){tr(e);let r=a?(0,t4.L)(a):null;if(!r){e.errors.push(`upstash/${t.label}: credential can't be read`);continue}let n=await ti(t.id,"upstash_redis");if(!n.length)continue;let s=await (0,t4.M)(r,tr(e));if(!s.ok){await tp("upstash",t,n,s,e);continue}let o=new Map(s.data.map(e=>[e.id,e])),{out:i,skipped:l}=await tn(e,n,(e,t)=>o.has(e.r.externalId)?(0,t4.Z)(r,e.r.externalId,t):Promise.resolve(null)),u=[];for(let[t,a]of n.entries()){let r=o.get(a.r.externalId);if(!r){u.push(await tu(a,{state:"off",label:"Not found",patch:{}},e.now));continue}let n=(0,t1.t)(r.state),s={region:r.region,status:r.state,type:r.type},l=i[t];l?.ok?Object.assign(s,{...l.data,statsAt:t8(e.now),statsError:null}):l&&"column"===e5(l,!1)?s.statsError=l.error:l&&e.errors.push(`upstash/${a.r.name} stats: ${l.error}`),u.push(await tu(a,{...n,patch:s},e.now))}await tc(u),ts(l)}}async function at(e){let t={};for(let{acc:a,credential:r}of(await to("cloudflare"))){if(tr(e),!r)continue;let n=await ar(a.id,r,e);if(!n.length){t[a.id]={d1:"error",analytics:null,at:t8(e.now),note:"No Cloudflare account found for this token"};continue}let s="ok",o=null;for(let t of n){let n=await (0,t3.L)(r,t,tr(e));if(!n.ok){"error"==(s="scope"===n.kind||"auth"===n.kind?"missing":"error")&&e.errors.push(`d1/${a.label}: ${n.error}`);continue}await an(a.id,t,n.data,e.now);let i=(await ti(a.id,"d1_database")).filter(e=>e.r.meta.accountId===t);if(!i.length)continue;let l=await (0,t3.t)(r,t,(0,t3.Y)(e.now),tr(e));o=l.ok?o??"ok":"scope"===l.kind?"missing":o??"error",l.ok||"scope"===l.kind||e.errors.push(`d1/${a.label} analytics: ${l.error}`);let{out:u,skipped:d}=await tn(e,i,(e,a)=>(0,t3.m)(r,t,e.r.externalId,a)),c=new Map((l.ok?l.data:[]).map(e=>[e.databaseId,e])),p=u.map(e=>e?.ok?e.data.sizeBytes??0:0),f={accountRowsRead:l.ok?l.data.reduce((e,t)=>e+t.rowsRead,0):null,accountRowsWritten:l.ok?l.data.reduce((e,t)=>e+t.rowsWritten,0):null,accountSizeBytes:u.every(e=>e?.ok)?p.reduce((e,t)=>e+t,0):null,accountDatabases:n.data.length},m=[];for(let[t,a]of i.entries()){let r=u[t];void 0!==r&&m.push(await aa(a,r,c.get(a.r.externalId)??null,l.ok,l.ok?null:l.error,f,e))}await tc(m),ts(d)}t[a.id]={d1:s,analytics:o,at:t8(e.now),note:null}}await (0,a.db)().insert(w.settings).values({key:t6.f,value:t}).onConflictDoUpdate({target:w.settings.key,set:{value:t,updatedAt:e.now}})}async function aa(e,t,a,r,n,s,o){let i={accountId:e.r.meta.accountId??null,createdAt:e.r.meta.createdAt??null,accountDatabases:s.accountDatabases};return(t.ok?Object.assign(i,{sizeBytes:t.data.sizeBytes,numTables:t.data.numTables,readReplication:t.data.readReplication,detailsAt:t8(o.now),detailsError:null}):"scope"===t.kind?i.detailsError=t.error:o.errors.push(`d1/${e.r.name}: ${t.error}`),r?Object.assign(i,{rowsRead:a?.rowsRead??0,rowsWritten:a?.rowsWritten??0,readQueries:a?.readQueries??0,writeQueries:a?.writeQueries??0,accountRowsRead:s.accountRowsRead,accountRowsWritten:s.accountRowsWritten,usageDay:(0,t3.Y)(o.now),usageAt:t8(o.now),usageError:null}):i.usageError=n,null!==s.accountSizeBytes&&(i.accountSizeBytes=s.accountSizeBytes),t.ok||"transient"!==t.kind)?tu(e,{...(0,t1.c)(r?s:{accountRowsRead:null,accountRowsWritten:null}),patch:i},o.now):tu(e,{state:"unknown",label:"Unknown",patch:{}},o.now)}async function ar(e,t,r){let n=new Set,s=await (0,t3.N)(t,tr(r));if(s.ok)for(let e of s.data)n.add(e.id);for(let t of(await (0,a.db)().select({meta:w.resources.meta}).from(w.resources).where((0,c.and)((0,c.eq)(w.resources.accountId,e),(0,c.eq)(w.resources.kind,"zone"),(0,c.isNull)(w.resources.goneAt))).limit(200)))"string"==typeof t.meta.accountId&&/^[0-9a-f]{32}$/i.test(t.meta.accountId)&&n.add(t.meta.accountId);return[...n].slice(0,5)}async function an(e,t,r,n){let s=(await (0,a.db)().select({id:w.resources.id,externalId:w.resources.externalId,meta:w.resources.meta,goneAt:w.resources.goneAt}).from(w.resources).where((0,c.and)((0,c.eq)(w.resources.accountId,e),(0,c.eq)(w.resources.kind,"d1_database")))).filter(e=>e.meta.accountId===t),o=new Map(s.map(e=>[e.externalId,e])),i=new Set(r.map(e=>e.uuid));await (0,a.db)().transaction(async a=>{for(let s of r){let r={accountId:t,createdAt:s.createdAt},i=o.get(s.uuid);i?await a.update(w.resources).set({name:s.name,meta:r,lastSeenAt:n,goneAt:null,updatedAt:n}).where((0,c.eq)(w.resources.id,i.id)):await a.insert(w.resources).values({accountId:e,kind:"d1_database",externalId:s.uuid,name:s.name,meta:r,monitored:!0,lastSeenAt:n}).onConflictDoNothing({target:[w.resources.accountId,w.resources.kind,w.resources.externalId]})}let l=s.filter(e=>!i.has(e.externalId)&&!e.goneAt).map(e=>e.id);l.length&&await a.update(w.resources).set({goneAt:n,updatedAt:n}).where((0,c.inArray)(w.resources.id,l))})}var as=e.i(628852);async function ao(e=new Date){let n=(0,ez.randomUUID)(),s=new Date(e.getTime()+as.d).toISOString(),o=await (0,a.db)().execute(t.sql`
|
|
14
14
|
insert into ops.settings (key, value) values ('collector.lease', ${JSON.stringify({until:s,owner:n})}::jsonb)
|
|
15
15
|
on conflict (key) do update set value = excluded.value, updated_at = now()
|
|
16
16
|
where (ops.settings.value->>'until')::timestamptz < ${e.toISOString()}::timestamptz
|
|
17
|
-
returning key`);return(0,r.f)(o).length>0?n:null}async function
|
|
17
|
+
returning key`);return(0,r.f)(o).length>0?n:null}async function ai(e){await (0,a.db)().execute(t.sql`
|
|
18
18
|
update ops.settings set value = jsonb_build_object('until', '1970-01-01T00:00:00Z'), updated_at = now()
|
|
19
|
-
where key = 'collector.lease' and value->>'owner' = ${e}`)}var as=e.i(991219),ao=e.i(149398),ai=e.i(467404),al=e.i(816173);e.i(247714);let au="collector.lastRun",ad="vercel.backoffUntil",ac="vercel.currentMiss",ap={supabase:tm,supabaseUsage:th,neon:tw,firebase:tg,firebaseUsage:tb,extraDbs:t5};async function af(){let[e]=await (0,a.db)().select().from(h.settings).where((0,d.eq)(h.settings.key,au)).limit(1);return e?.value??{}}async function am(e){await (0,a.db)().insert(h.settings).values({key:au,value:e}).onConflictDoUpdate({target:h.settings.key,set:{value:e,updatedAt:new Date}})}let ah=e=>(0,eL.f)(e);async function aw(e,r,n,s,o=[]){let i=(await (0,a.db)().select({m:h.monitors,app:h.resources}).from(h.monitors).innerJoin(h.resources,(0,d.eq)(h.resources.id,h.monitors.resourceId)).where((0,d.and)((0,d.eq)(h.monitors.kind,"http"),(0,d.eq)(h.monitors.paused,!1),(0,d.eq)(h.monitors.ownerPaused,!1),(0,d.eq)(h.resources.monitored,!0),(0,d.isNull)(h.resources.goneAt))).orderBy(t.sql`${h.monitors.lastCheckedAt} asc nulls first`,h.monitors.id)).filter(({m:t})=>(0,aa.B)(t.lastCheckedAt,e,s));if(!i.length)return 0;let l=await (0,te.P)(i,6,({m:e})=>{let t=(0,aa.P)(e.timeoutMs,r,Date.now());return null===t?Promise.resolve(null):(0,te.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,ao.C)(e)})}),u=i.flatMap((e,t)=>l[t]?[{...e,r:l[t]}]:[]);if(u.length<i.length&&n.push(`checks: ${i.length-u.length} monitors skipped, time budget used`),!u.length)return 0;let c=[];for(let t of u)await (0,ai.f)(t.m,t.r,e)&&c.push(t);return c.length?(await (0,a.db)().insert(h.checks).values(c.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,tK.x)(o,{monitorId:t.id,appId:a.id},e)}))),await ah(c.map(({m:t,app:a,r})=>(0,al.F)({resourceId:a.id,path:(0,tX.K)(t.url),prev:t.state,next:(0,al.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),c.length):0}let ag=["checks","heartbeats"];async function ab(e,t,a=t_.f){if(!ag.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,tD.safeError)(e)}`),[]}}async function ak(e){let[t]=await (0,a.db)().select().from(h.settings).where((0,d.eq)(h.settings.key,ad)).limit(1),r=t?.value?.until;return!!r&&e.getTime()<new Date(r).getTime()}async function ay(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let r={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,a.db)().insert(h.settings).values({key:ad,value:r}).onConflictDoUpdate({target:h.settings.key,set:{value:r,updatedAt:t}}),!0}let av=e=>t.sql`coalesce(${h.deployments.externalId} = ${e}::text, false)`;async function aI(e,r,n){if(await ak(e))return;let s=(0,G.serverEnv)().OPS_ENCRYPTION_KEY;for(let o of(await (0,a.db)().select().from(h.accounts).where((0,d.and)((0,d.eq)(h.accounts.provider,"vercel"),(0,d.eq)(h.accounts.status,"ok"))))){let i=(0,B.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},s);if((0,eQ.A)(i)||!i){n.push(`vercel/${o.label}: credential can't be read`);continue}let l=await (0,a.db)().select().from(h.resources).where((0,d.and)((0,d.eq)(h.resources.accountId,o.id),(0,d.eq)(h.resources.kind,"app"),(0,d.eq)(h.resources.monitored,!0),(0,d.isNull)(h.resources.goneAt)));if(!l.length)continue;let u=new Map(l.map(e=>[e.externalId,e])),c=await (0,tY.X)(i);if(!c.ok){let t=(0,eQ.E)({ok:!1,kind:c.kind,error:c.error});if(t&&await (0,a.db)().update(h.accounts).set({...t,updatedAt:e}).where((0,d.eq)(h.accounts.id,o.id)),n.push(`vercel/${o.label}: ${c.error}`),await ay(c,e))return;continue}let p=new Set(l.map(e=>String(e.meta.teamId)));for(let s of c.data.filter(e=>p.has(e.id))){if(Date.now()>r)return void n.push("vercel: skipped remaining teams, time budget used");let[o,c]=await Promise.all([(0,tY.W)(i,s),(0,tY.K)(i,s,{since:e.getTime()-6048e5,limit:100})]);if(!o.ok||!c.ok){let t=o.ok?c:o;if(n.push(`vercel/${s.name}: ${t.error}`),await ay(t,e))return;continue}let p=new Map(o.data.map(e=>[e.id,e.currentDeploymentId])),f=c.data.filter(e=>u.has(e.projectId)),m=new Map((f.length?await (0,a.db)().select({externalId:h.deployments.externalId,state:h.deployments.state,target:h.deployments.target,branch:h.deployments.branch,commitSha:h.deployments.commitSha,commitMessage:h.deployments.commitMessage,source:h.deployments.source,url:h.deployments.url,buildingAt:h.deployments.buildingAt,readyAt:h.deployments.readyAt}).from(h.deployments).where((0,d.inArray)(h.deployments.externalId,f.map(e=>e.id))):[]).map(e=>[e.externalId,e])),w=[];for(let t of f){let r=u.get(t.projectId),n=m.get(t.id),s={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,tX.E)(n,s)){let n={resourceId:r.id,externalId:t.id,...s,createdAtProvider:t.createdAt,updatedAt:e};await (0,a.db)().insert(h.deployments).values(n).onConflictDoUpdate({target:h.deployments.externalId,set:n})}w.push((0,al.L)(n?.state,t,r.id,e))}await ah(w);let g=l.filter(e=>String(e.meta.teamId)===s.id),b=await (0,a.db)().select({resourceId:h.deployments.resourceId,id:h.deployments.externalId,createdAt:h.deployments.createdAtProvider}).from(h.deployments).where((0,d.and)((0,d.inArray)(h.deployments.resourceId,g.map(e=>e.id)),(0,d.eq)(h.deployments.target,"production"),(0,d.eq)(h.deployments.state,"ready"))),[k]=await (0,a.db)().select().from(h.settings).where((0,d.eq)(h.settings.key,ac)).limit(1),y=[],v=()=>y.length?(0,a.db)().insert(h.settings).values({key:ac,value:(0,tX.Y)(k?.value,y,e)}).onConflictDoUpdate({target:h.settings.key,set:{value:(0,tX.Y)(k?.value,y,e),updatedAt:e}}):Promise.resolve();for(let t of(0,tX.Q)(g,p,b,(0,tX.S)(k?.value,e))){if(Date.now()>r)break;let o=await (0,tY.S)(i,s,t.deploymentId);if(!o.ok){if(n.push(`vercel/${s.name}: current deployment: ${o.error}`),await ay(o,e))return void await v();y.push(t.deploymentId);continue}let l=o.data,u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,a.db)().insert(h.deployments).values(u).onConflictDoUpdate({target:h.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):y.push(t.deploymentId)}for(let r of(await v(),g)){let{currentId:n,previousId:s}=(0,tX.a)(b.filter(e=>e.resourceId===r.id),p.get(r.externalId)??null);await (0,a.db)().update(h.deployments).set({isCurrent:av(n),isPreviousProduction:av(s),updatedAt:e}).where((0,d.and)((0,d.eq)(h.deployments.resourceId,r.id),(0,d.or)(t.sql`${h.deployments.isCurrent} is distinct from ${av(n)}`,t.sql`${h.deployments.isPreviousProduction} is distinct from ${av(s)}`)))}}}}async function a$(e){let r=await (0,a.db)().select().from(h.resources).where((0,d.and)((0,d.eq)(h.resources.kind,"app"),(0,d.eq)(h.resources.monitored,!0),(0,d.isNull)(h.resources.goneAt)));if(!r.length)return;let n=await (0,a.db)().select().from(h.monitors).where((0,d.and)((0,d.inArray)(h.monitors.resourceId,r.map(e=>e.id)),(0,d.eq)(h.monitors.paused,!1),(0,d.eq)(h.monitors.ownerPaused,!1))),s=new Set((await (0,a.db)().select({r:h.deployments.resourceId}).from(h.deployments).where((0,d.and)((0,d.inArray)(h.deployments.resourceId,r.map(e=>e.id)),(0,d.eq)(h.deployments.target,"production"),(0,d.eq)(h.deployments.state,"building"),(0,d.gte)(h.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),o=await tf(r.map(e=>e.id)),i=new Map((await (0,a.db)().select().from(h.snapshots).where((0,d.inArray)(h.snapshots.resourceId,r.map(e=>e.id)))).map(e=>[e.resourceId,e]));for(let l of r){let r=n.filter(e=>e.resourceId===l.id),u=(0,al.V)({monitors:r.map(e=>e.state),building:s.has(l.id),dbPaused:o.has(l.id)}),d=r.find(e=>"err"===e.state)??r.find(e=>"warn"===e.state),c={code:d?.lastStatus??null,latencyMs:r.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:o.has(l.id)},p=i.get(l.id);await (0,a.db)().insert(h.snapshots).values({resourceId:l.id,state:u,data:c,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:h.snapshots.resourceId,set:{state:u,data:t.sql`${h.snapshots.data} || ${JSON.stringify(c)}::jsonb`,collectedAt:e,...p?.state!==u?{stateSince:e}:{}}})}}async function aA(e,t={}){let a={writeLastRun:am,refreshApps:a$,refreshNetwork:as.x,invalidate:f,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,tD.safeError)(t)}`)}if(e.done.some(e=>as.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,tD.safeError)(t)}`)}}finally{a.invalidate((0,m.o)(e.tried??e.done))}}async function aS(e,t,a,r={evaluate:tj.$,deliver:tq.q,digest:tq.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,tD.safeError)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,tD.safeError)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,aa.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,tD.safeError)(e)}`)}return n}async function aD(e,t,a,r){let n=[],s=[];for(let o of e){if(Date.now()>t){a.push(`${o}: skipped, time budget used`);continue}if((0,aa.z)(o,t,Date.now())){s.push(o);try{await r(o),n.push(o)}catch(e){a.push(`${o}: ${(0,tD.safeError)(e)}`)}}}return{done:n,tried:s}}async function aT(e){let t,r=new Date,n=await ar(r);if(!n)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[t]=await (0,a.db)().insert(h.collectorRuns).values({startedAt:r,trigger:"builtin"===e?"manual":e}).returning({id:h.collectorRuns.id})}catch(e){throw await an(n).catch(()=>void 0),e}let s=[],o=[],i=0,l=r.getTime()+aa.p,u=e=>console.info(`collector ${e} +${Date.now()-r.getTime()}ms`);try{u("start");let t=await af(),a="cron_job_org"!==e&&"builtin"!==e,n=(0,aa.S)(t,r,a),d=n.filter(e=>aa.u.includes(e)),c=d.includes("alerts")?l-aa.X:l,p=await ab(n,s);u(`due ${n.join(",")}`);let{done:f,tried:m}=await aD(n.filter(e=>!aa.u.includes(e)),c,s,async e=>{if(u(`task ${e}`),"heartbeats"===e){let e=new Date;i+=await (0,eW.r)(e,(t,a)=>null!==(0,tK.x)(p,{monitorId:t,appId:a},e),a)}"checks"===e&&(i+=await aw(new Date,c,s,a,p)),"vercel"===e&&await aI(new Date,c,s);let t=ap[e];t&&await t({now:new Date,deadline:c,errors:s}),"cloudflare"===e&&await (0,as.h)(new Date,c,s),"domains"===e&&await (0,as.H)(new Date,c,s),"tls"===e&&await (0,as.V)(new Date,c,s),"rdap"===e&&await (0,as.W)(new Date,c,s),"eol"===e&&await (0,as.i)(new Date,c,s),"status"===e&&await (0,tJ.i)(new Date),"logs"===e&&await (0,tM._)(new Date,c,s),"pageviews"===e&&await tV(new Date,c,s)});o.push(...f),u("main done"),await aA({lastRun:t,done:o,tried:m,started:r,errors:s}),u("settled");let h=await aS(d,l,s);u("post done"),h.length&&await am({...t,...Object.fromEntries([...o,...h].map(e=>[e,r.toISOString()]))}),o.push(...h)}catch(e){s.push(`run: ${(0,tD.safeError)(e)}`)}finally{let e=Date.now()-r.getTime();await (0,a.db)().update(h.collectorRuns).set({finishedAt:new Date,ok:0===s.length,errorSummary:s.join("\n").slice(0,2e3)||null,durationMs:e,tasks:o,checks:i}).where((0,d.eq)(h.collectorRuns.id,t.id)).catch(()=>void 0),await an(n).catch(()=>void 0)}return{skipped:!1,ok:0===s.length,tasks:o,checks:i,durationMs:Date.now()-r.getTime(),errors:s}}var aE=e.i(486118);async function ax(e){let t=[...u,...aE.extensions.minuteSteps??[]];if(!t.length)return;let a=new Date,r={deadline:e+6e4-5e3};for(let e of t)try{await e.run(a,r)}catch{console.warn(`minute step ${e.name} failed`)}}async function az(e,t=Date.now()){let a=await aT(e);return await ax(t),a}async function aR(){return tR(await tx(),aE.extensions.dailySteps??[])}e.s(["runDailyAll",0,aR,"runMinute",0,az],380167)}];
|
|
19
|
+
where key = 'collector.lease' and value->>'owner' = ${e}`)}var al=e.i(991219),au=e.i(149398),ad=e.i(467404),ac=e.i(816173);e.i(247714);let ap="collector.lastRun",af="vercel.backoffUntil",am="vercel.currentMiss",ah={supabase:th,supabaseUsage:tw,neon:tg,firebase:tb,firebaseUsage:ty,extraDbs:t2};async function aw(){let[e]=await (0,a.db)().select().from(w.settings).where((0,c.eq)(w.settings.key,ap)).limit(1);return e?.value??{}}async function ag(e){await (0,a.db)().insert(w.settings).values({key:ap,value:e}).onConflictDoUpdate({target:w.settings.key,set:{value:e,updatedAt:new Date}})}let ab=e=>(0,eW.f)(e);async function ay(e,r,n,s,o=[]){let i=(await (0,a.db)().select({m:w.monitors,app:w.resources}).from(w.monitors).innerJoin(w.resources,(0,c.eq)(w.resources.id,w.monitors.resourceId)).where((0,c.and)((0,c.eq)(w.monitors.kind,"http"),(0,c.eq)(w.monitors.paused,!1),(0,c.eq)(w.monitors.ownerPaused,!1),(0,c.eq)(w.resources.monitored,!0),(0,c.isNull)(w.resources.goneAt))).orderBy(t.sql`${w.monitors.lastCheckedAt} asc nulls first`,w.monitors.id)).filter(({m:t})=>(0,as.B)(t.lastCheckedAt,e,s));if(!i.length)return 0;let l=await (0,tt.P)(i,6,({m:e})=>{let t=(0,as.P)(e.timeoutMs,r,Date.now());return null===t?Promise.resolve(null):(0,tt.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,au.C)(e)})}),u=i.flatMap((e,t)=>l[t]?[{...e,r:l[t]}]:[]);if(u.length<i.length&&n.push(`checks: ${i.length-u.length} monitors skipped, time budget used`),!u.length)return 0;let d=[];for(let t of u)await (0,ad.f)(t.m,t.r,e)&&d.push(t);return d.length?(await (0,a.db)().insert(w.checks).values(d.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,tQ.x)(o,{monitorId:t.id,appId:a.id},e)}))),await ab(d.map(({m:t,app:a,r})=>(0,ac.F)({resourceId:a.id,path:(0,t0.K)(t.url),prev:t.state,next:(0,ac.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),d.length):0}let ak=["checks","heartbeats"];async function av(e,t,a=tN.f){if(!ak.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,tE.safeError)(e)}`),[]}}async function aI(e){let[t]=await (0,a.db)().select().from(w.settings).where((0,c.eq)(w.settings.key,af)).limit(1),r=t?.value?.until;return!!r&&e.getTime()<new Date(r).getTime()}async function a$(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let r={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,a.db)().insert(w.settings).values({key:af,value:r}).onConflictDoUpdate({target:w.settings.key,set:{value:r,updatedAt:t}}),!0}let aA=e=>t.sql`coalesce(${w.deployments.externalId} = ${e}::text, false)`;async function aS(e,r,n){if(await aI(e))return;let s=(0,U.serverEnv)().OPS_ENCRYPTION_KEY;for(let o of(await (0,a.db)().select().from(w.accounts).where((0,c.and)((0,c.eq)(w.accounts.provider,"vercel"),(0,c.eq)(w.accounts.status,"ok"))))){let i=(0,F.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},s);if((0,eZ.A)(i)||!i){n.push(`vercel/${o.label}: credential can't be read`);continue}let l=await (0,a.db)().select().from(w.resources).where((0,c.and)((0,c.eq)(w.resources.accountId,o.id),(0,c.eq)(w.resources.kind,"app"),(0,c.eq)(w.resources.monitored,!0),(0,c.isNull)(w.resources.goneAt)));if(!l.length)continue;let u=new Map(l.map(e=>[e.externalId,e])),d=await (0,tZ.X)(i);if(!d.ok){let t=(0,eZ.E)({ok:!1,kind:d.kind,error:d.error});if(t&&await (0,a.db)().update(w.accounts).set({...t,updatedAt:e}).where((0,c.eq)(w.accounts.id,o.id)),n.push(`vercel/${o.label}: ${d.error}`),await a$(d,e))return;continue}let p=new Set(l.map(e=>String(e.meta.teamId)));for(let s of d.data.filter(e=>p.has(e.id))){if(Date.now()>r)return void n.push("vercel: skipped remaining teams, time budget used");let[o,d]=await Promise.all([(0,tZ.W)(i,s),(0,tZ.K)(i,s,{since:e.getTime()-6048e5,limit:100})]);if(!o.ok||!d.ok){let t=o.ok?d:o;if(n.push(`vercel/${s.name}: ${t.error}`),await a$(t,e))return;continue}let p=new Map(o.data.map(e=>[e.id,e.currentDeploymentId])),f=d.data.filter(e=>u.has(e.projectId)),m=new Map((f.length?await (0,a.db)().select({externalId:w.deployments.externalId,state:w.deployments.state,target:w.deployments.target,branch:w.deployments.branch,commitSha:w.deployments.commitSha,commitMessage:w.deployments.commitMessage,source:w.deployments.source,url:w.deployments.url,buildingAt:w.deployments.buildingAt,readyAt:w.deployments.readyAt}).from(w.deployments).where((0,c.inArray)(w.deployments.externalId,f.map(e=>e.id))):[]).map(e=>[e.externalId,e])),h=[];for(let t of f){let r=u.get(t.projectId),n=m.get(t.id),s={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,t0.E)(n,s)){let n={resourceId:r.id,externalId:t.id,...s,createdAtProvider:t.createdAt,updatedAt:e};await (0,a.db)().insert(w.deployments).values(n).onConflictDoUpdate({target:w.deployments.externalId,set:n})}h.push((0,ac.L)(n?.state,t,r.id,e))}await ab(h);let g=l.filter(e=>String(e.meta.teamId)===s.id),b=await (0,a.db)().select({resourceId:w.deployments.resourceId,id:w.deployments.externalId,createdAt:w.deployments.createdAtProvider}).from(w.deployments).where((0,c.and)((0,c.inArray)(w.deployments.resourceId,g.map(e=>e.id)),(0,c.eq)(w.deployments.target,"production"),(0,c.eq)(w.deployments.state,"ready"))),[y]=await (0,a.db)().select().from(w.settings).where((0,c.eq)(w.settings.key,am)).limit(1),k=[],v=()=>k.length?(0,a.db)().insert(w.settings).values({key:am,value:(0,t0.Y)(y?.value,k,e)}).onConflictDoUpdate({target:w.settings.key,set:{value:(0,t0.Y)(y?.value,k,e),updatedAt:e}}):Promise.resolve();for(let t of(0,t0.Q)(g,p,b,(0,t0.S)(y?.value,e))){if(Date.now()>r)break;let o=await (0,tZ.S)(i,s,t.deploymentId);if(!o.ok){if(n.push(`vercel/${s.name}: current deployment: ${o.error}`),await a$(o,e))return void await v();k.push(t.deploymentId);continue}let l=o.data,u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,a.db)().insert(w.deployments).values(u).onConflictDoUpdate({target:w.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):k.push(t.deploymentId)}for(let r of(await v(),g)){let{currentId:n,previousId:s}=(0,t0.a)(b.filter(e=>e.resourceId===r.id),p.get(r.externalId)??null);await (0,a.db)().update(w.deployments).set({isCurrent:aA(n),isPreviousProduction:aA(s),updatedAt:e}).where((0,c.and)((0,c.eq)(w.deployments.resourceId,r.id),(0,c.or)(t.sql`${w.deployments.isCurrent} is distinct from ${aA(n)}`,t.sql`${w.deployments.isPreviousProduction} is distinct from ${aA(s)}`)))}}}}async function aD(e){let r=await (0,a.db)().select().from(w.resources).where((0,c.and)((0,c.eq)(w.resources.kind,"app"),(0,c.eq)(w.resources.monitored,!0),(0,c.isNull)(w.resources.goneAt)));if(!r.length)return;let n=await (0,a.db)().select().from(w.monitors).where((0,c.and)((0,c.inArray)(w.monitors.resourceId,r.map(e=>e.id)),(0,c.eq)(w.monitors.paused,!1),(0,c.eq)(w.monitors.ownerPaused,!1))),s=new Set((await (0,a.db)().select({r:w.deployments.resourceId}).from(w.deployments).where((0,c.and)((0,c.inArray)(w.deployments.resourceId,r.map(e=>e.id)),(0,c.eq)(w.deployments.target,"production"),(0,c.eq)(w.deployments.state,"building"),(0,c.gte)(w.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),o=await tm(r.map(e=>e.id)),i=new Map((await (0,a.db)().select().from(w.snapshots).where((0,c.inArray)(w.snapshots.resourceId,r.map(e=>e.id)))).map(e=>[e.resourceId,e]));for(let l of r){let r=n.filter(e=>e.resourceId===l.id),u=(0,ac.V)({monitors:r.map(e=>e.state),building:s.has(l.id),dbPaused:o.has(l.id)}),d=r.find(e=>"err"===e.state)??r.find(e=>"warn"===e.state),c={code:d?.lastStatus??null,latencyMs:r.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:o.has(l.id)},p=i.get(l.id);await (0,a.db)().insert(w.snapshots).values({resourceId:l.id,state:u,data:c,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:w.snapshots.resourceId,set:{state:u,data:t.sql`${w.snapshots.data} || ${JSON.stringify(c)}::jsonb`,collectedAt:e,...p?.state!==u?{stateSince:e}:{}}})}}async function aT(e,t={}){let a={writeLastRun:ag,refreshApps:aD,refreshNetwork:al.x,invalidate:m,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,tE.safeError)(t)}`)}if(e.done.some(e=>al.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,tE.safeError)(t)}`)}}finally{a.invalidate((0,h.o)(e.tried??e.done))}}async function aE(e,t,a,r={evaluate:tq.$,deliver:tC.q,digest:tC.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,tE.safeError)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,tE.safeError)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,as.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,tE.safeError)(e)}`)}return n}async function ax(e,t,a,r){let n=[],s=[];for(let o of e){if(Date.now()>t){a.push(`${o}: skipped, time budget used`);continue}if((0,as.z)(o,t,Date.now())){s.push(o);try{await r(o),n.push(o)}catch(e){a.push(`${o}: ${(0,tE.safeError)(e)}`)}}}return{done:n,tried:s}}async function az(e){let t,r=new Date,n=await ao(r);if(!n)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[t]=await (0,a.db)().insert(w.collectorRuns).values({startedAt:r,trigger:"builtin"===e?"manual":e}).returning({id:w.collectorRuns.id})}catch(e){throw await ai(n).catch(()=>void 0),e}let s=[],o=[],i=0,u=r.getTime()+as.p,d=e=>console.info(`collector ${e} +${Date.now()-r.getTime()}ms`);try{d("start");let t=await aw(),a="cron_job_org"!==e&&"builtin"!==e,n=await (0,l.I)(),c=(0,as.S)(t,r,a,n),p=c.filter(e=>as.u.includes(e)),f=p.includes("alerts")?u-as.X:u,m=await av(c,s);d(`due ${c.join(",")}`);let{done:h,tried:w}=await ax(c.filter(e=>!as.u.includes(e)),f,s,async e=>{if(d(`task ${e}`),"heartbeats"===e){let e=new Date;i+=await (0,eH.r)(e,(t,a)=>null!==(0,tQ.x)(m,{monitorId:t,appId:a},e),a)}"checks"===e&&(i+=await ay(new Date,f,s,a,m)),"vercel"===e&&await aS(new Date,f,s);let t=ah[e];t&&await t({now:new Date,deadline:f,errors:s,protectOnly:(0,as.$)(e,n)}),"cloudflare"===e&&await (0,al.h)(new Date,f,s),"domains"===e&&await (0,al.H)(new Date,f,s),"tls"===e&&await (0,al.V)(new Date,f,s),"rdap"===e&&await (0,al.W)(new Date,f,s),"eol"===e&&await (0,al.i)(new Date,f,s),"status"===e&&await (0,tX.i)(new Date),"logs"===e&&await (0,tP._)(new Date,f,s),"pageviews"===e&&await tY(new Date,f,s)});o.push(...h),d("main done"),await aT({lastRun:t,done:o,tried:w,started:r,errors:s}),d("settled");let g=await aE(p,u,s);d("post done"),g.length&&await ag({...t,...Object.fromEntries([...o,...g].map(e=>[e,r.toISOString()]))}),o.push(...g)}catch(e){s.push(`run: ${(0,tE.safeError)(e)}`)}finally{let e=Date.now()-r.getTime();await (0,a.db)().update(w.collectorRuns).set({finishedAt:new Date,ok:0===s.length,errorSummary:s.join("\n").slice(0,2e3)||null,durationMs:e,tasks:o,checks:i}).where((0,c.eq)(w.collectorRuns.id,t.id)).catch(()=>void 0),await ai(n).catch(()=>void 0)}return{skipped:!1,ok:0===s.length,tasks:o,checks:i,durationMs:Date.now()-r.getTime(),errors:s}}var aR=e.i(486118);async function aj(e){let t=[...d,...aR.extensions.minuteSteps??[]];if(!t.length)return;let a=new Date,r={deadline:e+6e4-5e3};for(let e of t)try{await e.run(a,r)}catch{console.warn(`minute step ${e.name} failed`)}}async function a_(e,t=Date.now()){let a=await az(e);return await aj(t),a}async function aM(){return tM(await tj(),aR.extensions.dailySteps??[])}e.s(["runDailyAll",0,aM,"runMinute",0,a_],380167)}];
|
|
20
20
|
|
|
21
21
|
//# sourceMappingURL=src_lib_collector_runners_ts_12z4gtgikss74._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[
|
|
2
|
-
${t}`).digest("hex").slice(0,8),k=(e,t,s={})=>({ok:!1,kind:e,error:t,...s});async function z(e,t,s,r){let a=(r.now??new Date).getTime(),o=Math.max(r.since.getTime(),a-864e5),n=r.until.getTime();if(o>=n)return{ok:!0,lines:[],more:!1};let i=r.maxRows??300,d=r.levels?new Set(r.levels):null,u=e=>!d||d.has(e),c=r.levels?[...new Set(r.levels.map(e=>"fatal"===e?"error":e))]:[],m=r.fetch??fetch,p=new AbortController,g=setTimeout(()=>p.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),h=r.signal?AbortSignal.any([p.signal,r.signal]):p.signal,f=(0,l.X)(h),w=()=>p.signal.aborted&&!r.signal?.aborted?k("transient","Vercel's log history didn't answer in time."):k("transient","Reading Vercel's log history was cancelled."),I=[],y=!1;try{for(let a=0;a<3;a++){let l,d=new URLSearchParams({projectId:s,ownerId:t,page:String(a),startDate:String(o),endDate:String(n)});r.deploymentId&&d.set("deploymentId",r.deploymentId),r.environment&&d.set("environment",r.environment),c.length&&d.set("level",c.join(","));let p=null;try{let t=await Promise.race([m(`https://vercel.com/api/logs/request-logs?${d}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:h,cache:"no-store"}),f]);if(401===t.status||403===t.status)p=k("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));p=k("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status)p=k("transient","Vercel's log history didn't answer (400); the range may be past retention.",{status:400});else if(t.ok)try{l=await Promise.race([t.json(),f])}catch(e){if(h.aborted)throw e;p=k("format","Vercel's log history answered in a format the console doesn't recognise.")}else p=k("transient",`Vercel's log history returned an error (${t.status}).`,{status:t.status});p&&await t.body?.cancel().catch(()=>void 0)}catch{p=h.aborted?w():k("transient","Couldn't reach Vercel's log history.")}if(!p){let e=b.safeParse(l),t=e.success&&l&&"object"==typeof l?Object.keys(l):[];if(!e.success||t.includes("rows")||t.includes("hasMoreRows"))if(e.success){for(let t of e.data.rows)I.push(...function(e,t,s=!1){let r=q.safeParse(e);if(!r.success)return[];let a=r.data,o={at:a.timestamp,requestMethod:a.requestMethod??null,requestPath:a.requestPath??null,statusCode:a.statusCode??null,deploymentId:a.deploymentId??null,source:(a.events??[]).map(e=>$.safeParse(e)).find(e=>e.success&&e.data.source)?.data?.source??null},n=[],l=new Map;for(let e of a.logs??[]){let s=M.safeParse(e);if(!s.success||!s.data.message)continue;let r=function(e){let t=(e??"").toLowerCase();return"warn"===t?"warning":v.includes(t)?t:"info"}(s.data.level),i=L(r,s.data.message),d=l.get(i)??0;l.set(i,d+1),t(r)&&n.push({rowId:`${a.requestId}:${i}${d?`#${d}`:""}`,level:r,message:s.data.message,...o})}if(null!=a.statusCode&&a.statusCode>=500&&t("error")&&!n.some(e=>"error"===e.level||"fatal"===e.level)&&n.push({rowId:`${a.requestId}:status`,level:"error",message:`${a.requestMethod??"GET"} ${a.requestPath??"/"} → ${a.statusCode}`,...o}),s&&0===n.length){let e=a.statusCode??0,s=e>=500?"error":e>=400?"warning":"info";t(s)&&n.push({rowId:`${a.requestId}:request`,level:s,message:`${a.requestMethod??"GET"} ${a.requestPath??"/"}${e>0?` → ${e}`:""}`,...o})}return n}(t,u,r.requests));if(!(y=e.data.hasMoreRows)||I.length>=i)break}else p=k("format","Vercel's log history answered in a format the console doesn't recognise.");else p=k("transient","Vercel's log format changed: the answer has neither rows nor hasMoreRows.")}if(p){if(0===a)return p;y=!0;break}}}finally{clearTimeout(g),p.abort()}return I.sort((e,t)=>e.at.getTime()-t.at.getTime()),I.length>i&&(I.splice(0,I.length-i),y=!0),{ok:!0,lines:I,more:y}}e.s(["f",0,z],658739);var P=e.i(245710);let C=["warning","error","fatal"],N="logs_read_cursor";async function j(e){let[s]=await (0,o.f)().select().from(n.accounts).where((0,t.b)((0,t.u)(n.accounts.provider,"vercel"),(0,t.u)(n.accounts.status,"ok"))).limit(1),r=s?(0,i.V)({ciphertext:s.credentialCiphertext,iv:s.credentialIv},(0,u.f)().OPS_ENCRYPTION_KEY):null;return s&&r?(await (0,o.f)().select({appId:n.resources.id,appName:n.resources.name,projectId:n.resources.externalId,meta:n.resources.meta,deploymentId:n.deployments.externalId}).from(n.deployments).innerJoin(n.resources,(0,t.u)(n.resources.id,n.deployments.resourceId)).where((0,t.b)((0,t.u)(n.deployments.isCurrent,!0),(0,t.u)(n.resources.accountId,s.id),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt),...e?[(0,t.u)(n.resources.id,e)]:[]))).map(e=>({appId:e.appId,appName:e.appName,projectId:e.projectId,deploymentId:e.deploymentId,teamId:String(e.meta.teamId??""),token:r})):[]}let T=(e,t)=>({resourceId:e.appId,deploymentId:t.deploymentId??e.deploymentId,rowId:t.rowId,at:t.at,level:t.level,message:(0,c.l)((0,c.h)(t.message),2e3),requestMethod:t.requestMethod,requestPath:(0,c.n)(t.requestPath?(0,c.h)(t.requestPath):null),statusCode:t.statusCode,source:t.source});async function D(e,s,i){let u,[c]=await (0,o.f)().select().from(n.settings).where((0,t.u)(n.settings.key,"logs.disabled")).limit(1);if(c?.value===!0)return;let m=await j(null);if(!m.length)return;let p=(0,P.y)((0,P.x)(e)),g=new Map((await (0,o.f)().select({id:n.storedLogs.resourceId,n:a.B`count(*)::int`}).from(n.storedLogs).where((0,t.b)((0,t.y)(n.storedLogs.resourceId,m.map(e=>e.appId)),(0,t.B)(n.storedLogs.at,p))).groupBy(n.storedLogs.resourceId)).map(e=>[e.id,e.n])),h=new Map((await (0,o.f)().select({id:n.storedLogs.resourceId,at:(0,r.y)(n.storedLogs.at)}).from(n.storedLogs).where((0,t.y)(n.storedLogs.resourceId,m.map(e=>e.appId))).groupBy(n.storedLogs.resourceId)).map(e=>[e.id,e.at])),[f]=await (0,o.f)().select().from(n.settings).where((0,t.u)(n.settings.key,N)).limit(1),w=(u=f?.value)&&"object"==typeof u&&!Array.isArray(u)?Object.fromEntries(Object.entries(u).filter(e=>"string"==typeof e[1]&&!Number.isNaN(Date.parse(e[1])))):{},I=e.getTime()-864e5,y=await (0,l.P)(m,3,t=>{if(Date.now()+8500>s)return Promise.resolve(null);let r=[h.get(t.appId)?.getTime(),w[t.appId]?Date.parse(w[t.appId]):void 0].filter(e=>void 0!==e),a=new Date(Math.max(r.length?Math.max(...r)-3e5:I,I));return z(t.token,t.teamId,t.projectId,{since:a,until:e,now:e,levels:C,environment:"production",maxRows:300})}),v=m.map((e,t)=>{let s=y[t];return s?s.ok?(s.more&&i.push(`logs/${e.appName}: more than 300 log lines since the last read; the oldest were skipped`),s.lines.filter(e=>C.includes(e.level))):(i.push(`logs/${e.appName}: ${s.error}`),[]):[]}),b=v.flat().map(e=>e.rowId),q=new Set(b.length?(await (0,o.f)().select({rowId:n.storedLogs.rowId}).from(n.storedLogs).where((0,t.y)(n.storedLogs.rowId,b))).map(e=>e.rowId):[]),M=[];for(let[e,t]of m.entries()){let s=v[e].filter(e=>!q.has(e.rowId));if(!s.length)continue;let r=g.get(t.appId)??0,a=Math.max(0,1e3-r),l=(a>=s.length?s:s.slice(s.length-a)).map(e=>T(t,e));l.length&&await (0,o.f)().insert(n.storedLogs).values(l).onConflictDoNothing({target:n.storedLogs.rowId}),r+s.length>=1e3&&M.push(t.appId)}let $=m.filter((e,t)=>y[t]?.ok);if($.length){let t={};for(let e of m)w[e.appId]&&(t[e.appId]=w[e.appId]);for(let s of $)t[s.appId]=e.toISOString();await (0,o.f)().insert(n.settings).values({key:N,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})}await (0,d.f)(M.map(e=>({resourceId:e,type:"system",kind:"warn",message:"Stored-log limit reached",detail:"More than 1000 warnings and errors today; the rest stay in Vercel only for its short log history (about a day on Hobby).",reason:"LogCapReached"})))}async function x(e,r={}){let a=new Date(e.getTime()-(r.sinceMs??6048e5));return(await (0,o.f)().select({l:n.storedLogs,app:n.resources.name}).from(n.storedLogs).innerJoin(n.resources,(0,t.u)(n.resources.id,n.storedLogs.resourceId)).where((0,t.b)((0,t.B)(n.storedLogs.at,a),...r.appId?[(0,t.u)(n.storedLogs.resourceId,r.appId)]:[])).orderBy((0,s.A)(n.storedLogs.at)).limit(500)).map(({l:e,app:t})=>({id:e.rowId,at:e.at,level:e.level,app:t,method:e.requestMethod,path:e.requestPath,status:e.statusCode,message:e.message})).reverse()}async function S(e,t){let s=(await j(t)).slice(0,6),r=[],a=await (0,l.P)(s,6,t=>z(t.token,t.teamId,t.projectId,{since:new Date(e.getTime()-36e5),until:e,now:e,environment:"production",maxRows:300,requests:!0})),o=[];for(let[e,t]of s.entries()){let s=a[e];if(!s.ok){r.push(`${t.appName}: ${s.error}`);continue}for(let e of s.lines){let s=T(t,e);o.push({id:e.rowId,at:e.at,level:e.level,app:t.appName,method:s.requestMethod,path:s.requestPath,status:e.statusCode,message:s.message})}}return{lines:[...new Map([...await x(e,{appId:t??void 0,sinceMs:36e5}),...o].map(e=>[e.id,e])).values()].sort((e,t)=>e.at.getTime()-t.at.getTime()).slice(-500),readAt:new Date,problems:r}}e.s(["M",0,x,"$",0,S,"g",0,j,"_",0,D],
|
|
1
|
+
module.exports=[292321,530174,658739,e=>{"use strict";var t=e.i(93321),s=e.i(530385),r=e.i(258261),a=e.i(351674),o=e.i(548734),n=e.i(837137),l=e.i(33135),i=e.i(358179),d=e.i(601219),u=e.i(492665),c=e.i(609007),m=e.i(666680),p=e.i(26972),g=e.i(689963),h=e.i(191179),f=e.i(83931),w=e.i(427221),I=e.i(954757);e.s(["z",0,I],530174);var I=I,y=e.i(811365);let v=["debug","info","warning","error","fatal","trace"],b=p.z.object({rows:g.z.array(h.z.unknown()).catch([]),hasMoreRows:f.z.boolean().catch(!1)}),q=p.z.object({requestId:w.z.string().min(1),timestamp:w.z.string().transform((e,t)=>{let s=Date.parse(e);return Number.isNaN(s)?(t.addIssue({code:"custom",message:"bad timestamp"}),I.NEVER):new Date(s)}),deploymentId:w.z.string().nullish().catch(null),requestMethod:w.z.string().nullish().catch(null),requestPath:w.z.string().nullish().catch(null),statusCode:y.z.number().nullish().catch(null),logs:g.z.array(h.z.unknown()).nullish().catch(null),events:g.z.array(h.z.unknown()).nullish().catch(null)}),M=p.z.object({level:w.z.string().nullish().catch(null),message:w.z.string().nullish().catch(null)}),$=p.z.object({source:w.z.string().nullish().catch(null)}),L=(e,t)=>(0,m.createHash)("sha1").update(`${e}
|
|
2
|
+
${t}`).digest("hex").slice(0,8),k=(e,t,s={})=>({ok:!1,kind:e,error:t,...s});async function z(e,t,s,r){let a=(r.now??new Date).getTime(),o=Math.max(r.since.getTime(),a-864e5),n=r.until.getTime();if(o>=n)return{ok:!0,lines:[],more:!1};let i=r.maxRows??300,d=r.levels?new Set(r.levels):null,u=e=>!d||d.has(e),c=r.levels?[...new Set(r.levels.map(e=>"fatal"===e?"error":e))]:[],m=r.fetch??fetch,p=new AbortController,g=setTimeout(()=>p.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),h=r.signal?AbortSignal.any([p.signal,r.signal]):p.signal,f=(0,l.X)(h),w=()=>p.signal.aborted&&!r.signal?.aborted?k("transient","Vercel's log history didn't answer in time."):k("transient","Reading Vercel's log history was cancelled."),I=[],y=!1;try{for(let a=0;a<3;a++){let l,d=new URLSearchParams({projectId:s,ownerId:t,page:String(a),startDate:String(o),endDate:String(n)});r.deploymentId&&d.set("deploymentId",r.deploymentId),r.environment&&d.set("environment",r.environment),c.length&&d.set("level",c.join(","));let p=null;try{let t=await Promise.race([m(`https://vercel.com/api/logs/request-logs?${d}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:h,cache:"no-store"}),f]);if(401===t.status||403===t.status)p=k("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));p=k("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status)p=k("transient","Vercel's log history didn't answer (400); the range may be past retention.",{status:400});else if(t.ok)try{l=await Promise.race([t.json(),f])}catch(e){if(h.aborted)throw e;p=k("format","Vercel's log history answered in a format the console doesn't recognise.")}else p=k("transient",`Vercel's log history returned an error (${t.status}).`,{status:t.status});p&&await t.body?.cancel().catch(()=>void 0)}catch{p=h.aborted?w():k("transient","Couldn't reach Vercel's log history.")}if(!p){let e=b.safeParse(l),t=e.success&&l&&"object"==typeof l?Object.keys(l):[];if(!e.success||t.includes("rows")||t.includes("hasMoreRows"))if(e.success){for(let t of e.data.rows)I.push(...function(e,t,s=!1){let r=q.safeParse(e);if(!r.success)return[];let a=r.data,o={at:a.timestamp,requestMethod:a.requestMethod??null,requestPath:a.requestPath??null,statusCode:a.statusCode??null,deploymentId:a.deploymentId??null,source:(a.events??[]).map(e=>$.safeParse(e)).find(e=>e.success&&e.data.source)?.data?.source??null},n=[],l=new Map;for(let e of a.logs??[]){let s=M.safeParse(e);if(!s.success||!s.data.message)continue;let r=function(e){let t=(e??"").toLowerCase();return"warn"===t?"warning":v.includes(t)?t:"info"}(s.data.level),i=L(r,s.data.message),d=l.get(i)??0;l.set(i,d+1),t(r)&&n.push({rowId:`${a.requestId}:${i}${d?`#${d}`:""}`,level:r,message:s.data.message,...o})}if(null!=a.statusCode&&a.statusCode>=500&&t("error")&&!n.some(e=>"error"===e.level||"fatal"===e.level)&&n.push({rowId:`${a.requestId}:status`,level:"error",message:`${a.requestMethod??"GET"} ${a.requestPath??"/"} → ${a.statusCode}`,...o}),s&&0===n.length){let e=a.statusCode??0,s=e>=500?"error":e>=400?"warning":"info";t(s)&&n.push({rowId:`${a.requestId}:request`,level:s,message:`${a.requestMethod??"GET"} ${a.requestPath??"/"}${e>0?` → ${e}`:""}`,...o})}return n}(t,u,r.requests));if(!(y=e.data.hasMoreRows)||I.length>=i)break}else p=k("format","Vercel's log history answered in a format the console doesn't recognise.");else p=k("transient","Vercel's log format changed: the answer has neither rows nor hasMoreRows.")}if(p){if(0===a)return p;y=!0;break}}}finally{clearTimeout(g),p.abort()}return I.sort((e,t)=>e.at.getTime()-t.at.getTime()),I.length>i&&(I.splice(0,I.length-i),y=!0),{ok:!0,lines:I,more:y}}e.s(["f",0,z],658739);var P=e.i(245710);let C=["warning","error","fatal"],N="logs_read_cursor";async function j(e){let[s]=await (0,o.f)().select().from(n.accounts).where((0,t.b)((0,t.u)(n.accounts.provider,"vercel"),(0,t.u)(n.accounts.status,"ok"))).limit(1),r=s?(0,i.V)({ciphertext:s.credentialCiphertext,iv:s.credentialIv},(0,u.f)().OPS_ENCRYPTION_KEY):null;return s&&r?(await (0,o.f)().select({appId:n.resources.id,appName:n.resources.name,projectId:n.resources.externalId,meta:n.resources.meta,deploymentId:n.deployments.externalId}).from(n.deployments).innerJoin(n.resources,(0,t.u)(n.resources.id,n.deployments.resourceId)).where((0,t.b)((0,t.u)(n.deployments.isCurrent,!0),(0,t.u)(n.resources.accountId,s.id),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt),...e?[(0,t.u)(n.resources.id,e)]:[]))).map(e=>({appId:e.appId,appName:e.appName,projectId:e.projectId,deploymentId:e.deploymentId,teamId:String(e.meta.teamId??""),token:r})):[]}let T=(e,t)=>({resourceId:e.appId,deploymentId:t.deploymentId??e.deploymentId,rowId:t.rowId,at:t.at,level:t.level,message:(0,c.l)((0,c.h)(t.message),2e3),requestMethod:t.requestMethod,requestPath:(0,c.n)(t.requestPath?(0,c.h)(t.requestPath):null),statusCode:t.statusCode,source:t.source});async function D(e,s,i){let u,[c]=await (0,o.f)().select().from(n.settings).where((0,t.u)(n.settings.key,"logs.disabled")).limit(1);if(c?.value===!0)return;let m=await j(null);if(!m.length)return;let p=(0,P.y)((0,P.x)(e)),g=new Map((await (0,o.f)().select({id:n.storedLogs.resourceId,n:a.B`count(*)::int`}).from(n.storedLogs).where((0,t.b)((0,t.y)(n.storedLogs.resourceId,m.map(e=>e.appId)),(0,t.B)(n.storedLogs.at,p))).groupBy(n.storedLogs.resourceId)).map(e=>[e.id,e.n])),h=new Map((await (0,o.f)().select({id:n.storedLogs.resourceId,at:(0,r.y)(n.storedLogs.at)}).from(n.storedLogs).where((0,t.y)(n.storedLogs.resourceId,m.map(e=>e.appId))).groupBy(n.storedLogs.resourceId)).map(e=>[e.id,e.at])),[f]=await (0,o.f)().select().from(n.settings).where((0,t.u)(n.settings.key,N)).limit(1),w=(u=f?.value)&&"object"==typeof u&&!Array.isArray(u)?Object.fromEntries(Object.entries(u).filter(e=>"string"==typeof e[1]&&!Number.isNaN(Date.parse(e[1])))):{},I=e.getTime()-864e5,y=await (0,l.P)(m,3,t=>{if(Date.now()+8500>s)return Promise.resolve(null);let r=[h.get(t.appId)?.getTime(),w[t.appId]?Date.parse(w[t.appId]):void 0].filter(e=>void 0!==e),a=new Date(Math.max(r.length?Math.max(...r)-3e5:I,I));return z(t.token,t.teamId,t.projectId,{since:a,until:e,now:e,levels:C,environment:"production",maxRows:300})}),v=m.map((e,t)=>{let s=y[t];return s?s.ok?(s.more&&i.push(`logs/${e.appName}: more than 300 log lines since the last read; the oldest were skipped`),s.lines.filter(e=>C.includes(e.level))):(i.push(`logs/${e.appName}: ${s.error}`),[]):[]}),b=v.flat().map(e=>e.rowId),q=new Set(b.length?(await (0,o.f)().select({rowId:n.storedLogs.rowId}).from(n.storedLogs).where((0,t.y)(n.storedLogs.rowId,b))).map(e=>e.rowId):[]),M=[];for(let[e,t]of m.entries()){let s=v[e].filter(e=>!q.has(e.rowId));if(!s.length)continue;let r=g.get(t.appId)??0,a=Math.max(0,1e3-r),l=(a>=s.length?s:s.slice(s.length-a)).map(e=>T(t,e));l.length&&await (0,o.f)().insert(n.storedLogs).values(l).onConflictDoNothing({target:n.storedLogs.rowId}),r+s.length>=1e3&&M.push(t.appId)}let $=m.filter((e,t)=>y[t]?.ok);if($.length){let t={};for(let e of m)w[e.appId]&&(t[e.appId]=w[e.appId]);for(let s of $)t[s.appId]=e.toISOString();await (0,o.f)().insert(n.settings).values({key:N,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})}await (0,d.f)(M.map(e=>({resourceId:e,type:"system",kind:"warn",message:"Stored-log limit reached",detail:"More than 1000 warnings and errors today; the rest stay in Vercel only for its short log history (about a day on Hobby).",reason:"LogCapReached"})))}async function x(e,r={}){let a=new Date(e.getTime()-(r.sinceMs??6048e5));return(await (0,o.f)().select({l:n.storedLogs,app:n.resources.name}).from(n.storedLogs).innerJoin(n.resources,(0,t.u)(n.resources.id,n.storedLogs.resourceId)).where((0,t.b)((0,t.B)(n.storedLogs.at,a),...r.appId?[(0,t.u)(n.storedLogs.resourceId,r.appId)]:[])).orderBy((0,s.A)(n.storedLogs.at)).limit(500)).map(({l:e,app:t})=>({id:e.rowId,at:e.at,level:e.level,app:t,method:e.requestMethod,path:e.requestPath,status:e.statusCode,message:e.message})).reverse()}async function S(e,t){let s=(await j(t)).slice(0,6),r=[],a=await (0,l.P)(s,6,t=>z(t.token,t.teamId,t.projectId,{since:new Date(e.getTime()-36e5),until:e,now:e,environment:"production",maxRows:300,requests:!0})),o=[];for(let[e,t]of s.entries()){let s=a[e];if(!s.ok){r.push(`${t.appName}: ${s.error}`);continue}for(let e of s.lines){let s=T(t,e);o.push({id:e.rowId,at:e.at,level:e.level,app:t.appName,method:s.requestMethod,path:s.requestPath,status:e.statusCode,message:s.message})}}return{lines:[...new Map([...await x(e,{appId:t??void 0,sinceMs:36e5}),...o].map(e=>[e.id,e])).values()].sort((e,t)=>e.at.getTime()-t.at.getTime()).slice(-500),readAt:new Date,problems:r}}e.s(["M",0,x,"$",0,S,"g",0,j,"_",0,D],292321)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=src_lib_data_logs-db_ts_1ddw07do12mmk._.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
module.exports=[396667,711251,532971,186133,e=>{"use strict";var t=e.i(93321),n=e.i(351674),r=e.i(800717),s=e.i(548734),a=e.i(263251),o=e.i(837137),i=e.i(686921),l=e.i(160147);let c="budget.limits",u={qstashPerDay:1e3,webAnalyticsEvents:5e4,vercelInvocations:1e6,vercelCpuHours:4,vercelMemoryGbH:360,warnPct:70,errPct:90},f=[{key:"qstashPerDay",label:"Upstash QStash messages",unit:"a day",min:1,max:1e7},{key:"webAnalyticsEvents",label:"Vercel Web Analytics events",unit:"a month",min:1,max:1e8},{key:"vercelInvocations",label:"Vercel function invocations",unit:"a month",min:1,max:1e9},{key:"vercelCpuHours",label:"Vercel active CPU",unit:"hours a month",min:1,max:1e4},{key:"vercelMemoryGbH",label:"Vercel provisioned memory",unit:"GB-hours a month",min:1,max:1e5},{key:"warnPct",label:"Warn from",unit:"% used",min:10,max:99},{key:"errPct",label:"Alarm from",unit:"% used",min:11,max:100}],m=(e,t)=>"number"==typeof t&&Number.isInteger(t)&&t>=e.min&&t<=e.max;function y(e){let t={...u};if(!e||"object"!=typeof e)return t;for(let n of f){let r=e[n.key];m(n,r)&&(t[n.key]=r)}return t.warnPct<t.errPct?t:{...t,warnPct:u.warnPct,errPct:u.errPct}}e.s(["o",0,u,"h",0,c,"S",0,function(e,t){let n=f.filter(n=>e[n.key]!==t[n.key]).map(n=>`${n.label} ${e[n.key].toLocaleString("en-US")} → ${t[n.key].toLocaleString("en-US")}`);return n.length?n.join(", "):null},"X",0,y,"R",0,function(e){let t=e&&"object"==typeof e?e:{},n={...u},r={};for(let e of f){let s=t[e.key],a="string"==typeof s?Number(s.replace(/[,_\s]/g,"")):s;m(e,a)?n[e.key]=a:r[e.key]=`Enter a whole number from ${e.min.toLocaleString("en-US")} to ${e.max.toLocaleString("en-US")}.`}return r.warnPct||r.errPct||!(n.warnPct>=n.errPct)||(r.errPct="Alarm must be above Warn."),Object.keys(r).length?{ok:!1,error:"Check the highlighted fields.",fieldErrors:r}:{ok:!0,value:n}}],711251);var d=e.i(655206);let h="retention.days",p={checks:[3,7,14],rollupsHourly:[60,90,180],storedLogs:[3,7,14],deployments:[30,45,60,90],events:[60,90,180],alerts:[60,90,180],collectorRuns:[7,14,30],recommendationDismissals:[30,90,180]},b=Object.keys(p),g={checks:"Raw checks",rollupsHourly:"Hourly rollups",storedLogs:"Stored logs",deployments:"Deployments",events:"Events",alerts:"Alerts",collectorRuns:"Collector runs",recommendationDismissals:"Advisor dismissals"},k=(e,t)=>"number"==typeof t&&p[e].includes(t);function v(e){let t={...d.f};if(!e||"object"!=typeof e)return t;for(let n of b){let r=e[n];k(n,r)&&(t[n]=r)}return t}async function w(e){let[n]=await (0,s.f)().select({value:o.settings.value}).from(o.settings).where((0,t.u)(o.settings.key,e)).limit(1);return n?.value??null}async function $(e,t){await (0,s.f)().insert(o.settings).values({key:e,value:t}).onConflictDoUpdate({target:o.settings.key,set:{value:t,updatedAt:new Date}})}e.s(["L",0,b,"I",0,g,"H",0,h,"E",0,v,"b",0,function(e,t){let n=b.filter(n=>e[n]!==t[n]).map(n=>`${g[n]} ${e[n]} → ${t[n]} days`);return n.length?n.join(", "):null},"K",0,function(e){let t={},n={...d.f},r=e&&"object"==typeof e?e:{};for(let e of b){let s="string"==typeof r[e]?Number(r[e]):r[e];k(e,s)?n[e]=s:t[e]=`Pick ${p[e].join(", ")} days.`}return Object.keys(t).length?{ok:!1,error:"Check the highlighted fields.",fieldErrors:t}:{ok:!0,value:n}}],532971);let P=async()=>v(await w(h)),j=async()=>y(await w(c)),x="notify.language",B="sections.off",S=async()=>(0,l.N)(await w(B)),A=()=>n.B`(select ${o.settings.value} from ${o.settings} where ${o.settings.key} = ${B})`;e.s(["j",0,j,"l",0,()=>w(x),"J",0,P,"W",0,S,"x",0,e=>$(c,e),"U",0,e=>$(x,e),"A",0,e=>$(h,e),"Y",0,e=>$(B,(0,l.N)(e)),"X",0,A],186133);let C=["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"],H=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return null}},L=(0,r.cache)(async()=>{let e=n.B.join(C.map(e=>n.B`${e}`),n.B`, `),t=await (0,s.f)().execute(n.B`select
|
|
2
|
+
(select coalesce(jsonb_agg(distinct ${o.accounts.provider}::text), '[]'::jsonb) from ${o.accounts}) as providers,
|
|
3
|
+
exists(select 1 from ${o.resources} where ${o.resources.kind}::text in (${e}) and ${o.resources.goneAt} is null) as databases,
|
|
4
|
+
${A()} as off`),[r]=(0,a.f)(t),c=H(r?.providers);return{providers:(Array.isArray(c)?c:[]).filter(e=>i.L.includes(e)),databases:r?.databases===!0||r?.databases==="t",off:(0,l.N)(H(r?.off))}});async function N(){let{providers:e,databases:t,off:n}=await L(),r={databases:t},s=[...(0,l.R)(e,r)];return{on:s.filter(e=>!n.includes(e)),available:s,off:n,providers:e,has:r}}async function U(){try{return(0,l.J)((await L()).off)}catch{return new Set}}function D(e){if(!e.size)return;let{ruleKeys:r,providers:s}=(0,l.s)(e),a=[];if(r.length&&a.push(n.B`${o.alerts.ruleKey} in (${n.B.join(r.map(e=>n.B`${e}`),n.B`, `)})`),s.length){let e=n.B.join(s.map(e=>n.B`${e}`),n.B`, `);a.push(n.B`(${o.alerts.ruleKey} = 'CredentialExpiring' and ${o.alerts.accountId} in (select ${o.accounts.id} from ${o.accounts} where ${o.accounts.provider}::text in (${e})))`)}return a.length?(0,t.F)(...a):void 0}async function E(e,n){let r=D(new Set([e]));r&&await (0,s.f)().update(o.alerts).set({pendingSince:n}).where((0,t.b)((0,t.E)(o.alerts.pending),r))}async function _(){let e=await (0,s.f)().select({kind:o.monitors.kind,n:n.B`count(*)::int`}).from(o.monitors).where((0,t.b)((0,t.u)(o.monitors.paused,!1),(0,t.u)(o.monitors.ownerPaused,!1))).groupBy(o.monitors.kind),r=t=>Number(e.find(e=>e.kind===t)?.n??0);return{http:r("http"),heartbeat:r("heartbeat")}}e.s(["s",0,function(e){let n=D(e);return n?(0,t.R)(n):void 0},"F",0,_,"I",0,U,"e",0,E,"Q",0,N],396667)}];
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[908480,476866,e=>{"use strict";var t=e.i(336763),n=e.i(406212),
|
|
1
|
+
module.exports=[908480,873083,476866,e=>{"use strict";var t=e.i(336763),a=e.i(533102),n=e.i(406212),s=e.i(530298);let i=["home","hosting","database","devops","manage"],o=["hosting","database","devops"],r={vercel:"hosting",cloudflare:"hosting",supabase:"database",neon:"database",firebase:"database",turso:"database",upstash:"database",github:"devops",github_write:"devops"};function l(e){return Array.isArray(e)?i.filter(t=>"string"==typeof t&&i.includes(t)&&o.includes(t)&&e.includes(t)):[]}let u={MonitorDown:"hosting",HighLatency:"hosting",DeploymentFailed:"hosting",CertExpiringSoon:"hosting",DomainExpiringSoon:"hosting",DnsProxiedToVercel:"hosting",DatabasePaused:"database",StorageAlmostFull:"database",NeonComputeHigh:"database",FirestoreQuotaHigh:"database",AutoPauseRisk:"database",ComputeHigh:"database",DbQuotaHigh:"database",VulnerableDependency:"devops",CredentialExpiring:"account",CollectorStale:null},c=/^Log/;e.s(["D",0,r,"O",0,(e,t,a)=>{let n;if(!e.size)return!1;let s="account"===(n=u[t])?a?r[a]??null:null:void 0!==n?n:c.test(t)?"hosting":null;return null!==s&&e.has(s)},"N",0,l,"s",0,function(e){return{ruleKeys:Object.entries(u).filter(([,t])=>null!==t&&"account"!==t&&e.has(t)).map(([e])=>e),providers:Object.entries(r).filter(([,t])=>e.has(t)).map(([e])=>e)}},"I",0,e=>new Set(l(e))],873083);var d=e.i(369179);let g={checks:[3,7,14],rollupsHourly:[60,90,180],storedLogs:[3,7,14],deployments:[30,45,60,90],events:[60,90,180],alerts:[60,90,180],collectorRuns:[7,14,30],recommendationDismissals:[30,90,180]},b=Object.keys(g),f=(e,t)=>"number"==typeof t&&g[e].includes(t);async function h(e){let[a]=await (0,n.db)().select({value:s.settings.value}).from(s.settings).where((0,t.eq)(s.settings.key,e)).limit(1);return a?.value??null}let p=async()=>(function(e){let t={...d.f};if(!e||"object"!=typeof e)return t;for(let a of b){let n=e[a];f(a,n)&&(t[a]=n)}return t})(await h("retention.days")),m=()=>h("notify.language");function y(e){let t=e&&"object"==typeof e?e:null,a=t?t.lang:e,n=e=>{var n;return"string"==typeof(n=t&&e in t?t[e]:a)&&"id"===n.trim().toLowerCase()?"id":"en"};return{telegram:n("telegram"),discord:n("discord"),email:n("email")}}async function v(){try{return y(await m())}catch{return y(null)}}async function w(e="telegram"){return(await v())[e]}e.s(["l",0,m,"J",0,p,"W",0,()=>a.sql`(select ${s.settings.value} from ${s.settings} where ${s.settings.key} = ${"sections.off"})`],476866),e.s(["H",0,w,"B",0,v,"t",0,function(e,t,a){return e[t][a]}],908480)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_lib_notify_lang_ts_1r2w02ctaky7e._.js.map
|