watchbell 1.2.6 → 1.3.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/build-manifest.json +3 -3
- package/server/.next/prerender-manifest.json +3 -3
- package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +13 -13
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +21 -21
- package/server/.next/server/app/(console)/(private)/ai/models/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/(private)/ai/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +17 -17
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js +60 -64
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +27 -27
- package/server/.next/server/app/(console)/alerts/page.js +60 -64
- package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +86 -56
- package/server/.next/server/app/(console)/apps/[id]/page.js +66 -68
- package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/apps/page.js +63 -66
- package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/backups/page.js +60 -64
- package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/catalog/page.js +60 -64
- package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/connections/page.js +60 -64
- package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/d1/page.js +60 -64
- package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +37 -17
- package/server/.next/server/app/(console)/deployments/page.js +63 -66
- package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +18 -18
- package/server/.next/server/app/(console)/dns/page.js +60 -64
- package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +13 -13
- package/server/.next/server/app/(console)/domains/page.js +60 -64
- package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/events/page.js +60 -64
- package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +18 -18
- package/server/.next/server/app/(console)/firebase/page.js +60 -64
- package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/logs/page.js +60 -64
- package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/manage/sections/page.js +60 -64
- package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/neon/page.js +60 -64
- package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/overview/page.js +66 -69
- package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/repos/[id]/page.js +64 -67
- package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/repos/page.js +62 -65
- package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +21 -21
- package/server/.next/server/app/(console)/settings/page.js +60 -64
- package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +18 -18
- package/server/.next/server/app/(console)/sql/page.js +60 -64
- package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/status/page.js +60 -64
- package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +30 -30
- package/server/.next/server/app/(console)/supabase/page.js +60 -64
- package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/topology/page.js +60 -64
- package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/turso/page.js +60 -64
- package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/upstash/page.js +60 -64
- package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +25 -25
- package/server/.next/server/app/(console)/uptime/page.js +60 -64
- package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/welcome/page.js +60 -64
- package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/_global-error/page.js.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 +2 -2
- package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/server/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- 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 +3 -3
- package/server/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- 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 +8 -8
- package/server/.next/server/app/api/collect/route.js +46 -48
- 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 +8 -8
- package/server/.next/server/app/api/daily/route.js +46 -48
- package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
- package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +8 -8
- package/server/.next/server/app/api/telegram/webhook/route.js +46 -48
- package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
- 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/server-reference-manifest.json +2 -2
- package/server/.next/server/app/mfa/page.js +25 -25
- package/server/.next/server/app/mfa/page.js.nft.json +1 -1
- package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
- package/server/.next/server/app/mfa/setup/page.js +25 -25
- package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
- package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/page.js.nft.json +1 -1
- package/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/s/[slug]/page.js +7 -7
- package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
- package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/setup/page.js.nft.json +1 -1
- package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
- package/server/.next/server/app/signin/page.js +28 -29
- 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/chunks/{[root-of-the-server]__0655w3_d4ejfb._.js → [root-of-the-server]__0-94urkhm871c._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1bg8grh9kfims._.js → [root-of-the-server]__01hgqxx2a0okv._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__14-pt1-s1o5ex._.js → [root-of-the-server]__0c2heh-0pjyob._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__12lrpnd-dhawi._.js → [root-of-the-server]__0c9y_zg74k4oe._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1kwldcrcmwc0x._.js → [root-of-the-server]__0fmt9z8-xukob._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0whk62ebfu1u0._.js → [root-of-the-server]__0i3h5covkd6_t._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1nm0sjvuf9jrb._.js → [root-of-the-server]__0inf2zuuqjrq6._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__09dk9k-9q4d16._.js → [root-of-the-server]__0rpys5i04hzww._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0x4_tt5v17fx3._.js → [root-of-the-server]__0xfgfo-ks4_e8._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1c1nhm-kj5kqu._.js → [root-of-the-server]__0zjhlf_yodox3._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0c0pkv3an1lg-._.js → [root-of-the-server]__130_vkgsongq_._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1-xgpr5q148ze._.js → [root-of-the-server]__14vj8ywy5spa2._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__17jngidngj3rb._.js → [root-of-the-server]__161v5qfd5qk2p._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__16u9d_hm9lefl._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0s8wo4espz6eu._.js → [root-of-the-server]__1_df6aphi-pfk._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1r24segt1slar._.js → [root-of-the-server]__1j527a18gh10b._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1k-7jan2fsbys._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__1lq25064c4ny_._.js → [root-of-the-server]__1uad-kugxmkx8._.js} +2 -2
- package/server/.next/server/chunks/_0-ub844lc_z_a._.js +2 -2
- package/server/.next/server/chunks/_004c7-39glldb._.js +4 -4
- package/server/.next/server/chunks/_05hhw0eql5-dv._.js +5 -3
- package/server/.next/server/chunks/_08fv52mqg619m._.js +11 -9
- package/server/.next/server/chunks/_08z7lmk32r__5._.js +2 -2
- package/server/.next/server/chunks/_0tz4o-qufnu3l._.js +4 -4
- package/server/.next/server/chunks/_1-pv4d4qhe7to._.js +2 -2
- package/server/.next/server/chunks/_10vh_l3hht4_3._.js +4 -4
- package/server/.next/server/chunks/_13dlt388gceez._.js +11 -9
- package/server/.next/server/chunks/_1fj4vzjpusyn8._.js +5 -0
- package/server/.next/server/chunks/_1l-68brbq289m._.js +5 -3
- package/server/.next/server/chunks/{_1476vtrt9101m._.js → _1rskctyr7yt-b._.js} +2 -2
- package/server/.next/server/chunks/{src_01fd1ve-xj9xo._.js → src_0j8daco-75zka._.js} +2 -2
- package/server/.next/server/chunks/{src_049aazgsmienv._.js → src_1lvv9wiag2d8-._.js} +2 -2
- package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +1 -1
- package/server/.next/server/chunks/src_lib_0n-8zjgq6mcc7._.js +3 -0
- package/server/.next/server/chunks/src_lib_1nkahiclbn55q._.js +3 -0
- package/server/.next/server/chunks/src_lib_1y5l54dwaet39._.js +3 -0
- package/server/.next/server/chunks/src_private_0uwb-eyaxy9b3._.js +5 -0
- 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_21atz5tidps07.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
- package/server/.next/server/chunks/ssr/{[externals]__0d7rvi3tmo9zf._.js → [externals]__02s9k1gg9qqkm._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__03mal5uo1rzg4._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__05_98ql5tgeii._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0xscr-8y9a4cj._.js → [root-of-the-server]__07k_84t5-d55n._.js} +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0amfa4t2-in-x._.js → [root-of-the-server]__09j1po2u91fp3._.js} +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__08u1c2f2i7ru4._.js → [root-of-the-server]__0e1s_5gg-u3iu._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0h2hxe0vl-2x0._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0s2of3mcou177._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1uzqsxyxwffdo._.js → [root-of-the-server]__0skfdezx5rxie._.js} +2 -2
- 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]__1e9tlsk1gl8lw._.js +4 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1sw2q1p1t59y8._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1o6cysvbfkltz._.js → [root-of-the-server]__1tj-iwvrxfd1a._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1v3b498_j-68t._.js +4 -0
- package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
- package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
- package/server/.next/server/chunks/ssr/{_07f-svx_l12lw._.js → _09arvqnznfrzl._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
- package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
- package/server/.next/server/chunks/ssr/_0ao-urx9ftj1s._.js +3 -0
- package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
- package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
- package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
- package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
- package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
- package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
- package/server/.next/server/chunks/ssr/_0dvz4dndt6lkf._.js +3 -0
- package/server/.next/server/chunks/ssr/{_1bc69myq83woe._.js → _0f11sdi6yislb._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
- package/server/.next/server/chunks/ssr/{_0-wc6f6p0c8lv._.js → _0gmw45sb1llld._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
- package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
- package/server/.next/server/chunks/ssr/_0iy27gi4y9-fe._.js +4 -0
- package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
- package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
- package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
- package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
- package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
- package/server/.next/server/chunks/ssr/{_1476vtrt9101m._.js → _0rw2pberdmaa5._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
- package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
- package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
- package/server/.next/server/chunks/ssr/{_1edj756n1im8t._.js → _0w3mz8059j-pk._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
- package/server/.next/server/chunks/ssr/_0xmud7u5hdnqu._.js +4 -0
- package/server/.next/server/chunks/ssr/_1-4401bfn50mf._.js +4 -0
- 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/_118h21qua_4o3._.js +1 -1
- package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
- package/server/.next/server/chunks/ssr/_12wjuabpo0ofk._.js +3 -0
- 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/_1c7jkkvkvzj_u._.js +2 -2
- package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
- package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
- package/server/.next/server/chunks/ssr/_1dp5bgqob29-f._.js +3 -0
- package/server/.next/server/chunks/ssr/{_1j61tfpfj2t9d._.js → _1er-95g7emfdz._.js} +2 -2
- package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
- package/server/.next/server/chunks/ssr/_1fj4vzjpusyn8._.js +5 -0
- package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
- package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
- package/server/.next/server/chunks/ssr/{_07-dfx0qix52k._.js → _1h7x73oxtp7h5._.js} +2 -2
- package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.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/{_0jqrjb30bblvy._.js → _1jl374mbl90fb._.js} +2 -2
- package/server/.next/server/chunks/ssr/{_1r7o1vx4875hu._.js → _1ktvwngz0lzjr._.js} +2 -2
- package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
- package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
- package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
- package/server/.next/server/chunks/ssr/_1rskctyr7yt-b._.js +3 -0
- package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
- package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_1--1mjfnoprr2.js +3 -0
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.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/src_0330uf9pdfco9._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_1bg_io_v7gt71._.js → src_04o0-kzfmcnim._.js} +2 -2
- 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_0abts6wp5ucc0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0jxjbvkvg0bjg._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0ovx2ogvlz2eh._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +3 -1
- package/server/.next/server/chunks/ssr/src_0yxy3bklfxtzz._.js +3 -0
- package/server/.next/server/chunks/ssr/src_1-k3gvxaqli74._.js +3 -0
- package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1ckoccd8qvnje._.js +1 -1
- package/server/.next/server/chunks/ssr/src_1maoe8g5gnv0u._.js +8 -0
- package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.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_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.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)_0u4_y9-b7g971._.js +3 -0
- package/server/.next/server/chunks/ssr/{src_app_(console)_0e832kna-734m._.js → src_app_(console)_11o_ga_rurg55._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_10xvt--29v-ed._.js +3 -0
- 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)_connections_1fahc65-97qla._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_deployments_06a83hsex1kba._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.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_section-switch_tsx_1mfs-o_357i22._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_repos_[id]_page_tsx_1nkxthc4ethrj._.js +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_repos_repo-list_tsx_1n1gcm4qfrfdt._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_uptime_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_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_0u6eoxbd8ttqy._.js +3 -0
- 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_list-filter_tsx_1zp29997g97yd._.js +1 -1
- package/server/.next/server/chunks/ssr/{_0ls7sornjrg95._.js → src_lib_0-nc33gvdtkg5._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_0n-8zjgq6mcc7._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_10d18lqjfj8je._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_1y5l54dwaet39._.js +3 -0
- package/server/.next/server/chunks/ssr/{src_lib_demo_09ht4doed9eqi._.js → src_lib_demo_0sbw5n9n4mpzx._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_lib_providers_github-browse_ts_1apskpn4fe9qr._.js +3 -0
- package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_1b8918m4jsjpi._.js +5 -0
- 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_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/functions-config-manifest.json +3 -0
- package/server/.next/server/middleware-build-manifest.js +3 -3
- 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 +208 -170
- package/server/.next/static/chunks/{3o45i7xbzm0w-.js → 05uco41_mcq9o.js} +1 -1
- package/server/.next/static/chunks/{243ijh4fs2zsq.js → 06o7zhf9tv649.js} +1 -1
- package/server/.next/static/chunks/{2hscqr4n7hu7n.js → 0bkm_mj9zqjdn.js} +1 -1
- package/server/.next/static/chunks/0bqipdtnu2hws.js +1 -0
- package/server/.next/static/chunks/0d609c7qn6uke.js +1 -0
- package/server/.next/static/chunks/0ghhg0xs85ipn.js +1 -0
- package/server/.next/static/chunks/{1eeqy_pc_llv4.js → 0inb7hk8o9yz-.js} +1 -1
- package/server/.next/static/chunks/{2jdlcu25qy00d.js → 0lgt6mz4u8rzx.js} +1 -1
- package/server/.next/static/chunks/{2y05vm9r_wxds.js → 0r-etc_jv_08f.js} +1 -1
- package/server/.next/static/chunks/{041ko45qawas9.js → 0un8ttgrt0gtq.js} +1 -1
- package/server/.next/static/chunks/{0-ett1b-o34r0.js → 0v5xmga7srjvl.js} +1 -1
- package/server/.next/static/chunks/{3hpyrqm98toxv.js → 0zzbinjpe41vj.js} +1 -1
- package/server/.next/static/chunks/{3r3-9oir5c1ul.js → 12vmyliqgjlbi.js} +1 -1
- package/server/.next/static/chunks/{1muk1ubaswhlj.js → 131_xlsbuxnhr.js} +1 -1
- package/server/.next/static/chunks/{1g3u_ngexgvss.js → 146uoz7wc8q2y.js} +1 -1
- package/server/.next/static/chunks/{0-fov5gyz32mj.js → 1crspgs6bd_rg.js} +1 -1
- package/server/.next/static/chunks/{3kqiccrh_bnpl.js → 1h0025pjnwxmg.js} +2 -2
- package/server/.next/static/chunks/{35ua22np4u9jr.js → 1ot9e084ramy3.js} +1 -1
- package/server/.next/static/chunks/{4545xu4sehvxc.js → 1ouf289jk00f3.js} +1 -1
- package/server/.next/static/chunks/{2kurh5s5u8_4-.js → 1sds57ddvk_30.js} +1 -1
- package/server/.next/static/chunks/{3oe302ug_esoe.js → 1sexa68j4kb7d.js} +1 -1
- package/server/.next/static/chunks/1t9iq0wi3ykuc.js +1 -0
- package/server/.next/static/chunks/{442t8i7d46g9y.js → 1u4r7ru8i619_.js} +2 -2
- package/server/.next/static/chunks/{0zj507c7ui4jt.js → 1vuqw31-hmrxb.js} +1 -1
- package/server/.next/static/chunks/{20ujg0hz_need.js → 1xhyfwwelhzu1.js} +1 -1
- package/server/.next/static/chunks/{1vyf467_8v-cw.js → 1z85thzinc0kx.js} +1 -1
- package/server/.next/static/chunks/{11_iva96ceble.js → 25erhrojc-1fi.js} +1 -1
- package/server/.next/static/chunks/{0x1xj431cbkfa.js → 29sduk6krs_b1.js} +1 -1
- package/server/.next/static/chunks/{1z8byc-won_tq.js → 29v9jg7vw7brb.js} +1 -1
- package/server/.next/static/chunks/2dbx53nx6f-9f.js +7 -0
- package/server/.next/static/chunks/{3-xb6vd_khwfo.js → 2e195xkcjq72y.js} +1 -1
- package/server/.next/static/chunks/{1urtw14pwufsv.js → 2f07frmj7udob.js} +1 -1
- package/server/.next/static/chunks/{2t30gqjhercob.js → 2fp4pmte8dtbb.js} +1 -1
- package/server/.next/static/chunks/{2seth6dz7lydu.js → 2gv1tg_m49u9m.js} +1 -1
- package/server/.next/static/chunks/{3ymogjp57edbj.js → 2ockms4mqiec_.js} +1 -1
- package/server/.next/static/chunks/{1jc9qa7xb63lp.js → 2p-ty5g5uq133.js} +1 -1
- package/server/.next/static/chunks/{299jy1-g0cm8n.js → 2tnbp3f6x0jv_.js} +1 -1
- package/server/.next/static/chunks/{36e9fpbpqndu5.js → 2uu38i0lq_wlc.js} +1 -1
- package/server/.next/static/chunks/2uufhbm18_cri.js +1 -0
- package/server/.next/static/chunks/{1ghfc_9g9io17.js → 2vxmvnntekclp.js} +1 -1
- package/server/.next/static/chunks/{3wl06e5yyzlwh.js → 2xhqwi0hiv_70.js} +1 -1
- package/server/.next/static/chunks/{1qug5gmo2rbaf.js → 3-8by5unw1j-r.js} +1 -1
- package/server/.next/static/chunks/{1gw40u38oaj6z.js → 310xe703zu_qp.js} +1 -1
- package/server/.next/static/chunks/{0x6eipkda93fh.js → 33z05hmv7hw1s.js} +1 -1
- package/server/.next/static/chunks/{3xbsyym_tfj0u.js → 36wyyf_gobe7n.js} +1 -1
- package/server/.next/static/chunks/{0m40tf7-fh2ht.js → 3_5xff9sl-2e3.js} +1 -1
- package/server/.next/static/chunks/{3zx1pe40m_ddz.js → 3b0xtqo5kfyuj.js} +1 -1
- package/server/.next/static/chunks/{3cjokqd7600_0.js → 3cvrxnnojhvxz.js} +1 -1
- package/server/.next/static/chunks/{1e0iyxugtm7b0.js → 3fais-5rzury8.js} +2 -2
- package/server/.next/static/chunks/{1zhnm25vt6hu8.js → 3gj8dc0o09zl6.js} +1 -1
- package/server/.next/static/chunks/{422gxqrwveuyc.js → 3s3unktz7g7f0.js} +1 -1
- package/server/.next/static/chunks/{2j9fpx77gfesr.js → 3w26qimof6fnj.js} +1 -1
- package/server/.next/static/chunks/{0o6_y6xu__s6q.js → 3z70obsntezy0.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0z3hf530bwcq_._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1p3fqi03x5du8._.js +0 -3
- package/server/.next/server/chunks/_0hsj1tx2ynla-._.js +0 -3
- package/server/.next/server/chunks/_1b1t9p1xljuql._.js +0 -5
- package/server/.next/server/chunks/src_lib_collector_http-check_ts_0bh0rtjky3u1-._.js +0 -3
- package/server/.next/server/chunks/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +0 -3
- package/server/.next/server/chunks/src_lib_data_deployments-db_ts_1shbv_55rwa2-._.js +0 -3
- package/server/.next/server/chunks/src_lib_domain-move_ts_04stiet1-xpe2._.js +0 -3
- package/server/.next/server/chunks/src_private_1_nggk_wre7qf._.js +0 -5
- package/server/.next/server/chunks/ssr/[root-of-the-server]__05gue5stvejba._.js +0 -4
- package/server/.next/server/chunks/ssr/[root-of-the-server]__18gcvkhrt73zc._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1e0l6kek0ufui._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1o63-3k1wez40._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1tgcpistmcbrd._.js +0 -4
- package/server/.next/server/chunks/ssr/_034fv8o7kws2k._.js +0 -3
- package/server/.next/server/chunks/ssr/_042ow6smd_1gj._.js +0 -3
- package/server/.next/server/chunks/ssr/_0hsj1tx2ynla-._.js +0 -3
- package/server/.next/server/chunks/ssr/_0zixhhc1lheoi._.js +0 -4
- package/server/.next/server/chunks/ssr/_1b1t9p1xljuql._.js +0 -5
- package/server/.next/server/chunks/ssr/_218164gkxgum_._.js +0 -4
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_0y5m8cul6d7kk.js +0 -3
- package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +0 -8
- package/server/.next/server/chunks/ssr/src_1koc8y1nfdlw3._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_0kwns5iudhgwj._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +0 -3
- package/server/.next/server/chunks/ssr/src_app_signin_1fj68y-bbe-xr._.js +0 -3
- package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_1gauld53vvpev._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_1l8ej-zoyyegd._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_collector_http-check_ts_0bh0rtjky3u1-._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_data_deployments-db_ts_1shbv_55rwa2-._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_data_vercel-action_ts_1hvera3nwo5fp._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_domain-move_ts_04stiet1-xpe2._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_view_14iq8onyfo7nd._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_view_deploy-actions_ts_1l3rr2k-04gi4._.js +0 -3
- package/server/.next/server/chunks/ssr/src_private_04omlb_sgy-_r._.js +0 -5
- package/server/.next/static/chunks/0ia5361d7hoce.js +0 -7
- package/server/.next/static/chunks/15_3o9t6d7ujo.js +0 -1
- package/server/.next/static/chunks/1c0s-ejiwfy2u.js +0 -1
- package/server/.next/static/chunks/2j4kmkog1zkpo.js +0 -1
- package/server/.next/static/chunks/2ziborutqth-2.js +0 -1
- /package/server/.next/static/{u0RcJ9L5FEEUdENisty65 → WqHYD3Noq8qkEPXvfVDGQ}/_buildManifest.js +0 -0
- /package/server/.next/static/{u0RcJ9L5FEEUdENisty65 → WqHYD3Noq8qkEPXvfVDGQ}/_clientMiddlewareManifest.js +0 -0
- /package/server/.next/static/{u0RcJ9L5FEEUdENisty65 → WqHYD3Noq8qkEPXvfVDGQ}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[992861,a=>{var b=a.i(187924),c=a.i(101169),d=a.i(218024),e=a.i(196790),f=a.i(817748),g=a.i(901615),h=a.i(238246),i=a.i(572131),j=a.i(823292),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(405050);let o=(0,n.createServerReference)("40234f191efc0a60d6cfe72eec5647c53c1f062991",n.callServer,void 0,n.findSourceMapURL,"createKeyAction");function p({scopes:a}){return(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsx)("span",{className:"mr-1 inline-block whitespace-nowrap rounded-[4px] border border-line bg-surface-2 px-[5px] font-mono text-xs text-ink-soft",children:a},a))})}var q=a.i(136476);function r({icon:a,title:c,sub:d}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:a}),(0,b.jsxs)("div",{children:[(0,b.jsx)(m.F,{className:"text-base",children:c}),(0,b.jsx)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:d})]})]})}function s({onCreated:a,onCancel:c}){let[d,f]=(0,i.useState)(""),[h,l]=(0,i.useState)(q.J),[m,n]=(0,i.useState)(q.j),[t,u]=(0,i.useState)(String(q.D)),[v,w]=(0,i.useState)({}),[x,y]=(0,i.useState)(""),[z,A]=(0,i.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),A(async()=>{w({}),y("");try{let b=await o({name:d.trim(),scopes:q.B.filter(a=>h.includes(a)),expiry:m,ratePerMin:t.trim()});b.ok&&b.data?(j.c.success(b.message??"Key created."),a(b.data)):b.ok||(b.fieldErrors?w(b.fieldErrors):y(b.error))}catch{y("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsx)(r,{icon:(0,b.jsx)(e.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(k.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:v.name,children:(0,b.jsx)("input",{id:"key-name",value:d,onChange:a=>f(a.target.value),placeholder:g.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:k.S})}),(0,b.jsxs)("fieldset",{className:"mb-3.5",children:[(0,b.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:q.B.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:h.includes(a),onChange:()=>l(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),className:"mt-[3px] accent-brand"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(p,{scopes:[a]})," ",(0,b.jsx)("span",{className:"text-[13px] text-ink-soft",children:q.h[a].short})]})]},a))}),v.scopes&&(0,b.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:v.scopes})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(k.O,{id:"key-expiry",label:"Expires",error:v.expiry,children:(0,b.jsx)("select",{id:"key-expiry",value:m,onChange:a=>n(a.target.value),className:k.S,children:q.W.map(a=>(0,b.jsx)("option",{value:a,children:q.o[a]},a))})}),(0,b.jsx)(k.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:v.ratePerMin,children:(0,b.jsx)("input",{id:"key-rate",inputMode:"numeric",value:t,onChange:a=>u(a.target.value),className:`${k.S} font-mono`})})]}),x&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:x})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:z,children:"Cancel"}),(0,b.jsx)(k.K,{type:"submit",variant:"primary",disabled:z,children:z?"Creating…":"Create key"})]})]})}function t({created:a,onDone:e}){async function f(){try{await navigator.clipboard.writeText(a.key),j.c.success("Copied.")}catch{j.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,b.jsxs)("div",{children:[(0,b.jsx)(r,{icon:(0,b.jsx)(c.f,{size:19}),title:`Key ${a.name} created`,sub:"Copy it now."}),(0,b.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("code",{className:"min-w-0 flex-1 overflow-x-auto whitespace-nowrap rounded-md border border-line bg-sunken px-2 py-1.5 font-mono text-[12.5px]","data-testid":"new-key",children:a.key}),(0,b.jsxs)(k.K,{size:"sm",onClick:f,children:[(0,b.jsx)(d.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,b.jsx)("p",{className:"mt-2.5 rounded-md border border-warn-icon bg-warn-soft px-2.5 py-2 text-[13px] text-warn",children:"Watchbell keeps only a SHA-256 hash of this key, so it can't show it again. Lost it? Revoke it and create a new one."}),(0,b.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,b.jsx)(h.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,b.jsx)(h.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:e,children:"Done"})})]})}a.s(["CreateKeyDialog",0,function(){let[a,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(null);function g(a){c(a),a||e(null)}return(0,l.useHoldRefresh)(a),(0,b.jsxs)(m.N,{open:a,onOpenChange:g,children:[(0,b.jsxs)(m.a,{render:(0,b.jsx)(k.K,{variant:"primary"}),children:[(0,b.jsx)(f.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:d?(0,b.jsx)(t,{created:d,onDone:()=>g(!1)}):(0,b.jsx)(s,{onCreated:e,onCancel:()=>g(!1)})})]})}],992861)},659526,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(611619),f=a.i(619089),g=a.i(507504),h=a.i(188406),i=a.i(814574),j=a.i(405050);let k=(0,j.createServerReference)("60537244f8b3edaa064f08981cd6d4466256f9716f",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("403dcec2a681653664141f715fc05bd1b81fa68912",j.callServer,void 0,j.findSourceMapURL,"revokeKeyAction");var m=a.i(136476);let n={rename:{title:a=>`Rename ${a}`,sub:"Agents and Logs show the name. Lowercase letters, digits and dashes.",cta:"Save name"},rate:{title:()=>"Change rate limit",sub:"Requests per minute, 1–600. Applies before the provider's own limits, within a minute.",cta:"Save limit"},expiry:{title:()=>"Change expiry",sub:"Counted from today. The key stops working at that date.",cta:"Save expiry"},routing:{title:()=>"Change routing",sub:"Pin this key to one provider and, if you like, one model. Without a pin it uses the default provider.",cta:"Save routing"}};function o({mode:a,k:e,providers:g,onDone:h}){let[j,l]=(0,c.useState)(e.name),[p,q]=(0,c.useState)(String(e.ratePerMin)),[r,s]=(0,c.useState)(e.expiresAt?"90d":"never"),[t,u]=(0,c.useState)(e.providerId??""),[v,w]=(0,c.useState)(e.model??""),[x,y]=(0,c.useState)({}),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useTransition)(),D=n[a];return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),C(async()=>{y({}),A("");try{let b=await k(e.id,"rename"===a?{kind:"rename",name:j.trim()}:"rate"===a?{kind:"rate",ratePerMin:p.trim()}:"expiry"===a?{kind:"expiry",expiry:r}:{kind:"routing",providerId:t||null,model:t?v.trim():null});b.ok?(d.c.success(b.message??"Key updated."),h()):b.fieldErrors?y(b.fieldErrors):A(b.error)}catch{A("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(i.F,{className:"text-base",children:D.title(e.name)}),(0,b.jsx)(i.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:D.sub})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===a&&(0,b.jsx)(f.O,{id:"edit-name",label:"Name",error:x.name,children:(0,b.jsx)("input",{id:"edit-name",value:j,onChange:a=>l(a.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:f.S})}),"rate"===a&&(0,b.jsx)(f.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:x.ratePerMin,children:(0,b.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:p,onChange:a=>q(a.target.value),className:`${f.S} font-mono`})}),"expiry"===a&&(0,b.jsx)(f.O,{id:"edit-expiry",label:"Expires",error:x.expiry,children:(0,b.jsx)("select",{id:"edit-expiry",value:r,onChange:a=>s(a.target.value),className:f.S,children:m.W.map(a=>(0,b.jsx)("option",{value:a,children:m.o[a]},a))})}),"routing"===a&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.O,{id:"edit-provider",label:"Provider",help:g.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:x.providerId,children:(0,b.jsxs)("select",{id:"edit-provider",value:t,onChange:a=>u(a.target.value),className:f.S,children:[(0,b.jsx)("option",{value:"",children:"No pin (default provider)"}),g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.name,a.enabled?"":" (off)"]},a.id))]})}),(0,b.jsx)(f.O,{id:"edit-model",label:"Model",help:"Optional. A Gemini model id, for example gemini-3.8-flash. Empty uses the provider's default.",error:x.model,children:(0,b.jsx)("input",{id:"edit-model",value:v,onChange:a=>w(a.target.value),disabled:!t,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${f.S} font-mono`})})]}),z&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:z})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(f.K,{onClick:h,disabled:B,children:"Cancel"}),(0,b.jsx)(f.K,{type:"submit",variant:"primary",disabled:B,children:B?"Saving…":D.cta})]})]})}a.s(["KeyActions",0,function({k:a,providers:d}){let[j,k]=(0,c.useState)(null);return(0,g.useHoldRefresh)(null!==j),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(e.f,{trigger:(0,b.jsx)(f.K,{size:"sm",children:"Revoke"}),title:`Revoke ${a.name}?`,body:`Calls with ${a.prefix}… answer 401 within a minute. Agents using it show "Key revoked". This can't be undone; create a new key instead.`,cta:"Revoke key",danger:!0,onConfirm:async()=>{let b=await l(a.id);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}}),(0,b.jsx)(h.RowMenu,{label:`Actions for ${a.name}`,items:[{label:"Rename",onSelect:()=>k("rename")},{label:"Change rate limit",onSelect:()=>k("rate")},{label:"Change expiry",onSelect:()=>k("expiry")},{label:"Change routing",onSelect:()=>k("routing")}]}),(0,b.jsx)(i.N,{open:null!==j,onOpenChange:a=>{a||k(null)},children:(0,b.jsx)(i.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:j&&(0,b.jsx)(o,{mode:j,k:a,providers:d,onDone:()=>k(null)})})})]})}],659526)},136476,a=>{let b={"ai:invoke":{short:"models",long:"Chat completions and the model list through your provider connections."},"read:status":{short:"console data, MCP",long:"Read-only console data: GET /api/v1/status and the MCP server. Database names are aliases; no URLs, emails or secrets."},"write:notes":{short:"post AI notes",long:a.i(901615).C.writeNotesLong}};a.s(["j",0,"90d","D",0,20,"J",0,["ai:invoke"],"W",0,["7d","30d","90d","1y","never"],"o",0,{"7d":"In 7 days","30d":"In 30 days","90d":"In 90 days","1y":"In 1 year",never:"Never"},"B",0,["ai:invoke","read:status","write:notes"],"h",0,b])}]})();
|
|
1
|
+
(()=>{"use strict";module.exports=[992861,a=>{var b=a.i(187924),c=a.i(101169),d=a.i(218024),e=a.i(196790),f=a.i(817748),g=a.i(901615),h=a.i(238246),i=a.i(572131),j=a.i(823292),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(405050);let o=(0,n.createServerReference)("4025f9b5a5759ca61a55d8666a9f044a63efcf5b67",n.callServer,void 0,n.findSourceMapURL,"createKeyAction");function p({scopes:a}){return(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsx)("span",{className:"mr-1 inline-block whitespace-nowrap rounded-[4px] border border-line bg-surface-2 px-[5px] font-mono text-xs text-ink-soft",children:a},a))})}var q=a.i(136476);function r({icon:a,title:c,sub:d}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:a}),(0,b.jsxs)("div",{children:[(0,b.jsx)(m.F,{className:"text-base",children:c}),(0,b.jsx)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:d})]})]})}function s({onCreated:a,onCancel:c}){let[d,f]=(0,i.useState)(""),[h,l]=(0,i.useState)(q.J),[m,n]=(0,i.useState)(q.j),[t,u]=(0,i.useState)(String(q.D)),[v,w]=(0,i.useState)({}),[x,y]=(0,i.useState)(""),[z,A]=(0,i.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),A(async()=>{w({}),y("");try{let b=await o({name:d.trim(),scopes:q.B.filter(a=>h.includes(a)),expiry:m,ratePerMin:t.trim()});b.ok&&b.data?(j.c.success(b.message??"Key created."),a(b.data)):b.ok||(b.fieldErrors?w(b.fieldErrors):y(b.error))}catch{y("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsx)(r,{icon:(0,b.jsx)(e.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(k.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:v.name,children:(0,b.jsx)("input",{id:"key-name",value:d,onChange:a=>f(a.target.value),placeholder:g.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:k.S})}),(0,b.jsxs)("fieldset",{className:"mb-3.5",children:[(0,b.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:q.B.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:h.includes(a),onChange:()=>l(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),className:"mt-[3px] accent-brand"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(p,{scopes:[a]})," ",(0,b.jsx)("span",{className:"text-[13px] text-ink-soft",children:q.h[a].short})]})]},a))}),v.scopes&&(0,b.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:v.scopes})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(k.O,{id:"key-expiry",label:"Expires",error:v.expiry,children:(0,b.jsx)("select",{id:"key-expiry",value:m,onChange:a=>n(a.target.value),className:k.S,children:q.W.map(a=>(0,b.jsx)("option",{value:a,children:q.o[a]},a))})}),(0,b.jsx)(k.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:v.ratePerMin,children:(0,b.jsx)("input",{id:"key-rate",inputMode:"numeric",value:t,onChange:a=>u(a.target.value),className:`${k.S} font-mono`})})]}),x&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:x})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:z,children:"Cancel"}),(0,b.jsx)(k.K,{type:"submit",variant:"primary",disabled:z,children:z?"Creating…":"Create key"})]})]})}function t({created:a,onDone:e}){async function f(){try{await navigator.clipboard.writeText(a.key),j.c.success("Copied.")}catch{j.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,b.jsxs)("div",{children:[(0,b.jsx)(r,{icon:(0,b.jsx)(c.f,{size:19}),title:`Key ${a.name} created`,sub:"Copy it now."}),(0,b.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("code",{className:"min-w-0 flex-1 overflow-x-auto whitespace-nowrap rounded-md border border-line bg-sunken px-2 py-1.5 font-mono text-[12.5px]","data-testid":"new-key",children:a.key}),(0,b.jsxs)(k.K,{size:"sm",onClick:f,children:[(0,b.jsx)(d.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,b.jsx)("p",{className:"mt-2.5 rounded-md border border-warn-icon bg-warn-soft px-2.5 py-2 text-[13px] text-warn",children:"Watchbell keeps only a SHA-256 hash of this key, so it can't show it again. Lost it? Revoke it and create a new one."}),(0,b.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,b.jsx)(h.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,b.jsx)(h.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:e,children:"Done"})})]})}a.s(["CreateKeyDialog",0,function(){let[a,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(null);function g(a){c(a),a||e(null)}return(0,l.useHoldRefresh)(a),(0,b.jsxs)(m.N,{open:a,onOpenChange:g,children:[(0,b.jsxs)(m.a,{render:(0,b.jsx)(k.K,{variant:"primary"}),children:[(0,b.jsx)(f.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:d?(0,b.jsx)(t,{created:d,onDone:()=>g(!1)}):(0,b.jsx)(s,{onCreated:e,onCancel:()=>g(!1)})})]})}],992861)},659526,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(611619),f=a.i(619089),g=a.i(507504),h=a.i(188406),i=a.i(814574),j=a.i(405050);let k=(0,j.createServerReference)("6047ba4a283ca6d03cb9b9e8376193a890edbff953",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("40c5a1111cad7ef2eb99ed678209493349abdc580d",j.callServer,void 0,j.findSourceMapURL,"revokeKeyAction");var m=a.i(136476);let n={rename:{title:a=>`Rename ${a}`,sub:"Agents and Logs show the name. Lowercase letters, digits and dashes.",cta:"Save name"},rate:{title:()=>"Change rate limit",sub:"Requests per minute, 1–600. Applies before the provider's own limits, within a minute.",cta:"Save limit"},expiry:{title:()=>"Change expiry",sub:"Counted from today. The key stops working at that date.",cta:"Save expiry"},routing:{title:()=>"Change routing",sub:"Pin this key to one provider and, if you like, one model. Without a pin it uses the default provider.",cta:"Save routing"}};function o({mode:a,k:e,providers:g,onDone:h}){let[j,l]=(0,c.useState)(e.name),[p,q]=(0,c.useState)(String(e.ratePerMin)),[r,s]=(0,c.useState)(e.expiresAt?"90d":"never"),[t,u]=(0,c.useState)(e.providerId??""),[v,w]=(0,c.useState)(e.model??""),[x,y]=(0,c.useState)({}),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useTransition)(),D=n[a];return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),C(async()=>{y({}),A("");try{let b=await k(e.id,"rename"===a?{kind:"rename",name:j.trim()}:"rate"===a?{kind:"rate",ratePerMin:p.trim()}:"expiry"===a?{kind:"expiry",expiry:r}:{kind:"routing",providerId:t||null,model:t?v.trim():null});b.ok?(d.c.success(b.message??"Key updated."),h()):b.fieldErrors?y(b.fieldErrors):A(b.error)}catch{A("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(i.F,{className:"text-base",children:D.title(e.name)}),(0,b.jsx)(i.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:D.sub})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===a&&(0,b.jsx)(f.O,{id:"edit-name",label:"Name",error:x.name,children:(0,b.jsx)("input",{id:"edit-name",value:j,onChange:a=>l(a.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:f.S})}),"rate"===a&&(0,b.jsx)(f.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:x.ratePerMin,children:(0,b.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:p,onChange:a=>q(a.target.value),className:`${f.S} font-mono`})}),"expiry"===a&&(0,b.jsx)(f.O,{id:"edit-expiry",label:"Expires",error:x.expiry,children:(0,b.jsx)("select",{id:"edit-expiry",value:r,onChange:a=>s(a.target.value),className:f.S,children:m.W.map(a=>(0,b.jsx)("option",{value:a,children:m.o[a]},a))})}),"routing"===a&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.O,{id:"edit-provider",label:"Provider",help:g.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:x.providerId,children:(0,b.jsxs)("select",{id:"edit-provider",value:t,onChange:a=>u(a.target.value),className:f.S,children:[(0,b.jsx)("option",{value:"",children:"No pin (default provider)"}),g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.name,a.enabled?"":" (off)"]},a.id))]})}),(0,b.jsx)(f.O,{id:"edit-model",label:"Model",help:"Optional. A Gemini model id, for example gemini-3.8-flash. Empty uses the provider's default.",error:x.model,children:(0,b.jsx)("input",{id:"edit-model",value:v,onChange:a=>w(a.target.value),disabled:!t,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${f.S} font-mono`})})]}),z&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:z})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(f.K,{onClick:h,disabled:B,children:"Cancel"}),(0,b.jsx)(f.K,{type:"submit",variant:"primary",disabled:B,children:B?"Saving…":D.cta})]})]})}a.s(["KeyActions",0,function({k:a,providers:d}){let[j,k]=(0,c.useState)(null);return(0,g.useHoldRefresh)(null!==j),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(e.f,{trigger:(0,b.jsx)(f.K,{size:"sm",children:"Revoke"}),title:`Revoke ${a.name}?`,body:`Calls with ${a.prefix}… answer 401 within a minute. Agents using it show "Key revoked". This can't be undone; create a new key instead.`,cta:"Revoke key",danger:!0,onConfirm:async()=>{let b=await l(a.id);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}}),(0,b.jsx)(h.RowMenu,{label:`Actions for ${a.name}`,items:[{label:"Rename",onSelect:()=>k("rename")},{label:"Change rate limit",onSelect:()=>k("rate")},{label:"Change expiry",onSelect:()=>k("expiry")},{label:"Change routing",onSelect:()=>k("routing")}]}),(0,b.jsx)(i.N,{open:null!==j,onOpenChange:a=>{a||k(null)},children:(0,b.jsx)(i.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:j&&(0,b.jsx)(o,{mode:j,k:a,providers:d,onDone:()=>k(null)})})})]})}],659526)},136476,a=>{let b={"ai:invoke":{short:"models",long:"Chat completions and the model list through your provider connections."},"read:status":{short:"console data, MCP",long:"Read-only console data: GET /api/v1/status and the MCP server. Database names are aliases; no URLs, emails or secrets."},"write:notes":{short:"post AI notes",long:a.i(901615).C.writeNotesLong}};a.s(["j",0,"90d","D",0,20,"J",0,["ai:invoke"],"W",0,["7d","30d","90d","1y","never"],"o",0,{"7d":"In 7 days","30d":"In 30 days","90d":"In 90 days","1y":"In 1 year",never:"Never"},"B",0,["ai:invoke","read:status","write:notes"],"h",0,b])}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_10zavgy86u3us._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[891370,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call RepoList() from the server but RepoList is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/repos/repo-list.tsx","RepoList"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call VisibilityTag() from the server but VisibilityTag is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/repos/repo-list.tsx","VisibilityTag");a.s(["RepoList",0,c,"VisibilityTag",0,d])},247482,a=>{var b=a.i(891370);a.n(b)},476435,450278,751931,793379,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(358179),h=a.i(120213),i=a.i(492665);let j=[/(^|\/)\.env(\.|$)/i,/\.(pem|key|p12|pfx|crt|cer|keystore|jks)$/i,/(^|\/)(id_rsa|id_ed25519)/i,/secret/i,/credential/i],k=[/(^|\/)(node_modules|\.next|dist|build|out|coverage|\.vercel|\.git)\//,/(package-lock\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb?)$/i],l=[/\.(png|jpe?g|gif|webp|ico|svg|pdf|zip|gz|woff2?|ttf|mp4|mp3|wasm)$/i];function m(a){return!a||a.split("/").includes("..")||j.some(b=>b.test(a))?"secret":k.some(b=>b.test(a))?"generated":l.some(b=>b.test(a))?"binary":null}function n(a,b){let c=new Map(b.map(a=>[a.id,a])),d=new Map;for(let b of a){let a=c.get(b.appId);if(!a)continue;let e=d.get(b.repoId)??[];e.some(b=>b.id===a.id)||e.push(a),d.set(b.repoId,e)}for(let a of d.values())a.sort((a,b)=>a.name.localeCompare(b.name));return d}function o(a,b){let c=a?/[?&]page=(\d+)[^>]*>;\s*rel="last"/.exec(a):null;return c?Number(c[1]):b}[...j,...k,...l],a.s(["M",0,{secret:"hidden (secret file)",generated:"hidden (generated file)",binary:"binary, not shown"},"Z",0,m],450278),a.s(["B",0,204800,"_",0,function(a){let b=a.split("/").slice(0,-1);return b.map((a,c)=>b.slice(0,c+1).join("/"))},"G",0,function(a,b=3e3){let c={name:"",path:"",kind:"dir",size:0,hidden:null,children:[]},d=new Map([["",c]]),e=0,f=!1,g=a=>{let b=d.get(a);if(b)return b;let c=a.lastIndexOf("/"),e=g(c<0?"":a.slice(0,c));if(!e||e.hidden)return null;let f=m(`${a}/x`),h={name:a.slice(c+1),path:a,kind:"dir",size:0,hidden:"binary"===f?null:f,children:[]};return e.children.push(h),d.set(a,h),h};for(let c of a){if(!c.path||c.path.startsWith("/")||c.path.split("/").some(a=>!a||"."===a||".."===a))continue;let a=c.path.lastIndexOf("/"),d=g(a<0?"":c.path.slice(0,a));if(d&&!d.hidden){if(e>=b){f=!0;continue}d.children.push({name:c.path.slice(a+1),path:c.path,kind:"file",size:c.size,hidden:m(c.path),children:[]}),e++}}let h=a=>{a.children.sort((a,b)=>a.kind===b.kind?a.name.toLowerCase().localeCompare(b.name.toLowerCase())||a.name.localeCompare(b.name):"dir"===a.kind?-1:1),a.children.forEach(h)};return h(c),{root:c,files:e,cut:f}},"s",0,o,"q",0,function(a,b){let c=m(a);if("secret"===c)return{kind:"hidden",reason:c};let d=b.find(b=>b.path===a);return d?c?{kind:"hidden",reason:c}:d.size>204800?{kind:"too-big",size:d.size}:{kind:"read",size:d.size}:{kind:"missing"}},"V",0,n,"e",0,function(a){return a<1024?`${a} B`:a<1048576?`${(a/1024).toFixed(+(a<10240))} KB`:`${(a/1024/1024).toFixed(1)} MB`}],751931);let p=a=>void 0!==a.retryAfterS&&(403===a.status||429===a.status),q="GitHub's rate limit is used up for now. Try again later.";class r{max;rows;pausedUntil;constructor(a=200){this.max=a,this.rows=new Map,this.pausedUntil=0}async get(a,b,c,d=Date.now){let e=this.rows.get(a);if(e&&d()-e.at<e.ttl)return{ok:!0,data:e.value};if(d()<this.pausedUntil)return{ok:!1,kind:"transient",status:429,retryAfterS:Math.ceil((this.pausedUntil-d())/1e3),error:q};let f=await c();if(f.ok){if(this.rows.size>=this.max){let a=this.rows.keys().next().value;void 0!==a&&this.rows.delete(a)}this.rows.delete(a),this.rows.set(a,{at:d(),ttl:b,value:f.data})}else if(p(f))return this.pausedUntil=d()+1e3*Math.min(3600,Math.max(30,f.retryAfterS??60)),{...f,error:q};return f}clear(){this.rows.clear(),this.pausedUntil=0}}a.s(["W",0,r,"i",0,p],793379);var s=a.i(683439),t=a.i(760417),u=a.i(689963),v=a.i(26972),w=a.i(427221),x=a.i(811365),y=a.i(83931);let z=a=>({ok:!1,kind:"format",error:`GitHub answered ${a} in a format the console doesn't recognise.`}),A={ok:!1,kind:"format",error:"That isn't a repository name or ref."},B=a=>a&&a.startsWith("https://github.com/")?a:null;async function C(a,b={}){let c=new Map,d=u.z.array(v.z.object({full_name:w.z.string(),language:w.z.string().nullish()}));for(let e=1;e<=t.t;e++){let f=await (0,t.j)(`/user/repos?per_page=100&page=${e}&sort=pushed&affiliation=owner,collaborator,organization_member`,a,b);if(!f.ok)return f;let g=d.safeParse(f.data);if(!g.success)return z("the repository list");for(let a of g.data)a.language&&c.set(a.full_name.toLowerCase(),a.language.slice(0,40));if(g.data.length<100)break}return{ok:!0,data:c}}async function D(a,b,c={}){if(!(0,t.M)(b))return A;let[d,e]=await Promise.all([(0,t.j)(`/repos/${(0,t.f)(b)}`,a,c),(0,t.j)(`/repos/${(0,t.f)(b)}/pulls?state=open&per_page=1`,a,c)]);if(!d.ok)return d;let f=v.z.object({description:w.z.string().nullish(),language:w.z.string().nullish(),open_issues_count:x.z.number().nullish(),html_url:w.z.string().nullish()}).safeParse(d.data);if(!f.success)return z("the repository");let g=e.ok&&Array.isArray(e.data)?o(e.headers.get("link"),e.data.length):0;return{ok:!0,data:{description:f.data.description?.slice(0,300)??null,language:f.data.language??null,openIssuesAndPulls:f.data.open_issues_count??0,openPulls:g,htmlUrl:B(f.data.html_url)}}}async function E(a,b,c,d,e={}){if(!(0,t.M)(b)||!(0,t.c)(c))return A;let f=await (0,t.j)(`/repos/${(0,t.f)(b)}/readme?ref=${encodeURIComponent(c)}`,a,e);if(!f.ok)return"missing"===f.kind?{ok:!0,data:null}:f;let g=v.z.object({path:w.z.string(),size:x.z.number(),content:w.z.string().nullish(),encoding:w.z.string().nullish()}).safeParse(f.data);if(!g.success)return z("the README");if(g.data.size>d||"base64"!==g.data.encoding||!g.data.content)return{ok:!0,data:{path:g.data.path,text:null,size:g.data.size}};let h=Buffer.from(g.data.content,"base64").toString("utf8");return h.includes("\0")?{ok:!0,data:{path:g.data.path,text:null,size:g.data.size}}:{ok:!0,data:{path:g.data.path,text:h,size:g.data.size}}}async function F(a,b,c,d=20,e={}){if(!(0,t.M)(b)||!(0,t.c)(c))return A;let f=await (0,t.j)(`/repos/${(0,t.f)(b)}/commits?sha=${encodeURIComponent(c)}&per_page=${d}`,a,e);if(!f.ok)return f;let g=u.z.array(v.z.object({sha:w.z.string(),html_url:w.z.string().nullish(),author:v.z.object({login:w.z.string()}).nullish(),commit:v.z.object({message:w.z.string(),author:v.z.object({name:w.z.string().nullish(),date:w.z.string().nullish()}).nullish()})})).safeParse(f.data);return g.success?{ok:!0,data:g.data.map(a=>({sha:a.sha,title:a.commit.message.split("\n")[0].slice(0,200),author:(a.author?.login??a.commit.author?.name??null)?.slice(0,80)??null,at:a.commit.author?.date??null,url:B(a.html_url)}))}:z("the commits")}async function G(a,b,c={}){if(!(0,t.M)(b))return A;let d=await (0,t.j)(`/repos/${(0,t.f)(b)}/branches?per_page=100`,a,c);if(!d.ok)return d;let e=u.z.array(v.z.object({name:w.z.string(),protected:y.z.boolean().nullish(),commit:v.z.object({sha:w.z.string()})})).safeParse(d.data);return e.success?{ok:!0,data:{branches:e.data.map(a=>({name:a.name,sha:a.commit.sha,protected:a.protected??!1})),more:/rel="next"/.test(d.headers.get("link")??"")}}:z("the branches")}async function H(a,b,c=10,d={}){if(!(0,t.M)(b))return A;let e=await (0,t.j)(`/repos/${(0,t.f)(b)}/actions/runs?per_page=${c}`,a,d);if(!e.ok)return e;let f=v.z.object({workflow_runs:u.z.array(v.z.object({id:x.z.number(),name:w.z.string().nullish(),display_title:w.z.string().nullish(),status:w.z.string().nullish(),conclusion:w.z.string().nullish(),head_branch:w.z.string().nullish(),event:w.z.string().nullish(),head_sha:w.z.string().nullish(),run_number:x.z.number().nullish(),updated_at:w.z.string().nullish(),created_at:w.z.string().nullish(),html_url:w.z.string().nullish()}))}).safeParse(e.data);return f.success?{ok:!0,data:f.data.workflow_runs.map(a=>({id:a.id,name:a.name??null,title:a.display_title?.slice(0,200)??null,status:a.status??"unknown",conclusion:a.conclusion??null,branch:a.head_branch??null,event:a.event??null,sha:a.head_sha??null,runNumber:a.run_number??null,at:a.updated_at??a.created_at??null,url:B(a.html_url)}))}:z("the Actions runs")}var I=a.i(27522);let J=new r(300);async function K(a){let[c]=await (0,e.f)().select({c:f.accounts.credentialCiphertext,iv:f.accounts.credentialIv}).from(f.accounts).where((0,b.b)((0,b.u)(f.accounts.id,a),(0,b.u)(f.accounts.provider,"github"))).limit(1);return c?(0,g.V)({ciphertext:c.c,iv:c.iv},(0,i.f)().OPS_ENCRYPTION_KEY):null}async function L(){let[a]=await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);return a?.id??null}async function M(a){let c=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,name:f.resources.name}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.M)(f.resources.goneAt),a?(0,b.y)(f.appRepos.repoId,a):void 0)).limit(1e3);return n(c,c.map(a=>({id:a.appId,name:a.name})))}async function N(){let a=await L(),g=await (0,e.f)().select({id:f.githubRepos.id,accountId:f.githubRepos.accountId,fullName:f.githubRepos.fullName,private:f.githubRepos.private,archived:f.githubRepos.archived,defaultBranch:f.githubRepos.defaultBranch,pushedAt:f.githubRepos.pushedAt,actions:f.githubRepos.actions}).from(f.githubRepos).where((0,b.M)(f.githubRepos.goneAt)).orderBy((0,c.A)(f.githubRepos.pushedAt)).limit(1e3);if(!g.length)return{connected:null!==a,items:[],languageNote:null};let[h,i,j]=await Promise.all([M(null),(0,e.f)().select({repoId:f.dependencyVulns.repoId,n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.M)(f.dependencyVulns.resolvedAt)).groupBy(f.dependencyVulns.repoId),(0,e.f)().select({repoId:f.dependencyScans.repoId}).from(f.dependencyScans).where((0,b.E)(f.dependencyScans.scannedAt))]),k=new Map(i.map(a=>[a.repoId,a.n])),l=new Set(j.map(a=>a.repoId)),m=new Map,n=null,o=a?await K(a):null;if(o){let b=await J.get(`languages:${a}`,9e5,()=>C(o));b.ok?m=b.data:n=`Languages aren't shown: ${b.error}`}return{connected:null!==a,languageNote:n,items:g.map(a=>({id:a.id,fullName:a.fullName,private:a.private,archived:a.archived,defaultBranch:a.defaultBranch,pushedAt:a.pushedAt?.toISOString()??null,language:m.get(a.fullName.toLowerCase())??null,apps:h.get(a.id)??[],advisories:l.has(a.id)?k.get(a.id)??0:null,actions:a.actions?(0,I.N)(a.actions,a.defaultBranch):null}))}}async function O(a){if(!(0,s.f)(a))return null;let[c]=await (0,e.f)().select().from(f.githubRepos).where((0,b.u)(f.githubRepos.id,a)).limit(1);if(!c)return null;let d=await M([c.id]);return{repo:c,apps:d.get(c.id)??[],ref:c.defaultBranch??"HEAD"}}let P={ok:!1,kind:"auth",error:"The GitHub token can't be read. Check the GitHub connection on Connections."};async function Q(a,b,c,d){return a.goneAt?{ok:!1,kind:"missing",error:"This repository is no longer shared with the GitHub token."}:J.get(`${a.id}:${b}`,c,async()=>{let b=await K(a.accountId);return b?d(b):P})}async function R(a){let[[c],d]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,a.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)]);return d.sort((a,b)=>(0,h.t)(a.severity)-(0,h.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1)),{repo:{id:a.id,fullName:a.fullName},scan:c??null,vulns:d,writeConnected:!0}}a.s(["E",0,a=>Q(a.repo,"branches",3e5,b=>G(b,a.repo.fullName)),"c",0,a=>Q(a.repo,`commits@${a.ref}`,12e4,b=>F(b,a.repo.fullName,a.ref,20)),"N",0,(a,b)=>Q(a.repo,`file@${a.ref}:${b}`,3e5,c=>(0,t.V)(c,a.repo.fullName,b,a.ref,204800)),"i",0,N,"P",0,a=>Q(a.repo,`readme@${a.ref}`,6e5,b=>E(b,a.repo.fullName,a.ref,204800)),"Z",0,R,"O",0,O,"U",0,a=>Q(a.repo,"info",3e5,b=>D(b,a.repo.fullName)),"T",0,a=>Q(a.repo,"runs",12e4,b=>H(b,a.repo.fullName,10)),"t",0,a=>Q(a.repo,`tree@${a.ref}`,6e5,b=>(0,t.s)(b,a.repo.fullName,a.ref))],476435)}]})();
|
|
1
|
+
(()=>{"use strict";module.exports=[891370,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call RepoList() from the server but RepoList is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/repos/repo-list.tsx","RepoList"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call VisibilityTag() from the server but VisibilityTag is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/repos/repo-list.tsx","VisibilityTag");a.s(["RepoList",0,c,"VisibilityTag",0,d])},247482,a=>{var b=a.i(891370);a.n(b)},476435,793379,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(358179),h=a.i(120213),i=a.i(492665),j=a.i(751931);let k=a=>void 0!==a.retryAfterS&&(403===a.status||429===a.status),l="GitHub's rate limit is used up for now. Try again later.";class m{max;rows;pausedUntil;constructor(a=200){this.max=a,this.rows=new Map,this.pausedUntil=0}async get(a,b,c,d=Date.now){let e=this.rows.get(a);if(e&&d()-e.at<e.ttl)return{ok:!0,data:e.value};if(d()<this.pausedUntil)return{ok:!1,kind:"transient",status:429,retryAfterS:Math.ceil((this.pausedUntil-d())/1e3),error:l};let f=await c();if(f.ok){if(this.rows.size>=this.max){let a=this.rows.keys().next().value;void 0!==a&&this.rows.delete(a)}this.rows.delete(a),this.rows.set(a,{at:d(),ttl:b,value:f.data})}else if(k(f))return this.pausedUntil=d()+1e3*Math.min(3600,Math.max(30,f.retryAfterS??60)),{...f,error:l};return f}clear(){this.rows.clear(),this.pausedUntil=0}}a.s(["W",0,m,"i",0,k],793379);var n=a.i(683439),o=a.i(760417),p=a.i(589856),q=a.i(27522);let r=new m(300);async function s(a){let[c]=await (0,e.f)().select({c:f.accounts.credentialCiphertext,iv:f.accounts.credentialIv}).from(f.accounts).where((0,b.b)((0,b.u)(f.accounts.id,a),(0,b.u)(f.accounts.provider,"github"))).limit(1);return c?(0,g.V)({ciphertext:c.c,iv:c.iv},(0,i.f)().OPS_ENCRYPTION_KEY):null}async function t(){let[a]=await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);return a?.id??null}async function u(a){let c=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,name:f.resources.name}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.M)(f.resources.goneAt),a?(0,b.y)(f.appRepos.repoId,a):void 0)).limit(1e3);return(0,j.V)(c,c.map(a=>({id:a.appId,name:a.name})))}async function v(){let a=await t(),g=await (0,e.f)().select({id:f.githubRepos.id,accountId:f.githubRepos.accountId,fullName:f.githubRepos.fullName,private:f.githubRepos.private,archived:f.githubRepos.archived,defaultBranch:f.githubRepos.defaultBranch,pushedAt:f.githubRepos.pushedAt,actions:f.githubRepos.actions}).from(f.githubRepos).where((0,b.M)(f.githubRepos.goneAt)).orderBy((0,c.A)(f.githubRepos.pushedAt)).limit(1e3);if(!g.length)return{connected:null!==a,items:[],languageNote:null};let[h,i,j]=await Promise.all([u(null),(0,e.f)().select({repoId:f.dependencyVulns.repoId,n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.M)(f.dependencyVulns.resolvedAt)).groupBy(f.dependencyVulns.repoId),(0,e.f)().select({repoId:f.dependencyScans.repoId}).from(f.dependencyScans).where((0,b.E)(f.dependencyScans.scannedAt))]),k=new Map(i.map(a=>[a.repoId,a.n])),l=new Set(j.map(a=>a.repoId)),m=new Map,n=null,o=a?await s(a):null;if(o){let b=await r.get(`languages:${a}`,9e5,()=>(0,p.S)(o));b.ok?m=b.data:n=`Languages aren't shown: ${b.error}`}return{connected:null!==a,languageNote:n,items:g.map(a=>({id:a.id,fullName:a.fullName,private:a.private,archived:a.archived,defaultBranch:a.defaultBranch,pushedAt:a.pushedAt?.toISOString()??null,language:m.get(a.fullName.toLowerCase())??null,apps:h.get(a.id)??[],advisories:l.has(a.id)?k.get(a.id)??0:null,actions:a.actions?(0,q.N)(a.actions,a.defaultBranch):null}))}}async function w(a){if(!(0,n.f)(a))return null;let[c]=await (0,e.f)().select().from(f.githubRepos).where((0,b.u)(f.githubRepos.id,a)).limit(1);if(!c)return null;let d=await u([c.id]);return{repo:c,apps:d.get(c.id)??[],ref:c.defaultBranch??"HEAD"}}let x={ok:!1,kind:"auth",error:"The GitHub token can't be read. Check the GitHub connection on Connections."};async function y(a,b,c,d){return a.goneAt?{ok:!1,kind:"missing",error:"This repository is no longer shared with the GitHub token."}:r.get(`${a.id}:${b}`,c,async()=>{let b=await s(a.accountId);return b?d(b):x})}async function z(a){let[[c],d]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,a.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)]);return d.sort((a,b)=>(0,h.t)(a.severity)-(0,h.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1)),{repo:{id:a.id,fullName:a.fullName},scan:c??null,vulns:d,writeConnected:!0}}a.s(["E",0,a=>y(a.repo,"branches",3e5,b=>(0,p.n)(b,a.repo.fullName)),"c",0,a=>y(a.repo,`commits@${a.ref}`,12e4,b=>(0,p.T)(b,a.repo.fullName,a.ref,20)),"N",0,(a,b)=>y(a.repo,`file@${a.ref}:${b}`,3e5,c=>(0,o.V)(c,a.repo.fullName,b,a.ref,j.B)),"i",0,v,"P",0,a=>y(a.repo,`readme@${a.ref}`,6e5,b=>(0,p.Q)(b,a.repo.fullName,a.ref,j.B)),"Z",0,z,"O",0,w,"U",0,a=>y(a.repo,"info",3e5,b=>(0,p.H)(b,a.repo.fullName)),"T",0,a=>y(a.repo,"runs",12e4,b=>(0,p.A)(b,a.repo.fullName,10)),"t",0,a=>y(a.repo,`tree@${a.ref}`,6e5,b=>(0,o.s)(b,a.repo.fullName,a.ref))],476435)}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_1ckoccd8qvnje._.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
(()=>{"use strict";module.exports=[138984,a=>{var b=a.i(26972),c=a.i(427221),d=a.i(827857),e=a.i(899370),f=a.i(371289);let g=b.z.object({COLLECTOR_SECRET:c.z.string().min(32),CRON_SECRET:c.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:c.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:c.z.string().min(10)}),h=g.extend({QSTASH_CURRENT_SIGNING_KEY:d.z.union([e.z.literal(""),c.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:d.z.union([e.z.literal(""),c.z.string().min(10)]).default("")}),i=!1;a.s(["f",0,function(){try{var a=process.env;let b=("selfhost"===(0,f.c)(a)?h:g).safeParse(a);if(!b.success)throw Error(`Missing or invalid scheduler settings: ${b.error.issues.map(a=>a.path.join(".")).join(", ")}`);return b.data}catch(a){return i||(i=!0,console.warn(a instanceof Error?a.message:"Missing or invalid scheduler settings")),null}}])},736780,664892,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(548734),e=a.i(837137),f=a.i(358179),g=a.i(912283),h=a.i(117859),i=a.i(876808),j=a.i(521050),k=a.i(679662);let l={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"},m=(a,b,c)=>{let d=`PR #${a}: ${l[b]}${c?` — ${c}`:""}`;return d.length>200?`${d.slice(0,199)}…`:d},n=new Set(["success","neutral","skipped"]),o=a=>"completed"!==a.status?"pending":n.has(a.conclusion??"")?"success":"failure",p={name:"watchbell[bot]",email:"watchbell-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchbell)"},q={name:"watchpost[bot]",email:"watchpost-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchpost)"},r=a=>[p,q].some(b=>a.name===b.name&&a.email.toLowerCase()===b.email&&a.message.trim()===b.message),s=/^[\^~]?[0-9][0-9A-Za-z.+-]*$/,t=a=>Array.isArray(a)?a.map(t):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,t(a[b])])):a,u=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,v=/^sha512-[A-Za-z0-9+/]{86}==$/,w="(?:@[a-z0-9][a-z0-9._~-]*/)?[a-z0-9][a-z0-9._~-]*",x=RegExp(`^(?:[A-Za-z0-9_-][A-Za-z0-9._-]*/)*?node_modules/${w}(?:/node_modules/${w})*$`,"i"),y=new Set(["dev","optional","devOptional","peer"]),z=a=>!!a&&"object"==typeof a&&!Array.isArray(a),A=a=>a.slice(a.lastIndexOf("node_modules/")+13),B=(a,b,c)=>`${a}/${b}/-/${b.split("/").pop()}-${c}.tgz`,C=(a,b)=>JSON.stringify(t(a))===JSON.stringify(t(b)),D=a=>Object.fromEntries(Object.entries(a).filter(([a])=>!y.has(a))),E=a=>{try{let b=JSON.parse(a);return z(b)&&z(b.packages)?b:null}catch{return null}};a.s(["y",0,20,"X",0,["checks","preview","smoke","merging"],"w",0,15e3,"R",0,27e5,"j",0,function(a){let b=(a.checkRuns??a.actionRuns??[]).map(o);return(a.combined&&a.combined.total>0&&b.push("success"===a.combined.state?"success":"pending"===a.combined.state?"pending":"failure"),b.includes("failure"))?"failure":b.includes("pending")?"pending":"success"},"L",0,function(a){if(!a.length||a.some(a=>a.authWall))return null;let b=a.find(a=>null===a.status||a.status<200||a.status>399);return b?{mode:"http",result:"fail",reason:null===b.status?`${b.path} didn't answer within 15 seconds`:`${b.path} answered ${b.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(a,b,c){return(401===a||403===a)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(b)||/_vercel_sso/i.test(c.get("set-cookie")??"")||"vercel"===(c.get("server")??"").toLowerCase())},"T",0,function(a,b,c){if([a,b].some(a=>null!==a&&(a=>{if(a.length>0x1900000)return!0;if(3*a.length<=0x1900000)return!1;let b=0;for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);d<128?b+=1:d<2048?b+=2:d>=55296&&d<56320&&(64512&a.charCodeAt(c+1))==56320?(b+=4,c++):b+=3}return b>0x1900000})(a)))return`lockfile too large to check (over 25 MB): ${c}`.slice(0,150);try{return function(a,b,c){let d=a=>`unexpected lockfile change ${a}`.slice(0,150),e=null===b?null:E(b),f=null===a?{packages:{}}:E(a);if(!e||!f)return d(c);if(2!==e.lockfileVersion&&3!==e.lockfileVersion||null!==a&&e.lockfileVersion!==f.lockfileVersion)return d("lockfileVersion");let g=new Set;for(let[a,b]of Object.entries(f.packages)){if(!x.test(a)||!z(b)||"string"!=typeof b.resolved||"string"!=typeof b.version)continue;let c=B("","string"==typeof b.name?b.name:A(a),b.version);b.resolved.startsWith("https://")&&b.resolved.endsWith(c)&&g.add(b.resolved.slice(0,-c.length))}for(let[a,b]of(g.size||g.add("https://registry.npmjs.org"),Object.entries(e.packages))){let e=Object.hasOwn(f.packages,a)?f.packages[a]:void 0;if(void 0!==e&&C(e,b))continue;let h=z(e)?e:null;if(""===a||!a.includes("node_modules/")){let e=""===a?z(b)&&"string"==typeof b.name?b.name:c:a;if(!z(b)||""!==a&&!h||"resolved"in b||"link"in b)return d(e);continue}if(!x.test(a)||!z(b))return d(x.test(a)?A(a):a);let i=A(a);if(void 0!==b.name&&b.name!==i&&(!h||h.name!==b.name))return d(i);let j="string"==typeof b.name?b.name:i,k=b.version;if(void 0!==b.link||"string"!=typeof k||!u.test(k)||"string"!=typeof b.integrity||!v.test(b.integrity)||"string"!=typeof b.resolved||![...g].some(a=>b.resolved===B(a,j,k))||h&&h.version===k&&!C(D(h),D(b)))return d(i)}return null}(a,b,c)}catch{return`unexpected lockfile change ${c} (couldn't be checked)`.slice(0,150)}},"H",0,a=>!!a.lockfileRequired&&!!a.lockfile&&!a.files.some(b=>b.filename===a.lockfile),"n",0,function(a,b,c){return null!==c&&c>0?{mode:"logs",result:"fail",reason:`${c} errors in the preview logs`}:b.getTime()-a.getTime()<18e4||null===c?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"C",0,function(a,b,c){let d,e;try{d=JSON.parse(a),e=JSON.parse(b)}catch{return"unexpected change: package.json isn't valid JSON"}if(!d||!e||"object"!=typeof d||"object"!=typeof e)return"unexpected change: package.json isn't an object";let f=a=>{let b=structuredClone(a);for(let a of["dependencies","devDependencies"]){let d=b[a];if(d&&"object"==typeof d)for(let a of c)delete d[a]}return b};if(JSON.stringify(t(f(d)))!==JSON.stringify(t(f(e))))return"unexpected change in package.json beyond the bumped versions";for(let a of["dependencies","devDependencies"]){let b=d[a]??{},f=e[a]??{};for(let a of c){if(a in b!=a in f)return`unexpected change in package.json: ${a} added or removed`;if(a in f&&f[a]!==b[a]&&("string"!=typeof f[a]||!s.test(f[a])))return`unexpected change in package.json: ${a} isn't a plain version`}}return null},"E",0,function(a){let b=["/"];for(let c of a){let a;try{a=new URL(c).pathname||"/"}catch{continue}!b.includes(a)&&b.length<4&&b.push(a)}return b},"m",0,m,"k",0,function(a){let b=new Set([a.manifest,...a.lockfile?[a.lockfile]:[]]);for(let c of a.files)for(let a of[c.filename,c.previous])if(a&&!b.has(a))return`unexpected change in ${a}`.slice(0,150);if(!a.files.some(b=>b.filename===a.manifest))return`unexpected change: ${a.manifest} isn't changed`.slice(0,150);if(a.manifestProblem)return a.manifestProblem.slice(0,150);if(a.lockfileProblem)return a.lockfileProblem.slice(0,150);if(!a.tokenLogin||!a.commits.length||a.commits.length>20)return"couldn't confirm who wrote the PR's commits";if(a.headSha&&a.commits[a.commits.length-1].sha!==a.headSha)return"the PR's head moved while it was checked";for(let b of a.commits){if(null!==b.login&&b.login.toLowerCase()===a.tokenLogin.toLowerCase())continue;let c=b.sha.slice(0,7);if(!r(b)||!b.files||!a.lockfile)return`unexpected commit ${c} by ${b.login??b.name}`.slice(0,150);let d=b.files.find(b=>b!==a.lockfile);if(d)return`unexpected change in ${d} by commit ${c}`.slice(0,150)}return null},"f",0,function(a,b){let c=a.getTime();return(null===b||!(c-b<1e5))&&(Math.floor(c/6e4)%2==0||null!==b&&c-b>=24e4)},"M",0,function(a){if(a.pr.merged)return{kind:"done",stage:"merged"};if("closed"===a.pr.state)return{kind:"done",stage:"closed"};if(void 0!==a.pr.base&&void 0!==a.recordedBase&&a.pr.base!==a.recordedBase)return{kind:"stop",stage:"failed",reason:`the PR's base changed to ${a.pr.base}`};if(a.pr.headSha!==a.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:a.pr.headSha};let b=a.now.getTime()-a.openedAt.getTime()>27e5;return"failure"===a.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===a.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===a.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"canceled"===a.preview.state?{kind:"stop",stage:"failed",reason:"Vercel canceled the preview (an Ignored Build Step that skips previews does this), so the update wasn't smoke-tested; check it and merge by hand"}:"pending"===a.checks||null===a.pr.mergeable?b?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==a.preview.state?b?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:a.smoke&&"wait"!==a.smoke.result?"fail"===a.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${a.smoke.reason??"?"}`}:a.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:b?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}],664892);var F=a.i(120213),G=a.i(492665),H=a.i(683439),I=a.i(751263),J=a.i(812092),K=a.i(75105),L=a.i(322145),M=a.i(976937);let N=a=>({done:!1,message:a});async function O(){let[a]=await (0,d.f)().select().from(e.accounts).where((0,b.u)(e.accounts.provider,"github_write")).orderBy((0,c.M)(e.accounts.createdAt)).limit(1);if(!a)return null;let g=(0,f.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,G.f)().OPS_ENCRYPTION_KEY);return g?{id:a.id,token:g}:"unreadable"}let P={severity:"no package at the selected severity",major:"an update jumps a major version",nothing:"nothing can be updated"};async function Q(a){let[c]=await (0,d.f)().select({version:e.appSecurity.version,status:e.appSecurity.status,findings:e.appSecurity.findings}).from(e.appSecurity).where((0,b.u)(e.appSecurity.resourceId,a)).limit(1);return c?(0,i.p)({version:c.version,status:c.status,findings:Array.isArray(c.findings)?c.findings:[]}):null}async function R(a){let c=await (0,d.f)().select({package:e.dependencyVulns.package,installedVersion:e.dependencyVulns.installedVersion,fixedVersion:e.dependencyVulns.fixedVersion,vulnId:e.dependencyVulns.vulnId,aliases:e.dependencyVulns.aliases,severity:e.dependencyVulns.severity,direct:e.dependencyVulns.direct,dev:e.dependencyVulns.dev}).from(e.dependencyVulns).where((0,b.b)((0,b.u)(e.dependencyVulns.repoId,a),(0,b.M)(e.dependencyVulns.resolvedAt))).limit(2e3);return{upgrades:(0,F.B)(c),installed:(0,g.D)(c)}}async function S(a,b,c,d,e){for(let f of(0,I.a)(d,c)){if(f===c)break;let d=await (0,J.M)(a,b,f,e);if(!d.ok)return d;if(d.data)return{ok:!0,data:{base:f,head:d}}}return{ok:!0,data:{base:c,head:await (0,J.M)(a,b,c,e)}}}async function T(c,f,l,n=L.W,o={}){let p;if(!(0,H.f)(f)||!(0,H.f)(l))return n(N("Something in that request wasn't valid."),c,"");let q=await (0,L.q)(c.id,"github_bump_pr",f);if(q)return n(N(q),c,"");let r=await O();if(null===r)return n(N('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.'),c,"");if("unreadable"===r)return n(N("Can't read the stored GitHub PR-write credential. Replace it on Connections."),c,"");let[s]=await (0,d.f)().select({app:e.resources.name,meta:e.resources.meta,fullName:e.githubRepos.fullName,owner:e.githubRepos.owner,goneAt:e.githubRepos.goneAt,lockfilePath:e.dependencyScans.lockfilePath,lockfileSha:e.dependencyScans.lockfileSha}).from(e.appRepos).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).innerJoin(e.resources,(0,b.u)(e.resources.id,e.appRepos.appId)).leftJoin(e.dependencyScans,(0,b.u)(e.dependencyScans.repoId,e.appRepos.repoId)).where((0,b.b)((0,b.u)(e.appRepos.appId,f),(0,b.u)(e.appRepos.repoId,l))).limit(1);if(!s||s.goneAt)return n(N(K.G),c,r.id);let t=s.meta??{},u=(0,j.l)(t.rootDirectoryUnsupported);if(u)return n(N(`The Vercel Root Directory "${u}" of ${s.app} couldn't be used (Watchbell reads plain folder names, at most 4 deep). Update its package.json yourself.`),c,r.id);let v=(0,j.Q)(t.rootDirectory),w=(0,j.H)(v,"package.json"),x=v?`in ${v}`:"at the repository root";if(o.framework){let a=await Q(f);if(!a)return n(N(`Nothing to update in ${s.app}: its Next.js check shows no advisory with a fixed version.`),c,r.id);p=a}else if(!(p=await R(l)).upgrades.length)return n(N(`Nothing to update in ${s.app}: no direct package has a fixed version for its open advisories.`),c,r.id);let y=p.upgrades;if(o.auto){let a=(0,g.a)(y,p.installed,o.auto.severities);if(!a.ok)return n(N(`Automatic PR not opened: ${P[a.why]}. The proposal waits for your approval.`),c,r.id);y=a.upgrades}y=(0,i.F)(y);let{auto:z,proposalId:A,framework:B,...C}=o,D={timeoutMs:8e3,...C},E=await (0,J.H)(r.token,s.fullName,D);if(!E.ok)return n({done:!1,failed:E,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);let F=await S(r.token,s.fullName,E.data.defaultBranch,t,D);if(!F.ok)return n({done:!1,failed:F,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);let G=F.data.base,U=(0,I.B)(t.productionSource,G,new Date);if(U&&z)return n(N(`Automatic PR not opened: ${U} The proposal waits for your approval.`),c,r.id);let V=B?null:(0,I.y)(s.lockfileSha,E.data.defaultBranch,v);if(V&&V!==G)return n(N(`The dependency scan of ${s.app} read ${V}, but this pull request would go to ${G}. Scan again (Dependencies › Scan now on the app page), then ask again.`),c,r.id);let W=F.data.head;if(!W.ok)return n({done:!1,failed:W,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);if(!W.data)return n(N(`The default branch ${G} wasn't found.`),c,r.id);let X=await (0,J.E)(r.token,s.fullName,W.data,D,w);if(!X.ok)return n({done:!1,failed:X,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);if(!X.data)return n(N(`There is no package.json ${x}.`),c,r.id);let Y=(0,h.k)(X.data.text,y);if(!Y?.length||B&&!Y.some(a=>"next"===a.package))return n(N(`${w} in ${s.app} already allows the fixed versions (or its ranges can't be rewritten). Run npm install there.`),c,r.id);if(z){let a=Y.find(a=>{let b=(0,k.Y)(a.from);return!b||!(0,g.J)(b,a.fixed)});if(a)return n(N(`Automatic PR not opened: ${a.package} ${a.from} → ${a.to} jumps a major version. The proposal waits for your approval.`),c,r.id)}let Z=(0,h.M)(X.data.text,Y);if(!Z)return n(N("package.json couldn't be edited safely."),c,r.id);let $=(0,h.U)(Y,v);if(!(0,h.c)($,G))return n(N("Refused: the PR branch would be the default branch."),c,r.id);let _=await (0,J.x)(r.token,s.fullName,s.owner,$,G,D);if(_.ok&&_.data)return{ok:!0,message:`Pull request #${_.data.number} for these updates is already open.`};let aa=await (0,J.e)(r.token,s.fullName,D);if(!aa.ok)return n({done:!1,failed:aa,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);if(aa.data.length){let a=new Map((await (0,d.f)().select({number:e.dependencyPrs.number,packages:e.dependencyPrs.packages}).from(e.dependencyPrs).where((0,b.b)((0,b.u)(e.dependencyPrs.repoId,l),(0,b.y)(e.dependencyPrs.number,aa.data.map(a=>a.number))))).map(a=>[a.number,a.packages])),f=(0,g.U)(Y.map(a=>a.package),aa.data.map(b=>({number:b.number,branch:b.branch,title:b.title,packages:a.get(b.number)??null})),v);if(f)return n(N(`Pull request #${f.number} for the same package is already open in ${s.app}. Merge or close it first.`),c,r.id)}let ab=await (0,J.M)(r.token,s.fullName,$,D);if(ab.ok&&ab.data)return n(N(`Branch ${$} already exists without an open pull request. Delete it on GitHub, then ask again.`),c,r.id);let ac=s.lockfilePath??(v?(0,j.H)(v,"package-lock.json"):null),ad=k.a.find(a=>a.path===ac?.split("/").pop())?.kind??null,ae=a=>n({done:!1,failed:a,audit:{message:`Package update PR failed \xb7 ${s.app} \xb7 ${$}`,resourceId:f}},c,r.id),af=await (0,J.k)(r.token,s.fullName,$,W.data,G,D);if(!af.ok)return ae(af);let ag=await (0,J.D)(r.token,s.fullName,$,G,Z,X.data.sha,(0,h.G)(Y),D,w);if(!ag.ok)return ae(ag);let ah=(0,h.f)(Y,v),ai=(U?`> [!WARNING]
|
|
2
|
+
> ${U} Check where production is built from before you merge; Watchbell won't merge this pull request itself.
|
|
3
|
+
|
|
4
|
+
`:"")+(0,h.y)(Y,ad,!!z,v),aj=await (0,J.y)(r.token,s.fullName,$,G,ah,ai,D,{draft:!!U}),ak=!!U;if(U&&!aj.ok&&422===aj.status&&(aj=await (0,J.y)(r.token,s.fullName,$,G,ah,ai,D),ak=!1),!aj.ok)return ae(aj);let al=U?ak?` Opened as a draft: ${U}`:` Opened as a normal pull request (this repository can't have drafts), with the warning on top: ${U}`:"",am=Y.map(a=>`${a.package} ${a.from} → ${a.to}`).join(", "),an=await (0,J.M)(r.token,s.fullName,$,D).catch(()=>null),ao=!1;if(an?.ok&&an.data){await (0,d.f)().insert(e.dependencyPrs).values({repoId:l,appId:f,proposalId:A??null,number:aj.data.number,branch:$,baseBranch:G,headSha:an.data,title:ah.slice(0,200),packages:Y.map(a=>a.package),auto:!!z,stage:"checks",stageText:m(aj.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:b}=await a.A(414785),c=await b.runner?.queueLockfileJob({repoId:l,branch:$,headSha:an.data,prNumber:aj.data.number,lockfilePath:ac,targets:Y.map(a=>({name:a.package,version:a.fixed}))}).catch(()=>(console.warn("deps: queueing the lockfile job failed"),null)),g=await (0,M.U)(r.token,{repo:s.fullName,branch:$,lockfilePath:ac,prNumber:aj.data.number});ao=c?.queued===!0||g.sent}return n({done:!0,message:`Pull request #${aj.data.number} opened for ${s.app}: ${am}.${ao?"":` Run npm install${v?` in ${v}`:""} on the branch before merging.`}${al}`,audit:{message:`Package update PR opened \xb7 ${s.app} \xb7 #${aj.data.number}`,resourceId:f,detail:am}},c,r.id)}async function U(a,b,c){if(!(0,H.f)(a)||c&&!(0,H.f)(c.appId))return{ok:!1,why:"target"};let d=await O();if(!d||"unreadable"===d)return{ok:!1,why:"no write token"};let e=c?await Q(c.appId):await R(a);if(!e)return{ok:!1,why:"nothing"};let f=(0,g.a)(e.upgrades,e.installed,b);return f.ok?{ok:!0}:{ok:!1,why:f.why}}async function V(a,c){let f=a.filter(a=>(0,H.f)(a.appId)&&(0,H.f)(a.repoId)),g=new Map;if(!f.length)return g;let h=await (0,d.f)().select({appId:e.appRepos.appId,repoId:e.appRepos.repoId,meta:e.resources.meta,defaultBranch:e.githubRepos.defaultBranch}).from(e.appRepos).innerJoin(e.resources,(0,b.u)(e.resources.id,e.appRepos.appId)).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).where((0,b.y)(e.appRepos.appId,[...new Set(f.map(a=>a.appId))])).limit(4*f.length);for(let a of f){let b=h.find(b=>b.appId===a.appId&&b.repoId===a.repoId),d=b?.meta??{},e=b?(0,I.B)(d.productionSource,(0,I.q)(d,b.defaultBranch??null),c):null;e&&g.set(a.appId,e)}return g}async function W(a,c=[]){let f=a.filter(H.f),g=new Map;if(!f.length)return g;let h=await (0,d.f)().select({appId:e.appRepos.appId,repoId:e.appRepos.repoId,version:e.appSecurity.version,status:e.appSecurity.status,findings:e.appSecurity.findings}).from(e.appRepos).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).innerJoin(e.appSecurity,(0,b.u)(e.appSecurity.resourceId,e.appRepos.appId)).where((0,b.b)((0,b.y)(e.appRepos.appId,f),(0,b.M)(e.githubRepos.goneAt),(0,b.u)(e.appSecurity.status,"vulnerable"))).limit(f.length),j=new Set(c),k=h.filter(a=>j.has(a.appId)),l=k.length?new Set((await (0,d.f)().selectDistinct({repoId:e.dependencyVulns.repoId}).from(e.dependencyVulns).where((0,b.b)((0,b.y)(e.dependencyVulns.repoId,[...new Set(k.map(a=>a.repoId))]),(0,b.M)(e.dependencyVulns.resolvedAt),(0,b.u)(e.dependencyVulns.package,"next"),(0,b.u)(e.dependencyVulns.direct,!0),(0,b.E)(e.dependencyVulns.fixedVersion))).limit(k.length)).map(a=>a.repoId)):new Set;for(let a of h){if(j.has(a.appId)&&l.has(a.repoId))continue;let b=(0,i.p)({version:a.version,status:a.status,findings:Array.isArray(a.findings)?a.findings:[]});b&&g.set(a.appId,{repoId:a.repoId,from:b.from,to:b.to})}return g}a.s(["J",0,U,"W",0,T,"h",0,W,"H",0,V,"G",0,O],736780)},915598,657582,a=>{var b=a.i(322145),c=a.i(75105),d=a.i(572134);function e(a,b,c){if("building"===a.state)return"building";if(null!==b&&a.id===b)return"current";if("error"===a.state)return"failed";if("preview"===a.target)return"ready"===a.state?"preview":"other";if("ready"!==a.state||null===b)return"other";let d=c.find(a=>a.id===b);if(!d)return"other";if(a.createdAt.getTime()>d.createdAt.getTime())return"staged";let e=c.filter(a=>"ready"===a.state&&a.id!==b&&a.createdAt.getTime()<d.createdAt.getTime()).sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime())[0];return e?.id===a.id?"previous":"other"}let f=a=>{let b;return{id:a.externalId,state:"ready"===(b=a.state)||"building"===b||"error"===b||"canceled"===b?b:"building",target:"production"===a.target?"production":"preview",createdAt:a.createdAt}};function g(a){let b=new Map;for(let c of(function(a){let b=new Map;for(let c of a)b.set(c.appId,[...b.get(c.appId)??[],c]);return b})(a).values()){let a=c.find(a=>a.isCurrent)?.externalId??null,d=c.filter(a=>"production"===a.target).map(f);for(let g of c)b.set(g.externalId,e(f(g),a,d))}return b}a.s(["g",0,function(a,b=!1){switch(a){case"building":return["Cancel"];case"current":return b?[]:["Redeploy"];case"previous":return["Roll back to this"];case"staged":return["Promote"];case"preview":return b?[]:["Promote to production"];default:return[]}},"h",0,function(a){let b=g(a),c=[...a].sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime()),d=a=>c.find(c=>b.get(c.externalId)===a)?.externalId??null;return{currentId:d("current"),previousId:d("previous"),stagedId:d("staged")}},"U",0,e,"S",0,g],657582);let h="This app or its Vercel credential isn't available any more. Reload the page.",i="Already live.",j=new Set(["QUEUED","INITIALIZING","BUILDING"]),k=a=>({done:!1,message:a}),l=(a,b)=>a?.sha?a.sha.slice(0,7):b;async function m(a,c,d){let e=await (0,b.q)(a.id,c,d);if(e)return e;let f=await (0,b.p)(d,"app"),g=f?.resource.meta.teamId;if(!f||"string"!=typeof g||!g||!f.resource.externalId)return h;let i=f.resource.meta.teamSlug;return{member:a,t:f,appId:d,app:f.resource.name,teamId:g,teamSlug:"string"==typeof i?i:"",projectId:f.resource.externalId}}async function n(a){let[b,c]=await Promise.all([(0,d.c)(a.t.token,a.teamId,a.projectId),(0,d.r)(a.t.token,a.teamId,a.projectId)]);return b.ok?c.ok?{ok:!0,data:{name:b.data.name,currentId:b.data.currentId??c.data[0]?.id??null,production:c.data}}:c:b}async function o(a,d,e,f,g=b.W){return g(d.ok?{done:!0,message:e.message,audit:{message:e.audit,resourceId:a.appId}}:{done:!1,failed:"scope"===d.kind?{ok:!1,kind:"scope",status:d.status,error:(0,c.b)("vercel",{team:a.teamSlug})}:404===d.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===d.kind?"auth":"format"===d.kind?"format":"transient",...d.status?{status:d.status}:{},error:d.error},audit:{message:f,resourceId:a.appId}},a.member,a.t.account.id)}async function p(a,f,g,h=b.W){{let b=await m(a,"redeploy",f);if("string"==typeof b)return h(k(b),a,"");let i=await n(b);if(!i.ok)return h(k(i.error),a,b.t.account.id);if(i.data.currentId!==g)return h(k(c.G),a,b.t.account.id);if(i.data.production.some(a=>"staged"===e(a,i.data.currentId,i.data.production)))return h(k("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),a,b.t.account.id);let j=await (0,d.N)(b.t.token,b.teamId,b.projectId);if(!j.ok)return h(k(j.error),a,b.t.account.id);if(j.data)return h(k(`A production build of ${b.app} is already running.`),a,b.t.account.id);let p=l(i.data.production.find(a=>a.id===g),g),q=await (0,d.L)(b.t.token,b.teamId,{projectId:b.projectId,name:i.data.name,deploymentId:g});return o(b,q,{message:`Redeploy requested. Vercel is building ${b.app} again.`,audit:`Redeploy requested \xb7 ${b.app} \xb7 ${p}`},`Redeploy failed \xb7 ${b.app} \xb7 ${p}`,h)}}async function q(a,c,f,g=b.W){{let b=await m(a,"rollback",c);if("string"==typeof b)return g(k(b),a,"");let h=await n(b);if(!h.ok)return g(k(h.error),a,b.t.account.id);if(h.data.currentId===f)return g(k(i),a,b.t.account.id);let j=h.data.production.find(a=>a.id===f);if(!j||"previous"!==e(j,h.data.currentId,h.data.production))return g(k("Hobby can only roll back to the previous production deployment."),a,b.t.account.id);let p=l(j,f),q=await (0,d.E)(b.t.token,b.teamId,b.projectId,f);return o(b,q,{message:`Rolled back ${b.app} to ${p}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${b.app} → ${p}`},`Roll back failed \xb7 ${b.app} → ${p}`,g)}}a.s(["T",0,/^dpl_[A-Za-z0-9]{8,40}$/,"u",0,h,"G",0,"Vercel can't find that deployment any more. Reload and try again.","f",0,i,"l",0,"Only a ready preview of this app can be promoted to production.","v",0,"Only a ready production deployment newer than the live one can be promoted.","S",0,"Rolled back: promote a production deployment first. A promoted preview would stay staged and not go live.","o",0,j,"X",0,n,"p",0,m,"B",0,p,"C",0,l,"O",0,k,"U",0,q,"J",0,o],915598)},313235,a=>{var b=a.i(927262),c=a.i(462820);let d={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},e={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",FrameworkVulnerable:"workloads",MonitorDomainMoved:"workloads"},f=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency","FrameworkVulnerable","MonitorDomainMoved"]);a.s(["H",0,d,"p",0,function(a){if((0,b.h)(a.ruleKey))return f.has(a.ruleKey)&&null!==a.resourceKind&&"app"!==a.resourceKind?"observe":e[a.ruleKey];let c=new Set(a.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)),d=(...a)=>a.some(a=>c.has(a));return d("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":d("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":d("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":d("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===a.resourceKind?"workloads":"observe"},"y",0,a=>c.X.proposedBy(d[a])])},247881,649031,a=>{var b=a.i(488345),c=a.i(342634),d=a.i(313235),e=a.i(188282),f=a.i(416454);let g=["LogErrorSpike","LogErrors","LogDbErrors"],h="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(h,"i");let i=/^dpl_[A-Za-z0-9]{8,40}$/,j=/^ep-[a-z0-9-]{3,60}$/,k=/^[a-z0-9]{8,40}$/;function l(a,d,e){let f=d?(0,b.g)(d,e,120):"";return(0,c.l)((0,b.g)(f?`${a}. Most common: ${f}`:a,e,c.j)||a,c.j)}let m=a=>`${a.ruleKey}:${a.resourceId??""}:${a.action}`,n=new Set(["pending","approved","running"]);a.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,h,"G",0,20,"T",0,g,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(a,b,c){let d=new Set(b.filter(a=>n.has(a.status)||null!==a.closedAt&&c.getTime()-a.closedAt.getTime()<72e5).map(m)),e=new Set;return a.filter(a=>{let b=m(a);return!(d.has(b)||e.has(b))&&(e.add(b),!0)})},"t",0,function(a,b,g){return(function(a,b,d){let e=[],g=d.getTime(),h=null!==a.liveAt&&g-a.liveAt.getTime()<72e5&&a.liveAt.getTime()<=g,m=a.previousNext?.status??"unknown";if(h&&a.errorsSinceLive>=Math.max(10,Math.ceil(5*a.baselineErrors/24))&&a.currentId&&a.previousId&&i.test(a.previousId)&&a.previousId!==a.currentId&&"vulnerable"!==m){let d=l(`${a.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((g-a.liveAt.getTime())/6e4))} min ago (${a.baselineErrors} in the 24 h before)`,a.topSinceLive,b);e.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:a.appId,targetRef:a.previousId,reason:"ok"===m?d:(0,c.l)(`${f.B} ${d}`)})}let n=null!==a.lastDeployAt&&g-a.lastDeployAt.getTime()<72e5;if(a.errors30>=20&&!n&&a.httpMonitorId&&e.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:a.appId,targetRef:a.httpMonitorId,reason:l(`${a.errors30} errors in the last 30 min`,a.top30,b)}),a.dbErrors30>=3&&a.db){let c=l(`${a.dbErrors30} database connection errors in the last 30 min`,a.topDb,b),d=a.db;("neon_project"===d.kind||"neon_branch"===d.kind)&&d.wakeEndpoint&&j.test(d.wakeEndpoint)?e.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:d.kind,resourceId:d.resourceId,targetRef:d.wakeEndpoint,reason:c}):"supabase_project"===d.kind&&d.supabasePaused&&d.supabaseRef&&k.test(d.supabaseRef)&&e.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:d.kind,resourceId:d.resourceId,targetRef:d.supabaseRef,reason:c})}return e})(a,b,g).map(f=>{let h="app"===f.resourceKind?(0,c.J)("app",a.appId,a.appName,b):(0,c.J)(f.resourceKind,f.resourceId,null,b);return{alertId:null,ruleKey:f.ruleKey,room:f.room,action:f.action,risk:e.H[f.action].risk,title:(0,c.M)(f.action,h),reason:f.reason,resourceKind:f.resourceKind,resourceId:f.resourceId,resourceName:h,targetRef:f.targetRef,proposedBy:(0,d.y)(f.room),expiresAt:new Date(g.getTime()+e.V)}})},"D",0,function(a,b){let c=a.getTime();return(null===b||!(c-b<27e4))&&(Math.floor(c/6e4)%5==0||null!==b&&c-b>=6e5)},"W",0,function(a,b){let c=new Set(b.map(m));return a.filter(a=>{let b;return"pending"===a.status&&(b=a.ruleKey,g.includes(b))&&!c.has(m(a))}).map(a=>a.id)}],247881);let o=new Set(["MonitorDown","LogErrorSpike"]);a.s(["r",0,72e5,"M",0,o,"s",0,function(a,b){let c=a=>({ok:!1,why:a});if(!a.setting.enabled)return c("off");if(!a.ruleKey||!o.has(a.ruleKey))return c("rule");let d=a.deploy;if(!d||!d.liveAt)return c("no live deploy");let e=b.getTime()-d.liveAt.getTime();return e<0||e>6e4*a.setting.windowMin?c("outside the window"):d.previousId&&a.targetRef===d.previousId&&d.previousId!==d.currentId?d.newestProdCreatedAt&&d.currentCreatedAt.getTime()<d.newestProdCreatedAt.getTime()?c("live deploy is a rollback"):a.rolledOrPromotedLately?c("live deploy came from a rollback or promote"):"ready"!==(d.previousState??"").toLowerCase()?c("previous not ready"):!d.previousCreatedAt||b.getTime()-d.previousCreatedAt.getTime()>2592e6?c("previous too old"):"vulnerable"===a.previousNext?c("previous Next.js has advisories"):"ok"!==a.previousNext?c("previous Next.js unknown"):a.autoLately?c("auto-rollback within 2 h"):a.sameDeployBefore?c("already rolled back once"):a.inFlight?c("another auto-rollback is running"):{ok:!0}:c("target changed")},"u",0,(a,b,d)=>(0,c.l)(`Automatic: the new deploy ${a} errored in the first ${b} minutes. ${d}`),"E",0,a=>a.currentSha&&/^[0-9a-f]{7,40}$/i.test(a.currentSha)?a.currentSha.slice(0,7):a.currentId.slice(0,16)],649031)},691100,a=>{let b;var c,d=a.i(93321),e=a.i(530385),f=a.i(351674),g=a.i(548734),h=a.i(462820),i=a.i(837137),j=a.i(247730),k=a.i(455317),l=a.i(930270),m=a.i(396667),n=a.i(160147),o=a.i(767163),p=a.i(757902),q=a.i(436357),r=a.i(893893),s=a.i(556987),t=a.i(142754),u=a.i(342634),v=a.i(247881),w=a.i(649031),x=a.i(381544),y=a.i(138984),z=a.i(492665),A=a.i(221084),B=a.i(736780),C=a.i(560954),D=a.i(895176),E=a.i(305731),F=a.i(30184),G=a.i(721170),H=a.i(322145),I=a.i(248358),J=a.i(915598),K=a.i(312573),L=a.i(323878),M=a.i(19809),N=a.i(371289),O=a.i(94473),P=a.i(188282);let Q={checkMonitorNow:D.X,keepAliveNow:C.v,wakeAs:G.v,supabaseAct:I.Q,redeployAs:J.B,rollbackAs:J.U,finish:H.W,recordAction:A.f,limit:L.C,bumpPrAs:B.W,autoSecurity:()=>(0,O.X)(),recheckDomain:F._,moveMonitorToDomain:E.f};async function R(){let[a]=await (0,g.f)().select({at:i.collectorRuns.startedAt}).from(i.collectorRuns).where(f.B`(${i.collectorRuns.trigger} = 'vercel_cron' or (${i.collectorRuns.trigger} = 'manual' and ${i.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,e.A)(i.collectorRuns.startedAt)).limit(1);return a?.at??null}async function S(a){let b=await (a.lastDailyRunAt??R)(),c=(a.now??(()=>new Date))();if(b&&c.getTime()-b.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let d=(a.dailyTarget??function(){let a=(0,y.f)();return a?{url:`${(0,z.f)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:a.CRON_SECRET}:null})();if(!d)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let b=await (a.fetch??fetch)(d.url,{headers:{Authorization:`Bearer ${d.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!b.ok||b.status>=300)return{ok:!1,error:`The daily job route answered ${b.status}.`};return{ok:!0,message:`Daily job ran again (${b.status}).`}}catch(a){if(a instanceof Error&&("TimeoutError"===a.name||"AbortError"===a.name))return{ok:!0,message:"Daily job started; it's still running — the heartbeat turns Up when it finishes."};throw a}}let T="The proposal's target is missing, so it can't run.";async function U(a,b,c=Q){let d="auto"===b,e=d?{id:u.e,userId:null}:{id:b.id,userId:b.userId},f=(a,b,e)=>c.finish(a,b,e,{refresh:!1,...d?{auditPrefix:u.v}:{}});try{if(!a.resourceId||!a.targetRef)return{ok:!1,error:T};if((0,N.W)()&&"recheck"!==a.action)return await c.recordAction({kind:"ok",message:`${d?u.v:""}${P.H[a.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:a.resourceId,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:M.r};switch(a.action){case"recheck":{let b=await c.limit(K.t.check,e.id);if(!b.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await c.checkMonitorNow(a.targetRef);if(!f.ok)return{ok:!1,error:f.error};if(f.audit)try{await c.recordAction({kind:!1===f.passed?"err":"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:f.message}}case"domain_recheck":{let b=await c.limit(K.t.domainCheck,e.id);if(!b.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await (c.recheckDomain??F._)(a.targetRef);if(!f.ok)return f;return await c.recordAction({kind:"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:f.message}}case"monitor_update_url":{let b=await c.limit(K.t.monitorWrite,e.id);if(!b.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await (c.moveMonitorToDomain??E.f)(a.targetRef);if(!f.ok)return f;return f.audit&&await c.recordAction({kind:"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:f.message}}case"daily_rerun":return await S(c);case"neon_wake":return await c.wakeAs(e,a.resourceId,a.targetRef,f);case"supabase_keepalive":return await c.keepAliveNow(e,a.resourceId,f);case"supabase_restore":return await c.supabaseAct("restore",e,a.resourceId,a.targetRef,f);case"vercel_redeploy":return await c.redeployAs(e,a.resourceId,a.targetRef,f);case"vercel_rollback":return await c.rollbackAs(e,a.resourceId,a.targetRef,f);case"github_bump_pr":{let b=d?await (c.autoSecurity??O.X)():null;if(d&&!b?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (c.bumpPrAs??B.W)(e,a.resourceId,a.targetRef,f,{proposalId:a.proposalId??null,...b?{auto:{severities:b.severities}}:{},..."FrameworkVulnerable"===a.ruleKey?{framework:!0}:{}})}default:return{ok:!1,error:T}}}catch(a){return console.warn(`${h.X.logTag}/proposals run failed:`,a instanceof Error?a.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}var V=a.i(416454);let W={id:t.O.id,room:t.O.room,action:t.O.action,risk:t.O.risk,title:t.O.title,reason:t.O.reason,resourceName:t.O.resourceName,proposedBy:t.O.proposedBy,status:t.O.status,auto:t.O.auto,result:t.O.result,createdAt:t.O.createdAt,decidedAt:t.O.decidedAt,expiresAt:t.O.expiresAt},X={...W,resourceId:t.O.resourceId,targetRef:t.O.targetRef,ruleKey:t.O.ruleKey,alertId:t.O.alertId};async function Y(a,b,c){let e=(0,u.z)(a,b),h=new Set(e.deployApps),j=a.filter(a=>("MonitorDown"===a.ruleKey||"HighLatency"===a.ruleKey)&&a.resourceId&&h.has(a.resourceId)&&a.startedAt),[k,m,n,o,p,r,s,t,v]=await Promise.all([e.monitorIds.length?(0,g.f)().select({id:i.monitors.id,kind:i.monitors.kind,url:i.monitors.url,lastError:i.monitors.lastError,appId:i.monitors.resourceId,appName:i.resources.name,appMeta:i.resources.meta}).from(i.monitors).innerJoin(i.resources,(0,d.u)(i.resources.id,i.monitors.resourceId)).where((0,d.y)(i.monitors.id,e.monitorIds)):[],e.deployApps.length?(0,g.f)().select({app:i.deployments.resourceId,id:i.deployments.externalId,isCurrent:i.deployments.isCurrent,isPrevious:i.deployments.isPreviousProduction,readyAt:i.deployments.readyAt,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,e.deployApps),(0,d.F)((0,d.u)(i.deployments.isCurrent,!0),(0,d.u)(i.deployments.isPreviousProduction,!0)))):[],e.supabaseIds.length?(0,g.f)().select({id:i.resources.id,ref:i.resources.externalId}).from(i.resources).where((0,d.b)((0,d.y)(i.resources.id,e.supabaseIds),(0,d.u)(i.resources.kind,"supabase_project"),f.B`${i.resources.goneAt} is null`)):[],e.monitorApps.length?ac(e.monitorApps):new Map,e.depApps.length?aa(a,e.depApps).catch(()=>new Set).then(a=>(0,l.C)(e.depApps,a)).catch(()=>new Map):new Map,e.monitorIds.length?ab(e.monitorIds):null,e.frameworkApps.length?(0,B.h)(e.frameworkApps,e.depApps).catch(()=>new Map):new Map,j.length?Z(j.map(a=>a.subject),b).catch(()=>[]):[],$(e.deployApps)]),w=k.some(a=>null!==(0,q.Y)(a.appMeta)),x=w?await (0,g.f)().select({id:i.resources.id,name:i.resources.name,meta:i.resources.meta}).from(i.resources).where((0,d.b)((0,d.u)(i.resources.kind,"app"),(0,d.u)(i.resources.monitored,!0),(0,d.M)(i.resources.goneAt))).limit(500):[],y=w?(0,q.P)(k,x):new Map,z=[...[...p].map(([a,b])=>({appId:a,repoId:b})),...[...s].map(([a,b])=>({appId:a,repoId:b.repoId}))],A=z.length?await Promise.resolve().then(()=>(0,B.H)(z,b)).catch(()=>new Map):new Map,C=new Map,D=new Map;for(let a of m){let b=C.get(a.app)??{currentId:null,previousId:null,liveAt:null};a.isCurrent?(b.currentId=a.id,b.liveAt=a.readyAt??a.createdAt??null):a.isPrevious&&(b.previousId=a.id,D.set(a.app,a.readyAt??a.createdAt??null)),C.set(a.app,b)}let E=new Map;for(let[a,b]of C)b.previousId&&E.set(a,_(v,a,b.liveAt,D.get(a)??null));let F=new Map(j.map(a=>[a.id,(0,V.g)(a.startedAt,t.filter(b=>b.ruleKey===a.ruleKey&&b.subject===a.subject),{ruleKey:a.ruleKey,liveAt:C.get(a.resourceId)?.liveAt??null})]));return{monitorKinds:new Map(k.map(a=>[a.id,String(a.kind)])),deploys:C,...void 0!==c?{rollbackWindowMs:c}:{},supabaseRefs:new Map(n.map(a=>[a.id,a.ref])),neonSuspended:o,fixableRepos:p,dailyHeartbeatId:r,frameworkFixes:s,monitorMoves:y,problemSince:F,previousNext:E,...A.size?{productionMismatch:A}:{}}}async function Z(a,b){return(0,g.f)().select({ruleKey:i.alerts.ruleKey,subject:i.alerts.subject,startedAt:i.alerts.startedAt,resolvedAt:i.alerts.resolvedAt}).from(i.alerts).where((0,d.b)((0,d.y)(i.alerts.ruleKey,["MonitorDown","HighLatency"]),(0,d.y)(i.alerts.subject,[...new Set(a)]),(0,d.E)(i.alerts.resolvedAt),(0,d.B)(i.alerts.resolvedAt,new Date(b.getTime()-V.A)))).orderBy((0,e.A)(i.alerts.startedAt)).limit(500)}async function $(a){let b={checks:new Map,events:new Map,frameworks:new Map};if(!a.length)return b;try{let[c,f,h]=await Promise.all([(0,g.f)().select({app:i.appSecurity.resourceId,version:i.appSecurity.version,status:i.appSecurity.status,findings:i.appSecurity.findings,checkedAt:i.appSecurity.checkedAt,reason:i.appSecurity.reason}).from(i.appSecurity).where((0,d.y)(i.appSecurity.resourceId,a)).limit(a.length),(0,g.f)().select({app:i.events.resourceId,at:i.events.at,reason:i.events.reason,message:i.events.message}).from(i.events).where((0,d.b)((0,d.y)(i.events.reason,[...V.Y]),(0,d.y)(i.events.resourceId,a))).orderBy((0,e.A)(i.events.at)).limit(Math.min(500,50*a.length)),(0,g.f)().select({app:i.resources.id,meta:i.resources.meta}).from(i.resources).where((0,d.y)(i.resources.id,a)).limit(a.length)]);for(let a of c)b.checks.set(a.app,{version:a.version,status:a.status,findings:Array.isArray(a.findings)?a.findings:[],checkedAt:a.checkedAt,reason:a.reason});for(let a of f)a.app&&b.events.set(a.app,[...b.events.get(a.app)??[],{at:a.at,reason:a.reason,message:a.message}]);for(let a of h){let c=a.meta&&"object"==typeof a.meta?a.meta.framework:null;b.frameworks.set(a.app,"string"==typeof c?c:null)}}catch{return{checks:new Map,events:new Map,frameworks:new Map}}return b}let _=(a,b,c,d)=>(0,V.Q)({currentLiveAt:c,previousLiveAt:d,check:a.checks.get(b)??null,events:a.events.get(b)??[],framework:a.frameworks.get(b)??null});async function aa(a,b){let c=new Set(b),e=a.filter(a=>"FrameworkVulnerable"===a.ruleKey&&"app"===a.resourceKind&&a.resourceId&&c.has(a.resourceId)).map(a=>a.id);return e.length?new Set((await (0,g.f)().selectDistinct({resourceId:t.O.resourceId}).from(t.O).where((0,d.b)((0,d.u)(t.O.ruleKey,"FrameworkVulnerable"),(0,d.u)(t.O.action,"github_bump_pr"),(0,d.y)(t.O.status,["pending","approved","running","done"]),(0,d.y)(t.O.alertId,e),(0,d.y)(t.O.resourceId,[...c]))).limit(e.length)).flatMap(a=>a.resourceId?[a.resourceId]:[])):new Set}async function ab(a){let b=(0,o.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!b)return null;let[c]=await (0,g.f)().select({id:i.monitors.id}).from(i.monitors).where((0,d.b)((0,d.y)(i.monitors.id,a),(0,d.u)(i.monitors.kind,"heartbeat"),(0,d.u)(i.monitors.tokenHash,(0,p.C)(b)))).limit(1).catch(()=>[]);return c?.id??null}async function ac(a){let b=await (0,g.f)().select({app:i.links.fromResourceId,id:i.resources.id,kind:i.resources.kind,externalId:i.resources.externalId,parentId:i.resources.parentId}).from(i.links).innerJoin(i.resources,(0,d.u)(i.resources.id,i.links.toResourceId)).where((0,d.b)((0,d.y)(i.links.fromResourceId,a),(0,d.u)(i.links.kind,"uses_db"),(0,d.y)(i.resources.kind,["neon_project","neon_branch"]),f.B`${i.resources.goneAt} is null`)),c=new Map;if(!b.length)return c;let e=a=>"neon_branch"===a.kind?a.parentId:a.id,h=[...new Set(b.map(e).filter(a=>!!a))];if(!h.length)return c;let j=new Map((await (0,g.f)().select({id:i.snapshots.resourceId,data:i.snapshots.data}).from(i.snapshots).where((0,d.y)(i.snapshots.resourceId,h))).map(a=>[a.id,(0,r.k)(r.s,a.data)]));for(let a of b){let b=e(a),d=b?j.get(b):void 0,f=d?(0,u.Z)(d.endpoints,d.branches,"neon_branch"===a.kind?a.externalId:null):null;f&&c.set(a.app,{resourceId:a.id,resourceKind:a.kind,endpointId:f})}return c}async function ad(a){if(!a.length)return[];let b=new Set((await (0,g.f)().select({alertId:t.O.alertId,action:t.O.action}).from(t.O).where((0,d.y)(t.O.alertId,[...new Set(a.map(a=>a.alertId))]))).map(a=>`${a.alertId}:${a.action}`)),c=a.filter(a=>!b.has(`${a.alertId}:${a.action}`));return c.length?(0,g.f)().insert(t.O).values(c.map(a=>({...a,status:"pending"}))).onConflictDoNothing().returning(X):[]}async function ae(a,b){return(await (0,g.f)().select(W).from(t.O).where(f.B`${t.O.createdAt} >= ${new Date(a.getTime()-6048e5).toISOString()}::timestamptz`).orderBy(f.B`case when ${t.O.status} = 'pending' then 0 else 1 end`,(0,e.A)(t.O.createdAt),(0,e.A)(t.O.id)).limit(b)).map(u.E)}async function af(a){let[b]=await (0,g.f)().select(W).from(t.O).where((0,d.u)(t.O.id,a)).limit(1);return b?(0,u.E)(b):null}async function ag(a,b,c,e){let[h]=await (0,g.f)().update(t.O).set({status:"approve"===b?"approved":"rejected",decidedBy:c,decidedAt:e}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),f.B`${t.O.expiresAt} > ${e.toISOString()}::timestamptz`)).returning(X);if(h)return{status:"ok",proposal:(0,u.E)(h),row:h};let[i]=await (0,g.f)().select(W).from(t.O).where((0,d.u)(t.O.id,a)).limit(1);return i?{status:"conflict",proposal:(0,u.E)(i)}:{status:"missing"}}async function ah(a,b){let[c]=await (0,g.f)().update(t.O).set({status:"running",claimedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"approved"))).returning(X);return c??null}async function ai(a,b,c,e){let[f]=await (0,g.f)().update(t.O).set({status:b?"done":"failed",result:c,finishedAt:e}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"running"))).returning(X);return f??null}let aj={run:(a,b)=>U(a,b),book:()=>(0,j.f)()};async function ak(a,b,c,d=aj){let e=await ah(a,c);if(!e)return null;let f=await d.run({action:e.action,resourceId:e.resourceId,targetRef:e.targetRef,proposalId:e.id,ruleKey:e.ruleKey??null},b),g=await d.book().catch(()=>s.a),h=await ai(a,f.ok,(0,u.x)(f,g),new Date);return h?(0,u.E)(h):null}async function al(a,b){let c=await (0,g.f)().update(t.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,d.b)((0,d.u)(t.O.status,"pending"),(0,d.F)((0,d.S)(t.O.expiresAt,new Date(b.getTime()+1)),(0,d.b)((0,d.E)(t.O.alertId),a.length?(0,d.$)(t.O.alertId,a):f.B`true`)))).returning({id:t.O.id});return await (0,g.f)().update(t.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:b}).where((0,d.b)((0,d.u)(t.O.status,"running"),(0,d.S)(t.O.claimedAt,new Date(b.getTime()-u.L)))),c.length}async function am(a){await (0,g.f)().delete(t.O).where((0,d.b)((0,d.S)(t.O.createdAt,new Date(a.getTime()-2592e6)),(0,d.$)(t.O.status,["pending","approved","running"])))}let an=f.B`(${i.storedLogs.level} in ('error', 'fatal') or coalesce(${i.storedLogs.statusCode}, 0) >= 500)`,ao=f.B`coalesce(${i.deployments.readyAt}, ${i.deployments.createdAtProvider})`;async function ap(a){let b=await (0,g.f)().select({app:i.links.fromResourceId,id:i.resources.id,kind:i.resources.kind,externalId:i.resources.externalId,parentId:i.resources.parentId}).from(i.links).innerJoin(i.resources,(0,d.u)(i.resources.id,i.links.toResourceId)).where((0,d.b)((0,d.y)(i.links.fromResourceId,a),(0,d.u)(i.links.kind,"uses_db"),(0,d.y)(i.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,d.M)(i.resources.goneAt))),c=new Map;if(!b.length)return c;let e=a=>"neon_branch"===a.kind?a.parentId:a.id,f=[...new Set(b.map(e).filter(a=>!!a))],h=new Map((f.length?await (0,g.f)().select({id:i.snapshots.resourceId,data:i.snapshots.data}).from(i.snapshots).where((0,d.y)(i.snapshots.resourceId,f)):[]).map(a=>[a.id,a.data]));for(let a of b){let b=h.get(e(a)??"");if("supabase_project"===a.kind){let d=(0,r.k)(r.B,b);c.set(a.app,{resourceId:a.id,kind:a.kind,wakeEndpoint:null,supabaseRef:a.externalId,supabasePaused:"INACTIVE"===d.status})}else{let d=(0,r.k)(r.s,b);c.set(a.app,{resourceId:a.id,kind:a.kind,wakeEndpoint:(0,u.Z)(d.endpoints,d.branches,"neon_branch"===a.kind?a.externalId:null),supabaseRef:null,supabasePaused:!1})}}return c}let aq={apps:async function(a){let b=new Date(a.getTime()-v.I-v.s),c=f.B`${i.storedLogs.at} >= ${new Date(a.getTime()-v.H).toISOString()}::timestamptz`,e=f.B`${i.storedLogs.message} ~* ${v.N}`,h=f.B`left(${i.storedLogs.message}, 200)`,j=(await (0,g.f)().select({appId:i.storedLogs.resourceId,appName:f.B`max(${i.resources.name})`,liveAt:f.B`max(${ao})`.mapWith(i.deployments.readyAt),currentId:f.B`max(${i.deployments.externalId})`,errorsSinceLive:f.B`count(*) filter (where ${an} and ${i.storedLogs.at} >= ${ao})`.mapWith(Number),baselineErrors:f.B`count(*) filter (where ${an} and ${i.storedLogs.at} >= ${ao} - interval '24 hours' and ${i.storedLogs.at} < ${ao})`.mapWith(Number),topSinceLive:f.B`mode() within group (order by ${h}) filter (where ${an} and ${i.storedLogs.at} >= ${ao})`,errors30:f.B`count(*) filter (where ${an} and ${c})`.mapWith(Number),top30:f.B`mode() within group (order by ${h}) filter (where ${an} and ${c})`,dbErrors30:f.B`count(*) filter (where ${c} and ${e})`.mapWith(Number),topDb:f.B`mode() within group (order by ${h}) filter (where ${c} and ${e})`}).from(i.storedLogs).innerJoin(i.resources,(0,d.u)(i.resources.id,i.storedLogs.resourceId)).leftJoin(i.deployments,(0,d.b)((0,d.u)(i.deployments.resourceId,i.storedLogs.resourceId),(0,d.u)(i.deployments.isCurrent,!0))).where((0,d.b)((0,d.B)(i.storedLogs.at,b),(0,d.u)(i.resources.kind,"app"),(0,d.M)(i.resources.goneAt))).groupBy(i.storedLogs.resourceId)).filter(a=>a.errorsSinceLive>=v.w||a.errors30>=v.G||a.dbErrors30>=v.V);if(!j.length)return[];let k=j.map(a=>a.appId),[l,m,n]=await Promise.all([(0,g.f)().select({app:i.deployments.resourceId,previousId:f.B`max(${i.deployments.externalId}) filter (where ${i.deployments.isPreviousProduction})`,previousLiveAt:f.B`max(${ao}) filter (where ${i.deployments.isPreviousProduction})`.mapWith(i.deployments.readyAt),lastDeployAt:f.B`max(${i.deployments.createdAtProvider}) filter (where ${i.deployments.target} = 'production')`.mapWith(i.deployments.createdAtProvider)}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,k),(0,d.F)((0,d.u)(i.deployments.isPreviousProduction,!0),(0,d.B)(i.deployments.createdAtProvider,new Date(a.getTime()-v.v))))).groupBy(i.deployments.resourceId),(0,g.f)().select({app:i.monitors.resourceId,id:i.monitors.id}).from(i.monitors).where((0,d.b)((0,d.y)(i.monitors.resourceId,k),(0,d.u)(i.monitors.kind,"http"),(0,d.u)(i.monitors.paused,!1),(0,d.u)(i.monitors.ownerPaused,!1))).orderBy(i.monitors.createdAt),ap(k)]),o=new Map(l.map(a=>[a.app,a])),p=new Map;for(let a of m)p.has(a.app)||p.set(a.app,a.id);let q=j.filter(a=>a.errorsSinceLive>=v.w&&a.liveAt&&o.get(a.appId)?.previousId).map(a=>a.appId),r=q.length?await $(q):null;return j.map(a=>({...a,appName:a.appName??"",previousId:o.get(a.appId)?.previousId??null,lastDeployAt:o.get(a.appId)?.lastDeployAt??null,httpMonitorId:p.get(a.appId)??null,db:n.get(a.appId)??null,...r&&q.includes(a.appId)?{previousNext:_(r,a.appId,a.liveAt,o.get(a.appId)?.previousLiveAt??null)}:{}}))},rows:async function(a){let b=f.B`coalesce(${t.O.finishedAt}, ${t.O.decidedAt}, ${t.O.expiresAt})`;return(0,g.f)().select({id:t.O.id,ruleKey:t.O.ruleKey,resourceId:t.O.resourceId,action:t.O.action,status:t.O.status,closedAt:b.mapWith(t.O.finishedAt)}).from(t.O).where((0,d.b)((0,d.M)(t.O.alertId),(0,d.y)(t.O.ruleKey,[...v.T]),(0,d.F)((0,d.y)(t.O.status,["pending","approved","running"]),f.B`${b} > ${new Date(a.getTime()-v.b).toISOString()}::timestamptz`)))}};async function ar(a,b,c=aq){let[e,f]=await Promise.all([c.apps(a),c.rows(a)]),h=e.flatMap(c=>(0,v.t)(c,b,a)),i=(0,v.W)(f,h),j=0;i.length&&(j=(await (0,g.f)().update(t.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:a}).where((0,d.b)((0,d.y)(t.O.id,i),(0,d.u)(t.O.status,"pending"))).returning({id:t.O.id})).length);let k=(0,v.x)(h,f,a);return k.length?{created:await (0,g.f)().insert(t.O).values(k.map(a=>({...a,status:"pending"}))).onConflictDoNothing().returning(X),expired:j}:{created:[],expired:j}}let as=null;async function at(a,b){return(0,v.D)(a,as)?(as=a.getTime(),ar(a,await b())):{created:[],expired:0}}async function au(a,b){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.risk,"safe"))).returning({id:t.O.id})).length>0}async function av(a,b){let c=new Date(b.getTime()-w.r),[e,h,j,k,l]=await Promise.all([(0,g.f)().select({app:i.deployments.resourceId,id:i.deployments.externalId,sha:i.deployments.commitSha,state:i.deployments.state,isCurrent:i.deployments.isCurrent,isPrevious:i.deployments.isPreviousProduction,readyAt:i.deployments.readyAt,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,a),(0,d.F)((0,d.u)(i.deployments.isCurrent,!0),(0,d.u)(i.deployments.isPreviousProduction,!0)))),(0,g.f)().select({app:i.deployments.resourceId,at:f.B`max(${i.deployments.createdAtProvider})`.mapWith(i.deployments.createdAtProvider)}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,a),(0,d.u)(i.deployments.target,"production"),(0,d.u)(i.deployments.state,"ready"))).groupBy(i.deployments.resourceId),(0,g.f)().select({app:i.events.resourceId}).from(i.events).where((0,d.b)((0,d.u)(i.events.type,"action"),(0,d.y)(i.events.resourceId,a),(0,d.B)(i.events.at,c),f.B`${i.events.message} ~ ${aw}`)),(0,g.f)().select({app:t.O.resourceId,targetRef:t.O.targetRef,status:t.O.status,decidedAt:t.O.decidedAt}).from(t.O).where((0,d.b)((0,d.u)(t.O.action,"vercel_rollback"),(0,d.u)(t.O.auto,!0),(0,d.B)(t.O.createdAt,new Date(b.getTime()-26784e5)))),$(a)]),m=new Map;for(let b of a){let a=e.find(a=>a.app===b&&a.isCurrent),d=e.find(a=>a.app===b&&a.isPrevious&&!a.isCurrent),f=k.filter(a=>a.app===b);m.set(b,{deploy:a?{currentId:a.id,currentSha:a.sha,liveAt:a.readyAt??a.createdAt,currentCreatedAt:a.createdAt,newestProdCreatedAt:h.find(a=>a.app===b)?.at??null,previousId:d?.id??null,previousState:d?.state??null,previousCreatedAt:d?.createdAt??null}:null,rolledOrPromotedLately:j.some(a=>a.app===b),autoLately:f.some(a=>null!==a.decidedAt&&a.decidedAt.getTime()>=c.getTime()),sameDeployBefore:!!d&&f.some(a=>a.targetRef===d.id),previousNext:a&&d?_(l,b,a.readyAt??a.createdAt,d.readyAt??d.createdAt).status:"unknown"})}return{apps:m,inFlight:k.some(a=>"approved"===a.status||"running"===a.status)}}let aw="(Rolled back|Promoted|Preview promoted) ·";async function ax(a,b,c){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:c,reason:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.action,"vercel_rollback"),f.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:t.O.id})).length>0}async function ay(a,b,c,d){let e=a.filter(a=>"vercel_rollback"===a.action&&a.ruleKey&&w.M.has(a.ruleKey)&&a.resourceId);if(!e.length||!d.autoRollback||!d.rollbackContext||!d.approveAutoRollback)return[];let f=await d.autoRollback().catch(()=>null);if(!f?.enabled||15e3>c())return[];let g=[];try{let a=await d.rollbackContext([...new Set(e.map(a=>a.resourceId))],b),i=a.inFlight;for(let j of e){let e=a.apps.get(j.resourceId);if(!e||12e3>c())continue;let k=(0,w.s)({setting:f,ruleKey:j.ruleKey??null,targetRef:j.targetRef,inFlight:i,...e},b);if(!k.ok){console.log(`${h.X.logTag}/auto-rollback: skipped (${k.why})`);continue}let l=(0,w.E)(e.deploy);if(!await d.approveAutoRollback(j.id,(0,w.u)(l,f.windowMin,j.reason),new Date))continue;i=!0;let m=await d.execute(j.id,new Date);if(m){g.push(m),await (d.notifyRollback??x.q)(m,{reason:j.reason,newRef:l},{},{alertId:j.alertId??null}).catch(()=>void 0);break}}}catch(a){console.warn(`${h.X.logTag}/auto-rollback failed:`,a instanceof Error?a.name:"error")}return g}async function az(a,b){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.action,"github_bump_pr"))).returning({id:t.O.id})).length>0}async function aA(a,b,c){let d=a.filter(a=>"github_bump_pr"===a.action&&a.targetRef);if(!d.length||!c.autoSecurity||!c.bumpReady||!c.approveAutoBump)return[];let e=await c.autoSecurity().catch(()=>null);if(!e?.enabled||!e.severities.length)return[];let f=[];for(let a of d){if(15e3>b())break;try{if(a.resourceId&&c.prodMismatch?await c.prodMismatch(a.resourceId,a.targetRef).catch(()=>"unknown"):null){console.log(`${h.X.logTag}/auto-security: waits for the owner (production source)`);continue}let b="FrameworkVulnerable"===a.ruleKey&&a.resourceId?await c.bumpReady(a.targetRef,e.severities,{appId:a.resourceId}):await c.bumpReady(a.targetRef,e.severities);if(!b.ok){console.log(`${h.X.logTag}/auto-security: waits for the owner (${b.why})`);continue}if(!await c.approveAutoBump(a.id,new Date))continue;let d=await c.execute(a.id,new Date);d&&f.push(d)}catch(a){console.warn(`${h.X.logTag}/auto-security failed:`,a instanceof Error?a.name:"error")}}return f}async function aB(a,b){return(await (0,B.H)([{appId:a,repoId:b}],new Date)).get(a)??null}async function aC(a){return new Map((await (0,g.f)().select({id:i.accounts.id,provider:i.accounts.provider}).from(i.accounts).where((0,d.y)(i.accounts.id,a))).map(a=>[a.id,a.provider]))}let aD={firing:()=>(0,k.q)(),book:()=>(0,j.f)(),facts:Y,create:ad,expire:al,autoRun:O.I,approveAuto:au,execute:(a,b)=>ak(a,"auto",b),notifyNew:x.i,notifyResult:x.b,logs:at,autoRollback:()=>(0,O.K)(),rollbackContext:av,approveAutoRollback:ax,notifyRollback:x.q,autoSecurity:()=>(0,O.X)(),bumpReady:B.J,approveAutoBump:az,paused:m.I,providers:aC,prodMismatch:aB};async function aE(a,b={},c=aD){let d={created:0,expired:0,autoRan:0},e=()=>(b.deadline??1/0)-Date.now(),f=await c.firing();d.expired=await c.expire(f.map(a=>a.id),a);let g=c.paused?await c.paused().catch(()=>new Set):new Set,i=[...new Set(f.flatMap(a=>a.accountId?[a.accountId]:[]))],j=g.size&&i.length&&c.providers?await c.providers(i).catch(()=>new Map):new Map,k=f.filter(a=>!(0,n.O)(g,a.ruleKey,a.accountId?j.get(a.accountId):null)),l=null,m=()=>l??=c.book().catch(()=>s.a),o=[],p=(0,u.z)(k,a);if(Object.values(p).some(a=>a.length>0)){let b=p.deployApps.length&&c.autoRollback?await c.autoRollback().catch(()=>null):null,d=await c.facts(k,a,b?6e4*b.windowMin:void 0),e=await m(),f=k.flatMap(b=>(0,u.t)(b,d,e,a)).filter(a=>!("github_bump_pr"===a.action&&g.has("devops")));o.push(...await c.create(f))}if(e()>1e4&&!g.has("hosting"))try{let b=await c.logs(a,m);o.push(...b.created),d.expired+=b.expired}catch(a){console.warn(`${h.X.logTag}/proposals logs failed:`,a instanceof Error?a.name:"error")}if(d.created=o.length,!o.length)return d;let q=await c.autoRun().catch(()=>null),r=await ay(o,a,e,c);d.autoRan+=r.length;let t=await aA(o.filter(a=>!r.some(b=>b.id===a.id)),e,c),v=new Set(r.map(a=>a.id)),w=[...t];for(let a of(d.autoRan+=t.length,t))v.add(a.id);for(let a of o){if(v.has(a.id)||!q||!(0,u.I)(a.action,q)||8e3>e()||!await c.approveAuto(a.id,new Date))continue;let b=await c.execute(a.id,new Date);b&&(w.push(b),d.autoRan++)}let x=new Set([...w.map(a=>a.id),...v]),y=o.filter(a=>"LogErrorSpike"===a.ruleKey&&a.resourceId).map(a=>({proposalId:a.id,appId:a.resourceId})),z=y.length&&c.queueDev?await c.queueDev(y,a).catch(()=>new Set):new Set,A=new Map(o.map(a=>[a.id,a.alertId??null]));for(let a of(await c.notifyNew(o.filter(a=>!x.has(a.id)).map(u.E),{},{devQueued:z,alertIds:A}).catch(()=>void 0),w))await c.notifyResult(a,{},{alertId:A.get(a.id)??null}).catch(()=>void 0);return d}let aF=(c={},b={...aD,queueDev:c.queueDev},async(a,c)=>{try{let d=await aE(a,c??{},b);(d.created||d.expired||d.autoRan)&&console.log(`${h.X.logTag}/proposals: ${d.created} new, ${d.expired} expired, ${d.autoRan} auto-ran`)}catch(a){console.warn(`${h.X.logTag}/proposals failed:`,a instanceof Error?a.name:"error")}});a.s(["V",0,ag,"N",0,ak,"Q",0,ae,"Z",0,aF,"t",0,am,"K",0,af],691100)},381544,a=>{var b=a.i(462820),c=a.i(532620),d=a.i(49146),e=a.i(390626),f=a.i(192738),g=a.i(492665),h=a.i(552543),i=a.i(446914),j=a.i(556987),k=a.i(488345),l=a.i(94473),m=a.i(188282);let n={target:d.Q,book:()=>(0,c.e)(),siteUrl:()=>(0,g.f)().SITE_URL,autoRun:()=>(0,l.I)(),send:(a,b,c,d,e)=>(0,i.I)(a,b,c,{...d?{replyMarkup:d}:{},...e?{replyTo:e}:{}}),record:(a,b)=>(0,d.P)("telegram",a,b),lang:()=>(0,h.I)("telegram"),discord:()=>(0,d.G)(),sendDiscord:(a,b)=>(0,e.$)(a,b,{timeoutMs:w}),recordDiscord:(a,b)=>(0,d.P)("discord",a,b),discordLang:()=>(0,h.I)("discord"),buttons:()=>a.A(801116).then(a=>a.approvalButtons()),thread:a=>(0,d.M)(a)},o={en:{pending:"Status: ⏳ waiting",dev:"🧑💻 Dev is checking the code",proposer:b.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:b.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"}},p={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",monitor_update_url:"Arahin monitor ke domain baru"},q=(a="en")=>(0,h.t)(o,a,"dev"),r=(a,b)=>("id"===b?p[a.action]:void 0)??m.H[a.action]?.label??a.actionLabel,s=(a,b)=>(0,h.t)(o,b,"risky"===a.risk||m.H[a.action]?.risk==="risky"?"risky":"safe"),t=(a,b)=>`${a.replace(/\/+$/,"")}/auto-actions${b?`?proposal=${encodeURIComponent(b)}`:""}`;function u(a,b,c,d=!1,e="en"){let g=a=>(0,h.t)(o,e,a),i=(0,k.R)(a.proposedBy,b,60)||g("proposer"),j=(0,k.R)(a.title,b,120),l=(0,k.R)(a.reason,b,200)||"-";return[`🧑✈️ ${(0,f.H)(i)} ${g("proposes")}: ${(0,f.H)(r(a,e))} — ${(0,f.H)(j)}`,`${g("why")}: ${(0,f.H)(l)}`,`${g("risk")}: ${s(a,e)}`,...d?[q(e)]:[],`${g("open")}: ${(0,f.H)(t(c,a.id))}`].join("\n")}let v=new Set(["recheck","domain_recheck"]),w=3e3,x={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 y(a,b,c,d="en"){let e=a=>(0,h.t)(x,d,a);if(Array.isArray(b))return`📝 ${b.length} ${e("newN")} — ${e("waiting")}`;let f=((0,k.g)(b.title,c,120)||r(b,d)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===a)return`${e("proposed")}: ${f} — ${e("waiting")}`;if("approved"===a||"rejected"===a)return`${e(a)}: ${f}`;let g=b.result?(0,k.g)(b.result,c,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${e(a)}: ${f}${g?` — ${g}`:""}`}async function z(a,c,d){try{let e,f=await c.discord();if(!f)return;let g=await c.book().catch(()=>j.a),h=await c.discordLang().catch(()=>"en"),i=a(g,h);if(!i.length)return;try{e=await c.sendDiscord(f.url,i.join("\n"))}catch{e={ok:!1,kind:"transient",error:"Discord didn't answer."}}await c.recordDiscord(e,d).catch(()=>console.warn(`${b.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${b.X.logTag}/discord: sending the action history failed`)}}async function A(a,b,c={},d={}){let e={...n,...c};await C(()=>z((c,d)=>[y(a,b,c,d)],e,d.now??new Date),d.timeoutMs??w)}async function B(a,c,d){let e=await c.target();if(!e)return;let f=await c.book().catch(()=>j.a),g=await c.lang().catch(()=>"en");for(let h of(await a(f,g))){let a;try{a="string"==typeof h?await c.send(e.token,e.chatId,h):await c.send(e.token,e.chatId,h.text,h.keyboard,h.replyTo??void 0)}catch{a={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await c.record(a,d).catch(()=>console.warn(`${b.X.logTag}/telegram: recording the result failed`))}}async function C(a,c){try{var d;let b;await (d=a(),Promise.race([d,new Promise((a,d)=>{b=setTimeout(()=>d(Object.assign(Error("timeout"),{name:"TimeoutError"})),c)})]).finally(()=>clearTimeout(b)))}catch(a){console.warn(`${b.X.logTag}/telegram: sending the proposal notice failed:`,a instanceof Error?a.name:"error")}}let D=async(a,b)=>b&&a.thread?a.thread(b).catch(()=>null):null;async function E(a,b={},c={}){if(!a.length)return;let d={...n,...b};await C(async()=>{let b=await d.autoRun().catch(()=>null),e=a.filter(a=>{var c;return c=b??{},"pending"===a.status&&!a.auto&&(m.H[a.action]?.risk!=="safe"||"risky"===a.risk||!c[a.action])});if(!e.length)return;let g=e.length>3||!d.buttons?null:await d.buttons().catch(()=>null),i=c.now??new Date;await Promise.all([B(async(a,b)=>e.length>3?[function(a,b,c,d=new Set,e="en"){let g=a=>(0,h.t)(o,e,a),i=a.slice(0,10).map(a=>{let h=(0,k.R)(a.proposedBy,b,60)||g("proposer");return`• ${(0,f.H)(h)}: ${(0,f.H)(r(a,e))} — ${(0,f.H)((0,k.R)(a.title,b,120))} (${s(a,e)})${d.has(a.id)?` \xb7 ${q(e)}`:""}
|
|
5
|
+
${(0,f.H)(t(c,a.id))}`}),j=a.length>10?[`+${a.length-10} ${g("moreN")}`]:[];return[`🧑✈️ ${a.length} ${g("waitingN")}`,...i,...j,`${g("open")}: ${(0,f.H)(t(c))}`].join("\n")}(e,a,d.siteUrl(),c.devQueued,b)]:Promise.all(e.map(async e=>{let f=u(e,a,d.siteUrl(),c.devQueued?.has(e.id)??!1,b),i=await D(d,c.alertIds?.get(e.id));return g?{text:`${f}
|
|
6
|
+
${((a="en")=>(0,h.t)(o,a,"pending"))(b)}`,keyboard:g(e),replyTo:i}:{text:f,replyTo:i}})),d,i),z((a,b)=>e.length>3?[y("proposed",e,a,b)]:e.map(c=>y("proposed",c,a,b)),d,i)])},c.timeoutMs??8e3)}async function F(a,b={},c={}){if(!a.auto||"done"!==a.status&&"failed"!==a.status)return;let d={...n,...b},e=c.now??new Date;await C(()=>Promise.all([B(async(b,e)=>{let g=function(a,b,c="en"){if(!a.auto||"done"!==a.status&&"failed"!==a.status||a.auto&&"done"===a.status&&v.has(a.action))return null;let d="done"===a.status?"✅":"❌",e=a.result?(0,k.R)(a.result,b,200):"";return`${d} ${(0,h.t)(o,c,"automatic")}: ${(0,f.H)(r(a,c))} — ${(0,f.H)((0,k.R)(a.title,b,120))}${e?`: ${(0,f.H)(e)}`:""}`}(a,b,e);return g?[{text:g,replyTo:await D(d,c.alertId)}]:[]},d,e),z((b,c)=>[y("done"===a.status?"done":"failed",a,b,c)],d,e)]).then(()=>void 0),c.timeoutMs??8e3)}async function G(a,b,c={},d={}){if("done"!==a.status&&"failed"!==a.status)return;let e={...n,...c},g=d.now??new Date;await C(()=>Promise.all([B(async(c,g)=>[{text:function(a,b,c,d="en"){let e=a=>(0,h.t)(o,d,a),g=(0,k.R)(a.resourceName??e("app"),c,60)||e("app"),i=(0,k.R)(b.reason,c,200).replace(/[.!?…]+$/,"")||e("rollbackWhy"),j=a.result?(0,k.R)(a.result,c,200):"";return["id"===d?`⏪ Otomatis rollback ${(0,f.H)(g)}: ${(0,f.H)(i)}. Deploy baru ${(0,f.H)((0,k.R)(b.newRef,c,40))} dibalikin ke deploy sebelumnya. Benerin dulu, terus deploy ulang.`:`⏪ Automatic rollback of ${(0,f.H)(g)}: ${(0,f.H)(i)}. The new deploy ${(0,f.H)((0,k.R)(b.newRef,c,40))} was rolled back to the previous one. Fix it first, then deploy again.`,`${"done"===a.status?"✅":"❌"} ${e("done"===a.status?"succeeded":"failed")}${j?`: ${(0,f.H)(j)}`:""}`].join("\n")}(a,b,c,g),replyTo:await D(e,d.alertId)}],e,g),z((b,c)=>[y("done"===a.status?"done":"failed",a,b,c)],e,g)]).then(()=>void 0),d.timeoutMs??8e3)}async function H(a,b={},c={}){let d={...n,...b};await C(()=>B((b,c)=>[function(a,b,c="en"){let d="id"===c,e=(0,k.R)(a.app,b,60)||(0,h.t)(o,c,"app"),g=a.packages.slice(0,4).join(", ")+(a.packages.length>4?`, +${a.packages.length-4}`:"");if("merged"===a.kind)return d?`✅ PR #${a.number} di ${(0,f.H)(e)} di-merge otomatis (${(0,f.H)(g)}). Deploy production jalan lewat Vercel; auto-rollback jaga ${a.windowMin??30} menit pertama.`:`✅ PR #${a.number} in ${(0,f.H)(e)} was merged automatically (${(0,f.H)(g)}). The production deploy runs through Vercel; auto-rollback watches the first ${a.windowMin??30} minutes.`;if("ready-manual"===a.kind)return d?`🔐 PR #${a.number} di ${(0,f.H)(e)} siap di-merge, tapi auto-rollback mati — merge manual ya.`:`🔐 PR #${a.number} in ${(0,f.H)(e)} is ready to merge, but auto-rollback is off — please merge it manually.`;let i=(0,k.R)(a.reason??"",b,200)||(0,h.t)(o,c,"stopFallback");return d?`⚠️ PR #${a.number} di ${(0,f.H)(e)} butuh dicek: ${(0,f.H)(i)}. PR-nya dibiarin terbuka.`:`⚠️ PR #${a.number} in ${(0,f.H)(e)} needs a look: ${(0,f.H)(i)}. The PR was left open.`}(a,b,c)],d,c.now??new Date),c.timeoutMs??8e3)}a.s(["h",0,w,"q",0,G,"y",0,H,"v",0,A,"i",0,E,"b",0,F,"a",0,u])},342634,416454,a=>{var b=a.i(556987),c=a.i(313235),d=a.i(462820),e=a.i(488345),f=a.i(188282),g=a.i(679662),h=a.i(84877),i=a.i(245710);let j=new Set(["nextjs","blitzjs"]),k={status:"unknown",version:null},l={status:"ok",version:null},m=/(?:Next\.js|\(now) (\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/,n=a=>!!a&&!j.has(a),o=(a,b)=>null===a.version&&!a.findings.length&&"vulnerable"!==a.status&&("not a Next.js site"===a.reason||n(b));function p(a,b){return"vulnerable"===a.status||a.findings.length?{status:"vulnerable",version:a.version}:"ok"===a.status||a.version?{status:"ok",version:a.version}:o(a,b)?l:k}let q=a=>`${(0,i.L)(a)} ${(0,i.U)(a)} ${(0,i.J)(a)}`,r=a=>"HighLatency"===a?"Slow":"Down",s=(a,b,c,d=!1)=>{let e;if(!c||b.getTime()<c.getTime())return`${r(a)} since ${q(b)}, not tied to a deploy${c?` (live since ${q(c)})`:""}: check the app.`;let f=(e=Math.max(1,Math.round((b.getTime()-c.getTime())/6e4)))<120?`${e} min`:e<2880?`${Math.round(e/60)} h`:`${Math.round(e/1440)} days`;return d?`${r(a)} since ${q(b)}, ${f} after the deploy went live, outside the rollback window: check the app or roll back by hand.`:`${r(a)} since ${q(b)}, started ${f} after the deploy went live: check the app.`},t=a=>a?`No rollback: the previous deployment runs Next.js ${a}, which has known advisories.`:"No rollback: the previous deployment's Next.js has known advisories.",u="Previous deployment's Next.js version is unknown: check it has no known advisories before approving.";a.s(["A",0,6048e5,"Y",0,["NextVulnerable","NextClean"],"B",0,u,"D",0,s,"Q",0,function(a){let b,c=a.currentLiveAt?.getTime(),d=a.previousLiveAt?.getTime(),e=a.check;if(!e)return n(a.framework)?l:k;if(o(e,a.framework))return l;if(void 0===c||void 0===d||d>=c)return k;let f=e.checkedAt.getTime();if(f>=d&&f<c)return p(e,a.framework);if(f<d||c-d<36e5)return k;let i=a.events.filter(a=>"NextVulnerable"===a.reason||"NextClean"===a.reason),j=i.filter(a=>a.at.getTime()<c).sort((a,b)=>b.at.getTime()-a.at.getTime())[0],q=i.filter(a=>a.at.getTime()>=c).sort((a,b)=>a.at.getTime()-b.at.getTime())[0];if(j){var r;let a;b={status:"NextVulnerable"===j.reason?"vulnerable":"ok",version:j.at.getTime()>=d?(r=j.message,(a=m.exec(r)?.[1]??null)&&(0,g.C)(a)?a:null):null}}else b=q?"NextClean"===q.reason?{status:"vulnerable",version:null}:k:{status:p(e,a.framework).status,version:null};if("ok"===b.status&&"ok"!==e.status&&e.findings.length){let a;if(!b.version)return k;if(a=b.version,e.findings.some(b=>!!b.fixed&&(0,g.C)(b.fixed)&&0>(0,h.f)(a,b.fixed)))return{status:"vulnerable",version:b.version}}return b},"g",0,function(a,b,c={}){let d=a.getTime(),e="MonitorDown"===c.ruleKey;if(e&&!c.liveAt)return a;let f=c.liveAt?c.liveAt.getTime()-9e5:0,g=c.gapMs??864e5;for(let a of[...b].sort((a,b)=>b.startedAt.getTime()-a.startedAt.getTime()))!(a.startedAt.getTime()>=d)&&(e?null===a.resolvedAt||a.resolvedAt.getTime()>=f:null===a.resolvedAt||a.resolvedAt.getTime()>=d-g)&&(d=a.startedAt.getTime());return new Date(d)},"e",0,t],416454);let v=200,w=d.X.auditPrefix,x=/^dpl_[A-Za-z0-9]{8,40}$/,y=/^ep-[a-z0-9-]{3,60}$/,z=/^[a-z0-9]{8,40}$/,A=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,B=(a,b=v)=>a.length>b?`${a.slice(0,b-1).trimEnd()}…`:a,C=a=>/[.!?…]$/.test(a)?a:`${a}.`;function D(a,c,d,f){return"app"===a&&d?(0,b.r)(f,d):("supabase_project"===a||"neon_project"===a||"neon_branch"===a||"firestore"===a)&&c?(0,b.X)(f,c):d&&(0,e.g)(d,f,120)||null}let E={recheck:a=>`Check ${a} again now`,neon_wake:a=>`Wake the Neon compute of ${a}`,supabase_keepalive:a=>`Send a keep-alive to ${a}`,supabase_restore:a=>`Restore Supabase project ${a}`,vercel_redeploy:a=>`Redeploy production ${a}`,vercel_rollback:a=>`Roll ${a} back to the previous deployment`,github_bump_pr:a=>`Open a PR updating vulnerable packages in ${a}`,domain_recheck:a=>`Re-check the certificate of ${a}`,daily_rerun:()=>"Rerun the daily job",monitor_update_url:a=>`Point the ${a} monitor at its new domain`},F=(a,b)=>B(E[a](b??"this resource")),G=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),H={status:"unknown",version:null};a.s(["e",0,"office-auto","v",0,w,"L",0,6e5,"j",0,v,"I",0,(a,b)=>"safe"===f.H[a].risk&&!0===b[a],"l",0,B,"z",0,function(a,b){let c=a.filter(a=>!G(a,b)),d=a=>[...new Set(a.filter(a=>!!a&&A.test(a)))],e=c.filter(a=>("MonitorDown"===a.ruleKey||"HighLatency"===a.ruleKey)&&"app"===a.resourceKind);return{monitorIds:d([...e,...c.filter(a=>"MonitorDomainMoved"===a.ruleKey&&"app"===a.resourceKind)].map(a=>a.subject)),monitorApps:d(e.map(a=>a.resourceId)),deployApps:d(c.filter(a=>("DeploymentFailed"===a.ruleKey||"MonitorDown"===a.ruleKey||"HighLatency"===a.ruleKey)&&"app"===a.resourceKind).map(a=>a.resourceId)),supabaseIds:d(c.filter(a=>("DatabasePaused"===a.ruleKey||"AutoPauseRisk"===a.ruleKey)&&"supabase_project"===a.resourceKind).map(a=>a.resourceId)),depApps:d(c.filter(a=>"VulnerableDependency"===a.ruleKey&&"app"===a.resourceKind).map(a=>a.resourceId)),frameworkApps:d(c.filter(a=>"FrameworkVulnerable"===a.ruleKey&&"app"===a.resourceKind).map(a=>a.resourceId))}},"b",0,a=>"string"==typeof a&&A.test(a),"M",0,F,"t",0,function(a,d,g,h){let i,j,k;if(G(a,h))return[];let l=(i=(0,b.o)(a,g),j=(0,e.g)(i.title,g,80),k=(0,e.g)(i.message,g,v),B([j&&C(j),k&&C(k)].filter(Boolean).join(" ")||`${a.ruleKey}.`));return(function(a,b,c){let d="app"===a.resourceKind&&a.resourceId?a.resourceId:null;switch(a.ruleKey){case"DeploymentFailed":{let a=d?b.deploys.get(d):void 0;if(!d||!a?.currentId||!x.test(a.currentId))return[];let c=[{action:"vercel_redeploy",resourceKind:"app",resourceId:d,targetRef:a.currentId}],e=b.previousNext?.get(d)??H;return a.previousId&&x.test(a.previousId)&&a.previousId!==a.currentId&&("vulnerable"===e.status?c[0].note=t(e.version):c.push({action:"vercel_rollback",resourceKind:"app",resourceId:d,targetRef:a.previousId,..."unknown"===e.status?{note:u}:{}})),c}case"DatabasePaused":case"AutoPauseRisk":{if("supabase_project"!==a.resourceKind||!a.resourceId)return[];let c=b.supabaseRefs.get(a.resourceId);if(!c||!z.test(c))return[];return[{action:"DatabasePaused"===a.ruleKey?"supabase_restore":"supabase_keepalive",resourceKind:"supabase_project",resourceId:a.resourceId,targetRef:c}]}case"VulnerableDependency":{let a=d?b.fixableRepos?.get(d):void 0;return d&&a&&A.test(a)?[{action:"github_bump_pr",resourceKind:"app",resourceId:d,targetRef:a}]:[]}case"FrameworkVulnerable":{let a=d?b.frameworkFixes?.get(d):void 0;return d&&a&&A.test(a.repoId)?[{action:"github_bump_pr",resourceKind:"app",resourceId:d,targetRef:a.repoId}]:[]}case"MonitorDomainMoved":return d&&A.test(a.subject)&&b.monitorMoves?.has(a.subject)?[{action:"monitor_update_url",resourceKind:"app",resourceId:d,targetRef:a.subject}]:[];case"MonitorDown":case"HighLatency":{let e=[];d&&A.test(a.subject)&&"http"===b.monitorKinds.get(a.subject)&&e.push({action:"recheck",resourceKind:"app",resourceId:d,targetRef:a.subject}),"MonitorDown"===a.ruleKey&&a.resourceId&&A.test(a.subject)&&b.dailyHeartbeatId===a.subject&&e.push({action:"daily_rerun",room:"observe",resourceKind:a.resourceKind,resourceId:a.resourceId,targetRef:a.subject});let f=d?b.neonSuspended.get(d):void 0;if(f&&y.test(f.endpointId)&&e.push({action:"neon_wake",room:"databases",resourceKind:f.resourceKind,resourceId:f.resourceId,targetRef:f.endpointId}),b.monitorMoves?.has(a.subject))return e;let g=d?b.deploys.get(d):void 0,h=b.problemSince?.get(a.id)??a.startedAt??null,i=g?.liveAt??null,j=h&&i?h.getTime()>=i.getTime():null,k=d&&b.previousNext?.get(d)||H,l=b.rollbackWindowMs??18e5,m=!!d&&!0===j&&function(a,b,c){if(!a?.currentId||!a.previousId||!a.liveAt||!x.test(a.previousId)||a.previousId===a.currentId)return!1;let d=c.getTime()-a.liveAt.getTime();return d>=0&&d<=b}(g,l,c);if(m&&"vulnerable"!==k.status)return e.push({action:"vercel_rollback",resourceKind:"app",resourceId:d,targetRef:g.previousId,..."unknown"===k.status?{note:u}:{}}),e;let n=m?t(k.version):void 0;if("MonitorDown"===a.ruleKey&&d&&g?.currentId&&x.test(g.currentId)&&"http"===b.monitorKinds.get(a.subject)&&!1!==j)return e.push({action:"vercel_redeploy",resourceKind:"app",resourceId:d,targetRef:g.currentId,...n?{note:n}:{}}),e;let o=!!i&&c.getTime()-i.getTime()>l,p=n??(h&&i&&g?.currentId?s(a.ruleKey,h,i,o):void 0),q=e.find(a=>"recheck"===a.action);return q&&p&&(q.note=p),e}case"CertExpiringSoon":return"domain"===a.resourceKind&&a.resourceId&&A.test(a.resourceId)?[{action:"domain_recheck",resourceKind:"domain",resourceId:a.resourceId,targetRef:a.resourceId}]:[];default:return[]}})(a,d,h).map(i=>{var j;let k,m,n,o,p=i.room??(0,c.p)(a),q="neon_wake"===i.action?D(i.resourceKind,i.resourceId,null,g):D(a.resourceKind,a.resourceId,a.resourceName,g),r="FrameworkVulnerable"===a.ruleKey&&"github_bump_pr"===i.action,s="monitor_update_url"===i.action?d.monitorMoves?.get(i.targetRef):void 0,t=r?(j=i.resourceId?d.frameworkFixes?.get(i.resourceId):void 0,k=q??"this app",B(j?`Next.js ${j.from} in ${k} has known vulnerabilities: the PR updates next (and eslint-config-next when listed) to ${j.to}.`:`Next.js in ${k} has known vulnerabilities with a fixed version.`)):"github_bump_pr"===i.action?(n=(m=(0,e.g)((0,b.o)(a,g).message,g,v)).includes(": ")?m.slice(m.indexOf(": ")+2):"",o=`Vulnerable packages in ${q??"this app"} have a fix`,B(n?`${o}: ${n}`:`${o}.`)):i.note?B(`${i.note} ${l}`):l,u="github_bump_pr"===i.action&&i.resourceId?d.productionMismatch?.get(i.resourceId):void 0;return{alertId:a.id,ruleKey:a.ruleKey,room:p,action:i.action,risk:f.H[i.action].risk,title:r?B(`Open a PR updating Next.js in ${q??"this app"}`):s?B(`Point the ${q??"app's"} monitor at ${s.to}`):F(i.action,q),reason:u?B(`${(0,e.g)(u,g,v)} ${t}`):t,resourceKind:i.resourceKind,resourceId:i.resourceId,resourceName:q,targetRef:i.targetRef,proposedBy:(0,c.y)(p),expiresAt:new Date(h.getTime()+f.V)}})},"x",0,function(a,b){let c=a.ok?a.message||"Done.":a.error||"It didn't run.";return B((0,e.g)(c,b,v)||(a.ok?"Done.":"It didn't run."))},"J",0,D,"E",0,function(a){return{id:a.id,room:a.room,action:a.action,actionLabel:f.H[a.action].label,risk:f.H[a.action].risk,title:a.title,reason:a.reason,resourceName:a.resourceName,proposedBy:a.proposedBy,status:a.status,auto:a.auto,result:a.result,createdAt:a.createdAt.toISOString(),decidedAt:a.decidedAt?a.decidedAt.toISOString():null,expiresAt:a.expiresAt.toISOString()}},"Z",0,function(a,b,c){let d=c??b?.find(a=>a.isDefault)?.id??null,e=(a??[]).find(a=>!d||a.branchId===d);return e&&!e.disabled&&"idle"===e.state&&"active"!==e.pendingState&&y.test(e.id)?e.id:null}],342634)},488345,a=>{var b=a.i(556987),c=a.i(425238),d=a.i(609007),e=a.i(434711);let f=/\b([a-z][a-z0-9+.-]{1,20}):\/\/[^\s"'<>`]*/gi,g=/\b(?:\d{1,3}\.){3}\d{1,3}\b/g,h=/\b(?:w[bp]_[A-Za-z0-9]{6,}|hb_[A-Za-z0-9[\]]{2,}|sk-[A-Za-z0-9_-]{6,}|gsk_[A-Za-z0-9]{6,}|AIza[0-9A-Za-z_-]{10,}|AQ\.[A-Za-z0-9_-]{10,})/g,i=/(?<![\p{L}\p{N}_.-])[a-z0-9-]+\.vercel\.app(?![\p{L}\p{N}_-])/giu,j=/@/g,k=new WeakMap;function l(a,b){return/^https?$/i.test(b)?"[link]":"[hidden]"}e._;let m="[\\p{L}\\p{N}_./-]",n=a=>a.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,p=new WeakMap;function q(a,e){return String(a??"").replace(/\r\n?/g,"\n").split("\n").map(a=>{var q,r;let s,t,u,v=(q=(0,c.F)(a,e),s=q.replace(f,l),s=(0,b.J)(s,e),s=(s=(0,d.h)(s)).replace(h,"[hidden]"),(t=function(a){if(k.has(a))return k.get(a);let b=[...a.host??[]].filter(a=>a.name.includes(".")).sort((a,b)=>b.name.length-a.name.length),c=b.length?{re:RegExp(`(?<![\\p{L}\\p{N}_-])((?:[a-z0-9-]+\\.)*?)(${b.map(a=>a.name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})(?![\\p{L}\\p{N}_-]|\\.[\\p{L}\\p{N}])`,"giu"),alias:new Map(b.map(a=>[a.name.toLowerCase(),a.alias]))}:null;return k.set(a,c),c}(e))&&(s=s.replace(t.re,(a,b,c)=>`${b}${t.alias.get(c.toLowerCase())??"site.example"}`)),s=s.replace(i,"preview.example").replace(g,"[ip]").replace(j," at "));return v=v.replace(o,a=>/\.example$/i.test(a)?a:"site.example"),(0,b.G)((r=v,(u=function(a){if(p.has(a))return p.get(a);let b=new Map(a.app.filter(a=>a.name.trim().length>=2).map(a=>[a.name.toLowerCase(),a.alias])),c=[...b.keys()].sort((a,b)=>b.length-a.length),d=c.length?{re:RegExp(`(?<!${m})(?:${c.map(n).join("|")})(?!${m})`,"giu"),alias:b}:null;return p.set(a,d),d}(e))?r.replace(u.re,a=>u.alias.get(a.toLowerCase())??a):r))}).join("\n")}let r=(a,b)=>a.length>b?`${a.slice(0,b-1).trimEnd()}…`:a;a.s(["g",0,(a,b,c)=>r(q(String(a??"").replace(/\s+/g," "),b).replace(/\s+/g," ").trim(),c),"R",0,(a,c,d)=>{let e;return r((e=String(a??"").replace(/\s+/g," "),(0,b.q)(q(e,c),c)).replace(/\s+/g," ").trim(),d)}],488345)}]})();
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=src_1maoe8g5gnv0u._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[390124,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(771378),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("
|
|
1
|
+
(()=>{"use strict";module.exports=[390124,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(771378),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("40e14a179cb595dfdd46585c733b4898cc7757fdc9",g.callServer,void 0,g.findSourceMapURL,"updateMonitorDomain");a.s(["DomainMoved",0,function({monitorId:a,from:g,to:i,canAct:j}){let[k,l]=(0,c.useTransition)();return(0,b.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-2 text-[13px] text-warn",children:[(0,b.jsxs)("span",{children:["Domain changed: ",(0,b.jsx)(e.MaskedText,{text:g})," → ",(0,b.jsx)(e.MaskedText,{text:i}),j?", update monitor?":""]}),j&&(0,b.jsx)(f.K,{size:"sm",disabled:k,onClick:()=>l(async()=>{try{let b=await h(a);b.ok?d.c.success(b.message??"Monitor updated."):d.c.error(b.error)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:k?"Updating…":"Update monitor"})]})}],390124)},585709,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(486747),e=a.i(462007),f=a.i(427110);a.s(["PlainTable",0,function({head:a,rows:g}){let[h,i]=(0,c.useState)(1),j=(0,f.$)(g,h);return j.page!==h&&i(j.page),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:e.o,children:[(0,b.jsx)(e.U,{head:a}),(0,b.jsx)("tbody",{children:j.rows.map(a=>(0,b.jsx)(c.Fragment,{children:a.row},a.key))})]})}),(0,b.jsx)(d.f,{page:j.page,pages:j.pages,text:(0,f.z)(j),onPage:i})]})}])},941881,a=>{let b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;a.s(["f",0,a=>"string"==typeof a&&b.test(a)])}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_1q-jgpnd3lbcu._.js.map
|
package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[749348,a=>{var b=a.i(187924),c=a.i(50944),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(507504),i=a.i(188406),j=a.i(814574),k=a.i(405050);let l=(0,k.createServerReference)("
|
|
1
|
+
(()=>{"use strict";module.exports=[749348,a=>{var b=a.i(187924),c=a.i(50944),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(507504),i=a.i(188406),j=a.i(814574),k=a.i(405050);let l=(0,k.createServerReference)("40cbdb3700300ebd5f9ffa8257a91f94bfbb312f3d",k.callServer,void 0,k.findSourceMapURL,"forgetAgentAction"),m=(0,k.createServerReference)("60cf9b4f018408f17e723e2e29d3181a6dce9355b5",k.callServer,void 0,k.findSourceMapURL,"renameAgentAction");function n({id:a,current:c,detected:f,onDone:h}){let[i,k]=(0,d.useState)(c===f?"":c),[l,o]=(0,d.useState)(""),[p,q]=(0,d.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),q(async()=>{o("");try{let b=await m(a,i);b.ok?(e.c.success(b.message??"Agent renamed."),h()):o(b.fieldErrors?.name??b.error)}catch{o("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsxs)(j.F,{className:"text-base",children:["Rename ",f]}),(0,b.jsx)(j.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:"Only changes what this page shows. Leave it empty to use the detected name again."})]}),(0,b.jsx)("div",{className:"px-[18px] pt-1.5",children:(0,b.jsx)(g.O,{id:"agent-name",label:"Name",error:l,children:(0,b.jsx)("input",{id:"agent-name",value:i,onChange:a=>k(a.target.value),placeholder:f,autoComplete:"off",spellCheck:!1,className:g.S})})}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(g.K,{onClick:h,disabled:p,children:"Cancel"}),(0,b.jsx)(g.K,{type:"submit",variant:"primary",disabled:p,children:p?"Saving…":"Save name"})]})]})}a.s(["AgentActions",0,function({id:a,name:e,clientName:g,keyRevoked:k}){let m=(0,c.useRouter)(),[o,p]=(0,d.useState)(!1),[q,r]=(0,d.useState)(!1);return(0,h.useHoldRefresh)(o),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.RowMenu,{label:`Actions for ${e}`,items:[...k?[]:[{label:"Rename",onSelect:()=>p(!0)}],{label:"Show logs",onSelect:()=>m.push(`/ai/logs?agent=${encodeURIComponent(a)}`)},"---",{label:"Forget",danger:!0,onSelect:()=>r(!0)}]}),(0,b.jsx)(j.N,{open:o,onOpenChange:p,children:(0,b.jsx)(j.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:o&&(0,b.jsx)(n,{id:a,current:e,detected:g,onDone:()=>p(!1)})})}),(0,b.jsx)(f.f,{open:q,onOpenChange:r,title:`Forget ${e}?`,body:"Removes it from this list. Its calls stay in the logs for 30 days. It appears again with its next request.",cta:"Forget agent",danger:!0,onConfirm:async()=>{let b=await l(a);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})]})}],749348)},107778,a=>{var b=a.i(50944),c=a.i(572131),d=a.i(507504);a.s(["AgentsRefresh",0,function(){let a=(0,b.useRouter)(),[e,f]=(0,c.useTransition)(),g=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{g.current=e},[e]),(0,c.useEffect)(()=>{let b=()=>{if(!g.current){var b;(b={visible:"visible"===document.visibilityState,online:!1!==navigator.onLine,held:(0,d.holdCount)()>0}).visible&&b.online&&!b.held&&f(()=>a.refresh())}},c=setInterval(b,15e3);return document.addEventListener("visibilitychange",b),()=>{clearInterval(c),document.removeEventListener("visibilitychange",b)}},[a]),null}],107778)}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28console%29_%28private%29_ai_agents_1fyhh1ldgm23z._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[352771,a=>{"use strict";var b=a.i(187924),c=a.i(282269),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(
|
|
1
|
+
module.exports=[352771,a=>{"use strict";var b=a.i(187924),c=a.i(282269),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(214906),j=a.i(700629);a.s(["AskForm",0,function({models:a=[],defaultLabel:k="your provider"}){let[l,m]=(0,d.useState)(""),[n,o]=(0,d.useState)(""),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useTransition)(),t=()=>{l.trim()&&!r&&(q(null),s(async()=>{try{let a=await (0,i.f)(l,n||null);a.ok?(m(""),e.c.success(a.message??"Sent.")):q(a.error)}catch{q("Watchbell didn't answer. Check that it's still running, then try again.")}}))};return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),t()},children:[(0,b.jsx)("label",{htmlFor:"ask-in",className:"mb-1.5 block font-medium",children:"Ask about your apps, alerts, deployments or databases"}),(0,b.jsx)("textarea",{id:"ask-in",className:(0,h.f)(f.S,"min-h-22 w-full"),placeholder:"For example: which apps need attention before the weekend?",value:l,maxLength:2e3,"aria-describedby":"ask-hint ask-count","aria-invalid":!!p||void 0,onChange:a=>m(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),t())}}),p&&(0,b.jsx)("p",{role:"alert",className:"mt-1.5 text-[13px] text-err",children:p}),(0,b.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3",children:[(0,b.jsx)("span",{id:"ask-hint",className:"min-w-[220px] flex-1 text-[12.5px] text-ink-faint",children:r?(0,b.jsx)(j.f,{}):g.I.hint}),(0,b.jsxs)("span",{id:"ask-count",className:"font-mono text-[12px] text-ink-faint","aria-live":"off",children:[l.length," / ",2e3]}),a.length>0&&(0,b.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,b.jsx)("span",{className:"sr-only",children:"Model"}),(0,b.jsxs)("select",{className:(0,h.f)(f.S,"max-w-[260px] py-1 font-mono text-[12.5px]"),value:n,onChange:a=>o(a.target.value),disabled:r,children:[(0,b.jsxs)("option",{value:"",children:["Default (",k,")"]}),a.map(a=>(0,b.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,b.jsxs)(f.K,{type:"submit",variant:"primary",disabled:r||!l.trim(),children:[(0,b.jsx)(c.f,{size:16,"aria-hidden":!0}),r?"Asking…":"Send"]})]})]})}])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28console%29_%28private%29_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[815287,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(449862).f)("outline","download","Download",[["path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M7 11l5 5l5 -5",key:"svg-1"}],["path",{d:"M12 4l0 12",key:"svg-2"}]]);var d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("
|
|
1
|
+
module.exports=[815287,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(449862).f)("outline","download","Download",[["path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M7 11l5 5l5 -5",key:"svg-1"}],["path",{d:"M12 4l0 12",key:"svg-2"}]]);var d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("402f7e84dbe96489a886528aca2bb89a18893a02f7",g.callServer,void 0,g.findSourceMapURL,"exportLogsCsv");a.s(["ExportButton",0,function({params:a}){let[g,i]=(0,d.useTransition)();return(0,b.jsxs)(f.K,{onClick:()=>i(async()=>{try{let b=await h(a);if(!b.ok||!b.data)return void e.c.error(b.ok?"Nothing to export.":b.error);let c=URL.createObjectURL(new Blob(["\uFEFF",b.data.csv],{type:"text/csv;charset=utf-8"})),d=document.createElement("a");d.href=c,d.download=`watchbell-ai-logs-${new Date().toISOString().slice(0,10)}.csv`,document.body.append(d),d.click(),d.remove(),URL.revokeObjectURL(c),e.c.success(b.message??"Exported.")}catch{e.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),disabled:g,children:[(0,b.jsx)(c,{size:16,"aria-hidden":!0}),g?"Exporting...":"Export CSV"]})}],815287)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28console%29_%28private%29_ai_logs_export-button_tsx_1k-crb88n1za_._.js.map
|
package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[127306,a=>{var b=a.i(187924),c=a.i(908161),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(368114),h=a.i(271288),i=a.i(700629),j=a.i(405050);let k=(0,j.createServerReference)("
|
|
1
|
+
(()=>{"use strict";module.exports=[127306,a=>{var b=a.i(187924),c=a.i(908161),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(368114),h=a.i(271288),i=a.i(700629),j=a.i(405050);let k=(0,j.createServerReference)("00ae740511d3ea572a50aae3e3f2c3e56f134d3456",j.callServer,void 0,j.findSourceMapURL,"runAdvisorNowAction"),l=(0,j.createServerReference)("60014eb0be6d667dea780229012307cc5dfdc24bbb",j.callServer,void 0,j.findSourceMapURL,"setAdvisorNotesAction");a.s(["AdvisorNotesControls",0,function({enabled:a,model:j,models:m,defaultLabel:n}){let[o,p]=(0,d.useState)(a),[q,r]=(0,d.useState)(j??""),[s,t]=(0,d.useTransition)(),[u,v]=(0,d.useTransition)(),w=(b,c)=>t(async()=>{try{let d=await l(b,c||null);d.ok?e.c.success(d.message??"Saved."):(p(a),r(j??""),e.c.error(d.error))}catch{e.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}});return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,b.jsx)(h.f,{checked:o,disabled:s,label:"Advisor notes",onChange:a=>{p(a),w(a,q)}}),(0,b.jsxs)("span",{className:"text-[13px]",children:["Advisor notes ",o?"on":"off"]}),(0,b.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,b.jsx)("span",{className:"sr-only",children:"Advisor model"}),(0,b.jsxs)("select",{className:(0,g.f)(f.S,"max-w-[260px] py-1 font-mono text-[12.5px]"),value:q,disabled:s,onChange:a=>{r(a.target.value),w(o,a.target.value)},children:[(0,b.jsxs)("option",{value:"",children:["Default (",n,")"]}),m.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]})]}),(0,b.jsxs)(f.K,{size:"sm",disabled:u,onClick:()=>v(async()=>{try{let a=await k();a.ok?e.c.success(a.message??"Done."):e.c.error(a.error)}catch{e.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:[(0,b.jsx)(c.f,{size:15,"aria-hidden":!0}),u?"Writing…":"Run now"]}),u&&(0,b.jsx)(i.f,{})]})}],127306)},785149,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(611619),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("6070d89a9eee797db9a686f7eb2faa8407e5760e41",g.callServer,void 0,g.findSourceMapURL,"addManualModel"),i=(0,g.createServerReference)("603c13cb8868e016b2f0ca78de89a8171176d14f1f",g.callServer,void 0,g.findSourceMapURL,"removeManualModel");a.s(["AddModelIdForm",0,function({providerId:a,providerName:e}){let g=(0,c.useId)(),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useTransition)();return(0,b.jsxs)("form",{className:"flex flex-col gap-1.5",onSubmit:b=>{b.preventDefault();let c=i.trim();c&&l(async()=>{try{let b=await h(a,c);b.ok?(d.c.success(b.message??"Added."),j("")):d.c.error(b.error)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:[(0,b.jsxs)("label",{htmlFor:g,className:"text-[13px] font-medium",children:["Add model id · ",e]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("input",{id:g,name:"modelId",value:i,onChange:a=>j(a.target.value),maxLength:120,autoComplete:"off",spellCheck:!1,placeholder:"model id","aria-describedby":`${g}-hint`,disabled:k,className:`${f.S} min-w-0 flex-1 font-mono text-[13px] sm:max-w-[320px]`}),(0,b.jsx)(f.K,{size:"sm",type:"submit",disabled:k||""===i.trim(),children:k?"Testing…":"Add"})]}),(0,b.jsx)("p",{id:`${g}-hint`,className:"m-0 text-[12.5px] text-ink-faint",children:"For ids the server doesn't list (for example a combo). Watchbell tests it once before saving."})]})},"RemoveManualModelButton",0,function({providerId:a,modelId:c,publicId:d}){return(0,b.jsx)(e.f,{trigger:(0,b.jsx)(f.K,{size:"sm",variant:"ghost",children:"Remove"}),title:`Remove ${d}?`,body:"Watchbell stops offering this model id. Calls for it answer 400 model_not_enabled. Nothing changes on your server.",cta:"Remove",danger:!0,onConfirm:async()=>{let b=await i(a,c);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})}],785149)},391737,a=>{var b=a.i(187924),c=a.i(402699),d=a.i(908161);let e=(0,a.i(449862).f)("outline","radar","Radar",[["path",{d:"M21 12h-8a1 1 0 1 0 -1 1v8a9 9 0 0 0 9 -9",key:"svg-0"}],["path",{d:"M16 9a5 5 0 1 0 -7 7",key:"svg-1"}],["path",{d:"M20.486 9a9 9 0 1 0 -11.482 11.495",key:"svg-2"}]]);var f=a.i(147909),g=a.i(572131),h=a.i(823292),i=a.i(619089),j=a.i(271288),k=a.i(405050);let l=(0,k.createServerReference)("408d46d9a6dc3cc6c2c9d5f9016a5bdff6fb6ea189",k.callServer,void 0,k.findSourceMapURL,"makeDefaultModel"),m=(0,k.createServerReference)("0018ac3073e13ed95ebf951261b846edc43f35a448",k.callServer,void 0,k.findSourceMapURL,"refreshAllModels"),n=(0,k.createServerReference)("4047e0adb7bb5bcedbc05695e31e4e67efb5d39cac",k.callServer,void 0,k.findSourceMapURL,"scanModelsAction"),o=(0,k.createServerReference)("009f7bb832df17aa010f4e98fb6e9e1f3b3cbf7d66",k.callServer,void 0,k.findSourceMapURL,"syncModelsNowAction"),p=(0,k.createServerReference)("60ddc9d002a0144871f7d06f863376d5e99320ad68",k.callServer,void 0,k.findSourceMapURL,"testModelAction"),q=(0,k.createServerReference)("700390d0d66cce3b0f0b27872b2eb70d12f4ebf725",k.callServer,void 0,k.findSourceMapURL,"toggleModel");a.s(["MakeDefaultButton",0,function({publicId:a}){let[c,d]=(0,g.useTransition)();return(0,b.jsx)(i.K,{size:"sm",variant:"ghost",disabled:c,onClick:()=>d(async()=>{try{let b=await l(a);b.ok?h.c.success(b.message??"Saved."):h.c.error(b.error)}catch{h.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:"Make default"})},"ModelSwitch",0,function({providerId:a,modelId:c,publicId:d,enabled:e,disabled:f}){let[i,k]=(0,g.useState)(e),[l,m]=(0,g.useTransition)(),[n,o]=(0,g.useState)(e);return n!==e&&(o(e),k(e)),(0,b.jsx)(j.f,{checked:i,disabled:f||l,label:`Model ${d}`,onChange:b=>{k(b),m(async()=>{try{let d=await q(a,c,b);d.ok?h.c.success(d.message??"Saved."):(k(!b),h.c.error(d.error))}catch{k(!b),h.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}})},"RefreshModelsButton",0,function(){let[a,c]=(0,g.useTransition)();return(0,b.jsxs)(i.K,{disabled:a,onClick:()=>c(async()=>{try{let a=await m();a.ok?h.c.success(a.message??"Refreshed."):h.c.error(a.error)}catch{h.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:[(0,b.jsx)(f.f,{size:16,"aria-hidden":!0}),a?"Refreshing...":"Refresh models"]})},"ScanAllButton",0,function({providerId:a,name:d}){let[f,j]=(0,g.useTransition)();return(0,b.jsxs)(i.K,{size:"sm",disabled:f,onClick:()=>j(async()=>{try{let b=await n(a);b.ok?h.c.success(b.message??"Scanned."):h.c.error(b.error)}catch{h.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:[f?(0,b.jsx)(c.f,{size:15,className:"animate-spin","aria-hidden":!0}):(0,b.jsx)(e,{size:15,"aria-hidden":!0}),f?`Scanning ${d}…`:`Scan all \xb7 ${d}`]})},"SyncNowButton",0,function(){let[a,d]=(0,g.useTransition)();return(0,b.jsxs)(i.K,{size:"sm",disabled:a,onClick:()=>d(async()=>{try{let a=await o();a.ok?h.c.success(a.message??"Synced."):h.c.error(a.error)}catch{h.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:[a?(0,b.jsx)(c.f,{size:15,className:"animate-spin","aria-hidden":!0}):(0,b.jsx)(f.f,{size:15,"aria-hidden":!0}),a?"Syncing…":"Sync now"]})},"TestModelButton",0,function({providerId:a,modelId:e,publicId:f}){let[j,k]=(0,g.useTransition)();return(0,b.jsx)(i.K,{size:"sm",variant:"ghost","aria-label":`Test ${f}`,title:`Test ${f}`,disabled:j,onClick:()=>k(async()=>{try{let b=await p(a,e);b.ok?h.c.success(b.message??"Works."):h.c.error(b.error)}catch{h.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:j?(0,b.jsx)(c.f,{size:15,className:"animate-spin","aria-hidden":!0}):(0,b.jsx)(d.f,{size:15,"aria-hidden":!0})})}],391737)}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28console%29_%28private%29_ai_models_0ayzqn062pnv5._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[274974,a=>{"use strict";var b=a.i(187924),c=a.i(402699),d=a.i(282269),e=a.i(572131),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(
|
|
1
|
+
module.exports=[274974,a=>{"use strict";var b=a.i(187924),c=a.i(402699),d=a.i(282269),e=a.i(572131),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(214906),j=a.i(405050);let k=(0,j.createServerReference)("40f440d1ae1233eb725411538dfcb052456fc14f32",j.callServer,void 0,j.findSourceMapURL,"questionStatus");var l=a.i(295914);a.i(147474);let m=g.T.hint,n=(a,b)=>{let c=a.replace(/\s+/g," ").trim();return c.length>b?`${c.slice(0,b-1)}…`:c},o=(0,j.createServerReference)("4013b260b90eaf2e31a3552dd76bc718572cb7b730",j.callServer,void 0,j.findSourceMapURL,"playgroundSend");a.s(["PlaygroundView",0,function({models:a,defaultModel:j}){let[p,q]=(0,e.useState)(a.some(a=>a.id===j)?j:a[0]?.id??""),[r,s]=(0,e.useState)("plain"),[t,u]=(0,e.useState)("0.4"),[v,w]=(0,e.useState)("1024"),[x,y]=(0,e.useState)("You are Watchbell's assistant. Answer from the console data you are given. Say when the data doesn't cover the question."),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(null),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(0),[J,K]=(0,e.useTransition)(),L=(0,e.useRef)(null),M="antigravity"===(a.find(a=>a.id===p)?.via??"provider"),N=J||null!==F,O=a.filter(a=>"provider"===a.via),P=a.filter(a=>"antigravity"===a.via);(0,e.useEffect)(()=>{L.current?.scrollTo({top:L.current.scrollHeight})},[B,J,F]),(0,e.useEffect)(()=>{if(!F)return;let a=!1,b=!1,c=b=>{!a&&(G(null),b&&E(b))},d=setInterval(()=>I(Date.now()),1e3),e=setInterval(async()=>{if(!b&&!a){if(Date.now()-F.startedAt>6e5)return c(g.T.giveUp);b=!0;try{let b=await k(F.id);if(a)return;if(!b.ok)return c(b.error);let d=b.data;if(d?.status==="answered"){let a=Math.max(1,Math.round((Date.now()-F.startedAt)/1e3));C(b=>[...b,{role:"assistant",content:d.answer?.trim()||g.T.emptyAnswer,md:!0,meta:g.T.answerMeta(d.model??F.model,a)}]),c(null)}else d?.status==="expired"&&c(g.T.expired)}catch{}finally{b=!1}}},3e3);return()=>{a=!0,clearInterval(d),clearInterval(e)}},[F]);let Q=()=>{let a=z.trim();if(!a||N||!p)return;let b=[...B,{role:"user",content:a}];if(C(b),A(""),E(null),M){let b;b=function(a,b,c=2e3){let d=b.trim(),e=a.slice(-4).map(a=>`Q: ${n(a.q,300)}
|
|
2
2
|
A: ${n(a.a,600)}`);for(;e.length>0;){let a=`Earlier in this chat:
|
|
3
3
|
${e.join("\n")}
|
|
4
4
|
|
package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[492768,a=>{var b=a.i(187924),c=a.i(335371),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(188406),i=a.i(405050);let j=(0,i.createServerReference)("40661896ffd489fce1c0e5b7b7b66adccb0dcb3e96",i.callServer,void 0,i.findSourceMapURL,"makeDefaultProvider"),k=(0,i.createServerReference)("402f8e63c2bacd0927432b019f7a300b20f2bdd54a",i.callServer,void 0,i.findSourceMapURL,"removeProvider"),l=(0,i.createServerReference)("60eedc1b79353a4c18e7b4583389df1b8aa0b0f1db",i.callServer,void 0,i.findSourceMapURL,"setProviderEnabled"),m=(0,i.createServerReference)("4030f0bda9064c3c87028f8a365e392cf7cd949165",i.callServer,void 0,i.findSourceMapURL,"testProvider");function n(a){a.ok?e.c.success(a.message??"Done."):e.c.error(a.error??"Something went wrong.")}a.s(["DefaultProviderSelect",0,function({options:a,current:c}){let[e,f]=(0,d.useTransition)(),[h,i]=(0,d.useState)(c??"");return 0===a.length?(0,b.jsx)("span",{className:"text-ink-faint",children:"No provider connected"}):(0,b.jsxs)("select",{"aria-label":"Default provider",className:`${g.S} w-auto`,value:h,disabled:e,onChange:a=>{let b=a.target.value;i(b),b&&f(async()=>n(await j(b)))},children:[!c&&(0,b.jsx)("option",{value:"",children:"None yet"}),a.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))]})},"EnabledSwitch",0,function({id:a,on:c,name:e}){let[f,g]=(0,d.useTransition)(),[h,i]=(0,d.useState)(c);return(0,b.jsxs)("label",{className:"relative inline-flex cursor-pointer items-center",title:`${e}: ${h?"on":"off"}`,children:[(0,b.jsx)("input",{type:"checkbox",role:"switch",className:"peer sr-only",checked:h,disabled:f,"aria-label":`${e} enabled`,onChange:b=>{let c=b.target.checked;i(c),g(async()=>{let b=await l(a,c);b.ok||i(!c),n(b)})}}),(0,b.jsx)("span",{className:"h-5 w-9 rounded-full bg-line-strong transition-colors peer-checked:bg-brand peer-focus-visible:ring-2 peer-focus-visible:ring-brand/40 peer-disabled:opacity-60"}),(0,b.jsx)("span",{className:"absolute left-0.5 top-0.5 size-4 rounded-full bg-surface transition-transform peer-checked:translate-x-4"})]})},"ProviderMenu",0,function({id:a,name:c,isDefault:e}){let[g,i]=(0,d.useState)(!1);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.RowMenu,{label:`Actions for ${c}`,items:[...e?[]:[{label:"Make default",onSelect:async()=>n(await j(a))},"---"],{label:"Remove",danger:!0,onSelect:()=>i(!0)}]}),(0,b.jsx)(f.f,{open:g,onOpenChange:i,title:`Remove ${c}?`,body:"Its encrypted key is deleted. Calls for its models answer 503 until you connect a provider again. Nothing changes at the provider.",cta:"Remove",danger:!0,onConfirm:async()=>{let b=await k(a);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})]})},"TestProviderButton",0,function({id:a}){let[e,f]=(0,d.useTransition)();return(0,b.jsxs)(g.K,{size:"sm",disabled:e,onClick:()=>f(async()=>n(await m(a))),children:[(0,b.jsx)(c.f,{size:15,"aria-hidden":!0}),e?"Testing…":"Test"]})}],492768)},36105,a=>{var b=a.i(187924),c=a.i(834295),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(814574),h=a.i(405050);let i=(0,h.createServerReference)("60c204c3e0eed17c0703b5924dbddded8ce6846a1f",h.callServer,void 0,h.findSourceMapURL,"connectProvider"),j=(0,h.createServerReference)("60178f95e56fc4ce26360ddffd664131c848e0bd3c",h.callServer,void 0,h.findSourceMapURL,"replaceProviderKey");var k=a.i(901615);let l={gemini:{name:"Google Gemini",baseUrl:()=>"https://generativelanguage.googleapis.com/v1beta/openai",secretFields:["apiKey"],modelsPath:"/models",listModels:"gemini-native",quotaFrom:"own",auth:"x-goog-api-key",streamUsage:!0,advanced:!1,keyLabel:"AI Studio API key",where:{url:"https://aistudio.google.com/apikey",text:"Create a key (it starts with AQ. or AIza). If Google says the project is restricted or denied, use a key from another Google project or account."}},cloudflare:{name:"Cloudflare Workers AI",baseUrl:a=>`https://api.cloudflare.com/client/v4/accounts/${a.accountId??""}/ai/v1`,secretFields:["accountId","apiKey"],modelsPath:"/models/search",listModels:"cloudflare-search",quotaFrom:"own",auth:"bearer",streamUsage:!0,advanced:!1,keyLabel:"API token",where:{url:"https://dash.cloudflare.com/profile/api-tokens",text:"Create a token with Workers AI: Read. The account ID is on the Workers AI page. Only Google's Gemma models are offered."}},custom:{name:"Custom OpenAI-compatible",baseUrl:a=>(a.baseUrl??"").replace(/\/+$/,""),secretFields:["baseUrl","apiKey"],modelsPath:"/models",listModels:"openai",quotaFrom:"headers",auth:"bearer",streamUsage:!0,advanced:!0,keyLabel:"API key",where:{url:null,text:"Any HTTPS server that speaks the OpenAI chat completions API and answers GET /models. Every model the server lists is offered; switch any off on Models."}}};k.X.localUrl;var m=a.i(449862);let n=(0,m.f)("outline","brand-google","BrandGoogle",[["path",{d:"M20.945 11a9 9 0 1 1 -3.284 -5.997l-2.655 2.392a5.5 5.5 0 1 0 2.119 6.605h-4.125v-3h7.945",key:"svg-0"}]]);var o=a.i(786581);let p=(0,m.f)("outline","plug","Plug",[["path",{d:"M9.785 6l8.215 8.215l-2.054 2.054a5.81 5.81 0 1 1 -8.215 -8.215l2.054 -2.054",key:"svg-0"}],["path",{d:"M4 20l3.5 -3.5",key:"svg-1"}],["path",{d:"M15 4l-3.5 3.5",key:"svg-2"}],["path",{d:"M20 9l-3.5 3.5",key:"svg-3"}]]),q={gemini:n,cloudflare:o.f,custom:p},r={gemini:"AQ.… or AIza…",cloudflare:"Paste the API token",custom:"Paste the API key"};a.s(["ProviderDialog",0,function({kind:a,replace:h,primary:m,label:n,selfhost:o=!1}){let p=l[a],s=q[a],[t,u]=(0,d.useState)(!1),[v,w]=(0,d.useTransition)(),[x,y]=(0,d.useState)(""),[z,A]=(0,d.useState)(""),[B,C]=(0,d.useState)(""),[D,E]=(0,d.useState)(h?.baseUrl??""),[F,G]=(0,d.useState)(!1),[H,I]=(0,d.useState)({}),[J,K]=(0,d.useState)(null),[L,M]=(0,d.useState)(null);function N(a){u(a),a||(M(null),y(""),A(""),C(""),E(h?.baseUrl??""),G(!1),I({}),K(null))}let O=h?`Replace key \xb7 ${h.name}`:`Connect ${p.name}`;return(0,b.jsxs)(g.N,{open:t,onOpenChange:N,children:[(0,b.jsx)(g.a,{className:(0,f.R)({size:"sm",variant:m?"primary":"secondary"}),children:n??(h?"Replace":"Connect")}),(0,b.jsxs)(g.d,{className:"max-w-[560px] gap-0 p-0 sm:max-w-[560px]",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,b.jsx)(s,{size:19})}),(0,b.jsxs)("div",{children:[(0,b.jsx)(g.F,{className:"text-base",children:O}),(0,b.jsxs)(g.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:[p.keyLabel,"cloudflare"===a?" and account ID":""]})]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[p.where.url&&(0,b.jsxs)(b.Fragment,{children:["Open ",(0,b.jsxs)("a",{href:p.where.url,target:"_blank",rel:"noopener noreferrer",children:[p.where.url.replace("https://","")," ",(0,b.jsx)(c.f,{size:12,className:"inline","aria-hidden":!0})]}),". "]}),p.where.text," Watchbell lists the models and makes one tiny generation call before saving."]}),"custom"===a&&!h&&(0,b.jsx)(f.O,{id:"p-name",label:"Name",help:"Used in model ids: name/model.",error:H.name,children:(0,b.jsx)("input",{id:"p-name",value:B,onChange:a=>C(a.target.value),placeholder:"my-llm",className:f.S,autoComplete:"off"})}),"custom"===a?(0,b.jsx)(f.O,{id:"p-base",label:"Base URL",help:o?k.X.baseUrlHelp.selfhost:k.X.baseUrlHelp.cloud,error:H.baseUrl,children:(0,b.jsx)("input",{id:"p-base",value:D,onChange:a=>E(a.target.value),placeholder:"https://example.com/v1",className:`${f.S} font-mono text-[12.5px]`,autoComplete:"off"})}):(0,b.jsxs)("div",{className:"mb-3.5 flex flex-col gap-[5px]",children:[(0,b.jsx)("span",{className:"text-[13px] font-medium",children:"Base URL"}),(0,b.jsx)("span",{className:"break-all font-mono text-[12.5px] text-ink-faint",children:"cloudflare"===a?p.baseUrl({apiKey:"",accountId:"{account_id}"}):p.baseUrl({apiKey:""})})]}),"cloudflare"===a&&(0,b.jsx)(f.O,{id:"p-acct",label:"Account ID",error:H.accountId,children:(0,b.jsx)("input",{id:"p-acct",value:z,onChange:a=>A(a.target.value),placeholder:"32 hex characters",className:`${f.S} font-mono`,autoComplete:"off",spellCheck:!1})}),(0,b.jsx)(f.O,{id:"p-key",label:p.keyLabel,help:"custom"===a&&o?k.X.keyHelp.selfhostCustom:k.X.keyHelp.cloud,error:H.apiKey,children:(0,b.jsx)("input",{id:"p-key",type:"password",value:x,onChange:a=>y(a.target.value),placeholder:r[a],className:`${f.S} font-mono`,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1,"data-gramm":"false"})}),!h&&(0,b.jsxs)("label",{className:"mb-3.5 flex items-center gap-2 text-[13px]",children:[(0,b.jsx)("input",{type:"checkbox",checked:F,onChange:a=>G(a.target.checked)})," Make this the default provider"]}),J&&(0,b.jsx)("div",{className:"mb-3.5 rounded-lg bg-err-soft px-3 py-2.5 text-[13px]",role:"alert",children:J}),L&&(0,b.jsxs)("div",{className:"mb-3.5",role:"status",children:[(0,b.jsxs)("p",{className:"m-0 mb-1.5 text-[13px] font-medium",children:["Found ",L.length," model",1===L.length?"":"s",":"]}),(0,b.jsx)("ul",{className:"m-0 flex max-h-40 list-none flex-wrap gap-1.5 overflow-y-auto p-0",children:L.map(a=>(0,b.jsx)("li",{className:"rounded border border-line bg-surface-2 px-1.5 font-mono text-[12px]",children:a},a))}),(0,b.jsx)("p",{className:"m-0 mt-1.5 text-[12.5px] text-ink-faint",children:"Use Scan all under Models to see which of them really answer."})]})]}),(0,b.jsx)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:L?(0,b.jsx)(f.K,{variant:"primary",onClick:()=>N(!1),children:"Done"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.K,{onClick:()=>N(!1),disabled:v,children:"Cancel"}),(0,b.jsx)(f.K,{variant:"primary",onClick:function(){w(async()=>{let b={apiKey:x,..."cloudflare"===a?{accountId:z}:{},..."custom"===a?{baseUrl:D,...h?{}:{name:B}}:{},makeDefault:F},c=h?await j(h.id,b):await i(a,b);if(I(c.ok?{}:c.fieldErrors??{}),K(c.ok||c.fieldErrors?null:c.error),c.ok){e.c.success(c.message??`${p.name} connected.`);let b=c.data?.models??[];"custom"===a&&b.length?M(b):N(!1)}})},disabled:v,children:v?"Testing…":h?"Test and replace":"Test and connect"})]})})]})]})}],36105)}]})();
|
|
1
|
+
(()=>{"use strict";module.exports=[492768,a=>{var b=a.i(187924),c=a.i(335371),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(188406),i=a.i(405050);let j=(0,i.createServerReference)("40194e988d8cacd45da47b6142de60e88129dd50a3",i.callServer,void 0,i.findSourceMapURL,"makeDefaultProvider"),k=(0,i.createServerReference)("40b942a2d4e5ebef3620dcb3984842c399d2e2396e",i.callServer,void 0,i.findSourceMapURL,"removeProvider"),l=(0,i.createServerReference)("605a553edcf8d3eca83d67db3202aa9bf912c35074",i.callServer,void 0,i.findSourceMapURL,"setProviderEnabled"),m=(0,i.createServerReference)("407a2e8fc7f99bbc4fdaad227a7cf1e5ce322d6dcc",i.callServer,void 0,i.findSourceMapURL,"testProvider");function n(a){a.ok?e.c.success(a.message??"Done."):e.c.error(a.error??"Something went wrong.")}a.s(["DefaultProviderSelect",0,function({options:a,current:c}){let[e,f]=(0,d.useTransition)(),[h,i]=(0,d.useState)(c??"");return 0===a.length?(0,b.jsx)("span",{className:"text-ink-faint",children:"No provider connected"}):(0,b.jsxs)("select",{"aria-label":"Default provider",className:`${g.S} w-auto`,value:h,disabled:e,onChange:a=>{let b=a.target.value;i(b),b&&f(async()=>n(await j(b)))},children:[!c&&(0,b.jsx)("option",{value:"",children:"None yet"}),a.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))]})},"EnabledSwitch",0,function({id:a,on:c,name:e}){let[f,g]=(0,d.useTransition)(),[h,i]=(0,d.useState)(c);return(0,b.jsxs)("label",{className:"relative inline-flex cursor-pointer items-center",title:`${e}: ${h?"on":"off"}`,children:[(0,b.jsx)("input",{type:"checkbox",role:"switch",className:"peer sr-only",checked:h,disabled:f,"aria-label":`${e} enabled`,onChange:b=>{let c=b.target.checked;i(c),g(async()=>{let b=await l(a,c);b.ok||i(!c),n(b)})}}),(0,b.jsx)("span",{className:"h-5 w-9 rounded-full bg-line-strong transition-colors peer-checked:bg-brand peer-focus-visible:ring-2 peer-focus-visible:ring-brand/40 peer-disabled:opacity-60"}),(0,b.jsx)("span",{className:"absolute left-0.5 top-0.5 size-4 rounded-full bg-surface transition-transform peer-checked:translate-x-4"})]})},"ProviderMenu",0,function({id:a,name:c,isDefault:e}){let[g,i]=(0,d.useState)(!1);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.RowMenu,{label:`Actions for ${c}`,items:[...e?[]:[{label:"Make default",onSelect:async()=>n(await j(a))},"---"],{label:"Remove",danger:!0,onSelect:()=>i(!0)}]}),(0,b.jsx)(f.f,{open:g,onOpenChange:i,title:`Remove ${c}?`,body:"Its encrypted key is deleted. Calls for its models answer 503 until you connect a provider again. Nothing changes at the provider.",cta:"Remove",danger:!0,onConfirm:async()=>{let b=await k(a);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})]})},"TestProviderButton",0,function({id:a}){let[e,f]=(0,d.useTransition)();return(0,b.jsxs)(g.K,{size:"sm",disabled:e,onClick:()=>f(async()=>n(await m(a))),children:[(0,b.jsx)(c.f,{size:15,"aria-hidden":!0}),e?"Testing…":"Test"]})}],492768)},36105,a=>{var b=a.i(187924),c=a.i(834295),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(814574),h=a.i(405050);let i=(0,h.createServerReference)("601c525ca0ba907d6b0763ba87513273eb696a4145",h.callServer,void 0,h.findSourceMapURL,"connectProvider"),j=(0,h.createServerReference)("6056d6d528aa6e24b4bbfd460da4bda69a1f26dbb8",h.callServer,void 0,h.findSourceMapURL,"replaceProviderKey");var k=a.i(901615);let l={gemini:{name:"Google Gemini",baseUrl:()=>"https://generativelanguage.googleapis.com/v1beta/openai",secretFields:["apiKey"],modelsPath:"/models",listModels:"gemini-native",quotaFrom:"own",auth:"x-goog-api-key",streamUsage:!0,advanced:!1,keyLabel:"AI Studio API key",where:{url:"https://aistudio.google.com/apikey",text:"Create a key (it starts with AQ. or AIza). If Google says the project is restricted or denied, use a key from another Google project or account."}},cloudflare:{name:"Cloudflare Workers AI",baseUrl:a=>`https://api.cloudflare.com/client/v4/accounts/${a.accountId??""}/ai/v1`,secretFields:["accountId","apiKey"],modelsPath:"/models/search",listModels:"cloudflare-search",quotaFrom:"own",auth:"bearer",streamUsage:!0,advanced:!1,keyLabel:"API token",where:{url:"https://dash.cloudflare.com/profile/api-tokens",text:"Create a token with Workers AI: Read. The account ID is on the Workers AI page. Only Google's Gemma models are offered."}},custom:{name:"Custom OpenAI-compatible",baseUrl:a=>(a.baseUrl??"").replace(/\/+$/,""),secretFields:["baseUrl","apiKey"],modelsPath:"/models",listModels:"openai",quotaFrom:"headers",auth:"bearer",streamUsage:!0,advanced:!0,keyLabel:"API key",where:{url:null,text:"Any HTTPS server that speaks the OpenAI chat completions API and answers GET /models. Every model the server lists is offered; switch any off on Models."}}};k.X.localUrl;var m=a.i(449862);let n=(0,m.f)("outline","brand-google","BrandGoogle",[["path",{d:"M20.945 11a9 9 0 1 1 -3.284 -5.997l-2.655 2.392a5.5 5.5 0 1 0 2.119 6.605h-4.125v-3h7.945",key:"svg-0"}]]);var o=a.i(786581);let p=(0,m.f)("outline","plug","Plug",[["path",{d:"M9.785 6l8.215 8.215l-2.054 2.054a5.81 5.81 0 1 1 -8.215 -8.215l2.054 -2.054",key:"svg-0"}],["path",{d:"M4 20l3.5 -3.5",key:"svg-1"}],["path",{d:"M15 4l-3.5 3.5",key:"svg-2"}],["path",{d:"M20 9l-3.5 3.5",key:"svg-3"}]]),q={gemini:n,cloudflare:o.f,custom:p},r={gemini:"AQ.… or AIza…",cloudflare:"Paste the API token",custom:"Paste the API key"};a.s(["ProviderDialog",0,function({kind:a,replace:h,primary:m,label:n,selfhost:o=!1}){let p=l[a],s=q[a],[t,u]=(0,d.useState)(!1),[v,w]=(0,d.useTransition)(),[x,y]=(0,d.useState)(""),[z,A]=(0,d.useState)(""),[B,C]=(0,d.useState)(""),[D,E]=(0,d.useState)(h?.baseUrl??""),[F,G]=(0,d.useState)(!1),[H,I]=(0,d.useState)({}),[J,K]=(0,d.useState)(null),[L,M]=(0,d.useState)(null);function N(a){u(a),a||(M(null),y(""),A(""),C(""),E(h?.baseUrl??""),G(!1),I({}),K(null))}let O=h?`Replace key \xb7 ${h.name}`:`Connect ${p.name}`;return(0,b.jsxs)(g.N,{open:t,onOpenChange:N,children:[(0,b.jsx)(g.a,{className:(0,f.R)({size:"sm",variant:m?"primary":"secondary"}),children:n??(h?"Replace":"Connect")}),(0,b.jsxs)(g.d,{className:"max-w-[560px] gap-0 p-0 sm:max-w-[560px]",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,b.jsx)(s,{size:19})}),(0,b.jsxs)("div",{children:[(0,b.jsx)(g.F,{className:"text-base",children:O}),(0,b.jsxs)(g.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:[p.keyLabel,"cloudflare"===a?" and account ID":""]})]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:[p.where.url&&(0,b.jsxs)(b.Fragment,{children:["Open ",(0,b.jsxs)("a",{href:p.where.url,target:"_blank",rel:"noopener noreferrer",children:[p.where.url.replace("https://","")," ",(0,b.jsx)(c.f,{size:12,className:"inline","aria-hidden":!0})]}),". "]}),p.where.text," Watchbell lists the models and makes one tiny generation call before saving."]}),"custom"===a&&!h&&(0,b.jsx)(f.O,{id:"p-name",label:"Name",help:"Used in model ids: name/model.",error:H.name,children:(0,b.jsx)("input",{id:"p-name",value:B,onChange:a=>C(a.target.value),placeholder:"my-llm",className:f.S,autoComplete:"off"})}),"custom"===a?(0,b.jsx)(f.O,{id:"p-base",label:"Base URL",help:o?k.X.baseUrlHelp.selfhost:k.X.baseUrlHelp.cloud,error:H.baseUrl,children:(0,b.jsx)("input",{id:"p-base",value:D,onChange:a=>E(a.target.value),placeholder:"https://example.com/v1",className:`${f.S} font-mono text-[12.5px]`,autoComplete:"off"})}):(0,b.jsxs)("div",{className:"mb-3.5 flex flex-col gap-[5px]",children:[(0,b.jsx)("span",{className:"text-[13px] font-medium",children:"Base URL"}),(0,b.jsx)("span",{className:"break-all font-mono text-[12.5px] text-ink-faint",children:"cloudflare"===a?p.baseUrl({apiKey:"",accountId:"{account_id}"}):p.baseUrl({apiKey:""})})]}),"cloudflare"===a&&(0,b.jsx)(f.O,{id:"p-acct",label:"Account ID",error:H.accountId,children:(0,b.jsx)("input",{id:"p-acct",value:z,onChange:a=>A(a.target.value),placeholder:"32 hex characters",className:`${f.S} font-mono`,autoComplete:"off",spellCheck:!1})}),(0,b.jsx)(f.O,{id:"p-key",label:p.keyLabel,help:"custom"===a&&o?k.X.keyHelp.selfhostCustom:k.X.keyHelp.cloud,error:H.apiKey,children:(0,b.jsx)("input",{id:"p-key",type:"password",value:x,onChange:a=>y(a.target.value),placeholder:r[a],className:`${f.S} font-mono`,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1,"data-gramm":"false"})}),!h&&(0,b.jsxs)("label",{className:"mb-3.5 flex items-center gap-2 text-[13px]",children:[(0,b.jsx)("input",{type:"checkbox",checked:F,onChange:a=>G(a.target.checked)})," Make this the default provider"]}),J&&(0,b.jsx)("div",{className:"mb-3.5 rounded-lg bg-err-soft px-3 py-2.5 text-[13px]",role:"alert",children:J}),L&&(0,b.jsxs)("div",{className:"mb-3.5",role:"status",children:[(0,b.jsxs)("p",{className:"m-0 mb-1.5 text-[13px] font-medium",children:["Found ",L.length," model",1===L.length?"":"s",":"]}),(0,b.jsx)("ul",{className:"m-0 flex max-h-40 list-none flex-wrap gap-1.5 overflow-y-auto p-0",children:L.map(a=>(0,b.jsx)("li",{className:"rounded border border-line bg-surface-2 px-1.5 font-mono text-[12px]",children:a},a))}),(0,b.jsx)("p",{className:"m-0 mt-1.5 text-[12.5px] text-ink-faint",children:"Use Scan all under Models to see which of them really answer."})]})]}),(0,b.jsx)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:L?(0,b.jsx)(f.K,{variant:"primary",onClick:()=>N(!1),children:"Done"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.K,{onClick:()=>N(!1),disabled:v,children:"Cancel"}),(0,b.jsx)(f.K,{variant:"primary",onClick:function(){w(async()=>{let b={apiKey:x,..."cloudflare"===a?{accountId:z}:{},..."custom"===a?{baseUrl:D,...h?{}:{name:B}}:{},makeDefault:F},c=h?await j(h.id,b):await i(a,b);if(I(c.ok?{}:c.fieldErrors??{}),K(c.ok||c.fieldErrors?null:c.error),c.ok){e.c.success(c.message??`${p.name} connected.`);let b=c.data?.models??[];"custom"===a&&b.length?M(b):N(!1)}})},disabled:v,children:v?"Testing…":h?"Test and replace":"Test and connect"})]})})]})]})}],36105)}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28console%29_%28private%29_ai_providers_1ru-30x6-uwu4._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[223538,a=>{"use strict";var b=a.i(187924),c=a.i(817748),d=a.i(851519),e=a.i(572131),f=a.i(823292),g=a.i(619089),h=a.i(507504),i=a.i(368114);let j=["requests","tokens"],k=["minute","day","week"];var l=a.i(405050);let m=(0,l.createServerReference)("
|
|
1
|
+
module.exports=[223538,a=>{"use strict";var b=a.i(187924),c=a.i(817748),d=a.i(851519),e=a.i(572131),f=a.i(823292),g=a.i(619089),h=a.i(507504),i=a.i(368114);let j=["requests","tokens"],k=["minute","day","week"];var l=a.i(405050);let m=(0,l.createServerReference)("60bc01a2fb01525242d48ddd1ba5c4c468881f7b42",l.callServer,void 0,l.findSourceMapURL,"saveLimits"),n={minute:"per minute",day:"per day",week:"per week"};function o({provider:a}){let[l,p]=(0,e.useState)(()=>a.limits.map(a=>({...a,limit:String(a.limit)}))),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useTransition)();(0,h.useHoldRefresh)(q);let w=(a,b)=>{p(c=>c.map((c,d)=>d===a?{...c,...b}:c)),r(!0),t(null)};return(0,b.jsxs)("div",{className:"mb-4 last:mb-0",children:[(0,b.jsx)("div",{className:"mb-1.5 text-[13px] font-medium",children:a.name}),0===l.length&&(0,b.jsx)("p",{className:"mb-2 text-[12.5px] text-ink-faint",children:"No limits entered. Add one to count calls against it."}),l.map((c,e)=>(0,b.jsxs)("div",{className:"mb-2 grid grid-cols-[minmax(0,1fr)_auto] gap-x-2 gap-y-1.5",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,b.jsx)("select",{className:(0,i.f)(g.S,"w-auto"),"aria-label":`${a.name} limit ${e+1} metric`,value:c.metric,onChange:a=>w(e,{metric:a.target.value}),children:j.map(a=>(0,b.jsx)("option",{value:a,children:a},a))}),(0,b.jsx)("select",{className:(0,i.f)(g.S,"w-auto"),"aria-label":`${a.name} limit ${e+1} window`,value:c.window,onChange:a=>w(e,{window:a.target.value}),children:k.map(a=>(0,b.jsx)("option",{value:a,children:n[a]},a))}),(0,b.jsx)("input",{className:(0,i.f)(g.S,"w-[120px] font-mono"),inputMode:"numeric","aria-label":`${a.name} limit ${e+1} value`,value:c.limit,onChange:a=>w(e,{limit:a.target.value})}),(0,b.jsx)("input",{className:(0,i.f)(g.S,"w-[150px] font-mono"),"aria-label":`${a.name} limit ${e+1} model (all = every model)`,placeholder:"model, or all",value:c.scope,onChange:a=>w(e,{scope:a.target.value})})]}),(0,b.jsx)("button",{type:"button","aria-label":`Remove limit ${e+1}`,className:"rounded-md p-1.5 text-ink-faint hover:bg-hover hover:text-ink",onClick:()=>{p(a=>a.filter((a,b)=>b!==e)),r(!0),t(null)},children:(0,b.jsx)(d.f,{size:15,"aria-hidden":!0})})]},e)),s&&(0,b.jsx)("p",{className:"mb-2 text-[12.5px] text-err",role:"alert",children:s}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(g.K,{size:"sm",disabled:l.length>=10,onClick:()=>{p(a=>[...a,{metric:"requests",scope:"all",limit:"",window:"day"}]),r(!0)},children:[(0,b.jsx)(c.f,{size:14,"aria-hidden":!0}),"Add limit"]}),(0,b.jsx)(g.K,{size:"sm",variant:"primary",disabled:!q||u,onClick:()=>v(async()=>{try{let b=await m(a.id,l);b.ok?(f.c.success(b.message??"Limits saved."),r(!1),t(null)):t(b.error)}catch{t("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:u?"Saving...":"Save"})]})]})}a.s(["LimitsForm",0,function({providers:a}){return(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsx)(o,{provider:a},a.id))})}],223538)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28console%29_%28private%29_ai_quota_limits-form_tsx_1vouaaf560z_x._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[348021,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(619089),f=a.i(368114);let g=[{key:"gemini5h",label:"Gemini · 5 h",family:"gemini",windowMs:18e6,window:"5 h"},{key:"geminiWeek",label:"Gemini · week",family:"gemini",windowMs:6048e5,window:"7 days"},{key:"claude5h",label:"Claude · 5 h",family:"claude",windowMs:18e6,window:"5 h"},{key:"claudeWeek",label:"Claude · week",family:"claude",windowMs:6048e5,window:"7 days"}];var h=a.i(405050);let i=(0,h.createServerReference)("
|
|
1
|
+
module.exports=[348021,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(619089),f=a.i(368114);let g=[{key:"gemini5h",label:"Gemini · 5 h",family:"gemini",windowMs:18e6,window:"5 h"},{key:"geminiWeek",label:"Gemini · week",family:"gemini",windowMs:6048e5,window:"7 days"},{key:"claude5h",label:"Claude · 5 h",family:"claude",windowMs:18e6,window:"5 h"},{key:"claudeWeek",label:"Claude · week",family:"claude",windowMs:6048e5,window:"7 days"}];var h=a.i(405050);let i=(0,h.createServerReference)("409dc25d63f8906c46c39754263033ebf3f90aea3c",h.callServer,void 0,h.findSourceMapURL,"saveAgLimits");a.s(["LimitsForm",0,function({values:a}){let[h,j]=(0,c.useTransition)(),[k,l]=(0,c.useState)(!1);return k?(0,b.jsxs)("form",{className:"flex flex-col gap-2",action:a=>j(async()=>{try{let b=await i(a);b.ok?(d.c.success(b.message??"Saved."),l(!1)):d.c.error(b.error)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:[g.map(c=>(0,b.jsxs)("label",{className:"flex items-center gap-2 text-[13px]",children:[(0,b.jsx)("span",{className:"w-28 shrink-0 text-ink-soft",children:c.label}),(0,b.jsx)("input",{name:c.key,inputMode:"numeric",autoComplete:"off",placeholder:"No limit",defaultValue:a[c.key]??"",className:(0,f.f)(e.S,"min-w-0 flex-1 py-1 text-right font-mono text-[12.5px]"),"aria-label":`${c.label} limit in tokens`})]},c.key)),(0,b.jsx)("p",{className:"m-0 text-[12px] text-ink-faint",children:"Tokens per window: new input + output + thinking. Cached input isn't counted."}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(e.K,{size:"sm",variant:"primary",type:"submit",disabled:h,children:h?"Saving…":"Save"}),(0,b.jsx)(e.K,{size:"sm",type:"button",disabled:h,onClick:()=>l(!1),children:"Cancel"})]})]}):(0,b.jsx)(e.K,{size:"sm",onClick:()=>l(!0),children:"Edit limits"})}],348021)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_app_%28console%29_%28private%29_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js.map
|