watchbell 1.0.0 → 1.1.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/LICENSE +1 -1
- package/README.md +123 -84
- package/bin/watchbell.mjs +593 -23
- 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 +11 -11
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/(private)/ai/models/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/ai/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +15 -15
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js +38 -37
- package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/[...slug]/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/[...slug]/page.js +38 -37
- package/server/.next/server/app/(console)/[...slug]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/[...slug]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +22 -22
- package/server/.next/server/app/(console)/alerts/page.js +38 -37
- 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 +23 -23
- package/server/.next/server/app/(console)/apps/[id]/page.js +38 -37
- 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 +11 -11
- package/server/.next/server/app/(console)/apps/page.js +38 -37
- package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +12 -12
- package/server/.next/server/app/(console)/backups/page.js +38 -37
- package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/catalog/page.js +38 -37
- package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +20 -20
- package/server/.next/server/app/(console)/connections/page.js +38 -37
- package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/d1/page.js +38 -37
- 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 +14 -14
- package/server/.next/server/app/(console)/deployments/page.js +38 -37
- package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/dns/page.js +38 -37
- package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +11 -11
- package/server/.next/server/app/(console)/domains/page.js +38 -37
- package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/events/page.js +38 -37
- 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 +15 -15
- package/server/.next/server/app/(console)/firebase/page.js +38 -37
- package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/logs/page.js +38 -37
- 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)/neon/page/server-reference-manifest.json +20 -20
- package/server/.next/server/app/(console)/neon/page.js +38 -37
- 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 +18 -18
- package/server/.next/server/app/(console)/overview/page.js +38 -37
- package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +10 -10
- package/server/.next/server/app/(console)/repos/[id]/page.js +38 -37
- package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/repos/page.js +38 -37
- package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +19 -19
- package/server/.next/server/app/(console)/settings/page.js +38 -37
- package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +16 -16
- package/server/.next/server/app/(console)/sql/page.js +38 -37
- package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/status/page.js +38 -37
- 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 +29 -29
- package/server/.next/server/app/(console)/supabase/page.js +38 -37
- package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/topology/page.js +38 -37
- package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/turso/page.js +38 -37
- package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +9 -9
- package/server/.next/server/app/(console)/upstash/page.js +38 -37
- 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 +22 -22
- package/server/.next/server/app/(console)/uptime/page.js +38 -37
- package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
- package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +14 -14
- package/server/.next/server/app/(console)/welcome/page.js +38 -37
- 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 +7 -7
- package/server/.next/server/app/api/collect/route.js +48 -46
- package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
- package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/daily/route.js +52 -50
- package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
- package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/status/route.js.nft.json +1 -1
- package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
- package/server/.next/server/app/api/telegram/webhook/route.js +48 -46
- package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/advice/route.js +19 -18
- package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/ai/questions/route.js +22 -21
- package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/mcp/route.js +20 -19
- package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/openapi.json/route.js +9 -8
- package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/status/apps/[app]/route.js +18 -17
- package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
- package/server/.next/server/app/api/v1/status/route.js +18 -17
- package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
- package/server/.next/server/app/api/watchdog/route.js +19 -18
- package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/google/callback/route.js +18 -17
- package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
- package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
- package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
- package/server/.next/server/app/invite/page.js +4 -3
- 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.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.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]/badge/[file]/route.js +9 -8
- package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
- package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
- package/server/.next/server/app/s/[slug]/page.js +8 -8
- 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.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]__09qqv-zsz9qhr._.js → [root-of-the-server]__00hb7hqa7qktx._.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__049ykc067tlsv._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__06f9e4kpi0mw8._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0_rfeg3389imx._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1n32c8l_j8jt4._.js → [root-of-the-server]__0abdjgj-muln9._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1jrqehmo6kq8x._.js → [root-of-the-server]__0alnp_0qkhzze._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0b2hzo6nez0we._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0c5w5y-db0jkb._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0znb_m_wygjdc._.js → [root-of-the-server]__0erdelc9_06nk._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0u66-8g4ql645._.js → [root-of-the-server]__0grtjjr51j6xe._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0-ok-3r9xtz0y._.js → [root-of-the-server]__0hpdrg-m0n6ty._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1z3-s7wc9-uc6._.js → [root-of-the-server]__0m7_0rarf_x86._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__0m7i0l3nkbdfm._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0mwiq4mkf8pc5._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0p3lnkpxf2-xz._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__08n3x1x850wqc._.js → [root-of-the-server]__0qmkpydmx3ljf._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0_6eq1806attx._.js → [root-of-the-server]__0r-zdzq6ki5gr._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__157yb_wl7w4ly._.js → [root-of-the-server]__0rak0ce6prxwp._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__081ywec7cjq3d._.js → [root-of-the-server]__0rxrv00e5e6fj._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__1_5q9zgl6p5_3._.js → [root-of-the-server]__0sivlmcvkc1uq._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__1x9tt_2yhozwe._.js → [root-of-the-server]__0vp-x4ifpr3p9._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0j0medewrv95l._.js → [root-of-the-server]__0z-41cwvkliev._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__06iz-tlpv7pqm._.js → [root-of-the-server]__0zd61mh-juh2i._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0mtlynfv-vklo._.js → [root-of-the-server]__1-q6_msattgcu._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__018ux7xja83l6._.js → [root-of-the-server]__1-rqermjb77se._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__110c-t3wz3nzm._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__11k46kam6tbia._.js +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0mhtnnebbepzx._.js → [root-of-the-server]__11kfkk5yxz4ge._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0ymon9r-17xe_._.js → [root-of-the-server]__13be7gbo81td4._.js} +1 -1
- package/server/.next/server/chunks/{[root-of-the-server]__0uyagcs61c0t_._.js → [root-of-the-server]__13scfgchwlitx._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__14zpwd7xntffk._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__15tt645jfx-br._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__08801yoxfe_os._.js → [root-of-the-server]__15zbj_ehkvv-n._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__16sp8qurcwsnf._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__19kwj690b37xf._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__1_1-jgxiadvs0._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1_2akhn6c9eqq._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1c2u-bg524-_w._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1c8_e0jqh_8na._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0qpf0qusq792k._.js → [root-of-the-server]__1flvcyht5uk7h._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1g-be2zoiz2tf._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1h96ebyza_vlh._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__02ihdvnmhshoe._.js → [root-of-the-server]__1hw6s0e7p2-6g._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1j26i51ankv-z._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__1ldcwvd42rpuz._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0q691wec2busx._.js → [root-of-the-server]__1objhlwwrjfjk._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__0wt74rsaz-308._.js → [root-of-the-server]__1qzor1nqajuyp._.js} +2 -2
- package/server/.next/server/chunks/{[root-of-the-server]__18mztbxkzaxjs._.js → [root-of-the-server]__1rf3slum5swk2._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1sj7uwyq1gpet._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__0tb-63ts77gqd._.js → [root-of-the-server]__1tefe1f5835t_._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1u1b3a58anm3f._.js +3 -0
- package/server/.next/server/chunks/{[root-of-the-server]__132wlw6sbwt1d._.js → [root-of-the-server]__1vi0u2vkv3tk0._.js} +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__1w_73psnce1dd._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__202r0hxhr5bnu._.js +3 -0
- package/server/.next/server/chunks/[root-of-the-server]__2196hxm-s7u6e._.js +3 -0
- package/server/.next/server/chunks/{_076dwl7r_5vcl._.js → _061mqfu1rkl7g._.js} +4 -4
- package/server/.next/server/chunks/{_0594j_bb0l80e._.js → _0c_vrxu6rin-k._.js} +2 -2
- package/server/.next/server/chunks/_0ejcrge5k4quv._.js +9 -9
- package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +3 -0
- package/server/.next/server/chunks/_0qawxzcf--lyq._.js +2 -2
- package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +3 -3
- package/server/.next/server/chunks/{_0m49djgc1t4wg._.js → _0qrn1v02iivm8._.js} +2 -2
- package/server/.next/server/chunks/_0vgojnnkcf1vu._.js +2 -2
- package/server/.next/server/chunks/_0vz0de4gz70-e._.js +1 -1
- package/server/.next/server/chunks/_103ai6ybnpq1k._.js +1 -1
- package/server/.next/server/chunks/_108e86rhye0o1._.js +1 -1
- package/server/.next/server/chunks/_1476vtrt9101m._.js +1 -1
- package/server/.next/server/chunks/{_0r4am1mgz4dg_._.js → _1b63jfweu0o04._.js} +2 -2
- package/server/.next/server/chunks/_1b7pc6ohhqxs3._.js +9 -9
- package/server/.next/server/chunks/_1g_prqb_u33e3._.js +3 -3
- package/server/.next/server/chunks/{_08tppw9ujlpke._.js → _1i57ar6zvd7yb._.js} +4 -4
- package/server/.next/server/chunks/{_11p2ejgai2a78._.js → _1k2cwp1_wt6qm._.js} +2 -2
- package/server/.next/server/chunks/_1kcmwgs544mo-._.js +1 -1
- package/server/.next/server/chunks/{_0n5m3o7at0adm._.js → _1kj2yv4-wk2kp._.js} +4 -4
- package/server/.next/server/chunks/_1lq5m27p-ilrw._.js +1 -1
- package/server/.next/server/chunks/_1mnwzh3z9y4th._.js +3 -0
- package/server/.next/server/chunks/_1nuf-l7izvfl_._.js +1 -1
- package/server/.next/server/chunks/{_1rw6_0nf-3sxs._.js → _1ozrnl_on86u7._.js} +4 -4
- package/server/.next/server/chunks/_1ptcxyn1tzm9r._.js +1 -1
- package/server/.next/server/chunks/_1xeuk6g48m3_1._.js +3 -0
- package/server/.next/server/chunks/{src_0uxqs7150nhx2._.js → src_014zbodp4djeb._.js} +2 -2
- package/server/.next/server/chunks/{src_0n42os1q41rha._.js → src_04pgj--n_d4w5._.js} +2 -2
- package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
- package/server/.next/server/chunks/{src_01wdnb4skk1wz._.js → src_08bzavsfds295._.js} +2 -2
- package/server/.next/server/chunks/src_0c-owt8q0lyj3._.js +3 -0
- package/server/.next/server/chunks/{src_1-r51arho90p7._.js → src_0k78ifotuztod._.js} +2 -2
- package/server/.next/server/chunks/src_0o4-snj7wkaav._.js +1 -1
- package/server/.next/server/chunks/{src_0d-zi077mzm6v._.js → src_0xqorb3-ef3ub._.js} +2 -2
- package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
- package/server/.next/server/chunks/src_1zo6so07lgcdj._.js +1 -1
- package/server/.next/server/chunks/src_db_rows_ts_15b286wn1kn1e._.js +1 -1
- package/server/.next/server/chunks/src_instrumentation-node_ts_1c--sr1k7_8k2._.js +3 -0
- package/server/.next/server/chunks/src_lib_0485hz-c7h7dr._.js +6 -6
- package/server/.next/server/chunks/src_lib_08u7n7-yunfvd._.js +2 -2
- package/server/.next/server/chunks/src_lib_0cbs2jlrw1qbh._.js +3 -0
- package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
- package/server/.next/server/chunks/src_lib_0qcyomi01xvf1._.js +6 -6
- package/server/.next/server/chunks/src_lib_0vl2-zp4wzw7n._.js +3 -0
- package/server/.next/server/chunks/src_lib_0x4n8swwa3zn7._.js +1 -1
- package/server/.next/server/chunks/src_lib_10vqn6q0h8kls._.js +2 -2
- package/server/.next/server/chunks/src_lib_13g9xjx8ci00z._.js +3 -0
- package/server/.next/server/chunks/src_lib_1ryt-36ohhnm6._.js +6 -6
- package/server/.next/server/chunks/src_lib_1tzoqx44yogsk._.js +2 -2
- package/server/.next/server/chunks/src_lib_1yd94hta5y1hx._.js +3 -0
- package/server/.next/server/chunks/src_lib_brand-env_ts_1wcm1bjuismq_._.js +3 -0
- package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +6 -6
- package/server/.next/server/chunks/src_lib_data_0ask_rbmgwlf3._.js +1 -1
- package/server/.next/server/chunks/src_lib_data_0e155tkqeoojm._.js +1 -1
- package/server/.next/server/chunks/src_lib_data_backup-db_ts_19rtzbv84xz_h._.js +2 -2
- package/server/.next/server/chunks/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
- package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
- package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +9 -9
- package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +13 -13
- package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +9 -9
- package/server/.next/server/chunks/src_lib_time_ts_1__07rt8x18k-._.js +3 -0
- package/server/.next/server/chunks/src_lib_time_ts_1a27wp71yhgti._.js +3 -0
- package/server/.next/server/chunks/src_lib_time_ts_1qlwgp7nprvbi._.js +3 -0
- package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
- package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +1 -1
- package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +1 -1
- package/server/.next/server/chunks/ssr/{[externals]__1u-jgivpw0_oh._.js → [externals]__0vbbz7arebnub._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02cq5r26w4itc._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__02qyxz9eh8_eh._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__04a21b9fkrqs3._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ijk9z1ot_xi4._.js → [root-of-the-server]__07n1hb3mk44lt._.js} +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__09-0oydof-7uw._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ct71emqfru3b._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1fdzriy6yyu5d._.js → [root-of-the-server]__0hbk3gqja86zp._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0ksvf4x4zcbpb._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0n7cj-oti5wct._.js +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0op0kqh43wd-a._.js +3 -0
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1tkmutq84zkeh._.js → [root-of-the-server]__0ryl_hnreck66._.js} +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0wf8q7-o-4n8y._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__10bkg3o65q6r4._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ryb947ux5cq7._.js → [root-of-the-server]__11y6b96ofb-c5._.js} +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__13oi70jo-u731._.js +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__0aahjz4fnt4c_._.js → [root-of-the-server]__13rgl1h4g39l-._.js} +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__1csz822qejxk-._.js → [root-of-the-server]__168ahi_n-kf90._.js} +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__17kocbnwlcw6d._.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__11-ssp_43878t._.js → [root-of-the-server]__18b1wk6-2gq4x._.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]__0lks-6wz-rmk5._.js → [root-of-the-server]__1drr27jyyhw7p._.js} +2 -2
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1e-xqsuqsd4ub._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1gw6334w8y2my._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1i69oli51is1u._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1lx2k37wgre3d._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1n1pq5j5p4_qn._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1qltiqn0htqnx._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1w1472ukyh58r._.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1xa91qls2i3j4._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__204_t7bzma353._.js +3 -0
- package/server/.next/server/chunks/ssr/[root-of-the-server]__20ht054m5-_d6._.js +1 -1
- package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +2 -2
- package/server/.next/server/chunks/ssr/_026w_ig6vy9bt._.js +1 -1
- package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +2 -2
- package/server/.next/server/chunks/ssr/{_14bz_443syxhi._.js → _06sp8cllu_ljh._.js} +2 -2
- package/server/.next/server/chunks/ssr/{_18t7ov64ycb-w._.js → _08u2qnetu4ghm._.js} +2 -2
- package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_tr9fol2yq33._.js +1 -1
- package/server/.next/server/chunks/ssr/_0_ul4mlc_pj5i._.js +2 -2
- package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
- package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
- package/server/.next/server/chunks/ssr/_0cukja7zcxh7e._.js +1 -1
- package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
- package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
- package/server/.next/server/chunks/ssr/_0fnl7z-saj7nc._.js +1 -1
- package/server/.next/server/chunks/ssr/_0hykblvnwc2ar._.js +1 -1
- package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +2 -2
- package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +2 -2
- package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +2 -2
- package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +2 -2
- package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
- package/server/.next/server/chunks/ssr/_0qnv1uc1_yv28._.js +2 -2
- package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +1 -1
- package/server/.next/server/chunks/ssr/_0tcmsw8hszixv._.js +1 -1
- package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +2 -2
- package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
- package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
- package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +2 -2
- package/server/.next/server/chunks/ssr/_11o43qq2eyx_r._.js +3 -0
- package/server/.next/server/chunks/ssr/{_06_f735j-1i20._.js → _12348a3ug1-wo._.js} +2 -2
- package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +2 -2
- package/server/.next/server/chunks/ssr/_1476vtrt9101m._.js +1 -1
- package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +2 -2
- package/server/.next/server/chunks/ssr/_16t9k9e5cjvas._.js +1 -1
- package/server/.next/server/chunks/ssr/_18lgd6o04ugow._.js +2 -2
- package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
- package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
- package/server/.next/server/chunks/ssr/{_08y82qdosn7ga._.js → _1_ojvke28lw3y._.js} +2 -2
- package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +2 -2
- package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +2 -2
- package/server/.next/server/chunks/ssr/_1c28jitsyufnt._.js +1 -1
- package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
- package/server/.next/server/chunks/ssr/_1dx207la592b7._.js +2 -2
- package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +2 -2
- package/server/.next/server/chunks/ssr/{_0o0-2ela2_qqd._.js → _1exwj9ou5yh71._.js} +2 -2
- package/server/.next/server/chunks/ssr/_1flla16o7o9ba._.js +1 -1
- package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
- package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +2 -2
- package/server/.next/server/chunks/ssr/_1ibagew7zj8y6._.js +3 -0
- package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
- package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
- package/server/.next/server/chunks/ssr/_1nir32qtr99-r._.js +1 -1
- package/server/.next/server/chunks/ssr/_1qt1czw3w8dww._.js +3 -0
- package/server/.next/server/chunks/ssr/_1sq12-1_02tzt._.js +2 -2
- package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +2 -2
- package/server/.next/server/chunks/ssr/_1ykxf4mi60jog._.js +2 -2
- package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
- package/server/.next/server/chunks/ssr/_20ln-4gu85-yt._.js +3 -0
- package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +2 -2
- package/server/.next/server/chunks/ssr/{_0i6y4bkm-0cm3._.js → _216rrmkts392q._.js} +2 -2
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1uaicj0j8stji.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_03amng1-xhfd1.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_215m-kkv06r4z.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
- package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
- package/server/.next/server/chunks/ssr/src_00ze92e3aolj8._.js +1 -1
- package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
- package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0f_ip1ke7i9r7._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0iefnjvaszvw_._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0qu78tivj78-x._.js +3 -0
- package/server/.next/server/chunks/ssr/src_0t6-d5hmzrbp1._.js +1 -1
- package/server/.next/server/chunks/ssr/src_0xh3xicmff6ws._.js +1 -1
- package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_1eermasnm2cgy._.js → src_11_hakxhnybdd._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.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_06n-9cjmbb-vu._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_connect_connect-view_tsx_04abz05n7hdsd._.js +15 -15
- 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_models_0hla-5y3iresx._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_0jamu-nm6x-dh._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_1kor9sy67qpiw._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_1v003vrkwk19w._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_app_(console)_1ppp9j5e2rtqf._.js → src_app_(console)_1olpa0osy74mq._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_088bs149wsgca._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_backups_page_tsx_0o082iagq_14b._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_connections_1qigx20w8bk53._.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)_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)_logs_log-viewer_tsx_0v3e4cflfk14w._.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_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_148phfjye0539._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
- package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
- package/server/.next/server/chunks/ssr/{src_app_signin_124xn9wb2fasu._.js → src_app_signin_1y1xla7bcc5a1._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.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_lib_005l0kcpyu43o._.js +3 -3
- package/server/.next/server/chunks/ssr/src_lib_05ai1oj91p9w2._.js +2 -2
- package/server/.next/server/chunks/ssr/{src_lib_1l8ej-zoyyegd._.js → src_lib_0vl2-zp4wzw7n._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_lib_0x4n8swwa3zn7._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_1nkahiclbn55q._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +1 -1
- package/server/.next/server/chunks/ssr/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
- package/server/.next/server/chunks/ssr/{src_lib_demo_20hj85e_64pp1._.js → src_lib_demo_20zjotuzm1lm8._.js} +2 -2
- package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
- package/server/.next/server/chunks/ssr/src_lib_time_ts_1qlwgp7nprvbi._.js +3 -0
- package/server/.next/server/chunks/ssr/src_lib_time_ts_1ualgyi3irm1z._.js +3 -0
- package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_usage-analytics_ts_1bxba3xarzol0._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_ai_views-db_ts_1jbnr41mskha2._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +4 -4
- package/server/.next/server/chunks/ssr/src_private_explorer_explorer_tsx_04m_tdottspjs._.js +1 -1
- package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
- package/server/.next/server/middleware-build-manifest.js +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 +133 -133
- package/server/.next/static/chunks/0-7by9f00qb4d.js +1 -0
- package/server/.next/static/chunks/{2k9ytb8jmg14_.js → 010bc8dzhxd_0.js} +1 -1
- package/server/.next/static/chunks/01oee9tptcjdb.js +1 -0
- package/server/.next/static/chunks/02uvde7i-78p5.js +1 -0
- package/server/.next/static/chunks/{2rdmebof0d_c4.js → 03fjh6klyhqv4.js} +1 -1
- package/server/.next/static/chunks/{1o_q7_4ulcq9x.js → 06lmwdlx-fkr8.js} +1 -1
- package/server/.next/static/chunks/{1ieazx9t3vl5p.js → 08w0t5q93_9mu.js} +1 -1
- package/server/.next/static/chunks/{1mlvn70-zqjvi.js → 0anet8wttkax1.js} +1 -1
- package/server/.next/static/chunks/0ao7kjrp6bp3l.js +1 -0
- package/server/.next/static/chunks/0b0rwd99q942r.js +1 -0
- package/server/.next/static/chunks/{1ts_fd_r1kcrv.js → 0dhgqjjm0zj6_.js} +1 -1
- package/server/.next/static/chunks/{2jlv5ekbb0wu2.js → 0dnjs3de2e_d1.js} +1 -1
- package/server/.next/static/chunks/{29p15vj15jcsb.js → 0ilml-p3iktnr.js} +1 -1
- package/server/.next/static/chunks/{43_va15lk2zc1.js → 0j_5norjm-kef.js} +1 -1
- package/server/.next/static/chunks/0nx0h-723nd_u.js +7 -0
- package/server/.next/static/chunks/0unx038_2rfsp.js +1 -0
- package/server/.next/static/chunks/0y_0w1ek5fakj.js +1 -0
- package/server/.next/static/chunks/1483hxa9hair1.js +1 -0
- package/server/.next/static/chunks/{1gmof0n5nswkk.js → 18gwem_5y9wnt.js} +1 -1
- package/server/.next/static/chunks/1aoqsoecu-fy_.js +1 -0
- package/server/.next/static/chunks/1endj3d7bewa1.js +1 -0
- package/server/.next/static/chunks/1j18pg23fzwv_.js +1 -0
- package/server/.next/static/chunks/{0wlc502815llk.js → 1k01h6men2hvb.js} +1 -1
- package/server/.next/static/chunks/{158-i6phe17yl.js → 1mdaf7mwcfafr.js} +1 -1
- package/server/.next/static/chunks/{0li9-xjc40g51.js → 1o4mdgq5lu1g_.js} +1 -1
- package/server/.next/static/chunks/{3dokgd9nungcr.js → 1t2iu6ufyxecz.js} +1 -1
- package/server/.next/static/chunks/{0wtboeftyamyk.js → 1vi8tyc1ou2o3.js} +1 -1
- package/server/.next/static/chunks/1xy80z39ducub.js +1 -0
- package/server/.next/static/chunks/1yb4_s_96v9tf.js +1 -0
- package/server/.next/static/chunks/{2v14aqfx8wv9o.js → 2-8ra6gmaw_pb.js} +1 -1
- package/server/.next/static/chunks/{1-1hfgat2l_o9.js → 2cmw27buw9oce.js} +1 -1
- package/server/.next/static/chunks/{3f5sxz8awpdog.js → 2lv5qmgi8nm4h.js} +1 -1
- package/server/.next/static/chunks/2mj8z5a9dz7bh.js +1 -0
- package/server/.next/static/chunks/{1gb8jvw-g7fr7.js → 2n-h6_0i3mpxo.js} +1 -1
- package/server/.next/static/chunks/{2cjfogw85k3h-.js → 2pbnh717ldzfl.js} +1 -1
- package/server/.next/static/chunks/2qltilq3pn4ia.js +1 -0
- package/server/.next/static/chunks/{30fczssqw6xys.js → 2ufr23d_eyosj.js} +1 -1
- package/server/.next/static/chunks/2wqgz94tksucm.js +1 -0
- package/server/.next/static/chunks/{3tqh7fwtd_k_l.js → 2z6a725ntvlr6.js} +2 -2
- package/server/.next/static/chunks/{2fo6iuxb0ec7f.js → 2zdjxqgm-44u1.js} +1 -1
- package/server/.next/static/chunks/{026asl66kuq3f.js → 340ecjh1jzqjd.js} +15 -15
- package/server/.next/static/chunks/{2z1xy8l4s3usi.js → 3alfhqlczff2s.js} +1 -1
- package/server/.next/static/chunks/{36ureqoyz5e06.js → 3col9buetdxvh.js} +2 -2
- package/server/.next/static/chunks/{1zi37go-xtasg.js → 3o45i7xbzm0w-.js} +1 -1
- package/server/.next/static/chunks/{0cannaigw8lhi.js → 3o7se0ypyiqmz.js} +1 -1
- package/server/.next/static/chunks/{1c4fx4kipvnqz.js → 3oe302ug_esoe.js} +1 -1
- package/server/.next/static/chunks/3s7hj7g12rmuh.js +1 -0
- package/server/.next/static/chunks/{2fj4o7-stsvht.js → 3uujo4bht1tqo.js} +1 -1
- package/server/.next/static/chunks/3w445wy3mpp2f.js +1 -0
- package/server/.next/static/chunks/{2kmerzslng988.js → 3ypdfkwyovory.js} +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__0grnl7ncqcjft._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0m8w2-7618scn._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0p_b0m2cstlrl._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__0zxjft8y2r575._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__114vjjaqb2wyv._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__12uyws-qe6wxs._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__139pgc0wpc7kg._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1bwgi7nn5-hc3._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1k8s02gwythps._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1lf_lo1wqcbcg._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1niiijc82bgoj._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1on_3p53yn6fs._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1q90luznbe9-l._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1r15vmrh2r06l._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1woerg3tb4ls3._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__1zaomh_4901_f._.js +0 -3
- package/server/.next/server/chunks/[root-of-the-server]__20lwsd6a4wnpe._.js +0 -3
- package/server/.next/server/chunks/_03bua_9n4apok._.js +0 -3
- package/server/.next/server/chunks/_08y82qdosn7ga._.js +0 -3
- package/server/.next/server/chunks/_1bcsmpznxhk9h._.js +0 -3
- package/server/.next/server/chunks/_1he3nioua8ee5._.js +0 -3
- package/server/.next/server/chunks/_1lpcbqj4uzrsh._.js +0 -3
- package/server/.next/server/chunks/src_0l-no1yc1_izn._.js +0 -3
- package/server/.next/server/chunks/src_156ewlek-4a4z._.js +0 -3
- package/server/.next/server/chunks/src_lib_0-ylqsh7whlj2._.js +0 -3
- package/server/.next/server/chunks/src_lib_0f0p6-l5vvduu._.js +0 -3
- package/server/.next/server/chunks/src_lib_15a3m-j_urkkp._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__06s-dfcfuperv._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__07or1m2vwon1m._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0d9lwldljqtvx._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__0uklr553mp86_._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1cykncw1_xcno._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1ih2a_fbqu7ko._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1j7_a902k_8es._.js +0 -3
- package/server/.next/server/chunks/ssr/[root-of-the-server]__1ofzjllv-b0o0._.js +0 -3
- package/server/.next/server/chunks/ssr/_040ixxsgfs0vi._.js +0 -3
- package/server/.next/server/chunks/ssr/_0ux6eo_w1x155._.js +0 -3
- package/server/.next/server/chunks/ssr/_12o9qqjoik4q4._.js +0 -3
- package/server/.next/server/chunks/ssr/_1k2q3yt1h6cfs._.js +0 -3
- package/server/.next/server/chunks/ssr/_1zhtvg8t3jtxe._.js +0 -3
- package/server/.next/server/chunks/ssr/_200p6me5_kp2j._.js +0 -3
- package/server/.next/server/chunks/ssr/src_00s82lfm2ga7-._.js +0 -3
- package/server/.next/server/chunks/ssr/src_13hsrg6rdvh-d._.js +0 -3
- package/server/.next/server/chunks/ssr/src_1xgsz_do2xpr2._.js +0 -3
- package/server/.next/server/chunks/ssr/src_components_shell_shell_tsx_1cpq-hbch_dvj._.js +0 -3
- package/server/.next/server/chunks/ssr/src_lib_0y40wht-o-oc2._.js +0 -3
- package/server/.next/static/chunks/03qto0oyf2r1n.js +0 -1
- package/server/.next/static/chunks/0c7pskzfstcdh.js +0 -1
- package/server/.next/static/chunks/0n_l4a3za5-q8.js +0 -1
- package/server/.next/static/chunks/0t96fqp1vsmrp.js +0 -1
- package/server/.next/static/chunks/1sm8wxvlpowwg.js +0 -1
- package/server/.next/static/chunks/1teh52nh5dujq.js +0 -1
- package/server/.next/static/chunks/1v4hl1z0y1npd.js +0 -1
- package/server/.next/static/chunks/1vh2psoqw3ddc.js +0 -1
- package/server/.next/static/chunks/1xau8pf40_upi.js +0 -7
- package/server/.next/static/chunks/1z2rcngn3-7i5.js +0 -1
- package/server/.next/static/chunks/210qrsqvmgaet.js +0 -1
- package/server/.next/static/chunks/2llric-1orr3y.js +0 -1
- package/server/.next/static/chunks/2wb9a1xth0yhf.js +0 -1
- package/server/.next/static/chunks/34gs6c2dsgtqy.js +0 -1
- package/server/.next/static/chunks/3ag6t3ta58rih.js +0 -1
- package/server/.next/static/chunks/3gkta99h3_5i2.js +0 -1
- /package/server/.next/static/{xCga6YpZus71dK3aq8Q4H → n3Kt7dFNHr9KDw7DgGz0m}/_buildManifest.js +0 -0
- /package/server/.next/static/{xCga6YpZus71dK3aq8Q4H → n3Kt7dFNHr9KDw7DgGz0m}/_clientMiddlewareManifest.js +0 -0
- /package/server/.next/static/{xCga6YpZus71dK3aq8Q4H → n3Kt7dFNHr9KDw7DgGz0m}/_ssgManifest.js +0 -0
package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[330863,243446,964806,256961,a=>{"use strict";var b=a.i(93321),c=a.i(351674),d=a.i(548734),e=a.i(263251),f=a.i(837137),g=a.i(363652),h=a.i(501634);a.i(455317),a.i(875016),a.i(840784),a.i(72019),a.i(264906),a.i(
|
|
1
|
+
module.exports=[330863,243446,964806,256961,a=>{"use strict";var b=a.i(93321),c=a.i(351674),d=a.i(548734),e=a.i(263251),f=a.i(837137),g=a.i(363652),h=a.i(501634);a.i(455317),a.i(875016),a.i(840784),a.i(72019),a.i(264906),a.i(785459),a.i(895176);let i=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function j(){return(0,d.f)().select({id:f.resources.id,name:f.resources.name}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0))).orderBy(f.resources.name).limit(200)}async function k(a,b,f,g=new Date){let h=g.toISOString(),i=b?`ai-note:${b}`:`ai-note:${f}`,j=await (0,d.f)().execute(c.B`
|
|
2
2
|
with hit as (
|
|
3
3
|
insert into ops.rate_limits (key, window_start, count) values (${i}, ${new Date(36e5*Math.floor(g.getTime()/36e5)).toISOString()}::timestamptz, 1)
|
|
4
4
|
on conflict (key, window_start) do update set count = ops.rate_limits.count + 1
|
|
@@ -20,11 +20,11 @@ module.exports=[330863,243446,964806,256961,a=>{"use strict";var b=a.i(93321),c=
|
|
|
20
20
|
returning 1
|
|
21
21
|
),
|
|
22
22
|
q as (delete from ops.ai_questions where created_at < ${e}::timestamptz returning 1)
|
|
23
|
-
select (select count(*) from n) as notes, (select count(*) from q) as questions`)}a.s(["S",0,k,"v",0,l],243446);var m=a.i(26972),n=a.i(427221),o=a.i(149310);a.s(["f",0,null],964806);var
|
|
23
|
+
select (select count(*) from n) as notes, (select count(*) from q) as questions`)}a.s(["S",0,k,"v",0,l],243446);var m=a.i(26972),n=a.i(427221),o=a.i(149310),p=a.i(245710);a.s(["f",0,null],964806);var q=a.i(502330);let r="ai.advisorNotes",s="ai.advisorRuns",t={enabled:!0,model:null};function u(a){if(!a||"object"!=typeof a||Array.isArray(a))return t;let b="string"==typeof a.model&&a.model.trim()&&a.model.length<=200?a.model.trim():null;return{enabled:!1!==a.enabled,model:b}}function v(a){let{hour:b,minute:c}=(0,p.z)(a);return 7!==b&&19!==b||c>=15?null:`${(0,p.x)(a)}T${String(b).padStart(2,"0")}`}let w=a=>"string"==typeof a?a.toLowerCase():"";function x(a){let b=a.apps.map(a=>a.id),c=new Map,d=(a,d)=>{let e=b.find(b=>b.toLowerCase()===w(a));e&&c.set(e,Math.max(c.get(e)??0,d))};for(let b of a.apps)"down"===b.state?d(b.id,4):"degraded"===b.state&&d(b.id,2);for(let b of a.alerts.items??[])d(b.app,3);for(let b of a.monitors.items??[])("down"===b.state||"degraded"===b.state)&&d(b.app,2);for(let b of a.advisor??[])("warn"===b.severity||"crit"===b.severity||"critical"===b.severity||"warning"===b.severity)&&d(b.app,1);let e,f=[...c.entries()].filter(([a])=>a!==e).sort((a,b)=>b[1]-a[1]||a[0].localeCompare(b[0])).slice(0,3).map(([a])=>a);return[...e?[e]:[],...f]}function y(a,b){let c=a=>b.some(b=>b.toLowerCase()===w(a)),d={generatedAt:a.generatedAt,apps:a.apps.filter(a=>c(a.id)).map(a=>({app:(0,q.O)(a.id,80),state:a.state,uptime30d:a.uptime30d,database:a.database?(0,q.O)(a.database,40):null,lastDeploy:a.lastDeploy?(0,q.O)(a.lastDeploy,40):null,problems:a.problems.slice(0,8).map(a=>({kind:(0,q.O)(a.kind,30),where:(0,q.O)(a.where,120),what:(0,q.O)(a.what),fix:a.fix?(0,q.O)(a.fix):null}))})),alerts:(a.alerts.items??[]).filter(a=>c(a.app)).slice(0,12).map(a=>({app:(0,q.O)(a.app,80),severity:(0,q.O)(a.severity,20),title:(0,q.O)(a.title),message:(0,q.O)(a.message)})),monitors:(a.monitors.items??[]).filter(a=>c(a.app)).slice(0,12).map(a=>({app:(0,q.O)(a.app,80),state:(0,q.O)(a.state,20),path:(0,q.O)(a.path,120)})),recommendations:(a.advisor??[]).filter(a=>c(a.app)).slice(0,12).map(a=>({app:(0,q.O)(a.app,80),severity:(0,q.O)(a.severity,20),title:(0,q.O)(a.title)}))};return[{role:"system",content:q.o},{role:"user",content:[`Write one short advisor note for each of these apps: ${b.map(a=>(0,q.O)(a,80)).join(", ")}.`,'Answer with JSON only, no prose and no code fence: {"notes":[{"app":"<app name as given>","severity":"info|warn|crit","title":"<under 80 characters>","body":"<at most 4 short sentences in English with one concrete suggestion>"}]}.\nUse only the data below. Never include secrets, keys, email addresses, hostnames or URLs. Severity: crit when the app is down or has a critical alert, warn for anything else wrong, info when all is well.\n',JSON.stringify(d)].join("\n")}]}let z=m.z.object({app:n.z.string().trim().min(1).max(80),severity:o.z.enum(["info","warn","crit"]),title:n.z.string().trim().min(3).max(79),body:n.z.string().trim().min(10).max(600)}),A=/\b(?:[a-z0-9-]+\.)+(?:com|net|org|io|app|dev|id|co|xyz|cloud|site|me|ai)\b/i,B=a=>a.split(/(?<=[.!?])\s+/).filter(a=>a.trim().length>0).length;function C(a,b){let c,d=a.indexOf("{"),e=a.lastIndexOf("}");if(d<0||e<=d)return[];try{c=JSON.parse(a.slice(d,e+1))}catch{return[]}let f=c?.notes;if(!Array.isArray(f))return[];let g=[];for(let a of f.slice(0,20)){let c=z.safeParse(a);if(!c.success)continue;let d=b.find(a=>a.toLowerCase()===c.data.app.toLowerCase());if(!d||g.some(a=>a.app===d))continue;let{title:e,body:f}=c.data;if(B(f)>4)continue;let h=`${e} ${f}`;if(!((0,q.O)(h,1e4)!==h.replace(/\s+/g," ").trim()||A.test(h))&&(g.push({app:d,severity:c.data.severity,title:e,body:f}),g.length>=4))break}return g}a.s(["m",0,s,"d",0,r,"o",0,t,"T",0,y,"v",0,v,"l",0,C,"t",0,u,"h",0,x],256961);let D="watchpost";async function E(){let[a]=await (0,d.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,r)).limit(1);return u(a?.value)}async function F(a,b=new Date){await (0,d.f)().insert(f.settings).values({key:r,value:a}).onConflictDoUpdate({target:f.settings.key,set:{value:a,updatedAt:b}})}async function G(a,b){let f=b.toISOString(),g=await (0,d.f)().execute(c.B`
|
|
24
24
|
insert into ops.settings (key, value, created_at, updated_at)
|
|
25
|
-
values (${
|
|
25
|
+
values (${s}, ${JSON.stringify({window:a,at:f})}::jsonb, ${f}::timestamptz, ${f}::timestamptz)
|
|
26
26
|
on conflict (key) do update set value = excluded.value, updated_at = excluded.updated_at
|
|
27
27
|
where ops.settings.value->>'window' is distinct from ${a}
|
|
28
|
-
returning 1 as claimed`);return 1===(0,e.f)(g).length}async function
|
|
28
|
+
returning 1 as claimed`);return 1===(0,e.f)(g).length}async function H(a,b={}){var c,d;let e,f=v(a);if(!b.force&&!f)return{status:"skipped",reason:"outside-window"};let l=await E();if(!b.force&&!l.enabled)return{status:"skipped",reason:"off"};try{await (0,g.M)(l.model??void 0)}catch{return{status:"skipped",reason:"no-provider"}}if(!b.force&&!await G(f,a))return{status:"skipped",reason:"already-ran"};let m=await (0,h.V)(a),n=x(m);if(0===n.length)return{status:"skipped",reason:"no-apps"};let o=await (c=(0,g.X)(y(m,n),{...l.model?{model:l.model}:{},purpose:"summary",maxTokens:1500,temperature:.2}),d=b.deadlineMs??4e4,Promise.race([c,new Promise((a,b)=>{e=setTimeout(()=>b(Error("advisor deadline")),d)})]).finally(()=>clearTimeout(e))),p=C(o.text,n);if(0===p.length)return{status:"skipped",reason:"no-valid-notes"};let q=await j(),r=0;for(let b of p)(await k({title:b.title,body:b.body,severity:b.severity,appId:function(a,b){let c=b.trim();return i.test(c)?a.find(a=>a.id.toLowerCase()===c.toLowerCase())??null:a.find(a=>a.name.toLowerCase()===c.toLowerCase())??null}(q,b.app)?.id??null,model:o.model.slice(0,120),client:D},null,D,a)).ok&&r++;return{status:"written",count:r,model:o.model}}async function I(a){if(v(a))try{let b=await H(a,{deadlineMs:4e4});"written"===b.status?console.log(`advisor notes: ${b.count} written (${b.model})`):"already-ran"!==b.reason&&"outside-window"!==b.reason&&console.log(`advisor notes: skipped (${b.reason})`)}catch(a){console.warn("advisor notes failed:",a instanceof Error?"advisor deadline"===a.message?"deadline":a.name:"unknown")}}a.s(["I",0,I,"J",0,E,"K",0,H,"C",0,F],330863)}];
|
|
29
29
|
|
|
30
30
|
//# sourceMappingURL=src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[352078,a=>{"use strict";var b=a.i(187924),c=a.i(218024),d=a.i(908161),e=a.i(817748),f=a.i(282269),g=a.i(449862);let h=(0,g.f)("outline","trash","Trash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var i=a.i(851519),j=a.i(238246),k=a.i(572131),l=a.i(823292),m=a.i(619089),n=a.i(286597),o=a.i(368114),p=a.i(901615);let q={name:"X-Client",in:"header",type:"string",required:!1,default:"api-explorer",example:"my-agent/1.0",description:"Names the caller as an agent (name/version) when the request doesn't say it otherwise. The API explorer sends api-explorer."},r=JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Say hello in five words."}],stream:!1},null,2),s=JSON.stringify({generatedAt:"2026-10-13T00:41:12.000Z",apps:[{id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}]},{id:"acme-shop",state:"degraded",uptime30d:99.9,database:"db-b",lastDeploy:"9f3c2a1 · 3 days ago",problems:[{kind:"database",where:"Database db-b",what:"Paused",fix:"Restore the database from its provider (Supabase restore)"}]}],monitors:{up:6,degraded:1,down:1,paused:0,items:[{app:"orbit-blog",path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71,lastCheckedAt:"2026-10-13T00:41:00.000Z"}]},alerts:{open:5,critical:1,items:[{title:"orbit-blog is down",severity:"critical",app:"orbit-blog",since:"2026-10-13T00:37:00.000Z",message:"HTTP 502 on /."}]},advisor:[{title:"Next.js 15 reaches end of life on 21 Oct 2026",app:"acme-shop",severity:"warning"}]},null,2),t=JSON.stringify({id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}],monitors:[{path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71}]},null,2),u=JSON.stringify({app:"orbit-blog",notes:[{id:"5b0f8e0c-2f0a-4b53-9d54-6c1f0d6f6a11",severity:"warn",title:"Deploy failed twice today",body:"The last two production deploys failed at the build step. Roll back to the previous deployment, then fix the build and redeploy.",source:p.U.noteSource,model:"gemini-3.8-flash",createdAt:"2026-10-13T01:02:03.000Z"}]},null,2),v=[{id:"ai-chat",operationId:"createChatCompletion",tag:"AI",method:"post",path:"/api/v1/ai/chat/completions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Chat completion (OpenAI-compatible)",description:"Forwards to the provider that owns the model (provider/model, or the default provider for a bare id), over its OpenAI-compatible endpoint. stream: true answers text/event-stream. Fields outside the OpenAI chat schema are rejected.",docsOnly:!1,params:[q],body:r,bodyDescription:"An OpenAI chat completion request.",response:{status:200,contentType:"application/json",description:"The provider's answer, with the model id as Watchbell names it.",example:JSON.stringify({id:"chatcmpl-wp-01JA8",object:"chat.completion",created:0x6ad01318,model:"gemini/gemini-3.8-flash",choices:[{index:0,finish_reason:"stop",message:{role:"assistant",content:"Hello there, nice to meet!"}}],usage:{prompt_tokens:9,completion_tokens:7,total_tokens:16}},null,2)},examples:[{name:"Hello in five words",body:r},{name:"Streaming (SSE)",body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Count to five."}],stream:!0},null,2)},{name:p.U.advisorExample.name,body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"system",content:p.U.advisorExample.system},{role:"user",content:p.U.advisorExample.user}],max_tokens:400},null,2)}]},{id:"ai-models",operationId:"listModels",tag:"AI",method:"get",path:"/api/v1/ai/models",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"List enabled models",description:`The models turned on under AI Gateway › Models, in OpenAI's list format. Provider models are provider/model, owned_by watchbell, and work with /api/v1/ai/chat/completions. ${p.U.modelsAgSentence}A key pinned to a provider or model sees only that.`,docsOnly:!1,params:[q],response:{status:200,contentType:"application/json",description:"An OpenAI-style model list.",example:JSON.stringify({object:"list",data:[{id:"gemini/gemini-3.8-flash",object:"model",created:0,owned_by:"watchbell"},...p.U.agModelExamples]},null,2)}},{id:"ai-questions",operationId:"askQuestion",tag:"AI",method:"post",path:"/api/v1/ai/questions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Ask a question about the console",description:`Asks a question about the console, answered from scrubbed console data (names aliased, no URLs, emails or keys). 1-2000 characters; text that looks like a key or token is refused with 400. Optional model from GET /api/v1/ai/models. Left out, or a provider model id (provider/model, e.g. test/prrojects): the owner's own provider answers in this request (a router combo can take ~25 s) and you get 201 with the answer; the question and answer are kept 7 days (GET pollUrl reads them back, the owner sees them under AI › Ask). A provider error answers with the gateway's message (400 model_not_enabled, 429, 502 upstream_error, 503 provider_not_connected) and nothing is stored.${p.U.askAgSentence}`,docsOnly:!1,params:[q],body:JSON.stringify({question:"Is anything about to run out this week?"},null,2),bodyDescription:"question: 1-2000 characters, plain text or markdown. model (optional): a provider model id or an ag/<id> from GET /api/v1/ai/models; left out = the default provider's default model.",response:{status:201,contentType:"application/json",description:"Answered now by the owner's provider. pollUrl reads the stored question back.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",answer:"Nothing runs out this week. db-a is at 81% of its storage; plan a cleanup within a month.",answeredBy:{client:"watchpost",model:"test/prrojects"},askedAt:"2026-10-14T00:40:00.000Z",answeredAt:"2026-10-14T00:40:24.000Z",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)},alsoResponses:[{status:202,contentType:"application/json",description:p.U.queued,example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"pending",askedAt:"2026-10-13T07:40:00.000Z",requestedModel:"ag/gemini-3.8-flash-high",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)}]},{id:"ai-question",operationId:"getQuestion",tag:"AI",method:"get",path:"/api/v1/ai/questions/{id}",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"A question and its answer",description:`One question this key asked with POST /api/v1/ai/questions, for 7 days. status is pending, answered or expired (no answer within 7 days). answer is the markdown answer (up to 8000 characters) from the owner's provider (answeredBy.client watchbell) or ${p.U.answeredByAgent}. Another key's or the owner's questions answer 404 like an unknown id. requestedModel is the ag/<id> asked for, or null (default).`,docsOnly:!1,params:[{name:"id",in:"path",type:"string",required:!0,example:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",description:"The id from POST /api/v1/ai/questions."},q],response:{status:200,contentType:"application/json",description:"The question; answer and answeredBy are null until it is answered.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",question:"Is anything about to run out this week?",requestedModel:"ag/gemini-3.8-flash-high",answer:"Two things: the **db-b** Supabase project pauses on Friday without traffic, and the certificate of app-a renews automatically.",answeredBy:{client:p.U.answeredByClient,model:"gemini-3.8-flash-high"},askedAt:"2026-10-13T07:40:00.000Z",answeredAt:"2026-10-13T07:41:12.000Z"},null,2)}},{id:"status",operationId:"getStatus",tag:"Console",method:"get",path:"/api/v1/status",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Console summary",description:"Apps, monitors, open alerts and the advisor, scrubbed: database aliases, no URLs, emails or secrets.",docsOnly:!1,params:[{name:"include",in:"query",type:"string",required:!1,example:"apps,alerts",description:"Comma-separated sections to return: apps, monitors, alerts, advisor. Default: all four."},q],response:{status:200,contentType:"application/json",description:"The requested sections of the console snapshot.",example:s},examples:[{name:"Everything"},{name:"Only alerts",query:{include:"alerts"}}]},{id:"status-app",operationId:"getAppStatus",tag:"Console",method:"get",path:"/api/v1/status/apps/{app}",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"One app with its Why problems",description:"Same shape as one entry of apps[], plus its monitors and the remedies. The app is its name or console id; 404 not_found when it isn't a watched app.",docsOnly:!1,params:[{name:"app",in:"path",type:"string",required:!0,example:"orbit-blog",description:"The app's name (as in apps[].id) or console id."},q],response:{status:200,contentType:"application/json",description:"One app.",example:t}},{id:"advice",operationId:"getAppAdvice",tag:"Console",method:"get",path:"/api/v1/advice",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Latest AI notes for one app",description:`The newest AI notes (up to 5, not dismissed) that ${p.U.adviceAgent} wrote about the app, scrubbed like /status. ${p.U.adviceFor} for the app by name or id; 404 not_found when it isn't a watched app.`,docsOnly:!1,params:[{name:"app",in:"query",type:"string",required:!0,example:"orbit-blog",description:"The app's name or console id."},q],response:{status:200,contentType:"application/json",description:"The app and its latest notes, newest first (an empty list when there are none).",example:u}},{id:"me",operationId:"getMe",tag:"Console",method:"get",path:"/api/v1/me",access:"key",scope:"any",scopeLabel:"any key",summary:"The calling key",description:"Name, prefix, scopes, rate limit and expiry of the key you send. Handy to test a key.",docsOnly:!1,params:[q],response:{status:200,contentType:"application/json",description:"The key's public details (never the key or its hash).",example:JSON.stringify({name:"laptop-agents",prefix:"wb_Lm9x",scopes:["ai:invoke","read:status"],rateLimitPerMin:30,expiresAt:null},null,2)}},{id:"openapi",operationId:"getOpenApi",tag:"Console",method:"get",path:"/api/v1/openapi.json",access:"keyOrOwner",scope:"any",scopeLabel:"any key or owner session",summary:"This OpenAPI 3.1 document",description:"The description every endpoint of this page is built from. Needs any valid key, or the owner's signed-in session (so the download button works).",docsOnly:!1,params:[q],response:{status:200,contentType:"application/json",description:"An OpenAPI 3.1 document.",example:JSON.stringify({openapi:"3.1.0",info:{title:"Watchbell API",version:"1.0.0"},paths:{"/api/v1/status":{get:{operationId:"getStatus"}}}},null,2)}},{id:"mcp",operationId:"mcpRpc",tag:"MCP",method:"post",path:"/api/v1/mcp",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"MCP server (Streamable HTTP)",description:`JSON-RPC 2.0 for Model Context Protocol clients (${p.U.mcpClients}). initialize, tools/list and tools/call for the read-only tools; submit_ai_note needs write:notes. Answers JSON (no server-sent stream needed); GET and DELETE answer 405.`,docsOnly:!1,params:[{name:"Accept",in:"header",type:"string",required:!0,default:"application/json, text/event-stream",description:"Both types, as the MCP transport requires."},{name:"MCP-Protocol-Version",in:"header",type:"string",required:!1,default:"2025-06-18",description:"The protocol revision the client speaks."},q],body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2),bodyDescription:"One JSON-RPC 2.0 message (batches are rejected).",response:{status:200,contentType:"application/json",description:"The JSON-RPC response.",example:JSON.stringify({jsonrpc:"2.0",id:1,result:{tools:[{name:"list_apps",description:"Every app with its state …"},{name:"get_app",description:"One app with its Why problems …"}]}},null,2)},examples:[{name:"tools/list",body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2)},{name:"tools/call get_app",body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/call",params:{name:"get_app",arguments:{app:"orbit-blog"}}},null,2)},{name:"initialize",body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"api-explorer",version:"1.0"}}},null,2)}]},{id:"health",operationId:"getHealth",tag:"Health",method:"get",path:"/api/health",access:"none",scope:null,scopeLabel:"no key",summary:"Liveness check",description:"Answers 200 while the console is up. Public, no database read; point an uptime checker at it.",docsOnly:!1,params:[],response:{status:200,contentType:"application/json",description:"Always ok while the console answers.",example:JSON.stringify({ok:!0,service:"watchbell"},null,2)}},{id:"ping",operationId:"pingHeartbeat",tag:"Heartbeats",method:"post",path:"/api/ping/{token}",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat ping (GET and HEAD work too)",description:"A job tells Watchbell it ran. The token is shown once when the heartbeat monitor is created; Watchbell keeps only its hash, so this page can't fill it in. Paste it below to try a ping: it is used for this request only and never stored. A real ping changes the monitor's state.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token (hb_ and 32 hex characters)."}],response:{status:200,contentType:"text/plain",description:"OK; 404 for an unknown token, 429 when pinged too often.",example:"OK"}},{id:"ping-start",operationId:"pingHeartbeatStart",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/start",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job started",description:"Marks the start of a run. If no OK ping follows within the grace time the monitor is down. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"ping-fail",operationId:"pingHeartbeatFail",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/fail",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job failed",description:"Reports a failure; the monitor goes down at once. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"collect",operationId:"runCollector",tag:"Scheduler",method:"post",path:"/api/collect",access:"secret",scope:null,scopeLabel:"scheduler secret",summary:"Collector run",description:"Called every minute by cron-job.org with Authorization: Bearer <COLLECTOR_SECRET>. Docs only: Try it would need the secret.",docsOnly:!0,bearerEnv:"COLLECTOR_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The run's summary.",example:JSON.stringify({ok:!0,ran:["monitors","deployments"],errors:[]},null,2)}},{id:"watchdog",operationId:"runWatchdog",tag:"Scheduler",method:"post",path:"/api/watchdog",access:"secret",scope:null,scopeLabel:"QStash signature",summary:"Watchdog",description:"Called by Upstash QStash every 5 minutes with an Upstash-Signature header. Docs only.",docsOnly:!0,params:[],response:{status:200,contentType:"application/json",description:"Whether the collector looked stale.",example:JSON.stringify({stale:!1},null,2)}},{id:"daily",operationId:"runDaily",tag:"Scheduler",method:"get",path:"/api/daily",access:"secret",scope:null,scopeLabel:"cron secret",summary:"Daily job",description:"Vercel Cron at 03:00 WIB with Authorization: Bearer <CRON_SECRET>. Docs only.",docsOnly:!0,bearerEnv:"CRON_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The job's summary.",example:JSON.stringify({ok:!0,errors:[]},null,2)}}],w=a=>"key"===a.access||"keyOrOwner"===a.access,x=a=>a.bearerEnv??(w(a)?"WATCHBELL_API_KEY":null),y="watchpost.explorer.examples.v1",z=new Set(["authorization","cookie","proxy-authorization"]),A=/\bw[bp]_[A-Za-z0-9]{20,}|\bhb_[0-9a-f]{32}\b|\bsk-[A-Za-z0-9_-]{20,}|\bAIza[0-9A-Za-z_-]{30,}|\bgsk_[A-Za-z0-9]{20,}/,B=a=>"object"==typeof a&&null!==a&&!Array.isArray(a)&&Object.values(a).every(a=>"string"==typeof a);function C(a){return"object"==typeof a&&null!==a&&"string"==typeof a.id&&"string"==typeof a.opId&&"string"==typeof a.name&&a.name.length>0&&a.name.length<=60&&B(a.path)&&B(a.query)&&B(a.headers)&&"string"==typeof a.body&&a.body.length<=2e4&&"string"==typeof a.savedAt}let D={defaultModel:null,options:[]},E=new Set(["/api/v1/ai/questions"]);function F(a){try{let b=JSON.parse(a);return"object"!=typeof b||null===b||Array.isArray(b)?null:b}catch{return null}}let G=a=>{let b=a?F(a):null;return!!b&&Object.hasOwn(b,"model")};function H(a,b,c){let d=Object.hasOwn(a,"model")?{...a,model:b}:{model:b,...a};return c?JSON.stringify(d,null,2):JSON.stringify(d)}let I=(a,b)=>void 0!==a&&G(a)?H(F(a),b,a.includes("\n")):a,J=a=>void 0!==a.body&&(G(a.body)||(a.examples??[]).some(a=>G(a.body))),K={get:"bg-teal-soft text-teal",post:"bg-brand-soft text-brand",head:"bg-gray-soft text-ink-soft"};function L({method:a,className:c}){return(0,b.jsx)("span",{className:(0,o.f)("inline-block min-w-[46px] rounded-[4px] px-[5px] py-px text-center font-mono text-[11px] font-medium",K[a],c),children:a.toUpperCase()})}function M(a){return{path:Object.fromEntries(a.params.filter(a=>"path"===a.in).map(a=>[a.name,a.default??""])),query:a.params.filter(a=>"query"===a.in).map(a=>({name:a.name,value:a.default??""})),headers:a.params.filter(a=>"header"===a.in).map(a=>({name:a.name,value:a.default??""})),body:a.body??""}}let N=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,O=/^[\x20-\x7e]*$/,P=new Set(["authorization","cookie","proxy-authorization","host","content-length"]),Q={200:"OK",201:"Created",202:"Accepted",204:"No Content",301:"Moved Permanently",302:"Found",304:"Not Modified",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",408:"Request Timeout",413:"Payload Too Large",429:"Too Many Requests",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"},R=(0,g.f)("outline","check","Check",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);function S({snippets:a}){let[d,e]=(0,k.useState)(0),[f,g]=(0,k.useState)(!1),h=(0,k.useId)(),i=a[Math.min(d,a.length-1)];async function j(){try{await navigator.clipboard.writeText(i.code),g(!0),setTimeout(()=>g(!1),1500)}catch{l.c.error("Couldn't copy. Select the text and copy it.")}}return(0,b.jsxs)("div",{className:"mt-1 overflow-hidden rounded-lg border border-line",children:[(0,b.jsxs)("div",{className:"flex items-center gap-0.5 overflow-x-auto border-b border-line bg-surface-2 px-1.5",role:"tablist","aria-label":"Snippet language",children:[a.map((a,c)=>(0,b.jsx)("button",{type:"button",role:"tab",id:`${h}-t${c}`,"aria-selected":c===d,"aria-controls":`${h}-p`,onClick:()=>e(c),className:(0,o.f)("-mb-px whitespace-nowrap border-b-2 border-transparent px-2.5 py-2 text-[13px] text-ink-soft",c===d&&"border-brand font-medium text-ink"),children:a.label},a.label)),(0,b.jsxs)(m.K,{size:"sm",className:"my-1 ml-auto",onClick:j,children:[f?(0,b.jsx)(R,{size:14,"aria-hidden":!0}):(0,b.jsx)(c.f,{size:14,"aria-hidden":!0}),f?"Copied":"Copy"]})]}),(0,b.jsx)("pre",{id:`${h}-p`,role:"tabpanel","aria-labelledby":`${h}-t${d}`,tabIndex:0,className:"m-0 overflow-x-auto bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:i.code})]})}let T=a=>`'${a.replace(/'/g,"'\\''")}'`,U=a=>{try{return JSON.stringify(JSON.parse(a))}catch{return a.trim()}},V="watchpost:explorer-examples",W=(0,o.f)(m.S,"font-mono text-[12.5px]");function X(a){return window.addEventListener("storage",a),window.addEventListener(V,a),()=>{window.removeEventListener("storage",a),window.removeEventListener(V,a)}}function Y(){try{return window.localStorage.getItem(y)}catch{return null}}function Z(a){try{return window.localStorage.setItem(y,JSON.stringify(a)),window.dispatchEvent(new Event(V)),!0}catch{return!1}}function $({name:a,meta:c,children:d}){return(0,b.jsxs)("div",{className:"flex flex-col gap-1 min-[720px]:contents",children:[(0,b.jsx)("span",{className:"font-mono",children:a}),(0,b.jsx)("span",{className:"text-ink-faint",children:c}),d]})}let _=(a,b)=>a?`${b} \xb7 ${a.type}${a.required?" · required":""}`:`${b} \xb7 string`;function aa({op:a,origin:g,models:p}){var q;let r,s,t,u,v,y,[B,D]=(0,k.useState)(""),[G,I]=(0,k.useState)(()=>M(a)),[K,R]=(0,k.useState)(!1),[V,ab]=(0,k.useState)(null),[ac,ad]=(0,k.useState)(null),[ae,af]=(0,k.useState)(!1),[ag,ah]=(0,k.useState)(""),[ai,aj]=(0,k.useState)(null),[ak,al]=(0,k.useState)(null),am=(0,k.useSyncExternalStore)(X,Y,()=>null),an=(0,k.useMemo)(()=>(function(a){if(!a)return[];try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(C).filter(a=>!A.test(JSON.stringify(a))).slice(0,100):[]}catch{return[]}})(am),[am]),ao=(s=a.id,an.filter(a=>a.opId===s)),ap=w(a),aq=J(a),ar=E.has(a.path)?p.options:p.options.filter(a=>!a.async),as=(t=F(G.body))&&"string"==typeof t.model?t.model:null,at=null!==ac&&function(a){if(400!==a.status)return!1;let b=F(a.body),c=b?.error;return"object"==typeof c&&null!==c&&"model_not_enabled"===c.type}(ac),au=(0,k.useMemo)(()=>(function(a,b,c={}){var d;let e,f=function(a,b,c){let d=[],e=a=>{let b=d.at(-1);b&&"lit"in b&&"lit"in a?b.lit+=a.lit:d.push(a)},f=b.replace(/\/+$/,"")+a.path;for(let b of a.params.filter(a=>"path"===a.in)){let a=f.indexOf(`{${b.name}}`);e({lit:f.slice(0,a)}),e(b.secret?{env:"HEARTBEAT_TOKEN"}:{lit:encodeURIComponent((c.path?.[b.name]??"").trim()||b.example||`{${b.name}}`)}),f=f.slice(a+b.name.length+2)}e({lit:f});let g=new URLSearchParams;for(let a of c.query??[])a.name.trim()&&a.value.trim()&&g.append(a.name.trim(),a.value.trim());return g.size&&e({lit:`?${g.toString()}`}),d}(a,b,c),g=a.method.toUpperCase(),h=x(a),i=void 0!==a.body?(c.body??a.body).trim():"",j=(d=""!==i,e=(c.headers??[]).map(a=>[a.name.trim(),a.value.trim()]).filter(([a,b])=>a&&b&&"authorization"!==a.toLowerCase()&&("x-client"!==a.toLowerCase()||"api-explorer"!==b)),d&&!e.some(([a])=>"content-type"===a.toLowerCase())&&e.push(["Content-Type","application/json"]),e),k=(a.response?.contentType??"").includes("json"),l=[`curl -X ${g} ${f.some(a=>"env"in a)?`"${f.map(a=>"lit"in a?a.lit.replace(/[\\"$`]/g,"\\$&"):`$\{${a.env}}`).join("")}"`:T(f.map(a=>"lit"in a?a.lit:"").join(""))}`,...h?[`-H "Authorization: Bearer $${h}"`]:[],...j.map(([a,b])=>`-H ${T(`${a}: ${b}`)}`),...i?[`-d ${T(U(i))}`]:[]].join(" \\\n "),m=[`curl.exe -X ${g} "${f.map(a=>"lit"in a?a.lit.replace(/[`"$]/g,"`$&"):`$\{env:${a.env}}`).join("")}"`,...h?[`-H "Authorization: Bearer $\{env:${h}}"`]:[],...j.map(([a,b])=>`-H "${`${a}: ${b}`.replace(/[`"$]/g,"`$&")}"`),...i?[`--data-raw '${U(i).replace(/'/g,"''").replace(/"/g,'\\"')}'`]:[]].join(" `\n "),n=[...h?[`Authorization: \`Bearer $\{process.env.${h}}\``]:[],...j.map(([a,b])=>`${/^[A-Za-z_$][\w$]*$/.test(a)?a:JSON.stringify(a)}: ${JSON.stringify(b)}`)],o="";if(i)try{o=`JSON.stringify(${JSON.stringify(JSON.parse(i),null,2).replace(/\n/g,"\n ")})`}catch{o=JSON.stringify(i)}return[{label:"curl",code:l},{label:"PowerShell",code:m},{label:"JavaScript (fetch)",code:[`const res = await fetch(${f.some(a=>"env"in a)?`\`${f.map(a=>"lit"in a?a.lit.replace(/[\\`]|\$\{/g,"\\$&"):`$\{process.env.${a.env}}`).join("")}\``:JSON.stringify(f.map(a=>"lit"in a?a.lit:"").join(""))}, {`,` method: "${g}",`,...n.length?[" headers: {",...n.map(a=>` ${a},`)," },"]:[],...o?[` body: ${o},`]:[],"});",`console.log(res.status, await res.${k?"json":"text"}());`].join("\n")}]})(a,g,{path:G.path,query:G.query,headers:G.headers,body:G.body}),[a,g,G]),av=(a,b,c)=>I(d=>({...d,[a]:d[a].map((a,d)=>d===b?{...a,...c}:a)})),aw=a=>I(b=>({...b,[a]:[...b[a],{name:"",value:""}]}));async function ax(){let b=function(a,b,c,d){let e,f=a.path;for(let c of a.params.filter(a=>"path"===a.in)){let a=(b.path[c.name]??"").trim();if(!a)return{ok:!1,error:`Fill in the path parameter ${c.name}.`};f=f.replace(`{${c.name}}`,encodeURIComponent(a))}let g=new URLSearchParams;for(let c of b.query){let b=c.name.trim(),d=c.value.trim();if(b){if(!d){if(a.params.some(a=>"query"===a.in&&a.name===b&&a.required))return{ok:!1,error:`Fill in the query parameter ${b}.`};continue}g.append(b,d)}}let h={};for(let a of b.headers){let b=a.name.trim(),c=a.value.trim();if(b||c){if(!N.test(b))return{ok:!1,error:`"${b.slice(0,40)}" isn't a valid header name.`};if(P.has(b.toLowerCase()))return{ok:!1,error:`${b} can't be set here${"authorization"===b.toLowerCase()?": use the key field":""}.`};if(!O.test(c))return{ok:!1,error:`The value of ${b} has characters a header can't carry.`};c&&(h[b]=c)}}if(w(a)){let b=c.trim();if(!b)return{ok:!1,error:`Paste a console API key first${a.scope&&"any"!==a.scope?` (this endpoint needs ${a.scope})`:""}.`};if(!/^[\x21-\x7e]+$/.test(b))return{ok:!1,error:"That key has spaces or characters a key never has. Paste it again."};h.Authorization=`Bearer ${b}`}if(void 0!==a.body){if(!(e=b.body.trim()))return{ok:!1,error:"The JSON body is empty."};try{JSON.parse(e)}catch(a){return{ok:!1,error:`The body isn't valid JSON${a instanceof SyntaxError?`: ${a.message.slice(0,120)}`:"."}`}}Object.keys(h).some(a=>"content-type"===a.toLowerCase())||(h["Content-Type"]="application/json")}let i=f+(g.size?`?${g.toString()}`:"");return{ok:!0,request:{method:a.method.toUpperCase(),path:i,url:d.replace(/\/+$/,"")+i,headers:h,body:e}}}(a,G,B,g);if(!b.ok){ab(b.error),ad(null);return}ab(null),R(!0);let c=performance.now();try{let{method:a,path:d,headers:e,body:f}=b.request,g=await fetch(d,{method:a,headers:e,body:f,cache:"no-store",credentials:"omit",signal:AbortSignal.timeout(65e3)}),h=await g.text(),i=[];g.headers.forEach((a,b)=>i.push([b,a])),ad(function(a){let b,c=a.headers.find(([a])=>"content-type"===a.toLowerCase())?.[1]??"",d=a.text;if(c.includes("json")||/^\s*[{[]/.test(a.text))try{d=JSON.stringify(JSON.parse(a.text),null,2)}catch{}let e=d.length>2e5;return{status:a.status,statusText:a.statusText,tone:(b=a.status)>=200&&b<300?"ok":b>=300&&b<400?"warn":"err",ms:Math.round(a.ms),bytes:new TextEncoder().encode(a.text).length,headers:[...a.headers].sort(([a],[b])=>a.localeCompare(b)),body:e?d.slice(0,2e5):d,truncated:e}}({status:g.status,statusText:g.statusText,headers:i,text:h,ms:performance.now()-c}))}catch(a){ad(null),ab(a instanceof DOMException&&"TimeoutError"===a.name?"No answer after 65 seconds.":"The request didn't go through. Check that this deployment is reachable and try again.")}finally{R(!1)}}function ay(){var b;let c,d=function(a,b,c,d,e){let f=c.trim();if(!f)return{ok:!1,error:"Give the example a name."};if(f.length>60)return{ok:!1,error:"Use at most 60 characters for the name."};let g=new Set(a.params.filter(a=>a.secret).map(a=>a.name)),h=Object.fromEntries(Object.entries(b.path).filter(([a,b])=>b.trim()&&!g.has(a)).map(([a,b])=>[a,b.trim()])),i=Object.fromEntries(b.query.filter(a=>a.name.trim()&&a.value.trim()).map(a=>[a.name.trim(),a.value.trim()])),j=Object.fromEntries(b.headers.filter(a=>a.name.trim()&&a.value.trim()&&!z.has(a.name.trim().toLowerCase())).map(a=>[a.name.trim(),a.value.trim()])),k=b.body.trim();if(k.length>2e4)return{ok:!1,error:"That body is too long to save as an example."};let l={id:d,opId:a.id,name:f,path:h,query:i,headers:j,body:k,savedAt:e.toISOString()};return A.test(JSON.stringify(l))?{ok:!1,error:"That looks like a key or token. Remove it before saving; examples never keep secrets."}:{ok:!0,example:l}}(a,G,ag,crypto.randomUUID(),new Date);if(!d.ok)return void l.c.error(d.error);let e=(b=d.example,(c=an.find(a=>a.opId===b.opId&&a.name.toLowerCase()===b.name.toLowerCase()))||!(an.length>=100)?{ok:!0,list:c?an.map(a=>a===c?{...b,id:c.id}:a):[...an,b]}:{ok:!1,error:"You can keep 100 examples. Delete one first."});e.ok?Z(e.list)?(af(!1),ah(""),l.c.success(`Saved “${d.example.name}” in this browser. Examples never keep the key.`)):l.c.error("This browser blocked saving. Examples need localStorage."):l.c.error(e.error)}function az(){if(!ai)return;let a=function(a,b,c){let d=c.trim();if(!d)return{ok:!1,error:"Give the example a name."};if(d.length>60)return{ok:!1,error:"Use at most 60 characters for the name."};let e=a.find(a=>a.id===b);return e?a.some(a=>a.id!==b&&a.opId===e.opId&&a.name.toLowerCase()===d.toLowerCase())?{ok:!1,error:"This endpoint already has an example with that name."}:{ok:!0,list:a.map(a=>a.id===b?{...a,name:d}:a)}:{ok:!1,error:"That example is gone."}}(an,ai.id,ai.name);a.ok?Z(a.list)?aj(null):l.c.error("This browser blocked saving. Examples need localStorage."):l.c.error(a.error)}function aA(b,c){let d,e;I((d=M(a),e=(a,b)=>{if(!b)return a;let c=a.map(a=>a.name in b?{...a,value:b[a.name]}:a);for(let[a,d]of Object.entries(b))c.some(b=>b.name===a)||c.push({name:a,value:d});return c},{path:{...d.path,...c.path??{}},query:e(d.query,c.query),headers:e(d.headers,c.headers),body:c.body??d.body})),ab(null),l.c.success(`Loaded “${b}” into the request.`)}async function aB(){try{await navigator.clipboard.writeText(ac?.body??""),l.c.success("Copied the response body.")}catch{l.c.error("Couldn't copy. Select the text and copy it.")}}let aC=a.response&&(0,b.jsxs)("details",{open:a.docsOnly,className:"group",children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[13px] text-ink-soft",children:["Example response · ",(0,b.jsxs)("span",{className:"font-mono",children:[a.response.status," ",a.response.contentType]})]}),(0,b.jsx)("p",{className:"mb-1.5 mt-1.5 text-[13px] text-ink-soft",children:a.response.description}),(0,b.jsx)("pre",{className:"m-0 overflow-x-auto rounded-md bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:a.response.example})]}),aD=a.params.filter(a=>"path"===a.in),aE=aD.length+G.query.length+G.headers.length>0;return(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-4",children:[(0,b.jsxs)(m.N,{title:(0,b.jsxs)("span",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(L,{method:a.method}),(0,b.jsx)("code",{className:"font-mono text-[13px] font-normal [overflow-wrap:anywhere]",children:a.path})]}),meta:(0,b.jsx)("span",{className:"rounded-[4px] border border-line bg-surface-2 px-1.5 font-mono text-xs text-ink-soft",children:a.scopeLabel}),children:[(0,b.jsx)("p",{className:"font-medium",children:a.summary}),a.docsOnly?(0,b.jsx)("div",{className:"mt-3",children:(0,b.jsx)(m.M,{tone:"info",title:"Docs only",children:a.description})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mb-3.5 mt-0.5 text-[13px] text-ink-soft",children:a.description}),ap&&(0,b.jsx)(m.O,{id:"api-key",label:"Console API key",help:(0,b.jsxs)(b.Fragment,{children:["Kept in this tab's memory only. Never saved, never sent anywhere but ",(0,b.jsx)("span",{className:"font-mono",children:g}),"."]}),children:(0,b.jsx)("input",{id:"api-key",type:"password",value:B,onChange:a=>D(a.target.value),className:W,autoComplete:"off",spellCheck:!1,"data-1p-ignore":!0,"data-lpignore":"true",placeholder:`wb_… (needs ${"any"===a.scope?"any scope":a.scope})`})}),aE&&(0,b.jsxs)("div",{className:"my-3 grid grid-cols-[minmax(0,1fr)] gap-x-3 gap-y-3 text-[13px] min-[720px]:grid-cols-[150px_120px_minmax(0,1fr)] min-[720px]:items-center min-[720px]:gap-y-2",children:[(0,b.jsx)("span",{className:"hidden text-xs text-ink-faint min-[720px]:block",children:"Name"}),(0,b.jsx)("span",{className:"hidden text-xs text-ink-faint min-[720px]:block",children:"In · type"}),(0,b.jsx)("span",{className:"hidden text-xs text-ink-faint min-[720px]:block",children:"Value"}),aD.map(a=>(0,b.jsx)($,{name:a.name,meta:_(a,"path"),children:(0,b.jsx)("input",{className:W,"aria-label":`${a.name} (path)`,value:G.path[a.name]??"",placeholder:a.example,type:a.secret?"password":"text",autoComplete:"off",spellCheck:!1,"data-1p-ignore":!!a.secret||void 0,onChange:b=>I(c=>({...c,path:{...c.path,[a.name]:b.target.value}}))})},`path-${a.name}`)),["query","headers"].flatMap(c=>G[c].map((d,e)=>{let f=a.params.find(a=>a.in===("query"===c?"query":"header")&&a.name===d.name),g=a.params.some(a=>a.in===("query"===c?"query":"header")&&a.name===d.name),h="query"===c?"query":"header";return(0,b.jsx)($,{name:g?d.name:(0,b.jsx)("span",{className:"flex items-center gap-1",children:(0,b.jsx)("input",{className:W,"aria-label":`${h} name`,value:d.name,placeholder:`${h} name`,spellCheck:!1,onChange:a=>av(c,e,{name:a.target.value})})}),meta:_(f,h),children:(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("input",{className:W,"aria-label":`${d.name||h} (${h})`,value:d.value,placeholder:f?.example,spellCheck:!1,onChange:a=>av(c,e,{value:a.target.value})}),!g&&(0,b.jsx)("button",{type:"button","aria-label":`Remove this ${h}`,title:"Remove",onClick:()=>I(a=>({...a,[c]:a[c].filter((a,b)=>b!==e)})),className:"grid size-8 shrink-0 place-items-center rounded-md text-ink-soft hover:bg-hover",children:(0,b.jsx)(i.f,{size:15,"aria-hidden":!0})})]})},`${c}-${e}`)}))]}),(0,b.jsxs)("div",{className:"mb-3 flex flex-wrap gap-2",children:[(0,b.jsxs)(m.K,{size:"sm",variant:"ghost",onClick:()=>aw("query"),children:[(0,b.jsx)(e.f,{size:14,"aria-hidden":!0}),"Query parameter"]}),(0,b.jsxs)(m.K,{size:"sm",variant:"ghost",onClick:()=>aw("headers"),children:[(0,b.jsx)(e.f,{size:14,"aria-hidden":!0}),"Header"]})]}),aq&&(0===ar.length?(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:["No model is on — switch one on under ",(0,b.jsx)(j.default,{href:"/ai/models",className:"text-brand",children:"Models"}),"."]}):(0,b.jsxs)("div",{className:"mb-3 flex flex-col gap-[5px]",children:[(0,b.jsx)("label",{htmlFor:"api-model",className:"text-[13px] font-medium",children:"Model"}),(0,b.jsxs)("select",{id:"api-model",className:(0,o.f)(W,"max-w-[420px]"),value:as&&ar.some(a=>a.id===as)?as:"",onChange:a=>{a.target.value&&function(a){var b;let c,d=(b=G.body,(c=F(b.trim()))?{ok:!0,body:H(c,a,b.trim().includes("\n"))}:{ok:!1,error:"The body isn't valid JSON, so the model can't be set. Fix the JSON or edit the model by hand."});if(!d.ok)return al(d.error);al(null),I(a=>({...a,body:d.body}))}(a.target.value)},children:[!(as&&ar.some(a=>a.id===as))&&(0,b.jsx)("option",{value:"",children:as?`${as} (not on)`:"Pick a model"}),ar.map(a=>(0,b.jsx)("option",{value:a.id,children:a.isDefault?`${a.id} (default)`:a.id},a.id))]}),ak&&(0,b.jsx)("span",{role:"alert",className:"text-[12.5px] text-err",children:ak})]})),void 0!==a.body&&(0,b.jsxs)("div",{className:"mb-3.5 flex flex-col gap-[5px]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{htmlFor:"api-body",className:"text-[13px] font-medium",children:"JSON body"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",className:"ml-auto",onClick:function(){try{I(a=>({...a,body:JSON.stringify(JSON.parse(a.body),null,2)}))}catch{l.c.error("The body isn't valid JSON, so it can't be formatted.")}},children:"Format"})]}),(0,b.jsx)("textarea",{id:"api-body",value:G.body,onChange:a=>{al(null),I(b=>({...b,body:a.target.value}))},spellCheck:!1,className:(0,o.f)(W,"min-h-[150px] resize-y")}),a.bodyDescription&&(0,b.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:a.bodyDescription})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)(m.K,{variant:"primary",onClick:ax,disabled:K,children:[(0,b.jsx)(d.f,{size:16,"aria-hidden":!0}),K?"Sending…":"Send"]}),(0,b.jsx)(m.K,{onClick:()=>af(a=>!a),"aria-expanded":ae,children:"Save as example"}),(0,b.jsx)(m.K,{variant:"ghost",onClick:function(){I(M(a)),ab(null),ad(null),af(!1),l.c.success("Request reset to the starting values.")},children:"Reset"})]}),ae&&(0,b.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,b.jsx)("input",{className:(0,o.f)(m.S,"max-w-[280px]"),"aria-label":"Example name",placeholder:"Example name",value:ag,maxLength:60,autoFocus:!0,onChange:a=>ah(a.target.value),onKeyDown:a=>{"Enter"===a.key&&ay(),"Escape"===a.key&&af(!1)}}),(0,b.jsx)(m.K,{size:"sm",variant:"primary",onClick:ay,children:"Save"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>af(!1),children:"Cancel"}),(0,b.jsxs)("span",{className:"text-[12.5px] text-ink-soft",children:["Stored in this browser only, without the key",aD.some(a=>a.secret)?" or the token":"","."]})]})]})]}),!a.docsOnly&&(0,b.jsxs)(m.N,{title:"Response",children:[(0,b.jsxs)("div",{"aria-live":"polite",children:[V&&(0,b.jsx)("p",{role:"alert",className:"mb-3 text-[13px] text-err",children:V}),K&&!ac&&(0,b.jsx)("p",{className:"text-ink-soft",children:"Sending…"}),!ac&&!K&&!V&&(0,b.jsx)(m.k,{icon:f.f,title:"No request yet",children:"Send to see the status, headers, timing and body."}),ac&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"mb-2.5 flex flex-wrap items-center gap-x-3.5 gap-y-1 text-[13px]",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 font-medium",children:[(0,b.jsx)(n.Z,{state:ac.tone}),(u=ac.status,v=ac.statusText,`${u} ${v||Q[u]||""}`.trim())]}),(0,b.jsxs)("span",{className:"font-mono text-ink-soft",children:[ac.ms," ms"]}),(0,b.jsx)("span",{className:"font-mono text-ink-soft",children:(y=ac.bytes)<1024?`${y} B`:`${(y/1024).toFixed(1)} KB`}),(0,b.jsxs)(m.K,{size:"sm",variant:"ghost",className:"ml-auto",onClick:aB,children:[(0,b.jsx)(c.f,{size:14,"aria-hidden":!0}),"Copy body"]})]}),at&&(0,b.jsxs)("p",{className:"mb-2.5 text-[13px] text-ink-soft",children:["That model is off or unknown. Pick one from the Model list, or switch it on under ",(0,b.jsx)(j.default,{href:"/ai/models",className:"text-brand",children:"Models"}),"."]}),(0,b.jsxs)("details",{className:"mb-2.5",children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[13px] text-ink-soft",children:["Response headers (",ac.headers.length,")"]}),(0,b.jsx)("pre",{className:"m-0 mt-1.5 overflow-x-auto rounded-md bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:ac.headers.map(([a,b])=>`${a}: ${b}`).join("\n")})]}),(0,b.jsx)("pre",{className:"m-0 max-h-[460px] overflow-auto rounded-md bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:ac.body||"(empty body)"}),ac.truncated&&(0,b.jsx)("p",{className:"mt-1.5 text-[12.5px] text-ink-soft",children:"Only the first 200,000 characters are shown."})]})]}),(0,b.jsx)("div",{className:"mt-3.5",children:aC})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-4 min-[1100px]:grid-cols-2",children:[!a.docsOnly&&(0,b.jsxs)(m.N,{title:"Saved examples",meta:(0,b.jsx)("span",{children:"this browser"}),children:[(0,b.jsxs)("ul",{className:"m-0 list-none p-0",children:[(a.examples??[]).map(a=>(0,b.jsxs)("li",{className:"flex items-center gap-2 border-b border-line py-[7px] last:border-0",children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 [overflow-wrap:anywhere]",children:a.name}),(0,b.jsx)("span",{className:"text-xs text-ink-faint",children:"from the spec"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aA(a.name,a),children:"Load"})]},`spec-${a.name}`)),ao.map(a=>(0,b.jsx)("li",{className:"flex items-center gap-2 border-b border-line py-[7px] last:border-0",children:ai?.id===a.id?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{className:(0,o.f)(m.S,"min-w-0 flex-1"),"aria-label":"New name",value:ai.name,maxLength:60,autoFocus:!0,onChange:b=>aj({id:a.id,name:b.target.value}),onKeyDown:a=>{"Enter"===a.key&&az(),"Escape"===a.key&&aj(null)}}),(0,b.jsx)(m.K,{size:"sm",variant:"primary",onClick:az,children:"Save"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aj(null),children:"Cancel"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 [overflow-wrap:anywhere]",children:a.name}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aA(a.name,{query:a.query,path:a.path,headers:a.headers,body:a.body}),children:"Load"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aj({id:a.id,name:a.name}),children:"Rename"}),(0,b.jsx)("button",{type:"button","aria-label":`Delete ${a.name}`,title:"Delete",onClick:()=>(function(a){let b;Z((b=a.id,an.filter(a=>a.id!==b)))?l.c.success(`Deleted “${a.name}”.`):l.c.error("This browser blocked saving. Examples need localStorage.")})(a),className:"grid size-8 place-items-center rounded-md text-ink-soft hover:bg-hover",children:(0,b.jsx)(h,{size:15,"aria-hidden":!0})})]})},a.id))]}),!a.examples?.length&&!ao.length&&(0,b.jsx)("p",{className:"m-0 text-[13px] text-ink-soft",children:"No saved examples yet. Fill in a request and use Save as example."})]}),(0,b.jsx)(m.N,{title:"Snippets",meta:(0,b.jsx)("span",{children:(r=x(q=a))?`the secret comes from $${r}`:"token"===q.access?"the token comes from $HEARTBEAT_TOKEN":"no key needed"}),className:a.docsOnly?"min-[1100px]:col-span-2":void 0,children:(0,b.jsx)(S,{snippets:au})})]}),a.docsOnly&&(0,b.jsx)(m.N,{title:"Example response",children:aC})]})}a.s(["Explorer",0,function({opId:a,origin:c,models:d=D}){var e;let f=a?v.find(b=>b.id===a):void 0;return f?(0,b.jsx)(aa,{op:(e=d.defaultModel)&&J(f)?{...f,body:I(f.body,e),examples:f.examples?.map(a=>({...a,body:I(a.body,e)}))}:f,origin:c,models:d}):null}],352078)}];
|
|
1
|
+
module.exports=[352078,a=>{"use strict";var b=a.i(187924),c=a.i(218024),d=a.i(908161),e=a.i(817748),f=a.i(282269),g=a.i(449862);let h=(0,g.f)("outline","trash","Trash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var i=a.i(851519),j=a.i(238246),k=a.i(572131),l=a.i(823292),m=a.i(619089),n=a.i(286597),o=a.i(368114),p=a.i(901615),q=a.i(147474);let r={name:"X-Client",in:"header",type:"string",required:!1,default:"api-explorer",example:"my-agent/1.0",description:"Names the caller as an agent (name/version) when the request doesn't say it otherwise. The API explorer sends api-explorer."},s=JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Say hello in five words."}],stream:!1},null,2),t=JSON.stringify({generatedAt:"2026-10-13T00:41:12.000Z",apps:[{id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}]},{id:"acme-shop",state:"degraded",uptime30d:99.9,database:"db-b",lastDeploy:"9f3c2a1 · 3 days ago",problems:[{kind:"database",where:"Database db-b",what:"Paused",fix:"Restore the database from its provider (Supabase restore)"}]}],monitors:{up:6,degraded:1,down:1,paused:0,items:[{app:"orbit-blog",path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71,lastCheckedAt:"2026-10-13T00:41:00.000Z"}]},alerts:{open:5,critical:1,items:[{title:"orbit-blog is down",severity:"critical",app:"orbit-blog",since:"2026-10-13T00:37:00.000Z",message:"HTTP 502 on /."}]},advisor:[{title:"Next.js 15 reaches end of life on 21 Oct 2026",app:"acme-shop",severity:"warning"}]},null,2),u=JSON.stringify({id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}],monitors:[{path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71}]},null,2),v=JSON.stringify({app:"orbit-blog",notes:[{id:"5b0f8e0c-2f0a-4b53-9d54-6c1f0d6f6a11",severity:"warn",title:"Deploy failed twice today",body:"The last two production deploys failed at the build step. Roll back to the previous deployment, then fix the build and redeploy.",source:p.U.noteSource,model:"gemini-3.8-flash",createdAt:"2026-10-13T01:02:03.000Z"}]},null,2),w=[{id:"ai-chat",operationId:"createChatCompletion",tag:"AI",method:"post",path:"/api/v1/ai/chat/completions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Chat completion (OpenAI-compatible)",description:"Forwards to the provider that owns the model (provider/model, or the default provider for a bare id), over its OpenAI-compatible endpoint. stream: true answers text/event-stream. Fields outside the OpenAI chat schema are rejected.",docsOnly:!1,params:[r],body:s,bodyDescription:"An OpenAI chat completion request.",response:{status:200,contentType:"application/json",description:"The provider's answer, with the model id as Watchbell names it.",example:JSON.stringify({id:"chatcmpl-wp-01JA8",object:"chat.completion",created:0x6ad01318,model:"gemini/gemini-3.8-flash",choices:[{index:0,finish_reason:"stop",message:{role:"assistant",content:"Hello there, nice to meet!"}}],usage:{prompt_tokens:9,completion_tokens:7,total_tokens:16}},null,2)},examples:[{name:"Hello in five words",body:s},{name:"Streaming (SSE)",body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Count to five."}],stream:!0},null,2)},{name:p.U.advisorExample.name,body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"system",content:p.U.advisorExample.system},{role:"user",content:p.U.advisorExample.user}],max_tokens:400},null,2)}]},{id:"ai-models",operationId:"listModels",tag:"AI",method:"get",path:"/api/v1/ai/models",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"List enabled models",description:`The models turned on under AI Gateway › Models, in OpenAI's list format. Provider models are provider/model, owned_by watchbell, and work with /api/v1/ai/chat/completions. ${p.U.modelsAgSentence}A key pinned to a provider or model sees only that.`,docsOnly:!1,params:[r],response:{status:200,contentType:"application/json",description:"An OpenAI-style model list.",example:JSON.stringify({object:"list",data:[{id:"gemini/gemini-3.8-flash",object:"model",created:0,owned_by:"watchbell"},...p.U.agModelExamples]},null,2)}},{id:"ai-questions",operationId:"askQuestion",tag:"AI",method:"post",path:"/api/v1/ai/questions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Ask a question about the console",description:`Asks a question about the console, answered from scrubbed console data (names aliased, no URLs, emails or keys). 1-2000 characters; text that looks like a key or token is refused with 400. Optional model from GET /api/v1/ai/models. Left out, or a provider model id (provider/model, e.g. test/prrojects): the owner's own provider answers in this request (a router combo can take ~25 s) and you get 201 with the answer; the question and answer are kept 7 days (GET pollUrl reads them back, the owner sees them under AI › Ask). A provider error answers with the gateway's message (400 model_not_enabled, 429, 502 upstream_error, 503 provider_not_connected) and nothing is stored.${p.U.askAgSentence}`,docsOnly:!1,params:[r],body:JSON.stringify({question:"Is anything about to run out this week?"},null,2),bodyDescription:"question: 1-2000 characters, plain text or markdown. model (optional): a provider model id or an ag/<id> from GET /api/v1/ai/models; left out = the default provider's default model.",response:{status:201,contentType:"application/json",description:"Answered now by the owner's provider. pollUrl reads the stored question back.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",answer:"Nothing runs out this week. db-a is at 81% of its storage; plan a cleanup within a month.",answeredBy:{client:"watchpost",model:"test/prrojects"},askedAt:"2026-10-14T00:40:00.000Z",answeredAt:"2026-10-14T00:40:24.000Z",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)},alsoResponses:[{status:202,contentType:"application/json",description:p.U.queued,example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"pending",askedAt:"2026-10-13T07:40:00.000Z",requestedModel:"ag/gemini-3.8-flash-high",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)}]},{id:"ai-question",operationId:"getQuestion",tag:"AI",method:"get",path:"/api/v1/ai/questions/{id}",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"A question and its answer",description:`One question this key asked with POST /api/v1/ai/questions, for 7 days. status is pending, answered or expired (no answer within 7 days). answer is the markdown answer (up to 8000 characters) from the owner's provider (answeredBy.client watchbell) or ${p.U.answeredByAgent}. Another key's or the owner's questions answer 404 like an unknown id. requestedModel is the ag/<id> asked for, or null (default).`,docsOnly:!1,params:[{name:"id",in:"path",type:"string",required:!0,example:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",description:"The id from POST /api/v1/ai/questions."},r],response:{status:200,contentType:"application/json",description:"The question; answer and answeredBy are null until it is answered.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",question:"Is anything about to run out this week?",requestedModel:"ag/gemini-3.8-flash-high",answer:"Two things: the **db-b** Supabase project pauses on Friday without traffic, and the certificate of app-a renews automatically.",answeredBy:{client:p.U.answeredByClient,model:"gemini-3.8-flash-high"},askedAt:"2026-10-13T07:40:00.000Z",answeredAt:"2026-10-13T07:41:12.000Z"},null,2)}},{id:"status",operationId:"getStatus",tag:"Console",method:"get",path:"/api/v1/status",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Console summary",description:"Apps, monitors, open alerts and the advisor, scrubbed: database aliases, no URLs, emails or secrets.",docsOnly:!1,params:[{name:"include",in:"query",type:"string",required:!1,example:"apps,alerts",description:"Comma-separated sections to return: apps, monitors, alerts, advisor. Default: all four."},r],response:{status:200,contentType:"application/json",description:"The requested sections of the console snapshot.",example:t},examples:[{name:"Everything"},{name:"Only alerts",query:{include:"alerts"}}]},{id:"status-app",operationId:"getAppStatus",tag:"Console",method:"get",path:"/api/v1/status/apps/{app}",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"One app with its Why problems",description:"Same shape as one entry of apps[], plus its monitors and the remedies. The app is its name or console id; 404 not_found when it isn't a watched app.",docsOnly:!1,params:[{name:"app",in:"path",type:"string",required:!0,example:"orbit-blog",description:"The app's name (as in apps[].id) or console id."},r],response:{status:200,contentType:"application/json",description:"One app.",example:u}},{id:"advice",operationId:"getAppAdvice",tag:"Console",method:"get",path:"/api/v1/advice",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Latest AI notes for one app",description:`The newest AI notes (up to 5, not dismissed) that ${p.U.adviceAgent} wrote about the app, scrubbed like /status. ${p.U.adviceFor} for the app by name or id; 404 not_found when it isn't a watched app.`,docsOnly:!1,params:[{name:"app",in:"query",type:"string",required:!0,example:"orbit-blog",description:"The app's name or console id."},r],response:{status:200,contentType:"application/json",description:"The app and its latest notes, newest first (an empty list when there are none).",example:v}},{id:"me",operationId:"getMe",tag:"Console",method:"get",path:"/api/v1/me",access:"key",scope:"any",scopeLabel:"any key",summary:"The calling key",description:"Name, prefix, scopes, rate limit and expiry of the key you send. Handy to test a key.",docsOnly:!1,params:[r],response:{status:200,contentType:"application/json",description:"The key's public details (never the key or its hash).",example:JSON.stringify({name:"laptop-agents",prefix:"wb_Lm9x",scopes:["ai:invoke","read:status"],rateLimitPerMin:30,expiresAt:null},null,2)}},{id:"openapi",operationId:"getOpenApi",tag:"Console",method:"get",path:"/api/v1/openapi.json",access:"keyOrOwner",scope:"any",scopeLabel:"any key or owner session",summary:"This OpenAPI 3.1 document",description:"The description every endpoint of this page is built from. Needs any valid key, or the owner's signed-in session (so the download button works).",docsOnly:!1,params:[r],response:{status:200,contentType:"application/json",description:"An OpenAPI 3.1 document.",example:JSON.stringify({openapi:"3.1.0",info:{title:"Watchbell API",version:"1.0.0"},paths:{"/api/v1/status":{get:{operationId:"getStatus"}}}},null,2)}},{id:"mcp",operationId:"mcpRpc",tag:"MCP",method:"post",path:"/api/v1/mcp",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"MCP server (Streamable HTTP)",description:`JSON-RPC 2.0 for Model Context Protocol clients (${p.U.mcpClients}). initialize, tools/list and tools/call for the read-only tools; submit_ai_note needs write:notes. Answers JSON (no server-sent stream needed); GET and DELETE answer 405.`,docsOnly:!1,params:[{name:"Accept",in:"header",type:"string",required:!0,default:"application/json, text/event-stream",description:"Both types, as the MCP transport requires."},{name:"MCP-Protocol-Version",in:"header",type:"string",required:!1,default:"2025-06-18",description:"The protocol revision the client speaks."},r],body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2),bodyDescription:"One JSON-RPC 2.0 message (batches are rejected).",response:{status:200,contentType:"application/json",description:"The JSON-RPC response.",example:JSON.stringify({jsonrpc:"2.0",id:1,result:{tools:[{name:"list_apps",description:"Every app with its state …"},{name:"get_app",description:"One app with its Why problems …"}]}},null,2)},examples:[{name:"tools/list",body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2)},{name:"tools/call get_app",body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/call",params:{name:"get_app",arguments:{app:"orbit-blog"}}},null,2)},{name:"initialize",body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"api-explorer",version:"1.0"}}},null,2)}]},{id:"health",operationId:"getHealth",tag:"Health",method:"get",path:"/api/health",access:"none",scope:null,scopeLabel:"no key",summary:"Liveness check",description:"Answers 200 while the console is up. Public, no database read; point an uptime checker at it.",docsOnly:!1,params:[],response:{status:200,contentType:"application/json",description:"Always ok while the console answers.",example:JSON.stringify({ok:!0,service:"watchbell"},null,2)}},{id:"ping",operationId:"pingHeartbeat",tag:"Heartbeats",method:"post",path:"/api/ping/{token}",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat ping (GET and HEAD work too)",description:"A job tells Watchbell it ran. The token is shown once when the heartbeat monitor is created; Watchbell keeps only its hash, so this page can't fill it in. Paste it below to try a ping: it is used for this request only and never stored. A real ping changes the monitor's state.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token (hb_ and 32 hex characters)."}],response:{status:200,contentType:"text/plain",description:"OK; 404 for an unknown token, 429 when pinged too often.",example:"OK"}},{id:"ping-start",operationId:"pingHeartbeatStart",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/start",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job started",description:"Marks the start of a run. If no OK ping follows within the grace time the monitor is down. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"ping-fail",operationId:"pingHeartbeatFail",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/fail",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job failed",description:"Reports a failure; the monitor goes down at once. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"collect",operationId:"runCollector",tag:"Scheduler",method:"post",path:"/api/collect",access:"secret",scope:null,scopeLabel:"scheduler secret",summary:"Collector run",description:"Called every minute by cron-job.org with Authorization: Bearer <COLLECTOR_SECRET>. Docs only: Try it would need the secret.",docsOnly:!0,bearerEnv:"COLLECTOR_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The run's summary.",example:JSON.stringify({ok:!0,ran:["monitors","deployments"],errors:[]},null,2)}},{id:"watchdog",operationId:"runWatchdog",tag:"Scheduler",method:"post",path:"/api/watchdog",access:"secret",scope:null,scopeLabel:"QStash signature",summary:"Watchdog",description:"Called by Upstash QStash every 5 minutes with an Upstash-Signature header. Docs only.",docsOnly:!0,params:[],response:{status:200,contentType:"application/json",description:"Whether the collector looked stale.",example:JSON.stringify({stale:!1},null,2)}},{id:"daily",operationId:"runDaily",tag:"Scheduler",method:"get",path:"/api/daily",access:"secret",scope:null,scopeLabel:"cron secret",summary:"Daily job",get description(){return`Vercel Cron at ${(0,q.Q)()} with Authorization: Bearer <CRON_SECRET>. Docs only.`},docsOnly:!0,bearerEnv:"CRON_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The job's summary.",example:JSON.stringify({ok:!0,errors:[]},null,2)}}],x=a=>"key"===a.access||"keyOrOwner"===a.access,y=a=>a.bearerEnv??(x(a)?"WATCHBELL_API_KEY":null),z="watchpost.explorer.examples.v1",A=new Set(["authorization","cookie","proxy-authorization"]),B=/\bw[bp]_[A-Za-z0-9]{20,}|\bhb_[0-9a-f]{32}\b|\bsk-[A-Za-z0-9_-]{20,}|\bAIza[0-9A-Za-z_-]{30,}|\bgsk_[A-Za-z0-9]{20,}/,C=a=>"object"==typeof a&&null!==a&&!Array.isArray(a)&&Object.values(a).every(a=>"string"==typeof a);function D(a){return"object"==typeof a&&null!==a&&"string"==typeof a.id&&"string"==typeof a.opId&&"string"==typeof a.name&&a.name.length>0&&a.name.length<=60&&C(a.path)&&C(a.query)&&C(a.headers)&&"string"==typeof a.body&&a.body.length<=2e4&&"string"==typeof a.savedAt}let E={defaultModel:null,options:[]},F=new Set(["/api/v1/ai/questions"]);function G(a){try{let b=JSON.parse(a);return"object"!=typeof b||null===b||Array.isArray(b)?null:b}catch{return null}}let H=a=>{let b=a?G(a):null;return!!b&&Object.hasOwn(b,"model")};function I(a,b,c){let d=Object.hasOwn(a,"model")?{...a,model:b}:{model:b,...a};return c?JSON.stringify(d,null,2):JSON.stringify(d)}let J=(a,b)=>void 0!==a&&H(a)?I(G(a),b,a.includes("\n")):a,K=a=>void 0!==a.body&&(H(a.body)||(a.examples??[]).some(a=>H(a.body))),L={get:"bg-teal-soft text-teal",post:"bg-brand-soft text-brand",head:"bg-gray-soft text-ink-soft"};function M({method:a,className:c}){return(0,b.jsx)("span",{className:(0,o.f)("inline-block min-w-[46px] rounded-[4px] px-[5px] py-px text-center font-mono text-[11px] font-medium",L[a],c),children:a.toUpperCase()})}function N(a){return{path:Object.fromEntries(a.params.filter(a=>"path"===a.in).map(a=>[a.name,a.default??""])),query:a.params.filter(a=>"query"===a.in).map(a=>({name:a.name,value:a.default??""})),headers:a.params.filter(a=>"header"===a.in).map(a=>({name:a.name,value:a.default??""})),body:a.body??""}}let O=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,P=/^[\x20-\x7e]*$/,Q=new Set(["authorization","cookie","proxy-authorization","host","content-length"]),R={200:"OK",201:"Created",202:"Accepted",204:"No Content",301:"Moved Permanently",302:"Found",304:"Not Modified",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",408:"Request Timeout",413:"Payload Too Large",429:"Too Many Requests",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"},S=(0,g.f)("outline","check","Check",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);function T({snippets:a}){let[d,e]=(0,k.useState)(0),[f,g]=(0,k.useState)(!1),h=(0,k.useId)(),i=a[Math.min(d,a.length-1)];async function j(){try{await navigator.clipboard.writeText(i.code),g(!0),setTimeout(()=>g(!1),1500)}catch{l.c.error("Couldn't copy. Select the text and copy it.")}}return(0,b.jsxs)("div",{className:"mt-1 overflow-hidden rounded-lg border border-line",children:[(0,b.jsxs)("div",{className:"flex items-center gap-0.5 overflow-x-auto border-b border-line bg-surface-2 px-1.5",role:"tablist","aria-label":"Snippet language",children:[a.map((a,c)=>(0,b.jsx)("button",{type:"button",role:"tab",id:`${h}-t${c}`,"aria-selected":c===d,"aria-controls":`${h}-p`,onClick:()=>e(c),className:(0,o.f)("-mb-px whitespace-nowrap border-b-2 border-transparent px-2.5 py-2 text-[13px] text-ink-soft",c===d&&"border-brand font-medium text-ink"),children:a.label},a.label)),(0,b.jsxs)(m.K,{size:"sm",className:"my-1 ml-auto",onClick:j,children:[f?(0,b.jsx)(S,{size:14,"aria-hidden":!0}):(0,b.jsx)(c.f,{size:14,"aria-hidden":!0}),f?"Copied":"Copy"]})]}),(0,b.jsx)("pre",{id:`${h}-p`,role:"tabpanel","aria-labelledby":`${h}-t${d}`,tabIndex:0,className:"m-0 overflow-x-auto bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:i.code})]})}let U=a=>`'${a.replace(/'/g,"'\\''")}'`,V=a=>{try{return JSON.stringify(JSON.parse(a))}catch{return a.trim()}},W="watchpost:explorer-examples",X=(0,o.f)(m.S,"font-mono text-[12.5px]");function Y(a){return window.addEventListener("storage",a),window.addEventListener(W,a),()=>{window.removeEventListener("storage",a),window.removeEventListener(W,a)}}function Z(){try{return window.localStorage.getItem(z)}catch{return null}}function $(a){try{return window.localStorage.setItem(z,JSON.stringify(a)),window.dispatchEvent(new Event(W)),!0}catch{return!1}}function _({name:a,meta:c,children:d}){return(0,b.jsxs)("div",{className:"flex flex-col gap-1 min-[720px]:contents",children:[(0,b.jsx)("span",{className:"font-mono",children:a}),(0,b.jsx)("span",{className:"text-ink-faint",children:c}),d]})}let aa=(a,b)=>a?`${b} \xb7 ${a.type}${a.required?" · required":""}`:`${b} \xb7 string`;function ab({op:a,origin:g,models:p}){var q;let r,s,t,u,v,w,[z,C]=(0,k.useState)(""),[E,H]=(0,k.useState)(()=>N(a)),[J,L]=(0,k.useState)(!1),[S,W]=(0,k.useState)(null),[ac,ad]=(0,k.useState)(null),[ae,af]=(0,k.useState)(!1),[ag,ah]=(0,k.useState)(""),[ai,aj]=(0,k.useState)(null),[ak,al]=(0,k.useState)(null),am=(0,k.useSyncExternalStore)(Y,Z,()=>null),an=(0,k.useMemo)(()=>(function(a){if(!a)return[];try{let b=JSON.parse(a);return Array.isArray(b)?b.filter(D).filter(a=>!B.test(JSON.stringify(a))).slice(0,100):[]}catch{return[]}})(am),[am]),ao=(s=a.id,an.filter(a=>a.opId===s)),ap=x(a),aq=K(a),ar=F.has(a.path)?p.options:p.options.filter(a=>!a.async),as=(t=G(E.body))&&"string"==typeof t.model?t.model:null,at=null!==ac&&function(a){if(400!==a.status)return!1;let b=G(a.body),c=b?.error;return"object"==typeof c&&null!==c&&"model_not_enabled"===c.type}(ac),au=(0,k.useMemo)(()=>(function(a,b,c={}){var d;let e,f=function(a,b,c){let d=[],e=a=>{let b=d.at(-1);b&&"lit"in b&&"lit"in a?b.lit+=a.lit:d.push(a)},f=b.replace(/\/+$/,"")+a.path;for(let b of a.params.filter(a=>"path"===a.in)){let a=f.indexOf(`{${b.name}}`);e({lit:f.slice(0,a)}),e(b.secret?{env:"HEARTBEAT_TOKEN"}:{lit:encodeURIComponent((c.path?.[b.name]??"").trim()||b.example||`{${b.name}}`)}),f=f.slice(a+b.name.length+2)}e({lit:f});let g=new URLSearchParams;for(let a of c.query??[])a.name.trim()&&a.value.trim()&&g.append(a.name.trim(),a.value.trim());return g.size&&e({lit:`?${g.toString()}`}),d}(a,b,c),g=a.method.toUpperCase(),h=y(a),i=void 0!==a.body?(c.body??a.body).trim():"",j=(d=""!==i,e=(c.headers??[]).map(a=>[a.name.trim(),a.value.trim()]).filter(([a,b])=>a&&b&&"authorization"!==a.toLowerCase()&&("x-client"!==a.toLowerCase()||"api-explorer"!==b)),d&&!e.some(([a])=>"content-type"===a.toLowerCase())&&e.push(["Content-Type","application/json"]),e),k=(a.response?.contentType??"").includes("json"),l=[`curl -X ${g} ${f.some(a=>"env"in a)?`"${f.map(a=>"lit"in a?a.lit.replace(/[\\"$`]/g,"\\$&"):`$\{${a.env}}`).join("")}"`:U(f.map(a=>"lit"in a?a.lit:"").join(""))}`,...h?[`-H "Authorization: Bearer $${h}"`]:[],...j.map(([a,b])=>`-H ${U(`${a}: ${b}`)}`),...i?[`-d ${U(V(i))}`]:[]].join(" \\\n "),m=[`curl.exe -X ${g} "${f.map(a=>"lit"in a?a.lit.replace(/[`"$]/g,"`$&"):`$\{env:${a.env}}`).join("")}"`,...h?[`-H "Authorization: Bearer $\{env:${h}}"`]:[],...j.map(([a,b])=>`-H "${`${a}: ${b}`.replace(/[`"$]/g,"`$&")}"`),...i?[`--data-raw '${V(i).replace(/'/g,"''").replace(/"/g,'\\"')}'`]:[]].join(" `\n "),n=[...h?[`Authorization: \`Bearer $\{process.env.${h}}\``]:[],...j.map(([a,b])=>`${/^[A-Za-z_$][\w$]*$/.test(a)?a:JSON.stringify(a)}: ${JSON.stringify(b)}`)],o="";if(i)try{o=`JSON.stringify(${JSON.stringify(JSON.parse(i),null,2).replace(/\n/g,"\n ")})`}catch{o=JSON.stringify(i)}return[{label:"curl",code:l},{label:"PowerShell",code:m},{label:"JavaScript (fetch)",code:[`const res = await fetch(${f.some(a=>"env"in a)?`\`${f.map(a=>"lit"in a?a.lit.replace(/[\\`]|\$\{/g,"\\$&"):`$\{process.env.${a.env}}`).join("")}\``:JSON.stringify(f.map(a=>"lit"in a?a.lit:"").join(""))}, {`,` method: "${g}",`,...n.length?[" headers: {",...n.map(a=>` ${a},`)," },"]:[],...o?[` body: ${o},`]:[],"});",`console.log(res.status, await res.${k?"json":"text"}());`].join("\n")}]})(a,g,{path:E.path,query:E.query,headers:E.headers,body:E.body}),[a,g,E]),av=(a,b,c)=>H(d=>({...d,[a]:d[a].map((a,d)=>d===b?{...a,...c}:a)})),aw=a=>H(b=>({...b,[a]:[...b[a],{name:"",value:""}]}));async function ax(){let b=function(a,b,c,d){let e,f=a.path;for(let c of a.params.filter(a=>"path"===a.in)){let a=(b.path[c.name]??"").trim();if(!a)return{ok:!1,error:`Fill in the path parameter ${c.name}.`};f=f.replace(`{${c.name}}`,encodeURIComponent(a))}let g=new URLSearchParams;for(let c of b.query){let b=c.name.trim(),d=c.value.trim();if(b){if(!d){if(a.params.some(a=>"query"===a.in&&a.name===b&&a.required))return{ok:!1,error:`Fill in the query parameter ${b}.`};continue}g.append(b,d)}}let h={};for(let a of b.headers){let b=a.name.trim(),c=a.value.trim();if(b||c){if(!O.test(b))return{ok:!1,error:`"${b.slice(0,40)}" isn't a valid header name.`};if(Q.has(b.toLowerCase()))return{ok:!1,error:`${b} can't be set here${"authorization"===b.toLowerCase()?": use the key field":""}.`};if(!P.test(c))return{ok:!1,error:`The value of ${b} has characters a header can't carry.`};c&&(h[b]=c)}}if(x(a)){let b=c.trim();if(!b)return{ok:!1,error:`Paste a console API key first${a.scope&&"any"!==a.scope?` (this endpoint needs ${a.scope})`:""}.`};if(!/^[\x21-\x7e]+$/.test(b))return{ok:!1,error:"That key has spaces or characters a key never has. Paste it again."};h.Authorization=`Bearer ${b}`}if(void 0!==a.body){if(!(e=b.body.trim()))return{ok:!1,error:"The JSON body is empty."};try{JSON.parse(e)}catch(a){return{ok:!1,error:`The body isn't valid JSON${a instanceof SyntaxError?`: ${a.message.slice(0,120)}`:"."}`}}Object.keys(h).some(a=>"content-type"===a.toLowerCase())||(h["Content-Type"]="application/json")}let i=f+(g.size?`?${g.toString()}`:"");return{ok:!0,request:{method:a.method.toUpperCase(),path:i,url:d.replace(/\/+$/,"")+i,headers:h,body:e}}}(a,E,z,g);if(!b.ok){W(b.error),ad(null);return}W(null),L(!0);let c=performance.now();try{let{method:a,path:d,headers:e,body:f}=b.request,g=await fetch(d,{method:a,headers:e,body:f,cache:"no-store",credentials:"omit",signal:AbortSignal.timeout(65e3)}),h=await g.text(),i=[];g.headers.forEach((a,b)=>i.push([b,a])),ad(function(a){let b,c=a.headers.find(([a])=>"content-type"===a.toLowerCase())?.[1]??"",d=a.text;if(c.includes("json")||/^\s*[{[]/.test(a.text))try{d=JSON.stringify(JSON.parse(a.text),null,2)}catch{}let e=d.length>2e5;return{status:a.status,statusText:a.statusText,tone:(b=a.status)>=200&&b<300?"ok":b>=300&&b<400?"warn":"err",ms:Math.round(a.ms),bytes:new TextEncoder().encode(a.text).length,headers:[...a.headers].sort(([a],[b])=>a.localeCompare(b)),body:e?d.slice(0,2e5):d,truncated:e}}({status:g.status,statusText:g.statusText,headers:i,text:h,ms:performance.now()-c}))}catch(a){ad(null),W(a instanceof DOMException&&"TimeoutError"===a.name?"No answer after 65 seconds.":"The request didn't go through. Check that this deployment is reachable and try again.")}finally{L(!1)}}function ay(){var b;let c,d=function(a,b,c,d,e){let f=c.trim();if(!f)return{ok:!1,error:"Give the example a name."};if(f.length>60)return{ok:!1,error:"Use at most 60 characters for the name."};let g=new Set(a.params.filter(a=>a.secret).map(a=>a.name)),h=Object.fromEntries(Object.entries(b.path).filter(([a,b])=>b.trim()&&!g.has(a)).map(([a,b])=>[a,b.trim()])),i=Object.fromEntries(b.query.filter(a=>a.name.trim()&&a.value.trim()).map(a=>[a.name.trim(),a.value.trim()])),j=Object.fromEntries(b.headers.filter(a=>a.name.trim()&&a.value.trim()&&!A.has(a.name.trim().toLowerCase())).map(a=>[a.name.trim(),a.value.trim()])),k=b.body.trim();if(k.length>2e4)return{ok:!1,error:"That body is too long to save as an example."};let l={id:d,opId:a.id,name:f,path:h,query:i,headers:j,body:k,savedAt:e.toISOString()};return B.test(JSON.stringify(l))?{ok:!1,error:"That looks like a key or token. Remove it before saving; examples never keep secrets."}:{ok:!0,example:l}}(a,E,ag,crypto.randomUUID(),new Date);if(!d.ok)return void l.c.error(d.error);let e=(b=d.example,(c=an.find(a=>a.opId===b.opId&&a.name.toLowerCase()===b.name.toLowerCase()))||!(an.length>=100)?{ok:!0,list:c?an.map(a=>a===c?{...b,id:c.id}:a):[...an,b]}:{ok:!1,error:"You can keep 100 examples. Delete one first."});e.ok?$(e.list)?(af(!1),ah(""),l.c.success(`Saved “${d.example.name}” in this browser. Examples never keep the key.`)):l.c.error("This browser blocked saving. Examples need localStorage."):l.c.error(e.error)}function az(){if(!ai)return;let a=function(a,b,c){let d=c.trim();if(!d)return{ok:!1,error:"Give the example a name."};if(d.length>60)return{ok:!1,error:"Use at most 60 characters for the name."};let e=a.find(a=>a.id===b);return e?a.some(a=>a.id!==b&&a.opId===e.opId&&a.name.toLowerCase()===d.toLowerCase())?{ok:!1,error:"This endpoint already has an example with that name."}:{ok:!0,list:a.map(a=>a.id===b?{...a,name:d}:a)}:{ok:!1,error:"That example is gone."}}(an,ai.id,ai.name);a.ok?$(a.list)?aj(null):l.c.error("This browser blocked saving. Examples need localStorage."):l.c.error(a.error)}function aA(b,c){let d,e;H((d=N(a),e=(a,b)=>{if(!b)return a;let c=a.map(a=>a.name in b?{...a,value:b[a.name]}:a);for(let[a,d]of Object.entries(b))c.some(b=>b.name===a)||c.push({name:a,value:d});return c},{path:{...d.path,...c.path??{}},query:e(d.query,c.query),headers:e(d.headers,c.headers),body:c.body??d.body})),W(null),l.c.success(`Loaded “${b}” into the request.`)}async function aB(){try{await navigator.clipboard.writeText(ac?.body??""),l.c.success("Copied the response body.")}catch{l.c.error("Couldn't copy. Select the text and copy it.")}}let aC=a.response&&(0,b.jsxs)("details",{open:a.docsOnly,className:"group",children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[13px] text-ink-soft",children:["Example response · ",(0,b.jsxs)("span",{className:"font-mono",children:[a.response.status," ",a.response.contentType]})]}),(0,b.jsx)("p",{className:"mb-1.5 mt-1.5 text-[13px] text-ink-soft",children:a.response.description}),(0,b.jsx)("pre",{className:"m-0 overflow-x-auto rounded-md bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:a.response.example})]}),aD=a.params.filter(a=>"path"===a.in),aE=aD.length+E.query.length+E.headers.length>0;return(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-4",children:[(0,b.jsxs)(m.N,{title:(0,b.jsxs)("span",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(M,{method:a.method}),(0,b.jsx)("code",{className:"font-mono text-[13px] font-normal [overflow-wrap:anywhere]",children:a.path})]}),meta:(0,b.jsx)("span",{className:"rounded-[4px] border border-line bg-surface-2 px-1.5 font-mono text-xs text-ink-soft",children:a.scopeLabel}),children:[(0,b.jsx)("p",{className:"font-medium",children:a.summary}),a.docsOnly?(0,b.jsx)("div",{className:"mt-3",children:(0,b.jsx)(m.M,{tone:"info",title:"Docs only",children:a.description})}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("p",{className:"mb-3.5 mt-0.5 text-[13px] text-ink-soft",children:a.description}),ap&&(0,b.jsx)(m.O,{id:"api-key",label:"Console API key",help:(0,b.jsxs)(b.Fragment,{children:["Kept in this tab's memory only. Never saved, never sent anywhere but ",(0,b.jsx)("span",{className:"font-mono",children:g}),"."]}),children:(0,b.jsx)("input",{id:"api-key",type:"password",value:z,onChange:a=>C(a.target.value),className:X,autoComplete:"off",spellCheck:!1,"data-1p-ignore":!0,"data-lpignore":"true",placeholder:`wb_… (needs ${"any"===a.scope?"any scope":a.scope})`})}),aE&&(0,b.jsxs)("div",{className:"my-3 grid grid-cols-[minmax(0,1fr)] gap-x-3 gap-y-3 text-[13px] min-[720px]:grid-cols-[150px_120px_minmax(0,1fr)] min-[720px]:items-center min-[720px]:gap-y-2",children:[(0,b.jsx)("span",{className:"hidden text-xs text-ink-faint min-[720px]:block",children:"Name"}),(0,b.jsx)("span",{className:"hidden text-xs text-ink-faint min-[720px]:block",children:"In · type"}),(0,b.jsx)("span",{className:"hidden text-xs text-ink-faint min-[720px]:block",children:"Value"}),aD.map(a=>(0,b.jsx)(_,{name:a.name,meta:aa(a,"path"),children:(0,b.jsx)("input",{className:X,"aria-label":`${a.name} (path)`,value:E.path[a.name]??"",placeholder:a.example,type:a.secret?"password":"text",autoComplete:"off",spellCheck:!1,"data-1p-ignore":!!a.secret||void 0,onChange:b=>H(c=>({...c,path:{...c.path,[a.name]:b.target.value}}))})},`path-${a.name}`)),["query","headers"].flatMap(c=>E[c].map((d,e)=>{let f=a.params.find(a=>a.in===("query"===c?"query":"header")&&a.name===d.name),g=a.params.some(a=>a.in===("query"===c?"query":"header")&&a.name===d.name),h="query"===c?"query":"header";return(0,b.jsx)(_,{name:g?d.name:(0,b.jsx)("span",{className:"flex items-center gap-1",children:(0,b.jsx)("input",{className:X,"aria-label":`${h} name`,value:d.name,placeholder:`${h} name`,spellCheck:!1,onChange:a=>av(c,e,{name:a.target.value})})}),meta:aa(f,h),children:(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("input",{className:X,"aria-label":`${d.name||h} (${h})`,value:d.value,placeholder:f?.example,spellCheck:!1,onChange:a=>av(c,e,{value:a.target.value})}),!g&&(0,b.jsx)("button",{type:"button","aria-label":`Remove this ${h}`,title:"Remove",onClick:()=>H(a=>({...a,[c]:a[c].filter((a,b)=>b!==e)})),className:"grid size-8 shrink-0 place-items-center rounded-md text-ink-soft hover:bg-hover",children:(0,b.jsx)(i.f,{size:15,"aria-hidden":!0})})]})},`${c}-${e}`)}))]}),(0,b.jsxs)("div",{className:"mb-3 flex flex-wrap gap-2",children:[(0,b.jsxs)(m.K,{size:"sm",variant:"ghost",onClick:()=>aw("query"),children:[(0,b.jsx)(e.f,{size:14,"aria-hidden":!0}),"Query parameter"]}),(0,b.jsxs)(m.K,{size:"sm",variant:"ghost",onClick:()=>aw("headers"),children:[(0,b.jsx)(e.f,{size:14,"aria-hidden":!0}),"Header"]})]}),aq&&(0===ar.length?(0,b.jsxs)("p",{className:"mb-3 text-[13px] text-ink-soft",children:["No model is on — switch one on under ",(0,b.jsx)(j.default,{href:"/ai/models",className:"text-brand",children:"Models"}),"."]}):(0,b.jsxs)("div",{className:"mb-3 flex flex-col gap-[5px]",children:[(0,b.jsx)("label",{htmlFor:"api-model",className:"text-[13px] font-medium",children:"Model"}),(0,b.jsxs)("select",{id:"api-model",className:(0,o.f)(X,"max-w-[420px]"),value:as&&ar.some(a=>a.id===as)?as:"",onChange:a=>{a.target.value&&function(a){var b;let c,d=(b=E.body,(c=G(b.trim()))?{ok:!0,body:I(c,a,b.trim().includes("\n"))}:{ok:!1,error:"The body isn't valid JSON, so the model can't be set. Fix the JSON or edit the model by hand."});if(!d.ok)return al(d.error);al(null),H(a=>({...a,body:d.body}))}(a.target.value)},children:[!(as&&ar.some(a=>a.id===as))&&(0,b.jsx)("option",{value:"",children:as?`${as} (not on)`:"Pick a model"}),ar.map(a=>(0,b.jsx)("option",{value:a.id,children:a.isDefault?`${a.id} (default)`:a.id},a.id))]}),ak&&(0,b.jsx)("span",{role:"alert",className:"text-[12.5px] text-err",children:ak})]})),void 0!==a.body&&(0,b.jsxs)("div",{className:"mb-3.5 flex flex-col gap-[5px]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("label",{htmlFor:"api-body",className:"text-[13px] font-medium",children:"JSON body"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",className:"ml-auto",onClick:function(){try{H(a=>({...a,body:JSON.stringify(JSON.parse(a.body),null,2)}))}catch{l.c.error("The body isn't valid JSON, so it can't be formatted.")}},children:"Format"})]}),(0,b.jsx)("textarea",{id:"api-body",value:E.body,onChange:a=>{al(null),H(b=>({...b,body:a.target.value}))},spellCheck:!1,className:(0,o.f)(X,"min-h-[150px] resize-y")}),a.bodyDescription&&(0,b.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:a.bodyDescription})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)(m.K,{variant:"primary",onClick:ax,disabled:J,children:[(0,b.jsx)(d.f,{size:16,"aria-hidden":!0}),J?"Sending…":"Send"]}),(0,b.jsx)(m.K,{onClick:()=>af(a=>!a),"aria-expanded":ae,children:"Save as example"}),(0,b.jsx)(m.K,{variant:"ghost",onClick:function(){H(N(a)),W(null),ad(null),af(!1),l.c.success("Request reset to the starting values.")},children:"Reset"})]}),ae&&(0,b.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[(0,b.jsx)("input",{className:(0,o.f)(m.S,"max-w-[280px]"),"aria-label":"Example name",placeholder:"Example name",value:ag,maxLength:60,autoFocus:!0,onChange:a=>ah(a.target.value),onKeyDown:a=>{"Enter"===a.key&&ay(),"Escape"===a.key&&af(!1)}}),(0,b.jsx)(m.K,{size:"sm",variant:"primary",onClick:ay,children:"Save"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>af(!1),children:"Cancel"}),(0,b.jsxs)("span",{className:"text-[12.5px] text-ink-soft",children:["Stored in this browser only, without the key",aD.some(a=>a.secret)?" or the token":"","."]})]})]})]}),!a.docsOnly&&(0,b.jsxs)(m.N,{title:"Response",children:[(0,b.jsxs)("div",{"aria-live":"polite",children:[S&&(0,b.jsx)("p",{role:"alert",className:"mb-3 text-[13px] text-err",children:S}),J&&!ac&&(0,b.jsx)("p",{className:"text-ink-soft",children:"Sending…"}),!ac&&!J&&!S&&(0,b.jsx)(m.k,{icon:f.f,title:"No request yet",children:"Send to see the status, headers, timing and body."}),ac&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"mb-2.5 flex flex-wrap items-center gap-x-3.5 gap-y-1 text-[13px]",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 font-medium",children:[(0,b.jsx)(n.Z,{state:ac.tone}),(u=ac.status,v=ac.statusText,`${u} ${v||R[u]||""}`.trim())]}),(0,b.jsxs)("span",{className:"font-mono text-ink-soft",children:[ac.ms," ms"]}),(0,b.jsx)("span",{className:"font-mono text-ink-soft",children:(w=ac.bytes)<1024?`${w} B`:`${(w/1024).toFixed(1)} KB`}),(0,b.jsxs)(m.K,{size:"sm",variant:"ghost",className:"ml-auto",onClick:aB,children:[(0,b.jsx)(c.f,{size:14,"aria-hidden":!0}),"Copy body"]})]}),at&&(0,b.jsxs)("p",{className:"mb-2.5 text-[13px] text-ink-soft",children:["That model is off or unknown. Pick one from the Model list, or switch it on under ",(0,b.jsx)(j.default,{href:"/ai/models",className:"text-brand",children:"Models"}),"."]}),(0,b.jsxs)("details",{className:"mb-2.5",children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[13px] text-ink-soft",children:["Response headers (",ac.headers.length,")"]}),(0,b.jsx)("pre",{className:"m-0 mt-1.5 overflow-x-auto rounded-md bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:ac.headers.map(([a,b])=>`${a}: ${b}`).join("\n")})]}),(0,b.jsx)("pre",{className:"m-0 max-h-[460px] overflow-auto rounded-md bg-code-bg px-3.5 py-3 font-mono text-[12.5px] leading-[1.6] text-code-text",children:ac.body||"(empty body)"}),ac.truncated&&(0,b.jsx)("p",{className:"mt-1.5 text-[12.5px] text-ink-soft",children:"Only the first 200,000 characters are shown."})]})]}),(0,b.jsx)("div",{className:"mt-3.5",children:aC})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-4 min-[1100px]:grid-cols-2",children:[!a.docsOnly&&(0,b.jsxs)(m.N,{title:"Saved examples",meta:(0,b.jsx)("span",{children:"this browser"}),children:[(0,b.jsxs)("ul",{className:"m-0 list-none p-0",children:[(a.examples??[]).map(a=>(0,b.jsxs)("li",{className:"flex items-center gap-2 border-b border-line py-[7px] last:border-0",children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 [overflow-wrap:anywhere]",children:a.name}),(0,b.jsx)("span",{className:"text-xs text-ink-faint",children:"from the spec"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aA(a.name,a),children:"Load"})]},`spec-${a.name}`)),ao.map(a=>(0,b.jsx)("li",{className:"flex items-center gap-2 border-b border-line py-[7px] last:border-0",children:ai?.id===a.id?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("input",{className:(0,o.f)(m.S,"min-w-0 flex-1"),"aria-label":"New name",value:ai.name,maxLength:60,autoFocus:!0,onChange:b=>aj({id:a.id,name:b.target.value}),onKeyDown:a=>{"Enter"===a.key&&az(),"Escape"===a.key&&aj(null)}}),(0,b.jsx)(m.K,{size:"sm",variant:"primary",onClick:az,children:"Save"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aj(null),children:"Cancel"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 [overflow-wrap:anywhere]",children:a.name}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aA(a.name,{query:a.query,path:a.path,headers:a.headers,body:a.body}),children:"Load"}),(0,b.jsx)(m.K,{size:"sm",variant:"ghost",onClick:()=>aj({id:a.id,name:a.name}),children:"Rename"}),(0,b.jsx)("button",{type:"button","aria-label":`Delete ${a.name}`,title:"Delete",onClick:()=>(function(a){let b;$((b=a.id,an.filter(a=>a.id!==b)))?l.c.success(`Deleted “${a.name}”.`):l.c.error("This browser blocked saving. Examples need localStorage.")})(a),className:"grid size-8 place-items-center rounded-md text-ink-soft hover:bg-hover",children:(0,b.jsx)(h,{size:15,"aria-hidden":!0})})]})},a.id))]}),!a.examples?.length&&!ao.length&&(0,b.jsx)("p",{className:"m-0 text-[13px] text-ink-soft",children:"No saved examples yet. Fill in a request and use Save as example."})]}),(0,b.jsx)(m.N,{title:"Snippets",meta:(0,b.jsx)("span",{children:(r=y(q=a))?`the secret comes from $${r}`:"token"===q.access?"the token comes from $HEARTBEAT_TOKEN":"no key needed"}),className:a.docsOnly?"min-[1100px]:col-span-2":void 0,children:(0,b.jsx)(T,{snippets:au})})]}),a.docsOnly&&(0,b.jsx)(m.N,{title:"Example response",children:aC})]})}a.s(["Explorer",0,function({opId:a,origin:c,models:d=E}){var e;let f=a?w.find(b=>b.id===a):void 0;return f?(0,b.jsx)(ab,{op:(e=d.defaultModel)&&K(f)?{...f,body:J(f.body,e),examples:f.examples?.map(a=>({...a,body:J(a.body,e)}))}:f,origin:c,models:d}):null}],352078)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_private_explorer_explorer_tsx_04m_tdottspjs._.js.map
|
package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[861600,294965,598513,a=>{"use strict";var b=a.i(137936),c=a.i(118558),d=a.i(600079),e=a.i(109307),f=a.i(221084),g=a.i(312573),h=a.i(323878),i=a.i(920274),j=a.i(713095);async function k(a){return(0,d.F)("owner",async b=>{if("string"!=typeof a||!(0,i.b)(a))return{ok:!1,error:"Something in that request wasn't valid."};let d=await (0,h.C)(g.t.monitorWrite,b.id);if(!d.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,g.H)(d.retryAfter)}.`};let e=await (0,i.$)(a,b.userId,new Date);if(!e)return{ok:!1,error:"That note was already dismissed."};try{await (0,f.f)({kind:"ok",message:`AI note dismissed: ${e.title.slice(0,120)}`,detail:`AiNoteDismissed \xb7 from ${e.from.slice(0,60)}`,resourceId:e.appId&&(0,i.b)(e.appId)?e.appId:null,actorUserId:b.userId})}catch{console.warn("audit event failed")}return(0,c.refresh)(),{ok:!0,message:"Note dismissed."}},{requireActionMember:e.g},"local")}(0,j.ensureServerEntryExports)([k]),(0,b.registerServerReference)(k,"
|
|
1
|
+
module.exports=[861600,294965,598513,a=>{"use strict";var b=a.i(137936),c=a.i(118558),d=a.i(600079),e=a.i(109307),f=a.i(221084),g=a.i(312573),h=a.i(323878),i=a.i(920274),j=a.i(713095);async function k(a){return(0,d.F)("owner",async b=>{if("string"!=typeof a||!(0,i.b)(a))return{ok:!1,error:"Something in that request wasn't valid."};let d=await (0,h.C)(g.t.monitorWrite,b.id);if(!d.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,g.H)(d.retryAfter)}.`};let e=await (0,i.$)(a,b.userId,new Date);if(!e)return{ok:!1,error:"That note was already dismissed."};try{await (0,f.f)({kind:"ok",message:`AI note dismissed: ${e.title.slice(0,120)}`,detail:`AiNoteDismissed \xb7 from ${e.from.slice(0,60)}`,resourceId:e.appId&&(0,i.b)(e.appId)?e.appId:null,actorUserId:b.userId})}catch{console.warn("audit event failed")}return(0,c.refresh)(),{ok:!0,message:"Note dismissed."}},{requireActionMember:e.g},"local")}(0,j.ensureServerEntryExports)([k]),(0,b.registerServerReference)(k,"40f8b6487483bb441745ee517c1fa6eb89ad4b1127",null),a.s(["f",0,k],861600);var l=a.i(462820);let m={name:"ai-assist",max:20,windowSeconds:600};var n=a.i(86657),o=a.i(502330),p=a.i(425238);let q="That model isn't available. Pick another one or Default.";var r=a.i(918962),s=a.i(962230),t=a.i(779704);let u={ok:!1,error:"Something in that request wasn't valid."},v=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function w(a){let b=await (0,h.C)(m,a);return b.allowed?null:`Too many AI requests. Try again in ${(0,g.H)(b.retryAfter)}.`}function x(a){return a instanceof Error&&"GatewayError"===a.name?a.message.slice(0,300):"The AI provider couldn't answer. Try again."}async function y(a){return(0,d.F)("owner",async b=>{if("string"!=typeof a||!v.test(a))return u;let c=await w(b.id);if(c)return{ok:!1,error:c};if(!await n.f.provider())return{ok:!1,error:l.B.noProvider};let d=await n.f.appSnapshot(a,new Date);if(!d)return{ok:!1,error:"That application wasn't found."};try{let a=await n.f.complete((0,o.r)(d),{purpose:"ask-ai",maxTokens:500}),b=a.text.trim();if(!b)return{ok:!1,error:"The model returned no text. Try again."};return{ok:!0,data:{text:b,model:a.model,ms:a.ms}}}catch(a){return{ok:!1,error:x(a)}}},{requireActionMember:e.g},"local")}async function z(a){return(0,d.F)("owner",async b=>{if("string"!=typeof a||!v.test(a))return u;let d=await w(b.id);if(d)return{ok:!1,error:d};let e=new Date,g=await n.f.appSnapshot(a,e);if(!g)return{ok:!1,error:"That application wasn't found."};let h=(0,o.R)(g),i=await (0,r.c)(e);if(!i.agConnected)return i.providerReady?A({kind:"app",contextId:a,question:h,by:b.userId,askedAt:e}):{ok:!1,error:"No AI provider is connected. Connect one under AI Gateway › Bring your own key."};let j=await (0,s._)({kind:"app",contextId:a,question:h,by:b.userId,now:e});if(!j.ok)return{ok:!1,error:j.error};if(!j.reused)try{await (0,f.f)({kind:"ok",message:l.B.queuedAudit(g.id.slice(0,80)),resourceId:a,actorUserId:b.userId})}catch{console.warn("audit event failed")}return(0,c.refresh)(),{ok:!0,message:j.reused?l.B.alreadyWaiting:l.B.sentApp,data:{id:j.id,status:"pending"}}},{requireActionMember:e.g})}async function A(a){let b;try{b=await (0,r.L)(a.question,{model:a.model,now:a.askedAt})}catch(a){return console.warn("ask: provider failed:",a instanceof Error?a.name:"unknown"),{ok:!1,error:x(a)}}let d=await (0,s.Y)({kind:a.kind,contextId:a.contextId,question:a.question,by:a.by,askedAt:a.askedAt,answeredAt:new Date,answer:b.text,client:r.q,model:b.model});return(0,c.refresh)(),{ok:!0,message:`Answered by ${b.model} in ${(b.ms/1e3).toFixed(1)} s.`,data:{id:d.id,status:"answered",text:b.text,model:b.model,ms:b.ms}}}async function B(a,b){return(0,d.F)("owner",async d=>{let e,g=(e="string"==typeof a?a.trim():"")?e.length>2e3?{ok:!1,error:"A question can be up to 2000 characters."}:(0,p.G)(e)?{ok:!1,error:"That looks like a key or token. Remove it before sending."}:{ok:!0,question:e}:{ok:!1,error:"Type a question first."};if(!g.ok)return{ok:!1,error:g.error};let h=new Date,i=function(a,b){let c="string"==typeof a?a.trim():"";if(!c)return b.providerReady?{via:"provider"}:b.agConnected?{via:"antigravity",model:null}:{via:"none",error:"No AI provider is connected. Connect one under AI Gateway › Bring your own key."};if(c.length>200)return{via:"none",error:q};if(c.startsWith("ag/")){let a=c.slice(3);return b.agConnected&&b.agEnabled.includes(a)?{via:"antigravity",model:a}:{via:"none",error:q}}return b.agConnected&&b.agEnabled.includes(c)?{via:"antigravity",model:c}:{via:"provider",model:c}}(b,await (0,r.c)(h));if("none"===i.via)return{ok:!1,error:i.error};let j=await w(d.id);if(j)return{ok:!1,error:j};if("provider"===i.via)return A({kind:"general",contextId:null,question:g.question,by:d.userId,askedAt:h,model:i.model});let k=i.model,m=await (0,s._)({kind:"general",contextId:null,question:g.question,by:d.userId,now:h,model:k});if(!m.ok)return{ok:!1,error:m.error};if(!m.reused)try{await (0,f.f)({kind:"ok",message:l.B.queuedAudit("general"),resourceId:null,actorUserId:d.userId})}catch{console.warn("audit event failed")}return(0,c.refresh)(),{ok:!0,message:m.reused?l.B.alreadyWaiting:l.B.sentGeneral,data:{id:m.id,status:"pending"}}},{requireActionMember:e.g})}async function C(a){return(0,d.F)("owner",async b=>{if("string"!=typeof a||!v.test(a))return u;let c=await (0,s.F)(a,b.userId,new Date);return c?{ok:!0,data:{status:c.status,answer:c.answer,model:c.model??c.requestedModel,answeredAt:c.answeredAt?c.answeredAt.toISOString():null}}:{ok:!1,error:"That question wasn't found. It may have been cleaned up."}},{requireActionMember:e.g})}async function D(){return(0,d.F)("owner",async a=>{let b=await w(a.id);if(b)return{ok:!1,error:b};try{let a=await (0,t.E)(new Date,{force:!0});if("no-provider"===a.status)return{ok:!1,error:"No AI provider is connected."};if("empty"===a.status)return{ok:!1,error:"There are no recommendations to summarise."}}catch(a){return{ok:!1,error:x(a)}}return(0,c.refresh)(),{ok:!0,message:"Summary updated."}},{requireActionMember:e.g})}(0,j.ensureServerEntryExports)([y,z,B,C,D]),(0,b.registerServerReference)(y,"4003cdba92c7dca772d99dec0ba01f47b2f78dc94d",null),(0,b.registerServerReference)(z,"40bffbdd99777aeb1a42dcbbef0938f5b70601836d",null),(0,b.registerServerReference)(B,"603be598cdebe0c0feb020b4378703c1cb129f6172",null),(0,b.registerServerReference)(C,"400413de182c19933e1fabdd7230c56a4225d5d07e",null),(0,b.registerServerReference)(D,"00f2f991b54a46dd62c1690cb5db87b80fc5874587",null),a.s(["G",0,z,"B",0,B,"T",0,y,"P",0,C,"E",0,D],294965);var E=a.i(94473),F=a.i(188282);let G={requireActionMember:a=>(0,e.g)(a)};async function H(a){return(0,d.F)("owner",async b=>{let d=await (0,h.C)(g.t.alertWrite,b.id);if(!d.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,g.H)(d.retryAfter)}.`};try{let d=await (0,E.m)(a,b);(0,c.revalidatePath)("/settings");let e=Object.keys(a??{}),f=1===e.length&&F.H[e[0]]?.risk==="safe"?`${F.H[e[0]].label}: auto-run ${d[e[0]]?"on":"off"}.`:l.X.autoRunSaved;return{ok:!0,message:f,data:d}}catch(a){if(a instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw a}},G,"local")}async function I(a){return(0,d.F)("owner",async b=>{let d=await (0,h.C)(g.t.alertWrite,b.id);if(!d.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,g.H)(d.retryAfter)}.`};try{let d=await (0,E.C)(a,b);return(0,c.revalidatePath)("/settings"),{ok:!0,message:`Auto-rollback ${d.enabled?"on":"off"} \xb7 first ${d.windowMin} minutes.`,data:d}}catch(a){if(a instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw a}},G,"local")}async function J(a){return(0,d.F)("owner",async b=>{let d=await (0,h.C)(g.t.alertWrite,b.id);if(!d.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,g.H)(d.retryAfter)}.`};try{let d=await (0,E.o)(a,b);return(0,c.revalidatePath)("/settings"),{ok:!0,message:`Automatic security fixes ${d.enabled?"on":"off"}.`,data:d}}catch(a){if(a instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw a}},G,"local")}(0,j.ensureServerEntryExports)([H,I,J]),(0,b.registerServerReference)(H,"40636b9a62ab0c7d5091f50e7a833e91ca84da4363",null),(0,b.registerServerReference)(I,"409685c8b474c00243c96e5121650c8850c96cba60",null),(0,b.registerServerReference)(J,"40b07ec0bbad0a56044944d52a19667928446c5985",null),a.s(["G",0,I,"m",0,H,"F",0,J],598513)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_private_notes_notes-actions_ts_1g63g8u965fhc._.js.map
|
|
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/0cz1d0mv5g_q7.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/n3Kt7dFNHr9KDw7DgGz0m/_buildManifest.js",
|
|
11
|
+
"static/n3Kt7dFNHr9KDw7DgGz0m/_ssgManifest.js",
|
|
12
|
+
"static/n3Kt7dFNHr9KDw7DgGz0m/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/2yjh4ytp-sedv.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="XrSICW_variable XIXyIG_variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/1fxuyn0k52n4v.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2yjh4ytp-sedv.js"/><script src="/_next/static/chunks/242x7dx0zu3hf.js" async=""></script><script src="/_next/static/chunks/201zah03wlibg.js" async=""></script><script src="/_next/static/chunks/0du6qnm4ee-qx.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/0rgn3-cks0udn.js" async=""></script><script src="/_next/static/chunks/2cbfp1_wsn0oh.js" async=""></script><script src="/_next/static/chunks/1gb8jvw-g7fr7.js" async=""></script><script src="/_next/static/chunks/0r-2mywc7qkb_.js" async=""></script><script src="/_next/static/chunks/30fczssqw6xys.js" async=""></script><meta name="robots" content="noindex"/><title>Watchbell</title><meta name="description" content="Status of your apps, databases, and domains."/><meta name="robots" content="noindex, nofollow"/><link rel="icon" href="/favicon.ico?favicon.117ezoe8m31dk.ico" sizes="48x48" type="image/x-icon"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script>(function(){try{var s=localStorage.getItem("oc-theme");var d=window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.theme=(s==="light"||s==="dark")?s:(d?"dark":"light");}catch(e){document.documentElement.dataset.theme="light";}})();</script><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="bg-bg font-sans text-ink antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false" data-react-aria-top-layer="true"></section><!--$!--><template data-dgst=""></template><!--/$--><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/2yjh4ytp-sedv.js","static/chunks/242x7dx0zu3hf.js","static/chunks/201zah03wlibg.js","static/chunks/0du6qnm4ee-qx.js"],"runtimeModuleIds":[494553]});</script><script src="/_next/static/chunks/2yjh4ytp-sedv.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/0rgn3-cks0udn.js\"\n3:\"/_next/static/chunks/2cbfp1_wsn0oh.js\"\n4:I[339756,[\"$2\",\"$3\"],\"default\"]\n5:\"/_next/static/chunks/1gb8jvw-g7fr7.js\"\n6:\"/_next/static/chunks/0r-2mywc7qkb_.js\"\n7:I[758298,[\"$2\",\"$3\",\"$5\",\"$6\"],\"default\"]\n8:I[837457,[\"$2\",\"$3\"],\"default\"]\n9:I[171209,[\"$2\",\"$3\"],\"ThemeKeeper\"]\na:I[713354,[\"$2\",\"$3\"],\"Toaster\"]\nb:I[302355,[\"$2\",\"$3\"],\"Analytics\"]\nf:I[897367,[\"$2\",\"$3\"],\"OutletBoundary\"]\n10:\"$Sreact.suspense\"\n12:\"ViewportBoundary\"\n13:I[897367,[\"$2\",\"$3\"],\"$12\"]\n15:\"MetadataBoundary\"\n16:I[897367,[\"$2\",\"$3\"],\"$15\"]\n18:\"/_next/static/chunks/30fczssqw6xys.js\"\n19:I[563491,[\"$2\",\"$3\",\"$18\",\"$6\"],\"default\"]\n:HL[\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"style\"]\nd:X\ne:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$10\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@11\"}]}]]}],\"p\":false,\"v\":null}}]]\nc:[[\"children\",{\"s\":\"/_not-found\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$d\"},\"c\":\"$Qe\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0rgn3-cks0udn.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2cbfp1_wsn0oh.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"XrSICW_variable XIXyIG_variable\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var s=localStorage.getItem(\\\"oc-theme\\\");var d=window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches;document.documentElement.dataset.theme=(s===\\\"light\\\"||s===\\\"dark\\\")?s:(d?\\\"dark\\\":\\\"light\\\");}catch(e){document.documentElement.dataset.theme=\\\"light\\\";}})();\"}}]}],[\"$\",\"body\",null,{\"className\":\"bg-bg font-sans text-ink antialiased\",\"children\":[[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$7\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1gb8jvw-g7fr7.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0r-2mywc7qkb_.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{}],[\"$\",\"$Lb\",null,{}]]}]]}]]}],\"p\":false,\"v\":null},\"c\":\"$Qc\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L13\",null,{\"children\":\"$L14\"}],[\"$\",\"$L16\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L17\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$19\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"xCga6YpZus71dK3aq8Q4H\"}\nd:C\n14:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n1a:I[27201,[\"$2\",\"$3\"],\"IconMark\"]\n11:null\n17:[[\"$\",\"title\",\"0\",{\"children\":\"Watchbell\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Status of your apps, databases, and domains.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"robots\",\"content\":\"noindex, nofollow\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.117ezoe8m31dk.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$L1a\",\"4\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="XrSICW_variable XIXyIG_variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/1fxuyn0k52n4v.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2yjh4ytp-sedv.js"/><script src="/_next/static/chunks/242x7dx0zu3hf.js" async=""></script><script src="/_next/static/chunks/201zah03wlibg.js" async=""></script><script src="/_next/static/chunks/0du6qnm4ee-qx.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/0rgn3-cks0udn.js" async=""></script><script src="/_next/static/chunks/2cbfp1_wsn0oh.js" async=""></script><script src="/_next/static/chunks/2n-h6_0i3mpxo.js" async=""></script><script src="/_next/static/chunks/0r-2mywc7qkb_.js" async=""></script><script src="/_next/static/chunks/2ufr23d_eyosj.js" async=""></script><meta name="robots" content="noindex"/><title>Watchbell</title><meta name="description" content="Status of your apps, databases, and domains."/><meta name="robots" content="noindex, nofollow"/><link rel="icon" href="/favicon.ico?favicon.117ezoe8m31dk.ico" sizes="48x48" type="image/x-icon"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script>(function(){try{var s=localStorage.getItem("oc-theme");var d=window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.theme=(s==="light"||s==="dark")?s:(d?"dark":"light");}catch(e){document.documentElement.dataset.theme="light";}})();</script><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="bg-bg font-sans text-ink antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false" data-react-aria-top-layer="true"></section><!--$!--><template data-dgst=""></template><!--/$--><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/2yjh4ytp-sedv.js","static/chunks/242x7dx0zu3hf.js","static/chunks/201zah03wlibg.js","static/chunks/0du6qnm4ee-qx.js"],"runtimeModuleIds":[494553]});</script><script src="/_next/static/chunks/2yjh4ytp-sedv.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/0rgn3-cks0udn.js\"\n3:\"/_next/static/chunks/2cbfp1_wsn0oh.js\"\n4:I[339756,[\"$2\",\"$3\"],\"default\"]\n5:\"/_next/static/chunks/2n-h6_0i3mpxo.js\"\n6:\"/_next/static/chunks/0r-2mywc7qkb_.js\"\n7:I[758298,[\"$2\",\"$3\",\"$5\",\"$6\"],\"default\"]\n8:I[837457,[\"$2\",\"$3\"],\"default\"]\n9:I[171209,[\"$2\",\"$3\"],\"ThemeKeeper\"]\na:I[713354,[\"$2\",\"$3\"],\"Toaster\"]\nb:I[302355,[\"$2\",\"$3\"],\"Analytics\"]\nf:I[897367,[\"$2\",\"$3\"],\"OutletBoundary\"]\n10:\"$Sreact.suspense\"\n12:\"ViewportBoundary\"\n13:I[897367,[\"$2\",\"$3\"],\"$12\"]\n15:\"MetadataBoundary\"\n16:I[897367,[\"$2\",\"$3\"],\"$15\"]\n18:\"/_next/static/chunks/2ufr23d_eyosj.js\"\n19:I[563491,[\"$2\",\"$3\",\"$18\",\"$6\"],\"default\"]\n:HL[\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"style\"]\nd:X\ne:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:t:t:d:r:props:children:1:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$10\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@11\"}]}]]}],\"p\":false,\"v\":null}}]]\nc:[[\"children\",{\"s\":\"/_not-found\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$d\"},\"c\":\"$Qe\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0rgn3-cks0udn.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/2cbfp1_wsn0oh.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"XrSICW_variable XIXyIG_variable\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var s=localStorage.getItem(\\\"oc-theme\\\");var d=window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches;document.documentElement.dataset.theme=(s===\\\"light\\\"||s===\\\"dark\\\")?s:(d?\\\"dark\\\":\\\"light\\\");}catch(e){document.documentElement.dataset.theme=\\\"light\\\";}})();\"}}]}],[\"$\",\"body\",null,{\"className\":\"bg-bg font-sans text-ink antialiased\",\"children\":[[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$7\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2n-h6_0i3mpxo.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0r-2mywc7qkb_.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{}],[\"$\",\"$Lb\",null,{}]]}]]}]]}],\"p\":false,\"v\":null},\"c\":\"$Qc\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L13\",null,{\"children\":\"$L14\"}],[\"$\",\"$L16\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L17\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$19\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"n3Kt7dFNHr9KDw7DgGz0m\"}\nd:C\n14:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n1a:I[27201,[\"$2\",\"$3\"],\"IconMark\"]\n11:null\n17:[[\"$\",\"title\",\"0\",{\"children\":\"Watchbell\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Status of your apps, databases, and domains.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"robots\",\"content\":\"noindex, nofollow\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.117ezoe8m31dk.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$L1a\",\"4\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2yjh4ytp-sedv.js"/><script src="/_next/static/chunks/242x7dx0zu3hf.js" async=""></script><script src="/_next/static/chunks/201zah03wlibg.js" async=""></script><script src="/_next/static/chunks/0du6qnm4ee-qx.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2yjh4ytp-sedv.js"/><script src="/_next/static/chunks/242x7dx0zu3hf.js" async=""></script><script src="/_next/static/chunks/201zah03wlibg.js" async=""></script><script src="/_next/static/chunks/0du6qnm4ee-qx.js" async=""></script><script src="/_next/static/chunks/turbopack-3-ry682tkyiqk.js" async=""></script><script src="/_next/static/chunks/0dnjs3de2e_d1.js" async=""></script><script src="/_next/static/chunks/0r-2mywc7qkb_.js" async=""></script><link rel="preload" href="/_next/static/chunks/1fxuyn0k52n4v.css" as="style"/><link rel="icon" href="/favicon.ico?favicon.117ezoe8m31dk.ico" sizes="48x48" type="image/x-icon"/><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script id="_R_">(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push({"otherChunks":["static/chunks/2yjh4ytp-sedv.js","static/chunks/242x7dx0zu3hf.js","static/chunks/201zah03wlibg.js","static/chunks/0du6qnm4ee-qx.js"],"runtimeModuleIds":[494553]});</script><script src="/_next/static/chunks/2yjh4ytp-sedv.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"/_next/static/chunks/0dnjs3de2e_d1.js\"\n3:\"/_next/static/chunks/0r-2mywc7qkb_.js\"\n4:I[339756,[\"$2\",\"$3\"],\"default\"]\n5:I[837457,[\"$2\",\"$3\"],\"default\"]\n8:I[897367,[\"$2\",\"$3\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:\"ViewportBoundary\"\nc:I[897367,[\"$2\",\"$3\"],\"$b\"]\ne:\"MetadataBoundary\"\nf:I[897367,[\"$2\",\"$3\"],\"$e\"]\n11:I[563491,[\"$2\",\"$3\"],\"default\"]\n:HL[\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"style\"]\n6:X\n7:[[\"children\",{\"s\":\"__PAGE__\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],\"p\":false,\"v\":null}}]]\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$6\"},\"c\":\"$Q7\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"$Lf\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}],null]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1fxuyn0k52n4v.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"n3Kt7dFNHr9KDw7DgGz0m\"}\n6:C\nd:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n12:I[27201,[\"$2\",\"$3\"],\"IconMark\"]\na:null\n10:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.117ezoe8m31dk.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$L12\",\"1\",{}]]\n"])</script></body></html>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"previewModeId": "
|
|
3
|
-
"previewModeSigningKey": "
|
|
4
|
-
"previewModeEncryptionKey": "
|
|
2
|
+
"previewModeId": "04890ff5b36d16e71f72ccfb44b10b65",
|
|
3
|
+
"previewModeSigningKey": "fc91400fc1b7f596ca8ddaef1d449f9455e734ff8fba212d9c9508fe5a7ac8a6",
|
|
4
|
+
"previewModeEncryptionKey": "0a616f2e594679e419e36612b2bb399e797d06ce99171930b73270a8e964e505"
|
|
5
5
|
}
|