watchbell 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -13
- package/bin/watchbell.mjs +731 -44
- package/package.json +1 -1
- package/scripts/node-runtime.mjs +166 -0
- package/scripts/selfhost-log.mjs +116 -0
- package/server/.next/BUILD_ID +1 -1
- package/server/.next/app-path-routes-manifest.json +1 -2
- package/server/.next/build-manifest.json +3 -14
- package/server/.next/prerender-manifest.json +9 -9
- package/server/.next/required-server-files.json +1 -1
- package/server/.next/routes-manifest.json +14 -18
- 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 +77 -66
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js +77 -66
- 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/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js +77 -66
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js +77 -66
- 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/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/(private)/ai/models/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/page.js +77 -66
- 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/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js +77 -66
- 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/server-reference-manifest.json +15 -15
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js +77 -66
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js +77 -66
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +77 -66
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js +77 -66
- 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)/alerts/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/alerts/page.js +77 -66
- 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/server-reference-manifest.json +53 -23
- package/server/.next/server/app/(console)/apps/[id]/page.js +84 -73
- 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/server-reference-manifest.json +32 -22
- package/server/.next/server/app/(console)/apps/page.js +83 -71
- 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/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/backups/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/catalog/page.js +77 -66
- 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/server-reference-manifest.json +20 -20
- package/server/.next/server/app/(console)/connections/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/d1/page.js +78 -67
- 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/server-reference-manifest.json +24 -14
- package/server/.next/server/app/(console)/deployments/page.js +77 -66
- 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/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/dns/page.js +77 -66
- 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/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/domains/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/events/page.js +77 -66
- 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/server-reference-manifest.json +40 -30
- package/server/.next/server/app/(console)/firebase/page.js +82 -71
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/logs/page.js +78 -67
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/manage/sections/page.js +77 -66
- package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +20 -20
- package/server/.next/server/app/(console)/neon/page.js +77 -66
- 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/server-reference-manifest.json +44 -34
- package/server/.next/server/app/(console)/overview/page.js +84 -72
- 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/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/repos/[id]/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/repos/page.js +77 -66
- 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/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/settings/page.js +77 -66
- 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/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/sql/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/status/page.js +77 -66
- 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/server-reference-manifest.json +39 -29
- package/server/.next/server/app/(console)/supabase/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/topology/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/turso/page.js +77 -66
- 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/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/upstash/page.js +77 -66
- 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/server-reference-manifest.json +32 -22
- package/server/.next/server/app/(console)/uptime/page.js +81 -70
- 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/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/welcome/page.js +77 -66
- 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/server-reference-manifest.json +1 -1
- package/server/.next/server/app/_global-error/page.js +5 -5
- 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 +5 -6
- package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +6 -7
- package/server/.next/server/app/_global-error.segments/_full.segment.rsc +5 -6
- package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/_not-found/page.js +5 -5
- 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 +6 -6
- package/server/.next/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/account/password/page.js +12 -10
- 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 +87 -80
- 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 +90 -83
- package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
- package/server/.next/server/app/api/ping/[...parts]/route.js +7 -6
- package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/status/route.js +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 +84 -77
- package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/advice/route.js +23 -22
- 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 +11 -10
- 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 +11 -10
- 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 +13 -12
- 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 +27 -26
- 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 +26 -25
- package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/me/route.js +10 -9
- 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 +7 -6
- 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 +22 -21
- 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 +22 -21
- package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
- package/server/.next/server/app/api/watchdog/route.js +20 -20
- package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/confirm/route.js +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 +3 -3
- 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 +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 +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 +1 -1
- package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
- package/server/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
- package/server/.next/server/app/icon.svg/route.js +12 -0
- package/server/.next/server/app/icon.svg/route.js.nft.json +1 -0
- package/server/.next/server/app/icon.svg.body +17 -0
- package/server/.next/server/app/icon.svg.meta +1 -0
- package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/invite/page.js +12 -11
- 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/server-reference-manifest.json +2 -2
- package/server/.next/server/app/mfa/page.js +33 -18
- 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/server-reference-manifest.json +3 -3
- package/server/.next/server/app/mfa/setup/page.js +33 -18
- 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/server-reference-manifest.json +1 -1
- package/server/.next/server/app/page.js +6 -6
- 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/server-reference-manifest.json +1 -1
- package/server/.next/server/app/s/[slug]/page.js +15 -12
- 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/server-reference-manifest.json +2 -2
- package/server/.next/server/app/setup/page.js +7 -6
- 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/server-reference-manifest.json +3 -3
- package/server/.next/server/app/signin/page.js +33 -19
- 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 -2
- package/server/.next/server/chunks/[externals]__0y_x27mdj85p4._.js +3 -0
- package/server/.next/server/chunks/[externals]__1fzfzd0ia0sk6._.js +3 -0
- package/server/.next/server/chunks/[externals]__1qqyrxnupegg3._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0-ytbad9hn7uc._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0032rbj2s87zo._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__01dj-ln12bcmb._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__01vos42kjq9nn._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__01yzy5zxsekxi._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__02ldm_7l9zld8._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__02v25dn1cwxz6._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__03i6yscmtbhhg._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__042oh4vbosg_5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__04ogdmf82__0g._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__04oipax0jupxr._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__05qcc-0e8z1u8._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__05zj7uswzr0f9._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__06jihgo98ek4u._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__07bw6o0jc31yr._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__07eo--c90cju2._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__07mzeijv31avl._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__08vrztky3u2ri._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__090in165mp6av._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0_nljmqhjcept._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0ab040lxtt8_d._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0awtaloe4_8am._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0bvdnvpw43au9._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0dltcr407-ow6._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0dsy-9ts8s-pn._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0f5bt0o1k41ft._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0fyucqcukadyv._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0g1cifa7hd790._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0gb4uz-gv3va0._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0gm_zyr-kdgc_._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0gqye-fi-f3zk._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0hblpf7wqke-j._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0hedtycoyydoc._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0hlyn_aj72sn5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0hnljrh9qi9t-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0hrtz5c_46jkw._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0ihedjvt-l2-u._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0iicsi0n7tfa5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0iwp0lu-5xco7._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0k7o0hgdraix2._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0kk-m8_ul4f4k._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0kp0yx909wtab._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0kt0hjvyklnk8._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0kzpzdkpz_nt0._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0l601p_x_1hm7._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0l6_iao04u72h._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0l9ja3579qrju._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0lu91s5izfu0p._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0noc6l63d3l9w._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0nrg8zzqizk69._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0nssu45m4c8t1._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0o1-xb-h4iivi._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0o6q27cnw6-77._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0oy0hcm48kl-q._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0po8f1pcqi-db._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0q-x05ekhpohj._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0r1men25anfgb._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0rpnd7cjqloa-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0s8vjz6urzn76._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0so_ihc-5tp14._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0t6dea8voaamp._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0twr9duara46x._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0u1wg-wnnhofm._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0u3un538__ca5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0uz_r72zdnwdd._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0v-gc-c_e8pwl._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0v1t0gkrsn99q._.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]__0w6pa9lnl93zu._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0x487cn6dsn12._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0xd_bgjy5_tr5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0xwv-ydetqjc7._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0yuyew8m9dc6-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0zmvf4j8e2gno._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0zni_2pv2fdgb._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0zs-wkvv1cs0i._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1-37ctpn8yw_m._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1-9hjrgvj0fpb._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__104ssf9-9v_5n._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__10cqzo_4dhr4m._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__10wbld2tja51-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__11a8fxlpahjy2._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__125fkw52kl2ty._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__137wzuow-_36q._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__13hrm9c61i7uk._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__143pob4pwxffi._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__14eyo4i2tm93k._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__14ou3bydfm0ms._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__15dhjj384tuw_._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__16waq6rapvngp._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__18eg-mk5loj_8._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__19o8cf83zllm5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__19ylbgd65iej4._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1_or7dycvkseg._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1_zjje9edw0bz._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1a9cd4d9ohf69._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1adw_bv2u89kc._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +6 -6
- package/server/.next/server/chunks/[root-of-the-server]__1brl5otpkvgd3._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1c78cu7kb9vkl._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1cdt67d022uf1._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1cpee8xi1ig3-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1d5y0cc5mg_07._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1dbz126yujh44._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1dh4di29mjq9y._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1dyith2r4bacm._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1e1l75cf48ph2._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1eu2_f44as742._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1io5zo7iam532._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1jsf0jf_ljpsm._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1k4cub-5zwl6v._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1kqq90-sj8-op._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1lam0c5a3f224._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1lerees-l5-6c._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1lj1f2w2-w8nw._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1mim39ea6-dm1._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1ooxluowhatjt._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1ozfk4_3lx1o7._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1p0zd1rtbkj9r._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1pvx0izh1m_0_._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1pyhos8be90-4._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1qrj37m-5y-56._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1rpgddeg42i-q._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1spds17tpnsgr._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1tzt79v15zvgk._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1uq8blxfaq_23._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1v4i7ytwadml8._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1vvg0ur3_7o0p._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1vwz2r58cojht._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1w7dv8zm-k_oa._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1wjsjh-1i-sn6._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1wu1dviacf85o._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1x7en4waq21dd._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1x813cg-b9rls._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1xl6_spngp6k3._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1xxmlb3soqzom._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1zg653esm3__p._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1zrqz88a2lkx5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1zvoez8iapsem._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1zwi7po5_xe8-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__209b5bw0k6-t3._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__209g3_0l-y67u._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__20dehd8e5-v9y._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__20pu-tixzpeev._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__212_l7y-180xi._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__213bsllf-9ztc._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__217jp1b3psyq_._.js +3 -0
- package/server/.next/server/chunks/_0-ow35nqudk5j._.js +1 -1
- package/server/.next/server/chunks/_004c7-39glldb._.js +4 -4
- package/server/.next/server/chunks/_023gjp96a_pq5._.js +3 -0
- package/server/.next/server/chunks/_03qlijpos6a21._.js +1 -1
- package/server/.next/server/chunks/_06lf75x-xhl7v._.js +3 -0
- package/server/.next/server/chunks/_09l75j3ey14tc._.js +1 -1
- package/server/.next/server/chunks/_09s2unlb4r6yf._.js +3 -0
- package/server/.next/server/chunks/_0cbxgnkxr1uj8._.js +3 -0
- package/server/.next/server/chunks/_0dn7480wo_c3b._.js +3 -0
- package/server/.next/server/chunks/_0duxuj4kmjibl._.js +41 -0
- package/server/.next/server/chunks/_0gz8ldqeokdtn._.js +1 -1
- package/server/.next/server/chunks/_0if5sw58tii_3._.js +3 -0
- package/server/.next/server/chunks/_0kay0bklv5khp._.js +3 -0
- package/server/.next/server/chunks/_0kmhvts35imzs._.js +4 -4
- package/server/.next/server/chunks/_0l_hz-8cj94r7._.js +3 -0
- package/server/.next/server/chunks/_0mqce8klmy8-0._.js +3 -0
- package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
- package/server/.next/server/chunks/_0nmfe_o9yhlh2._.js +3 -0
- package/server/.next/server/chunks/_0ofzzim090ezo._.js +1 -1
- package/server/.next/server/chunks/_0q3ygdztfvqq6._.js +3 -0
- package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +7 -7
- package/server/.next/server/chunks/_0qyupoc7u5hr7._.js +3 -0
- package/server/.next/server/chunks/_0rwuppwyvemfj._.js +4 -4
- package/server/.next/server/chunks/_0ry4553j-m5fp._.js +4 -0
- package/server/.next/server/chunks/_0sy878k2ywjbq._.js +1 -1
- package/server/.next/server/chunks/_0tz4o-qufnu3l._.js +4 -4
- package/server/.next/server/chunks/_0vjggb8yo5b9f._.js +3 -0
- package/server/.next/server/chunks/_0voowig3y32v1._.js +4 -4
- package/server/.next/server/chunks/_0wtlf0x_depae._.js +3 -0
- package/server/.next/server/chunks/_0zj10_al6r59j._.js +120 -0
- package/server/.next/server/chunks/_1-ior_ot6mgxg._.js +3 -0
- package/server/.next/server/chunks/_1-pcsy2hkg0il._.js +3 -0
- package/server/.next/server/chunks/_1-pw7jw52sbti._.js +1 -1
- package/server/.next/server/chunks/_1-yn_of8b2vax._.js +3 -0
- package/server/.next/server/chunks/_10vh_l3hht4_3._.js +4 -4
- package/server/.next/server/chunks/_113ebzq_9i756._.js +41 -0
- package/server/.next/server/chunks/_12die1sn6gq3d._.js +5 -5
- package/server/.next/server/chunks/_14dtti1qofqqv._.js +1 -1
- package/server/.next/server/chunks/_16urxazbgm48y._.js +4 -0
- package/server/.next/server/chunks/_17wpfa9osjqcw._.js +3 -0
- package/server/.next/server/chunks/_1_son1yzo5xvl._.js +1 -1
- package/server/.next/server/chunks/_1a5vma58w9ytn._.js +4 -4
- package/server/.next/server/chunks/_1ctwjh8q__6_g._.js +3 -0
- package/server/.next/server/chunks/_1daeuesc2d2tg._.js +3 -0
- package/server/.next/server/chunks/_1e_rbkrukj0x9._.js +120 -0
- package/server/.next/server/chunks/_1fi6cz4f-ri6d._.js +3 -0
- package/server/.next/server/chunks/_1g8r-7wcf8sy3._.js +4 -0
- package/server/.next/server/chunks/_1g_prqb_u33e3._.js +7 -7
- package/server/.next/server/chunks/_1ihndlef8r00f._.js +41 -0
- package/server/.next/server/chunks/_1mwb214-ablfo._.js +41 -0
- package/server/.next/server/chunks/_1ngkjn56qmi2x._.js +3 -0
- package/server/.next/server/chunks/_1p_978boite-8._.js +1 -1
- package/server/.next/server/chunks/_1r719c9unpq-5._.js +1 -1
- package/server/.next/server/chunks/_1v7q0xdxbqawm._.js +4 -4
- package/server/.next/server/chunks/_1xs2ya_n7kb04._.js +57 -0
- package/server/.next/server/chunks/_1xyr5p_pqp086._.js +3 -0
- package/server/.next/server/chunks/_1zn-ifmqqw-al._.js +3 -0
- package/server/.next/server/chunks/_21658fy9dy8ei._.js +3 -0
- package/server/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ubdhjtcp.js +3 -0
- package/server/.next/server/chunks/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
- package/server/.next/server/chunks/src_0--qn984h6czu._.js +3 -0
- package/server/.next/server/chunks/src_05jrvcsgaq5ek._.js +3 -0
- package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
- package/server/.next/server/chunks/src_06tyytf_c_hlu._.js +3 -0
- package/server/.next/server/chunks/src_088gmyaew7ds0._.js +1 -1
- package/server/.next/server/chunks/src_08fq45_-8xq5o._.js +3 -0
- package/server/.next/server/chunks/src_09cgjvch02173._.js +3 -0
- package/server/.next/server/chunks/src_0c7qu5adpm3gv._.js +3 -0
- package/server/.next/server/chunks/src_0i-1ohush6mui._.js +3 -0
- package/server/.next/server/chunks/src_0u2zbz77uh__q._.js +3 -0
- package/server/.next/server/chunks/src_0ud2mqnh4emxz._.js +3 -0
- package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +1 -1
- package/server/.next/server/chunks/src_1-6a00bmwlymu._.js +3 -0
- package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +1 -1
- package/server/.next/server/chunks/src_10vyvp9vy_69h._.js +3 -0
- package/server/.next/server/chunks/src_12wdz9bdn7a-7._.js +3 -0
- package/server/.next/server/chunks/src_13n1vi7uew4iu._.js +3 -0
- package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
- package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +1 -1
- package/server/.next/server/chunks/src_1cvp6ubs-3z6l._.js +3 -0
- package/server/.next/server/chunks/src_1il7wg_qjxny7._.js +3 -0
- package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +7 -4
- package/server/.next/server/chunks/src_1u-olt84z63rx._.js +3 -0
- package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +1 -1
- package/server/.next/server/chunks/src_1wmb2yl3tn-dd._.js +3 -0
- package/server/.next/server/chunks/src_1wzm081p6qyre._.js +7 -4
- package/server/.next/server/chunks/src_20ilndq84j3b3._.js +3 -0
- package/server/.next/server/chunks/src_lib_0-xd6p5793qdu._.js +3 -0
- package/server/.next/server/chunks/src_lib_0ayxuk4ftzf2f._.js +6 -0
- 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_0krdzz8eu9xh3._.js +6 -0
- package/server/.next/server/chunks/src_lib_0lpdyif-edl7i._.js +3 -0
- package/server/.next/server/chunks/src_lib_0n1xnas42gur9._.js +1 -1
- package/server/.next/server/chunks/src_lib_0qbcg988i_-ee._.js +3 -0
- package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +10 -9
- package/server/.next/server/chunks/src_lib_1-u7dbsavbtb0._.js +6 -0
- package/server/.next/server/chunks/src_lib_103kimc1xvc_0._.js +9 -0
- package/server/.next/server/chunks/src_lib_1550ey8j96v9n._.js +4 -0
- package/server/.next/server/chunks/src_lib_16oqslmhfgod1._.js +3 -0
- package/server/.next/server/chunks/src_lib_18wgdeemqm6gg._.js +3 -0
- package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +10 -9
- package/server/.next/server/chunks/src_lib_1onr7b4_kglpt._.js +4 -0
- package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +10 -9
- package/server/.next/server/chunks/src_lib_1sdusf16f07x-._.js +9 -0
- package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
- package/server/.next/server/chunks/src_lib_1xwavi_m_li7p._.js +3 -0
- package/server/.next/server/chunks/src_lib_1ywf_wup1kxy_._.js +1 -1
- package/server/.next/server/chunks/src_lib_1zd1btsqvk1e2._.js +3 -0
- package/server/.next/server/chunks/src_lib_206j7lyff31-g._.js +6 -0
- package/server/.next/server/chunks/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
- package/server/.next/server/chunks/src_lib_collector_http-check_ts_0bh0rtjky3u1-._.js +3 -0
- package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +5 -5
- package/server/.next/server/chunks/src_lib_data_advisor-db_ts_0rl1ug3iana24._.js +3 -0
- package/server/.next/server/chunks/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +3 -0
- package/server/.next/server/chunks/src_lib_data_deployments-db_ts_1shbv_55rwa2-._.js +3 -0
- package/server/.next/server/chunks/src_lib_data_provider-status-db_ts_09oo6p4m7x7te._.js +3 -0
- package/server/.next/server/chunks/src_lib_demo_0a5wqvhuj5hjh._.js +3 -0
- package/server/.next/server/chunks/src_lib_demo_0alh_mll9yp9d._.js +3 -0
- package/server/.next/server/chunks/src_lib_demo_0rbejiyw_ry41._.js +3 -0
- package/server/.next/server/chunks/src_lib_demo_11p30f_ci6ie2._.js +3 -0
- package/server/.next/server/chunks/src_lib_demo_21179a6aev-i3._.js +3 -0
- package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +6 -6
- package/server/.next/server/chunks/src_lib_demo_session_ts_01_g7aejuhoq0._.js +3 -0
- package/server/.next/server/chunks/src_lib_deps_plan_ts_0bctf8v4qttk5._.js +1 -1
- package/server/.next/server/chunks/src_lib_domain-move_ts_04stiet1-xpe2._.js +3 -0
- package/server/.next/server/chunks/src_lib_local-auth_proxy_ts_1g9krhdh2rnt2._.js +4 -4
- package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +1 -1
- package/server/.next/server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js +1 -1
- package/server/.next/server/chunks/src_lib_rate-limit_ts_09dzyftcadggh._.js +1 -1
- package/server/.next/server/chunks/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
- package/server/.next/server/chunks/src_lib_rate-limit_ts_1ahtm4quu2rri._.js +1 -1
- package/server/.next/server/chunks/src_lib_sections_ts_0r8u4nvlpdkgq._.js +3 -0
- package/server/.next/server/chunks/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
- package/server/.next/server/chunks/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
- package/server/.next/server/chunks/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
- package/server/.next/server/chunks/src_private_1_nggk_wre7qf._.js +2 -2
- package/server/.next/server/chunks/src_private_1yzfhupl3rlpx._.js +6 -0
- package/server/.next/server/chunks/src_private_actions_proposals-settings_ts_16v2x9a4amejq._.js +1 -1
- package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
- package/server/.next/server/chunks/src_private_ai_gateway_ts_1qtr4nyb8kgnd._.js +2 -2
- package/server/.next/server/chunks/src_private_assist_provider-answer_ts_10qv42t-5046y._.js +1 -1
- package/server/.next/server/chunks/src_private_auth_api-key_ts_1y0tfcmbozpwf._.js +4 -4
- package/server/.next/server/chunks/src_private_console_snapshot_ts_17etygjp9dy1t._.js +1 -1
- package/server/.next/server/chunks/src_private_mcp_data_ts_0qdp7n8rzp7k7._.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]__0et8619os7o06._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__0jv_q8g96gubg._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__0uri0lxk2rh6k._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__0x50_fipcza3k._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__0yzs5m5hot2o2._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__1d_fn156y1kzg._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__1hqh7fi0-rtlc._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__1mmmc4yhx5fm6._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__1neu6qld_ilyx._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__1nv-uycpa6_lh._.js +3 -0
- package/server/.next/server/chunks/ssr/[externals]__1p5zuqwmfkoo1._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0-jx3t8dg8n5t._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0-o5i-5pqjk5v._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__00wwav5k7xmy0._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__01mgajn73iwc7._.js +5 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04klr3-4qi7-t._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04zgt2t-w6-75._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__050d99bknjdvq._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__05hw89gap74cw._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__05q-laapy00sk._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__06uaa_2zbg57p._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__081l8lhgoffuc._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0828947qad6xx._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__08w3ad-xux1g4._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0_1130gx52k-9._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0_677ii9bahoy._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0bn_thc_vtf_i._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0dd9rci1isdjf._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ejxk0jlgi4eb._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0exp042uqhyqs._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0fkxv6yyok76e._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0h2hxe0vl-2x0._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0hgf7si8htevx._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0k8k-fbyzfbog._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0khp_gsot3jh_._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0khvq0xdah931._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0kr_tvfgqtb-o._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0lehuiyzxp78t._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0llh-w4ta1qbp._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlfip3wc3l2z._.js +4 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0nrc_8-wrhf3y._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0p5znbfo0wgsu._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0p7d9dfmuhnvv._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ptdec0sozaqm._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0tjab3yn0asf7._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0tp9vtckbkk9o._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ua-p_wz8epv9._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ujxsp9l9ad-l._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0vdb51zrgcnkp._.js +3 -0
- 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]__0y84mqfn13ss4._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0yzkcvsekwypa._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1096-q3_trmm9._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__10rhqv5xq9jaj._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__10y2ig7dg3f-k._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__11ham42w_feik._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__12-a3tcnfdcyq._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__133_j0bmsjnzt._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__14ept-_l8j32m._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__15keslh0ov5mv._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__15wwi1pda8ims._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__16ehn8dupt4y_._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__16jkttbe1yoai._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__17bfr3mlfy4ur._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__18xb7pbdmiyiz._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__194546bqpq02e._.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]__1a3fyho18xlil._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1acw8ohqfhez7._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1bvp2ia3h9qbs._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1cmcwg6afneet._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1dyjzbqwy6o12._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1f9yq2f20_bof._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1fj33_xkainxk._.js +4 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1hmh1-e3z3_dw._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1jgp7__2zpblj._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1k_hi9mbd4_by._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1kieqcc6kdywx._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1l695djsioelp._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1nat8lbog5imr._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1pfk0fqey3ipf._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1pgpryg9lkmoz._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1qac3db7p9a38._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1rvdnoxnu0ddf._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1t4thrxlv4zre._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1tco2ec6ha1k6._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1tcu4-eowz9vt._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1tuftf7fags7x._.js +5 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1vyste6xyyu37._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1xt8hv0dzjv2i._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1xwqrik2sugmi._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1yf4_oyl-3xp7._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__20of6xa16fwqa._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__2195hg4329yfp._.js +3 -0
- 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/_04ltmruop4rt3._.js +4 -0
- package/server/.next/server/chunks/ssr/_06kn13xh_13da._.js +3 -0
- package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +2 -2
- package/server/.next/server/chunks/ssr/_090fib2x989oc._.js +3 -0
- package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +3 -0
- 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/_0a22b7zsckifp._.js +1 -1
- package/server/.next/server/chunks/ssr/_0ad3y3l77xkxe._.js +3 -0
- package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
- package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +3 -0
- 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/_0fyag9o6gdcmb._.js +3 -0
- package/server/.next/server/chunks/ssr/_0hmxyfx7su4uk._.js +4 -0
- 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/_0k2qpgzlqzc_p._.js +1 -1
- package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +2 -2
- package/server/.next/server/chunks/ssr/_0lmcrl8r9dg49._.js +1 -1
- package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +2 -2
- package/server/.next/server/chunks/ssr/_0ns_087lx5abm._.js +1 -1
- package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
- package/server/.next/server/chunks/ssr/_0qcvpnwa1u3vr._.js +3 -0
- package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +4 -0
- package/server/.next/server/chunks/ssr/_0qyupoc7u5hr7._.js +3 -0
- package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +1 -1
- package/server/.next/server/chunks/ssr/_0ufjz7kfd4jbd._.js +3 -0
- package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +2 -2
- package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +3 -0
- package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +4 -0
- package/server/.next/server/chunks/ssr/_0wzg8e30al7bu._.js +3 -0
- package/server/.next/server/chunks/ssr/_0ymtfa6vo-yz5._.js +3 -0
- package/server/.next/server/chunks/ssr/_0yn1xeumiigj0._.js +3 -0
- package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
- package/server/.next/server/chunks/ssr/_1-ior_ot6mgxg._.js +3 -0
- package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +5 -5
- package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +2 -2
- package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +4 -0
- package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +2 -2
- package/server/.next/server/chunks/ssr/_14dtti1qofqqv._.js +1 -1
- package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +2 -2
- 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/_19dldpcnzhkuw._.js +3 -0
- package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
- package/server/.next/server/chunks/ssr/_1_gydx19bikgo._.js +3 -0
- package/server/.next/server/chunks/ssr/_1ag8axv14phju._.js +4 -0
- package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +2 -2
- package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +2 -2
- package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
- package/server/.next/server/chunks/ssr/_1dqf3jmb24s37._.js +1 -1
- package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +2 -2
- package/server/.next/server/chunks/ssr/_1e5zfwgdf0mm5._.js +3 -0
- package/server/.next/server/chunks/ssr/_1g27pa6rivh_s._.js +1 -1
- package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
- package/server/.next/server/chunks/ssr/_1gk334l49puy-._.js +3 -0
- package/server/.next/server/chunks/ssr/_1gvbcfoah__sl._.js +3 -0
- package/server/.next/server/chunks/ssr/_1h93joqd_-1og._.js +3 -0
- package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +2 -2
- package/server/.next/server/chunks/ssr/_1i96si4hzn74p._.js +1 -1
- 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/_1nzncndn-1ggb._.js +1 -1
- package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +3 -0
- package/server/.next/server/chunks/ssr/_1rf_mwfkk_9oa._.js +3 -0
- package/server/.next/server/chunks/ssr/_1uae0vl2c6fz7._.js +3 -0
- package/server/.next/server/chunks/ssr/_1w3eagae2f-2-._.js +1 -1
- package/server/.next/server/chunks/ssr/_1w_rq6clcs0ft._.js +4 -0
- package/server/.next/server/chunks/ssr/_1y8wer5tpgiqw._.js +3 -0
- package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +2 -2
- package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
- package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +2 -2
- package/server/.next/server/chunks/ssr/_217qa04yo70zg._.js +3 -0
- 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_1zw_mdh2ep6vs.js +3 -0
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_06a1fnrawxlh1.js +1 -1
- 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_217-u-dmlzx6a.js +3 -0
- 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 +1 -1
- 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_1_u5afwqp6brs._.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-kg_ige9ehqj.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00k37tbaia8dh.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00z_p6szkga15.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01-utr59mtfg1.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_055hw7kwif935.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06fg_efdkc3kx.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08f3d08smwt6_.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcfro9qovjn.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0c8wd69fns_0d.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cha-3kg99u4h.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d_0he72lzkh9.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0f6chw8z5cuyg.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0i3p3qfjihm3f.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ivgh76j_tu2x.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0j9-_xhs21abp.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0kwpdjujljna-.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ns6neau7m6mt.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rer2akuum5r-.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0umt_achusjjb.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0un7wq602mt3n.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0vrdl9n7guitd.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0vse2cboy4cms.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0x7ey4_8b48_o.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0z8l8t55t65t_.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zap6p0vuv-fp.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-m49cfu6a7gl.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-w3hswsbrppl.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1167zbjp4ys_a.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_129serqqq3xyq.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_12en3pdvxu0dy.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_14-4y3i6c1vxc.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1596hk9t3r1a5.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_17us24ry0om-z.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_8xi22-aoxu1.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_l32aoya75_m.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ar0v26274uhj.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dkgfjoaf_1g3.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1eg14m09zdg__.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1h_y671y1la_8.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mkokmyyp47hd.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1msjiuu45famw.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mw7isdchouml.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n4cotiug2a_r.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1njl24pr6dwrt.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o1_3bydb-3j5.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1pjor42_s9imf.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q_82vyl-q7u6.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qta4yeufzpz7.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qxbl6k6dji0s.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_21a3kf8buivxw.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
- package/server/.next/server/chunks/ssr/src_0-v68qrxobagw._.js +4 -3
- 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_0905fjqu0qv57._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +6 -3
- package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0i-1ohush6mui._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0ixeyy74fe5jy._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0jdurlhzhcg5x._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0ley8c3htc2q9._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0oagnv9_4qww7._.js +3 -0
- 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_0uitfl3c1mdqb._.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_12sdm7skn8fr1._.js +3 -0
- package/server/.next/server/chunks/ssr/src_13upnysaqwi9a._.js +3 -0
- package/server/.next/server/chunks/ssr/src_16lx0qdi44evh._.js +3 -0
- package/server/.next/server/chunks/ssr/src_1koc8y1nfdlw3._.js +3 -0
- package/server/.next/server/chunks/ssr/src_1nse4o3frj33x._.js +3 -0
- package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +3 -0
- package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1xjlp4oxlprxb._.js +3 -0
- 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_ask_ask-form_tsx_18ttm9nna_9y6._.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_models_0ayzqn062pnv5._.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_1ru-30x6-uwu4._.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_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)_08pmfte22v8vg._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_1rx84pcbevbbk._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_1_g9txz3qpxgg._.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)_catalog_page_tsx_1u2_-bv4yi5oo._.js +1 -1
- 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 +1 -1
- 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)_deployments_06a83hsex1kba._.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)_firebase_1stlii5cy_hx3._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +3 -0
- 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 +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
- 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)_overview_page_tsx_0se3f3ln9q-42._.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_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)_supabase_0ib3m2ch9gu-4._.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_invite_page_tsx_0mny3a23n5hs9._.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_s_[slug]_not-found_tsx_04_zrw19809g4._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.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_0hb58isfg-2yx._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_signin_1_sp0qx8_z7c9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +3 -0
- package/server/.next/server/chunks/ssr/src_components_0j11cbzb8mgbx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +1 -1
- package/server/.next/server/chunks/ssr/src_components_1pytjhvy4c2mp._.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_row-menu_tsx_0rzpl9elzpy8u._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_0-xd6p5793qdu._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +3 -2
- package/server/.next/server/chunks/ssr/src_lib_033ses2c4-ww-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_0br09js6tlkn0._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_0f_4mvf4-xxst._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_0n1xnas42gur9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_0qbcg988i_-ee._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_16oqslmhfgod1._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_18e550s395xn5._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_18wgdeemqm6gg._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_1_5ea0kxdn6zt._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_1xwavi_m_li7p._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_1ywf_wup1kxy_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_20y7pw44m8gs0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_backoff_ts_1ng2bz5j0w501._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_collector_db-tasks_ts_1srkgjghwj3ma._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_collector_http-check_ts_0bh0rtjky3u1-._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_collector_node-runtime_ts_0778fef3fi3zj._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +3 -3
- package/server/.next/server/chunks/ssr/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_data_deployments-db_ts_1shbv_55rwa2-._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_data_provider-status-db_ts_09oo6p4m7x7te._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_data_public-status-db_ts_0gvnrjcitruqe._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_data_supabase-action_ts_0h0b758akvlvd._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_data_vercel-action_ts_1hvera3nwo5fp._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_demo_0a5wqvhuj5hjh._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_demo_0mr090huk17s8._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_demo_1wu-a6lubzph6._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_deps_plan_ts_0bctf8v4qttk5._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_domain-move_ts_04stiet1-xpe2._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_sections_ts_0r8u4nvlpdkgq._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_utils_ts_0m4hn6s00gc2u._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_view_deploy-actions_ts_110iixnn6rdh9._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_view_usage_ts_1h1tj0m3n2vul._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_04omlb_sgy-_r._.js +1 -1
- 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_actions_proposals-settings_ts_16v2x9a4amejq._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_actions_telegram-approvals_ts_14gvz6qi_j4aa._.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_ai_usage-analytics_ts_1bxba3xarzol0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +6 -6
- package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/middleware-build-manifest.js +3 -14
- package/server/.next/server/middleware.js +1 -1
- package/server/.next/server/next-font-manifest.js +1 -1
- package/server/.next/server/next-font-manifest.json +0 -4
- 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 +242 -212
- package/server/.next/static/chunks/0-_zjfssid86w.js +33 -0
- package/server/.next/static/chunks/02-edmd1oolf2.css +3 -0
- package/server/.next/static/chunks/02e07gc948zdh.js +1 -0
- package/server/.next/static/chunks/05p62k_8g05pm.js +76 -0
- package/server/.next/static/chunks/073u0a0mfexc8.js +1 -0
- package/server/.next/static/chunks/09fx7h5vm68up.js +1 -0
- package/server/.next/static/chunks/0a5vchcarwyam.js +1 -0
- package/server/.next/static/chunks/0ao7_ov9mlvqp.js +1 -0
- package/server/.next/static/chunks/0cvmbpyjages7.js +5 -0
- package/server/.next/static/chunks/0hnhf3barhk90.js +1 -0
- package/server/.next/static/chunks/0i8-ofb4wfcch.js +1 -0
- package/server/.next/static/chunks/0id261ol_gl6f.js +1 -0
- package/server/.next/static/chunks/0iyozrryj1w49.js +1 -0
- package/server/.next/static/chunks/0q2ogu5cn9q9p.js +1 -0
- package/server/.next/static/chunks/0z_fqwq62_95p.js +1 -0
- package/server/.next/static/chunks/12fo0pcbpv7lw.js +1 -0
- package/server/.next/static/chunks/12l7tr29-a97t.js +1 -0
- package/server/.next/static/chunks/16d1ws92me6_q.js +1 -0
- package/server/.next/static/chunks/1__8cm_-lydee.js +1 -0
- package/server/.next/static/chunks/1hmur12m0hx3z.js +1 -0
- package/server/.next/static/chunks/1o1lidcbrrh92.js +1 -0
- package/server/.next/static/chunks/1pre7l9hmk-b6.js +1 -0
- package/server/.next/static/chunks/1qxc6cck2xkbs.js +1 -0
- package/server/.next/static/chunks/205s3z3_jvp5m.js +1 -0
- package/server/.next/static/chunks/20cpkauaj8e6x.js +7 -0
- package/server/.next/static/chunks/25meucm7i1e7b.js +1 -0
- package/server/.next/static/chunks/2oy7awlquezq_.js +1 -0
- package/server/.next/static/chunks/2pj8subq20y-_.js +1 -0
- package/server/.next/static/chunks/2qcurt9u9shwc.js +1 -0
- package/server/.next/static/chunks/2scf40c-_g_q1.js +1 -0
- package/server/.next/static/chunks/2tnx5isef9ryw.js +1 -0
- package/server/.next/static/chunks/2v_f39dz8sa3-.js +1 -0
- package/server/.next/static/chunks/2whojv56qi3ke.js +1 -0
- package/server/.next/static/chunks/2wlen-jacsbqv.js +1 -0
- package/server/.next/static/chunks/319s97ka6eaex.js +1 -0
- package/server/.next/static/chunks/36bqhxadlfbfn.js +1 -0
- package/server/.next/static/chunks/36js6cf9c-53b.js +1 -0
- package/server/.next/static/chunks/372gugw4ldy47.js +1 -0
- package/server/.next/static/chunks/39n_1gky-xh0a.js +1 -0
- package/server/.next/static/chunks/3fv862m8cvcoe.js +1 -0
- package/server/.next/static/chunks/3g73nar6-7bqk.js +1 -0
- package/server/.next/static/chunks/3orhi-m-n-ra4.js +1 -0
- package/server/.next/static/chunks/3u3h2mlon2qu7.js +1 -0
- package/server/.next/static/chunks/3vacue9vhoqag.js +1 -0
- package/server/.next/static/chunks/3x8-w_p0n-gsd.js +1 -0
- package/server/.next/static/chunks/3xo5igjfumqip.js +1 -0
- package/server/.next/static/chunks/3yljsdgzvrkdf.js +1 -0
- package/server/.next/static/chunks/3zx1pe40m_ddz.js +1 -0
- package/server/.next/static/chunks/415ijq-anmr2o.js +1 -0
- package/server/.next/static/chunks/43wm4_0-0-eej.js +1 -0
- package/server/.next/static/chunks/44bizq7fli9cp.js +1 -0
- package/server/.next/static/media/icon.17zy5uxei5-yo.svg +17 -0
- package/server/drizzle-selfhost/0005_framework_vulnerable_rule.sql +2 -0
- package/server/drizzle-selfhost/0006_monitor_domain_moved.sql +4 -0
- package/server/drizzle-selfhost/meta/_journal.json +54 -40
- package/server/server.js +1 -1
- package/tools/reset-login.mjs +29 -2
- package/server/.next/server/app/(console)/[...slug]/page/app-paths-manifest.json +0 -3
- package/server/.next/server/app/(console)/[...slug]/page/build-manifest.json +0 -22
- package/server/.next/server/app/(console)/[...slug]/page/next-font-manifest.json +0 -11
- package/server/.next/server/app/(console)/[...slug]/page/react-loadable-manifest.json +0 -1
- package/server/.next/server/app/(console)/[...slug]/page/server-reference-manifest.json +0 -95
- package/server/.next/server/app/(console)/[...slug]/page.js +0 -103
- package/server/.next/server/app/(console)/[...slug]/page.js.nft.json +0 -1
- package/server/.next/server/app/(console)/[...slug]/page_client-reference-manifest.js +0 -3
- package/server/.next/server/app/favicon.ico/route/app-paths-manifest.json +0 -3
- package/server/.next/server/app/favicon.ico/route.js +0 -12
- package/server/.next/server/app/favicon.ico/route.js.nft.json +0 -1
- package/server/.next/server/app/favicon.ico.body +0 -0
- package/server/.next/server/app/favicon.ico.meta +0 -1
- package/server/.next/server/chunks/[externals]__0qo8lpb70m87u._.js +0 -3
- package/server/.next/server/chunks/[externals]__100hq0n2xtenb._.js +0 -3
- package/server/.next/server/chunks/[externals]__1irgb5qz1s3gv._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__00hb7hqa7qktx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__01gitcyenl9ge._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__02m_c7u17aggg._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__049ykc067tlsv._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__04rnior8cyxtx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__05eh797cjmgya._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__06ek056i_j_uk._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__06f9e4kpi0mw8._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__06jphm4auz_sh._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__06r-019fixp3f._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__07uknh5b-embq._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__07v5e0vzgl4n2._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__07w0ehfomhmm1._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__08fyoixg__c7n._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__091fhe9u6mapu._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__09829lhdhabq5._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0_rfeg3389imx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0a9tv46v8y_c5._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0aha0ly6g6o_2._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0b2hzo6nez0we._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0b9tciqdsctau._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0b_4w-5x5u7ag._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0b_jutz-o08fu._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0bnasoi-x21jc._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0c4u-u6i71c99._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0c5w5y-db0jkb._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0d8ypilha-el8._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0dlwmjtvf308b._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0el1c67a5ioz_._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0evbn4gllmqw9._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0flqwe7amc3mz._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0fw19tsgp-vbq._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0fw7l5y58_xcd._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0g1tldn4xjewd._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0grtjjr51j6xe._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0h1qhdjpfq1d4._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0h4n81_nqdr4j._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0h7pbkmsrhlwj._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0hqkum2r4f0xy._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0hty-wue10pro._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0i598fxqi-zy7._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0jqgfbhrgi28s._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0l0w4cbvdatmt._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0m7i0l3nkbdfm._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0m_6ooqldguxr._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0mwiq4mkf8pc5._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0npmbdrxybln5._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0nqw6z6fp8wad._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0olmk-rbbhxlo._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0owyb9lr5t5u-._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0p3lnkpxf2-xz._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0p70ujmcgsfif._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0q6_612vy0cdp._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0qmkpydmx3ljf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0r-zdzq6ki5gr._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0si9k9jhdc0bm._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0t8d8b4qkw3y-._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0thzl_1s30zso._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0tl5pxttllr4d._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0ud71z3im7xje._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0uyh4jgcd9092._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0v4-g6c-ls39_._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0vgnlhvdoh3bn._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0vugeaxly8zvv._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0wmbz6u3dhwpq._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0wy38l7k36j6g._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0xiz361p5kdhf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0xmk00qk0z8xm._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0y4j2b3eu46x_._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0z-07azr3zk8s._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0z-41cwvkliev._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0znfwqxftxq60._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0zxyfd7u67hmv._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1-jsquu8mohcz._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1-rqermjb77se._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1-zdlu4-l-ku9._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__10-px6moitvbx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__10c7apgidgs6x._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__10igiswto_7s8._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__10x3lu8jeqgbt._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__11-van59e9p2a._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__110c-t3wz3nzm._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__116b4n13dv75t._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__11k46kam6tbia._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__11tte6au1b-z-._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__127dbd1prkw0n._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__139-2tkq2di_-._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__13_b24n_f4my4._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__145gadwk31inl._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__14luo1ecxoqh-._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__162cm9ds1c5y2._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__16wve14c32m54._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1815iu1syowit._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__19kwj690b37xf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__19vsae2naddj5._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1__rgcmvy4dq_._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1_l065umy451k._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1_ow7lgy0u7st._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1addx81qjp4tj._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1aza-7l2pl-pm._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1bfzck-boudpr._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1bsyavebtmd7w._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1cju843cjyf1t._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1cla4k3dqtcfb._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1d01ycphxl_8c._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1e31qar_deo52._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1fm_cwl42xphm._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1fnsa-f0t7bxj._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1g1176fer3j4e._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1h-j2ehta-v8y._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1hqy35gww7ps2._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1i92wg2yuvs4c._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1iv6vg3z9ho81._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1j3-sv7eqyhjb._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1j3w0-cp17tx4._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1j_iy13gp2-on._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1jx4n51g-4s45._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1kg91b3sadtoc._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1kjndfodqqamq._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1l8s8oe7j06yw._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1m08l0n-keil9._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1mami4vb3y5gd._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1mse65-7gtj-n._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1nbabbcvq6ftu._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1o0vizengmvr5._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1objhlwwrjfjk._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1pscqm70t9q_6._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1r-13hkmnpab2._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1r-kuxxt5svyg._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1r0czef7apz8a._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1r6ztpxo08lwp._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1rw0i4x2ake3x._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1s5qcgiravzf_._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1sucr6flncx_f._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1t0_ibqlvou_d._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1t9zp524wouer._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1tezk6eqndp54._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1tllcx0d90k6q._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1u1b3a58anm3f._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1v-789ydxj30e._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1vi0u2vkv3tk0._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1w3svzao_gnxp._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1w53h3d5ptawi._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1w_73psnce1dd._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1wuxzuu_xkzl6._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1wwzyck7gzela._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1x7ucdyxuh2_k._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__20_1nfa6fiz-q._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__20b_clyk74g5u._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__20ev6t8zggct2._.js +0 -3
- package/server/.next/server/chunks/_008zv66xvj7ey._.js +0 -37
- package/server/.next/server/chunks/_0a-hy32dzrje8._.js +0 -3
- package/server/.next/server/chunks/_0a7533vs89s78._.js +0 -7
- package/server/.next/server/chunks/_0ejcrge5k4quv._.js +0 -120
- package/server/.next/server/chunks/_0gbk60zhuj4js._.js +0 -3
- package/server/.next/server/chunks/_0k4iqzwm6w5_c._.js +0 -37
- package/server/.next/server/chunks/_0m1ll2r1g77ii._.js +0 -3
- package/server/.next/server/chunks/_0mgm3vz_sy8eb._.js +0 -3
- package/server/.next/server/chunks/_0nt4hve0bi30h._.js +0 -37
- package/server/.next/server/chunks/_0qr77omrkuewo._.js +0 -3
- package/server/.next/server/chunks/_0rjh9w2ih3j2h._.js +0 -3
- package/server/.next/server/chunks/_0ucq4nndk_9mb._.js +0 -3
- package/server/.next/server/chunks/_0uxp3uhmyw1h3._.js +0 -3
- package/server/.next/server/chunks/_0wxm_716tjorj._.js +0 -3
- package/server/.next/server/chunks/_0zbvj132mwn12._.js +0 -3
- package/server/.next/server/chunks/_0zkmkbrbc96-h._.js +0 -3
- package/server/.next/server/chunks/_13a44prd3r109._.js +0 -3
- package/server/.next/server/chunks/_14ymj3uzawde4._.js +0 -7
- package/server/.next/server/chunks/_1b7pc6ohhqxs3._.js +0 -120
- package/server/.next/server/chunks/_1b7ufx8anq8rr._.js +0 -3
- package/server/.next/server/chunks/_1i7qkrp3fnx1a._.js +0 -37
- package/server/.next/server/chunks/_1lq5m27p-ilrw._.js +0 -3
- package/server/.next/server/chunks/_1luzeov9x87mg._.js +0 -7
- package/server/.next/server/chunks/_1mnwzh3z9y4th._.js +0 -3
- package/server/.next/server/chunks/_1zx_54or1pubb._.js +0 -57
- package/server/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjlssn1kss.js +0 -3
- package/server/.next/server/chunks/node_modules_next_166oduh3hi1qv._.js +0 -3
- package/server/.next/server/chunks/node_modules_next_1bpl0_13bu-mp._.js +0 -3
- package/server/.next/server/chunks/src_014zbodp4djeb._.js +0 -3
- package/server/.next/server/chunks/src_01jp2f5qmh8e2._.js +0 -3
- package/server/.next/server/chunks/src_04pgj--n_d4w5._.js +0 -3
- package/server/.next/server/chunks/src_0dy4w8f4s56m7._.js +0 -3
- package/server/.next/server/chunks/src_0h2cjsnz9pqi7._.js +0 -3
- package/server/.next/server/chunks/src_0h8_rg_r28y_e._.js +0 -3
- package/server/.next/server/chunks/src_0hhtt0p5ybxni._.js +0 -3
- package/server/.next/server/chunks/src_0kwnhwi77unm7._.js +0 -3
- package/server/.next/server/chunks/src_0ldb1fj5qtl-n._.js +0 -3
- package/server/.next/server/chunks/src_0rh392hbuxnv6._.js +0 -3
- package/server/.next/server/chunks/src_0vffc49o4-382._.js +0 -3
- package/server/.next/server/chunks/src_0xqorb3-ef3ub._.js +0 -3
- package/server/.next/server/chunks/src_10y_2e6znqpoa._.js +0 -3
- package/server/.next/server/chunks/src_17m9gvb5o-w8p._.js +0 -3
- package/server/.next/server/chunks/src_1dsh9rzlos6-1._.js +0 -3
- package/server/.next/server/chunks/src_1hy7u0jtydq_d._.js +0 -3
- package/server/.next/server/chunks/src_1j2o14j0-23xv._.js +0 -3
- package/server/.next/server/chunks/src_1j71dvub05y-4._.js +0 -3
- package/server/.next/server/chunks/src_1no_yh953mran._.js +0 -3
- package/server/.next/server/chunks/src_1s7yll47_n_hy._.js +0 -3
- package/server/.next/server/chunks/src_lib_03a2ehk2-znxl._.js +0 -3
- package/server/.next/server/chunks/src_lib_08u7n7-yunfvd._.js +0 -4
- package/server/.next/server/chunks/src_lib_0d-fifn3g3zp4._.js +0 -3
- package/server/.next/server/chunks/src_lib_0dyhs-qioyjww._.js +0 -3
- package/server/.next/server/chunks/src_lib_0hkrs-q6hzcww._.js +0 -3
- package/server/.next/server/chunks/src_lib_0oz4gm8agoidh._.js +0 -6
- package/server/.next/server/chunks/src_lib_0s_txig7jm3ty._.js +0 -9
- package/server/.next/server/chunks/src_lib_0x4n8swwa3zn7._.js +0 -3
- package/server/.next/server/chunks/src_lib_0y-obfzqjj0c6._.js +0 -6
- package/server/.next/server/chunks/src_lib_10_w0ihgmx4e6._.js +0 -6
- package/server/.next/server/chunks/src_lib_10vqn6q0h8kls._.js +0 -4
- package/server/.next/server/chunks/src_lib_15wd7ab4u5nrn._.js +0 -9
- package/server/.next/server/chunks/src_lib_1p21oczr6lh5a._.js +0 -3
- package/server/.next/server/chunks/src_lib_1s-3a-lp7wq7s._.js +0 -3
- package/server/.next/server/chunks/src_lib_1tzoqx44yogsk._.js +0 -4
- package/server/.next/server/chunks/src_lib_1v1ja5mvs12l3._.js +0 -3
- package/server/.next/server/chunks/src_lib_1y3rtb5bjz0-k._.js +0 -3
- package/server/.next/server/chunks/src_lib_1yewk45thnv1h._.js +0 -3
- package/server/.next/server/chunks/src_lib_1z73euz6d3tus._.js +0 -6
- package/server/.next/server/chunks/src_lib_data_0ask_rbmgwlf3._.js +0 -3
- package/server/.next/server/chunks/src_lib_data_0e155tkqeoojm._.js +0 -3
- package/server/.next/server/chunks/src_lib_demo_1vea4wqi-dxio._.js +0 -3
- package/server/.next/server/chunks/src_lib_demo_1w8p39upm6ea2._.js +0 -3
- package/server/.next/server/chunks/src_lib_demo_session_ts_1gjl21ovvq1na._.js +0 -3
- package/server/.next/server/chunks/src_lib_demo_session_ts_1ou6lpswmwykq._.js +0 -3
- package/server/.next/server/chunks/src_lib_security_osv_ts_1fckitwjz25y3._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__020te-_1z03yq._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__0d_b-rmqrnp-4._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__0jneh11f99ndq._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__0q1j6etr_np7z._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__0tuq6zpflbfiy._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__0zvy4iicnrk95._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__1-bg5_534qin1._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__19ny_glrblslt._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__1a1nz9v0djtee._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__1ut5w9sjvvugj._.js +0 -3
- package/server/.next/server/chunks/ssr/[externals]__1wps6-uuzn43x._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02cq5r26w4itc._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02ekfgznq_frg._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02qyxz9eh8_eh._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02s8g4eagqfmb._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04ovk2bqwu87z._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__052_cprs0alpy._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0543ddliluvv3._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__08479d23kb1xv._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__08fqg76puqdfr._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__08lyheht537x7._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__08r-36gsbhzfl._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09-0oydof-7uw._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09nm_hn1c8zhf._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09zhej94-8cfl._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0acmauri7z1sg._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0aqyve_ff5w0a._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0bk5eahqwy8sh._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ct71emqfru3b._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0e9m8up0h1qhl._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0eiatxdstconl._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0gm7dev9velgg._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0go63he_23y9m._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0h9gtpapca7i_._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0hln97a4qcziv._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0jijx2bqn0en9._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0krmmz0jerb62._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ksvf4x4zcbpb._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0lc7my3iqbrsu._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0lt7660aka4d-._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0msyy6xoone7-._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0n7cj-oti5wct._.js +0 -4
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ncef7_34ta3-._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0nk9sgklibvso._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlzqp6jk7rac._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0op0kqh43wd-a._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0qe9gfdyim9-4._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0s5ikdxrwjpuv._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0tf_y6x-civd1._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0z8wbpv0sokm-._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1-5oo48nrva5i._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1-7rv__xugolc._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1-o_iq-ed9vc8._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__10bkg3o65q6r4._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__10d1_0sush0ly._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__119-39ph_0j3f._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__12qymdfh83hht._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__13oi70jo-u731._.js +0 -4
- package/server/.next/server/chunks/ssr/[root-of-the-server]__146kj3-h6fkaq._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__14v88t9px5pb6._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__15j_u2bz3jc-a._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__15n-r12rnj61t._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__16o4p3l21rdq3._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__171npv87rwei1._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__176fov12nmg0c._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__17kocbnwlcw6d._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__17zzr7zjfaj94._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__18s2sszcjwz_x._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__19_nr6j2w-in_._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1biup3mh_6gel._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1cwrbme6aoi_x._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1euvy9wcyro9t._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1ews36zthoaro._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1f02dck4ff54w._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1gh2hxr2l59r6._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1gw6334w8y2my._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1i69oli51is1u._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1ikedn5g4-l15._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1k1fmq0-rg3p0._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1lrilann8v4wn._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1lv3bun_d6qpi._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1lx2k37wgre3d._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1owrn7crnsybx._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1qltiqn0htqnx._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1qrlp_d3-c1x9._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1s5zrlyqayctz._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1w1472ukyh58r._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1yfl8wmoazlwo._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1zhd84kcbex_x._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__20ht054m5-_d6._.js +0 -3
- package/server/.next/server/chunks/ssr/_05kq3r87s7p3q._.js +0 -3
- package/server/.next/server/chunks/ssr/_08ph09r66b11v._.js +0 -3
- package/server/.next/server/chunks/ssr/_0_tr9fol2yq33._.js +0 -4
- package/server/.next/server/chunks/ssr/_0_ul4mlc_pj5i._.js +0 -4
- package/server/.next/server/chunks/ssr/_0fxox6h290j6h._.js +0 -3
- package/server/.next/server/chunks/ssr/_0hykblvnwc2ar._.js +0 -3
- package/server/.next/server/chunks/ssr/_0m1ll2r1g77ii._.js +0 -3
- package/server/.next/server/chunks/ssr/_0nutgke9z49bh._.js +0 -3
- package/server/.next/server/chunks/ssr/_0ooh0hh-r_12s._.js +0 -3
- package/server/.next/server/chunks/ssr/_0pn3dn9s9es51._.js +0 -3
- package/server/.next/server/chunks/ssr/_0qnv1uc1_yv28._.js +0 -4
- package/server/.next/server/chunks/ssr/_0r04c1-snv6jw._.js +0 -3
- package/server/.next/server/chunks/ssr/_0rfq_mzyiodmf._.js +0 -3
- package/server/.next/server/chunks/ssr/_0tcmsw8hszixv._.js +0 -3
- package/server/.next/server/chunks/ssr/_0tnfblwwlyvq2._.js +0 -3
- package/server/.next/server/chunks/ssr/_0x1vi7mal3bqd._.js +0 -3
- package/server/.next/server/chunks/ssr/_11w5w9dpxcf1w._.js +0 -3
- package/server/.next/server/chunks/ssr/_14kop_5asppd8._.js +0 -3
- package/server/.next/server/chunks/ssr/_16t9k9e5cjvas._.js +0 -3
- package/server/.next/server/chunks/ssr/_17xmdlg5_8s76._.js +0 -3
- package/server/.next/server/chunks/ssr/_1__gz-j9u_15n._.js +0 -3
- package/server/.next/server/chunks/ssr/_1_ojvke28lw3y._.js +0 -3
- package/server/.next/server/chunks/ssr/_1c28jitsyufnt._.js +0 -4
- package/server/.next/server/chunks/ssr/_1dx207la592b7._.js +0 -4
- package/server/.next/server/chunks/ssr/_1flla16o7o9ba._.js +0 -3
- package/server/.next/server/chunks/ssr/_1nir32qtr99-r._.js +0 -4
- package/server/.next/server/chunks/ssr/_1qt1czw3w8dww._.js +0 -3
- package/server/.next/server/chunks/ssr/_1sq12-1_02tzt._.js +0 -4
- package/server/.next/server/chunks/ssr/_1ykxf4mi60jog._.js +0 -4
- package/server/.next/server/chunks/ssr/_1zr0t31h18f2p._.js +0 -3
- package/server/.next/server/chunks/ssr/_20ln-4gu85-yt._.js +0 -3
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1uaicj0j8stji.js +0 -3
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_215m-kkv06r4z.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_041o69opnip9_._.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_@base-ui_react_dialog_index_parts_mjs_0wvx70_xziwkw._.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00mnhied2lajr.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0258fhwe3r49a.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_030uvarevc52x.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08nk-xg737vfb.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08tyiz9d0lm9w.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09sjrubxp_rj2.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_bt7te8snw13.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_sbp7ay425x_.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0b6yug3vz_f5i.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d4fbjkqhtcy1.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0drw64qqgo4t4.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0f1q6zt-_lhr2.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0j67up203frfc.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0m1sh-r1a08nu.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0m80vhox8yne_.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0madmy1ghn2d_.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0oonr-4chwcci.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0opsftra4yyso.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pz49shx663y1.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rb6ju1slcbnm.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0re64vewl4bd9.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0s9srhxdns9u3.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0vfaoq0q8fb9j.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-a6-p-bbfew5.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_105eedqksbfit.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_10deooxbcl7dn.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_10p350-tq8wue.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13zeb30aqtlf2.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_163j9d9tcnnjx.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18lxgbslt6r8b.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_fjxf0k32zmt.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_qogypi_aiam.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1a04whtr87syz.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1b0g9w0uow3x5.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d8w2j-twvhc-.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dm4bx5yqfx5d.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ejivqe23qgi6.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1f4rp6x19w0vu.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1g2tu-twl68c2.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1jhcfycewcquz.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1kb_ff04m4p78.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1kz-w63djss2p.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mwwly61gvbnl.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1nnmbb1a34pgl.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0p09ki2at8x.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q1pd2kc4g0v1.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1vswl-lmn1feb.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1wg7_z4bxv6ru.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x6mq0hf94v16.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20dal1y611l3i.js +0 -3
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_21bzvd4_jyx44.js +0 -3
- package/server/.next/server/chunks/ssr/src_01jp2f5qmh8e2._.js +0 -3
- package/server/.next/server/chunks/ssr/src_0qvu1m5b9qo28._.js +0 -3
- package/server/.next/server/chunks/ssr/src_0t6-d5hmzrbp1._.js +0 -3
- package/server/.next/server/chunks/ssr/src_1717pig1-y5th._.js +0 -3
- package/server/.next/server/chunks/ssr/src_1iyzhhf1u_gwo._.js +0 -3
- package/server/.next/server/chunks/ssr/src_1ottjkdvhje3g._.js +0 -3
- package/server/.next/server/chunks/ssr/src_1x6t-w3_nu4w7._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_1l7irblrb5fae._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_[___slug]_page_tsx_0b007i3c1v_vg._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_088bs149wsgca._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_firebase_page_tsx_0g20hm13dvbc-._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_signin_1tg6pswa99jbe._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_03a2ehk2-znxl._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_0etkz1wbvfw-k._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_0hkrs-q6hzcww._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_0x4n8swwa3zn7._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_1coh17dmjagw1._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_1nkahiclbn55q._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_1p21oczr6lh5a._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_1v1jkqs0kbvmq._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_1yewk45thnv1h._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_demo_0hdl7pzdqejqx._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_demo_1w8p39upm6ea2._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_demo_visitor-limits_ts_1bx0-ks0r5_gj._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_security_osv_ts_1fckitwjz25y3._.js +0 -3
- package/server/.next/static/chunks/08dak2kh1c6_7.js +0 -1
- package/server/.next/static/chunks/0b9slopuz4e8a.js +0 -76
- package/server/.next/static/chunks/0dp-tuwkw7xf8.js +0 -33
- package/server/.next/static/chunks/0fhj_pu5ntcfo.js +0 -1
- package/server/.next/static/chunks/0h9i512dn01kj.js +0 -1
- package/server/.next/static/chunks/0ic6_-0gkd6p7.js +0 -1
- package/server/.next/static/chunks/0icohez16w-ei.js +0 -1
- package/server/.next/static/chunks/0j1wzqg4ukm70.js +0 -1
- package/server/.next/static/chunks/0j_5norjm-kef.js +0 -1
- package/server/.next/static/chunks/0kscmnb071fci.js +0 -1
- package/server/.next/static/chunks/0ld78j1d4j201.js +0 -1
- package/server/.next/static/chunks/0qlb-l1uyqku5.js +0 -1
- package/server/.next/static/chunks/0r-2mywc7qkb_.js +0 -1
- package/server/.next/static/chunks/0udh0u8c6ovgf.css +0 -3
- package/server/.next/static/chunks/0y1ss0tjq0nq0.js +0 -1
- package/server/.next/static/chunks/1-oetq3mwlhds.js +0 -1
- package/server/.next/static/chunks/11ywzwmfd_pt0.js +0 -1
- package/server/.next/static/chunks/1jaozq01v9r6e.js +0 -1
- package/server/.next/static/chunks/1ky5exl-c1kbo.js +0 -1
- package/server/.next/static/chunks/1lsu_fxiyaeiz.js +0 -1
- package/server/.next/static/chunks/1o3_amrh-sxr3.js +0 -1
- package/server/.next/static/chunks/1w9o_jo_pejc5.js +0 -1
- package/server/.next/static/chunks/1yvbs41m8_4nc.js +0 -7
- package/server/.next/static/chunks/22alexnun_rdm.js +0 -1
- package/server/.next/static/chunks/27qwmt1w6-iri.js +0 -1
- package/server/.next/static/chunks/29humkd2-_1oo.js +0 -1
- package/server/.next/static/chunks/29j96yfhxsf41.js +0 -1
- package/server/.next/static/chunks/29qnnsjsgsia6.js +0 -1
- package/server/.next/static/chunks/2ii8j9xuvv604.js +0 -1
- package/server/.next/static/chunks/2m0ftj__ody0m.js +0 -1
- package/server/.next/static/chunks/2rbtw3em5hkt4.js +0 -1
- package/server/.next/static/chunks/2sdyov_lz1uj4.js +0 -1
- package/server/.next/static/chunks/2toeyr9b_nk0e.js +0 -1
- package/server/.next/static/chunks/2w7qxt7ux-m1-.js +0 -1
- package/server/.next/static/chunks/2zc1osymeruya.js +0 -1
- package/server/.next/static/chunks/33fbppn5fotpk.js +0 -1
- package/server/.next/static/chunks/3auw1gobgv94g.js +0 -1
- package/server/.next/static/chunks/3b1p-xm7iow1_.js +0 -1
- package/server/.next/static/chunks/3gl2k6v182lli.js +0 -5
- package/server/.next/static/chunks/3gurl_36kr7sg.js +0 -1
- package/server/.next/static/chunks/3h-i_hcaaf7vs.js +0 -1
- package/server/.next/static/chunks/3kznplgmzot89.js +0 -1
- package/server/.next/static/chunks/3n_n6yeienmn-.js +0 -1
- package/server/.next/static/chunks/3nqciag05fif0.js +0 -1
- package/server/.next/static/chunks/3r3mt51wqymgs.js +0 -1
- package/server/.next/static/chunks/3shbvizselyoq.js +0 -1
- package/server/.next/static/chunks/3vpy-ra0rib9m.js +0 -1
- package/server/.next/static/chunks/3xxagngfonh62.js +0 -1
- package/server/.next/static/chunks/3yv-enyk37whg.js +0 -1
- package/server/.next/static/media/favicon.117ezoe8m31dk.ico +0 -0
- package/server/public/file.svg +0 -1
- package/server/public/globe.svg +0 -1
- package/server/public/next.svg +0 -1
- package/server/public/vercel.svg +0 -1
- package/server/public/window.svg +0 -1
- /package/server/.next/server/app/{favicon.ico → icon.svg}/route/build-manifest.json +0 -0
- /package/server/.next/static/{00CFAqN6pFBVkqJyXSd78 → 90CuiGzddaxNn9lvRkGlH}/_buildManifest.js +0 -0
- /package/server/.next/static/{00CFAqN6pFBVkqJyXSd78 → 90CuiGzddaxNn9lvRkGlH}/_clientMiddlewareManifest.js +0 -0
- /package/server/.next/static/{00CFAqN6pFBVkqJyXSd78 → 90CuiGzddaxNn9lvRkGlH}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[904370,e=>{let t="shared";function r(e){if(!e.includes(":")||e.includes("."))return e;let[t,r]=e.toLowerCase().split("::"),n=t?t.split(":"):[],s=void 0===r?[]:r?r.split(":"):[],i=void 0===r?n:[...n,...Array(Math.max(0,8-n.length-s.length)).fill("0"),...s];return 8===i.length&&i.every(e=>/^[0-9a-f]{1,4}$/.test(e))?`${i.slice(0,4).map(e=>e.replace(/^0+(?=.)/,"")).join(":")}::/64`:e}function n(e,r=6e5){let s=new Map;return{take(n,i,o=Date.now()){let l=s.get(n);if(l){var a=l;for(let[e,t]of a)o-t>=r&&a.delete(e);s.delete(n)}else l=new Map;return s.set(n,l),s.size>1e4&&s.delete(s.keys().next().value),!!l.has(i)||!(l.size>=(n===t?e.shared:e.perClient))&&(l.set(i,o),!0)},reset(){s.clear()}}}let s=globalThis.__watchpostDemoLimits??={creations:n({perClient:5,shared:60}),signIns:n({perClient:10,shared:120})},i=s.creations,o=s.signIns;e.s(["CREATIONS_PER_CLIENT",0,5,"CREATIONS_SHARED",0,60,"DEMO_LIMIT_WINDOW_MS",0,6e5,"DEMO_SIGN_IN_LIMITED",0,"Too many demo sign-ins from your network. Try again in a few minutes.","SHARED_CLIENT",0,t,"SIGN_INS_PER_CLIENT",0,10,"SIGN_INS_SHARED",0,120,"clientNetwork",0,r,"demoClientKey",0,function(e,n=process.env){if("1"!==n.VERCEL)return t;let s=e.get("x-forwarded-for")?.split(",")[0]?.trim();return`ip:${s?r(s):"unknown"}`},"demoCreations",0,i,"demoSignIns",0,o,"resetDemoLimitsForTests",0,function(){if(!process.env.VITEST)throw Error("resetDemoLimitsForTests is for tests only");i.reset(),o.reset()},"windowLimiter",0,n])},50519,e=>{e.i(904370),e.s(["d",0,function(e){let t=e.maxKeys??1e4,r=new Map,n=(n,s)=>{let i=r.get(n);for(i&&r.delete(n),(!i||s-i.start>=e.windowMs)&&(i={start:s,n:0}),r.set(n,i);r.size>t;)r.delete(r.keys().next().value);return i},s=(t,r,n)=>({allowed:n,retryAfter:Math.max(1,Math.ceil((t.start+e.windowMs-r)/1e3))});return{hit(t,r=Date.now()){let i=n(t,r);return i.n++,s(i,r,i.n<=e.max)},peek(t,r=Date.now()){let i=n(t,r);return s(i,r,i.n<e.max)},count(e,t=Date.now()){n(e,t).n++},size:()=>r.size,reset:()=>r.clear()}},"V",0,function(e){let t=e.maxKeys??1e4,r=new Map;return{has(t,n=Date.now()){let s=r.get(t);return void 0!==s&&(!(n-s>=e.ttlMs)||(r.delete(t),!1))},add(e,n=Date.now()){for(r.delete(e),r.set(e,n);r.size>t;)r.delete(r.keys().next().value)},delete:e=>void r.delete(e),reset:()=>r.clear()}}])}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=src_lib_16oqslmhfgod1._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[648338,634815,e=>{e.s(["f",0,function(e){let t=e instanceof Error&&e.cause instanceof Error?e.cause:e,n=(t instanceof Error?t.message:"").split("\n")[0].replace(/Bearer\s+\S+/gi,"Bearer [hidden]").trim()||"failed";return n.length>200?`${n.slice(0,200)}…`:n}],648338);let t=String.raw`\d+\.\d+\.\d+(?:-[0-9A-Za-z.]+)?`,n="[\"'`]";function r(e){let t=/^(\d+)\.\d+\.\d+(?:-[0-9A-Za-z.]+)?$/.exec(e);return null!==t&&Number(t[1])>=9&&1e3>Number(t[1])}let i={"&":"&",""":'"',"'":"'","'":"'","/":"/","/":"/"},s=e=>e.replace(/&(?:amp|quot|#39|#x27|#x2F|#47);/gi,e=>i[e]??i[e.toLowerCase()]??e),o=RegExp(String.raw`\bnext\s*=\s*\{\s*version\s*:\s*${n}(${t})${n}`,"g"),a=RegExp(String.raw`version\s*:\s*${n}(${t})${n}\s*,\s*appDir\s*:`,"g"),l=RegExp(String.raw`appDir\s*:\s*[^,{}()]{1,16},\s*version\s*:\s*${n}(${t})${n}`,"g"),u=/\bnext\s*=\s*\{\s*version\s*(?::\s*([A-Za-z_$][\w$]*)\s*)?[,}]/g,c=e=>e.replace(/[$]/g,"\\$");e.s(["O",0,function(e){for(let t of e.matchAll(o))if(r(t[1]))return t[1];for(let t of[a,l])for(let n of e.matchAll(t))if(r(n[1]))return n[1];for(let i of e.matchAll(u)){let s=i[1]??"version",o=RegExp(String.raw`(?:^|[^\w$.])${c(s)}\s*=\s*${n}(${t})${n}`,"g"),a=null;for(let t of e.matchAll(o)){if((t.index??0)>=(i.index??0))break;a=t[1]}if(a&&r(a))return a}return null},"V",0,function(e,t){let n;try{n=new URL(t)}catch{return[]}let r=new Set,i=[];for(let t of e.matchAll(/<script\b[^>]*?\ssrc\s*=\s*(["'])(.*?)\1/gi)){let e;try{e=new URL(s(t[2].trim()),n)}catch{continue}if("https:"===e.protocol&&e.origin===n.origin&&e.pathname.startsWith("/_next/static/")&&(e.hash="",!r.has(e.href))){var o;r.add(e.href),i.push({href:e.href,rank:(o=e.pathname,/\/main-app[-.]/.test(o)?0:/\/(main|app-index)[-.]/.test(o)?1:/\/(webpack|polyfills|framework)[-.]/.test(o)?3:2),i:i.length})}}return i.sort((e,t)=>e.rank-t.rank||e.i-t.i).map(e=>e.href)}],634815)},242605,e=>{var t=e.i(93321),n=e.i(351674),r=e.i(548734),i=e.i(837137),s=e.i(33135),o=e.i(648338),a=e.i(601219),l=e.i(46126),u=e.i(84979),c=e.i(683439),d=e.i(436357),f=e.i(469762),h=e.i(182357),p=e.i(910697);function g(e){return{version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[],reason:e.reason,checkedAt:e.checkedAt}}async function m(e={}){let s=e.only;if(s&&!s.length)return[];let o=e.first??[],a=e.skip??[],l=await (0,r.f)().select({id:i.resources.id,name:i.resources.name,meta:i.resources.meta,sec:i.appSecurity}).from(i.resources).leftJoin(i.appSecurity,(0,t.u)(i.appSecurity.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.resources.kind,"app"),(0,t.u)(i.resources.monitored,!0),(0,t.M)(i.resources.goneAt),s?(0,t.y)(i.resources.id,s):void 0,a.length?(0,t.$)(i.resources.id,[...a]):void 0)).orderBy(...o.length?[n.B`case when ${(0,t.y)(i.resources.id,o)} then 0 else 1 end`]:[],n.B`${i.appSecurity.checkedAt} asc nulls first`,i.resources.name).limit(p.O.apps);if(!l.length)return[];o.length&&l.sort((e,t)=>Number(!o.includes(e.id))-Number(!o.includes(t.id)));let u=await (0,r.f)().select({resourceId:i.monitors.resourceId,url:i.monitors.url}).from(i.monitors).where((0,t.y)(i.monitors.resourceId,l.map(e=>e.id))).orderBy(i.monitors.createdAt).limit(p.O.monitors);return l.map(e=>({id:e.id,name:e.name,prev:e.sec?g(e.sec):null,host:(0,d.Y)(e.meta)?.primaryDomain??(0,f.m)(e.name,u.filter(t=>t.resourceId===e.id).map(e=>e.url))}))}async function w(e,s){await (0,r.f)().transaction(async r=>{await r.execute(n.B`select pg_advisory_xact_lock(hashtext(${`app_security:${e.id}`}))`);let[o]=await r.select().from(i.appSecurity).where((0,t.u)(i.appSecurity.resourceId,e.id)).limit(1),l=o?g(o):null;if(l&&l.checkedAt.getTime()>=s.checkedAt.getTime())return;let c="unknown"===s.status||"error"===s.status?{...s,version:l?l.version:s.version,findings:l?l.findings:s.findings}:s,d={framework:"next",version:c.version,status:c.status,findings:c.findings,reason:c.reason,checkedAt:c.checkedAt};await r.insert(i.appSecurity).values({resourceId:e.id,...d}).onConflictDoUpdate({target:i.appSecurity.resourceId,set:d,setWhere:n.B`${i.appSecurity.checkedAt} < excluded.checked_at`});let f=(0,u.t)(e.name,l,c);f&&await (0,a.f)([{type:"system",kind:f.kind,message:f.message,detail:f.detail,resourceId:e.id,at:c.checkedAt,reason:"ok"===f.kind?"NextClean":"NextVulnerable"}],r)})}async function y(e,t={}){let n=await m(t),r=0,i=0,a=[],u=[],c=[];return await (0,s.P)(n,3,async t=>{if(e-Date.now()<3e3)return void i++;c.push(t.id);try{let n=await (0,l.P)(t.host,t.prev,{deadline:e});if(!n)return void i++;await w(t,n),r++,u.push(t.id)}catch(e){a.push(`${t.name}: ${(0,o.f)(e)}`),u.push(t.id)}}),{checked:r,skipped:i,failed:a,done:u,listed:n.map(e=>e.id),started:c}}async function k(e,t=2e4){let[n]=await m({only:[e]});if(!n)return{ok:!1,error:"That app is no longer in the console."};let r=await (0,l.P)(n.host,n.prev,{deadline:Date.now()+t});return r?(await w(n,r),{ok:!0,message:(0,h.I)(n.name,r),passed:"ok"===r.status||"vulnerable"===r.status,vulnerable:r.findings.length>0,audit:{message:`Security check: ${n.name}`,resourceId:n.id}}):{ok:!1,error:"The check took too long. Try again in a minute."}}async function v(e){let n=e.filter(c.f);return n.length?(await (0,r.f)().select().from(i.appSecurity).where((0,t.y)(i.appSecurity.resourceId,n)).limit(n.length)).map(e=>{let t=g(e);return{appId:e.resourceId,version:t.version,status:t.status,findings:t.findings}}):[]}e.s(["d",0,k,"F",0,v,"h",0,y,"Z",0,g])},46126,e=>{var t=e.i(33135),n=e.i(634815),r=e.i(533957);async function i(e,s,o={}){let a=o.deadline??1/0,l=o.now??(()=>new Date),u=e=>Math.floor(Math.min(e,a)-Date.now()),c=Date.now()+15e3;if(0>=u(c))return null;let d=(e,t)=>({version:s?.version??null,status:e,findings:s?.findings??[],reason:t,checkedAt:l()}),f=(e,n)=>(0,t.K)(e,{maxBytes:3145728,timeoutMs:u(c),lookup:o.lookup,fetch:o.fetch,userAgent:"OpsConsole-Security/1.0 (+https://watchbell.west-solutions.web.id)",sameOrigin:n}),h=await f(`https://${e}/`,"www");if(!h.ok&&h.error===t.l)return d("unknown","the site redirects to another host");if(!h.ok||200!==h.status)return Date.now()>=a?null:d("error",`Couldn't load the site: ${h.ok?`HTTP ${h.status}`:h.error}`);let p=(0,n.V)(h.body,h.url).slice(0,12);if(0===p.length)return d("unknown",h.body.includes("/_next/")?"version not exposed":"not a Next.js site");let g=null,m=0,w=!1;for(let e of p){if(0>=u(c)){w=!0;break}let t=await f(e,!0);if(t.ok&&200===t.status&&(m++,g=(0,n.O)(t.body)))break}if(!g)return Date.now()>=a?null:w||0>=u(c)?d("error","Reading the site's scripts took longer than 15 s"):0===m?d("error","Couldn't load the site's scripts"):d("unknown","version not exposed");let y=u(Date.now()+1e4);if(y<=0)return null;let k=await (0,r.y)(g,{timeoutMs:y,fetch:o.fetch});return k.ok?{version:g,status:k.findings.length?"vulnerable":"ok",findings:k.findings,reason:null,checkedAt:l()}:Date.now()>=a?null:d("error",k.error)}e.s(["y",0,35e3,"P",0,i])},533957,e=>{var t=e.i(33135),n=e.i(84979),r=e.i(84877);let i=["CRITICAL","HIGH","MODERATE","LOW","UNKNOWN"],s=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),o=e=>Array.isArray(e)?e:[],a=e=>"string"==typeof e&&e?e:null,l=e=>s(e.package)&&"next"===e.package.name&&"npm"===e.package.ecosystem,u="OSV.dev sent an answer we couldn't read";async function c(e,h={}){let p=h.timeoutMs??1e4,g=h.maxBytes??2097152,m=AbortSignal.timeout(p),w=(0,t.X)(m),y=`OSV.dev didn't answer within ${f(p)}`,k=[],v=null;for(let n=0;n<3;n++){var $;let n,r;try{n=await (h.fetch??fetch)("https://api.osv.dev/v1/query",{method:"POST",headers:{"content-type":"application/json","user-agent":"OpsConsole-Security/1.0 (+https://watchbell.west-solutions.web.id)"},body:JSON.stringify({package:{name:"next",ecosystem:"npm"},version:e,...v?{page_token:v}:{}}),redirect:"error",cache:"no-store",signal:m})}catch(e){return{ok:!1,error:d(e)?y:"Couldn't reach OSV.dev"}}if(!n.ok)return await n.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${n.status}`};try{let{bytes:e,truncated:i}=await (0,t.z)(n,g,w);if(i)return{ok:!1,error:"OSV.dev sent too large an answer"};r=JSON.parse(new TextDecoder().decode(e))}catch(e){return{ok:!1,error:d(e)?y:u}}let i=s($=r)?void 0===$.vulns?[]:Array.isArray($.vulns)?$.vulns:null:null;if(null===i)return{ok:!1,error:u};if(k.push(...i),!(v=s(r)?a(r.next_page_token):null))break}let x=function(e,t){let u=[],c=0;for(let n of e){if(!s(n))continue;let e=a(n.id);e&&(c++,n.withdrawn||u.push({id:e.slice(0,64),cve:o(n.aliases).map(a).find(e=>!!e&&/^CVE-\d{4}-\d+$/.test(e))??null,summary:(a(n.summary)??"").replace(/\s+/g," ").trim().slice(0,200),severity:function(e){let t=s(e.database_specific)?a(e.database_specific.severity)?.toUpperCase():void 0;return"MEDIUM"===t?"MODERATE":i.includes(t??"")?t:"UNKNOWN"}(n),fixed:function(e,t){let n=null;for(let i of o(e))if(s(i)&&l(i))for(let e of o(i.ranges)){if(!s(e)||"SEMVER"!==e.type&&"ECOSYSTEM"!==e.type)continue;let i=null;for(let l of o(e.events)){if(!s(l))continue;let e=a(l.introduced),o=a(l.fixed);e?i=e:o&&null!==i?((0,r.f)(t,i)>=0&&0>(0,r.f)(t,o)&&(null===n||0>(0,r.f)(o,n))&&(n=o),i=null):(a(l.last_affected)||a(l.limit))&&(i=null)}}return n}(n.affected,t)}))}return e.length>0&&0===c?null:(0,n.I)(u).slice(0,50)}(k,e);return null===x?{ok:!1,error:u}:{ok:!0,findings:x}}let d=e=>e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name),f=e=>e<1e3?`${e} ms`:`${Math.round(e/1e3)} s`;e.s(["y",0,c,"t",0,d],533957)},84979,e=>{var t=e.i(84877);let n={CRITICAL:4,HIGH:3,MODERATE:2,LOW:1,UNKNOWN:0};function r(e){return e.reduce((e,t)=>n[t.severity]>n[e]?t.severity:e,"UNKNOWN")}let i=e=>n[e]>=n.HIGH,s=e=>`${e} known vulnerabilit${1===e?"y":"ies"}`;e.s(["r",0,function(e){return e.reduce((e,n)=>n.fixed&&(null===e||(0,t.f)(n.fixed,e)>0)?n.fixed:e,null)},"o",0,i,"t",0,function(e,t,n){let o=new Set((t?.findings??[]).map(e=>e.id));if("vulnerable"===n.status&&n.findings.length>0){if(n.findings.every(e=>o.has(e.id)))return null;let t=r(n.findings);return{kind:i(t)?"err":"warn",message:`${e} runs Next.js ${n.version} with ${s(n.findings.length)} (${t.toLowerCase()})`,detail:n.findings.map(e=>e.id).join(", ").slice(0,1e3)}}return"ok"===n.status&&o.size>0?{kind:"ok",message:`${e} no longer has known Next.js vulnerabilities (now ${n.version})`,detail:null}:null},"I",0,function(e){return[...e].sort((e,t)=>n[t.severity]-n[e.severity]||(e.id<t.id?-1:+(e.id>t.id)))},"q",0,s,"N",0,r])},182357,e=>{var t=e.i(84979),n=e.i(245710);let r=e=>!!e&&e.findings.length>0,i=e=>/[.!?]$/.test(e)?e:`${e}.`;e.s(["y",0,{CRITICAL:"Critical",HIGH:"High",MODERATE:"Moderate",LOW:"Low",UNKNOWN:"Unknown"},"I",0,function(e,n){return"vulnerable"===n.status?`${e} runs Next.js ${n.version} with ${(0,t.q)(n.findings.length)}.`:"ok"===n.status?`No known vulnerabilities for Next.js ${n.version}.`:"unknown"===n.status?`Couldn't read the Next.js version: ${i(n.reason??"no reason given")}`:`The check failed: ${i(n.reason??"no reason given")}`},"f",0,function(e){if(!r(e))return null;let n=(0,t.N)(e.findings);return{label:"CVE",severe:(0,t.o)(n),title:`Next.js ${e.version}: ${(0,t.q)(e.findings.length)}, worst ${n.toLowerCase()}`}},"X",0,r,"v",0,function(e){let n=[];for(let i of e){if(i.gone||!r(i.security))continue;let e=i.security,s=(0,t.N)(e.findings),o=(0,t.r)(e.findings);n.push({key:`sec-${i.id}`,tone:(0,t.o)(s)?"danger":"warning",title:`${i.name} runs a vulnerable Next.js (${e.version??"unknown version"})`,body:`${(0,t.q)(e.findings.length)}, worst ${s.toLowerCase()}.${o?` Fixed in ${o}.`:""}`,action:{label:"Open app",href:`/apps/${i.id}`}})}return[...n.filter(e=>"danger"===e.tone),...n.filter(e=>"warning"===e.tone)]},"g",0,function(e){if(!e)return{state:"unknown",text:`Not checked yet. The daily job checks at ${(0,n.G)()}.`};if("ok"===e.status)return{state:"ok",text:`No known vulnerabilities for Next.js ${e.version}.`};let t=null!==e.version||e.findings.length>0?" Showing the result from before.":"";return"unknown"===e.status?{state:"unknown",text:`Couldn't read the Next.js version: ${i(e.reason??"no reason given")}${t}`}:"error"===e.status?{state:"warn",text:`The last check failed: ${i(e.reason??"no reason given")}${t}`}:null}])}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=src_lib_18wgdeemqm6gg._.js.map
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[220642,765359,e=>{var t=e.i(218331);let a=e=>`${e} hari`,r=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${a(e)}.`,i={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},n={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},s={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,a)=>`${t}: nggak ada ping selama ${a.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,a)=>`${t}: ${i[a]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,a)=>`${t}: ${a} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,a)=>`p95 ${t} ms selama 10 menit terakhir (batas ${a} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} pakai ${a} MB dari ${r} MB (${i}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,a,r)=>`${t} udah pakai ${a} dari ${r} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} udah baca ${a} dari ${r} dokumen hari ini (${i}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${a(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,a,r)=>`${t}: ${a.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${r}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,a)=>`${t}: ${a.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,a)=>`Credential ${t} ${a} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,a,i)=>r(i,`Credential ${t} ${a}`)]],VulnerableDependency:[[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,a,r)=>`${t} paket rentan (${a.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>n[e])}): ${r.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]]};function o(e,t){for(let[a,r]of Object.hasOwn(s,e)?s[e]:[]){let e=a.exec(t);if(e)return r(...e)}return t}e.s(["f",0,o],765359);let l={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},d={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},
|
|
1
|
+
(()=>{"use strict";module.exports=[220642,765359,e=>{var t=e.i(218331);let a=e=>`${e} hari`,r=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${a(e)}.`,i={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},n={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},s={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,a)=>`${t}: nggak ada ping selama ${a.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,a)=>`${t}: ${i[a]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,a)=>`${t}: ${a} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(e,t,a)=>`${t} pindah ke ${a}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(e,t,a,r)=>`${t} udah bukan domain ${a}; production sekarang di ${r}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(e,t,a)=>`Monitor ngecek ${t}, domain ${a}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,a)=>`p95 ${t} ms selama 10 menit terakhir (batas ${a} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} pakai ${a} MB dari ${r} MB (${i}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,a,r)=>`${t} udah pakai ${a} dari ${r} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} udah baca ${a} dari ${r} dokumen hari ini (${i}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${a(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,a,r)=>`${t}: ${a.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${r}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,a)=>`${t}: ${a.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,a)=>`Credential ${t} ${a} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,a,i)=>r(i,`Credential ${t} ${a}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,a,r)=>`${t} paket rentan (${a.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>n[e])}): ${r.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(e,t,a)=>`${t} pakai Next.js ${a} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(e,t,a,r,i,s,o)=>`Next.js ${t} punya ${a} kerentanan yang diketahui (${n[r]}), ${i?`udah di-fix di ${i}${s?` (${"one fix needs"===s?"satu fix":"sebagian fix"} butuh Next.js ${o})`:""}`:"belum ada fix"}.`]]};function o(e,t){for(let[a,r]of Object.hasOwn(s,e)?s[e]:[]){let e=a.exec(t);if(e)return r(...e)}return t}e.s(["f",0,o],765359);let l={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},d={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},u={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"gara-gara",incident:"lagi ada insiden",step:"Langkah"}},c=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),p={critical:0,warning:1,info:2};function g(e,t){let a=e.filter(e=>"resolve"!==e.kind).length,r=e.length-a;return[a?`${a} ${u[t].firing}`:"",r?`${r} ${u[t].resolved}`:""].filter(Boolean).join(", ")}function f(e,t,a,r,i,n){let s=[...e].sort((e,t)=>("resolve"===e.kind)-("resolve"===t.kind)||p[e.severity]-p[t.severity]),o=[r],l=r.length+i.length+40;for(let e=0;e<s.length;e++){let r=a(s[e]);if(l+r.length+1>t){o.push(n(s.length-e));break}o.push(r),l+=r.length+1}return o.push(i),o.join("\n").slice(0,t)}let m={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}};e.s(["Z",0,d,"l",0,function(e,a,r,i="en"){let n=`${r.replace(/\/+$/,"")}/alerts`,s=u[i],p=e=>`${l[i][e.kind]} \xb7 ${d[i][e.severity]} \xb7 `,h=e=>"id"===i?o(e.ruleKey,e.message):e.message,k=e=>"resolve"===e.kind?null:((e,t="en")=>{let a=Object.hasOwn(m[t],e)?m[t][e]:void 0;return a?`${u[t].step}: ${a}`:null})(e.ruleKey,i),y=e=>[e.causedBy?`${s.causedBy} ${e.causedBy}`:"",e.provider?`${e.provider} ${s.incident}`:""].filter(Boolean).join(" · "),$=e=>`
|
|
2
2
|
+${e} ${s.more}`;return{telegram:f(e,4096,e=>`
|
|
3
|
-
<b>${p(e)}${
|
|
4
|
-
${
|
|
5
|
-
<i>${
|
|
6
|
-
👉 ${
|
|
3
|
+
<b>${p(e)}${c(e.ruleKey)} \xb7 ${c(e.title)}</b>
|
|
4
|
+
${c(h(e))}${y(e)?`
|
|
5
|
+
<i>${c(y(e))}</i>`:""}${k(e)?`
|
|
6
|
+
👉 ${c(k(e))}`:""}
|
|
7
7
|
${s.since} ${(0,t.U)(e.startedAt)} ${(0,t.J)(e.startedAt)}`,`<b>Watchbell</b>: ${g(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
|
|
8
|
-
<a href="${
|
|
8
|
+
<a href="${c(n)}">${s.open}</a>`,$),discord:f(e,2e3,e=>`
|
|
9
9
|
**${p(e)}${e.ruleKey} \xb7 ${e.title.replace(/[*_`~|\[\]<>]/g,"")}**
|
|
10
|
-
${
|
|
11
|
-
_${
|
|
10
|
+
${h(e).replace(/[*_`~|\[\]<>]/g,"")}${y(e)?`
|
|
11
|
+
_${y(e)}_`:""}${k(e)?`
|
|
12
12
|
👉 ${k(e)}`:""}`,`**Watchbell**: ${g(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
|
|
13
|
-
${n}`,y)}},"H",0,u],220642)},895625,e=>{var t=e.i(971724),a=e.i(105954),r=e.i(140561),i=e.i(600205),n=e.i(77193);let s=t.z.object({COLLECTOR_SECRET:a.z.string().min(32),CRON_SECRET:a.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:a.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:a.z.string().min(10)}),o=s.extend({QSTASH_CURRENT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,n.c)(e)?o:s).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},629955,11827,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(656083),o=e.i(472832);let l="Pause requested · ";function d(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let a=e.lastTraffic??e.trackedSince;return t.getTime()-a.getTime()>=432e6}function c(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,c,"v",0,d],11827);var u=e.i(326003),p=e.i(843448),g=e.i(547499),f=e.i(628448),h=e.i(342833);async function m(e){let a=await (0,r.f)().select({data:i.snapshots.data}).from(i.resources).innerJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.resources.accountId,e),(0,t.u)(i.resources.kind,"supabase_project"))),n=new Map;for(let{data:e}of a){let t=(0,u.k)(u.B,e);t.orgSlug&&void 0!==t.freeOrg&&n.set(t.orgSlug,t.freeOrg)}return n}let k=e=>`${e} day${1===e?"":"s"}`,$=e=>e instanceof Error?e.name:"unknown";async function y(e,a,n){try{let s=await (0,r.f)().select({k:i.keepActive,r:i.resources,s:i.snapshots,a:i.accounts}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).leftJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.keepActive.keep,!0),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.u)(i.resources.monitored,!0),(0,t.M)(i.resources.goneAt),(0,t.u)(i.accounts.status,"ok"))).limit(100),o=(0,g.f)().OPS_ENCRYPTION_KEY;for(let[t,{k:r,r:i,s:l,a:d}]of s.entries()){let c=a-Date.now()-500;if(c<250)return void n.push(`keep-active: ${s.length-t} left for the next run, time budget used`);if(!(r.lastKeepAliveAt&&e.getTime()-r.lastKeepAliveAt.getTime()<72e6))try{await w(i,l,d,e,o,c,n)}catch(e){console.warn("keep-active failed:",$(e)),n.push(`keep-active/${i.name}: ${$(e)}`)}}}catch(e){console.warn("keep-active failed:",$(e)),n.push(`keep-active: ${$(e)}`)}}async function w(e,a,o,l,c,g,m){let $=(0,u.k)(u.B,a?.data),y=$.lastTrafficAt?new Date($.lastTrafficAt):$.trafficAt?new Date(new Date($.trafficAt).getTime()-6048e5):null;if(!d({status:$.status??"",keep:!0,lastTraffic:y,trackedSince:e.firstSeenAt},l))return;let w=Math.floor((l.getTime()-(y??e.firstSeenAt).getTime())/864e5),v=(0,n.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},c);if(!v)return void m.push(`keep-active/${o.label}: credential can't be read`);let b=await (0,h.i)(v,e.externalId,{timeoutMs:Math.min(5e3,g)});if(b.ok)await (0,r.f)().update(i.keepActive).set({lastKeepAliveAt:l}).where((0,t.u)(i.keepActive.resourceId,e.id)),await (0,s.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${k(w)})`,detail:null}]);else{let t=Math.max(1,p.e-w);await (0,s.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${k(t)}`,detail:"scope"===b.kind?"This token can't run the read-only query (Database read).":(0,f.S)(b.error)}]),m.push(`keep-active/${e.name}: ${b.error}`)}}async function v(e){let[n]=await (0,r.f)().select({at:i.events.at}).from(i.events).where((0,t.b)((0,t.u)(i.events.reason,"Action"),(0,t.u)(i.events.resourceId,e),(0,t.u)(i.events.type,"action"),(0,t.y)(i.events.kind,["ok","err"]),(0,t.E)(i.events.actorUserId),(0,t.D)(i.events.message,`${l}%`))).orderBy((0,a.A)(i.events.at)).limit(1);return n?.at??null}async function b(){return(await (0,r.f)().select({id:i.keepActive.resourceId}).from(i.keepActive).where((0,t.u)(i.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,a,l=1/0){let d=a.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),u=()=>l-Date.now()-500;if(!d.length||250>u())return;let k=await (0,r.f)().select({k:i.keepActive,id:i.resources.id,name:i.resources.name,ref:i.resources.externalId,accountId:i.resources.accountId,label:i.accounts.label,lastTestAt:i.accounts.lastTestAt,ciphertext:i.accounts.credentialCiphertext,iv:i.accounts.credentialIv}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.keepActive.autoRestore,!0),(0,t.y)(i.keepActive.resourceId,d.map(e=>e.resourceId)),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.M)(i.resources.goneAt)));if(!k.length)return;let y=await (0,o.f)([...new Set(k.map(e=>e.accountId))]),w=new Map,b=new Map;for(let l of k)try{let d=a.filter(e=>e.accountId===l.accountId),k=d.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!w.has(l.accountId)){let e=await m(l.accountId);w.set(l.accountId,e),b.set(l.accountId,(0,p._)(d.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let $=!1===w.get(l.accountId).get(k),A=$?1/0:b.get(l.accountId),I=y.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),T=I?.write==="denied"&&new Date(I.at).getTime()>S,x=c({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:T},e);if(!x.act){"no-slot"===x.reason&&await (0,s.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let C=await v(l.id);if(C&&C.getTime()>l.k.updatedAt.getTime())continue;let D=u();if(D<250)return;await (0,r.f)().update(i.keepActive).set({lastAutoRestoreAt:e}).where((0,t.u)(i.keepActive.resourceId,l.id));let E=(0,n.V)({ciphertext:l.ciphertext,iv:l.iv},(0,g.f)().OPS_ENCRYPTION_KEY);if(!E)continue;let j=await (0,h.G)(E,l.ref,{timeoutMs:Math.min(5e3,D)});j.ok?($||b.set(l.accountId,b.get(l.accountId)-1),await (0,o.y)(l.accountId,"ok"),await (0,s.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===j.kind&&await (0,o.y)(l.accountId,"denied"),await (0,s.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===j.kind?`${(0,f.b)("supabase",{})} Auto-restore stops until then.`:(0,f.S)(j.error)}]))}catch(e){console.warn("auto-restore failed:",$(e))}}async function I(e,a,n=o.W,s=new Date){let l=await (0,o.q)(e.id,"keep-alive",a);if(l)return{ok:!1,error:l};let d=await (0,o.p)(a,"supabase_project");if(!d)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[c]=await (0,r.f)().select({last:i.keepActive.lastKeepAliveAt}).from(i.keepActive).where((0,t.u)(i.keepActive.resourceId,a)).limit(1);if(c?.last&&s.getTime()-c.last.getTime()<72e6)return n({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,d.account.id);let u=d.resource.name,p=await (0,h.i)(d.token,d.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,r.f)().insert(i.keepActive).values({resourceId:a,lastKeepAliveAt:s}).onConflictDoUpdate({target:i.keepActive.resourceId,set:{lastKeepAliveAt:s}}),n(p.ok?{done:!0,message:`Keep-alive sent to ${u}.`,audit:{message:`Keep-alive sent \xb7 ${u}`,resourceId:a}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${u}`,resourceId:a}},e,d.account.id)}e.s(["m",0,m,"z",0,A,"g",0,b,"v",0,I,"V",0,y,"G",0,function(e,t,a){return!1===t.get(a)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],629955)},483100,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(518899),i=e.i(924924),n=e.i(618916),s=e.i(220642),o=e.i(921991),l=e.i(656083),d=e.i(209576),c=e.i(111970),u=e.i(762504),p=e.i(547499),g=e.i(224382),f=e.i(600273),h=e.i(968068),m=e.i(695811),k=e.i(633974),$=e.i(76012),y=e.i(298397),w=e.i(218331),v=e.i(146394);let b="digest.lastSentDay",A="digest.state";async function I(e){let[a]=await (0,i.f)().select().from(n.channels).where((0,t.u)(n.channels.kind,e)).limit(1);if(!a)return null;try{return{row:a,config:JSON.parse((0,o.K)({ciphertext:a.configCiphertext,iv:a.configIv},(0,p.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function S(){let e=(0,h.f)(),[t,a]=await Promise.all([I("telegram"),I("discord")]),r=new Set;return e.telegramToken&&t?.row.enabled&&t.config?.chatId&&r.add("telegram"),a?.row.enabled&&a.config?.url&&r.add("discord"),{send:(r,i)=>"telegram"===r?(0,$.I)(e.telegramToken,t.config.chatId,i):(0,g.f)(a.config.url,i),configured:r}}async function T(){let e=(0,h.f)().telegramToken;if(!e)return null;let t=await I("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function x(){let e=await I("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let C=()=>(0,d.f)().catch(()=>y.a);async function D(e,o,l={}){var d;if(o-Date.now()<6e3)return{sent:0,dropped:0};let u=await (0,c.I)(),g=await (0,i.f)().select({a:n.alerts,channels:n.alertRules.channels}).from(n.alerts).innerJoin(n.alertRules,(0,t.u)(n.alertRules.key,n.alerts.ruleKey)).where((0,t.b)((0,t.E)(n.alerts.pending),r.B`(${n.alerts.pending} = 'resolve') = (${n.alerts.resolvedAt} is not null)`,(0,c.s)(u))).orderBy((0,a.M)(n.alerts.pendingSince)).limit(50);if(!g.length)return{sent:0,dropped:0};let f=new Set((await (0,i.f)().update(n.alerts).set({claimedAt:e}).where((d=g.map(e=>e.a.id),(0,t.b)((0,t.y)(n.alerts.id,d),(0,t.E)(n.alerts.pending),(0,t.F)((0,t.M)(n.alerts.claimedAt),(0,t.S)(n.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:n.alerts.id})).map(e=>e.id)),h=g.filter(e=>f.has(e.a.id));if(!h.length)return{sent:0,dropped:0};let{send:k,configured:$}=l.sender??await S(),w=new Set(h.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[v,b]=await Promise.all([C(),(0,m.B)()]),A=new Set;for(let a of["telegram","discord"]){if(!$.has(a))continue;let r=h.filter(e=>e.channels.includes(a)&&!w.has(e.a.id));if(!r.length)continue;let o=r.map(({a:e})=>{let t=(0,y.o)(e,v);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:t.title,message:t.message,startedAt:e.startedAt,causedBy:t.causedBy,provider:e.providerIncident}}),l=(0,s.l)(o,e,(0,p.f)().SITE_URL,b[a]),d=await k(a,(0,y.G)("telegram"===a?l.telegram:l.discord));await (0,i.f)().update(n.channels).set(d.ok?{lastSentAt:e,lastError:null}:{lastError:d.error}).where((0,t.u)(n.channels.kind,a)),d.ok&&r.forEach(({a:e})=>A.add(e.id))}let I=0,T=0,x=[];for(let{a,channels:r}of h){let s=r.some(e=>$.has(e)),o=null!==a.pendingSince&&e.getTime()-a.pendingSince.getTime()>18e5;A.has(a.id)?(I++,await (0,i.f)().update(n.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===a.pending?{notifiedOpen:!0}:{}}).where((0,t.u)(n.alerts.id,a.id))):w.has(a.id)||!s||o?(T++,await (0,i.f)().update(n.alerts).set({pending:null,claimedAt:null}).where((0,t.u)(n.alerts.id,a.id))):x.push(a.id)}return x.length&&await (0,i.f)().update(n.alerts).set({claimedAt:null}).where((0,t.y)(n.alerts.id,x)),{sent:I,dropped:T}}async function E(e){let s=new Date(e.getTime()-864e5),o=await (0,c.I)(),l=r.B`case ${n.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[d,p,g,f,h]=await Promise.all([(0,i.f)().select({ruleKey:n.alerts.ruleKey,severity:n.alerts.severity,title:n.alerts.title,message:n.alerts.message,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt}).from(n.alerts).where((0,t.b)((0,t.M)(n.alerts.resolvedAt),(0,c.s)(o))).orderBy(l,(0,a.A)(n.alerts.startedAt)).limit(50),(0,i.f)().select({n:r.B`count(*)::int`}).from(n.alerts).where((0,t.B)(n.alerts.startedAt,s)),(0,i.f)().select({ruleKey:n.alerts.ruleKey,title:n.alerts.title,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt,resolvedAt:n.alerts.resolvedAt}).from(n.alerts).where((0,t.b)((0,t.E)(n.alerts.resolvedAt),(0,t.B)(n.alerts.resolvedAt,s))).orderBy((0,a.A)(n.alerts.resolvedAt)).limit(20),(0,i.f)().select({id:n.resources.id,name:n.resources.name}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).orderBy(n.resources.name).limit(v.O.apps),(0,u.h)(e)]),m=f.map(e=>e.id),[k,$]=m.length?await Promise.all([(0,i.f)().select({id:n.monitors.resourceId,total:r.B`count(*)::int`,bad:r.B`(count(*) filter (where not ${n.checks.ok}))::int`}).from(n.checks).innerJoin(n.monitors,(0,t.u)(n.monitors.id,n.checks.monitorId)).where((0,t.b)((0,t.y)(n.monitors.resourceId,m),(0,t.B)(n.checks.at,s),(0,t.u)(n.checks.inMaintenance,!1))).groupBy(n.monitors.resourceId),(0,i.f)().select({id:n.storedLogs.resourceId,n:r.B`count(*)::int`}).from(n.storedLogs).where((0,t.b)((0,t.y)(n.storedLogs.resourceId,m),(0,t.B)(n.storedLogs.at,s))).groupBy(n.storedLogs.resourceId)]):[[],[]],w=new Map(k.map(e=>[e.id,e])),b=new Map($.map(e=>[e.id,e.n])),A=await C();return{now:e,opened:p[0]?.n??0,firing:d.map(({resourceId:e,...t})=>{let a=(0,y.o)({...t,resourceId:e,causedBy:null},A);return{...t,title:a.title,message:a.message}}),resolved:g.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,y.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},A).title,took:function(e,t){let a=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(a<60)return`${a} min`;let r=Math.floor(a/60);return r<24?`${r} h ${a%60} min`:`${Math.floor(r/24)} d ${r%24} h`}(e.startedAt,e.resolvedAt)}]:[]),apps:f.map(e=>{let t=w.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:b.get(e.id)??0}}),providers:h.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function j(e,a,r){await (0,i.f)().update(n.channels).set(a.ok?{lastSentAt:r,lastError:null}:{lastError:a.error}).where((0,t.u)(n.channels.kind,e))}async function _(e){let[t,a]=await Promise.all([E(e),(0,m.H)("email")]);return(0,f.J)({...t,siteUrl:(0,p.f)().SITE_URL},a)}async function N(e,a={}){let r=await (0,i.f)().select().from(n.settings).where((0,t.y)(n.settings.key,[b,A])),s=r.find(e=>e.key===b)?.value,o="string"==typeof s?s:null;if(!(0,f.A)(e,o))return;let d=(0,h.f)(),c=await I("email_digest");if(!d.resendKey||!d.digestFrom||!c?.row.enabled||!c.config?.to)return;let{resendKey:u,digestFrom:p}=d,g=c.config.to,m=(0,w.x)(e),$=await (0,f.K)(e,{lastSentDay:o,state:r.find(e=>e.key===A)?.value??null,build:a.build??(()=>_(e)),send:a.send??(e=>(0,k.f)(u,{from:p,to:g,...e,idempotencyKey:`digest-${m}`}))});$.acted&&($.result&&await j("email_digest",$.result,e),$.state?await (0,i.f)().insert(n.settings).values({key:A,value:$.state}).onConflictDoUpdate({target:n.settings.key,set:{value:$.state,updatedAt:e}}):await (0,i.f)().delete(n.settings).where((0,t.u)(n.settings.key,A)),$.sentDay&&await (0,i.f)().insert(n.settings).values({key:b,value:$.sentDay}).onConflictDoUpdate({target:n.settings.key,set:{value:$.sentDay,updatedAt:e}}),$.event&&await (0,l.f)([{type:"system",kind:"warn",message:$.event.message,detail:$.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,D,"G",0,x,"P",0,j,"J",0,N,"Q",0,T],483100)},472832,628448,e=>{var t=e.i(875225),a=e.i(665044),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(407602),o=e.i(547499),l=e.i(479301),d=e.i(189104);function c(e,t){return"member"===e?`Too many actions. Try again in ${(0,d.H)(t)}.`:"That was just done. Wait a minute before trying again."}function u(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,c,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,u],628448);var p=e.i(593111);let g="access.";async function f(e,a){if(!(0,l.f)(e))return null;let[s]=await (0,r.f)().select({r:i.resources,a:i.accounts}).from(i.resources).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.resources.id,e),(0,t.u)(i.resources.kind,a),(0,t.M)(i.resources.goneAt))).limit(1);if(!s)return null;let d=(0,n.V)({ciphertext:s.a.credentialCiphertext,iv:s.a.credentialIv},(0,o.f)().OPS_ENCRYPTION_KEY);return d?{resource:s.r,account:{id:s.a.id,label:s.a.label,provider:s.a.provider,scopeNote:s.a.scopeNote},token:d}:null}async function h(e,t,a){let r=await (0,p.f)(d.t.providerAction,e);if(!r.allowed)return c("member",r.retryAfter);let i=await (0,p.f)(d.t.actionTarget,`${t}:${a}`);return i.allowed?null:c("target",i.retryAfter)}async function m(e,t,a){let n={write:t,at:new Date().toISOString(),...a?{scope:a}:{}};await (0,r.f)().insert(i.settings).values({key:`${g}${e}`,value:n}).onConflictDoUpdate({target:i.settings.key,set:{value:n,updatedAt:new Date}})}async function k(e){let a=new Map,n=e.filter(l.f);if(0===n.length)return a;for(let e of(await (0,r.f)().select().from(i.settings).where((0,t.y)(i.settings.key,n.map(e=>`${g}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&a.set(e.key.slice(g.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return a}async function $(e,t,r,i={}){if(!("audit"in e))return{ok:!1,error:e.message};let n="failed"in e?e.failed:null,o="failed"in e?"":e.message,l=n?n.error:"failed"in e?void 0:e.audit.detail;try{await (0,s.f)({kind:n?"err":"ok",message:`${i.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:u(l)}:{}})}catch{console.warn("audit event failed")}if(!n||"scope"===n.kind)try{await m(r,n?"denied":"ok")}catch{console.warn("access write failed")}return!1!==i.refresh&&(0,a.refresh)(),n?{ok:!1,error:n.error}:{ok:!0,message:o}}e.s(["W",0,$,"p",0,f,"y",0,m,"q",0,h,"f",0,k],472832)},224382,600273,e=>{var t=e.i(425498),a=e.i(77193);let r=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function i(e,n,s={}){let o;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};if(r.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{o=await (s.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(s.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:n.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===o.status||o.ok)return{ok:!0};if(429===o.status){let e=await o.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===o.status||401===o.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:o.status>=500?"transient":"config",error:`Discord returned an error (${o.status}).`}}e.s(["f",0,i],224382);var n=e.i(220642),s=e.i(765359),o=e.i(218331),l=e.i(195191),d=e.i(298397);function c(e,t){return(0,o.M)(e,t)&&(0,o.z)(e).hour>=7}let u={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:e=>e.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:e=>`${e} error tersimpan`}},p={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},g=[5,15,30,60];async function f(e,t){let a={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!c(e,t.lastSentDay))return a;let r=(0,o.x)(e),i=t.state&&t.state.day===r?t.state:null;if(i?.stopped)return{...a,state:i};if(i&&i.attempts>0){let t=(g[i.attempts-1]??g[g.length-1])*6e4;if(i.lastAttemptAt&&e.getTime()-new Date(i.lastAttemptAt).getTime()<t)return{...a,state:i}}i??={day:r,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let n=await t.send({subject:i.subject,html:i.html,text:i.text});if(n.ok)return{acted:!0,state:null,sentDay:r,event:null,result:n};let s=i.attempts+1,l="config"===n.kind||s>=5,d="config"===n.kind?`${n.error}. Fix it and the next digest goes out tomorrow.`:`${n.error} Gave up after ${s} attempts today.`;return{acted:!0,sentDay:null,result:n,state:{...i,attempts:s,lastAttemptAt:e.toISOString(),stopped:l,lastError:n.error},event:l?{message:"Daily digest not sent",detail:d}:null}}e.s(["J",0,function(e,t="en"){let a=u[t],r=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,i=((e,t)=>{let{day:a,month:r}=(0,o.e)(e);return`${a} ${"id"===t?p[r]??r:r}`})(e.now,t),c=`${e.firing.length} ${a.firing}, ${e.opened} ${a.opened}, ${e.resolved.length} ${a.resolved}`,g=`Watchbell \xb7 ${i} \xb7 ${c}`,f=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),h=e.firing.map(e=>`${n.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,s.f)(e.ruleKey,e.message):e.message}`),m=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${a.after} ${a.took(e.took)})`),k=f.map(e=>`${e.name}: ${null===e.uptime?a.noChecks:`${(0,l.C)(e.uptime)} ${a.up}`}, ${a.errors(e.errors)}`),$=e.providers.map(e=>`${e.label}: ${e.text}`),y=[`Watchbell \xb7 ${i}`,`${c} ${a.last24}`,"",a.stillHead,...h.length?h.map(e=>`- ${e}`):[a.noFiring],"",a.resolvedHead,...m.length?m.map(e=>`- ${e}`):[a.noResolved],...k.length?["",a.appsHead,...k.map(e=>`- ${e}`)]:[],...$.length?["",a.providersHead,...$.map(e=>`- ${e}`)]:[],"",`${a.open}: ${r}`].join("\n"),w=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,n.H)(e)}</h3>`,v=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,n.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,n.H)(t)}</p>`,b=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,n.H)(i)}</h2>`,`<p style="margin:0;color:#596170">${(0,n.H)(`${c} ${a.last24}`)}</p>`,w(a.stillHead),v(h,a.noFiring),w(a.resolvedHead),v(m,a.noResolved),...k.length?[w(a.appsHead),v(k,"")]:[],...$.length?[w(a.providersHead),v($,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,n.H)(r).replace(/"/g,""")}" style="color:#1f45c9">${(0,n.H)(a.open)}</a></p>`,"</div>"].join("");return{subject:(0,d.G)(g),html:(0,d.G)(b),text:(0,d.G)(y)}},"A",0,c,"K",0,f],600273)},968068,e=>{e.s(["f",0,function(e=process.env){let t=e.TELEGRAM_BOT_TOKEN?.trim()??"",a=e.RESEND_API_KEY?.trim()??"",r=e.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(t)?t:null,resendKey:a.startsWith("re_")?a:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(r)?r:null}}])},695811,e=>{var t=e.i(960049);function a(e){let t=e&&"object"==typeof e?e:null,a=t?t.lang:e,r=e=>{var r;return"string"==typeof(r=t&&e in t?t[e]:a)&&"id"===r.trim().toLowerCase()?"id":"en"};return{telegram:r("telegram"),discord:r("discord"),email:r("email")}}async function r(){try{return a(await (0,t.l)())}catch{return a(null)}}async function i(e="telegram"){return(await r())[e]}e.s(["H",0,i,"B",0,r,"t",0,function(e,t,a){return e[t][a]}])},633974,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n={}){let s;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};try{s=await (n.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":i.idempotencyKey},body:JSON.stringify({from:i.from,to:[i.to],subject:i.subject,html:i.html,text:i.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(s.ok)return{ok:!0};let o=await s.json().catch(()=>null);return 429===s.status||s.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${s.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(o?.message??s.status).slice(0,200)}`}}e.s(["f",0,r])},76012,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n,s,o=5e3){let l;if((0,a.W)())return{ok:!1,code:null,description:t.Y,retryAfter:null};try{l=await s(`https://api.telegram.org/bot${e}/${i}`,{...n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let d=await l.json().catch(()=>null);return d?.ok?{ok:!0,result:d.result}:{ok:!1,code:d?.error_code??l.status,description:String(d?.description??`HTTP ${l.status}`).slice(0,200),retryAfter:d?.parameters?.retry_after??null}}async function i(e,t,a,n={}){let s=await r(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:a,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...n.replyMarkup?{reply_markup:n.replyMarkup}:{}})},n.fetch??fetch);return s.ok?{ok:!0}:429===s.code?{ok:!1,kind:"transient",retryAfterS:s.retryAfter??30,error:`Telegram asked us to wait ${s.retryAfter??30} s.`}:null===s.code||s.code>=500?{ok:!1,kind:"transient",error:null===s.code?s.description:`Telegram returned an error (${s.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${s.description}`}}e.s(["I",0,i,"z",0,r])}]})();
|
|
13
|
+
${n}`,$)}},"H",0,c],220642)},895625,e=>{var t=e.i(971724),a=e.i(105954),r=e.i(140561),i=e.i(600205),n=e.i(77193);let s=t.z.object({COLLECTOR_SECRET:a.z.string().min(32),CRON_SECRET:a.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:a.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:a.z.string().min(10)}),o=s.extend({QSTASH_CURRENT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,n.c)(e)?o:s).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},629955,11827,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(656083),o=e.i(472832);let l="Pause requested · ";function d(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let a=e.lastTraffic??e.trackedSince;return t.getTime()-a.getTime()>=432e6}function u(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,u,"v",0,d],11827);var c=e.i(326003),p=e.i(843448),g=e.i(547499),f=e.i(628448),m=e.i(342833);async function h(e){let a=await (0,r.f)().select({data:i.snapshots.data}).from(i.resources).innerJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.resources.accountId,e),(0,t.u)(i.resources.kind,"supabase_project"))),n=new Map;for(let{data:e}of a){let t=(0,c.k)(c.B,e);t.orgSlug&&void 0!==t.freeOrg&&n.set(t.orgSlug,t.freeOrg)}return n}let k=e=>`${e} day${1===e?"":"s"}`,y=e=>e instanceof Error?e.name:"unknown";async function $(e,a,n){try{let s=await (0,r.f)().select({k:i.keepActive,r:i.resources,s:i.snapshots,a:i.accounts}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).leftJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.keepActive.keep,!0),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.u)(i.resources.monitored,!0),(0,t.M)(i.resources.goneAt),(0,t.u)(i.accounts.status,"ok"))).limit(100),o=(0,g.f)().OPS_ENCRYPTION_KEY;for(let[t,{k:r,r:i,s:l,a:d}]of s.entries()){let u=a-Date.now()-500;if(u<250)return void n.push(`keep-active: ${s.length-t} left for the next run, time budget used`);if(!(r.lastKeepAliveAt&&e.getTime()-r.lastKeepAliveAt.getTime()<72e6))try{await w(i,l,d,e,o,u,n)}catch(e){console.warn("keep-active failed:",y(e)),n.push(`keep-active/${i.name}: ${y(e)}`)}}}catch(e){console.warn("keep-active failed:",y(e)),n.push(`keep-active: ${y(e)}`)}}async function w(e,a,o,l,u,g,h){let y=(0,c.k)(c.B,a?.data),$=y.lastTrafficAt?new Date(y.lastTrafficAt):y.trafficAt?new Date(new Date(y.trafficAt).getTime()-6048e5):null;if(!d({status:y.status??"",keep:!0,lastTraffic:$,trackedSince:e.firstSeenAt},l))return;let w=Math.floor((l.getTime()-($??e.firstSeenAt).getTime())/864e5),v=(0,n.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},u);if(!v)return void h.push(`keep-active/${o.label}: credential can't be read`);let b=await (0,m.i)(v,e.externalId,{timeoutMs:Math.min(5e3,g)});if(b.ok)await (0,r.f)().update(i.keepActive).set({lastKeepAliveAt:l}).where((0,t.u)(i.keepActive.resourceId,e.id)),await (0,s.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${k(w)})`,detail:null}]);else{let t=Math.max(1,p.e-w);await (0,s.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${k(t)}`,detail:"scope"===b.kind?"This token can't run the read-only query (Database read).":(0,f.S)(b.error)}]),h.push(`keep-active/${e.name}: ${b.error}`)}}async function v(e){let[n]=await (0,r.f)().select({at:i.events.at}).from(i.events).where((0,t.b)((0,t.u)(i.events.reason,"Action"),(0,t.u)(i.events.resourceId,e),(0,t.u)(i.events.type,"action"),(0,t.y)(i.events.kind,["ok","err"]),(0,t.E)(i.events.actorUserId),(0,t.D)(i.events.message,`${l}%`))).orderBy((0,a.A)(i.events.at)).limit(1);return n?.at??null}async function b(){return(await (0,r.f)().select({id:i.keepActive.resourceId}).from(i.keepActive).where((0,t.u)(i.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,a,l=1/0){let d=a.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),c=()=>l-Date.now()-500;if(!d.length||250>c())return;let k=await (0,r.f)().select({k:i.keepActive,id:i.resources.id,name:i.resources.name,ref:i.resources.externalId,accountId:i.resources.accountId,label:i.accounts.label,lastTestAt:i.accounts.lastTestAt,ciphertext:i.accounts.credentialCiphertext,iv:i.accounts.credentialIv}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.keepActive.autoRestore,!0),(0,t.y)(i.keepActive.resourceId,d.map(e=>e.resourceId)),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.M)(i.resources.goneAt)));if(!k.length)return;let $=await (0,o.f)([...new Set(k.map(e=>e.accountId))]),w=new Map,b=new Map;for(let l of k)try{let d=a.filter(e=>e.accountId===l.accountId),k=d.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!w.has(l.accountId)){let e=await h(l.accountId);w.set(l.accountId,e),b.set(l.accountId,(0,p._)(d.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let y=!1===w.get(l.accountId).get(k),A=y?1/0:b.get(l.accountId),I=$.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),T=I?.write==="denied"&&new Date(I.at).getTime()>S,x=u({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:T},e);if(!x.act){"no-slot"===x.reason&&await (0,s.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let j=await v(l.id);if(j&&j.getTime()>l.k.updatedAt.getTime())continue;let D=c();if(D<250)return;await (0,r.f)().update(i.keepActive).set({lastAutoRestoreAt:e}).where((0,t.u)(i.keepActive.resourceId,l.id));let C=(0,n.V)({ciphertext:l.ciphertext,iv:l.iv},(0,g.f)().OPS_ENCRYPTION_KEY);if(!C)continue;let E=await (0,m.G)(C,l.ref,{timeoutMs:Math.min(5e3,D)});E.ok?(y||b.set(l.accountId,b.get(l.accountId)-1),await (0,o.y)(l.accountId,"ok"),await (0,s.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===E.kind&&await (0,o.y)(l.accountId,"denied"),await (0,s.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===E.kind?`${(0,f.b)("supabase",{})} Auto-restore stops until then.`:(0,f.S)(E.error)}]))}catch(e){console.warn("auto-restore failed:",y(e))}}async function I(e,a,n=o.W,s=new Date){let l=await (0,o.q)(e.id,"keep-alive",a);if(l)return{ok:!1,error:l};let d=await (0,o.p)(a,"supabase_project");if(!d)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[u]=await (0,r.f)().select({last:i.keepActive.lastKeepAliveAt}).from(i.keepActive).where((0,t.u)(i.keepActive.resourceId,a)).limit(1);if(u?.last&&s.getTime()-u.last.getTime()<72e6)return n({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,d.account.id);let c=d.resource.name,p=await (0,m.i)(d.token,d.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,r.f)().insert(i.keepActive).values({resourceId:a,lastKeepAliveAt:s}).onConflictDoUpdate({target:i.keepActive.resourceId,set:{lastKeepAliveAt:s}}),n(p.ok?{done:!0,message:`Keep-alive sent to ${c}.`,audit:{message:`Keep-alive sent \xb7 ${c}`,resourceId:a}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${c}`,resourceId:a}},e,d.account.id)}e.s(["m",0,h,"z",0,A,"g",0,b,"v",0,I,"V",0,$,"G",0,function(e,t,a){return!1===t.get(a)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],629955)},483100,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(518899),i=e.i(924924),n=e.i(618916),s=e.i(220642),o=e.i(921991),l=e.i(656083),d=e.i(209576),u=e.i(111970),c=e.i(762504),p=e.i(547499),g=e.i(224382),f=e.i(600273),m=e.i(968068),h=e.i(695811),k=e.i(633974),y=e.i(76012),$=e.i(298397),w=e.i(218331),v=e.i(146394);let b="digest.lastSentDay",A="digest.state";async function I(e){let[a]=await (0,i.f)().select().from(n.channels).where((0,t.u)(n.channels.kind,e)).limit(1);if(!a)return null;try{return{row:a,config:JSON.parse((0,o.K)({ciphertext:a.configCiphertext,iv:a.configIv},(0,p.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function S(){let e=(0,m.f)(),[t,a]=await Promise.all([I("telegram"),I("discord")]),r=new Set;return e.telegramToken&&t?.row.enabled&&t.config?.chatId&&r.add("telegram"),a?.row.enabled&&a.config?.url&&r.add("discord"),{send:(r,i)=>"telegram"===r?(0,y.I)(e.telegramToken,t.config.chatId,i):(0,g.f)(a.config.url,i),configured:r}}async function T(){let e=(0,m.f)().telegramToken;if(!e)return null;let t=await I("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function x(){let e=await I("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let j="notify.telegramThreads",D=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function C(e,t,a){let s=e.filter(e=>D.test(e));if(!s.length||!Number.isSafeInteger(t)||t<=0)return;let o=Object.fromEntries(s.map(e=>[e,{m:t,at:a.getTime()}])),l=a.getTime()-6048e5,d=r.B`case when jsonb_typeof(${n.settings.value}) = 'object' then ${n.settings.value} else '{}'::jsonb end`;await (0,i.f)().insert(n.settings).values({key:j,value:o}).onConflictDoUpdate({target:n.settings.key,set:{value:r.B`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(o)}::jsonb || ${d}) as e
|
|
14
|
+
where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${l})`,updatedAt:a}})}async function E(e){if(!e||!D.test(e))return null;try{let[a]=await (0,i.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,j)).limit(1),r=a?.value&&"object"==typeof a.value?a.value[e]:null;return"number"==typeof r?.m&&Number.isSafeInteger(r.m)&&r.m>0?r.m:null}catch{return null}}let _=()=>(0,d.f)().catch(()=>$.a);async function N(e,o,l={}){var d;if(o-Date.now()<6e3)return{sent:0,dropped:0};let c=await (0,u.I)(),g=await (0,i.f)().select({a:n.alerts,channels:n.alertRules.channels}).from(n.alerts).innerJoin(n.alertRules,(0,t.u)(n.alertRules.key,n.alerts.ruleKey)).where((0,t.b)((0,t.E)(n.alerts.pending),r.B`(${n.alerts.pending} = 'resolve') = (${n.alerts.resolvedAt} is not null)`,(0,u.s)(c))).orderBy((0,a.M)(n.alerts.pendingSince)).limit(50);if(!g.length)return{sent:0,dropped:0};let f=new Set((await (0,i.f)().update(n.alerts).set({claimedAt:e}).where((d=g.map(e=>e.a.id),(0,t.b)((0,t.y)(n.alerts.id,d),(0,t.E)(n.alerts.pending),(0,t.F)((0,t.M)(n.alerts.claimedAt),(0,t.S)(n.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:n.alerts.id})).map(e=>e.id)),m=g.filter(e=>f.has(e.a.id));if(!m.length)return{sent:0,dropped:0};let{send:k,configured:y}=l.sender??await S(),w=new Set(m.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[v,b]=await Promise.all([_(),(0,h.B)()]),A=new Set;for(let a of["telegram","discord"]){if(!y.has(a))continue;let r=m.filter(e=>e.channels.includes(a)&&!w.has(e.a.id));if(!r.length)continue;let o=r.map(({a:e})=>{let t="telegram"===a?e:(0,$.o)(e,v);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:t.title,message:t.message,startedAt:e.startedAt,causedBy:t.causedBy,provider:e.providerIncident}}),l=(0,s.l)(o,e,(0,p.f)().SITE_URL,b[a]),d=await k(a,(0,$.G)("telegram"===a?l.telegram:l.discord));await (0,i.f)().update(n.channels).set(d.ok?{lastSentAt:e,lastError:null}:{lastError:d.error}).where((0,t.u)(n.channels.kind,a)),d.ok&&r.forEach(({a:e})=>A.add(e.id)),d.ok&&"telegram"===a&&d.messageId&&await C(r.filter(({a:e})=>"open"===e.pending).map(({a:e})=>e.id),d.messageId,e).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let I=0,T=0,x=[];for(let{a,channels:r}of m){let s=r.some(e=>y.has(e)),o=null!==a.pendingSince&&e.getTime()-a.pendingSince.getTime()>18e5;A.has(a.id)?(I++,await (0,i.f)().update(n.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===a.pending?{notifiedOpen:!0}:{}}).where((0,t.u)(n.alerts.id,a.id))):w.has(a.id)||!s||o?(T++,await (0,i.f)().update(n.alerts).set({pending:null,claimedAt:null}).where((0,t.u)(n.alerts.id,a.id))):x.push(a.id)}return x.length&&await (0,i.f)().update(n.alerts).set({claimedAt:null}).where((0,t.y)(n.alerts.id,x)),{sent:I,dropped:T}}async function M(e){let s=new Date(e.getTime()-864e5),o=await (0,u.I)(),l=r.B`case ${n.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[d,p,g,f,m]=await Promise.all([(0,i.f)().select({ruleKey:n.alerts.ruleKey,severity:n.alerts.severity,title:n.alerts.title,message:n.alerts.message,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt}).from(n.alerts).where((0,t.b)((0,t.M)(n.alerts.resolvedAt),(0,u.s)(o))).orderBy(l,(0,a.A)(n.alerts.startedAt)).limit(50),(0,i.f)().select({n:r.B`count(*)::int`}).from(n.alerts).where((0,t.B)(n.alerts.startedAt,s)),(0,i.f)().select({ruleKey:n.alerts.ruleKey,title:n.alerts.title,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt,resolvedAt:n.alerts.resolvedAt}).from(n.alerts).where((0,t.b)((0,t.E)(n.alerts.resolvedAt),(0,t.B)(n.alerts.resolvedAt,s))).orderBy((0,a.A)(n.alerts.resolvedAt)).limit(20),(0,i.f)().select({id:n.resources.id,name:n.resources.name}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).orderBy(n.resources.name).limit(v.O.apps),(0,c.h)(e)]),h=f.map(e=>e.id),[k,y]=h.length?await Promise.all([(0,i.f)().select({id:n.monitors.resourceId,total:r.B`count(*)::int`,bad:r.B`(count(*) filter (where not ${n.checks.ok}))::int`}).from(n.checks).innerJoin(n.monitors,(0,t.u)(n.monitors.id,n.checks.monitorId)).where((0,t.b)((0,t.y)(n.monitors.resourceId,h),(0,t.B)(n.checks.at,s),(0,t.u)(n.checks.inMaintenance,!1))).groupBy(n.monitors.resourceId),(0,i.f)().select({id:n.storedLogs.resourceId,n:r.B`count(*)::int`}).from(n.storedLogs).where((0,t.b)((0,t.y)(n.storedLogs.resourceId,h),(0,t.B)(n.storedLogs.at,s))).groupBy(n.storedLogs.resourceId)]):[[],[]],w=new Map(k.map(e=>[e.id,e])),b=new Map(y.map(e=>[e.id,e.n])),A=await _();return{now:e,opened:p[0]?.n??0,firing:d.map(({resourceId:e,...t})=>{let a=(0,$.o)({...t,resourceId:e,causedBy:null},A);return{...t,title:a.title,message:a.message}}),resolved:g.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,$.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},A).title,took:function(e,t){let a=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(a<60)return`${a} min`;let r=Math.floor(a/60);return r<24?`${r} h ${a%60} min`:`${Math.floor(r/24)} d ${r%24} h`}(e.startedAt,e.resolvedAt)}]:[]),apps:f.map(e=>{let t=w.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:b.get(e.id)??0}}),providers:m.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function R(e,a,r){await (0,i.f)().update(n.channels).set(a.ok?{lastSentAt:r,lastError:null}:{lastError:a.error}).where((0,t.u)(n.channels.kind,e))}async function H(e){let[t,a]=await Promise.all([M(e),(0,h.H)("email")]);return(0,f.J)({...t,siteUrl:(0,p.f)().SITE_URL},a)}async function P(e,a={}){let r=await (0,i.f)().select().from(n.settings).where((0,t.y)(n.settings.key,[b,A])),s=r.find(e=>e.key===b)?.value,o="string"==typeof s?s:null;if(!(0,f.A)(e,o))return;let d=(0,m.f)(),u=await I("email_digest");if(!d.resendKey||!d.digestFrom||!u?.row.enabled||!u.config?.to)return;let{resendKey:c,digestFrom:p}=d,g=u.config.to,h=(0,w.x)(e),y=await (0,f.K)(e,{lastSentDay:o,state:r.find(e=>e.key===A)?.value??null,build:a.build??(()=>H(e)),send:a.send??(e=>(0,k.f)(c,{from:p,to:g,...e,idempotencyKey:`digest-${h}`}))});y.acted&&(y.result&&await R("email_digest",y.result,e),y.state?await (0,i.f)().insert(n.settings).values({key:A,value:y.state}).onConflictDoUpdate({target:n.settings.key,set:{value:y.state,updatedAt:e}}):await (0,i.f)().delete(n.settings).where((0,t.u)(n.settings.key,A)),y.sentDay&&await (0,i.f)().insert(n.settings).values({key:b,value:y.sentDay}).onConflictDoUpdate({target:n.settings.key,set:{value:y.sentDay,updatedAt:e}}),y.event&&await (0,l.f)([{type:"system",kind:"warn",message:y.event.message,detail:y.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,N,"G",0,x,"P",0,R,"J",0,P,"Q",0,T,"M",0,E],483100)},472832,628448,e=>{var t=e.i(875225),a=e.i(665044),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(407602),o=e.i(547499),l=e.i(479301),d=e.i(189104);function u(e,t){return"member"===e?`Too many actions. Try again in ${(0,d.H)(t)}.`:"That was just done. Wait a minute before trying again."}function c(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,u,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,c],628448);var p=e.i(593111);let g="access.";async function f(e,a){if(!(0,l.f)(e))return null;let[s]=await (0,r.f)().select({r:i.resources,a:i.accounts}).from(i.resources).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.resources.id,e),(0,t.u)(i.resources.kind,a),(0,t.M)(i.resources.goneAt))).limit(1);if(!s)return null;let d=(0,n.V)({ciphertext:s.a.credentialCiphertext,iv:s.a.credentialIv},(0,o.f)().OPS_ENCRYPTION_KEY);return d?{resource:s.r,account:{id:s.a.id,label:s.a.label,provider:s.a.provider,scopeNote:s.a.scopeNote},token:d}:null}async function m(e,t,a){let r=await (0,p.f)(d.t.providerAction,e);if(!r.allowed)return u("member",r.retryAfter);let i=await (0,p.f)(d.t.actionTarget,`${t}:${a}`);return i.allowed?null:u("target",i.retryAfter)}async function h(e,t,a){let n={write:t,at:new Date().toISOString(),...a?{scope:a}:{}};await (0,r.f)().insert(i.settings).values({key:`${g}${e}`,value:n}).onConflictDoUpdate({target:i.settings.key,set:{value:n,updatedAt:new Date}})}async function k(e){let a=new Map,n=e.filter(l.f);if(0===n.length)return a;for(let e of(await (0,r.f)().select().from(i.settings).where((0,t.y)(i.settings.key,n.map(e=>`${g}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&a.set(e.key.slice(g.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return a}async function y(e,t,r,i={}){if(!("audit"in e))return{ok:!1,error:e.message};let n="failed"in e?e.failed:null,o="failed"in e?"":e.message,l=n?n.error:"failed"in e?void 0:e.audit.detail;try{await (0,s.f)({kind:n?"err":"ok",message:`${i.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:c(l)}:{}})}catch{console.warn("audit event failed")}if(!n||"scope"===n.kind)try{await h(r,n?"denied":"ok")}catch{console.warn("access write failed")}return!1!==i.refresh&&(0,a.refresh)(),n?{ok:!1,error:n.error}:{ok:!0,message:o}}e.s(["W",0,y,"p",0,f,"y",0,h,"q",0,m,"f",0,k],472832)},224382,600273,e=>{var t=e.i(425498),a=e.i(77193);let r=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function i(e,n,s={}){let o;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};if(r.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{o=await (s.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(s.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:n.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===o.status||o.ok)return{ok:!0};if(429===o.status){let e=await o.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===o.status||401===o.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:o.status>=500?"transient":"config",error:`Discord returned an error (${o.status}).`}}e.s(["f",0,i],224382);var n=e.i(220642),s=e.i(765359),o=e.i(218331),l=e.i(195191),d=e.i(298397);function u(e,t){return(0,o.M)(e,t)&&(0,o.z)(e).hour>=7}let c={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:e=>e.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:e=>`${e} error tersimpan`}},p={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},g=[5,15,30,60];async function f(e,t){let a={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!u(e,t.lastSentDay))return a;let r=(0,o.x)(e),i=t.state&&t.state.day===r?t.state:null;if(i?.stopped)return{...a,state:i};if(i&&i.attempts>0){let t=(g[i.attempts-1]??g[g.length-1])*6e4;if(i.lastAttemptAt&&e.getTime()-new Date(i.lastAttemptAt).getTime()<t)return{...a,state:i}}i??={day:r,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let n=await t.send({subject:i.subject,html:i.html,text:i.text});if(n.ok)return{acted:!0,state:null,sentDay:r,event:null,result:n};let s=i.attempts+1,l="config"===n.kind||s>=5,d="config"===n.kind?`${n.error}. Fix it and the next digest goes out tomorrow.`:`${n.error} Gave up after ${s} attempts today.`;return{acted:!0,sentDay:null,result:n,state:{...i,attempts:s,lastAttemptAt:e.toISOString(),stopped:l,lastError:n.error},event:l?{message:"Daily digest not sent",detail:d}:null}}e.s(["J",0,function(e,t="en"){let a=c[t],r=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,i=((e,t)=>{let{day:a,month:r}=(0,o.e)(e);return`${a} ${"id"===t?p[r]??r:r}`})(e.now,t),u=`${e.firing.length} ${a.firing}, ${e.opened} ${a.opened}, ${e.resolved.length} ${a.resolved}`,g=`Watchbell \xb7 ${i} \xb7 ${u}`,f=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),m=e.firing.map(e=>`${n.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,s.f)(e.ruleKey,e.message):e.message}`),h=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${a.after} ${a.took(e.took)})`),k=f.map(e=>`${e.name}: ${null===e.uptime?a.noChecks:`${(0,l.C)(e.uptime)} ${a.up}`}, ${a.errors(e.errors)}`),y=e.providers.map(e=>`${e.label}: ${e.text}`),$=[`Watchbell \xb7 ${i}`,`${u} ${a.last24}`,"",a.stillHead,...m.length?m.map(e=>`- ${e}`):[a.noFiring],"",a.resolvedHead,...h.length?h.map(e=>`- ${e}`):[a.noResolved],...k.length?["",a.appsHead,...k.map(e=>`- ${e}`)]:[],...y.length?["",a.providersHead,...y.map(e=>`- ${e}`)]:[],"",`${a.open}: ${r}`].join("\n"),w=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,n.H)(e)}</h3>`,v=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,n.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,n.H)(t)}</p>`,b=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,n.H)(i)}</h2>`,`<p style="margin:0;color:#596170">${(0,n.H)(`${u} ${a.last24}`)}</p>`,w(a.stillHead),v(m,a.noFiring),w(a.resolvedHead),v(h,a.noResolved),...k.length?[w(a.appsHead),v(k,"")]:[],...y.length?[w(a.providersHead),v(y,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,n.H)(r).replace(/"/g,""")}" style="color:#1f45c9">${(0,n.H)(a.open)}</a></p>`,"</div>"].join("");return{subject:(0,d.G)(g),html:(0,d.G)(b),text:(0,d.G)($)}},"A",0,u,"K",0,f],600273)},968068,e=>{e.s(["f",0,function(e=process.env){let t=e.TELEGRAM_BOT_TOKEN?.trim()??"",a=e.RESEND_API_KEY?.trim()??"",r=e.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(t)?t:null,resendKey:a.startsWith("re_")?a:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(r)?r:null}}])},695811,e=>{var t=e.i(960049);function a(e){let t=e&&"object"==typeof e?e:null,a=t?t.lang:e,r=e=>{var r;return"string"==typeof(r=t&&e in t?t[e]:a)&&"id"===r.trim().toLowerCase()?"id":"en"};return{telegram:r("telegram"),discord:r("discord"),email:r("email")}}async function r(){try{return a(await (0,t.l)())}catch{return a(null)}}async function i(e="telegram"){return(await r())[e]}e.s(["H",0,i,"B",0,r,"t",0,function(e,t,a){return e[t][a]}])},633974,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n={}){let s;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};try{s=await (n.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":i.idempotencyKey},body:JSON.stringify({from:i.from,to:[i.to],subject:i.subject,html:i.html,text:i.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(s.ok)return{ok:!0};let o=await s.json().catch(()=>null);return 429===s.status||s.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${s.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(o?.message??s.status).slice(0,200)}`}}e.s(["f",0,r])},76012,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n,s,o=5e3){let l;if((0,a.W)())return{ok:!1,code:null,description:t.Y,retryAfter:null};try{l=await s(`https://api.telegram.org/bot${e}/${i}`,{...n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let d=await l.json().catch(()=>null);return d?.ok?{ok:!0,result:d.result}:{ok:!1,code:d?.error_code??l.status,description:String(d?.description??`HTTP ${l.status}`).slice(0,200),retryAfter:d?.parameters?.retry_after??null}}async function i(e,t,a,n={}){let s="number"==typeof n.replyTo&&Number.isSafeInteger(n.replyTo)&&n.replyTo>0?{reply_parameters:{message_id:n.replyTo,allow_sending_without_reply:!0}}:{},o=await r(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:a,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...n.replyMarkup?{reply_markup:n.replyMarkup}:{},...s})},n.fetch??fetch);if(o.ok){let e=o.result?.message_id;return"number"==typeof e&&Number.isSafeInteger(e)&&e>0?{ok:!0,messageId:e}:{ok:!0}}return 429===o.code?{ok:!1,kind:"transient",retryAfterS:o.retryAfter??30,error:`Telegram asked us to wait ${o.retryAfter??30} s.`}:null===o.code||o.code>=500?{ok:!1,kind:"transient",error:null===o.code?o.description:`Telegram returned an error (${o.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${o.description}`}}e.s(["I",0,i,"z",0,r])}]})();
|
|
14
15
|
|
|
15
16
|
//# sourceMappingURL=src_lib_1en6omqx66g9d._.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[381725,857897,36995,e=>{var t=e.i(875225),s=e.i(349129),r=e.i(260338),a=e.i(518899),o=e.i(924924),n=e.i(618916),l=e.i(442473),i=e.i(921991),u=e.i(656083),d=e.i(547499),c=e.i(911191),h=e.i(666680),p=e.i(971724),g=e.i(455744),m=e.i(469755),f=e.i(180473),w=e.i(105954),y=e.i(562810);e.s(["z",0,y],857897);var y=y,I=e.i(206033);let b=["debug","info","warning","error","fatal","trace"],v=p.z.object({rows:g.z.array(m.z.unknown()).catch([]),hasMoreRows:f.z.boolean().catch(!1)}),M=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"}),y.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:I.z.number().nullish().catch(null),logs:g.z.array(m.z.unknown()).nullish().catch(null),events:g.z.array(m.z.unknown()).nullish().catch(null)}),N=p.z.object({level:w.z.string().nullish().catch(null),message:w.z.string().nullish().catch(null)}),q=p.z.object({source:w.z.string().nullish().catch(null)}),L=(e,t)=>(0,h.createHash)("sha1").update(`${e}
|
|
2
|
+
${t}`).digest("hex").slice(0,8),z=(e,t,s={})=>({ok:!1,kind:e,error:t,...s});async function A(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,u=r.levels?new Set(r.levels):null,d=e=>!u||u.has(e),c=r.levels?[...new Set(r.levels.map(e=>"fatal"===e?"error":e))]:[],h=r.fetch??fetch,p=new AbortController,g=setTimeout(()=>p.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),m=r.signal?AbortSignal.any([p.signal,r.signal]):p.signal,f=(0,l.X)(m),w=()=>p.signal.aborted&&!r.signal?.aborted?z("transient","Vercel's log history didn't answer in time."):z("transient","Reading Vercel's log history was cancelled."),y=[],I=!1;try{for(let a=0;a<3;a++){let l,u=new URLSearchParams({projectId:s,ownerId:t,page:String(a),startDate:String(o),endDate:String(n)});r.deploymentId&&u.set("deploymentId",r.deploymentId),r.environment&&u.set("environment",r.environment),c.length&&u.set("level",c.join(","));let p=null;try{let t=await Promise.race([h(`https://vercel.com/api/logs/request-logs?${u}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:m,cache:"no-store"}),f]);if(401===t.status||403===t.status)p=z("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));p=z("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status)p=z("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(m.aborted)throw e;p=z("format","Vercel's log history answered in a format the console doesn't recognise.")}else p=z("transient",`Vercel's log history returned an error (${t.status}).`,{status:t.status});p&&await t.body?.cancel().catch(()=>void 0)}catch{p=m.aborted?w():z("transient","Couldn't reach Vercel's log history.")}if(!p){let e=v.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)y.push(...function(e,t,s=!1){let r=M.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=>q.safeParse(e)).find(e=>e.success&&e.data.source)?.data?.source??null},n=[],l=new Map;for(let e of a.logs??[]){let s=N.safeParse(e);if(!s.success||!s.data.message)continue;let r=function(e){let t=(e??"").toLowerCase();return"warn"===t?"warning":b.includes(t)?t:"info"}(s.data.level),i=L(r,s.data.message),u=l.get(i)??0;l.set(i,u+1),t(r)&&n.push({rowId:`${a.requestId}:${i}${u?`#${u}`:""}`,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,d,r.requests));if(!(I=e.data.hasMoreRows)||y.length>=i)break}else p=z("format","Vercel's log history answered in a format the console doesn't recognise.");else p=z("transient","Vercel's log format changed: the answer has neither rows nor hasMoreRows.")}if(p){if(0===a)return p;I=!0;break}}}finally{clearTimeout(g),p.abort()}return y.sort((e,t)=>e.at.getTime()-t.at.getTime()),y.length>i&&(y.splice(0,y.length-i),I=!0),{ok:!0,lines:y,more:I}}e.s(["f",0,A],36995);var $=e.i(218331);let k=["warning","error","fatal"],P="logs_read_cursor";async function D(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,d.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 S=(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 j(e,s,i){let d,[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 h=await D(null);if(!h.length)return;let p=(0,$.y)((0,$.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,h.map(e=>e.appId)),(0,t.B)(n.storedLogs.at,p))).groupBy(n.storedLogs.resourceId)).map(e=>[e.id,e.n])),m=new Map((await (0,o.f)().select({id:n.storedLogs.resourceId,at:(0,r.f)(n.storedLogs.at)}).from(n.storedLogs).where((0,t.y)(n.storedLogs.resourceId,h.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,P)).limit(1),w=(d=f?.value)&&"object"==typeof d&&!Array.isArray(d)?Object.fromEntries(Object.entries(d).filter(e=>"string"==typeof e[1]&&!Number.isNaN(Date.parse(e[1])))):{},y=e.getTime()-864e5,I=await (0,l.P)(h,3,t=>{if(Date.now()+8500>s)return Promise.resolve(null);let r=[m.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:y,y));return A(t.token,t.teamId,t.projectId,{since:a,until:e,now:e,levels:k,environment:"production",maxRows:300})}),b=h.map((e,t)=>{let s=I[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=>k.includes(e.level))):(i.push(`logs/${e.appName}: ${s.error}`),[]):[]}),v=b.flat().map(e=>e.rowId),M=new Set(v.length?(await (0,o.f)().select({rowId:n.storedLogs.rowId}).from(n.storedLogs).where((0,t.y)(n.storedLogs.rowId,v))).map(e=>e.rowId):[]),N=[];for(let[e,t]of h.entries()){let s=b[e].filter(e=>!M.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=>S(t,e));l.length&&await (0,o.f)().insert(n.storedLogs).values(l).onConflictDoNothing({target:n.storedLogs.rowId}),r+s.length>=1e3&&N.push(t.appId)}let q=h.filter((e,t)=>I[t]?.ok);if(q.length){let t={};for(let e of h)w[e.appId]&&(t[e.appId]=w[e.appId]);for(let s of q)t[s.appId]=e.toISOString();await (0,o.f)().insert(n.settings).values({key:P,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})}await (0,u.f)(N.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 C(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()}e.s(["M",0,C,"g",0,D,"_",0,j],381725)},943816,e=>{let t=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:null;e.s(["G",0,function(e){let s=e&&"object"==typeof e?e.pageviews:null;if(!s||"object"!=typeof s)return null;let r="string"==typeof s.readAt?Date.parse(s.readAt):0/0;if(Number.isNaN(r)||"boolean"!=typeof s.enabled)return null;if(!s.enabled)return{enabled:!1,readAt:new Date(r)};let a=t(s.total24h),o=null===s.visitors24h?null:t(s.visitors24h);if(null===a||null===o&&null!==s.visitors24h)return null;let n=36e5*Math.floor(r/36e5),l=new Map;for(let e of Array.isArray(s.hourly)?s.hourly:[]){if(!Array.isArray(e))continue;let s="string"==typeof e[0]?Date.parse(e[0]):0/0,r=t(e[1]);if(Number.isNaN(s)||null===r)continue;let a=36e5*Math.floor(s/36e5);l.set(a,(l.get(a)??0)+r)}return{enabled:!0,total:a,visitors:o,hours:Array.from({length:24},(e,t)=>{let s=n-(23-t)*36e5;return{at:new Date(s),views:l.get(s)??0}}),readAt:new Date(r)}},"R",0,function(e){return!e.gone&&e.teamId&&e.accountOk?e.hasProductionDeploy?null:"Not read: this app has no production deployment yet.":"Not read: this app isn't in a connected Vercel account."},"Z",0,function(e,t){return e.enabled?{enabled:!0,total24h:e.total,visitors24h:e.visitors,readAt:t.toISOString(),hourly:e.hourly.slice(-24).map(e=>[e.at.toISOString(),e.views])}:{enabled:!1,readAt:t.toISOString()}}])}]})();
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=src_lib_1onr7b4_kglpt._.js.map
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[220642,765359,e=>{var t=e.i(218331);let a=e=>`${e} hari`,r=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${a(e)}.`,i={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},n={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},s={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,a)=>`${t}: nggak ada ping selama ${a.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,a)=>`${t}: ${i[a]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,a)=>`${t}: ${a} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,a)=>`p95 ${t} ms selama 10 menit terakhir (batas ${a} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} pakai ${a} MB dari ${r} MB (${i}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,a,r)=>`${t} udah pakai ${a} dari ${r} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} udah baca ${a} dari ${r} dokumen hari ini (${i}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${a(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,a,r)=>`${t}: ${a.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${r}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,a)=>`${t}: ${a.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,a)=>`Credential ${t} ${a} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,a,i)=>r(i,`Credential ${t} ${a}`)]],VulnerableDependency:[[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,a,r)=>`${t} paket rentan (${a.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>n[e])}): ${r.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]]};function o(e,t){for(let[a,r]of Object.hasOwn(s,e)?s[e]:[]){let e=a.exec(t);if(e)return r(...e)}return t}e.s(["f",0,o],765359);let l={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},d={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},
|
|
1
|
+
(()=>{"use strict";module.exports=[220642,765359,e=>{var t=e.i(218331);let a=e=>`${e} hari`,r=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${a(e)}.`,i={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},n={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},s={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,a)=>`${t}: nggak ada ping selama ${a.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,a)=>`${t}: ${i[a]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,a)=>`${t}: ${a} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(e,t,a)=>`${t} pindah ke ${a}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(e,t,a,r)=>`${t} udah bukan domain ${a}; production sekarang di ${r}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(e,t,a)=>`Monitor ngecek ${t}, domain ${a}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,a)=>`p95 ${t} ms selama 10 menit terakhir (batas ${a} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} pakai ${a} MB dari ${r} MB (${i}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,a,r)=>`${t} udah pakai ${a} dari ${r} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} udah baca ${a} dari ${r} dokumen hari ini (${i}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${a(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,a,r)=>`${t}: ${a.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${r}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,a)=>`${t}: ${a.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,a)=>`Credential ${t} ${a} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,a,i)=>r(i,`Credential ${t} ${a}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,a,r)=>`${t} paket rentan (${a.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>n[e])}): ${r.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(e,t,a)=>`${t} pakai Next.js ${a} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(e,t,a,r,i,s,o)=>`Next.js ${t} punya ${a} kerentanan yang diketahui (${n[r]}), ${i?`udah di-fix di ${i}${s?` (${"one fix needs"===s?"satu fix":"sebagian fix"} butuh Next.js ${o})`:""}`:"belum ada fix"}.`]]};function o(e,t){for(let[a,r]of Object.hasOwn(s,e)?s[e]:[]){let e=a.exec(t);if(e)return r(...e)}return t}e.s(["f",0,o],765359);let l={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},d={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},u={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"gara-gara",incident:"lagi ada insiden",step:"Langkah"}},c=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),p={critical:0,warning:1,info:2};function g(e,t){let a=e.filter(e=>"resolve"!==e.kind).length,r=e.length-a;return[a?`${a} ${u[t].firing}`:"",r?`${r} ${u[t].resolved}`:""].filter(Boolean).join(", ")}function f(e,t,a,r,i,n){let s=[...e].sort((e,t)=>("resolve"===e.kind)-("resolve"===t.kind)||p[e.severity]-p[t.severity]),o=[r],l=r.length+i.length+40;for(let e=0;e<s.length;e++){let r=a(s[e]);if(l+r.length+1>t){o.push(n(s.length-e));break}o.push(r),l+=r.length+1}return o.push(i),o.join("\n").slice(0,t)}let m={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}};e.s(["Z",0,d,"l",0,function(e,a,r,i="en"){let n=`${r.replace(/\/+$/,"")}/alerts`,s=u[i],p=e=>`${l[i][e.kind]} \xb7 ${d[i][e.severity]} \xb7 `,h=e=>"id"===i?o(e.ruleKey,e.message):e.message,k=e=>"resolve"===e.kind?null:((e,t="en")=>{let a=Object.hasOwn(m[t],e)?m[t][e]:void 0;return a?`${u[t].step}: ${a}`:null})(e.ruleKey,i),y=e=>[e.causedBy?`${s.causedBy} ${e.causedBy}`:"",e.provider?`${e.provider} ${s.incident}`:""].filter(Boolean).join(" · "),$=e=>`
|
|
2
2
|
+${e} ${s.more}`;return{telegram:f(e,4096,e=>`
|
|
3
|
-
<b>${p(e)}${
|
|
4
|
-
${
|
|
5
|
-
<i>${
|
|
6
|
-
👉 ${
|
|
3
|
+
<b>${p(e)}${c(e.ruleKey)} \xb7 ${c(e.title)}</b>
|
|
4
|
+
${c(h(e))}${y(e)?`
|
|
5
|
+
<i>${c(y(e))}</i>`:""}${k(e)?`
|
|
6
|
+
👉 ${c(k(e))}`:""}
|
|
7
7
|
${s.since} ${(0,t.U)(e.startedAt)} ${(0,t.J)(e.startedAt)}`,`<b>Watchbell</b>: ${g(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
|
|
8
|
-
<a href="${
|
|
8
|
+
<a href="${c(n)}">${s.open}</a>`,$),discord:f(e,2e3,e=>`
|
|
9
9
|
**${p(e)}${e.ruleKey} \xb7 ${e.title.replace(/[*_`~|\[\]<>]/g,"")}**
|
|
10
|
-
${
|
|
11
|
-
_${
|
|
10
|
+
${h(e).replace(/[*_`~|\[\]<>]/g,"")}${y(e)?`
|
|
11
|
+
_${y(e)}_`:""}${k(e)?`
|
|
12
12
|
👉 ${k(e)}`:""}`,`**Watchbell**: ${g(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
|
|
13
|
-
${n}`,y)}},"H",0,u],220642)},895625,e=>{var t=e.i(971724),a=e.i(105954),r=e.i(140561),i=e.i(600205),n=e.i(77193);let s=t.z.object({COLLECTOR_SECRET:a.z.string().min(32),CRON_SECRET:a.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:a.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:a.z.string().min(10)}),o=s.extend({QSTASH_CURRENT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,n.c)(e)?o:s).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},629955,11827,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(656083),o=e.i(472832);let l="Pause requested · ";function d(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let a=e.lastTraffic??e.trackedSince;return t.getTime()-a.getTime()>=432e6}function c(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,c,"v",0,d],11827);var u=e.i(326003),p=e.i(843448),g=e.i(547499),f=e.i(628448),h=e.i(342833);async function m(e){let a=await (0,r.f)().select({data:i.snapshots.data}).from(i.resources).innerJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.resources.accountId,e),(0,t.u)(i.resources.kind,"supabase_project"))),n=new Map;for(let{data:e}of a){let t=(0,u.k)(u.B,e);t.orgSlug&&void 0!==t.freeOrg&&n.set(t.orgSlug,t.freeOrg)}return n}let k=e=>`${e} day${1===e?"":"s"}`,$=e=>e instanceof Error?e.name:"unknown";async function y(e,a,n){try{let s=await (0,r.f)().select({k:i.keepActive,r:i.resources,s:i.snapshots,a:i.accounts}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).leftJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.keepActive.keep,!0),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.u)(i.resources.monitored,!0),(0,t.M)(i.resources.goneAt),(0,t.u)(i.accounts.status,"ok"))).limit(100),o=(0,g.f)().OPS_ENCRYPTION_KEY;for(let[t,{k:r,r:i,s:l,a:d}]of s.entries()){let c=a-Date.now()-500;if(c<250)return void n.push(`keep-active: ${s.length-t} left for the next run, time budget used`);if(!(r.lastKeepAliveAt&&e.getTime()-r.lastKeepAliveAt.getTime()<72e6))try{await w(i,l,d,e,o,c,n)}catch(e){console.warn("keep-active failed:",$(e)),n.push(`keep-active/${i.name}: ${$(e)}`)}}}catch(e){console.warn("keep-active failed:",$(e)),n.push(`keep-active: ${$(e)}`)}}async function w(e,a,o,l,c,g,m){let $=(0,u.k)(u.B,a?.data),y=$.lastTrafficAt?new Date($.lastTrafficAt):$.trafficAt?new Date(new Date($.trafficAt).getTime()-6048e5):null;if(!d({status:$.status??"",keep:!0,lastTraffic:y,trackedSince:e.firstSeenAt},l))return;let w=Math.floor((l.getTime()-(y??e.firstSeenAt).getTime())/864e5),v=(0,n.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},c);if(!v)return void m.push(`keep-active/${o.label}: credential can't be read`);let b=await (0,h.i)(v,e.externalId,{timeoutMs:Math.min(5e3,g)});if(b.ok)await (0,r.f)().update(i.keepActive).set({lastKeepAliveAt:l}).where((0,t.u)(i.keepActive.resourceId,e.id)),await (0,s.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${k(w)})`,detail:null}]);else{let t=Math.max(1,p.e-w);await (0,s.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${k(t)}`,detail:"scope"===b.kind?"This token can't run the read-only query (Database read).":(0,f.S)(b.error)}]),m.push(`keep-active/${e.name}: ${b.error}`)}}async function v(e){let[n]=await (0,r.f)().select({at:i.events.at}).from(i.events).where((0,t.b)((0,t.u)(i.events.reason,"Action"),(0,t.u)(i.events.resourceId,e),(0,t.u)(i.events.type,"action"),(0,t.y)(i.events.kind,["ok","err"]),(0,t.E)(i.events.actorUserId),(0,t.D)(i.events.message,`${l}%`))).orderBy((0,a.A)(i.events.at)).limit(1);return n?.at??null}async function b(){return(await (0,r.f)().select({id:i.keepActive.resourceId}).from(i.keepActive).where((0,t.u)(i.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,a,l=1/0){let d=a.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),u=()=>l-Date.now()-500;if(!d.length||250>u())return;let k=await (0,r.f)().select({k:i.keepActive,id:i.resources.id,name:i.resources.name,ref:i.resources.externalId,accountId:i.resources.accountId,label:i.accounts.label,lastTestAt:i.accounts.lastTestAt,ciphertext:i.accounts.credentialCiphertext,iv:i.accounts.credentialIv}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.keepActive.autoRestore,!0),(0,t.y)(i.keepActive.resourceId,d.map(e=>e.resourceId)),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.M)(i.resources.goneAt)));if(!k.length)return;let y=await (0,o.f)([...new Set(k.map(e=>e.accountId))]),w=new Map,b=new Map;for(let l of k)try{let d=a.filter(e=>e.accountId===l.accountId),k=d.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!w.has(l.accountId)){let e=await m(l.accountId);w.set(l.accountId,e),b.set(l.accountId,(0,p._)(d.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let $=!1===w.get(l.accountId).get(k),A=$?1/0:b.get(l.accountId),I=y.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),T=I?.write==="denied"&&new Date(I.at).getTime()>S,x=c({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:T},e);if(!x.act){"no-slot"===x.reason&&await (0,s.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let C=await v(l.id);if(C&&C.getTime()>l.k.updatedAt.getTime())continue;let D=u();if(D<250)return;await (0,r.f)().update(i.keepActive).set({lastAutoRestoreAt:e}).where((0,t.u)(i.keepActive.resourceId,l.id));let E=(0,n.V)({ciphertext:l.ciphertext,iv:l.iv},(0,g.f)().OPS_ENCRYPTION_KEY);if(!E)continue;let j=await (0,h.G)(E,l.ref,{timeoutMs:Math.min(5e3,D)});j.ok?($||b.set(l.accountId,b.get(l.accountId)-1),await (0,o.y)(l.accountId,"ok"),await (0,s.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===j.kind&&await (0,o.y)(l.accountId,"denied"),await (0,s.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===j.kind?`${(0,f.b)("supabase",{})} Auto-restore stops until then.`:(0,f.S)(j.error)}]))}catch(e){console.warn("auto-restore failed:",$(e))}}async function I(e,a,n=o.W,s=new Date){let l=await (0,o.q)(e.id,"keep-alive",a);if(l)return{ok:!1,error:l};let d=await (0,o.p)(a,"supabase_project");if(!d)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[c]=await (0,r.f)().select({last:i.keepActive.lastKeepAliveAt}).from(i.keepActive).where((0,t.u)(i.keepActive.resourceId,a)).limit(1);if(c?.last&&s.getTime()-c.last.getTime()<72e6)return n({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,d.account.id);let u=d.resource.name,p=await (0,h.i)(d.token,d.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,r.f)().insert(i.keepActive).values({resourceId:a,lastKeepAliveAt:s}).onConflictDoUpdate({target:i.keepActive.resourceId,set:{lastKeepAliveAt:s}}),n(p.ok?{done:!0,message:`Keep-alive sent to ${u}.`,audit:{message:`Keep-alive sent \xb7 ${u}`,resourceId:a}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${u}`,resourceId:a}},e,d.account.id)}e.s(["m",0,m,"z",0,A,"g",0,b,"v",0,I,"V",0,y,"G",0,function(e,t,a){return!1===t.get(a)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],629955)},483100,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(518899),i=e.i(924924),n=e.i(618916),s=e.i(220642),o=e.i(921991),l=e.i(656083),d=e.i(209576),c=e.i(111970),u=e.i(762504),p=e.i(547499),g=e.i(224382),f=e.i(600273),h=e.i(968068),m=e.i(695811),k=e.i(633974),$=e.i(76012),y=e.i(298397),w=e.i(218331),v=e.i(146394);let b="digest.lastSentDay",A="digest.state";async function I(e){let[a]=await (0,i.f)().select().from(n.channels).where((0,t.u)(n.channels.kind,e)).limit(1);if(!a)return null;try{return{row:a,config:JSON.parse((0,o.K)({ciphertext:a.configCiphertext,iv:a.configIv},(0,p.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function S(){let e=(0,h.f)(),[t,a]=await Promise.all([I("telegram"),I("discord")]),r=new Set;return e.telegramToken&&t?.row.enabled&&t.config?.chatId&&r.add("telegram"),a?.row.enabled&&a.config?.url&&r.add("discord"),{send:(r,i)=>"telegram"===r?(0,$.I)(e.telegramToken,t.config.chatId,i):(0,g.f)(a.config.url,i),configured:r}}async function T(){let e=(0,h.f)().telegramToken;if(!e)return null;let t=await I("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function x(){let e=await I("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let C=()=>(0,d.f)().catch(()=>y.a);async function D(e,o,l={}){var d;if(o-Date.now()<6e3)return{sent:0,dropped:0};let u=await (0,c.I)(),g=await (0,i.f)().select({a:n.alerts,channels:n.alertRules.channels}).from(n.alerts).innerJoin(n.alertRules,(0,t.u)(n.alertRules.key,n.alerts.ruleKey)).where((0,t.b)((0,t.E)(n.alerts.pending),r.B`(${n.alerts.pending} = 'resolve') = (${n.alerts.resolvedAt} is not null)`,(0,c.s)(u))).orderBy((0,a.M)(n.alerts.pendingSince)).limit(50);if(!g.length)return{sent:0,dropped:0};let f=new Set((await (0,i.f)().update(n.alerts).set({claimedAt:e}).where((d=g.map(e=>e.a.id),(0,t.b)((0,t.y)(n.alerts.id,d),(0,t.E)(n.alerts.pending),(0,t.F)((0,t.M)(n.alerts.claimedAt),(0,t.S)(n.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:n.alerts.id})).map(e=>e.id)),h=g.filter(e=>f.has(e.a.id));if(!h.length)return{sent:0,dropped:0};let{send:k,configured:$}=l.sender??await S(),w=new Set(h.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[v,b]=await Promise.all([C(),(0,m.B)()]),A=new Set;for(let a of["telegram","discord"]){if(!$.has(a))continue;let r=h.filter(e=>e.channels.includes(a)&&!w.has(e.a.id));if(!r.length)continue;let o=r.map(({a:e})=>{let t=(0,y.o)(e,v);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:t.title,message:t.message,startedAt:e.startedAt,causedBy:t.causedBy,provider:e.providerIncident}}),l=(0,s.l)(o,e,(0,p.f)().SITE_URL,b[a]),d=await k(a,(0,y.G)("telegram"===a?l.telegram:l.discord));await (0,i.f)().update(n.channels).set(d.ok?{lastSentAt:e,lastError:null}:{lastError:d.error}).where((0,t.u)(n.channels.kind,a)),d.ok&&r.forEach(({a:e})=>A.add(e.id))}let I=0,T=0,x=[];for(let{a,channels:r}of h){let s=r.some(e=>$.has(e)),o=null!==a.pendingSince&&e.getTime()-a.pendingSince.getTime()>18e5;A.has(a.id)?(I++,await (0,i.f)().update(n.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===a.pending?{notifiedOpen:!0}:{}}).where((0,t.u)(n.alerts.id,a.id))):w.has(a.id)||!s||o?(T++,await (0,i.f)().update(n.alerts).set({pending:null,claimedAt:null}).where((0,t.u)(n.alerts.id,a.id))):x.push(a.id)}return x.length&&await (0,i.f)().update(n.alerts).set({claimedAt:null}).where((0,t.y)(n.alerts.id,x)),{sent:I,dropped:T}}async function E(e){let s=new Date(e.getTime()-864e5),o=await (0,c.I)(),l=r.B`case ${n.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[d,p,g,f,h]=await Promise.all([(0,i.f)().select({ruleKey:n.alerts.ruleKey,severity:n.alerts.severity,title:n.alerts.title,message:n.alerts.message,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt}).from(n.alerts).where((0,t.b)((0,t.M)(n.alerts.resolvedAt),(0,c.s)(o))).orderBy(l,(0,a.A)(n.alerts.startedAt)).limit(50),(0,i.f)().select({n:r.B`count(*)::int`}).from(n.alerts).where((0,t.B)(n.alerts.startedAt,s)),(0,i.f)().select({ruleKey:n.alerts.ruleKey,title:n.alerts.title,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt,resolvedAt:n.alerts.resolvedAt}).from(n.alerts).where((0,t.b)((0,t.E)(n.alerts.resolvedAt),(0,t.B)(n.alerts.resolvedAt,s))).orderBy((0,a.A)(n.alerts.resolvedAt)).limit(20),(0,i.f)().select({id:n.resources.id,name:n.resources.name}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).orderBy(n.resources.name).limit(v.O.apps),(0,u.h)(e)]),m=f.map(e=>e.id),[k,$]=m.length?await Promise.all([(0,i.f)().select({id:n.monitors.resourceId,total:r.B`count(*)::int`,bad:r.B`(count(*) filter (where not ${n.checks.ok}))::int`}).from(n.checks).innerJoin(n.monitors,(0,t.u)(n.monitors.id,n.checks.monitorId)).where((0,t.b)((0,t.y)(n.monitors.resourceId,m),(0,t.B)(n.checks.at,s),(0,t.u)(n.checks.inMaintenance,!1))).groupBy(n.monitors.resourceId),(0,i.f)().select({id:n.storedLogs.resourceId,n:r.B`count(*)::int`}).from(n.storedLogs).where((0,t.b)((0,t.y)(n.storedLogs.resourceId,m),(0,t.B)(n.storedLogs.at,s))).groupBy(n.storedLogs.resourceId)]):[[],[]],w=new Map(k.map(e=>[e.id,e])),b=new Map($.map(e=>[e.id,e.n])),A=await C();return{now:e,opened:p[0]?.n??0,firing:d.map(({resourceId:e,...t})=>{let a=(0,y.o)({...t,resourceId:e,causedBy:null},A);return{...t,title:a.title,message:a.message}}),resolved:g.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,y.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},A).title,took:function(e,t){let a=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(a<60)return`${a} min`;let r=Math.floor(a/60);return r<24?`${r} h ${a%60} min`:`${Math.floor(r/24)} d ${r%24} h`}(e.startedAt,e.resolvedAt)}]:[]),apps:f.map(e=>{let t=w.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:b.get(e.id)??0}}),providers:h.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function j(e,a,r){await (0,i.f)().update(n.channels).set(a.ok?{lastSentAt:r,lastError:null}:{lastError:a.error}).where((0,t.u)(n.channels.kind,e))}async function _(e){let[t,a]=await Promise.all([E(e),(0,m.H)("email")]);return(0,f.J)({...t,siteUrl:(0,p.f)().SITE_URL},a)}async function N(e,a={}){let r=await (0,i.f)().select().from(n.settings).where((0,t.y)(n.settings.key,[b,A])),s=r.find(e=>e.key===b)?.value,o="string"==typeof s?s:null;if(!(0,f.A)(e,o))return;let d=(0,h.f)(),c=await I("email_digest");if(!d.resendKey||!d.digestFrom||!c?.row.enabled||!c.config?.to)return;let{resendKey:u,digestFrom:p}=d,g=c.config.to,m=(0,w.x)(e),$=await (0,f.K)(e,{lastSentDay:o,state:r.find(e=>e.key===A)?.value??null,build:a.build??(()=>_(e)),send:a.send??(e=>(0,k.f)(u,{from:p,to:g,...e,idempotencyKey:`digest-${m}`}))});$.acted&&($.result&&await j("email_digest",$.result,e),$.state?await (0,i.f)().insert(n.settings).values({key:A,value:$.state}).onConflictDoUpdate({target:n.settings.key,set:{value:$.state,updatedAt:e}}):await (0,i.f)().delete(n.settings).where((0,t.u)(n.settings.key,A)),$.sentDay&&await (0,i.f)().insert(n.settings).values({key:b,value:$.sentDay}).onConflictDoUpdate({target:n.settings.key,set:{value:$.sentDay,updatedAt:e}}),$.event&&await (0,l.f)([{type:"system",kind:"warn",message:$.event.message,detail:$.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,D,"G",0,x,"P",0,j,"J",0,N,"Q",0,T],483100)},472832,628448,e=>{var t=e.i(875225),a=e.i(665044),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(407602),o=e.i(547499),l=e.i(479301),d=e.i(189104);function c(e,t){return"member"===e?`Too many actions. Try again in ${(0,d.H)(t)}.`:"That was just done. Wait a minute before trying again."}function u(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,c,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,u],628448);var p=e.i(593111);let g="access.";async function f(e,a){if(!(0,l.f)(e))return null;let[s]=await (0,r.f)().select({r:i.resources,a:i.accounts}).from(i.resources).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.resources.id,e),(0,t.u)(i.resources.kind,a),(0,t.M)(i.resources.goneAt))).limit(1);if(!s)return null;let d=(0,n.V)({ciphertext:s.a.credentialCiphertext,iv:s.a.credentialIv},(0,o.f)().OPS_ENCRYPTION_KEY);return d?{resource:s.r,account:{id:s.a.id,label:s.a.label,provider:s.a.provider,scopeNote:s.a.scopeNote},token:d}:null}async function h(e,t,a){let r=await (0,p.f)(d.t.providerAction,e);if(!r.allowed)return c("member",r.retryAfter);let i=await (0,p.f)(d.t.actionTarget,`${t}:${a}`);return i.allowed?null:c("target",i.retryAfter)}async function m(e,t,a){let n={write:t,at:new Date().toISOString(),...a?{scope:a}:{}};await (0,r.f)().insert(i.settings).values({key:`${g}${e}`,value:n}).onConflictDoUpdate({target:i.settings.key,set:{value:n,updatedAt:new Date}})}async function k(e){let a=new Map,n=e.filter(l.f);if(0===n.length)return a;for(let e of(await (0,r.f)().select().from(i.settings).where((0,t.y)(i.settings.key,n.map(e=>`${g}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&a.set(e.key.slice(g.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return a}async function $(e,t,r,i={}){if(!("audit"in e))return{ok:!1,error:e.message};let n="failed"in e?e.failed:null,o="failed"in e?"":e.message,l=n?n.error:"failed"in e?void 0:e.audit.detail;try{await (0,s.f)({kind:n?"err":"ok",message:`${i.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:u(l)}:{}})}catch{console.warn("audit event failed")}if(!n||"scope"===n.kind)try{await m(r,n?"denied":"ok")}catch{console.warn("access write failed")}return!1!==i.refresh&&(0,a.refresh)(),n?{ok:!1,error:n.error}:{ok:!0,message:o}}e.s(["W",0,$,"p",0,f,"y",0,m,"q",0,h,"f",0,k],472832)},224382,600273,e=>{var t=e.i(425498),a=e.i(77193);let r=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function i(e,n,s={}){let o;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};if(r.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{o=await (s.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(s.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:n.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===o.status||o.ok)return{ok:!0};if(429===o.status){let e=await o.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===o.status||401===o.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:o.status>=500?"transient":"config",error:`Discord returned an error (${o.status}).`}}e.s(["f",0,i],224382);var n=e.i(220642),s=e.i(765359),o=e.i(218331),l=e.i(195191),d=e.i(298397);function c(e,t){return(0,o.M)(e,t)&&(0,o.z)(e).hour>=7}let u={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:e=>e.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:e=>`${e} error tersimpan`}},p={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},g=[5,15,30,60];async function f(e,t){let a={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!c(e,t.lastSentDay))return a;let r=(0,o.x)(e),i=t.state&&t.state.day===r?t.state:null;if(i?.stopped)return{...a,state:i};if(i&&i.attempts>0){let t=(g[i.attempts-1]??g[g.length-1])*6e4;if(i.lastAttemptAt&&e.getTime()-new Date(i.lastAttemptAt).getTime()<t)return{...a,state:i}}i??={day:r,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let n=await t.send({subject:i.subject,html:i.html,text:i.text});if(n.ok)return{acted:!0,state:null,sentDay:r,event:null,result:n};let s=i.attempts+1,l="config"===n.kind||s>=5,d="config"===n.kind?`${n.error}. Fix it and the next digest goes out tomorrow.`:`${n.error} Gave up after ${s} attempts today.`;return{acted:!0,sentDay:null,result:n,state:{...i,attempts:s,lastAttemptAt:e.toISOString(),stopped:l,lastError:n.error},event:l?{message:"Daily digest not sent",detail:d}:null}}e.s(["J",0,function(e,t="en"){let a=u[t],r=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,i=((e,t)=>{let{day:a,month:r}=(0,o.e)(e);return`${a} ${"id"===t?p[r]??r:r}`})(e.now,t),c=`${e.firing.length} ${a.firing}, ${e.opened} ${a.opened}, ${e.resolved.length} ${a.resolved}`,g=`Watchbell \xb7 ${i} \xb7 ${c}`,f=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),h=e.firing.map(e=>`${n.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,s.f)(e.ruleKey,e.message):e.message}`),m=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${a.after} ${a.took(e.took)})`),k=f.map(e=>`${e.name}: ${null===e.uptime?a.noChecks:`${(0,l.C)(e.uptime)} ${a.up}`}, ${a.errors(e.errors)}`),$=e.providers.map(e=>`${e.label}: ${e.text}`),y=[`Watchbell \xb7 ${i}`,`${c} ${a.last24}`,"",a.stillHead,...h.length?h.map(e=>`- ${e}`):[a.noFiring],"",a.resolvedHead,...m.length?m.map(e=>`- ${e}`):[a.noResolved],...k.length?["",a.appsHead,...k.map(e=>`- ${e}`)]:[],...$.length?["",a.providersHead,...$.map(e=>`- ${e}`)]:[],"",`${a.open}: ${r}`].join("\n"),w=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,n.H)(e)}</h3>`,v=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,n.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,n.H)(t)}</p>`,b=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,n.H)(i)}</h2>`,`<p style="margin:0;color:#596170">${(0,n.H)(`${c} ${a.last24}`)}</p>`,w(a.stillHead),v(h,a.noFiring),w(a.resolvedHead),v(m,a.noResolved),...k.length?[w(a.appsHead),v(k,"")]:[],...$.length?[w(a.providersHead),v($,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,n.H)(r).replace(/"/g,""")}" style="color:#1f45c9">${(0,n.H)(a.open)}</a></p>`,"</div>"].join("");return{subject:(0,d.G)(g),html:(0,d.G)(b),text:(0,d.G)(y)}},"A",0,c,"K",0,f],600273)},968068,e=>{e.s(["f",0,function(e=process.env){let t=e.TELEGRAM_BOT_TOKEN?.trim()??"",a=e.RESEND_API_KEY?.trim()??"",r=e.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(t)?t:null,resendKey:a.startsWith("re_")?a:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(r)?r:null}}])},695811,e=>{var t=e.i(960049);function a(e){let t=e&&"object"==typeof e?e:null,a=t?t.lang:e,r=e=>{var r;return"string"==typeof(r=t&&e in t?t[e]:a)&&"id"===r.trim().toLowerCase()?"id":"en"};return{telegram:r("telegram"),discord:r("discord"),email:r("email")}}async function r(){try{return a(await (0,t.l)())}catch{return a(null)}}async function i(e="telegram"){return(await r())[e]}e.s(["H",0,i,"B",0,r,"t",0,function(e,t,a){return e[t][a]}])},633974,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n={}){let s;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};try{s=await (n.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":i.idempotencyKey},body:JSON.stringify({from:i.from,to:[i.to],subject:i.subject,html:i.html,text:i.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(s.ok)return{ok:!0};let o=await s.json().catch(()=>null);return 429===s.status||s.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${s.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(o?.message??s.status).slice(0,200)}`}}e.s(["f",0,r])},76012,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n,s,o=5e3){let l;if((0,a.W)())return{ok:!1,code:null,description:t.Y,retryAfter:null};try{l=await s(`https://api.telegram.org/bot${e}/${i}`,{...n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let d=await l.json().catch(()=>null);return d?.ok?{ok:!0,result:d.result}:{ok:!1,code:d?.error_code??l.status,description:String(d?.description??`HTTP ${l.status}`).slice(0,200),retryAfter:d?.parameters?.retry_after??null}}async function i(e,t,a,n={}){let s=await r(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:a,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...n.replyMarkup?{reply_markup:n.replyMarkup}:{}})},n.fetch??fetch);return s.ok?{ok:!0}:429===s.code?{ok:!1,kind:"transient",retryAfterS:s.retryAfter??30,error:`Telegram asked us to wait ${s.retryAfter??30} s.`}:null===s.code||s.code>=500?{ok:!1,kind:"transient",error:null===s.code?s.description:`Telegram returned an error (${s.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${s.description}`}}e.s(["I",0,i,"z",0,r])}]})();
|
|
13
|
+
${n}`,$)}},"H",0,c],220642)},895625,e=>{var t=e.i(971724),a=e.i(105954),r=e.i(140561),i=e.i(600205),n=e.i(77193);let s=t.z.object({COLLECTOR_SECRET:a.z.string().min(32),CRON_SECRET:a.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:a.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:a.z.string().min(10)}),o=s.extend({QSTASH_CURRENT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,n.c)(e)?o:s).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},629955,11827,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(656083),o=e.i(472832);let l="Pause requested · ";function d(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let a=e.lastTraffic??e.trackedSince;return t.getTime()-a.getTime()>=432e6}function u(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,u,"v",0,d],11827);var c=e.i(326003),p=e.i(843448),g=e.i(547499),f=e.i(628448),m=e.i(342833);async function h(e){let a=await (0,r.f)().select({data:i.snapshots.data}).from(i.resources).innerJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.resources.accountId,e),(0,t.u)(i.resources.kind,"supabase_project"))),n=new Map;for(let{data:e}of a){let t=(0,c.k)(c.B,e);t.orgSlug&&void 0!==t.freeOrg&&n.set(t.orgSlug,t.freeOrg)}return n}let k=e=>`${e} day${1===e?"":"s"}`,y=e=>e instanceof Error?e.name:"unknown";async function $(e,a,n){try{let s=await (0,r.f)().select({k:i.keepActive,r:i.resources,s:i.snapshots,a:i.accounts}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).leftJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.keepActive.keep,!0),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.u)(i.resources.monitored,!0),(0,t.M)(i.resources.goneAt),(0,t.u)(i.accounts.status,"ok"))).limit(100),o=(0,g.f)().OPS_ENCRYPTION_KEY;for(let[t,{k:r,r:i,s:l,a:d}]of s.entries()){let u=a-Date.now()-500;if(u<250)return void n.push(`keep-active: ${s.length-t} left for the next run, time budget used`);if(!(r.lastKeepAliveAt&&e.getTime()-r.lastKeepAliveAt.getTime()<72e6))try{await w(i,l,d,e,o,u,n)}catch(e){console.warn("keep-active failed:",y(e)),n.push(`keep-active/${i.name}: ${y(e)}`)}}}catch(e){console.warn("keep-active failed:",y(e)),n.push(`keep-active: ${y(e)}`)}}async function w(e,a,o,l,u,g,h){let y=(0,c.k)(c.B,a?.data),$=y.lastTrafficAt?new Date(y.lastTrafficAt):y.trafficAt?new Date(new Date(y.trafficAt).getTime()-6048e5):null;if(!d({status:y.status??"",keep:!0,lastTraffic:$,trackedSince:e.firstSeenAt},l))return;let w=Math.floor((l.getTime()-($??e.firstSeenAt).getTime())/864e5),v=(0,n.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},u);if(!v)return void h.push(`keep-active/${o.label}: credential can't be read`);let b=await (0,m.i)(v,e.externalId,{timeoutMs:Math.min(5e3,g)});if(b.ok)await (0,r.f)().update(i.keepActive).set({lastKeepAliveAt:l}).where((0,t.u)(i.keepActive.resourceId,e.id)),await (0,s.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${k(w)})`,detail:null}]);else{let t=Math.max(1,p.e-w);await (0,s.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${k(t)}`,detail:"scope"===b.kind?"This token can't run the read-only query (Database read).":(0,f.S)(b.error)}]),h.push(`keep-active/${e.name}: ${b.error}`)}}async function v(e){let[n]=await (0,r.f)().select({at:i.events.at}).from(i.events).where((0,t.b)((0,t.u)(i.events.reason,"Action"),(0,t.u)(i.events.resourceId,e),(0,t.u)(i.events.type,"action"),(0,t.y)(i.events.kind,["ok","err"]),(0,t.E)(i.events.actorUserId),(0,t.D)(i.events.message,`${l}%`))).orderBy((0,a.A)(i.events.at)).limit(1);return n?.at??null}async function b(){return(await (0,r.f)().select({id:i.keepActive.resourceId}).from(i.keepActive).where((0,t.u)(i.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,a,l=1/0){let d=a.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),c=()=>l-Date.now()-500;if(!d.length||250>c())return;let k=await (0,r.f)().select({k:i.keepActive,id:i.resources.id,name:i.resources.name,ref:i.resources.externalId,accountId:i.resources.accountId,label:i.accounts.label,lastTestAt:i.accounts.lastTestAt,ciphertext:i.accounts.credentialCiphertext,iv:i.accounts.credentialIv}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.keepActive.autoRestore,!0),(0,t.y)(i.keepActive.resourceId,d.map(e=>e.resourceId)),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.M)(i.resources.goneAt)));if(!k.length)return;let $=await (0,o.f)([...new Set(k.map(e=>e.accountId))]),w=new Map,b=new Map;for(let l of k)try{let d=a.filter(e=>e.accountId===l.accountId),k=d.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!w.has(l.accountId)){let e=await h(l.accountId);w.set(l.accountId,e),b.set(l.accountId,(0,p._)(d.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let y=!1===w.get(l.accountId).get(k),A=y?1/0:b.get(l.accountId),I=$.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),T=I?.write==="denied"&&new Date(I.at).getTime()>S,x=u({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:T},e);if(!x.act){"no-slot"===x.reason&&await (0,s.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let j=await v(l.id);if(j&&j.getTime()>l.k.updatedAt.getTime())continue;let D=c();if(D<250)return;await (0,r.f)().update(i.keepActive).set({lastAutoRestoreAt:e}).where((0,t.u)(i.keepActive.resourceId,l.id));let C=(0,n.V)({ciphertext:l.ciphertext,iv:l.iv},(0,g.f)().OPS_ENCRYPTION_KEY);if(!C)continue;let E=await (0,m.G)(C,l.ref,{timeoutMs:Math.min(5e3,D)});E.ok?(y||b.set(l.accountId,b.get(l.accountId)-1),await (0,o.y)(l.accountId,"ok"),await (0,s.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===E.kind&&await (0,o.y)(l.accountId,"denied"),await (0,s.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===E.kind?`${(0,f.b)("supabase",{})} Auto-restore stops until then.`:(0,f.S)(E.error)}]))}catch(e){console.warn("auto-restore failed:",y(e))}}async function I(e,a,n=o.W,s=new Date){let l=await (0,o.q)(e.id,"keep-alive",a);if(l)return{ok:!1,error:l};let d=await (0,o.p)(a,"supabase_project");if(!d)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[u]=await (0,r.f)().select({last:i.keepActive.lastKeepAliveAt}).from(i.keepActive).where((0,t.u)(i.keepActive.resourceId,a)).limit(1);if(u?.last&&s.getTime()-u.last.getTime()<72e6)return n({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,d.account.id);let c=d.resource.name,p=await (0,m.i)(d.token,d.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,r.f)().insert(i.keepActive).values({resourceId:a,lastKeepAliveAt:s}).onConflictDoUpdate({target:i.keepActive.resourceId,set:{lastKeepAliveAt:s}}),n(p.ok?{done:!0,message:`Keep-alive sent to ${c}.`,audit:{message:`Keep-alive sent \xb7 ${c}`,resourceId:a}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${c}`,resourceId:a}},e,d.account.id)}e.s(["m",0,h,"z",0,A,"g",0,b,"v",0,I,"V",0,$,"G",0,function(e,t,a){return!1===t.get(a)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],629955)},483100,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(518899),i=e.i(924924),n=e.i(618916),s=e.i(220642),o=e.i(921991),l=e.i(656083),d=e.i(209576),u=e.i(111970),c=e.i(762504),p=e.i(547499),g=e.i(224382),f=e.i(600273),m=e.i(968068),h=e.i(695811),k=e.i(633974),y=e.i(76012),$=e.i(298397),w=e.i(218331),v=e.i(146394);let b="digest.lastSentDay",A="digest.state";async function I(e){let[a]=await (0,i.f)().select().from(n.channels).where((0,t.u)(n.channels.kind,e)).limit(1);if(!a)return null;try{return{row:a,config:JSON.parse((0,o.K)({ciphertext:a.configCiphertext,iv:a.configIv},(0,p.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function S(){let e=(0,m.f)(),[t,a]=await Promise.all([I("telegram"),I("discord")]),r=new Set;return e.telegramToken&&t?.row.enabled&&t.config?.chatId&&r.add("telegram"),a?.row.enabled&&a.config?.url&&r.add("discord"),{send:(r,i)=>"telegram"===r?(0,y.I)(e.telegramToken,t.config.chatId,i):(0,g.f)(a.config.url,i),configured:r}}async function T(){let e=(0,m.f)().telegramToken;if(!e)return null;let t=await I("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function x(){let e=await I("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let j="notify.telegramThreads",D=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function C(e,t,a){let s=e.filter(e=>D.test(e));if(!s.length||!Number.isSafeInteger(t)||t<=0)return;let o=Object.fromEntries(s.map(e=>[e,{m:t,at:a.getTime()}])),l=a.getTime()-6048e5,d=r.B`case when jsonb_typeof(${n.settings.value}) = 'object' then ${n.settings.value} else '{}'::jsonb end`;await (0,i.f)().insert(n.settings).values({key:j,value:o}).onConflictDoUpdate({target:n.settings.key,set:{value:r.B`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(o)}::jsonb || ${d}) as e
|
|
14
|
+
where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${l})`,updatedAt:a}})}async function E(e){if(!e||!D.test(e))return null;try{let[a]=await (0,i.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,j)).limit(1),r=a?.value&&"object"==typeof a.value?a.value[e]:null;return"number"==typeof r?.m&&Number.isSafeInteger(r.m)&&r.m>0?r.m:null}catch{return null}}let _=()=>(0,d.f)().catch(()=>$.a);async function N(e,o,l={}){var d;if(o-Date.now()<6e3)return{sent:0,dropped:0};let c=await (0,u.I)(),g=await (0,i.f)().select({a:n.alerts,channels:n.alertRules.channels}).from(n.alerts).innerJoin(n.alertRules,(0,t.u)(n.alertRules.key,n.alerts.ruleKey)).where((0,t.b)((0,t.E)(n.alerts.pending),r.B`(${n.alerts.pending} = 'resolve') = (${n.alerts.resolvedAt} is not null)`,(0,u.s)(c))).orderBy((0,a.M)(n.alerts.pendingSince)).limit(50);if(!g.length)return{sent:0,dropped:0};let f=new Set((await (0,i.f)().update(n.alerts).set({claimedAt:e}).where((d=g.map(e=>e.a.id),(0,t.b)((0,t.y)(n.alerts.id,d),(0,t.E)(n.alerts.pending),(0,t.F)((0,t.M)(n.alerts.claimedAt),(0,t.S)(n.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:n.alerts.id})).map(e=>e.id)),m=g.filter(e=>f.has(e.a.id));if(!m.length)return{sent:0,dropped:0};let{send:k,configured:y}=l.sender??await S(),w=new Set(m.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[v,b]=await Promise.all([_(),(0,h.B)()]),A=new Set;for(let a of["telegram","discord"]){if(!y.has(a))continue;let r=m.filter(e=>e.channels.includes(a)&&!w.has(e.a.id));if(!r.length)continue;let o=r.map(({a:e})=>{let t="telegram"===a?e:(0,$.o)(e,v);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:t.title,message:t.message,startedAt:e.startedAt,causedBy:t.causedBy,provider:e.providerIncident}}),l=(0,s.l)(o,e,(0,p.f)().SITE_URL,b[a]),d=await k(a,(0,$.G)("telegram"===a?l.telegram:l.discord));await (0,i.f)().update(n.channels).set(d.ok?{lastSentAt:e,lastError:null}:{lastError:d.error}).where((0,t.u)(n.channels.kind,a)),d.ok&&r.forEach(({a:e})=>A.add(e.id)),d.ok&&"telegram"===a&&d.messageId&&await C(r.filter(({a:e})=>"open"===e.pending).map(({a:e})=>e.id),d.messageId,e).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let I=0,T=0,x=[];for(let{a,channels:r}of m){let s=r.some(e=>y.has(e)),o=null!==a.pendingSince&&e.getTime()-a.pendingSince.getTime()>18e5;A.has(a.id)?(I++,await (0,i.f)().update(n.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===a.pending?{notifiedOpen:!0}:{}}).where((0,t.u)(n.alerts.id,a.id))):w.has(a.id)||!s||o?(T++,await (0,i.f)().update(n.alerts).set({pending:null,claimedAt:null}).where((0,t.u)(n.alerts.id,a.id))):x.push(a.id)}return x.length&&await (0,i.f)().update(n.alerts).set({claimedAt:null}).where((0,t.y)(n.alerts.id,x)),{sent:I,dropped:T}}async function M(e){let s=new Date(e.getTime()-864e5),o=await (0,u.I)(),l=r.B`case ${n.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[d,p,g,f,m]=await Promise.all([(0,i.f)().select({ruleKey:n.alerts.ruleKey,severity:n.alerts.severity,title:n.alerts.title,message:n.alerts.message,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt}).from(n.alerts).where((0,t.b)((0,t.M)(n.alerts.resolvedAt),(0,u.s)(o))).orderBy(l,(0,a.A)(n.alerts.startedAt)).limit(50),(0,i.f)().select({n:r.B`count(*)::int`}).from(n.alerts).where((0,t.B)(n.alerts.startedAt,s)),(0,i.f)().select({ruleKey:n.alerts.ruleKey,title:n.alerts.title,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt,resolvedAt:n.alerts.resolvedAt}).from(n.alerts).where((0,t.b)((0,t.E)(n.alerts.resolvedAt),(0,t.B)(n.alerts.resolvedAt,s))).orderBy((0,a.A)(n.alerts.resolvedAt)).limit(20),(0,i.f)().select({id:n.resources.id,name:n.resources.name}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).orderBy(n.resources.name).limit(v.O.apps),(0,c.h)(e)]),h=f.map(e=>e.id),[k,y]=h.length?await Promise.all([(0,i.f)().select({id:n.monitors.resourceId,total:r.B`count(*)::int`,bad:r.B`(count(*) filter (where not ${n.checks.ok}))::int`}).from(n.checks).innerJoin(n.monitors,(0,t.u)(n.monitors.id,n.checks.monitorId)).where((0,t.b)((0,t.y)(n.monitors.resourceId,h),(0,t.B)(n.checks.at,s),(0,t.u)(n.checks.inMaintenance,!1))).groupBy(n.monitors.resourceId),(0,i.f)().select({id:n.storedLogs.resourceId,n:r.B`count(*)::int`}).from(n.storedLogs).where((0,t.b)((0,t.y)(n.storedLogs.resourceId,h),(0,t.B)(n.storedLogs.at,s))).groupBy(n.storedLogs.resourceId)]):[[],[]],w=new Map(k.map(e=>[e.id,e])),b=new Map(y.map(e=>[e.id,e.n])),A=await _();return{now:e,opened:p[0]?.n??0,firing:d.map(({resourceId:e,...t})=>{let a=(0,$.o)({...t,resourceId:e,causedBy:null},A);return{...t,title:a.title,message:a.message}}),resolved:g.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,$.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},A).title,took:function(e,t){let a=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(a<60)return`${a} min`;let r=Math.floor(a/60);return r<24?`${r} h ${a%60} min`:`${Math.floor(r/24)} d ${r%24} h`}(e.startedAt,e.resolvedAt)}]:[]),apps:f.map(e=>{let t=w.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:b.get(e.id)??0}}),providers:m.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function R(e,a,r){await (0,i.f)().update(n.channels).set(a.ok?{lastSentAt:r,lastError:null}:{lastError:a.error}).where((0,t.u)(n.channels.kind,e))}async function H(e){let[t,a]=await Promise.all([M(e),(0,h.H)("email")]);return(0,f.J)({...t,siteUrl:(0,p.f)().SITE_URL},a)}async function P(e,a={}){let r=await (0,i.f)().select().from(n.settings).where((0,t.y)(n.settings.key,[b,A])),s=r.find(e=>e.key===b)?.value,o="string"==typeof s?s:null;if(!(0,f.A)(e,o))return;let d=(0,m.f)(),u=await I("email_digest");if(!d.resendKey||!d.digestFrom||!u?.row.enabled||!u.config?.to)return;let{resendKey:c,digestFrom:p}=d,g=u.config.to,h=(0,w.x)(e),y=await (0,f.K)(e,{lastSentDay:o,state:r.find(e=>e.key===A)?.value??null,build:a.build??(()=>H(e)),send:a.send??(e=>(0,k.f)(c,{from:p,to:g,...e,idempotencyKey:`digest-${h}`}))});y.acted&&(y.result&&await R("email_digest",y.result,e),y.state?await (0,i.f)().insert(n.settings).values({key:A,value:y.state}).onConflictDoUpdate({target:n.settings.key,set:{value:y.state,updatedAt:e}}):await (0,i.f)().delete(n.settings).where((0,t.u)(n.settings.key,A)),y.sentDay&&await (0,i.f)().insert(n.settings).values({key:b,value:y.sentDay}).onConflictDoUpdate({target:n.settings.key,set:{value:y.sentDay,updatedAt:e}}),y.event&&await (0,l.f)([{type:"system",kind:"warn",message:y.event.message,detail:y.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,N,"G",0,x,"P",0,R,"J",0,P,"Q",0,T,"M",0,E],483100)},472832,628448,e=>{var t=e.i(875225),a=e.i(665044),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(407602),o=e.i(547499),l=e.i(479301),d=e.i(189104);function u(e,t){return"member"===e?`Too many actions. Try again in ${(0,d.H)(t)}.`:"That was just done. Wait a minute before trying again."}function c(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,u,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,c],628448);var p=e.i(593111);let g="access.";async function f(e,a){if(!(0,l.f)(e))return null;let[s]=await (0,r.f)().select({r:i.resources,a:i.accounts}).from(i.resources).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.resources.id,e),(0,t.u)(i.resources.kind,a),(0,t.M)(i.resources.goneAt))).limit(1);if(!s)return null;let d=(0,n.V)({ciphertext:s.a.credentialCiphertext,iv:s.a.credentialIv},(0,o.f)().OPS_ENCRYPTION_KEY);return d?{resource:s.r,account:{id:s.a.id,label:s.a.label,provider:s.a.provider,scopeNote:s.a.scopeNote},token:d}:null}async function m(e,t,a){let r=await (0,p.f)(d.t.providerAction,e);if(!r.allowed)return u("member",r.retryAfter);let i=await (0,p.f)(d.t.actionTarget,`${t}:${a}`);return i.allowed?null:u("target",i.retryAfter)}async function h(e,t,a){let n={write:t,at:new Date().toISOString(),...a?{scope:a}:{}};await (0,r.f)().insert(i.settings).values({key:`${g}${e}`,value:n}).onConflictDoUpdate({target:i.settings.key,set:{value:n,updatedAt:new Date}})}async function k(e){let a=new Map,n=e.filter(l.f);if(0===n.length)return a;for(let e of(await (0,r.f)().select().from(i.settings).where((0,t.y)(i.settings.key,n.map(e=>`${g}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&a.set(e.key.slice(g.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return a}async function y(e,t,r,i={}){if(!("audit"in e))return{ok:!1,error:e.message};let n="failed"in e?e.failed:null,o="failed"in e?"":e.message,l=n?n.error:"failed"in e?void 0:e.audit.detail;try{await (0,s.f)({kind:n?"err":"ok",message:`${i.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:c(l)}:{}})}catch{console.warn("audit event failed")}if(!n||"scope"===n.kind)try{await h(r,n?"denied":"ok")}catch{console.warn("access write failed")}return!1!==i.refresh&&(0,a.refresh)(),n?{ok:!1,error:n.error}:{ok:!0,message:o}}e.s(["W",0,y,"p",0,f,"y",0,h,"q",0,m,"f",0,k],472832)},224382,600273,e=>{var t=e.i(425498),a=e.i(77193);let r=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function i(e,n,s={}){let o;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};if(r.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{o=await (s.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(s.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:n.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===o.status||o.ok)return{ok:!0};if(429===o.status){let e=await o.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===o.status||401===o.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:o.status>=500?"transient":"config",error:`Discord returned an error (${o.status}).`}}e.s(["f",0,i],224382);var n=e.i(220642),s=e.i(765359),o=e.i(218331),l=e.i(195191),d=e.i(298397);function u(e,t){return(0,o.M)(e,t)&&(0,o.z)(e).hour>=7}let c={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:e=>e.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:e=>`${e} error tersimpan`}},p={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},g=[5,15,30,60];async function f(e,t){let a={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!u(e,t.lastSentDay))return a;let r=(0,o.x)(e),i=t.state&&t.state.day===r?t.state:null;if(i?.stopped)return{...a,state:i};if(i&&i.attempts>0){let t=(g[i.attempts-1]??g[g.length-1])*6e4;if(i.lastAttemptAt&&e.getTime()-new Date(i.lastAttemptAt).getTime()<t)return{...a,state:i}}i??={day:r,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let n=await t.send({subject:i.subject,html:i.html,text:i.text});if(n.ok)return{acted:!0,state:null,sentDay:r,event:null,result:n};let s=i.attempts+1,l="config"===n.kind||s>=5,d="config"===n.kind?`${n.error}. Fix it and the next digest goes out tomorrow.`:`${n.error} Gave up after ${s} attempts today.`;return{acted:!0,sentDay:null,result:n,state:{...i,attempts:s,lastAttemptAt:e.toISOString(),stopped:l,lastError:n.error},event:l?{message:"Daily digest not sent",detail:d}:null}}e.s(["J",0,function(e,t="en"){let a=c[t],r=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,i=((e,t)=>{let{day:a,month:r}=(0,o.e)(e);return`${a} ${"id"===t?p[r]??r:r}`})(e.now,t),u=`${e.firing.length} ${a.firing}, ${e.opened} ${a.opened}, ${e.resolved.length} ${a.resolved}`,g=`Watchbell \xb7 ${i} \xb7 ${u}`,f=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),m=e.firing.map(e=>`${n.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,s.f)(e.ruleKey,e.message):e.message}`),h=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${a.after} ${a.took(e.took)})`),k=f.map(e=>`${e.name}: ${null===e.uptime?a.noChecks:`${(0,l.C)(e.uptime)} ${a.up}`}, ${a.errors(e.errors)}`),y=e.providers.map(e=>`${e.label}: ${e.text}`),$=[`Watchbell \xb7 ${i}`,`${u} ${a.last24}`,"",a.stillHead,...m.length?m.map(e=>`- ${e}`):[a.noFiring],"",a.resolvedHead,...h.length?h.map(e=>`- ${e}`):[a.noResolved],...k.length?["",a.appsHead,...k.map(e=>`- ${e}`)]:[],...y.length?["",a.providersHead,...y.map(e=>`- ${e}`)]:[],"",`${a.open}: ${r}`].join("\n"),w=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,n.H)(e)}</h3>`,v=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,n.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,n.H)(t)}</p>`,b=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,n.H)(i)}</h2>`,`<p style="margin:0;color:#596170">${(0,n.H)(`${u} ${a.last24}`)}</p>`,w(a.stillHead),v(m,a.noFiring),w(a.resolvedHead),v(h,a.noResolved),...k.length?[w(a.appsHead),v(k,"")]:[],...y.length?[w(a.providersHead),v(y,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,n.H)(r).replace(/"/g,""")}" style="color:#1f45c9">${(0,n.H)(a.open)}</a></p>`,"</div>"].join("");return{subject:(0,d.G)(g),html:(0,d.G)(b),text:(0,d.G)($)}},"A",0,u,"K",0,f],600273)},968068,e=>{e.s(["f",0,function(e=process.env){let t=e.TELEGRAM_BOT_TOKEN?.trim()??"",a=e.RESEND_API_KEY?.trim()??"",r=e.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(t)?t:null,resendKey:a.startsWith("re_")?a:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(r)?r:null}}])},695811,e=>{var t=e.i(960049);function a(e){let t=e&&"object"==typeof e?e:null,a=t?t.lang:e,r=e=>{var r;return"string"==typeof(r=t&&e in t?t[e]:a)&&"id"===r.trim().toLowerCase()?"id":"en"};return{telegram:r("telegram"),discord:r("discord"),email:r("email")}}async function r(){try{return a(await (0,t.l)())}catch{return a(null)}}async function i(e="telegram"){return(await r())[e]}e.s(["H",0,i,"B",0,r,"t",0,function(e,t,a){return e[t][a]}])},633974,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n={}){let s;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};try{s=await (n.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":i.idempotencyKey},body:JSON.stringify({from:i.from,to:[i.to],subject:i.subject,html:i.html,text:i.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(s.ok)return{ok:!0};let o=await s.json().catch(()=>null);return 429===s.status||s.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${s.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(o?.message??s.status).slice(0,200)}`}}e.s(["f",0,r])},76012,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n,s,o=5e3){let l;if((0,a.W)())return{ok:!1,code:null,description:t.Y,retryAfter:null};try{l=await s(`https://api.telegram.org/bot${e}/${i}`,{...n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let d=await l.json().catch(()=>null);return d?.ok?{ok:!0,result:d.result}:{ok:!1,code:d?.error_code??l.status,description:String(d?.description??`HTTP ${l.status}`).slice(0,200),retryAfter:d?.parameters?.retry_after??null}}async function i(e,t,a,n={}){let s="number"==typeof n.replyTo&&Number.isSafeInteger(n.replyTo)&&n.replyTo>0?{reply_parameters:{message_id:n.replyTo,allow_sending_without_reply:!0}}:{},o=await r(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:a,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...n.replyMarkup?{reply_markup:n.replyMarkup}:{},...s})},n.fetch??fetch);if(o.ok){let e=o.result?.message_id;return"number"==typeof e&&Number.isSafeInteger(e)&&e>0?{ok:!0,messageId:e}:{ok:!0}}return 429===o.code?{ok:!1,kind:"transient",retryAfterS:o.retryAfter??30,error:`Telegram asked us to wait ${o.retryAfter??30} s.`}:null===o.code||o.code>=500?{ok:!1,kind:"transient",error:null===o.code?o.description:`Telegram returned an error (${o.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${o.description}`}}e.s(["I",0,i,"z",0,r])}]})();
|
|
14
15
|
|
|
15
16
|
//# sourceMappingURL=src_lib_1qo6t00wwitz6._.js.map
|