decocms 2.297.0 → 2.297.1
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/dist/client/assets/{AlertCircle-BEl-P1aJ.js → AlertCircle-BN5HvfDA.js} +1 -1
- package/dist/client/assets/{ArrowNarrowLeft-UuLNV5ks.js → ArrowNarrowLeft-BsUe2Q7O.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-BpNxiq0a.js → ArrowUpRight-tJkZySrt.js} +1 -1
- package/dist/client/assets/{CheckCircle-D5rpSegm.js → CheckCircle-DBlLhbPO.js} +1 -1
- package/dist/client/assets/{ChevronDown-DDFxcF9W.js → ChevronDown-C5-ALRrl.js} +1 -1
- package/dist/client/assets/{ChevronRight-CRmRMkqi.js → ChevronRight-CFQoeG4c.js} +1 -1
- package/dist/client/assets/{ChevronUp-CtNieYpH.js → ChevronUp-DLrw19yb.js} +1 -1
- package/dist/client/assets/{Container-DximN8pX.js → Container-Dy87tRry.js} +1 -1
- package/dist/client/assets/{DotsVertical-Cprvx6Eg.js → DotsVertical-CBoC9uaP.js} +1 -1
- package/dist/client/assets/{LinkExternal01-i6uggWQR.js → LinkExternal01-CDpUUwX_.js} +1 -1
- package/dist/client/assets/{Lock01-Deeb6XHh.js → Lock01-DzCIh1iy.js} +1 -1
- package/dist/client/assets/{Palette-Ye5CLNlX.js → Palette-tFu7Gp7M.js} +1 -1
- package/dist/client/assets/{Play-CDSLiCuz.js → Play-CQ2yYelq.js} +1 -1
- package/dist/client/assets/{Plus-DpjXlSo9.js → Plus-DeID8x80.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-DqLt_1bE.js → RefreshCcw01-BgMUTc2c.js} +1 -1
- package/dist/client/assets/{SearchMd-DKMhFHxh.js → SearchMd-BslJRTpe.js} +1 -1
- package/dist/client/assets/{Settings02-taJod4SB.js → Settings02-GD1Gru47.js} +1 -1
- package/dist/client/assets/{Shield01-1NL5CB8G.js → Shield01-BVbpR9lj.js} +1 -1
- package/dist/client/assets/{Star01-DlhbcR1x.js → Star01-B7FQC4-Q.js} +1 -1
- package/dist/client/assets/{Sun-CmYb8MhQ.js → Sun-DPUyck3E.js} +1 -1
- package/dist/client/assets/{Tool01-BPPJNEle.js → Tool01-BRp5oupS.js} +1 -1
- package/dist/client/assets/{Trash01-BJfG55F8.js → Trash01-KcxEjzH0.js} +1 -1
- package/dist/client/assets/{User01-JUiKZKer.js → User01-DKfzlyvn.js} +1 -1
- package/dist/client/assets/{Users03-XiqDhrhQ.js → Users03-B990uP6b.js} +1 -1
- package/dist/client/assets/{X-DqkI9zVV.js → X-CMBvSgTi.js} +1 -1
- package/dist/client/assets/{XCircle-DB9lNtAM.js → XCircle-Dnu0gkqX.js} +1 -1
- package/dist/client/assets/{XClose-Cn_0qgm2.js → XClose-CS4QdLnd.js} +1 -1
- package/dist/client/assets/{Zap-DC_qP-1G.js → Zap-4ODOce4z.js} +1 -1
- package/dist/client/assets/{ZapSquare-TGY7Gwno.js → ZapSquare-CLs28nr3.js} +1 -1
- package/dist/client/assets/{accordion-C_TRqr7H.js → accordion-CCdsTTZD.js} +1 -1
- package/dist/client/assets/{agent-icon-DamyRaK7.js → agent-icon-B0oanNTU.js} +1 -1
- package/dist/client/assets/{agents-list-CJewd3tj.js → agents-list-DGt2B3Dx.js} +1 -1
- package/dist/client/assets/ai-providers-CesQ3yp0.js +1 -0
- package/dist/client/assets/{alert-dialog-DeVpX_3k.js → alert-dialog-lulh7U6f.js} +1 -1
- package/dist/client/assets/{auth-catchall-D99zDlu-.js → auth-catchall-BIVNHyJD.js} +1 -1
- package/dist/client/assets/{automation-list-row-CQyZmhbF.js → automation-list-row-B264ZpKU.js} +1 -1
- package/dist/client/assets/{automations-DgZViGyM.js → automations-Bf-S-_54.js} +1 -1
- package/dist/client/assets/{avatar-Bynt8XW_.js → avatar-DKYmif54.js} +1 -1
- package/dist/client/assets/{badge-Id-Iau1h.js → badge-B5byc8X_.js} +1 -1
- package/dist/client/assets/{brand-context-Ctd4vo8o.js → brand-context-D6VlgO0u.js} +1 -1
- package/dist/client/assets/{card-C12vo1Oj.js → card-DOh7TZ0n.js} +1 -1
- package/dist/client/assets/{chat-context-BmpJ7SNS.js → chat-context-Cc1RdLiO.js} +1 -1
- package/dist/client/assets/{checkbox-CNJ6z3XU.js → checkbox-Bi9zmnci.js} +1 -1
- package/dist/client/assets/{collection-detail-Da5-259c.js → collection-detail-BaLGt7Fz.js} +1 -1
- package/dist/client/assets/{collection-display-button-D0NJ137z.js → collection-display-button-GV73f2B9.js} +1 -1
- package/dist/client/assets/{collection-search-Cy9SjZ7-.js → collection-search-BS-1uNFo.js} +1 -1
- package/dist/client/assets/{collection-search-Cod3svbd.js → collection-search-By7lv2En.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-C67jC-nY.js → collection-table-wrapper-Cs4fVSfY.js} +1 -1
- package/dist/client/assets/{collection-tabs-BqrhMDY6.js → collection-tabs-DH5kWpHl.js} +1 -1
- package/dist/client/assets/{collections-DWJ0-uuD.js → collections-CLZgaRRx.js} +1 -1
- package/dist/client/assets/{command-DzXCTCEK.js → command-Bo5pr6be.js} +1 -1
- package/dist/client/assets/{connection-card-DieKn2X5.js → connection-card-CCIskdDU.js} +1 -1
- package/dist/client/assets/{connection-detail-BqAPxaHG.js → connection-detail-VlmEexLl.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-T5uLVfeV.js → connection-form-helpers-CDKkg0m6.js} +1 -1
- package/dist/client/assets/{connections-DUGhWow8.js → connections-Bc1KuWBn.js} +1 -1
- package/dist/client/assets/{constants-CpX-unNl.js → constants-4G3iNxO5.js} +1 -1
- package/dist/client/assets/{constants-DSf6w6yo.js → constants-BiGdkr88.js} +1 -1
- package/dist/client/assets/{dialog-lD4W7cL9.js → dialog-PLqFGIrp.js} +1 -1
- package/dist/client/assets/{domain-settings-8TgyAFd-.js → domain-settings-DqpzKeaG.js} +1 -1
- package/dist/client/assets/{drawer-B6Pw2Zfs.js → drawer-D0DC6tyM.js} +1 -1
- package/dist/client/assets/{dropdown-menu-iOKHVoXF.js → dropdown-menu-IJ-xpHra.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-CQugmD4y.js → dynamic-plugin-layout-DFX33ysk.js} +1 -1
- package/dist/client/assets/{empty-state-BxlxnTB7.js → empty-state-8P0ToXVK.js} +1 -1
- package/dist/client/assets/{empty-state-p-AMSRlv.js → empty-state-Cf0hTB9G.js} +1 -1
- package/dist/client/assets/{extract-connection-data-sU9mZxB7.js → extract-connection-data-H_7Sfx5Q.js} +1 -1
- package/dist/client/assets/{features-SANWJBzs.js → features-kI3b4VHn.js} +1 -1
- package/dist/client/assets/{form-BqyPslyw.js → form-D2gie3kh.js} +1 -1
- package/dist/client/assets/{general-xzw2Lb8n.js → general-Dwh-CI5H.js} +1 -1
- package/dist/client/assets/{index-Cj5K0yVq.js → index-6O1u4LxA.js} +1 -1
- package/dist/client/assets/{index-CdP1fB6m.js → index-B0MRgP-w.js} +1 -1
- package/dist/client/assets/{index-BFoECulH.js → index-BKiUCdST.js} +3 -3
- package/dist/client/assets/{index-sm8aigvr.js → index-BZ-Z29s_.js} +1 -1
- package/dist/client/assets/{index-CHPs511r.js → index-BdiJh2oA.js} +1 -1
- package/dist/client/assets/{index-D1h1dO7N.js → index-BtNWcwyO.js} +1 -1
- package/dist/client/assets/{index-1TPOFLt6.js → index-CKBdFqyf.js} +1 -1
- package/dist/client/assets/{index-B_I_8zaW.js → index-CKKnS22w.js} +1 -1
- package/dist/client/assets/{index-DTUtF6tB.js → index-CVeunt4x.js} +2 -2
- package/dist/client/assets/{index-C9KyfQmt.js → index-CbCWzFec.js} +1 -1
- package/dist/client/assets/{index-LUGE748D.js → index-D4GD2XxC.js} +1 -1
- package/dist/client/assets/{index-CpAtDDvI.js → index-DpZ992Y1.js} +1 -1
- package/dist/client/assets/{index-9F74iUk9.js → index-FNItdOZ2.js} +1 -1
- package/dist/client/assets/{index-DeypY-gF.js → index-Gam6vFfq.js} +1 -1
- package/dist/client/assets/{index-DhzeM_Du.js → index-P1E9VGm6.js} +1 -1
- package/dist/client/assets/index-UmSpLcBC.js +1 -0
- package/dist/client/assets/{infiniteQueryObserver-6D5CrZOV.js → infiniteQueryObserver-_MuUnYBg.js} +1 -1
- package/dist/client/assets/{input-TpxNqT-Q.js → input-B6AG3zhZ.js} +1 -1
- package/dist/client/assets/{integration-icon-DbXG6KKJ.js → integration-icon-CyChxGRT.js} +1 -1
- package/dist/client/assets/{label-BNU285Rh.js → label-B5cI9doH.js} +1 -1
- package/dist/client/assets/{layout-FPl3EeRG.js → layout-BZEa8Jqa.js} +1 -1
- package/dist/client/assets/{lean-canvas-recruit-modal-CdPczQti.js → lean-canvas-recruit-modal-CvLacKk8.js} +1 -1
- package/dist/client/assets/{login-BxsX9vdC.js → login-BG_jDkDP.js} +1 -1
- package/dist/client/assets/{members-DTEWSVV-.js → members-CeOkSYn3.js} +1 -1
- package/dist/client/assets/{monaco-editor-rWTM04Ye.js → monaco-editor-62ebhEB3.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CRkle0ZV.js → monitoring-stats-row-DXiVfIfB.js} +1 -1
- package/dist/client/assets/{oauth-callback-DAZwYiqt.js → oauth-callback-CstawfDH.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CoQ8zeCL.js → oauth-callback-ai-provider-BuFW8avK.js} +1 -1
- package/dist/client/assets/{onboarding-DnkgcTAB.js → onboarding-Bf8cer6G.js} +1 -1
- package/dist/client/assets/{org-layout-Boxlw3Sk.js → org-layout-9JBCQUgP.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-DnoAPGlg.js → org-plugin-layout-Dg1ZFiHN.js} +1 -1
- package/dist/client/assets/{pair-P2Rt1Yzk.js → pair-B_nqkZ5F.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-Bs4aD8bA.js → plugin-empty-state-DbXV2nkw.js} +1 -1
- package/dist/client/assets/{plugin-header-CX9XYVK_.js → plugin-header-B9PqDI35.js} +1 -1
- package/dist/client/assets/{plugin-layout-D2N7KkJC.js → plugin-layout-D4hKfVXH.js} +1 -1
- package/dist/client/assets/{popover-kim5gbvq.js → popover-Dmg5qdmJ.js} +1 -1
- package/dist/client/assets/{profile-ON7Ww51U.js → profile-DWZ8ePhc.js} +1 -1
- package/dist/client/assets/{project-app-view-CzkMY9PE.js → project-app-view-yxeDnm_U.js} +1 -1
- package/dist/client/assets/registry-BM_rdSyp.js +2 -0
- package/dist/client/assets/{registry-layout-Bw5aMcpb.js → registry-layout-CcAgcW5l.js} +1 -1
- package/dist/client/assets/{required-auth-layout-QyKcPfkb.js → required-auth-layout-DPC_PJiJ.js} +1 -1
- package/dist/client/assets/{reset-password-BU8t21u-.js → reset-password-D-V85I15.js} +1 -1
- package/dist/client/assets/{roles-BffaHN0R.js → roles-DsY7o_u8.js} +1 -1
- package/dist/client/assets/{scroll-area-dzwIlukh.js → scroll-area-B23oapsc.js} +1 -1
- package/dist/client/assets/{search-input-DfWZ7GFt.js → search-input-DM7Bte8R.js} +1 -1
- package/dist/client/assets/{select-model-FblXWw23.js → select-model-CDX327yv.js} +1 -1
- package/dist/client/assets/{select-CyG96pDg.js → select-t1HzgjY9.js} +1 -1
- package/dist/client/assets/{settings-layout-3aVua0DD.js → settings-layout-1EkX4N_N.js} +1 -1
- package/dist/client/assets/{settings-section-WU-BEfr6.js → settings-section-BB4Po-Kt.js} +1 -1
- package/dist/client/assets/{shell-layout-DSl8Bt23.js → shell-layout-CbqYIE1w.js} +1 -1
- package/dist/client/assets/{skeleton-BvuzXwwl.js → skeleton-CRTUlwoT.js} +1 -1
- package/dist/client/assets/{sso-CNP44Fzx.js → sso-DNruYB-r.js} +1 -1
- package/dist/client/assets/{store-CkUmhzEx.js → store-Bf5isS_0.js} +1 -1
- package/dist/client/assets/store-registry-BUNAASm9.js +2 -0
- package/dist/client/assets/{switch-B9BVMWzi.js → switch-CJfeLbil.js} +1 -1
- package/dist/client/assets/{table-BI_8F_nL.js → table-Cm6PPpZw.js} +1 -1
- package/dist/client/assets/{tabs-D86C2OZJ.js → tabs-Dmk1t25E.js} +1 -1
- package/dist/client/assets/{task-status-DShE4Jg-.js → task-status-D0Oplq4I.js} +1 -1
- package/dist/client/assets/{textarea-_s-nSiHJ.js → textarea-BOm3mVA3.js} +1 -1
- package/dist/client/assets/{toggle-group-CVu8ATbO.js → toggle-group-C7ERVo69.js} +1 -1
- package/dist/client/assets/{tools-list-BGXp6rVF.js → tools-list-D12Eyv4H.js} +1 -1
- package/dist/client/assets/{tooltip-Ju9odpt2.js → tooltip-BW9WeUkk.js} +1 -1
- package/dist/client/assets/{types-C7HolpHC.js → types-CSWCpeQF.js} +1 -1
- package/dist/client/assets/{use-ai-providers-Dk352xYe.js → use-ai-providers-jUdvzhG3.js} +1 -1
- package/dist/client/assets/{use-collections-Dp9e4q3y.js → use-collections-D055CgUi.js} +1 -1
- package/dist/client/assets/{use-connection-CyXg_60p.js → use-connection-R1RmqDZs.js} +1 -1
- package/dist/client/assets/{use-copy-ChW86iBL.js → use-copy-W5aFAz1K.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-kdZj_y0i.js → use-create-virtual-mcp-DXCmpbGi.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-DN-SMHVv.js → use-decopilot-events-CBX-cfJ5.js} +1 -1
- package/dist/client/assets/{use-delete-connection-MC9jj9IV.js → use-delete-connection-Bu2fgPgl.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CDATP25U.js → use-infinite-scroll-Dt3SGzZT.js} +1 -1
- package/dist/client/assets/{use-list-state-DinxkXm4.js → use-list-state-BjH-sWkF.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CGsNy8CG.js → use-mcp-tools-CC8pwhMR.js} +1 -1
- package/dist/client/assets/{use-members-BffIiXTF.js → use-members-Cr9J6nco.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-YkMwhD8K.js → use-navigate-to-agent-uMqNnIco.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-D55vyPCT.js → use-org-auth-client-H-w8ouN8.js} +1 -1
- package/dist/client/assets/{use-org-sso-firP3Vdm.js → use-org-sso-B8f8SbSO.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BPRCqGlt.js → use-organization-roles-B0ESk7b3.js} +1 -1
- package/dist/client/assets/{use-organization-settings-J-AkXlMa.js → use-organization-settings-23cZSPxY.js} +1 -1
- package/dist/client/assets/{use-registry-connections-M1V7Kg3U.js → use-registry-connections-Bi1E-A8V.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CELSjcBV.js → use-status-sounds-BXaqKdaI.js} +1 -1
- package/dist/client/assets/{use-tasks-Ceh8jY0q.js → use-tasks-wSvO_WZb.js} +1 -1
- package/dist/client/assets/{use-view-mode-DHDRtqKq.js → use-view-mode-DlnLZ3kw.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-B1BxhZXH.js → use-virtual-mcp-BCpxgfcK.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-kxJuDRpt.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-C0cCB1-C.js +1 -0
- package/dist/client/assets/{user-C7FQblxV.js → user-DU1d2CHU.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CppmeCW-.js → view-mode-toggle-rQRM8wzo.js} +1 -1
- package/dist/client/assets/{workflow-FNVerwBL.js → workflow-BIC4kq7M.js} +1 -1
- package/dist/client/assets/workflow-detail-imQB15SW.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/ai-providers-C1FPIgEY.js +0 -1
- package/dist/client/assets/index-B3bKRv_D.js +0 -1
- package/dist/client/assets/registry-B-_5oMj_.js +0 -2
- package/dist/client/assets/store-registry-CQdXfZj-.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DMAfx3i_.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BqjEaABk.js +0 -1
- package/dist/client/assets/workflow-detail-Cx1ON290.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1642,7 +1642,7 @@ AS SELECT
|
|
|
1642
1642
|
FROM monitoring_metrics
|
|
1643
1643
|
GROUP BY organization_id, name, bucket, connection_id, tool_name, status
|
|
1644
1644
|
`}),console.log("[clickhouse-schema] monitoring_metrics_rollup_1m_mv view ready")}finally{await G.close()}}catch(Y){console.error("[clickhouse-schema] Failed to create rollup DDL (queries will fall back to raw table):",Y)}}async function MA1(X){let Y={...process.env},G=b$1(X,Y),Q=G.settings.encryptionKey;console.log(`[settings] ENCRYPTION_KEY = ${JSON.stringify(Q)} (${Q.length} chars)`);let{ensureServices:J}=await Promise.resolve().then(() => (q$1(),P$1)),{outputs:W,services:Z}=await J({home:G.settings.dataDir,externalDatabaseUrl:G.externalDatabaseUrl,externalNatsUrl:G.externalNatsUrl});if(!G.skipMigrations){let{migrateBetterAuth:K}=await Promise.resolve().then(() => (F30(),Tx6));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (WU(),Ax6)),{migrateToLatest:U}=await Promise.resolve().then(() => (Sr6(),Rr6)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => ks6);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return nn1($),{settings:$,services:Z.map((K)=>({name:K.name==="PostgreSQL"?"Postgres":K.name,port:K.port})),managedServiceNames:Z.filter((K)=>K.owner==="managed").map((K)=>K.name)}}var yB0=D(()=>{pn1();C9()});import{createServer as Cs6}from"net";function Sp5(X){return new Promise((Y)=>{let G=Cs6();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function RA1(X){if(await Sp5(X))return X;let Y=await new Promise((G,Q)=>{let J=Cs6();J.once("error",Q),J.listen(0,"0.0.0.0",()=>{let W=J.address(),Z=typeof W==="object"&&W?W.port:0;J.close(()=>G(Z))})});return console.warn(`Port ${X} is in use, using port ${Y} instead.`),Y}var xB0=()=>{};var hB0={};j0(hB0,{startDevServer:()=>Cp5});import{join as kp5}from"path";function vs6(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function _s6(X){let Y=X.getReader(),G=new TextDecoder,Q="";function J(){let W=Q.split(`
|
|
1645
|
-
`);Q=W.pop()??"";for(let Z of W){let $=vs6(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;PK({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=vs6(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)PK({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Cp5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await RA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await MA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)Md({name:z.name,status:"ready",port:z.port});ye(W),fe();let K=kp5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)_s6(U.stdout),_s6(U.stderr);let B=G||`http://localhost:${W.port}`;be(B),Md({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (q$1(),P$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var gB0=D(()=>{yB0();QF();xB0()});import{Box as uB0,Text as lB0}from"ink";import{jsx as bs6,jsxs as SA1}from"react/jsx-runtime";function fs6(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function fp5(X,Y){if(vp5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(_p5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>fs6(W)).join(", "),color:"cyan"}}let Q=fs6(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function bp5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"Transport",entries:[{key:"UNSAFE_ALLOW_STDIO_TRANSPORT",value:X.unsafeAllowStdioTransport}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function ys6({env:X}){let Y=bp5(X);return bs6(uB0,{flexDirection:"column",children:Y.map((G)=>SA1(uB0,{flexDirection:"column",marginTop:1,children:[SA1(lB0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=fp5(Q,J);return SA1(uB0,{children:[SA1(lB0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),bs6(lB0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var vp5,_p5;var xs6=D(()=>{vp5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),_p5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var mB0;var hs6=D(()=>{mB0={name:"decocms",version:"2.297.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as IU,Text as MX}from"ink";import{Spinner as xp5}from"@inkjs/ui";import{useSyncExternalStore as gs6}from"react";import{jsx as qY,jsxs as oQ}from"react/jsx-runtime";function mp5(X,Y){if(!X||!lp5.has(X))return X;let G=dB0[Y]??dB0[dB0.length-1];return X==="#875f00"?G[0]:G[1]}function us6({status:X}){if(X==="pending")return qY(xp5,{label:""});return qY(MX,{color:"green",children:"\u2713"})}function ls6({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=gs6(du0,mu0),Z=gs6(tu0,au0);return oQ(IU,{flexDirection:"column",paddingBottom:1,children:[J?oQ(IU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,up5-U);return oQ(IU,{flexDirection:"row",children:[$.map((N,z)=>{let O=mp5(N.color,K);return O?qY(MX,{color:O,children:N.text},z):qY(MX,{children:N.text},z)}),qY(MX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?qY(MX,{color:N.color,children:N.char},z):qY(MX,{children:N.char},z))]},K)}),oQ(MX,{dimColor:!0,children:[" v",mB0.version]})]}):oQ(IU,{flexDirection:"column",marginTop:1,children:[hp5.map(($,K)=>qY(MX,{color:gp5[K],children:$},K)),oQ(MX,{dimColor:!0,children:[" v",mB0.version]})]}),qY(IU,{marginBottom:1,children:qY(MX,{dimColor:!0,children:"\u2500".repeat(80)})}),qY(IU,{children:oQ(MX,{dimColor:!0,children:["Home: ",G]})}),oQ(IU,{gap:2,children:[X.map(($)=>oQ(IU,{gap:1,children:[oQ(MX,{children:[$.name," :",$.port||"...."]}),qY(us6,{status:$.status})]},$.name)),oQ(IU,{gap:1,children:[qY(MX,{children:"Migrations"}),qY(us6,{status:Y})]})]}),qY(IU,{children:Q?oQ(MX,{children:["Open in browser: ",qY(MX,{color:"cyan",children:Q})]}):qY(MX,{dimColor:!0,children:"Starting..."})}),oQ(IU,{gap:2,children:[oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var hp5,gp5,dB0,up5=30,lp5;var ms6=D(()=>{hs6();Tn1();Sn1();hp5=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],gp5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],dB0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],lp5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as dp5}from"react";function cp5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==kA1.rows||Y!==kA1.columns)kA1={rows:X,columns:Y};return kA1}function ip5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function ds6(){return dp5(ip5,cp5)}var kA1;var cs6=D(()=>{kA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as pp5,Text as kX1}from"ink";import{useSyncExternalStore as np5}from"react";import{jsx as cB0,jsxs as iB0}from"react/jsx-runtime";function ap5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function is6({logs:X,headerHeight:Y}){let{rows:G}=ds6(),{logFlow:Q}=np5(_e,ve),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return cB0(pp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return cB0(kX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return iB0(kX1,{children:[iB0(kX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),cB0(kX1,{color:ap5(Z.status),children:Z.status}),iB0(kX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var ps6=D(()=>{QF();cs6()});var pB0={};j0(pB0,{App:()=>Yn5});import{Box as tp5,Text as rp5,useInput as op5}from"ink";import{useSyncExternalStore as sp5}from"react";import{jsx as CA1,jsxs as Gn5}from"react/jsx-runtime";function Yn5({home:X}){let Y=sp5(_e,ve);return op5((G)=>{if(G==="k"||G==="K")bn1();if(G==="l"||G==="L")yn1();if((G==="v"||G==="V")&&Y.dataDir)_n1(Y.dataDir),xn1();if((G==="n"||G==="N")&&Y.vibe)vn1()}),Gn5(tp5,{flexDirection:"column",children:[CA1(ls6,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?CA1(ys6,{env:Y.env}):CA1(rp5,{dimColor:!0,children:"Loading configuration..."}):CA1(is6,{logs:Y.logs,headerHeight:Y.vibe?Xn5:ep5})]})}var ep5=15,Xn5=19;var nB0=D(()=>{xs6();ms6();ps6();QF();jd()});function ns6(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DECOCMS_ALLOW_LOCAL_PROD:String(X.allowLocalProd),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),UNSAFE_ALLOW_STDIO_TRANSPORT:String(X.unsafeAllowStdioTransport),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}function ts6(X){if(!X)return!1;try{return new URL(X).host==="api.decocms.com"&&X!=="https://studio.decocms.com/org/deco/registry/mcp"}catch{return!1}}var as6="https://studio.decocms.com/org/deco/registry/mcp";var aB0=(X,Y,G)=>{return(Q,J)=>{let W=-1;return Z(0);async function Z($){if($<=W)throw Error("next() called multiple times");W=$;let K,H=!1,U;if(X[$])U=X[$][0][0],Q.req.routeIndex=$;else U=$===X.length&&J||void 0;if(U)try{K=await U(Q,()=>Z($+1))}catch(B){if(B instanceof Error&&Y)Q.error=B,K=await Y(B,Q),H=!0;else throw B}else if(Q.finalized===!1&&G)K=await G(Q);if(K&&(Q.finalized===!1||H))Q.res=K;return Q}}};var rs6=()=>{};var L5;var zw=D(()=>{L5=class extends Error{res;status;constructor(X=500,Y){super(Y?.message,{cause:Y?.cause});this.res=Y?.res,this.status=X}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var os6;var ss6=D(()=>{os6=Symbol()});async function Qn5(X,Y){let G=await X.formData();if(G)return Jn5(G,Y);return{}}function Jn5(X,Y){let G=Object.create(null);if(X.forEach((Q,J)=>{if(!(Y.all||J.endsWith("[]")))G[J]=Q;else Zn5(G,J,Q)}),Y.dot)Object.entries(G).forEach(([Q,J])=>{if(Q.includes("."))Wn5(G,Q,J),delete G[Q]});return G}var es6=async(X,Y=Object.create(null))=>{let{all:G=!1,dot:Q=!1}=Y,W=(X instanceof vA1?X.raw.headers:X.headers).get("Content-Type");if(W?.startsWith("multipart/form-data")||W?.startsWith("application/x-www-form-urlencoded"))return Qn5(X,{all:G,dot:Q});return{}},Zn5=(X,Y,G)=>{if(X[Y]!==void 0)if(Array.isArray(X[Y]))X[Y].push(G);else X[Y]=[X[Y],G];else if(!Y.endsWith("[]"))X[Y]=G;else X[Y]=[G]},Wn5=(X,Y,G)=>{if(/(?:^|\.)__proto__\./.test(Y))return;let Q=X,J=Y.split(".");J.forEach((W,Z)=>{if(Z===J.length-1)Q[W]=G;else{if(!Q[W]||typeof Q[W]!=="object"||Array.isArray(Q[W])||Q[W]instanceof File)Q[W]=Object.create(null);Q=Q[W]}})};var Xe6=D(()=>{tB0()});var oB0=(X)=>{let Y=X.split("/");if(Y[0]==="")Y.shift();return Y},Ye6=(X)=>{let{groups:Y,path:G}=$n5(X),Q=oB0(G);return Kn5(Q,Y)},$n5=(X)=>{let Y=[];return X=X.replace(/\{[^}]+\}/g,(G,Q)=>{let J=`@${Q}`;return Y.push([J,G]),J}),{groups:Y,path:X}},Kn5=(X,Y)=>{for(let G=Y.length-1;G>=0;G--){let[Q]=Y[G];for(let J=X.length-1;J>=0;J--)if(X[J].includes(Q)){X[J]=X[J].replace(Q,Y[G][1]);break}}return X},_A1,Ge6=(X,Y)=>{if(X==="*")return"*";let G=X.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(G){let Q=`${X}#${Y}`;if(!_A1[Q])if(G[2])_A1[Q]=Y&&Y[0]!==":"&&Y[0]!=="*"?[Q,G[1],new RegExp(`^${G[2]}(?=/${Y})`)]:[X,G[1],new RegExp(`^${G[2]}$`)];else _A1[Q]=[X,G[1],!0];return _A1[Q]}return null},Gt=(X,Y)=>{try{return Y(X)}catch{return X.replace(/(?:%[0-9A-Fa-f]{2})+/g,(G)=>{try{return Y(G)}catch{return G}})}},Qe6=(X)=>Gt(X,decodeURI),sB0=(X)=>{let Y=X.url,G=Y.indexOf("/",Y.indexOf(":")+4),Q=G;for(;Q<Y.length;Q++){let J=Y.charCodeAt(Q);if(J===37){let W=Y.indexOf("?",Q),Z=Y.indexOf("#",Q),$=W===-1?Z===-1?void 0:Z:Z===-1?W:Math.min(W,Z),K=Y.slice(G,$);return Qe6(K.includes("%25")?K.replace(/%25/g,"%2525"):K)}else if(J===63||J===35)break}return Y.slice(G,Q)},Je6=(X)=>{let Y=sB0(X);return Y.length>1&&Y.at(-1)==="/"?Y.slice(0,-1):Y},vj=(X,Y,...G)=>{if(G.length)Y=vj(Y,...G);return`${X?.[0]==="/"?"":"/"}${X}${Y==="/"?"":`${X?.at(-1)==="/"?"":"/"}${Y?.[0]==="/"?Y.slice(1):Y}`}`},fA1=(X)=>{if(X.charCodeAt(X.length-1)!==63||!X.includes(":"))return null;let Y=X.split("/"),G=[],Q="";return Y.forEach((J)=>{if(J!==""&&!/\:/.test(J))Q+="/"+J;else if(/\:/.test(J))if(/\?/.test(J)){if(G.length===0&&Q==="")G.push("/");else G.push(Q);let W=J.replace("?","");Q+="/"+W,G.push(Q)}else Q+="/"+J}),G.filter((J,W,Z)=>Z.indexOf(J)===W)},rB0=(X)=>{if(!/[%+]/.test(X))return X;if(X.indexOf("+")!==-1)X=X.replace(/\+/g," ");return X.indexOf("%")!==-1?Gt(X,CX1):X},Ze6=(X,Y,G)=>{let Q;if(!G&&Y&&!/[%+]/.test(Y)){let Z=X.indexOf("?",8);if(Z===-1)return;if(!X.startsWith(Y,Z+1))Z=X.indexOf(`&${Y}`,Z+1);while(Z!==-1){let $=X.charCodeAt(Z+Y.length+1);if($===61){let K=Z+Y.length+2,H=X.indexOf("&",K);return rB0(X.slice(K,H===-1?void 0:H))}else if($==38||isNaN($))return"";Z=X.indexOf(`&${Y}`,Z+1)}if(Q=/[%+]/.test(X),!Q)return}let J={};Q??=/[%+]/.test(X);let W=X.indexOf("?",8);while(W!==-1){let Z=X.indexOf("&",W+1),$=X.indexOf("=",W);if($>Z&&Z!==-1)$=-1;let K=X.slice(W+1,$===-1?Z===-1?void 0:Z:$);if(Q)K=rB0(K);if(W=Z,K==="")continue;let H;if($===-1)H="";else if(H=X.slice($+1,Z===-1?void 0:Z),Q)H=rB0(H);if(G){if(!(J[K]&&Array.isArray(J[K])))J[K]=[];J[K].push(H)}else J[K]??=H}return Y?J[Y]:J},We6,$e6=(X,Y)=>{return Ze6(X,Y,!0)},CX1;var Rq=D(()=>{_A1={},We6=Ze6,CX1=decodeURIComponent});var Ke6=(X)=>Gt(X,CX1),vA1;var tB0=D(()=>{zw();ss6();Xe6();Rq();vA1=class{raw;#X;#Y;routeIndex=0;path;bodyCache={};constructor(X,Y="/",G=[[]]){this.raw=X,this.path=Y,this.#Y=G,this.#X={}}param(X){return X?this.#G(X):this.#Q()}#G(X){let Y=this.#Y[0][this.routeIndex][1][X],G=this.#J(Y);return G&&/\%/.test(G)?Ke6(G):G}#Q(){let X={},Y=Object.keys(this.#Y[0][this.routeIndex][1]);for(let G of Y){let Q=this.#J(this.#Y[0][this.routeIndex][1][G]);if(Q!==void 0)X[G]=/\%/.test(Q)?Ke6(Q):Q}return X}#J(X){return this.#Y[1]?this.#Y[1][X]:X}query(X){return We6(this.url,X)}queries(X){return $e6(this.url,X)}header(X){if(X)return this.raw.headers.get(X)??void 0;let Y={};return this.raw.headers.forEach((G,Q)=>{Y[Q]=G}),Y}async parseBody(X){return es6(this,X)}#Z=(X)=>{let{bodyCache:Y,raw:G}=this,Q=Y[X];if(Q)return Q;let J=Object.keys(Y)[0];if(J)return Y[J].then((W)=>{if(J==="json")W=JSON.stringify(W);return new Response(W)[X]()});return Y[X]=G[X]()};json(){return this.#Z("text").then((X)=>JSON.parse(X))}text(){return this.#Z("text")}arrayBuffer(){return this.#Z("arrayBuffer")}blob(){return this.#Z("blob")}formData(){return this.#Z("formData")}addValidatedData(X,Y){this.#X[X]=Y}valid(X){return this.#X[X]}get url(){return this.raw.url}get method(){return this.raw.method}get[os6](){return this.#Y}get matchedRoutes(){return this.#Y[0].map(([[,X]])=>X)}get routePath(){return this.#Y[0].map(([[,X]])=>X)[this.routeIndex].path}}});var bA1,He6=(X,Y)=>{let G=new String(X);return G.isEscaped=!0,G.callbacks=Y,G},vX1=async(X,Y,G,Q,J)=>{if(typeof X==="object"&&!(X instanceof String)){if(!(X instanceof Promise))X=X.toString();if(X instanceof Promise)X=await X}let W=X.callbacks;if(!W?.length)return Promise.resolve(X);if(J)J[0]+=X;else J=[X];let Z=Promise.all(W.map(($)=>$({phase:Y,buffer:J,context:Q}))).then(($)=>Promise.all($.filter(Boolean).map((K)=>vX1(K,Y,!1,Q,J))).then(()=>J[0]));if(G)return He6(await Z,W);else return Z};var yA1=D(()=>{bA1={Stringify:1,BeforeStream:2,Stream:3}});var Fe6="text/plain; charset=UTF-8",eB0=(X,Y)=>{return{"Content-Type":X,...Y}},_X1=(X,Y)=>new Response(X,Y),Ue6=class{#X;#Y;env={};#G;finalized=!1;error;#Q;#J;#Z;#$;#W;#K;#H;#U;#B;constructor(X,Y){if(this.#X=X,Y)this.#J=Y.executionCtx,this.env=Y.env,this.#K=Y.notFoundHandler,this.#B=Y.path,this.#U=Y.matchResult}get req(){return this.#Y??=new vA1(this.#X,this.#B,this.#U),this.#Y}get event(){if(this.#J&&"respondWith"in this.#J)return this.#J;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#J)return this.#J;else throw Error("This context has no ExecutionContext")}get res(){return this.#Z||=_X1(null,{headers:this.#H??=new Headers})}set res(X){if(this.#Z&&X){X=_X1(X.body,X);for(let[Y,G]of this.#Z.headers.entries()){if(Y==="content-type")continue;if(Y==="set-cookie"){let Q=this.#Z.headers.getSetCookie();X.headers.delete("set-cookie");for(let J of Q)X.headers.append("set-cookie",J)}else X.headers.set(Y,G)}}this.#Z=X,this.finalized=!0}render=(...X)=>{return this.#W??=(Y)=>this.html(Y),this.#W(...X)};setLayout=(X)=>this.#$=X;getLayout=()=>this.#$;setRenderer=(X)=>{this.#W=X};header=(X,Y,G)=>{if(this.finalized)this.#Z=_X1(this.#Z.body,this.#Z);let Q=this.#Z?this.#Z.headers:this.#H??=new Headers;if(Y===void 0)Q.delete(X);else if(G?.append)Q.append(X,Y);else Q.set(X,Y)};status=(X)=>{this.#Q=X};set=(X,Y)=>{this.#G??=new Map,this.#G.set(X,Y)};get=(X)=>{return this.#G?this.#G.get(X):void 0};get var(){if(!this.#G)return{};return Object.fromEntries(this.#G)}#F(X,Y,G){let Q=this.#Z?new Headers(this.#Z.headers):this.#H??new Headers;if(typeof Y==="object"&&"headers"in Y){let W=Y.headers instanceof Headers?Y.headers:new Headers(Y.headers);for(let[Z,$]of W)if(Z.toLowerCase()==="set-cookie")Q.append(Z,$);else Q.set(Z,$)}if(G)for(let[W,Z]of Object.entries(G))if(typeof Z==="string")Q.set(W,Z);else{Q.delete(W);for(let $ of Z)Q.append(W,$)}let J=typeof Y==="number"?Y:Y?.status??this.#Q;return _X1(X,{status:J,headers:Q})}newResponse=(...X)=>this.#F(...X);body=(X,Y,G)=>this.#F(X,Y,G);text=(X,Y,G)=>{return!this.#H&&!this.#Q&&!Y&&!G&&!this.finalized?new Response(X):this.#F(X,Y,eB0(Fe6,G))};json=(X,Y,G)=>{return this.#F(JSON.stringify(X),Y,eB0("application/json",G))};html=(X,Y,G)=>{let Q=(J)=>this.#F(J,Y,eB0("text/html; charset=UTF-8",G));return typeof X==="object"?vX1(X,bA1.Stringify,!1,{}).then(Q):Q(X)};redirect=(X,Y)=>{let G=String(X);return this.header("Location",!/[^\x00-\xFF]/.test(G)?G:encodeURI(G)),this.newResponse(null,Y??302)};notFound=()=>{return this.#K??=()=>_X1(),this.#K(this)}};var xA1=D(()=>{tB0();yA1()});var T7="ALL",Be6="all",Ne6,hA1="Can not add a route since the matcher is already built.",gA1;var Sq=D(()=>{Ne6=["get","post","put","delete","options","patch"],gA1=class extends Error{}});var XN0="__COMPOSED_HANDLER";var YN0=()=>{};var Hn5=(X)=>{return X.text("404 Not Found",404)},ze6=(X,Y)=>{if("getResponse"in X){let G=X.getResponse();return Y.newResponse(G.body,G)}return console.error(X),Y.text("Internal Server Error",500)},Oe6=class X{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#X="/";routes=[];constructor(Y={}){[...Ne6,Be6].forEach((W)=>{this[W]=(Z,...$)=>{if(typeof Z==="string")this.#X=Z;else this.#Q(W,this.#X,Z);return $.forEach((K)=>{this.#Q(W,this.#X,K)}),this}}),this.on=(W,Z,...$)=>{for(let K of[Z].flat()){this.#X=K;for(let H of[W].flat())$.map((U)=>{this.#Q(H.toUpperCase(),this.#X,U)})}return this},this.use=(W,...Z)=>{if(typeof W==="string")this.#X=W;else this.#X="*",Z.unshift(W);return Z.forEach(($)=>{this.#Q(T7,this.#X,$)}),this};let{strict:Q,...J}=Y;Object.assign(this,J),this.getPath=Q??!0?Y.getPath??sB0:Je6}#Y(){let Y=new X({router:this.router,getPath:this.getPath});return Y.errorHandler=this.errorHandler,Y.#G=this.#G,Y.routes=this.routes,Y}#G=Hn5;errorHandler=ze6;route(Y,G){let Q=this.basePath(Y);return G.routes.map((J)=>{let W;if(G.errorHandler===ze6)W=J.handler;else W=async(Z,$)=>(await aB0([],G.errorHandler)(Z,()=>J.handler(Z,$))).res,W[XN0]=J.handler;Q.#Q(J.method,J.path,W)}),this}basePath(Y){let G=this.#Y();return G._basePath=vj(this._basePath,Y),G}onError=(Y)=>{return this.errorHandler=Y,this};notFound=(Y)=>{return this.#G=Y,this};mount(Y,G,Q){let J,W;if(Q)if(typeof Q==="function")W=Q;else if(W=Q.optionHandler,Q.replaceRequest===!1)J=(K)=>K;else J=Q.replaceRequest;let Z=W?(K)=>{let H=W(K);return Array.isArray(H)?H:[H]}:(K)=>{let H=void 0;try{H=K.executionCtx}catch{}return[K.env,H]};J||=(()=>{let K=vj(this._basePath,Y),H=K==="/"?0:K.length;return(U)=>{let B=new URL(U.url);return B.pathname=B.pathname.slice(H)||"/",new Request(B,U)}})();let $=async(K,H)=>{let U=await G(J(K.req.raw),...Z(K));if(U)return U;await H()};return this.#Q(T7,vj(Y,"*"),$),this}#Q(Y,G,Q){Y=Y.toUpperCase(),G=vj(this._basePath,G);let J={basePath:this._basePath,path:G,method:Y,handler:Q};this.router.add(Y,G,[Q,J]),this.routes.push(J)}#J(Y,G){if(Y instanceof Error)return this.errorHandler(Y,G);throw Y}#Z(Y,G,Q,J){if(J==="HEAD")return(async()=>new Response(null,await this.#Z(Y,G,Q,"GET")))();let W=this.getPath(Y,{env:Q}),Z=this.router.match(J,W),$=new Ue6(Y,{path:W,matchResult:Z,env:Q,executionCtx:G,notFoundHandler:this.#G});if(Z[0].length===1){let H;try{H=Z[0][0][0][0]($,async()=>{$.res=await this.#G($)})}catch(U){return this.#J(U,$)}return H instanceof Promise?H.then((U)=>U||($.finalized?$.res:this.#G($))).catch((U)=>this.#J(U,$)):H??this.#G($)}let K=aB0(Z[0],this.errorHandler,this.#G);return(async()=>{try{let H=await K($);if(!H.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return H.res}catch(H){return this.#J(H,$)}})()}fetch=(Y,...G)=>{return this.#Z(Y,G[1],G[0],Y.method)};request=(Y,G,Q,J)=>{if(Y instanceof Request)return this.fetch(G?new Request(Y,G):Y,Q,J);return Y=Y.toString(),this.fetch(new Request(/^https?:\/\//.test(Y)?Y:`http://localhost${vj("/",Y)}`,G),Q,J)};fire=()=>{addEventListener("fetch",(Y)=>{Y.respondWith(this.#Z(Y.request,Y,void 0,Y.request.method))})}};var De6=D(()=>{rs6();xA1();Sq();YN0();Rq()});function uA1(X,Y){let G=this.buildAllMatchers(),Q=(J,W)=>{let Z=G[J]||G[T7],$=Z[2][W];if($)return $;let K=W.match(Z[0]);if(!K)return[[],fX1];let H=K.indexOf("",1);return[Z[1][H],K]};return this.match=Q,Q(X,Y)}var fX1;var GN0=D(()=>{Sq();fX1=[]});function Un5(X,Y){if(X.length===1)return Y.length===1?X<Y?-1:1:-1;if(Y.length===1)return 1;if(X===bX1||X===yX1)return 1;else if(Y===bX1||Y===yX1)return-1;if(X===lA1)return 1;else if(Y===lA1)return-1;return X.length===Y.length?X<Y?-1:1:Y.length-X.length}var lA1="[^/]+",bX1=".*",yX1="(?:|/.*)",_j,Fn5,we6=class X{#X;#Y;#G=Object.create(null);insert(Y,G,Q,J,W){if(Y.length===0){if(this.#X!==void 0)throw _j;if(W)return;this.#X=G;return}let[Z,...$]=Y,K=Z==="*"?$.length===0?["","",bX1]:["","",lA1]:Z==="/*"?["","",yX1]:Z.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),H;if(K){let U=K[1],B=K[2]||lA1;if(U&&K[2]){if(B===".*")throw _j;if(B=B.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(B))throw _j}if(H=this.#G[B],!H){if(Object.keys(this.#G).some((N)=>N!==bX1&&N!==yX1))throw _j;if(W)return;if(H=this.#G[B]=new X,U!=="")H.#Y=J.varIndex++}if(!W&&U!=="")Q.push([U,H.#Y])}else if(H=this.#G[Z],!H){if(Object.keys(this.#G).some((U)=>U.length>1&&U!==bX1&&U!==yX1))throw _j;if(W)return;H=this.#G[Z]=new X}H.insert($,G,Q,J,W)}buildRegExpStr(){let G=Object.keys(this.#G).sort(Un5).map((Q)=>{let J=this.#G[Q];return(typeof J.#Y==="number"?`(${Q})@${J.#Y}`:Fn5.has(Q)?`\\${Q}`:Q)+J.buildRegExpStr()});if(typeof this.#X==="number")G.unshift(`#${this.#X}`);if(G.length===0)return"";if(G.length===1)return G[0];return"(?:"+G.join("|")+")"}};var QN0=D(()=>{_j=Symbol(),Fn5=new Set(".\\+*[^]$()")});var Le6=class{#X={varIndex:0};#Y=new we6;insert(X,Y,G){let Q=[],J=[];for(let Z=0;;){let $=!1;if(X=X.replace(/\{[^}]+\}/g,(K)=>{let H=`@\\${Z}`;return J[Z]=[H,K],Z++,$=!0,H}),!$)break}let W=X.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let Z=J.length-1;Z>=0;Z--){let[$]=J[Z];for(let K=W.length-1;K>=0;K--)if(W[K].indexOf($)!==-1){W[K]=W[K].replace($,J[Z][1]);break}}return this.#Y.insert(W,Y,Q,this.#X,G),Q}buildRegExp(){let X=this.#Y.buildRegExpStr();if(X==="")return[/^$/,[],[]];let Y=0,G=[],Q=[];return X=X.replace(/#(\d+)|@(\d+)|\.\*\$/g,(J,W,Z)=>{if(W!==void 0)return G[++Y]=Number(W),"$()";if(Z!==void 0)return Q[Number(Z)]=++Y,"";return""}),[new RegExp(`^${X}`),G,Q]}};var Ee6=D(()=>{QN0()});function qe6(X){return Pe6[X]??=new RegExp(X==="*"?"":`^${X.replace(/\/\*$|([.\\+*[^\]$()])/g,(Y,G)=>G?`\\${G}`:"(?:|/.*)")}$`)}function Nn5(){Pe6=Object.create(null)}function zn5(X){let Y=new Le6,G=[];if(X.length===0)return Bn5;let Q=X.map((H)=>[!/\*|\/:/.test(H[0]),...H]).sort(([H,U],[B,N])=>H?1:B?-1:U.length-N.length),J=Object.create(null);for(let H=0,U=-1,B=Q.length;H<B;H++){let[N,z,O]=Q[H];if(N)J[z]=[O.map(([E])=>[E,Object.create(null)]),fX1];else U++;let w;try{w=Y.insert(z,U,N)}catch(E){throw E===_j?new gA1(z):E}if(N)continue;G[U]=O.map(([E,P])=>{let q=Object.create(null);P-=1;for(;P>=0;P--){let[j,M]=w[P];q[j]=M}return[E,q]})}let[W,Z,$]=Y.buildRegExp();for(let H=0,U=G.length;H<U;H++)for(let B=0,N=G[H].length;B<N;B++){let z=G[H][B]?.[1];if(!z)continue;let O=Object.keys(z);for(let w=0,E=O.length;w<E;w++)z[O[w]]=$[z[O[w]]]}let K=[];for(let H in Z)K[H]=G[Z[H]];return[W,K,J]}function Qt(X,Y){if(!X)return;for(let G of Object.keys(X).sort((Q,J)=>J.length-Q.length))if(qe6(G).test(Y))return[...X[G]];return}var Bn5,Pe6,mA1=class{name="RegExpRouter";#X;#Y;constructor(){this.#X={[T7]:Object.create(null)},this.#Y={[T7]:Object.create(null)}}add(X,Y,G){let Q=this.#X,J=this.#Y;if(!Q||!J)throw Error(hA1);if(!Q[X])[Q,J].forEach(($)=>{$[X]=Object.create(null),Object.keys($[T7]).forEach((K)=>{$[X][K]=[...$[T7][K]]})});if(Y==="/*")Y="*";let W=(Y.match(/\/:/g)||[]).length;if(/\*$/.test(Y)){let $=qe6(Y);if(X===T7)Object.keys(Q).forEach((K)=>{Q[K][Y]||=Qt(Q[K],Y)||Qt(Q[T7],Y)||[]});else Q[X][Y]||=Qt(Q[X],Y)||Qt(Q[T7],Y)||[];Object.keys(Q).forEach((K)=>{if(X===T7||X===K)Object.keys(Q[K]).forEach((H)=>{$.test(H)&&Q[K][H].push([G,W])})}),Object.keys(J).forEach((K)=>{if(X===T7||X===K)Object.keys(J[K]).forEach((H)=>$.test(H)&&J[K][H].push([G,W]))});return}let Z=fA1(Y)||[Y];for(let $=0,K=Z.length;$<K;$++){let H=Z[$];Object.keys(J).forEach((U)=>{if(X===T7||X===U)J[U][H]||=[...Qt(Q[U],H)||Qt(Q[T7],H)||[]],J[U][H].push([G,W-K+$+1])})}}match=uA1;buildAllMatchers(){let X=Object.create(null);return Object.keys(this.#Y).concat(Object.keys(this.#X)).forEach((Y)=>{X[Y]||=this.#G(Y)}),this.#X=this.#Y=void 0,Nn5(),X}#G(X){let Y=[],G=X===T7;if([this.#X,this.#Y].forEach((Q)=>{let J=Q[X]?Object.keys(Q[X]).map((W)=>[W,Q[X][W]]):[];if(J.length!==0)G||=!0,Y.push(...J);else if(X!==T7)Y.push(...Object.keys(Q[T7]).map((W)=>[W,Q[T7][W]]))}),!G)return null;else return zn5(Y)}};var JN0=D(()=>{Sq();Rq();GN0();QN0();Ee6();Bn5=[/^$/,[],Object.create(null)],Pe6=Object.create(null)});var On5=class{name="PreparedRegExpRouter";#X;#Y;constructor(X,Y){this.#X=X,this.#Y=Y}#G(X,Y){let G=this.#X[X];G[1].forEach((Q)=>Q&&Q.push(Y)),Object.values(G[2]).forEach((Q)=>Q[0].push(Y))}#Q(X,Y,G,Q,J){let W=this.#X[X];if(!J)W[2][Y][0].push([G,{}]);else Q.forEach((Z)=>{if(typeof Z==="number")W[1][Z].push([G,J]);else W[2][Z||Y][0].push([G,J])})}add(X,Y,G){if(!this.#X[X]){let J=this.#X[T7],W={};for(let Z in J[2])W[Z]=[J[2][Z][0].slice(),fX1];this.#X[X]=[J[0],J[1].map((Z)=>Array.isArray(Z)?Z.slice():0),W]}if(Y==="/*"||Y==="*"){let J=[G,{}];if(X===T7)for(let W in this.#X)this.#G(W,J);else this.#G(X,J);return}let Q=this.#Y[Y];if(!Q)throw Error(`Path ${Y} is not registered`);for(let[J,W]of Q)if(X===T7)for(let Z in this.#X)this.#Q(Z,Y,G,J,W);else this.#Q(X,Y,G,J,W)}buildAllMatchers(){return this.#X}match=uA1};var Ae6=D(()=>{Sq();GN0();JN0()});var Te6=D(()=>{JN0();Ae6()});var ZN0=class{name="SmartRouter";#X=[];#Y=[];constructor(X){this.#X=X.routers}add(X,Y,G){if(!this.#Y)throw Error(hA1);this.#Y.push([X,Y,G])}match(X,Y){if(!this.#Y)throw Error("Fatal error");let G=this.#X,Q=this.#Y,J=G.length,W=0,Z;for(;W<J;W++){let $=G[W];try{for(let K=0,H=Q.length;K<H;K++)$.add(...Q[K]);Z=$.match(X,Y)}catch(K){if(K instanceof gA1)continue;throw K}this.match=$.match.bind($),this.#X=[$],this.#Y=void 0;break}if(W===J)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,Z}get activeRouter(){if(this.#Y||this.#X.length!==1)throw Error("No active router has been determined yet.");return this.#X[0]}};var Ie6=D(()=>{Sq()});var Ve6=D(()=>{Ie6()});var xX1,Dn5=(X)=>{for(let Y in X)return!0;return!1},je6=class X{#X;#Y;#G;#Q=0;#J=xX1;constructor(Y,G,Q){if(this.#Y=Q||Object.create(null),this.#X=[],Y&&G){let J=Object.create(null);J[Y]={handler:G,possibleKeys:[],score:0},this.#X=[J]}this.#G=[]}insert(Y,G,Q){this.#Q=++this.#Q;let J=this,W=Ye6(G),Z=[];for(let $=0,K=W.length;$<K;$++){let H=W[$],U=W[$+1],B=Ge6(H,U),N=Array.isArray(B)?B[0]:H;if(N in J.#Y){if(J=J.#Y[N],B)Z.push(B[1]);continue}if(J.#Y[N]=new X,B)J.#G.push(B),Z.push(B[1]);J=J.#Y[N]}return J.#X.push({[Y]:{handler:Q,possibleKeys:Z.filter(($,K,H)=>H.indexOf($)===K),score:this.#Q}}),J}#Z(Y,G,Q,J,W){for(let Z=0,$=G.#X.length;Z<$;Z++){let K=G.#X[Z],H=K[Q]||K[T7],U={};if(H!==void 0){if(H.params=Object.create(null),Y.push(H),J!==xX1||W&&W!==xX1)for(let B=0,N=H.possibleKeys.length;B<N;B++){let z=H.possibleKeys[B],O=U[H.score];H.params[z]=W?.[z]&&!O?W[z]:J[z]??W?.[z],U[H.score]=!0}}}}search(Y,G){let Q=[];this.#J=xX1;let W=[this],Z=oB0(G),$=[],K=Z.length,H=null;for(let U=0;U<K;U++){let B=Z[U],N=U===K-1,z=[];for(let w=0,E=W.length;w<E;w++){let P=W[w],q=P.#Y[B];if(q)if(q.#J=P.#J,N){if(q.#Y["*"])this.#Z(Q,q.#Y["*"],Y,P.#J);this.#Z(Q,q,Y,P.#J)}else z.push(q);for(let j=0,M=P.#G.length;j<M;j++){let V=P.#G[j],R=P.#J===xX1?{}:{...P.#J};if(V==="*"){let h=P.#Y["*"];if(h)this.#Z(Q,h,Y,P.#J),h.#J=R,z.push(h);continue}let[C,_,v]=V;if(!B&&!(v instanceof RegExp))continue;let y=P.#Y[C];if(v instanceof RegExp){if(H===null){H=Array(K);let p=G[0]==="/"?1:0;for(let f=0;f<K;f++)H[f]=p,p+=Z[f].length+1}let h=G.substring(H[U]),i=v.exec(h);if(i){if(R[_]=i[0],this.#Z(Q,y,Y,P.#J,R),Dn5(y.#Y)){y.#J=R;let p=i[0].match(/\//)?.length??0;($[p]||=[]).push(y)}continue}}if(v===!0||v.test(B))if(R[_]=B,N){if(this.#Z(Q,y,Y,R,P.#J),y.#Y["*"])this.#Z(Q,y.#Y["*"],Y,R,P.#J)}else y.#J=R,z.push(y)}}let O=$.shift();W=O?z.concat(O):z}if(Q.length>1)Q.sort((U,B)=>{return U.score-B.score});return[Q.map(({handler:U,params:B})=>[U,B])]}};var Me6=D(()=>{Sq();Rq();xX1=Object.create(null)});var WN0=class{name="TrieRouter";#X;constructor(){this.#X=new je6}add(X,Y,G){let Q=fA1(Y);if(Q){for(let J=0,W=Q.length;J<W;J++)this.#X.insert(X,Q[J],G);return}this.#X.insert(X,Y,G)}match(X,Y){return this.#X.search(X,Y)}};var Re6=D(()=>{Rq();Me6()});var Se6=D(()=>{Re6()});var t8;var ke6=D(()=>{De6();Te6();Ve6();Se6();t8=class extends Oe6{constructor(X={}){super(X);this.router=X.router??new ZN0({routers:[new mA1,new WN0]})}}});var uY=D(()=>{ke6()});var ve6,wn5,Ce6=(X)=>{let Y=0,G=X.length;while(Y<G){let Q=X.charCodeAt(Y);if(Q!==32&&Q!==9)break;Y++}while(G>Y){let Q=X.charCodeAt(G-1);if(Q!==32&&Q!==9)break;G--}return Y===0&&G===X.length?X:X.slice(Y,G)},$N0=(X,Y)=>{if(Y&&X.indexOf(Y)===-1)return{};let G=X.split(";"),Q={};for(let J of G){let W=J.indexOf("=");if(W===-1)continue;let Z=Ce6(J.substring(0,W));if(Y&&Y!==Z||!ve6.test(Z))continue;let $=Ce6(J.substring(W+1));if($.startsWith('"')&&$.endsWith('"'))$=$.slice(1,-1);if(wn5.test($)){if(Q[Z]=$.indexOf("%")!==-1?Gt($,CX1):$,Y)break}}return Q},Ln5=(X,Y,G={})=>{if(!ve6.test(X))throw Error("Invalid cookie name");let Q=`${X}=${Y}`;if(X.startsWith("__Secure-")&&!G.secure)throw Error("__Secure- Cookie must have Secure attributes");if(X.startsWith("__Host-")){if(!G.secure)throw Error("__Host- Cookie must have Secure attributes");if(G.path!=="/")throw Error('__Host- Cookie must have Path attributes with "/"');if(G.domain)throw Error("__Host- Cookie must not have Domain attributes")}for(let J of["domain","path"])if(G[J]&&/[;\r\n]/.test(G[J]))throw Error(`${J} must not contain ";", "\\r", or "\\n"`);if(G&&typeof G.maxAge==="number"&&G.maxAge>=0){if(G.maxAge>34560000)throw Error("Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.");Q+=`; Max-Age=${G.maxAge|0}`}if(G.domain&&G.prefix!=="host")Q+=`; Domain=${G.domain}`;if(G.path)Q+=`; Path=${G.path}`;if(G.expires){if(G.expires.getTime()-Date.now()>34560000000)throw Error("Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.");Q+=`; Expires=${G.expires.toUTCString()}`}if(G.httpOnly)Q+="; HttpOnly";if(G.secure)Q+="; Secure";if(G.sameSite)Q+=`; SameSite=${G.sameSite.charAt(0).toUpperCase()+G.sameSite.slice(1)}`;if(G.priority)Q+=`; Priority=${G.priority.charAt(0).toUpperCase()+G.priority.slice(1)}`;if(G.partitioned){if(!G.secure)throw Error("Partitioned Cookie must have Secure attributes");Q+="; Partitioned"}return Q},dA1=(X,Y,G)=>{return Y=encodeURIComponent(Y),Ln5(X,Y,G)};var _e6=D(()=>{Rq();ve6=/^[\w!#$%&'*.^`|~+-]+$/,wn5=/^[ !#-:<-[\]-~]*$/});var cA1=(X,Y,G)=>{let Q=X.req.raw.headers.get("Cookie");if(typeof Y==="string"){if(!Q)return;let W=Y;if(G==="secure")W="__Secure-"+Y;else if(G==="host")W="__Host-"+Y;return $N0(Q,W)[W]}if(!Q)return{};return $N0(Q)},En5=(X,Y,G)=>{let Q;if(G?.prefix==="secure")Q=dA1("__Secure-"+X,Y,{path:"/",...G,secure:!0});else if(G?.prefix==="host")Q=dA1("__Host-"+X,Y,{...G,path:"/",secure:!0,domain:void 0});else Q=dA1(X,Y,{path:"/",...G});return Q},KN0=(X,Y,G,Q)=>{let J=En5(Y,G,Q);X.header("Set-Cookie",J,{append:!0})};var HN0=D(()=>{_e6()});var fe6=(X)=>{let G={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...X},Q=((W)=>{if(typeof W==="string")if(W==="*"){if(G.credentials)return(Z)=>Z||null;return()=>W}else return(Z)=>W===Z?Z:null;else if(typeof W==="function")return W;else return(Z)=>W.includes(Z)?Z:null})(G.origin),J=((W)=>{if(typeof W==="function")return W;else if(Array.isArray(W))return()=>W;else return()=>[]})(G.allowMethods);return async function(Z,$){function K(U,B){Z.res.headers.set(U,B)}let H=await Q(Z.req.header("origin")||"",Z);if(H)K("Access-Control-Allow-Origin",H);if(G.credentials)K("Access-Control-Allow-Credentials","true");if(G.exposeHeaders?.length)K("Access-Control-Expose-Headers",G.exposeHeaders.join(","));if(Z.req.method==="OPTIONS"){if(G.origin!=="*"||G.credentials)K("Vary","Origin");if(G.maxAge!=null)K("Access-Control-Max-Age",G.maxAge.toString());let U=await J(Z.req.header("origin")||"",Z);if(U.length)K("Access-Control-Allow-Methods",U.join(","));let B=G.allowHeaders;if(!B?.length){let N=Z.req.header("Access-Control-Request-Headers");if(N)B=N.split(/\s*,\s*/)}if(B?.length)K("Access-Control-Allow-Headers",B.join(",")),Z.res.headers.append("Vary","Access-Control-Request-Headers");return Z.res.headers.delete("Content-Length"),Z.res.headers.delete("Content-Type"),new Response(null,{headers:Z.res.headers,status:204,statusText:"No Content"})}if(await $(),G.origin!=="*"||G.credentials)Z.header("Vary","Origin",{append:!0})}};var be6=()=>{};var ye6=()=>{try{return performance.now()}catch{}return Date.now()},FN0=(X)=>{let Y={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...X};return async function(Q,J){let W=[],Z=new Map;if(Q.get("metric"))return await J();if(Q.set("metric",{headers:W,timers:Z}),Y.total)DH(Q,"total",Y.totalDescription);if(await J(),Y.total)u$(Q,"total");if(Y.autoEnd)Z.forEach((K,H)=>u$(Q,H));if(typeof Y.enabled==="function"?Y.enabled(Q):Y.enabled){Q.res.headers.append("Server-Timing",W.join(","));let K=typeof Y.crossOrigin==="function"?Y.crossOrigin(Q):Y.crossOrigin;if(K)Q.res.headers.append("Timing-Allow-Origin",typeof K==="string"?K:"*")}}},xe6=(X,Y,G,Q,J)=>{let W=X.get("metric");if(!W){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof G==="number"){let Z=G.toFixed(J||1),$=Q?`${Y};dur=${Z};desc="${Q}"`:`${Y};dur=${Z}`;W.headers.push($)}else{let Z=G?`${Y};desc="${G}"`:`${Y}`;W.headers.push(Z)}},DH=(X,Y,G)=>{let Q=X.get("metric");if(!Q){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}Q.timers.set(Y,{description:G,start:ye6()})},u$=(X,Y,G)=>{let Q=X.get("metric");if(!Q){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let J=Q.timers.get(Y);if(!J){console.warn(`Timer "${Y}" does not exist!`);return}let{description:W,start:Z}=J,$=ye6()-Z;xe6(X,Y,$,W,G),Q.timers.delete(Y)};var he6=D(()=>{xA1()});var UN0=D(()=>{he6()});function hX1(){let X={Organizations:[],Connections:[],"Virtual MCPs":[],Threads:[],Monitoring:[],Users:[],"API Keys":[],"Event Bus":[],Tags:[],"AI Providers":[],Automations:[],"Object Storage":[],Registry:[],GitHub:[],VM:[]};for(let Y of BN0)X[Y.category]?.push(Y);return X}var BN0,Pn5,smX;var NN0=D(()=>{BN0=[{name:"ORGANIZATION_CREATE",description:"Create a new organization",category:"Organizations"},{name:"ORGANIZATION_LIST",description:"List organizations",category:"Organizations"},{name:"ORGANIZATION_GET",description:"View organization details",category:"Organizations"},{name:"ORGANIZATION_UPDATE",description:"Update organization",category:"Organizations"},{name:"ORGANIZATION_DELETE",description:"Delete organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_SETTINGS_GET",description:"View organization settings",category:"Organizations"},{name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization settings",category:"Organizations"},{name:"BRAND_CONTEXT_LIST",description:"List brand contexts",category:"Organizations"},{name:"BRAND_CONTEXT_GET",description:"View brand context",category:"Organizations"},{name:"BRAND_CONTEXT_CREATE",description:"Create brand context",category:"Organizations"},{name:"BRAND_CONTEXT_UPDATE",description:"Update brand context",category:"Organizations"},{name:"BRAND_CONTEXT_DELETE",description:"Delete brand context",category:"Organizations",dangerous:!0},{name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context from website",category:"Organizations"},{name:"BRAND_GET",description:"Get brand (binding)",category:"Organizations"},{name:"BRAND_LIST",description:"List brands (binding)",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_GET",description:"Get organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_SET",description:"Set organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_UPDATE",description:"Update organization domain settings",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_CLEAR",description:"Clear organization domain claim",category:"Organizations"},{name:"ORGANIZATION_MEMBER_ADD",description:"Add members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove members",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_LIST",description:"List members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update member roles",category:"Organizations"},{name:"COLLECTION_CONNECTIONS_CREATE",description:"Create connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_LIST",description:"List connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_GET",description:"View connection details",category:"Connections"},{name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete connections",category:"Connections",dangerous:!0},{name:"CONNECTION_TEST",description:"Test connections",category:"Connections"},{name:"DATABASES_RUN_SQL",description:"Run SQL queries",category:"Connections",dangerous:!0},{name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_GET",description:"View virtual MCP details",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete virtual MCPs",category:"Virtual MCPs",dangerous:!0},{name:"MONITORING_LOG_GET",description:"View monitoring log details",category:"Monitoring"},{name:"MONITORING_LOGS_LIST",description:"List monitoring logs",category:"Monitoring"},{name:"MONITORING_STATS",description:"View monitoring statistics",category:"Monitoring"},{name:"API_KEY_CREATE",description:"Create API key",category:"API Keys"},{name:"API_KEY_LIST",description:"List API keys",category:"API Keys"},{name:"API_KEY_UPDATE",description:"Update API key",category:"API Keys"},{name:"API_KEY_DELETE",description:"Delete API key",category:"API Keys",dangerous:!0},{name:"EVENT_PUBLISH",description:"Publish events",category:"Event Bus"},{name:"EVENT_SUBSCRIBE",description:"Subscribe to events",category:"Event Bus"},{name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events",category:"Event Bus"},{name:"EVENT_CANCEL",description:"Cancel recurring events",category:"Event Bus"},{name:"EVENT_ACK",description:"Acknowledge event delivery",category:"Event Bus"},{name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions",category:"Event Bus"},{name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state",category:"Event Bus"},{name:"USER_GET",description:"Get a user by id",category:"Users"},{name:"COLLECTION_THREADS_CREATE",description:"Create threads",category:"Threads"},{name:"COLLECTION_THREADS_LIST",description:"List threads",category:"Threads"},{name:"COLLECTION_THREADS_GET",description:"View thread details",category:"Threads"},{name:"COLLECTION_THREADS_UPDATE",description:"Update threads",category:"Threads"},{name:"COLLECTION_THREADS_DELETE",description:"Delete threads",category:"Threads",dangerous:!0},{name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List thread messages",category:"Threads"},{name:"TAGS_LIST",description:"List organization tags",category:"Tags"},{name:"TAGS_CREATE",description:"Create organization tag",category:"Tags"},{name:"TAGS_DELETE",description:"Delete organization tag",category:"Tags",dangerous:!0},{name:"MEMBER_TAGS_GET",description:"Get member tags",category:"Tags"},{name:"MEMBER_TAGS_SET",description:"Set member tags",category:"Tags"},{name:"AUTOMATION_CREATE",description:"Create automation",category:"Automations"},{name:"AUTOMATION_GET",description:"View automation details",category:"Automations"},{name:"AUTOMATION_LIST",description:"List automations",category:"Automations"},{name:"AUTOMATION_UPDATE",description:"Update automation",category:"Automations"},{name:"AUTOMATION_DELETE",description:"Delete automation",category:"Automations",dangerous:!0},{name:"AUTOMATION_TRIGGER_ADD",description:"Add trigger to automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove trigger from automation",category:"Automations"},{name:"AUTOMATION_RUN",description:"Manually trigger an automation run",category:"Automations"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"View virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Update virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update virtual MCP pinned sidebar views",category:"Virtual MCPs"},{name:"AI_PROVIDERS_LIST",description:"List available AI providers",category:"AI Providers"},{name:"AI_PROVIDERS_LIST_MODELS",description:"List AI provider models",category:"AI Providers"},{name:"AI_PROVIDERS_ACTIVE",description:"List active AI providers",category:"AI Providers"},{name:"AI_PROVIDER_KEY_CREATE",description:"Store AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_KEY_LIST",description:"List AI provider API keys",category:"AI Providers"},{name:"AI_PROVIDER_KEY_DELETE",description:"Delete AI provider API key",category:"AI Providers",dangerous:!0},{name:"AI_PROVIDER_OAUTH_URL",description:"Get OAuth URL for provider",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange OAuth code for API key",category:"AI Providers"},{name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision API key for a provider",category:"AI Providers"},{name:"AI_PROVIDER_TOPUP_URL",description:"Get checkout URL to top up provider credits",category:"AI Providers"},{name:"AI_PROVIDER_CREDITS",description:"Get current credit balance for a provider",category:"AI Providers"},{name:"AI_PROVIDER_CLI_ACTIVATE",description:"Activate Claude Code via local CLI",category:"AI Providers"},{name:"LIST_OBJECTS",description:"List objects in storage",category:"Object Storage"},{name:"GET_OBJECT_METADATA",description:"Get object metadata",category:"Object Storage"},{name:"GET_PRESIGNED_URL",description:"Generate download URL",category:"Object Storage"},{name:"PUT_PRESIGNED_URL",description:"Generate upload URL",category:"Object Storage"},{name:"DELETE_OBJECT",description:"Delete object",category:"Object Storage",dangerous:!0},{name:"DELETE_OBJECTS",description:"Delete multiple objects",category:"Object Storage",dangerous:!0},{name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry apps",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_GET",description:"Get registry app details",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"List registry app versions",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get registry app filters",category:"Registry"},{name:"REGISTRY_ITEM_LIST",description:"List private registry items",category:"Registry"},{name:"REGISTRY_ITEM_SEARCH",description:"Search registry items",category:"Registry"},{name:"REGISTRY_ITEM_GET",description:"Get registry item details",category:"Registry"},{name:"REGISTRY_ITEM_VERSIONS",description:"List registry item versions",category:"Registry"},{name:"REGISTRY_ITEM_CREATE",description:"Create registry item",category:"Registry"},{name:"REGISTRY_ITEM_BULK_CREATE",description:"Bulk create registry items",category:"Registry"},{name:"REGISTRY_ITEM_UPDATE",description:"Update registry item",category:"Registry"},{name:"REGISTRY_ITEM_DELETE",description:"Delete registry item",category:"Registry",dangerous:!0},{name:"REGISTRY_ITEM_FILTERS",description:"Get registry item filters",category:"Registry"},{name:"REGISTRY_DISCOVER_TOOLS",description:"Discover tools from MCP server",category:"Registry"},{name:"REGISTRY_AI_GENERATE",description:"AI-generate registry content",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_LIST",description:"List publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_REVIEW",description:"Review publish request",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_COUNT",description:"Count pending publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_DELETE",description:"Delete publish request",category:"Registry",dangerous:!0},{name:"REGISTRY_PUBLISH_API_KEY_GENERATE",description:"Generate publish API key",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_LIST",description:"List publish API keys",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_REVOKE",description:"Revoke publish API key",category:"Registry",dangerous:!0},{name:"REGISTRY_MONITOR_RUN_START",description:"Start monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_LIST",description:"List monitor runs",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_GET",description:"Get monitor run details",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RESULT_LIST",description:"List monitor results",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Sync monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update monitor connection auth",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_SET",description:"Set monitor schedule",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_CANCEL",description:"Cancel monitor schedule",category:"Registry"},{name:"VM_START",description:"Start a Freestyle VM with dev server preview",category:"VM"},{name:"VM_DELETE",description:"Stop and delete a Freestyle VM",category:"VM"},{name:"GITHUB_LIST_USER_ORGS",description:"List GitHub user's personal account and organizations",category:"GitHub"}],Pn5=[{id:"basic-usage",label:"Basic Usage",description:"Tools all org members can access by default",section:"Basic Usage",tools:["COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","CONNECTION_TEST","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","VIRTUAL_MCP_PLUGIN_CONFIG_GET","AUTOMATION_GET","AUTOMATION_LIST","AI_PROVIDERS_LIST","AI_PROVIDERS_LIST_MODELS","AI_PROVIDERS_ACTIVE","LIST_OBJECTS","GET_OBJECT_METADATA","GET_PRESIGNED_URL","PUT_PRESIGNED_URL","VM_START","VM_DELETE"]},{id:"org:manage",label:"Manage organization",description:"Edit organization settings, brand context, and domain configuration",section:"Organization",tools:["ORGANIZATION_GET","ORGANIZATION_LIST","ORGANIZATION_UPDATE","ORGANIZATION_SETTINGS_GET","ORGANIZATION_SETTINGS_UPDATE","BRAND_CONTEXT_LIST","BRAND_CONTEXT_GET","BRAND_CONTEXT_CREATE","BRAND_CONTEXT_UPDATE","BRAND_CONTEXT_DELETE","BRAND_CONTEXT_EXTRACT","BRAND_GET","BRAND_LIST","ORGANIZATION_DOMAIN_GET","ORGANIZATION_DOMAIN_SET","ORGANIZATION_DOMAIN_UPDATE","ORGANIZATION_DOMAIN_CLEAR"]},{id:"members:manage",label:"Manage members",description:"Invite members, remove them, and change their roles",section:"Organization",tools:["ORGANIZATION_MEMBER_LIST","ORGANIZATION_MEMBER_ADD","ORGANIZATION_MEMBER_REMOVE","ORGANIZATION_MEMBER_UPDATE_ROLE"],dangerous:!0},{id:"connections:manage",label:"Manage connections",description:"Create, update, and delete connections",section:"Connections & Agents",tools:["COLLECTION_CONNECTIONS_CREATE","COLLECTION_CONNECTIONS_UPDATE","COLLECTION_CONNECTIONS_DELETE"],dangerous:!0},{id:"agents:manage",label:"Manage agents",description:"Create, configure, and delete agents",section:"Connections & Agents",tools:["COLLECTION_VIRTUAL_MCP_CREATE","COLLECTION_VIRTUAL_MCP_UPDATE","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE","VIRTUAL_MCP_PINNED_VIEWS_UPDATE"],dangerous:!0},{id:"automations:manage",label:"Manage automations",description:"Create, update, run, and delete automations",section:"Automations",tools:["AUTOMATION_CREATE","AUTOMATION_UPDATE","AUTOMATION_DELETE","AUTOMATION_TRIGGER_ADD","AUTOMATION_TRIGGER_REMOVE","AUTOMATION_RUN"],dangerous:!0},{id:"monitoring:view",label:"View monitoring",description:"Access logs and usage statistics",section:"Monitoring",tools:["MONITORING_LOG_GET","MONITORING_LOGS_LIST","MONITORING_STATS"]},{id:"ai-providers:manage",label:"Manage AI providers",description:"Add or remove API keys and provision provider credentials",section:"AI Providers",tools:["AI_PROVIDER_KEY_CREATE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_KEY_DELETE","AI_PROVIDER_OAUTH_URL","AI_PROVIDER_OAUTH_EXCHANGE","AI_PROVIDER_PROVISION_KEY","AI_PROVIDER_TOPUP_URL","AI_PROVIDER_CREDITS","AI_PROVIDER_CLI_ACTIVATE"]},{id:"tags:manage",label:"Manage tags",description:"Create, assign, and delete organization tags",section:"Organization",tools:["TAGS_LIST","TAGS_CREATE","TAGS_DELETE","MEMBER_TAGS_GET","MEMBER_TAGS_SET"]},{id:"registry:manage",label:"Manage registry",description:"Browse, publish, and manage items in the registry",section:"Store & Registry",tools:["COLLECTION_REGISTRY_APP_LIST","COLLECTION_REGISTRY_APP_GET","COLLECTION_REGISTRY_APP_VERSIONS","COLLECTION_REGISTRY_APP_FILTERS","REGISTRY_ITEM_LIST","REGISTRY_ITEM_SEARCH","REGISTRY_ITEM_GET","REGISTRY_ITEM_VERSIONS","REGISTRY_ITEM_FILTERS","REGISTRY_DISCOVER_TOOLS","REGISTRY_ITEM_CREATE","REGISTRY_ITEM_BULK_CREATE","REGISTRY_ITEM_UPDATE","REGISTRY_ITEM_DELETE","REGISTRY_AI_GENERATE","REGISTRY_PUBLISH_REQUEST_LIST","REGISTRY_PUBLISH_REQUEST_REVIEW","REGISTRY_PUBLISH_REQUEST_COUNT","REGISTRY_PUBLISH_REQUEST_DELETE","REGISTRY_PUBLISH_API_KEY_GENERATE","REGISTRY_PUBLISH_API_KEY_LIST","REGISTRY_PUBLISH_API_KEY_REVOKE"],dangerous:!0},{id:"registry:monitor",label:"Monitor registry health",description:"Run health checks on registry connections and view results",section:"Store & Registry",tools:["REGISTRY_MONITOR_RUN_START","REGISTRY_MONITOR_RUN_LIST","REGISTRY_MONITOR_RUN_GET","REGISTRY_MONITOR_RUN_CANCEL","REGISTRY_MONITOR_RESULT_LIST","REGISTRY_MONITOR_CONNECTION_LIST","REGISTRY_MONITOR_CONNECTION_SYNC","REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH","REGISTRY_MONITOR_SCHEDULE_SET","REGISTRY_MONITOR_SCHEDULE_CANCEL"]},{id:"api-keys:manage",label:"Manage API keys",description:"Create, update, and revoke API keys",section:"Developer",tools:["API_KEY_CREATE","API_KEY_LIST","API_KEY_UPDATE","API_KEY_DELETE"]},{id:"event-bus:use",label:"Use event bus",description:"Publish events and manage subscriptions",section:"Developer",tools:["EVENT_PUBLISH","EVENT_SUBSCRIBE","EVENT_UNSUBSCRIBE","EVENT_CANCEL","EVENT_ACK","EVENT_SUBSCRIPTION_LIST","EVENT_SYNC_SUBSCRIPTIONS"]},{id:"storage:delete",label:"Delete from storage",description:"Permanently delete files from object storage",section:"Developer",tools:["DELETE_OBJECT","DELETE_OBJECTS"],dangerous:!0},{id:"connections:sql",label:"Run SQL queries",description:"Execute raw SQL against connected databases",section:"Developer",tools:["DATABASES_RUN_SQL"],dangerous:!0}],smX=new Set(Pn5.find((X)=>X.id==="basic-usage")?.tools??[])});var ge6=D(()=>{Kp();XO1()});function ue6(){return An5.parse(process.env)}var zN0=(X)=>F.enum(["true","false","1","0"]).optional().transform((Y)=>Y===void 0?X:Y==="true"||Y==="1"),qn5=(X)=>F.string().optional().transform((Y)=>Y?Y.split(",").map((G)=>G.trim()):X),An5;var le6=D(()=>{H0();An5=F.object({AUTH_EMAIL_PASSWORD_ENABLED:zN0(!0),AUTH_GOOGLE_CLIENT_ID:F.string().optional(),AUTH_GOOGLE_CLIENT_SECRET:F.string().optional(),AUTH_GITHUB_CLIENT_ID:F.string().optional(),AUTH_GITHUB_CLIENT_SECRET:F.string().optional(),AUTH_RESEND_API_KEY:F.string().optional(),AUTH_RESEND_FROM_EMAIL:F.string().optional(),AUTH_SENDGRID_API_KEY:F.string().optional(),AUTH_SENDGRID_FROM_EMAIL:F.string().optional(),AUTH_INVITE_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_RESET_PASSWORD_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_MAGIC_LINK_ENABLED:zN0(!1),AUTH_MAGIC_LINK_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_ENABLED:zN0(!1),AUTH_EMAIL_OTP_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_LENGTH:F.coerce.number().optional(),AUTH_EMAIL_OTP_EXPIRES_IN:F.coerce.number().optional(),AUTH_SSO_DOMAIN:F.string().optional(),AUTH_SSO_MS_TENANT_ID:F.string().optional(),AUTH_SSO_MS_CLIENT_ID:F.string().optional(),AUTH_SSO_MS_CLIENT_SECRET:F.string().optional(),AUTH_SSO_SCOPES:qn5(["openid","email","profile"])}).transform((X)=>{let Y={};if(X.AUTH_GOOGLE_CLIENT_ID)Y.google={clientId:X.AUTH_GOOGLE_CLIENT_ID,clientSecret:X.AUTH_GOOGLE_CLIENT_SECRET??""};if(X.AUTH_GITHUB_CLIENT_ID)Y.github={clientId:X.AUTH_GITHUB_CLIENT_ID,clientSecret:X.AUTH_GITHUB_CLIENT_SECRET??""};let G=[];if(X.AUTH_RESEND_API_KEY)G.push({id:"resend",provider:"resend",config:{apiKey:X.AUTH_RESEND_API_KEY,fromEmail:X.AUTH_RESEND_FROM_EMAIL??"noreply@example.com"}});if(X.AUTH_SENDGRID_API_KEY)G.push({id:"sendgrid",provider:"sendgrid",config:{apiKey:X.AUTH_SENDGRID_API_KEY,fromEmail:X.AUTH_SENDGRID_FROM_EMAIL??"noreply@example.com"}});let Q=G[0]?.id,J;if(X.AUTH_SSO_MS_CLIENT_ID&&X.AUTH_SSO_DOMAIN)J={providerId:"microsoft",domain:X.AUTH_SSO_DOMAIN,MS_TENANT_ID:X.AUTH_SSO_MS_TENANT_ID??"",MS_CLIENT_ID:X.AUTH_SSO_MS_CLIENT_ID,MS_CLIENT_SECRET:X.AUTH_SSO_MS_CLIENT_SECRET??"",scopes:X.AUTH_SSO_SCOPES};let W;if(X.AUTH_MAGIC_LINK_ENABLED)W={enabled:!0,emailProviderId:X.AUTH_MAGIC_LINK_EMAIL_PROVIDER??Q??""};let Z;if(X.AUTH_EMAIL_OTP_ENABLED)Z={enabled:!0,emailProviderId:X.AUTH_EMAIL_OTP_EMAIL_PROVIDER??Q??"",...X.AUTH_EMAIL_OTP_LENGTH!==void 0&&{otpLength:X.AUTH_EMAIL_OTP_LENGTH},...X.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&{expiresIn:X.AUTH_EMAIL_OTP_EXPIRES_IN}};return{emailAndPassword:{enabled:X.AUTH_EMAIL_PASSWORD_ENABLED},socialProviders:Object.keys(Y).length>0?Y:void 0,emailProviders:G.length>0?G:void 0,inviteEmailProviderId:X.AUTH_INVITE_EMAIL_PROVIDER,resetPasswordEmailProviderId:X.AUTH_RESET_PASSWORD_EMAIL_PROVIDER,ssoConfig:J,magicLinkConfig:W,emailOtpConfig:Z}})});var iA1;var me6=D(()=>{iA1={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"}});import{existsSync as Tn5,readFileSync as In5}from"fs";function Vn5(){let X=ue6(),Y=R6().configPath;if(!Tn5(Y))return{auth:X,monitoring:iA1};try{let G=JSON.parse(In5(Y,"utf-8"));if(G.auth)console.warn("[config] DEPRECATION: 'auth' key found in config.json. Auth is now configured via AUTH_* environment variables. The 'auth' key will be ignored.");return{auth:X,monitoring:G.monitoring??iA1,theme:G.theme,logo:G.logo,autoCreateOrganizationOnSignup:G.autoCreateOrganizationOnSignup}}catch{return{auth:X,monitoring:iA1}}}function fj(){if(!ON0)ON0=Vn5();return ON0}function de6(){return fj().theme}var ON0=null;var DN0=D(()=>{le6();me6();C9()});import{dirname as jn5,posix as Mn5,sep as Rn5}from"path";function ie6(){let X=Sn5();return async(Y)=>{for(let G of Y)G.module=X(G.filename);return Y}}function Sn5(X=process.argv[1]?jn5(process.argv[1]):process.cwd(),Y=Rn5==="\\"){let G=Y?ce6(X):X;return(Q)=>{if(!Q)return;let J=Y?ce6(Q):Q,{dir:W,base:Z,ext:$}=Mn5.parse(J);if($===".js"||$===".mjs"||$===".cjs")Z=Z.slice(0,-1*$.length);let K=decodeURIComponent(Z);if(!W)W=".";let H=W.lastIndexOf("/node_modules");if(H>-1)return`${W.slice(H+14).replace(/\//g,".")}:${K}`;if(W.startsWith(G)){let U=W.slice(G.length+1).replace(/\//g,".");return U?`${U}:${K}`:K}return K}}function ce6(X){return X.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var pe6=()=>{};function kn5(X,Y,G){return{key:X,enabled:typeof Y=="string"?!0:Y,variant:typeof Y=="string"?Y:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:G?JSON.stringify(G):void 0,description:void 0}}}var wN0=(X)=>{if("flags"in X){let Y=ne6(X.flags),G=ae6(X.flags);return{...X,featureFlags:Y,featureFlagPayloads:G}}{let Y=X.featureFlags??{},G=Object.fromEntries(Object.entries(X.featureFlagPayloads||{}).map(([J,W])=>[J,LN0(W)])),Q=Object.fromEntries(Object.entries(Y).map(([J,W])=>[J,kn5(J,W,G[J])]));return{...X,featureFlags:Y,featureFlagPayloads:G,flags:Q}}},ne6=(X)=>Object.fromEntries(Object.entries(X??{}).map(([Y,G])=>[Y,gX1(G)]).filter(([,Y])=>Y!==void 0)),ae6=(X)=>{let Y=X??{};return Object.fromEntries(Object.keys(Y).filter((G)=>{let Q=Y[G];return Q.enabled&&Q.metadata&&Q.metadata.payload!==void 0}).map((G)=>{let Q=Y[G].metadata?.payload;return[G,Q?LN0(Q):void 0]}))},gX1=(X)=>X===void 0?void 0:X.variant??X.enabled,LN0=(X)=>{if(typeof X!="string")return X;try{return JSON.parse(X)}catch{return X}};var pA1=()=>{};function te6(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}async function nA1(X,Y=!0,G){try{let Q=new CompressionStream("gzip"),J=Q.writable.getWriter(),W=J.write(new TextEncoder().encode(X)).then(()=>J.close()).catch(async(K)=>{try{await J.abort(K)}catch{}throw K}),Z=new Response(Q.readable).blob(),[$]=await Promise.all([Z,W]);return $}catch(Q){if(G?.rethrow)throw Q;if(Y)console.error("Failed to gzip compress data",Q);return null}}var EN0=()=>{};var Cn5,re6=function(X,Y=[]){if(!X)return!1;let G=X.toLowerCase();return Cn5.concat(Y).some((Q)=>{let J=Q.toLowerCase();return G.indexOf(J)!==-1})};var oe6=D(()=>{Cn5=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"]});var aJ;var bj=D(()=>{aJ=function(X){return X.AnonymousId="anonymous_id",X.DistinctId="distinct_id",X.Props="props",X.EnablePersonProcessing="enable_person_processing",X.PersonMode="person_mode",X.FeatureFlagDetails="feature_flag_details",X.FeatureFlags="feature_flags",X.FeatureFlagPayloads="feature_flag_payloads",X.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",X.BootstrapFeatureFlags="bootstrap_feature_flags",X.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",X.OverrideFeatureFlags="override_feature_flags",X.Queue="queue",X.LogsQueue="logs_queue",X.OptedOut="opted_out",X.SessionId="session_id",X.SessionStartTimestamp="session_start_timestamp",X.SessionLastTimestamp="session_timestamp",X.PersonProperties="person_properties",X.GroupProperties="group_properties",X.InstalledAppBuild="installed_app_build",X.InstalledAppVersion="installed_app_version",X.SessionReplay="session_replay",X.SurveyLastSeenDate="survey_last_seen_date",X.SurveysSeen="surveys_seen",X.Surveys="surveys",X.RemoteConfig="remote_config",X.FlagsEndpointWasHit="flags_endpoint_was_hit",X.DeviceId="device_id",X}({})});var aA1=()=>{};function rA1(X){return X===null||typeof X!="object"}function yj(X,Y){return Object.prototype.toString.call(X)===`[object ${Y}]`}function X14(X){return yj(X,"ErrorEvent")}function Zt(X){return typeof Event<"u"&&fn5(X,Event)}function Y14(X){return yj(X,"Object")}function fn5(X,Y){try{return X instanceof Y}catch{return!1}}var _n5,se6,qdX,PN0,tA1,uX1=(X)=>X===Object(X)&&!tA1(X),Jt=(X)=>X===void 0,kq=(X)=>PN0.call(X)=="[object String]",ee6=(X)=>kq(X)&&X.trim().length===0,lX1=(X)=>PN0.call(X)=="[object Number]"&&X===X,qN0=(X)=>X instanceof Error;var mX1=D(()=>{bj();aA1();_n5=Array.isArray,se6=Object.prototype,qdX=se6.hasOwnProperty,PN0=se6.toString,tA1=_n5||function(X){return PN0.call(X)==="[object Array]"}});function dX1(X,Y,G,Q,J){if(Y>G)Q.warn("min cannot be greater than max."),Y=G;if(lX1(X))if(X>G)return Q.warn(" cannot be greater than max: "+G+". Using max value instead."),G;else{if(!(X<Y))return X;return Q.warn(" cannot be less than min: "+Y+". Using min value instead."),Y}return Q.warn(" must be a number. using max or fallback. max: "+G+", fallback: "+J),dX1(J||G,Y,G,Q)}var AN0=D(()=>{mX1()});class TN0{constructor(X){this._buckets={},this._onBucketRateLimited=X._onBucketRateLimited,this._bucketSize=dX1(X.bucketSize,0,100,X._logger),this._refillRate=dX1(X.refillRate,0,this._bucketSize,X._logger),this._refillInterval=dX1(X.refillInterval,0,bn5,X._logger)}_applyRefill(X,Y){let G=Y-X.lastAccess,Q=Math.floor(G/this._refillInterval);if(Q>0){let J=Q*this._refillRate;X.tokens=Math.min(X.tokens+J,this._bucketSize),X.lastAccess=X.lastAccess+Q*this._refillInterval}}consumeRateLimit(X){let Y=Date.now(),G=String(X),Q=this._buckets[G];if(Q)this._applyRefill(Q,Y);else Q={tokens:this._bucketSize,lastAccess:Y},this._buckets[G]=Q;if(Q.tokens===0)return!0;if(Q.tokens--,Q.tokens===0)this._onBucketRateLimited?.(X);return Q.tokens===0}stop(){this._buckets={}}}var bn5=86400000;var G14=D(()=>{AN0()});class xj{constructor(X){this.bytes=X}static ofInner(X){if(X.length===16)return new xj(X);throw TypeError("not 128-bit length")}static fromFieldsV7(X,Y,G,Q){if(!Number.isInteger(X)||!Number.isInteger(Y)||!Number.isInteger(G)||!Number.isInteger(Q)||X<0||Y<0||G<0||Q<0||X>281474976710655||Y>4095||G>1073741823||Q>4294967295)throw RangeError("invalid field value");let J=new Uint8Array(16);return J[0]=X/1099511627776,J[1]=X/4294967296,J[2]=X/16777216,J[3]=X/65536,J[4]=X/256,J[5]=X,J[6]=112|Y>>>8,J[7]=Y,J[8]=128|G>>>24,J[9]=G>>>16,J[10]=G>>>8,J[11]=G,J[12]=Q>>>24,J[13]=Q>>>16,J[14]=Q>>>8,J[15]=Q,new xj(J)}static parse(X){let Y;switch(X.length){case 32:Y=/^[0-9a-f]{32}$/i.exec(X)?.[0];break;case 36:Y=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(X)?.slice(1,6).join("");break;case 38:Y=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(X)?.slice(1,6).join("");break;case 45:Y=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(X)?.slice(1,6).join("");break;default:break}if(Y){let G=new Uint8Array(16);for(let Q=0;Q<16;Q+=4){let J=parseInt(Y.substring(2*Q,2*Q+8),16);G[Q+0]=J>>>24,G[Q+1]=J>>>16,G[Q+2]=J>>>8,G[Q+3]=J}return new xj(G)}throw SyntaxError("could not parse UUID string")}toString(){let X="";for(let Y=0;Y<this.bytes.length;Y++)if(X+="0123456789abcdef".charAt(this.bytes[Y]>>>4),X+="0123456789abcdef".charAt(15&this.bytes[Y]),Y===3||Y===5||Y===7||Y===9)X+="-";return X}toHex(){let X="";for(let Y=0;Y<this.bytes.length;Y++)X+="0123456789abcdef".charAt(this.bytes[Y]>>>4),X+="0123456789abcdef".charAt(15&this.bytes[Y]);return X}toJSON(){return this.toString()}getVariant(){let X=this.bytes[8]>>>4;if(X<0)throw Error("unreachable");if(X<=7)return this.bytes.every((Y)=>Y===0)?"NIL":"VAR_0";if(X<=11)return"VAR_10";if(X<=13)return"VAR_110";if(X<=15)return this.bytes.every((Y)=>Y===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new xj(this.bytes.slice(0))}equals(X){return this.compareTo(X)===0}compareTo(X){for(let Y=0;Y<16;Y++){let G=this.bytes[Y]-X.bytes[Y];if(G!==0)return Math.sign(G)}return 0}}class J14{constructor(X){this.timestamp=0,this.counter=0,this.random=X??yn5()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(X,Y){let G=this.generateOrAbortCore(X,Y);if(G===void 0)this.timestamp=0,G=this.generateOrAbortCore(X,Y);return G}generateOrAbortCore(X,Y){if(!Number.isInteger(X)||X<1||X>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(Y<0||Y>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if(X>this.timestamp)this.timestamp=X,this.resetCounter();else{if(!(X+Y>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return xj.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let X=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return X[6]=64|X[6]>>>4,X[8]=128|X[8]>>>2,xj.ofInner(X)}}var yn5=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),Q14,Cq=()=>xn5().toString(),xn5=()=>(Q14||(Q14=new J14)).generate();var cX1=D(()=>{/*! For license information please see uuidv7.mjs.LICENSE.txt */});class IN0{add(X){let Y=Cq();return this.promiseByIds[Y]=X,X.catch(()=>{}).finally(()=>{delete this.promiseByIds[Y]}),X}async join(){let X=Object.values(this.promiseByIds),Y=X.length;while(Y>0)await Promise.all(X),X=Object.values(this.promiseByIds),Y=X.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}}var Z14=D(()=>{cX1()});function hn5(X=console){return{log:X.log.bind(X),warn:X.warn.bind(X),error:X.error.bind(X),debug:X.debug.bind(X)}}function $14(X,Y=gn5){return W14(X,Y,hn5())}var W14=(X,Y,G)=>{function Q(W,...Z){Y(()=>{let $=G[W];$(X,...Z)})}return{info:(...W)=>{Q("log",...W)},warn:(...W)=>{Q("warn",...W)},error:(...W)=>{Q("error",...W)},critical:(...W)=>{G.error(X,...W)},createLogger:(W)=>W14(`${X} ${W}`,Y,G)}},gn5=(X)=>X();var K14=()=>{};var $t="Mobile",sA1="iOS",Wt="Android",H14="Tablet",_dX,ln5="Apple",fdX,F14="Safari",eA1="BlackBerry",U14="Samsung",mn5,dn5,XT1="Chrome",cn5,in5,B14="Internet Explorer",pn5,jN0="Opera",bdX,N14="Edge",nn5,MN0="Firefox",an5,RN0="Nintendo",SN0="PlayStation",oA1="Xbox",tn5,rn5,iX1="Windows",on5,z14="Generic",ydX,xdX,sn5="Konqueror",F3="(\\d+(\\.\\d+)?)",VN0,hdX,gdX,udX,en5,Xa5,ldX,mdX;var O14=D(()=>{aA1();mX1();_dX=Wt+" "+H14,fdX=ln5+" Watch",mn5=U14+"Browser",dn5=U14+" Internet",cn5=XT1+" OS",in5=XT1+" "+sA1,pn5=B14+" "+$t,bdX=jN0+" Mini",nn5="Microsoft "+N14,an5=MN0+" "+sA1,tn5=Wt+" "+$t,rn5=$t+" "+F14,on5=iX1+" Phone",ydX=z14+" "+$t.toLowerCase(),xdX=z14+" "+H14.toLowerCase(),VN0=new RegExp("Version/"+F3),hdX=new RegExp(oA1,"i"),gdX=new RegExp(SN0+" \\w+","i"),udX=new RegExp(RN0+" \\w+","i"),en5=new RegExp(eA1+"|PlayBook|BB10","i"),Xa5={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"},ldX={[pn5]:[new RegExp("rv:"+F3)],[nn5]:[new RegExp(N14+"?\\/"+F3)],[XT1]:[new RegExp("("+XT1+"|CrMo)\\/"+F3)],[in5]:[new RegExp("CriOS\\/"+F3)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+F3)],[F14]:[VN0],[rn5]:[VN0],[jN0]:[new RegExp("("+jN0+"|OPR)\\/"+F3)],[MN0]:[new RegExp(MN0+"\\/"+F3)],[an5]:[new RegExp("FxiOS\\/"+F3)],[sn5]:[new RegExp("Konqueror[:/]?"+F3,"i")],[eA1]:[new RegExp(eA1+" "+F3),VN0],[tn5]:[new RegExp("android\\s"+F3,"i")],[dn5]:[new RegExp(mn5+"\\/"+F3)],[B14]:[new RegExp("(rv:|MSIE )"+F3)],Mozilla:[new RegExp("rv:"+F3)]},mdX=[[new RegExp(oA1+"; "+oA1+" (.*?)[);]","i"),(X)=>[oA1,X&&X[1]||""]],[new RegExp(RN0,"i"),[RN0,""]],[new RegExp(SN0,"i"),[SN0,""]],[en5,[eA1,""]],[new RegExp(iX1,"i"),(X,Y)=>{if(/Phone/.test(Y)||/WPDesktop/.test(Y))return[on5,""];if(new RegExp($t).test(Y)&&!/IEMobile\b/.test(Y))return[iX1+" "+$t,""];let G=/Windows NT ([0-9.]+)/i.exec(Y);if(G&&G[1]){let Q=G[1],J=Xa5[Q]||"";if(/arm/i.test(Y))J="RT";return[iX1,J]}return[iX1,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,(X)=>{if(X&&X[3]){let Y=[X[3],X[4],X[5]||"0"];return[sA1,Y.join(".")]}return[sA1,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,(X)=>{let Y="";if(X&&X.length>=3)Y=Jt(X[2])?X[3]:X[2];return["watchOS",Y]}],[new RegExp("("+Wt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Wt+")","i"),(X)=>{if(X&&X[2]){let Y=[X[2],X[3],X[4]||"0"];return[Wt,Y.join(".")]}return[Wt,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,(X)=>{let Y=["Mac OS X",""];if(X&&X[1]){let G=[X[1],X[2],X[3]||"0"];Y[1]=G.join(".")}return Y}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[cn5,""]],[/Linux|debian/i,["Linux",""]]]});function w14(X){return X?.replace(/\/+$/,"")}async function L14(X,Y){let G=null;for(let Q=0;Q<Y.retryCount+1;Q++){if(Q>0)await new Promise((J)=>setTimeout(J,Y.retryDelay));try{return await X()}catch(J){if(G=J,!Y.retryCheck(J))throw J}}throw G}function YT1(){return new Date().toISOString()}function Ow(X,Y){let G=setTimeout(X,Y);return G?.unref&&G?.unref(),G}function kN0(X){return Promise.all(X.map((Y)=>(Y??Promise.resolve()).then((G)=>({status:"fulfilled",value:G}),(G)=>({status:"rejected",reason:G}))))}var D14="utf8",E14=(X)=>X instanceof Error;var U3=D(()=>{oe6();G14();AN0();aA1();mX1();Z14();K14();O14()});var Ya5,GcX;var CN0=D(()=>{U3();Ya5={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},GcX=Ya5.info});var P14=D(()=>{CN0();bj()});var q14=D(()=>{bj()});class vN0{constructor(){this.events={},this.events={}}on(X,Y){if(!this.events[X])this.events[X]=[];return this.events[X].push(Y),()=>{this.events[X]=this.events[X].filter((G)=>G!==Y)}}emit(X,Y){for(let G of this.events[X]||[])G(Y);for(let G of this.events["*"]||[])G(X,Y)}}var A14=()=>{};async function T14(X){if(X instanceof Kt){let Y="";try{Y=await X.text}catch{}console.error(`Error while flushing PostHog: message=${X.message}, response body=${Y}`,X)}else console.error("Error while flushing PostHog",X);return Promise.resolve()}function _N0(X){return typeof X=="object"&&(X instanceof Kt||X instanceof pX1)}function I14(X){return typeof X=="object"&&X instanceof Kt&&X.status===413}class GT1{constructor(X,Y={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new IN0,this._events=new vN0,this._isInitialized=!1;let G=typeof X=="string"?X.trim():"",Q=typeof Y.host=="string"?Y.host.trim():"",J=!G;if(this._logger=$14("[PostHog]",this.logMsgIfDebug.bind(this)),J)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=G,this.host=w14(Q||"https://us.i.posthog.com"),this.flushAt=Y.flushAt?Math.max(Y.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,Y.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,Y.maxQueueSize??1000),this.flushInterval=Y.flushInterval??1e4,this.preloadFeatureFlags=Y.preloadFeatureFlags??!0,this.defaultOptIn=Y.defaultOptIn??!0,this.disableSurveys=Y.disableSurveys??!1,this._retryOptions={retryCount:Y.fetchRetryCount??3,retryDelay:Y.fetchRetryDelay??3000,retryCheck:_N0},this.requestTimeout=Y.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=Y.featureFlagsRequestTimeoutMs??3000,this.remoteConfigRequestTimeoutMs=Y.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=Y.disableGeoip??!0,this.disabled=(Y.disabled??!1)||J,this.historicalMigration=Y?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=Y?.evaluationContexts??Y?.evaluationEnvironments,Y?.evaluationEnvironments&&!Y?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!te6()||(Y?.disableCompression??!1)}logMsgIfDebug(X){if(this.isDebug)X()}wrap(X){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return X();this._initPromise.then(()=>X())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(aJ.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(aJ.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(aJ.OptedOut,!0)})}on(X,Y){return this._events.on(X,Y)}debug(X=!0){if(this.removeDebugCallback?.(),X){let Y=this.on("*",(G,Q)=>this._logger.info(G,Q));this.removeDebugCallback=()=>{Y(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(X){return{distinct_id:X.distinct_id,event:X.event,properties:{...X.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(X){return this.promiseQueue.add(X)}identifyStateless(X,Y,G){this.wrap(()=>{let Q={...this.buildPayload({distinct_id:X,event:"$identify",properties:Y})};this.enqueue("identify",Q,G)})}async identifyStatelessImmediate(X,Y,G){let Q={...this.buildPayload({distinct_id:X,event:"$identify",properties:Y})};await this.sendImmediate("identify",Q,G)}captureStateless(X,Y,G,Q){this.wrap(()=>{let J=this.buildPayload({distinct_id:X,event:Y,properties:G});this.enqueue("capture",J,Q)})}async captureStatelessImmediate(X,Y,G,Q){let J=this.buildPayload({distinct_id:X,event:Y,properties:G});await this.sendImmediate("capture",J,Q)}aliasStateless(X,Y,G,Q){this.wrap(()=>{let J=this.buildPayload({event:"$create_alias",distinct_id:Y,properties:{...G||{},distinct_id:Y,alias:X}});this.enqueue("alias",J,Q)})}async aliasStatelessImmediate(X,Y,G,Q){let J=this.buildPayload({event:"$create_alias",distinct_id:Y,properties:{...G||{},distinct_id:Y,alias:X}});await this.sendImmediate("alias",J,Q)}groupIdentifyStateless(X,Y,G,Q,J,W){this.wrap(()=>{let Z=this.buildPayload({distinct_id:J||`$${X}_${Y}`,event:"$groupidentify",properties:{$group_type:X,$group_key:Y,$group_set:G||{},...W||{}}});this.enqueue("capture",Z,Q)})}async getRemoteConfig(){await this._initPromise;let X=this.host;if(X==="https://us.i.posthog.com")X="https://us-assets.i.posthog.com";else if(X==="https://eu.i.posthog.com")X="https://eu-assets.i.posthog.com";let Y=`${X}/array/${this.apiKey}/config`,G={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(Y,G,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((Q)=>Q.json()).catch((Q)=>{this._logger.error("Remote config could not be loaded",Q),this._events.emit("error",Q)})}async getFlags(X,Y={},G={},Q={},J={},W=!1){await this._initPromise;let Z=W?"&config=true":"",$=`${this.host}/flags/?v=2${Z}`,K={token:this.apiKey,distinct_id:X,groups:Y,person_properties:G,group_properties:Q,...J};if(G.$device_id)K.$device_id=G.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)K.evaluation_contexts=this.evaluationContexts;let H={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(K)};return this._logger.info("Flags URL",$),this.fetchWithRetry($,H,{retryCount:0},this.featureFlagsRequestTimeoutMs).then((U)=>U.json()).then((U)=>({success:!0,response:wN0(U)})).catch((U)=>{return this._events.emit("error",U),{success:!1,error:this.categorizeRequestError(U)}})}categorizeRequestError(X){if(X instanceof Kt)return{type:"api_error",statusCode:X.status};if(X instanceof pX1){let Y=X.error;if(Y instanceof Error&&(Y.name==="AbortError"||Y.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(X,Y,G={},Q={},J={},W){await this._initPromise;let Z=await this.getFeatureFlagDetailStateless(X,Y,G,Q,J,W);if(Z===void 0)return{response:void 0,requestId:void 0};let $=gX1(Z.response);if($===void 0)$=!1;return{response:$,requestId:Z.requestId}}async getFeatureFlagDetailStateless(X,Y,G={},Q={},J={},W){await this._initPromise;let Z=await this.getFeatureFlagDetailsStateless(Y,G,Q,J,W,[X]);if(Z===void 0)return;return{response:Z.flags[X],requestId:Z.requestId,evaluatedAt:Z.evaluatedAt}}async getFeatureFlagPayloadStateless(X,Y,G={},Q={},J={},W){await this._initPromise;let Z=await this.getFeatureFlagPayloadsStateless(Y,G,Q,J,W,[X]);if(!Z)return;let $=Z[X];if($===void 0)return null;return $}async getFeatureFlagPayloadsStateless(X,Y={},G={},Q={},J,W){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(X,Y,G,Q,J,W)).payloads}async getFeatureFlagsStateless(X,Y={},G={},Q={},J,W){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(X,Y,G,Q,J,W)}async getFeatureFlagsAndPayloadsStateless(X,Y={},G={},Q={},J,W){await this._initPromise;let Z=await this.getFeatureFlagDetailsStateless(X,Y,G,Q,J,W);if(!Z)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:Z.featureFlags,payloads:Z.featureFlagPayloads,requestId:Z.requestId}}async getFeatureFlagDetailsStateless(X,Y={},G={},Q={},J,W){await this._initPromise;let Z={};if(J??this.disableGeoip)Z.geoip_disable=!0;if(W)Z.flag_keys_to_evaluate=W;let $=await this.getFlags(X,Y,G,Q,Z);if(!$.success)return;let K=$.response;if(K.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(K.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:K?.requestId,quotaLimited:K.quotaLimited};return K}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let X=`${this.host}/api/surveys/?token=${this.apiKey}`,Y={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},Q=(await this.fetchWithRetry(X,Y).then((J)=>{if(J.status!==200||!J.json){let W=`Surveys API could not be loaded: ${J.status}`,Z=Error(W);this._logger.error(Z),this._events.emit("error",Error(W));return}return J.json()}).catch((J)=>{this._logger.error("Surveys API could not be loaded",J),this._events.emit("error",J)}))?.surveys;if(Q)this._logger.info("Surveys fetched from API: ",JSON.stringify(Q));return Q??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(aJ.Props);return this._props||{}}set props(X){this._props=X}async register(X){this.wrap(()=>{this.props={...this.props,...X},this.setPersistedProperty(aJ.Props,this.props)})}async unregister(X){this.wrap(()=>{delete this.props[X],this.setPersistedProperty(aJ.Props,this.props)})}processBeforeEnqueue(X){return X}async flushStorage(){}enqueue(X,Y,G){this.wrap(()=>{if(this.optedOut)return void this._events.emit(X,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage(X,Y,G);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let J=this.getPersistedProperty(aJ.Queue)||[];if(J.length>=this.maxQueueSize)J.shift(),this._logger.info("Queue is full, the oldest event is dropped.");if(J.push({message:Q}),this.setPersistedProperty(aJ.Queue,J),this._events.emit(X,Q),J.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=Ow(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate(X,Y,G){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit(X,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage(X,Y,G);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let J={api_key:this.apiKey,batch:[Q],sent_at:YT1()};if(this.historicalMigration)J.historical_migration=!0;let W=JSON.stringify(J),Z=`${this.host}/batch/`,$=this.disableCompression?null:await nA1(W,this.isDebug),K={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...$!==null&&{"Content-Encoding":"gzip"}},body:$||W};try{await this.fetchWithRetry(Z,K)}catch(H){this._events.emit("error",H)}}prepareMessage(X,Y,G){let Q={...Y,type:X,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:G?.timestamp?G?.timestamp:YT1(),uuid:G?.uuid?G.uuid:Cq()};if(G?.disableGeoip??this.disableGeoip){if(!Q.properties)Q.properties={};Q.properties.$geoip_disable=!0}if(Q.distinctId)Q.distinct_id=Q.distinctId,delete Q.distinctId;return Q}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){this.flush().catch(async(X)=>{await T14(X)})}async flush(){let X=kN0([this.flushPromise]).then(()=>this._flush());return this.flushPromise=X,this.addPendingPromise(X),kN0([X]).then(()=>{if(this.flushPromise===X)this.flushPromise=null}),X}getCustomHeaders(){let X=this.getCustomUserAgent(),Y={};if(X&&X!=="")Y["User-Agent"]=X;return Y}async _flush(){this.clearFlushTimer(),await this._initPromise;let X=this.getPersistedProperty(aJ.Queue)||[];if(!X.length)return;let Y=[],G=X.length;while(X.length>0&&Y.length<G){let Q=X.slice(0,this.maxBatchSize),J=Q.map((N)=>N.message),W=async()=>{let z=(this.getPersistedProperty(aJ.Queue)||[]).slice(Q.length);this.setPersistedProperty(aJ.Queue,z),X=z,await this.flushStorage()},Z={api_key:this.apiKey,batch:J,sent_at:YT1()};if(this.historicalMigration)Z.historical_migration=!0;let $=JSON.stringify(Z),K=`${this.host}/batch/`,H=this.disableCompression?null:await nA1($,this.isDebug),U={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...H!==null&&{"Content-Encoding":"gzip"}},body:H||$},B={retryCheck:(N)=>{if(I14(N))return!1;return _N0(N)}};try{await this.fetchWithRetry(K,U,B)}catch(N){if(I14(N)&&J.length>1){this.maxBatchSize=Math.max(1,Math.floor(J.length/2)),this._logger.warn(`Received 413 when sending batch of size ${J.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(N instanceof pX1))await W();throw this._events.emit("error",N),N}await W(),Y.push(...J)}this._events.emit("flush",Y)}async fetchWithRetry(X,Y,G,Q){let J=Y.body?Y.body:"",W=-1;try{W=J instanceof Blob?J.size:Buffer.byteLength(J,D14)}catch{if(J instanceof Blob)W=J.size;else W=new TextEncoder().encode(J).length}return await L14(async()=>{let Z=new AbortController,$=Q??this.requestTimeout,K=Ow(()=>Z.abort(),$),H=null;try{H=await this.fetch(X,{signal:Z.signal,...Y})}catch(B){throw new pX1(B)}finally{clearTimeout(K)}if(Y.mode!=="no-cors"&&(H.status<200||H.status>=400))throw new Kt(H,W);return H},{...this._retryOptions,...G})}async _shutdown(X=30000){await this._initPromise;let Y=!1;this.clearFlushTimer();let G=async()=>{try{await this.promiseQueue.join();while(!0){if((this.getPersistedProperty(aJ.Queue)||[]).length===0)break;if(await this.flush(),Y)break}}catch(J){if(!_N0(J))throw J;await T14(J)}},Q;try{return await Promise.race([new Promise((J,W)=>{Q=Ow(()=>{this._logger.error("Timed out while shutting down PostHog"),Y=!0,W("Timeout while shutting down PostHog. Some events may not have been sent.")},X)}),G()])}finally{clearTimeout(Q)}}async shutdown(X=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown(X).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var Kt,pX1;var fN0=D(()=>{A14();pA1();EN0();bj();U3();cX1();Kt=class Kt extends Error{constructor(X,Y){super("HTTP error while fetching PostHog: status="+X.status+", reqByteLength="+Y),this.response=X,this.reqByteLength=Y,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}};pX1=class pX1 extends Error{constructor(X){super("Network error while fetching PostHog",X instanceof Error?{cause:X}:{}),this.error=X,this.name="PostHogFetchNetworkError"}}});var V14=D(()=>{pA1();bj();fN0();cX1();U3()});var j14=D(()=>{mX1()});function R14(X){let Y=globalThis._posthogChunkIds;if(!Y)return;let G=Object.keys(Y);if(JT1&&G.length===M14)return JT1;return M14=G.length,JT1=G.reduce((Q,J)=>{if(!QT1)QT1={};let W=QT1[J];if(W)Q[W[0]]=W[1];else{let Z=X(J);for(let $=Z.length-1;$>=0;$--){let H=Z[$]?.filename,U=Y[J];if(H&&U){Q[H]=U,QT1[J]=[H,U];break}}}return Q},{}),JT1}var QT1,M14,JT1;var S14=()=>{};class k14{constructor(X,Y,G=[]){this.coercers=X,this.stackParser=Y,this.modifiers=G}buildFromUnknown(X,Y={}){let Q=Y&&Y.mechanism||{handled:!0,type:"generic"},W=this.buildCoercingContext(Q,Y,0).apply(X),Z=this.buildParsingContext(Y),$=this.parseStacktrace(W,Z);return{$exception_list:this.convertToExceptionList($,Q),$exception_level:"error"}}async modifyFrames(X){for(let Y of X)if(Y.stacktrace&&Y.stacktrace.frames&&tA1(Y.stacktrace.frames))Y.stacktrace.frames=await this.applyModifiers(Y.stacktrace.frames);return X}coerceFallback(X){return{type:"Error",value:"Unknown error",stack:X.syntheticException?.stack,synthetic:!0}}parseStacktrace(X,Y){let G;if(X.cause!=null)G=this.parseStacktrace(X.cause,Y);let Q;if(X.stack!=""&&X.stack!=null)Q=this.applyChunkIds(this.stackParser(X.stack,X.synthetic?Y.skipFirstLines:0),Y.chunkIdMap);return{...X,cause:G,stack:Q}}applyChunkIds(X,Y){return X.map((G)=>{if(G.filename&&Y)G.chunk_id=Y[G.filename];return G})}applyCoercers(X,Y){for(let G of this.coercers)if(G.match(X))return G.coerce(X,Y);return this.coerceFallback(Y)}async applyModifiers(X){let Y=X;for(let G of this.modifiers)Y=await G(Y);return Y}convertToExceptionList(X,Y){let G={type:X.type,value:X.value,mechanism:{type:Y.type??"generic",handled:Y.handled??!0,synthetic:X.synthetic??!1}};if(X.stack)G.stacktrace={type:"raw",frames:X.stack};let Q=[G];if(X.cause!=null)Q.push(...this.convertToExceptionList(X.cause,{...Y,handled:!0}));return Q}buildParsingContext(X){return{chunkIdMap:R14(this.stackParser),skipFirstLines:X.skipFirstLines??1}}buildCoercingContext(X,Y,G=0){let Q=(W,Z)=>{if(!(Z<=Ja5))return;{let $=this.buildCoercingContext(X,Y,Z);return this.applyCoercers(W,$)}};return{...Y,syntheticException:G==0?Y.syntheticException:void 0,mechanism:X,apply:(W)=>Q(W,G),next:(W)=>Q(W,G+1)}}}var Ja5=4;var C14=D(()=>{U3();S14()});function $z(X,Y,G,Q,J){let W={platform:X,filename:Y,function:G==="<anonymous>"?sQ:G,in_app:!0};if(!Jt(Q))W.lineno=Q;if(!Jt(J))W.colno=J;return W}var sQ="?";var vq=D(()=>{U3()});var ZT1=(X,Y)=>{let G=X.indexOf("safari-extension")!==-1,Q=X.indexOf("safari-web-extension")!==-1;return G||Q?[X.indexOf("@")!==-1?X.split("@")[0]:sQ,G?`safari-extension:${Y}`:`safari-web-extension:${Y}`]:[X,Y]};var bN0=D(()=>{vq()});var Za5,Wa5,$a5,yN0=(X,Y)=>{let G=Za5.exec(X);if(G){let[,J,W,Z]=G;return $z(Y,J,sQ,+W,+Z)}let Q=Wa5.exec(X);if(Q){if(Q[2]&&Q[2].indexOf("eval")===0){let $=$a5.exec(Q[2]);if($)Q[2]=$[1],Q[3]=$[2],Q[4]=$[3]}let[W,Z]=ZT1(Q[1]||sQ,Q[2]);return $z(Y,Z,W,Q[3]?+Q[3]:void 0,Q[4]?+Q[4]:void 0)}};var v14=D(()=>{vq();bN0();Za5=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,Wa5=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,$a5=/\((\S*)(?::(\d+))(?::(\d+))\)/});var Ka5,Ha5,xN0=(X,Y)=>{let G=Ka5.exec(X);if(G){if(G[3]&&G[3].indexOf(" > eval")>-1){let Z=Ha5.exec(G[3]);if(Z)G[1]=G[1]||"eval",G[3]=Z[1],G[4]=Z[2],G[5]=""}let J=G[3],W=G[1]||sQ;return[W,J]=ZT1(W,J),$z(Y,J,W,G[4]?+G[4]:void 0,G[5]?+G[5]:void 0)}};var _14=D(()=>{vq();bN0();Ka5=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Ha5=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i});var Fa5,f14=(X,Y)=>{let G=Fa5.exec(X);return G?$z(Y,G[2],G[1]||sQ,+G[3],G[4]?+G[4]:void 0):void 0};var b14=D(()=>{vq();Fa5=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i});var Ua5,y14=(X,Y)=>{let G=Ua5.exec(X);return G?$z(Y,G[2],G[3]||sQ,+G[1]):void 0},Ba5,x14=(X,Y)=>{let G=Ba5.exec(X);return G?$z(Y,G[5],G[3]||G[4]||sQ,+G[1],+G[2]):void 0};var h14=D(()=>{vq();Ua5=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,Ba5=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i});function Oa5(X,Y=!1){return!(Y||X&&!X.startsWith("/")&&!X.match(/^[A-Z]:/)&&!X.startsWith(".")&&!X.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&X!==void 0&&!X.includes("node_modules/")}function g14(X){return parseInt(X||"",10)||void 0}var Na5,za5,u14=(X,Y)=>{let G=X.match(za5);if(G){let Q,J,W,Z,$;if(G[1]){W=G[1];let U=W.lastIndexOf(".");if(W[U-1]===".")U--;if(U>0){Q=W.slice(0,U),J=W.slice(U+1);let B=Q.indexOf(".Module");if(B>0)W=W.slice(B+1),Q=Q.slice(0,B)}Z=void 0}if(J)Z=Q,$=J;if(J==="<anonymous>")$=void 0,W=void 0;if(W===void 0)$=$||sQ,W=Z?`${Z}.${$}`:$;let K=G[2]?.startsWith("file://")?G[2].slice(7):G[2],H=G[5]==="native";if(K?.match(/\/[A-Z]:/))K=K.slice(1);if(!K&&G[5]&&!H)K=G[5];return{filename:K?decodeURI(K):void 0,module:void 0,function:W,lineno:g14(G[3]),colno:g14(G[4]),in_app:Oa5(K||"",H),platform:Y}}if(X.match(Na5))return{filename:X,platform:Y}};var l14=D(()=>{vq();Na5=/^\s*[-]{4,}$/,za5=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/});function c14(X){if(!X.length)return[];let Y=Array.from(X);return Y.reverse(),Y.slice(0,d14).map((G)=>({...G,filename:G.filename||Da5(Y).filename,function:G.function||sQ}))}function Da5(X){return X[X.length-1]||{}}function wa5(){return i14("web:javascript",yN0,xN0)}function i14(X,...Y){return(G,Q=0)=>{let J=[],W=G.split(`
|
|
1645
|
+
`);Q=W.pop()??"";for(let Z of W){let $=vs6(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;PK({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=vs6(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)PK({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Cp5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await RA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await MA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)Md({name:z.name,status:"ready",port:z.port});ye(W),fe();let K=kp5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)_s6(U.stdout),_s6(U.stderr);let B=G||`http://localhost:${W.port}`;be(B),Md({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (q$1(),P$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var gB0=D(()=>{yB0();QF();xB0()});import{Box as uB0,Text as lB0}from"ink";import{jsx as bs6,jsxs as SA1}from"react/jsx-runtime";function fs6(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function fp5(X,Y){if(vp5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(_p5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>fs6(W)).join(", "),color:"cyan"}}let Q=fs6(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function bp5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"Transport",entries:[{key:"UNSAFE_ALLOW_STDIO_TRANSPORT",value:X.unsafeAllowStdioTransport}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function ys6({env:X}){let Y=bp5(X);return bs6(uB0,{flexDirection:"column",children:Y.map((G)=>SA1(uB0,{flexDirection:"column",marginTop:1,children:[SA1(lB0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=fp5(Q,J);return SA1(uB0,{children:[SA1(lB0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),bs6(lB0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var vp5,_p5;var xs6=D(()=>{vp5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),_p5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var mB0;var hs6=D(()=>{mB0={name:"decocms",version:"2.297.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as IU,Text as MX}from"ink";import{Spinner as xp5}from"@inkjs/ui";import{useSyncExternalStore as gs6}from"react";import{jsx as qY,jsxs as oQ}from"react/jsx-runtime";function mp5(X,Y){if(!X||!lp5.has(X))return X;let G=dB0[Y]??dB0[dB0.length-1];return X==="#875f00"?G[0]:G[1]}function us6({status:X}){if(X==="pending")return qY(xp5,{label:""});return qY(MX,{color:"green",children:"\u2713"})}function ls6({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=gs6(du0,mu0),Z=gs6(tu0,au0);return oQ(IU,{flexDirection:"column",paddingBottom:1,children:[J?oQ(IU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,up5-U);return oQ(IU,{flexDirection:"row",children:[$.map((N,z)=>{let O=mp5(N.color,K);return O?qY(MX,{color:O,children:N.text},z):qY(MX,{children:N.text},z)}),qY(MX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?qY(MX,{color:N.color,children:N.char},z):qY(MX,{children:N.char},z))]},K)}),oQ(MX,{dimColor:!0,children:[" v",mB0.version]})]}):oQ(IU,{flexDirection:"column",marginTop:1,children:[hp5.map(($,K)=>qY(MX,{color:gp5[K],children:$},K)),oQ(MX,{dimColor:!0,children:[" v",mB0.version]})]}),qY(IU,{marginBottom:1,children:qY(MX,{dimColor:!0,children:"\u2500".repeat(80)})}),qY(IU,{children:oQ(MX,{dimColor:!0,children:["Home: ",G]})}),oQ(IU,{gap:2,children:[X.map(($)=>oQ(IU,{gap:1,children:[oQ(MX,{children:[$.name," :",$.port||"...."]}),qY(us6,{status:$.status})]},$.name)),oQ(IU,{gap:1,children:[qY(MX,{children:"Migrations"}),qY(us6,{status:Y})]})]}),qY(IU,{children:Q?oQ(MX,{children:["Open in browser: ",qY(MX,{color:"cyan",children:Q})]}):qY(MX,{dimColor:!0,children:"Starting..."})}),oQ(IU,{gap:2,children:[oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var hp5,gp5,dB0,up5=30,lp5;var ms6=D(()=>{hs6();Tn1();Sn1();hp5=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],gp5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],dB0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],lp5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as dp5}from"react";function cp5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==kA1.rows||Y!==kA1.columns)kA1={rows:X,columns:Y};return kA1}function ip5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function ds6(){return dp5(ip5,cp5)}var kA1;var cs6=D(()=>{kA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as pp5,Text as kX1}from"ink";import{useSyncExternalStore as np5}from"react";import{jsx as cB0,jsxs as iB0}from"react/jsx-runtime";function ap5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function is6({logs:X,headerHeight:Y}){let{rows:G}=ds6(),{logFlow:Q}=np5(_e,ve),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return cB0(pp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return cB0(kX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return iB0(kX1,{children:[iB0(kX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),cB0(kX1,{color:ap5(Z.status),children:Z.status}),iB0(kX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var ps6=D(()=>{QF();cs6()});var pB0={};j0(pB0,{App:()=>Yn5});import{Box as tp5,Text as rp5,useInput as op5}from"ink";import{useSyncExternalStore as sp5}from"react";import{jsx as CA1,jsxs as Gn5}from"react/jsx-runtime";function Yn5({home:X}){let Y=sp5(_e,ve);return op5((G)=>{if(G==="k"||G==="K")bn1();if(G==="l"||G==="L")yn1();if((G==="v"||G==="V")&&Y.dataDir)_n1(Y.dataDir),xn1();if((G==="n"||G==="N")&&Y.vibe)vn1()}),Gn5(tp5,{flexDirection:"column",children:[CA1(ls6,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?CA1(ys6,{env:Y.env}):CA1(rp5,{dimColor:!0,children:"Loading configuration..."}):CA1(is6,{logs:Y.logs,headerHeight:Y.vibe?Xn5:ep5})]})}var ep5=15,Xn5=19;var nB0=D(()=>{xs6();ms6();ps6();QF();jd()});function ns6(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DECOCMS_ALLOW_LOCAL_PROD:String(X.allowLocalProd),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),UNSAFE_ALLOW_STDIO_TRANSPORT:String(X.unsafeAllowStdioTransport),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}function ts6(X){if(!X)return!1;try{return new URL(X).host==="api.decocms.com"&&X!=="https://studio.decocms.com/org/deco/registry/mcp"}catch{return!1}}var as6="https://studio.decocms.com/org/deco/registry/mcp";var aB0=(X,Y,G)=>{return(Q,J)=>{let W=-1;return Z(0);async function Z($){if($<=W)throw Error("next() called multiple times");W=$;let K,H=!1,U;if(X[$])U=X[$][0][0],Q.req.routeIndex=$;else U=$===X.length&&J||void 0;if(U)try{K=await U(Q,()=>Z($+1))}catch(B){if(B instanceof Error&&Y)Q.error=B,K=await Y(B,Q),H=!0;else throw B}else if(Q.finalized===!1&&G)K=await G(Q);if(K&&(Q.finalized===!1||H))Q.res=K;return Q}}};var rs6=()=>{};var L5;var zw=D(()=>{L5=class extends Error{res;status;constructor(X=500,Y){super(Y?.message,{cause:Y?.cause});this.res=Y?.res,this.status=X}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var os6;var ss6=D(()=>{os6=Symbol()});async function Qn5(X,Y){let G=await X.formData();if(G)return Jn5(G,Y);return{}}function Jn5(X,Y){let G=Object.create(null);if(X.forEach((Q,J)=>{if(!(Y.all||J.endsWith("[]")))G[J]=Q;else Zn5(G,J,Q)}),Y.dot)Object.entries(G).forEach(([Q,J])=>{if(Q.includes("."))Wn5(G,Q,J),delete G[Q]});return G}var es6=async(X,Y=Object.create(null))=>{let{all:G=!1,dot:Q=!1}=Y,W=(X instanceof vA1?X.raw.headers:X.headers).get("Content-Type");if(W?.startsWith("multipart/form-data")||W?.startsWith("application/x-www-form-urlencoded"))return Qn5(X,{all:G,dot:Q});return{}},Zn5=(X,Y,G)=>{if(X[Y]!==void 0)if(Array.isArray(X[Y]))X[Y].push(G);else X[Y]=[X[Y],G];else if(!Y.endsWith("[]"))X[Y]=G;else X[Y]=[G]},Wn5=(X,Y,G)=>{if(/(?:^|\.)__proto__\./.test(Y))return;let Q=X,J=Y.split(".");J.forEach((W,Z)=>{if(Z===J.length-1)Q[W]=G;else{if(!Q[W]||typeof Q[W]!=="object"||Array.isArray(Q[W])||Q[W]instanceof File)Q[W]=Object.create(null);Q=Q[W]}})};var Xe6=D(()=>{tB0()});var oB0=(X)=>{let Y=X.split("/");if(Y[0]==="")Y.shift();return Y},Ye6=(X)=>{let{groups:Y,path:G}=$n5(X),Q=oB0(G);return Kn5(Q,Y)},$n5=(X)=>{let Y=[];return X=X.replace(/\{[^}]+\}/g,(G,Q)=>{let J=`@${Q}`;return Y.push([J,G]),J}),{groups:Y,path:X}},Kn5=(X,Y)=>{for(let G=Y.length-1;G>=0;G--){let[Q]=Y[G];for(let J=X.length-1;J>=0;J--)if(X[J].includes(Q)){X[J]=X[J].replace(Q,Y[G][1]);break}}return X},_A1,Ge6=(X,Y)=>{if(X==="*")return"*";let G=X.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(G){let Q=`${X}#${Y}`;if(!_A1[Q])if(G[2])_A1[Q]=Y&&Y[0]!==":"&&Y[0]!=="*"?[Q,G[1],new RegExp(`^${G[2]}(?=/${Y})`)]:[X,G[1],new RegExp(`^${G[2]}$`)];else _A1[Q]=[X,G[1],!0];return _A1[Q]}return null},Gt=(X,Y)=>{try{return Y(X)}catch{return X.replace(/(?:%[0-9A-Fa-f]{2})+/g,(G)=>{try{return Y(G)}catch{return G}})}},Qe6=(X)=>Gt(X,decodeURI),sB0=(X)=>{let Y=X.url,G=Y.indexOf("/",Y.indexOf(":")+4),Q=G;for(;Q<Y.length;Q++){let J=Y.charCodeAt(Q);if(J===37){let W=Y.indexOf("?",Q),Z=Y.indexOf("#",Q),$=W===-1?Z===-1?void 0:Z:Z===-1?W:Math.min(W,Z),K=Y.slice(G,$);return Qe6(K.includes("%25")?K.replace(/%25/g,"%2525"):K)}else if(J===63||J===35)break}return Y.slice(G,Q)},Je6=(X)=>{let Y=sB0(X);return Y.length>1&&Y.at(-1)==="/"?Y.slice(0,-1):Y},vj=(X,Y,...G)=>{if(G.length)Y=vj(Y,...G);return`${X?.[0]==="/"?"":"/"}${X}${Y==="/"?"":`${X?.at(-1)==="/"?"":"/"}${Y?.[0]==="/"?Y.slice(1):Y}`}`},fA1=(X)=>{if(X.charCodeAt(X.length-1)!==63||!X.includes(":"))return null;let Y=X.split("/"),G=[],Q="";return Y.forEach((J)=>{if(J!==""&&!/\:/.test(J))Q+="/"+J;else if(/\:/.test(J))if(/\?/.test(J)){if(G.length===0&&Q==="")G.push("/");else G.push(Q);let W=J.replace("?","");Q+="/"+W,G.push(Q)}else Q+="/"+J}),G.filter((J,W,Z)=>Z.indexOf(J)===W)},rB0=(X)=>{if(!/[%+]/.test(X))return X;if(X.indexOf("+")!==-1)X=X.replace(/\+/g," ");return X.indexOf("%")!==-1?Gt(X,CX1):X},Ze6=(X,Y,G)=>{let Q;if(!G&&Y&&!/[%+]/.test(Y)){let Z=X.indexOf("?",8);if(Z===-1)return;if(!X.startsWith(Y,Z+1))Z=X.indexOf(`&${Y}`,Z+1);while(Z!==-1){let $=X.charCodeAt(Z+Y.length+1);if($===61){let K=Z+Y.length+2,H=X.indexOf("&",K);return rB0(X.slice(K,H===-1?void 0:H))}else if($==38||isNaN($))return"";Z=X.indexOf(`&${Y}`,Z+1)}if(Q=/[%+]/.test(X),!Q)return}let J={};Q??=/[%+]/.test(X);let W=X.indexOf("?",8);while(W!==-1){let Z=X.indexOf("&",W+1),$=X.indexOf("=",W);if($>Z&&Z!==-1)$=-1;let K=X.slice(W+1,$===-1?Z===-1?void 0:Z:$);if(Q)K=rB0(K);if(W=Z,K==="")continue;let H;if($===-1)H="";else if(H=X.slice($+1,Z===-1?void 0:Z),Q)H=rB0(H);if(G){if(!(J[K]&&Array.isArray(J[K])))J[K]=[];J[K].push(H)}else J[K]??=H}return Y?J[Y]:J},We6,$e6=(X,Y)=>{return Ze6(X,Y,!0)},CX1;var Rq=D(()=>{_A1={},We6=Ze6,CX1=decodeURIComponent});var Ke6=(X)=>Gt(X,CX1),vA1;var tB0=D(()=>{zw();ss6();Xe6();Rq();vA1=class{raw;#X;#Y;routeIndex=0;path;bodyCache={};constructor(X,Y="/",G=[[]]){this.raw=X,this.path=Y,this.#Y=G,this.#X={}}param(X){return X?this.#G(X):this.#Q()}#G(X){let Y=this.#Y[0][this.routeIndex][1][X],G=this.#J(Y);return G&&/\%/.test(G)?Ke6(G):G}#Q(){let X={},Y=Object.keys(this.#Y[0][this.routeIndex][1]);for(let G of Y){let Q=this.#J(this.#Y[0][this.routeIndex][1][G]);if(Q!==void 0)X[G]=/\%/.test(Q)?Ke6(Q):Q}return X}#J(X){return this.#Y[1]?this.#Y[1][X]:X}query(X){return We6(this.url,X)}queries(X){return $e6(this.url,X)}header(X){if(X)return this.raw.headers.get(X)??void 0;let Y={};return this.raw.headers.forEach((G,Q)=>{Y[Q]=G}),Y}async parseBody(X){return es6(this,X)}#Z=(X)=>{let{bodyCache:Y,raw:G}=this,Q=Y[X];if(Q)return Q;let J=Object.keys(Y)[0];if(J)return Y[J].then((W)=>{if(J==="json")W=JSON.stringify(W);return new Response(W)[X]()});return Y[X]=G[X]()};json(){return this.#Z("text").then((X)=>JSON.parse(X))}text(){return this.#Z("text")}arrayBuffer(){return this.#Z("arrayBuffer")}blob(){return this.#Z("blob")}formData(){return this.#Z("formData")}addValidatedData(X,Y){this.#X[X]=Y}valid(X){return this.#X[X]}get url(){return this.raw.url}get method(){return this.raw.method}get[os6](){return this.#Y}get matchedRoutes(){return this.#Y[0].map(([[,X]])=>X)}get routePath(){return this.#Y[0].map(([[,X]])=>X)[this.routeIndex].path}}});var bA1,He6=(X,Y)=>{let G=new String(X);return G.isEscaped=!0,G.callbacks=Y,G},vX1=async(X,Y,G,Q,J)=>{if(typeof X==="object"&&!(X instanceof String)){if(!(X instanceof Promise))X=X.toString();if(X instanceof Promise)X=await X}let W=X.callbacks;if(!W?.length)return Promise.resolve(X);if(J)J[0]+=X;else J=[X];let Z=Promise.all(W.map(($)=>$({phase:Y,buffer:J,context:Q}))).then(($)=>Promise.all($.filter(Boolean).map((K)=>vX1(K,Y,!1,Q,J))).then(()=>J[0]));if(G)return He6(await Z,W);else return Z};var yA1=D(()=>{bA1={Stringify:1,BeforeStream:2,Stream:3}});var Fe6="text/plain; charset=UTF-8",eB0=(X,Y)=>{return{"Content-Type":X,...Y}},_X1=(X,Y)=>new Response(X,Y),Ue6=class{#X;#Y;env={};#G;finalized=!1;error;#Q;#J;#Z;#$;#W;#K;#H;#U;#B;constructor(X,Y){if(this.#X=X,Y)this.#J=Y.executionCtx,this.env=Y.env,this.#K=Y.notFoundHandler,this.#B=Y.path,this.#U=Y.matchResult}get req(){return this.#Y??=new vA1(this.#X,this.#B,this.#U),this.#Y}get event(){if(this.#J&&"respondWith"in this.#J)return this.#J;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#J)return this.#J;else throw Error("This context has no ExecutionContext")}get res(){return this.#Z||=_X1(null,{headers:this.#H??=new Headers})}set res(X){if(this.#Z&&X){X=_X1(X.body,X);for(let[Y,G]of this.#Z.headers.entries()){if(Y==="content-type")continue;if(Y==="set-cookie"){let Q=this.#Z.headers.getSetCookie();X.headers.delete("set-cookie");for(let J of Q)X.headers.append("set-cookie",J)}else X.headers.set(Y,G)}}this.#Z=X,this.finalized=!0}render=(...X)=>{return this.#W??=(Y)=>this.html(Y),this.#W(...X)};setLayout=(X)=>this.#$=X;getLayout=()=>this.#$;setRenderer=(X)=>{this.#W=X};header=(X,Y,G)=>{if(this.finalized)this.#Z=_X1(this.#Z.body,this.#Z);let Q=this.#Z?this.#Z.headers:this.#H??=new Headers;if(Y===void 0)Q.delete(X);else if(G?.append)Q.append(X,Y);else Q.set(X,Y)};status=(X)=>{this.#Q=X};set=(X,Y)=>{this.#G??=new Map,this.#G.set(X,Y)};get=(X)=>{return this.#G?this.#G.get(X):void 0};get var(){if(!this.#G)return{};return Object.fromEntries(this.#G)}#F(X,Y,G){let Q=this.#Z?new Headers(this.#Z.headers):this.#H??new Headers;if(typeof Y==="object"&&"headers"in Y){let W=Y.headers instanceof Headers?Y.headers:new Headers(Y.headers);for(let[Z,$]of W)if(Z.toLowerCase()==="set-cookie")Q.append(Z,$);else Q.set(Z,$)}if(G)for(let[W,Z]of Object.entries(G))if(typeof Z==="string")Q.set(W,Z);else{Q.delete(W);for(let $ of Z)Q.append(W,$)}let J=typeof Y==="number"?Y:Y?.status??this.#Q;return _X1(X,{status:J,headers:Q})}newResponse=(...X)=>this.#F(...X);body=(X,Y,G)=>this.#F(X,Y,G);text=(X,Y,G)=>{return!this.#H&&!this.#Q&&!Y&&!G&&!this.finalized?new Response(X):this.#F(X,Y,eB0(Fe6,G))};json=(X,Y,G)=>{return this.#F(JSON.stringify(X),Y,eB0("application/json",G))};html=(X,Y,G)=>{let Q=(J)=>this.#F(J,Y,eB0("text/html; charset=UTF-8",G));return typeof X==="object"?vX1(X,bA1.Stringify,!1,{}).then(Q):Q(X)};redirect=(X,Y)=>{let G=String(X);return this.header("Location",!/[^\x00-\xFF]/.test(G)?G:encodeURI(G)),this.newResponse(null,Y??302)};notFound=()=>{return this.#K??=()=>_X1(),this.#K(this)}};var xA1=D(()=>{tB0();yA1()});var T7="ALL",Be6="all",Ne6,hA1="Can not add a route since the matcher is already built.",gA1;var Sq=D(()=>{Ne6=["get","post","put","delete","options","patch"],gA1=class extends Error{}});var XN0="__COMPOSED_HANDLER";var YN0=()=>{};var Hn5=(X)=>{return X.text("404 Not Found",404)},ze6=(X,Y)=>{if("getResponse"in X){let G=X.getResponse();return Y.newResponse(G.body,G)}return console.error(X),Y.text("Internal Server Error",500)},Oe6=class X{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#X="/";routes=[];constructor(Y={}){[...Ne6,Be6].forEach((W)=>{this[W]=(Z,...$)=>{if(typeof Z==="string")this.#X=Z;else this.#Q(W,this.#X,Z);return $.forEach((K)=>{this.#Q(W,this.#X,K)}),this}}),this.on=(W,Z,...$)=>{for(let K of[Z].flat()){this.#X=K;for(let H of[W].flat())$.map((U)=>{this.#Q(H.toUpperCase(),this.#X,U)})}return this},this.use=(W,...Z)=>{if(typeof W==="string")this.#X=W;else this.#X="*",Z.unshift(W);return Z.forEach(($)=>{this.#Q(T7,this.#X,$)}),this};let{strict:Q,...J}=Y;Object.assign(this,J),this.getPath=Q??!0?Y.getPath??sB0:Je6}#Y(){let Y=new X({router:this.router,getPath:this.getPath});return Y.errorHandler=this.errorHandler,Y.#G=this.#G,Y.routes=this.routes,Y}#G=Hn5;errorHandler=ze6;route(Y,G){let Q=this.basePath(Y);return G.routes.map((J)=>{let W;if(G.errorHandler===ze6)W=J.handler;else W=async(Z,$)=>(await aB0([],G.errorHandler)(Z,()=>J.handler(Z,$))).res,W[XN0]=J.handler;Q.#Q(J.method,J.path,W)}),this}basePath(Y){let G=this.#Y();return G._basePath=vj(this._basePath,Y),G}onError=(Y)=>{return this.errorHandler=Y,this};notFound=(Y)=>{return this.#G=Y,this};mount(Y,G,Q){let J,W;if(Q)if(typeof Q==="function")W=Q;else if(W=Q.optionHandler,Q.replaceRequest===!1)J=(K)=>K;else J=Q.replaceRequest;let Z=W?(K)=>{let H=W(K);return Array.isArray(H)?H:[H]}:(K)=>{let H=void 0;try{H=K.executionCtx}catch{}return[K.env,H]};J||=(()=>{let K=vj(this._basePath,Y),H=K==="/"?0:K.length;return(U)=>{let B=new URL(U.url);return B.pathname=B.pathname.slice(H)||"/",new Request(B,U)}})();let $=async(K,H)=>{let U=await G(J(K.req.raw),...Z(K));if(U)return U;await H()};return this.#Q(T7,vj(Y,"*"),$),this}#Q(Y,G,Q){Y=Y.toUpperCase(),G=vj(this._basePath,G);let J={basePath:this._basePath,path:G,method:Y,handler:Q};this.router.add(Y,G,[Q,J]),this.routes.push(J)}#J(Y,G){if(Y instanceof Error)return this.errorHandler(Y,G);throw Y}#Z(Y,G,Q,J){if(J==="HEAD")return(async()=>new Response(null,await this.#Z(Y,G,Q,"GET")))();let W=this.getPath(Y,{env:Q}),Z=this.router.match(J,W),$=new Ue6(Y,{path:W,matchResult:Z,env:Q,executionCtx:G,notFoundHandler:this.#G});if(Z[0].length===1){let H;try{H=Z[0][0][0][0]($,async()=>{$.res=await this.#G($)})}catch(U){return this.#J(U,$)}return H instanceof Promise?H.then((U)=>U||($.finalized?$.res:this.#G($))).catch((U)=>this.#J(U,$)):H??this.#G($)}let K=aB0(Z[0],this.errorHandler,this.#G);return(async()=>{try{let H=await K($);if(!H.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return H.res}catch(H){return this.#J(H,$)}})()}fetch=(Y,...G)=>{return this.#Z(Y,G[1],G[0],Y.method)};request=(Y,G,Q,J)=>{if(Y instanceof Request)return this.fetch(G?new Request(Y,G):Y,Q,J);return Y=Y.toString(),this.fetch(new Request(/^https?:\/\//.test(Y)?Y:`http://localhost${vj("/",Y)}`,G),Q,J)};fire=()=>{addEventListener("fetch",(Y)=>{Y.respondWith(this.#Z(Y.request,Y,void 0,Y.request.method))})}};var De6=D(()=>{rs6();xA1();Sq();YN0();Rq()});function uA1(X,Y){let G=this.buildAllMatchers(),Q=(J,W)=>{let Z=G[J]||G[T7],$=Z[2][W];if($)return $;let K=W.match(Z[0]);if(!K)return[[],fX1];let H=K.indexOf("",1);return[Z[1][H],K]};return this.match=Q,Q(X,Y)}var fX1;var GN0=D(()=>{Sq();fX1=[]});function Un5(X,Y){if(X.length===1)return Y.length===1?X<Y?-1:1:-1;if(Y.length===1)return 1;if(X===bX1||X===yX1)return 1;else if(Y===bX1||Y===yX1)return-1;if(X===lA1)return 1;else if(Y===lA1)return-1;return X.length===Y.length?X<Y?-1:1:Y.length-X.length}var lA1="[^/]+",bX1=".*",yX1="(?:|/.*)",_j,Fn5,we6=class X{#X;#Y;#G=Object.create(null);insert(Y,G,Q,J,W){if(Y.length===0){if(this.#X!==void 0)throw _j;if(W)return;this.#X=G;return}let[Z,...$]=Y,K=Z==="*"?$.length===0?["","",bX1]:["","",lA1]:Z==="/*"?["","",yX1]:Z.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),H;if(K){let U=K[1],B=K[2]||lA1;if(U&&K[2]){if(B===".*")throw _j;if(B=B.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(B))throw _j}if(H=this.#G[B],!H){if(Object.keys(this.#G).some((N)=>N!==bX1&&N!==yX1))throw _j;if(W)return;if(H=this.#G[B]=new X,U!=="")H.#Y=J.varIndex++}if(!W&&U!=="")Q.push([U,H.#Y])}else if(H=this.#G[Z],!H){if(Object.keys(this.#G).some((U)=>U.length>1&&U!==bX1&&U!==yX1))throw _j;if(W)return;H=this.#G[Z]=new X}H.insert($,G,Q,J,W)}buildRegExpStr(){let G=Object.keys(this.#G).sort(Un5).map((Q)=>{let J=this.#G[Q];return(typeof J.#Y==="number"?`(${Q})@${J.#Y}`:Fn5.has(Q)?`\\${Q}`:Q)+J.buildRegExpStr()});if(typeof this.#X==="number")G.unshift(`#${this.#X}`);if(G.length===0)return"";if(G.length===1)return G[0];return"(?:"+G.join("|")+")"}};var QN0=D(()=>{_j=Symbol(),Fn5=new Set(".\\+*[^]$()")});var Le6=class{#X={varIndex:0};#Y=new we6;insert(X,Y,G){let Q=[],J=[];for(let Z=0;;){let $=!1;if(X=X.replace(/\{[^}]+\}/g,(K)=>{let H=`@\\${Z}`;return J[Z]=[H,K],Z++,$=!0,H}),!$)break}let W=X.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let Z=J.length-1;Z>=0;Z--){let[$]=J[Z];for(let K=W.length-1;K>=0;K--)if(W[K].indexOf($)!==-1){W[K]=W[K].replace($,J[Z][1]);break}}return this.#Y.insert(W,Y,Q,this.#X,G),Q}buildRegExp(){let X=this.#Y.buildRegExpStr();if(X==="")return[/^$/,[],[]];let Y=0,G=[],Q=[];return X=X.replace(/#(\d+)|@(\d+)|\.\*\$/g,(J,W,Z)=>{if(W!==void 0)return G[++Y]=Number(W),"$()";if(Z!==void 0)return Q[Number(Z)]=++Y,"";return""}),[new RegExp(`^${X}`),G,Q]}};var Ee6=D(()=>{QN0()});function qe6(X){return Pe6[X]??=new RegExp(X==="*"?"":`^${X.replace(/\/\*$|([.\\+*[^\]$()])/g,(Y,G)=>G?`\\${G}`:"(?:|/.*)")}$`)}function Nn5(){Pe6=Object.create(null)}function zn5(X){let Y=new Le6,G=[];if(X.length===0)return Bn5;let Q=X.map((H)=>[!/\*|\/:/.test(H[0]),...H]).sort(([H,U],[B,N])=>H?1:B?-1:U.length-N.length),J=Object.create(null);for(let H=0,U=-1,B=Q.length;H<B;H++){let[N,z,O]=Q[H];if(N)J[z]=[O.map(([E])=>[E,Object.create(null)]),fX1];else U++;let w;try{w=Y.insert(z,U,N)}catch(E){throw E===_j?new gA1(z):E}if(N)continue;G[U]=O.map(([E,P])=>{let q=Object.create(null);P-=1;for(;P>=0;P--){let[j,M]=w[P];q[j]=M}return[E,q]})}let[W,Z,$]=Y.buildRegExp();for(let H=0,U=G.length;H<U;H++)for(let B=0,N=G[H].length;B<N;B++){let z=G[H][B]?.[1];if(!z)continue;let O=Object.keys(z);for(let w=0,E=O.length;w<E;w++)z[O[w]]=$[z[O[w]]]}let K=[];for(let H in Z)K[H]=G[Z[H]];return[W,K,J]}function Qt(X,Y){if(!X)return;for(let G of Object.keys(X).sort((Q,J)=>J.length-Q.length))if(qe6(G).test(Y))return[...X[G]];return}var Bn5,Pe6,mA1=class{name="RegExpRouter";#X;#Y;constructor(){this.#X={[T7]:Object.create(null)},this.#Y={[T7]:Object.create(null)}}add(X,Y,G){let Q=this.#X,J=this.#Y;if(!Q||!J)throw Error(hA1);if(!Q[X])[Q,J].forEach(($)=>{$[X]=Object.create(null),Object.keys($[T7]).forEach((K)=>{$[X][K]=[...$[T7][K]]})});if(Y==="/*")Y="*";let W=(Y.match(/\/:/g)||[]).length;if(/\*$/.test(Y)){let $=qe6(Y);if(X===T7)Object.keys(Q).forEach((K)=>{Q[K][Y]||=Qt(Q[K],Y)||Qt(Q[T7],Y)||[]});else Q[X][Y]||=Qt(Q[X],Y)||Qt(Q[T7],Y)||[];Object.keys(Q).forEach((K)=>{if(X===T7||X===K)Object.keys(Q[K]).forEach((H)=>{$.test(H)&&Q[K][H].push([G,W])})}),Object.keys(J).forEach((K)=>{if(X===T7||X===K)Object.keys(J[K]).forEach((H)=>$.test(H)&&J[K][H].push([G,W]))});return}let Z=fA1(Y)||[Y];for(let $=0,K=Z.length;$<K;$++){let H=Z[$];Object.keys(J).forEach((U)=>{if(X===T7||X===U)J[U][H]||=[...Qt(Q[U],H)||Qt(Q[T7],H)||[]],J[U][H].push([G,W-K+$+1])})}}match=uA1;buildAllMatchers(){let X=Object.create(null);return Object.keys(this.#Y).concat(Object.keys(this.#X)).forEach((Y)=>{X[Y]||=this.#G(Y)}),this.#X=this.#Y=void 0,Nn5(),X}#G(X){let Y=[],G=X===T7;if([this.#X,this.#Y].forEach((Q)=>{let J=Q[X]?Object.keys(Q[X]).map((W)=>[W,Q[X][W]]):[];if(J.length!==0)G||=!0,Y.push(...J);else if(X!==T7)Y.push(...Object.keys(Q[T7]).map((W)=>[W,Q[T7][W]]))}),!G)return null;else return zn5(Y)}};var JN0=D(()=>{Sq();Rq();GN0();QN0();Ee6();Bn5=[/^$/,[],Object.create(null)],Pe6=Object.create(null)});var On5=class{name="PreparedRegExpRouter";#X;#Y;constructor(X,Y){this.#X=X,this.#Y=Y}#G(X,Y){let G=this.#X[X];G[1].forEach((Q)=>Q&&Q.push(Y)),Object.values(G[2]).forEach((Q)=>Q[0].push(Y))}#Q(X,Y,G,Q,J){let W=this.#X[X];if(!J)W[2][Y][0].push([G,{}]);else Q.forEach((Z)=>{if(typeof Z==="number")W[1][Z].push([G,J]);else W[2][Z||Y][0].push([G,J])})}add(X,Y,G){if(!this.#X[X]){let J=this.#X[T7],W={};for(let Z in J[2])W[Z]=[J[2][Z][0].slice(),fX1];this.#X[X]=[J[0],J[1].map((Z)=>Array.isArray(Z)?Z.slice():0),W]}if(Y==="/*"||Y==="*"){let J=[G,{}];if(X===T7)for(let W in this.#X)this.#G(W,J);else this.#G(X,J);return}let Q=this.#Y[Y];if(!Q)throw Error(`Path ${Y} is not registered`);for(let[J,W]of Q)if(X===T7)for(let Z in this.#X)this.#Q(Z,Y,G,J,W);else this.#Q(X,Y,G,J,W)}buildAllMatchers(){return this.#X}match=uA1};var Ae6=D(()=>{Sq();GN0();JN0()});var Te6=D(()=>{JN0();Ae6()});var ZN0=class{name="SmartRouter";#X=[];#Y=[];constructor(X){this.#X=X.routers}add(X,Y,G){if(!this.#Y)throw Error(hA1);this.#Y.push([X,Y,G])}match(X,Y){if(!this.#Y)throw Error("Fatal error");let G=this.#X,Q=this.#Y,J=G.length,W=0,Z;for(;W<J;W++){let $=G[W];try{for(let K=0,H=Q.length;K<H;K++)$.add(...Q[K]);Z=$.match(X,Y)}catch(K){if(K instanceof gA1)continue;throw K}this.match=$.match.bind($),this.#X=[$],this.#Y=void 0;break}if(W===J)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,Z}get activeRouter(){if(this.#Y||this.#X.length!==1)throw Error("No active router has been determined yet.");return this.#X[0]}};var Ie6=D(()=>{Sq()});var Ve6=D(()=>{Ie6()});var xX1,Dn5=(X)=>{for(let Y in X)return!0;return!1},je6=class X{#X;#Y;#G;#Q=0;#J=xX1;constructor(Y,G,Q){if(this.#Y=Q||Object.create(null),this.#X=[],Y&&G){let J=Object.create(null);J[Y]={handler:G,possibleKeys:[],score:0},this.#X=[J]}this.#G=[]}insert(Y,G,Q){this.#Q=++this.#Q;let J=this,W=Ye6(G),Z=[];for(let $=0,K=W.length;$<K;$++){let H=W[$],U=W[$+1],B=Ge6(H,U),N=Array.isArray(B)?B[0]:H;if(N in J.#Y){if(J=J.#Y[N],B)Z.push(B[1]);continue}if(J.#Y[N]=new X,B)J.#G.push(B),Z.push(B[1]);J=J.#Y[N]}return J.#X.push({[Y]:{handler:Q,possibleKeys:Z.filter(($,K,H)=>H.indexOf($)===K),score:this.#Q}}),J}#Z(Y,G,Q,J,W){for(let Z=0,$=G.#X.length;Z<$;Z++){let K=G.#X[Z],H=K[Q]||K[T7],U={};if(H!==void 0){if(H.params=Object.create(null),Y.push(H),J!==xX1||W&&W!==xX1)for(let B=0,N=H.possibleKeys.length;B<N;B++){let z=H.possibleKeys[B],O=U[H.score];H.params[z]=W?.[z]&&!O?W[z]:J[z]??W?.[z],U[H.score]=!0}}}}search(Y,G){let Q=[];this.#J=xX1;let W=[this],Z=oB0(G),$=[],K=Z.length,H=null;for(let U=0;U<K;U++){let B=Z[U],N=U===K-1,z=[];for(let w=0,E=W.length;w<E;w++){let P=W[w],q=P.#Y[B];if(q)if(q.#J=P.#J,N){if(q.#Y["*"])this.#Z(Q,q.#Y["*"],Y,P.#J);this.#Z(Q,q,Y,P.#J)}else z.push(q);for(let j=0,M=P.#G.length;j<M;j++){let V=P.#G[j],R=P.#J===xX1?{}:{...P.#J};if(V==="*"){let h=P.#Y["*"];if(h)this.#Z(Q,h,Y,P.#J),h.#J=R,z.push(h);continue}let[C,_,v]=V;if(!B&&!(v instanceof RegExp))continue;let y=P.#Y[C];if(v instanceof RegExp){if(H===null){H=Array(K);let p=G[0]==="/"?1:0;for(let f=0;f<K;f++)H[f]=p,p+=Z[f].length+1}let h=G.substring(H[U]),i=v.exec(h);if(i){if(R[_]=i[0],this.#Z(Q,y,Y,P.#J,R),Dn5(y.#Y)){y.#J=R;let p=i[0].match(/\//)?.length??0;($[p]||=[]).push(y)}continue}}if(v===!0||v.test(B))if(R[_]=B,N){if(this.#Z(Q,y,Y,R,P.#J),y.#Y["*"])this.#Z(Q,y.#Y["*"],Y,R,P.#J)}else y.#J=R,z.push(y)}}let O=$.shift();W=O?z.concat(O):z}if(Q.length>1)Q.sort((U,B)=>{return U.score-B.score});return[Q.map(({handler:U,params:B})=>[U,B])]}};var Me6=D(()=>{Sq();Rq();xX1=Object.create(null)});var WN0=class{name="TrieRouter";#X;constructor(){this.#X=new je6}add(X,Y,G){let Q=fA1(Y);if(Q){for(let J=0,W=Q.length;J<W;J++)this.#X.insert(X,Q[J],G);return}this.#X.insert(X,Y,G)}match(X,Y){return this.#X.search(X,Y)}};var Re6=D(()=>{Rq();Me6()});var Se6=D(()=>{Re6()});var t8;var ke6=D(()=>{De6();Te6();Ve6();Se6();t8=class extends Oe6{constructor(X={}){super(X);this.router=X.router??new ZN0({routers:[new mA1,new WN0]})}}});var uY=D(()=>{ke6()});var ve6,wn5,Ce6=(X)=>{let Y=0,G=X.length;while(Y<G){let Q=X.charCodeAt(Y);if(Q!==32&&Q!==9)break;Y++}while(G>Y){let Q=X.charCodeAt(G-1);if(Q!==32&&Q!==9)break;G--}return Y===0&&G===X.length?X:X.slice(Y,G)},$N0=(X,Y)=>{if(Y&&X.indexOf(Y)===-1)return{};let G=X.split(";"),Q={};for(let J of G){let W=J.indexOf("=");if(W===-1)continue;let Z=Ce6(J.substring(0,W));if(Y&&Y!==Z||!ve6.test(Z))continue;let $=Ce6(J.substring(W+1));if($.startsWith('"')&&$.endsWith('"'))$=$.slice(1,-1);if(wn5.test($)){if(Q[Z]=$.indexOf("%")!==-1?Gt($,CX1):$,Y)break}}return Q},Ln5=(X,Y,G={})=>{if(!ve6.test(X))throw Error("Invalid cookie name");let Q=`${X}=${Y}`;if(X.startsWith("__Secure-")&&!G.secure)throw Error("__Secure- Cookie must have Secure attributes");if(X.startsWith("__Host-")){if(!G.secure)throw Error("__Host- Cookie must have Secure attributes");if(G.path!=="/")throw Error('__Host- Cookie must have Path attributes with "/"');if(G.domain)throw Error("__Host- Cookie must not have Domain attributes")}for(let J of["domain","path"])if(G[J]&&/[;\r\n]/.test(G[J]))throw Error(`${J} must not contain ";", "\\r", or "\\n"`);if(G&&typeof G.maxAge==="number"&&G.maxAge>=0){if(G.maxAge>34560000)throw Error("Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.");Q+=`; Max-Age=${G.maxAge|0}`}if(G.domain&&G.prefix!=="host")Q+=`; Domain=${G.domain}`;if(G.path)Q+=`; Path=${G.path}`;if(G.expires){if(G.expires.getTime()-Date.now()>34560000000)throw Error("Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.");Q+=`; Expires=${G.expires.toUTCString()}`}if(G.httpOnly)Q+="; HttpOnly";if(G.secure)Q+="; Secure";if(G.sameSite)Q+=`; SameSite=${G.sameSite.charAt(0).toUpperCase()+G.sameSite.slice(1)}`;if(G.priority)Q+=`; Priority=${G.priority.charAt(0).toUpperCase()+G.priority.slice(1)}`;if(G.partitioned){if(!G.secure)throw Error("Partitioned Cookie must have Secure attributes");Q+="; Partitioned"}return Q},dA1=(X,Y,G)=>{return Y=encodeURIComponent(Y),Ln5(X,Y,G)};var _e6=D(()=>{Rq();ve6=/^[\w!#$%&'*.^`|~+-]+$/,wn5=/^[ !#-:<-[\]-~]*$/});var cA1=(X,Y,G)=>{let Q=X.req.raw.headers.get("Cookie");if(typeof Y==="string"){if(!Q)return;let W=Y;if(G==="secure")W="__Secure-"+Y;else if(G==="host")W="__Host-"+Y;return $N0(Q,W)[W]}if(!Q)return{};return $N0(Q)},En5=(X,Y,G)=>{let Q;if(G?.prefix==="secure")Q=dA1("__Secure-"+X,Y,{path:"/",...G,secure:!0});else if(G?.prefix==="host")Q=dA1("__Host-"+X,Y,{...G,path:"/",secure:!0,domain:void 0});else Q=dA1(X,Y,{path:"/",...G});return Q},KN0=(X,Y,G,Q)=>{let J=En5(Y,G,Q);X.header("Set-Cookie",J,{append:!0})};var HN0=D(()=>{_e6()});var fe6=(X)=>{let G={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...X},Q=((W)=>{if(typeof W==="string")if(W==="*"){if(G.credentials)return(Z)=>Z||null;return()=>W}else return(Z)=>W===Z?Z:null;else if(typeof W==="function")return W;else return(Z)=>W.includes(Z)?Z:null})(G.origin),J=((W)=>{if(typeof W==="function")return W;else if(Array.isArray(W))return()=>W;else return()=>[]})(G.allowMethods);return async function(Z,$){function K(U,B){Z.res.headers.set(U,B)}let H=await Q(Z.req.header("origin")||"",Z);if(H)K("Access-Control-Allow-Origin",H);if(G.credentials)K("Access-Control-Allow-Credentials","true");if(G.exposeHeaders?.length)K("Access-Control-Expose-Headers",G.exposeHeaders.join(","));if(Z.req.method==="OPTIONS"){if(G.origin!=="*"||G.credentials)K("Vary","Origin");if(G.maxAge!=null)K("Access-Control-Max-Age",G.maxAge.toString());let U=await J(Z.req.header("origin")||"",Z);if(U.length)K("Access-Control-Allow-Methods",U.join(","));let B=G.allowHeaders;if(!B?.length){let N=Z.req.header("Access-Control-Request-Headers");if(N)B=N.split(/\s*,\s*/)}if(B?.length)K("Access-Control-Allow-Headers",B.join(",")),Z.res.headers.append("Vary","Access-Control-Request-Headers");return Z.res.headers.delete("Content-Length"),Z.res.headers.delete("Content-Type"),new Response(null,{headers:Z.res.headers,status:204,statusText:"No Content"})}if(await $(),G.origin!=="*"||G.credentials)Z.header("Vary","Origin",{append:!0})}};var be6=()=>{};var ye6=()=>{try{return performance.now()}catch{}return Date.now()},FN0=(X)=>{let Y={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...X};return async function(Q,J){let W=[],Z=new Map;if(Q.get("metric"))return await J();if(Q.set("metric",{headers:W,timers:Z}),Y.total)DH(Q,"total",Y.totalDescription);if(await J(),Y.total)u$(Q,"total");if(Y.autoEnd)Z.forEach((K,H)=>u$(Q,H));if(typeof Y.enabled==="function"?Y.enabled(Q):Y.enabled){Q.res.headers.append("Server-Timing",W.join(","));let K=typeof Y.crossOrigin==="function"?Y.crossOrigin(Q):Y.crossOrigin;if(K)Q.res.headers.append("Timing-Allow-Origin",typeof K==="string"?K:"*")}}},xe6=(X,Y,G,Q,J)=>{let W=X.get("metric");if(!W){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof G==="number"){let Z=G.toFixed(J||1),$=Q?`${Y};dur=${Z};desc="${Q}"`:`${Y};dur=${Z}`;W.headers.push($)}else{let Z=G?`${Y};desc="${G}"`:`${Y}`;W.headers.push(Z)}},DH=(X,Y,G)=>{let Q=X.get("metric");if(!Q){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}Q.timers.set(Y,{description:G,start:ye6()})},u$=(X,Y,G)=>{let Q=X.get("metric");if(!Q){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let J=Q.timers.get(Y);if(!J){console.warn(`Timer "${Y}" does not exist!`);return}let{description:W,start:Z}=J,$=ye6()-Z;xe6(X,Y,$,W,G),Q.timers.delete(Y)};var he6=D(()=>{xA1()});var UN0=D(()=>{he6()});function hX1(){let X={Organizations:[],Connections:[],"Virtual MCPs":[],Threads:[],Monitoring:[],Users:[],"API Keys":[],"Event Bus":[],Tags:[],"AI Providers":[],Automations:[],"Object Storage":[],Registry:[],GitHub:[],VM:[]};for(let Y of BN0)X[Y.category]?.push(Y);return X}var BN0,Pn5,smX;var NN0=D(()=>{BN0=[{name:"ORGANIZATION_CREATE",description:"Create a new organization",category:"Organizations"},{name:"ORGANIZATION_LIST",description:"List organizations",category:"Organizations"},{name:"ORGANIZATION_GET",description:"View organization details",category:"Organizations"},{name:"ORGANIZATION_UPDATE",description:"Update organization",category:"Organizations"},{name:"ORGANIZATION_DELETE",description:"Delete organization",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_SETTINGS_GET",description:"View organization settings",category:"Organizations"},{name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization settings",category:"Organizations"},{name:"BRAND_CONTEXT_LIST",description:"List brand contexts",category:"Organizations"},{name:"BRAND_CONTEXT_GET",description:"View brand context",category:"Organizations"},{name:"BRAND_CONTEXT_CREATE",description:"Create brand context",category:"Organizations"},{name:"BRAND_CONTEXT_UPDATE",description:"Update brand context",category:"Organizations"},{name:"BRAND_CONTEXT_DELETE",description:"Delete brand context",category:"Organizations",dangerous:!0},{name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context from website",category:"Organizations"},{name:"BRAND_GET",description:"Get brand (binding)",category:"Organizations"},{name:"BRAND_LIST",description:"List brands (binding)",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_GET",description:"Get organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_SET",description:"Set organization domain claim",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_UPDATE",description:"Update organization domain settings",category:"Organizations"},{name:"ORGANIZATION_DOMAIN_CLEAR",description:"Clear organization domain claim",category:"Organizations"},{name:"ORGANIZATION_MEMBER_ADD",description:"Add members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove members",category:"Organizations",dangerous:!0},{name:"ORGANIZATION_MEMBER_LIST",description:"List members",category:"Organizations"},{name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Update member roles",category:"Organizations"},{name:"COLLECTION_CONNECTIONS_CREATE",description:"Create connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_LIST",description:"List connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_GET",description:"View connection details",category:"Connections"},{name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update connections",category:"Connections"},{name:"COLLECTION_CONNECTIONS_DELETE",description:"Delete connections",category:"Connections",dangerous:!0},{name:"CONNECTION_TEST",description:"Test connections",category:"Connections"},{name:"DATABASES_RUN_SQL",description:"Run SQL queries",category:"Connections",dangerous:!0},{name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_GET",description:"View virtual MCP details",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update virtual MCPs",category:"Virtual MCPs"},{name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Delete virtual MCPs",category:"Virtual MCPs",dangerous:!0},{name:"MONITORING_LOG_GET",description:"View monitoring log details",category:"Monitoring"},{name:"MONITORING_LOGS_LIST",description:"List monitoring logs",category:"Monitoring"},{name:"MONITORING_STATS",description:"View monitoring statistics",category:"Monitoring"},{name:"API_KEY_CREATE",description:"Create API key",category:"API Keys"},{name:"API_KEY_LIST",description:"List API keys",category:"API Keys"},{name:"API_KEY_UPDATE",description:"Update API key",category:"API Keys"},{name:"API_KEY_DELETE",description:"Delete API key",category:"API Keys",dangerous:!0},{name:"EVENT_PUBLISH",description:"Publish events",category:"Event Bus"},{name:"EVENT_SUBSCRIBE",description:"Subscribe to events",category:"Event Bus"},{name:"EVENT_UNSUBSCRIBE",description:"Unsubscribe from events",category:"Event Bus"},{name:"EVENT_CANCEL",description:"Cancel recurring events",category:"Event Bus"},{name:"EVENT_ACK",description:"Acknowledge event delivery",category:"Event Bus"},{name:"EVENT_SUBSCRIPTION_LIST",description:"List event subscriptions",category:"Event Bus"},{name:"EVENT_SYNC_SUBSCRIPTIONS",description:"Sync subscriptions to desired state",category:"Event Bus"},{name:"USER_GET",description:"Get a user by id",category:"Users"},{name:"COLLECTION_THREADS_CREATE",description:"Create threads",category:"Threads"},{name:"COLLECTION_THREADS_LIST",description:"List threads",category:"Threads"},{name:"COLLECTION_THREADS_GET",description:"View thread details",category:"Threads"},{name:"COLLECTION_THREADS_UPDATE",description:"Update threads",category:"Threads"},{name:"COLLECTION_THREADS_DELETE",description:"Delete threads",category:"Threads",dangerous:!0},{name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List thread messages",category:"Threads"},{name:"TAGS_LIST",description:"List organization tags",category:"Tags"},{name:"TAGS_CREATE",description:"Create organization tag",category:"Tags"},{name:"TAGS_DELETE",description:"Delete organization tag",category:"Tags",dangerous:!0},{name:"MEMBER_TAGS_GET",description:"Get member tags",category:"Tags"},{name:"MEMBER_TAGS_SET",description:"Set member tags",category:"Tags"},{name:"AUTOMATION_CREATE",description:"Create automation",category:"Automations"},{name:"AUTOMATION_GET",description:"View automation details",category:"Automations"},{name:"AUTOMATION_LIST",description:"List automations",category:"Automations"},{name:"AUTOMATION_UPDATE",description:"Update automation",category:"Automations"},{name:"AUTOMATION_DELETE",description:"Delete automation",category:"Automations",dangerous:!0},{name:"AUTOMATION_TRIGGER_ADD",description:"Add trigger to automation",category:"Automations"},{name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove trigger from automation",category:"Automations"},{name:"AUTOMATION_RUN",description:"Manually trigger an automation run",category:"Automations"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"View virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Update virtual MCP plugin configuration",category:"Virtual MCPs"},{name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update virtual MCP pinned sidebar views",category:"Virtual MCPs"},{name:"AI_PROVIDERS_LIST",description:"List available AI providers",category:"AI Providers"},{name:"AI_PROVIDERS_LIST_MODELS",description:"List AI provider models",category:"AI Providers"},{name:"AI_PROVIDERS_ACTIVE",description:"List active AI providers",category:"AI Providers"},{name:"AI_PROVIDER_KEY_CREATE",description:"Store AI provider API key",category:"AI Providers"},{name:"AI_PROVIDER_KEY_LIST",description:"List AI provider API keys",category:"AI Providers"},{name:"AI_PROVIDER_KEY_DELETE",description:"Delete AI provider API key",category:"AI Providers",dangerous:!0},{name:"AI_PROVIDER_OAUTH_URL",description:"Get OAuth URL for provider",category:"AI Providers"},{name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange OAuth code for API key",category:"AI Providers"},{name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision API key for a provider",category:"AI Providers"},{name:"AI_PROVIDER_TOPUP_URL",description:"Get checkout URL to top up provider credits",category:"AI Providers"},{name:"AI_PROVIDER_CREDITS",description:"Get current credit balance for a provider",category:"AI Providers"},{name:"AI_PROVIDER_CLI_ACTIVATE",description:"Activate Claude Code via local CLI",category:"AI Providers"},{name:"LIST_OBJECTS",description:"List objects in storage",category:"Object Storage"},{name:"GET_OBJECT_METADATA",description:"Get object metadata",category:"Object Storage"},{name:"GET_PRESIGNED_URL",description:"Generate download URL",category:"Object Storage"},{name:"PUT_PRESIGNED_URL",description:"Generate upload URL",category:"Object Storage"},{name:"DELETE_OBJECT",description:"Delete object",category:"Object Storage",dangerous:!0},{name:"DELETE_OBJECTS",description:"Delete multiple objects",category:"Object Storage",dangerous:!0},{name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry apps",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_GET",description:"Get registry app details",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"List registry app versions",category:"Registry"},{name:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get registry app filters",category:"Registry"},{name:"REGISTRY_ITEM_LIST",description:"List private registry items",category:"Registry"},{name:"REGISTRY_ITEM_SEARCH",description:"Search registry items",category:"Registry"},{name:"REGISTRY_ITEM_GET",description:"Get registry item details",category:"Registry"},{name:"REGISTRY_ITEM_VERSIONS",description:"List registry item versions",category:"Registry"},{name:"REGISTRY_ITEM_CREATE",description:"Create registry item",category:"Registry"},{name:"REGISTRY_ITEM_BULK_CREATE",description:"Bulk create registry items",category:"Registry"},{name:"REGISTRY_ITEM_UPDATE",description:"Update registry item",category:"Registry"},{name:"REGISTRY_ITEM_DELETE",description:"Delete registry item",category:"Registry",dangerous:!0},{name:"REGISTRY_ITEM_FILTERS",description:"Get registry item filters",category:"Registry"},{name:"REGISTRY_DISCOVER_TOOLS",description:"Discover tools from MCP server",category:"Registry"},{name:"REGISTRY_AI_GENERATE",description:"AI-generate registry content",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_LIST",description:"List publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_REVIEW",description:"Review publish request",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_COUNT",description:"Count pending publish requests",category:"Registry"},{name:"REGISTRY_PUBLISH_REQUEST_DELETE",description:"Delete publish request",category:"Registry",dangerous:!0},{name:"REGISTRY_PUBLISH_API_KEY_GENERATE",description:"Generate publish API key",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_LIST",description:"List publish API keys",category:"Registry"},{name:"REGISTRY_PUBLISH_API_KEY_REVOKE",description:"Revoke publish API key",category:"Registry",dangerous:!0},{name:"REGISTRY_MONITOR_RUN_START",description:"Start monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_LIST",description:"List monitor runs",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_GET",description:"Get monitor run details",category:"Registry"},{name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel monitor run",category:"Registry"},{name:"REGISTRY_MONITOR_RESULT_LIST",description:"List monitor results",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Sync monitor connections",category:"Registry"},{name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update monitor connection auth",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_SET",description:"Set monitor schedule",category:"Registry"},{name:"REGISTRY_MONITOR_SCHEDULE_CANCEL",description:"Cancel monitor schedule",category:"Registry"},{name:"VM_START",description:"Start a Freestyle VM with dev server preview",category:"VM"},{name:"VM_DELETE",description:"Stop and delete a Freestyle VM",category:"VM"},{name:"GITHUB_LIST_USER_ORGS",description:"List GitHub user's personal account and organizations",category:"GitHub"}],Pn5=[{id:"basic-usage",label:"Basic Usage",description:"Tools all org members can access by default",section:"Basic Usage",tools:["COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","CONNECTION_TEST","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","VIRTUAL_MCP_PLUGIN_CONFIG_GET","AUTOMATION_GET","AUTOMATION_LIST","AI_PROVIDERS_LIST","AI_PROVIDERS_LIST_MODELS","AI_PROVIDERS_ACTIVE","LIST_OBJECTS","GET_OBJECT_METADATA","GET_PRESIGNED_URL","PUT_PRESIGNED_URL","VM_START","VM_DELETE"]},{id:"org:manage",label:"Manage organization",description:"Edit organization settings, brand context, and domain configuration",section:"Organization",tools:["ORGANIZATION_GET","ORGANIZATION_LIST","ORGANIZATION_UPDATE","ORGANIZATION_SETTINGS_GET","ORGANIZATION_SETTINGS_UPDATE","BRAND_CONTEXT_LIST","BRAND_CONTEXT_GET","BRAND_CONTEXT_CREATE","BRAND_CONTEXT_UPDATE","BRAND_CONTEXT_DELETE","BRAND_CONTEXT_EXTRACT","BRAND_GET","BRAND_LIST","ORGANIZATION_DOMAIN_GET","ORGANIZATION_DOMAIN_SET","ORGANIZATION_DOMAIN_UPDATE","ORGANIZATION_DOMAIN_CLEAR"]},{id:"members:manage",label:"Manage members",description:"Invite members, remove them, and change their roles",section:"Organization",tools:["ORGANIZATION_MEMBER_LIST","ORGANIZATION_MEMBER_ADD","ORGANIZATION_MEMBER_REMOVE","ORGANIZATION_MEMBER_UPDATE_ROLE"],dangerous:!0},{id:"connections:manage",label:"Manage connections",description:"Create, update, and delete connections",section:"Connections & Agents",tools:["COLLECTION_CONNECTIONS_CREATE","COLLECTION_CONNECTIONS_UPDATE","COLLECTION_CONNECTIONS_DELETE"],dangerous:!0},{id:"agents:manage",label:"Manage agents",description:"Create, configure, and delete agents",section:"Connections & Agents",tools:["COLLECTION_VIRTUAL_MCP_CREATE","COLLECTION_VIRTUAL_MCP_UPDATE","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE","VIRTUAL_MCP_PINNED_VIEWS_UPDATE"],dangerous:!0},{id:"automations:manage",label:"Manage automations",description:"Create, update, run, and delete automations",section:"Automations",tools:["AUTOMATION_CREATE","AUTOMATION_UPDATE","AUTOMATION_DELETE","AUTOMATION_TRIGGER_ADD","AUTOMATION_TRIGGER_REMOVE","AUTOMATION_RUN"],dangerous:!0},{id:"monitoring:view",label:"View monitoring",description:"Access logs and usage statistics",section:"Monitoring",tools:["MONITORING_LOG_GET","MONITORING_LOGS_LIST","MONITORING_STATS"]},{id:"ai-providers:manage",label:"Manage AI providers",description:"Add or remove API keys and provision provider credentials",section:"AI Providers",tools:["AI_PROVIDER_KEY_CREATE","AI_PROVIDER_KEY_LIST","AI_PROVIDER_KEY_DELETE","AI_PROVIDER_OAUTH_URL","AI_PROVIDER_OAUTH_EXCHANGE","AI_PROVIDER_PROVISION_KEY","AI_PROVIDER_TOPUP_URL","AI_PROVIDER_CREDITS","AI_PROVIDER_CLI_ACTIVATE"]},{id:"tags:manage",label:"Manage tags",description:"Create, assign, and delete organization tags",section:"Organization",tools:["TAGS_LIST","TAGS_CREATE","TAGS_DELETE","MEMBER_TAGS_GET","MEMBER_TAGS_SET"]},{id:"registry:manage",label:"Manage registry",description:"Browse, publish, and manage items in the registry",section:"Store & Registry",tools:["COLLECTION_REGISTRY_APP_LIST","COLLECTION_REGISTRY_APP_GET","COLLECTION_REGISTRY_APP_VERSIONS","COLLECTION_REGISTRY_APP_FILTERS","REGISTRY_ITEM_LIST","REGISTRY_ITEM_SEARCH","REGISTRY_ITEM_GET","REGISTRY_ITEM_VERSIONS","REGISTRY_ITEM_FILTERS","REGISTRY_DISCOVER_TOOLS","REGISTRY_ITEM_CREATE","REGISTRY_ITEM_BULK_CREATE","REGISTRY_ITEM_UPDATE","REGISTRY_ITEM_DELETE","REGISTRY_AI_GENERATE","REGISTRY_PUBLISH_REQUEST_LIST","REGISTRY_PUBLISH_REQUEST_REVIEW","REGISTRY_PUBLISH_REQUEST_COUNT","REGISTRY_PUBLISH_REQUEST_DELETE","REGISTRY_PUBLISH_API_KEY_GENERATE","REGISTRY_PUBLISH_API_KEY_LIST","REGISTRY_PUBLISH_API_KEY_REVOKE"],dangerous:!0},{id:"registry:monitor",label:"Monitor registry health",description:"Run health checks on registry connections and view results",section:"Store & Registry",tools:["REGISTRY_MONITOR_RUN_START","REGISTRY_MONITOR_RUN_LIST","REGISTRY_MONITOR_RUN_GET","REGISTRY_MONITOR_RUN_CANCEL","REGISTRY_MONITOR_RESULT_LIST","REGISTRY_MONITOR_CONNECTION_LIST","REGISTRY_MONITOR_CONNECTION_SYNC","REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH","REGISTRY_MONITOR_SCHEDULE_SET","REGISTRY_MONITOR_SCHEDULE_CANCEL"]},{id:"api-keys:manage",label:"Manage API keys",description:"Create, update, and revoke API keys",section:"Developer",tools:["API_KEY_CREATE","API_KEY_LIST","API_KEY_UPDATE","API_KEY_DELETE"]},{id:"event-bus:use",label:"Use event bus",description:"Publish events and manage subscriptions",section:"Developer",tools:["EVENT_PUBLISH","EVENT_SUBSCRIBE","EVENT_UNSUBSCRIBE","EVENT_CANCEL","EVENT_ACK","EVENT_SUBSCRIPTION_LIST","EVENT_SYNC_SUBSCRIPTIONS"]},{id:"storage:delete",label:"Delete from storage",description:"Permanently delete files from object storage",section:"Developer",tools:["DELETE_OBJECT","DELETE_OBJECTS"],dangerous:!0},{id:"connections:sql",label:"Run SQL queries",description:"Execute raw SQL against connected databases",section:"Developer",tools:["DATABASES_RUN_SQL"],dangerous:!0}],smX=new Set(Pn5.find((X)=>X.id==="basic-usage")?.tools??[])});var ge6=D(()=>{Kp();XO1()});function ue6(){return An5.parse(process.env)}var zN0=(X)=>F.enum(["true","false","1","0"]).optional().transform((Y)=>Y===void 0?X:Y==="true"||Y==="1"),qn5=(X)=>F.string().optional().transform((Y)=>Y?Y.split(",").map((G)=>G.trim()):X),An5;var le6=D(()=>{H0();An5=F.object({AUTH_EMAIL_PASSWORD_ENABLED:zN0(!0),AUTH_GOOGLE_CLIENT_ID:F.string().optional(),AUTH_GOOGLE_CLIENT_SECRET:F.string().optional(),AUTH_GITHUB_CLIENT_ID:F.string().optional(),AUTH_GITHUB_CLIENT_SECRET:F.string().optional(),AUTH_RESEND_API_KEY:F.string().optional(),AUTH_RESEND_FROM_EMAIL:F.string().optional(),AUTH_SENDGRID_API_KEY:F.string().optional(),AUTH_SENDGRID_FROM_EMAIL:F.string().optional(),AUTH_INVITE_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_RESET_PASSWORD_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_MAGIC_LINK_ENABLED:zN0(!1),AUTH_MAGIC_LINK_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_ENABLED:zN0(!1),AUTH_EMAIL_OTP_EMAIL_PROVIDER:F.enum(["resend","sendgrid"]).optional(),AUTH_EMAIL_OTP_LENGTH:F.coerce.number().optional(),AUTH_EMAIL_OTP_EXPIRES_IN:F.coerce.number().optional(),AUTH_SSO_DOMAIN:F.string().optional(),AUTH_SSO_MS_TENANT_ID:F.string().optional(),AUTH_SSO_MS_CLIENT_ID:F.string().optional(),AUTH_SSO_MS_CLIENT_SECRET:F.string().optional(),AUTH_SSO_SCOPES:qn5(["openid","email","profile"])}).transform((X)=>{let Y={};if(X.AUTH_GOOGLE_CLIENT_ID)Y.google={clientId:X.AUTH_GOOGLE_CLIENT_ID,clientSecret:X.AUTH_GOOGLE_CLIENT_SECRET??""};if(X.AUTH_GITHUB_CLIENT_ID)Y.github={clientId:X.AUTH_GITHUB_CLIENT_ID,clientSecret:X.AUTH_GITHUB_CLIENT_SECRET??""};let G=[];if(X.AUTH_RESEND_API_KEY)G.push({id:"resend",provider:"resend",config:{apiKey:X.AUTH_RESEND_API_KEY,fromEmail:X.AUTH_RESEND_FROM_EMAIL??"noreply@example.com"}});if(X.AUTH_SENDGRID_API_KEY)G.push({id:"sendgrid",provider:"sendgrid",config:{apiKey:X.AUTH_SENDGRID_API_KEY,fromEmail:X.AUTH_SENDGRID_FROM_EMAIL??"noreply@example.com"}});let Q=G[0]?.id,J;if(X.AUTH_SSO_MS_CLIENT_ID&&X.AUTH_SSO_DOMAIN)J={providerId:"microsoft",domain:X.AUTH_SSO_DOMAIN,MS_TENANT_ID:X.AUTH_SSO_MS_TENANT_ID??"",MS_CLIENT_ID:X.AUTH_SSO_MS_CLIENT_ID,MS_CLIENT_SECRET:X.AUTH_SSO_MS_CLIENT_SECRET??"",scopes:X.AUTH_SSO_SCOPES};let W;if(X.AUTH_MAGIC_LINK_ENABLED)W={enabled:!0,emailProviderId:X.AUTH_MAGIC_LINK_EMAIL_PROVIDER??Q??""};let Z;if(X.AUTH_EMAIL_OTP_ENABLED)Z={enabled:!0,emailProviderId:X.AUTH_EMAIL_OTP_EMAIL_PROVIDER??Q??"",...X.AUTH_EMAIL_OTP_LENGTH!==void 0&&{otpLength:X.AUTH_EMAIL_OTP_LENGTH},...X.AUTH_EMAIL_OTP_EXPIRES_IN!==void 0&&{expiresIn:X.AUTH_EMAIL_OTP_EXPIRES_IN}};return{emailAndPassword:{enabled:X.AUTH_EMAIL_PASSWORD_ENABLED},socialProviders:Object.keys(Y).length>0?Y:void 0,emailProviders:G.length>0?G:void 0,inviteEmailProviderId:X.AUTH_INVITE_EMAIL_PROVIDER,resetPasswordEmailProviderId:X.AUTH_RESET_PASSWORD_EMAIL_PROVIDER,ssoConfig:J,magicLinkConfig:W,emailOtpConfig:Z}})});var iA1;var me6=D(()=>{iA1={enabled:!0,batchSize:250,flushIntervalMs:300,maxQueueSize:1e4,redactor:"regex"}});import{existsSync as Tn5,readFileSync as In5}from"fs";function Vn5(){let X=ue6(),Y=R6().configPath;if(!Tn5(Y))return{auth:X,monitoring:iA1};try{let G=JSON.parse(In5(Y,"utf-8"));if(G.auth)console.warn("[config] DEPRECATION: 'auth' key found in config.json. Auth is now configured via AUTH_* environment variables. The 'auth' key will be ignored.");return{auth:X,monitoring:G.monitoring??iA1,theme:G.theme,logo:G.logo,autoCreateOrganizationOnSignup:G.autoCreateOrganizationOnSignup}}catch{return{auth:X,monitoring:iA1}}}function fj(){if(!ON0)ON0=Vn5();return ON0}function de6(){return fj().theme}var ON0=null;var DN0=D(()=>{le6();me6();C9()});import{dirname as jn5,posix as Mn5,sep as Rn5}from"path";function ie6(){let X=Sn5();return async(Y)=>{for(let G of Y)G.module=X(G.filename);return Y}}function Sn5(X=process.argv[1]?jn5(process.argv[1]):process.cwd(),Y=Rn5==="\\"){let G=Y?ce6(X):X;return(Q)=>{if(!Q)return;let J=Y?ce6(Q):Q,{dir:W,base:Z,ext:$}=Mn5.parse(J);if($===".js"||$===".mjs"||$===".cjs")Z=Z.slice(0,-1*$.length);let K=decodeURIComponent(Z);if(!W)W=".";let H=W.lastIndexOf("/node_modules");if(H>-1)return`${W.slice(H+14).replace(/\//g,".")}:${K}`;if(W.startsWith(G)){let U=W.slice(G.length+1).replace(/\//g,".");return U?`${U}:${K}`:K}return K}}function ce6(X){return X.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var pe6=()=>{};function kn5(X,Y,G){return{key:X,enabled:typeof Y=="string"?!0:Y,variant:typeof Y=="string"?Y:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:G?JSON.stringify(G):void 0,description:void 0}}}var wN0=(X)=>{if("flags"in X){let Y=ne6(X.flags),G=ae6(X.flags);return{...X,featureFlags:Y,featureFlagPayloads:G}}{let Y=X.featureFlags??{},G=Object.fromEntries(Object.entries(X.featureFlagPayloads||{}).map(([J,W])=>[J,LN0(W)])),Q=Object.fromEntries(Object.entries(Y).map(([J,W])=>[J,kn5(J,W,G[J])]));return{...X,featureFlags:Y,featureFlagPayloads:G,flags:Q}}},ne6=(X)=>Object.fromEntries(Object.entries(X??{}).map(([Y,G])=>[Y,gX1(G)]).filter(([,Y])=>Y!==void 0)),ae6=(X)=>{let Y=X??{};return Object.fromEntries(Object.keys(Y).filter((G)=>{let Q=Y[G];return Q.enabled&&Q.metadata&&Q.metadata.payload!==void 0}).map((G)=>{let Q=Y[G].metadata?.payload;return[G,Q?LN0(Q):void 0]}))},gX1=(X)=>X===void 0?void 0:X.variant??X.enabled,LN0=(X)=>{if(typeof X!="string")return X;try{return JSON.parse(X)}catch{return X}};var pA1=()=>{};function te6(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}async function nA1(X,Y=!0,G){try{let Q=new CompressionStream("gzip"),J=Q.writable.getWriter(),W=J.write(new TextEncoder().encode(X)).then(()=>J.close()).catch(async(K)=>{try{await J.abort(K)}catch{}throw K}),Z=new Response(Q.readable).blob(),[$]=await Promise.all([Z,W]);return $}catch(Q){if(G?.rethrow)throw Q;if(Y)console.error("Failed to gzip compress data",Q);return null}}var EN0=()=>{};var Cn5,re6=function(X,Y=[]){if(!X)return!1;let G=X.toLowerCase();return Cn5.concat(Y).some((Q)=>{let J=Q.toLowerCase();return G.indexOf(J)!==-1})};var oe6=D(()=>{Cn5=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"]});var aJ;var bj=D(()=>{aJ=function(X){return X.AnonymousId="anonymous_id",X.DistinctId="distinct_id",X.Props="props",X.EnablePersonProcessing="enable_person_processing",X.PersonMode="person_mode",X.FeatureFlagDetails="feature_flag_details",X.FeatureFlags="feature_flags",X.FeatureFlagPayloads="feature_flag_payloads",X.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",X.BootstrapFeatureFlags="bootstrap_feature_flags",X.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",X.OverrideFeatureFlags="override_feature_flags",X.Queue="queue",X.LogsQueue="logs_queue",X.OptedOut="opted_out",X.SessionId="session_id",X.SessionStartTimestamp="session_start_timestamp",X.SessionLastTimestamp="session_timestamp",X.PersonProperties="person_properties",X.GroupProperties="group_properties",X.InstalledAppBuild="installed_app_build",X.InstalledAppVersion="installed_app_version",X.SessionReplay="session_replay",X.SurveyLastSeenDate="survey_last_seen_date",X.SurveysSeen="surveys_seen",X.Surveys="surveys",X.RemoteConfig="remote_config",X.FlagsEndpointWasHit="flags_endpoint_was_hit",X.DeviceId="device_id",X}({})});var aA1=()=>{};function rA1(X){return X===null||typeof X!="object"}function yj(X,Y){return Object.prototype.toString.call(X)===`[object ${Y}]`}function X14(X){return yj(X,"ErrorEvent")}function Zt(X){return typeof Event<"u"&&fn5(X,Event)}function Y14(X){return yj(X,"Object")}function fn5(X,Y){try{return X instanceof Y}catch{return!1}}var _n5,se6,qdX,PN0,tA1,uX1=(X)=>X===Object(X)&&!tA1(X),Jt=(X)=>X===void 0,kq=(X)=>PN0.call(X)=="[object String]",ee6=(X)=>kq(X)&&X.trim().length===0,lX1=(X)=>PN0.call(X)=="[object Number]"&&X===X,qN0=(X)=>X instanceof Error;var mX1=D(()=>{bj();aA1();_n5=Array.isArray,se6=Object.prototype,qdX=se6.hasOwnProperty,PN0=se6.toString,tA1=_n5||function(X){return PN0.call(X)==="[object Array]"}});function dX1(X,Y,G,Q,J){if(Y>G)Q.warn("min cannot be greater than max."),Y=G;if(lX1(X))if(X>G)return Q.warn(" cannot be greater than max: "+G+". Using max value instead."),G;else{if(!(X<Y))return X;return Q.warn(" cannot be less than min: "+Y+". Using min value instead."),Y}return Q.warn(" must be a number. using max or fallback. max: "+G+", fallback: "+J),dX1(J||G,Y,G,Q)}var AN0=D(()=>{mX1()});class TN0{constructor(X){this._buckets={},this._onBucketRateLimited=X._onBucketRateLimited,this._bucketSize=dX1(X.bucketSize,0,100,X._logger),this._refillRate=dX1(X.refillRate,0,this._bucketSize,X._logger),this._refillInterval=dX1(X.refillInterval,0,bn5,X._logger)}_applyRefill(X,Y){let G=Y-X.lastAccess,Q=Math.floor(G/this._refillInterval);if(Q>0){let J=Q*this._refillRate;X.tokens=Math.min(X.tokens+J,this._bucketSize),X.lastAccess=X.lastAccess+Q*this._refillInterval}}consumeRateLimit(X){let Y=Date.now(),G=String(X),Q=this._buckets[G];if(Q)this._applyRefill(Q,Y);else Q={tokens:this._bucketSize,lastAccess:Y},this._buckets[G]=Q;if(Q.tokens===0)return!0;if(Q.tokens--,Q.tokens===0)this._onBucketRateLimited?.(X);return Q.tokens===0}stop(){this._buckets={}}}var bn5=86400000;var G14=D(()=>{AN0()});class xj{constructor(X){this.bytes=X}static ofInner(X){if(X.length===16)return new xj(X);throw TypeError("not 128-bit length")}static fromFieldsV7(X,Y,G,Q){if(!Number.isInteger(X)||!Number.isInteger(Y)||!Number.isInteger(G)||!Number.isInteger(Q)||X<0||Y<0||G<0||Q<0||X>281474976710655||Y>4095||G>1073741823||Q>4294967295)throw RangeError("invalid field value");let J=new Uint8Array(16);return J[0]=X/1099511627776,J[1]=X/4294967296,J[2]=X/16777216,J[3]=X/65536,J[4]=X/256,J[5]=X,J[6]=112|Y>>>8,J[7]=Y,J[8]=128|G>>>24,J[9]=G>>>16,J[10]=G>>>8,J[11]=G,J[12]=Q>>>24,J[13]=Q>>>16,J[14]=Q>>>8,J[15]=Q,new xj(J)}static parse(X){let Y;switch(X.length){case 32:Y=/^[0-9a-f]{32}$/i.exec(X)?.[0];break;case 36:Y=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(X)?.slice(1,6).join("");break;case 38:Y=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(X)?.slice(1,6).join("");break;case 45:Y=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(X)?.slice(1,6).join("");break;default:break}if(Y){let G=new Uint8Array(16);for(let Q=0;Q<16;Q+=4){let J=parseInt(Y.substring(2*Q,2*Q+8),16);G[Q+0]=J>>>24,G[Q+1]=J>>>16,G[Q+2]=J>>>8,G[Q+3]=J}return new xj(G)}throw SyntaxError("could not parse UUID string")}toString(){let X="";for(let Y=0;Y<this.bytes.length;Y++)if(X+="0123456789abcdef".charAt(this.bytes[Y]>>>4),X+="0123456789abcdef".charAt(15&this.bytes[Y]),Y===3||Y===5||Y===7||Y===9)X+="-";return X}toHex(){let X="";for(let Y=0;Y<this.bytes.length;Y++)X+="0123456789abcdef".charAt(this.bytes[Y]>>>4),X+="0123456789abcdef".charAt(15&this.bytes[Y]);return X}toJSON(){return this.toString()}getVariant(){let X=this.bytes[8]>>>4;if(X<0)throw Error("unreachable");if(X<=7)return this.bytes.every((Y)=>Y===0)?"NIL":"VAR_0";if(X<=11)return"VAR_10";if(X<=13)return"VAR_110";if(X<=15)return this.bytes.every((Y)=>Y===255)?"MAX":"VAR_RESERVED";else throw Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new xj(this.bytes.slice(0))}equals(X){return this.compareTo(X)===0}compareTo(X){for(let Y=0;Y<16;Y++){let G=this.bytes[Y]-X.bytes[Y];if(G!==0)return Math.sign(G)}return 0}}class J14{constructor(X){this.timestamp=0,this.counter=0,this.random=X??yn5()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(X,Y){let G=this.generateOrAbortCore(X,Y);if(G===void 0)this.timestamp=0,G=this.generateOrAbortCore(X,Y);return G}generateOrAbortCore(X,Y){if(!Number.isInteger(X)||X<1||X>281474976710655)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(Y<0||Y>281474976710655)throw RangeError("`rollbackAllowance` out of reasonable range");if(X>this.timestamp)this.timestamp=X,this.resetCounter();else{if(!(X+Y>=this.timestamp))return;if(this.counter++,this.counter>4398046511103)this.timestamp++,this.resetCounter()}return xj.fromFieldsV7(this.timestamp,Math.trunc(this.counter/1073741824),this.counter&1073741823,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let X=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return X[6]=64|X[6]>>>4,X[8]=128|X[8]>>>2,xj.ofInner(X)}}var yn5=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())}),Q14,Cq=()=>xn5().toString(),xn5=()=>(Q14||(Q14=new J14)).generate();var cX1=D(()=>{/*! For license information please see uuidv7.mjs.LICENSE.txt */});class IN0{add(X){let Y=Cq();return this.promiseByIds[Y]=X,X.catch(()=>{}).finally(()=>{delete this.promiseByIds[Y]}),X}async join(){let X=Object.values(this.promiseByIds),Y=X.length;while(Y>0)await Promise.all(X),X=Object.values(this.promiseByIds),Y=X.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}}var Z14=D(()=>{cX1()});function hn5(X=console){return{log:X.log.bind(X),warn:X.warn.bind(X),error:X.error.bind(X),debug:X.debug.bind(X)}}function $14(X,Y=gn5){return W14(X,Y,hn5())}var W14=(X,Y,G)=>{function Q(W,...Z){Y(()=>{let $=G[W];$(X,...Z)})}return{info:(...W)=>{Q("log",...W)},warn:(...W)=>{Q("warn",...W)},error:(...W)=>{Q("error",...W)},critical:(...W)=>{G.error(X,...W)},createLogger:(W)=>W14(`${X} ${W}`,Y,G)}},gn5=(X)=>X();var K14=()=>{};var $t="Mobile",sA1="iOS",Wt="Android",H14="Tablet",_dX,ln5="Apple",fdX,F14="Safari",eA1="BlackBerry",U14="Samsung",mn5,dn5,XT1="Chrome",cn5,in5,B14="Internet Explorer",pn5,jN0="Opera",bdX,N14="Edge",nn5,MN0="Firefox",an5,RN0="Nintendo",SN0="PlayStation",oA1="Xbox",tn5,rn5,iX1="Windows",on5,z14="Generic",ydX,xdX,sn5="Konqueror",F3="(\\d+(\\.\\d+)?)",VN0,hdX,gdX,udX,en5,Xa5,ldX,mdX;var O14=D(()=>{aA1();mX1();_dX=Wt+" "+H14,fdX=ln5+" Watch",mn5=U14+"Browser",dn5=U14+" Internet",cn5=XT1+" OS",in5=XT1+" "+sA1,pn5=B14+" "+$t,bdX=jN0+" Mini",nn5="Microsoft "+N14,an5=MN0+" "+sA1,tn5=Wt+" "+$t,rn5=$t+" "+F14,on5=iX1+" Phone",ydX=z14+" "+$t.toLowerCase(),xdX=z14+" "+H14.toLowerCase(),VN0=new RegExp("Version/"+F3),hdX=new RegExp(oA1,"i"),gdX=new RegExp(SN0+" \\w+","i"),udX=new RegExp(RN0+" \\w+","i"),en5=new RegExp(eA1+"|PlayBook|BB10","i"),Xa5={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"},ldX={[pn5]:[new RegExp("rv:"+F3)],[nn5]:[new RegExp(N14+"?\\/"+F3)],[XT1]:[new RegExp("("+XT1+"|CrMo)\\/"+F3)],[in5]:[new RegExp("CriOS\\/"+F3)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+F3)],[F14]:[VN0],[rn5]:[VN0],[jN0]:[new RegExp("("+jN0+"|OPR)\\/"+F3)],[MN0]:[new RegExp(MN0+"\\/"+F3)],[an5]:[new RegExp("FxiOS\\/"+F3)],[sn5]:[new RegExp("Konqueror[:/]?"+F3,"i")],[eA1]:[new RegExp(eA1+" "+F3),VN0],[tn5]:[new RegExp("android\\s"+F3,"i")],[dn5]:[new RegExp(mn5+"\\/"+F3)],[B14]:[new RegExp("(rv:|MSIE )"+F3)],Mozilla:[new RegExp("rv:"+F3)]},mdX=[[new RegExp(oA1+"; "+oA1+" (.*?)[);]","i"),(X)=>[oA1,X&&X[1]||""]],[new RegExp(RN0,"i"),[RN0,""]],[new RegExp(SN0,"i"),[SN0,""]],[en5,[eA1,""]],[new RegExp(iX1,"i"),(X,Y)=>{if(/Phone/.test(Y)||/WPDesktop/.test(Y))return[on5,""];if(new RegExp($t).test(Y)&&!/IEMobile\b/.test(Y))return[iX1+" "+$t,""];let G=/Windows NT ([0-9.]+)/i.exec(Y);if(G&&G[1]){let Q=G[1],J=Xa5[Q]||"";if(/arm/i.test(Y))J="RT";return[iX1,J]}return[iX1,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,(X)=>{if(X&&X[3]){let Y=[X[3],X[4],X[5]||"0"];return[sA1,Y.join(".")]}return[sA1,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,(X)=>{let Y="";if(X&&X.length>=3)Y=Jt(X[2])?X[3]:X[2];return["watchOS",Y]}],[new RegExp("("+Wt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Wt+")","i"),(X)=>{if(X&&X[2]){let Y=[X[2],X[3],X[4]||"0"];return[Wt,Y.join(".")]}return[Wt,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,(X)=>{let Y=["Mac OS X",""];if(X&&X[1]){let G=[X[1],X[2],X[3]||"0"];Y[1]=G.join(".")}return Y}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[cn5,""]],[/Linux|debian/i,["Linux",""]]]});function w14(X){return X?.replace(/\/+$/,"")}async function L14(X,Y){let G=null;for(let Q=0;Q<Y.retryCount+1;Q++){if(Q>0)await new Promise((J)=>setTimeout(J,Y.retryDelay));try{return await X()}catch(J){if(G=J,!Y.retryCheck(J))throw J}}throw G}function YT1(){return new Date().toISOString()}function Ow(X,Y){let G=setTimeout(X,Y);return G?.unref&&G?.unref(),G}function kN0(X){return Promise.all(X.map((Y)=>(Y??Promise.resolve()).then((G)=>({status:"fulfilled",value:G}),(G)=>({status:"rejected",reason:G}))))}var D14="utf8",E14=(X)=>X instanceof Error;var U3=D(()=>{oe6();G14();AN0();aA1();mX1();Z14();K14();O14()});var Ya5,GcX;var CN0=D(()=>{U3();Ya5={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},GcX=Ya5.info});var P14=D(()=>{CN0();bj()});var q14=D(()=>{bj()});class vN0{constructor(){this.events={},this.events={}}on(X,Y){if(!this.events[X])this.events[X]=[];return this.events[X].push(Y),()=>{this.events[X]=this.events[X].filter((G)=>G!==Y)}}emit(X,Y){for(let G of this.events[X]||[])G(Y);for(let G of this.events["*"]||[])G(X,Y)}}var A14=()=>{};async function T14(X){if(X instanceof Kt){let Y="";try{Y=await X.text}catch{}console.error(`Error while flushing PostHog: message=${X.message}, response body=${Y}`,X)}else console.error("Error while flushing PostHog",X);return Promise.resolve()}function _N0(X){return typeof X=="object"&&(X instanceof Kt||X instanceof pX1)}function I14(X){return typeof X=="object"&&X instanceof Kt&&X.status===413}class GT1{constructor(X,Y={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new IN0,this._events=new vN0,this._isInitialized=!1;let G=typeof X=="string"?X.trim():"",Q=typeof Y.host=="string"?Y.host.trim():"",J=!G;if(this._logger=$14("[PostHog]",this.logMsgIfDebug.bind(this)),J)this._logger.error("You must pass your PostHog project's api key. The client will be disabled.");if(this.apiKey=G,this.host=w14(Q||"https://us.i.posthog.com"),this.flushAt=Y.flushAt?Math.max(Y.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,Y.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,Y.maxQueueSize??1000),this.flushInterval=Y.flushInterval??1e4,this.preloadFeatureFlags=Y.preloadFeatureFlags??!0,this.defaultOptIn=Y.defaultOptIn??!0,this.disableSurveys=Y.disableSurveys??!1,this._retryOptions={retryCount:Y.fetchRetryCount??3,retryDelay:Y.fetchRetryDelay??3000,retryCheck:_N0},this.requestTimeout=Y.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=Y.featureFlagsRequestTimeoutMs??3000,this.remoteConfigRequestTimeoutMs=Y.remoteConfigRequestTimeoutMs??3000,this.disableGeoip=Y.disableGeoip??!0,this.disabled=(Y.disabled??!1)||J,this.historicalMigration=Y?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=Y?.evaluationContexts??Y?.evaluationEnvironments,Y?.evaluationEnvironments&&!Y?.evaluationContexts)this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.");this.disableCompression=!te6()||(Y?.disableCompression??!1)}logMsgIfDebug(X){if(this.isDebug)X()}wrap(X){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return X();this._initPromise.then(()=>X())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(aJ.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(aJ.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(aJ.OptedOut,!0)})}on(X,Y){return this._events.on(X,Y)}debug(X=!0){if(this.removeDebugCallback?.(),X){let Y=this.on("*",(G,Q)=>this._logger.info(G,Q));this.removeDebugCallback=()=>{Y(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(X){return{distinct_id:X.distinct_id,event:X.event,properties:{...X.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(X){return this.promiseQueue.add(X)}identifyStateless(X,Y,G){this.wrap(()=>{let Q={...this.buildPayload({distinct_id:X,event:"$identify",properties:Y})};this.enqueue("identify",Q,G)})}async identifyStatelessImmediate(X,Y,G){let Q={...this.buildPayload({distinct_id:X,event:"$identify",properties:Y})};await this.sendImmediate("identify",Q,G)}captureStateless(X,Y,G,Q){this.wrap(()=>{let J=this.buildPayload({distinct_id:X,event:Y,properties:G});this.enqueue("capture",J,Q)})}async captureStatelessImmediate(X,Y,G,Q){let J=this.buildPayload({distinct_id:X,event:Y,properties:G});await this.sendImmediate("capture",J,Q)}aliasStateless(X,Y,G,Q){this.wrap(()=>{let J=this.buildPayload({event:"$create_alias",distinct_id:Y,properties:{...G||{},distinct_id:Y,alias:X}});this.enqueue("alias",J,Q)})}async aliasStatelessImmediate(X,Y,G,Q){let J=this.buildPayload({event:"$create_alias",distinct_id:Y,properties:{...G||{},distinct_id:Y,alias:X}});await this.sendImmediate("alias",J,Q)}groupIdentifyStateless(X,Y,G,Q,J,W){this.wrap(()=>{let Z=this.buildPayload({distinct_id:J||`$${X}_${Y}`,event:"$groupidentify",properties:{$group_type:X,$group_key:Y,$group_set:G||{},...W||{}}});this.enqueue("capture",Z,Q)})}async getRemoteConfig(){await this._initPromise;let X=this.host;if(X==="https://us.i.posthog.com")X="https://us-assets.i.posthog.com";else if(X==="https://eu.i.posthog.com")X="https://eu-assets.i.posthog.com";let Y=`${X}/array/${this.apiKey}/config`,G={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(Y,G,{retryCount:0},this.remoteConfigRequestTimeoutMs).then((Q)=>Q.json()).catch((Q)=>{this._logger.error("Remote config could not be loaded",Q),this._events.emit("error",Q)})}async getFlags(X,Y={},G={},Q={},J={},W=!1){await this._initPromise;let Z=W?"&config=true":"",$=`${this.host}/flags/?v=2${Z}`,K={token:this.apiKey,distinct_id:X,groups:Y,person_properties:G,group_properties:Q,...J};if(G.$device_id)K.$device_id=G.$device_id;if(this.evaluationContexts&&this.evaluationContexts.length>0)K.evaluation_contexts=this.evaluationContexts;let H={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(K)};return this._logger.info("Flags URL",$),this.fetchWithRetry($,H,{retryCount:0},this.featureFlagsRequestTimeoutMs).then((U)=>U.json()).then((U)=>({success:!0,response:wN0(U)})).catch((U)=>{return this._events.emit("error",U),{success:!1,error:this.categorizeRequestError(U)}})}categorizeRequestError(X){if(X instanceof Kt)return{type:"api_error",statusCode:X.status};if(X instanceof pX1){let Y=X.error;if(Y instanceof Error&&(Y.name==="AbortError"||Y.name==="TimeoutError"))return{type:"timeout"};return{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(X,Y,G={},Q={},J={},W){await this._initPromise;let Z=await this.getFeatureFlagDetailStateless(X,Y,G,Q,J,W);if(Z===void 0)return{response:void 0,requestId:void 0};let $=gX1(Z.response);if($===void 0)$=!1;return{response:$,requestId:Z.requestId}}async getFeatureFlagDetailStateless(X,Y,G={},Q={},J={},W){await this._initPromise;let Z=await this.getFeatureFlagDetailsStateless(Y,G,Q,J,W,[X]);if(Z===void 0)return;return{response:Z.flags[X],requestId:Z.requestId,evaluatedAt:Z.evaluatedAt}}async getFeatureFlagPayloadStateless(X,Y,G={},Q={},J={},W){await this._initPromise;let Z=await this.getFeatureFlagPayloadsStateless(Y,G,Q,J,W,[X]);if(!Z)return;let $=Z[X];if($===void 0)return null;return $}async getFeatureFlagPayloadsStateless(X,Y={},G={},Q={},J,W){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(X,Y,G,Q,J,W)).payloads}async getFeatureFlagsStateless(X,Y={},G={},Q={},J,W){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(X,Y,G,Q,J,W)}async getFeatureFlagsAndPayloadsStateless(X,Y={},G={},Q={},J,W){await this._initPromise;let Z=await this.getFeatureFlagDetailsStateless(X,Y,G,Q,J,W);if(!Z)return{flags:void 0,payloads:void 0,requestId:void 0};return{flags:Z.featureFlags,payloads:Z.featureFlagPayloads,requestId:Z.requestId}}async getFeatureFlagDetailsStateless(X,Y={},G={},Q={},J,W){await this._initPromise;let Z={};if(J??this.disableGeoip)Z.geoip_disable=!0;if(W)Z.flag_keys_to_evaluate=W;let $=await this.getFlags(X,Y,G,Q,Z);if(!$.success)return;let K=$.response;if(K.errorsWhileComputingFlags)console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices");if(K.quotaLimited?.includes("feature_flags"))return console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:K?.requestId,quotaLimited:K.quotaLimited};return K}async getSurveysStateless(){if(await this._initPromise,this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let X=`${this.host}/api/surveys/?token=${this.apiKey}`,Y={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},Q=(await this.fetchWithRetry(X,Y).then((J)=>{if(J.status!==200||!J.json){let W=`Surveys API could not be loaded: ${J.status}`,Z=Error(W);this._logger.error(Z),this._events.emit("error",Error(W));return}return J.json()}).catch((J)=>{this._logger.error("Surveys API could not be loaded",J),this._events.emit("error",J)}))?.surveys;if(Q)this._logger.info("Surveys fetched from API: ",JSON.stringify(Q));return Q??[]}get props(){if(!this._props)this._props=this.getPersistedProperty(aJ.Props);return this._props||{}}set props(X){this._props=X}async register(X){this.wrap(()=>{this.props={...this.props,...X},this.setPersistedProperty(aJ.Props,this.props)})}async unregister(X){this.wrap(()=>{delete this.props[X],this.setPersistedProperty(aJ.Props,this.props)})}processBeforeEnqueue(X){return X}async flushStorage(){}enqueue(X,Y,G){this.wrap(()=>{if(this.optedOut)return void this._events.emit(X,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage(X,Y,G);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let J=this.getPersistedProperty(aJ.Queue)||[];if(J.length>=this.maxQueueSize)J.shift(),this._logger.info("Queue is full, the oldest event is dropped.");if(J.push({message:Q}),this.setPersistedProperty(aJ.Queue,J),this._events.emit(X,Q),J.length>=this.flushAt)this.flushBackground();if(this.flushInterval&&!this._flushTimer)this._flushTimer=Ow(()=>this.flushBackground(),this.flushInterval)})}async sendImmediate(X,Y,G){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this._isInitialized)await this._initPromise;if(this.optedOut)return void this._events.emit(X,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let Q=this.prepareMessage(X,Y,G);if(Q=this.processBeforeEnqueue(Q),Q===null)return;let J={api_key:this.apiKey,batch:[Q],sent_at:YT1()};if(this.historicalMigration)J.historical_migration=!0;let W=JSON.stringify(J),Z=`${this.host}/batch/`,$=this.disableCompression?null:await nA1(W,this.isDebug),K={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...$!==null&&{"Content-Encoding":"gzip"}},body:$||W};try{await this.fetchWithRetry(Z,K)}catch(H){this._events.emit("error",H)}}prepareMessage(X,Y,G){let Q={...Y,type:X,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:G?.timestamp?G?.timestamp:YT1(),uuid:G?.uuid?G.uuid:Cq()};if(G?.disableGeoip??this.disableGeoip){if(!Q.properties)Q.properties={};Q.properties.$geoip_disable=!0}if(Q.distinctId)Q.distinct_id=Q.distinctId,delete Q.distinctId;return Q}clearFlushTimer(){if(this._flushTimer)clearTimeout(this._flushTimer),this._flushTimer=void 0}flushBackground(){this.flush().catch(async(X)=>{await T14(X)})}async flush(){let X=kN0([this.flushPromise]).then(()=>this._flush());return this.flushPromise=X,this.addPendingPromise(X),kN0([X]).then(()=>{if(this.flushPromise===X)this.flushPromise=null}),X}getCustomHeaders(){let X=this.getCustomUserAgent(),Y={};if(X&&X!=="")Y["User-Agent"]=X;return Y}async _flush(){this.clearFlushTimer(),await this._initPromise;let X=this.getPersistedProperty(aJ.Queue)||[];if(!X.length)return;let Y=[],G=X.length;while(X.length>0&&Y.length<G){let Q=X.slice(0,this.maxBatchSize),J=Q.map((N)=>N.message),W=async()=>{let z=(this.getPersistedProperty(aJ.Queue)||[]).slice(Q.length);this.setPersistedProperty(aJ.Queue,z),X=z,await this.flushStorage()},Z={api_key:this.apiKey,batch:J,sent_at:YT1()};if(this.historicalMigration)Z.historical_migration=!0;let $=JSON.stringify(Z),K=`${this.host}/batch/`,H=this.disableCompression?null:await nA1($,this.isDebug),U={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...H!==null&&{"Content-Encoding":"gzip"}},body:H||$},B={retryCheck:(N)=>{if(I14(N))return!1;return _N0(N)}};try{await this.fetchWithRetry(K,U,B)}catch(N){if(I14(N)&&J.length>1){this.maxBatchSize=Math.max(1,Math.floor(J.length/2)),this._logger.warn(`Received 413 when sending batch of size ${J.length}, reducing batch size to ${this.maxBatchSize}`);continue}if(!(N instanceof pX1))await W();throw this._events.emit("error",N),N}await W(),Y.push(...J)}this._events.emit("flush",Y)}async fetchWithRetry(X,Y,G,Q){let J=Y.body?Y.body:"",W=-1;try{W=J instanceof Blob?J.size:Buffer.byteLength(J,D14)}catch{if(J instanceof Blob)W=J.size;else W=new TextEncoder().encode(J).length}return await L14(async()=>{let Z=new AbortController,$=Q??this.requestTimeout,K=Ow(()=>Z.abort(),$),H=null;try{H=await this.fetch(X,{signal:Z.signal,...Y})}catch(B){throw new pX1(B)}finally{clearTimeout(K)}if(Y.mode!=="no-cors"&&(H.status<200||H.status>=400))throw new Kt(H,W);return H},{...this._retryOptions,...G})}async _shutdown(X=30000){await this._initPromise;let Y=!1;this.clearFlushTimer();let G=async()=>{try{await this.promiseQueue.join();while(!0){if((this.getPersistedProperty(aJ.Queue)||[]).length===0)break;if(await this.flush(),Y)break}}catch(J){if(!_N0(J))throw J;await T14(J)}},Q;try{return await Promise.race([new Promise((J,W)=>{Q=Ow(()=>{this._logger.error("Timed out while shutting down PostHog"),Y=!0,W("Timeout while shutting down PostHog. Some events may not have been sent.")},X)}),G()])}finally{clearTimeout(Q)}}async shutdown(X=30000){if(this.shutdownPromise)this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup");else this.shutdownPromise=this._shutdown(X).finally(()=>{this.shutdownPromise=null});return this.shutdownPromise}}var Kt,pX1;var fN0=D(()=>{A14();pA1();EN0();bj();U3();cX1();Kt=class Kt extends Error{constructor(X,Y){super("HTTP error while fetching PostHog: status="+X.status+", reqByteLength="+Y),this.response=X,this.reqByteLength=Y,this.name="PostHogFetchHttpError"}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}};pX1=class pX1 extends Error{constructor(X){super("Network error while fetching PostHog",X instanceof Error?{cause:X}:{}),this.error=X,this.name="PostHogFetchNetworkError"}}});var V14=D(()=>{pA1();bj();fN0();cX1();U3()});var j14=D(()=>{mX1()});function R14(X){let Y=globalThis._posthogChunkIds;if(!Y)return;let G=Object.keys(Y);if(JT1&&G.length===M14)return JT1;return M14=G.length,JT1=G.reduce((Q,J)=>{if(!QT1)QT1={};let W=QT1[J];if(W)Q[W[0]]=W[1];else{let Z=X(J);for(let $=Z.length-1;$>=0;$--){let H=Z[$]?.filename,U=Y[J];if(H&&U){Q[H]=U,QT1[J]=[H,U];break}}}return Q},{}),JT1}var QT1,M14,JT1;var S14=()=>{};class k14{constructor(X,Y,G=[]){this.coercers=X,this.stackParser=Y,this.modifiers=G}buildFromUnknown(X,Y={}){let Q=Y&&Y.mechanism||{handled:!0,type:"generic"},W=this.buildCoercingContext(Q,Y,0).apply(X),Z=this.buildParsingContext(Y),$=this.parseStacktrace(W,Z);return{$exception_list:this.convertToExceptionList($,Q),$exception_level:"error"}}async modifyFrames(X){for(let Y of X)if(Y.stacktrace&&Y.stacktrace.frames&&tA1(Y.stacktrace.frames))Y.stacktrace.frames=await this.applyModifiers(Y.stacktrace.frames);return X}coerceFallback(X){return{type:"Error",value:"Unknown error",stack:X.syntheticException?.stack,synthetic:!0}}parseStacktrace(X,Y){let G;if(X.cause!=null)G=this.parseStacktrace(X.cause,Y);let Q;if(X.stack!=""&&X.stack!=null)Q=this.applyChunkIds(this.stackParser(X.stack,X.synthetic?Y.skipFirstLines:0),Y.chunkIdMap);return{...X,cause:G,stack:Q}}applyChunkIds(X,Y){return X.map((G)=>{if(G.filename&&Y)G.chunk_id=Y[G.filename];return G})}applyCoercers(X,Y){for(let G of this.coercers)if(G.match(X))return G.coerce(X,Y);return this.coerceFallback(Y)}async applyModifiers(X){let Y=X;for(let G of this.modifiers)Y=await G(Y);return Y}convertToExceptionList(X,Y){let G={type:X.type,value:X.value,mechanism:{type:Y.type??"generic",handled:Y.handled??!0,synthetic:X.synthetic??!1}};if(X.stack)G.stacktrace={type:"raw",frames:X.stack};let Q=[G];if(X.cause!=null)Q.push(...this.convertToExceptionList(X.cause,{...Y,handled:!0}));return Q}buildParsingContext(X){return{chunkIdMap:R14(this.stackParser),skipFirstLines:X.skipFirstLines??1}}buildCoercingContext(X,Y,G=0){let Q=(W,Z)=>{if(!(Z<=Ja5))return;{let $=this.buildCoercingContext(X,Y,Z);return this.applyCoercers(W,$)}};return{...Y,syntheticException:G==0?Y.syntheticException:void 0,mechanism:X,apply:(W)=>Q(W,G),next:(W)=>Q(W,G+1)}}}var Ja5=4;var C14=D(()=>{U3();S14()});function $z(X,Y,G,Q,J){let W={platform:X,filename:Y,function:G==="<anonymous>"?sQ:G,in_app:!0};if(!Jt(Q))W.lineno=Q;if(!Jt(J))W.colno=J;return W}var sQ="?";var vq=D(()=>{U3()});var ZT1=(X,Y)=>{let G=X.indexOf("safari-extension")!==-1,Q=X.indexOf("safari-web-extension")!==-1;return G||Q?[X.indexOf("@")!==-1?X.split("@")[0]:sQ,G?`safari-extension:${Y}`:`safari-web-extension:${Y}`]:[X,Y]};var bN0=D(()=>{vq()});var Za5,Wa5,$a5,yN0=(X,Y)=>{let G=Za5.exec(X);if(G){let[,J,W,Z]=G;return $z(Y,J,sQ,+W,+Z)}let Q=Wa5.exec(X);if(Q){if(Q[2]&&Q[2].indexOf("eval")===0){let $=$a5.exec(Q[2]);if($)Q[2]=$[1],Q[3]=$[2],Q[4]=$[3]}let[W,Z]=ZT1(Q[1]||sQ,Q[2]);return $z(Y,Z,W,Q[3]?+Q[3]:void 0,Q[4]?+Q[4]:void 0)}};var v14=D(()=>{vq();bN0();Za5=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,Wa5=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,$a5=/\((\S*)(?::(\d+))(?::(\d+))\)/});var Ka5,Ha5,xN0=(X,Y)=>{let G=Ka5.exec(X);if(G){if(G[3]&&G[3].indexOf(" > eval")>-1){let Z=Ha5.exec(G[3]);if(Z)G[1]=G[1]||"eval",G[3]=Z[1],G[4]=Z[2],G[5]=""}let J=G[3],W=G[1]||sQ;return[W,J]=ZT1(W,J),$z(Y,J,W,G[4]?+G[4]:void 0,G[5]?+G[5]:void 0)}};var _14=D(()=>{vq();bN0();Ka5=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Ha5=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i});var Fa5,f14=(X,Y)=>{let G=Fa5.exec(X);return G?$z(Y,G[2],G[1]||sQ,+G[3],G[4]?+G[4]:void 0):void 0};var b14=D(()=>{vq();Fa5=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i});var Ua5,y14=(X,Y)=>{let G=Ua5.exec(X);return G?$z(Y,G[2],G[3]||sQ,+G[1]):void 0},Ba5,x14=(X,Y)=>{let G=Ba5.exec(X);return G?$z(Y,G[5],G[3]||G[4]||sQ,+G[1],+G[2]):void 0};var h14=D(()=>{vq();Ua5=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,Ba5=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i});function Oa5(X,Y=!1){return!(Y||X&&!X.startsWith("/")&&!X.match(/^[A-Z]:/)&&!X.startsWith(".")&&!X.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&X!==void 0&&!X.includes("node_modules/")}function g14(X){return parseInt(X||"",10)||void 0}var Na5,za5,u14=(X,Y)=>{let G=X.match(za5);if(G){let Q,J,W,Z,$;if(G[1]){W=G[1];let U=W.lastIndexOf(".");if(W[U-1]===".")U--;if(U>0){Q=W.slice(0,U),J=W.slice(U+1);let B=Q.indexOf(".Module");if(B>0)W=W.slice(B+1),Q=Q.slice(0,B)}Z=void 0}if(J)Z=Q,$=J;if(J==="<anonymous>")$=void 0,W=void 0;if(W===void 0)$=$||sQ,W=Z?`${Z}.${$}`:$;let K=G[2]?.startsWith("file://")?G[2].slice(7):G[2],H=G[5]==="native";if(K?.match(/\/[A-Z]:/))K=K.slice(1);if(!K&&G[5]&&!H)K=G[5];return{filename:K?decodeURI(K):void 0,module:void 0,function:W,lineno:g14(G[3]),colno:g14(G[4]),in_app:Oa5(K||"",H),platform:Y}}if(X.match(Na5))return{filename:X,platform:Y}};var l14=D(()=>{vq();Na5=/^\s*[-]{4,}$/,za5=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/});function c14(X){if(!X.length)return[];let Y=Array.from(X);return Y.reverse(),Y.slice(0,d14).map((G)=>({...G,filename:G.filename||Da5(Y).filename,function:G.function||sQ}))}function Da5(X){return X[X.length-1]||{}}function wa5(){return i14("web:javascript",yN0,xN0)}function i14(X,...Y){return(G,Q=0)=>{let J=[],W=G.split(`
|
|
1646
1646
|
`);for(let Z=Q;Z<W.length;Z++){let $=W[Z];if($.length>1024)continue;let K=m14.test($)?$.replace(m14,"$1"):$;if(!K.match(/\S*Error: /)){for(let H of Y){let U=H(K,X);if(U){J.push(U);break}}if(J.length>=d14)break}}return c14(J)}}var m14,d14=50;var p14=D(()=>{vq();v14();_14();b14();h14();l14();m14=/\(error: (.*)\)/});class n14{match(X){return this.isDOMException(X)||this.isDOMError(X)}coerce(X,Y){let G=kq(X.stack);return{type:this.getType(X),value:this.getValue(X),stack:G?X.stack:void 0,cause:X.cause?Y.next(X.cause):void 0,synthetic:!1}}getType(X){return this.isDOMError(X)?"DOMError":"DOMException"}getValue(X){let Y=X.name||(this.isDOMError(X)?"DOMError":"DOMException");return X.message?`${Y}: ${X.message}`:Y}isDOMException(X){return yj(X,"DOMException")}isDOMError(X){return yj(X,"DOMError")}}var a14=D(()=>{U3()});class t14{match(X){return qN0(X)}coerce(X,Y){return{type:this.getType(X),value:this.getMessage(X,Y),stack:this.getStack(X),cause:X.cause?Y.next(X.cause):void 0,synthetic:!1}}getType(X){return X.name||X.constructor.name}getMessage(X,Y){let G=X.message;if(G.error&&typeof G.error.message=="string")return String(G.error.message);return String(G)}getStack(X){return X.stacktrace||X.stack||void 0}}var r14=D(()=>{U3()});class o14{constructor(){}match(X){return X14(X)&&X.error!=null}coerce(X,Y){let G=Y.apply(X.error);if(!G)return{type:"ErrorEvent",value:X.message,stack:Y.syntheticException?.stack,synthetic:!0};return G}}var s14=D(()=>{U3()});class e14{match(X){return typeof X=="string"}coerce(X,Y){let[G,Q]=this.getInfos(X);return{type:G??"Error",value:Q??X,stack:Y.syntheticException?.stack,synthetic:!0}}getInfos(X){let Y="Error",G=X,Q=X.match(La5);if(Q)Y=Q[1],G=Q[2];return[Y,G]}}var La5;var X04=D(()=>{La5=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i});var Y04;var G04=D(()=>{Y04=["fatal","error","warning","log","info","debug"]});function WT1(X,Y=40){let G=Object.keys(X);if(G.sort(),!G.length)return"[object has no keys]";for(let Q=G.length;Q>0;Q--){let J=G.slice(0,Q).join(", ");if(!(J.length>Y)){if(Q===G.length)return J;return J.length<=Y?J:`${J.slice(0,Y)}...`}}return""}var hN0=()=>{};class Q04{match(X){return typeof X=="object"&&X!==null}coerce(X,Y){let G=this.getErrorPropertyFromObject(X);if(G)return Y.apply(G);return{type:this.getType(X),value:this.getValue(X),stack:Y.syntheticException?.stack,level:this.isSeverityLevel(X.level)?X.level:"error",synthetic:!0}}getType(X){return Zt(X)?X.constructor.name:"Error"}getValue(X){if("name"in X&&typeof X.name=="string"){let Q=`'${X.name}' captured as exception`;if("message"in X&&typeof X.message=="string")Q+=` with message: '${X.message}'`;return Q}if("message"in X&&typeof X.message=="string")return X.message;let Y=this.getObjectClassName(X),G=WT1(X);return`${Y&&Y!=="Object"?`'${Y}'`:"Object"} captured as exception with keys: ${G}`}isSeverityLevel(X){return kq(X)&&!ee6(X)&&Y04.indexOf(X)>=0}getErrorPropertyFromObject(X){for(let Y in X)if(Object.prototype.hasOwnProperty.call(X,Y)){let G=X[Y];if(E14(G))return G}}getObjectClassName(X){try{let Y=Object.getPrototypeOf(X);return Y?Y.constructor.name:void 0}catch(Y){return}}}var J04=D(()=>{U3();G04();hN0()});class Z04{match(X){return Zt(X)}coerce(X,Y){let G=X.constructor.name;return{type:G,value:`${G} captured as exception with keys: ${WT1(X)}`,stack:Y.syntheticException?.stack,synthetic:!0}}}var W04=D(()=>{U3();hN0()});class $04{match(X){return rA1(X)}coerce(X,Y){return{type:"Error",value:`Primitive value captured as exception: ${String(X)}`,stack:Y.syntheticException?.stack,synthetic:!0}}}var K04=D(()=>{U3()});class H04{match(X){return yj(X,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(X)}isCustomEventWrappingRejection(X){if(!Zt(X))return!1;try{let Y=X.detail;return Y!=null&&typeof Y=="object"&&"reason"in Y}catch{return!1}}coerce(X,Y){let G=this.getUnhandledRejectionReason(X);if(rA1(G))return{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(G)}`,stack:Y.syntheticException?.stack,synthetic:!0};return Y.apply(G)}getUnhandledRejectionReason(X){try{if("reason"in X)return X.reason;if("detail"in X&&X.detail!=null&&typeof X.detail=="object"&&"reason"in X.detail)return X.detail.reason}catch{}return X}}var F04=D(()=>{U3()});var U04=D(()=>{a14();r14();s14();X04();J04();W04();K04();F04()});class B04{constructor(X){this._maxSize=X,this._cache=new Map}get(X){let Y=this._cache.get(X);if(Y===void 0)return;return this._cache.delete(X),this._cache.set(X,Y),Y}set(X,Y){this._cache.set(X,Y)}reduce(){while(this._cache.size>=this._maxSize){let X=this._cache.keys().next().value;if(X)this._cache.delete(X)}}}var N04=()=>{};function gN0(X){if(!X)return{...$T1};return{enabled:X.enabled??$T1.enabled,max_bytes:qa5(X.max_bytes,$T1.max_bytes)}}function Pa5(X){if(!X)return{sanitizedProperties:{},droppedKeys:[]};let Y=[];return{sanitizedProperties:Object.keys(X).reduce((Q,J)=>{if(Ea5.has(J))return Y.push(J),Q;return Q[J]=X[J],Q},{}),droppedKeys:Y}}class z04{constructor(X){this._entries=[],this._totalBytes=0,this._config=gN0(X)}setConfig(X){this._config=gN0(X),this._trimToMaxBytes()}add(X){let Y=Aa5(X);if(!Y)return;let G=O04(Y.json);if(G>this._config.max_bytes)return;this._entries.push({step:Y.step,bytes:G}),this._totalBytes+=G,this._trimToMaxBytes()}getAttachable(){return this._entries.map((X)=>X.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){while(this._totalBytes>this._config.max_bytes&&this._entries.length>0){let X=this._entries.shift();if(X)this._totalBytes-=X.bytes}}}function qa5(X,Y){if(!lX1(X)||X===1/0||X===-1/0)return Y;let G=Math.floor(X);if(G<0)return Y;return G}function Aa5(X){let Y=Ta5(X);if(!Y)return;try{let G=JSON.parse(Y);if(!uX1(G))return;let Q=G,J=Q[nX1.MESSAGE],W=Q[nX1.TIMESTAMP];if(!kq(J)||J.trim().length===0)return;if(!kq(W)&&!lX1(W))return;return{step:Q,json:Y}}catch{return}}function Ta5(X){let Y=new WeakSet;try{return JSON.stringify(X,(G,Q)=>{if(typeof Q=="bigint")return Q.toString();if(typeof Q=="function"||typeof Q=="symbol")return;if(Q instanceof Date)return Q.toISOString();if(Q instanceof Error)return{name:Q.name,message:Q.message,stack:Q.stack};if(Q&&typeof Q=="object"){if(Y.has(Q))return"[Circular]";Y.add(Q)}return Q})}catch{return}}function O04(X){if(typeof TextEncoder<"u")return new TextEncoder().encode(X).length;let Y=encodeURIComponent(X),G=0;for(let Q=0;Q<Y.length;Q++)if(Y[Q]==="%")G+=1,Q+=2;else G+=1;return G}var nX1,Ea5,$T1;var D04=D(()=>{U3();nX1={MESSAGE:"$message",TIMESTAMP:"$timestamp"},Ea5=new Set([nX1.MESSAGE,nX1.TIMESTAMP]),$T1={enabled:!0,max_bytes:32768}});var qW={};j0(qW,{winjsStackLineParser:()=>f14,stripReservedExceptionStepFields:()=>Pa5,reverseAndStripFrames:()=>c14,resolveExceptionStepsConfig:()=>gN0,opera11StackLineParser:()=>x14,opera10StackLineParser:()=>y14,nodeStackLineParser:()=>u14,getUtf8ByteLength:()=>O04,geckoStackLineParser:()=>xN0,createStackParser:()=>i14,createDefaultStackParser:()=>wa5,chromeStackLineParser:()=>yN0,StringCoercer:()=>e14,ReduceableCache:()=>B04,PromiseRejectionEventCoercer:()=>H04,PrimitiveCoercer:()=>$04,ObjectCoercer:()=>Q04,ExceptionStepsBuffer:()=>z04,EventCoercer:()=>Z04,ErrorPropertiesBuilder:()=>k14,ErrorEventCoercer:()=>o14,ErrorCoercer:()=>t14,EXCEPTION_STEP_INTERNAL_FIELDS:()=>nX1,DOMExceptionCoercer:()=>n14,DEFAULT_EXCEPTION_STEPS_CONFIG:()=>$T1});var w04=D(()=>{C14();p14();U04();N04();D04()});var hj=D(()=>{pA1();EN0();CN0();P14();cX1();q14();w04();U3();V14();fN0();j14();bj()});import{createReadStream as Ia5}from"fs";import{createInterface as Va5}from"readline";async function q04(X){let Y={};for(let J=X.length-1;J>=0;J--){let W=X[J],Z=W?.filename;if(!W||typeof Z!="string"||typeof W.lineno!="number"||Ca5(Z)||va5(W))continue;if(!Y[Z])Y[Z]=[];Y[Z].push(W.lineno)}let G=Object.keys(Y);if(G.length==0)return X;let Q=[];for(let J of G){if(P04.get(J))continue;let W=Y[J];if(!W)continue;W.sort((K,H)=>K-H);let Z=fa5(W);if(Z.every((K)=>_a5(J,K)))continue;let $=ba5(KT1,J,{});Q.push(Ra5(J,Z,$))}if(await Promise.all(Q).catch(()=>{}),X&&X.length>0)Sa5(X,KT1);return KT1.reduce(),X}function Ra5(X,Y,G){return new Promise((Q)=>{let J=Ia5(X),W=Va5({input:J});function Z(){J.destroy(),Q()}let $=0,K=0,H=Y[K];if(H===void 0)return void Z();let U=H[0],B=H[1];function N(){P04.set(X,1),W.close(),W.removeAllListeners(),Z()}J.on("error",N),W.on("error",N),W.on("close",Z),W.on("line",(z)=>{if($++,$<U)return;if(G[$]=ya5(z,0),$>=B){if(K===Y.length-1){W.close(),W.removeAllListeners();return}K++;let O=Y[K];if(O===void 0){W.close(),W.removeAllListeners();return}U=O[0],B=O[1]}})})}function Sa5(X,Y){for(let G of X)if(G.filename&&G.context_line===void 0&&typeof G.lineno=="number"){let Q=Y.get(G.filename);if(Q===void 0)continue;ka5(G.lineno,G,Q)}}function ka5(X,Y,G){if(Y.lineno===void 0||G===void 0)return;Y.pre_context=[];for(let J=A04(X);J<X;J++){let W=G[J];if(W===void 0)return void L04(Y);Y.pre_context.push(W)}if(G[X]===void 0)return void L04(Y);Y.context_line=G[X];let Q=T04(X);Y.post_context=[];for(let J=X+1;J<=Q;J++){let W=G[J];if(W===void 0)break;Y.post_context.push(W)}}function L04(X){delete X.pre_context,delete X.context_line,delete X.post_context}function Ca5(X){return X.startsWith("node:")||X.endsWith(".min.js")||X.endsWith(".min.cjs")||X.endsWith(".min.mjs")||X.startsWith("data:")}function va5(X){if(X.lineno!==void 0&&X.lineno>Ma5)return!0;if(X.colno!==void 0&&X.colno>ja5)return!0;return!1}function _a5(X,Y){let G=KT1.get(X);if(G===void 0)return!1;for(let Q=Y[0];Q<=Y[1];Q++)if(G[Q]===void 0)return!1;return!0}function fa5(X){if(!X.length)return[];let Y=0,G=X[0];if(typeof G!="number")return[];let Q=E04(G),J=[];while(!0){if(Y===X.length-1){J.push(Q);break}let W=X[Y+1];if(typeof W!="number")break;if(W<=Q[1])Q[1]=W+uN0;else J.push(Q),Q=E04(W);Y++}return J}function E04(X){return[A04(X),T04(X)]}function A04(X){return Math.max(1,X-uN0)}function T04(X){return X+uN0}function ba5(X,Y,G){let Q=X.get(Y);if(Q===void 0)return X.set(Y,G),G;return Q}function ya5(X,Y){let G=X,Q=G.length;if(Q<=150)return G;if(Y>Q)Y=Q;let J=Math.max(Y-60,0);if(J<5)J=0;let W=Math.min(J+140,Q);if(W>Q-5)W=Q;if(W===Q)J=Math.max(W-140,0);if(G=G.slice(J,W),J>0)G=`...${G}`;if(W<Q)G+="...";return G}var KT1,P04,uN0=7,ja5=1000,Ma5=1e4;var I04=D(()=>{hj();KT1=new qW.ReduceableCache(25),P04=new qW.ReduceableCache(20)});import{isAbsolute as xa5,relative as ha5,sep as ga5}from"path";function V04(X=process.cwd()){let Y=ga5==="\\",G=(J)=>Y?J.replace(/\\/g,"/"):J,Q=G(X);return async(J)=>{for(let W of J)if(!(!W.filename||W.filename.startsWith("node:")||W.filename.startsWith("data:"))){if(xa5(W.filename))W.filename=G(ha5(Q,G(W.filename)))}return J}}var j04=()=>{};function ua5(X,Y){let G=!1;return Object.assign((Q)=>{let W=global.process.listeners("uncaughtException").filter((Z)=>Z.name!=="domainUncaughtExceptionClear"&&Z._posthogErrorHandler!==!0).length===0;if(X(Q,{mechanism:{type:"onuncaughtexception",handled:!1}}),!G&&W)G=!0,Y(Q)},{_posthogErrorHandler:!0})}function M04(X,Y){globalThis.process?.on("uncaughtException",ua5(X,Y))}function R04(X){globalThis.process?.on("unhandledRejection",(Y)=>X(Y,{mechanism:{type:"onunhandledrejection",handled:!1}}))}var S04=()=>{};class wH{constructor(X,Y,G){this.client=X,this._exceptionAutocaptureEnabled=Y.enableExceptionAutocapture||!1,this._logger=G,this._rateLimiter=new TN0({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(X){return uX1(X)&&"__posthog_previously_captured_error"in X&&X.__posthog_previously_captured_error===!0}static async buildEventMessage(X,Y,G,Q){let J={...Q},W=this.errorPropertiesBuilder.buildFromUnknown(X,Y);return W.$exception_list=await this.errorPropertiesBuilder.modifyFrames(W.$exception_list),{event:"$exception",distinctId:G,properties:{...W,...J},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){if(this.isEnabled())M04(this.onException.bind(this),this.onFatalError.bind(this)),R04(this.onException.bind(this))}onException(X,Y){this.client.addPendingPromise((async()=>{if(!wH.isPreviouslyCapturedError(X)){let G=await wH.buildEventMessage(X,Y),J=G.properties?.$exception_list[0]?.type??"Exception";if(this._rateLimiter.consumeRateLimit(J))return void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:J});return this.client.capture(G)}})())}async onFatalError(X){console.error(X),await this.client.shutdown(la5),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}}var la5=2000;var HT1=D(()=>{S04();hj()});var k04="5.30.6";var C04=()=>{};var aX1;var lN0=D(()=>{aX1={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"}});async function v04(X){let Y=globalThis.crypto?.subtle;if(!Y)throw Error("SubtleCrypto API not available");let G=await Y.digest("SHA-1",new TextEncoder().encode(X));return Array.from(new Uint8Array(G)).map((J)=>J.toString(16).padStart(2,"0")).join("")}var _04=()=>{};class mN0{constructor({pollingInterval:X,personalApiKey:Y,projectApiKey:G,timeout:Q,host:J,customHeaders:W,...Z}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=X,this.personalApiKey=Y,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=Q,this.projectApiKey=G,this.host=J,this.poller=void 0,this.fetch=Z.fetch||fetch,this.onError=Z.onError,this.customHeaders=W,this.onLoad=Z.onLoad,this.cacheProvider=Z.cacheProvider,this.strictLocalEvaluation=Z.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(X=!0){this.debugMode=X}logMsgIfDebug(X){if(this.debugMode)X()}createEvaluationContext(X,Y={},G={},Q={},J={}){return{distinctId:X,groups:Y,personProperties:G,groupProperties:Q,evaluationCache:J}}async getFeatureFlag(X,Y,G={},Q={},J={}){await this.loadFeatureFlags();let W,Z;if(!this.loadedSuccessfullyOnce)return W;if(Z=this.featureFlagsByKey[X],Z!==void 0){let $=this.createEvaluationContext(Y,G,Q,J);try{W=(await this.computeFlagAndPayloadLocally(Z,$)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${X} -> ${W}`))}catch(K){if(K instanceof Kz||K instanceof c5)this.logMsgIfDebug(()=>console.debug(`${K.name} when computing flag locally: ${X}: ${K.message}`));else if(K instanceof Error)this.onError?.(Error(`Error computing flag locally: ${X}: ${K}`))}}return W}async getAllFlagsAndPayloads(X,Y){await this.loadFeatureFlags();let G={},Q={},J=this.featureFlags.length==0,W=Y?Y.map(($)=>this.featureFlagsByKey[$]).filter(Boolean):this.featureFlags,Z={...X,evaluationCache:X.evaluationCache??{}};return await Promise.all(W.map(async($)=>{try{let{value:K,payload:H}=await this.computeFlagAndPayloadLocally($,Z);if(G[$.key]=K,H)Q[$.key]=H}catch(K){if(K instanceof Kz||K instanceof c5)this.logMsgIfDebug(()=>console.debug(`${K.name} when computing flag locally: ${$.key}: ${K.message}`));else if(K instanceof Error)this.onError?.(Error(`Error computing flag locally: ${$.key}: ${K}`));J=!0}})),{response:G,payloads:Q,fallbackToFlags:J}}async computeFlagAndPayloadLocally(X,Y,G={}){let{matchValue:Q,skipLoadCheck:J=!1}=G;if(!J)await this.loadFeatureFlags();if(!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let W;W=Q!==void 0?Q:await this.computeFlagValueLocally(X,Y);let Z=this.getFeatureFlagPayload(X.key,W);return{value:W,payload:Z}}async computeFlagValueLocally(X,Y){let{distinctId:G,groups:Q,personProperties:J,groupProperties:W}=Y;if(X.ensure_experience_continuity)throw new c5("Flag has experience continuity enabled");if(!X.active)return!1;let $=(X.filters||{}).aggregation_group_type_index;if($!=null){let K=this.groupTypeMapping[String($)];if(!K)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${$} for feature flag ${X.key}`)),new c5("Flag has unknown group type index");if(!(K in Q))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${X.key} without group names passed in`)),!1;if(X.bucketing_identifier==="device_id"&&(J?.$device_id===void 0||J?.$device_id===null||J?.$device_id===""))this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${X.key}`));let H=W[K];return await this.matchFeatureFlagProperties(X,Q[K],H,Y)}{let K=this.getBucketingValueForFlag(X,G,J);if(K===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${X.key} without $device_id, falling back to server evaluation`)),new c5(`Can't compute feature flag: ${X.key} without $device_id`);return await this.matchFeatureFlagProperties(X,K,J,Y)}}getBucketingValueForFlag(X,Y,G){if(X.filters?.aggregation_group_type_index!=null)return Y;if(X.bucketing_identifier==="device_id"){let Q=G?.$device_id;if(Q==null||Q==="")return;return Q}return Y}getFeatureFlagPayload(X,Y){let G=null;if(Y!==!1&&Y!=null){if(typeof Y=="boolean")G=this.featureFlagsByKey?.[X]?.filters?.payloads?.[Y.toString()]||null;else if(typeof Y=="string")G=this.featureFlagsByKey?.[X]?.filters?.payloads?.[Y]||null;if(G!=null){if(typeof G=="object")return G;if(typeof G=="string")try{return JSON.parse(G)}catch{}return G}}return null}async evaluateFlagDependency(X,Y,G){let{evaluationCache:Q}=G,J=X.key;if(!this.featureFlagsByKey)throw new c5("Feature flags not available for dependency evaluation");if(!("dependency_chain"in X))throw new c5(`Flag dependency property for '${J}' is missing required 'dependency_chain' field`);let W=X.dependency_chain;if(!Array.isArray(W))throw new c5(`Flag dependency property for '${J}' has an invalid 'dependency_chain' (expected array, got ${typeof W})`);if(W.length===0)throw new c5(`Circular dependency detected for flag '${J}' (empty dependency chain)`);for(let $ of W){if(!($ in Q)){let H=this.featureFlagsByKey[$];if(H)if(H.active)try{let U=await this.computeFlagValueLocally(H,G);Q[$]=U}catch(U){throw new c5(`Error evaluating flag dependency '${$}' for flag '${J}': ${U}`)}else Q[$]=!1;else throw new c5(`Missing flag dependency '${$}' for flag '${J}'`)}if(Q[$]==null)throw new c5(`Dependency '${$}' could not be evaluated`)}let Z=Q[J];return this.flagEvaluatesToExpectedValue(X.value,Z)}flagEvaluatesToExpectedValue(X,Y){if(typeof X=="boolean")return X===Y||typeof Y=="string"&&Y!==""&&X===!0;if(typeof X=="string")return Y===X;return!1}async matchFeatureFlagProperties(X,Y,G,Q){let J=X.filters||{},W=J.groups||[],Z=!1,$;for(let K of W)try{if(await this.isConditionMatch(X,Y,K,G,Q)){let H=K.variant,U=J.multivariate?.variants||[];$=H&&U.some((B)=>B.key===H)?H:await this.getMatchingVariant(X,Y)||!0;break}}catch(H){if(H instanceof Kz)throw H;if(H instanceof c5)Z=!0;else throw H}if($!==void 0)return $;if(Z)throw new c5("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(X,Y,G,Q,J){let W=G.rollout_percentage,Z=($)=>{this.logMsgIfDebug(()=>console.warn($))};if((G.properties||[]).length>0){for(let $ of G.properties){let K=$.type,H=!1;if(H=K==="cohort"?h04($,Q,this.cohorts,this.debugMode):K==="flag"?await this.evaluateFlagDependency($,Q,J):x04($,Q,Z),!H)return!1}if(W==null)return!0}if(W!=null&&await f04(X.key,Y)>W/100)return!1;return!0}async getMatchingVariant(X,Y){let G=await f04(X.key,Y,"variant"),Q=this.variantLookupTable(X).find((J)=>G>=J.valueMin&&G<J.valueMax);if(Q)return Q.key}variantLookupTable(X){let Y=[],G=0,Q=0;return((X.filters||{}).multivariate?.variants||[]).forEach((Z)=>{Q=G+Z.rollout_percentage/100,Y.push({valueMin:G,valueMax:Q,key:Z.key}),G=Q}),Y}updateFlagState(X){this.featureFlags=X.flags,this.featureFlagsByKey=X.flags.reduce((Y,G)=>(Y[G.key]=G,Y),{}),this.groupTypeMapping=X.groupTypeMapping,this.cohorts=X.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags(X){if(this.strictLocalEvaluation)return;let Y=X.filter((G)=>G.ensure_experience_continuity);if(Y.length>0)console.warn(`[PostHog] You are using local evaluation but ${Y.length} flag(s) have experience continuity enabled: ${Y.map((G)=>G.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(X){if(!this.cacheProvider)return!1;try{let Y=await this.cacheProvider.getFlagDefinitions();if(Y)return this.updateFlagState(Y),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${X} (${Y.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(Y.flags),!0;return!1}catch(Y){return this.onError?.(Error(`Failed to load from cache: ${Y}`)),!1}}async loadFeatureFlags(X=!1){if(this.loadedSuccessfullyOnce&&!X)return;if(!X&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt)return void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period"));if(!this.loadingPromise)this.loadingPromise=this._loadFeatureFlags().catch((Y)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${Y}`))).finally(()=>{this.loadingPromise=void 0});return this.loadingPromise}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){if(!this.shouldBeginExponentialBackoff)return this.pollingInterval;return Math.min(ma5,this.pollingInterval*2**this.backOffCount)}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){if(this.poller)clearTimeout(this.poller),this.poller=void 0;this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let X=!0;if(this.cacheProvider)try{X=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(G){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${G}`))}if(!X){if(await this.loadFromCache("Loaded flags from cache (skipped fetch)"))return;if(this.loadedSuccessfullyOnce)return}let Y=await this._requestFeatureFlagDefinitions();if(!Y)return;switch(Y.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=Y.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new Ht(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new Ht(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new Ht(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let G=await Y.json()??{};if(!("flags"in G))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(G)}`));this.flagsEtag=Y.headers?.get("ETag")??void 0;let Q={flags:G.flags??[],groupTypeMapping:G.group_type_mapping||{},cohorts:G.cohorts||{}};if(this.updateFlagState(Q),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&X)try{await this.cacheProvider.onFlagDefinitionsReceived(Q)}catch(J){this.onError?.(Error(`Failed to store in cache: ${J}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(Q.flags);break}default:return}}catch(X){if(X instanceof Ht)this.onError?.(X)}}getPersonalApiKeyRequestOptions(X="GET",Y){let G={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};if(Y)G["If-None-Match"]=Y;return{method:X,headers:G}}_requestFeatureFlagDefinitions(){let X=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,Y=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),G=null;if(this.timeout&&typeof this.timeout=="number"){let Q=new AbortController;G=Ow(()=>{Q.abort()},this.timeout),Y.signal=Q.signal}try{let Q=this.fetch;return Q(X,Y)}finally{clearTimeout(G)}}async stopPoller(X=30000){if(clearTimeout(this.poller),this.cacheProvider)try{let Y=this.cacheProvider.shutdown();if(Y instanceof Promise)await Promise.race([Y,new Promise((G,Q)=>setTimeout(()=>Q(Error(`Cache shutdown timeout after ${X}ms`)),X))])}catch(Y){this.onError?.(Error(`Error during cache shutdown: ${Y}`))}}}async function f04(X,Y,G=""){let Q=await v04(`${X}.${Y}${G}`);return parseInt(Q.slice(0,15),16)/da5}function x04(X,Y,G){let{key:Q,value:J}=X,W=X.operator||"exact";if(Q in Y){if(W==="is_not_set")throw new c5("Operator is_not_set is not supported")}else throw new c5(`Property ${Q} not found in propertyValues`);let Z=Y[Q];if(Z==null&&!ca5.includes(W)){if(G)G(`Property ${Q} cannot have a value of null/undefined with the ${W} operator`);return!1}function $(H,U){if(Array.isArray(H))return H.map((B)=>String(B).toLowerCase()).includes(String(U).toLowerCase());return String(H).toLowerCase()===String(U).toLowerCase()}function K(H,U,B){if(B==="gt")return H>U;if(B==="gte")return H>=U;if(B==="lt")return H<U;if(B==="lte")return H<=U;throw Error(`Invalid operator: ${B}`)}switch(W){case"exact":return $(J,Z);case"is_not":return!$(J,Z);case"is_set":return Q in Y;case"icontains":return String(Z).toLowerCase().includes(String(J).toLowerCase());case"not_icontains":return!String(Z).toLowerCase().includes(String(J).toLowerCase());case"regex":return b04(String(J))&&String(Z).match(String(J))!==null;case"not_regex":return b04(String(J))&&String(Z).match(String(J))===null;case"gt":case"gte":case"lt":case"lte":{let H=typeof J=="number"?J:null;if(typeof J=="string")try{H=parseFloat(J)}catch(U){}if(H==null||Z==null)return K(String(Z),String(J),W);if(typeof Z=="string")return K(Z,String(J),W);return K(Z,H,W)}case"is_date_after":case"is_date_before":{if(typeof J=="boolean")throw new c5("Date operations cannot be performed on boolean values");let H=ta5(String(J));if(H==null)H=y04(J);if(H==null)throw new c5(`Invalid date: ${J}`);let U=y04(Z);if(["is_date_before"].includes(W))return U<H;return U>H}case"semver_eq":return LH(eQ(String(Z)),eQ(String(J)))===0;case"semver_neq":return LH(eQ(String(Z)),eQ(String(J)))!==0;case"semver_gt":return LH(eQ(String(Z)),eQ(String(J)))>0;case"semver_gte":return LH(eQ(String(Z)),eQ(String(J)))>=0;case"semver_lt":return LH(eQ(String(Z)),eQ(String(J)))<0;case"semver_lte":return LH(eQ(String(Z)),eQ(String(J)))<=0;case"semver_tilde":{let H=eQ(String(Z)),{lower:U,upper:B}=pa5(String(J));return LH(H,U)>=0&&LH(H,B)<0}case"semver_caret":{let H=eQ(String(Z)),{lower:U,upper:B}=na5(String(J));return LH(H,U)>=0&&LH(H,B)<0}case"semver_wildcard":{let H=eQ(String(Z)),{lower:U,upper:B}=aa5(String(J));return LH(H,U)>=0&&LH(H,B)<0}default:throw new c5(`Unknown operator: ${W}`)}}function ia5(X,Y){if(!(X in Y))throw new Kz(`cohort ${X} not found in local cohorts - likely a static cohort that requires server evaluation`)}function h04(X,Y,G,Q=!1){let J=String(X.value);ia5(J,G);let W=G[J];return g04(W,Y,G,Q)}function g04(X,Y,G,Q=!1){if(!X)return!0;let{type:J,values:W}=X;if(!W||W.length===0)return!0;let Z=!1;if("values"in W[0]){for(let $ of W)try{let K=g04($,Y,G,Q);if(J==="AND"){if(!K)return!1}else if(K)return!0}catch(K){if(K instanceof Kz)throw K;if(K instanceof c5){if(Q)console.debug(`Failed to compute property ${$} locally: ${K}`);Z=!0}else throw K}if(Z)throw new c5("Can't match cohort without a given cohort property value");return J==="AND"}for(let $ of W)try{let K;if($.type==="cohort")K=h04($,Y,G,Q);else if($.type==="flag"){if(Q)console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${$.key||"unknown"}'`);continue}else K=x04($,Y);let H=$.negation||!1;if(J==="AND"){if(!K&&!H)return!1;if(K&&H)return!1}else{if(K&&!H)return!0;if(!K&&H)return!0}}catch(K){if(K instanceof Kz)throw K;if(K instanceof c5){if(Q)console.debug(`Failed to compute property ${$} locally: ${K}`);Z=!0}else throw K}if(Z)throw new c5("can't match cohort without a given cohort property value");return J==="AND"}function b04(X){try{return new RegExp(X),!0}catch(Y){return!1}}function eQ(X){let G=String(X).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!G||G.startsWith("."))throw new c5(`Invalid semver: ${X}`);let Q=G.split("."),J=(K)=>{if(K===void 0||K==="")return 0;if(!/^\d+$/.test(K))throw new c5(`Invalid semver: ${X}`);return parseInt(K,10)},W=J(Q[0]),Z=J(Q[1]),$=J(Q[2]);return[W,Z,$]}function LH(X,Y){for(let G=0;G<3;G++){if(X[G]<Y[G])return-1;if(X[G]>Y[G])return 1}return 0}function pa5(X){let Y=eQ(X),G=[Y[0],Y[1],Y[2]],Q=[Y[0],Y[1]+1,0];return{lower:G,upper:Q}}function na5(X){let Y=eQ(X),[G,Q,J]=Y,W=[G,Q,J],Z;return Z=G>0?[G+1,0,0]:Q>0?[0,Q+1,0]:[0,0,J+1],{lower:W,upper:Z}}function aa5(X){let G=String(X).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!G)throw new c5(`Invalid wildcard semver: ${X}`);let Q=G.split("."),J=parseInt(Q[0],10);if(isNaN(J))throw new c5(`Invalid wildcard semver: ${X}`);let W,Z;if(Q.length===1)W=[J,0,0],Z=[J+1,0,0];else{let $=parseInt(Q[1],10);if(isNaN($))throw new c5(`Invalid wildcard semver: ${X}`);W=[J,$,0],Z=[J,$+1,0]}return{lower:W,upper:Z}}function y04(X){if(X instanceof Date)return X;if(typeof X=="string"||typeof X=="number"){let Y=new Date(X);if(!isNaN(Y.valueOf()))return Y;throw new c5(`${X} is in an invalid date format`)}throw new c5(`The date provided ${X} must be a string, number, or date object`)}function ta5(X){let Y=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,G=X.match(Y),Q=new Date(new Date().toISOString());if(!G)return null;{if(!G.groups)return null;let J=parseInt(G.groups.number);if(J>=1e4)return null;let W=G.groups.interval;if(W=="h")Q.setUTCHours(Q.getUTCHours()-J);else if(W=="d")Q.setUTCDate(Q.getUTCDate()-J);else if(W=="w")Q.setUTCDate(Q.getUTCDate()-7*J);else if(W=="m")Q.setUTCMonth(Q.getUTCMonth()-J);else{if(W!="y")return null;Q.setUTCFullYear(Q.getUTCFullYear()-J)}return Q}}var ma5=60000,da5=1152921504606847000,ca5,Ht,c5,Kz;var u04=D(()=>{hj();_04();ca5=["is_not"];Ht=class Ht extends Error{constructor(X){super();Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=X,Object.setPrototypeOf(this,Ht.prototype)}};c5=class c5 extends Error{constructor(X){super(X);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,c5.prototype)}};Kz=class Kz extends Error{constructor(X){super(X);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,Kz.prototype)}}});class dN0{getProperty(X){return this._memoryStorage[X]}setProperty(X,Y){this._memoryStorage[X]=Y!==null?Y:void 0}constructor(){this._memoryStorage={}}}var l04=()=>{};function Yt5(X){return typeof X=="string"?X.trim():""}function Gt5(X){return(typeof X=="string"?X.trim():"")||void 0}function Qt5(X){return(typeof X=="string"?X.trim():"")||Xt5}var ra5=100,m04=30000,oa5=50000,sa5=50,ea5=500,Xt5="https://us.i.posthog.com",cN0;var d04=D(()=>{C04();hj();lN0();u04();HT1();l04();cN0=class cN0 extends GT1{constructor(X,Y={}){let G=Yt5(X),Q={...Y,host:Qt5(Y.host),personalApiKey:Gt5(Y.personalApiKey)};if(super(G,Q),this._memoryStorage=new dN0,this.options=Q,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof Q.featureFlagsPollingInterval=="number"?Math.max(Q.featureFlagsPollingInterval,ra5):m04,typeof Q.waitUntilDebounceMs=="number")this.options.waitUntilDebounceMs=Math.max(Q.waitUntilDebounceMs,0);if(typeof Q.waitUntilMaxWaitMs=="number")this.options.waitUntilMaxWaitMs=Math.max(Q.waitUntilMaxWaitMs,0);if(Q.personalApiKey){if(Q.personalApiKey.includes("phc_"))throw Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');if(Q.enableLocalEvaluation!==!1)this.featureFlagsPoller=new mN0({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:Q.personalApiKey,projectApiKey:G,timeout:Q.requestTimeout??1e4,host:this.host,fetch:Q.fetch,onError:(W)=>{this._events.emit("error",W)},onLoad:(W)=>{this._events.emit("localEvaluationFlagsLoaded",W)},customHeaders:this.getCustomHeaders(),cacheProvider:Q.flagDefinitionCacheProvider,strictLocalEvaluation:Q.strictLocalEvaluation})}this.errorTracking=new wH(this,Q,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=Q.maxCacheSize||oa5}enqueue(X,Y,G){super.enqueue(X,Y,G),this.scheduleDebouncedFlush()}async flush(){let X=super.flush(),Y=this.options.waitUntil;if(Y&&!this._waitUntilCycle)try{Y(X.catch(()=>{}))}catch{}return X}scheduleDebouncedFlush(){let X=this.options.waitUntil;if(!X)return;if(this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let W,Z=new Promise(($)=>{W=$});try{X(Z)}catch{return}this._waitUntilCycle={resolve:W,startedAt:Date.now(),timer:void 0}}let Y=Date.now()-this._waitUntilCycle.startedAt,G=this.options.waitUntilMaxWaitMs??ea5,Q=Y>=G;if(this._waitUntilCycle.timer!==void 0)clearTimeout(this._waitUntilCycle.timer);if(Q)return void this.resolveWaitUntilFlush();let J=this.options.waitUntilDebounceMs??sa5;this._waitUntilCycle.timer=Ow(()=>{this.resolveWaitUntilFlush()},J)}_consumeWaitUntilCycle(){let X=this._waitUntilCycle;if(X)clearTimeout(X.timer),this._waitUntilCycle=void 0;return X?.resolve}async resolveWaitUntilFlush(){let X=this._consumeWaitUntilCycle();try{await super.flush()}catch{}finally{X?.()}}getPersistedProperty(X){return this._memoryStorage.getProperty(X)}setPersistedProperty(X,Y){return this._memoryStorage.setProperty(X,Y)}fetch(X,Y){return this.options.fetch?this.options.fetch(X,Y):fetch(X,Y)}getLibraryVersion(){return k04}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(X=!0){super.debug(X),this.featureFlagsPoller?.debug(X)}capture(X){if(typeof X=="string")this._logger.warn("Called capture() with a string as the first argument when an object was expected.");if(X.event==="$exception"&&!X._originatedFromCaptureException)this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically.");this.addPendingPromise(this.prepareEventMessage(X).then(({distinctId:Y,event:G,properties:Q,options:J})=>super.captureStateless(Y,G,Q,{timestamp:J.timestamp,disableGeoip:J.disableGeoip,uuid:J.uuid})).catch((Y)=>{if(Y)console.error(Y)}))}async captureImmediate(X){if(typeof X=="string")this._logger.warn("Called captureImmediate() with a string as the first argument when an object was expected.");if(X.event==="$exception"&&!X._originatedFromCaptureException)this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default.");return this.addPendingPromise(this.prepareEventMessage(X).then(({distinctId:Y,event:G,properties:Q,options:J})=>super.captureStatelessImmediate(Y,G,Q,{timestamp:J.timestamp,disableGeoip:J.disableGeoip,uuid:J.uuid})).catch((Y)=>{if(Y)console.error(Y)}))}identify({distinctId:X,properties:Y={},disableGeoip:G}){let{$set:Q,$set_once:J,$anon_distinct_id:W,...Z}=Y,H={$set:Q||Z,$set_once:J||{},$anon_distinct_id:W??void 0};super.identifyStateless(X,H,{disableGeoip:G})}async identifyImmediate({distinctId:X,properties:Y={},disableGeoip:G}){let{$set:Q,$set_once:J,$anon_distinct_id:W,...Z}=Y,H={$set:Q||Z,$set_once:J||{},$anon_distinct_id:W??void 0};super.identifyStatelessImmediate(X,H,{disableGeoip:G})}alias(X){super.aliasStateless(X.alias,X.distinctId,void 0,{disableGeoip:X.disableGeoip})}async aliasImmediate(X){await super.aliasStatelessImmediate(X.alias,X.distinctId,void 0,{disableGeoip:X.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(X=m04){if(this.isLocalEvaluationReady())return!0;if(this.featureFlagsPoller===void 0)return!1;return new Promise((Y)=>{let G=setTimeout(()=>{Q(),Y(!1)},X),Q=this._events.on("localEvaluationFlagsLoaded",(J)=>{clearTimeout(G),Q(),Y(J>0)})})}_resolveDistinctId(X,Y){if(typeof X=="string")return{distinctId:X,options:Y};return{distinctId:this.context?.get()?.distinctId,options:X}}async _getFeatureFlagResult(X,Y,G={},Q){let J=G.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&X in this._flagOverrides){let V=this._flagOverrides[X];if(V===void 0)return;let R=this._payloadOverrides?.[X];return{key:X,enabled:V!==!1,variant:typeof V=="string"?V:void 0,payload:R}}let{groups:W,disableGeoip:Z}=G,{onlyEvaluateLocally:$,personProperties:K,groupProperties:H}=G,U=this.addLocalPersonAndGroupProperties(Y,W,K,H);K=U.allPersonProperties,H=U.allGroupProperties;let B=this.createFeatureFlagEvaluationContext(Y,W,K,H);if($==null)$=this.options.strictLocalEvaluation??!1;let N,z=!1,O,w,E,P,q,j;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let V=this.featureFlagsPoller?.featureFlagsByKey[X];if(V)try{let R=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(V,B,{matchValue:Q});if(R){z=!0;let C=R.value;P=V.id,j="Evaluated locally",N={key:X,enabled:C!==!1,variant:typeof C=="string"?C:void 0,payload:R.payload??void 0}}}catch(R){if(R instanceof Kz||R instanceof c5)this._logger?.info(`${R.name} when computing flag locally: ${X}: ${R.message}`);else throw R}}if(!z&&!$){let V=await super.getFeatureFlagDetailsStateless(B.distinctId,B.groups,B.personProperties,B.groupProperties,Z,[X]);if(V===void 0)E=aX1.UNKNOWN_ERROR;else{O=V.requestId,w=V.evaluatedAt;let R=[];if(V.errorsWhileComputingFlags)R.push(aX1.ERRORS_WHILE_COMPUTING);if(V.quotaLimited?.includes("feature_flags"))R.push(aX1.QUOTA_LIMITED);let C=V.flags[X];if(C===void 0)R.push(aX1.FLAG_MISSING);else{P=C.metadata?.id,q=C.metadata?.version,j=C.reason?.description??C.reason?.code;let _;if(C.metadata?.payload!==void 0)try{_=JSON.parse(C.metadata.payload)}catch{_=C.metadata.payload}N={key:X,enabled:C.enabled,variant:C.variant,payload:_}}if(R.length>0)E=R.join(",")}}if(J){let V=N===void 0?void 0:N.enabled===!1?!1:N.variant??!0,R=`${X}_${V}`;if(!(Y in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[Y].includes(R)){if(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize)this.distinctIdHasSentFlagCalls={};if(Array.isArray(this.distinctIdHasSentFlagCalls[Y]))this.distinctIdHasSentFlagCalls[Y].push(R);else this.distinctIdHasSentFlagCalls[Y]=[R];let C={$feature_flag:X,$feature_flag_response:V,$feature_flag_id:P,$feature_flag_version:q,$feature_flag_reason:j,locally_evaluated:z,[`$feature/${X}`]:V,$feature_flag_request_id:O,$feature_flag_evaluated_at:z?Date.now():w};if(z&&this.featureFlagsPoller){let _=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();if(_!==void 0)C.$feature_flag_definitions_loaded_at=_}if(E)C.$feature_flag_error=E;this.capture({distinctId:Y,event:"$feature_flag_called",properties:C,groups:W,disableGeoip:Z})}}if(N!==void 0&&this._payloadOverrides!==void 0&&X in this._payloadOverrides)N={...N,payload:this._payloadOverrides[X]};return N}async getFeatureFlag(X,Y,G){let Q=await this._getFeatureFlagResult(X,Y,{...G,sendFeatureFlagEvents:G?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(Q===void 0)return;if(Q.enabled===!1)return!1;return Q.variant??!0}async getFeatureFlagPayload(X,Y,G,Q){if(this._payloadOverrides!==void 0&&X in this._payloadOverrides)return this._payloadOverrides[X];let J=await this._getFeatureFlagResult(X,Y,{...Q,sendFeatureFlagEvents:!1},G);if(J===void 0)return;return J.payload??null}async getFeatureFlagResult(X,Y,G){let{distinctId:Q,options:J}=this._resolveDistinctId(Y,G);if(!Q)return void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()");return this._getFeatureFlagResult(X,Q,{...J,sendFeatureFlagEvents:J?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0})}async getRemoteConfigPayload(X){if(!this.options.personalApiKey)throw Error("Personal API key is required for remote config payload decryption");let Y=await this._requestRemoteConfigPayload(X);if(!Y)return;let G=await Y.json();if(typeof G=="string")try{return JSON.parse(G)}catch(Q){}return G}async isFeatureEnabled(X,Y,G){let Q=await this.getFeatureFlag(X,Y,G);if(Q===void 0)return;return!!Q||!1}async getAllFlags(X,Y){let{distinctId:G,options:Q}=this._resolveDistinctId(X,Y);if(!G)return this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{};return(await this.getAllFlagsAndPayloads(G,Q)).featureFlags||{}}async getAllFlagsAndPayloads(X,Y){let{distinctId:G,options:Q}=this._resolveDistinctId(X,Y);if(!G)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};let{groups:J,disableGeoip:W,flagKeys:Z}=Q||{},{onlyEvaluateLocally:$,personProperties:K,groupProperties:H}=Q||{},U=this.addLocalPersonAndGroupProperties(G,J,K,H);K=U.allPersonProperties,H=U.allGroupProperties;let B=this.createFeatureFlagEvaluationContext(G,J,K,H);if($==null)$=this.options.strictLocalEvaluation??!1;let N=await this.featureFlagsPoller?.getAllFlagsAndPayloads(B,Z),z={},O={},w=!0;if(N)z=N.response,O=N.payloads,w=N.fallbackToFlags;if(w&&!$){let E=await super.getFeatureFlagsAndPayloadsStateless(B.distinctId,B.groups,B.personProperties,B.groupProperties,W,Z);z={...z,...E.flags||{}},O={...O,...E.payloads||{}}}if(this._flagOverrides!==void 0)z={...z,...this._flagOverrides};if(this._payloadOverrides!==void 0)O={...O,...this._payloadOverrides};return{featureFlags:z,featureFlagPayloads:O}}groupIdentify({groupType:X,groupKey:Y,properties:G,distinctId:Q,disableGeoip:J}){super.groupIdentifyStateless(X,Y,G,{disableGeoip:J},Q)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(X){let Y=(G)=>Object.fromEntries(G.map((Q)=>[Q,!0]));if(X===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(X)){this._flagOverrides=Y(X);return}if(this._isFeatureFlagOverrideOptions(X)){if("flags"in X){if(X.flags===!1)this._flagOverrides=void 0;else if(Array.isArray(X.flags))this._flagOverrides=Y(X.flags);else if(X.flags!==void 0)this._flagOverrides={...X.flags}}if("payloads"in X){if(X.payloads===!1)this._payloadOverrides=void 0;else if(X.payloads!==void 0)this._payloadOverrides={...X.payloads}}return}this._flagOverrides={...X}}_isFeatureFlagOverrideOptions(X){if(typeof X!="object"||X===null||Array.isArray(X))return!1;let Y=X;if("flags"in Y){let G=Y.flags;if(G===!1||Array.isArray(G)||typeof G=="object"&&G!==null)return!0}if("payloads"in Y){let G=Y.payloads;if(G===!1||typeof G=="object"&&G!==null)return!0}return!1}withContext(X,Y,G){if(!this.context)return Y();return this.context.run(X,Y,G)}getContext(){return this.context?.get()}enterContext(X,Y){this.context?.enter(X,Y)}async _shutdown(X){let Y=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(X),this.errorTracking.shutdown();try{return await super._shutdown(X)}finally{Y?.()}}async _requestRemoteConfigPayload(X){if(!this.options.personalApiKey)return;let Y=`${this.host}/api/projects/@current/feature_flags/${X}/remote_config?token=${encodeURIComponent(this.apiKey)}`,G={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},Q=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let J=new AbortController;Q=Ow(()=>{J.abort()},this.options.requestTimeout),G.signal=J.signal}try{return await this.fetch(Y,G)}catch(J){this._events.emit("error",J);return}finally{if(Q)clearTimeout(Q)}}extractPropertiesFromEvent(X,Y){if(!X)return{personProperties:{},groupProperties:{}};let G={},Q={};for(let[J,W]of Object.entries(X))if(Y14(W)&&Y&&J in Y){let Z={};for(let[$,K]of Object.entries(W))Z[String($)]=String(K);Q[String(J)]=Z}else G[String(J)]=String(W);return{personProperties:G,groupProperties:Q}}async getFeatureFlagsForEvent(X,Y,G,Q){let J=Q?.personProperties||{},W=Q?.groupProperties||{},Z=Q?.flagKeys;if(Q?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if(!((this.featureFlagsPoller?.featureFlags?.length||0)>0))return{};else{let K={};for(let[H,U]of Object.entries(Y||{}))K[H]=String(U);return await this.getAllFlags(X,{groups:K,personProperties:J,groupProperties:W,disableGeoip:G,onlyEvaluateLocally:!0,flagKeys:Z})}if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let K={};for(let[H,U]of Object.entries(Y||{}))K[H]=String(U);return await this.getAllFlags(X,{groups:K,personProperties:J,groupProperties:W,disableGeoip:G,onlyEvaluateLocally:!0,flagKeys:Z})}return(await super.getFeatureFlagsStateless(X,Y,J,W,G)).flags}addLocalPersonAndGroupProperties(X,Y,G,Q){let J={distinct_id:X,...G||{}},W={};if(Y)for(let Z of Object.keys(Y))W[Z]={$group_key:Y[Z],...Q?.[Z]||{}};return{allPersonProperties:J,allGroupProperties:W}}createFeatureFlagEvaluationContext(X,Y,G,Q){return{distinctId:X,groups:Y||{},personProperties:G||{},groupProperties:Q||{},evaluationCache:{}}}captureException(X,Y,G,Q){if(!wH.isPreviouslyCapturedError(X)){let J=Error("PostHog syntheticException");this.addPendingPromise(wH.buildEventMessage(X,{syntheticException:J},Y,G).then((W)=>this.capture({...W,uuid:Q})))}}async captureExceptionImmediate(X,Y,G){if(!wH.isPreviouslyCapturedError(X)){let Q=Error("PostHog syntheticException");return this.addPendingPromise(wH.buildEventMessage(X,{syntheticException:Q},Y,G).then((J)=>this.captureImmediate(J)))}}async prepareEventMessage(X){let{distinctId:Y,event:G,properties:Q,groups:J,sendFeatureFlags:W,timestamp:Z,disableGeoip:$,uuid:K}=X,H=this.context?.get(),U=Y||H?.distinctId,B={...this.props,...H?.properties||{},...Q||{}};if(!U)U=Cq(),B.$process_person_profile=!1;if(H?.sessionId&&!B.$session_id)B.$session_id=H.sessionId;let N=this._runBeforeSend({distinctId:U,event:G,properties:B,groups:J,sendFeatureFlags:W,timestamp:Z,disableGeoip:$,uuid:K});if(!N)return Promise.reject(null);let z=await Promise.resolve().then(async()=>{if(W){let O=typeof W=="object"?W:void 0;return await this.getFeatureFlagsForEvent(N.distinctId,J,$,O)}return N.event,{}}).then((O)=>{let w={};if(O)for(let[P,q]of Object.entries(O))w[`$feature/${P}`]=q;let E=Object.keys(O||{}).filter((P)=>O?.[P]!==!1).sort();if(E.length>0)w.$active_feature_flags=E;return w}).catch(()=>({})).then((O)=>{return{...O,...N.properties||{},$groups:N.groups||J}});if(N.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof z.$raw_user_agent=="string"){if(re6(z.$raw_user_agent,this.options.custom_blocked_useragents||[]))N.event="$bot_pageview",z.$browser_type="bot"}return{distinctId:N.distinctId,event:N.event,properties:z,options:{timestamp:N.timestamp,disableGeoip:N.disableGeoip,uuid:N.uuid}}}_runBeforeSend(X){let Y=this.options.before_send;if(!Y)return X;let G=Array.isArray(Y)?Y:[Y],Q=X;for(let J of G){if(Q=J(Q),!Q)return this._logger.info(`Event '${X.event}' was rejected in beforeSend function`),null;if(!Q.properties||Object.keys(Q.properties).length===0){let W=`Event '${Q.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(W)}}return Q}}});import{AsyncLocalStorage as Jt5}from"async_hooks";class iN0{constructor(){this.storage=new Jt5}get(){return this.storage.getStore()}run(X,Y,G){return this.storage.run(this.resolve(X,G),Y)}enter(X,Y){this.storage.enterWith(this.resolve(X,Y))}resolve(X,Y){if(Y?.fresh===!0)return X;let G=this.get()||{};return{distinctId:X.distinctId??G.distinctId,sessionId:X.sessionId??G.sessionId,properties:{...G.properties||{},...X.properties||{}}}}}var c04=()=>{};function Zt5(X,{organization:Y,projectId:G,prefix:Q,severityAllowList:J=["error"],sendExceptionsToPostHog:W=!0}={}){return(Z)=>{if(!(J==="*"||J.includes(Z.level)))return Z;if(!Z.tags)Z.tags={};let K=Z.tags[i04.POSTHOG_ID_TAG];if(K===void 0)return Z;let H=X.options.host??"https://us.i.posthog.com",U=new URL(`/project/${X.apiKey}/person/${K}`,H).toString();Z.tags["PostHog Person URL"]=U;let B=Z.exception?.values||[],N=B.map((O)=>({...O,stacktrace:O.stacktrace?{...O.stacktrace,type:"raw",frames:(O.stacktrace.frames||[]).map((w)=>({...w,platform:"node:javascript"}))}:void 0})),z={$exception_message:B[0]?.value||Z.message,$exception_type:B[0]?.type,$exception_level:Z.level,$exception_list:N,$sentry_event_id:Z.event_id,$sentry_exception:Z.exception,$sentry_exception_message:B[0]?.value||Z.message,$sentry_exception_type:B[0]?.type,$sentry_tags:Z.tags};if(Y&&G)z.$sentry_url=(Q||"https://sentry.io/organizations/")+Y+"/issues/?project="+G+"&query="+Z.event_id;if(W)X.capture({event:"$exception",distinctId:K,properties:z});return Z}}var i04;var p04=D(()=>{i04=class i04{static#X=this.POSTHOG_ID_TAG="posthog_distinct_id";constructor(X,Y,G,Q,J){this.name="posthog-node",this.name="posthog-node",this.setupOnce=function(W,Z){let $=Z()?.getClient()?.getDsn()?.projectId;W(Zt5(X,{organization:Y,projectId:$,prefix:G,severityAllowList:Q,sendExceptionsToPostHog:J??!0}))}}}});var n04=D(()=>{HT1()});var a04=D(()=>{hj();p04();n04();lN0()});var pN0;var t04=D(()=>{pe6();I04();j04();HT1();d04();hj();c04();a04();wH.errorPropertiesBuilder=new qW.ErrorPropertiesBuilder([new qW.EventCoercer,new qW.ErrorCoercer,new qW.ObjectCoercer,new qW.StringCoercer,new qW.PrimitiveCoercer],qW.createStackParser("node:javascript",qW.nodeStackLineParser),[ie6(),q04,V04()]);pN0=class pN0 extends cN0{getLibraryId(){return"posthog-node"}initializeContext(){return new iN0}}});function Wt5(){return{capture:()=>{},identify:()=>{},captureException:()=>{},groupIdentify:()=>{},shutdown:async()=>{}}}var nN0,r04,j4;var RX=D(()=>{t04();nN0=process.env.POSTHOG_KEY,r04=process.env.POSTHOG_HOST;j4=nN0?new pN0(nN0,{...r04?{host:r04}:{},enableExceptionAutocapture:!0,flushAt:1,flushInterval:0}):Wt5();if(nN0){let X=()=>{j4.shutdown().catch(()=>{})};process.on("SIGTERM",X),process.on("SIGINT",X)}});function l$(){let X=R6();if(X.baseUrl)return X.baseUrl;return`http://localhost:${X.port??3000}`}function tX1(){return`http://localhost:${R6().port??3000}`}var Dw=D(()=>{C9()});var o04=D(()=>{uV()});function s04(X){return{organizationId:X.organization_id,domain:X.domain,autoJoinEnabled:X.auto_join_enabled,createdAt:X.created_at,updatedAt:X.updated_at}}class ww{db;constructor(X){this.db=X}async getByDomain(X){let Y=await this.db.selectFrom("organization_domains").selectAll().where("domain","=",X.toLowerCase()).executeTakeFirst();return Y?s04(Y):null}async getByOrganizationId(X){let Y=await this.db.selectFrom("organization_domains").selectAll().where("organization_id","=",X).executeTakeFirst();return Y?s04(Y):null}async setDomain(X,Y,G=!1){let Q=new Date().toISOString(),J=Y.toLowerCase();try{await this.db.insertInto("organization_domains").values({organization_id:X,domain:J,auto_join_enabled:G,created_at:Q,updated_at:Q}).onConflict((Z)=>Z.column("organization_id").doUpdateSet({domain:J,auto_join_enabled:G,updated_at:Q})).execute()}catch(Z){if(Z.code==="23505")throw Error(`Domain "${J}" is already claimed by another organization.`);throw Z}let W=await this.getByOrganizationId(X);if(!W)throw Error("Failed to set domain");return W}async updateAutoJoin(X,Y){let G=new Date().toISOString();await this.db.updateTable("organization_domains").set({auto_join_enabled:Y,updated_at:G}).where("organization_id","=",X).execute();let Q=await this.getByOrganizationId(X);if(!Q)throw Error("No domain found for organization");return Q}async clearDomain(X){await this.db.deleteFrom("organization_domains").where("organization_id","=",X).execute()}}class aN0{apiKey;constructor(X){this.apiKey=X}async sendEmail({to:X,from:Y,subject:G,html:Q}){let J=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({to:X,from:Y,subject:G,html:Q})});if(!J.ok)throw Error(`Failed to send email: ${J.statusText}`)}}class tN0{apiKey;constructor(X){this.apiKey=X}async sendEmail({to:X,from:Y,subject:G,html:Q}){let J=await fetch("https://api.sendgrid.com/v3/mail/send",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({personalizations:[{to:[{email:X}]}],from:{email:Y},subject:G,content:[{type:"text/html",value:Q}]})});if(!J.ok){let W=await J.text();throw Error(`Failed to send email via SendGrid: ${J.statusText} - ${W}`)}}}function gj(X){let Y=Ht5[X.provider];if(!Y)throw Error(`Unknown email provider: ${X.provider}`);return Y(X)}function uj(X,Y){return X.find((G)=>G.id===Y)}var $t5=(X)=>{let Y=new aN0(X.config.apiKey);return async({to:G,subject:Q,html:J})=>{await Y.sendEmail({to:G,from:X.config.fromEmail,subject:Q,html:J})}},Kt5=(X)=>{let Y=new tN0(X.config.apiKey);return async({to:G,subject:Q,html:J})=>{await Y.sendEmail({to:G,from:X.config.fromEmail,subject:Q,html:J})}},Ht5;var FT1=D(()=>{Ht5={resend:$t5,sendgrid:Kt5}});function lj({preheader:X="",heading:Y,subheading:G,body:Q,footnote:J}){return`<!DOCTYPE html>
|
|
1647
1647
|
<html lang="en">
|
|
1648
1648
|
<head>
|
|
@@ -5252,7 +5252,7 @@ mkdir -p /app && chown deco:deco /app
|
|
|
5252
5252
|
`);let Q=Y.pax;if(Q)for(let J in Q)G+=fb0(" "+J+"="+Q[J]+`
|
|
5253
5253
|
`);return a5.from(G)};fG7.decodePax=function(Y){let G={};while(Y.length){let Q=0;while(Q<Y.length&&Y[Q]!==32)Q++;let J=parseInt(a5.toString(Y.subarray(0,Q)),10);if(!J)return G;let W=a5.toString(Y.subarray(Q+1,J-1)),Z=W.indexOf("=");if(Z===-1)return G;G[W.slice(0,Z)]=W.slice(Z+1),Y=Y.subarray(J)}return G};fG7.encode=function(Y){let G=a5.alloc(512),Q=Y.name,J="";if(Y.typeflag===5&&Q[Q.length-1]!=="/")Q+="/";if(a5.byteLength(Q)!==Q.length)return null;while(a5.byteLength(Q)>100){let W=Q.indexOf("/");if(W===-1)return null;J+=J?"/"+Q.slice(0,W):Q.slice(0,W),Q=Q.slice(W+1)}if(a5.byteLength(Q)>100||a5.byteLength(J)>155)return null;if(Y.linkname&&a5.byteLength(Y.linkname)>100)return null;if(a5.write(G,Q),a5.write(G,CT(Y.mode&4095,6),100),a5.write(G,CT(Y.uid,6),108),a5.write(G,CT(Y.gid,6),116),vG7(Y.size,G,124),a5.write(G,CT(Y.mtime.getTime()/1000|0,11),136),G[156]=48+kG7(Y.type),Y.linkname)a5.write(G,Y.linkname,157);if(a5.copy(zQ8,G,257),a5.copy(TG7,G,263),Y.uname)a5.write(G,Y.uname,265);if(Y.gname)a5.write(G,Y.gname,297);if(a5.write(G,CT(Y.devmajor||0,6),329),a5.write(G,CT(Y.devminor||0,6),337),J)a5.write(G,J,345);return a5.write(G,CT(DQ8(G),6),148),G};fG7.decode=function(Y,G,Q){let J=Y[156]===0?0:Y[156]-48,W=ls(Y,0,100,G),Z=kT(Y,100,8),$=kT(Y,108,8),K=kT(Y,116,8),H=kT(Y,124,12),U=kT(Y,136,12),B=SG7(J),N=Y[157]===0?null:ls(Y,157,100,G),z=ls(Y,265,32),O=ls(Y,297,32),w=kT(Y,329,8),E=kT(Y,337,8),P=DQ8(Y);if(P===256)return null;if(P!==kT(Y,148,8))throw Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(jG7(Y)){if(Y[345])W=ls(Y,345,155,G)+"/"+W}else if(MG7(Y));else if(!Q)throw Error("Invalid tar header: unknown format.");if(J===0&&W&&W[W.length-1]==="/")J=5;return{name:W,mode:Z,uid:$,gid:K,size:H,mtime:new Date(1000*U),type:B,linkname:N,uname:z,gname:O,devmajor:w,devminor:E,pax:null}};function jG7(X){return a5.equals(zQ8,X.subarray(257,263))}function MG7(X){return a5.equals(IG7,X.subarray(257,263))&&a5.equals(VG7,X.subarray(263,265))}function RG7(X,Y,G){if(typeof X!=="number")return G;if(X=~~X,X>=Y)return Y;if(X>=0)return X;if(X+=Y,X>=0)return X;return 0}function SG7(X){switch(X){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function kG7(X){switch(X){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function OQ8(X,Y,G,Q){for(;G<Q;G++)if(X[G]===Y)return G;return Q}function DQ8(X){let Y=256;for(let G=0;G<148;G++)Y+=X[G];for(let G=156;G<512;G++)Y+=X[G];return Y}function CT(X,Y){if(X=X.toString(8),X.length>Y)return"7777777777777777777".slice(0,Y)+" ";return"0000000000000000000".slice(0,Y-X.length)+X+" "}function CG7(X,Y,G){Y[G]=128;for(let Q=11;Q>0;Q--)Y[G+Q]=X&255,X=Math.floor(X/256)}function vG7(X,Y,G){if(X.toString(8).length>11)CG7(X,Y,G);else a5.write(Y,CT(X,11),G)}function _G7(X){let Y;if(X[0]===128)Y=!0;else if(X[0]===255)Y=!1;else return null;let G=[],Q;for(Q=X.length-1;Q>0;Q--){let Z=X[Q];if(Y)G.push(Z);else G.push(255-Z)}let J=0,W=G.length;for(Q=0;Q<W;Q++)J+=G[Q]*Math.pow(256,Q);return Y?J:-1*J}function kT(X,Y,G){if(X=X.subarray(Y,Y+G),Y=0,X[Y]&128)return _G7(X);else{while(Y<X.length&&X[Y]===32)Y++;let Q=RG7(OQ8(X,32,Y,X.length),X.length,X.length);while(Y<Q&&X[Y]===0)Y++;if(Q===Y)return 0;return parseInt(a5.toString(X.subarray(Y,Q)),8)}}function ls(X,Y,G,Q){return a5.toString(X.subarray(Y,OQ8(X,0,Y,Y+G)),Q)}function fb0(X){let Y=a5.byteLength(X),G=Math.floor(Math.log(Y)/Math.log(10))+1;if(Y+G>=Math.pow(10,G))G++;return Y+G+X}});var IQ8=k((xoG,TQ8)=>{var{Writable:uG7,Readable:lG7,getStreamError:wQ8}=_b0(),mG7=Mb0(),LQ8=us(),ms=bb0(),dG7=LQ8.alloc(0);class EQ8{constructor(){this.buffered=0,this.shifted=0,this.queue=new mG7,this._offset=0}push(X){this.buffered+=X.byteLength,this.queue.push(X)}shiftFirst(X){return this._buffered===0?null:this._next(X)}shift(X){if(X>this.buffered)return null;if(X===0)return dG7;let Y=this._next(X);if(X===Y.byteLength)return Y;let G=[Y];while((X-=Y.byteLength)>0)Y=this._next(X),G.push(Y);return LQ8.concat(G)}_next(X){let Y=this.queue.peek(),G=Y.byteLength-this._offset;if(X>=G){let Q=this._offset?Y.subarray(this._offset,Y.byteLength):Y;return this.queue.shift(),this._offset=0,this.buffered-=G,this.shifted+=G,Q}return this.buffered-=X,this.shifted+=X,Y.subarray(this._offset,this._offset+=X)}}class PQ8 extends lG7{constructor(X,Y,G){super();this.header=Y,this.offset=G,this._parent=X}_read(X){if(this.header.size===0)this.push(null);if(this._parent._stream===this)this._parent._update();X(null)}_predestroy(){this._parent.destroy(wQ8(this))}_detach(){if(this._parent._stream===this)this._parent._stream=null,this._parent._missing=AQ8(this.header.size),this._parent._update()}_destroy(X){this._detach(),X(null)}}class qQ8 extends uG7{constructor(X){super(X);if(!X)X={};this._buffer=new EQ8,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=yb0,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=X.filenameEncoding||"utf-8",this._allowUnknownFormat=!!X.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock(X){if(this._locked=!1,X){this.destroy(X),this._continueWrite(X);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=ms.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(X){return this._continueWrite(X),!1}if(!this._header)return!0;switch(this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,!0}if(this._locked=!0,this._applyLongHeaders(),this._header.size===0||this._header.type==="directory")return this.emit("entry",this._header,this._createStream(),this._unlockBound),!0;return this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0}_applyLongHeaders(){if(this._gnuLongPath)this._header.name=this._gnuLongPath,this._gnuLongPath=null;if(this._gnuLongLinkPath)this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null;if(this._pax){if(this._pax.path)this._header.name=this._pax.path;if(this._pax.linkpath)this._header.linkname=this._pax.linkpath;if(this._pax.size)this._header.size=parseInt(this._pax.size,10);this._header.pax=this._pax,this._pax=null}}_decodeLongHeader(X){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=ms.decodeLongPath(X,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=ms.decodeLongPath(X,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=ms.decodePax(X);break;case"pax-header":this._pax=this._paxGlobal===null?ms.decodePax(X):Object.assign({},this._paxGlobal,ms.decodePax(X));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=AQ8(this._header.size);let X=this._buffer.shift(this._header.size);try{this._decodeLongHeader(X)}catch(Y){return this._continueWrite(Y),!1}return!0}_consumeStream(){let X=this._buffer.shiftFirst(this._missing);if(X===null)return!1;this._missing-=X.byteLength;let Y=this._stream.push(X);if(this._missing===0){if(this._stream.push(null),Y)this._stream._detach();return Y&&this._locked===!1}return Y}_createStream(){return new PQ8(this,this._header,this._offset)}_update(){while(this._buffer.buffered>0&&!this.destroying){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let X=this._buffer.shiftFirst(this._missing);if(X!==null)this._missing-=X.byteLength;continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite(X){let Y=this._callback;this._callback=yb0,Y(X)}_write(X,Y){this._callback=Y,this._buffer.push(X),this._update()}_final(X){this._finished=this._missing===0&&this._buffer.buffered===0,X(this._finished?null:Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(X){if(this._stream)this._stream.destroy(wQ8(this));X(null)}[Symbol.asyncIterator](){let X=null,Y=null,G=null,Q=null,J=null,W=this;return this.on("entry",K),this.on("error",(B)=>{X=B}),this.on("close",H),{[Symbol.asyncIterator](){return this},next(){return new Promise($)},return(){return U(null)},throw(B){return U(B)}};function Z(B){if(!J)return;let N=J;J=null,N(B)}function $(B,N){if(X)return N(X);if(Q){B({value:Q,done:!1}),Q=null;return}if(Y=B,G=N,Z(null),W._finished&&Y)Y({value:void 0,done:!0}),Y=G=null}function K(B,N,z){if(J=z,N.on("error",yb0),Y)Y({value:N,done:!1}),Y=G=null;else Q=N}function H(){if(Z(X),!Y)return;if(X)G(X);else Y({value:void 0,done:!0});Y=G=null}function U(B){return W.destroy(B),Z(B),new Promise((N,z)=>{if(W.destroyed)return N({value:void 0,done:!0});W.once("close",function(){if(B)z(B);else N({value:void 0,done:!0})})})}}}TQ8.exports=function(Y){return new qQ8(Y)};function yb0(){}function AQ8(X){return X&=511,X&&512-X}});var jQ8=k((hoG,xb0)=>{var VQ8={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{xb0.exports=I1("fs").constants||VQ8}catch{xb0.exports=VQ8}});var _Q8=k((goG,vQ8)=>{var{Readable:cG7,Writable:iG7,getStreamError:MQ8}=_b0(),ym=us(),ds=jQ8(),hc1=bb0(),RQ8=ym.alloc(1024);class SQ8 extends iG7{constructor(X,Y,G){super({mapWritable:nG7,eagerOpen:!0});if(this.written=0,this.header=Y,this._callback=G,this._linkname=null,this._isLinkname=Y.type==="symlink"&&!Y.linkname,this._isVoid=Y.type!=="file"&&Y.type!=="contiguous-file",this._finished=!1,this._pack=X,this._openCallback=null,this._pack._stream===null)this._pack._stream=this;else this._pack._pending.push(this)}_open(X){if(this._openCallback=X,this._pack._stream===this)this._continueOpen()}_continuePack(X){if(this._callback===null)return;let Y=this._callback;this._callback=null,Y(X)}_continueOpen(){if(this._pack._stream===null)this._pack._stream=this;let X=this._openCallback;if(this._openCallback=null,X===null)return;if(this._pack.destroying)return X(Error("pack stream destroyed"));if(this._pack._finalized)return X(Error("pack stream is already finalized"));if(this._pack._stream=this,!this._isLinkname)this._pack._encode(this.header);if(this._isVoid)this._finish(),this._continuePack(null);X(null)}_write(X,Y){if(this._isLinkname)return this._linkname=this._linkname?ym.concat([this._linkname,X]):X,Y(null);if(this._isVoid){if(X.byteLength>0)return Y(Error("No body allowed for this entry"));return Y()}if(this.written+=X.byteLength,this._pack.push(X))return Y();this._pack._drain=Y}_finish(){if(this._finished)return;if(this._finished=!0,this._isLinkname)this.header.linkname=this._linkname?ym.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header);CQ8(this._pack,this.header.size),this._pack._done(this)}_final(X){if(this.written!==this.header.size)return X(Error("Size mismatch"));this._finish(),X(null)}_getError(){return MQ8(this)||Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(X){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),X()}}class kQ8 extends cG7{constructor(X){super(X);this._drain=hb0,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry(X,Y,G){if(this._finalized||this.destroying)throw Error("already finalized or destroyed");if(typeof Y==="function")G=Y,Y=null;if(!G)G=hb0;if(!X.size||X.type==="symlink")X.size=0;if(!X.type)X.type=pG7(X.mode);if(!X.mode)X.mode=X.type==="directory"?493:420;if(!X.uid)X.uid=0;if(!X.gid)X.gid=0;if(!X.mtime)X.mtime=new Date;if(typeof Y==="string")Y=ym.from(Y);let Q=new SQ8(this,X,G);if(ym.isBuffer(Y))return X.size=Y.byteLength,Q.write(Y),Q.end(),Q;if(Q._isVoid)return Q;return Q}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}if(this._finalized)return;this._finalized=!0,this.push(RQ8),this.push(null)}_done(X){if(X!==this._stream)return;if(this._stream=null,this._finalizing)this.finalize();if(this._pending.length)this._pending.shift()._continueOpen()}_encode(X){if(!X.pax){let Y=hc1.encode(X);if(Y){this.push(Y);return}}this._encodePax(X)}_encodePax(X){let Y=hc1.encodePax({name:X.name,linkname:X.linkname,pax:X.pax}),G={name:"PaxHeader",mode:X.mode,uid:X.uid,gid:X.gid,size:Y.byteLength,mtime:X.mtime,type:"pax-header",linkname:X.linkname&&"PaxHeader",uname:X.uname,gname:X.gname,devmajor:X.devmajor,devminor:X.devminor};this.push(hc1.encode(G)),this.push(Y),CQ8(this,Y.byteLength),G.size=X.size,G.type=X.type,this.push(hc1.encode(G))}_doDrain(){let X=this._drain;this._drain=hb0,X()}_predestroy(){let X=MQ8(this);if(this._stream)this._stream.destroy(X);while(this._pending.length){let Y=this._pending.shift();Y.destroy(X),Y._continueOpen()}this._doDrain()}_read(X){this._doDrain(),X()}}vQ8.exports=function(Y){return new kQ8(Y)};function pG7(X){switch(X&ds.S_IFMT){case ds.S_IFBLK:return"block-device";case ds.S_IFCHR:return"character-device";case ds.S_IFDIR:return"directory";case ds.S_IFIFO:return"fifo";case ds.S_IFLNK:return"symlink"}return"file"}function hb0(){}function CQ8(X,Y){if(Y&=511,Y)X.push(RQ8.subarray(0,512-Y))}function nG7(X){return ym.isBuffer(X)?X:ym.from(X)}});var fQ8=k((aG7)=>{aG7.extract=IQ8();aG7.pack=_Q8()});var xQ8=k((loG,yQ8)=>{yQ8.exports=bQ8;function bQ8(X,Y){if(X&&Y)return bQ8(X)(Y);if(typeof X!=="function")throw TypeError("need wrapper function");return Object.keys(X).forEach(function(Q){G[Q]=X[Q]}),G;function G(){var Q=Array(arguments.length);for(var J=0;J<Q.length;J++)Q[J]=arguments[J];var W=X.apply(this,Q),Z=Q[Q.length-1];if(typeof W==="function"&&W!==Z)Object.keys(Z).forEach(function($){W[$]=Z[$]});return W}}});var ub0=k((moG,gb0)=>{var hQ8=xQ8();gb0.exports=hQ8(gc1);gb0.exports.strict=hQ8(gQ8);gc1.proto=gc1(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return gc1(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return gQ8(this)},configurable:!0})});function gc1(X){var Y=function(){if(Y.called)return Y.value;return Y.called=!0,Y.value=X.apply(this,arguments)};return Y.called=!1,Y}function gQ8(X){var Y=function(){if(Y.called)throw Error(Y.onceError);return Y.called=!0,Y.value=X.apply(this,arguments)},G=X.name||"Function wrapped with `once`";return Y.onceError=G+" shouldn't be called more than once",Y.called=!1,Y}});var mQ8=k((doG,lQ8)=>{var oG7=ub0(),sG7=function(){},eG7=global.Bare?queueMicrotask:process.nextTick.bind(process),XQ7=function(X){return X.setHeader&&typeof X.abort==="function"},YQ7=function(X){return X.stdio&&Array.isArray(X.stdio)&&X.stdio.length===3},uQ8=function(X,Y,G){if(typeof Y==="function")return uQ8(X,null,Y);if(!Y)Y={};G=oG7(G||sG7);var{_writableState:Q,_readableState:J}=X,W=Y.readable||Y.readable!==!1&&X.readable,Z=Y.writable||Y.writable!==!1&&X.writable,$=!1,K=function(){if(!X.writable)H()},H=function(){if(Z=!1,!W)G.call(X)},U=function(){if(W=!1,!Z)G.call(X)},B=function(E){G.call(X,E?Error("exited with error code: "+E):null)},N=function(E){G.call(X,E)},z=function(){eG7(O)},O=function(){if($)return;if(W&&!(J&&(J.ended&&!J.destroyed)))return G.call(X,Error("premature close"));if(Z&&!(Q&&(Q.ended&&!Q.destroyed)))return G.call(X,Error("premature close"))},w=function(){X.req.on("finish",H)};if(XQ7(X))if(X.on("complete",H),X.on("abort",z),X.req)w();else X.on("request",w);else if(Z&&!Q)X.on("end",K),X.on("close",K);if(YQ7(X))X.on("exit",B);if(X.on("end",U),X.on("finish",H),Y.error!==!1)X.on("error",N);return X.on("close",z),function(){if($=!0,X.removeListener("complete",H),X.removeListener("abort",z),X.removeListener("request",w),X.req)X.req.removeListener("finish",H);X.removeListener("end",K),X.removeListener("close",K),X.removeListener("finish",H),X.removeListener("exit",B),X.removeListener("end",U),X.removeListener("error",N),X.removeListener("close",z)}};lQ8.exports=uQ8});var iQ8=k((coG,cQ8)=>{var GQ7=ub0(),QQ7=mQ8(),uc1;try{uc1=I1("fs")}catch(X){}var i31=function(){},JQ7=typeof process>"u"?!1:/^v?\.0/.test(process.version),lc1=function(X){return typeof X==="function"},ZQ7=function(X){if(!JQ7)return!1;if(!uc1)return!1;return(X instanceof(uc1.ReadStream||i31)||X instanceof(uc1.WriteStream||i31))&&lc1(X.close)},WQ7=function(X){return X.setHeader&&lc1(X.abort)},$Q7=function(X,Y,G,Q){Q=GQ7(Q);var J=!1;X.on("close",function(){J=!0}),QQ7(X,{readable:Y,writable:G},function(Z){if(Z)return Q(Z);J=!0,Q()});var W=!1;return function(Z){if(J)return;if(W)return;if(W=!0,ZQ7(X))return X.close(i31);if(WQ7(X))return X.abort();if(lc1(X.destroy))return X.destroy();Q(Z||Error("stream was destroyed"))}},dQ8=function(X){X()},KQ7=function(X,Y){return X.pipe(Y)},HQ7=function(){var X=Array.prototype.slice.call(arguments),Y=lc1(X[X.length-1]||i31)&&X.pop()||i31;if(Array.isArray(X[0]))X=X[0];if(X.length<2)throw Error("pump requires two streams per minimum");var G,Q=X.map(function(J,W){var Z=W<X.length-1,$=W>0;return $Q7(J,Z,$,function(K){if(!G)G=K;if(K)Q.forEach(dQ8);if(Z)return;Q.forEach(dQ8),Y(G)})});return X.reduce(KQ7)};cQ8.exports=HQ7});var XJ8=k((NQ7)=>{var pQ8=fQ8(),nQ8=iQ8(),aQ8=I1("fs"),ZY=I1("path"),p31=(global.Bare?global.Bare.platform:process.platform)==="win32";NQ7.pack=function(Y,G){if(!Y)Y=".";if(!G)G={};let Q=G.fs||aQ8,J=G.ignore||G.filter||n31,W=G.mapStream||sQ8,Z=BQ7(Q,G.dereference?Q.stat:Q.lstat,Y,J,G.entries,G.sort),$=G.strict!==!1,K=typeof G.umask==="number"?~G.umask:~tQ8(),H=G.pack||pQ8.pack(),U=G.finish||n31,B=G.map||n31,N=typeof G.dmode==="number"?G.dmode:0,z=typeof G.fmode==="number"?G.fmode:0;if(G.strip)B=eQ8(B,G.strip);if(G.readable)N|=parseInt(555,8),z|=parseInt(444,8);if(G.writable)N|=parseInt(333,8),z|=parseInt(222,8);E();function O(P,q){Q.readlink(ZY.join(Y,P),function(j,M){if(j)return H.destroy(j);q.linkname=lb0(M),H.entry(q,E)})}function w(P,q,j){if(H.destroyed)return;if(P)return H.destroy(P);if(!q){if(G.finalize!==!1)H.finalize();return U(H)}if(j.isSocket())return E();let M={name:lb0(q),mode:(j.mode|(j.isDirectory()?N:z))&K,mtime:j.mtime,size:j.size,type:"file",uid:j.uid,gid:j.gid};if(j.isDirectory())return M.size=0,M.type="directory",M=B(M)||M,H.entry(M,E);if(j.isSymbolicLink())return M.size=0,M.type="symlink",M=B(M)||M,O(q,M);if(M=B(M)||M,!j.isFile()){if($)return H.destroy(Error("unsupported type for "+q));return E()}let V=H.entry(M,E),R=W(Q.createReadStream(ZY.join(Y,q),{start:0,end:M.size>0?M.size-1:M.size}),M);R.on("error",function(C){V.destroy(C)}),nQ8(R,V)}function E(P){if(P)return H.destroy(P);Z(w)}return H};function FQ7(X){return X.length?X[X.length-1]:null}function UQ7(){return!global.Bare&&process.getuid?process.getuid():-1}function tQ8(){return!global.Bare&&process.umask?process.umask():0}NQ7.extract=function(Y,G){if(!Y)Y=".";if(!G)G={};Y=ZY.resolve(Y);let Q=G.fs||aQ8,J=G.ignore||G.filter||n31,W=G.mapStream||sQ8,Z=G.chown!==!1&&!p31&&UQ7()===0,$=G.extract||pQ8.extract(),K=[],H=new Date,U=typeof G.umask==="number"?~G.umask:~tQ8(),B=G.strict!==!1,N=G.validateSymlinks!==!1,z=G.map||n31,O=typeof G.dmode==="number"?G.dmode:0,w=typeof G.fmode==="number"?G.fmode:0;if(G.strip)z=eQ8(z,G.strip);if(G.readable)O|=parseInt(555,8),w|=parseInt(444,8);if(G.writable)O|=parseInt(333,8),w|=parseInt(222,8);if($.on("entry",E),G.finish)$.on("finish",G.finish);return $;function E(V,R,C){V=z(V)||V,V.name=lb0(V.name);let _=ZY.join(Y,ZY.join("/",V.name));if(J(_,V))return R.resume(),C();let v=ZY.join(_,".")===ZY.join(Y,".")?Y:ZY.dirname(_);oQ8(Q,v,ZY.join(Y,"."),function(u,r){if(u)return C(u);if(!r)return C(Error(v+" is not a valid path"));if(V.type==="directory")return K.push([_,V.mtime]),M(_,{fs:Q,own:Z,uid:V.uid,gid:V.gid,mode:V.mode},y);M(v,{fs:Q,own:Z,uid:V.uid,gid:V.gid,mode:493},function(o){if(o)return C(o);switch(V.type){case"file":return f();case"link":return i();case"symlink":return h()}if(B)return C(Error("unsupported type for "+_+" ("+V.type+")"));R.resume(),C()})});function y(u){if(u)return C(u);q(_,V,function(r){if(r)return C(r);if(p31)return C();j(_,V,C)})}function h(){if(p31)return C();Q.unlink(_,function(){let u=ZY.resolve(ZY.dirname(_),V.linkname);if(!p(u)&&N)return C(Error(_+" is not a valid symlink"));rQ8(Q,u,ZY.join(Y,"."),function(r,o){if(r)return C(r);if(!o&&N)return C(Error(_+" is not a valid symlink"));Q.symlink(V.linkname,_,y)})})}function i(){if(p31)return C();Q.unlink(_,function(){let u=ZY.join(Y,ZY.join("/",V.linkname));Q.realpath(u,function(r,o){if(r||!p(o))return C(Error(_+" is not a valid hardlink"));Q.link(o,_,function(B1){if(B1&&B1.code==="EPERM"&&G.hardlinkAsFilesFallback)return R=Q.createReadStream(o),f();y(B1)})})})}function p(u){return u===Y||u.startsWith(Y+ZY.sep)}function f(){let u=Q.createWriteStream(_),r=W(R,V);u.on("error",function(o){r.destroy(o)}),nQ8(r,u,function(o){if(o)return C(o);u.on("close",y)})}}function P(V,R){let C;while((C=FQ7(K))&&V.slice(0,C[0].length)!==C[0])K.pop();if(!C)return R();Q.utimes(C[0],H,C[1],R)}function q(V,R,C){if(G.utimes===!1)return C();if(R.type==="directory")return Q.utimes(V,H,R.mtime,C);if(R.type==="symlink")return P(V,C);Q.utimes(V,H,R.mtime,function(_){if(_)return C(_);P(V,C)})}function j(V,R,C){let _=R.type==="symlink",v=_?Q.lchmod:Q.chmod,y=_?Q.lchown:Q.chown;if(!v)return C();let h=(R.mode|(R.type==="directory"?O:w))&U;if(y&&Z)y.call(Q,V,R.uid,R.gid,i);else i(null);function i(p){if(p)return C(p);if(!v)return C();v.call(Q,V,h,C)}}function M(V,R,C){Q.stat(V,function(_){if(!_)return C(null);if(_.code!=="ENOENT")return C(_);Q.mkdir(V,{mode:R.mode,recursive:!0},function(v,y){if(v)return C(v);j(V,R,C)})})}};function rQ8(X,Y,G,Q){if(Y===G)return Q(null,!0);if(!Y.startsWith(G+ZY.sep))return Q(null,!1);X.lstat(Y,function(J,W){if(J&&J.code!=="ENOENT"&&J.code!=="EPERM")return Q(J);if(J||!W.isSymbolicLink())return rQ8(X,ZY.join(Y,".."),G,Q);Q(null,!1)})}function oQ8(X,Y,G,Q){if(Y===G)return Q(null,!0);X.lstat(Y,function(J,W){if(J&&J.code!=="ENOENT"&&J.code!=="EPERM")return Q(J);if(J||W.isDirectory())return oQ8(X,ZY.join(Y,".."),G,Q);Q(null,!1)})}function n31(){}function sQ8(X){return X}function lb0(X){return p31?X.replace(/\\/g,"/").replace(/[:?<>|]/g,"_"):X}function BQ7(X,Y,G,Q,J,W){if(!J)J=["."];let Z=J.slice(0);return function(K){if(!Z.length)return K(null);let H=Z.shift(),U=ZY.join(G,H);Y.call(X,U,function(B,N){if(B)return K(J.indexOf(H)===-1&&B.code==="ENOENT"?null:B);if(!N.isDirectory())return K(null,H,N);X.readdir(U,function(z,O){if(z)return K(z);if(W)O.sort();for(let w=0;w<O.length;w++)if(!Q(ZY.join(G,H,O[w])))Z.push(ZY.join(H,O[w]));K(null,H,N)})})}}function eQ8(X,Y){return function(G){G.name=G.name.split("/").slice(Y).join("/");let Q=G.linkname;if(Q&&(G.type==="link"||ZY.isAbsolute(Q)))G.linkname=Q.split("/").slice(Y).join("/");return X(G)}}});var DQ7,wQ7;var YJ8=D(()=>{Vb0();DQ7=Y1(mG8(),1),wQ7=Y1(XJ8(),1)});var mc1=()=>{};var GJ8=D(()=>{Gc1()});var QJ8=D(()=>{Sc1();Rc1();mc1()});var JJ8=()=>{};var ZJ8=()=>{};var mb0=D(()=>{TG8();Tb0();Sc1();RG8();qb0();Vb0();SG8();kG8();CG8();vG8();Ab0();_G8();YJ8();mc1();GJ8();QJ8();JJ8();ZJ8();mc1()});var TG,oY,cs,a31;var t31=D(()=>{TG={CLAIM_API_GROUP:"extensions.agents.x-k8s.io",CLAIM_API_VERSION:"v1alpha1",CLAIM_PLURAL:"sandboxclaims",SANDBOX_API_GROUP:"agents.x-k8s.io",SANDBOX_API_VERSION:"v1alpha1",SANDBOX_PLURAL:"sandboxes",POD_NAME_ANNOTATION:"agents.x-k8s.io/pod-name"};oY=class oY extends Error{cause;constructor(X,Y){super(X);if(this.name="SandboxError",this.cause=Y,Y instanceof Error&&Y.stack)this.stack=`${this.stack}
|
|
5254
5254
|
Caused by: ${Y.stack}`}};cs=class cs extends oY{constructor(X,Y){super(X,Y);this.name="SandboxTimeoutError"}};a31=class a31 extends oY{constructor(X,Y){super(X,Y);this.name="SandboxAlreadyExistsError"}}});async function LQ7(X){let Y=X.getCurrentCluster();if(!Y)throw new oY("No active cluster in kubeconfig");let G={};await X.applyToHTTPSOptions(G);let Q={},J=G.headers??{};for(let[W,Z]of Object.entries(J))if(Array.isArray(Z))Q[W]=Z.join(", ");else if(Z!==void 0)Q[W]=String(Z);if(typeof G.auth==="string"&&!Q.Authorization)Q.Authorization=`Basic ${Buffer.from(G.auth).toString("base64")}`;return{server:Y.server.replace(/\/+$/,""),headers:Q,tls:{cert:db0(G.cert),key:db0(G.key),ca:db0(G.ca),rejectUnauthorized:Y.skipTLSVerify?!1:void 0}}}function db0(X){if(X==null)return;if(typeof X==="string")return X;if(Buffer.isBuffer(X))return X.toString("utf8");return String(X)}async function xm(X,Y){let G=await LQ7(X),Q={...G.headers,...Y.headers};if(Y.method==="PATCH")Q["content-type"]=Y.patchType==="apply"?"application/apply-patch+yaml":Y.patchType==="strategic-merge"?"application/strategic-merge-patch+json":"application/merge-patch+json";else if(Y.body!==void 0&&!("content-type"in Q))Q["content-type"]="application/json";let J={method:Y.method,headers:Q,body:Y.body===void 0?void 0:JSON.stringify(Y.body),signal:Y.signal,tls:G.tls};return fetch(`${G.server}${Y.path}`,J)}async function ib0(X){try{return await X.json()}catch{return null}}async function pb0(X,Y){if(X.ok)return;let G=await ib0(X),Q=G?.message??`${Y} failed: ${X.status} ${X.statusText}`;throw new cb0(X.status,G,Q)}async function r31(X,Y,G,Q,J="none"){try{let W=await xm(X,Y);if(W.status===404)return null;if(await pb0(W,G),J==="json")return await W.json();return null}catch(W){throw new oY(Q,W)}}async function o31(X,Y,G){let Q=`${WJ8}/${encodeURIComponent(Y)}/${TG.CLAIM_PLURAL}`,J;try{J=await xm(X,{method:"POST",path:Q,body:G})}catch(H){let U=H instanceof Error?H.message:String(H);throw console.warn(`[agent-sandbox/client] createSandboxClaim ${G.metadata.name} transport error: ${U}`),new oY(`Failed to create SandboxClaim: ${G.metadata.name} (transport error: ${U})`,H)}if(J.ok)return;let W=await ib0(J),Z=W?.reason?` ${W.reason}`:"",$=W?.message??J.statusText,K=`Failed to create SandboxClaim: ${G.metadata.name} (${J.status}${Z}: ${$})`;if(console.warn(`[agent-sandbox/client] createSandboxClaim ${G.metadata.name} rejected: status=${J.status} reason=${W?.reason??"<none>"} message=${$}`),J.status===409)throw new a31(K);throw new oY(K)}async function dc1(X,Y,G,Q=60000){let J=Date.now()+Q,W=500,Z;while(!0){let $=await gm(X,Y,G).catch(()=>{return});if(!$)return;if(Z=$,Date.now()>=J){let K=Z.metadata?.finalizers??[],H=Z.metadata?.deletionTimestamp??"<unknown>";throw new cs(`SandboxClaim ${G} still terminating after ${Q}ms (deletionTimestamp=${H}, finalizers=[${K.join(", ")}])`)}await new Promise((K)=>setTimeout(K,500))}}function nb0(X,Y){return`${WJ8}/${encodeURIComponent(X)}/${TG.CLAIM_PLURAL}/${encodeURIComponent(Y)}`}async function $J8(X,Y,G,Q){await r31(X,{method:"PATCH",path:nb0(Y,G),patchType:"merge",body:{spec:{lifecycle:{shutdownPolicy:"Delete",shutdownTime:Q}}}},"patchSandboxClaimShutdown",`Failed to patch SandboxClaim shutdownTime: ${G}`)}async function hm(X,Y,G){await r31(X,{method:"DELETE",path:nb0(Y,G)},"deleteSandboxClaim",`Failed to delete SandboxClaim: ${G}`)}async function gm(X,Y,G){return await r31(X,{method:"GET",path:nb0(Y,G)},"getSandboxClaim",`Failed to get SandboxClaim: ${G}`,"json")??void 0}function UJ8(X,Y){return`${FJ8}/${encodeURIComponent(X)}/${ab0}/${encodeURIComponent(Y)}`}function EQ7(X){return`${FJ8}/${encodeURIComponent(X)}/${ab0}`}async function cc1(X,Y,G){try{let Q=await xm(X,{method:"POST",path:EQ7(Y),body:G});if(Q.status===409)return;await pb0(Q,"createHttpRoute")}catch(Q){if(Q instanceof cb0&&Q.status===409)return;throw new oY(`Failed to create HTTPRoute: ${G.metadata.name}`,Q)}}async function ic1(X,Y,G){await r31(X,{method:"DELETE",path:UJ8(Y,G)},"deleteHttpRoute",`Failed to delete HTTPRoute: ${G}`)}async function BJ8(X,Y,G){return await r31(X,{method:"GET",path:UJ8(Y,G)},"getHttpRoute",`Failed to get HTTPRoute: ${G}`,"json")??void 0}async function NJ8(X,Y,G,Q){let J={apiVersion:"v1",kind:"Service",metadata:{name:G},spec:{ports:[{name:Q.name,port:Q.port,targetPort:Q.targetPort,protocol:Q.protocol??"TCP"}]}},W=new URLSearchParams({fieldManager:PQ7,force:"true"}),Z=`/api/v1/namespaces/${encodeURIComponent(Y)}/services/${encodeURIComponent(G)}?${W}`;try{let $=await xm(X,{method:"PATCH",path:Z,patchType:"apply",body:J});await pb0($,"ensureServicePort")}catch($){throw new oY(`Failed to apply Service ports: ${G}`,$)}}function pc1(X,Y,G,Q=180){let J=`/apis/${TG.SANDBOX_API_GROUP}/${TG.SANDBOX_API_VERSION}/namespaces/${encodeURIComponent(Y)}/${TG.SANDBOX_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`,{resolve:W,reject:Z,promise:$}=Promise.withResolvers(),K=new AbortController,H=!1,U=setTimeout(()=>{if(H)return;H=!0,K.abort(),Z(new cs(`Sandbox did not become ready within ${Q} seconds`))},Q*1000),B=(N)=>{if(H)return;H=!0,clearTimeout(U),K.abort(),N()};return(async()=>{let N;try{N=await xm(X,{method:"GET",path:J,signal:K.signal,headers:{accept:"application/json"}})}catch(z){B(()=>Z(new oY("Failed to start watch for sandbox readiness",z)));return}if(!N.ok||!N.body){let z=await ib0(N).catch(()=>null);B(()=>Z(new oY(`Watch handshake failed (${N.status}): ${z?.message??N.statusText}`)));return}try{for await(let z of tb0(N.body)){if(H)return;if(z.type==="ERROR"){let q=z.object;B(()=>Z(new oY(`Watch stream error while waiting for sandbox: ${q.message??"unknown"}`)));return}if(z.type!=="ADDED"&&z.type!=="MODIFIED")continue;let O=z.object;if(!O.status?.conditions?.find((q)=>q.type==="Ready"&&q.status==="True"))continue;let E=O.metadata?.name;if(!E){B(()=>Z(new oY("Sandbox metadata or name is missing")));return}let P=O.metadata?.annotations?.[TG.POD_NAME_ANNOTATION]??E;B(()=>W({sandboxName:E,podName:P}));return}B(()=>Z(new oY("Watch stream closed before sandbox became ready")))}catch(z){if(H)return;if(z instanceof Error&&(z.name==="AbortError"||K.signal.aborted))return;B(()=>Z(new oY("Watch stream error while waiting for sandbox",z)))}})(),$}async function*tb0(X){let Y=X.getReader(),G=new TextDecoder,Q="";try{while(!0){let{value:W,done:Z}=await Y.read();if(Z)break;Q+=G.decode(W,{stream:!0});let $;while(($=Q.indexOf(`
|
|
5255
|
-
`))>=0){let K=Q.slice(0,$).trim();if(Q=Q.slice($+1),!K)continue;yield JSON.parse(K)}}let J=Q.trim();if(J)yield JSON.parse(J)}finally{Y.releaseLock()}}var cb0,WJ8,KJ8="gateway.networking.k8s.io",HJ8="v1",ab0="httproutes",FJ8,s31,PQ7="mesh-sandbox-runner";var nc1=D(()=>{t31();cb0=class cb0 extends Error{status;body;constructor(X,Y,G){super(G);this.status=X;this.body=Y;this.name="KubeHttpError"}};WJ8=`/apis/${TG.CLAIM_API_GROUP}/${TG.CLAIM_API_VERSION}/namespaces`;FJ8=`/apis/${KJ8}/${HJ8}/namespaces`;s31={API_GROUP:KJ8,API_VERSION:HJ8,PLURAL:ab0}});async function*DJ8(X){let Y=X.now??(()=>Date.now()),G=Y(),Q=X.schedulingTimeoutMs??TQ7,J={pod:{},sandbox:{},events:{hasPulling:!1,hasPulled:!1},startedAt:G},W=[],Z=null,$=!1,K=(E)=>{if($)return;if(Z){let P=Z;Z=null,P(E)}else W.push(E)},H=()=>{if(W.length>0)return Promise.resolve(W.shift());if($)return Promise.resolve(null);return new Promise((E)=>{Z=E})},U=()=>{if($)return;if($=!0,Z){let E=Z;Z=null,E(null)}},B=new AbortController,N=()=>{B.abort(),U()};if(X.signal)if(X.signal.aborted)B.abort(),U();else X.signal.addEventListener("abort",N,{once:!0});let z=Math.max(0,Q-(Y()-G)),O=setTimeout(()=>K("tick"),z+100),w=Promise.allSettled([IQ7(X.kc,X.namespace,X.claimName,B.signal,J,K,Y),jQ7(X.kc,X.namespace,X.claimName,B.signal,J,K),MQ7(X.kc,X.namespace,X.claimName,B.signal,J,K,Y)]);try{let E=null,P=-1,q=zJ8(J,Q,Y);if(E=ob0(q),!rb0(q))P=OJ8(q);if(yield q,rb0(q))return;while(!$){if(await H()===null)break;let M=zJ8(J,Q,Y);if(rb0(M)){let C=ob0(M);if(C!==E)E=C,yield M;return}let V=OJ8(M);if(V<P)continue;let R=ob0(M);if(R!==E)E=R,P=V,yield M}}finally{if(clearTimeout(O),B.abort(),X.signal)X.signal.removeEventListener("abort",N);U(),await w.catch(()=>{})}}function zJ8(X,Y,G){let{pod:Q,sandbox:J,events:W,startedAt:Z}=X;if(J.ready)return{kind:"ready"};let $=Q.containerWaitingReason;if($==="ImagePullBackOff"||$==="ErrImagePull")return{kind:"failed",reason:"image-pull-backoff",message:"Sandbox image failed to download. The cluster may be missing pull credentials or the image tag may not exist."};if($==="CrashLoopBackOff")return{kind:"failed",reason:"crash-loop-backoff",message:"Sandbox crashed during startup and is now in CrashLoopBackOff. Check pod logs."};if(!Q.scheduled&&W.lastFailedSchedulingAt!==void 0&&G()-Z>Y)return{kind:"failed",reason:"scheduling-timeout",message:W.failedSchedulingMessage??`Pod could not be scheduled within ${Math.round(Y/1000)}s.`};if(Q.containerRunning&&!Q.containerReady)return{kind:"warming-daemon",since:Z};if($==="ContainerCreating"&&W.hasPulled)return{kind:"starting-container",since:Z};if(W.hasPulling&&!W.hasPulled)return{kind:"pulling-image",since:Z};if(Q.scheduledFalseReason==="Unschedulable"||W.lastFailedSchedulingAt!==void 0&&!Q.scheduled)return{kind:"waiting-for-capacity",since:Z,message:W.failedSchedulingMessage??Q.scheduledFalseMessage,nodeClaim:W.nominatedNodeClaim};return{kind:"claiming",since:Z}}function rb0(X){return X.kind==="ready"||X.kind==="failed"}function OJ8(X){switch(X.kind){case"claiming":return 0;case"waiting-for-capacity":return 1;case"pulling-image":return 2;case"starting-container":return 3;case"warming-daemon":return 4;case"ready":case"failed":return 99}}function ob0(X){switch(X.kind){case"claiming":case"pulling-image":case"starting-container":case"warming-daemon":return X.kind;case"waiting-for-capacity":return`waiting-for-capacity:${X.message??""}:${X.nodeClaim??""}`;case"ready":return"ready";case"failed":return`failed:${X.reason}:${X.message}`}}async function IQ7(X,Y,G,Q,J,W,Z){let $=`/api/v1/namespaces/${encodeURIComponent(Y)}/pods?watch=true&labelSelector=${encodeURIComponent(`${qQ7}=${G}`)}`;return sb0({kc:X,path:$,signal:Q,label:`pod/${G}`,onEvent:(K)=>{if(K.type!=="ADDED"&&K.type!=="MODIFIED")return;let H=K.object;if(H.metadata?.name!==G)return;VQ7(H,J,Z),W("pod")}})}function VQ7(X,Y,G){let J=(X.status?.conditions??[]).find((Z)=>Z.type==="PodScheduled");if(J?.status==="True")Y.pod.scheduled=!0,Y.pod.scheduledFalseReason=void 0,Y.pod.scheduledFalseMessage=void 0;else if(J?.status==="False")Y.pod.scheduled=!1,Y.pod.scheduledFalseReason=J.reason,Y.pod.scheduledFalseMessage=J.message;let W=(X.status?.containerStatuses??[]).find((Z)=>Z.name===AQ7);if(W)Y.pod.containerWaitingReason=W.state?.waiting?.reason,Y.pod.containerRunning=!!W.state?.running,Y.pod.containerReady=W.ready===!0}async function jQ7(X,Y,G,Q,J,W){let Z=`/apis/${TG.SANDBOX_API_GROUP}/${TG.SANDBOX_API_VERSION}/namespaces/${encodeURIComponent(Y)}/${TG.SANDBOX_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`;return sb0({kc:X,path:Z,signal:Q,label:`sandbox/${G}`,onEvent:($)=>{if($.type!=="ADDED"&&$.type!=="MODIFIED")return;let H=$.object.status?.conditions?.find((U)=>U.type==="Ready");if(!H)return;if(H.status==="True")J.sandbox.ready=!0,J.sandbox.notReadyReason=void 0,J.sandbox.notReadyMessage=void 0;else J.sandbox.ready=!1,J.sandbox.notReadyReason=H.reason,J.sandbox.notReadyMessage=H.message;W("sandbox")}})}async function MQ7(X,Y,G,Q,J,W,Z){let $=`/api/v1/namespaces/${encodeURIComponent(Y)}/events?watch=true&fieldSelector=${encodeURIComponent(`involvedObject.name=${G},involvedObject.kind=Pod`)}`;return sb0({kc:X,path:$,signal:Q,label:`events/${G}`,onEvent:(K)=>{if(K.type!=="ADDED"&&K.type!=="MODIFIED")return;let H=K.object,U=H.reason;if(!U)return;switch(U){case"Pulling":J.events.hasPulling=!0;break;case"Pulled":J.events.hasPulling=!0,J.events.hasPulled=!0;break;case"FailedScheduling":J.events.lastFailedSchedulingAt=Z(),J.events.failedSchedulingMessage=H.message;break;case"Nominated":{let B=H.message?.match(/nodeclaim\/([\w-]+)/);if(B)J.events.nominatedNodeClaim=B[1];break}default:return}W("event")}})}async function sb0(X){let{kc:Y,path:G,signal:Q,label:J,onEvent:W}=X,Z=0;while(!Q.aborted){try{let K=await xm(Y,{method:"GET",path:G,signal:Q,headers:{accept:"application/json"}});if(!K.ok||!K.body){try{await K.body?.cancel()}catch{}throw Error(`watch handshake failed: ${K.status} ${K.statusText}`)}Z=0;for await(let H of tb0(K.body)){if(Q.aborted)return;try{W(H)}catch(U){console.warn(`[lifecycle-watcher] ${J} onEvent threw: ${U instanceof Error?U.message:String(U)}`)}}}catch(K){if(Q.aborted)return;let H=K instanceof Error?K.message:String(K);console.warn(`[lifecycle-watcher] ${J} watch ended: ${H}`)}if(Q.aborted)return;let $=Math.min(250*2**Z,5000);Z+=1,await RQ7($,Q)}}function RQ7(X,Y){return new Promise((G)=>{if(Y.aborted){G();return}let Q=setTimeout(()=>{Y.removeEventListener("abort",J),G()},X),J=()=>{clearTimeout(Q),G()};Y.addEventListener("abort",J,{once:!0})})}var qQ7="studio.decocms.com/sandbox-handle",AQ7="sandbox",TQ7=300000;var wJ8=D(()=>{t31();nc1()});import{createHash as SQ7,randomBytes as kQ7,randomUUID as CQ7}from"crypto";import*as AJ8 from"net";import{PassThrough as vQ7}from"stream";class Jy0{kind=oz;records=new Map;inflight=new oL;stateStore;previewUrlPattern;kubeConfig;portForward;namespace;sandboxTemplateName;envName;tokenGenerator;idleTtlMs;metrics;previewGateway;closed=!1;constructor(X={}){this.stateStore=X.stateStore??null,this.previewUrlPattern=X.previewUrlPattern??null,this.kubeConfig=X.kubeConfig??mQ7(),this.portForward=new jb0(this.kubeConfig),this.namespace=X.namespace??_Q7,this.sandboxTemplateName=X.sandboxTemplateName??fQ7,this.envName=aQ7(X.envName),this.tokenGenerator=X.tokenGenerator??(()=>kQ7(yQ7).toString("hex")),this.idleTtlMs=X.idleTtlMs??hQ7,this.metrics=X.meter?lQ7(X.meter):null,this.previewGateway=X.previewGateway&&X.previewUrlPattern?{...X.previewGateway}:null}async ensure(X,Y={}){let G=this.computeHandle(X,Y.repo?.branch??null);return this.inflight.run(G,()=>JI(this.stateStore,X,oz,(Q)=>this.ensureLocked(X,G,Y,Q)))}async exec(X,Y){let G=await this.requireRecord(X);return Sd(G.daemonUrl,G.token,Y)}async delete(X){let Y=await this.getRecord(X);if(this.records.delete(X),Y)this.closeForwarder(Y.daemonForward),this.metrics?.active.add(-1,Gy0(Y.tenant));if(await this.deleteHttpRouteIfManaged(X).catch((G)=>{console.warn(`[${iW}] HTTPRoute delete failed for ${X}: ${G instanceof Error?G.message:String(G)}`)}),await hm(this.kubeConfig,this.namespace,X),this.stateStore)if(Y)await this.stateStore.delete(Y.id,oz);else await this.stateStore.deleteByHandle(oz,X)}async alive(X){return await gm(this.kubeConfig,this.namespace,X)!==void 0}watchClaimLifecycle(X,Y){return DJ8({kc:this.kubeConfig,namespace:this.namespace,claimName:X,signal:Y})}async getPreviewUrl(X){let Y=await this.getRecord(X);if(!Y)return null;return this.composePreviewUrl(Y)}async proxyDaemonRequest(X,Y,G){let Q=await this.getRecord(X);if(!Q)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});let J=performance.now(),W=0;try{let Z=await kd(Q.daemonUrl,Q.token,Y,G);return W=Z.status,Z}finally{this.recordProxyDuration("daemon",W,Q,performance.now()-J)}}async resolvePreviewUpstreamUrl(X){if(this.previewUrlPattern)return`http://${X}.${this.namespace}.svc.cluster.local:${um}`;let Y=await this.getRecord(X);if(Y)return Y.daemonUrl;let G=await this.resurrectByHandle(X);return G?G.daemonUrl:null}async proxyPreviewRequest(X,Y){let G=performance.now(),Q=this.records.get(X)??null,J=0;try{let W=await this.resolvePreviewUpstreamUrl(X);if(!W)return J=404,Xy0(404,{error:"sandbox not found"});let Z=new URL(Y.url);if((Z.pathname==="/_decopilot_vm"||Z.pathname.startsWith("/_decopilot_vm/"))&&Y.method!=="GET")return J=404,Xy0(404,{error:"not found"});let K=(O)=>`${O}${Z.pathname}${Z.search}`,H=new Headers(Y.headers);for(let O of gQ7)H.delete(O);let U=Y.method!=="GET"&&Y.method!=="HEAD",B={method:Y.method,headers:H,body:U?Y.body:void 0,redirect:"manual",signal:Y.signal,duplex:U?"half":void 0},N;try{N=await fetch(K(W),B)}catch(O){let w=`${W}${Z.pathname}`;if(console.warn(`[${iW}] preview fetch to ${w} failed: ${O instanceof Error?O.message:String(O)}`),Y.method==="GET"||Y.method==="HEAD"){if(this.invalidateRecord(X),await this.resurrectByHandle(X).catch(()=>null)){let P=await this.resolvePreviewUpstreamUrl(X);if(P)try{N=await fetch(K(P),B);let q=new Headers;for(let[j,M]of N.headers.entries())if(!LJ8.includes(j.toLowerCase()))q.set(j,M);return J=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:q})}catch(q){console.warn(`[${iW}] preview fetch retry to ${w} failed: ${q instanceof Error?q.message:String(q)}`)}}}else this.invalidateRecord(X);return J=502,Xy0(502,{error:"sandbox daemon unreachable"})}let z=new Headers;for(let[O,w]of N.headers.entries())if(!LJ8.includes(O.toLowerCase()))z.set(O,w);return J=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:z})}finally{this.recordProxyDuration("preview",J,Q,performance.now()-G,X)}}async ensureLocked(X,Y,G,Q){if(G.image)console.warn(`[${iW}] opts.image ignored (template ${this.sandboxTemplateName} pins image): got ${G.image}`);if(Q){let Z=await Q.get(X,oz);if(Z){let $=await this.rehydrate(X,Y,Z);if($)return this.finish($,Q,!1,!0,"resume");await Q.delete(X,oz)}}let J=await gm(this.kubeConfig,this.namespace,Y).catch(()=>{return});if(J)if(J.metadata?.deletionTimestamp)await dc1(this.kubeConfig,this.namespace,Y).catch((Z)=>{console.warn(`[${iW}] wait for terminating claim ${Y} failed: ${Z instanceof Error?Z.message:String(Z)}`)});else{let Z=await this.adopt(X,Y,J).catch(($)=>{return console.warn(`[${iW}] adopt ${Y} failed, recreating: ${$ instanceof Error?$.message:String($)}`),null});if(Z)return this.finish(Z,Q,!0,!0,"adopt");await hm(this.kubeConfig,this.namespace,Y).catch(()=>{}),await dc1(this.kubeConfig,this.namespace,Y).catch(($)=>{console.warn(`[${iW}] wait for deleted claim ${Y} failed: ${$ instanceof Error?$.message:String($)}`)})}let W=await this.provision(X,Y,G);return this.finish(W,Q,!0,!1,"fresh")}async finish(X,Y,G,Q,J){let W=this.records.has(X.handle);if(this.records.set(X.handle,X),G)await this.persist(Y,X);if(Q)await $J8(this.kubeConfig,this.namespace,X.handle,this.computeShutdownTime()).catch((Z)=>console.warn(`[${iW}] TTL refresh failed for ${X.handle}: ${Z instanceof Error?Z.message:String(Z)}`));if(this.metrics){let Z=Gy0(X.tenant);if(this.metrics.ensureOutcome.add(1,{...Z,outcome:J}),!W)this.metrics.active.add(1,Z)}return this.toSandbox(X)}buildEnvMap(X,Y){let G={},Q=[];for(let[Z,$]of Object.entries(X.env??{}))if(xQ7.has(Z))Q.push(Z);else G[Z]=$;if(Q.length>0)console.warn(`[${iW}] opts.env keys overlap reserved bootstrap names and were dropped: ${Q.join(",")}`);let J=X.repo,W=J?J.displayName??sQ7(J.cloneUrl):null;return{...G,DAEMON_TOKEN:Y.token,DAEMON_BOOT_ID:Y.daemonBootId,APP_ROOT:Y.workdir,PROXY_PORT:String(um),DEV_PORT:String(X.workload?.devPort??bQ7),RUNTIME:X.workload?.runtime??"node",...J?{CLONE_URL:J.cloneUrl,REPO_NAME:W??"",BRANCH:J.branch??"",GIT_USER_NAME:J.userName,GIT_USER_EMAIL:J.userEmail}:{},...X.workload?.packageManager?{PACKAGE_MANAGER:X.workload.packageManager}:{}}}buildClaim(X,Y,G){let Q=this.buildEnvMap(Y,G);return{apiVersion:`${TG.CLAIM_API_GROUP}/${TG.CLAIM_API_VERSION}`,kind:"SandboxClaim",metadata:{name:X,namespace:this.namespace,labels:{"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[FB.env]:this.envName}:{},...Yy0(Y.tenant)}},spec:{sandboxTemplateRef:{name:this.sandboxTemplateName},additionalPodMetadata:{labels:Yy0(Y.tenant,{[FB.role]:"claimed",[FB.sandboxHandle]:X,...this.envName?{[FB.env]:this.envName}:{}})},env:Object.entries(Q).sort(([J],[W])=>J<W?-1:J>W?1:0).map(([J,W])=>({name:J,value:W})),warmpool:"none",lifecycle:{shutdownPolicy:"Delete",shutdownTime:this.computeShutdownTime()}}}}async provision(X,Y,G){let Q=this.tokenGenerator(),J=CQ7(),W=eb0,Z=this.buildClaim(Y,G,{token:Q,daemonBootId:J,workdir:W});try{await o31(this.kubeConfig,this.namespace,Z)}catch(U){if(U instanceof a31)await dc1(this.kubeConfig,this.namespace,Y),await o31(this.kubeConfig,this.namespace,Z);else throw U}let{podName:$}=await pc1(this.kubeConfig,this.namespace,Y);try{await this.ensureServicePortForHandle(Y),await this.ensureHttpRouteForHandle(Y,G.tenant??null)}catch(U){throw await hm(this.kubeConfig,this.namespace,Y).catch(()=>{}),U}let K=await this.openForwarder($,um,Y),H=`http://127.0.0.1:${K.localPort}`;try{await R$1(H)}catch(U){throw this.closeForwarder(K),await this.deleteHttpRouteIfManaged(Y).catch(()=>{}),await hm(this.kubeConfig,this.namespace,Y).catch(()=>{}),U}return{id:X,handle:Y,podName:$,token:Q,workdir:W,daemonUrl:H,daemonForward:K,workload:G.workload??null,daemonBootId:J,tenant:G.tenant??null,ensureOpts:rQ7(G)}}async ensureServicePortForHandle(X){if(!this.previewGateway||!this.previewUrlPattern)return;await NJ8(this.kubeConfig,this.namespace,X,{name:"daemon",port:um,targetPort:um})}async ensureHttpRouteForHandle(X,Y){if(!this.previewGateway||!this.previewUrlPattern)return;let G=oQ7(this.previewUrlPattern,X);if(!G)throw new oY(`Unable to derive preview hostname for ${X} from pattern: ${this.previewUrlPattern}`);let Q={apiVersion:`${s31.API_GROUP}/${s31.API_VERSION}`,kind:"HTTPRoute",metadata:{name:X,namespace:this.namespace,labels:Yy0(Y??void 0,{[FB.role]:"claimed",[FB.sandboxHandle]:X,"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[FB.env]:this.envName}:{}})},spec:{parentRefs:[{kind:"Gateway",group:"gateway.networking.k8s.io",name:this.previewGateway.name,namespace:this.previewGateway.namespace}],hostnames:[G],rules:[{backendRefs:[{group:"",kind:"Service",name:X,port:um}]}]}};await cc1(this.kubeConfig,this.namespace,Q)}async deleteHttpRouteIfManaged(X){if(!this.previewGateway)return;await ic1(this.kubeConfig,this.namespace,X)}async rehydrate(X,Y,G){let Q=G.state;if(!Q.podName||!Q.token)return null;let J=await gm(this.kubeConfig,this.namespace,Y).catch(()=>{return});if(!J||!EJ8(J))return null;let W=PJ8(J)??Q.podName,Z=await this.openAndProbeDaemon(W,Y);if(!Z)return null;if(Q.daemonBootId&&Q.daemonBootId!==Z.bootId)console.warn(`[${iW}] daemon restart detected (handle=${Y}): stored bootId=${Q.daemonBootId} live bootId=${Z.bootId}`);return{id:X,handle:Y,podName:W,token:Q.token,workdir:Q.workdir??eb0,daemonUrl:Z.daemonUrl,daemonForward:Z.daemonForward,workload:Q.workload??null,daemonBootId:Z.bootId,tenant:Q.tenant??null,ensureOpts:Q.ensureOpts??null}}async adopt(X,Y,G){if(!EJ8(G))return null;let Q=PJ8(G);if(!Q)return null;let J=dQ7(G);if(!J)return null;let W=await this.openAndProbeDaemon(Q,Y);if(!W)return null;let Z=tQ7(G);if(this.previewGateway)await this.ensureServicePortForHandle(Y).catch(($)=>{console.warn(`[${iW}] Service port backfill failed for ${Y}: ${$ instanceof Error?$.message:String($)}`)}),await this.ensureHttpRouteForHandle(Y,Z).catch(($)=>{console.warn(`[${iW}] HTTPRoute backfill failed for ${Y}: ${$ instanceof Error?$.message:String($)}`)});return{id:X,handle:Y,podName:Q,token:J,workdir:eb0,daemonUrl:W.daemonUrl,daemonForward:W.daemonForward,workload:null,daemonBootId:W.bootId,tenant:Z,ensureOpts:null}}async openAndProbeDaemon(X,Y){let G=await this.openForwarder(X,um,Y).catch(()=>null);if(!G)return null;let Q=`http://127.0.0.1:${G.localPort}`,J=await rL(Q);if(!J)return this.closeForwarder(G),null;return{daemonForward:G,daemonUrl:Q,bootId:J.bootId}}async getRecord(X){let Y=this.records.get(X);if(Y)return Y;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(oz,X);if(!G)return null;let Q=await this.rehydrate(G.id,X,G);if(Q)this.records.set(X,Q);return Q}async resurrectByHandle(X){if(!this.stateStore)return null;let Y=await this.stateStore.getByHandle(oz,X);if(!Y)return null;let G=Y.state.ensureOpts;if(!G)return null;return await this.ensure(Y.id,G),this.records.get(X)??null}async requireRecord(X){let Y=await this.getRecord(X);if(Y)return Y;let G=await this.resurrectByHandle(X);if(G)return G;throw Error(`unknown sandbox handle ${X}`)}invalidateRecord(X){let Y=this.records.get(X);if(!Y)return;this.records.delete(X),this.closeForwarder(Y.daemonForward)}recordProxyDuration(X,Y,G,Q,J){if(!this.metrics)return;this.metrics.proxyDurationMs.record(Q,{...Gy0(G?.tenant??null),source:X,sandbox_handle:G?.handle??J??"",status_code:Y||0})}computeHandle(X,Y){return tW(X,Y)}composePreviewUrl(X){if(this.previewUrlPattern)return LB(this.previewUrlPattern,X.handle);return`http://127.0.0.1:${X.daemonForward.localPort}/`}toSandbox(X){return{handle:X.handle,workdir:X.workdir,previewUrl:this.composePreviewUrl(X)}}async persist(X,Y){if(!X)return;let G={podName:Y.podName,token:Y.token,workdir:Y.workdir,workload:Y.workload,daemonBootId:Y.daemonBootId,tenant:Y.tenant,...Y.ensureOpts?{ensureOpts:Y.ensureOpts}:{}};await X.put(Y.id,oz,{handle:Y.handle,state:G})}computeShutdownTime(){return new Date(Date.now()+this.idleTtlMs).toISOString()}openForwarder(X,Y,G=X){let Q=cQ7(G,Y);return new Promise((J,W)=>{let Z=($,K)=>{let H=AJ8.createServer((U)=>this.handleForwardedConnection(U,X,Y,G));H.once("error",(U)=>{if(U.code==="EADDRINUSE"&&K<uQ7){try{H.close()}catch{}let B=Qy0+($-Qy0+1)%TJ8;Z(B,K+1);return}W(U)}),H.listen($,"127.0.0.1",()=>{let U=H.address();if(!U||typeof U==="string"){H.close(),W(Error("port-forward listener failed to bind"));return}J({server:H,localPort:U.port})})};Z(Q,0)})}handleForwardedConnection(X,Y,G,Q){let J=new vQ7,W=null,Z=!1,$=()=>{if(Z)return;if(Z=!0,J.destroy(),W)try{W.close()}catch{}if(!X.destroyed)X.destroy()};X.pipe(J),X.on("error",$),X.on("close",$),this.portForward.portForward(this.namespace,Y,[G],X,null,J).then((K)=>{let H=typeof K==="function"?K():K;if(!H){$();return}if(W=H,W.on("close",$),W.on("error",()=>{this.invalidateRecord(Q),$()}),Z)try{W.close()}catch{}}).catch((K)=>{console.warn(`[${iW}] port-forward to ${Y}:${G} failed: ${K instanceof Error?K.message:String(K)}`),this.invalidateRecord(Q),$()})}closeForwarder(X){X.server.close((Y)=>{if(Y)console.warn(`[${iW}] port-forward close on :${X.localPort} errored: ${Y instanceof Error?Y.message:String(Y)}`)})}close(){if(this.closed)return;this.closed=!0;for(let X of this.records.values())this.closeForwarder(X.daemonForward);this.records.clear()}}function lQ7(X){return{active:X.createUpDownCounter("studio.sandbox.active",{description:"Active sandbox count, by runner kind and owning org. Cross-checks the cAdvisor-derived count from the cluster \u2014 divergence between the two indicates orphaned claims (mesh deleted but K8s didn't reap) or unattributed pods.",unit:"{sandbox}"}),ensureOutcome:X.createCounter("studio.sandbox.ensure.outcome",{description:"Outcome of each ensure() call: fresh provision, resume from state-store after restart, or adopt of a cluster-side claim mesh didn't know about. Cold-start ratio is the primary input for warm-pool sizing.",unit:"{call}"}),proxyDurationMs:X.createHistogram("studio.sandbox.proxy.duration_ms",{description:"Wall-clock latency of mesh-mediated requests to the sandbox daemon: tool exec proxies (source=daemon) and preview iframe traffic (source=preview).",unit:"ms"})}}function mQ7(){let X=new gs;return X.loadFromDefault(),X}function EJ8(X){return Boolean(X.status?.conditions?.some((Y)=>Y.type==="Ready"&&Y.status==="True"))}function dQ7(X){let Y=X.spec?.env;if(!Y)return null;for(let G of Y)if(G.name==="DAEMON_TOKEN"&&G.value)return G.value;return null}function PJ8(X){return X.metadata?.annotations?.[TG.POD_NAME_ANNOTATION]??X.metadata?.name??null}function cQ7(X,Y){let G=SQ7("sha256").update(`${X}:${Y}`).digest();return Qy0+G.readUInt32BE(0)%TJ8}function Xy0(X,Y){return new Response(JSON.stringify(Y),{status:X,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function qJ8(X){let Y=X.slice(0,pQ7);return iQ7.test(Y)?Y:""}function aQ7(X){if(X===void 0)return null;let Y=X.trim();if(Y==="")return null;if(!nQ7.test(Y))throw Error(`AgentSandboxRunner: envName=${JSON.stringify(Y)} is not a valid DNS-label-safe environment name (lowercase alphanumeric or '-', starts with a letter, ends alphanumeric, \u226432 chars). Mesh sets this from STUDIO_ENV; check the studio chart's configMap.`);return Y}function Yy0(X,Y={}){let G={...Y};if(X){let Q=qJ8(X.orgId),J=qJ8(X.userId);if(Q)G[FB.orgId]=Q;if(J)G[FB.userId]=J}return G}function tQ7(X){let Y=X.metadata?.labels;if(!Y)return null;let G=Y[FB.orgId],Q=Y[FB.userId];if(!G||!Q)return null;return{orgId:G,userId:Q}}function Gy0(X){return{org_id:X?.orgId??"",user_id:X?.userId??"",runner_kind:oz}}function rQ7(X){let Y={};if(X.repo)Y.repo=X.repo;if(X.workload)Y.workload=X.workload;if(X.env&&Object.keys(X.env).length>0)Y.env=X.env;if(X.tenant)Y.tenant=X.tenant;return Object.keys(Y).length>0?Y:null}function oQ7(X,Y){try{return new URL(LB(X,Y)).hostname||null}catch{return null}}function sQ7(X){try{let Y=new URL(X);return Y.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||Y.hostname}catch{return X}}var oz="agent-sandbox",iW="AgentSandboxRunner",_Q7="agent-sandbox-system",fQ7="studio-sandbox",um=9000,bQ7=3000,eb0="/app",yQ7=32,xQ7,hQ7=900000,gQ7,LJ8,Qy0=40000,TJ8=1e4,uQ7=256,FB,iQ7,pQ7=63,nQ7;var IJ8=D(()=>{mb0();S$1();_d();nc1();t31();wJ8();xQ7=new Set(["DAEMON_TOKEN","DAEMON_BOOT_ID","APP_ROOT","PROXY_PORT","DEV_PORT","RUNTIME","CLONE_URL","REPO_NAME","BRANCH","GIT_USER_NAME","GIT_USER_EMAIL","PACKAGE_MANAGER"]),gQ7=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length","upgrade"],LJ8=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];FB={role:"studio.decocms.com/role",sandboxHandle:"studio.decocms.com/sandbox-handle",orgId:"studio.decocms.com/org-id",userId:"studio.decocms.com/user-id",env:"studio.decocms.com/env"},iQ7=/^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$/;nQ7=/^[a-z]([a-z0-9-]{0,30}[a-z0-9])?$/});var VJ8={};j0(VJ8,{waitForSandboxReady:()=>pc1,getSandboxClaim:()=>gm,getHttpRoute:()=>BJ8,deleteSandboxClaim:()=>hm,deleteHttpRoute:()=>ic1,createSandboxClaim:()=>o31,createHttpRoute:()=>cc1,SandboxTimeoutError:()=>cs,SandboxError:()=>oY,KubeConfig:()=>gs,K8S_CONSTANTS:()=>TG,HTTPROUTE_CONSTANTS:()=>s31,AgentSandboxRunner:()=>Jy0});var jJ8=D(()=>{mb0();t31();nc1();IJ8()});var By0={};j0(By0,{subscribeLifecycle:()=>Uy0,getSharedRunnerIfInit:()=>Ky0,getSharedRunner:()=>lm,getRunnerByKind:()=>is,getOrInitSharedRunner:()=>$y0,asLifecycleWatchable:()=>Fy0,asDockerRunner:()=>Hy0,__resetSharedLifecyclesForTesting:()=>ZJ7});function RJ8(X,Y){let G=Wy0[X];if(G)return Promise.resolve(G);let Q=Zy0[X];if(Q)return Q;let J=Y().then((W)=>{return Wy0[X]=W,W}).finally(()=>{delete Zy0[X]});return Zy0[X]=J,J}function eQ7(){let X=process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN;return X&&X.trim()!==""?X:void 0}function XJ7(){let X=process.env.STUDIO_SANDBOX_TEMPLATE_NAME;return X&&X.trim()!==""?X:void 0}function YJ7(){let X=process.env.STUDIO_ENV;return X&&X.trim()!==""?X:void 0}function GJ7(){let X=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME?.trim(),Y=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE?.trim();if(!X&&!Y)return;if(!X||!Y)throw Error("STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME and STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE must both be set, or both unset. Half-configured per-claim HTTPRoute routing would silently fail to attach.");return{name:X,namespace:Y}}async function SJ8(X,Y){let G=new A31(Y),Q=eQ7();switch(X){case"host":{let{HostSandboxRunner:J}=await Promise.resolve().then(() => (ZF(),sL)),{getSettings:W}=await Promise.resolve().then(() => (C9(),Tl0));return new J({homeDir:W().dataDir,stateStore:G,previewUrlPattern:Q})}case"docker":return new JF({stateStore:G,previewUrlPattern:Q});case"freestyle":{let{FreestyleSandboxRunner:J}=await Promise.resolve().then(() => (b58(),f58));return new J({stateStore:G})}case"agent-sandbox":{let{AgentSandboxRunner:J}=await Promise.resolve().then(() => (jJ8(),VJ8));return new J({stateStore:G,previewUrlPattern:Q,sandboxTemplateName:XJ7(),envName:YJ7(),previewGateway:GJ7(),meter:ZU})}default:throw Error(`Unknown runner kind: ${String(X)}`)}}function lm(X){return is(X,EB())}function is(X,Y){return RJ8(Y,()=>SJ8(Y,X.db))}async function $y0(){let X;try{X=EB()}catch(Y){return console.warn("[lifecycle] cannot resolve sandbox runner:",Y instanceof Error?Y.message:String(Y)),null}return RJ8(X,()=>SJ8(X,t7().db))}function Ky0(){let X;try{X=EB()}catch{return null}return Wy0[X]??null}function Hy0(X){return X instanceof JF?X:null}function Fy0(X){if(!X)return null;if(X.kind!=="agent-sandbox")return null;if(typeof X.watchClaimLifecycle!=="function")return null;return X}function Uy0(X,Y,G){let Q=vT.get(Y);if(Q){if(Q.terminated){if(Q.lastPhase)try{G(Q.lastPhase)}catch{}return{unsubscribe:QJ7}}if(Q.listeners.add(G),Q.lastPhase)try{G(Q.lastPhase)}catch{}return MJ8(Y,Q,G)}let J=new AbortController,W={lastPhase:null,terminated:!1,listeners:new Set([G]),abort:J};return vT.set(Y,W),JJ7(X,Y,W),MJ8(Y,W,G)}function QJ7(){}function MJ8(X,Y,G){return{unsubscribe(){if(vT.get(X)!==Y)return;if(Y.listeners.delete(G),Y.listeners.size===0)vT.delete(X),Y.abort.abort()}}}async function JJ7(X,Y,G){let Q=null;try{for await(let J of X.watchClaimLifecycle(Y,G.abort.signal)){if(G.abort.signal.aborted)break;let W=J;G.lastPhase=W;let Z=W.kind==="ready"||W.kind==="failed";if(Z)G.terminated=!0;let $=Array.from(G.listeners);for(let K of $)try{K(W)}catch{}if(Z)break}}catch(J){Q=J}finally{if(!G.terminated&&!G.abort.signal.aborted&&G.listeners.size>0){let J={kind:"failed",reason:"unknown",message:Q instanceof Error?Q.message:"Lifecycle watcher ended unexpectedly"};G.lastPhase=J,G.terminated=!0;for(let W of Array.from(G.listeners))try{W(J)}catch{}}if(vT.get(Y)===G)vT.delete(Y)}}function ZJ7(){for(let X of vT.values())X.abort.abort();vT.clear()}var Wy0,Zy0,vT;var ML=D(()=>{ZF();WU();T$();D_0();Wy0={},Zy0={};vT=new Map});async function kJ8(X,Y){B0(Y);let G=s1(Y),Q=w4(Y);if(!Q)throw Error("User ID required");let J=await Y.storage.virtualMcps.findById(X.virtualMcpId);if(!J||J.organization_id!==G.id)throw Error("Virtual MCP not found");let W=J.metadata??{},Z=As(LT(W),Q,X.branch),$=EB();if(Z&&(Z.runnerKind??"freestyle")===$)return Z;await CJ8(Y,Z,$);let K=W.githubRepo??null,{entry:H}=await vJ8({ctx:Y,userId:Q,orgId:G.id,virtualMcpId:X.virtualMcpId,branch:X.branch,metadata:W,githubRepo:K,existing:Z});return H}async function CJ8(X,Y,G){if(!Y)return;let Q=Y.runnerKind??"freestyle";if(Q===G)return;if(Q==="freestyle")return;try{await(await is(X,Q)).delete(Y.vmId)}catch(J){console.error(`[VM_START] stale ${Q} ${Y.vmId}: ${J instanceof Error?J.message:String(J)}`)}}async function vJ8(X){let{ctx:Y,userId:G,orgId:Q,virtualMcpId:J,branch:W,metadata:Z,githubRepo:$,existing:K}=X;if($&&!$.connectionId)throw Error("GitHub connection id missing on virtual MCP metadata");let{runtime:H,packageManager:U,port:B}=xp4(Z),N;if($){let{cloneUrl:V,gitUserName:R,gitUserEmail:C}=await hp4($.connectionId,$.owner,$.name,Y.db,Y.vault);if(!U){let _=await mp4($.connectionId,$.owner,$.name,Y.db,Y.vault);if(_)U=_.packageManager,H=q31[_.packageManager].runtime,B=_.devPort??B,await WJ7(Y,J,G,_.packageManager,_.devPort)}N={cloneUrl:V,userName:R,userEmail:C,branch:W,displayName:`${$.owner}/${$.name}`}}let z=H&&U?{runtime:H,packageManager:U,devPort:Number(B)}:void 0,O=fd({orgId:Q,virtualMcpId:J,branch:W}),w=await lm(Y),E=await w.ensure({userId:G,projectRef:O},{repo:N,workload:z,tenant:{orgId:Q,userId:G}}),q=!!K&&K.vmId===E.handle&&K?.createdAt?K.createdAt:Date.now(),j={vmId:E.handle,previewUrl:E.previewUrl,runnerKind:w.kind,createdAt:q};await bp4(Y.storage.virtualMcps,J,G,G,W,j);let M=!K||K.vmId!==E.handle;return{entry:j,isNewVm:M}}async function WJ7(X,Y,G,Q,J){let W=await X.storage.virtualMcps.findById(Y);if(!W)return;let Z=W.metadata??{};await X.storage.virtualMcps.update(Y,G,{metadata:{...Z,runtime:{selected:Q,port:J}}})}var Ny0;var zy0=D(()=>{H0();ZF();x0();O_0();gp4();dp4();wk0();z_0();ML();Ny0=m1({name:"VM_START",description:"Start a sandbox with the connected GitHub repo and dev server.",annotations:{title:"Start VM Preview",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({virtualMcpId:F.string().describe("Virtual MCP ID"),branch:F.string().min(1).optional().describe("Optional git branch to check out. When omitted the handler generates `deco/<adjective>-<noun>` and uses it. The resolved branch is returned in the response so callers can persist it.")}),outputSchema:F.object({previewUrl:F.string().nullable(),vmId:F.string(),branch:F.string(),isNewVm:F.boolean(),runnerKind:F.enum(["host","docker","freestyle","agent-sandbox"])}),handler:async(X,Y)=>{let G=X.branch??VS1(),{metadata:Q,userId:J,organization:W,entry:Z}=await Dk1({virtualMcpId:X.virtualMcpId,branch:G},Y),$=Q.githubRepo;if(!$)throw Error("No GitHub repo connected");let K=EB();await CJ8(Y,Z,K);let{entry:H,isNewVm:U}=await vJ8({ctx:Y,userId:J,orgId:W.id,virtualMcpId:X.virtualMcpId,branch:G,metadata:Q,githubRepo:$,existing:Z});return{...H,branch:G,isNewVm:U,runnerKind:K}}})});var Oy0;var _J8=D(()=>{H0();x0();O_0();ML();Oy0=m1({name:"VM_DELETE",description:"Delete a sandbox.",annotations:{title:"Delete VM Preview",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({virtualMcpId:F.string().describe("Virtual MCP ID that owns this VM"),branch:F.string().min(1).describe("Branch whose vm should be deleted (vmMap[userId][branch])")}),outputSchema:F.object({success:F.boolean()}),handler:async(X,Y)=>{let G;try{G=await Dk1(X,Y)}catch($){if($ instanceof Error&&$.message==="Virtual MCP not found")return{success:!0};throw $}let{entry:Q,userId:J}=G;if(!Q)return{success:!0};await yp4(Y.storage.virtualMcps,X.virtualMcpId,J,J,X.branch);let W=Q.runnerKind??"freestyle";return await(await is(Y,W)).delete(Q.vmId).catch(($)=>console.error(`[VM_DELETE] ${W} ${Q.vmId}: ${$ instanceof Error?$.message:String($)}`)),{success:!0}}})});var fJ8=D(()=>{zy0();_J8()});var KJ7="https://api.github.com",Dy0;var bJ8=D(()=>{H0();x0();pI1();mR();Dy0=m1({name:"GITHUB_LIST_USER_ORGS",description:"List GitHub App installations (orgs/accounts) accessible to the authenticated user.",annotations:{title:"List GitHub User Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({connectionId:F.string().describe("ID of the mcp-github connection to use")}),outputSchema:F.object({installations:F.array(F.object({installationId:F.number(),login:F.string(),avatarUrl:F.string(),type:F.string()})),appSlug:F.string().optional()}),handler:async(X,Y)=>{await Y.access.check();let G=new I3(Y.db,Y.vault),Q=await G.get(X.connectionId);if(!Q)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let J=Q.accessToken;if(rY1(Q)&&G.isExpired(Q,iI1)){let U=await oY1(Q,G);if(!U)throw Error(BM);J=U,Q=await G.get(X.connectionId)??Q}let W=[],Z,$=1,K=100,H=async(U)=>fetch(`${KJ7}/user/installations?per_page=${K}&page=${$}`,{headers:{Authorization:`Bearer ${U}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}});while(!0){let U=await H(J);if(U.status===401){let N=await G.get(X.connectionId);if(!N||!rY1(N))throw Error(BM);let z=await oY1(N,G);if(!z)throw Error(BM);if(J=z,U=await H(J),U.status===401)throw Error(BM)}if(!U.ok)throw Error(`GitHub /user/installations failed: ${U.status}`);let B=await U.json();for(let N of B.installations){if(!Z)Z=N.app_slug??N.app?.slug;W.push({installationId:N.id,login:N.account.login,avatarUrl:N.account.avatar_url,type:N.account.type})}if(B.installations.length<K)break;$++}return{installations:W,...Z?{appSlug:Z}:{}}}})});var yJ8=D(()=>{bJ8()});var AS1={};j0(AS1,{managementMCP:()=>Js,listManagementTools:()=>BJ7,ALL_TOOLS:()=>xJ8});async function BJ7(X){let Y=await Js(X),[G,Q]=UY1.createLinkedPair();await Y.connect(Q);let J=new hY({name:"tools-hydration",version:"1.0.0"});try{return await J.connect(G),(await J.listTools()).tools}finally{await J.close().catch(()=>{})}}var FJ7,UJ7,xJ8,Js=async(X)=>{let Y=null;if(X.organization){let Z=await X.storage.organizationSettings.get(X.organization.id),$=await X.storage.virtualMcps.list(X.organization.id),K=new Set(Z?.enabled_plugins??[]);for(let H of $){let U=H.metadata?.enabled_plugins;if(U&&Array.isArray(U))for(let B of U)K.add(B)}Y=K.size>0?[...K]:null}let G=zr6(xJ8,Y),Q=new tD({name:"mcp-cms-management",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}}});for(let Z of G){let $=Z.inputSchema&&typeof Z.inputSchema==="object"&&"shape"in Z.inputSchema?Z.inputSchema:F.object({}),K=Z.outputSchema&&typeof Z.outputSchema==="object"&&"shape"in Z.outputSchema?Z.outputSchema:void 0,H=$.shape,U=K?.shape;Q.registerTool(Z.name,{description:Z.description??"",inputSchema:H,outputSchema:U,annotations:Z.annotations,_meta:Z._meta},async(B)=>{X.access.setToolName(Z.name);try{let N=await Z.execute(B,X);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let J=Tx4();for(let Z of J)Q.registerPrompt(Z.name,{title:Z.title,description:Z.description},()=>({messages:[{role:"user",content:{type:"text",text:Z.text}}]}));if(X.organization?.id){let Z=await X.storage.brandContext.list(X.organization.id),$=new Set;for(let K of Z){let H=K.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),U=H?`brand-${H}`:`brand-${K.id}`;if($.has(U))U=`${U}-${K.id.slice(0,8)}`;$.add(U);let B=[`# Brand: ${K.name}`,"",`**Domain:** ${K.domain}`,"","## Overview",K.overview];if(K.colors){let z=Object.entries(K.colors).filter(([,O])=>O);if(z.length>0){B.push("","## Colors");for(let[O,w]of z)B.push(`- **${O}:** ${w}`)}}if(K.fonts){let z=Object.entries(K.fonts).filter(([,O])=>O);if(z.length>0){B.push("","## Fonts");for(let[O,w]of z)B.push(`- ${w} (${O})`)}}if(K.logo)B.push("",`**Logo:** ${K.logo}`);if(K.favicon)B.push(`**Favicon:** ${K.favicon}`);if(K.ogImage)B.push(`**OG Image:** ${K.ogImage}`);if(K.images&&K.images.length>0){B.push("","## Images");for(let z of K.images){let O=Object.entries(z).map(([w,E])=>`${w}: ${E}`).join(", ");B.push(`- ${O}`)}}let N=B.join(`
|
|
5255
|
+
`))>=0){let K=Q.slice(0,$).trim();if(Q=Q.slice($+1),!K)continue;yield JSON.parse(K)}}let J=Q.trim();if(J)yield JSON.parse(J)}finally{Y.releaseLock()}}var cb0,WJ8,KJ8="gateway.networking.k8s.io",HJ8="v1",ab0="httproutes",FJ8,s31,PQ7="mesh-sandbox-runner";var nc1=D(()=>{t31();cb0=class cb0 extends Error{status;body;constructor(X,Y,G){super(G);this.status=X;this.body=Y;this.name="KubeHttpError"}};WJ8=`/apis/${TG.CLAIM_API_GROUP}/${TG.CLAIM_API_VERSION}/namespaces`;FJ8=`/apis/${KJ8}/${HJ8}/namespaces`;s31={API_GROUP:KJ8,API_VERSION:HJ8,PLURAL:ab0}});async function*DJ8(X){let Y=X.now??(()=>Date.now()),G=Y(),Q=X.schedulingTimeoutMs??TQ7,J={pod:{},sandbox:{},events:{hasPulling:!1,hasPulled:!1},startedAt:G},W=[],Z=null,$=!1,K=(E)=>{if($)return;if(Z){let P=Z;Z=null,P(E)}else W.push(E)},H=()=>{if(W.length>0)return Promise.resolve(W.shift());if($)return Promise.resolve(null);return new Promise((E)=>{Z=E})},U=()=>{if($)return;if($=!0,Z){let E=Z;Z=null,E(null)}},B=new AbortController,N=()=>{B.abort(),U()};if(X.signal)if(X.signal.aborted)B.abort(),U();else X.signal.addEventListener("abort",N,{once:!0});let z=Math.max(0,Q-(Y()-G)),O=setTimeout(()=>K("tick"),z+100),w=Promise.allSettled([IQ7(X.kc,X.namespace,X.claimName,B.signal,J,K,Y),jQ7(X.kc,X.namespace,X.claimName,B.signal,J,K),MQ7(X.kc,X.namespace,X.claimName,B.signal,J,K,Y)]);try{let E=null,P=-1,q=zJ8(J,Q,Y);if(E=ob0(q),!rb0(q))P=OJ8(q);if(yield q,rb0(q))return;while(!$){if(await H()===null)break;let M=zJ8(J,Q,Y);if(rb0(M)){let C=ob0(M);if(C!==E)E=C,yield M;return}let V=OJ8(M);if(V<P)continue;let R=ob0(M);if(R!==E)E=R,P=V,yield M}}finally{if(clearTimeout(O),B.abort(),X.signal)X.signal.removeEventListener("abort",N);U(),await w.catch(()=>{})}}function zJ8(X,Y,G){let{pod:Q,sandbox:J,events:W,startedAt:Z}=X;if(J.ready)return{kind:"ready"};let $=Q.containerWaitingReason;if($==="ImagePullBackOff"||$==="ErrImagePull")return{kind:"failed",reason:"image-pull-backoff",message:"Sandbox image failed to download. The cluster may be missing pull credentials or the image tag may not exist."};if($==="CrashLoopBackOff")return{kind:"failed",reason:"crash-loop-backoff",message:"Sandbox crashed during startup and is now in CrashLoopBackOff. Check pod logs."};if(!Q.scheduled&&W.lastFailedSchedulingAt!==void 0&&G()-Z>Y)return{kind:"failed",reason:"scheduling-timeout",message:W.failedSchedulingMessage??`Pod could not be scheduled within ${Math.round(Y/1000)}s.`};if(Q.containerRunning&&!Q.containerReady)return{kind:"warming-daemon",since:Z};if(W.hasPulling&&!W.hasPulled)return{kind:"pulling-image",since:Z};if($==="ContainerCreating"||$==="PodInitializing"||Q.scheduled&&!Q.containerRunning)return{kind:"starting-container",since:Z};if(Q.scheduledFalseReason==="Unschedulable"||W.lastFailedSchedulingAt!==void 0&&!Q.scheduled)return{kind:"waiting-for-capacity",since:Z,message:W.failedSchedulingMessage??Q.scheduledFalseMessage,nodeClaim:W.nominatedNodeClaim};return{kind:"claiming",since:Z}}function rb0(X){return X.kind==="ready"||X.kind==="failed"}function OJ8(X){switch(X.kind){case"claiming":return 0;case"waiting-for-capacity":return 1;case"pulling-image":return 2;case"starting-container":return 3;case"warming-daemon":return 4;case"ready":case"failed":return 99}}function ob0(X){switch(X.kind){case"claiming":case"pulling-image":case"starting-container":case"warming-daemon":return X.kind;case"waiting-for-capacity":return`waiting-for-capacity:${X.message??""}:${X.nodeClaim??""}`;case"ready":return"ready";case"failed":return`failed:${X.reason}:${X.message}`}}async function IQ7(X,Y,G,Q,J,W,Z){let $=`/api/v1/namespaces/${encodeURIComponent(Y)}/pods?watch=true&labelSelector=${encodeURIComponent(`${qQ7}=${G}`)}`;return sb0({kc:X,path:$,signal:Q,label:`pod/${G}`,onEvent:(K)=>{if(K.type!=="ADDED"&&K.type!=="MODIFIED")return;let H=K.object;if(H.metadata?.name!==G)return;VQ7(H,J,Z),W("pod")}})}function VQ7(X,Y,G){let J=(X.status?.conditions??[]).find((Z)=>Z.type==="PodScheduled");if(J?.status==="True")Y.pod.scheduled=!0,Y.pod.scheduledFalseReason=void 0,Y.pod.scheduledFalseMessage=void 0;else if(J?.status==="False")Y.pod.scheduled=!1,Y.pod.scheduledFalseReason=J.reason,Y.pod.scheduledFalseMessage=J.message;let W=(X.status?.containerStatuses??[]).find((Z)=>Z.name===AQ7);if(W)Y.pod.containerWaitingReason=W.state?.waiting?.reason,Y.pod.containerRunning=!!W.state?.running,Y.pod.containerReady=W.ready===!0}async function jQ7(X,Y,G,Q,J,W){let Z=`/apis/${TG.SANDBOX_API_GROUP}/${TG.SANDBOX_API_VERSION}/namespaces/${encodeURIComponent(Y)}/${TG.SANDBOX_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`;return sb0({kc:X,path:Z,signal:Q,label:`sandbox/${G}`,onEvent:($)=>{if($.type!=="ADDED"&&$.type!=="MODIFIED")return;let H=$.object.status?.conditions?.find((U)=>U.type==="Ready");if(!H)return;if(H.status==="True")J.sandbox.ready=!0,J.sandbox.notReadyReason=void 0,J.sandbox.notReadyMessage=void 0;else J.sandbox.ready=!1,J.sandbox.notReadyReason=H.reason,J.sandbox.notReadyMessage=H.message;W("sandbox")}})}async function MQ7(X,Y,G,Q,J,W,Z){let $=`/api/v1/namespaces/${encodeURIComponent(Y)}/events?watch=true&fieldSelector=${encodeURIComponent(`involvedObject.name=${G},involvedObject.kind=Pod`)}`;return sb0({kc:X,path:$,signal:Q,label:`events/${G}`,onEvent:(K)=>{if(K.type!=="ADDED"&&K.type!=="MODIFIED")return;let H=K.object,U=H.reason;if(!U)return;switch(U){case"Pulling":J.events.hasPulling=!0;break;case"Pulled":J.events.hasPulling=!0,J.events.hasPulled=!0;break;case"FailedScheduling":J.events.lastFailedSchedulingAt=Z(),J.events.failedSchedulingMessage=H.message;break;case"Nominated":{let B=H.message?.match(/nodeclaim\/([\w-]+)/);if(B)J.events.nominatedNodeClaim=B[1];break}default:return}W("event")}})}async function sb0(X){let{kc:Y,path:G,signal:Q,label:J,onEvent:W}=X,Z=0;while(!Q.aborted){try{let K=await xm(Y,{method:"GET",path:G,signal:Q,headers:{accept:"application/json"}});if(!K.ok||!K.body){try{await K.body?.cancel()}catch{}throw Error(`watch handshake failed: ${K.status} ${K.statusText}`)}Z=0;for await(let H of tb0(K.body)){if(Q.aborted)return;try{W(H)}catch(U){console.warn(`[lifecycle-watcher] ${J} onEvent threw: ${U instanceof Error?U.message:String(U)}`)}}}catch(K){if(Q.aborted)return;let H=K instanceof Error?K.message:String(K);console.warn(`[lifecycle-watcher] ${J} watch ended: ${H}`)}if(Q.aborted)return;let $=Math.min(250*2**Z,5000);Z+=1,await RQ7($,Q)}}function RQ7(X,Y){return new Promise((G)=>{if(Y.aborted){G();return}let Q=setTimeout(()=>{Y.removeEventListener("abort",J),G()},X),J=()=>{clearTimeout(Q),G()};Y.addEventListener("abort",J,{once:!0})})}var qQ7="studio.decocms.com/sandbox-handle",AQ7="sandbox",TQ7=300000;var wJ8=D(()=>{t31();nc1()});import{createHash as SQ7,randomBytes as kQ7,randomUUID as CQ7}from"crypto";import*as AJ8 from"net";import{PassThrough as vQ7}from"stream";class Jy0{kind=oz;records=new Map;inflight=new oL;stateStore;previewUrlPattern;kubeConfig;portForward;namespace;sandboxTemplateName;envName;tokenGenerator;idleTtlMs;metrics;previewGateway;closed=!1;constructor(X={}){this.stateStore=X.stateStore??null,this.previewUrlPattern=X.previewUrlPattern??null,this.kubeConfig=X.kubeConfig??mQ7(),this.portForward=new jb0(this.kubeConfig),this.namespace=X.namespace??_Q7,this.sandboxTemplateName=X.sandboxTemplateName??fQ7,this.envName=aQ7(X.envName),this.tokenGenerator=X.tokenGenerator??(()=>kQ7(yQ7).toString("hex")),this.idleTtlMs=X.idleTtlMs??hQ7,this.metrics=X.meter?lQ7(X.meter):null,this.previewGateway=X.previewGateway&&X.previewUrlPattern?{...X.previewGateway}:null}async ensure(X,Y={}){let G=this.computeHandle(X,Y.repo?.branch??null);return this.inflight.run(G,()=>JI(this.stateStore,X,oz,(Q)=>this.ensureLocked(X,G,Y,Q)))}async exec(X,Y){let G=await this.requireRecord(X);return Sd(G.daemonUrl,G.token,Y)}async delete(X){let Y=await this.getRecord(X);if(this.records.delete(X),Y)this.closeForwarder(Y.daemonForward),this.metrics?.active.add(-1,Gy0(Y.tenant));if(await this.deleteHttpRouteIfManaged(X).catch((G)=>{console.warn(`[${iW}] HTTPRoute delete failed for ${X}: ${G instanceof Error?G.message:String(G)}`)}),await hm(this.kubeConfig,this.namespace,X),this.stateStore)if(Y)await this.stateStore.delete(Y.id,oz);else await this.stateStore.deleteByHandle(oz,X)}async alive(X){return await gm(this.kubeConfig,this.namespace,X)!==void 0}watchClaimLifecycle(X,Y){return DJ8({kc:this.kubeConfig,namespace:this.namespace,claimName:X,signal:Y})}async getPreviewUrl(X){let Y=await this.getRecord(X);if(!Y)return null;return this.composePreviewUrl(Y)}async proxyDaemonRequest(X,Y,G){let Q=await this.getRecord(X);if(!Q)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});let J=performance.now(),W=0;try{let Z=await kd(Q.daemonUrl,Q.token,Y,G);return W=Z.status,Z}finally{this.recordProxyDuration("daemon",W,Q,performance.now()-J)}}async resolvePreviewUpstreamUrl(X){if(this.previewUrlPattern)return`http://${X}.${this.namespace}.svc.cluster.local:${um}`;let Y=await this.getRecord(X);if(Y)return Y.daemonUrl;let G=await this.resurrectByHandle(X);return G?G.daemonUrl:null}async proxyPreviewRequest(X,Y){let G=performance.now(),Q=this.records.get(X)??null,J=0;try{let W=await this.resolvePreviewUpstreamUrl(X);if(!W)return J=404,Xy0(404,{error:"sandbox not found"});let Z=new URL(Y.url);if((Z.pathname==="/_decopilot_vm"||Z.pathname.startsWith("/_decopilot_vm/"))&&Y.method!=="GET")return J=404,Xy0(404,{error:"not found"});let K=(O)=>`${O}${Z.pathname}${Z.search}`,H=new Headers(Y.headers);for(let O of gQ7)H.delete(O);let U=Y.method!=="GET"&&Y.method!=="HEAD",B={method:Y.method,headers:H,body:U?Y.body:void 0,redirect:"manual",signal:Y.signal,duplex:U?"half":void 0},N;try{N=await fetch(K(W),B)}catch(O){let w=`${W}${Z.pathname}`;if(console.warn(`[${iW}] preview fetch to ${w} failed: ${O instanceof Error?O.message:String(O)}`),Y.method==="GET"||Y.method==="HEAD"){if(this.invalidateRecord(X),await this.resurrectByHandle(X).catch(()=>null)){let P=await this.resolvePreviewUpstreamUrl(X);if(P)try{N=await fetch(K(P),B);let q=new Headers;for(let[j,M]of N.headers.entries())if(!LJ8.includes(j.toLowerCase()))q.set(j,M);return J=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:q})}catch(q){console.warn(`[${iW}] preview fetch retry to ${w} failed: ${q instanceof Error?q.message:String(q)}`)}}}else this.invalidateRecord(X);return J=502,Xy0(502,{error:"sandbox daemon unreachable"})}let z=new Headers;for(let[O,w]of N.headers.entries())if(!LJ8.includes(O.toLowerCase()))z.set(O,w);return J=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:z})}finally{this.recordProxyDuration("preview",J,Q,performance.now()-G,X)}}async ensureLocked(X,Y,G,Q){if(G.image)console.warn(`[${iW}] opts.image ignored (template ${this.sandboxTemplateName} pins image): got ${G.image}`);if(Q){let Z=await Q.get(X,oz);if(Z){let $=await this.rehydrate(X,Y,Z);if($)return this.finish($,Q,!1,!0,"resume");await Q.delete(X,oz)}}let J=await gm(this.kubeConfig,this.namespace,Y).catch(()=>{return});if(J)if(J.metadata?.deletionTimestamp)await dc1(this.kubeConfig,this.namespace,Y).catch((Z)=>{console.warn(`[${iW}] wait for terminating claim ${Y} failed: ${Z instanceof Error?Z.message:String(Z)}`)});else{let Z=await this.adopt(X,Y,J).catch(($)=>{return console.warn(`[${iW}] adopt ${Y} failed, recreating: ${$ instanceof Error?$.message:String($)}`),null});if(Z)return this.finish(Z,Q,!0,!0,"adopt");await hm(this.kubeConfig,this.namespace,Y).catch(()=>{}),await dc1(this.kubeConfig,this.namespace,Y).catch(($)=>{console.warn(`[${iW}] wait for deleted claim ${Y} failed: ${$ instanceof Error?$.message:String($)}`)})}let W=await this.provision(X,Y,G);return this.finish(W,Q,!0,!1,"fresh")}async finish(X,Y,G,Q,J){let W=this.records.has(X.handle);if(this.records.set(X.handle,X),G)await this.persist(Y,X);if(Q)await $J8(this.kubeConfig,this.namespace,X.handle,this.computeShutdownTime()).catch((Z)=>console.warn(`[${iW}] TTL refresh failed for ${X.handle}: ${Z instanceof Error?Z.message:String(Z)}`));if(this.metrics){let Z=Gy0(X.tenant);if(this.metrics.ensureOutcome.add(1,{...Z,outcome:J}),!W)this.metrics.active.add(1,Z)}return this.toSandbox(X)}buildEnvMap(X,Y){let G={},Q=[];for(let[Z,$]of Object.entries(X.env??{}))if(xQ7.has(Z))Q.push(Z);else G[Z]=$;if(Q.length>0)console.warn(`[${iW}] opts.env keys overlap reserved bootstrap names and were dropped: ${Q.join(",")}`);let J=X.repo,W=J?J.displayName??sQ7(J.cloneUrl):null;return{...G,DAEMON_TOKEN:Y.token,DAEMON_BOOT_ID:Y.daemonBootId,APP_ROOT:Y.workdir,PROXY_PORT:String(um),DEV_PORT:String(X.workload?.devPort??bQ7),RUNTIME:X.workload?.runtime??"node",...J?{CLONE_URL:J.cloneUrl,REPO_NAME:W??"",BRANCH:J.branch??"",GIT_USER_NAME:J.userName,GIT_USER_EMAIL:J.userEmail}:{},...X.workload?.packageManager?{PACKAGE_MANAGER:X.workload.packageManager}:{}}}buildClaim(X,Y,G){let Q=this.buildEnvMap(Y,G);return{apiVersion:`${TG.CLAIM_API_GROUP}/${TG.CLAIM_API_VERSION}`,kind:"SandboxClaim",metadata:{name:X,namespace:this.namespace,labels:{"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[FB.env]:this.envName}:{},...Yy0(Y.tenant)}},spec:{sandboxTemplateRef:{name:this.sandboxTemplateName},additionalPodMetadata:{labels:Yy0(Y.tenant,{[FB.role]:"claimed",[FB.sandboxHandle]:X,...this.envName?{[FB.env]:this.envName}:{}})},env:Object.entries(Q).sort(([J],[W])=>J<W?-1:J>W?1:0).map(([J,W])=>({name:J,value:W})),warmpool:"none",lifecycle:{shutdownPolicy:"Delete",shutdownTime:this.computeShutdownTime()}}}}async provision(X,Y,G){let Q=this.tokenGenerator(),J=CQ7(),W=eb0,Z=this.buildClaim(Y,G,{token:Q,daemonBootId:J,workdir:W});try{await o31(this.kubeConfig,this.namespace,Z)}catch(U){if(U instanceof a31)await dc1(this.kubeConfig,this.namespace,Y),await o31(this.kubeConfig,this.namespace,Z);else throw U}let{podName:$}=await pc1(this.kubeConfig,this.namespace,Y);try{await this.ensureServicePortForHandle(Y),await this.ensureHttpRouteForHandle(Y,G.tenant??null)}catch(U){throw await hm(this.kubeConfig,this.namespace,Y).catch(()=>{}),U}let K=await this.openForwarder($,um,Y),H=`http://127.0.0.1:${K.localPort}`;try{await R$1(H)}catch(U){throw this.closeForwarder(K),await this.deleteHttpRouteIfManaged(Y).catch(()=>{}),await hm(this.kubeConfig,this.namespace,Y).catch(()=>{}),U}return{id:X,handle:Y,podName:$,token:Q,workdir:W,daemonUrl:H,daemonForward:K,workload:G.workload??null,daemonBootId:J,tenant:G.tenant??null,ensureOpts:rQ7(G)}}async ensureServicePortForHandle(X){if(!this.previewGateway||!this.previewUrlPattern)return;await NJ8(this.kubeConfig,this.namespace,X,{name:"daemon",port:um,targetPort:um})}async ensureHttpRouteForHandle(X,Y){if(!this.previewGateway||!this.previewUrlPattern)return;let G=oQ7(this.previewUrlPattern,X);if(!G)throw new oY(`Unable to derive preview hostname for ${X} from pattern: ${this.previewUrlPattern}`);let Q={apiVersion:`${s31.API_GROUP}/${s31.API_VERSION}`,kind:"HTTPRoute",metadata:{name:X,namespace:this.namespace,labels:Yy0(Y??void 0,{[FB.role]:"claimed",[FB.sandboxHandle]:X,"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[FB.env]:this.envName}:{}})},spec:{parentRefs:[{kind:"Gateway",group:"gateway.networking.k8s.io",name:this.previewGateway.name,namespace:this.previewGateway.namespace}],hostnames:[G],rules:[{backendRefs:[{group:"",kind:"Service",name:X,port:um}]}]}};await cc1(this.kubeConfig,this.namespace,Q)}async deleteHttpRouteIfManaged(X){if(!this.previewGateway)return;await ic1(this.kubeConfig,this.namespace,X)}async rehydrate(X,Y,G){let Q=G.state;if(!Q.podName||!Q.token)return null;let J=await gm(this.kubeConfig,this.namespace,Y).catch(()=>{return});if(!J||!EJ8(J))return null;let W=PJ8(J)??Q.podName,Z=await this.openAndProbeDaemon(W,Y);if(!Z)return null;if(Q.daemonBootId&&Q.daemonBootId!==Z.bootId)console.warn(`[${iW}] daemon restart detected (handle=${Y}): stored bootId=${Q.daemonBootId} live bootId=${Z.bootId}`);return{id:X,handle:Y,podName:W,token:Q.token,workdir:Q.workdir??eb0,daemonUrl:Z.daemonUrl,daemonForward:Z.daemonForward,workload:Q.workload??null,daemonBootId:Z.bootId,tenant:Q.tenant??null,ensureOpts:Q.ensureOpts??null}}async adopt(X,Y,G){if(!EJ8(G))return null;let Q=PJ8(G);if(!Q)return null;let J=dQ7(G);if(!J)return null;let W=await this.openAndProbeDaemon(Q,Y);if(!W)return null;let Z=tQ7(G);if(this.previewGateway)await this.ensureServicePortForHandle(Y).catch(($)=>{console.warn(`[${iW}] Service port backfill failed for ${Y}: ${$ instanceof Error?$.message:String($)}`)}),await this.ensureHttpRouteForHandle(Y,Z).catch(($)=>{console.warn(`[${iW}] HTTPRoute backfill failed for ${Y}: ${$ instanceof Error?$.message:String($)}`)});return{id:X,handle:Y,podName:Q,token:J,workdir:eb0,daemonUrl:W.daemonUrl,daemonForward:W.daemonForward,workload:null,daemonBootId:W.bootId,tenant:Z,ensureOpts:null}}async openAndProbeDaemon(X,Y){let G=await this.openForwarder(X,um,Y).catch(()=>null);if(!G)return null;let Q=`http://127.0.0.1:${G.localPort}`,J=await rL(Q);if(!J)return this.closeForwarder(G),null;return{daemonForward:G,daemonUrl:Q,bootId:J.bootId}}async getRecord(X){let Y=this.records.get(X);if(Y)return Y;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(oz,X);if(!G)return null;let Q=await this.rehydrate(G.id,X,G);if(Q)this.records.set(X,Q);return Q}async resurrectByHandle(X){if(!this.stateStore)return null;let Y=await this.stateStore.getByHandle(oz,X);if(!Y)return null;let G=Y.state.ensureOpts;if(!G)return null;return await this.ensure(Y.id,G),this.records.get(X)??null}async requireRecord(X){let Y=await this.getRecord(X);if(Y)return Y;let G=await this.resurrectByHandle(X);if(G)return G;throw Error(`unknown sandbox handle ${X}`)}invalidateRecord(X){let Y=this.records.get(X);if(!Y)return;this.records.delete(X),this.closeForwarder(Y.daemonForward)}recordProxyDuration(X,Y,G,Q,J){if(!this.metrics)return;this.metrics.proxyDurationMs.record(Q,{...Gy0(G?.tenant??null),source:X,sandbox_handle:G?.handle??J??"",status_code:Y||0})}computeHandle(X,Y){return tW(X,Y)}composePreviewUrl(X){if(this.previewUrlPattern)return LB(this.previewUrlPattern,X.handle);return`http://127.0.0.1:${X.daemonForward.localPort}/`}toSandbox(X){return{handle:X.handle,workdir:X.workdir,previewUrl:this.composePreviewUrl(X)}}async persist(X,Y){if(!X)return;let G={podName:Y.podName,token:Y.token,workdir:Y.workdir,workload:Y.workload,daemonBootId:Y.daemonBootId,tenant:Y.tenant,...Y.ensureOpts?{ensureOpts:Y.ensureOpts}:{}};await X.put(Y.id,oz,{handle:Y.handle,state:G})}computeShutdownTime(){return new Date(Date.now()+this.idleTtlMs).toISOString()}openForwarder(X,Y,G=X){let Q=cQ7(G,Y);return new Promise((J,W)=>{let Z=($,K)=>{let H=AJ8.createServer((U)=>this.handleForwardedConnection(U,X,Y,G));H.once("error",(U)=>{if(U.code==="EADDRINUSE"&&K<uQ7){try{H.close()}catch{}let B=Qy0+($-Qy0+1)%TJ8;Z(B,K+1);return}W(U)}),H.listen($,"127.0.0.1",()=>{let U=H.address();if(!U||typeof U==="string"){H.close(),W(Error("port-forward listener failed to bind"));return}J({server:H,localPort:U.port})})};Z(Q,0)})}handleForwardedConnection(X,Y,G,Q){let J=new vQ7,W=null,Z=!1,$=()=>{if(Z)return;if(Z=!0,J.destroy(),W)try{W.close()}catch{}if(!X.destroyed)X.destroy()};X.pipe(J),X.on("error",$),X.on("close",$),this.portForward.portForward(this.namespace,Y,[G],X,null,J).then((K)=>{let H=typeof K==="function"?K():K;if(!H){$();return}if(W=H,W.on("close",$),W.on("error",()=>{this.invalidateRecord(Q),$()}),Z)try{W.close()}catch{}}).catch((K)=>{console.warn(`[${iW}] port-forward to ${Y}:${G} failed: ${K instanceof Error?K.message:String(K)}`),this.invalidateRecord(Q),$()})}closeForwarder(X){X.server.close((Y)=>{if(Y)console.warn(`[${iW}] port-forward close on :${X.localPort} errored: ${Y instanceof Error?Y.message:String(Y)}`)})}close(){if(this.closed)return;this.closed=!0;for(let X of this.records.values())this.closeForwarder(X.daemonForward);this.records.clear()}}function lQ7(X){return{active:X.createUpDownCounter("studio.sandbox.active",{description:"Active sandbox count, by runner kind and owning org. Cross-checks the cAdvisor-derived count from the cluster \u2014 divergence between the two indicates orphaned claims (mesh deleted but K8s didn't reap) or unattributed pods.",unit:"{sandbox}"}),ensureOutcome:X.createCounter("studio.sandbox.ensure.outcome",{description:"Outcome of each ensure() call: fresh provision, resume from state-store after restart, or adopt of a cluster-side claim mesh didn't know about. Cold-start ratio is the primary input for warm-pool sizing.",unit:"{call}"}),proxyDurationMs:X.createHistogram("studio.sandbox.proxy.duration_ms",{description:"Wall-clock latency of mesh-mediated requests to the sandbox daemon: tool exec proxies (source=daemon) and preview iframe traffic (source=preview).",unit:"ms"})}}function mQ7(){let X=new gs;return X.loadFromDefault(),X}function EJ8(X){return Boolean(X.status?.conditions?.some((Y)=>Y.type==="Ready"&&Y.status==="True"))}function dQ7(X){let Y=X.spec?.env;if(!Y)return null;for(let G of Y)if(G.name==="DAEMON_TOKEN"&&G.value)return G.value;return null}function PJ8(X){return X.metadata?.annotations?.[TG.POD_NAME_ANNOTATION]??X.metadata?.name??null}function cQ7(X,Y){let G=SQ7("sha256").update(`${X}:${Y}`).digest();return Qy0+G.readUInt32BE(0)%TJ8}function Xy0(X,Y){return new Response(JSON.stringify(Y),{status:X,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function qJ8(X){let Y=X.slice(0,pQ7);return iQ7.test(Y)?Y:""}function aQ7(X){if(X===void 0)return null;let Y=X.trim();if(Y==="")return null;if(!nQ7.test(Y))throw Error(`AgentSandboxRunner: envName=${JSON.stringify(Y)} is not a valid DNS-label-safe environment name (lowercase alphanumeric or '-', starts with a letter, ends alphanumeric, \u226432 chars). Mesh sets this from STUDIO_ENV; check the studio chart's configMap.`);return Y}function Yy0(X,Y={}){let G={...Y};if(X){let Q=qJ8(X.orgId),J=qJ8(X.userId);if(Q)G[FB.orgId]=Q;if(J)G[FB.userId]=J}return G}function tQ7(X){let Y=X.metadata?.labels;if(!Y)return null;let G=Y[FB.orgId],Q=Y[FB.userId];if(!G||!Q)return null;return{orgId:G,userId:Q}}function Gy0(X){return{org_id:X?.orgId??"",user_id:X?.userId??"",runner_kind:oz}}function rQ7(X){let Y={};if(X.repo)Y.repo=X.repo;if(X.workload)Y.workload=X.workload;if(X.env&&Object.keys(X.env).length>0)Y.env=X.env;if(X.tenant)Y.tenant=X.tenant;return Object.keys(Y).length>0?Y:null}function oQ7(X,Y){try{return new URL(LB(X,Y)).hostname||null}catch{return null}}function sQ7(X){try{let Y=new URL(X);return Y.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||Y.hostname}catch{return X}}var oz="agent-sandbox",iW="AgentSandboxRunner",_Q7="agent-sandbox-system",fQ7="studio-sandbox",um=9000,bQ7=3000,eb0="/app",yQ7=32,xQ7,hQ7=900000,gQ7,LJ8,Qy0=40000,TJ8=1e4,uQ7=256,FB,iQ7,pQ7=63,nQ7;var IJ8=D(()=>{mb0();S$1();_d();nc1();t31();wJ8();xQ7=new Set(["DAEMON_TOKEN","DAEMON_BOOT_ID","APP_ROOT","PROXY_PORT","DEV_PORT","RUNTIME","CLONE_URL","REPO_NAME","BRANCH","GIT_USER_NAME","GIT_USER_EMAIL","PACKAGE_MANAGER"]),gQ7=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length","upgrade"],LJ8=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];FB={role:"studio.decocms.com/role",sandboxHandle:"studio.decocms.com/sandbox-handle",orgId:"studio.decocms.com/org-id",userId:"studio.decocms.com/user-id",env:"studio.decocms.com/env"},iQ7=/^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$/;nQ7=/^[a-z]([a-z0-9-]{0,30}[a-z0-9])?$/});var VJ8={};j0(VJ8,{waitForSandboxReady:()=>pc1,getSandboxClaim:()=>gm,getHttpRoute:()=>BJ8,deleteSandboxClaim:()=>hm,deleteHttpRoute:()=>ic1,createSandboxClaim:()=>o31,createHttpRoute:()=>cc1,SandboxTimeoutError:()=>cs,SandboxError:()=>oY,KubeConfig:()=>gs,K8S_CONSTANTS:()=>TG,HTTPROUTE_CONSTANTS:()=>s31,AgentSandboxRunner:()=>Jy0});var jJ8=D(()=>{mb0();t31();nc1();IJ8()});var By0={};j0(By0,{subscribeLifecycle:()=>Uy0,getSharedRunnerIfInit:()=>Ky0,getSharedRunner:()=>lm,getRunnerByKind:()=>is,getOrInitSharedRunner:()=>$y0,asLifecycleWatchable:()=>Fy0,asDockerRunner:()=>Hy0,__resetSharedLifecyclesForTesting:()=>ZJ7});function RJ8(X,Y){let G=Wy0[X];if(G)return Promise.resolve(G);let Q=Zy0[X];if(Q)return Q;let J=Y().then((W)=>{return Wy0[X]=W,W}).finally(()=>{delete Zy0[X]});return Zy0[X]=J,J}function eQ7(){let X=process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN;return X&&X.trim()!==""?X:void 0}function XJ7(){let X=process.env.STUDIO_SANDBOX_TEMPLATE_NAME;return X&&X.trim()!==""?X:void 0}function YJ7(){let X=process.env.STUDIO_ENV;return X&&X.trim()!==""?X:void 0}function GJ7(){let X=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME?.trim(),Y=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE?.trim();if(!X&&!Y)return;if(!X||!Y)throw Error("STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME and STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE must both be set, or both unset. Half-configured per-claim HTTPRoute routing would silently fail to attach.");return{name:X,namespace:Y}}async function SJ8(X,Y){let G=new A31(Y),Q=eQ7();switch(X){case"host":{let{HostSandboxRunner:J}=await Promise.resolve().then(() => (ZF(),sL)),{getSettings:W}=await Promise.resolve().then(() => (C9(),Tl0));return new J({homeDir:W().dataDir,stateStore:G,previewUrlPattern:Q})}case"docker":return new JF({stateStore:G,previewUrlPattern:Q});case"freestyle":{let{FreestyleSandboxRunner:J}=await Promise.resolve().then(() => (b58(),f58));return new J({stateStore:G})}case"agent-sandbox":{let{AgentSandboxRunner:J}=await Promise.resolve().then(() => (jJ8(),VJ8));return new J({stateStore:G,previewUrlPattern:Q,sandboxTemplateName:XJ7(),envName:YJ7(),previewGateway:GJ7(),meter:ZU})}default:throw Error(`Unknown runner kind: ${String(X)}`)}}function lm(X){return is(X,EB())}function is(X,Y){return RJ8(Y,()=>SJ8(Y,X.db))}async function $y0(){let X;try{X=EB()}catch(Y){return console.warn("[lifecycle] cannot resolve sandbox runner:",Y instanceof Error?Y.message:String(Y)),null}return RJ8(X,()=>SJ8(X,t7().db))}function Ky0(){let X;try{X=EB()}catch{return null}return Wy0[X]??null}function Hy0(X){return X instanceof JF?X:null}function Fy0(X){if(!X)return null;if(X.kind!=="agent-sandbox")return null;if(typeof X.watchClaimLifecycle!=="function")return null;return X}function Uy0(X,Y,G){let Q=vT.get(Y);if(Q){if(Q.terminated){if(Q.lastPhase)try{G(Q.lastPhase)}catch{}return{unsubscribe:QJ7}}if(Q.listeners.add(G),Q.lastPhase)try{G(Q.lastPhase)}catch{}return MJ8(Y,Q,G)}let J=new AbortController,W={lastPhase:null,terminated:!1,listeners:new Set([G]),abort:J};return vT.set(Y,W),JJ7(X,Y,W),MJ8(Y,W,G)}function QJ7(){}function MJ8(X,Y,G){return{unsubscribe(){if(vT.get(X)!==Y)return;if(Y.listeners.delete(G),Y.listeners.size===0)vT.delete(X),Y.abort.abort()}}}async function JJ7(X,Y,G){let Q=null;try{for await(let J of X.watchClaimLifecycle(Y,G.abort.signal)){if(G.abort.signal.aborted)break;let W=J;G.lastPhase=W;let Z=W.kind==="ready"||W.kind==="failed";if(Z)G.terminated=!0;let $=Array.from(G.listeners);for(let K of $)try{K(W)}catch{}if(Z)break}}catch(J){Q=J}finally{if(!G.terminated&&!G.abort.signal.aborted&&G.listeners.size>0){let J={kind:"failed",reason:"unknown",message:Q instanceof Error?Q.message:"Lifecycle watcher ended unexpectedly"};G.lastPhase=J,G.terminated=!0;for(let W of Array.from(G.listeners))try{W(J)}catch{}}if(vT.get(Y)===G)vT.delete(Y)}}function ZJ7(){for(let X of vT.values())X.abort.abort();vT.clear()}var Wy0,Zy0,vT;var ML=D(()=>{ZF();WU();T$();D_0();Wy0={},Zy0={};vT=new Map});async function kJ8(X,Y){B0(Y);let G=s1(Y),Q=w4(Y);if(!Q)throw Error("User ID required");let J=await Y.storage.virtualMcps.findById(X.virtualMcpId);if(!J||J.organization_id!==G.id)throw Error("Virtual MCP not found");let W=J.metadata??{},Z=As(LT(W),Q,X.branch),$=EB();if(Z&&(Z.runnerKind??"freestyle")===$)return Z;await CJ8(Y,Z,$);let K=W.githubRepo??null,{entry:H}=await vJ8({ctx:Y,userId:Q,orgId:G.id,virtualMcpId:X.virtualMcpId,branch:X.branch,metadata:W,githubRepo:K,existing:Z});return H}async function CJ8(X,Y,G){if(!Y)return;let Q=Y.runnerKind??"freestyle";if(Q===G)return;if(Q==="freestyle")return;try{await(await is(X,Q)).delete(Y.vmId)}catch(J){console.error(`[VM_START] stale ${Q} ${Y.vmId}: ${J instanceof Error?J.message:String(J)}`)}}async function vJ8(X){let{ctx:Y,userId:G,orgId:Q,virtualMcpId:J,branch:W,metadata:Z,githubRepo:$,existing:K}=X;if($&&!$.connectionId)throw Error("GitHub connection id missing on virtual MCP metadata");let{runtime:H,packageManager:U,port:B}=xp4(Z),N;if($){let{cloneUrl:V,gitUserName:R,gitUserEmail:C}=await hp4($.connectionId,$.owner,$.name,Y.db,Y.vault);if(!U){let _=await mp4($.connectionId,$.owner,$.name,Y.db,Y.vault);if(_)U=_.packageManager,H=q31[_.packageManager].runtime,B=_.devPort??B,await WJ7(Y,J,G,_.packageManager,_.devPort)}N={cloneUrl:V,userName:R,userEmail:C,branch:W,displayName:`${$.owner}/${$.name}`}}let z=H&&U?{runtime:H,packageManager:U,devPort:Number(B)}:void 0,O=fd({orgId:Q,virtualMcpId:J,branch:W}),w=await lm(Y),E=await w.ensure({userId:G,projectRef:O},{repo:N,workload:z,tenant:{orgId:Q,userId:G}}),q=!!K&&K.vmId===E.handle&&K?.createdAt?K.createdAt:Date.now(),j={vmId:E.handle,previewUrl:E.previewUrl,runnerKind:w.kind,createdAt:q};await bp4(Y.storage.virtualMcps,J,G,G,W,j);let M=!K||K.vmId!==E.handle;return{entry:j,isNewVm:M}}async function WJ7(X,Y,G,Q,J){let W=await X.storage.virtualMcps.findById(Y);if(!W)return;let Z=W.metadata??{};await X.storage.virtualMcps.update(Y,G,{metadata:{...Z,runtime:{selected:Q,port:J}}})}var Ny0;var zy0=D(()=>{H0();ZF();x0();O_0();gp4();dp4();wk0();z_0();ML();Ny0=m1({name:"VM_START",description:"Start a sandbox with the connected GitHub repo and dev server.",annotations:{title:"Start VM Preview",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({virtualMcpId:F.string().describe("Virtual MCP ID"),branch:F.string().min(1).optional().describe("Optional git branch to check out. When omitted the handler generates `deco/<adjective>-<noun>` and uses it. The resolved branch is returned in the response so callers can persist it.")}),outputSchema:F.object({previewUrl:F.string().nullable(),vmId:F.string(),branch:F.string(),isNewVm:F.boolean(),runnerKind:F.enum(["host","docker","freestyle","agent-sandbox"])}),handler:async(X,Y)=>{let G=X.branch??VS1(),{metadata:Q,userId:J,organization:W,entry:Z}=await Dk1({virtualMcpId:X.virtualMcpId,branch:G},Y),$=Q.githubRepo;if(!$)throw Error("No GitHub repo connected");let K=EB();await CJ8(Y,Z,K);let{entry:H,isNewVm:U}=await vJ8({ctx:Y,userId:J,orgId:W.id,virtualMcpId:X.virtualMcpId,branch:G,metadata:Q,githubRepo:$,existing:Z});return{...H,branch:G,isNewVm:U,runnerKind:K}}})});var Oy0;var _J8=D(()=>{H0();x0();O_0();ML();Oy0=m1({name:"VM_DELETE",description:"Delete a sandbox.",annotations:{title:"Delete VM Preview",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({virtualMcpId:F.string().describe("Virtual MCP ID that owns this VM"),branch:F.string().min(1).describe("Branch whose vm should be deleted (vmMap[userId][branch])")}),outputSchema:F.object({success:F.boolean()}),handler:async(X,Y)=>{let G;try{G=await Dk1(X,Y)}catch($){if($ instanceof Error&&$.message==="Virtual MCP not found")return{success:!0};throw $}let{entry:Q,userId:J}=G;if(!Q)return{success:!0};await yp4(Y.storage.virtualMcps,X.virtualMcpId,J,J,X.branch);let W=Q.runnerKind??"freestyle";return await(await is(Y,W)).delete(Q.vmId).catch(($)=>console.error(`[VM_DELETE] ${W} ${Q.vmId}: ${$ instanceof Error?$.message:String($)}`)),{success:!0}}})});var fJ8=D(()=>{zy0();_J8()});var KJ7="https://api.github.com",Dy0;var bJ8=D(()=>{H0();x0();pI1();mR();Dy0=m1({name:"GITHUB_LIST_USER_ORGS",description:"List GitHub App installations (orgs/accounts) accessible to the authenticated user.",annotations:{title:"List GitHub User Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({connectionId:F.string().describe("ID of the mcp-github connection to use")}),outputSchema:F.object({installations:F.array(F.object({installationId:F.number(),login:F.string(),avatarUrl:F.string(),type:F.string()})),appSlug:F.string().optional()}),handler:async(X,Y)=>{await Y.access.check();let G=new I3(Y.db,Y.vault),Q=await G.get(X.connectionId);if(!Q)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let J=Q.accessToken;if(rY1(Q)&&G.isExpired(Q,iI1)){let U=await oY1(Q,G);if(!U)throw Error(BM);J=U,Q=await G.get(X.connectionId)??Q}let W=[],Z,$=1,K=100,H=async(U)=>fetch(`${KJ7}/user/installations?per_page=${K}&page=${$}`,{headers:{Authorization:`Bearer ${U}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}});while(!0){let U=await H(J);if(U.status===401){let N=await G.get(X.connectionId);if(!N||!rY1(N))throw Error(BM);let z=await oY1(N,G);if(!z)throw Error(BM);if(J=z,U=await H(J),U.status===401)throw Error(BM)}if(!U.ok)throw Error(`GitHub /user/installations failed: ${U.status}`);let B=await U.json();for(let N of B.installations){if(!Z)Z=N.app_slug??N.app?.slug;W.push({installationId:N.id,login:N.account.login,avatarUrl:N.account.avatar_url,type:N.account.type})}if(B.installations.length<K)break;$++}return{installations:W,...Z?{appSlug:Z}:{}}}})});var yJ8=D(()=>{bJ8()});var AS1={};j0(AS1,{managementMCP:()=>Js,listManagementTools:()=>BJ7,ALL_TOOLS:()=>xJ8});async function BJ7(X){let Y=await Js(X),[G,Q]=UY1.createLinkedPair();await Y.connect(Q);let J=new hY({name:"tools-hydration",version:"1.0.0"});try{return await J.connect(G),(await J.listTools()).tools}finally{await J.close().catch(()=>{})}}var FJ7,UJ7,xJ8,Js=async(X)=>{let Y=null;if(X.organization){let Z=await X.storage.organizationSettings.get(X.organization.id),$=await X.storage.virtualMcps.list(X.organization.id),K=new Set(Z?.enabled_plugins??[]);for(let H of $){let U=H.metadata?.enabled_plugins;if(U&&Array.isArray(U))for(let B of U)K.add(B)}Y=K.size>0?[...K]:null}let G=zr6(xJ8,Y),Q=new tD({name:"mcp-cms-management",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}}});for(let Z of G){let $=Z.inputSchema&&typeof Z.inputSchema==="object"&&"shape"in Z.inputSchema?Z.inputSchema:F.object({}),K=Z.outputSchema&&typeof Z.outputSchema==="object"&&"shape"in Z.outputSchema?Z.outputSchema:void 0,H=$.shape,U=K?.shape;Q.registerTool(Z.name,{description:Z.description??"",inputSchema:H,outputSchema:U,annotations:Z.annotations,_meta:Z._meta},async(B)=>{X.access.setToolName(Z.name);try{let N=await Z.execute(B,X);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let J=Tx4();for(let Z of J)Q.registerPrompt(Z.name,{title:Z.title,description:Z.description},()=>({messages:[{role:"user",content:{type:"text",text:Z.text}}]}));if(X.organization?.id){let Z=await X.storage.brandContext.list(X.organization.id),$=new Set;for(let K of Z){let H=K.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),U=H?`brand-${H}`:`brand-${K.id}`;if($.has(U))U=`${U}-${K.id.slice(0,8)}`;$.add(U);let B=[`# Brand: ${K.name}`,"",`**Domain:** ${K.domain}`,"","## Overview",K.overview];if(K.colors){let z=Object.entries(K.colors).filter(([,O])=>O);if(z.length>0){B.push("","## Colors");for(let[O,w]of z)B.push(`- **${O}:** ${w}`)}}if(K.fonts){let z=Object.entries(K.fonts).filter(([,O])=>O);if(z.length>0){B.push("","## Fonts");for(let[O,w]of z)B.push(`- ${w} (${O})`)}}if(K.logo)B.push("",`**Logo:** ${K.logo}`);if(K.favicon)B.push(`**Favicon:** ${K.favicon}`);if(K.ogImage)B.push(`**OG Image:** ${K.ogImage}`);if(K.images&&K.images.length>0){B.push("","## Images");for(let z of K.images){let O=Object.entries(z).map(([w,E])=>`${w}: ${E}`).join(", ");B.push(`- ${O}`)}}let N=B.join(`
|
|
5256
5256
|
`);Q.prompt(U,`Brand context for ${K.name}`,()=>({messages:[{role:"user",content:{type:"text",text:N}}]}))}}let W=Ix4();for(let Z of W)Q.resource(Z.name,Z.uri,{description:Z.description,mimeType:Z.mimeType??"text/markdown"},async($)=>{return{contents:[{uri:typeof $==="string"?$:$.href,mimeType:Z.mimeType??"text/markdown",text:Z.text}]}});return Q};var Ys=D(()=>{na();iN();b71();H0();W54();Jb4();Kb4();Lb4();Sb4();_b4();Xy4();Wy4();qy4();xy4();gy4();Gx4();Vx4();rx4();fp4();fJ8();yJ8();FJ7=[mS0,dS0,cS0,iS0,pS0,nS0,aS0,tS0,rS0,oS0,sS0,eS0,Yk0,Gk0,Qk0,Jk0,Zk0,Wk0,$k0,Kk0,Hk0,Fk0,Uk0,AD0,LS0,ES0,PS0,qS0,AS0,kS0,vS0,_S0,fS0,bS0,$b4,gS0,uS0,lS0,_z0,bz0,yz0,fz0,TS0,IS0,VS0,jS0,MS0,RS0,SS0,hk0,Lk0,Ek0,Pk0,qk0,Ak0,Tk0,Bk0,Nk0,zk0,Ok0,Dk0,Ik0,Vk0,jk0,kk0,Ck0,bk0,yk0,xk0,yS0,xS0,hS0,gk0,uk0,lk0,mk0,dk0,ck0,ik0,pk0,nk0,ak0,tk0,rk0,ok0,sk0,ek0,XC0,YC0,GC0,..._p4,Ny0,Oy0,Dy0],UJ7=Or6(),xJ8=[...FJ7,...UJ7]});function NJ7(X){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:Y}=await Promise.resolve().then(() => (Ys(),AS1));return Y.map((G)=>{return{name:G.name,inputSchema:F.toJSONSchema(G.inputSchema,{unrepresentable:"any"}),outputSchema:G.outputSchema?F.toJSONSchema(G.outputSchema,{unrepresentable:"any"}):void 0,description:G.description}})},data:PH0(l$(),X)},{data:EH0()},{data:LH0(X)}]}async function hJ8(X,Y){try{let G=t7(),Q=R6(),J=new ij(Q.encryptionKey),W=new WY1(G.db,J),Z=NJ7(X);await Promise.all(Z.map(async($)=>{let K=null;if($.permissions)K=(await RY.api.createApiKey({body:{name:`${$.data.app_name??crypto.randomUUID()}-mcp`,userId:Y,permissions:$.permissions,rateLimitEnabled:!1,metadata:{organization:{id:X},purpose:"default-org-connections"}}}))?.key;let H=await bq({id:"pending",title:$.data.title,connection_type:$.data.connection_type,connection_url:$.data.connection_url,connection_token:$.data.connection_token,connection_headers:$.data.connection_headers}).catch(()=>null),U=await $.getTools?.()??H?.tools??null,B=H?.scopes?.length?H.scopes:null,N=$.data.id?$.data.id.startsWith(`${X}_`)?$.data.id:`${X}_${$.data.id}`:void 0;await W.create({...$.data,id:N,tools:U,configuration_scopes:B,organization_id:X,created_by:Y,connection_token:$.data.connection_token??K})}));try{let $=new $Y1(G.db);await m84(X,Y,$)}catch($){console.error("Failed to install studio pack agents:",$)}if(Q.aiGatewayEnabled&&GY1.provisionKey)try{let $=await yq(Y),K=await GY1.provisionKey($,X);await new JY1(G.db,J).upsert({providerId:"deco",label:"Auto-provisioned",apiKey:K,organizationId:X,createdBy:Y})}catch($){console.error("Failed to auto-provision Deco AI Gateway key:",$)}}catch(G){console.error("Error creating default MCP connections:",G)}}var gJ8=D(()=>{s9();Oz0();Dw();WU();VT1();Dz0();Lz0();Ez0();HY1();d84();H0();C9();iR();pj()});function zJ7(X,Y){let G=X.email.split("@")[1]?.toLowerCase()??null;return{distinctId:X.id,properties:{$set:{email:X.email,name:X.name,email_verified:X.emailVerified},$set_once:{first_seen_at:Y.toISOString(),signup_email_domain:G}}}}function wy0(X){j4.identify(zJ7(X,new Date))}var uJ8=D(()=>{RX()});async function DJ7(X){let{user:Y,token:G}=X;if(!G?.idToken)return;let Q;try{Q=i9(G.idToken)}catch{return}let{preferred_username:J,upn:W}=Q,Z=[J,W].filter((H)=>typeof H==="string"&&H.length>0&&H.toLowerCase()!==Y.email.toLowerCase()).map((H)=>H.toLowerCase());if(Z.length===0)return;let{db:$}=t7(),K=await $.selectFrom("user").selectAll().where("email","in",Z).where("id","!=",Y.id).executeTakeFirst();if(!K)return;try{await $.transaction().execute(async(H)=>{await z1`UPDATE "account" SET "userId" = ${K.id} WHERE "userId" = ${Y.id}`.execute(H),await z1`UPDATE "session" SET "userId" = ${K.id} WHERE "userId" = ${Y.id}`.execute(H),await z1`
|
|
5257
5257
|
UPDATE "member" SET "userId" = ${K.id}
|
|
5258
5258
|
WHERE "userId" = ${Y.id}
|