watchbell 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/.next/BUILD_ID +1 -1
- package/server/.next/app-path-routes-manifest.json +1 -0
- package/server/.next/build-manifest.json +116 -105
- package/server/.next/prerender-manifest.json +3 -3
- package/server/.next/routes-manifest.json +6 -0
- package/server/.next/server/app/(console)/(private)/ai/agents/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/(private)/ai/models/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +15 -15
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js +54 -52
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/[...slug]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/[...slug]/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/[...slug]/page.js +55 -53
- package/server/.next/server/app/(console)/[...slug]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/[...slug]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/alerts/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/alerts/page.js +54 -52
- package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/apps/[id]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +23 -23
- package/server/.next/server/app/(console)/apps/[id]/page.js +54 -52
- package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/apps/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/apps/page.js +54 -52
- package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/backups/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/backups/page.js +54 -52
- package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/catalog/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/catalog/page.js +54 -52
- package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/connections/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +54 -54
- package/server/.next/server/app/(console)/connections/page.js +60 -58
- package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/d1/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/d1/page.js +54 -52
- package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/deployments/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/deployments/page.js +54 -52
- package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/dns/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/dns/page.js +54 -52
- package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/domains/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/domains/page.js +54 -52
- package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/events/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/events/page.js +54 -52
- package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/firebase/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +15 -15
- package/server/.next/server/app/(console)/firebase/page.js +55 -53
- package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/logs/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/logs/page.js +54 -52
- package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/manage/sections/page/app-paths-manifest.json +3 -0
- package/server/.next/server/app/(console)/manage/sections/page/build-manifest.json +22 -0
- package/server/.next/server/app/(console)/manage/sections/page/next-font-manifest.json +11 -0
- package/server/.next/server/app/(console)/manage/sections/page/react-loadable-manifest.json +1 -0
- package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +105 -0
- package/server/.next/server/app/(console)/manage/sections/page.js +104 -0
- package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -0
- package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +3 -0
- package/server/.next/server/app/(console)/neon/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +20 -20
- package/server/.next/server/app/(console)/neon/page.js +54 -52
- package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/overview/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +18 -18
- package/server/.next/server/app/(console)/overview/page.js +54 -52
- package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/repos/[id]/page.js +54 -52
- package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/repos/page.js +54 -52
- package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/settings/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/settings/page.js +54 -52
- package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/sql/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/sql/page.js +54 -52
- package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/status/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/status/page.js +54 -52
- package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/supabase/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +29 -29
- package/server/.next/server/app/(console)/supabase/page.js +54 -52
- package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/topology/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/topology/page.js +54 -52
- package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/turso/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/turso/page.js +54 -52
- package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/upstash/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/upstash/page.js +54 -52
- package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/uptime/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/uptime/page.js +54 -52
- package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/welcome/page/build-manifest.json +3 -3
- package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/welcome/page.js +55 -53
- package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_global-error.html +1 -1
- package/server/.next/server/app/_global-error.rsc +3 -3
- package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
- package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_not-found.html +1 -1
- package/server/.next/server/app/_not-found.rsc +4 -4
- package/server/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/account/password/page/build-manifest.json +3 -3
- package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/account/password/page.js.nft.json +1 -1
- package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/collect/route.js +74 -71
- package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
- package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/daily/route.js +66 -63
- package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
- package/server/.next/server/app/api/health/route.js.nft.json +1 -1
- package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/status/route.js.nft.json +1 -1
- package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/telegram/webhook/route.js +71 -68
- package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/[[...rest]]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/advice/route.js +4 -4
- package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/chat/completions/route.js +2 -2
- package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/models/route.js +2 -2
- package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/questions/[id]/route.js +1 -1
- package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/questions/route.js +5 -5
- package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/mcp/route.js +5 -5
- package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/me/route.js +1 -1
- package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/openapi.json/route.js +1 -1
- package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/status/apps/[app]/route.js +4 -4
- package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/status/route.js +4 -4
- package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
- package/server/.next/server/app/api/watchdog/route.js +19 -18
- package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
- package/server/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/server/.next/server/app/invite/page/build-manifest.json +3 -3
- package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/invite/page.js.nft.json +1 -1
- package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/mfa/page/build-manifest.json +3 -3
- package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/mfa/page.js.nft.json +1 -1
- package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/mfa/setup/page/build-manifest.json +3 -3
- package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
- package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
- package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/page/build-manifest.json +3 -3
- package/server/.next/server/app/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/page.js.nft.json +1 -1
- package/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
- package/server/.next/server/app/s/[slug]/page/build-manifest.json +3 -3
- package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
- package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/setup/page/build-manifest.json +3 -3
- package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/setup/page.js.nft.json +1 -1
- package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/signin/page/build-manifest.json +3 -3
- package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
- package/server/.next/server/app/signin/page.js.nft.json +1 -1
- package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app-paths-manifest.json +1 -0
- package/server/.next/server/chunks/{[externals]__0fbnlnnial7w5._.js → [externals]__0qo8lpb70m87u._.js} +1 -1
- package/server/.next/server/chunks/{[externals]__1e0dmqhilgze5._.js → [externals]__100hq0n2xtenb._.js} +1 -1
- package/server/.next/server/chunks/{[externals]__1jhautmcwmgii._.js → [externals]__1irgb5qz1s3gv._.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__049ykc067tlsv._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__04q-9779vl4kn._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__04rnior8cyxtx._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0hju4mctdmvz9._.js → [root-of-the-server]__06ek056i_j_uk._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__06f9e4kpi0mw8._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__06jphm4auz_sh._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0rak0ce6prxwp._.js → [root-of-the-server]__06r-019fixp3f._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1-q6_msattgcu._.js → [root-of-the-server]__07uknh5b-embq._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0vctt_0kj1gz4._.js → [root-of-the-server]__07v5e0vzgl4n2._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__14zpwd7xntffk._.js → [root-of-the-server]__08fyoixg__c7n._.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0_rfeg3389imx._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0b2hzo6nez0we._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0b9tciqdsctau._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__15tt645jfx-br._.js → [root-of-the-server]__0b_4w-5x5u7ag._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1-37ctpn8yw_m._.js → [root-of-the-server]__0bnasoi-x21jc._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__08i_or_xyqg4g._.js → [root-of-the-server]__0d8ypilha-el8._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0f5l9--3_wjvx._.js → [root-of-the-server]__0flqwe7amc3mz._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__11kfkk5yxz4ge._.js → [root-of-the-server]__0fw19tsgp-vbq._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1_l4gp3r2d-7x._.js → [root-of-the-server]__0fw7l5y58_xcd._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0j68ia9q425ff._.js → [root-of-the-server]__0g1tldn4xjewd._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__03pc2mot62sow._.js → [root-of-the-server]__0h1qhdjpfq1d4._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0hpdrg-m0n6ty._.js → [root-of-the-server]__0h4n81_nqdr4j._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0i3n8l6ecdb4u._.js → [root-of-the-server]__0hty-wue10pro._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0jqgfbhrgi28s._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0m7i0l3nkbdfm._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0mwiq4mkf8pc5._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0mui3wh3lfb6m._.js → [root-of-the-server]__0npmbdrxybln5._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__010exlr_efe2h._.js → [root-of-the-server]__0nqw6z6fp8wad._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0_iz9zh9e_mov._.js → [root-of-the-server]__0olmk-rbbhxlo._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0nsie5dba69e6._.js → [root-of-the-server]__0owyb9lr5t5u-._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0p3lnkpxf2-xz._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0v1kcolrxwmob._.js → [root-of-the-server]__0si9k9jhdc0bm._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0ul6-jnt2oco7._.js → [root-of-the-server]__0t8d8b4qkw3y-._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0i1de88cj5y-p._.js → [root-of-the-server]__0tl5pxttllr4d._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0m7_0rarf_x86._.js → [root-of-the-server]__0uyh4jgcd9092._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0v4-g6c-ls39_._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0vgnlhvdoh3bn._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__15j_u2bz3jc-a._.js → [root-of-the-server]__0wy38l7k36j6g._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0j53mir12jire._.js → [root-of-the-server]__0xiz361p5kdhf._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0ogbwvwpnlx0b._.js → [root-of-the-server]__0z-07azr3zk8s._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0x0x6v75re5_e._.js → [root-of-the-server]__0zxyfd7u67hmv._.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__10c7apgidgs6x._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__1czhdqbxj_3ov._.js → [root-of-the-server]__10x3lu8jeqgbt._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0gs-x779qi1ba._.js → [root-of-the-server]__11-van59e9p2a._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__110c-t3wz3nzm._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__116b4n13dv75t._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__11k46kam6tbia._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__11tte6au1b-z-._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__127dbd1prkw0n._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__12uj0887q1ayr._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__13_b24n_f4my4._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__13h--47xmg706._.js +5 -0
- package/server/.next/server/chunks/{[root-of-the-server]__1rf3slum5swk2._.js → [root-of-the-server]__145gadwk31inl._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0qesn8t6k9y_n._.js → [root-of-the-server]__14luo1ecxoqh-._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__15ddlx_ma_1iu._.js → [root-of-the-server]__162cm9ds1c5y2._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__19kwj690b37xf._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__19vsae2naddj5._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1_l065umy451k._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1_ow7lgy0u7st._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0292lwnmh4wtc._.js → [root-of-the-server]__1aza-7l2pl-pm._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1bsyavebtmd7w._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1cju843cjyf1t._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__1flvcyht5uk7h._.js → [root-of-the-server]__1cla4k3dqtcfb._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1fnsa-f0t7bxj._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1g1176fer3j4e._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1hqy35gww7ps2._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1i92wg2yuvs4c._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__03e141znq0hr-._.js → [root-of-the-server]__1iv6vg3z9ho81._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1jh0el-zvg4hp._.js → [root-of-the-server]__1j3-sv7eqyhjb._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1j3w0-cp17tx4._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0alnp_0qkhzze._.js → [root-of-the-server]__1j_iy13gp2-on._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1kg91b3sadtoc._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1kjndfodqqamq._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1mami4vb3y5gd._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1mse65-7gtj-n._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1objhlwwrjfjk._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__1pscg7y0et34j._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1rw0i4x2ake3x._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1t9zp524wouer._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1v-789ydxj30e._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1vi0u2vkv3tk0._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1hw6s0e7p2-6g._.js → [root-of-the-server]__1w3svzao_gnxp._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1x7ucdyxuh2_k._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__08l1x_plf4dil._.js → [root-of-the-server]__1xdi98xyay6bn._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1qzor1nqajuyp._.js → [root-of-the-server]__20_1nfa6fiz-q._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__20b_clyk74g5u._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__20ev6t8zggct2._.js +3 -0
- package/server/.next/server/chunks/_004c7-39glldb._.js +4 -4
- package/server/.next/server/chunks/_008zv66xvj7ey._.js +37 -0
- package/server/.next/server/chunks/{_12uzjq-fbcuvb._.js → _01s3_8ssosvqi._.js} +1 -1
- package/server/.next/server/chunks/_03qlijpos6a21._.js +3 -0
- package/server/.next/server/chunks/_09l75j3ey14tc._.js +1 -1
- package/server/.next/server/chunks/_0a7533vs89s78._.js +7 -0
- package/server/.next/server/chunks/_0ejcrge5k4quv._.js +1 -1
- package/server/.next/server/chunks/_0k4iqzwm6w5_c._.js +37 -0
- package/server/.next/server/chunks/_0kmhvts35imzs._.js +1 -1
- package/server/.next/server/chunks/_0m1ll2r1g77ii._.js +1 -1
- package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
- package/server/.next/server/chunks/_0nt4hve0bi30h._.js +37 -0
- package/server/.next/server/chunks/_0op74d4yyc3ma._.js +1 -1
- package/server/.next/server/chunks/_0pf2g5n_ko5dq._.js +3 -0
- package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +1 -1
- package/server/.next/server/chunks/_0qr77omrkuewo._.js +3 -0
- package/server/.next/server/chunks/_0rjh9w2ih3j2h._.js +3 -0
- package/server/.next/server/chunks/_0sy878k2ywjbq._.js +3 -0
- package/server/.next/server/chunks/_0tz4o-qufnu3l._.js +4 -4
- package/server/.next/server/chunks/_0voowig3y32v1._.js +1 -1
- package/server/.next/server/chunks/_0wxm_716tjorj._.js +3 -0
- package/server/.next/server/chunks/_0xf7mtsrkgc9e._.js +1 -1
- package/server/.next/server/chunks/_0zkmkbrbc96-h._.js +3 -0
- package/server/.next/server/chunks/_1-pw7jw52sbti._.js +3 -0
- package/server/.next/server/chunks/_10vh_l3hht4_3._.js +4 -4
- package/server/.next/server/chunks/_14ymj3uzawde4._.js +7 -0
- package/server/.next/server/chunks/_15g-opioju_ju._.js +3 -0
- package/server/.next/server/chunks/_17aiz6zt-yv52._.js +1 -1
- package/server/.next/server/chunks/_1_son1yzo5xvl._.js +3 -0
- package/server/.next/server/chunks/_1b7pc6ohhqxs3._.js +1 -1
- package/server/.next/server/chunks/_1g_prqb_u33e3._.js +1 -1
- package/server/.next/server/chunks/_1i7qkrp3fnx1a._.js +37 -0
- package/server/.next/server/chunks/_1luzeov9x87mg._.js +7 -0
- package/server/.next/server/chunks/{_1jz6k3wy_s8br._.js → _1p0ced3sr0i_8._.js} +1 -1
- package/server/.next/server/chunks/_1v7q0xdxbqawm._.js +1 -1
- package/server/.next/server/chunks/_1zx_54or1pubb._.js +1 -1
- package/server/.next/server/chunks/node_modules_next_dist_1i-_xribpwttd._.js +313 -0
- package/server/.next/server/chunks/src_01jp2f5qmh8e2._.js +3 -0
- package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
- package/server/.next/server/chunks/src_088gmyaew7ds0._.js +3 -0
- package/server/.next/server/chunks/{src_08bzavsfds295._.js → src_0kwnhwi77unm7._.js} +2 -2
- package/server/.next/server/chunks/src_0xqorb3-ef3ub._.js +1 -1
- package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +3 -0
- package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +1 -1
- package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
- package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +3 -0
- package/server/.next/server/chunks/{src_03umyw-p7jhaj._.js → src_1dsh9rzlos6-1._.js} +2 -2
- package/server/.next/server/chunks/src_1hy7u0jtydq_d._.js +3 -0
- package/server/.next/server/chunks/src_1j2o14j0-23xv._.js +3 -0
- package/server/.next/server/chunks/src_1j71dvub05y-4._.js +3 -0
- package/server/.next/server/chunks/{src_0k78ifotuztod._.js → src_1no_yh953mran._.js} +2 -2
- package/server/.next/server/chunks/src_1s7yll47_n_hy._.js +3 -0
- package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +3 -3
- package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +3 -0
- package/server/.next/server/chunks/src_1wzm081p6qyre._.js +3 -3
- package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
- package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
- package/server/.next/server/chunks/src_lib_0oz4gm8agoidh._.js +6 -0
- package/server/.next/server/chunks/src_lib_0s_txig7jm3ty._.js +3 -3
- package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +15 -0
- package/server/.next/server/chunks/src_lib_0y-obfzqjj0c6._.js +6 -0
- package/server/.next/server/chunks/src_lib_10_w0ihgmx4e6._.js +6 -0
- package/server/.next/server/chunks/src_lib_15wd7ab4u5nrn._.js +3 -3
- package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +15 -0
- package/server/.next/server/chunks/{src_lib_0vl2-zp4wzw7n._.js → src_lib_1p21oczr6lh5a._.js} +1 -1
- package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +15 -0
- package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
- package/server/.next/server/chunks/src_lib_1yewk45thnv1h._.js +1 -1
- package/server/.next/server/chunks/src_lib_1z73euz6d3tus._.js +6 -0
- package/server/.next/server/chunks/src_lib_collector_auth_ts_0lqx92__e4zij._.js +4 -4
- package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +6 -6
- package/server/.next/server/chunks/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
- package/server/.next/server/chunks/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +6 -0
- package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +1 -1
- package/server/.next/server/chunks/src_lib_providers_info_ts_02x6g30rg2hsp._.js +3 -0
- package/server/.next/server/chunks/src_lib_view_databases_ts_0fdc7jkjvyrxi._.js +3 -0
- package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
- package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +1 -1
- package/server/.next/server/chunks/ssr/{[externals]__0vbbz7arebnub._.js → [externals]__0zvy4iicnrk95._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02qyxz9eh8_eh._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04ovk2bqwu87z._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__13rgl1h4g39l-._.js → [root-of-the-server]__052_cprs0alpy._.js} +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__18b1wk6-2gq4x._.js → [root-of-the-server]__0543ddliluvv3._.js} +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__168ahi_n-kf90._.js → [root-of-the-server]__08479d23kb1xv._.js} +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1drr27jyyhw7p._.js → [root-of-the-server]__08fqg76puqdfr._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09-0oydof-7uw._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09nm_hn1c8zhf._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__07n1hb3mk44lt._.js → [root-of-the-server]__0acmauri7z1sg._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ct71emqfru3b._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ryl_hnreck66._.js → [root-of-the-server]__0e9m8up0h1qhl._.js} +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1xa91qls2i3j4._.js → [root-of-the-server]__0h9gtpapca7i_._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0hln97a4qcziv._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ksvf4x4zcbpb._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0lc7my3iqbrsu._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0n7cj-oti5wct._.js +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ncef7_34ta3-._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1-o_iq-ed9vc8._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__10bkg3o65q6r4._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__12qymdfh83hht._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__13oi70jo-u731._.js +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__146kj3-h6fkaq._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0hbk3gqja86zp._.js → [root-of-the-server]__15n-r12rnj61t._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__16o4p3l21rdq3._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__17kocbnwlcw6d._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__19_nr6j2w-in_._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1gw6334w8y2my._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1i69oli51is1u._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__11y6b96ofb-c5._.js → [root-of-the-server]__1k1fmq0-rg3p0._.js} +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1lx2k37wgre3d._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1n1pq5j5p4_qn._.js → [root-of-the-server]__1owrn7crnsybx._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1w1472ukyh58r._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__20ht054m5-_d6._.js +1 -1
- package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +2 -2
- package/server/.next/server/chunks/ssr/_026w_ig6vy9bt._.js +1 -1
- package/server/.next/server/chunks/ssr/{_1wu_8nu5allm0._.js → _05kq3r87s7p3q._.js} +1 -1
- package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +2 -2
- package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_rtyc4t9xcdo._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_tr9fol2yq33._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_ul4mlc_pj5i._.js +2 -2
- package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
- package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
- package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
- package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
- package/server/.next/server/chunks/ssr/_0fnl7z-saj7nc._.js +1 -1
- package/server/.next/server/chunks/ssr/_0hykblvnwc2ar._.js +1 -1
- package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +2 -2
- package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +2 -2
- package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +2 -2
- package/server/.next/server/chunks/ssr/_0m1ll2r1g77ii._.js +1 -1
- package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +2 -2
- package/server/.next/server/chunks/ssr/{_08u2qnetu4ghm._.js → _0ooh0hh-r_12s._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
- package/server/.next/server/chunks/ssr/{_06sp8cllu_ljh._.js → _0pn3dn9s9es51._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0qnv1uc1_yv28._.js +2 -2
- package/server/.next/server/chunks/ssr/_0qo8tc43kjsf_._.js +1 -1
- package/server/.next/server/chunks/ssr/{_12348a3ug1-wo._.js → _0r04c1-snv6jw._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +1 -1
- package/server/.next/server/chunks/ssr/_0tcmsw8hszixv._.js +1 -1
- package/server/.next/server/chunks/ssr/{_216rrmkts392q._.js → _0tnfblwwlyvq2._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +2 -2
- package/server/.next/server/chunks/ssr/{_1exwj9ou5yh71._.js → _0x1vi7mal3bqd._.js} +2 -2
- package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
- package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
- package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +2 -2
- package/server/.next/server/chunks/ssr/{_1ibagew7zj8y6._.js → _11w5w9dpxcf1w._.js} +2 -2
- package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +2 -2
- package/server/.next/server/chunks/ssr/{_1p4i1e1kw70-_._.js → _14kop_5asppd8._.js} +2 -2
- package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +2 -2
- package/server/.next/server/chunks/ssr/_16t9k9e5cjvas._.js +1 -1
- package/server/.next/server/chunks/ssr/_18lgd6o04ugow._.js +2 -2
- package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
- package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
- package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +2 -2
- package/server/.next/server/chunks/ssr/_1b4uqc9fwt4dy._.js +1 -1
- package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +2 -2
- package/server/.next/server/chunks/ssr/_1c28jitsyufnt._.js +1 -1
- package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
- package/server/.next/server/chunks/ssr/_1dx207la592b7._.js +2 -2
- package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +2 -2
- package/server/.next/server/chunks/ssr/_1flla16o7o9ba._.js +1 -1
- package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
- package/server/.next/server/chunks/ssr/_1gl78598hz_ku._.js +1 -1
- package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +2 -2
- package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
- package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
- package/server/.next/server/chunks/ssr/_1nir32qtr99-r._.js +1 -1
- package/server/.next/server/chunks/ssr/_1sq12-1_02tzt._.js +2 -2
- package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +2 -2
- package/server/.next/server/chunks/ssr/_1ykxf4mi60jog._.js +2 -2
- package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
- package/server/.next/server/chunks/ssr/_1zr0t31h18f2p._.js +3 -0
- package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +2 -2
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1uaicj0j8stji.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_06a1fnrawxlh1.js +3 -0
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_215m-kkv06r4z.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_0ven9q46d3d7s.js +3 -0
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
- package/server/.next/server/chunks/ssr/node_modules_next_dist_0joxsz2q5dh6c._.js +2 -2
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pz49shx663y1.js +3 -0
- package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1b0g9w0uow3x5.js +1 -1
- package/server/.next/server/chunks/ssr/src_00wh1gv_h2pjs._.js +1 -1
- package/server/.next/server/chunks/ssr/src_01jp2f5qmh8e2._.js +3 -0
- package/server/.next/server/chunks/ssr/src_025wo6h30c00a._.js +1 -1
- package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
- package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
- package/server/.next/server/chunks/ssr/src_09atx_ns_mlan._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0_kumjlw3o034._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0dl7jkqqm313f._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0f_ip1ke7i9r7._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0fdfz--89117z._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0ho313o5cu3-h._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0iefnjvaszvw_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0loe22pbn4cuu._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0nylfis4--x5j._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0ohsn5qzqqds_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0p0fk07bj9gpq._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0t6-d5hmzrbp1._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0usxo7vu7o2cj._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0widudneyf0oq._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0xau6d5z5e_md._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1-wu43p02yiel._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +1 -1
- package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
- package/server/.next/server/chunks/ssr/src_11iuy79j_finh._.js +3 -0
- package/server/.next/server/chunks/ssr/src_12x8sjp-qdw08._.js +1 -1
- package/server/.next/server/chunks/ssr/src_14aur12he3m2a._.js +1 -1
- package/server/.next/server/chunks/ssr/src_15aqc6akkqade._.js +1 -1
- package/server/.next/server/chunks/ssr/src_15zqi72ky6hi9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_19evuexp67uty._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1am4_ady64k2b._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1cbawr4iw5h-x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1ccrc8twenijg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1ctx1an_a3k7g._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1iyzhhf1u_gwo._.js +3 -0
- package/server/.next/server/chunks/ssr/{src_11_hakxhnybdd._.js → src_1ottjkdvhje3g._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1xsg-zd4lt_d4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1y0xvj1obxu7i._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1zpftf1xj-30l._.js +1 -1
- package/server/.next/server/chunks/ssr/src_20hs1ilkxmap0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1lhfs18es1mqc._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_loading_tsx_1qyzywm3br5h2._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_06n-9cjmbb-vu._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_loading_tsx_1niopfalguzs6._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_connect_loading_tsx_0q7g8dpf7-vgo._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_keys_04ypt31p11eq7._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_keys_loading_tsx_1hc7x_jx0xx0_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_0261l8yb2z9x1._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_loading_tsx_1dwhza0ud8asg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0hla-5y3iresx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_loading_tsx_1qtp-lo_o41cr._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_1o1z2qp3tik5x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_loading_tsx_02umaieh-00pu._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_0jamu-nm6x-dh._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_loading_tsx_0u2pi0tk7s3ch._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_1kor9sy67qpiw._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_loading_tsx_1hhnum-g2eq3n._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_1v003vrkwk19w._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_loading_tsx_0pjvu-xuxbxmh._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_app_(console)_1olpa0osy74mq._.js → src_app_(console)_1l7irblrb5fae._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_[___slug]_page_tsx_0b007i3c1v_vg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_page_tsx_0o082iagq_14b._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_catalog_page_tsx_1u2_-bv4yi5oo._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_02upf_c41dauw._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_d1_page_tsx_167hwnq_9uh81._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_0d1uyir4fe7pc._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_domains_1ut499n11u8_r._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_firebase_page_tsx_0g20hm13dvbc-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_17htk-vea5fna._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +3 -0
- package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_neon_1ubea__gt06o0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_repos_[id]_page_tsx_1nkxthc4ethrj._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_16-sh45tpob8n._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_status_page_tsx_1zvj799nv4kah._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_uptime_148phfjye0539._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_welcome_page_tsx_1bw0x0riq-oem._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_app_signin_1y1xla7bcc5a1._.js → src_app_signin_1tg6pswa99jbe._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +1 -1
- package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
- package/server/.next/server/chunks/ssr/src_components_ui_dialog_tsx_1tn-i_6d3rhzt._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_lib_0vl2-zp4wzw7n._.js → src_lib_1p21oczr6lh5a._.js} +1 -1
- package/server/.next/server/chunks/ssr/src_lib_1yewk45thnv1h._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +3 -3
- package/server/.next/server/chunks/ssr/src_lib_copy_edition_ts_1y6lsdbj64t9p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_data_keep-active-db_ts_0p07g9b74uu3e._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
- package/server/.next/server/chunks/ssr/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +6 -0
- package/server/.next/server/chunks/ssr/{src_lib_demo_20zjotuzm1lm8._.js → src_lib_demo_0hdl7pzdqejqx._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_lib_providers_info_ts_02x6g30rg2hsp._.js +3 -0
- package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/middleware-build-manifest.js +116 -105
- package/server/.next/server/next-font-manifest.js +1 -1
- package/server/.next/server/next-font-manifest.json +4 -0
- package/server/.next/server/pages/404.html +1 -1
- package/server/.next/server/pages/500.html +1 -1
- package/server/.next/server/preview-props.json +3 -3
- package/server/.next/server/server-reference-manifest.js +1 -1
- package/server/.next/server/server-reference-manifest.json +212 -166
- package/server/.next/static/chunks/{3w445wy3mpp2f.js → 08dak2kh1c6_7.js} +1 -1
- package/server/.next/static/chunks/{2-8ra6gmaw_pb.js → 0b9slopuz4e8a.js} +1 -1
- package/server/.next/static/chunks/{3col9buetdxvh.js → 0dp-tuwkw7xf8.js} +2 -2
- package/server/.next/static/chunks/0fhj_pu5ntcfo.js +1 -0
- package/server/.next/static/chunks/{010bc8dzhxd_0.js → 0h9i512dn01kj.js} +1 -1
- package/server/.next/static/chunks/0ic6_-0gkd6p7.js +1 -0
- package/server/.next/static/chunks/{3s7hj7g12rmuh.js → 0icohez16w-ei.js} +1 -1
- package/server/.next/static/chunks/{08w0t5q93_9mu.js → 0j1wzqg4ukm70.js} +1 -1
- package/server/.next/static/chunks/{2cmw27buw9oce.js → 0kscmnb071fci.js} +1 -1
- package/server/.next/static/chunks/0ld78j1d4j201.js +1 -0
- package/server/.next/static/chunks/{1yb4_s_96v9tf.js → 0qlb-l1uyqku5.js} +1 -1
- package/server/.next/static/chunks/0udh0u8c6ovgf.css +3 -0
- package/server/.next/static/chunks/0y1ss0tjq0nq0.js +1 -0
- package/server/.next/static/chunks/{0dhgqjjm0zj6_.js → 1-oetq3mwlhds.js} +1 -1
- package/server/.next/static/chunks/{3uujo4bht1tqo.js → 11ywzwmfd_pt0.js} +1 -1
- package/server/.next/static/chunks/{1aoqsoecu-fy_.js → 1jaozq01v9r6e.js} +1 -1
- package/server/.next/static/chunks/1ky5exl-c1kbo.js +1 -0
- package/server/.next/static/chunks/{3o7se0ypyiqmz.js → 1lsu_fxiyaeiz.js} +1 -1
- package/server/.next/static/chunks/{1endj3d7bewa1.js → 1o3_amrh-sxr3.js} +1 -1
- package/server/.next/static/chunks/{1vi8tyc1ou2o3.js → 1w9o_jo_pejc5.js} +1 -1
- package/server/.next/static/chunks/{0nx0h-723nd_u.js → 1yvbs41m8_4nc.js} +2 -2
- package/server/.next/static/chunks/{0unx038_2rfsp.js → 22alexnun_rdm.js} +1 -1
- package/server/.next/static/chunks/{06lmwdlx-fkr8.js → 27qwmt1w6-iri.js} +1 -1
- package/server/.next/static/chunks/{02uvde7i-78p5.js → 29humkd2-_1oo.js} +1 -1
- package/server/.next/static/chunks/{0-7by9f00qb4d.js → 29j96yfhxsf41.js} +1 -1
- package/server/.next/static/chunks/{1483hxa9hair1.js → 29qnnsjsgsia6.js} +1 -1
- package/server/.next/static/chunks/{2pbnh717ldzfl.js → 2ii8j9xuvv604.js} +1 -1
- package/server/.next/static/chunks/{2ufr23d_eyosj.js → 2m0ftj__ody0m.js} +1 -1
- package/server/.next/static/chunks/{201zah03wlibg.js → 2q88116332v43.js} +1 -1
- package/server/.next/static/chunks/2rbtw3em5hkt4.js +1 -0
- package/server/.next/static/chunks/2sdyov_lz1uj4.js +1 -0
- package/server/.next/static/chunks/{1o4mdgq5lu1g_.js → 2toeyr9b_nk0e.js} +1 -1
- package/server/.next/static/chunks/{2zdjxqgm-44u1.js → 2w7qxt7ux-m1-.js} +1 -1
- package/server/.next/static/chunks/{18gwem_5y9wnt.js → 2zc1osymeruya.js} +1 -1
- package/server/.next/static/chunks/33fbppn5fotpk.js +1 -0
- package/server/.next/static/chunks/3auw1gobgv94g.js +1 -0
- package/server/.next/static/chunks/3b1p-xm7iow1_.js +1 -0
- package/server/.next/static/chunks/{2z6a725ntvlr6.js → 3gl2k6v182lli.js} +2 -2
- package/server/.next/static/chunks/{2lv5qmgi8nm4h.js → 3gurl_36kr7sg.js} +1 -1
- package/server/.next/static/chunks/{2n-h6_0i3mpxo.js → 3h-i_hcaaf7vs.js} +1 -1
- package/server/.next/static/chunks/{0dnjs3de2e_d1.js → 3kznplgmzot89.js} +1 -1
- package/server/.next/static/chunks/{0du6qnm4ee-qx.js → 3mb_v650fie_i.js} +1 -1
- package/server/.next/static/chunks/{1t2iu6ufyxecz.js → 3n_n6yeienmn-.js} +1 -1
- package/server/.next/static/chunks/{01oee9tptcjdb.js → 3nqciag05fif0.js} +1 -1
- package/server/.next/static/chunks/3r3mt51wqymgs.js +1 -0
- package/server/.next/static/chunks/3sg_npfod25zq.js +1 -0
- package/server/.next/static/chunks/{03fjh6klyhqv4.js → 3shbvizselyoq.js} +1 -1
- package/server/.next/static/chunks/3xxagngfonh62.js +1 -0
- package/server/.next/static/chunks/{3alfhqlczff2s.js → 3yv-enyk37whg.js} +1 -1
- package/server/node_modules/@next/env/package.json +1 -1
- package/server/node_modules/next/dist/build/analyze/snapshot.js +1 -1
- package/server/node_modules/next/dist/build/index.js +3 -3
- package/server/node_modules/next/dist/build/swc/index.js +1 -1
- package/server/node_modules/next/dist/build/turbopack-analyze/index.js +1 -1
- package/server/node_modules/next/dist/build/turbopack-build/impl.js +1 -1
- package/server/node_modules/next/dist/build/webpack-config.js +3 -3
- package/server/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +2 -2
- package/server/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +2 -2
- package/server/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +1 -1
- package/server/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/server/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
- package/server/node_modules/next/dist/server/config.js +1 -1
- package/server/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/server/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/server/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/server/node_modules/next/dist/server/lib/generate-agent-files.js +3 -3
- package/server/node_modules/next/dist/server/lib/router-server.js +1 -1
- package/server/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/server/node_modules/next/dist/server/lib/trace/tracer.js +1 -1
- package/server/node_modules/next/dist/server/typescript/rules/config.js +2 -2
- package/server/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -1
- package/server/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/server/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/server/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/server/node_modules/next/package.json +11 -11
- package/server/.next/server/chunks/[root-of-the-server]__03zcy67tjxii8._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__08j1jeemvo-th._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0abdjgj-muln9._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0b_bj-_t8b0b-._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0rxrv00e5e6fj._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0xyzhdj3z_1ro._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0zd61mh-juh2i._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__13scfgchwlitx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__15zbj_ehkvv-n._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__16dyxwm6pzumx._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__16sp8qurcwsnf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__18qf1s7o0ia89._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1951xb3jdzdop._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1_1-jgxiadvs0._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1_2akhn6c9eqq._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1a9cd4d9ohf69._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1c2u-bg524-_w._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1c8_e0jqh_8na._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1g-be2zoiz2tf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1h96ebyza_vlh._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1hxhj2o7lea8i._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1i4bqqne6vibf._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1i83m8i-3yn72._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1jrcnhad_b53j._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1ldcwvd42rpuz._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1pgtip37umn35._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1rl43iilsc-je._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1sj7uwyq1gpet._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1ta7-xvmtkjwr._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1voiad6r-u931._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1wlilsfzjqdw9._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1wonw7ft4hset._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__202r0hxhr5bnu._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__2196hxm-s7u6e._.js +0 -3
- package/server/.next/server/chunks/_01vdbh009dk-w._.js +0 -5
- package/server/.next/server/chunks/_061mqfu1rkl7g._.js +0 -34
- package/server/.next/server/chunks/_0c_vrxu6rin-k._.js +0 -3
- package/server/.next/server/chunks/_0qawxzcf--lyq._.js +0 -4
- package/server/.next/server/chunks/_0qrn1v02iivm8._.js +0 -3
- package/server/.next/server/chunks/_0s30ac32b7prb._.js +0 -3
- package/server/.next/server/chunks/_0vfrh5u-u4mis._.js +0 -3
- package/server/.next/server/chunks/_0vgojnnkcf1vu._.js +0 -4
- package/server/.next/server/chunks/_0vz0de4gz70-e._.js +0 -4
- package/server/.next/server/chunks/_1-mixh9aeqh7f._.js +0 -3
- package/server/.next/server/chunks/_1b63jfweu0o04._.js +0 -3
- package/server/.next/server/chunks/_1i57ar6zvd7yb._.js +0 -34
- package/server/.next/server/chunks/_1k2cwp1_wt6qm._.js +0 -3
- package/server/.next/server/chunks/_1kj2yv4-wk2kp._.js +0 -34
- package/server/.next/server/chunks/_1l82x0z8bo4pt._.js +0 -3
- package/server/.next/server/chunks/_1ozrnl_on86u7._.js +0 -34
- package/server/.next/server/chunks/_1xeuk6g48m3_1._.js +0 -3
- package/server/.next/server/chunks/src_0d5xqe2zx_935._.js +0 -3
- package/server/.next/server/chunks/src_0v4pdrc1yxyl8._.js +0 -3
- package/server/.next/server/chunks/src_0vva87j3z99p9._.js +0 -3
- package/server/.next/server/chunks/src_1zo6so07lgcdj._.js +0 -3
- package/server/.next/server/chunks/src_db_rows_ts_15b286wn1kn1e._.js +0 -3
- package/server/.next/server/chunks/src_lib_0485hz-c7h7dr._.js +0 -15
- package/server/.next/server/chunks/src_lib_0qcyomi01xvf1._.js +0 -15
- package/server/.next/server/chunks/src_lib_1d6edz_ucj01w._.js +0 -3
- package/server/.next/server/chunks/src_lib_1ryt-36ohhnm6._.js +0 -15
- package/server/.next/server/chunks/src_lib_1suc_xwzxtuej._.js +0 -3
- package/server/.next/server/chunks/src_lib_1uh73ofc-pe92._.js +0 -3
- package/server/.next/server/chunks/src_private_1yzfhupl3rlpx._.js +0 -6
- package/server/.next/server/chunks/ssr/[root-of-the-server]__004r8ubf3fp_i._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04a21b9fkrqs3._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0q36f5xjkzf4z._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0wf8q7-o-4n8y._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1e-xqsuqsd4ub._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__204_t7bzma353._.js +0 -3
- package/server/.next/server/chunks/ssr/_04e0uk5aqrgc3._.js +0 -3
- package/server/.next/server/chunks/ssr/_11o43qq2eyx_r._.js +0 -3
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_03amng1-xhfd1.js +0 -3
- package/server/.next/server/chunks/ssr/src_0qu78tivj78-x._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_0gm1y-wtw5gyd._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1qigx20w8bk53._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +0 -3
- package/server/.next/static/chunks/0anet8wttkax1.js +0 -1
- package/server/.next/static/chunks/0ao7kjrp6bp3l.js +0 -1
- package/server/.next/static/chunks/0b0rwd99q942r.js +0 -1
- package/server/.next/static/chunks/0dmi-v53phuqn.js +0 -1
- package/server/.next/static/chunks/0ilml-p3iktnr.js +0 -1
- package/server/.next/static/chunks/0y_0w1ek5fakj.js +0 -1
- package/server/.next/static/chunks/1fxuyn0k52n4v.css +0 -3
- package/server/.next/static/chunks/1k01h6men2hvb.js +0 -1
- package/server/.next/static/chunks/1mdaf7mwcfafr.js +0 -1
- package/server/.next/static/chunks/2mj8z5a9dz7bh.js +0 -1
- package/server/.next/static/chunks/2qltilq3pn4ia.js +0 -1
- package/server/.next/static/chunks/2wqgz94tksucm.js +0 -1
- package/server/.next/static/chunks/3ypdfkwyovory.js +0 -1
- /package/server/.next/static/{n3Kt7dFNHr9KDw7DgGz0m → 00CFAqN6pFBVkqJyXSd78}/_buildManifest.js +0 -0
- /package/server/.next/static/{n3Kt7dFNHr9KDw7DgGz0m → 00CFAqN6pFBVkqJyXSd78}/_clientMiddlewareManifest.js +0 -0
- /package/server/.next/static/{n3Kt7dFNHr9KDw7DgGz0m → 00CFAqN6pFBVkqJyXSd78}/_ssgManifest.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[825895,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(620511),i=e.i(267841);let o="deps.lockfileDispatched";async function s(){let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,n.h)).limit(1);return(0,n.g)(e?.value).repo}async function l(e,u,d=new Date){try{let l=await s();if(!l)return{sent:!1,why:"no actions repository"};let c=(0,n.C)(u);if(!c)return{sent:!1,why:"invalid"};let p=await (0,i.B)(e,l,c);if(!p.ok)return{sent:!1,why:p.error};let[f]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1),m=f?.value&&"object"==typeof f.value?f.value:{},g={...Object.fromEntries(Object.entries(m).filter(([,e])=>d.getTime()-Date.parse(e)<864e5)),[`${u.repo}#${u.branch}`]:d.toISOString()};return await (0,r.f)().insert(a.settings).values({key:o,value:g}).onConflictDoUpdate({target:a.settings.key,set:{value:g,updatedAt:d}}),{sent:!0}}catch(e){return console.warn("deps: lockfile dispatch failed:",e instanceof Error?e.name:"error"),{sent:!1,why:"error"}}}async function u(e,i,s=new Date){try{let[l]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1),u=l?.value?.[`${e}#${i}`];return!!u&&s.getTime()-Date.parse(u)<n.w}catch{return!1}}e.s(["W",0,u,"U",0,l])},582931,e=>{var t=e.i(875225),r=e.i(349129),a=e.i(924924),n=e.i(618916),i=e.i(921991),o=e.i(90801),s=e.i(975912),l=e.i(32391),u=e.i(256662),d=e.i(413230),c=e.i(547499),p=e.i(479301),f=e.i(267841),m=e.i(628448),g=e.i(472832),h=e.i(825895);let k=e=>({done:!1,message:e});async function y(){let[e]=await (0,a.f)().select().from(n.accounts).where((0,t.u)(n.accounts.provider,"github_write")).orderBy((0,r.M)(n.accounts.createdAt)).limit(1);if(!e)return null;let o=(0,i.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,c.f)().OPS_ENCRYPTION_KEY);return o?{id:e.id,token:o}:"unreadable"}let w={severity:"no package at the selected severity",major:"an update jumps a major version",nothing:"nothing can be updated"};async function b(r,i,c,v=g.W,I={}){if(!(0,p.f)(i)||!(0,p.f)(c))return v(k("Something in that request wasn't valid."),r,"");let $=await (0,g.q)(r.id,"github_bump_pr",i);if($)return v(k($),r,"");let A=await y();if(null===A)return v(k('A GitHub PR-write token is needed: connect "GitHub (PR write)" on Connections (fine-grained, this repository only, Contents and Pull requests: Read and write; Commit statuses: Read for automatic merges), then ask again.'),r,"");if("unreadable"===A)return v(k("Can't read the stored GitHub PR-write credential. Replace it on Connections."),r,"");let[R]=await (0,a.f)().select({app:n.resources.name,fullName:n.githubRepos.fullName,owner:n.githubRepos.owner,goneAt:n.githubRepos.goneAt,lockfilePath:n.dependencyScans.lockfilePath}).from(n.appRepos).innerJoin(n.githubRepos,(0,t.u)(n.githubRepos.id,n.appRepos.repoId)).innerJoin(n.resources,(0,t.u)(n.resources.id,n.appRepos.appId)).leftJoin(n.dependencyScans,(0,t.u)(n.dependencyScans.repoId,n.appRepos.repoId)).where((0,t.b)((0,t.u)(n.appRepos.appId,i),(0,t.u)(n.appRepos.repoId,c))).limit(1);if(!R||R.goneAt)return v(k(m.G),r,A.id);let x=await (0,a.f)().select({package:n.dependencyVulns.package,installedVersion:n.dependencyVulns.installedVersion,fixedVersion:n.dependencyVulns.fixedVersion,vulnId:n.dependencyVulns.vulnId,aliases:n.dependencyVulns.aliases,severity:n.dependencyVulns.severity,direct:n.dependencyVulns.direct}).from(n.dependencyVulns).where((0,t.b)((0,t.u)(n.dependencyVulns.repoId,c),(0,t.M)(n.dependencyVulns.resolvedAt))).limit(2e3),_=(0,d.B)(x);if(!_.length)return v(k(`Nothing to update in ${R.app}: no direct package has a fixed version for its open advisories.`),r,A.id);if(I.auto){let e=(0,o.a)(_,(0,o.D)(x),I.auto.severities);if(!e.ok)return v(k(`Automatic PR not opened: ${w[e.why]}. The proposal waits for your approval.`),r,A.id);_=e.upgrades}let{auto:j,proposalId:T,...O}=I,P={timeoutMs:8e3,...O},S=await (0,f.H)(A.token,R.fullName,P);if(!S.ok)return v({done:!1,failed:S,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);let D=S.data.defaultBranch,N=await (0,f.M)(A.token,R.fullName,D,P);if(!N.ok)return v({done:!1,failed:N,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);if(!N.data)return v(k(`The default branch ${D} wasn't found.`),r,A.id);let E=await (0,f.E)(A.token,R.fullName,N.data,P);if(!E.ok)return v({done:!1,failed:E,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);if(!E.data)return v(k("There is no package.json at the repository root."),r,A.id);let C=(0,s.k)(E.data.text,_);if(!C?.length)return v(k(`package.json in ${R.app} already allows the fixed versions (or its ranges can't be rewritten). Run npm install there.`),r,A.id);if(j){let e=C.find(e=>{let t=(0,l.Y)(e.from);return!t||!(0,o.J)(t,e.fixed)});if(e)return v(k(`Automatic PR not opened: ${e.package} ${e.from} → ${e.to} jumps a major version. The proposal waits for your approval.`),r,A.id)}let M=(0,s.M)(E.data.text,C);if(!M)return v(k("package.json couldn't be edited safely."),r,A.id);let K=(0,s.U)(C);if(!(0,s.c)(K,D))return v(k("Refused: the PR branch would be the default branch."),r,A.id);let z=await (0,f.x)(A.token,R.fullName,R.owner,K,D,P);if(z.ok&&z.data)return{ok:!0,message:`Pull request #${z.data.number} for these updates is already open.`};let H=await (0,f.e)(A.token,R.fullName,P);if(!H.ok)return v({done:!1,failed:H,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);if(H.data.length){let e=new Map((await (0,a.f)().select({number:n.dependencyPrs.number,packages:n.dependencyPrs.packages}).from(n.dependencyPrs).where((0,t.b)((0,t.u)(n.dependencyPrs.repoId,c),(0,t.y)(n.dependencyPrs.number,H.data.map(e=>e.number))))).map(e=>[e.number,e.packages])),i=(0,o.U)(C.map(e=>e.package),H.data.map(t=>({number:t.number,branch:t.branch,title:t.title,packages:e.get(t.number)??null})));if(i)return v(k(`Pull request #${i.number} for the same package is already open in ${R.app}. Merge or close it first.`),r,A.id)}let B=await (0,f.M)(A.token,R.fullName,K,P);if(B.ok&&B.data)return v(k(`Branch ${K} already exists without an open pull request. Delete it on GitHub, then ask again.`),r,A.id);let L=l.a.find(e=>e.path===R.lockfilePath)?.kind??null,V=e=>v({done:!1,failed:e,audit:{message:`Package update PR failed \xb7 ${R.app} \xb7 ${K}`,resourceId:i}},r,A.id),G=await (0,f.k)(A.token,R.fullName,K,N.data,D,P);if(!G.ok)return V(G);let W=await (0,f.D)(A.token,R.fullName,K,D,M,E.data.sha,(0,s.G)(C),P);if(!W.ok)return V(W);let U=await (0,f.y)(A.token,R.fullName,K,D,(0,s.f)(C),(0,s.y)(C,L,!!j),P);if(!U.ok)return V(U);let q=C.map(e=>`${e.package} ${e.from} → ${e.to}`).join(", "),F=await (0,f.M)(A.token,R.fullName,K,P).catch(()=>null);if(F?.ok&&F.data){await (0,a.f)().insert(n.dependencyPrs).values({repoId:c,appId:i,proposalId:T??null,number:U.data.number,branch:K,baseBranch:D,headSha:F.data,title:(0,s.f)(C).slice(0,200),packages:C.map(e=>e.package),auto:!!j,stage:"checks",stageText:(0,u.m)(U.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:t}=await e.A(774810);await t.runner?.queueLockfileJob({repoId:c,branch:K,headSha:F.data,prNumber:U.data.number,lockfilePath:R.lockfilePath??null,targets:C.map(e=>({name:e.package,version:e.fixed}))}).catch(()=>console.warn("deps: queueing the lockfile job failed")),await (0,h.U)(A.token,{repo:R.fullName,branch:K,lockfilePath:R.lockfilePath??null,prNumber:U.data.number})}return v({done:!0,message:`Pull request #${U.data.number} opened for ${R.app}: ${q}. Run npm install on the branch before merging.`,audit:{message:`Package update PR opened \xb7 ${R.app} \xb7 #${U.data.number}`,resourceId:i,detail:q}},r,A.id)}async function v(e,r){if(!(0,p.f)(e))return{ok:!1,why:"target"};let i=await y();if(!i||"unreadable"===i)return{ok:!1,why:"no write token"};let s=await (0,a.f)().select({package:n.dependencyVulns.package,installedVersion:n.dependencyVulns.installedVersion,fixedVersion:n.dependencyVulns.fixedVersion,vulnId:n.dependencyVulns.vulnId,aliases:n.dependencyVulns.aliases,severity:n.dependencyVulns.severity,direct:n.dependencyVulns.direct}).from(n.dependencyVulns).where((0,t.b)((0,t.u)(n.dependencyVulns.repoId,e),(0,t.M)(n.dependencyVulns.resolvedAt))).limit(2e3),l=(0,o.a)((0,d.B)(s),(0,o.D)(s),r);return l.ok?{ok:!0}:{ok:!1,why:l.why}}e.s(["J",0,v,"W",0,b,"G",0,y])},983128,860320,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(921991),i=e.i(547499),o=e.i(666680),s=e.i(140561),l=e.i(206033),u=e.i(105954),d=e.i(971724),c=e.i(180473),p=e.i(76012);let f={inline_keyboard:[]},m=0,g=e=>(0,o.createHash)("sha256").update(`watchpost:telegram-link:${e.trim().toUpperCase()}`,"utf8").digest("hex"),h=s.z.union([l.z.number().int(),u.z.string().regex(/^-?\d{1,20}$/)]).transform(e=>String(e)),k=d.z.object({id:h,type:u.z.string().max(32).optional(),title:u.z.string().max(256).optional(),first_name:u.z.string().max(256).optional(),username:u.z.string().max(64).optional()}),y=d.z.object({id:h,is_bot:c.z.boolean().optional()}),w=d.z.object({message_id:l.z.number().int(),chat:k,from:y.optional(),text:u.z.string().max(4096).optional()}),b=d.z.object({update_id:l.z.number().int(),message:w.optional(),callback_query:d.z.object({id:u.z.string().min(1).max(128),from:y,message:w.optional(),data:u.z.string().max(64).optional()}).optional()});e.s(["i",0,8,"y",0,function(e,t={}){let r=t.fetch??fetch,a=async(t,a)=>{let n=await (0,p.z)(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)},r);n.ok||/not modified/i.test(n.description)||console.warn(`telegram ${t} failed (${n.code??"network"})`)};return{answer:(e,t)=>a("answerCallbackQuery",{callback_query_id:e,text:t.slice(0,200)}),editText:(e,t,r,n)=>a("editMessageText",{chat_id:e,message_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},reply_markup:n??f}),editKeyboard:(e,t,r)=>a("editMessageReplyMarkup",{chat_id:e,message_id:t,reply_markup:r}),send:(e,t)=>a("sendMessage",{chat_id:e,text:t,parse_mode:"HTML",link_preview_options:{is_disabled:!0}})}},"v",0,e=>`${(e.title??e.first_name??e.username??"Chat").slice(0,50)} (${e.type??"chat"})`,"F",0,g,"z",0,()=>{m++},"j",0,function(e){let t=/^\/link(?:@[A-Za-z0-9_]{3,64})?\s+([A-Za-z0-9]{4,16})\s*$/.exec(e??"");return t?t[1].toUpperCase():null},"c",0,function(e){let t=b.safeParse(e);return t.success?t.data:null},"p",0,function(e,t){if("string"!=typeof e||"string"!=typeof t||!e||!t)return!1;let r=(0,o.createHash)("sha256").update(e,"utf8").digest(),a=(0,o.createHash)("sha256").update(t,"utf8").digest();return(0,o.timingSafeEqual)(r,a)}],860320);let v="telegram.owner",I="telegram.linkCode",$="telegram.seenChats",A=()=>(0,i.f)().OPS_ENCRYPTION_KEY;async function R(e){let[n]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,e)).limit(1);return n?.value??null}async function x(e,t){await (0,r.f)().insert(a.settings).values({key:e,value:t}).onConflictDoUpdate({target:a.settings.key,set:{value:t,updatedAt:new Date}})}async function _(e){await (0,r.f)().delete(a.settings).where((0,t.u)(a.settings.key,e))}function j(e){let t=e?.sealed;if(!t||"string"!=typeof t.ciphertext||"string"!=typeof t.iv)return null;try{return(0,n.K)(t,A())}catch{return null}}let T=(e,t)=>({sealed:(0,n.l)(e,A()),at:t.toISOString()}),O=null;async function P(e=Date.now()){if(O&&O.until>e)return O.secret;let t=j(await R("telegram.webhook"));return O={secret:t,until:e+3e4},t}let S=async()=>await P()!==null;async function D(){let e,n=j(await R(v));if(!n)return null;try{e=JSON.parse(n)}catch{return null}if("string"!=typeof e.tg||"string"!=typeof e.member)return null;let[i]=await (0,r.f)().select({id:a.members.id,userId:a.members.userId}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,e.member),(0,t.u)(a.members.role,"owner"))).limit(1);return i?{telegramUserId:e.tg,memberId:i.id,userId:i.userId}:null}let N=async()=>await D()!==null;async function E(e,n,i){let o=await R(I);if(!o||"string"!=typeof o.hash||"string"!=typeof o.member||"string"!=typeof o.expiresAt)return"expired";if(Date.parse(o.expiresAt)<=i.getTime())return await _(I),"expired";let s="number"==typeof o.tries?o.tries:0;if(!function(e,t){if(e.length!==t.length||!e)return!1;let r=0;for(let a=0;a<e.length;a++)r|=e.charCodeAt(a)^t.charCodeAt(a);return 0===r}(8===e.length?g(e):"",o.hash))return s+1>=5?await _(I):await x(I,{...o,tries:s+1}),"wrong";let[l]=await (0,r.f)().select({id:a.members.id}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,o.member),(0,t.u)(a.members.role,"owner"))).limit(1);return(await _(I),l)?(await x(v,T(JSON.stringify({tg:n,member:l.id}),i)),"linked"):"expired"}async function C(){let e=j(await R($));if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>!!e&&"string"==typeof e.id&&"string"==typeof e.label&&"string"==typeof e.at).slice(0,10):[]}catch{return[]}}async function M(e,t){var r;let a,n=(r=await C(),(a=r.find(t=>t.id===e.id))&&a.label===e.label&&t.getTime()-Date.parse(a.at)<36e5&&r[0]?.id===e.id?null:[{id:e.id,label:e.label,at:t.toISOString()},...r.filter(t=>t.id!==e.id)].slice(0,10));n&&await x($,T(JSON.stringify(n),t))}e.s(["E",0,D,"I",0,N,"P",0,M,"f",0,E,"v",0,S,"g",0,P],983128)},620511,e=>{let t=/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/,r=/^watchpost\/deps-[0-9a-f]{8}$/,a=/^(?:[A-Za-z0-9._-]+\/){0,4}package-lock\.json$/,n=e=>"string"==typeof e&&t.test(e)&&!e.includes("..");e.s(["h",0,"deps.lockfileActions","w",0,6e5,"C",0,function(e){let t=e.lockfilePath??"package-lock.json";return!n(e.repo)||!r.test(e.branch)||!a.test(t)||t.includes("..")||!Number.isInteger(e.prNumber)||e.prNumber<1?null:{repo:e.repo,branch:e.branch,lockfile:t,pr:e.prNumber}},"g",0,function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e.repo:null;return{repo:n(t)?t:null}}])},975912,e=>{var t=e.i(250474),r=e.i(32391),a=e.i(313931);let n=["dependencies","devDependencies","optionalDependencies"],i="watchpost/deps-",o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};e.s(["M",0,function(e,t){let r;try{r=JSON.parse(e)}catch{return null}if(!o(r))return null;for(let e of t){let t=r[e.group];if(!o(t)||t[e.package]!==e.from)return null;t[e.package]=e.to}let a=/^[{[]\r?\n([ \t]+)\S/.exec(e),n=a?a[1]:" ",i=e.includes("\r\n")?"\r\n":"\n",s=JSON.stringify(r,null,n);return"\r\n"===i&&(s=s.replace(/\n/g,"\r\n")),/\r?\n$/.test(e)?s+i:s},"U",0,function(e){let t=e.map(e=>`${e.package}@${e.to}`).sort().join(",");return`${i}${function(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193)>>>0;return t.toString(16).padStart(8,"0")}(t)}`},"G",0,function(e){return 1===e.length?`chore(deps): update ${e[0].package} to ${e[0].fixed} (security fix)`:`chore(deps): update ${e.length} packages for security fixes`},"c",0,(e,t)=>e.startsWith(i)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(e)&&e!==t,"k",0,function(e,a){let i;try{i=JSON.parse(e)}catch{return null}if(!o(i))return null;let s=[];for(let e of a)if((0,r.L)(e.package)&&(0,r.C)(e.to))for(let a of n){let n=i[a];if(!o(n)||"string"!=typeof n[e.package])continue;let l=n[e.package],u=(0,r.Y)(l),d=function(e,t){let a=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(e);return a&&(0,r.C)(t)?`${a[1]??""}${t}`:null}(l,e.to);!u||!d||(0,t.f)(u,e.to)>=0||s.push({package:e.package,group:a,from:l,to:d,fixed:e.to,vulnIds:e.vulnIds,cves:e.cves})}return s},"y",0,function(e,t,r=!1){let n=s[t??"npm"]??"npm install",i=e.map(e=>{let t=[...e.cves,...e.vulnIds.filter(t=>!e.cves.includes(t))].slice(0,4).map(e=>`[${e}](https://osv.dev/vulnerability/${encodeURIComponent(e)})`).join(", ");return`| \`${e.package}\` | \`${e.from}\` | \`${e.to}\` | ${t||"-"} |`});return[r?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":a.J.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...i,"","### Important: the lockfile is not updated","",r?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards run \`${n}\` on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, run \`${n}\`, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(e){let t=1===e.length?`Watchbell: update ${e[0].package} to ${e[0].fixed} (security fix)`:`Watchbell: update ${e.length} vulnerable packages (${e.slice(0,2).map(e=>e.package).join(", ")}${e.length>2?", …":""})`;return t.length>200?`${t.slice(0,199)}…`:t}])},256662,e=>{let t={checks:"waiting for CI",preview:"waiting for preview",smoke:"smoke test",merging:"merging…",merged:"merged ✅","ready-manual":"ready to merge (manual)",failed:"needs a look ⚠️",timeout:"needs a look ⚠️",closed:"closed"},r=new Set(["success","neutral","skipped"]),a=e=>"completed"!==e.status?"pending":r.has(e.conclusion??"")?"success":"failure";e.s(["X",0,["checks","preview","smoke","merging"],"w",0,15e3,"j",0,function(e){let t=(e.checkRuns??e.actionRuns??[]).map(a);return(e.combined&&e.combined.total>0&&t.push("success"===e.combined.state?"success":"pending"===e.combined.state?"pending":"failure"),t.includes("failure"))?"failure":t.includes("pending")?"pending":"success"},"L",0,function(e){if(!e.length||e.some(e=>e.authWall))return null;let t=e.find(e=>null===e.status||e.status<200||e.status>399);return t?{mode:"http",result:"fail",reason:null===t.status?`${t.path} didn't answer within 15 seconds`:`${t.path} answered ${t.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(e,t,r){return(401===e||403===e)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(t)||/_vercel_sso/i.test(r.get("set-cookie")??"")||"vercel"===(r.get("server")??"").toLowerCase())},"n",0,function(e,t,r){return null!==r&&r>0?{mode:"logs",result:"fail",reason:`${r} errors in the preview logs`}:t.getTime()-e.getTime()<18e4||null===r?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"E",0,function(e){let t=["/"];for(let r of e){let e;try{e=new URL(r).pathname||"/"}catch{continue}!t.includes(e)&&t.length<4&&t.push(e)}return t},"m",0,(e,r,a)=>{let n=`PR #${e}: ${t[r]}${a?` — ${a}`:""}`;return n.length>200?`${n.slice(0,199)}…`:n},"f",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<1e5))&&(Math.floor(r/6e4)%2==0||null!==t&&r-t>=24e4)},"M",0,function(e){if(e.pr.merged)return{kind:"done",stage:"merged"};if("closed"===e.pr.state)return{kind:"done",stage:"closed"};if(e.pr.headSha!==e.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:e.pr.headSha};let t=e.now.getTime()-e.openedAt.getTime()>27e5;return"failure"===e.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===e.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===e.preview.state||"canceled"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"pending"===e.checks||null===e.pr.mergeable?t?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==e.preview.state?t?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:e.smoke&&"wait"!==e.smoke.result?"fail"===e.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${e.smoke.reason??"?"}`}:e.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:t?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}])},267841,e=>{var t=e.i(971724),r=e.i(105954),a=e.i(180473),n=e.i(600205),i=e.i(206033),o=e.i(455744),s=e.i(604147),l=e.i(975912),u=e.i(455037);async function d(e,t,r,a,n){let i,o=n.timeoutMs??8e3;try{i=await (n.fetch??fetch)(`https://api.github.com${t}`,{method:e,headers:{Authorization:`Bearer ${r}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==a?{"Content-Type":"application/json"}:{}},body:void 0!==a?JSON.stringify(a):void 0,signal:AbortSignal.timeout(o),cache:"no-store",redirect:"error"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(o/1e3)} seconds.`:"Couldn't reach GitHub."}}let s=await i.text().catch(()=>""),l=null;try{l=s?JSON.parse(s):null}catch{l=null}if(i.ok)return{ok:!0,status:i.status,data:l};let u=i.status;return 401===u?{ok:!1,kind:"auth",status:u,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===u||403===u&&"0"===i.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:u,error:"GitHub's rate limit is used up for now. Try again later."}:403===u?{ok:!1,kind:"scope",status:u,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===u?{ok:!1,kind:"missing",status:u,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===u||422===u?{ok:!1,kind:"format",status:u,error:`GitHub refused the change (${u}).`}:{ok:!1,kind:"transient",status:u,error:`GitHub returned an error (${u}).`}}let c=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`}),p={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function f(e,n,i={}){if(!(0,u.M)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(n)}`,e,void 0,i);if(!o.ok)return o;let s=t.z.object({default_branch:r.z.string(),permissions:t.z.object({push:a.z.boolean()}).partial().optional()}).safeParse(o.data);return s.success&&(0,u.c)(s.data.default_branch)?{ok:!0,data:{defaultBranch:s.data.default_branch,canPush:s.data.permissions?.push??null}}:c("the repository")}async function m(e,a,n,i={}){if(!(0,u.M)(a)||!(0,u.c)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(a)}/git/ref/heads/${n.split("/").map(encodeURIComponent).join("/")}`,e,void 0,i);if(!o.ok)return"missing"===o.kind?{ok:!0,data:null}:o;let s=t.z.object({object:t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(o.data);return s.success?{ok:!0,data:s.data.object.sha}:c("the branch")}async function g(e,a,i,o={}){if(!(0,u.M)(a)||!(0,u.c)(i))return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/contents/package.json?ref=${encodeURIComponent(i)}`,e,void 0,o);if(!s.ok)return"missing"===s.kind?{ok:!0,data:null}:s;let l=t.z.object({sha:r.z.string(),encoding:n.z.literal("base64"),content:r.z.string()}).safeParse(s.data);return l.success?{ok:!0,data:{sha:l.data.sha,text:Buffer.from(l.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:c("package.json")}async function h(e,t,r,a,n,i={}){if(!(0,u.M)(t)||!(0,l.c)(r,n)||!/^[0-9a-f]{40}$/.test(a))return p;let o=await d("POST",`/repos/${(0,u.f)(t)}/git/refs`,e,{ref:`refs/heads/${r}`,sha:a},i);return o.ok?{ok:!0,data:!0}:o}async function k(e,t,r,a,n,i,o,s={}){if(!(0,u.M)(t)||!(0,l.c)(r,a))return p;let c=await d("PUT",`/repos/${(0,u.f)(t)}/contents/package.json`,e,{message:o,content:Buffer.from(n,"utf8").toString("base64"),sha:i,branch:r},s);return c.ok?{ok:!0,data:!0}:c}let y=t.z.object({number:i.z.number(),html_url:r.z.string().startsWith("https://github.com/")});async function w(e,t,r,a,n,i={}){if(!(0,u.M)(t)||!(0,l.c)(a,n))return p;let s=new URLSearchParams({state:"open",head:`${r}:${a}`,per_page:"1"}),f=await d("GET",`/repos/${(0,u.f)(t)}/pulls?${s}`,e,void 0,i);if(!f.ok)return f;let m=o.z.array(y).safeParse(f.data);if(!m.success)return c("the pull requests");let g=m.data[0];return{ok:!0,data:g?{number:g.number,url:g.html_url}:null}}async function b(e,t,r,a,n,i,o={}){if(!(0,u.M)(t)||!(0,l.c)(r,a)||!(0,u.c)(a))return p;let s=await d("POST",`/repos/${(0,u.f)(t)}/pulls`,e,{title:n,head:r,base:a,body:i,maintainer_can_modify:!0},o);if(!s.ok)return s;let f=y.safeParse(s.data);return f.success?{ok:!0,data:{number:f.data.number,url:f.data.html_url}}:c("the new pull request")}let v=o.z.array(t.z.object({number:i.z.number(),title:r.z.string(),head:t.z.object({ref:r.z.string(),sha:r.z.string(),repo:t.z.object({full_name:r.z.string()}).nullable()}),base:t.z.object({ref:r.z.string()})}));async function I(e,t,r={}){if(!(0,u.M)(t))return p;let a=await d("GET",`/repos/${(0,u.f)(t)}/pulls?state=open&per_page=100`,e,void 0,r);if(!a.ok)return a;let n=v.safeParse(a.data);return n.success?{ok:!0,data:n.data.filter(e=>/^watchpost\/deps-[0-9a-f]{8}$/.test(e.head.ref)&&e.head.repo?.full_name===t).map(e=>({number:e.number,branch:e.head.ref,title:e.title,headSha:e.head.sha,base:e.base.ref}))}:c("the pull requests")}async function $(e,n,i,o={}){if(!(0,u.M)(n)||!Number.isInteger(i)||i<=0)return p;let l=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${i}`,e,void 0,o);if(!l.ok)return l;let f=t.z.object({state:s.z.enum(["open","closed"]),merged:a.z.boolean().optional(),mergeable:a.z.boolean().nullable().optional(),head:t.z.object({ref:r.z.string(),sha:r.z.string().regex(/^[0-9a-f]{40}$/)}),base:t.z.object({ref:r.z.string()})}).safeParse(l.data);return f.success?{ok:!0,data:{state:f.data.state,merged:!0===f.data.merged,mergeable:f.data.mergeable??null,headSha:f.data.head.sha,branch:f.data.head.ref,base:f.data.base.ref}}:c("the pull request")}async function A(e,a,n,s={}){if(!(0,u.M)(a)||!/^[0-9a-f]{40}$/.test(n))return p;let[l,c]=await Promise.all([d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/check-runs?per_page=100`,e,void 0,s),d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/status`,e,void 0,s)]),f=e=>!e.ok&&("scope"===e.kind||"missing"===e.kind);if(!l.ok&&!f(l))return l;if(!c.ok&&!f(c))return c;let m=l.ok?t.z.object({check_runs:o.z.array(t.z.object({status:r.z.string(),conclusion:r.z.string().nullable()}))}).safeParse(l.data):null,g=c.ok?t.z.object({state:r.z.string(),total_count:i.z.number()}).safeParse(c.data):null;return{ok:!0,data:{checkRuns:m?.success?m.data.check_runs.map(e=>({status:e.status,conclusion:e.conclusion})):null,combined:g?.success?{state:g.data.state,total:g.data.total_count}:null}}}async function R(e,n,i,o,s,f,m,g={}){if(!(0,u.M)(n)||!(0,l.c)(o,s)||!/^[0-9a-f]{40}$/.test(f)||!Number.isInteger(i)||i<=0)return p;let h=await d("PUT",`/repos/${(0,u.f)(n)}/pulls/${i}/merge`,e,{merge_method:"squash",sha:f,commit_title:`Watchbell: ${m.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},g);if(!h.ok)return 405===h.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===h.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:h;let k=t.z.object({merged:a.z.boolean(),sha:r.z.string()}).safeParse(h.data);return k.success&&k.data.merged?{ok:!0,data:{sha:k.data.sha}}:c("the merge")}async function x(e,t,r,a={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(t))return p;let n=await d("POST",`/repos/${t}/dispatches`,e,{event_type:"watchpost-lockfile",client_payload:r},a);return n.ok?{ok:!0,data:!0}:n}e.s(["M",0,m,"s",0,A,"k",0,h,"y",0,b,"B",0,x,"E",0,g,"C",0,R,"x",0,w,"e",0,I,"b",0,$,"D",0,k,"H",0,f])},154586,e=>{var t=e.i(278619),r=e.i(313931);let a={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},n={MonitorDown:"workloads",HighLatency:"workloads",DeploymentFailed:"workloads",DatabasePaused:"databases",StorageAlmostFull:"databases",NeonComputeHigh:"databases",FirestoreQuotaHigh:"databases",AutoPauseRisk:"databases",ComputeHigh:"databases",DbQuotaHigh:"databases",CertExpiringSoon:"network",DomainExpiringSoon:"network",DnsProxiedToVercel:"network",CollectorStale:"observe",CredentialExpiring:"admin",VulnerableDependency:"workloads"},i=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency"]);e.s(["p",0,function(e){if((0,t.h)(e.ruleKey))return i.has(e.ruleKey)&&null!==e.resourceKind&&"app"!==e.resourceKind?"observe":n[e.ruleKey];let r=new Set(e.ruleKey.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),a=(...e)=>e.some(e=>r.has(e));return a("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":a("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":a("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":a("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===e.resourceKind?"workloads":"observe"},"y",0,e=>r.X.proposedBy(a[e])])},549419,143926,e=>{var t=e.i(635982),r=e.i(377489),a=e.i(154586),n=e.i(365156);let i=["LogErrorSpike","LogErrors","LogDbErrors"],o="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(o,"i");let s=/^dpl_[A-Za-z0-9]{8,40}$/,l=/^ep-[a-z0-9-]{3,60}$/,u=/^[a-z0-9]{8,40}$/;function d(e,a,n){let i=a?(0,t.f)(a,n,120):"";return(0,r.l)((0,t.f)(i?`${e}. Most common: ${i}`:e,n,r.j)||e,r.j)}let c=e=>`${e.ruleKey}:${e.resourceId??""}:${e.action}`,p=new Set(["pending","approved","running"]);e.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,o,"G",0,20,"T",0,i,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(e,t,r){let a=new Set(t.filter(e=>p.has(e.status)||null!==e.closedAt&&r.getTime()-e.closedAt.getTime()<72e5).map(c)),n=new Set;return e.filter(e=>{let t=c(e);return!(a.has(t)||n.has(t))&&(n.add(t),!0)})},"t",0,function(e,t,i){return(function(e,t,r){let a=[],n=r.getTime();if(null!==e.liveAt&&n-e.liveAt.getTime()<72e5&&e.liveAt.getTime()<=n&&e.errorsSinceLive>=Math.max(10,Math.ceil(5*e.baselineErrors/24))&&e.currentId&&e.previousId&&s.test(e.previousId)&&e.previousId!==e.currentId){let r=`${e.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((n-e.liveAt.getTime())/6e4))} min ago (${e.baselineErrors} in the 24 h before)`;a.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:e.appId,targetRef:e.previousId,reason:d(r,e.topSinceLive,t)})}let i=null!==e.lastDeployAt&&n-e.lastDeployAt.getTime()<72e5;if(e.errors30>=20&&!i&&e.httpMonitorId&&a.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:e.appId,targetRef:e.httpMonitorId,reason:d(`${e.errors30} errors in the last 30 min`,e.top30,t)}),e.dbErrors30>=3&&e.db){let r=d(`${e.dbErrors30} database connection errors in the last 30 min`,e.topDb,t),n=e.db;("neon_project"===n.kind||"neon_branch"===n.kind)&&n.wakeEndpoint&&l.test(n.wakeEndpoint)?a.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.wakeEndpoint,reason:r}):"supabase_project"===n.kind&&n.supabasePaused&&n.supabaseRef&&u.test(n.supabaseRef)&&a.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.supabaseRef,reason:r})}return a})(e,t,i).map(o=>{let s="app"===o.resourceKind?(0,r.J)("app",e.appId,e.appName,t):(0,r.J)(o.resourceKind,o.resourceId,null,t);return{alertId:null,ruleKey:o.ruleKey,room:o.room,action:o.action,risk:n.H[o.action].risk,title:(0,r.M)(o.action,s),reason:o.reason,resourceKind:o.resourceKind,resourceId:o.resourceId,resourceName:s,targetRef:o.targetRef,proposedBy:(0,a.y)(o.room),expiresAt:new Date(i.getTime()+n.V)}})},"D",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<27e4))&&(Math.floor(r/6e4)%5==0||null!==t&&r-t>=6e5)},"W",0,function(e,t){let r=new Set(t.map(c));return e.filter(e=>{let t;return"pending"===e.status&&(t=e.ruleKey,i.includes(t))&&!r.has(c(e))}).map(e=>e.id)}],549419);let f=new Set(["MonitorDown","LogErrorSpike"]);e.s(["r",0,72e5,"M",0,f,"s",0,function(e,t){let r=e=>({ok:!1,why:e});if(!e.setting.enabled)return r("off");if(!e.ruleKey||!f.has(e.ruleKey))return r("rule");let a=e.deploy;if(!a||!a.liveAt)return r("no live deploy");let n=t.getTime()-a.liveAt.getTime();return n<0||n>6e4*e.setting.windowMin?r("outside the window"):a.previousId&&e.targetRef===a.previousId&&a.previousId!==a.currentId?a.newestProdCreatedAt&&a.currentCreatedAt.getTime()<a.newestProdCreatedAt.getTime()?r("live deploy is a rollback"):e.rolledOrPromotedLately?r("live deploy came from a rollback or promote"):"ready"!==(a.previousState??"").toLowerCase()?r("previous not ready"):!a.previousCreatedAt||t.getTime()-a.previousCreatedAt.getTime()>2592e6?r("previous too old"):e.autoLately?r("auto-rollback within 2 h"):e.sameDeployBefore?r("already rolled back once"):e.inFlight?r("another auto-rollback is running"):{ok:!0}:r("target changed")},"u",0,(e,t,a)=>(0,r.l)(`Automatic: the new deploy ${e} errored in the first ${t} minutes. ${a}`),"E",0,e=>e.currentSha&&/^[0-9a-f]{7,40}$/i.test(e.currentSha)?e.currentSha.slice(0,7):e.currentId.slice(0,16)],143926)},447933,e=>{let t;var r,a=e.i(875225),n=e.i(518899),i=e.i(924924),o=e.i(313931),s=e.i(618916),l=e.i(209576),u=e.i(532148),d=e.i(433609),c=e.i(125160),p=e.i(984125),f=e.i(326003),m=e.i(298397),g=e.i(291029),h=e.i(377489),k=e.i(549419),y=e.i(143926),w=e.i(442565),b=e.i(349129),v=e.i(895625),I=e.i(547499),$=e.i(407602),A=e.i(582931),R=e.i(629955),x=e.i(309055),_=e.i(145647),j=e.i(479301);async function T(e){if(!(0,j.f)(e))return null;let[t]=await (0,i.f)().select({id:s.resources.id,kind:s.resources.kind,externalId:s.resources.externalId,parentId:s.resources.parentId}).from(s.resources).where((0,a.b)((0,a.u)(s.resources.id,e),(0,a.y)(s.resources.kind,["neon_project","neon_branch"]),(0,a.M)(s.resources.goneAt))).limit(1);if(!t)return null;let r="neon_branch"===t.kind?t.parentId:t.id;if(!r)return null;let[n]=await (0,i.f)().select({data:s.snapshots.data}).from(s.snapshots).where((0,a.u)(s.snapshots.resourceId,r)).limit(1),o=(0,f.k)(f.s,n?.data);return{projectResourceId:r,branchExternalId:"neon_branch"===t.kind?t.externalId:null,computeSeconds:o.computeSeconds??null,periodEnd:o.periodEnd??null}}var O=e.i(472832),P=e.i(800366),S=e.i(628448),D=e.i(443917);let N=`This project used its ${P.a.cuHours} CU-hours; the compute won't start until the quota resets.`;async function E(e,t,r){var a;if(a=new Date,!((t.computeSeconds??0)<3600*P.a.cuHours)&&(!t.periodEnd||new Date(t.periodEnd).getTime()>a.getTime()))return{done:!1,message:N};let n=e.resource.externalId,i=await (0,D.c)(e.token,n,r);if(!i.ok)return{done:!1,message:"missing"===i.kind?S.G:i.error};if(i.data.id!==r||t.branchExternalId&&i.data.branchId!==t.branchExternalId)return{done:!1,message:S.G};if(i.data.disabled)return{done:!1,message:"Neon has disabled this compute, so it can't be started from here."};if("active"===i.data.state)return{done:!1,message:"Already running."};if("init"===i.data.state||"active"===i.data.pendingState)return{done:!1,message:"Already starting."};let o=await (0,D.d)(e.token,n,r);if(o.ok)return{done:!0,message:`Waking ${r}. Ready in a few seconds.`,audit:{message:`Wake requested \xb7 ${r}`,resourceId:e.resource.id}};let s="scope"===o.kind?(0,S.b)("neon",{project:e.resource.name}):"missing"===o.kind?S.G:o.error;return{done:!1,failed:{ok:!1,kind:o.kind,error:s,...o.status?{status:o.status}:{}},audit:{message:`Wake failed \xb7 ${r}`,resourceId:e.resource.id}}}async function C(e,t){let r=t.resource.name;if(e.ok||r.trim().length<2||!e.error.includes(r))return e;let a=await (0,l.f)().catch(()=>null);return{...e,error:a?(0,m.J)(e.error,a,t.resource.id):e.error.split(r).join("db-?")}}async function M(e,t,r,a=O.W){let n=await (0,O.q)(e.id,"wake",r);if(n)return{ok:!1,error:n};let i=await T(t),o=i?await (0,O.p)(i.projectResourceId,"neon_project"):null;return i&&o?C(await a(await E(o,i,r),e,o.account.id),o):{ok:!1,error:S.G}}var K=e.i(11827),z=e.i(843448),H=e.i(342833);let B=e=>`Supabase is busy with this project (${(0,z.P)(e).label.toLowerCase()}). Try again in a few minutes.`,L=(e,t,r)=>({done:!1,failed:{ok:!1,kind:e.kind,error:"scope"===e.kind?(0,S.b)("supabase",{}):e.error,...e.status?{status:e.status}:{}},audit:{message:t,resourceId:r}});async function V(e,t,r,a,n=O.W){let i,o=await (0,O.q)(t.id,e,r);if(o)return{ok:!1,error:o};let s=await (0,O.p)(r,"supabase_project");if(!s)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};if(s.resource.externalId!==a)return{ok:!1,error:S.G};let l=s.resource.externalId,u=s.resource.name,d=await (0,H.e)(s.token,l);if(!d.ok)return n({done:!1,message:"scope"===d.kind||"auth"===d.kind?d.error:`Couldn't read this project's status at Supabase: ${d.error}`},t,s.account.id);let c=d.data.status;if("pause"===e){if("INACTIVE"===c||"PAUSING"===c||"GOING_DOWN"===c)return n({done:!1,message:"Already paused."},t,s.account.id);if(!c.startsWith("ACTIVE_"))return n({done:!1,message:B(c)},t,s.account.id);let e=await (0,H.c)(s.token,l);i=e.ok?{done:!0,message:`Pausing ${u}. It takes about 2 minutes.`,audit:{message:`${K.B}${u}`,resourceId:r}}:"transient"===e.kind&&void 0===e.status?{done:!1,failed:{ok:!1,kind:"transient",error:`${e.error} The pause may still have happened; check the project in a few minutes before restoring it.`},audit:{message:`${K.B}${u}`,resourceId:r}}:L(e,`Pause failed \xb7 ${u}`,r)}else{if(c.startsWith("ACTIVE_")||"RESTORING"===c||"COMING_UP"===c)return n({done:!1,message:"Already active or restoring."},t,s.account.id);if("INACTIVE"!==c)return n({done:!1,message:B(c)},t,s.account.id);let e=await (0,H.W)(s.token);if(!e.ok)return n({done:!1,message:`Couldn't count this account's free slots just now: ${e.error}`},t,s.account.id);let a=await (0,R.m)(s.account.id);if(0>=(0,R.G)(e.data,a,d.data.orgSlug))return n({done:!1,message:"This account already uses both free slots. Pause one of its active projects first; Restore stays blocked until it shows Paused."},t,s.account.id);let o=await (0,H.G)(s.token,l);i=o.ok?{done:!0,message:`Restoring ${u}. It takes about 2 minutes.`,audit:{message:`Restore requested \xb7 ${u}`,resourceId:r}}:L(o,`Restore failed \xb7 ${u}`,r)}return n(i,t,s.account.id)}var G=e.i(177706);function W(e,t,r){if("building"===e.state)return"building";if(null!==t&&e.id===t)return"current";if("error"===e.state)return"failed";if("preview"===e.target)return"ready"===e.state?"preview":"other";if("ready"!==e.state||null===t)return"other";let a=r.find(e=>e.id===t);if(!a)return"other";if(e.createdAt.getTime()>a.createdAt.getTime())return"staged";let n=r.filter(e=>"ready"===e.state&&e.id!==t&&e.createdAt.getTime()<a.createdAt.getTime()).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0];return n?.id===e.id?"previous":"other"}let U=e=>({done:!1,message:e}),q=(e,t)=>e?.sha?e.sha.slice(0,7):t;async function F(e,t,r){let a=await (0,O.q)(e.id,t,r);if(a)return a;let n=await (0,O.p)(r,"app"),i=n?.resource.meta.teamId;if(!n||"string"!=typeof i||!i||!n.resource.externalId)return"This app or its Vercel credential isn't available any more. Reload the page.";let o=n.resource.meta.teamSlug;return{member:e,t:n,appId:r,app:n.resource.name,teamId:i,teamSlug:"string"==typeof o?o:"",projectId:n.resource.externalId}}async function J(e){let[t,r]=await Promise.all([(0,G.c)(e.t.token,e.teamId,e.projectId),(0,G.r)(e.t.token,e.teamId,e.projectId)]);return t.ok?r.ok?{ok:!0,data:{name:t.data.name,currentId:t.data.currentId??r.data[0]?.id??null,production:r.data}}:r:t}async function X(e,t,r,a,n=O.W){return n(t.ok?{done:!0,message:r.message,audit:{message:r.audit,resourceId:e.appId}}:{done:!1,failed:"scope"===t.kind?{ok:!1,kind:"scope",status:t.status,error:(0,S.b)("vercel",{team:e.teamSlug})}:404===t.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===t.kind?"auth":"format"===t.kind?"format":"transient",...t.status?{status:t.status}:{},error:t.error},audit:{message:a,resourceId:e.appId}},e.member,e.t.account.id)}async function Z(e,t,r,a=O.W){{let n=await F(e,"redeploy",t);if("string"==typeof n)return a(U(n),e,"");let i=await J(n);if(!i.ok)return a(U(i.error),e,n.t.account.id);if(i.data.currentId!==r)return a(U(S.G),e,n.t.account.id);if(i.data.production.some(e=>"staged"===W(e,i.data.currentId,i.data.production)))return a(U("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),e,n.t.account.id);let o=await (0,G.N)(n.t.token,n.teamId,n.projectId);if(!o.ok)return a(U(o.error),e,n.t.account.id);if(o.data)return a(U(`A production build of ${n.app} is already running.`),e,n.t.account.id);let s=q(i.data.production.find(e=>e.id===r),r),l=await (0,G.L)(n.t.token,n.teamId,{projectId:n.projectId,name:i.data.name,deploymentId:r});return X(n,l,{message:`Redeploy requested. Vercel is building ${n.app} again.`,audit:`Redeploy requested \xb7 ${n.app} \xb7 ${s}`},`Redeploy failed \xb7 ${n.app} \xb7 ${s}`,a)}}async function Y(e,t,r,a=O.W){{let n=await F(e,"rollback",t);if("string"==typeof n)return a(U(n),e,"");let i=await J(n);if(!i.ok)return a(U(i.error),e,n.t.account.id);if(i.data.currentId===r)return a(U("Already live."),e,n.t.account.id);let o=i.data.production.find(e=>e.id===r);if(!o||"previous"!==W(o,i.data.currentId,i.data.production))return a(U("Hobby can only roll back to the previous production deployment."),e,n.t.account.id);let s=q(o,r),l=await (0,G.E)(n.t.token,n.teamId,n.projectId,r);return X(n,l,{message:`Rolled back ${n.app} to ${s}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${n.app} → ${s}`},`Roll back failed \xb7 ${n.app} → ${s}`,a)}}var Q=e.i(189104),ee=e.i(593111),et=e.i(425498),er=e.i(77193),ea=e.i(570191),en=e.i(365156);let ei={checkMonitorNow:x.X,keepAliveNow:R.v,wakeAs:M,supabaseAct:V,redeployAs:Z,rollbackAs:Y,finish:O.W,recordAction:$.f,limit:ee.f,bumpPrAs:A.W,autoSecurity:()=>(0,ea.X)(),recheckDomain:_._};async function eo(){let[e]=await (0,i.f)().select({at:s.collectorRuns.startedAt}).from(s.collectorRuns).where(n.B`(${s.collectorRuns.trigger} = 'vercel_cron' or (${s.collectorRuns.trigger} = 'manual' and ${s.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,b.A)(s.collectorRuns.startedAt)).limit(1);return e?.at??null}async function es(e){let t=await (e.lastDailyRunAt??eo)(),r=(e.now??(()=>new Date))();if(t&&r.getTime()-t.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let a=(e.dailyTarget??function(){let e=(0,v.f)();return e?{url:`${(0,I.f)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:e.CRON_SECRET}:null})();if(!a)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let t=await (e.fetch??fetch)(a.url,{headers:{Authorization:`Bearer ${a.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!t.ok||t.status>=300)return{ok:!1,error:`The daily job route answered ${t.status}.`};return{ok:!0,message:`Daily job ran again (${t.status}).`}}catch(e){if(e instanceof Error&&("TimeoutError"===e.name||"AbortError"===e.name))return{ok:!0,message:"Daily job started; it's still running — the heartbeat turns Up when it finishes."};throw e}}let el="The proposal's target is missing, so it can't run.";async function eu(e,t,r=ei){let a="auto"===t,n=a?{id:h.e,userId:null}:{id:t.id,userId:t.userId},i=(e,t,n)=>r.finish(e,t,n,{refresh:!1,...a?{auditPrefix:h.v}:{}});try{if(!e.resourceId||!e.targetRef)return{ok:!1,error:el};if((0,er.W)()&&"recheck"!==e.action)return await r.recordAction({kind:"ok",message:`${a?h.v:""}${en.H[e.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:e.resourceId,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:et.r};switch(e.action){case"recheck":{let t=await r.limit(Q.t.check,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,Q.H)(t.retryAfter)}.`};let i=await r.checkMonitorNow(e.targetRef);if(!i.ok)return{ok:!1,error:i.error};if(i.audit)try{await r.recordAction({kind:!1===i.passed?"err":"ok",...i.audit,message:`${a?h.v:""}${i.audit.message}`,actorUserId:n.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:i.message}}case"domain_recheck":{let t=await r.limit(Q.t.domainCheck,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,Q.H)(t.retryAfter)}.`};let i=await (r.recheckDomain??_._)(e.targetRef);if(!i.ok)return i;return await r.recordAction({kind:"ok",...i.audit,message:`${a?h.v:""}${i.audit.message}`,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"daily_rerun":return await es(r);case"neon_wake":return await r.wakeAs(n,e.resourceId,e.targetRef,i);case"supabase_keepalive":return await r.keepAliveNow(n,e.resourceId,i);case"supabase_restore":return await r.supabaseAct("restore",n,e.resourceId,e.targetRef,i);case"vercel_redeploy":return await r.redeployAs(n,e.resourceId,e.targetRef,i);case"vercel_rollback":return await r.rollbackAs(n,e.resourceId,e.targetRef,i);case"github_bump_pr":{let t=a?await (r.autoSecurity??ea.X)():null;if(a&&!t?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (r.bumpPrAs??A.W)(n,e.resourceId,e.targetRef,i,{proposalId:e.proposalId??null,...t?{auto:{severities:t.severities}}:{}})}default:return{ok:!1,error:el}}}catch(e){return console.warn(`${o.X.logTag}/proposals run failed:`,e instanceof Error?e.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}let ed={id:g.O.id,room:g.O.room,action:g.O.action,risk:g.O.risk,title:g.O.title,reason:g.O.reason,resourceName:g.O.resourceName,proposedBy:g.O.proposedBy,status:g.O.status,auto:g.O.auto,result:g.O.result,createdAt:g.O.createdAt,decidedAt:g.O.decidedAt,expiresAt:g.O.expiresAt},ec={...ed,resourceId:g.O.resourceId,targetRef:g.O.targetRef,ruleKey:g.O.ruleKey};async function ep(e,t,r){let o=(0,h.z)(e,t),[l,u,c,p,f,m]=await Promise.all([o.monitorIds.length?(0,i.f)().select({id:s.monitors.id,kind:s.monitors.kind}).from(s.monitors).where((0,a.y)(s.monitors.id,o.monitorIds)):[],o.deployApps.length?(0,i.f)().select({app:s.deployments.resourceId,id:s.deployments.externalId,isCurrent:s.deployments.isCurrent,isPrevious:s.deployments.isPreviousProduction,readyAt:s.deployments.readyAt,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,o.deployApps),(0,a.F)((0,a.u)(s.deployments.isCurrent,!0),(0,a.u)(s.deployments.isPreviousProduction,!0)))):[],o.supabaseIds.length?(0,i.f)().select({id:s.resources.id,ref:s.resources.externalId}).from(s.resources).where((0,a.b)((0,a.y)(s.resources.id,o.supabaseIds),(0,a.u)(s.resources.kind,"supabase_project"),n.B`${s.resources.goneAt} is null`)):[],o.monitorApps.length?em(o.monitorApps):new Map,o.depApps.length?(0,d.C)(o.depApps).catch(()=>new Map):new Map,o.monitorIds.length?ef(o.monitorIds):null]),g=new Map;for(let e of u){let t=g.get(e.app)??{currentId:null,previousId:null,liveAt:null};e.isCurrent?(t.currentId=e.id,t.liveAt=e.readyAt??e.createdAt??null):e.isPrevious&&(t.previousId=e.id),g.set(e.app,t)}return{monitorKinds:new Map(l.map(e=>[e.id,String(e.kind)])),deploys:g,...void 0!==r?{rollbackWindowMs:r}:{},supabaseRefs:new Map(c.map(e=>[e.id,e.ref])),neonSuspended:p,fixableRepos:f,dailyHeartbeatId:m}}async function ef(e){let t=(0,c.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!t)return null;let[r]=await (0,i.f)().select({id:s.monitors.id}).from(s.monitors).where((0,a.b)((0,a.y)(s.monitors.id,e),(0,a.u)(s.monitors.kind,"heartbeat"),(0,a.u)(s.monitors.tokenHash,(0,p.f)(t)))).limit(1).catch(()=>[]);return r?.id??null}async function em(e){let t=await (0,i.f)().select({app:s.links.fromResourceId,id:s.resources.id,kind:s.resources.kind,externalId:s.resources.externalId,parentId:s.resources.parentId}).from(s.links).innerJoin(s.resources,(0,a.u)(s.resources.id,s.links.toResourceId)).where((0,a.b)((0,a.y)(s.links.fromResourceId,e),(0,a.u)(s.links.kind,"uses_db"),(0,a.y)(s.resources.kind,["neon_project","neon_branch"]),n.B`${s.resources.goneAt} is null`)),r=new Map;if(!t.length)return r;let o=e=>"neon_branch"===e.kind?e.parentId:e.id,l=[...new Set(t.map(o).filter(e=>!!e))];if(!l.length)return r;let u=new Map((await (0,i.f)().select({id:s.snapshots.resourceId,data:s.snapshots.data}).from(s.snapshots).where((0,a.y)(s.snapshots.resourceId,l))).map(e=>[e.id,(0,f.k)(f.s,e.data)]));for(let e of t){let t=o(e),a=t?u.get(t):void 0,n=a?(0,h.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null):null;n&&r.set(e.app,{resourceId:e.id,resourceKind:e.kind,endpointId:n})}return r}async function eg(e){if(!e.length)return[];let t=new Set((await (0,i.f)().select({alertId:g.O.alertId,action:g.O.action}).from(g.O).where((0,a.y)(g.O.alertId,[...new Set(e.map(e=>e.alertId))]))).map(e=>`${e.alertId}:${e.action}`)),r=e.filter(e=>!t.has(`${e.alertId}:${e.action}`));return r.length?(0,i.f)().insert(g.O).values(r.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ec):[]}async function eh(e,t,r,o){let[s]=await (0,i.f)().update(g.O).set({status:"approve"===t?"approved":"rejected",decidedBy:r,decidedAt:o}).where((0,a.b)((0,a.u)(g.O.id,e),(0,a.u)(g.O.status,"pending"),n.B`${g.O.expiresAt} > ${o.toISOString()}::timestamptz`)).returning(ec);if(s)return{status:"ok",proposal:(0,h.E)(s),row:s};let[l]=await (0,i.f)().select(ed).from(g.O).where((0,a.u)(g.O.id,e)).limit(1);return l?{status:"conflict",proposal:(0,h.E)(l)}:{status:"missing"}}async function ek(e,t){let[r]=await (0,i.f)().update(g.O).set({status:"running",claimedAt:t}).where((0,a.b)((0,a.u)(g.O.id,e),(0,a.u)(g.O.status,"approved"))).returning(ec);return r??null}async function ey(e,t,r,n){let[o]=await (0,i.f)().update(g.O).set({status:t?"done":"failed",result:r,finishedAt:n}).where((0,a.b)((0,a.u)(g.O.id,e),(0,a.u)(g.O.status,"running"))).returning(ec);return o??null}let ew={run:(e,t)=>eu(e,t),book:()=>(0,l.f)()};async function eb(e,t,r,a=ew){let n=await ek(e,r);if(!n)return null;let i=await a.run({action:n.action,resourceId:n.resourceId,targetRef:n.targetRef,proposalId:n.id},t),o=await a.book().catch(()=>m.a),s=await ey(e,i.ok,(0,h.x)(i,o),new Date);return s?(0,h.E)(s):null}async function ev(e,t){let r=await (0,i.f)().update(g.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,a.b)((0,a.u)(g.O.status,"pending"),(0,a.F)((0,a.S)(g.O.expiresAt,new Date(t.getTime()+1)),(0,a.b)((0,a.E)(g.O.alertId),e.length?(0,a.$)(g.O.alertId,e):n.B`true`)))).returning({id:g.O.id});return await (0,i.f)().update(g.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:t}).where((0,a.b)((0,a.u)(g.O.status,"running"),(0,a.S)(g.O.claimedAt,new Date(t.getTime()-h.L)))),r.length}async function eI(e){await (0,i.f)().delete(g.O).where((0,a.b)((0,a.S)(g.O.createdAt,new Date(e.getTime()-2592e6)),(0,a.$)(g.O.status,["pending","approved","running"])))}let e$=n.B`(${s.storedLogs.level} in ('error', 'fatal') or coalesce(${s.storedLogs.statusCode}, 0) >= 500)`,eA=n.B`coalesce(${s.deployments.readyAt}, ${s.deployments.createdAtProvider})`;async function eR(e){let t=await (0,i.f)().select({app:s.links.fromResourceId,id:s.resources.id,kind:s.resources.kind,externalId:s.resources.externalId,parentId:s.resources.parentId}).from(s.links).innerJoin(s.resources,(0,a.u)(s.resources.id,s.links.toResourceId)).where((0,a.b)((0,a.y)(s.links.fromResourceId,e),(0,a.u)(s.links.kind,"uses_db"),(0,a.y)(s.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,a.M)(s.resources.goneAt))),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,o=[...new Set(t.map(n).filter(e=>!!e))],l=new Map((o.length?await (0,i.f)().select({id:s.snapshots.resourceId,data:s.snapshots.data}).from(s.snapshots).where((0,a.y)(s.snapshots.resourceId,o)):[]).map(e=>[e.id,e.data]));for(let e of t){let t=l.get(n(e)??"");if("supabase_project"===e.kind){let a=(0,f.k)(f.B,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:null,supabaseRef:e.externalId,supabasePaused:"INACTIVE"===a.status})}else{let a=(0,f.k)(f.s,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:(0,h.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null),supabaseRef:null,supabasePaused:!1})}}return r}let ex={apps:async function(e){let t=new Date(e.getTime()-k.I-k.s),r=n.B`${s.storedLogs.at} >= ${new Date(e.getTime()-k.H).toISOString()}::timestamptz`,o=n.B`${s.storedLogs.message} ~* ${k.N}`,l=n.B`left(${s.storedLogs.message}, 200)`,u=(await (0,i.f)().select({appId:s.storedLogs.resourceId,appName:n.B`max(${s.resources.name})`,liveAt:n.B`max(${eA})`.mapWith(s.deployments.readyAt),currentId:n.B`max(${s.deployments.externalId})`,errorsSinceLive:n.B`count(*) filter (where ${e$} and ${s.storedLogs.at} >= ${eA})`.mapWith(Number),baselineErrors:n.B`count(*) filter (where ${e$} and ${s.storedLogs.at} >= ${eA} - interval '24 hours' and ${s.storedLogs.at} < ${eA})`.mapWith(Number),topSinceLive:n.B`mode() within group (order by ${l}) filter (where ${e$} and ${s.storedLogs.at} >= ${eA})`,errors30:n.B`count(*) filter (where ${e$} and ${r})`.mapWith(Number),top30:n.B`mode() within group (order by ${l}) filter (where ${e$} and ${r})`,dbErrors30:n.B`count(*) filter (where ${r} and ${o})`.mapWith(Number),topDb:n.B`mode() within group (order by ${l}) filter (where ${r} and ${o})`}).from(s.storedLogs).innerJoin(s.resources,(0,a.u)(s.resources.id,s.storedLogs.resourceId)).leftJoin(s.deployments,(0,a.b)((0,a.u)(s.deployments.resourceId,s.storedLogs.resourceId),(0,a.u)(s.deployments.isCurrent,!0))).where((0,a.b)((0,a.B)(s.storedLogs.at,t),(0,a.u)(s.resources.kind,"app"),(0,a.M)(s.resources.goneAt))).groupBy(s.storedLogs.resourceId)).filter(e=>e.errorsSinceLive>=k.w||e.errors30>=k.G||e.dbErrors30>=k.V);if(!u.length)return[];let d=u.map(e=>e.appId),[c,p,f]=await Promise.all([(0,i.f)().select({app:s.deployments.resourceId,previousId:n.B`max(${s.deployments.externalId}) filter (where ${s.deployments.isPreviousProduction})`,lastDeployAt:n.B`max(${s.deployments.createdAtProvider}) filter (where ${s.deployments.target} = 'production')`.mapWith(s.deployments.createdAtProvider)}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,d),(0,a.F)((0,a.u)(s.deployments.isPreviousProduction,!0),(0,a.B)(s.deployments.createdAtProvider,new Date(e.getTime()-k.v))))).groupBy(s.deployments.resourceId),(0,i.f)().select({app:s.monitors.resourceId,id:s.monitors.id}).from(s.monitors).where((0,a.b)((0,a.y)(s.monitors.resourceId,d),(0,a.u)(s.monitors.kind,"http"),(0,a.u)(s.monitors.paused,!1),(0,a.u)(s.monitors.ownerPaused,!1))).orderBy(s.monitors.createdAt),eR(d)]),m=new Map(c.map(e=>[e.app,e])),g=new Map;for(let e of p)g.has(e.app)||g.set(e.app,e.id);return u.map(e=>({...e,appName:e.appName??"",previousId:m.get(e.appId)?.previousId??null,lastDeployAt:m.get(e.appId)?.lastDeployAt??null,httpMonitorId:g.get(e.appId)??null,db:f.get(e.appId)??null}))},rows:async function(e){let t=n.B`coalesce(${g.O.finishedAt}, ${g.O.decidedAt}, ${g.O.expiresAt})`;return(0,i.f)().select({id:g.O.id,ruleKey:g.O.ruleKey,resourceId:g.O.resourceId,action:g.O.action,status:g.O.status,closedAt:t.mapWith(g.O.finishedAt)}).from(g.O).where((0,a.b)((0,a.M)(g.O.alertId),(0,a.y)(g.O.ruleKey,[...k.T]),(0,a.F)((0,a.y)(g.O.status,["pending","approved","running"]),n.B`${t} > ${new Date(e.getTime()-k.b).toISOString()}::timestamptz`)))}};async function e_(e,t,r=ex){let[n,o]=await Promise.all([r.apps(e),r.rows(e)]),s=n.flatMap(r=>(0,k.t)(r,t,e)),l=(0,k.W)(o,s),u=0;l.length&&(u=(await (0,i.f)().update(g.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:e}).where((0,a.b)((0,a.y)(g.O.id,l),(0,a.u)(g.O.status,"pending"))).returning({id:g.O.id})).length);let d=(0,k.x)(s,o,e);return d.length?{created:await (0,i.f)().insert(g.O).values(d.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ec),expired:u}:{created:[],expired:u}}let ej=null;async function eT(e,t){return(0,k.D)(e,ej)?(ej=e.getTime(),e_(e,await t())):{created:[],expired:0}}async function eO(e,t){return(await (0,i.f)().update(g.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(g.O.id,e),(0,a.u)(g.O.status,"pending"),(0,a.u)(g.O.risk,"safe"))).returning({id:g.O.id})).length>0}async function eP(e,t){let r=new Date(t.getTime()-y.r),[o,l,u,d]=await Promise.all([(0,i.f)().select({app:s.deployments.resourceId,id:s.deployments.externalId,sha:s.deployments.commitSha,state:s.deployments.state,isCurrent:s.deployments.isCurrent,isPrevious:s.deployments.isPreviousProduction,readyAt:s.deployments.readyAt,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,e),(0,a.F)((0,a.u)(s.deployments.isCurrent,!0),(0,a.u)(s.deployments.isPreviousProduction,!0)))),(0,i.f)().select({app:s.deployments.resourceId,at:n.B`max(${s.deployments.createdAtProvider})`.mapWith(s.deployments.createdAtProvider)}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,e),(0,a.u)(s.deployments.target,"production"),(0,a.u)(s.deployments.state,"ready"))).groupBy(s.deployments.resourceId),(0,i.f)().select({app:s.events.resourceId}).from(s.events).where((0,a.b)((0,a.u)(s.events.type,"action"),(0,a.y)(s.events.resourceId,e),(0,a.B)(s.events.at,r),n.B`${s.events.message} ~ ${eS}`)),(0,i.f)().select({app:g.O.resourceId,targetRef:g.O.targetRef,status:g.O.status,decidedAt:g.O.decidedAt}).from(g.O).where((0,a.b)((0,a.u)(g.O.action,"vercel_rollback"),(0,a.u)(g.O.auto,!0),(0,a.B)(g.O.createdAt,new Date(t.getTime()-26784e5))))]),c=new Map;for(let t of e){let e=o.find(e=>e.app===t&&e.isCurrent),a=o.find(e=>e.app===t&&e.isPrevious&&!e.isCurrent),n=d.filter(e=>e.app===t);c.set(t,{deploy:e?{currentId:e.id,currentSha:e.sha,liveAt:e.readyAt??e.createdAt,currentCreatedAt:e.createdAt,newestProdCreatedAt:l.find(e=>e.app===t)?.at??null,previousId:a?.id??null,previousState:a?.state??null,previousCreatedAt:a?.createdAt??null}:null,rolledOrPromotedLately:u.some(e=>e.app===t),autoLately:n.some(e=>null!==e.decidedAt&&e.decidedAt.getTime()>=r.getTime()),sameDeployBefore:!!a&&n.some(e=>e.targetRef===a.id)})}return{apps:c,inFlight:d.some(e=>"approved"===e.status||"running"===e.status)}}let eS="(Rolled back|Promoted|Preview promoted) ·";async function eD(e,t,r){return(await (0,i.f)().update(g.O).set({status:"approved",auto:!0,decidedAt:r,reason:t}).where((0,a.b)((0,a.u)(g.O.id,e),(0,a.u)(g.O.status,"pending"),(0,a.u)(g.O.action,"vercel_rollback"),n.B`not exists (select 1 from ops.action_proposals x where x.action = 'vercel_rollback' and x.auto and x.status in ('approved', 'running'))`)).returning({id:g.O.id})).length>0}async function eN(e,t,r,a){let n=e.filter(e=>"vercel_rollback"===e.action&&e.ruleKey&&y.M.has(e.ruleKey)&&e.resourceId);if(!n.length||!a.autoRollback||!a.rollbackContext||!a.approveAutoRollback)return[];let i=await a.autoRollback().catch(()=>null);if(!i?.enabled||15e3>r())return[];let s=[];try{let e=await a.rollbackContext([...new Set(n.map(e=>e.resourceId))],t),l=e.inFlight;for(let u of n){let n=e.apps.get(u.resourceId);if(!n||12e3>r())continue;let d=(0,y.s)({setting:i,ruleKey:u.ruleKey??null,targetRef:u.targetRef,inFlight:l,...n},t);if(!d.ok){console.log(`${o.X.logTag}/auto-rollback: skipped (${d.why})`);continue}let c=(0,y.E)(n.deploy);if(!await a.approveAutoRollback(u.id,(0,y.u)(c,i.windowMin,u.reason),new Date))continue;l=!0;let p=await a.execute(u.id,new Date);if(p){s.push(p),await (a.notifyRollback??w.q)(p,{reason:u.reason,newRef:c}).catch(()=>void 0);break}}}catch(e){console.warn(`${o.X.logTag}/auto-rollback failed:`,e instanceof Error?e.name:"error")}return s}async function eE(e,t){return(await (0,i.f)().update(g.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(g.O.id,e),(0,a.u)(g.O.status,"pending"),(0,a.u)(g.O.action,"github_bump_pr"))).returning({id:g.O.id})).length>0}async function eC(e,t,r){let a=e.filter(e=>"github_bump_pr"===e.action&&e.targetRef);if(!a.length||!r.autoSecurity||!r.bumpReady||!r.approveAutoBump)return[];let n=await r.autoSecurity().catch(()=>null);if(!n?.enabled||!n.severities.length)return[];let i=[];for(let e of a){if(15e3>t())break;try{let t=await r.bumpReady(e.targetRef,n.severities);if(!t.ok){console.log(`${o.X.logTag}/auto-security: waits for the owner (${t.why})`);continue}if(!await r.approveAutoBump(e.id,new Date))continue;let a=await r.execute(e.id,new Date);a&&i.push(a)}catch(e){console.warn(`${o.X.logTag}/auto-security failed:`,e instanceof Error?e.name:"error")}}return i}let eM={firing:()=>(0,u.q)(),book:()=>(0,l.f)(),facts:ep,create:eg,expire:ev,autoRun:ea.I,approveAuto:eO,execute:(e,t)=>eb(e,"auto",t),notifyNew:w.i,notifyResult:w.b,logs:eT,autoRollback:()=>(0,ea.K)(),rollbackContext:eP,approveAutoRollback:eD,notifyRollback:w.q,autoSecurity:()=>(0,ea.X)(),bumpReady:A.J,approveAutoBump:eE};async function eK(e,t={},r=eM){let a={created:0,expired:0,autoRan:0},n=()=>(t.deadline??1/0)-Date.now(),i=await r.firing();a.expired=await r.expire(i.map(e=>e.id),e);let s=null,l=()=>s??=r.book().catch(()=>m.a),u=[],d=(0,h.z)(i,e);if(Object.values(d).some(e=>e.length>0)){let t=d.deployApps.length&&r.autoRollback?await r.autoRollback().catch(()=>null):null,a=await r.facts(i,e,t?6e4*t.windowMin:void 0),n=await l();u.push(...await r.create(i.flatMap(t=>(0,h.t)(t,a,n,e))))}if(n()>1e4)try{let t=await r.logs(e,l);u.push(...t.created),a.expired+=t.expired}catch(e){console.warn(`${o.X.logTag}/proposals logs failed:`,e instanceof Error?e.name:"error")}if(a.created=u.length,!u.length)return a;let c=await r.autoRun().catch(()=>null),p=await eN(u,e,n,r);a.autoRan+=p.length;let f=await eC(u.filter(e=>!p.some(t=>t.id===e.id)),n,r),g=new Set(p.map(e=>e.id)),k=[...f];for(let e of(a.autoRan+=f.length,f))g.add(e.id);for(let e of u){if(g.has(e.id)||!c||!(0,h.I)(e.action,c)||8e3>n()||!await r.approveAuto(e.id,new Date))continue;let t=await r.execute(e.id,new Date);t&&(k.push(t),a.autoRan++)}let y=new Set([...k.map(e=>e.id),...g]),w=u.filter(e=>"LogErrorSpike"===e.ruleKey&&e.resourceId).map(e=>({proposalId:e.id,appId:e.resourceId})),b=w.length&&r.queueDev?await r.queueDev(w,e).catch(()=>new Set):new Set;for(let e of(await r.notifyNew(u.filter(e=>!y.has(e.id)).map(h.E),{},{devQueued:b}).catch(()=>void 0),k))await r.notifyResult(e).catch(()=>void 0);return a}let ez=(r={},t={...eM,queueDev:r.queueDev},async(e,r)=>{try{let a=await eK(e,r??{},t);(a.created||a.expired||a.autoRan)&&console.log(`${o.X.logTag}/proposals: ${a.created} new, ${a.expired} expired, ${a.autoRan} auto-ran`)}catch(e){console.warn(`${o.X.logTag}/proposals failed:`,e instanceof Error?e.name:"error")}});e.s(["V",0,eh,"N",0,eb,"Z",0,ez,"t",0,eI],447933)},442565,e=>{var t=e.i(313931),r=e.i(872281),a=e.i(483100),n=e.i(224382),i=e.i(220642),o=e.i(547499),s=e.i(695811),l=e.i(76012),u=e.i(298397),d=e.i(635982),c=e.i(570191),p=e.i(365156);let f={target:a.Q,book:()=>(0,r.f)(),siteUrl:()=>(0,o.f)().SITE_URL,autoRun:()=>(0,c.I)(),send:(e,t,r,a)=>(0,l.I)(e,t,r,a?{replyMarkup:a}:{}),record:(e,t)=>(0,a.P)("telegram",e,t),lang:()=>(0,s.H)("telegram"),discord:()=>(0,a.G)(),sendDiscord:(e,t)=>(0,n.f)(e,t,{timeoutMs:v}),recordDiscord:(e,t)=>(0,a.P)("discord",e,t),discordLang:()=>(0,s.H)("discord"),buttons:()=>e.A(106025).then(e=>e.approvalButtons())},m={en:{pending:"Status: ⏳ waiting",dev:"🧑💻 Dev is checking the code",proposer:t.X.notifyFallback.en,app:"app",safe:"safe",risky:"needs care",proposes:"proposes",why:"Why",risk:"Risk",open:"Open in Auto-actions",waitingN:"new proposals waiting for approval:",moreN:"more proposals",automatic:"Automatic",rollbackWhy:"the app errored after the new deploy",succeeded:"Succeeded",failed:"Failed",stopFallback:"something failed"},id:{pending:"Status: ⏳ menunggu",dev:"🧑💻 Dev lagi cek kodenya",proposer:t.X.notifyFallback.id,app:"aplikasi",safe:"aman",risky:"perlu hati-hati",proposes:"usul",why:"Kenapa",risk:"Risiko",open:"Buka di Auto-actions",waitingN:"usulan baru menunggu persetujuan:",moreN:"usulan lagi",automatic:"Otomatis",rollbackWhy:"app-nya error setelah deploy baru",succeeded:"Berhasil",failed:"Gagal",stopFallback:"ada yang gagal"}},g={recheck:"Cek ulang sekarang",neon_wake:"Bangunin Neon",supabase_keepalive:"Kirim keep-alive Supabase",supabase_restore:"Restore project Supabase",vercel_redeploy:"Redeploy production",vercel_rollback:"Rollback ke deploy sebelumnya",github_bump_pr:"Bikin PR update paket",domain_recheck:"Cek ulang sertifikat domain",daily_rerun:"Jalanin ulang daily job"},h=(e="en")=>(0,s.t)(m,e,"dev"),k=(e,t)=>("id"===t?g[e.action]:void 0)??p.H[e.action]?.label??e.actionLabel,y=(e,t)=>(0,s.t)(m,t,"risky"===e.risk||p.H[e.action]?.risk==="risky"?"risky":"safe"),w=(e,t)=>`${e.replace(/\/+$/,"")}/auto-actions${t?`?proposal=${encodeURIComponent(t)}`:""}`;function b(e,t,r,a=!1,n="en"){let o=e=>(0,s.t)(m,n,e),l=(0,d.f)(e.proposedBy,t,60)||o("proposer"),u=(0,d.f)(e.title,t,120),c=(0,d.f)(e.reason,t,200)||"-";return[`🧑✈️ ${(0,i.H)(l)} ${o("proposes")}: ${(0,i.H)(k(e,n))} — ${(0,i.H)(u)}`,`${o("why")}: ${(0,i.H)(c)}`,`${o("risk")}: ${y(e,n)}`,...a?[h(n)]:[],`${o("open")}: ${(0,i.H)(w(r,e.id))}`].join("\n")}let v=3e3,I={en:{proposed:"📝 Proposed",approved:"✅ Approved by the owner",rejected:"🚫 Rejected by the owner",done:"⚙️ Ran",failed:"❌ Failed",waiting:"waiting for approval on Telegram.",newN:"new proposals"},id:{proposed:"📝 Usulan",approved:"✅ Disetujui owner",rejected:"🚫 Ditolak owner",done:"⚙️ Dijalankan",failed:"❌ Gagal",waiting:"nunggu persetujuan di Telegram.",newN:"usulan baru"}};function $(e,t,r,a="en"){let n=e=>(0,s.t)(I,a,e);if(Array.isArray(t))return`📝 ${t.length} ${n("newN")} — ${n("waiting")}`;let i=((0,d.f)(t.title,r,120)||k(t,a)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===e)return`${n("proposed")}: ${i} — ${n("waiting")}`;if("approved"===e||"rejected"===e)return`${n(e)}: ${i}`;let o=t.result?(0,d.f)(t.result,r,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${n(e)}: ${i}${o?` — ${o}`:""}`}async function A(e,r,a){try{let n,i=await r.discord();if(!i)return;let o=await r.book().catch(()=>u.a),s=await r.discordLang().catch(()=>"en"),l=e(o,s);if(!l.length)return;try{n=await r.sendDiscord(i.url,l.join("\n"))}catch{n={ok:!1,kind:"transient",error:"Discord didn't answer."}}await r.recordDiscord(n,a).catch(()=>console.warn(`${t.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${t.X.logTag}/discord: sending the action history failed`)}}async function R(e,t,r={},a={}){let n={...f,...r};await _(()=>A((r,a)=>[$(e,t,r,a)],n,a.now??new Date),a.timeoutMs??v)}async function x(e,r,a){let n=await r.target();if(!n)return;let i=await r.book().catch(()=>u.a),o=await r.lang().catch(()=>"en");for(let s of(await e(i,o))){let e;try{e="string"==typeof s?await r.send(n.token,n.chatId,s):await r.send(n.token,n.chatId,s.text,s.keyboard)}catch{e={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await r.record(e,a).catch(()=>console.warn(`${t.X.logTag}/telegram: recording the result failed`))}}async function _(e,r){try{var a;let t;await (a=e(),Promise.race([a,new Promise((e,a)=>{t=setTimeout(()=>a(Object.assign(Error("timeout"),{name:"TimeoutError"})),r)})]).finally(()=>clearTimeout(t)))}catch(e){console.warn(`${t.X.logTag}/telegram: sending the proposal notice failed:`,e instanceof Error?e.name:"error")}}async function j(e,t={},r={}){if(!e.length)return;let a={...f,...t};await _(async()=>{let t=await a.autoRun().catch(()=>null),n=e.filter(e=>{var r;return r=t??{},"pending"===e.status&&!e.auto&&(p.H[e.action]?.risk!=="safe"||"risky"===e.risk||!r[e.action])});if(!n.length)return;let o=n.length>3||!a.buttons?null:await a.buttons().catch(()=>null),l=r.now??new Date;await Promise.all([x((e,t)=>n.length>3?[function(e,t,r,a=new Set,n="en"){let o=e=>(0,s.t)(m,n,e),l=e.slice(0,10).map(e=>{let s=(0,d.f)(e.proposedBy,t,60)||o("proposer");return`• ${(0,i.H)(s)}: ${(0,i.H)(k(e,n))} — ${(0,i.H)((0,d.f)(e.title,t,120))} (${y(e,n)})${a.has(e.id)?` \xb7 ${h(n)}`:""}
|
|
1
|
+
(()=>{"use strict";module.exports=[825895,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(620511),i=e.i(267841);let o="deps.lockfileDispatched";async function s(){let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,n.h)).limit(1);return(0,n.g)(e?.value).repo}async function l(e,u,d=new Date){try{let l=await s();if(!l)return{sent:!1,why:"no actions repository"};let c=(0,n.C)(u);if(!c)return{sent:!1,why:"invalid"};let p=await (0,i.B)(e,l,c);if(!p.ok)return{sent:!1,why:p.error};let[f]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1),m=f?.value&&"object"==typeof f.value?f.value:{},g={...Object.fromEntries(Object.entries(m).filter(([,e])=>d.getTime()-Date.parse(e)<864e5)),[`${u.repo}#${u.branch}`]:d.toISOString()};return await (0,r.f)().insert(a.settings).values({key:o,value:g}).onConflictDoUpdate({target:a.settings.key,set:{value:g,updatedAt:d}}),{sent:!0}}catch(e){return console.warn("deps: lockfile dispatch failed:",e instanceof Error?e.name:"error"),{sent:!1,why:"error"}}}async function u(e,i,s=new Date){try{let[l]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1),u=l?.value?.[`${e}#${i}`];return!!u&&s.getTime()-Date.parse(u)<n.w}catch{return!1}}e.s(["W",0,u,"U",0,l])},582931,e=>{var t=e.i(875225),r=e.i(349129),a=e.i(924924),n=e.i(618916),i=e.i(921991),o=e.i(90801),s=e.i(975912),l=e.i(32391),u=e.i(256662),d=e.i(413230),c=e.i(547499),p=e.i(479301),f=e.i(267841),m=e.i(628448),g=e.i(472832),h=e.i(825895);let k=e=>({done:!1,message:e});async function y(){let[e]=await (0,a.f)().select().from(n.accounts).where((0,t.u)(n.accounts.provider,"github_write")).orderBy((0,r.M)(n.accounts.createdAt)).limit(1);if(!e)return null;let o=(0,i.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,c.f)().OPS_ENCRYPTION_KEY);return o?{id:e.id,token:o}:"unreadable"}let w={severity:"no package at the selected severity",major:"an update jumps a major version",nothing:"nothing can be updated"};async function b(r,i,c,v=g.W,I={}){if(!(0,p.f)(i)||!(0,p.f)(c))return v(k("Something in that request wasn't valid."),r,"");let $=await (0,g.q)(r.id,"github_bump_pr",i);if($)return v(k($),r,"");let A=await y();if(null===A)return v(k('A GitHub PR-write token is needed: connect "GitHub (PR write)" on Connections (fine-grained, this repository only, Contents and Pull requests: Read and write; Commit statuses: Read for automatic merges), then ask again.'),r,"");if("unreadable"===A)return v(k("Can't read the stored GitHub PR-write credential. Replace it on Connections."),r,"");let[R]=await (0,a.f)().select({app:n.resources.name,fullName:n.githubRepos.fullName,owner:n.githubRepos.owner,goneAt:n.githubRepos.goneAt,lockfilePath:n.dependencyScans.lockfilePath}).from(n.appRepos).innerJoin(n.githubRepos,(0,t.u)(n.githubRepos.id,n.appRepos.repoId)).innerJoin(n.resources,(0,t.u)(n.resources.id,n.appRepos.appId)).leftJoin(n.dependencyScans,(0,t.u)(n.dependencyScans.repoId,n.appRepos.repoId)).where((0,t.b)((0,t.u)(n.appRepos.appId,i),(0,t.u)(n.appRepos.repoId,c))).limit(1);if(!R||R.goneAt)return v(k(m.G),r,A.id);let x=await (0,a.f)().select({package:n.dependencyVulns.package,installedVersion:n.dependencyVulns.installedVersion,fixedVersion:n.dependencyVulns.fixedVersion,vulnId:n.dependencyVulns.vulnId,aliases:n.dependencyVulns.aliases,severity:n.dependencyVulns.severity,direct:n.dependencyVulns.direct}).from(n.dependencyVulns).where((0,t.b)((0,t.u)(n.dependencyVulns.repoId,c),(0,t.M)(n.dependencyVulns.resolvedAt))).limit(2e3),_=(0,d.B)(x);if(!_.length)return v(k(`Nothing to update in ${R.app}: no direct package has a fixed version for its open advisories.`),r,A.id);if(I.auto){let e=(0,o.a)(_,(0,o.D)(x),I.auto.severities);if(!e.ok)return v(k(`Automatic PR not opened: ${w[e.why]}. The proposal waits for your approval.`),r,A.id);_=e.upgrades}let{auto:j,proposalId:O,...T}=I,P={timeoutMs:8e3,...T},S=await (0,f.H)(A.token,R.fullName,P);if(!S.ok)return v({done:!1,failed:S,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);let D=S.data.defaultBranch,N=await (0,f.M)(A.token,R.fullName,D,P);if(!N.ok)return v({done:!1,failed:N,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);if(!N.data)return v(k(`The default branch ${D} wasn't found.`),r,A.id);let E=await (0,f.E)(A.token,R.fullName,N.data,P);if(!E.ok)return v({done:!1,failed:E,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);if(!E.data)return v(k("There is no package.json at the repository root."),r,A.id);let C=(0,s.k)(E.data.text,_);if(!C?.length)return v(k(`package.json in ${R.app} already allows the fixed versions (or its ranges can't be rewritten). Run npm install there.`),r,A.id);if(j){let e=C.find(e=>{let t=(0,l.Y)(e.from);return!t||!(0,o.J)(t,e.fixed)});if(e)return v(k(`Automatic PR not opened: ${e.package} ${e.from} → ${e.to} jumps a major version. The proposal waits for your approval.`),r,A.id)}let M=(0,s.M)(E.data.text,C);if(!M)return v(k("package.json couldn't be edited safely."),r,A.id);let K=(0,s.U)(C);if(!(0,s.c)(K,D))return v(k("Refused: the PR branch would be the default branch."),r,A.id);let z=await (0,f.x)(A.token,R.fullName,R.owner,K,D,P);if(z.ok&&z.data)return{ok:!0,message:`Pull request #${z.data.number} for these updates is already open.`};let H=await (0,f.e)(A.token,R.fullName,P);if(!H.ok)return v({done:!1,failed:H,audit:{message:`Package update PR failed \xb7 ${R.app}`,resourceId:i}},r,A.id);if(H.data.length){let e=new Map((await (0,a.f)().select({number:n.dependencyPrs.number,packages:n.dependencyPrs.packages}).from(n.dependencyPrs).where((0,t.b)((0,t.u)(n.dependencyPrs.repoId,c),(0,t.y)(n.dependencyPrs.number,H.data.map(e=>e.number))))).map(e=>[e.number,e.packages])),i=(0,o.U)(C.map(e=>e.package),H.data.map(t=>({number:t.number,branch:t.branch,title:t.title,packages:e.get(t.number)??null})));if(i)return v(k(`Pull request #${i.number} for the same package is already open in ${R.app}. Merge or close it first.`),r,A.id)}let B=await (0,f.M)(A.token,R.fullName,K,P);if(B.ok&&B.data)return v(k(`Branch ${K} already exists without an open pull request. Delete it on GitHub, then ask again.`),r,A.id);let L=l.a.find(e=>e.path===R.lockfilePath)?.kind??null,V=e=>v({done:!1,failed:e,audit:{message:`Package update PR failed \xb7 ${R.app} \xb7 ${K}`,resourceId:i}},r,A.id),G=await (0,f.k)(A.token,R.fullName,K,N.data,D,P);if(!G.ok)return V(G);let W=await (0,f.D)(A.token,R.fullName,K,D,M,E.data.sha,(0,s.G)(C),P);if(!W.ok)return V(W);let U=await (0,f.y)(A.token,R.fullName,K,D,(0,s.f)(C),(0,s.y)(C,L,!!j),P);if(!U.ok)return V(U);let q=C.map(e=>`${e.package} ${e.from} → ${e.to}`).join(", "),F=await (0,f.M)(A.token,R.fullName,K,P).catch(()=>null);if(F?.ok&&F.data){await (0,a.f)().insert(n.dependencyPrs).values({repoId:c,appId:i,proposalId:O??null,number:U.data.number,branch:K,baseBranch:D,headSha:F.data,title:(0,s.f)(C).slice(0,200),packages:C.map(e=>e.package),auto:!!j,stage:"checks",stageText:(0,u.m)(U.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:t}=await e.A(774810);await t.runner?.queueLockfileJob({repoId:c,branch:K,headSha:F.data,prNumber:U.data.number,lockfilePath:R.lockfilePath??null,targets:C.map(e=>({name:e.package,version:e.fixed}))}).catch(()=>console.warn("deps: queueing the lockfile job failed")),await (0,h.U)(A.token,{repo:R.fullName,branch:K,lockfilePath:R.lockfilePath??null,prNumber:U.data.number})}return v({done:!0,message:`Pull request #${U.data.number} opened for ${R.app}: ${q}. Run npm install on the branch before merging.`,audit:{message:`Package update PR opened \xb7 ${R.app} \xb7 #${U.data.number}`,resourceId:i,detail:q}},r,A.id)}async function v(e,r){if(!(0,p.f)(e))return{ok:!1,why:"target"};let i=await y();if(!i||"unreadable"===i)return{ok:!1,why:"no write token"};let s=await (0,a.f)().select({package:n.dependencyVulns.package,installedVersion:n.dependencyVulns.installedVersion,fixedVersion:n.dependencyVulns.fixedVersion,vulnId:n.dependencyVulns.vulnId,aliases:n.dependencyVulns.aliases,severity:n.dependencyVulns.severity,direct:n.dependencyVulns.direct}).from(n.dependencyVulns).where((0,t.b)((0,t.u)(n.dependencyVulns.repoId,e),(0,t.M)(n.dependencyVulns.resolvedAt))).limit(2e3),l=(0,o.a)((0,d.B)(s),(0,o.D)(s),r);return l.ok?{ok:!0}:{ok:!1,why:l.why}}e.s(["J",0,v,"W",0,b,"G",0,y])},983128,860320,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(921991),i=e.i(547499),o=e.i(666680),s=e.i(140561),l=e.i(206033),u=e.i(105954),d=e.i(971724),c=e.i(180473),p=e.i(76012);let f={inline_keyboard:[]},m=0,g=e=>(0,o.createHash)("sha256").update(`watchpost:telegram-link:${e.trim().toUpperCase()}`,"utf8").digest("hex"),h=s.z.union([l.z.number().int(),u.z.string().regex(/^-?\d{1,20}$/)]).transform(e=>String(e)),k=d.z.object({id:h,type:u.z.string().max(32).optional(),title:u.z.string().max(256).optional(),first_name:u.z.string().max(256).optional(),username:u.z.string().max(64).optional()}),y=d.z.object({id:h,is_bot:c.z.boolean().optional()}),w=d.z.object({message_id:l.z.number().int(),chat:k,from:y.optional(),text:u.z.string().max(4096).optional()}),b=d.z.object({update_id:l.z.number().int(),message:w.optional(),callback_query:d.z.object({id:u.z.string().min(1).max(128),from:y,message:w.optional(),data:u.z.string().max(64).optional()}).optional()});e.s(["i",0,8,"y",0,function(e,t={}){let r=t.fetch??fetch,a=async(t,a)=>{let n=await (0,p.z)(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)},r);n.ok||/not modified/i.test(n.description)||console.warn(`telegram ${t} failed (${n.code??"network"})`)};return{answer:(e,t)=>a("answerCallbackQuery",{callback_query_id:e,text:t.slice(0,200)}),editText:(e,t,r,n)=>a("editMessageText",{chat_id:e,message_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},reply_markup:n??f}),editKeyboard:(e,t,r)=>a("editMessageReplyMarkup",{chat_id:e,message_id:t,reply_markup:r}),send:(e,t)=>a("sendMessage",{chat_id:e,text:t,parse_mode:"HTML",link_preview_options:{is_disabled:!0}})}},"v",0,e=>`${(e.title??e.first_name??e.username??"Chat").slice(0,50)} (${e.type??"chat"})`,"F",0,g,"z",0,()=>{m++},"j",0,function(e){let t=/^\/link(?:@[A-Za-z0-9_]{3,64})?\s+([A-Za-z0-9]{4,16})\s*$/.exec(e??"");return t?t[1].toUpperCase():null},"c",0,function(e){let t=b.safeParse(e);return t.success?t.data:null},"p",0,function(e,t){if("string"!=typeof e||"string"!=typeof t||!e||!t)return!1;let r=(0,o.createHash)("sha256").update(e,"utf8").digest(),a=(0,o.createHash)("sha256").update(t,"utf8").digest();return(0,o.timingSafeEqual)(r,a)}],860320);let v="telegram.owner",I="telegram.linkCode",$="telegram.seenChats",A=()=>(0,i.f)().OPS_ENCRYPTION_KEY;async function R(e){let[n]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,e)).limit(1);return n?.value??null}async function x(e,t){await (0,r.f)().insert(a.settings).values({key:e,value:t}).onConflictDoUpdate({target:a.settings.key,set:{value:t,updatedAt:new Date}})}async function _(e){await (0,r.f)().delete(a.settings).where((0,t.u)(a.settings.key,e))}function j(e){let t=e?.sealed;if(!t||"string"!=typeof t.ciphertext||"string"!=typeof t.iv)return null;try{return(0,n.K)(t,A())}catch{return null}}let O=(e,t)=>({sealed:(0,n.l)(e,A()),at:t.toISOString()}),T=null;async function P(e=Date.now()){if(T&&T.until>e)return T.secret;let t=j(await R("telegram.webhook"));return T={secret:t,until:e+3e4},t}let S=async()=>await P()!==null;async function D(){let e,n=j(await R(v));if(!n)return null;try{e=JSON.parse(n)}catch{return null}if("string"!=typeof e.tg||"string"!=typeof e.member)return null;let[i]=await (0,r.f)().select({id:a.members.id,userId:a.members.userId}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,e.member),(0,t.u)(a.members.role,"owner"))).limit(1);return i?{telegramUserId:e.tg,memberId:i.id,userId:i.userId}:null}let N=async()=>await D()!==null;async function E(e,n,i){let o=await R(I);if(!o||"string"!=typeof o.hash||"string"!=typeof o.member||"string"!=typeof o.expiresAt)return"expired";if(Date.parse(o.expiresAt)<=i.getTime())return await _(I),"expired";let s="number"==typeof o.tries?o.tries:0;if(!function(e,t){if(e.length!==t.length||!e)return!1;let r=0;for(let a=0;a<e.length;a++)r|=e.charCodeAt(a)^t.charCodeAt(a);return 0===r}(8===e.length?g(e):"",o.hash))return s+1>=5?await _(I):await x(I,{...o,tries:s+1}),"wrong";let[l]=await (0,r.f)().select({id:a.members.id}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,o.member),(0,t.u)(a.members.role,"owner"))).limit(1);return(await _(I),l)?(await x(v,O(JSON.stringify({tg:n,member:l.id}),i)),"linked"):"expired"}async function C(){let e=j(await R($));if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>!!e&&"string"==typeof e.id&&"string"==typeof e.label&&"string"==typeof e.at).slice(0,10):[]}catch{return[]}}async function M(e,t){var r;let a,n=(r=await C(),(a=r.find(t=>t.id===e.id))&&a.label===e.label&&t.getTime()-Date.parse(a.at)<36e5&&r[0]?.id===e.id?null:[{id:e.id,label:e.label,at:t.toISOString()},...r.filter(t=>t.id!==e.id)].slice(0,10));n&&await x($,O(JSON.stringify(n),t))}e.s(["E",0,D,"I",0,N,"P",0,M,"f",0,E,"v",0,S,"g",0,P],983128)},620511,e=>{let t=/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/,r=/^watchpost\/deps-[0-9a-f]{8}$/,a=/^(?:[A-Za-z0-9._-]+\/){0,4}package-lock\.json$/,n=e=>"string"==typeof e&&t.test(e)&&!e.includes("..");e.s(["h",0,"deps.lockfileActions","w",0,6e5,"C",0,function(e){let t=e.lockfilePath??"package-lock.json";return!n(e.repo)||!r.test(e.branch)||!a.test(t)||t.includes("..")||!Number.isInteger(e.prNumber)||e.prNumber<1?null:{repo:e.repo,branch:e.branch,lockfile:t,pr:e.prNumber}},"g",0,function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e.repo:null;return{repo:n(t)?t:null}}])},975912,e=>{var t=e.i(250474),r=e.i(32391),a=e.i(313931);let n=["dependencies","devDependencies","optionalDependencies"],i="watchpost/deps-",o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};e.s(["M",0,function(e,t){let r;try{r=JSON.parse(e)}catch{return null}if(!o(r))return null;for(let e of t){let t=r[e.group];if(!o(t)||t[e.package]!==e.from)return null;t[e.package]=e.to}let a=/^[{[]\r?\n([ \t]+)\S/.exec(e),n=a?a[1]:" ",i=e.includes("\r\n")?"\r\n":"\n",s=JSON.stringify(r,null,n);return"\r\n"===i&&(s=s.replace(/\n/g,"\r\n")),/\r?\n$/.test(e)?s+i:s},"U",0,function(e){let t=e.map(e=>`${e.package}@${e.to}`).sort().join(",");return`${i}${function(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193)>>>0;return t.toString(16).padStart(8,"0")}(t)}`},"G",0,function(e){return 1===e.length?`chore(deps): update ${e[0].package} to ${e[0].fixed} (security fix)`:`chore(deps): update ${e.length} packages for security fixes`},"c",0,(e,t)=>e.startsWith(i)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(e)&&e!==t,"k",0,function(e,a){let i;try{i=JSON.parse(e)}catch{return null}if(!o(i))return null;let s=[];for(let e of a)if((0,r.L)(e.package)&&(0,r.C)(e.to))for(let a of n){let n=i[a];if(!o(n)||"string"!=typeof n[e.package])continue;let l=n[e.package],u=(0,r.Y)(l),d=function(e,t){let a=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(e);return a&&(0,r.C)(t)?`${a[1]??""}${t}`:null}(l,e.to);!u||!d||(0,t.f)(u,e.to)>=0||s.push({package:e.package,group:a,from:l,to:d,fixed:e.to,vulnIds:e.vulnIds,cves:e.cves})}return s},"y",0,function(e,t,r=!1){let n=s[t??"npm"]??"npm install",i=e.map(e=>{let t=[...e.cves,...e.vulnIds.filter(t=>!e.cves.includes(t))].slice(0,4).map(e=>`[${e}](https://osv.dev/vulnerability/${encodeURIComponent(e)})`).join(", ");return`| \`${e.package}\` | \`${e.from}\` | \`${e.to}\` | ${t||"-"} |`});return[r?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":a.J.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...i,"","### Important: the lockfile is not updated","",r?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards run \`${n}\` on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, run \`${n}\`, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(e){let t=1===e.length?`Watchbell: update ${e[0].package} to ${e[0].fixed} (security fix)`:`Watchbell: update ${e.length} vulnerable packages (${e.slice(0,2).map(e=>e.package).join(", ")}${e.length>2?", …":""})`;return t.length>200?`${t.slice(0,199)}…`:t}])},256662,e=>{let t={checks:"waiting for CI",preview:"waiting for preview",smoke:"smoke test",merging:"merging…",merged:"merged ✅","ready-manual":"ready to merge (manual)",failed:"needs a look ⚠️",timeout:"needs a look ⚠️",closed:"closed"},r=new Set(["success","neutral","skipped"]),a=e=>"completed"!==e.status?"pending":r.has(e.conclusion??"")?"success":"failure";e.s(["X",0,["checks","preview","smoke","merging"],"w",0,15e3,"j",0,function(e){let t=(e.checkRuns??e.actionRuns??[]).map(a);return(e.combined&&e.combined.total>0&&t.push("success"===e.combined.state?"success":"pending"===e.combined.state?"pending":"failure"),t.includes("failure"))?"failure":t.includes("pending")?"pending":"success"},"L",0,function(e){if(!e.length||e.some(e=>e.authWall))return null;let t=e.find(e=>null===e.status||e.status<200||e.status>399);return t?{mode:"http",result:"fail",reason:null===t.status?`${t.path} didn't answer within 15 seconds`:`${t.path} answered ${t.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(e,t,r){return(401===e||403===e)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(t)||/_vercel_sso/i.test(r.get("set-cookie")??"")||"vercel"===(r.get("server")??"").toLowerCase())},"n",0,function(e,t,r){return null!==r&&r>0?{mode:"logs",result:"fail",reason:`${r} errors in the preview logs`}:t.getTime()-e.getTime()<18e4||null===r?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"E",0,function(e){let t=["/"];for(let r of e){let e;try{e=new URL(r).pathname||"/"}catch{continue}!t.includes(e)&&t.length<4&&t.push(e)}return t},"m",0,(e,r,a)=>{let n=`PR #${e}: ${t[r]}${a?` — ${a}`:""}`;return n.length>200?`${n.slice(0,199)}…`:n},"f",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<1e5))&&(Math.floor(r/6e4)%2==0||null!==t&&r-t>=24e4)},"M",0,function(e){if(e.pr.merged)return{kind:"done",stage:"merged"};if("closed"===e.pr.state)return{kind:"done",stage:"closed"};if(e.pr.headSha!==e.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:e.pr.headSha};let t=e.now.getTime()-e.openedAt.getTime()>27e5;return"failure"===e.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===e.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===e.preview.state||"canceled"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"pending"===e.checks||null===e.pr.mergeable?t?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==e.preview.state?t?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:e.smoke&&"wait"!==e.smoke.result?"fail"===e.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${e.smoke.reason??"?"}`}:e.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:t?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}])},267841,e=>{var t=e.i(971724),r=e.i(105954),a=e.i(180473),n=e.i(600205),i=e.i(206033),o=e.i(455744),s=e.i(604147),l=e.i(975912),u=e.i(455037);async function d(e,t,r,a,n){let i,o=n.timeoutMs??8e3;try{i=await (n.fetch??fetch)(`https://api.github.com${t}`,{method:e,headers:{Authorization:`Bearer ${r}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==a?{"Content-Type":"application/json"}:{}},body:void 0!==a?JSON.stringify(a):void 0,signal:AbortSignal.timeout(o),cache:"no-store",redirect:"error"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(o/1e3)} seconds.`:"Couldn't reach GitHub."}}let s=await i.text().catch(()=>""),l=null;try{l=s?JSON.parse(s):null}catch{l=null}if(i.ok)return{ok:!0,status:i.status,data:l};let u=i.status;return 401===u?{ok:!1,kind:"auth",status:u,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===u||403===u&&"0"===i.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:u,error:"GitHub's rate limit is used up for now. Try again later."}:403===u?{ok:!1,kind:"scope",status:u,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===u?{ok:!1,kind:"missing",status:u,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===u||422===u?{ok:!1,kind:"format",status:u,error:`GitHub refused the change (${u}).`}:{ok:!1,kind:"transient",status:u,error:`GitHub returned an error (${u}).`}}let c=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`}),p={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function f(e,n,i={}){if(!(0,u.M)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(n)}`,e,void 0,i);if(!o.ok)return o;let s=t.z.object({default_branch:r.z.string(),permissions:t.z.object({push:a.z.boolean()}).partial().optional()}).safeParse(o.data);return s.success&&(0,u.c)(s.data.default_branch)?{ok:!0,data:{defaultBranch:s.data.default_branch,canPush:s.data.permissions?.push??null}}:c("the repository")}async function m(e,a,n,i={}){if(!(0,u.M)(a)||!(0,u.c)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(a)}/git/ref/heads/${n.split("/").map(encodeURIComponent).join("/")}`,e,void 0,i);if(!o.ok)return"missing"===o.kind?{ok:!0,data:null}:o;let s=t.z.object({object:t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(o.data);return s.success?{ok:!0,data:s.data.object.sha}:c("the branch")}async function g(e,a,i,o={}){if(!(0,u.M)(a)||!(0,u.c)(i))return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/contents/package.json?ref=${encodeURIComponent(i)}`,e,void 0,o);if(!s.ok)return"missing"===s.kind?{ok:!0,data:null}:s;let l=t.z.object({sha:r.z.string(),encoding:n.z.literal("base64"),content:r.z.string()}).safeParse(s.data);return l.success?{ok:!0,data:{sha:l.data.sha,text:Buffer.from(l.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:c("package.json")}async function h(e,t,r,a,n,i={}){if(!(0,u.M)(t)||!(0,l.c)(r,n)||!/^[0-9a-f]{40}$/.test(a))return p;let o=await d("POST",`/repos/${(0,u.f)(t)}/git/refs`,e,{ref:`refs/heads/${r}`,sha:a},i);return o.ok?{ok:!0,data:!0}:o}async function k(e,t,r,a,n,i,o,s={}){if(!(0,u.M)(t)||!(0,l.c)(r,a))return p;let c=await d("PUT",`/repos/${(0,u.f)(t)}/contents/package.json`,e,{message:o,content:Buffer.from(n,"utf8").toString("base64"),sha:i,branch:r},s);return c.ok?{ok:!0,data:!0}:c}let y=t.z.object({number:i.z.number(),html_url:r.z.string().startsWith("https://github.com/")});async function w(e,t,r,a,n,i={}){if(!(0,u.M)(t)||!(0,l.c)(a,n))return p;let s=new URLSearchParams({state:"open",head:`${r}:${a}`,per_page:"1"}),f=await d("GET",`/repos/${(0,u.f)(t)}/pulls?${s}`,e,void 0,i);if(!f.ok)return f;let m=o.z.array(y).safeParse(f.data);if(!m.success)return c("the pull requests");let g=m.data[0];return{ok:!0,data:g?{number:g.number,url:g.html_url}:null}}async function b(e,t,r,a,n,i,o={}){if(!(0,u.M)(t)||!(0,l.c)(r,a)||!(0,u.c)(a))return p;let s=await d("POST",`/repos/${(0,u.f)(t)}/pulls`,e,{title:n,head:r,base:a,body:i,maintainer_can_modify:!0},o);if(!s.ok)return s;let f=y.safeParse(s.data);return f.success?{ok:!0,data:{number:f.data.number,url:f.data.html_url}}:c("the new pull request")}let v=o.z.array(t.z.object({number:i.z.number(),title:r.z.string(),head:t.z.object({ref:r.z.string(),sha:r.z.string(),repo:t.z.object({full_name:r.z.string()}).nullable()}),base:t.z.object({ref:r.z.string()})}));async function I(e,t,r={}){if(!(0,u.M)(t))return p;let a=await d("GET",`/repos/${(0,u.f)(t)}/pulls?state=open&per_page=100`,e,void 0,r);if(!a.ok)return a;let n=v.safeParse(a.data);return n.success?{ok:!0,data:n.data.filter(e=>/^watchpost\/deps-[0-9a-f]{8}$/.test(e.head.ref)&&e.head.repo?.full_name===t).map(e=>({number:e.number,branch:e.head.ref,title:e.title,headSha:e.head.sha,base:e.base.ref}))}:c("the pull requests")}async function $(e,n,i,o={}){if(!(0,u.M)(n)||!Number.isInteger(i)||i<=0)return p;let l=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${i}`,e,void 0,o);if(!l.ok)return l;let f=t.z.object({state:s.z.enum(["open","closed"]),merged:a.z.boolean().optional(),mergeable:a.z.boolean().nullable().optional(),head:t.z.object({ref:r.z.string(),sha:r.z.string().regex(/^[0-9a-f]{40}$/)}),base:t.z.object({ref:r.z.string()})}).safeParse(l.data);return f.success?{ok:!0,data:{state:f.data.state,merged:!0===f.data.merged,mergeable:f.data.mergeable??null,headSha:f.data.head.sha,branch:f.data.head.ref,base:f.data.base.ref}}:c("the pull request")}async function A(e,a,n,s={}){if(!(0,u.M)(a)||!/^[0-9a-f]{40}$/.test(n))return p;let[l,c]=await Promise.all([d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/check-runs?per_page=100`,e,void 0,s),d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/status`,e,void 0,s)]),f=e=>!e.ok&&("scope"===e.kind||"missing"===e.kind);if(!l.ok&&!f(l))return l;if(!c.ok&&!f(c))return c;let m=l.ok?t.z.object({check_runs:o.z.array(t.z.object({status:r.z.string(),conclusion:r.z.string().nullable()}))}).safeParse(l.data):null,g=c.ok?t.z.object({state:r.z.string(),total_count:i.z.number()}).safeParse(c.data):null;return{ok:!0,data:{checkRuns:m?.success?m.data.check_runs.map(e=>({status:e.status,conclusion:e.conclusion})):null,combined:g?.success?{state:g.data.state,total:g.data.total_count}:null}}}async function R(e,n,i,o,s,f,m,g={}){if(!(0,u.M)(n)||!(0,l.c)(o,s)||!/^[0-9a-f]{40}$/.test(f)||!Number.isInteger(i)||i<=0)return p;let h=await d("PUT",`/repos/${(0,u.f)(n)}/pulls/${i}/merge`,e,{merge_method:"squash",sha:f,commit_title:`Watchbell: ${m.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},g);if(!h.ok)return 405===h.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===h.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:h;let k=t.z.object({merged:a.z.boolean(),sha:r.z.string()}).safeParse(h.data);return k.success&&k.data.merged?{ok:!0,data:{sha:k.data.sha}}:c("the merge")}async function x(e,t,r,a={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(t))return p;let n=await d("POST",`/repos/${t}/dispatches`,e,{event_type:"watchpost-lockfile",client_payload:r},a);return n.ok?{ok:!0,data:!0}:n}e.s(["M",0,m,"s",0,A,"k",0,h,"y",0,b,"B",0,x,"E",0,g,"C",0,R,"x",0,w,"e",0,I,"b",0,$,"D",0,k,"H",0,f])},154586,e=>{var t=e.i(278619),r=e.i(313931);let a={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},n={MonitorDown:"workloads",HighLatency:"workloads",DeploymentFailed:"workloads",DatabasePaused:"databases",StorageAlmostFull:"databases",NeonComputeHigh:"databases",FirestoreQuotaHigh:"databases",AutoPauseRisk:"databases",ComputeHigh:"databases",DbQuotaHigh:"databases",CertExpiringSoon:"network",DomainExpiringSoon:"network",DnsProxiedToVercel:"network",CollectorStale:"observe",CredentialExpiring:"admin",VulnerableDependency:"workloads"},i=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency"]);e.s(["p",0,function(e){if((0,t.h)(e.ruleKey))return i.has(e.ruleKey)&&null!==e.resourceKind&&"app"!==e.resourceKind?"observe":n[e.ruleKey];let r=new Set(e.ruleKey.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),a=(...e)=>e.some(e=>r.has(e));return a("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":a("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":a("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":a("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===e.resourceKind?"workloads":"observe"},"y",0,e=>r.X.proposedBy(a[e])])},549419,143926,e=>{var t=e.i(635982),r=e.i(377489),a=e.i(154586),n=e.i(365156);let i=["LogErrorSpike","LogErrors","LogDbErrors"],o="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(o,"i");let s=/^dpl_[A-Za-z0-9]{8,40}$/,l=/^ep-[a-z0-9-]{3,60}$/,u=/^[a-z0-9]{8,40}$/;function d(e,a,n){let i=a?(0,t.f)(a,n,120):"";return(0,r.l)((0,t.f)(i?`${e}. Most common: ${i}`:e,n,r.j)||e,r.j)}let c=e=>`${e.ruleKey}:${e.resourceId??""}:${e.action}`,p=new Set(["pending","approved","running"]);e.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,o,"G",0,20,"T",0,i,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(e,t,r){let a=new Set(t.filter(e=>p.has(e.status)||null!==e.closedAt&&r.getTime()-e.closedAt.getTime()<72e5).map(c)),n=new Set;return e.filter(e=>{let t=c(e);return!(a.has(t)||n.has(t))&&(n.add(t),!0)})},"t",0,function(e,t,i){return(function(e,t,r){let a=[],n=r.getTime();if(null!==e.liveAt&&n-e.liveAt.getTime()<72e5&&e.liveAt.getTime()<=n&&e.errorsSinceLive>=Math.max(10,Math.ceil(5*e.baselineErrors/24))&&e.currentId&&e.previousId&&s.test(e.previousId)&&e.previousId!==e.currentId){let r=`${e.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((n-e.liveAt.getTime())/6e4))} min ago (${e.baselineErrors} in the 24 h before)`;a.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:e.appId,targetRef:e.previousId,reason:d(r,e.topSinceLive,t)})}let i=null!==e.lastDeployAt&&n-e.lastDeployAt.getTime()<72e5;if(e.errors30>=20&&!i&&e.httpMonitorId&&a.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:e.appId,targetRef:e.httpMonitorId,reason:d(`${e.errors30} errors in the last 30 min`,e.top30,t)}),e.dbErrors30>=3&&e.db){let r=d(`${e.dbErrors30} database connection errors in the last 30 min`,e.topDb,t),n=e.db;("neon_project"===n.kind||"neon_branch"===n.kind)&&n.wakeEndpoint&&l.test(n.wakeEndpoint)?a.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.wakeEndpoint,reason:r}):"supabase_project"===n.kind&&n.supabasePaused&&n.supabaseRef&&u.test(n.supabaseRef)&&a.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:n.kind,resourceId:n.resourceId,targetRef:n.supabaseRef,reason:r})}return a})(e,t,i).map(o=>{let s="app"===o.resourceKind?(0,r.J)("app",e.appId,e.appName,t):(0,r.J)(o.resourceKind,o.resourceId,null,t);return{alertId:null,ruleKey:o.ruleKey,room:o.room,action:o.action,risk:n.H[o.action].risk,title:(0,r.M)(o.action,s),reason:o.reason,resourceKind:o.resourceKind,resourceId:o.resourceId,resourceName:s,targetRef:o.targetRef,proposedBy:(0,a.y)(o.room),expiresAt:new Date(i.getTime()+n.V)}})},"D",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<27e4))&&(Math.floor(r/6e4)%5==0||null!==t&&r-t>=6e5)},"W",0,function(e,t){let r=new Set(t.map(c));return e.filter(e=>{let t;return"pending"===e.status&&(t=e.ruleKey,i.includes(t))&&!r.has(c(e))}).map(e=>e.id)}],549419);let f=new Set(["MonitorDown","LogErrorSpike"]);e.s(["r",0,72e5,"M",0,f,"s",0,function(e,t){let r=e=>({ok:!1,why:e});if(!e.setting.enabled)return r("off");if(!e.ruleKey||!f.has(e.ruleKey))return r("rule");let a=e.deploy;if(!a||!a.liveAt)return r("no live deploy");let n=t.getTime()-a.liveAt.getTime();return n<0||n>6e4*e.setting.windowMin?r("outside the window"):a.previousId&&e.targetRef===a.previousId&&a.previousId!==a.currentId?a.newestProdCreatedAt&&a.currentCreatedAt.getTime()<a.newestProdCreatedAt.getTime()?r("live deploy is a rollback"):e.rolledOrPromotedLately?r("live deploy came from a rollback or promote"):"ready"!==(a.previousState??"").toLowerCase()?r("previous not ready"):!a.previousCreatedAt||t.getTime()-a.previousCreatedAt.getTime()>2592e6?r("previous too old"):e.autoLately?r("auto-rollback within 2 h"):e.sameDeployBefore?r("already rolled back once"):e.inFlight?r("another auto-rollback is running"):{ok:!0}:r("target changed")},"u",0,(e,t,a)=>(0,r.l)(`Automatic: the new deploy ${e} errored in the first ${t} minutes. ${a}`),"E",0,e=>e.currentSha&&/^[0-9a-f]{7,40}$/i.test(e.currentSha)?e.currentSha.slice(0,7):e.currentId.slice(0,16)],143926)},447933,e=>{let t;var r,a=e.i(875225),n=e.i(518899),i=e.i(924924),o=e.i(313931),s=e.i(618916),l=e.i(209576),u=e.i(532148),d=e.i(433609),c=e.i(111970),p=e.i(154491),f=e.i(125160),m=e.i(984125),g=e.i(326003),h=e.i(298397),k=e.i(291029),y=e.i(377489),w=e.i(549419),b=e.i(143926),v=e.i(442565),I=e.i(349129),$=e.i(895625),A=e.i(547499),R=e.i(407602),x=e.i(582931),_=e.i(629955),j=e.i(309055),O=e.i(145647),T=e.i(479301);async function P(e){if(!(0,T.f)(e))return null;let[t]=await (0,i.f)().select({id:s.resources.id,kind:s.resources.kind,externalId:s.resources.externalId,parentId:s.resources.parentId}).from(s.resources).where((0,a.b)((0,a.u)(s.resources.id,e),(0,a.y)(s.resources.kind,["neon_project","neon_branch"]),(0,a.M)(s.resources.goneAt))).limit(1);if(!t)return null;let r="neon_branch"===t.kind?t.parentId:t.id;if(!r)return null;let[n]=await (0,i.f)().select({data:s.snapshots.data}).from(s.snapshots).where((0,a.u)(s.snapshots.resourceId,r)).limit(1),o=(0,g.k)(g.s,n?.data);return{projectResourceId:r,branchExternalId:"neon_branch"===t.kind?t.externalId:null,computeSeconds:o.computeSeconds??null,periodEnd:o.periodEnd??null}}var S=e.i(472832),D=e.i(800366),N=e.i(628448),E=e.i(443917);let C=`This project used its ${D.a.cuHours} CU-hours; the compute won't start until the quota resets.`;async function M(e,t,r){var a;if(a=new Date,!((t.computeSeconds??0)<3600*D.a.cuHours)&&(!t.periodEnd||new Date(t.periodEnd).getTime()>a.getTime()))return{done:!1,message:C};let n=e.resource.externalId,i=await (0,E.c)(e.token,n,r);if(!i.ok)return{done:!1,message:"missing"===i.kind?N.G:i.error};if(i.data.id!==r||t.branchExternalId&&i.data.branchId!==t.branchExternalId)return{done:!1,message:N.G};if(i.data.disabled)return{done:!1,message:"Neon has disabled this compute, so it can't be started from here."};if("active"===i.data.state)return{done:!1,message:"Already running."};if("init"===i.data.state||"active"===i.data.pendingState)return{done:!1,message:"Already starting."};let o=await (0,E.d)(e.token,n,r);if(o.ok)return{done:!0,message:`Waking ${r}. Ready in a few seconds.`,audit:{message:`Wake requested \xb7 ${r}`,resourceId:e.resource.id}};let s="scope"===o.kind?(0,N.b)("neon",{project:e.resource.name}):"missing"===o.kind?N.G:o.error;return{done:!1,failed:{ok:!1,kind:o.kind,error:s,...o.status?{status:o.status}:{}},audit:{message:`Wake failed \xb7 ${r}`,resourceId:e.resource.id}}}async function K(e,t){let r=t.resource.name;if(e.ok||r.trim().length<2||!e.error.includes(r))return e;let a=await (0,l.f)().catch(()=>null);return{...e,error:a?(0,h.J)(e.error,a,t.resource.id):e.error.split(r).join("db-?")}}async function z(e,t,r,a=S.W){let n=await (0,S.q)(e.id,"wake",r);if(n)return{ok:!1,error:n};let i=await P(t),o=i?await (0,S.p)(i.projectResourceId,"neon_project"):null;return i&&o?K(await a(await M(o,i,r),e,o.account.id),o):{ok:!1,error:N.G}}var H=e.i(11827),B=e.i(843448),L=e.i(342833);let V=e=>`Supabase is busy with this project (${(0,B.P)(e).label.toLowerCase()}). Try again in a few minutes.`,G=(e,t,r)=>({done:!1,failed:{ok:!1,kind:e.kind,error:"scope"===e.kind?(0,N.b)("supabase",{}):e.error,...e.status?{status:e.status}:{}},audit:{message:t,resourceId:r}});async function W(e,t,r,a,n=S.W){let i,o=await (0,S.q)(t.id,e,r);if(o)return{ok:!1,error:o};let s=await (0,S.p)(r,"supabase_project");if(!s)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};if(s.resource.externalId!==a)return{ok:!1,error:N.G};let l=s.resource.externalId,u=s.resource.name,d=await (0,L.e)(s.token,l);if(!d.ok)return n({done:!1,message:"scope"===d.kind||"auth"===d.kind?d.error:`Couldn't read this project's status at Supabase: ${d.error}`},t,s.account.id);let c=d.data.status;if("pause"===e){if("INACTIVE"===c||"PAUSING"===c||"GOING_DOWN"===c)return n({done:!1,message:"Already paused."},t,s.account.id);if(!c.startsWith("ACTIVE_"))return n({done:!1,message:V(c)},t,s.account.id);let e=await (0,L.c)(s.token,l);i=e.ok?{done:!0,message:`Pausing ${u}. It takes about 2 minutes.`,audit:{message:`${H.B}${u}`,resourceId:r}}:"transient"===e.kind&&void 0===e.status?{done:!1,failed:{ok:!1,kind:"transient",error:`${e.error} The pause may still have happened; check the project in a few minutes before restoring it.`},audit:{message:`${H.B}${u}`,resourceId:r}}:G(e,`Pause failed \xb7 ${u}`,r)}else{if(c.startsWith("ACTIVE_")||"RESTORING"===c||"COMING_UP"===c)return n({done:!1,message:"Already active or restoring."},t,s.account.id);if("INACTIVE"!==c)return n({done:!1,message:V(c)},t,s.account.id);let e=await (0,L.W)(s.token);if(!e.ok)return n({done:!1,message:`Couldn't count this account's free slots just now: ${e.error}`},t,s.account.id);let a=await (0,_.m)(s.account.id);if(0>=(0,_.G)(e.data,a,d.data.orgSlug))return n({done:!1,message:"This account already uses both free slots. Pause one of its active projects first; Restore stays blocked until it shows Paused."},t,s.account.id);let o=await (0,L.G)(s.token,l);i=o.ok?{done:!0,message:`Restoring ${u}. It takes about 2 minutes.`,audit:{message:`Restore requested \xb7 ${u}`,resourceId:r}}:G(o,`Restore failed \xb7 ${u}`,r)}return n(i,t,s.account.id)}var U=e.i(177706);function q(e,t,r){if("building"===e.state)return"building";if(null!==t&&e.id===t)return"current";if("error"===e.state)return"failed";if("preview"===e.target)return"ready"===e.state?"preview":"other";if("ready"!==e.state||null===t)return"other";let a=r.find(e=>e.id===t);if(!a)return"other";if(e.createdAt.getTime()>a.createdAt.getTime())return"staged";let n=r.filter(e=>"ready"===e.state&&e.id!==t&&e.createdAt.getTime()<a.createdAt.getTime()).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0];return n?.id===e.id?"previous":"other"}let F=e=>({done:!1,message:e}),J=(e,t)=>e?.sha?e.sha.slice(0,7):t;async function X(e,t,r){let a=await (0,S.q)(e.id,t,r);if(a)return a;let n=await (0,S.p)(r,"app"),i=n?.resource.meta.teamId;if(!n||"string"!=typeof i||!i||!n.resource.externalId)return"This app or its Vercel credential isn't available any more. Reload the page.";let o=n.resource.meta.teamSlug;return{member:e,t:n,appId:r,app:n.resource.name,teamId:i,teamSlug:"string"==typeof o?o:"",projectId:n.resource.externalId}}async function Z(e){let[t,r]=await Promise.all([(0,U.c)(e.t.token,e.teamId,e.projectId),(0,U.r)(e.t.token,e.teamId,e.projectId)]);return t.ok?r.ok?{ok:!0,data:{name:t.data.name,currentId:t.data.currentId??r.data[0]?.id??null,production:r.data}}:r:t}async function Y(e,t,r,a,n=S.W){return n(t.ok?{done:!0,message:r.message,audit:{message:r.audit,resourceId:e.appId}}:{done:!1,failed:"scope"===t.kind?{ok:!1,kind:"scope",status:t.status,error:(0,N.b)("vercel",{team:e.teamSlug})}:404===t.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===t.kind?"auth":"format"===t.kind?"format":"transient",...t.status?{status:t.status}:{},error:t.error},audit:{message:a,resourceId:e.appId}},e.member,e.t.account.id)}async function Q(e,t,r,a=S.W){{let n=await X(e,"redeploy",t);if("string"==typeof n)return a(F(n),e,"");let i=await Z(n);if(!i.ok)return a(F(i.error),e,n.t.account.id);if(i.data.currentId!==r)return a(F(N.G),e,n.t.account.id);if(i.data.production.some(e=>"staged"===q(e,i.data.currentId,i.data.production)))return a(F("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),e,n.t.account.id);let o=await (0,U.N)(n.t.token,n.teamId,n.projectId);if(!o.ok)return a(F(o.error),e,n.t.account.id);if(o.data)return a(F(`A production build of ${n.app} is already running.`),e,n.t.account.id);let s=J(i.data.production.find(e=>e.id===r),r),l=await (0,U.L)(n.t.token,n.teamId,{projectId:n.projectId,name:i.data.name,deploymentId:r});return Y(n,l,{message:`Redeploy requested. Vercel is building ${n.app} again.`,audit:`Redeploy requested \xb7 ${n.app} \xb7 ${s}`},`Redeploy failed \xb7 ${n.app} \xb7 ${s}`,a)}}async function ee(e,t,r,a=S.W){{let n=await X(e,"rollback",t);if("string"==typeof n)return a(F(n),e,"");let i=await Z(n);if(!i.ok)return a(F(i.error),e,n.t.account.id);if(i.data.currentId===r)return a(F("Already live."),e,n.t.account.id);let o=i.data.production.find(e=>e.id===r);if(!o||"previous"!==q(o,i.data.currentId,i.data.production))return a(F("Hobby can only roll back to the previous production deployment."),e,n.t.account.id);let s=J(o,r),l=await (0,U.E)(n.t.token,n.teamId,n.projectId,r);return Y(n,l,{message:`Rolled back ${n.app} to ${s}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${n.app} → ${s}`},`Roll back failed \xb7 ${n.app} → ${s}`,a)}}var et=e.i(189104),er=e.i(593111),ea=e.i(425498),en=e.i(77193),ei=e.i(570191),eo=e.i(365156);let es={checkMonitorNow:j.X,keepAliveNow:_.v,wakeAs:z,supabaseAct:W,redeployAs:Q,rollbackAs:ee,finish:S.W,recordAction:R.f,limit:er.f,bumpPrAs:x.W,autoSecurity:()=>(0,ei.X)(),recheckDomain:O._};async function el(){let[e]=await (0,i.f)().select({at:s.collectorRuns.startedAt}).from(s.collectorRuns).where(n.B`(${s.collectorRuns.trigger} = 'vercel_cron' or (${s.collectorRuns.trigger} = 'manual' and ${s.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,I.A)(s.collectorRuns.startedAt)).limit(1);return e?.at??null}async function eu(e){let t=await (e.lastDailyRunAt??el)(),r=(e.now??(()=>new Date))();if(t&&r.getTime()-t.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let a=(e.dailyTarget??function(){let e=(0,$.f)();return e?{url:`${(0,A.f)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:e.CRON_SECRET}:null})();if(!a)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let t=await (e.fetch??fetch)(a.url,{headers:{Authorization:`Bearer ${a.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!t.ok||t.status>=300)return{ok:!1,error:`The daily job route answered ${t.status}.`};return{ok:!0,message:`Daily job ran again (${t.status}).`}}catch(e){if(e instanceof Error&&("TimeoutError"===e.name||"AbortError"===e.name))return{ok:!0,message:"Daily job started; it's still running — the heartbeat turns Up when it finishes."};throw e}}let ed="The proposal's target is missing, so it can't run.";async function ec(e,t,r=es){let a="auto"===t,n=a?{id:y.e,userId:null}:{id:t.id,userId:t.userId},i=(e,t,n)=>r.finish(e,t,n,{refresh:!1,...a?{auditPrefix:y.v}:{}});try{if(!e.resourceId||!e.targetRef)return{ok:!1,error:ed};if((0,en.W)()&&"recheck"!==e.action)return await r.recordAction({kind:"ok",message:`${a?y.v:""}${eo.H[e.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:e.resourceId,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:ea.r};switch(e.action){case"recheck":{let t=await r.limit(et.t.check,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,et.H)(t.retryAfter)}.`};let i=await r.checkMonitorNow(e.targetRef);if(!i.ok)return{ok:!1,error:i.error};if(i.audit)try{await r.recordAction({kind:!1===i.passed?"err":"ok",...i.audit,message:`${a?y.v:""}${i.audit.message}`,actorUserId:n.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:i.message}}case"domain_recheck":{let t=await r.limit(et.t.domainCheck,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,et.H)(t.retryAfter)}.`};let i=await (r.recheckDomain??O._)(e.targetRef);if(!i.ok)return i;return await r.recordAction({kind:"ok",...i.audit,message:`${a?y.v:""}${i.audit.message}`,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"daily_rerun":return await eu(r);case"neon_wake":return await r.wakeAs(n,e.resourceId,e.targetRef,i);case"supabase_keepalive":return await r.keepAliveNow(n,e.resourceId,i);case"supabase_restore":return await r.supabaseAct("restore",n,e.resourceId,e.targetRef,i);case"vercel_redeploy":return await r.redeployAs(n,e.resourceId,e.targetRef,i);case"vercel_rollback":return await r.rollbackAs(n,e.resourceId,e.targetRef,i);case"github_bump_pr":{let t=a?await (r.autoSecurity??ei.X)():null;if(a&&!t?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (r.bumpPrAs??x.W)(n,e.resourceId,e.targetRef,i,{proposalId:e.proposalId??null,...t?{auto:{severities:t.severities}}:{}})}default:return{ok:!1,error:ed}}}catch(e){return console.warn(`${o.X.logTag}/proposals run failed:`,e instanceof Error?e.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}let ep={id:k.O.id,room:k.O.room,action:k.O.action,risk:k.O.risk,title:k.O.title,reason:k.O.reason,resourceName:k.O.resourceName,proposedBy:k.O.proposedBy,status:k.O.status,auto:k.O.auto,result:k.O.result,createdAt:k.O.createdAt,decidedAt:k.O.decidedAt,expiresAt:k.O.expiresAt},ef={...ep,resourceId:k.O.resourceId,targetRef:k.O.targetRef,ruleKey:k.O.ruleKey};async function em(e,t,r){let o=(0,y.z)(e,t),[l,u,c,p,f,m]=await Promise.all([o.monitorIds.length?(0,i.f)().select({id:s.monitors.id,kind:s.monitors.kind}).from(s.monitors).where((0,a.y)(s.monitors.id,o.monitorIds)):[],o.deployApps.length?(0,i.f)().select({app:s.deployments.resourceId,id:s.deployments.externalId,isCurrent:s.deployments.isCurrent,isPrevious:s.deployments.isPreviousProduction,readyAt:s.deployments.readyAt,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,o.deployApps),(0,a.F)((0,a.u)(s.deployments.isCurrent,!0),(0,a.u)(s.deployments.isPreviousProduction,!0)))):[],o.supabaseIds.length?(0,i.f)().select({id:s.resources.id,ref:s.resources.externalId}).from(s.resources).where((0,a.b)((0,a.y)(s.resources.id,o.supabaseIds),(0,a.u)(s.resources.kind,"supabase_project"),n.B`${s.resources.goneAt} is null`)):[],o.monitorApps.length?eh(o.monitorApps):new Map,o.depApps.length?(0,d.C)(o.depApps).catch(()=>new Map):new Map,o.monitorIds.length?eg(o.monitorIds):null]),g=new Map;for(let e of u){let t=g.get(e.app)??{currentId:null,previousId:null,liveAt:null};e.isCurrent?(t.currentId=e.id,t.liveAt=e.readyAt??e.createdAt??null):e.isPrevious&&(t.previousId=e.id),g.set(e.app,t)}return{monitorKinds:new Map(l.map(e=>[e.id,String(e.kind)])),deploys:g,...void 0!==r?{rollbackWindowMs:r}:{},supabaseRefs:new Map(c.map(e=>[e.id,e.ref])),neonSuspended:p,fixableRepos:f,dailyHeartbeatId:m}}async function eg(e){let t=(0,f.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!t)return null;let[r]=await (0,i.f)().select({id:s.monitors.id}).from(s.monitors).where((0,a.b)((0,a.y)(s.monitors.id,e),(0,a.u)(s.monitors.kind,"heartbeat"),(0,a.u)(s.monitors.tokenHash,(0,m.f)(t)))).limit(1).catch(()=>[]);return r?.id??null}async function eh(e){let t=await (0,i.f)().select({app:s.links.fromResourceId,id:s.resources.id,kind:s.resources.kind,externalId:s.resources.externalId,parentId:s.resources.parentId}).from(s.links).innerJoin(s.resources,(0,a.u)(s.resources.id,s.links.toResourceId)).where((0,a.b)((0,a.y)(s.links.fromResourceId,e),(0,a.u)(s.links.kind,"uses_db"),(0,a.y)(s.resources.kind,["neon_project","neon_branch"]),n.B`${s.resources.goneAt} is null`)),r=new Map;if(!t.length)return r;let o=e=>"neon_branch"===e.kind?e.parentId:e.id,l=[...new Set(t.map(o).filter(e=>!!e))];if(!l.length)return r;let u=new Map((await (0,i.f)().select({id:s.snapshots.resourceId,data:s.snapshots.data}).from(s.snapshots).where((0,a.y)(s.snapshots.resourceId,l))).map(e=>[e.id,(0,g.k)(g.s,e.data)]));for(let e of t){let t=o(e),a=t?u.get(t):void 0,n=a?(0,y.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null):null;n&&r.set(e.app,{resourceId:e.id,resourceKind:e.kind,endpointId:n})}return r}async function ek(e){if(!e.length)return[];let t=new Set((await (0,i.f)().select({alertId:k.O.alertId,action:k.O.action}).from(k.O).where((0,a.y)(k.O.alertId,[...new Set(e.map(e=>e.alertId))]))).map(e=>`${e.alertId}:${e.action}`)),r=e.filter(e=>!t.has(`${e.alertId}:${e.action}`));return r.length?(0,i.f)().insert(k.O).values(r.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ef):[]}async function ey(e,t,r,o){let[s]=await (0,i.f)().update(k.O).set({status:"approve"===t?"approved":"rejected",decidedBy:r,decidedAt:o}).where((0,a.b)((0,a.u)(k.O.id,e),(0,a.u)(k.O.status,"pending"),n.B`${k.O.expiresAt} > ${o.toISOString()}::timestamptz`)).returning(ef);if(s)return{status:"ok",proposal:(0,y.E)(s),row:s};let[l]=await (0,i.f)().select(ep).from(k.O).where((0,a.u)(k.O.id,e)).limit(1);return l?{status:"conflict",proposal:(0,y.E)(l)}:{status:"missing"}}async function ew(e,t){let[r]=await (0,i.f)().update(k.O).set({status:"running",claimedAt:t}).where((0,a.b)((0,a.u)(k.O.id,e),(0,a.u)(k.O.status,"approved"))).returning(ef);return r??null}async function eb(e,t,r,n){let[o]=await (0,i.f)().update(k.O).set({status:t?"done":"failed",result:r,finishedAt:n}).where((0,a.b)((0,a.u)(k.O.id,e),(0,a.u)(k.O.status,"running"))).returning(ef);return o??null}let ev={run:(e,t)=>ec(e,t),book:()=>(0,l.f)()};async function eI(e,t,r,a=ev){let n=await ew(e,r);if(!n)return null;let i=await a.run({action:n.action,resourceId:n.resourceId,targetRef:n.targetRef,proposalId:n.id},t),o=await a.book().catch(()=>h.a),s=await eb(e,i.ok,(0,y.x)(i,o),new Date);return s?(0,y.E)(s):null}async function e$(e,t){let r=await (0,i.f)().update(k.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,a.b)((0,a.u)(k.O.status,"pending"),(0,a.F)((0,a.S)(k.O.expiresAt,new Date(t.getTime()+1)),(0,a.b)((0,a.E)(k.O.alertId),e.length?(0,a.$)(k.O.alertId,e):n.B`true`)))).returning({id:k.O.id});return await (0,i.f)().update(k.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:t}).where((0,a.b)((0,a.u)(k.O.status,"running"),(0,a.S)(k.O.claimedAt,new Date(t.getTime()-y.L)))),r.length}async function eA(e){await (0,i.f)().delete(k.O).where((0,a.b)((0,a.S)(k.O.createdAt,new Date(e.getTime()-2592e6)),(0,a.$)(k.O.status,["pending","approved","running"])))}let eR=n.B`(${s.storedLogs.level} in ('error', 'fatal') or coalesce(${s.storedLogs.statusCode}, 0) >= 500)`,ex=n.B`coalesce(${s.deployments.readyAt}, ${s.deployments.createdAtProvider})`;async function e_(e){let t=await (0,i.f)().select({app:s.links.fromResourceId,id:s.resources.id,kind:s.resources.kind,externalId:s.resources.externalId,parentId:s.resources.parentId}).from(s.links).innerJoin(s.resources,(0,a.u)(s.resources.id,s.links.toResourceId)).where((0,a.b)((0,a.y)(s.links.fromResourceId,e),(0,a.u)(s.links.kind,"uses_db"),(0,a.y)(s.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,a.M)(s.resources.goneAt))),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,o=[...new Set(t.map(n).filter(e=>!!e))],l=new Map((o.length?await (0,i.f)().select({id:s.snapshots.resourceId,data:s.snapshots.data}).from(s.snapshots).where((0,a.y)(s.snapshots.resourceId,o)):[]).map(e=>[e.id,e.data]));for(let e of t){let t=l.get(n(e)??"");if("supabase_project"===e.kind){let a=(0,g.k)(g.B,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:null,supabaseRef:e.externalId,supabasePaused:"INACTIVE"===a.status})}else{let a=(0,g.k)(g.s,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:(0,y.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null),supabaseRef:null,supabasePaused:!1})}}return r}let ej={apps:async function(e){let t=new Date(e.getTime()-w.I-w.s),r=n.B`${s.storedLogs.at} >= ${new Date(e.getTime()-w.H).toISOString()}::timestamptz`,o=n.B`${s.storedLogs.message} ~* ${w.N}`,l=n.B`left(${s.storedLogs.message}, 200)`,u=(await (0,i.f)().select({appId:s.storedLogs.resourceId,appName:n.B`max(${s.resources.name})`,liveAt:n.B`max(${ex})`.mapWith(s.deployments.readyAt),currentId:n.B`max(${s.deployments.externalId})`,errorsSinceLive:n.B`count(*) filter (where ${eR} and ${s.storedLogs.at} >= ${ex})`.mapWith(Number),baselineErrors:n.B`count(*) filter (where ${eR} and ${s.storedLogs.at} >= ${ex} - interval '24 hours' and ${s.storedLogs.at} < ${ex})`.mapWith(Number),topSinceLive:n.B`mode() within group (order by ${l}) filter (where ${eR} and ${s.storedLogs.at} >= ${ex})`,errors30:n.B`count(*) filter (where ${eR} and ${r})`.mapWith(Number),top30:n.B`mode() within group (order by ${l}) filter (where ${eR} and ${r})`,dbErrors30:n.B`count(*) filter (where ${r} and ${o})`.mapWith(Number),topDb:n.B`mode() within group (order by ${l}) filter (where ${r} and ${o})`}).from(s.storedLogs).innerJoin(s.resources,(0,a.u)(s.resources.id,s.storedLogs.resourceId)).leftJoin(s.deployments,(0,a.b)((0,a.u)(s.deployments.resourceId,s.storedLogs.resourceId),(0,a.u)(s.deployments.isCurrent,!0))).where((0,a.b)((0,a.B)(s.storedLogs.at,t),(0,a.u)(s.resources.kind,"app"),(0,a.M)(s.resources.goneAt))).groupBy(s.storedLogs.resourceId)).filter(e=>e.errorsSinceLive>=w.w||e.errors30>=w.G||e.dbErrors30>=w.V);if(!u.length)return[];let d=u.map(e=>e.appId),[c,p,f]=await Promise.all([(0,i.f)().select({app:s.deployments.resourceId,previousId:n.B`max(${s.deployments.externalId}) filter (where ${s.deployments.isPreviousProduction})`,lastDeployAt:n.B`max(${s.deployments.createdAtProvider}) filter (where ${s.deployments.target} = 'production')`.mapWith(s.deployments.createdAtProvider)}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,d),(0,a.F)((0,a.u)(s.deployments.isPreviousProduction,!0),(0,a.B)(s.deployments.createdAtProvider,new Date(e.getTime()-w.v))))).groupBy(s.deployments.resourceId),(0,i.f)().select({app:s.monitors.resourceId,id:s.monitors.id}).from(s.monitors).where((0,a.b)((0,a.y)(s.monitors.resourceId,d),(0,a.u)(s.monitors.kind,"http"),(0,a.u)(s.monitors.paused,!1),(0,a.u)(s.monitors.ownerPaused,!1))).orderBy(s.monitors.createdAt),e_(d)]),m=new Map(c.map(e=>[e.app,e])),g=new Map;for(let e of p)g.has(e.app)||g.set(e.app,e.id);return u.map(e=>({...e,appName:e.appName??"",previousId:m.get(e.appId)?.previousId??null,lastDeployAt:m.get(e.appId)?.lastDeployAt??null,httpMonitorId:g.get(e.appId)??null,db:f.get(e.appId)??null}))},rows:async function(e){let t=n.B`coalesce(${k.O.finishedAt}, ${k.O.decidedAt}, ${k.O.expiresAt})`;return(0,i.f)().select({id:k.O.id,ruleKey:k.O.ruleKey,resourceId:k.O.resourceId,action:k.O.action,status:k.O.status,closedAt:t.mapWith(k.O.finishedAt)}).from(k.O).where((0,a.b)((0,a.M)(k.O.alertId),(0,a.y)(k.O.ruleKey,[...w.T]),(0,a.F)((0,a.y)(k.O.status,["pending","approved","running"]),n.B`${t} > ${new Date(e.getTime()-w.b).toISOString()}::timestamptz`)))}};async function eO(e,t,r=ej){let[n,o]=await Promise.all([r.apps(e),r.rows(e)]),s=n.flatMap(r=>(0,w.t)(r,t,e)),l=(0,w.W)(o,s),u=0;l.length&&(u=(await (0,i.f)().update(k.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:e}).where((0,a.b)((0,a.y)(k.O.id,l),(0,a.u)(k.O.status,"pending"))).returning({id:k.O.id})).length);let d=(0,w.x)(s,o,e);return d.length?{created:await (0,i.f)().insert(k.O).values(d.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ef),expired:u}:{created:[],expired:u}}let eT=null;async function eP(e,t){return(0,w.D)(e,eT)?(eT=e.getTime(),eO(e,await t())):{created:[],expired:0}}async function eS(e,t){return(await (0,i.f)().update(k.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(k.O.id,e),(0,a.u)(k.O.status,"pending"),(0,a.u)(k.O.risk,"safe"))).returning({id:k.O.id})).length>0}async function eD(e,t){let r=new Date(t.getTime()-b.r),[o,l,u,d]=await Promise.all([(0,i.f)().select({app:s.deployments.resourceId,id:s.deployments.externalId,sha:s.deployments.commitSha,state:s.deployments.state,isCurrent:s.deployments.isCurrent,isPrevious:s.deployments.isPreviousProduction,readyAt:s.deployments.readyAt,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,e),(0,a.F)((0,a.u)(s.deployments.isCurrent,!0),(0,a.u)(s.deployments.isPreviousProduction,!0)))),(0,i.f)().select({app:s.deployments.resourceId,at:n.B`max(${s.deployments.createdAtProvider})`.mapWith(s.deployments.createdAtProvider)}).from(s.deployments).where((0,a.b)((0,a.y)(s.deployments.resourceId,e),(0,a.u)(s.deployments.target,"production"),(0,a.u)(s.deployments.state,"ready"))).groupBy(s.deployments.resourceId),(0,i.f)().select({app:s.events.resourceId}).from(s.events).where((0,a.b)((0,a.u)(s.events.type,"action"),(0,a.y)(s.events.resourceId,e),(0,a.B)(s.events.at,r),n.B`${s.events.message} ~ ${eN}`)),(0,i.f)().select({app:k.O.resourceId,targetRef:k.O.targetRef,status:k.O.status,decidedAt:k.O.decidedAt}).from(k.O).where((0,a.b)((0,a.u)(k.O.action,"vercel_rollback"),(0,a.u)(k.O.auto,!0),(0,a.B)(k.O.createdAt,new Date(t.getTime()-26784e5))))]),c=new Map;for(let t of e){let e=o.find(e=>e.app===t&&e.isCurrent),a=o.find(e=>e.app===t&&e.isPrevious&&!e.isCurrent),n=d.filter(e=>e.app===t);c.set(t,{deploy:e?{currentId:e.id,currentSha:e.sha,liveAt:e.readyAt??e.createdAt,currentCreatedAt:e.createdAt,newestProdCreatedAt:l.find(e=>e.app===t)?.at??null,previousId:a?.id??null,previousState:a?.state??null,previousCreatedAt:a?.createdAt??null}:null,rolledOrPromotedLately:u.some(e=>e.app===t),autoLately:n.some(e=>null!==e.decidedAt&&e.decidedAt.getTime()>=r.getTime()),sameDeployBefore:!!a&&n.some(e=>e.targetRef===a.id)})}return{apps:c,inFlight:d.some(e=>"approved"===e.status||"running"===e.status)}}let eN="(Rolled back|Promoted|Preview promoted) ·";async function eE(e,t,r){return(await (0,i.f)().update(k.O).set({status:"approved",auto:!0,decidedAt:r,reason:t}).where((0,a.b)((0,a.u)(k.O.id,e),(0,a.u)(k.O.status,"pending"),(0,a.u)(k.O.action,"vercel_rollback"),n.B`not exists (select 1 from ops.action_proposals x where x.action = 'vercel_rollback' and x.auto and x.status in ('approved', 'running'))`)).returning({id:k.O.id})).length>0}async function eC(e,t,r,a){let n=e.filter(e=>"vercel_rollback"===e.action&&e.ruleKey&&b.M.has(e.ruleKey)&&e.resourceId);if(!n.length||!a.autoRollback||!a.rollbackContext||!a.approveAutoRollback)return[];let i=await a.autoRollback().catch(()=>null);if(!i?.enabled||15e3>r())return[];let s=[];try{let e=await a.rollbackContext([...new Set(n.map(e=>e.resourceId))],t),l=e.inFlight;for(let u of n){let n=e.apps.get(u.resourceId);if(!n||12e3>r())continue;let d=(0,b.s)({setting:i,ruleKey:u.ruleKey??null,targetRef:u.targetRef,inFlight:l,...n},t);if(!d.ok){console.log(`${o.X.logTag}/auto-rollback: skipped (${d.why})`);continue}let c=(0,b.E)(n.deploy);if(!await a.approveAutoRollback(u.id,(0,b.u)(c,i.windowMin,u.reason),new Date))continue;l=!0;let p=await a.execute(u.id,new Date);if(p){s.push(p),await (a.notifyRollback??v.q)(p,{reason:u.reason,newRef:c}).catch(()=>void 0);break}}}catch(e){console.warn(`${o.X.logTag}/auto-rollback failed:`,e instanceof Error?e.name:"error")}return s}async function eM(e,t){return(await (0,i.f)().update(k.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(k.O.id,e),(0,a.u)(k.O.status,"pending"),(0,a.u)(k.O.action,"github_bump_pr"))).returning({id:k.O.id})).length>0}async function eK(e,t,r){let a=e.filter(e=>"github_bump_pr"===e.action&&e.targetRef);if(!a.length||!r.autoSecurity||!r.bumpReady||!r.approveAutoBump)return[];let n=await r.autoSecurity().catch(()=>null);if(!n?.enabled||!n.severities.length)return[];let i=[];for(let e of a){if(15e3>t())break;try{let t=await r.bumpReady(e.targetRef,n.severities);if(!t.ok){console.log(`${o.X.logTag}/auto-security: waits for the owner (${t.why})`);continue}if(!await r.approveAutoBump(e.id,new Date))continue;let a=await r.execute(e.id,new Date);a&&i.push(a)}catch(e){console.warn(`${o.X.logTag}/auto-security failed:`,e instanceof Error?e.name:"error")}}return i}async function ez(e){return new Map((await (0,i.f)().select({id:s.accounts.id,provider:s.accounts.provider}).from(s.accounts).where((0,a.y)(s.accounts.id,e))).map(e=>[e.id,e.provider]))}let eH={firing:()=>(0,u.q)(),book:()=>(0,l.f)(),facts:em,create:ek,expire:e$,autoRun:ei.I,approveAuto:eS,execute:(e,t)=>eI(e,"auto",t),notifyNew:v.i,notifyResult:v.b,logs:eP,autoRollback:()=>(0,ei.K)(),rollbackContext:eD,approveAutoRollback:eE,notifyRollback:v.q,autoSecurity:()=>(0,ei.X)(),bumpReady:x.J,approveAutoBump:eM,paused:c.I,providers:ez};async function eB(e,t={},r=eH){let a={created:0,expired:0,autoRan:0},n=()=>(t.deadline??1/0)-Date.now(),i=await r.firing();a.expired=await r.expire(i.map(e=>e.id),e);let s=r.paused?await r.paused().catch(()=>new Set):new Set,l=[...new Set(i.flatMap(e=>e.accountId?[e.accountId]:[]))],u=s.size&&l.length&&r.providers?await r.providers(l).catch(()=>new Map):new Map,d=i.filter(e=>!(0,p.O)(s,e.ruleKey,e.accountId?u.get(e.accountId):null)),c=null,f=()=>c??=r.book().catch(()=>h.a),m=[],g=(0,y.z)(d,e);if(Object.values(g).some(e=>e.length>0)){let t=g.deployApps.length&&r.autoRollback?await r.autoRollback().catch(()=>null):null,a=await r.facts(d,e,t?6e4*t.windowMin:void 0),n=await f();m.push(...await r.create(d.flatMap(t=>(0,y.t)(t,a,n,e))))}if(n()>1e4&&!s.has("hosting"))try{let t=await r.logs(e,f);m.push(...t.created),a.expired+=t.expired}catch(e){console.warn(`${o.X.logTag}/proposals logs failed:`,e instanceof Error?e.name:"error")}if(a.created=m.length,!m.length)return a;let k=await r.autoRun().catch(()=>null),w=await eC(m,e,n,r);a.autoRan+=w.length;let b=await eK(m.filter(e=>!w.some(t=>t.id===e.id)),n,r),v=new Set(w.map(e=>e.id)),I=[...b];for(let e of(a.autoRan+=b.length,b))v.add(e.id);for(let e of m){if(v.has(e.id)||!k||!(0,y.I)(e.action,k)||8e3>n()||!await r.approveAuto(e.id,new Date))continue;let t=await r.execute(e.id,new Date);t&&(I.push(t),a.autoRan++)}let $=new Set([...I.map(e=>e.id),...v]),A=m.filter(e=>"LogErrorSpike"===e.ruleKey&&e.resourceId).map(e=>({proposalId:e.id,appId:e.resourceId})),R=A.length&&r.queueDev?await r.queueDev(A,e).catch(()=>new Set):new Set;for(let e of(await r.notifyNew(m.filter(e=>!$.has(e.id)).map(y.E),{},{devQueued:R}).catch(()=>void 0),I))await r.notifyResult(e).catch(()=>void 0);return a}let eL=(r={},t={...eH,queueDev:r.queueDev},async(e,r)=>{try{let a=await eB(e,r??{},t);(a.created||a.expired||a.autoRan)&&console.log(`${o.X.logTag}/proposals: ${a.created} new, ${a.expired} expired, ${a.autoRan} auto-ran`)}catch(e){console.warn(`${o.X.logTag}/proposals failed:`,e instanceof Error?e.name:"error")}});e.s(["V",0,ey,"N",0,eI,"Z",0,eL,"t",0,eA],447933)},442565,e=>{var t=e.i(313931),r=e.i(872281),a=e.i(483100),n=e.i(224382),i=e.i(220642),o=e.i(547499),s=e.i(695811),l=e.i(76012),u=e.i(298397),d=e.i(635982),c=e.i(570191),p=e.i(365156);let f={target:a.Q,book:()=>(0,r.f)(),siteUrl:()=>(0,o.f)().SITE_URL,autoRun:()=>(0,c.I)(),send:(e,t,r,a)=>(0,l.I)(e,t,r,a?{replyMarkup:a}:{}),record:(e,t)=>(0,a.P)("telegram",e,t),lang:()=>(0,s.H)("telegram"),discord:()=>(0,a.G)(),sendDiscord:(e,t)=>(0,n.f)(e,t,{timeoutMs:v}),recordDiscord:(e,t)=>(0,a.P)("discord",e,t),discordLang:()=>(0,s.H)("discord"),buttons:()=>e.A(106025).then(e=>e.approvalButtons())},m={en:{pending:"Status: ⏳ waiting",dev:"🧑💻 Dev is checking the code",proposer:t.X.notifyFallback.en,app:"app",safe:"safe",risky:"needs care",proposes:"proposes",why:"Why",risk:"Risk",open:"Open in Auto-actions",waitingN:"new proposals waiting for approval:",moreN:"more proposals",automatic:"Automatic",rollbackWhy:"the app errored after the new deploy",succeeded:"Succeeded",failed:"Failed",stopFallback:"something failed"},id:{pending:"Status: ⏳ menunggu",dev:"🧑💻 Dev lagi cek kodenya",proposer:t.X.notifyFallback.id,app:"aplikasi",safe:"aman",risky:"perlu hati-hati",proposes:"usul",why:"Kenapa",risk:"Risiko",open:"Buka di Auto-actions",waitingN:"usulan baru menunggu persetujuan:",moreN:"usulan lagi",automatic:"Otomatis",rollbackWhy:"app-nya error setelah deploy baru",succeeded:"Berhasil",failed:"Gagal",stopFallback:"ada yang gagal"}},g={recheck:"Cek ulang sekarang",neon_wake:"Bangunin Neon",supabase_keepalive:"Kirim keep-alive Supabase",supabase_restore:"Restore project Supabase",vercel_redeploy:"Redeploy production",vercel_rollback:"Rollback ke deploy sebelumnya",github_bump_pr:"Bikin PR update paket",domain_recheck:"Cek ulang sertifikat domain",daily_rerun:"Jalanin ulang daily job"},h=(e="en")=>(0,s.t)(m,e,"dev"),k=(e,t)=>("id"===t?g[e.action]:void 0)??p.H[e.action]?.label??e.actionLabel,y=(e,t)=>(0,s.t)(m,t,"risky"===e.risk||p.H[e.action]?.risk==="risky"?"risky":"safe"),w=(e,t)=>`${e.replace(/\/+$/,"")}/auto-actions${t?`?proposal=${encodeURIComponent(t)}`:""}`;function b(e,t,r,a=!1,n="en"){let o=e=>(0,s.t)(m,n,e),l=(0,d.f)(e.proposedBy,t,60)||o("proposer"),u=(0,d.f)(e.title,t,120),c=(0,d.f)(e.reason,t,200)||"-";return[`🧑✈️ ${(0,i.H)(l)} ${o("proposes")}: ${(0,i.H)(k(e,n))} — ${(0,i.H)(u)}`,`${o("why")}: ${(0,i.H)(c)}`,`${o("risk")}: ${y(e,n)}`,...a?[h(n)]:[],`${o("open")}: ${(0,i.H)(w(r,e.id))}`].join("\n")}let v=3e3,I={en:{proposed:"📝 Proposed",approved:"✅ Approved by the owner",rejected:"🚫 Rejected by the owner",done:"⚙️ Ran",failed:"❌ Failed",waiting:"waiting for approval on Telegram.",newN:"new proposals"},id:{proposed:"📝 Usulan",approved:"✅ Disetujui owner",rejected:"🚫 Ditolak owner",done:"⚙️ Dijalankan",failed:"❌ Gagal",waiting:"nunggu persetujuan di Telegram.",newN:"usulan baru"}};function $(e,t,r,a="en"){let n=e=>(0,s.t)(I,a,e);if(Array.isArray(t))return`📝 ${t.length} ${n("newN")} — ${n("waiting")}`;let i=((0,d.f)(t.title,r,120)||k(t,a)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===e)return`${n("proposed")}: ${i} — ${n("waiting")}`;if("approved"===e||"rejected"===e)return`${n(e)}: ${i}`;let o=t.result?(0,d.f)(t.result,r,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${n(e)}: ${i}${o?` — ${o}`:""}`}async function A(e,r,a){try{let n,i=await r.discord();if(!i)return;let o=await r.book().catch(()=>u.a),s=await r.discordLang().catch(()=>"en"),l=e(o,s);if(!l.length)return;try{n=await r.sendDiscord(i.url,l.join("\n"))}catch{n={ok:!1,kind:"transient",error:"Discord didn't answer."}}await r.recordDiscord(n,a).catch(()=>console.warn(`${t.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${t.X.logTag}/discord: sending the action history failed`)}}async function R(e,t,r={},a={}){let n={...f,...r};await _(()=>A((r,a)=>[$(e,t,r,a)],n,a.now??new Date),a.timeoutMs??v)}async function x(e,r,a){let n=await r.target();if(!n)return;let i=await r.book().catch(()=>u.a),o=await r.lang().catch(()=>"en");for(let s of(await e(i,o))){let e;try{e="string"==typeof s?await r.send(n.token,n.chatId,s):await r.send(n.token,n.chatId,s.text,s.keyboard)}catch{e={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await r.record(e,a).catch(()=>console.warn(`${t.X.logTag}/telegram: recording the result failed`))}}async function _(e,r){try{var a;let t;await (a=e(),Promise.race([a,new Promise((e,a)=>{t=setTimeout(()=>a(Object.assign(Error("timeout"),{name:"TimeoutError"})),r)})]).finally(()=>clearTimeout(t)))}catch(e){console.warn(`${t.X.logTag}/telegram: sending the proposal notice failed:`,e instanceof Error?e.name:"error")}}async function j(e,t={},r={}){if(!e.length)return;let a={...f,...t};await _(async()=>{let t=await a.autoRun().catch(()=>null),n=e.filter(e=>{var r;return r=t??{},"pending"===e.status&&!e.auto&&(p.H[e.action]?.risk!=="safe"||"risky"===e.risk||!r[e.action])});if(!n.length)return;let o=n.length>3||!a.buttons?null:await a.buttons().catch(()=>null),l=r.now??new Date;await Promise.all([x((e,t)=>n.length>3?[function(e,t,r,a=new Set,n="en"){let o=e=>(0,s.t)(m,n,e),l=e.slice(0,10).map(e=>{let s=(0,d.f)(e.proposedBy,t,60)||o("proposer");return`• ${(0,i.H)(s)}: ${(0,i.H)(k(e,n))} — ${(0,i.H)((0,d.f)(e.title,t,120))} (${y(e,n)})${a.has(e.id)?` \xb7 ${h(n)}`:""}
|
|
2
2
|
${(0,i.H)(w(r,e.id))}`}),u=e.length>10?[`+${e.length-10} ${o("moreN")}`]:[];return[`🧑✈️ ${e.length} ${o("waitingN")}`,...l,...u,`${o("open")}: ${(0,i.H)(w(r))}`].join("\n")}(n,e,a.siteUrl(),r.devQueued,t)]:n.map(n=>{let i=b(n,e,a.siteUrl(),r.devQueued?.has(n.id)??!1,t);return o?{text:`${i}
|
|
3
|
-
${((e="en")=>(0,s.t)(m,e,"pending"))(t)}`,keyboard:o(n)}:i}),a,l),A((e,t)=>n.length>3?[$("proposed",n,e,t)]:n.map(r=>$("proposed",r,e,t)),a,l)])},r.timeoutMs??8e3)}async function T(e,t={},r={}){if(!e.auto||"done"!==e.status&&"failed"!==e.status)return;let a={...f,...t},n=r.now??new Date;await _(()=>Promise.all([x((t,r)=>{let a=function(e,t,r="en"){if(!e.auto||"done"!==e.status&&"failed"!==e.status)return null;let a="done"===e.status?"✅":"❌",n=e.result?(0,d.f)(e.result,t,200):"";return`${a} ${(0,s.t)(m,r,"automatic")}: ${(0,i.H)(k(e,r))} — ${(0,i.H)((0,d.f)(e.title,t,120))}${n?`: ${(0,i.H)(n)}`:""}`}(e,t,r);return a?[a]:[]},a,n),A((t,r)=>[$("done"===e.status?"done":"failed",e,t,r)],a,n)]).then(()=>void 0),r.timeoutMs??8e3)}async function O(e,t,r={},a={}){if("done"!==e.status&&"failed"!==e.status)return;let n={...f,...r},o=a.now??new Date;await _(()=>Promise.all([x((r,a)=>[function(e,t,r,a="en"){let n=e=>(0,s.t)(m,a,e),o=(0,d.f)(e.resourceName??n("app"),r,60)||n("app"),l=(0,d.f)(t.reason,r,200).replace(/[.!?…]+$/,"")||n("rollbackWhy"),u=e.result?(0,d.f)(e.result,r,200):"";return["id"===a?`⏪ Otomatis rollback ${(0,i.H)(o)}: ${(0,i.H)(l)}. Deploy baru ${(0,i.H)((0,d.f)(t.newRef,r,40))} dibalikin ke deploy sebelumnya. Benerin dulu, terus deploy ulang.`:`⏪ Automatic rollback of ${(0,i.H)(o)}: ${(0,i.H)(l)}. The new deploy ${(0,i.H)((0,d.f)(t.newRef,r,40))} was rolled back to the previous one. Fix it first, then deploy again.`,`${"done"===e.status?"✅":"❌"} ${n("done"===e.status?"succeeded":"failed")}${u?`: ${(0,i.H)(u)}`:""}`].join("\n")}(e,t,r,a)],n,o),A((t,r)=>[$("done"===e.status?"done":"failed",e,t,r)],n,o)]).then(()=>void 0),a.timeoutMs??8e3)}async function P(e,t={},r={}){let a={...f,...t};await _(()=>x((t,r)=>[function(e,t,r="en"){let a="id"===r,n=(0,d.f)(e.app,t,60)||(0,s.t)(m,r,"app"),o=e.packages.slice(0,4).join(", ")+(e.packages.length>4?`, +${e.packages.length-4}`:"");if("merged"===e.kind)return a?`✅ PR #${e.number} di ${(0,i.H)(n)} di-merge otomatis (${(0,i.H)(o)}). Deploy production jalan lewat Vercel; auto-rollback jaga ${e.windowMin??30} menit pertama.`:`✅ PR #${e.number} in ${(0,i.H)(n)} was merged automatically (${(0,i.H)(o)}). The production deploy runs through Vercel; auto-rollback watches the first ${e.windowMin??30} minutes.`;if("ready-manual"===e.kind)return a?`🔐 PR #${e.number} di ${(0,i.H)(n)} siap di-merge, tapi auto-rollback mati — merge manual ya.`:`🔐 PR #${e.number} in ${(0,i.H)(n)} is ready to merge, but auto-rollback is off — please merge it manually.`;let l=(0,d.f)(e.reason??"",t,200)||(0,s.t)(m,r,"stopFallback");return a?`⚠️ PR #${e.number} di ${(0,i.H)(n)} butuh dicek: ${(0,i.H)(l)}. PR-nya dibiarin terbuka.`:`⚠️ PR #${e.number} in ${(0,i.H)(n)} needs a look: ${(0,i.H)(l)}. The PR was left open.`}(e,t,r)],a,r.now??new Date),r.timeoutMs??8e3)}e.s(["h",0,v,"q",0,O,"y",0,P,"v",0,R,"i",0,j,"b",0,T,"a",0,b])},570191,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(407602),i=e.i(365156);let o="office.autoRun",s=Object.keys(i.H);s.filter(e=>"safe"===i.H[e].risk),Object.fromEntries(s.map(e=>[e,!1]));let l={read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:o,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})},audit:e=>(0,n.f)({kind:"ok",message:e.message,detail:e.detail.slice(0,500),resourceId:null,actorUserId:e.actorUserId})};async function u(e={}){var t;let r;return r=(t=await ({...l,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{},Object.fromEntries(s.map(e=>[e,"safe"===i.H[e].risk&&!0===r[e]]))}let d="office.autoRollback",c={...l,read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,d)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:d,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})}};async function p(e={}){var t;let r,a;return{enabled:!0===(r=(t=await ({...c,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{}).enabled,windowMin:"number"==typeof(a=r.windowMin)&&Number.isInteger(a)&&a>=10&&a<=120?r.windowMin:30}}let f="office.autoSecurity",m=["critical","high"],g={enabled:!0,severities:["critical","high"],sameMajorOnly:!0},h={...l,read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,f)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:f,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})}};async function k(e={}){let t;var r=await ({...h,...e}).read();if(null==r)return{...g,severities:[...g.severities]};let a="object"!=typeof r||Array.isArray(r)?{}:r;return{enabled:!0===a.enabled,severities:(Array.isArray(t=a.severities)&&t.every(e=>m.includes(e))?m.filter(e=>t.includes(e)):null)??[...g.severities],sameMajorOnly:!0}}e.s(["r",0,s,"n",0,120,"l",0,10,"K",0,p,"I",0,u,"X",0,k])},365156,e=>{e.s(["H",0,{recheck:{risk:"safe",label:"Check again now",uses:"monitor-actions checkNow"},neon_wake:{risk:"safe",label:"Wake Neon",uses:"Stage 6 Neon wake"},supabase_keepalive:{risk:"safe",label:"Send Supabase keep-alive",uses:"Stage 6 Keep active"},supabase_restore:{risk:"risky",label:"Restore Supabase project",uses:"Stage 6 Supabase restore"},vercel_redeploy:{risk:"risky",label:"Redeploy production",uses:"vercel-actions redeployAction"},vercel_rollback:{risk:"risky",label:"Roll back to previous deployment",uses:"vercel-actions rollbackAction"},github_bump_pr:{risk:"risky",label:"Open package update PR",uses:"lib/data/deps-pr.ts bumpPrAs (GitHub PR-write token)"},domain_recheck:{risk:"safe",label:"Re-check domain certificate",uses:"domains actions recheck (network-db recheckDomain)"},daily_rerun:{risk:"risky",label:"Rerun daily job",uses:"GET /api/daily with the cron secret (collector runDailyAll)"}},"V",0,72e5])},377489,e=>{var t=e.i(298397),r=e.i(154586),a=e.i(313931),n=e.i(635982),i=e.i(365156);let o=200,s=a.X.auditPrefix,l=/^dpl_[A-Za-z0-9]{8,40}$/,u=/^ep-[a-z0-9-]{3,60}$/,d=/^[a-z0-9]{8,40}$/,c=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,p=(e,t=o)=>e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e,f=e=>/[.!?…]$/.test(e)?e:`${e}.`;function m(e,r,a,i){return"app"===e&&a?(0,t.r)(i,a):("supabase_project"===e||"neon_project"===e||"neon_branch"===e||"firestore"===e)&&r?(0,t.X)(i,r):a&&(0,n.f)(a,i,120)||null}let g={recheck:e=>`Check ${e} again now`,neon_wake:e=>`Wake the Neon compute of ${e}`,supabase_keepalive:e=>`Send a keep-alive to ${e}`,supabase_restore:e=>`Restore Supabase project ${e}`,vercel_redeploy:e=>`Redeploy production ${e}`,vercel_rollback:e=>`Roll ${e} back to the previous deployment`,github_bump_pr:e=>`Open a PR updating vulnerable packages in ${e}`,domain_recheck:e=>`Re-check the certificate of ${e}`,daily_rerun:()=>"Rerun the daily job"},h=(e,t)=>p(g[e](t??"this resource")),k=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime();e.s(["e",0,"office-auto","v",0,s,"L",0,6e5,"j",0,o,"I",0,(e,t)=>"safe"===i.H[e].risk&&!0===t[e],"l",0,p,"z",0,function(e,t){let r=e.filter(e=>!k(e,t)),a=e=>[...new Set(e.filter(e=>!!e&&c.test(e)))],n=r.filter(e=>("MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind);return{monitorIds:a(n.map(e=>e.subject)),monitorApps:a(n.map(e=>e.resourceId)),deployApps:a(r.filter(e=>("DeploymentFailed"===e.ruleKey||"MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind).map(e=>e.resourceId)),supabaseIds:a(r.filter(e=>("DatabasePaused"===e.ruleKey||"AutoPauseRisk"===e.ruleKey)&&"supabase_project"===e.resourceKind).map(e=>e.resourceId)),depApps:a(r.filter(e=>"VulnerableDependency"===e.ruleKey&&"app"===e.resourceKind).map(e=>e.resourceId))}},"M",0,h,"t",0,function(e,a,s,g){let y,w,b;if(k(e,g))return[];let v=(y=(0,t.o)(e,s),w=(0,n.f)(y.title,s,80),b=(0,n.f)(y.message,s,o),p([w&&f(w),b&&f(b)].filter(Boolean).join(" ")||`${e.ruleKey}.`));return(function(e,t,r){let a="app"===e.resourceKind&&e.resourceId?e.resourceId:null;switch(e.ruleKey){case"DeploymentFailed":{let e=a?t.deploys.get(a):void 0;if(!a||!e?.currentId||!l.test(e.currentId))return[];let r=[{action:"vercel_redeploy",resourceKind:"app",resourceId:a,targetRef:e.currentId}];return e.previousId&&l.test(e.previousId)&&e.previousId!==e.currentId&&r.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:e.previousId}),r}case"DatabasePaused":case"AutoPauseRisk":{if("supabase_project"!==e.resourceKind||!e.resourceId)return[];let r=t.supabaseRefs.get(e.resourceId);if(!r||!d.test(r))return[];return[{action:"DatabasePaused"===e.ruleKey?"supabase_restore":"supabase_keepalive",resourceKind:"supabase_project",resourceId:e.resourceId,targetRef:r}]}case"VulnerableDependency":{let e=a?t.fixableRepos?.get(a):void 0;return a&&e&&c.test(e)?[{action:"github_bump_pr",resourceKind:"app",resourceId:a,targetRef:e}]:[]}case"MonitorDown":case"HighLatency":{let n=[];a&&c.test(e.subject)&&"http"===t.monitorKinds.get(e.subject)&&n.push({action:"recheck",resourceKind:"app",resourceId:a,targetRef:e.subject}),"MonitorDown"===e.ruleKey&&e.resourceId&&c.test(e.subject)&&t.dailyHeartbeatId===e.subject&&n.push({action:"daily_rerun",room:"observe",resourceKind:e.resourceKind,resourceId:e.resourceId,targetRef:e.subject});let i=a?t.neonSuspended.get(a):void 0;i&&u.test(i.endpointId)&&n.push({action:"neon_wake",room:"databases",resourceKind:i.resourceKind,resourceId:i.resourceId,targetRef:i.endpointId});let o=a?t.deploys.get(a):void 0;return a&&function(e,t,r){if(!e?.currentId||!e.previousId||!e.liveAt||!l.test(e.previousId)||e.previousId===e.currentId)return!1;let a=r.getTime()-e.liveAt.getTime();return a>=0&&a<=t}(o,t.rollbackWindowMs??18e5,r)?n.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:o.previousId}):"MonitorDown"===e.ruleKey&&a&&o?.currentId&&l.test(o.currentId)&&"http"===t.monitorKinds.get(e.subject)&&(n.push({action:"vercel_redeploy",resourceKind:"app",resourceId:a,targetRef:o.currentId}),o.previousId&&l.test(o.previousId)&&o.previousId!==o.currentId&&n.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:o.previousId})),n}case"CertExpiringSoon":return"domain"===e.resourceKind&&e.resourceId&&c.test(e.resourceId)?[{action:"domain_recheck",resourceKind:"domain",resourceId:e.resourceId,targetRef:e.resourceId}]:[];default:return[]}})(e,a,g).map(a=>{let l,u,d,c=a.room??(0,r.p)(e),f="neon_wake"===a.action?m(a.resourceKind,a.resourceId,null,s):m(e.resourceKind,e.resourceId,e.resourceName,s);return{alertId:e.id,ruleKey:e.ruleKey,room:c,action:a.action,risk:i.H[a.action].risk,title:h(a.action,f),reason:"github_bump_pr"===a.action?(u=(l=(0,n.f)((0,t.o)(e,s).message,s,o)).includes(": ")?l.slice(l.indexOf(": ")+2):"",d=`Vulnerable packages in ${f??"this app"} have a fix`,p(u?`${d}: ${u}`:`${d}.`)):v,resourceKind:a.resourceKind,resourceId:a.resourceId,resourceName:f,targetRef:a.targetRef,proposedBy:(0,r.y)(c),expiresAt:new Date(g.getTime()+i.V)}})},"x",0,function(e,t){let r=e.ok?e.message||"Done.":e.error||"It didn't run.";return p((0,n.f)(r,t,o)||(e.ok?"Done.":"It didn't run."))},"J",0,m,"E",0,function(e){return{id:e.id,room:e.room,action:e.action,actionLabel:i.H[e.action].label,risk:i.H[e.action].risk,title:e.title,reason:e.reason,resourceName:e.resourceName,proposedBy:e.proposedBy,status:e.status,auto:e.auto,result:e.result,createdAt:e.createdAt.toISOString(),decidedAt:e.decidedAt?e.decidedAt.toISOString():null,expiresAt:e.expiresAt.toISOString()}},"Z",0,function(e,t,r){let a=r??t?.find(e=>e.isDefault)?.id??null,n=(e??[]).find(e=>!a||e.branchId===a);return n&&!n.disabled&&"idle"===n.state&&"active"!==n.pendingState&&u.test(n.id)?n.id:null}])},610514,e=>{var t=e.i(666680),r=e.i(875225),a=e.i(924924),n=e.i(220642),i=e.i(313931),o=e.i(407602),s=e.i(209576),l=e.i(983128),u=e.i(547499),d=e.i(695811),c=e.i(298397),p=e.i(291029),f=e.i(635982),m=e.i(377489),g=e.i(447933),h=e.i(442565);let k={decide:g.V,execute:(e,t,r)=>(0,g.N)(e,t,r),history:(e,t)=>(0,h.v)(e,t)};async function y(e,t,r,a,n={},i=k){let o=await i.decide(e,t,r.id,a);if("ok"!==o.status)return"missing"===o.status?{status:"missing"}:{status:"conflict",proposal:o.proposal};let s=[],l=async()=>{let e,t=i.history;if(!t||!s.length)return;let r=s.splice(0),a=new Promise(t=>{e=setTimeout(t,h.h)}),n=(async()=>{for(let[e,a]of r)await t(e,a).catch(()=>void 0)})();await Promise.race([n,a]).finally(()=>clearTimeout(e))};if("reject"===t)return s.push(["rejected",o.proposal]),{status:"ok",proposal:o.proposal,flushHistory:l};s.push(["approved",o.proposal]),n.onApproved&&await n.onApproved(o.proposal).catch(()=>void 0);let u=await i.execute(e,{id:r.id,userId:r.userId},new Date);return u&&("done"===u.status||"failed"===u.status)&&s.push([u.status,u]),{status:"ok",proposal:u??o.proposal,flushHistory:l}}var w=e.i(365156);let b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,v={en:{approve:"✅ Approve",reject:"❌ Reject",sure:"⚠️ Sure? Approve",cancel:"Cancel",invalid:"This button is not valid.",gone:"This proposal is already decided / expired",confirmFirst:"This action is risky. Tap ⚠️ Sure? Approve within 2 minutes.",confirmLate:"The confirmation expired. Tap ✅ Approve again.",cancelled:"Cancelled. The proposal is still waiting.",running:"Approved. Running…",rejected:"Rejected.",failed:"Could not process it. Try again from Auto-actions."},id:{approve:"✅ Setujui",reject:"❌ Tolak",sure:"⚠️ Yakin? Setujui",cancel:"Batal",invalid:"Tombol ini nggak valid.",gone:"Usulan ini udah diputuskan / kedaluwarsa",confirmFirst:"Aksi ini berisiko. Tap ⚠️ Yakin? Setujui dalam 2 menit.",confirmLate:"Konfirmasinya kedaluwarsa. Tap ✅ Setujui lagi.",cancelled:"Dibatalkan. Usulannya masih menunggu.",running:"Disetujui. Lagi jalan…",rejected:"Ditolak.",failed:"Gagal memproses. Coba lagi dari Auto-actions."}},I=e=>(0,t.createHmac)("sha256",Buffer.from(e,"base64")).update("watchpost:telegram-callback:v1").digest(),$=(e,r)=>(0,t.createHmac)("sha256",e).update(r,"utf8").digest("base64url").slice(0,16);function A(e,t,r,a=null){let n=`p:${t}:${r}${"c"===r?`:${(a??0).toString(36)}`:""}`;return`${n}:${$(e,n)}`}function R(e,r){if("string"!=typeof r||r.length>64)return null;let a=r.lastIndexOf(":");if(a<0)return null;let n=r.slice(0,a),i=Buffer.from(r.slice(a+1),"utf8"),o=Buffer.from($(e,n),"utf8");if(i.length!==o.length||!(0,t.timingSafeEqual)(i,o))return null;let s=n.split(":");if("p"!==s[0]||!b.test(s[1]??""))return null;let l=s[2];return"c"===l?4===s.length&&/^[0-9a-z]{1,10}$/.test(s[3])?{id:s[1],op:l,exp:parseInt(s[3],36)}:null:3===s.length&&["a","r","x"].includes(l)?{id:s[1],op:l,exp:null}:null}let x=(e,t,r="en")=>({inline_keyboard:[[{text:v[r].approve,callback_data:A(e,t,"a")},{text:v[r].reject,callback_data:A(e,t,"r")}]]}),_=(e,t,r,a="en")=>({inline_keyboard:[[{text:v[a].sure,callback_data:A(e,t,"c",r)},{text:v[a].cancel,callback_data:A(e,t,"x")}]]}),j={en:{pending:"⏳ waiting",approved:"⚙️ running",running:"⚙️ running",done:"✅ done",failed:"❌ failed",rejected:"🚫 rejected",expired:"⌛ expired"},id:{pending:"⏳ menunggu",approved:"⚙️ jalan",running:"⚙️ jalan",done:"✅ selesai",failed:"❌ gagal",rejected:"🚫 ditolak",expired:"⌛ kedaluwarsa"}};function T(e,t,r="en"){let a=e.result&&("done"===e.status||"failed"===e.status||"expired"===e.status)?(0,f.f)(e.result,t,200):"";return`Status: ${j[r][e.status]}${a?` — ${(0,n.H)(a)}`:""}`}let O=(e,t,r,a="en")=>`${(0,h.a)(e,t,r,!1,a)}
|
|
4
|
-
${
|
|
3
|
+
${((e="en")=>(0,s.t)(m,e,"pending"))(t)}`,keyboard:o(n)}:i}),a,l),A((e,t)=>n.length>3?[$("proposed",n,e,t)]:n.map(r=>$("proposed",r,e,t)),a,l)])},r.timeoutMs??8e3)}async function O(e,t={},r={}){if(!e.auto||"done"!==e.status&&"failed"!==e.status)return;let a={...f,...t},n=r.now??new Date;await _(()=>Promise.all([x((t,r)=>{let a=function(e,t,r="en"){if(!e.auto||"done"!==e.status&&"failed"!==e.status)return null;let a="done"===e.status?"✅":"❌",n=e.result?(0,d.f)(e.result,t,200):"";return`${a} ${(0,s.t)(m,r,"automatic")}: ${(0,i.H)(k(e,r))} — ${(0,i.H)((0,d.f)(e.title,t,120))}${n?`: ${(0,i.H)(n)}`:""}`}(e,t,r);return a?[a]:[]},a,n),A((t,r)=>[$("done"===e.status?"done":"failed",e,t,r)],a,n)]).then(()=>void 0),r.timeoutMs??8e3)}async function T(e,t,r={},a={}){if("done"!==e.status&&"failed"!==e.status)return;let n={...f,...r},o=a.now??new Date;await _(()=>Promise.all([x((r,a)=>[function(e,t,r,a="en"){let n=e=>(0,s.t)(m,a,e),o=(0,d.f)(e.resourceName??n("app"),r,60)||n("app"),l=(0,d.f)(t.reason,r,200).replace(/[.!?…]+$/,"")||n("rollbackWhy"),u=e.result?(0,d.f)(e.result,r,200):"";return["id"===a?`⏪ Otomatis rollback ${(0,i.H)(o)}: ${(0,i.H)(l)}. Deploy baru ${(0,i.H)((0,d.f)(t.newRef,r,40))} dibalikin ke deploy sebelumnya. Benerin dulu, terus deploy ulang.`:`⏪ Automatic rollback of ${(0,i.H)(o)}: ${(0,i.H)(l)}. The new deploy ${(0,i.H)((0,d.f)(t.newRef,r,40))} was rolled back to the previous one. Fix it first, then deploy again.`,`${"done"===e.status?"✅":"❌"} ${n("done"===e.status?"succeeded":"failed")}${u?`: ${(0,i.H)(u)}`:""}`].join("\n")}(e,t,r,a)],n,o),A((t,r)=>[$("done"===e.status?"done":"failed",e,t,r)],n,o)]).then(()=>void 0),a.timeoutMs??8e3)}async function P(e,t={},r={}){let a={...f,...t};await _(()=>x((t,r)=>[function(e,t,r="en"){let a="id"===r,n=(0,d.f)(e.app,t,60)||(0,s.t)(m,r,"app"),o=e.packages.slice(0,4).join(", ")+(e.packages.length>4?`, +${e.packages.length-4}`:"");if("merged"===e.kind)return a?`✅ PR #${e.number} di ${(0,i.H)(n)} di-merge otomatis (${(0,i.H)(o)}). Deploy production jalan lewat Vercel; auto-rollback jaga ${e.windowMin??30} menit pertama.`:`✅ PR #${e.number} in ${(0,i.H)(n)} was merged automatically (${(0,i.H)(o)}). The production deploy runs through Vercel; auto-rollback watches the first ${e.windowMin??30} minutes.`;if("ready-manual"===e.kind)return a?`🔐 PR #${e.number} di ${(0,i.H)(n)} siap di-merge, tapi auto-rollback mati — merge manual ya.`:`🔐 PR #${e.number} in ${(0,i.H)(n)} is ready to merge, but auto-rollback is off — please merge it manually.`;let l=(0,d.f)(e.reason??"",t,200)||(0,s.t)(m,r,"stopFallback");return a?`⚠️ PR #${e.number} di ${(0,i.H)(n)} butuh dicek: ${(0,i.H)(l)}. PR-nya dibiarin terbuka.`:`⚠️ PR #${e.number} in ${(0,i.H)(n)} needs a look: ${(0,i.H)(l)}. The PR was left open.`}(e,t,r)],a,r.now??new Date),r.timeoutMs??8e3)}e.s(["h",0,v,"q",0,T,"y",0,P,"v",0,R,"i",0,j,"b",0,O,"a",0,b])},570191,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(407602),i=e.i(365156);let o="office.autoRun",s=Object.keys(i.H);s.filter(e=>"safe"===i.H[e].risk),Object.fromEntries(s.map(e=>[e,!1]));let l={read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:o,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})},audit:e=>(0,n.f)({kind:"ok",message:e.message,detail:e.detail.slice(0,500),resourceId:null,actorUserId:e.actorUserId})};async function u(e={}){var t;let r;return r=(t=await ({...l,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{},Object.fromEntries(s.map(e=>[e,"safe"===i.H[e].risk&&!0===r[e]]))}let d="office.autoRollback",c={...l,read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,d)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:d,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})}};async function p(e={}){var t;let r,a;return{enabled:!0===(r=(t=await ({...c,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{}).enabled,windowMin:"number"==typeof(a=r.windowMin)&&Number.isInteger(a)&&a>=10&&a<=120?r.windowMin:30}}let f="office.autoSecurity",m=["critical","high"],g={enabled:!0,severities:["critical","high"],sameMajorOnly:!0},h={...l,read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,f)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:f,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})}};async function k(e={}){let t;var r=await ({...h,...e}).read();if(null==r)return{...g,severities:[...g.severities]};let a="object"!=typeof r||Array.isArray(r)?{}:r;return{enabled:!0===a.enabled,severities:(Array.isArray(t=a.severities)&&t.every(e=>m.includes(e))?m.filter(e=>t.includes(e)):null)??[...g.severities],sameMajorOnly:!0}}e.s(["r",0,s,"n",0,120,"l",0,10,"K",0,p,"I",0,u,"X",0,k])},365156,e=>{e.s(["H",0,{recheck:{risk:"safe",label:"Check again now",uses:"monitor-actions checkNow"},neon_wake:{risk:"safe",label:"Wake Neon",uses:"Stage 6 Neon wake"},supabase_keepalive:{risk:"safe",label:"Send Supabase keep-alive",uses:"Stage 6 Keep active"},supabase_restore:{risk:"risky",label:"Restore Supabase project",uses:"Stage 6 Supabase restore"},vercel_redeploy:{risk:"risky",label:"Redeploy production",uses:"vercel-actions redeployAction"},vercel_rollback:{risk:"risky",label:"Roll back to previous deployment",uses:"vercel-actions rollbackAction"},github_bump_pr:{risk:"risky",label:"Open package update PR",uses:"lib/data/deps-pr.ts bumpPrAs (GitHub PR-write token)"},domain_recheck:{risk:"safe",label:"Re-check domain certificate",uses:"domains actions recheck (network-db recheckDomain)"},daily_rerun:{risk:"risky",label:"Rerun daily job",uses:"GET /api/daily with the cron secret (collector runDailyAll)"}},"V",0,72e5])},377489,e=>{var t=e.i(298397),r=e.i(154586),a=e.i(313931),n=e.i(635982),i=e.i(365156);let o=200,s=a.X.auditPrefix,l=/^dpl_[A-Za-z0-9]{8,40}$/,u=/^ep-[a-z0-9-]{3,60}$/,d=/^[a-z0-9]{8,40}$/,c=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,p=(e,t=o)=>e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e,f=e=>/[.!?…]$/.test(e)?e:`${e}.`;function m(e,r,a,i){return"app"===e&&a?(0,t.r)(i,a):("supabase_project"===e||"neon_project"===e||"neon_branch"===e||"firestore"===e)&&r?(0,t.X)(i,r):a&&(0,n.f)(a,i,120)||null}let g={recheck:e=>`Check ${e} again now`,neon_wake:e=>`Wake the Neon compute of ${e}`,supabase_keepalive:e=>`Send a keep-alive to ${e}`,supabase_restore:e=>`Restore Supabase project ${e}`,vercel_redeploy:e=>`Redeploy production ${e}`,vercel_rollback:e=>`Roll ${e} back to the previous deployment`,github_bump_pr:e=>`Open a PR updating vulnerable packages in ${e}`,domain_recheck:e=>`Re-check the certificate of ${e}`,daily_rerun:()=>"Rerun the daily job"},h=(e,t)=>p(g[e](t??"this resource")),k=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime();e.s(["e",0,"office-auto","v",0,s,"L",0,6e5,"j",0,o,"I",0,(e,t)=>"safe"===i.H[e].risk&&!0===t[e],"l",0,p,"z",0,function(e,t){let r=e.filter(e=>!k(e,t)),a=e=>[...new Set(e.filter(e=>!!e&&c.test(e)))],n=r.filter(e=>("MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind);return{monitorIds:a(n.map(e=>e.subject)),monitorApps:a(n.map(e=>e.resourceId)),deployApps:a(r.filter(e=>("DeploymentFailed"===e.ruleKey||"MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind).map(e=>e.resourceId)),supabaseIds:a(r.filter(e=>("DatabasePaused"===e.ruleKey||"AutoPauseRisk"===e.ruleKey)&&"supabase_project"===e.resourceKind).map(e=>e.resourceId)),depApps:a(r.filter(e=>"VulnerableDependency"===e.ruleKey&&"app"===e.resourceKind).map(e=>e.resourceId))}},"M",0,h,"t",0,function(e,a,s,g){let y,w,b;if(k(e,g))return[];let v=(y=(0,t.o)(e,s),w=(0,n.f)(y.title,s,80),b=(0,n.f)(y.message,s,o),p([w&&f(w),b&&f(b)].filter(Boolean).join(" ")||`${e.ruleKey}.`));return(function(e,t,r){let a="app"===e.resourceKind&&e.resourceId?e.resourceId:null;switch(e.ruleKey){case"DeploymentFailed":{let e=a?t.deploys.get(a):void 0;if(!a||!e?.currentId||!l.test(e.currentId))return[];let r=[{action:"vercel_redeploy",resourceKind:"app",resourceId:a,targetRef:e.currentId}];return e.previousId&&l.test(e.previousId)&&e.previousId!==e.currentId&&r.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:e.previousId}),r}case"DatabasePaused":case"AutoPauseRisk":{if("supabase_project"!==e.resourceKind||!e.resourceId)return[];let r=t.supabaseRefs.get(e.resourceId);if(!r||!d.test(r))return[];return[{action:"DatabasePaused"===e.ruleKey?"supabase_restore":"supabase_keepalive",resourceKind:"supabase_project",resourceId:e.resourceId,targetRef:r}]}case"VulnerableDependency":{let e=a?t.fixableRepos?.get(a):void 0;return a&&e&&c.test(e)?[{action:"github_bump_pr",resourceKind:"app",resourceId:a,targetRef:e}]:[]}case"MonitorDown":case"HighLatency":{let n=[];a&&c.test(e.subject)&&"http"===t.monitorKinds.get(e.subject)&&n.push({action:"recheck",resourceKind:"app",resourceId:a,targetRef:e.subject}),"MonitorDown"===e.ruleKey&&e.resourceId&&c.test(e.subject)&&t.dailyHeartbeatId===e.subject&&n.push({action:"daily_rerun",room:"observe",resourceKind:e.resourceKind,resourceId:e.resourceId,targetRef:e.subject});let i=a?t.neonSuspended.get(a):void 0;i&&u.test(i.endpointId)&&n.push({action:"neon_wake",room:"databases",resourceKind:i.resourceKind,resourceId:i.resourceId,targetRef:i.endpointId});let o=a?t.deploys.get(a):void 0;return a&&function(e,t,r){if(!e?.currentId||!e.previousId||!e.liveAt||!l.test(e.previousId)||e.previousId===e.currentId)return!1;let a=r.getTime()-e.liveAt.getTime();return a>=0&&a<=t}(o,t.rollbackWindowMs??18e5,r)?n.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:o.previousId}):"MonitorDown"===e.ruleKey&&a&&o?.currentId&&l.test(o.currentId)&&"http"===t.monitorKinds.get(e.subject)&&(n.push({action:"vercel_redeploy",resourceKind:"app",resourceId:a,targetRef:o.currentId}),o.previousId&&l.test(o.previousId)&&o.previousId!==o.currentId&&n.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:o.previousId})),n}case"CertExpiringSoon":return"domain"===e.resourceKind&&e.resourceId&&c.test(e.resourceId)?[{action:"domain_recheck",resourceKind:"domain",resourceId:e.resourceId,targetRef:e.resourceId}]:[];default:return[]}})(e,a,g).map(a=>{let l,u,d,c=a.room??(0,r.p)(e),f="neon_wake"===a.action?m(a.resourceKind,a.resourceId,null,s):m(e.resourceKind,e.resourceId,e.resourceName,s);return{alertId:e.id,ruleKey:e.ruleKey,room:c,action:a.action,risk:i.H[a.action].risk,title:h(a.action,f),reason:"github_bump_pr"===a.action?(u=(l=(0,n.f)((0,t.o)(e,s).message,s,o)).includes(": ")?l.slice(l.indexOf(": ")+2):"",d=`Vulnerable packages in ${f??"this app"} have a fix`,p(u?`${d}: ${u}`:`${d}.`)):v,resourceKind:a.resourceKind,resourceId:a.resourceId,resourceName:f,targetRef:a.targetRef,proposedBy:(0,r.y)(c),expiresAt:new Date(g.getTime()+i.V)}})},"x",0,function(e,t){let r=e.ok?e.message||"Done.":e.error||"It didn't run.";return p((0,n.f)(r,t,o)||(e.ok?"Done.":"It didn't run."))},"J",0,m,"E",0,function(e){return{id:e.id,room:e.room,action:e.action,actionLabel:i.H[e.action].label,risk:i.H[e.action].risk,title:e.title,reason:e.reason,resourceName:e.resourceName,proposedBy:e.proposedBy,status:e.status,auto:e.auto,result:e.result,createdAt:e.createdAt.toISOString(),decidedAt:e.decidedAt?e.decidedAt.toISOString():null,expiresAt:e.expiresAt.toISOString()}},"Z",0,function(e,t,r){let a=r??t?.find(e=>e.isDefault)?.id??null,n=(e??[]).find(e=>!a||e.branchId===a);return n&&!n.disabled&&"idle"===n.state&&"active"!==n.pendingState&&u.test(n.id)?n.id:null}])},610514,e=>{var t=e.i(666680),r=e.i(875225),a=e.i(924924),n=e.i(220642),i=e.i(313931),o=e.i(407602),s=e.i(209576),l=e.i(983128),u=e.i(547499),d=e.i(695811),c=e.i(298397),p=e.i(291029),f=e.i(635982),m=e.i(377489),g=e.i(447933),h=e.i(442565);let k={decide:g.V,execute:(e,t,r)=>(0,g.N)(e,t,r),history:(e,t)=>(0,h.v)(e,t)};async function y(e,t,r,a,n={},i=k){let o=await i.decide(e,t,r.id,a);if("ok"!==o.status)return"missing"===o.status?{status:"missing"}:{status:"conflict",proposal:o.proposal};let s=[],l=async()=>{let e,t=i.history;if(!t||!s.length)return;let r=s.splice(0),a=new Promise(t=>{e=setTimeout(t,h.h)}),n=(async()=>{for(let[e,a]of r)await t(e,a).catch(()=>void 0)})();await Promise.race([n,a]).finally(()=>clearTimeout(e))};if("reject"===t)return s.push(["rejected",o.proposal]),{status:"ok",proposal:o.proposal,flushHistory:l};s.push(["approved",o.proposal]),n.onApproved&&await n.onApproved(o.proposal).catch(()=>void 0);let u=await i.execute(e,{id:r.id,userId:r.userId},new Date);return u&&("done"===u.status||"failed"===u.status)&&s.push([u.status,u]),{status:"ok",proposal:u??o.proposal,flushHistory:l}}var w=e.i(365156);let b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,v={en:{approve:"✅ Approve",reject:"❌ Reject",sure:"⚠️ Sure? Approve",cancel:"Cancel",invalid:"This button is not valid.",gone:"This proposal is already decided / expired",confirmFirst:"This action is risky. Tap ⚠️ Sure? Approve within 2 minutes.",confirmLate:"The confirmation expired. Tap ✅ Approve again.",cancelled:"Cancelled. The proposal is still waiting.",running:"Approved. Running…",rejected:"Rejected.",failed:"Could not process it. Try again from Auto-actions."},id:{approve:"✅ Setujui",reject:"❌ Tolak",sure:"⚠️ Yakin? Setujui",cancel:"Batal",invalid:"Tombol ini nggak valid.",gone:"Usulan ini udah diputuskan / kedaluwarsa",confirmFirst:"Aksi ini berisiko. Tap ⚠️ Yakin? Setujui dalam 2 menit.",confirmLate:"Konfirmasinya kedaluwarsa. Tap ✅ Setujui lagi.",cancelled:"Dibatalkan. Usulannya masih menunggu.",running:"Disetujui. Lagi jalan…",rejected:"Ditolak.",failed:"Gagal memproses. Coba lagi dari Auto-actions."}},I=e=>(0,t.createHmac)("sha256",Buffer.from(e,"base64")).update("watchpost:telegram-callback:v1").digest(),$=(e,r)=>(0,t.createHmac)("sha256",e).update(r,"utf8").digest("base64url").slice(0,16);function A(e,t,r,a=null){let n=`p:${t}:${r}${"c"===r?`:${(a??0).toString(36)}`:""}`;return`${n}:${$(e,n)}`}function R(e,r){if("string"!=typeof r||r.length>64)return null;let a=r.lastIndexOf(":");if(a<0)return null;let n=r.slice(0,a),i=Buffer.from(r.slice(a+1),"utf8"),o=Buffer.from($(e,n),"utf8");if(i.length!==o.length||!(0,t.timingSafeEqual)(i,o))return null;let s=n.split(":");if("p"!==s[0]||!b.test(s[1]??""))return null;let l=s[2];return"c"===l?4===s.length&&/^[0-9a-z]{1,10}$/.test(s[3])?{id:s[1],op:l,exp:parseInt(s[3],36)}:null:3===s.length&&["a","r","x"].includes(l)?{id:s[1],op:l,exp:null}:null}let x=(e,t,r="en")=>({inline_keyboard:[[{text:v[r].approve,callback_data:A(e,t,"a")},{text:v[r].reject,callback_data:A(e,t,"r")}]]}),_=(e,t,r,a="en")=>({inline_keyboard:[[{text:v[a].sure,callback_data:A(e,t,"c",r)},{text:v[a].cancel,callback_data:A(e,t,"x")}]]}),j={en:{pending:"⏳ waiting",approved:"⚙️ running",running:"⚙️ running",done:"✅ done",failed:"❌ failed",rejected:"🚫 rejected",expired:"⌛ expired"},id:{pending:"⏳ menunggu",approved:"⚙️ jalan",running:"⚙️ jalan",done:"✅ selesai",failed:"❌ gagal",rejected:"🚫 ditolak",expired:"⌛ kedaluwarsa"}};function O(e,t,r="en"){let a=e.result&&("done"===e.status||"failed"===e.status||"expired"===e.status)?(0,f.f)(e.result,t,200):"";return`Status: ${j[r][e.status]}${a?` — ${(0,n.H)(a)}`:""}`}let T=(e,t,r,a="en")=>`${(0,h.a)(e,t,r,!1,a)}
|
|
4
|
+
${O(e,t,a)}`,P={key:()=>I((0,u.f)().OPS_ENCRYPTION_KEY),get:async function(e){let[t]=await (0,a.f)().select({id:p.O.id,room:p.O.room,action:p.O.action,risk:p.O.risk,title:p.O.title,reason:p.O.reason,resourceName:p.O.resourceName,proposedBy:p.O.proposedBy,status:p.O.status,auto:p.O.auto,result:p.O.result,createdAt:p.O.createdAt,decidedAt:p.O.decidedAt,expiresAt:p.O.expiresAt}).from(p.O).where((0,r.u)(p.O.id,e)).limit(1);return t?(0,m.E)(t):null},decide:y,book:()=>(0,s.f)(),siteUrl:()=>(0,u.f)().SITE_URL,lang:()=>(0,d.H)("telegram"),audit:e=>(0,o.f)({...e,resourceId:null})};async function S(e,t,r=P){let{client:a,owner:n,now:o}=t,s=r.key(),l=await r.lang().catch(()=>"en"),u=v[l],d=R(s,e.data);if(!d)return void await a.answer(e.queryId,u.invalid);let p=null,f=async(t,n)=>a.editText(e.chatId,e.messageId,T(t,await (p??=r.book().catch(()=>c.a)),r.siteUrl(),l),n),m=async t=>{await a.answer(e.queryId,u.gone),t?await f(t,null):await a.editKeyboard(e.chatId,e.messageId,{inline_keyboard:[]})},g=await r.get(d.id);if(!g||!("pending"===g.status&&Date.parse(g.expiresAt)>o.getTime()))return m(g);if("x"===d.op){await a.editKeyboard(e.chatId,e.messageId,x(s,g.id,l)),await a.answer(e.queryId,u.cancelled);return}if("a"===d.op&&("risky"===g.risk||w.H[g.action]?.risk==="risky")){await a.editKeyboard(e.chatId,e.messageId,_(s,g.id,Math.floor((o.getTime()+12e4)/1e3),l)),await a.answer(e.queryId,u.confirmFirst);return}if("c"===d.op&&(d.exp??0)*1e3<o.getTime()){await a.editKeyboard(e.chatId,e.messageId,x(s,g.id,l)),await a.answer(e.queryId,u.confirmLate);return}let h="r"===d.op?"reject":"approve",k=!1;try{let t=await r.decide(g.id,h,{id:n.memberId,userId:n.userId},o,{onApproved:async t=>{k=!0,await a.answer(e.queryId,u.running),await f(t,null)}});if("missing"===t.status)return m(null);if("conflict"===t.status)return m(t.proposal);await r.audit({kind:"ok",message:i.X.telegramDecided("approve"===h?"approved":"rejected",t.proposal.title.slice(0,120)),actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),k||await a.answer(e.queryId,"reject"===h?u.rejected:u.running),await f(t.proposal,null),await t.flushHistory?.()}catch(t){console.warn("telegram approvals: deciding failed:",t instanceof Error?t.name:"error"),k||await a.answer(e.queryId,u.failed)}}async function D(){if(!await (0,l.v)()||!await (0,l.I)())return null;let e=I((0,u.f)().OPS_ENCRYPTION_KEY),t=await (0,d.H)("telegram");return r=>x(e,r.id,t)}e.s(["CONFIRM_MS",0,12e4,"TEXT",0,v,"approvalButtons",0,D,"approvalKeyboard",0,x,"callbackKey",0,I,"confirmKeyboard",0,_,"noticeText",0,T,"proposalCallback",0,S,"signCallback",0,A,"statusLine",0,O,"verifyCallback",0,R],610514)},635982,e=>{var t=e.i(298397),r=e.i(76067),a=e.i(753783);let n="[\\p{L}\\p{N}_./-]",i=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=/(?<![\p{L}\p{N}_.@-])(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,24}(?![\p{L}\p{N}_-]|\.[\p{L}\p{N}])/giu,s=new WeakMap;e.s(["f",0,(e,l,u)=>{var d;let c;return c=(d=String(e??"").replace(/\s+/g," "),String(d??"").replace(/\r\n?/g,"\n").split("\n").map(e=>{var u;let d,c=(0,a.F)((0,r.F)(e,l),l);return c=c.replace(o,e=>/\.example$/i.test(e)?e:"site.example"),(0,t.G)((u=c,(d=function(e){if(s.has(e))return s.get(e);let t=new Map(e.app.filter(e=>e.name.trim().length>=2).map(e=>[e.name.toLowerCase(),e.alias])),r=[...t.keys()].sort((e,t)=>t.length-e.length),a=r.length?{re:RegExp(`(?<!${n})(?:${r.map(i).join("|")})(?!${n})`,"giu"),alias:t}:null;return s.set(e,a),a}(l))?u.replace(d.re,e=>d.alias.get(e.toLowerCase())??e):u))}).join("\n")).replace(/\s+/g," ").trim(),c.length>u?`${c.slice(0,u-1).trimEnd()}…`:c}])}]})();
|
|
5
5
|
|
|
6
6
|
//# sourceMappingURL=src_1tux0n9_5b1kr._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[755776,e=>{var n=e.i(420776),t=e.i(870988),l=e.i(438257),s=e.i(144902),a=e.i(389705),i=e.i(484259),o=e.i(303090),u=e.i(467751),r=e.i(618916);let d=r.ops.table("supabase_metrics_keys",{resourceId:(0,u.q)("resource_id").primaryKey().references(()=>r.resources.id,{onDelete:"cascade"}),keyCiphertext:(0,i.f)("key_ciphertext").notNull(),keyIv:(0,i.f)("key_iv").notNull(),keyVersion:(0,t.f)("key_version").notNull().default(1),addedBy:(0,u.q)("added_by"),latest:(0,l.y)("latest").$type(),lastTryAt:(0,o._)("last_try_at",{withTimezone:!0}),lastOkAt:(0,o._)("last_ok_at",{withTimezone:!0}),lastError:(0,i.f)("last_error"),createdAt:(0,o._)("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:(0,o._)("updated_at",{withTimezone:!0}).notNull().defaultNow()}),c=r.ops.table("supabase_metrics",{resourceId:(0,u.q)("resource_id").notNull().references(()=>r.resources.id,{onDelete:"cascade"}),hour:(0,o._)("hour",{withTimezone:!0}).notNull(),samples:(0,t.f)("samples").notNull().default(0),cpuSamples:(0,t.f)("cpu_samples").notNull().default(0),cpuAvg:(0,a.f)("cpu_avg"),cpuMax:(0,a.f)("cpu_max"),memAvg:(0,a.f)("mem_avg"),memMax:(0,a.f)("mem_max"),diskPct:(0,a.f)("disk_pct"),connUsed:(0,t.f)("conn_used"),connMax:(0,t.f)("conn_max")},e=>[(0,s._)({columns:[e.resourceId,e.hour]}),(0,n.y)("supabase_metrics_hour_idx").on(e.hour)]);e.s(["l",0,c,"A",0,d])},278619,e=>{let n=e=>(e??0).toLocaleString("en-US"),t={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:e=>`${n(e)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:e=>`No collector run for ${n(e)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:e=>`p95 > ${n(e)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"Production deployment state = ERROR"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase status = INACTIVE"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:e=>`TLS certificate expires in < ${n(e)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:e=>`Domain expires in < ${n(e)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Database size > ${n(e)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:e=>`> ${n(e)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:e=>`Daily reads > ${n(e)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase project without API traffic for ${n(e)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase CPU > ${n(e)}% for 15 min, RAM > ${n(Math.min(99,(e??80)+10))}%, disk > ${n(e)}% or connections > ${n(e)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Turso, Upstash or D1 usage > ${n(e)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:e=>`Account credential expires in < ${n(e)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a high or critical advisory (OSV.dev)"}};Object.keys(t),e.s(["_",0,t,"h",0,e=>"string"==typeof e&&e in t])},273083,e=>{e.s(["f",0,{checks:7,rollupsHourly:90,deployments:30,events:90,alerts:90,collectorRuns:14,storedLogs:7,recommendationDismissals:90}])},867274,800366,e=>{let n=/^([A-Za-z_:][A-Za-z0-9_:]*)(\{.*\})?\s+(\S+)(?:\s+-?\d+)?\s*$/,t=e=>e.length?e.reduce((e,n)=>e+n.value,0):null,l=["pg_settings_max_connections","pg_max_connections"],s=new Set(["rootfs","tmpfs","overlay","squashfs","devtmpfs"]),a=e=>Math.round(10*e)/10,i=e=>Math.min(100,Math.max(0,e)),o=(e,n)=>null!==e&&null!==n&&n>0?a(i(e/n*100)):null,u=(e,n,t)=>null===t?e:null===e||0===n?t:a((e*n+t)/(n+1)),r=(e,n)=>null===n?e:null===e?n:Math.max(e,n);e.s(["x",0,3,"B",0,function(e,n,t){if(!e||t.getTime()-new Date(e.at).getTime()>12e5)return null;let l=[],s=e.recent.filter(e=>t.getTime()-new Date(e.at).getTime()<=96e4),a=s.length?new Date(s[s.length-1].at).getTime()-new Date(s[0].at).getTime():0;s.length>=3&&a>=54e4&&s.every(e=>e.cpu>n.cpu)&&l.push(`CPU ${Math.round(Math.min(...s.map(e=>e.cpu)))}%+ for 15 min (limit ${n.cpu}%)`),null!==e.memPct&&e.memPct>n.ram&&l.push(`RAM ${Math.round(e.memPct)}% (limit ${n.ram}%)`),null!==e.diskPct&&e.diskPct>n.disk&&l.push(`disk ${Math.round(e.diskPct)}% (limit ${n.disk}%)`);let i=o(e.connUsed,e.connMax);return null!==i&&i>n.conn&&l.push(`connections ${e.connUsed} of ${e.connMax} (limit ${n.conn}%)`),l},"V",0,e=>{let n=e??80;return{cpu:n,ram:Math.min(99,n+10),disk:n,conn:n}},"c",0,function(e,n){let a=n&&e.some(e=>e.labels.supabase_identifier===n)?e.filter(e=>void 0===e.labels.supabase_identifier||e.labels.supabase_identifier===n):e,i=e=>a.filter(n=>n.name===e&&Number.isFinite(n.value)),o=i("node_cpu_seconds_total"),u=t(o),r=t(o.filter(e=>"idle"===e.labels.mode)),d=e=>i(e)[0]?.value??null,c=e=>{let n=i(e).filter(e=>!s.has(e.labels.fstype??""));return(n.find(e=>"/data"===e.labels.mountpoint)??n.find(e=>"/"===e.labels.mountpoint)??null)?.value??null};return{cpu:null!==u&&null!==r?{busy:u-r,total:u}:null,memTotal:d("node_memory_MemTotal_bytes"),memAvailable:d("node_memory_MemAvailable_bytes"),diskSize:c("node_filesystem_size_bytes"),diskAvail:c("node_filesystem_avail_bytes"),backends:t(i("pg_stat_database_num_backends")),maxConnections:l.map(d).find(e=>null!==e)??null}},"b",0,e=>new Date(36e5*Math.floor(e.getTime()/36e5)),"n",0,function(e,n){let t=e??{samples:0,cpuSamples:0,cpuAvg:null,cpuMax:null,memAvg:null,memMax:null,diskPct:null,connUsed:null,connMax:null},l=null===t.memAvg?0:t.samples;return{samples:t.samples+1,cpuSamples:t.cpuSamples+ +(null!==n.cpuPct),cpuAvg:u(t.cpuAvg,t.cpuSamples,n.cpuPct),cpuMax:r(t.cpuMax,n.cpuPct),memAvg:u(t.memAvg,l,n.memPct),memMax:r(t.memMax,n.memPct),diskPct:n.diskPct??t.diskPct,connUsed:r(t.connUsed,n.connUsed),connMax:n.connMax??t.connMax}},"E",0,function(e,n,t){var l;let s=t.toISOString(),u=(l=e?.prev,{cpuPct:function(e,n){if(!e||!n)return null;let t=new Date(n.at).getTime()-new Date(e.at).getTime();if(!(t>0)||t>18e5)return null;let l=n.total-e.total,s=n.busy-e.busy;return l<=0||s<0?null:a(i(s/l*100))}(l,n.cpu?{at:s,...n.cpu}:null),memPct:null!==n.memTotal&&null!==n.memAvailable?o(n.memTotal-n.memAvailable,n.memTotal):null,diskPct:null!==n.diskSize&&null!==n.diskAvail?o(n.diskSize-n.diskAvail,n.diskSize):null,connUsed:null===n.backends?null:Math.round(n.backends),connMax:null===n.maxConnections?null:Math.round(n.maxConnections)}),r=(e?.recent??[]).filter(e=>t.getTime()-new Date(e.at).getTime()<=24e5);return null!==u.cpuPct&&r.push({at:s,cpu:u.cpuPct}),{...u,at:s,prev:n.cpu?{at:s,...n.cpu}:null,recent:r.slice(-8)}},"a",0,function(e){let t=[];for(let s of e.split("\n")){var l;let e=s.trim();if(!e||e.startsWith("#"))continue;let a=n.exec(e);if(!a)continue;let i=a[2]?function(e){let n={},t=1,l=e.length-1;for(;t<l;){for(;t<l&&(","===e[t]||" "===e[t]);)t++;if(t>=l)break;let s=e.indexOf("=",t);if(s<0)return null;let a=e.slice(t,s).trim();if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(a)||'"'!==e[s+1])return null;let i=s+2,o="";for(;i<l;i++){let n=e[i];if("\\"===n){let n=e[i+1];o+="n"===n?"\n":n,i++}else if('"'===n)break;else o+=n}if('"'!==e[i])return null;n[a]=o,t=i+1}return n}(a[2]):{};if(!i)continue;let o="NaN"===(l=a[3])?0/0:"+Inf"===l||"Inf"===l?1/0:"-Inf"===l?-1/0:Number(l);Number.isNaN(o)&&"NaN"!==a[3]||t.push({name:a[1],labels:i,value:o})}return t},"T",0,function(e,n){let t=e.getTime();return(null===n||!(t-n<27e4))&&(Math.floor(t/6e4)%5==0||null!==n&&t-n>=6e5)}],867274);let d={cuHours:100,storageBytes:0x40000000,transferBytes:0x140000000,branches:10,scaleToZeroMin:5};function c(e){return e.disabled?{state:"err",label:"Suspended"}:"init"===e.state||e.pendingState&&e.pendingState!==e.state?{state:"build",label:"Starting"}:"active"===e.state?{state:"ok",label:"Active"}:"idle"===e.state?{state:"idle",label:"Idle"}:{state:"unknown",label:"Unknown"}}e.s(["a",0,d,"p",0,function(e){if((e.computeSeconds??0)>=3600*d.cuHours)return{state:"err",label:"CU-hours used up"};if(!e.endpoints.length)return{state:"unknown",label:"No compute"};let n=e.endpoints.map(c);return n.some(e=>"err"===e.state)?{state:"err",label:"Compute suspended"}:n.some(e=>"ok"===e.state)?{state:"ok",label:"Active"}:n.some(e=>"build"===e.state)?{state:"build",label:"Starting"}:n.every(e=>"idle"===e.state)?{state:"idle",label:"Idle"}:{state:"unknown",label:"Unknown"}}],800366)}]})();
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=src_1wduh0eckiwl1._.js.map
|