decocms 4.358.0 → 4.358.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-CvFSJNx9.js → AlertCircle-B4feVBXY.js} +1 -1
- package/dist/client/assets/{AreaChart-abKf3s5j.js → AreaChart-xk7ixbvq.js} +1 -1
- package/dist/client/assets/{ArrowLeft-DGhxo3cT.js → ArrowLeft-CEiALrg5.js} +1 -1
- package/dist/client/assets/{ArrowRight-DSdHQ5mv.js → ArrowRight-BTq6Mik4.js} +1 -1
- package/dist/client/assets/{ArrowUp-BwkaFi8g.js → ArrowUp-DUd1tvoY.js} +1 -1
- package/dist/client/assets/{Check-CCx_habi.js → Check-DSznPieK.js} +1 -1
- package/dist/client/assets/{CheckCircle-BKtTAGln.js → CheckCircle-BoKMuFFK.js} +1 -1
- package/dist/client/assets/{ChevronRight-CttEUrsJ.js → ChevronRight-hScC2vQT.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-nLG_Jior.js → ChevronSelectorVertical-DYGDtqQU.js} +1 -1
- package/dist/client/assets/{ChevronUp-D94hlqwD.js → ChevronUp-D2N9Rnsm.js} +1 -1
- package/dist/client/assets/{Copy01-Do7ID6ob.js → Copy01-D6tBkCFE.js} +1 -1
- package/dist/client/assets/{CreditCard01-CMDM1fu1.js → CreditCard01-DHrVBbVQ.js} +1 -1
- package/dist/client/assets/{DotsVertical-e2biiEHB.js → DotsVertical-DCodbdte.js} +1 -1
- package/dist/client/assets/{Download01-Bm4r_GWu.js → Download01-DABFHb1d.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-BeOm7Vmo.js → ErrorBarContext-B6wKzwbu.js} +1 -1
- package/dist/client/assets/{Eye-CDpD5nKD.js → Eye-B3oSsvLj.js} +1 -1
- package/dist/client/assets/{GitBranch01-BleEvDSF.js → GitBranch01-DzMJOGpq.js} +1 -1
- package/dist/client/assets/{Globe01-BrDuhTSK.js → Globe01-BrqsrpDf.js} +1 -1
- package/dist/client/assets/{HardDrive-Bg3W6UYJ.js → HardDrive-GH60QJZP.js} +1 -1
- package/dist/client/assets/{Image01-BMfc5-Wn.js → Image01-BXIhjY0H.js} +1 -1
- package/dist/client/assets/{Key01-B6w_TIvV.js → Key01-Cu5VaAjI.js} +1 -1
- package/dist/client/assets/{Link01-CZniCYYc.js → Link01-BX-inToB.js} +1 -1
- package/dist/client/assets/{LinkExternal01-Du_enTi5.js → LinkExternal01-BeqAzxr0.js} +1 -1
- package/dist/client/assets/{Monitor01-DP_rKLOe.js → Monitor01-B8Eiio86.js} +1 -1
- package/dist/client/assets/{Package-CVCe4e0k.js → Package-nKUXgWuw.js} +1 -1
- package/dist/client/assets/{Palette-DAbxSmBN.js → Palette-DR1mcJdO.js} +1 -1
- package/dist/client/assets/{Play-DzTpwST_.js → Play-CUMxd8pI.js} +1 -1
- package/dist/client/assets/{Plus-CKoi-6bO.js → Plus-CWZNNoAx.js} +1 -1
- package/dist/client/assets/{SearchLg-DKwUPJZY.js → SearchLg-XAxRszGI.js} +1 -1
- package/dist/client/assets/{SearchMd-Ddn3D5O4.js → SearchMd-s6uNB4wI.js} +1 -1
- package/dist/client/assets/{Sector-C-h5hlbr.js → Sector-CJ2wnW0I.js} +1 -1
- package/dist/client/assets/{Settings02-Dbn4yjLH.js → Settings02-DbPGs1Rx.js} +1 -1
- package/dist/client/assets/{Share07-n83FqgCg.js → Share07-sjsNxfH0.js} +1 -1
- package/dist/client/assets/{Shield01-DQPwZv3X.js → Shield01-CXJEVef8.js} +1 -1
- package/dist/client/assets/{Stars01-B1Q6OMHn.js → Stars01-BbALL_Dz.js} +1 -1
- package/dist/client/assets/{Sun-D4qCPmfr.js → Sun-D9EHkDHZ.js} +1 -1
- package/dist/client/assets/{Tool01-B_JqcEu-.js → Tool01-Cgauvp7A.js} +1 -1
- package/dist/client/assets/{Tool02-CKVz3p7A.js → Tool02-CKD21joz.js} +1 -1
- package/dist/client/assets/{Trash01-CQo9w6s0.js → Trash01-D5k8EQTh.js} +1 -1
- package/dist/client/assets/{TrendUp01-36WgXGjA.js → TrendUp01-Cp4l1k_8.js} +1 -1
- package/dist/client/assets/{Upload01-PIa4GQj1.js → Upload01-jz7bmbIK.js} +1 -1
- package/dist/client/assets/{User01-GA-abflQ.js → User01-BwDlOx51.js} +1 -1
- package/dist/client/assets/{UserSquare-DnxFe2Eq.js → UserSquare-CWwSbzOR.js} +1 -1
- package/dist/client/assets/{Users01-CwCSEJGE.js → Users01-BMy_qWce.js} +1 -1
- package/dist/client/assets/{Users03-DFPOXyG_.js → Users03-ug4mReK5.js} +1 -1
- package/dist/client/assets/{XCircle-V3GWu_4N.js → XCircle-CN2ioUu0.js} +1 -1
- package/dist/client/assets/{XClose-BCt-gVvd.js → XClose-ClZTxkdu.js} +1 -1
- package/dist/client/assets/{Zap-DPPs11VN.js → Zap-B4KpUTOC.js} +1 -1
- package/dist/client/assets/{ZoomOut-CKyE2tor.js → ZoomOut-DUIhc7iI.js} +1 -1
- package/dist/client/assets/{access-gate-U48_-veh.js → access-gate-PswGCIi5.js} +1 -1
- package/dist/client/assets/{agent-icon-B0o0Gb8q.js → agent-icon-PWN9uPtp.js} +1 -1
- package/dist/client/assets/{agents-list-DL-Xa9fx.js → agents-list-Cy704Di0.js} +1 -1
- package/dist/client/assets/{ai-providers-BBu_BXzU.js → ai-providers-D_yn2Kps.js} +1 -1
- package/dist/client/assets/{alert-DoKvozNp.js → alert-KgicFiyn.js} +1 -1
- package/dist/client/assets/{alert-dialog--xSE_hnW.js → alert-dialog-Bjg29J3P.js} +1 -1
- package/dist/client/assets/{analytics-tab-B831i0MA.js → analytics-tab-WLPbHPxB.js} +1 -1
- package/dist/client/assets/{api-keys-CoOBnBCT.js → api-keys-8V378lXS.js} +1 -1
- package/dist/client/assets/api-keys-B-u9SWvl.js +1 -0
- package/dist/client/assets/{app-editor-DBzHSdfS.js → app-editor-CR5r-AtS.js} +1 -1
- package/dist/client/assets/{auth-DUkUrlOH.js → auth-Bc7owB5v.js} +1 -1
- package/dist/client/assets/{auth-catchall-apKpiAoL.js → auth-catchall-C_UCoG9W.js} +1 -1
- package/dist/client/assets/{auth-entry-CE40d-05.js → auth-entry-Cuwr_VGY.js} +1 -1
- package/dist/client/assets/{auth-split-layout-UR70vytH.js → auth-split-layout-Botzu9So.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-ODSWXhLL.js → authenticate-and-persist-oauth-AWML-ztq.js} +1 -1
- package/dist/client/assets/{automation-list-row-BAtHFEB4.js → automation-list-row-C4w0_Yq6.js} +1 -1
- package/dist/client/assets/{automation-runs-Bm7tc0cN.js → automation-runs-B_p5OeyC.js} +1 -1
- package/dist/client/assets/{automations-D7lyIoLD.js → automations-CR1Pv9Ly.js} +1 -1
- package/dist/client/assets/{autosend-D7fbQMkk.js → autosend-CrytFey2.js} +1 -1
- package/dist/client/assets/{avatar-CKPL8QcG.js → avatar-yu57dhaD.js} +1 -1
- package/dist/client/assets/{badge-DhrvZl4u.js → badge-mMw16-Pu.js} +1 -1
- package/dist/client/assets/{block-document-DUAGYb4V.js → block-document-CkRsAO_A.js} +1 -1
- package/dist/client/assets/{breadcrumb-gAnGKUn8.js → breadcrumb-CC2ZhPB-.js} +1 -1
- package/dist/client/assets/{buckets-kiZHqulW.js → buckets-COWiCqWm.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-COiX-v2L.js → bulk-category-panel-CqcCwrQ0.js} +1 -1
- package/dist/client/assets/{capability-load-error-BY_xoViG.js → capability-load-error-CFvjxFBc.js} +1 -1
- package/dist/client/assets/{cards-C5ChDY-4.js → cards-Dlq0pGY7.js} +1 -1
- package/dist/client/assets/{category-editor-t7fSvm7r.js → category-editor-B5y0eMGh.js} +1 -1
- package/dist/client/assets/{cdn-tab-xt0WDtPL.js → cdn-tab-BbhbA0tB.js} +1 -1
- package/dist/client/assets/{chart-DeCfHtAu.js → chart-B1NG_PuC.js} +1 -1
- package/dist/client/assets/{chat-context-CDIkalS2.js → chat-context-Bz9AX9yW.js} +1 -1
- package/dist/client/assets/{checkbox-OyJkoLzS.js → checkbox-C0yVK60S.js} +1 -1
- package/dist/client/assets/{choose-editor-CfJERWhK.js → choose-editor-Cu-okl5i.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DhztphxA.js → cli-auth-success-yNjPM-kO.js} +1 -1
- package/dist/client/assets/{client-icons-BKjVtjB7.js → client-icons-lMh-sqiv.js} +1 -1
- package/dist/client/assets/{collection-detail-B-owHaGl.js → collection-detail-CClSHkGH.js} +1 -1
- package/dist/client/assets/{collection-display-button-C8mVuY1w.js → collection-display-button-BdIYh2Ep.js} +1 -1
- package/dist/client/assets/{collection-search-Df-laadh.js → collection-search-CwqJ9Dia.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BbnVt0gu.js → collection-table-wrapper-DLYv8gtk.js} +1 -1
- package/dist/client/assets/{collection-tabs-BXgOU6cT.js → collection-tabs-B_eSFPng.js} +1 -1
- package/dist/client/assets/{command-B0ELBCGl.js → command-CkDjlTXU.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-ChOY7Jn8.js → commerce-onboarding-BgFEuUtH.js} +1 -1
- package/dist/client/assets/{connect-CgcAtBKi.js → connect-QTqdrw1M.js} +1 -1
- package/dist/client/assets/{connect-layout-B3RlISld.js → connect-layout-BLSobfTy.js} +1 -1
- package/dist/client/assets/{connection-BwH83YiM.js → connection-CKyNZYOJ.js} +1 -1
- package/dist/client/assets/{connection-card-BoVcEm7I.js → connection-card-CdA6w6nj.js} +1 -1
- package/dist/client/assets/{connection-detail-BPQ5PTkp.js → connection-detail-BveeSkor.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BHgSoeR2.js → connection-form-helpers-BEELjr90.js} +1 -1
- package/dist/client/assets/{connections-Yss3usyb.js → connections-DuV040Zr.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-CZANVkR7.js → create-organization-dialog-5fYd65TA.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-nxp2IxCf.js → decopilot-sse-pool-CkQ6ZRGu.js} +1 -1
- package/dist/client/assets/{dialog-DuHU1NEa.js → dialog-yNkqhTt0.js} +1 -1
- package/dist/client/assets/{domain-settings--ZzayFj_.js → domain-settings-BIup9mMA.js} +1 -1
- package/dist/client/assets/{drawer-B3Ka6Qb_.js → drawer-Osy8uHfr.js} +1 -1
- package/dist/client/assets/{dropdown-menu-BEWoLEwV.js → dropdown-menu-BsVti3MJ.js} +1 -1
- package/dist/client/assets/{e2e-tab-BSr3kNJZ.js → e2e-tab-DLCsUR2p.js} +1 -1
- package/dist/client/assets/{editor-QEKOrPv2.js → editor-DriQrOTE.js} +1 -1
- package/dist/client/assets/{empty-state-CdUq8zwB.js → empty-state-0cyTMWAI.js} +1 -1
- package/dist/client/assets/{empty-state-BZZOrAm3.js → empty-state-CGlXCCL3.js} +1 -1
- package/dist/client/assets/{extract-connection-data-UhIqlhIs.js → extract-connection-data-CgsoMbpk.js} +1 -1
- package/dist/client/assets/{file-explorer-EmvLHRo8.js → file-explorer-C4b--YYN.js} +1 -1
- package/dist/client/assets/{file-type-icon-BfN25o7u.js → file-type-icon-D4mjEpYh.js} +1 -1
- package/dist/client/assets/{folder-icon-B6WNa0uN.js → folder-icon-BTkY4QvK.js} +1 -1
- package/dist/client/assets/{form-BqBq03QJ.js → form-JHjimXp-.js} +1 -1
- package/dist/client/assets/{general-CU-eUk0z.js → general-DEkc0htC.js} +1 -1
- package/dist/client/assets/{github-icon-Btoc9FoO.js → github-icon-CsrFdTqg.js} +1 -1
- package/dist/client/assets/{hooks-Dg2Frpz0.js → hooks-DANXBliL.js} +1 -1
- package/dist/client/assets/{index-wrITCcjl.js → index-BQbrxApR.js} +1 -1
- package/dist/client/assets/{index-DenJs5sE.js → index-BzV3bISK.js} +1 -1
- package/dist/client/assets/{index-DmPaVPlu.js → index-C-470Zac.js} +1 -1
- package/dist/client/assets/{index-BLYa-xPc.js → index-C2EC-8EL.js} +1 -1
- package/dist/client/assets/{index-CDs_QQCL.js → index-CYGHWhAG.js} +1 -1
- package/dist/client/assets/{index-PsYI8Ca0.js → index-Cr9NwzG_.js} +1 -1
- package/dist/client/assets/{index-MgwLdL9G.js → index-D6Wx8_a-.js} +1 -1
- package/dist/client/assets/index-DWoH_HtY.js +1 -0
- package/dist/client/assets/{index-DKx5G8Va.js → index-DYMgyYa7.js} +1 -1
- package/dist/client/assets/{index-Dh4CrY1s.js → index-Du0UrpQW.js} +1 -1
- package/dist/client/assets/{index-7WZCfAEC.js → index-jVjQV0hI.js} +6 -6
- package/dist/client/assets/{index-redirect-DFLoDZ18.js → index-redirect-DES_itg8.js} +1 -1
- package/dist/client/assets/{index-CsPiRlx_.js → index-wCxpHMXU.js} +2 -2
- package/dist/client/assets/{infiniteQueryObserver-BYczTowi.js → infiniteQueryObserver-BeHrAgTJ.js} +1 -1
- package/dist/client/assets/{infra-billing-RmhSqMlk.js → infra-billing-B4wQxygg.js} +1 -1
- package/dist/client/assets/{input-Dkr7KB5W.js → input-B1KBCyOs.js} +1 -1
- package/dist/client/assets/{integration-icon-CTAloypQ.js → integration-icon-CePBNsW5.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BZ5OGNhG.js → invite-member-dialog-Bt5E6A0n.js} +1 -1
- package/dist/client/assets/{label-B9Xs-hxl.js → label-Yogy3AMi.js} +1 -1
- package/dist/client/assets/{layout-CjKa7sHz.js → layout-vR4ZjU0Y.js} +1 -1
- package/dist/client/assets/{login-D6Uz5CEP.js → login-BNEwujRE.js} +1 -1
- package/dist/client/assets/{markdown-TMVW7i-M.js → markdown-pR8dS8tN.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DbtiEiMT.js → mcp-app-renderer-yKTik6A5.js} +1 -1
- package/dist/client/assets/{mcp-oauth-D4qrP2gT.js → mcp-oauth-Blxm9yu4.js} +1 -1
- package/dist/client/assets/{members-CzrDQeBP.js → members-B-zfccSk.js} +1 -1
- package/dist/client/assets/{monaco-editor-bBgOTEkk.js → monaco-editor-C1EipHZw.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DMEHnvf5.js → monitoring-stats-row-kZlGn9lw.js} +1 -1
- package/dist/client/assets/{multi-select-B-OCwtkS.js → multi-select-DbQIPTvx.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DnzACxyc.js → oauth-callback-ai-provider-CkT7e4xe.js} +1 -1
- package/dist/client/assets/{oauth-callback-DDc3L3dS.js → oauth-callback-go6uCK8z.js} +1 -1
- package/dist/client/assets/{onboarding-D-x1MBcV.js → onboarding-ZsHNNbTD.js} +1 -1
- package/dist/client/assets/{org-layout-Bg0qYrUx.js → org-layout-DGEdM2Nu.js} +1 -1
- package/dist/client/assets/{organization-choice-D5wA2RrU.js → organization-choice-dpjOK7dX.js} +1 -1
- package/dist/client/assets/{orgs-Dtw5twNX.js → orgs-D9Thop-7.js} +1 -1
- package/dist/client/assets/{page-seo-form-Bk6mOUqY.js → page-seo-form-FpfB128L.js} +1 -1
- package/dist/client/assets/{popover-BpUTm1Hm.js → popover-KRufMKxS.js} +1 -1
- package/dist/client/assets/{post-calendar-C5CwOzy9.js → post-calendar-C3AebbbR.js} +1 -1
- package/dist/client/assets/{post-editor-nb_iA1-B.js → post-editor-B1vjx1wx.js} +1 -1
- package/dist/client/assets/{primitives-BUx-7Nmk.js → primitives-BUOq_WQw.js} +1 -1
- package/dist/client/assets/{profile-BJyZ3Piu.js → profile-W9d1pU_e.js} +1 -1
- package/dist/client/assets/{project-app-view-Dkpdg-sh.js → project-app-view-CfpylulM.js} +1 -1
- package/dist/client/assets/{project-icon-BEADTctn.js → project-icon-B94kMA3_.js} +1 -1
- package/dist/client/assets/{prompts-Cjp5ItGV.js → prompts-DaUX-VsQ.js} +1 -1
- package/dist/client/assets/record-editor-CkacRj41.js +1 -0
- package/dist/client/assets/redirect-editor-QFv5yaYh.js +1 -0
- package/dist/client/assets/registry-BKojoZoQ.js +2 -0
- package/dist/client/assets/{registry-layout-CNIINxRN.js → registry-layout-zvbeoiS_.js} +1 -1
- package/dist/client/assets/{reports-CD8eb4lU.js → reports-Cu8NNHJP.js} +1 -1
- package/dist/client/assets/{repositories-CJ4nlW9t.js → repositories-D-8nbJWQ.js} +1 -1
- package/dist/client/assets/{repository-import-picker-D53kj9YM.js → repository-import-picker-B16wm8S6.js} +1 -1
- package/dist/client/assets/{repository-picker-C6xSQ1Ri.js → repository-picker-BDbRX4J2.js} +1 -1
- package/dist/client/assets/{require-capability-CFKJbUBd.js → require-capability-Brgi9MZC.js} +1 -1
- package/dist/client/assets/{required-auth-layout-PoO7861G.js → required-auth-layout-7OnYlzzI.js} +1 -1
- package/dist/client/assets/{reset-password-D1bmllNe.js → reset-password-Bpi4U0v1.js} +1 -1
- package/dist/client/assets/{review-settings-B8rTcib6.js → review-settings-BB0z6lbx.js} +1 -1
- package/dist/client/assets/{roles-wnL9bdDz.js → roles-BZxoN_WF.js} +1 -1
- package/dist/client/assets/{schema-D_iAW_xp.js → schema-DEBkVaPA.js} +1 -1
- package/dist/client/assets/{scroll-area-DBBiBOQk.js → scroll-area-5Gm53RHY.js} +1 -1
- package/dist/client/assets/{search-input-DHmOCWVM.js → search-input-BfRFSUX5.js} +1 -1
- package/dist/client/assets/{secrets-Chc4KfFX.js → secrets-BI5nZAHq.js} +1 -1
- package/dist/client/assets/{sections-editor-Bx4qsKIg.js → sections-editor-Dy4bMVx9.js} +1 -1
- package/dist/client/assets/{select-tlIpqxul.js → select-D2esvO84.js} +1 -1
- package/dist/client/assets/{select-model-EelYHP6V.js → select-model-C02TlxcO.js} +1 -1
- package/dist/client/assets/{self-tool-result-B7CCUn70.js → self-tool-result-DG5s1xX7.js} +1 -1
- package/dist/client/assets/{seo-editor-av5gx8Jk.js → seo-editor-Dx9vDVJD.js} +1 -1
- package/dist/client/assets/settings-layout-voBtcJ4c.js +1 -0
- package/dist/client/assets/{settings-sidebar-f85Um7Kl.js → settings-sidebar-8bs0eLOB.js} +1 -1
- package/dist/client/assets/{shell-controls-BpvDSp6_.js → shell-controls-sw1RAMWc.js} +1 -1
- package/dist/client/assets/{shell-layout-BHiU0Sud.js → shell-layout-BKNo8IP7.js} +1 -1
- package/dist/client/assets/{skill-preview-CJYcvarN.js → skill-preview-COY_tzil.js} +1 -1
- package/dist/client/assets/{skills-Dfp6kb8Z.js → skills-CirkkNm8.js} +1 -1
- package/dist/client/assets/{sso-DTEHy0LU.js → sso-BYOvoXWp.js} +1 -1
- package/dist/client/assets/{store-BNzeCY0k.js → store-93oYAikO.js} +1 -1
- package/dist/client/assets/store-registry-DLLF2duk.js +2 -0
- package/dist/client/assets/{switch-BMdyPtay.js → switch-C83YjSMx.js} +1 -1
- package/dist/client/assets/{synced-repos-DPwiHLX5.js → synced-repos-B1PdvR5A.js} +1 -1
- package/dist/client/assets/{table-euRZ6_hw.js → table-CaELPge9.js} +1 -1
- package/dist/client/assets/{tabs-Dq0emcdd.js → tabs-DNXilkmX.js} +1 -1
- package/dist/client/assets/{task-board-DqZOHMqE.js → task-board-UoxyHghA.js} +1 -1
- package/dist/client/assets/{task-route-DxnlXeA4.js → task-route-BTYDQRMB.js} +1 -1
- package/dist/client/assets/{tasks-D_NSMXfG.js → tasks-DB8ZBOnH.js} +1 -1
- package/dist/client/assets/{textarea-DtlOFRxg.js → textarea-BVGL4VzR.js} +1 -1
- package/dist/client/assets/{thread-intent-D5lkmufv.js → thread-intent-DlW98pT-.js} +1 -1
- package/dist/client/assets/{thread-route-oWy45CSD.js → thread-route-BfZqAdlp.js} +1 -1
- package/dist/client/assets/{toggle-group-B315Q2TX.js → toggle-group-BFoG8LvG.js} +1 -1
- package/dist/client/assets/{toolbar-Dtsu1Oef.js → toolbar-CSi4T63u.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-BzbSXQez.js → toolbar-icon-button-BDwbo3iu.js} +1 -1
- package/dist/client/assets/{track-BHovZpJ9.js → track-BwotVDYq.js} +1 -1
- package/dist/client/assets/{types-BxUW4bOt.js → types-CxLXVtsa.js} +1 -1
- package/dist/client/assets/{use-ai-providers-DikLHRuS.js → use-ai-providers-DAIKj8K_.js} +1 -1
- package/dist/client/assets/{use-automations-drB1pKfk.js → use-automations-CcJYDVHH.js} +1 -1
- package/dist/client/assets/{use-autosave-ov0t57Bb.js → use-autosave-DkYdqG5Q.js} +1 -1
- package/dist/client/assets/{use-connection-BDUsghk9.js → use-connection-Ckt2VSVj.js} +1 -1
- package/dist/client/assets/{use-copy-xNPe7XAC.js → use-copy-D_r7vUr3.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-edm0tuWu.js → use-create-virtual-mcp-Bcr83t2O.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-_Fmuw0R7.js → use-date-fns-locale-BhkvBGh5.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DnrCKyJs.js → use-debounced-autosave-9KKq9zM9.js} +1 -1
- package/dist/client/assets/{use-debounced-value-Cs4V3oiU.js → use-debounced-value-zfbRgwSa.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CP3TrC9J.js → use-decopilot-events-Dk2thWkI.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CedBxO87.js → use-delete-connection-BTwremoh.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-yzH5G7Dd.js → use-deployment-admin-B-blvFdu.js} +1 -1
- package/dist/client/assets/{use-destination-route-CWYl0ATT.js → use-destination-route-DOmalBIZ.js} +1 -1
- package/dist/client/assets/{use-file-configs-CnIZeNA7.js → use-file-configs-Dnm1IOUj.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-DD-XwiTr.js → use-infinite-scroll-C_KRQFtJ.js} +1 -1
- package/dist/client/assets/{use-join-requests-BW2OvPGw.js → use-join-requests-j7pP3D2t.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-ChzlM0NG.js → use-mcp-auth-status-9fSmzejd.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DCgL0W41.js → use-mcp-client-B0Utyl6_.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-CZFcnI6X.js → use-mcp-prompts-DyVA4Qsg.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-darjTlWV.js → use-mcp-tools-Bl1AaPU5.js} +1 -1
- package/dist/client/assets/{use-members-BhVXbG28.js → use-members-DHE1d9JH.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-4TBuEgYY.js → use-navigate-to-agent-gzG4Ilg4.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-fejM4Byg.js → use-org-auth-client-CNCWRij0.js} +1 -1
- package/dist/client/assets/{use-org-notice-ClbiRkoy.js → use-org-notice-BvKoElEP.js} +1 -1
- package/dist/client/assets/{use-org-sso-_k3mjEsd.js → use-org-sso-BdRX_9vq.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CbOkXwuf.js → use-organization-roles-BK2K8Im9.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CFhSXgsp.js → use-organization-settings-QMzmHJ8V.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-CuXMCksX.js → use-panel-navigate-BHUMH5LJ.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CUtbtWSk.js → use-registry-connections-Ce9R841t.js} +1 -1
- package/dist/client/assets/{use-secrets-DOvrs1Fd.js → use-secrets-BzfnIrZM.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-B8GdUbTG.js → use-section-preview-base-DCtnTCwm.js} +1 -1
- package/dist/client/assets/{use-status-sounds-B0NN1ZfE.js → use-status-sounds-B3rVna2J.js} +1 -1
- package/dist/client/assets/{use-tags-CmcVkkro.js → use-tags-J0GNorDt.js} +1 -1
- package/dist/client/assets/{use-view-mode-DKD73D8t.js → use-view-mode-Baq2aGok.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-DqH6iX_E.js → use-virtual-mcp-b2E02BqA.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DWBUS5nx.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-o9ts3gfL.js +1 -0
- package/dist/client/assets/{users-DhtIokv7.js → users-DUGKGMNy.js} +1 -1
- package/dist/client/assets/{variant-calendar-DP1UmtKt.js → variant-calendar-DlPcIlwu.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-LutPYWIK.js → view-mode-toggle-C7NegMIk.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/api-keys-30s4md37.js +0 -1
- package/dist/client/assets/index-2inYPcZm.js +0 -1
- package/dist/client/assets/record-editor-lvVQ2HPW.js +0 -1
- package/dist/client/assets/redirect-editor-Bu2hzf8k.js +0 -1
- package/dist/client/assets/registry-DBs0sFJY.js +0 -2
- package/dist/client/assets/settings-layout-BIEzUgkB.js +0 -1
- package/dist/client/assets/store-registry-DjJD4T5m.js +0 -2
- package/dist/client/assets/useInfiniteQuery-8dfM9sJM.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BQSxFOHZ.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -1628,7 +1628,7 @@ you can set the \`dangerouslyAllowBrowser\` option to \`true\`, e.g.,
|
|
|
1628
1628
|
|
|
1629
1629
|
new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
|
|
1630
1630
|
`);this.baseURL=J.baseURL,this._baseURLIsExplicit=X.__baseURLIsExplicit??!!$,this.timeout=J.timeout??l41.DEFAULT_TIMEOUT,this.logger=J.logger??console,this.logLevel=Rs,this.logLevel=yz0(J.logLevel,"ClientOptions.logLevel",p4(this))??yz0(J4("ANTHROPIC_LOG"),"process.env['ANTHROPIC_LOG']",p4(this))??Rs,this.fetchOptions=J.fetchOptions,this.maxRetries=J.maxRetries??2,this.fetch=J.fetch??JA$(),s0(this,AP0,WA$,"f"),this.middleware=[...J.middleware??[]];let G=J4("ANTHROPIC_CUSTOM_HEADERS");if(G){let K={};for(let H of G.split(`
|
|
1631
|
-
`)){let F=H.indexOf(":");if(F>=0)K[H.substring(0,F).trim()]=H.substring(F+1).trim()}J.defaultHeaders={...K,...J.defaultHeaders}}let W=X.__auth;if(delete J.__auth,delete J.__baseURLIsExplicit,this._options=J,this.apiKey=typeof Z==="string"?Z:null,this.authToken=Q,this.webhookKey=Y,W){if(this._authState=W,!this._baseURLIsExplicit&&W.baseURL)this.baseURL=W.baseURL}else if(this._authState={provider:null,tokenCache:null,resolution:null,error:null,extraHeaders:{}},this.apiKey==null&&this.authToken==null){let K=J.credentials??null;if(K)this._authState.provider=K,this._authState.tokenCache=this._makeTokenCache(K);else if(J.config!=null){let H=U81(J.config,this._credentialResolverOptions());this._authState.provider=H.provider,this._authState.tokenCache=this._makeTokenCache(H.provider),this._authState.extraHeaders=H.extraHeaders,this._applyCredentialBaseURL(H.baseURL)}else if(J.profile!=null)this._authState.resolution=this._resolveDefaultCredentials(J.profile);else this._authState.resolution=this._resolveDefaultCredentials()}}_applyCredentialBaseURL($){if(!$)return;let Z=$.replace(/\/+$/,"");if(this._authState.baseURL=Z,!this._baseURLIsExplicit)this.baseURL=Z}_credentialResolverOptions(){return{baseURL:this.baseURL,fetch:this._credentialsFetch(),userAgent:this.getUserAgent(),onCacheWriteError:($)=>{p4(this).debug("credential cache write failed (best-effort)",$)},onSafetyWarning:($)=>{p4(this).warn($)}}}_credentialsFetch(){return O81(this.fetch,this.middleware,void 0,this)}_makeTokenCache($){return new Y81($,(Z)=>{p4(this).debug("advisory token refresh failed; serving cached token",Z)})}withOptions($){let Z="credentials"in $||"config"in $||"profile"in $,Q="apiKey"in $||"authToken"in $||Z,Y={...this._options,...this._baseURLIsExplicit?{baseURL:this.baseURL}:{},maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,middleware:this.middleware,apiKey:this.apiKey,authToken:this.authToken,webhookKey:this.webhookKey,credentials:this.credentials,...Z?{credentials:void 0,config:void 0,profile:void 0}:{},...$,__auth:Q?void 0:this._authState,__baseURLIsExplicit:"baseURL"in $?!0:this._baseURLIsExplicit};return new this.constructor(Y)}async _resolveDefaultCredentials($){try{let Z=await dA$(this._credentialResolverOptions(),$);if(Z)this._authState.provider=Z.provider,this._authState.tokenCache=this._makeTokenCache(Z.provider),this._authState.extraHeaders=Z.extraHeaders,this._applyCredentialBaseURL(Z.baseURL);else if($!=null)throw new F1(`Profile "${$}" could not be resolved (no <config_dir>/configs/${$}.json found).`)}catch(Z){this._authState.error=Z}finally{this._authState.resolution=null}}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:$,nulls:Z}){if($.get("x-api-key")||$.get("authorization"))return;if(this._authState.error)throw this._authState.error;if(this._authState.tokenCache||this._authState.resolution)return;if(this.apiKey&&$.get("x-api-key"))return;if(Z.has("x-api-key"))return;if(this.authToken&&$.get("authorization"))return;if(Z.has("authorization"))return;throw Error('Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}_authFlags($){let Z=this._requestAuthFlags.get($);if(!Z)Z={usedTokenCache:!1,didRefreshFor401:!1},this._requestAuthFlags.set($,Z);return Z}async authHeaders($){if(this._authState.resolution)await this._authState.resolution;if(this._authState.error)return;if(this._authState.tokenCache&&this.apiKey==null){let Z=await this._authState.tokenCache.getToken();return this._authFlags($).usedTokenCache=!0,C0([{Authorization:`Bearer ${Z}`}])}return C0([await this.apiKeyAuth($),await this.bearerAuth($)])}async apiKeyAuth($){if(this.apiKey==null)return;return C0([{"X-Api-Key":this.apiKey}])}async bearerAuth($){if(this.authToken==null)return;return C0([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery($){return EA$($)}getUserAgent(){return`${this.constructor.name}/JS ${H3}`}defaultIdempotencyKey(){return`stainless-node-retry-${xu()}`}makeStatusError($,Z,Q,Y){return A9.generate($,Z,Q,Y)}buildURL($,Z,Q){let Y=!c(this,u41,"m",AT$).call(this)&&Q||this.baseURL,X=aP$($)?new URL($):new URL(Y+(Y.endsWith("/")&&$.startsWith("/")?$.slice(1):$)),J=this.defaultQuery(),G=Object.fromEntries(X.searchParams);if(!p$1(J)||!p$1(G))Z={...G,...J,...Z};if(typeof Z==="object"&&Z&&!Array.isArray(Z))X.search=this.stringifyQuery(Z);return X.toString()}_calculateNonstreamingTimeout($){if(3600*$/128000>600)throw new F1("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details");return 600000}async prepareOptions($){}async prepareRequest($,{url:Z,options:Q}){if(this._authState.tokenCache&&this.apiKey==null){let Y=$.headers instanceof Headers?$.headers:new Headers($.headers);for(let[J,G]of Object.entries(this._authState.extraHeaders))if(!Y.has(J))Y.set(J,G);if(!Y.get("anthropic-beta")?.split(",").map((J)=>J.trim())?.includes(dv))Y.append("anthropic-beta",dv);$.headers=Y}}backendMiddleware(){return[]}get($,Z){return this.methodRequest("get",$,Z)}post($,Z){return this.methodRequest("post",$,Z)}patch($,Z){return this.methodRequest("patch",$,Z)}put($,Z){return this.methodRequest("put",$,Z)}delete($,Z){return this.methodRequest("delete",$,Z)}methodRequest($,Z,Q){return this.request(Promise.resolve(Q).then((Y)=>{return{method:$,path:Z,...Y}}))}request($,Z=null){return new mv(this,this.makeRequest($,Z,void 0))}async makeRequest($,Z,Q){let Y=await $,X=Y.maxRetries??this.maxRetries;if(Z==null)Z=X,this._requestAuthFlags.delete(Y);await this.prepareOptions(Y);let{req:J,url:G,timeout:W}=await this.buildRequest(Y,{retryCount:X-Z}),K="log_"+(Math.random()*16777216|0).toString(16).padStart(6,"0"),H=Q===void 0?"":`, retryOf: ${Q}`,F=Date.now();if(Y.signal?.aborted)throw new fQ;let U=new AbortController,N=await this.fetchWithTimeout(G,J,W,U,Y,{requestLogID:K,retryOfRequestLogID:Q}).catch(cv),B=Date.now();if(N instanceof globalThis.Error){let w=`retrying, ${Z} attempts remaining`;if(Y.signal?.aborted)throw new fQ;let E=K3(N)||/timed? ?out/i.test(String(N)+("cause"in N?String(N.cause):"")),j=this.middleware.length>0||!!Y.middleware?.length||this.backendMiddleware().length>0;if(j&&!E&&!rA$(N))throw p4(this).info(`[${K}] middleware error (not retryable)`),p4(this).debug(`[${K}] middleware error (not retryable)`,iH({retryOfRequestLogID:Q,url:G,durationMs:B-F,message:N.message})),N;if(Z)return p4(this).info(`[${K}] connection ${E?"timed out":"failed"} - ${w}`),p4(this).debug(`[${K}] connection ${E?"timed out":"failed"} (${w})`,iH({retryOfRequestLogID:Q,url:G,durationMs:B-F,message:N.message})),this.retryRequest(Y,Z,Q??K);if(p4(this).info(`[${K}] connection ${E?"timed out":"failed"} - error; no more retries left`),p4(this).debug(`[${K}] connection ${E?"timed out":"failed"} (error; no more retries left)`,iH({retryOfRequestLogID:Q,url:G,durationMs:B-F,message:N.message})),E)throw new Us;if(j&&!B81(N))throw N;throw new NN({cause:N})}let O=[...N.headers.entries()].filter(([w])=>w==="request-id").map(([w,E])=>", "+w+": "+JSON.stringify(E)).join(""),L=`[${K}${H}${O}] ${J.method} ${G} ${N.ok?"succeeded":"failed"} with status ${N.status} in ${B-F}ms`;if(!N.ok){let w=await this.shouldRetry(N,Y);if(Z&&w){let q=`retrying, ${Z} attempts remaining`;return await GA$(N.body),p4(this).info(`${L} - ${q}`),p4(this).debug(`[${K}] response error (${q})`,iH({retryOfRequestLogID:Q,url:N.url,status:N.status,headers:N.headers,durationMs:B-F})),this.retryRequest(Y,Z,Q??K,N.headers)}let E=w?"error; no more retries left":"error; not retryable";p4(this).info(`${L} - ${E}`);let j=await N.text().catch((q)=>cv(q).message),z=zs(j),P=z?void 0:j;throw p4(this).debug(`[${K}] response error (${E})`,iH({retryOfRequestLogID:Q,url:N.url,status:N.status,headers:N.headers,message:P,durationMs:Date.now()-F})),this.makeStatusError(N.status,z,P,N.headers)}return p4(this).info(L),p4(this).debug(`[${K}] response start`,iH({retryOfRequestLogID:Q,url:N.url,status:N.status,headers:N.headers,durationMs:B-F})),{response:N,options:Y,controller:U,requestLogID:K,retryOfRequestLogID:Q,startTime:F}}getAPIList($,Z,Q){return this.requestAPIList(Z,Q&&"then"in Q?Q.then((Y)=>({method:"get",path:$,...Y})):{method:"get",path:$,...Q})}requestAPIList($,Z){let Q=this.makeRequest(Z,null,void 0);return new dz0(this,Q,$)}async fetchWithTimeout($,Z,Q,Y,X,J){let{signal:G,method:W,...K}=Z||{},H=this._makeAbort(Y);if(G)G.addEventListener("abort",H,{once:!0});let F=globalThis.ReadableStream&&K.body instanceof globalThis.ReadableStream||typeof K.body==="object"&&K.body!==null&&Symbol.asyncIterator in K.body,U={signal:Y.signal,...F?{duplex:"half"}:{},method:"GET",...K};if(W)U.method=W.toUpperCase();let N=this.fetch,B=async(j,z)=>{let P=setTimeout(H,Q);try{return await N.call(void 0,j,z)}finally{clearTimeout(P)}},O=X===void 0?B:async(j,z={})=>{let P=typeof j==="string"?j:j instanceof URL?j.href:j.url;if(z.headers=z.headers instanceof Headers?z.headers:new Headers(z.headers),await this.prepareRequest(z,{url:P,options:X}),J)p4(this).debug(`[${J.requestLogID}] sending request`,iH({retryOfRequestLogID:J.retryOfRequestLogID,method:z.method,url:P,options:X,headers:z.headers}));return B(j,z)},L=X?.middleware,w=this.backendMiddleware(),E=L?.length||w.length?[...this.middleware,...L??[],...w]:this.middleware;return await O81(O,E,X,this)($,U)}async shouldRetry($,Z){let Q=this._authFlags(Z);if($.status===401&&this._authState.tokenCache&&Q.usedTokenCache&&!Q.didRefreshFor401)return Q.didRefreshFor401=!0,this._authState.tokenCache.invalidate(),!0;let Y=$.headers.get("x-should-retry");if(Y==="true")return!0;if(Y==="false")return!1;if($.status===408)return!0;if($.status===409)return!0;if($.status===429)return!0;if($.status>=500)return!0;return!1}async retryRequest($,Z,Q,Y){let X,J=Y?.get("retry-after-ms");if(J){let W=parseFloat(J);if(!Number.isNaN(W))X=W}let G=Y?.get("retry-after");if(G&&!X){let W=parseFloat(G);if(!Number.isNaN(W))X=W*1000;else X=Date.parse(G)-Date.now()}if(X===void 0){let W=$.maxRetries??this.maxRetries;X=this.calculateDefaultRetryTimeoutMillis(Z,W)}return await mW(X),this.makeRequest($,Z-1,Q)}calculateDefaultRetryTimeoutMillis($,Z){let X=Z-$,J=Math.min(0.5*Math.pow(2,X),8),G=1-Math.random()*0.25;return J*G*1000}calculateNonstreamingTimeout($,Z){if(3600000*$/128000>600000||Z!=null&&$>Z)throw new F1("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details");return 600000}async buildRequest($,{retryCount:Z=0}={}){let Q={...$},{method:Y,path:X,query:J,defaultBaseURL:G}=Q;if(this._authState.resolution)await this._authState.resolution;if(!this._baseURLIsExplicit&&this._authState.baseURL&&this.baseURL!==this._authState.baseURL)this.baseURL=this._authState.baseURL;let W=this.buildURL(X,J,G);if("timeout"in Q)$A$("timeout",Q.timeout);Q.timeout=Q.timeout??this.timeout;let{bodyHeaders:K,body:H}=this.buildBody({options:Q}),F=await this.buildHeaders({options:$,method:Y,bodyHeaders:K,retryCount:Z});return{req:{method:Y,headers:F,...Q.signal&&{signal:Q.signal},...globalThis.ReadableStream&&H instanceof globalThis.ReadableStream&&{duplex:"half"},...H&&{body:H},...this.fetchOptions??{},...Q.fetchOptions??{}},url:W,timeout:Q.timeout}}async buildHeaders({options:$,method:Z,bodyHeaders:Q,retryCount:Y}){let X={};if(this.idempotencyHeader&&Z!=="get"){if(!$.idempotencyKey)$.idempotencyKey=this.defaultIdempotencyKey();X[this.idempotencyHeader]=$.idempotencyKey}let J=C0([X,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(Y),...$.timeout?{"X-Stainless-Timeout":String(Math.trunc($.timeout/1000))}:{},...Ps(),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":"true"}:void 0,"anthropic-version":"2023-06-01"},await this.authHeaders($),this._options.defaultHeaders,Q,$.headers]);return this.validateHeaders(J),J.values}_makeAbort($){return()=>$.abort()}buildBody({options:{body:$,headers:Z}}){if(!$)return{bodyHeaders:void 0,body:void 0};let Q=C0([Z]);if(ArrayBuffer.isView($)||$ instanceof ArrayBuffer||$ instanceof DataView||typeof $==="string"&&Q.values.has("content-type")||globalThis.Blob&&$ instanceof globalThis.Blob||$ instanceof FormData||$ instanceof URLSearchParams||globalThis.ReadableStream&&$ instanceof globalThis.ReadableStream)return{bodyHeaders:void 0,body:$};else if(typeof $==="object"&&((Symbol.asyncIterator in $)||(Symbol.iterator in $)&&("next"in $)&&typeof $.next==="function"))return{bodyHeaders:void 0,body:kz0($)};else if(typeof $==="object"&&Q.values.get("content-type")==="application/x-www-form-urlencoded")return{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery($)};else return c(this,AP0,"f").call(this,{body:$,headers:Q})}}var u41,l41,AP0,AT$,TT$="\\n\\nHuman:",RT$="\\n\\nAssistant:",DN;var c41=D(()=>{VX();dW();Mz0();Z81();C5();gu();qA$();mA$();sA$();J5();z81();PT$();lz0();M41();h41();I41();g41();Mz0();n4();pH();dW();l41=T9,AP0=new WeakMap,u41=new WeakSet,AT$=function(){return this.baseURL!=="https://api.anthropic.com"};T9.Anthropic=l41;T9.HUMAN_PROMPT=TT$;T9.AI_PROMPT=RT$;T9.DEFAULT_TIMEOUT=600000;T9.AnthropicError=F1;T9.APIError=A9;T9.APIConnectionError=NN;T9.APIConnectionTimeoutError=Us;T9.APIUserAbortError=fQ;T9.NotFoundError=Ds;T9.ConflictError=Ls;T9.RateLimitError=Es;T9.BadRequestError=Ns;T9.AuthenticationError=Bs;T9.InternalServerError=js;T9.PermissionDeniedError=Os;T9.UnprocessableEntityError=ws;T9.toFile=mz0;DN=class DN extends T9{constructor(){super(...arguments);this.completions=new Wl(this),this.messages=new Xf(this),this.models=new Hl(this),this.beta=new _Z(this)}};DN.Completions=Wl;DN.Messages=Xf;DN.Models=Hl;DN.Beta=_Z});var qT$=D(()=>{C5();Is();dW()});var g81=D(()=>{c41();z81();lz0();qT$();c41();J5();C5()});var IT$;var MT$=D(()=>{z01();g81();IT$={info:{id:"anthropic",name:"Anthropic",description:"Anthropic's Claude family of models",logo:"https://assets.decocache.com/decocms/51a209ae-14bc-4b6f-8216-8eb670695bd7/Anthropic-Icon--Streamline-Svg-Logos.svg"},supportedMethods:["api-key"],create($){let Z=lr({apiKey:$}),Q=new DN({apiKey:$});return{info:this.info,aiSdk:Z,async listModels(){return(await Q.models.list()).data.map((X)=>({modelId:X.id,providerId:"anthropic",title:X.display_name,description:null,logo:null,capabilities:[],limits:null,costs:null}))},async countTokens({messages:Y,modelId:X}){return{count:(await Q.messages.countTokens({messages:Y,model:X})).input_tokens}}}}}});var kT$=D(()=>{l01()});var VT$=D(()=>{kT$()});function Rx4($){let Z=$.name.replace("models/","");if(/^imagen-/.test(Z)||/-image/.test(Z)){let Q=["image"];if($.supportedGenerationMethods.includes("generateContent"))Q.push("text");return Q}return[]}var ST$;var CT$=D(()=>{k01();VT$();ST$={info:{id:"google",name:"Google Gemini",description:"Google's Gemini family of models",logo:"https://assets.decocache.com/decocms/29370b4b-c623-487b-a6c4-a1637a2c0401/Google__G__logo.svg"},supportedMethods:["api-key"],create($){let Z=mr({apiKey:$});return{info:this.info,aiSdk:Z,asyncResearch:{canHandle:(Q)=>nr(Q),start:async({modelId:Q,query:Y,abortSignal:X})=>{let{interactionId:J}=await kj0({apiKey:$,agent:Q,query:Y,abortSignal:X});return{jobId:J}},resume:({jobId:Q,abortSignal:Y,onProgress:X,pollIntervalMs:J})=>Vj0({apiKey:$,interactionId:Q,abortSignal:Y,onProgress:X,pollIntervalMs:J})},async listModels(){let Q=await fetch("https://generativelanguage.googleapis.com/v1beta/models",{headers:{"x-goog-api-key":$}});if(!Q.ok)throw Error(`Google listModels failed: ${Q.status}`);return(await Q.json()).models.filter((X)=>X.lifecycleState!=="DEPRECATED").map((X)=>{let J=X.name.replace("models/","");return{modelId:J,providerId:"google",title:X.displayName,description:X.description,logo:null,capabilities:Rx4(X),limits:{contextWindow:X.inputTokenLimit,maxOutputTokens:X.outputTokenLimit},costs:null,...nr(J)&&{asyncResearch:!0}}})}}}}});var _T$="https://api.llmapi.ai/v1",qx4="https://llmapi.ai/wp-content/uploads/2026/01/Frame-2085662993.png",vT$;var fT$=D(()=>{Mj0();vT$={info:{id:"llmapi",name:"LLMAPI",description:"One API key, 400+ models across every provider",logo:qx4},supportedMethods:["api-key"],create($){let Z=vv({apiKey:$||"not-needed",baseURL:_T$,name:"llmapi"}),Q=Object.assign((...Y)=>Z.chat(...Y),Z,{languageModel:Z.chat});return{info:this.info,aiSdk:Q,async listModels(){let Y=await fetch(`${_T$}/models`,{headers:$?{Authorization:`Bearer ${$}`}:{},signal:AbortSignal.timeout(15000)});if(!Y.ok)throw Error(`LLMAPI listModels failed: ${Y.status}`);let{data:X}=await Y.json();return X.map((J)=>{let G=J.architecture??{},W=!!J.reasoning_levels?.length||!!J.providers?.some((K)=>K.reasoning);return{providerId:"llmapi",modelId:J.id,title:J.name||J.id,description:J.description??null,logo:null,capabilities:[...new Set([...(G.input_modalities??[]).map((K)=>K==="image"?"vision":K),...G.output_modalities??[],...J.supported_parameters?.includes("tools")?["tools"]:[],...W?["reasoning"]:[]])],limits:{contextWindow:J.context_length??0,maxOutputTokens:null},costs:{input:Number(J.pricing?.prompt)||0,output:Number(J.pricing?.completion)||0}}})}}}}});function Ix4($){let Z=JSON.parse($);if(!Z.baseUrl||typeof Z.baseUrl!=="string")throw Error("Invalid OpenAI-compatible credential: missing baseUrl field");let Q=Z.baseUrl.replace(/\/+$/,"");if(!Q.endsWith("/v1"))Q+="/v1";return{baseUrl:Q,apiKey:Z.apiKey??""}}var Mx4="https://assets.decocache.com/decocms/d138aa7e-5b8c-4821-9e64-6aff40df2cdc/ChatGPT_logo.svg",bT$;var xT$=D(()=>{Mj0();bT$={info:{id:"openai-compatible",name:"OpenAI Compatible",description:"Custom OpenAI-compatible endpoint",logo:Mx4},supportedMethods:["api-key"],create($){let{baseUrl:Z,apiKey:Q}=Ix4($),Y=vv({baseURL:Z,apiKey:Q||"not-needed",name:"openai-compatible"}),X=Object.assign((...J)=>Y.chat(...J),Y,{languageModel:Y.chat});return{info:this.info,aiSdk:X,async listModels(){let J={};if(Q)J.Authorization=`Bearer ${Q}`;let G=await fetch(`${Z}/models`,{headers:J,signal:AbortSignal.timeout(15000)});if(!G.ok)throw Error(`OpenAI-compatible listModels failed: ${G.status}`);return(await G.json()).data.map((K)=>({providerId:"openai-compatible",modelId:K.id,title:K.id,description:K.owned_by?`Owned by ${K.owned_by}`:null,logo:null,capabilities:[],limits:null,costs:null}))}}}}});function u7(){return{...M0().aiGatewayEnabled&&{deco:mO},anthropic:IT$,google:ST$,openrouter:s70,llmapi:vT$,"openai-compatible":bT$}}var LN=D(()=>{MT$();CT$();fT$();xT$();rm0();a70();E$()});import oJ from"zod";var d41;var yT$=D(()=>{q0();LN();d41=g({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:oJ.object({}),outputSchema:oJ.object({providers:oJ.array(oJ.object({id:oJ.string(),name:oJ.string(),description:oJ.string(),logo:oJ.string().optional(),supportedMethods:oJ.array(oJ.enum(["api-key","oauth-pkce"])),supportsTopUp:oJ.boolean().optional(),supportsCredits:oJ.boolean().optional(),supportsProvision:oJ.boolean().optional()}))}),handler:async($,Z)=>{return n(Z),p(Z),await Z.access.check(),{providers:Object.values(u7()).filter((Y)=>!!Y).map((Y)=>({...Y.info,supportedMethods:Y.supportedMethods,supportsTopUp:!!Y.getTopUpUrl,supportsCredits:!!Y.getCreditsBalance,supportsProvision:!!Y.provisionKey}))}}})});import vZ from"zod";var m41;var gT$=D(()=>{q0();Ru();m41=g({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider. Requires a valid stored API key.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:vZ.object({keyId:vZ.string().describe("The provider key ID to use")}),outputSchema:vZ.object({models:vZ.array(vZ.object({providerId:vZ.string(),modelId:vZ.string(),title:vZ.string(),description:vZ.string().nullish(),logo:vZ.string().nullish(),capabilities:vZ.array(vZ.string()),limits:vZ.object({contextWindow:vZ.coerce.number(),maxOutputTokens:vZ.coerce.number().nullable()}).nullish(),costs:vZ.object({input:vZ.coerce.number(),output:vZ.coerce.number()}).nullish(),asyncResearch:vZ.boolean().optional()}))}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let[Y,X]=await Promise.all([Z.aiProviders.listModels($.keyId,Q.id),cW(Z.db,Q.id,Q.role??Z.auth.user?.role)]);return{models:Y.filter((G)=>lW(X,$.keyId,G.modelId))}}})});import wN from"zod";var i41;var hT$=D(()=>{q0();LN();i41=g({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:wN.object({}),outputSchema:wN.object({providers:wN.array(wN.object({id:wN.string(),name:wN.string(),description:wN.string(),logo:wN.string().optional(),keyCount:wN.number()}))}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.aiProviderKeys.list({organizationId:Q.id}),X=new Map;for(let G of Y)X.set(G.providerId,(X.get(G.providerId)??0)+1);return{providers:[...X.entries()].flatMap(([G,W])=>{let H=u7()[G];if(!H)return console.warn(`AI provider "${G}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:W}]})}}})});var EN=D(()=>{V8()});import nW from"zod";var Jf,p41;var qa=D(()=>{V4();q0();EN();Jf=nW.object({id:nW.string(),providerId:nW.string(),label:nW.string(),presetId:nW.string().nullable(),createdAt:nW.string()}),p41=g({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:nW.object({providerId:nW.enum(GQ),label:nW.string().min(1).max(100),apiKey:nW.string().min(1),presetId:nW.string().min(1).max(64).optional()}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.aiProviderKeys.create({providerId:$.providerId,label:$.label,apiKey:$.apiKey,organizationId:Q.id,createdBy:Z.auth.user.id,presetId:$.presetId??null});return I1.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_created",groups:{organization:Q.id},properties:{organization_id:Q.id,provider_id:Y.providerId,preset_id:Y.presetId,key_id:Y.id,label:Y.label}}),{id:Y.id,providerId:Y.providerId,label:Y.label,presetId:Y.presetId,createdAt:Y.createdAt}}})});import TP0 from"zod";var Fl=($,Z)=>$&&$.keyId===Z?null:$,kx4=($,Z)=>{let Q={tiers:{fast:Fl($.tiers.fast,Z),smart:Fl($.tiers.smart,Z),thinking:Fl($.tiers.thinking,Z),image:Fl($.tiers.image,Z),web_search:Fl($.tiers.web_search,Z),deep_research:Fl($.tiers.deep_research,Z)}},Y=Q.tiers.fast!==$.tiers.fast||Q.tiers.smart!==$.tiers.smart||Q.tiers.thinking!==$.tiers.thinking||Q.tiers.image!==$.tiers.image||Q.tiers.web_search!==$.tiers.web_search||Q.tiers.deep_research!==$.tiers.deep_research;return{config:Q,changed:Y}},n41;var uT$=D(()=>{V4();q0();n41=g({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:TP0.object({keyId:TP0.string().describe("The provider key ID to delete")}),outputSchema:TP0.object({success:TP0.boolean()}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.organizationSettings.get(Q.id);if(Y?.simple_mode){let{config:X,changed:J}=kx4(Y.simple_mode,$.keyId);if(J)await Z.storage.organizationSettings.upsert(Q.id,{simple_mode:X})}return await Z.storage.aiProviderKeys.delete($.keyId,Q.id),I1.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:Q.id},properties:{organization_id:Q.id,key_id:$.keyId}}),{success:!0}}})});import RP0 from"zod";var t41;var lT$=D(()=>{q0();qa();t41=g({name:"AI_PROVIDER_KEY_UPDATE",description:"Update the label and/or API key of a stored AI provider key. Pass apiKey to rotate the stored credential.",inputSchema:RP0.object({keyId:RP0.string(),label:RP0.string().min(1).max(100).optional(),apiKey:RP0.string().min(1).optional()}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.aiProviderKeys.updateKey($.keyId,Q.id,{label:$.label,apiKey:$.apiKey});return{id:Y.id,providerId:Y.providerId,label:Y.label,presetId:Y.presetId,createdAt:Y.createdAt}}})});import Ul from"zod";var o41;var cT$=D(()=>{q0();o41=g({name:"AI_PROVIDER_KEY_PREVIEW",description:"Get the label and a masked preview of a stored AI provider API key. The API key is partially obscured (only the last 4 characters are visible). For openai-compatible keys the baseUrl is also returned.",inputSchema:Ul.object({keyId:Ul.string()}),outputSchema:Ul.object({label:Ul.string(),maskedKey:Ul.string(),baseUrl:Ul.string().optional()}),handler:async($,Z)=>{n(Z);let Q=p(Z);return await Z.access.check(),Z.storage.aiProviderKeys.getPreview($.keyId,Q.id)}})});import tW from"zod";var r41;var dT$=D(()=>{q0();EN();Ru();r41=g({name:"AI_PROVIDER_KEY_LIST",description:"List stored AI provider API keys. Returns metadata only \u2014 secrets are never exposed.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:tW.object({providerId:tW.enum(Y50).optional()}),outputSchema:tW.object({keys:tW.array(tW.object({id:tW.string(),providerId:tW.string(),label:tW.string(),presetId:tW.string().nullable(),createdBy:tW.string(),createdAt:tW.string()}))}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let[Y,X]=await Promise.all([Z.storage.aiProviderKeys.list({organizationId:Q.id,providerId:$.providerId}),cW(Z.db,Q.id,Q.role??Z.auth.user?.role)]);return{keys:Y.filter((W)=>Tj$(X,W.id)).map(({organizationId:W,...K})=>K)}}})});import{createHash as Vx4,randomBytes as Sx4}from"crypto";function mT$(){return Sx4(32).toString("base64url")}function iT$($){return Vx4("sha256").update($).digest("base64url")}var pT$=()=>{};import Nl from"zod";function nT$($){return $==="localhost"||$.endsWith(".localhost")||$==="127.0.0.1"||$==="[::1]"||$==="::1"}function Cx4($){let Z=M0(),Q=Z.baseUrl??`http://localhost:${Z.port}`,Y=new URL($),X=new URL(Q);if(Y.origin===X.origin)return!0;return Y.protocol===X.protocol&&nT$(Y.hostname)&&nT$(X.hostname)}var s41;var tT$=D(()=>{q0();EN();LN();pT$();E$();s41=g({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:Nl.object({providerId:Nl.enum(GQ),callbackUrl:Nl.string().url().refine(($)=>{return Cx4($)},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:Nl.object({url:Nl.string(),stateToken:Nl.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=u7()[$.providerId];if(!Y)throw Error(`Unknown provider: ${$.providerId}`);if(!Y.supportedMethods.includes("oauth-pkce")||!Y.getOAuthUrl)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let X=mT$(),J=iT$(X),G=await Z.storage.oauthPkceStates.create(X,Q.id,Z.auth.user.id),W=new URL($.callbackUrl);W.searchParams.set("state",G);let K={callbackUrl:W.toString(),codeChallenge:J,codeChallengeMethod:"S256",organizationId:Q.id};return{url:Y.getOAuthUrl(K),stateToken:G}}})});import Ia from"zod";var a41;var oT$=D(()=>{q0();EN();LN();qa();a41=g({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key. Completes the OAuth flow started by AI_PROVIDER_OAUTH_URL.",inputSchema:Ia.object({providerId:Ia.enum(GQ),code:Ia.string(),stateToken:Ia.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:Ia.string().min(1).max(100)}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=u7()[$.providerId];if(!Y)throw Error(`Unknown provider: ${$.providerId}`);if(!Y.supportedMethods.includes("oauth-pkce")||!Y.exchangeOAuthCode)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let X=n0(Z);if(!X)throw Error("Unable to determine user ID");let J=await Z.storage.oauthPkceStates.consume($.stateToken,Q.id,X),{apiKey:G}=await Y.exchangeOAuthCode({code:$.code,codeVerifier:J,codeChallengeMethod:"S256"}),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:$.label,apiKey:G,organizationId:Q.id,createdBy:X});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});import rT$ from"zod";var e41;var sT$=D(()=>{q0();EN();LN();bB();qa();e41=g({name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision an API key for a provider that supports server-to-server key creation (e.g. Deco AI Gateway).",inputSchema:rT$.object({providerId:rT$.enum(GQ)}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=n0(Z);if(!Y)throw Error("Unable to determine user ID");let X=u7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.provisionKey)throw Error(`Provider ${$.providerId} does not support key provisioning`);let J=await TK(Y),G=await X.provisionKey(J,Q.id),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:"Auto-provisioned",apiKey:G,organizationId:Q.id,createdBy:Y});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});function $61(){let $=M0();return $.aiGatewayEnabled&&!!$.aiGatewayAdminToken}async function _x4($,Z,Q){let Y=M0(),X=await fetch(`${Y.aiGatewayUrl}${$}`,{method:"POST",headers:{Authorization:`Bearer ${Y.aiGatewayAdminToken}`,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:AbortSignal.timeout(15000)});if(!X.ok){let J=await X.text().catch(()=>"");throw Error(`${Q} failed (${X.status}): ${J}`)}}async function aT$($){if(!$61())throw Error("gateway admin not configured \u2014 cannot credit top-up");await _x4("/api/admin/credits",{orgId:$.organizationId,amountCents:$.amountCents,description:"Studio credit top-up (Stripe)",referenceId:$.referenceId},"gateway top-up credit")}var Z61=D(()=>{E$()});import Bl from"zod";var vx4=1e6,Q61;var eT$=D(()=>{Z61();tj();P5();E$();q0();EN();LN();bB();Q61=g({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:Bl.object({providerId:Bl.enum(GQ),amountCents:Bl.number().int().positive().max(vx4).describe("Amount in cents (e.g. 1000 = $10.00), max $10,000.00"),currency:Bl.enum(["usd","brl"]).default("usd")}),outputSchema:Bl.object({url:Bl.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=n0(Z);if(!Y)throw Error("Unable to determine user ID");let X=M0();if($.providerId==="deco"&&X.stripeSecretKey&&$61()&&Q.slug){let K=await Z.storage.organizationBilling.getBilling(Q.id),H=`${F5()}${pO(Q.slug)}`,{url:F}=await o4$({organizationId:Q.id,amountCents:$.amountCents,currency:$.currency,feePercent:X.topupFeePercent,customerId:K?.stripeCustomerId??null,successUrl:`${H}?topup=success`,cancelUrl:`${H}?topup=canceled`});return{url:F}}let J=u7()[$.providerId];if(!J)throw Error(`Unknown provider: ${$.providerId}`);if(!J.getTopUpUrl)throw Error(`Provider ${$.providerId} does not support credit top-ups`);let G=await TK(Y,Z.auth.user?.email);return{url:await J.getTopUpUrl(G,Q.id,$.amountCents,$.currency)}}})});import qP0 from"zod";function fx4($){return Number.isFinite($)}var Y61;var $R$=D(()=>{q0();EN();LN();bB();Y61=g({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:qP0.object({providerId:qP0.enum(GQ)}),outputSchema:qP0.object({balanceCents:qP0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=n0(Z);if(!Y)throw Error("Unable to determine user ID");let X=u7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.getCreditsBalance)throw Error(`Provider ${$.providerId} does not expose a credits balance`);let J=await TK(Y),G=await X.getCreditsBalance(J,Q.id);if(!fx4(G.balanceCents))throw console.error(`AI provider "${$.providerId}" returned a non-finite credits balance for org ${Q.id}: ${G.balanceCents}`),Error(`Provider ${$.providerId} returned an invalid credits balance`);return G}})});var ZR$=D(()=>{yT$();gT$();hT$();qa();uT$();lT$();cT$();dT$();tT$();oT$();sT$();eT$();$R$()});import CL from"zod";function yx4($){let Z=$.trim();if(Z.startsWith(xx4))throw Error("That looks like a Console API key, which bills per-token API usage instead of your subscription. Run `claude setup-token` and paste the token it prints.");if(/\s/.test(Z))throw Error("The token must not contain spaces or line breaks");if(Z.length===0)throw Error("The token must not be empty");return Z}var X61,xx4="sk-ant-api",QR$,YR$,XR$;var JR$=D(()=>{q0();X61=CL.object({connected:CL.boolean(),linkedAt:CL.string().nullable(),expiresAt:CL.string().nullable().describe("Known expiry, or null when the token carries none we can read")});QR$=g({name:"CLAUDE_SUBSCRIPTION_CONNECT",description:"Link the caller's Claude subscription with a token from `claude setup-token`, so their claude-code runs bill against their own Pro/Max plan. Stored encrypted, for the caller only.",inputSchema:CL.object({token:CL.string().min(1).describe("The token printed by `claude setup-token` (sk-ant-oat\u2026)")}),outputSchema:X61,handler:async($,Z)=>{n(Z),p(Z),await Z.access.check();let Q=n0(Z);if(!Q)throw Error("Unable to determine user ID");let Y=yx4($.token);return{connected:!0,...await Z.storage.claudeSubscriptions.upsert({userId:Q,accessToken:Y})}}}),YR$=g({name:"CLAUDE_SUBSCRIPTION_STATUS",description:"Whether the caller has a linked Claude subscription token, and since when.",inputSchema:CL.object({}),outputSchema:X61,handler:async($,Z)=>{n(Z),p(Z),await Z.access.check();let Q=n0(Z);if(!Q)throw Error("Unable to determine user ID");let Y=await Z.storage.claudeSubscriptions.find(Q);if(!Y)return{connected:!1,linkedAt:null,expiresAt:null};return{connected:!(Y.expiresAt!==null&&new Date(Y.expiresAt)<=new Date),...Y}}}),XR$=g({name:"CLAUDE_SUBSCRIPTION_DISCONNECT",description:"Unlink the caller's Claude subscription and delete the stored token.",inputSchema:CL.object({}),outputSchema:X61,handler:async($,Z)=>{n(Z),p(Z),await Z.access.check();let Q=n0(Z);if(!Q)throw Error("Unable to determine user ID");return await Z.storage.claudeSubscriptions.delete(Q),{connected:!1,linkedAt:null,expiresAt:null}}})});import rH from"zod";var IP0;var J61=D(()=>{IP0=rH.object({id:rH.string(),scope:rH.enum(["user","organization"]),userId:rH.string().nullable(),name:rH.string(),description:rH.string().nullable(),createdBy:rH.string(),createdAt:rH.string(),updatedBy:rH.string(),updatedAt:rH.string()})});import Ma from"zod";var hx4=65536,G61;var GR$=D(()=>{q0();J61();G61=g({name:"SECRET_CREATE",description:"Create a secret. The value is encrypted at rest in the credential vault and never returned by any tool. Scope 'user' is private to the caller within this organization; scope 'organization' is visible to all org members.",inputSchema:Ma.object({scope:Ma.enum(["user","organization"]),name:Ma.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:Ma.string().min(1).max(hx4),description:Ma.string().max(500).optional()}),outputSchema:IP0,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=Z.auth.user.id,X=$.scope==="user"?{kind:"user",userId:Y}:{kind:"organization"};return await Z.storage.secrets.create({organizationId:Q.id,scope:X,name:$.name,value:$.value,description:$.description??null,createdBy:Y})}})});import MP0 from"zod";var W61;var WR$=D(()=>{q0();J61();W61=g({name:"SECRET_LIST",description:"List secrets visible to the caller: all organization-scoped secrets, plus user-scoped secrets owned by the caller. Values are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:MP0.object({scope:MP0.enum(["user","organization"]).optional()}),outputSchema:MP0.object({secrets:MP0.array(IP0)}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=Z.auth.user.id,X=$.scope==="user"?{kind:"user",userId:Y}:$.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await Z.storage.secrets.list({organizationId:Q.id,callerUserId:Y,scope:X})}}})});var KR$=D(()=>{GR$();WR$()});var Gf=_((px4)=>{var K61;(function($){$.HEADER="header",$.QUERY="query"})(K61||(K61={}));var H61;(function($){$.HEADER="header",$.QUERY="query"})(H61||(H61={}));var F61;(function($){$.HTTP="http",$.HTTPS="https"})(F61||(F61={}));var ka;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(ka||(ka={}));var lx4=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>ka.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>ka.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},cx4=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},dx4=($)=>{return lx4($)},mx4=($)=>{return cx4($)},U61;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(U61||(U61={}));var ix4="__smithy_context",N61;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(N61||(N61={}));var B61;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(B61||(B61={}));px4.AlgorithmId=ka;px4.EndpointURLScheme=F61;px4.FieldPosition=U61;px4.HttpApiKeyAuthLocation=H61;px4.HttpAuthLocation=K61;px4.IniSectionType=N61;px4.RequestHandlerProtocol=B61;px4.SMITHY_CONTEXT_KEY=ix4;px4.getDefaultClientConfiguration=dx4;px4.resolveDefaultRuntimeConfig=mx4});var sH=_((Hy4)=>{var{SMITHY_CONTEXT_KEY:HR$}=Gf(),Yy4=($)=>$[HR$]||($[HR$]={});class kP0{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor($){this.method=$.method||"GET",this.hostname=$.hostname||"localhost",this.port=$.port,this.query=$.query||{},this.headers=$.headers||{},this.body=$.body,this.protocol=$.protocol?$.protocol.slice(-1)!==":"?`${$.protocol}:`:$.protocol:"https:",this.path=$.path?$.path.charAt(0)!=="/"?`/${$.path}`:$.path:"/",this.username=$.username,this.password=$.password,this.fragment=$.fragment}static clone($){let Z=new kP0({...$,headers:{...$.headers}});if(Z.query)Z.query=Xy4(Z.query);return Z}static isInstance($){if(!$)return!1;let Z=$;return"method"in Z&&"protocol"in Z&&"hostname"in Z&&"path"in Z&&typeof Z.query==="object"&&typeof Z.headers==="object"}clone(){return kP0.clone(this)}}function Xy4($){return Object.keys($).reduce((Z,Q)=>{let Y=$[Q];return{...Z,[Q]:Array.isArray(Y)?[...Y]:Y}},{})}class FR${statusCode;reason;headers;body;constructor($){this.statusCode=$.statusCode,this.reason=$.reason,this.headers=$.headers||{},this.body=$.body}static isInstance($){if(!$)return!1;let Z=$;return typeof Z.statusCode==="number"&&typeof Z.headers==="object"}}var Jy4=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),UR$=($,Z=!1)=>{if(!Z)return Jy4.test($);let Q=$.split(".");for(let Y of Q)if(!UR$(Y))return!1;return!0};function Gy4($){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test($)}var Wy4=($)=>{if(typeof $==="function")return $;let Z=Promise.resolve($);return()=>Z};function NR$($){let Z={};if($=$.replace(/^\?/,""),$)for(let Q of $.split("&")){let[Y,X=null]=Q.split("=");if(Y=decodeURIComponent(Y),X)X=decodeURIComponent(X);if(!(Y in Z))Z[Y]=X;else if(Array.isArray(Z[Y]))Z[Y].push(X);else Z[Y]=[Z[Y],X]}return Z}var VP0=($)=>{if(typeof $==="string")return VP0(new URL($));let{hostname:Z,pathname:Q,port:Y,protocol:X,search:J}=$,G;if(J)G=NR$(J);return{hostname:Z,port:Y?parseInt(Y):void 0,protocol:X,path:Q,query:G}},Ky4=($)=>{if(typeof $==="object"){if("url"in $){let Z=VP0($.url);if($.headers){Z.headers={};for(let Q in $.headers)Z.headers[Q.toLowerCase()]=$.headers[Q].join(", ")}return Z}return $}return VP0($)};Hy4.HttpRequest=kP0;Hy4.HttpResponse=FR$;Hy4.getSmithyContext=Yy4;Hy4.isValidHostLabel=UR$;Hy4.isValidHostname=Gy4;Hy4.normalizeProvider=Wy4;Hy4.parseQueryString=NR$;Hy4.parseUrl=VP0;Hy4.toEndpointV1=Ky4});var oW=_((_y4)=>{var{getSmithyContext:BR$,HttpResponse:jy4,toEndpointV1:zy4}=sH(),SP0=($)=>{if(typeof $==="function")return $();return $},L61=($,Z,Q,Y,X)=>({name:Z,namespace:$,traits:Q,input:Y,output:X}),Py4=($)=>(Z,Q)=>async(Y)=>{let{response:X}=await Z(Y),{operationSchema:J}=BR$(Q),[,G,W,K,H,F]=J??[];try{let U=await $.protocol.deserializeResponse(L61(G,W,K,H,F),{...$,...Q},X);return{response:X,output:U}}catch(U){if(Object.defineProperty(U,"$response",{value:X,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in U)){try{U.message+=`
|
|
1631
|
+
`)){let F=H.indexOf(":");if(F>=0)K[H.substring(0,F).trim()]=H.substring(F+1).trim()}J.defaultHeaders={...K,...J.defaultHeaders}}let W=X.__auth;if(delete J.__auth,delete J.__baseURLIsExplicit,this._options=J,this.apiKey=typeof Z==="string"?Z:null,this.authToken=Q,this.webhookKey=Y,W){if(this._authState=W,!this._baseURLIsExplicit&&W.baseURL)this.baseURL=W.baseURL}else if(this._authState={provider:null,tokenCache:null,resolution:null,error:null,extraHeaders:{}},this.apiKey==null&&this.authToken==null){let K=J.credentials??null;if(K)this._authState.provider=K,this._authState.tokenCache=this._makeTokenCache(K);else if(J.config!=null){let H=U81(J.config,this._credentialResolverOptions());this._authState.provider=H.provider,this._authState.tokenCache=this._makeTokenCache(H.provider),this._authState.extraHeaders=H.extraHeaders,this._applyCredentialBaseURL(H.baseURL)}else if(J.profile!=null)this._authState.resolution=this._resolveDefaultCredentials(J.profile);else this._authState.resolution=this._resolveDefaultCredentials()}}_applyCredentialBaseURL($){if(!$)return;let Z=$.replace(/\/+$/,"");if(this._authState.baseURL=Z,!this._baseURLIsExplicit)this.baseURL=Z}_credentialResolverOptions(){return{baseURL:this.baseURL,fetch:this._credentialsFetch(),userAgent:this.getUserAgent(),onCacheWriteError:($)=>{p4(this).debug("credential cache write failed (best-effort)",$)},onSafetyWarning:($)=>{p4(this).warn($)}}}_credentialsFetch(){return O81(this.fetch,this.middleware,void 0,this)}_makeTokenCache($){return new Y81($,(Z)=>{p4(this).debug("advisory token refresh failed; serving cached token",Z)})}withOptions($){let Z="credentials"in $||"config"in $||"profile"in $,Q="apiKey"in $||"authToken"in $||Z,Y={...this._options,...this._baseURLIsExplicit?{baseURL:this.baseURL}:{},maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,middleware:this.middleware,apiKey:this.apiKey,authToken:this.authToken,webhookKey:this.webhookKey,credentials:this.credentials,...Z?{credentials:void 0,config:void 0,profile:void 0}:{},...$,__auth:Q?void 0:this._authState,__baseURLIsExplicit:"baseURL"in $?!0:this._baseURLIsExplicit};return new this.constructor(Y)}async _resolveDefaultCredentials($){try{let Z=await dA$(this._credentialResolverOptions(),$);if(Z)this._authState.provider=Z.provider,this._authState.tokenCache=this._makeTokenCache(Z.provider),this._authState.extraHeaders=Z.extraHeaders,this._applyCredentialBaseURL(Z.baseURL);else if($!=null)throw new F1(`Profile "${$}" could not be resolved (no <config_dir>/configs/${$}.json found).`)}catch(Z){this._authState.error=Z}finally{this._authState.resolution=null}}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:$,nulls:Z}){if($.get("x-api-key")||$.get("authorization"))return;if(this._authState.error)throw this._authState.error;if(this._authState.tokenCache||this._authState.resolution)return;if(this.apiKey&&$.get("x-api-key"))return;if(Z.has("x-api-key"))return;if(this.authToken&&$.get("authorization"))return;if(Z.has("authorization"))return;throw Error('Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}_authFlags($){let Z=this._requestAuthFlags.get($);if(!Z)Z={usedTokenCache:!1,didRefreshFor401:!1},this._requestAuthFlags.set($,Z);return Z}async authHeaders($){if(this._authState.resolution)await this._authState.resolution;if(this._authState.error)return;if(this._authState.tokenCache&&this.apiKey==null){let Z=await this._authState.tokenCache.getToken();return this._authFlags($).usedTokenCache=!0,C0([{Authorization:`Bearer ${Z}`}])}return C0([await this.apiKeyAuth($),await this.bearerAuth($)])}async apiKeyAuth($){if(this.apiKey==null)return;return C0([{"X-Api-Key":this.apiKey}])}async bearerAuth($){if(this.authToken==null)return;return C0([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery($){return EA$($)}getUserAgent(){return`${this.constructor.name}/JS ${H3}`}defaultIdempotencyKey(){return`stainless-node-retry-${xu()}`}makeStatusError($,Z,Q,Y){return A9.generate($,Z,Q,Y)}buildURL($,Z,Q){let Y=!c(this,u41,"m",AT$).call(this)&&Q||this.baseURL,X=aP$($)?new URL($):new URL(Y+(Y.endsWith("/")&&$.startsWith("/")?$.slice(1):$)),J=this.defaultQuery(),G=Object.fromEntries(X.searchParams);if(!p$1(J)||!p$1(G))Z={...G,...J,...Z};if(typeof Z==="object"&&Z&&!Array.isArray(Z))X.search=this.stringifyQuery(Z);return X.toString()}_calculateNonstreamingTimeout($){if(3600*$/128000>600)throw new F1("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details");return 600000}async prepareOptions($){}async prepareRequest($,{url:Z,options:Q}){if(this._authState.tokenCache&&this.apiKey==null){let Y=$.headers instanceof Headers?$.headers:new Headers($.headers);for(let[J,G]of Object.entries(this._authState.extraHeaders))if(!Y.has(J))Y.set(J,G);if(!Y.get("anthropic-beta")?.split(",").map((J)=>J.trim())?.includes(dv))Y.append("anthropic-beta",dv);$.headers=Y}}backendMiddleware(){return[]}get($,Z){return this.methodRequest("get",$,Z)}post($,Z){return this.methodRequest("post",$,Z)}patch($,Z){return this.methodRequest("patch",$,Z)}put($,Z){return this.methodRequest("put",$,Z)}delete($,Z){return this.methodRequest("delete",$,Z)}methodRequest($,Z,Q){return this.request(Promise.resolve(Q).then((Y)=>{return{method:$,path:Z,...Y}}))}request($,Z=null){return new mv(this,this.makeRequest($,Z,void 0))}async makeRequest($,Z,Q){let Y=await $,X=Y.maxRetries??this.maxRetries;if(Z==null)Z=X,this._requestAuthFlags.delete(Y);await this.prepareOptions(Y);let{req:J,url:G,timeout:W}=await this.buildRequest(Y,{retryCount:X-Z}),K="log_"+(Math.random()*16777216|0).toString(16).padStart(6,"0"),H=Q===void 0?"":`, retryOf: ${Q}`,F=Date.now();if(Y.signal?.aborted)throw new fQ;let U=new AbortController,N=await this.fetchWithTimeout(G,J,W,U,Y,{requestLogID:K,retryOfRequestLogID:Q}).catch(cv),B=Date.now();if(N instanceof globalThis.Error){let w=`retrying, ${Z} attempts remaining`;if(Y.signal?.aborted)throw new fQ;let E=K3(N)||/timed? ?out/i.test(String(N)+("cause"in N?String(N.cause):"")),j=this.middleware.length>0||!!Y.middleware?.length||this.backendMiddleware().length>0;if(j&&!E&&!rA$(N))throw p4(this).info(`[${K}] middleware error (not retryable)`),p4(this).debug(`[${K}] middleware error (not retryable)`,iH({retryOfRequestLogID:Q,url:G,durationMs:B-F,message:N.message})),N;if(Z)return p4(this).info(`[${K}] connection ${E?"timed out":"failed"} - ${w}`),p4(this).debug(`[${K}] connection ${E?"timed out":"failed"} (${w})`,iH({retryOfRequestLogID:Q,url:G,durationMs:B-F,message:N.message})),this.retryRequest(Y,Z,Q??K);if(p4(this).info(`[${K}] connection ${E?"timed out":"failed"} - error; no more retries left`),p4(this).debug(`[${K}] connection ${E?"timed out":"failed"} (error; no more retries left)`,iH({retryOfRequestLogID:Q,url:G,durationMs:B-F,message:N.message})),E)throw new Us;if(j&&!B81(N))throw N;throw new NN({cause:N})}let O=[...N.headers.entries()].filter(([w])=>w==="request-id").map(([w,E])=>", "+w+": "+JSON.stringify(E)).join(""),L=`[${K}${H}${O}] ${J.method} ${G} ${N.ok?"succeeded":"failed"} with status ${N.status} in ${B-F}ms`;if(!N.ok){let w=await this.shouldRetry(N,Y);if(Z&&w){let q=`retrying, ${Z} attempts remaining`;return await GA$(N.body),p4(this).info(`${L} - ${q}`),p4(this).debug(`[${K}] response error (${q})`,iH({retryOfRequestLogID:Q,url:N.url,status:N.status,headers:N.headers,durationMs:B-F})),this.retryRequest(Y,Z,Q??K,N.headers)}let E=w?"error; no more retries left":"error; not retryable";p4(this).info(`${L} - ${E}`);let j=await N.text().catch((q)=>cv(q).message),z=zs(j),P=z?void 0:j;throw p4(this).debug(`[${K}] response error (${E})`,iH({retryOfRequestLogID:Q,url:N.url,status:N.status,headers:N.headers,message:P,durationMs:Date.now()-F})),this.makeStatusError(N.status,z,P,N.headers)}return p4(this).info(L),p4(this).debug(`[${K}] response start`,iH({retryOfRequestLogID:Q,url:N.url,status:N.status,headers:N.headers,durationMs:B-F})),{response:N,options:Y,controller:U,requestLogID:K,retryOfRequestLogID:Q,startTime:F}}getAPIList($,Z,Q){return this.requestAPIList(Z,Q&&"then"in Q?Q.then((Y)=>({method:"get",path:$,...Y})):{method:"get",path:$,...Q})}requestAPIList($,Z){let Q=this.makeRequest(Z,null,void 0);return new dz0(this,Q,$)}async fetchWithTimeout($,Z,Q,Y,X,J){let{signal:G,method:W,...K}=Z||{},H=this._makeAbort(Y);if(G)G.addEventListener("abort",H,{once:!0});let F=globalThis.ReadableStream&&K.body instanceof globalThis.ReadableStream||typeof K.body==="object"&&K.body!==null&&Symbol.asyncIterator in K.body,U={signal:Y.signal,...F?{duplex:"half"}:{},method:"GET",...K};if(W)U.method=W.toUpperCase();let N=this.fetch,B=async(j,z)=>{let P=setTimeout(H,Q);try{return await N.call(void 0,j,z)}finally{clearTimeout(P)}},O=X===void 0?B:async(j,z={})=>{let P=typeof j==="string"?j:j instanceof URL?j.href:j.url;if(z.headers=z.headers instanceof Headers?z.headers:new Headers(z.headers),await this.prepareRequest(z,{url:P,options:X}),J)p4(this).debug(`[${J.requestLogID}] sending request`,iH({retryOfRequestLogID:J.retryOfRequestLogID,method:z.method,url:P,options:X,headers:z.headers}));return B(j,z)},L=X?.middleware,w=this.backendMiddleware(),E=L?.length||w.length?[...this.middleware,...L??[],...w]:this.middleware;return await O81(O,E,X,this)($,U)}async shouldRetry($,Z){let Q=this._authFlags(Z);if($.status===401&&this._authState.tokenCache&&Q.usedTokenCache&&!Q.didRefreshFor401)return Q.didRefreshFor401=!0,this._authState.tokenCache.invalidate(),!0;let Y=$.headers.get("x-should-retry");if(Y==="true")return!0;if(Y==="false")return!1;if($.status===408)return!0;if($.status===409)return!0;if($.status===429)return!0;if($.status>=500)return!0;return!1}async retryRequest($,Z,Q,Y){let X,J=Y?.get("retry-after-ms");if(J){let W=parseFloat(J);if(!Number.isNaN(W))X=W}let G=Y?.get("retry-after");if(G&&!X){let W=parseFloat(G);if(!Number.isNaN(W))X=W*1000;else X=Date.parse(G)-Date.now()}if(X===void 0){let W=$.maxRetries??this.maxRetries;X=this.calculateDefaultRetryTimeoutMillis(Z,W)}return await mW(X),this.makeRequest($,Z-1,Q)}calculateDefaultRetryTimeoutMillis($,Z){let X=Z-$,J=Math.min(0.5*Math.pow(2,X),8),G=1-Math.random()*0.25;return J*G*1000}calculateNonstreamingTimeout($,Z){if(3600000*$/128000>600000||Z!=null&&$>Z)throw new F1("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details");return 600000}async buildRequest($,{retryCount:Z=0}={}){let Q={...$},{method:Y,path:X,query:J,defaultBaseURL:G}=Q;if(this._authState.resolution)await this._authState.resolution;if(!this._baseURLIsExplicit&&this._authState.baseURL&&this.baseURL!==this._authState.baseURL)this.baseURL=this._authState.baseURL;let W=this.buildURL(X,J,G);if("timeout"in Q)$A$("timeout",Q.timeout);Q.timeout=Q.timeout??this.timeout;let{bodyHeaders:K,body:H}=this.buildBody({options:Q}),F=await this.buildHeaders({options:$,method:Y,bodyHeaders:K,retryCount:Z});return{req:{method:Y,headers:F,...Q.signal&&{signal:Q.signal},...globalThis.ReadableStream&&H instanceof globalThis.ReadableStream&&{duplex:"half"},...H&&{body:H},...this.fetchOptions??{},...Q.fetchOptions??{}},url:W,timeout:Q.timeout}}async buildHeaders({options:$,method:Z,bodyHeaders:Q,retryCount:Y}){let X={};if(this.idempotencyHeader&&Z!=="get"){if(!$.idempotencyKey)$.idempotencyKey=this.defaultIdempotencyKey();X[this.idempotencyHeader]=$.idempotencyKey}let J=C0([X,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(Y),...$.timeout?{"X-Stainless-Timeout":String(Math.trunc($.timeout/1000))}:{},...Ps(),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":"true"}:void 0,"anthropic-version":"2023-06-01"},await this.authHeaders($),this._options.defaultHeaders,Q,$.headers]);return this.validateHeaders(J),J.values}_makeAbort($){return()=>$.abort()}buildBody({options:{body:$,headers:Z}}){if(!$)return{bodyHeaders:void 0,body:void 0};let Q=C0([Z]);if(ArrayBuffer.isView($)||$ instanceof ArrayBuffer||$ instanceof DataView||typeof $==="string"&&Q.values.has("content-type")||globalThis.Blob&&$ instanceof globalThis.Blob||$ instanceof FormData||$ instanceof URLSearchParams||globalThis.ReadableStream&&$ instanceof globalThis.ReadableStream)return{bodyHeaders:void 0,body:$};else if(typeof $==="object"&&((Symbol.asyncIterator in $)||(Symbol.iterator in $)&&("next"in $)&&typeof $.next==="function"))return{bodyHeaders:void 0,body:kz0($)};else if(typeof $==="object"&&Q.values.get("content-type")==="application/x-www-form-urlencoded")return{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery($)};else return c(this,AP0,"f").call(this,{body:$,headers:Q})}}var u41,l41,AP0,AT$,TT$="\\n\\nHuman:",RT$="\\n\\nAssistant:",DN;var c41=D(()=>{VX();dW();Mz0();Z81();C5();gu();qA$();mA$();sA$();J5();z81();PT$();lz0();M41();h41();I41();g41();Mz0();n4();pH();dW();l41=T9,AP0=new WeakMap,u41=new WeakSet,AT$=function(){return this.baseURL!=="https://api.anthropic.com"};T9.Anthropic=l41;T9.HUMAN_PROMPT=TT$;T9.AI_PROMPT=RT$;T9.DEFAULT_TIMEOUT=600000;T9.AnthropicError=F1;T9.APIError=A9;T9.APIConnectionError=NN;T9.APIConnectionTimeoutError=Us;T9.APIUserAbortError=fQ;T9.NotFoundError=Ds;T9.ConflictError=Ls;T9.RateLimitError=Es;T9.BadRequestError=Ns;T9.AuthenticationError=Bs;T9.InternalServerError=js;T9.PermissionDeniedError=Os;T9.UnprocessableEntityError=ws;T9.toFile=mz0;DN=class DN extends T9{constructor(){super(...arguments);this.completions=new Wl(this),this.messages=new Xf(this),this.models=new Hl(this),this.beta=new _Z(this)}};DN.Completions=Wl;DN.Messages=Xf;DN.Models=Hl;DN.Beta=_Z});var qT$=D(()=>{C5();Is();dW()});var g81=D(()=>{c41();z81();lz0();qT$();c41();J5();C5()});var IT$;var MT$=D(()=>{z01();g81();IT$={info:{id:"anthropic",name:"Anthropic",description:"Anthropic's Claude family of models",logo:"https://assets.decocache.com/decocms/51a209ae-14bc-4b6f-8216-8eb670695bd7/Anthropic-Icon--Streamline-Svg-Logos.svg"},supportedMethods:["api-key"],create($){let Z=lr({apiKey:$}),Q=new DN({apiKey:$});return{info:this.info,aiSdk:Z,async listModels(){return(await Q.models.list()).data.map((X)=>({modelId:X.id,providerId:"anthropic",title:X.display_name,description:null,logo:null,capabilities:[],limits:null,costs:null}))},async countTokens({messages:Y,modelId:X}){return{count:(await Q.messages.countTokens({messages:Y,model:X})).input_tokens}}}}}});var kT$=D(()=>{l01()});var VT$=D(()=>{kT$()});function Rx4($){let Z=$.name.replace("models/","");if(/^imagen-/.test(Z)||/-image/.test(Z)){let Q=["image"];if($.supportedGenerationMethods.includes("generateContent"))Q.push("text");return Q}return[]}var ST$;var CT$=D(()=>{k01();VT$();ST$={info:{id:"google",name:"Google Gemini",description:"Google's Gemini family of models",logo:"https://assets.decocache.com/decocms/29370b4b-c623-487b-a6c4-a1637a2c0401/Google__G__logo.svg"},supportedMethods:["api-key"],create($){let Z=mr({apiKey:$});return{info:this.info,aiSdk:Z,asyncResearch:{canHandle:(Q)=>nr(Q),start:async({modelId:Q,query:Y,abortSignal:X})=>{let{interactionId:J}=await kj0({apiKey:$,agent:Q,query:Y,abortSignal:X});return{jobId:J}},resume:({jobId:Q,abortSignal:Y,onProgress:X,pollIntervalMs:J})=>Vj0({apiKey:$,interactionId:Q,abortSignal:Y,onProgress:X,pollIntervalMs:J})},async listModels(){let Q=await fetch("https://generativelanguage.googleapis.com/v1beta/models",{headers:{"x-goog-api-key":$},signal:AbortSignal.timeout(15000)});if(!Q.ok)throw Error(`Google listModels failed: ${Q.status}`);return(await Q.json()).models.filter((X)=>X.lifecycleState!=="DEPRECATED").map((X)=>{let J=X.name.replace("models/","");return{modelId:J,providerId:"google",title:X.displayName,description:X.description,logo:null,capabilities:Rx4(X),limits:{contextWindow:X.inputTokenLimit,maxOutputTokens:X.outputTokenLimit},costs:null,...nr(J)&&{asyncResearch:!0}}})}}}}});var _T$="https://api.llmapi.ai/v1",qx4="https://llmapi.ai/wp-content/uploads/2026/01/Frame-2085662993.png",vT$;var fT$=D(()=>{Mj0();vT$={info:{id:"llmapi",name:"LLMAPI",description:"One API key, 400+ models across every provider",logo:qx4},supportedMethods:["api-key"],create($){let Z=vv({apiKey:$||"not-needed",baseURL:_T$,name:"llmapi"}),Q=Object.assign((...Y)=>Z.chat(...Y),Z,{languageModel:Z.chat});return{info:this.info,aiSdk:Q,async listModels(){let Y=await fetch(`${_T$}/models`,{headers:$?{Authorization:`Bearer ${$}`}:{},signal:AbortSignal.timeout(15000)});if(!Y.ok)throw Error(`LLMAPI listModels failed: ${Y.status}`);let{data:X}=await Y.json();return X.map((J)=>{let G=J.architecture??{},W=!!J.reasoning_levels?.length||!!J.providers?.some((K)=>K.reasoning);return{providerId:"llmapi",modelId:J.id,title:J.name||J.id,description:J.description??null,logo:null,capabilities:[...new Set([...(G.input_modalities??[]).map((K)=>K==="image"?"vision":K),...G.output_modalities??[],...J.supported_parameters?.includes("tools")?["tools"]:[],...W?["reasoning"]:[]])],limits:{contextWindow:J.context_length??0,maxOutputTokens:null},costs:{input:Number(J.pricing?.prompt)||0,output:Number(J.pricing?.completion)||0}}})}}}}});function Ix4($){let Z=JSON.parse($);if(!Z.baseUrl||typeof Z.baseUrl!=="string")throw Error("Invalid OpenAI-compatible credential: missing baseUrl field");let Q=Z.baseUrl.replace(/\/+$/,"");if(!Q.endsWith("/v1"))Q+="/v1";return{baseUrl:Q,apiKey:Z.apiKey??""}}var Mx4="https://assets.decocache.com/decocms/d138aa7e-5b8c-4821-9e64-6aff40df2cdc/ChatGPT_logo.svg",bT$;var xT$=D(()=>{Mj0();bT$={info:{id:"openai-compatible",name:"OpenAI Compatible",description:"Custom OpenAI-compatible endpoint",logo:Mx4},supportedMethods:["api-key"],create($){let{baseUrl:Z,apiKey:Q}=Ix4($),Y=vv({baseURL:Z,apiKey:Q||"not-needed",name:"openai-compatible"}),X=Object.assign((...J)=>Y.chat(...J),Y,{languageModel:Y.chat});return{info:this.info,aiSdk:X,async listModels(){let J={};if(Q)J.Authorization=`Bearer ${Q}`;let G=await fetch(`${Z}/models`,{headers:J,signal:AbortSignal.timeout(15000)});if(!G.ok)throw Error(`OpenAI-compatible listModels failed: ${G.status}`);return(await G.json()).data.map((K)=>({providerId:"openai-compatible",modelId:K.id,title:K.id,description:K.owned_by?`Owned by ${K.owned_by}`:null,logo:null,capabilities:[],limits:null,costs:null}))}}}}});function u7(){return{...M0().aiGatewayEnabled&&{deco:mO},anthropic:IT$,google:ST$,openrouter:s70,llmapi:vT$,"openai-compatible":bT$}}var LN=D(()=>{MT$();CT$();fT$();xT$();rm0();a70();E$()});import oJ from"zod";var d41;var yT$=D(()=>{q0();LN();d41=g({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:oJ.object({}),outputSchema:oJ.object({providers:oJ.array(oJ.object({id:oJ.string(),name:oJ.string(),description:oJ.string(),logo:oJ.string().optional(),supportedMethods:oJ.array(oJ.enum(["api-key","oauth-pkce"])),supportsTopUp:oJ.boolean().optional(),supportsCredits:oJ.boolean().optional(),supportsProvision:oJ.boolean().optional()}))}),handler:async($,Z)=>{return n(Z),p(Z),await Z.access.check(),{providers:Object.values(u7()).filter((Y)=>!!Y).map((Y)=>({...Y.info,supportedMethods:Y.supportedMethods,supportsTopUp:!!Y.getTopUpUrl,supportsCredits:!!Y.getCreditsBalance,supportsProvision:!!Y.provisionKey}))}}})});import vZ from"zod";var m41;var gT$=D(()=>{q0();Ru();m41=g({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider. Requires a valid stored API key.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:vZ.object({keyId:vZ.string().describe("The provider key ID to use")}),outputSchema:vZ.object({models:vZ.array(vZ.object({providerId:vZ.string(),modelId:vZ.string(),title:vZ.string(),description:vZ.string().nullish(),logo:vZ.string().nullish(),capabilities:vZ.array(vZ.string()),limits:vZ.object({contextWindow:vZ.coerce.number(),maxOutputTokens:vZ.coerce.number().nullable()}).nullish(),costs:vZ.object({input:vZ.coerce.number(),output:vZ.coerce.number()}).nullish(),asyncResearch:vZ.boolean().optional()}))}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let[Y,X]=await Promise.all([Z.aiProviders.listModels($.keyId,Q.id),cW(Z.db,Q.id,Q.role??Z.auth.user?.role)]);return{models:Y.filter((G)=>lW(X,$.keyId,G.modelId))}}})});import wN from"zod";var i41;var hT$=D(()=>{q0();LN();i41=g({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:wN.object({}),outputSchema:wN.object({providers:wN.array(wN.object({id:wN.string(),name:wN.string(),description:wN.string(),logo:wN.string().optional(),keyCount:wN.number()}))}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.aiProviderKeys.list({organizationId:Q.id}),X=new Map;for(let G of Y)X.set(G.providerId,(X.get(G.providerId)??0)+1);return{providers:[...X.entries()].flatMap(([G,W])=>{let H=u7()[G];if(!H)return console.warn(`AI provider "${G}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:W}]})}}})});var EN=D(()=>{V8()});import nW from"zod";var Jf,p41;var qa=D(()=>{V4();q0();EN();Jf=nW.object({id:nW.string(),providerId:nW.string(),label:nW.string(),presetId:nW.string().nullable(),createdAt:nW.string()}),p41=g({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:nW.object({providerId:nW.enum(GQ),label:nW.string().min(1).max(100),apiKey:nW.string().min(1),presetId:nW.string().min(1).max(64).optional()}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.aiProviderKeys.create({providerId:$.providerId,label:$.label,apiKey:$.apiKey,organizationId:Q.id,createdBy:Z.auth.user.id,presetId:$.presetId??null});return I1.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_created",groups:{organization:Q.id},properties:{organization_id:Q.id,provider_id:Y.providerId,preset_id:Y.presetId,key_id:Y.id,label:Y.label}}),{id:Y.id,providerId:Y.providerId,label:Y.label,presetId:Y.presetId,createdAt:Y.createdAt}}})});import TP0 from"zod";var Fl=($,Z)=>$&&$.keyId===Z?null:$,kx4=($,Z)=>{let Q={tiers:{fast:Fl($.tiers.fast,Z),smart:Fl($.tiers.smart,Z),thinking:Fl($.tiers.thinking,Z),image:Fl($.tiers.image,Z),web_search:Fl($.tiers.web_search,Z),deep_research:Fl($.tiers.deep_research,Z)}},Y=Q.tiers.fast!==$.tiers.fast||Q.tiers.smart!==$.tiers.smart||Q.tiers.thinking!==$.tiers.thinking||Q.tiers.image!==$.tiers.image||Q.tiers.web_search!==$.tiers.web_search||Q.tiers.deep_research!==$.tiers.deep_research;return{config:Q,changed:Y}},n41;var uT$=D(()=>{V4();q0();n41=g({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:TP0.object({keyId:TP0.string().describe("The provider key ID to delete")}),outputSchema:TP0.object({success:TP0.boolean()}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.organizationSettings.get(Q.id);if(Y?.simple_mode){let{config:X,changed:J}=kx4(Y.simple_mode,$.keyId);if(J)await Z.storage.organizationSettings.upsert(Q.id,{simple_mode:X})}return await Z.storage.aiProviderKeys.delete($.keyId,Q.id),I1.capture({distinctId:Z.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:Q.id},properties:{organization_id:Q.id,key_id:$.keyId}}),{success:!0}}})});import RP0 from"zod";var t41;var lT$=D(()=>{q0();qa();t41=g({name:"AI_PROVIDER_KEY_UPDATE",description:"Update the label and/or API key of a stored AI provider key. Pass apiKey to rotate the stored credential.",inputSchema:RP0.object({keyId:RP0.string(),label:RP0.string().min(1).max(100).optional(),apiKey:RP0.string().min(1).optional()}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=await Z.storage.aiProviderKeys.updateKey($.keyId,Q.id,{label:$.label,apiKey:$.apiKey});return{id:Y.id,providerId:Y.providerId,label:Y.label,presetId:Y.presetId,createdAt:Y.createdAt}}})});import Ul from"zod";var o41;var cT$=D(()=>{q0();o41=g({name:"AI_PROVIDER_KEY_PREVIEW",description:"Get the label and a masked preview of a stored AI provider API key. The API key is partially obscured (only the last 4 characters are visible). For openai-compatible keys the baseUrl is also returned.",inputSchema:Ul.object({keyId:Ul.string()}),outputSchema:Ul.object({label:Ul.string(),maskedKey:Ul.string(),baseUrl:Ul.string().optional()}),handler:async($,Z)=>{n(Z);let Q=p(Z);return await Z.access.check(),Z.storage.aiProviderKeys.getPreview($.keyId,Q.id)}})});import tW from"zod";var r41;var dT$=D(()=>{q0();EN();Ru();r41=g({name:"AI_PROVIDER_KEY_LIST",description:"List stored AI provider API keys. Returns metadata only \u2014 secrets are never exposed.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:tW.object({providerId:tW.enum(Y50).optional()}),outputSchema:tW.object({keys:tW.array(tW.object({id:tW.string(),providerId:tW.string(),label:tW.string(),presetId:tW.string().nullable(),createdBy:tW.string(),createdAt:tW.string()}))}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let[Y,X]=await Promise.all([Z.storage.aiProviderKeys.list({organizationId:Q.id,providerId:$.providerId}),cW(Z.db,Q.id,Q.role??Z.auth.user?.role)]);return{keys:Y.filter((W)=>Tj$(X,W.id)).map(({organizationId:W,...K})=>K)}}})});import{createHash as Vx4,randomBytes as Sx4}from"crypto";function mT$(){return Sx4(32).toString("base64url")}function iT$($){return Vx4("sha256").update($).digest("base64url")}var pT$=()=>{};import Nl from"zod";function nT$($){return $==="localhost"||$.endsWith(".localhost")||$==="127.0.0.1"||$==="[::1]"||$==="::1"}function Cx4($){let Z=M0(),Q=Z.baseUrl??`http://localhost:${Z.port}`,Y=new URL($),X=new URL(Q);if(Y.origin===X.origin)return!0;return Y.protocol===X.protocol&&nT$(Y.hostname)&&nT$(X.hostname)}var s41;var tT$=D(()=>{q0();EN();LN();pT$();E$();s41=g({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:Nl.object({providerId:Nl.enum(GQ),callbackUrl:Nl.string().url().refine(($)=>{return Cx4($)},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:Nl.object({url:Nl.string(),stateToken:Nl.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=u7()[$.providerId];if(!Y)throw Error(`Unknown provider: ${$.providerId}`);if(!Y.supportedMethods.includes("oauth-pkce")||!Y.getOAuthUrl)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let X=mT$(),J=iT$(X),G=await Z.storage.oauthPkceStates.create(X,Q.id,Z.auth.user.id),W=new URL($.callbackUrl);W.searchParams.set("state",G);let K={callbackUrl:W.toString(),codeChallenge:J,codeChallengeMethod:"S256",organizationId:Q.id};return{url:Y.getOAuthUrl(K),stateToken:G}}})});import Ia from"zod";var a41;var oT$=D(()=>{q0();EN();LN();qa();a41=g({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key. Completes the OAuth flow started by AI_PROVIDER_OAUTH_URL.",inputSchema:Ia.object({providerId:Ia.enum(GQ),code:Ia.string(),stateToken:Ia.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:Ia.string().min(1).max(100)}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=u7()[$.providerId];if(!Y)throw Error(`Unknown provider: ${$.providerId}`);if(!Y.supportedMethods.includes("oauth-pkce")||!Y.exchangeOAuthCode)throw Error(`Provider ${$.providerId} does not support OAuth PKCE`);let X=n0(Z);if(!X)throw Error("Unable to determine user ID");let J=await Z.storage.oauthPkceStates.consume($.stateToken,Q.id,X),{apiKey:G}=await Y.exchangeOAuthCode({code:$.code,codeVerifier:J,codeChallengeMethod:"S256"}),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:$.label,apiKey:G,organizationId:Q.id,createdBy:X});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});import rT$ from"zod";var e41;var sT$=D(()=>{q0();EN();LN();bB();qa();e41=g({name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision an API key for a provider that supports server-to-server key creation (e.g. Deco AI Gateway).",inputSchema:rT$.object({providerId:rT$.enum(GQ)}),outputSchema:Jf,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=n0(Z);if(!Y)throw Error("Unable to determine user ID");let X=u7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.provisionKey)throw Error(`Provider ${$.providerId} does not support key provisioning`);let J=await TK(Y),G=await X.provisionKey(J,Q.id),W=await Z.storage.aiProviderKeys.upsert({providerId:$.providerId,label:"Auto-provisioned",apiKey:G,organizationId:Q.id,createdBy:Y});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});function $61(){let $=M0();return $.aiGatewayEnabled&&!!$.aiGatewayAdminToken}async function _x4($,Z,Q){let Y=M0(),X=await fetch(`${Y.aiGatewayUrl}${$}`,{method:"POST",headers:{Authorization:`Bearer ${Y.aiGatewayAdminToken}`,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:AbortSignal.timeout(15000)});if(!X.ok){let J=await X.text().catch(()=>"");throw Error(`${Q} failed (${X.status}): ${J}`)}}async function aT$($){if(!$61())throw Error("gateway admin not configured \u2014 cannot credit top-up");await _x4("/api/admin/credits",{orgId:$.organizationId,amountCents:$.amountCents,description:"Studio credit top-up (Stripe)",referenceId:$.referenceId},"gateway top-up credit")}var Z61=D(()=>{E$()});import Bl from"zod";var vx4=1e6,Q61;var eT$=D(()=>{Z61();tj();P5();E$();q0();EN();LN();bB();Q61=g({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:Bl.object({providerId:Bl.enum(GQ),amountCents:Bl.number().int().positive().max(vx4).describe("Amount in cents (e.g. 1000 = $10.00), max $10,000.00"),currency:Bl.enum(["usd","brl"]).default("usd")}),outputSchema:Bl.object({url:Bl.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=n0(Z);if(!Y)throw Error("Unable to determine user ID");let X=M0();if($.providerId==="deco"&&X.stripeSecretKey&&$61()&&Q.slug){let K=await Z.storage.organizationBilling.getBilling(Q.id),H=`${F5()}${pO(Q.slug)}`,{url:F}=await o4$({organizationId:Q.id,amountCents:$.amountCents,currency:$.currency,feePercent:X.topupFeePercent,customerId:K?.stripeCustomerId??null,successUrl:`${H}?topup=success`,cancelUrl:`${H}?topup=canceled`});return{url:F}}let J=u7()[$.providerId];if(!J)throw Error(`Unknown provider: ${$.providerId}`);if(!J.getTopUpUrl)throw Error(`Provider ${$.providerId} does not support credit top-ups`);let G=await TK(Y,Z.auth.user?.email);return{url:await J.getTopUpUrl(G,Q.id,$.amountCents,$.currency)}}})});import qP0 from"zod";function fx4($){return Number.isFinite($)}var Y61;var $R$=D(()=>{q0();EN();LN();bB();Y61=g({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:qP0.object({providerId:qP0.enum(GQ)}),outputSchema:qP0.object({balanceCents:qP0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=n0(Z);if(!Y)throw Error("Unable to determine user ID");let X=u7()[$.providerId];if(!X)throw Error(`Unknown provider: ${$.providerId}`);if(!X.getCreditsBalance)throw Error(`Provider ${$.providerId} does not expose a credits balance`);let J=await TK(Y),G=await X.getCreditsBalance(J,Q.id);if(!fx4(G.balanceCents))throw console.error(`AI provider "${$.providerId}" returned a non-finite credits balance for org ${Q.id}: ${G.balanceCents}`),Error(`Provider ${$.providerId} returned an invalid credits balance`);return G}})});var ZR$=D(()=>{yT$();gT$();hT$();qa();uT$();lT$();cT$();dT$();tT$();oT$();sT$();eT$();$R$()});import CL from"zod";function yx4($){let Z=$.trim();if(Z.startsWith(xx4))throw Error("That looks like a Console API key, which bills per-token API usage instead of your subscription. Run `claude setup-token` and paste the token it prints.");if(/\s/.test(Z))throw Error("The token must not contain spaces or line breaks");if(Z.length===0)throw Error("The token must not be empty");return Z}var X61,xx4="sk-ant-api",QR$,YR$,XR$;var JR$=D(()=>{q0();X61=CL.object({connected:CL.boolean(),linkedAt:CL.string().nullable(),expiresAt:CL.string().nullable().describe("Known expiry, or null when the token carries none we can read")});QR$=g({name:"CLAUDE_SUBSCRIPTION_CONNECT",description:"Link the caller's Claude subscription with a token from `claude setup-token`, so their claude-code runs bill against their own Pro/Max plan. Stored encrypted, for the caller only.",inputSchema:CL.object({token:CL.string().min(1).describe("The token printed by `claude setup-token` (sk-ant-oat\u2026)")}),outputSchema:X61,handler:async($,Z)=>{n(Z),p(Z),await Z.access.check();let Q=n0(Z);if(!Q)throw Error("Unable to determine user ID");let Y=yx4($.token);return{connected:!0,...await Z.storage.claudeSubscriptions.upsert({userId:Q,accessToken:Y})}}}),YR$=g({name:"CLAUDE_SUBSCRIPTION_STATUS",description:"Whether the caller has a linked Claude subscription token, and since when.",inputSchema:CL.object({}),outputSchema:X61,handler:async($,Z)=>{n(Z),p(Z),await Z.access.check();let Q=n0(Z);if(!Q)throw Error("Unable to determine user ID");let Y=await Z.storage.claudeSubscriptions.find(Q);if(!Y)return{connected:!1,linkedAt:null,expiresAt:null};return{connected:!(Y.expiresAt!==null&&new Date(Y.expiresAt)<=new Date),...Y}}}),XR$=g({name:"CLAUDE_SUBSCRIPTION_DISCONNECT",description:"Unlink the caller's Claude subscription and delete the stored token.",inputSchema:CL.object({}),outputSchema:X61,handler:async($,Z)=>{n(Z),p(Z),await Z.access.check();let Q=n0(Z);if(!Q)throw Error("Unable to determine user ID");return await Z.storage.claudeSubscriptions.delete(Q),{connected:!1,linkedAt:null,expiresAt:null}}})});import rH from"zod";var IP0;var J61=D(()=>{IP0=rH.object({id:rH.string(),scope:rH.enum(["user","organization"]),userId:rH.string().nullable(),name:rH.string(),description:rH.string().nullable(),createdBy:rH.string(),createdAt:rH.string(),updatedBy:rH.string(),updatedAt:rH.string()})});import Ma from"zod";var hx4=65536,G61;var GR$=D(()=>{q0();J61();G61=g({name:"SECRET_CREATE",description:"Create a secret. The value is encrypted at rest in the credential vault and never returned by any tool. Scope 'user' is private to the caller within this organization; scope 'organization' is visible to all org members.",inputSchema:Ma.object({scope:Ma.enum(["user","organization"]),name:Ma.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:Ma.string().min(1).max(hx4),description:Ma.string().max(500).optional()}),outputSchema:IP0,handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=Z.auth.user.id,X=$.scope==="user"?{kind:"user",userId:Y}:{kind:"organization"};return await Z.storage.secrets.create({organizationId:Q.id,scope:X,name:$.name,value:$.value,description:$.description??null,createdBy:Y})}})});import MP0 from"zod";var W61;var WR$=D(()=>{q0();J61();W61=g({name:"SECRET_LIST",description:"List secrets visible to the caller: all organization-scoped secrets, plus user-scoped secrets owned by the caller. Values are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:MP0.object({scope:MP0.enum(["user","organization"]).optional()}),outputSchema:MP0.object({secrets:MP0.array(IP0)}),handler:async($,Z)=>{n(Z);let Q=p(Z);await Z.access.check();let Y=Z.auth.user.id,X=$.scope==="user"?{kind:"user",userId:Y}:$.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await Z.storage.secrets.list({organizationId:Q.id,callerUserId:Y,scope:X})}}})});var KR$=D(()=>{GR$();WR$()});var Gf=_((px4)=>{var K61;(function($){$.HEADER="header",$.QUERY="query"})(K61||(K61={}));var H61;(function($){$.HEADER="header",$.QUERY="query"})(H61||(H61={}));var F61;(function($){$.HTTP="http",$.HTTPS="https"})(F61||(F61={}));var ka;(function($){$.MD5="md5",$.CRC32="crc32",$.CRC32C="crc32c",$.SHA1="sha1",$.SHA256="sha256"})(ka||(ka={}));var lx4=($)=>{let Z=[];if($.sha256!==void 0)Z.push({algorithmId:()=>ka.SHA256,checksumConstructor:()=>$.sha256});if($.md5!=null)Z.push({algorithmId:()=>ka.MD5,checksumConstructor:()=>$.md5});return{addChecksumAlgorithm(Q){Z.push(Q)},checksumAlgorithms(){return Z}}},cx4=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{Z[Q.algorithmId()]=Q.checksumConstructor()}),Z},dx4=($)=>{return lx4($)},mx4=($)=>{return cx4($)},U61;(function($){$[$.HEADER=0]="HEADER",$[$.TRAILER=1]="TRAILER"})(U61||(U61={}));var ix4="__smithy_context",N61;(function($){$.PROFILE="profile",$.SSO_SESSION="sso-session",$.SERVICES="services"})(N61||(N61={}));var B61;(function($){$.HTTP_0_9="http/0.9",$.HTTP_1_0="http/1.0",$.TDS_8_0="tds/8.0"})(B61||(B61={}));px4.AlgorithmId=ka;px4.EndpointURLScheme=F61;px4.FieldPosition=U61;px4.HttpApiKeyAuthLocation=H61;px4.HttpAuthLocation=K61;px4.IniSectionType=N61;px4.RequestHandlerProtocol=B61;px4.SMITHY_CONTEXT_KEY=ix4;px4.getDefaultClientConfiguration=dx4;px4.resolveDefaultRuntimeConfig=mx4});var sH=_((Hy4)=>{var{SMITHY_CONTEXT_KEY:HR$}=Gf(),Yy4=($)=>$[HR$]||($[HR$]={});class kP0{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor($){this.method=$.method||"GET",this.hostname=$.hostname||"localhost",this.port=$.port,this.query=$.query||{},this.headers=$.headers||{},this.body=$.body,this.protocol=$.protocol?$.protocol.slice(-1)!==":"?`${$.protocol}:`:$.protocol:"https:",this.path=$.path?$.path.charAt(0)!=="/"?`/${$.path}`:$.path:"/",this.username=$.username,this.password=$.password,this.fragment=$.fragment}static clone($){let Z=new kP0({...$,headers:{...$.headers}});if(Z.query)Z.query=Xy4(Z.query);return Z}static isInstance($){if(!$)return!1;let Z=$;return"method"in Z&&"protocol"in Z&&"hostname"in Z&&"path"in Z&&typeof Z.query==="object"&&typeof Z.headers==="object"}clone(){return kP0.clone(this)}}function Xy4($){return Object.keys($).reduce((Z,Q)=>{let Y=$[Q];return{...Z,[Q]:Array.isArray(Y)?[...Y]:Y}},{})}class FR${statusCode;reason;headers;body;constructor($){this.statusCode=$.statusCode,this.reason=$.reason,this.headers=$.headers||{},this.body=$.body}static isInstance($){if(!$)return!1;let Z=$;return typeof Z.statusCode==="number"&&typeof Z.headers==="object"}}var Jy4=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),UR$=($,Z=!1)=>{if(!Z)return Jy4.test($);let Q=$.split(".");for(let Y of Q)if(!UR$(Y))return!1;return!0};function Gy4($){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test($)}var Wy4=($)=>{if(typeof $==="function")return $;let Z=Promise.resolve($);return()=>Z};function NR$($){let Z={};if($=$.replace(/^\?/,""),$)for(let Q of $.split("&")){let[Y,X=null]=Q.split("=");if(Y=decodeURIComponent(Y),X)X=decodeURIComponent(X);if(!(Y in Z))Z[Y]=X;else if(Array.isArray(Z[Y]))Z[Y].push(X);else Z[Y]=[Z[Y],X]}return Z}var VP0=($)=>{if(typeof $==="string")return VP0(new URL($));let{hostname:Z,pathname:Q,port:Y,protocol:X,search:J}=$,G;if(J)G=NR$(J);return{hostname:Z,port:Y?parseInt(Y):void 0,protocol:X,path:Q,query:G}},Ky4=($)=>{if(typeof $==="object"){if("url"in $){let Z=VP0($.url);if($.headers){Z.headers={};for(let Q in $.headers)Z.headers[Q.toLowerCase()]=$.headers[Q].join(", ")}return Z}return $}return VP0($)};Hy4.HttpRequest=kP0;Hy4.HttpResponse=FR$;Hy4.getSmithyContext=Yy4;Hy4.isValidHostLabel=UR$;Hy4.isValidHostname=Gy4;Hy4.normalizeProvider=Wy4;Hy4.parseQueryString=NR$;Hy4.parseUrl=VP0;Hy4.toEndpointV1=Ky4});var oW=_((_y4)=>{var{getSmithyContext:BR$,HttpResponse:jy4,toEndpointV1:zy4}=sH(),SP0=($)=>{if(typeof $==="function")return $();return $},L61=($,Z,Q,Y,X)=>({name:Z,namespace:$,traits:Q,input:Y,output:X}),Py4=($)=>(Z,Q)=>async(Y)=>{let{response:X}=await Z(Y),{operationSchema:J}=BR$(Q),[,G,W,K,H,F]=J??[];try{let U=await $.protocol.deserializeResponse(L61(G,W,K,H,F),{...$,...Q},X);return{response:X,output:U}}catch(U){if(Object.defineProperty(U,"$response",{value:X,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in U)){try{U.message+=`
|
|
1632
1632
|
Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`}catch(B){if(!Q.logger||Q.logger?.constructor?.name==="NoOpLogger")console.warn("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.");else Q.logger?.warn?.("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.")}if(typeof U.$responseBodyText<"u"){if(U.$response)U.$response.body=U.$responseBodyText}try{if(jy4.isInstance(X)){let{headers:B={},statusCode:O}=X,L=Object.entries(B);U.$metadata={httpStatusCode:O,requestId:O61(/^x-[\w-]+-request-?id$/,L),extendedRequestId:O61(/^x-[\w-]+-id-2$/,L),cfId:O61(/^x-[\w-]+-cf-id$/,L)}}}catch(B){}}throw U}},O61=($,Z)=>{return(Z.find(([Q])=>{return Q.match($)})||[void 0,void 0])[1]},Ay4=($)=>(Z,Q)=>async(Y)=>{let{operationSchema:X}=BR$(Q),[,J,G,W,K,H]=X??[],F=Q.endpointV2?async()=>zy4(Q.endpointV2):$.endpoint,U=await $.protocol.serializeRequest(L61(J,G,W,K,H),Y.input,{...$,...Q,endpoint:F});return Z({...Y,request:U})},OR$={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},DR$={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function Ty4($){return{applyToStack:(Z)=>{Z.add(Ay4($),DR$),Z.add(Py4($),OR$),$.protocol.setSerdeContext($)}}}class bX{name;namespace;traits;static assign($,Z){return Object.assign($,Z)}static[Symbol.hasInstance]($){let Z=this.prototype.isPrototypeOf($);if(!Z&&typeof $==="object"&&$!==null)return $.symbol===this.symbol;return Z}getName(){return this.namespace+"#"+this.name}}class fP0 extends bX{static symbol=Symbol.for("@smithy/lis");name;traits;valueSchema;symbol=fP0.symbol}var Ry4=($,Z,Q,Y)=>bX.assign(new fP0,{name:Z,namespace:$,traits:Q,valueSchema:Y});class bP0 extends bX{static symbol=Symbol.for("@smithy/map");name;traits;keySchema;valueSchema;symbol=bP0.symbol}var qy4=($,Z,Q,Y,X)=>bX.assign(new bP0,{name:Z,namespace:$,traits:Q,keySchema:Y,valueSchema:X});class xP0 extends bX{static symbol=Symbol.for("@smithy/ope");name;traits;input;output;symbol=xP0.symbol}var Iy4=($,Z,Q,Y,X)=>bX.assign(new xP0,{name:Z,namespace:$,traits:Q,input:Y,output:X});class _a extends bX{static symbol=Symbol.for("@smithy/str");name;traits;memberNames;memberList;symbol=_a.symbol}var My4=($,Z,Q,Y,X)=>bX.assign(new _a,{name:Z,namespace:$,traits:Q,memberNames:Y,memberList:X});class yP0 extends _a{static symbol=Symbol.for("@smithy/err");ctor;symbol=yP0.symbol}var ky4=($,Z,Q,Y,X,J)=>bX.assign(new yP0,{name:Z,namespace:$,traits:Q,memberNames:Y,memberList:X,ctor:null}),CP0=[];function Ca($){if(typeof $==="object")return $;if($=$|0,CP0[$])return CP0[$];let Z={},Q=0;for(let Y of["httpLabel","idempotent","idempotencyToken","sensitive","httpPayload","httpResponseCode","httpQueryParams"])if(($>>Q++&1)===1)Z[Y]=1;return CP0[$]=Z}var Va={it:Symbol.for("@smithy/nor-struct-it"),ns:Symbol.for("@smithy/ns")},_P0=[],vP0={};class zN{ref;memberName;static symbol=Symbol.for("@smithy/nor");symbol=zN.symbol;name;schema;_isMemberSchema;traits;memberTraits;normalizedTraits;constructor($,Z){this.ref=$,this.memberName=Z;let Q=[],Y=$,X=$;this._isMemberSchema=!1;while(D61(Y))Q.push(Y[1]),Y=Y[0],X=SP0(Y),this._isMemberSchema=!0;if(Q.length>0){this.memberTraits={};for(let J=Q.length-1;J>=0;--J){let G=Q[J];Object.assign(this.memberTraits,Ca(G))}}else this.memberTraits=0;if(X instanceof zN){let J=this.memberTraits;Object.assign(this,X),this.memberTraits=Object.assign({},J,X.getMemberTraits(),this.getMemberTraits()),this.normalizedTraits=void 0,this.memberName=Z??X.memberName;return}if(this.schema=SP0(X),LR$(this.schema))this.name=`${this.schema[1]}#${this.schema[2]}`,this.traits=this.schema[3];else this.name=this.memberName??String(X),this.traits=0;if(this._isMemberSchema&&!Z)throw Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(!0)} missing member name.`)}static[Symbol.hasInstance]($){let Z=this.prototype.isPrototypeOf($);if(!Z&&typeof $==="object"&&$!==null)return $.symbol===this.symbol;return Z}static of($){let Z=typeof $==="function"||typeof $==="object"&&$!==null;if(typeof $==="number"){if(_P0[$])return _P0[$]}else if(typeof $==="string"){if(vP0[$])return vP0[$]}else if(Z){if($[Va.ns])return $[Va.ns]}let Q=SP0($);if(Q instanceof zN)return Q;if(D61(Q)){let[X,J]=Q;if(X instanceof zN)return Object.assign(X.getMergedTraits(),Ca(J)),X;throw Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify($,null,2)}.`)}let Y=new zN(Q);if(Z)return $[Va.ns]=Y;if(typeof Q==="string")return vP0[Q]=Y;if(typeof Q==="number")return _P0[Q]=Y;return Y}getSchema(){let $=this.schema;if(Array.isArray($)&&$[0]===0)return $[4];return $}getName($=!1){let{name:Z}=this;return!$&&Z&&Z.includes("#")?Z.split("#")[1]:Z||void 0}getMemberName(){return this.memberName}isMemberSchema(){return this._isMemberSchema}isListSchema(){let $=this.getSchema();return typeof $==="number"?$>=64&&$<128:$[0]===1}isMapSchema(){let $=this.getSchema();return typeof $==="number"?$>=128&&$<=255:$[0]===2}isStructSchema(){let $=this.getSchema();if(typeof $!=="object")return!1;let Z=$[0];return Z===3||Z===-3||Z===4}isUnionSchema(){let $=this.getSchema();if(typeof $!=="object")return!1;return $[0]===4}isBlobSchema(){let $=this.getSchema();return $===21||$===42}isTimestampSchema(){let $=this.getSchema();return typeof $==="number"&&$>=4&&$<=7}isUnitSchema(){return this.getSchema()==="unit"}isDocumentSchema(){return this.getSchema()===15}isStringSchema(){return this.getSchema()===0}isBooleanSchema(){return this.getSchema()===2}isNumericSchema(){return this.getSchema()===1}isBigIntegerSchema(){return this.getSchema()===17}isBigDecimalSchema(){return this.getSchema()===19}isStreaming(){let{streaming:$}=this.getMergedTraits();return!!$||this.getSchema()===42}isIdempotencyToken(){return!!this.getMergedTraits().idempotencyToken}getMergedTraits(){return this.normalizedTraits??(this.normalizedTraits={...this.getOwnTraits(),...this.getMemberTraits()})}getMemberTraits(){return Ca(this.memberTraits)}getOwnTraits(){return Ca(this.traits)}getKeySchema(){let[$,Z]=[this.isDocumentSchema(),this.isMapSchema()];if(!$&&!Z)throw Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(!0)}`);let Q=this.getSchema(),Y=$?15:Q[4]??0;return Sa([Y,0],"key")}getValueSchema(){let $=this.getSchema(),[Z,Q,Y]=[this.isDocumentSchema(),this.isMapSchema(),this.isListSchema()],X=typeof $==="number"?63&$:$&&typeof $==="object"&&(Q||Y)?$[3+$[0]]:Z?15:void 0;if(X!=null)return Sa([X,0],Q?"value":"member");throw Error(`@smithy/core/schema - ${this.getName(!0)} has no value member.`)}getMemberSchema($){let Z=this.getSchema();if(this.isStructSchema()&&Z[4].includes($)){let Q=Z[4].indexOf($),Y=Z[5][Q];return Sa(D61(Y)?Y:[Y,0],$)}if(this.isDocumentSchema())return Sa([15,0],$);throw Error(`@smithy/core/schema - ${this.getName(!0)} has no member=${$}.`)}getMemberSchemas(){let $={};try{for(let[Z,Q]of this.structIterator())$[Z]=Q}catch(Z){}return $}getEventStreamMember(){if(this.isStructSchema()){for(let[$,Z]of this.structIterator())if(Z.isStreaming()&&Z.isStructSchema())return $}return""}*structIterator(){if(this.isUnitSchema())return;if(!this.isStructSchema())throw Error("@smithy/core/schema - cannot iterate non-struct schema.");let $=this.getSchema(),Z=$[4].length,Q=$[Va.it];if(Q&&Z===Q.length){yield*Q;return}Q=Array(Z);for(let Y=0;Y<Z;++Y){let X=$[4][Y],J=Sa([$[5][Y],0],X);yield Q[Y]=[X,J]}$[Va.it]=Q}}function Sa($,Z){if($ instanceof zN)return Object.assign($,{memberName:Z,_isMemberSchema:!0});return new zN($,Z)}var D61=($)=>Array.isArray($)&&$.length===2,LR$=($)=>Array.isArray($)&&$.length>=5;class va extends bX{static symbol=Symbol.for("@smithy/sim");name;schemaRef;traits;symbol=va.symbol}var Vy4=($,Z,Q,Y)=>bX.assign(new va,{name:Z,namespace:$,traits:Y,schemaRef:Q}),Sy4=($,Z,Q,Y)=>bX.assign(new va,{name:Z,namespace:$,traits:Q,schemaRef:Y}),Cy4={BLOB:21,STREAMING_BLOB:42,BOOLEAN:2,STRING:0,NUMERIC:1,BIG_INTEGER:17,BIG_DECIMAL:19,DOCUMENT:15,TIMESTAMP_DEFAULT:4,TIMESTAMP_DATE_TIME:5,TIMESTAMP_HTTP_DATE:6,TIMESTAMP_EPOCH_SECONDS:7,LIST_MODIFIER:64,MAP_MODIFIER:128};class jN{namespace;schemas;exceptions;static registries=new Map;constructor($,Z=new Map,Q=new Map){this.namespace=$,this.schemas=Z,this.exceptions=Q}static for($){if(!jN.registries.has($))jN.registries.set($,new jN($));return jN.registries.get($)}copyFrom($){let{schemas:Z,exceptions:Q}=this;for(let[Y,X]of $.schemas)if(!Z.has(Y))Z.set(Y,X);for(let[Y,X]of $.exceptions)if(!Q.has(Y))Q.set(Y,X)}register($,Z){let Q=this.normalizeShapeId($);for(let Y of[this,jN.for(Q.split("#")[0])])Y.schemas.set(Q,Z)}getSchema($){let Z=this.normalizeShapeId($);if(!this.schemas.has(Z)){if(!$.includes("#")){let Q="#"+$,Y=[];for(let[X,J]of this.schemas.entries())if(X.endsWith(Q))Y.push(J);if(Y.length===1)return Y[0]}throw Error(`@smithy/core/schema - schema not found for ${Z}`)}return this.schemas.get(Z)}registerError($,Z){let Q=$,Y=Q[1];for(let X of[this,jN.for(Y)])X.schemas.set(Y+"#"+Q[2],Q),X.exceptions.set(Q,Z)}getErrorCtor($){let Z=$;if(this.exceptions.has(Z))return this.exceptions.get(Z);return jN.for(Z[1]).exceptions.get(Z)}getBaseException(){for(let $ of this.exceptions.keys())if(Array.isArray($)){let[,Z,Q]=$,Y=Z+"#"+Q;if(Y.startsWith("smithy.ts.sdk.synthetic.")&&Y.endsWith("ServiceException"))return $}return}find($){for(let Z of this.schemas.values())if($(Z))return Z;return}clear(){this.schemas.clear(),this.exceptions.clear()}normalizeShapeId($){if($.includes("#"))return $;return this.namespace+"#"+$}}_y4.ErrorSchema=yP0;_y4.ListSchema=fP0;_y4.MapSchema=bP0;_y4.NormalizedSchema=zN;_y4.OperationSchema=xP0;_y4.SCHEMA=Cy4;_y4.Schema=bX;_y4.SimpleSchema=va;_y4.StructureSchema=_a;_y4.TypeRegistry=jN;_y4.deref=SP0;_y4.deserializerMiddlewareOption=OR$;_y4.error=ky4;_y4.getSchemaSerdePlugin=Ty4;_y4.isStaticSchema=LR$;_y4.list=Ry4;_y4.map=qy4;_y4.op=Iy4;_y4.operation=L61;_y4.serializerMiddlewareOption=DR$;_y4.sim=Vy4;_y4.simAdapter=Sy4;_y4.simpleSchemaCacheN=_P0;_y4.simpleSchemaCacheS=vP0;_y4.struct=My4;_y4.traitsCache=CP0;_y4.translateTraits=Ca});var G5=_((gg4)=>{var{getSmithyContext:Gg4,normalizeProvider:Wg4}=sH();gg4.getSmithyContext=Gg4;gg4.normalizeProvider=Wg4;var{SMITHY_CONTEXT_KEY:Kg4,AlgorithmId:hP0}=Gf();gg4.AlgorithmId=hP0;var{NormalizedSchema:Hg4}=oW(),Wf=($,Z)=>{let Q=[];if($)Q.push($);if(Z)for(let Y of Z)Q.push(Y);return Q},_L=($,Z)=>{return`${$||"anonymous"}${Z&&Z.length>0?` (a.k.a. ${Z.join(",")})`:""}`},fa=()=>{let $=[],Z=[],Q=!1,Y=new Set,X=(U)=>U.sort((N,B)=>wR$[B.step]-wR$[N.step]||ER$[B.priority||"normal"]-ER$[N.priority||"normal"]),J=(U)=>{let N=!1,B=(O)=>{let L=Wf(O.name,O.aliases);if(L.includes(U)){N=!0;for(let w of L)Y.delete(w);return!1}return!0};return $=$.filter(B),Z=Z.filter(B),N},G=(U)=>{let N=!1,B=(O)=>{if(O.middleware===U){N=!0;for(let L of Wf(O.name,O.aliases))Y.delete(L);return!1}return!0};return $=$.filter(B),Z=Z.filter(B),N},W=(U)=>{return $.forEach((N)=>{U.add(N.middleware,{...N})}),Z.forEach((N)=>{U.addRelativeTo(N.middleware,{...N})}),U.identifyOnResolve?.(F.identifyOnResolve()),U},K=(U)=>{let N=[];return U.before.forEach((B)=>{if(B.before.length===0&&B.after.length===0)N.push(B);else N.push(...K(B))}),N.push(U),U.after.reverse().forEach((B)=>{if(B.before.length===0&&B.after.length===0)N.push(B);else N.push(...K(B))}),N},H=(U=!1)=>{let N=[],B=[],O={};return $.forEach((w)=>{let E={...w,before:[],after:[]};for(let j of Wf(E.name,E.aliases))O[j]=E;N.push(E)}),Z.forEach((w)=>{let E={...w,before:[],after:[]};for(let j of Wf(E.name,E.aliases))O[j]=E;B.push(E)}),B.forEach((w)=>{if(w.toMiddleware){let E=O[w.toMiddleware];if(E===void 0){if(U)return;throw Error(`${w.toMiddleware} is not found when adding ${_L(w.name,w.aliases)} middleware ${w.relation} ${w.toMiddleware}`)}if(w.relation==="after")E.after.push(w);if(w.relation==="before")E.before.push(w)}}),X(N).map(K).reduce((w,E)=>{return w.push(...E),w},[])},F={add:(U,N={})=>{let{name:B,override:O,aliases:L}=N,w={step:"initialize",priority:"normal",middleware:U,...N},E=Wf(B,L);if(E.length>0){if(E.some((j)=>Y.has(j))){if(!O)throw Error(`Duplicate middleware name '${_L(B,L)}'`);for(let j of E){let z=$.findIndex((A)=>A.name===j||A.aliases?.some((q)=>q===j));if(z===-1)continue;let P=$[z];if(P.step!==w.step||w.priority!==P.priority)throw Error(`"${_L(P.name,P.aliases)}" middleware with ${P.priority} priority in ${P.step} step cannot be overridden by "${_L(B,L)}" middleware with ${w.priority} priority in ${w.step} step.`);$.splice(z,1)}}for(let j of E)Y.add(j)}$.push(w)},addRelativeTo:(U,N)=>{let{name:B,override:O,aliases:L}=N,w={middleware:U,...N},E=Wf(B,L);if(E.length>0){if(E.some((j)=>Y.has(j))){if(!O)throw Error(`Duplicate middleware name '${_L(B,L)}'`);for(let j of E){let z=Z.findIndex((A)=>A.name===j||A.aliases?.some((q)=>q===j));if(z===-1)continue;let P=Z[z];if(P.toMiddleware!==w.toMiddleware||P.relation!==w.relation)throw Error(`"${_L(P.name,P.aliases)}" middleware ${P.relation} "${P.toMiddleware}" middleware cannot be overridden by "${_L(B,L)}" middleware ${w.relation} "${w.toMiddleware}" middleware.`);Z.splice(z,1)}}for(let j of E)Y.add(j)}Z.push(w)},clone:()=>W(fa()),use:(U)=>{U.applyToStack(F)},remove:(U)=>{if(typeof U==="string")return J(U);else return G(U)},removeByTag:(U)=>{let N=!1,B=(O)=>{let{tags:L,name:w,aliases:E}=O;if(L&&L.includes(U)){let j=Wf(w,E);for(let z of j)Y.delete(z);return N=!0,!1}return!0};return $=$.filter(B),Z=Z.filter(B),N},concat:(U)=>{let N=W(fa());return N.use(U),N.identifyOnResolve(Q||N.identifyOnResolve()||(U.identifyOnResolve?.()??!1)),N},applyToStack:W,identify:()=>{return H(!0).map((U)=>{let N=U.step??U.relation+" "+U.toMiddleware;return _L(U.name,U.aliases)+" - "+N})},identifyOnResolve(U){if(typeof U==="boolean")Q=U;return Q},resolve:(U,N)=>{for(let B of H().map((O)=>O.middleware).reverse())U=B(U,N);if(Q)console.log(F.identify());return U}};return F},wR$={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},ER$={high:3,normal:2,low:1},Fg4=($)=>()=>{throw Error($)},Ug4=($)=>()=>Promise.reject($),gP0=()=>{let $=new WeakSet;return(Z,Q)=>{if(typeof Q==="object"&&Q!==null){if($.has(Q))return"[Circular]";$.add(Q)}return Q}},Ng4=($)=>{return new Promise((Z)=>setTimeout(Z,$*1000))},PR$={minDelay:2,maxDelay:120},aH;(function($){$.ABORTED="ABORTED",$.FAILURE="FAILURE",$.SUCCESS="SUCCESS",$.RETRY="RETRY",$.TIMEOUT="TIMEOUT"})(aH||(aH={}));var Bg4=($)=>{if($.state===aH.ABORTED){let Z=Error(`${JSON.stringify({...$,reason:"Request was aborted"},gP0())}`);throw Z.name="AbortError",Z}else if($.state===aH.TIMEOUT){let Z=Error(`${JSON.stringify({...$,reason:"Waiter has timed out"},gP0())}`);throw Z.name="TimeoutError",Z}else if($.state!==aH.SUCCESS)throw Error(`${JSON.stringify($,gP0())}`);return $},Og4=async({minDelay:$,maxDelay:Z,maxWaitTime:Q,abortController:Y,client:X,abortSignal:J},G,W)=>{let K={},[H,F]=[$*1000,Z*1000],U=0,N=Date.now()+Q*1000,B=Date.now()+60000,O=!1;while(!0){if(U>0){let E=wg4(H,F,U,N);if(Y?.signal?.aborted||J?.aborted)return K["AbortController signal aborted."]|=0,K["AbortController signal aborted."]+=1,{state:aH.ABORTED,observedResponses:K};if(Date.now()+E>N)return{state:aH.TIMEOUT,observedResponses:K};await Ng4(E/1000)}let{state:L,reason:w}=await W(X,G);if(w){let E=Lg4(w);K[E]|=0,K[E]+=1}if(L!==aH.RETRY)return{state:L,reason:w,final:w,observedResponses:K};if(U+=1,!O&&Date.now()>=B)Dg4(K,X),O=!0}},Dg4=($={},Z)=>{let Q=Object.keys($),Y=0;for(let G of Q){let W=$[G]|0;if(G.startsWith("403:"))Y+=W}let X=Z?.config?.logger,J=typeof X?.warn==="function"&&!X.constructor?.name?.includes?.("NoOpLogger")?X:console;if(Y>=3||Q[Q.length-1]?.startsWith("403:"))J.warn("@smithy/util-waiter WARN - 403 status code encountered during waiter polling.")},Lg4=($)=>{let Z=$?.$response?.statusCode??$?.$metadata?.httpStatusCode;if($?.$responseBodyText)return`${Z?Z+": ":""}Deserialization error for body: ${$.$responseBodyText}`;if(Z){if($?.$response||$?.message)return`${Z??"Unknown"}: ${$?.message}`;return`${Z}: OK`}return String($?.message??JSON.stringify($,gP0())??"Unknown")},wg4=($,Z,Q,Y)=>{let X=Math.log(Z/$)/Math.log(2)+1;if(Q>X)return Z;let J=$*2**(Q-1),G=Math.min(J,Z),W=Eg4($,G);if(Date.now()+W>Y){let K=Y-Date.now();return Math.max(0,K-500)}return W},Eg4=($,Z)=>$+Math.random()*(Z-$),jg4=($)=>{if($.maxWaitTime<=0)throw Error("WaiterConfiguration.maxWaitTime must be greater than 0");else if($.minDelay<=0)throw Error("WaiterConfiguration.minDelay must be greater than 0");else if($.maxDelay<=0)throw Error("WaiterConfiguration.maxDelay must be greater than 0");else if($.maxWaitTime<=$.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${$.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`);else if($.maxDelay<$.minDelay)throw Error(`WaiterConfiguration.maxDelay [${$.maxDelay}] must be greater than WaiterConfiguration.minDelay [${$.minDelay}] for this waiter`)},jR$=($)=>{let Z,Q=new Promise((Y)=>{if(Z=()=>Y({state:aH.ABORTED}),typeof $.addEventListener==="function")$.addEventListener("abort",Z);else $.onabort=Z});return{clearListener(){if(typeof $.removeEventListener==="function")$.removeEventListener("abort",Z)},aborted:Q}},zg4=async($,Z,Q)=>{let Y={...PR$,...$};jg4(Y);let X=[Og4(Y,Z,Q)],J=[];if($.abortSignal){let{aborted:G,clearListener:W}=jR$($.abortSignal);J.push(W),X.push(G)}if($.abortController?.signal){let{aborted:G,clearListener:W}=jR$($.abortController.signal);J.push(W),X.push(G)}return Promise.race(X).then((G)=>{for(let W of J)W();return G})};class AR${config;middlewareStack=fa();initConfig;handlers;constructor($){this.config=$;let{protocol:Z,protocolSettings:Q}=$;if(Q){if(typeof Z==="function")$.protocol=new Z(Q)}}send($,Z,Q){let Y=typeof Z!=="function"?Z:void 0,X=typeof Z==="function"?Z:Q,J=Y===void 0&&this.config.cacheMiddleware===!0,G;if(J){if(!this.handlers)this.handlers=new WeakMap;let W=this.handlers;if(W.has($.constructor))G=W.get($.constructor);else G=$.resolveMiddleware(this.middlewareStack,this.config,Y),W.set($.constructor,G)}else delete this.handlers,G=$.resolveMiddleware(this.middlewareStack,this.config,Y);if(X)G($).then((W)=>X(null,W.output),(W)=>X(W)).catch(()=>{});else return G($).then((W)=>W.output)}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}var w61="***SensitiveInformation***";function uP0($,Z){if(Z==null)return Z;let Q=Hg4.of($);if(Q.getMergedTraits().sensitive)return w61;if(Q.isListSchema()){if(!!Q.getValueSchema().getMergedTraits().sensitive)return w61}else if(Q.isMapSchema()){if(!!Q.getKeySchema().getMergedTraits().sensitive||!!Q.getValueSchema().getMergedTraits().sensitive)return w61}else if(Q.isStructSchema()&&typeof Z==="object"){let Y=Z,X={};for(let[J,G]of Q.structIterator())if(Y[J]!=null)X[J]=uP0(G,Y[J]);return X}return Z}class j61{middlewareStack=fa();schema;static classBuilder(){return new TR$}resolveMiddlewareWithContext($,Z,Q,{middlewareFn:Y,clientName:X,commandName:J,inputFilterSensitiveLog:G,outputFilterSensitiveLog:W,smithyContext:K,additionalContext:H,CommandCtor:F}){for(let w of Y.bind(this)(F,$,Z,Q))this.middlewareStack.use(w);let U=$.concat(this.middlewareStack),{logger:N}=Z,B={logger:N,clientName:X,commandName:J,inputFilterSensitiveLog:G,outputFilterSensitiveLog:W,[Kg4]:{commandInstance:this,...K},...H},{requestHandler:O}=Z,L=Q??{};if(K.eventStream)L={isEventStream:!0,...L};return U.resolve((w)=>O.handle(w.request,L),B)}}class TR${_init=()=>{};_ep={};_middlewareFn=()=>[];_commandName="";_clientName="";_additionalContext={};_smithyContext={};_inputFilterSensitiveLog=void 0;_outputFilterSensitiveLog=void 0;_serializer=null;_deserializer=null;_operationSchema;init($){this._init=$}ep($){return this._ep=$,this}m($){return this._middlewareFn=$,this}s($,Z,Q={}){return this._smithyContext={service:$,operation:Z,...Q},this}c($={}){return this._additionalContext=$,this}n($,Z){return this._clientName=$,this._commandName=Z,this}f($=(Q)=>Q,Z=(Q)=>Q){return this._inputFilterSensitiveLog=$,this._outputFilterSensitiveLog=Z,this}ser($){return this._serializer=$,this}de($){return this._deserializer=$,this}sc($){return this._operationSchema=$,this._smithyContext.operationSchema=$,this}build(){let $=this,Z;return Z=class extends j61{input;static getEndpointParameterInstructions(){return $._ep}constructor(...[Q]){super();this.input=Q??{},$._init(this),this.schema=$._operationSchema}resolveMiddleware(Q,Y,X){let J=$._operationSchema,G=J?.[4]??J?.input,W=J?.[5]??J?.output;return this.resolveMiddlewareWithContext(Q,Y,X,{CommandCtor:Z,middlewareFn:$._middlewareFn,clientName:$._clientName,commandName:$._commandName,inputFilterSensitiveLog:$._inputFilterSensitiveLog??(J?uP0.bind(null,G):(K)=>K),outputFilterSensitiveLog:$._outputFilterSensitiveLog??(J?uP0.bind(null,W):(K)=>K),smithyContext:$._smithyContext,additionalContext:$._additionalContext})}serialize=$._serializer;deserialize=$._deserializer}}}var Pg4="***SensitiveInformation***",Ag4=($,Z,Q)=>{for(let[J,G]of Object.entries($)){let W=async function(H,F,U){let N=new G(H);if(typeof F==="function")this.send(N,F);else if(typeof U==="function"){if(typeof F!=="object")throw Error(`Expected http options but got ${typeof F}`);this.send(N,F||{},U)}else return this.send(N,F)},K=(J[0].toLowerCase()+J.slice(1)).replace(/Command$/,"");Z.prototype[K]=W}let{paginators:Y={},waiters:X={}}=Q??{};for(let[J,G]of Object.entries(Y))if(Z.prototype[J]===void 0)Z.prototype[J]=function(W={},K,...H){return G({...K,client:this},W,...H)};for(let[J,G]of Object.entries(X))if(Z.prototype[J]===void 0)Z.prototype[J]=async function(W={},K,...H){let F=K;if(typeof K==="number")F={maxWaitTime:K};return G({...F,client:this},W,...H)}};class Ol extends Error{$fault;$response;$retryable;$metadata;constructor($){super($.message);Object.setPrototypeOf(this,Object.getPrototypeOf(this).constructor.prototype),this.name=$.name,this.$fault=$.$fault,this.$metadata=$.$metadata}static isInstance($){if(!$)return!1;let Z=$;return Ol.prototype.isPrototypeOf(Z)||Boolean(Z.$fault)&&Boolean(Z.$metadata)&&(Z.$fault==="client"||Z.$fault==="server")}static[Symbol.hasInstance]($){if(!$)return!1;let Z=$;if(this===Ol)return Ol.isInstance($);if(Ol.isInstance($)){if(Z.name&&this.name)return this.prototype.isPrototypeOf($)||Z.name===this.name;return this.prototype.isPrototypeOf($)}return!1}}var RR$=($,Z={})=>{Object.entries(Z).filter(([,Y])=>Y!==void 0).forEach(([Y,X])=>{if($[Y]==null||$[Y]==="")$[Y]=X});let Q=$.message||$.Message||"UnknownError";return $.message=Q,delete $.Message,$},qR$=({output:$,parsedBody:Z,exceptionCtor:Q,errorCode:Y})=>{let X=Rg4($),J=X.httpStatusCode?X.httpStatusCode+"":void 0,G=new Q({name:Z?.code||Z?.Code||Y||J||"UnknownError",$fault:"client",$metadata:X});throw RR$(G,Z)},Tg4=($)=>{return({output:Z,parsedBody:Q,errorCode:Y})=>{qR$({output:Z,parsedBody:Q,exceptionCtor:$,errorCode:Y})}},Rg4=($)=>({httpStatusCode:$.statusCode,requestId:$.headers["x-amzn-requestid"]??$.headers["x-amzn-request-id"]??$.headers["x-amz-request-id"],extendedRequestId:$.headers["x-amz-id-2"],cfId:$.headers["x-amz-cf-id"]}),qg4=($)=>{switch($){case"standard":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"mobile":return{retryMode:"standard",connectionTimeout:30000};default:return{}}},zR$=!1,Ig4=($)=>{if($&&!zR$&&parseInt($.substring(1,$.indexOf(".")))<16)zR$=!0},IR$=Object.values(hP0),MR$=($)=>{let Z=[];for(let Q in hP0){let Y=hP0[Q];if($[Y]===void 0)continue;Z.push({algorithmId:()=>Y,checksumConstructor:()=>$[Y]})}for(let[Q,Y]of Object.entries($.checksumAlgorithms??{}))Z.push({algorithmId:()=>Q,checksumConstructor:()=>Y});return{addChecksumAlgorithm(Q){$.checksumAlgorithms=$.checksumAlgorithms??{};let Y=Q.algorithmId(),X=Q.checksumConstructor();if(IR$.includes(Y))$.checksumAlgorithms[Y.toUpperCase()]=X;else $.checksumAlgorithms[Y]=X;Z.push(Q)},checksumAlgorithms(){return Z}}},kR$=($)=>{let Z={};return $.checksumAlgorithms().forEach((Q)=>{let Y=Q.algorithmId();if(IR$.includes(Y))Z[Y]=Q.checksumConstructor()}),Z},VR$=($)=>{return{setRetryStrategy(Z){$.retryStrategy=Z},retryStrategy(){return $.retryStrategy}}},SR$=($)=>{let Z={};return Z.retryStrategy=$.retryStrategy(),Z},CR$=($)=>{return Object.assign(MR$($),VR$($))},Mg4=CR$,kg4=($)=>{return Object.assign(kR$($),SR$($))},Vg4=($)=>Array.isArray($)?$:[$],_R$=($)=>{for(let Q in $)if(Object.prototype.hasOwnProperty.call($,Q)&&$[Q]["#text"]!==void 0)$[Q]=$[Q]["#text"];else if(typeof $[Q]==="object"&&$[Q]!==null)$[Q]=_R$($[Q]);return $},Sg4=($)=>{return $!=null};class vR${trace(){}debug(){}info(){}warn(){}error(){}}function fR$($,Z,Q){let Y,X,J;if(typeof Z>"u"&&typeof Q>"u")Y={},J=$;else if(Y=$,typeof Z==="function")return X=Z,J=Q,vg4(Y,X,J);else J=Z;for(let G of Object.keys(J)){if(!Array.isArray(J[G])){Y[G]=J[G];continue}bR$(Y,null,J,G)}return Y}var Cg4=($)=>{let Z={};for(let[Q,Y]of Object.entries($||{}))Z[Q]=[,Y];return Z},_g4=($,Z)=>{let Q={};for(let Y in Z)bR$(Q,$,Z,Y);return Q},vg4=($,Z,Q)=>{return fR$($,Object.entries(Q).reduce((Y,[X,J])=>{if(Array.isArray(J))Y[X]=J;else if(typeof J==="function")Y[X]=[Z,J()];else Y[X]=[Z,J];return Y},{}))},bR$=($,Z,Q,Y)=>{if(Z!==null){let G=Q[Y];if(typeof G==="function")G=[,G];let[W=fg4,K=bg4,H=Y]=G;if(typeof W==="function"&&W(Z[H])||typeof W!=="function"&&!!W)$[Y]=K(Z[H]);return}let[X,J]=Q[Y];if(typeof J==="function"){let G,W=X===void 0&&(G=J())!=null,K=typeof X==="function"&&!!X(void 0)||typeof X!=="function"&&!!X;if(W)$[Y]=G;else if(K)$[Y]=J()}else{let G=X===void 0&&J!=null,W=typeof X==="function"&&!!X(J)||typeof X!=="function"&&!!X;if(G||W)$[Y]=J}},fg4=($)=>$!=null,bg4=($)=>$,xg4=($)=>{if($!==$)return"NaN";switch($){case 1/0:return"Infinity";case-1/0:return"-Infinity";default:return $}},yg4=($)=>$.toISOString().replace(".000Z","Z"),E61=($)=>{if($==null)return{};if(Array.isArray($))return $.filter((Z)=>Z!=null).map(E61);if(typeof $==="object"){let Z={};for(let Q of Object.keys($)){if($[Q]==null)continue;Z[Q]=E61($[Q])}return Z}return $};gg4.Client=AR$;gg4.Command=j61;gg4.NoOpLogger=vR$;gg4.SENSITIVE_STRING=Pg4;gg4.ServiceException=Ol;gg4.WaiterState=aH;gg4._json=E61;gg4.checkExceptions=Bg4;gg4.constructStack=fa;gg4.convertMap=Cg4;gg4.createAggregatedClient=Ag4;gg4.createWaiter=zg4;gg4.decorateServiceException=RR$;gg4.emitWarningIfUnsupportedVersion=Ig4;gg4.getArrayIfSingleItem=Vg4;gg4.getChecksumConfiguration=MR$;gg4.getDefaultClientConfiguration=Mg4;gg4.getDefaultExtensionConfiguration=CR$;gg4.getRetryConfiguration=VR$;gg4.getValueFromTextNode=_R$;gg4.invalidFunction=Fg4;gg4.invalidProvider=Ug4;gg4.isSerializableHeaderValue=Sg4;gg4.loadConfigsForDefaultMode=qg4;gg4.map=fR$;gg4.resolveChecksumRuntimeConfig=kR$;gg4.resolveDefaultRuntimeConfig=kg4;gg4.resolveRetryRuntimeConfig=SR$;gg4.schemaLogFilter=uP0;gg4.serializeDateTime=yg4;gg4.serializeFloat=xg4;gg4.take=_g4;gg4.throwDefaultError=qR$;gg4.waiterServiceDefaults=PR$;gg4.withBaseException=Tg4});var G4=_((zu4)=>{var{homedir:Th4}=z0("os"),{sep:Rh4,join:ba}=z0("path"),{createHash:qh4}=z0("crypto"),{readFile:lR$}=z0("fs/promises"),{IniSectionType:lP0}=Gf(),{normalizeProvider:cP0}=G5(),{isValidHostLabel:Ih4}=sH();class Dl extends Error{name="ProviderError";tryNextLink;constructor($,Z=!0){let Q,Y=!0;if(typeof Z==="boolean")Q=void 0,Y=Z;else if(Z!=null&&typeof Z==="object")Q=Z.logger,Y=Z.tryNextLink??!0;super($);this.tryNextLink=Y,Object.setPrototypeOf(this,Dl.prototype),Q?.debug?.(`@smithy/property-provider ${Y?"->":"(!)"} ${$}`)}static from($,Z=!0){return Object.assign(new this($.message,Z),$)}}class xa extends Dl{name="CredentialsProviderError";constructor($,Z=!0){super($,Z);Object.setPrototypeOf(this,xa.prototype)}}class R61 extends Dl{name="TokenProviderError";constructor($,Z=!0){super($,Z);Object.setPrototypeOf(this,R61.prototype)}}var cR$=(...$)=>async()=>{if($.length===0)throw new Dl("No providers in chain");let Z;for(let Q of $)try{return await Q()}catch(Y){if(Z=Y,Y?.tryNextLink)continue;throw Y}throw Z},dR$=($)=>()=>Promise.resolve($),q61=($,Z,Q)=>{let Y,X,J,G=!1,W=async()=>{if(!X)X=$();try{Y=await X,J=!0,G=!1}finally{X=void 0}return Y};if(Z===void 0)return async(K)=>{if(!J||K?.forceRefresh)Y=await W();return Y};return async(K)=>{if(!J||K?.forceRefresh)Y=await W();if(G)return Y;if(Q&&!Q(Y))return G=!0,Y;if(Z(Y))return await W(),Y;return Y}},PN=($,Z,Q)=>{if(!(Z in $))return;if($[Z]==="true")return!0;if($[Z]==="false")return!1;throw Error(`Cannot load ${Q} "${Z}". Expected "true" or "false", got ${$[Z]}.`)},Mh4=($,Z,Q)=>{if(!(Z in $))return;let Y=parseInt($[Z],10);if(Number.isNaN(Y))throw TypeError(`Cannot load ${Q} '${Z}'. Expected number, got '${$[Z]}'.`);return Y},rW;(function($){$.ENV="env",$.CONFIG="shared config entry"})(rW||(rW={}));var z61={},kh4=()=>{if(process&&process.geteuid)return`${process.geteuid()}`;return"DEFAULT"},ya=()=>{let{HOME:$,USERPROFILE:Z,HOMEPATH:Q,HOMEDRIVE:Y=`C:${Rh4}`}=process.env;if($)return $;if(Z)return Z;if(Q)return`${Y}${Q}`;let X=kh4();if(!z61[X])z61[X]=Th4();return z61[X]},mR$="AWS_PROFILE",iR$="default",pR$=($)=>$.profile||process.env[mR$]||iR$,nR$=($)=>{let Q=qh4("sha1").update($).digest("hex");return ba(ya(),".aws","sso","cache",`${Q}.json`)},dP0={},Vh4=async($)=>{if(dP0[$])return dP0[$];let Z=nR$($),Q=await lR$(Z,"utf8");return JSON.parse(Q)},Kf=".",Sh4=($)=>Object.entries($).filter(([Z])=>{let Q=Z.indexOf(Kf);if(Q===-1)return!1;return Object.values(lP0).includes(Z.substring(0,Q))}).reduce((Z,[Q,Y])=>{let X=Q.indexOf(Kf),J=Q.substring(0,X)===lP0.PROFILE?Q.substring(X+1):Q;return Z[J]=Y,Z},{...$.default&&{default:$.default}}),Ch4="AWS_CONFIG_FILE",tR$=()=>process.env[Ch4]||ba(ya(),".aws","config"),_h4="AWS_SHARED_CREDENTIALS_FILE",vh4=()=>process.env[_h4]||ba(ya(),".aws","credentials"),fh4=/^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/,bh4=["__proto__","profile __proto__"],A61=($)=>{let Z={},Q,Y;for(let X of $.split(/\r?\n/)){let J=X.split(/(^|\s)[;#]/)[0].trim();if(J[0]==="["&&J[J.length-1]==="]"){Q=void 0,Y=void 0;let W=J.substring(1,J.length-1),K=fh4.exec(W);if(K){let[,H,,F]=K;if(Object.values(lP0).includes(H))Q=[H,F].join(Kf)}else Q=W;if(bh4.includes(W))throw Error(`Found invalid profile name "${W}"`)}else if(Q){let W=J.indexOf("=");if(![0,-1].includes(W)){let[K,H]=[J.substring(0,W).trim(),J.substring(W+1).trim()];if(H==="")Y=K;else{if(Y&&X.trimStart()===X)Y=void 0;Z[Q]=Z[Q]||{};let F=Y?[Y,K].join(Kf):K;Z[Q][F]=H}}}}return Z},P61={},mP0={},iP0=($,Z)=>{if(mP0[$]!==void 0)return mP0[$];if(!P61[$]||Z?.ignoreCache)P61[$]=lR$($,"utf8");return P61[$]},xR$=()=>({}),I61=async($={})=>{let{filepath:Z=vh4(),configFilepath:Q=tR$()}=$,Y=ya(),X="~/",J=Z;if(Z.startsWith("~/"))J=ba(Y,Z.slice(2));let G=Q;if(Q.startsWith("~/"))G=ba(Y,Q.slice(2));let W=await Promise.all([iP0(G,{ignoreCache:$.ignoreCache}).then(A61).then(Sh4).catch(xR$),iP0(J,{ignoreCache:$.ignoreCache}).then(A61).catch(xR$)]);return{configFile:W[0],credentialsFile:W[1]}},xh4=($)=>Object.entries($).filter(([Z])=>Z.startsWith(lP0.SSO_SESSION+Kf)).reduce((Z,[Q,Y])=>({...Z,[Q.substring(Q.indexOf(Kf)+1)]:Y}),{}),yh4=()=>({}),gh4=async($={})=>iP0($.configFilepath??tR$()).then(A61).then(xh4).catch(yh4),hh4=(...$)=>{let Z={};for(let Q of $)for(let[Y,X]of Object.entries(Q))if(Z[Y]!==void 0)Object.assign(Z[Y],X);else Z[Y]=X;return Z},uh4=async($)=>{let Z=await I61($);return hh4(Z.configFile,Z.credentialsFile)},lh4={getFileRecord(){return mP0},interceptFile($,Z){mP0[$]=Promise.resolve(Z)},getTokenRecord(){return dP0},interceptToken($,Z){dP0[$]=Z}};function oR$($){try{let Z=new Set(Array.from($.match(/([A-Z_]){3,}/g)??[]));return Z.delete("CONFIG"),Z.delete("CONFIG_PREFIX_SEPARATOR"),Z.delete("ENV"),[...Z].join(", ")}catch(Z){return $}}var ch4=($,Z)=>async()=>{try{let Q=$(process.env,Z);if(Q===void 0)throw Error();return Q}catch(Q){throw new xa(Q.message||`Not found in ENV: ${oR$($.toString())}`,{logger:Z?.logger})}},dh4=($,{preferredFile:Z="config",...Q}={})=>async()=>{let Y=pR$(Q),{configFile:X,credentialsFile:J}=await I61(Q),G=J[Y]||{},W=X[Y]||{},K=Z==="config"?{...G,...W}:{...W,...G};try{let F=$(K,Z==="config"?X:J);if(F===void 0)throw Error();return F}catch(H){throw new xa(H.message||`Not found in config files w/ profile [${Y}]: ${oR$($.toString())}`,{logger:Q.logger})}},mh4=($)=>typeof $==="function",rR$=($)=>mh4($)?async()=>await $():dR$($),T61=({environmentVariableSelector:$,configFileSelector:Z,default:Q},Y={})=>{let{signingName:X,logger:J}=Y;return q61(cR$(ch4($,{signingName:X,logger:J}),dh4(Z,Y),rR$(Q)))},M61="AWS_USE_DUALSTACK_ENDPOINT",k61="use_dualstack_endpoint",ih4=!1,ph4={environmentVariableSelector:($)=>PN($,M61,rW.ENV),configFileSelector:($)=>PN($,k61,rW.CONFIG),default:!1},nh4={environmentVariableSelector:($)=>PN($,M61,rW.ENV),configFileSelector:($)=>PN($,k61,rW.CONFIG),default:void 0},V61="AWS_USE_FIPS_ENDPOINT",S61="use_fips_endpoint",th4=!1,oh4={environmentVariableSelector:($)=>PN($,V61,rW.ENV),configFileSelector:($)=>PN($,S61,rW.CONFIG),default:!1},rh4={environmentVariableSelector:($)=>PN($,V61,rW.ENV),configFileSelector:($)=>PN($,S61,rW.CONFIG),default:void 0},sh4=($)=>{let{tls:Z,endpoint:Q,urlParser:Y,useDualstackEndpoint:X}=$;return Object.assign($,{tls:Z??!0,endpoint:cP0(typeof Q==="string"?Y(Q):Q),isCustomEndpoint:!0,useDualstackEndpoint:cP0(X??!1)})},ah4=async($)=>{let{tls:Z=!0}=$,Q=await $.region();if(!new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/).test(Q))throw Error("Invalid region in client config");let X=await $.useDualstackEndpoint(),J=await $.useFipsEndpoint(),{hostname:G}=await $.regionInfoProvider(Q,{useDualstackEndpoint:X,useFipsEndpoint:J})??{};if(!G)throw Error("Cannot resolve hostname from client config");return $.urlParser(`${Z?"https:":"http:"}//${G}`)},eh4=($)=>{let Z=cP0($.useDualstackEndpoint??!1),{endpoint:Q,useFipsEndpoint:Y,urlParser:X,tls:J}=$;return Object.assign($,{tls:J??!0,endpoint:Q?cP0(typeof Q==="string"?X(Q):Q):()=>ah4({...$,useDualstackEndpoint:Z,useFipsEndpoint:Y}),isCustomEndpoint:!!Q,useDualstackEndpoint:Z})},sR$="AWS_REGION",aR$="region",eR$={environmentVariableSelector:($)=>$[sR$],configFileSelector:($)=>$[aR$],default:()=>{throw Error("Region is missing")}},$u4={preferredFile:"credentials"},yR$=new Set,Zu4=($,Z=Ih4)=>{if(!yR$.has($)&&!Z($))if($==="*")console.warn('@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.');else throw Error(`Region not accepted: region="${$}" is not a valid hostname component.`);else yR$.add($)},$q$=($)=>typeof $==="string"&&($.startsWith("fips-")||$.endsWith("-fips")),Qu4=($)=>$q$($)?["fips-aws-global","aws-fips"].includes($)?"us-east-1":$.replace(/fips-(dkr-|prod-)?|-fips/,""):$,Yu4=($)=>{let{region:Z,useFipsEndpoint:Q}=$;if(!Z)throw Error("Region is missing");return Object.assign($,{region:async()=>{let Y=typeof Z==="function"?await Z():Z,X=Qu4(Y);return Zu4(X),X},useFipsEndpoint:async()=>{let Y=typeof Z==="string"?Z:await Z();if($q$(Y))return!0;return typeof Q!=="function"?Promise.resolve(!!Q):Q()}})},gR$=($=[],{useFipsEndpoint:Z,useDualstackEndpoint:Q})=>$.find(({tags:Y})=>Z===Y.includes("fips")&&Q===Y.includes("dualstack"))?.hostname,Xu4=($,{regionHostname:Z,partitionHostname:Q})=>Z?Z:Q?Q.replace("{region}",$):void 0,Ju4=($,{partitionHash:Z})=>Object.keys(Z||{}).find((Q)=>Z[Q].regions.includes($))??"aws",Gu4=($,{signingRegion:Z,regionRegex:Q,useFipsEndpoint:Y})=>{if(Z)return Z;else if(Y){let X=Q.replace("\\\\","\\").replace(/^\^/g,"\\.").replace(/\$$/g,"\\."),J=$.match(X);if(J)return J[0].slice(1,-1)}},Wu4=($,{useFipsEndpoint:Z=!1,useDualstackEndpoint:Q=!1,signingService:Y,regionHash:X,partitionHash:J})=>{let G=Ju4($,{partitionHash:J}),W=$ in X?$:J[G]?.endpoint??$,K={useFipsEndpoint:Z,useDualstackEndpoint:Q},H=gR$(X[W]?.variants,K),F=gR$(J[G]?.variants,K),U=Xu4(W,{regionHostname:H,partitionHostname:F});if(U===void 0)throw Error(`Endpoint resolution failed for: ${{resolvedRegion:W,useFipsEndpoint:Z,useDualstackEndpoint:Q}}`);let N=Gu4(U,{signingRegion:X[W]?.signingRegion,regionRegex:J[G].regionRegex,useFipsEndpoint:Z});return{partition:G,signingService:Y,hostname:U,...N&&{signingRegion:N},...X[W]?.signingService&&{signingService:X[W].signingService}}},Ku4="AWS_EXECUTION_ENV",hR$="AWS_REGION",uR$="AWS_DEFAULT_REGION",Hu4="AWS_EC2_METADATA_DISABLED",Fu4=["in-region","cross-region","mobile","standard","legacy"],Uu4="/latest/meta-data/placement/region",Nu4="AWS_DEFAULTS_MODE",Bu4="defaults_mode",Ou4={environmentVariableSelector:($)=>{return $[Nu4]},configFileSelector:($)=>{return $[Bu4]},default:"legacy"},Du4=({region:$=T61(eR$),defaultsMode:Z=T61(Ou4)}={})=>q61(async()=>{let Q=typeof Z==="function"?await Z():Z;switch(Q?.toLowerCase()){case"auto":return Lu4($);case"in-region":case"cross-region":case"mobile":case"standard":case"legacy":return Promise.resolve(Q?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw Error(`Invalid parameter for "defaultsMode", expect ${Fu4.join(", ")}, got ${Q}`)}}),Lu4=async($)=>{if($){let Z=typeof $==="function"?await $():$,Q=await wu4();if(!Q)return"standard";if(Z===Q)return"in-region";else return"cross-region"}return"standard"},wu4=async()=>{if(process.env[Ku4]&&(process.env[hR$]||process.env[uR$]))return process.env[hR$]??process.env[uR$];if(!process.env[Hu4])try{let $=await Eu4();return(await ju4({hostname:$.hostname,path:Uu4})).toString()}catch($){}},Eu4=async()=>{let $=process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT;if($){let Q=new URL($);return{hostname:Q.hostname,path:Q.pathname}}if(process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE==="IPv6")return{hostname:"fd00:ec2::254",path:"/"};return{hostname:"169.254.169.254",path:"/"}},ju4=async({hostname:$,path:Z})=>{let{request:Q}=z0("http");return new Promise((Y,X)=>{let J=Q({method:"GET",hostname:$.replace(/^\[(.+)]$/,"$1"),path:Z,timeout:1000,signal:AbortSignal.timeout(1000)});J.on("error",(G)=>{X(G),J.destroy()}),J.on("timeout",()=>{X(Error("TimeoutError from instance metadata service")),J.destroy()}),J.on("response",(G)=>{let{statusCode:W=400}=G;if(W<200||300<=W){X(Object.assign(Error("Error response received from instance metadata service"),{statusCode:W})),J.destroy();return}let K=[];G.on("data",(H)=>K.push(H)),G.on("end",()=>{Y(Buffer.concat(K)),J.destroy()})}),J.end()})};zu4.CONFIG_PREFIX_SEPARATOR=Kf;zu4.CONFIG_USE_DUALSTACK_ENDPOINT=k61;zu4.CONFIG_USE_FIPS_ENDPOINT=S61;zu4.CredentialsProviderError=xa;zu4.DEFAULT_PROFILE=iR$;zu4.DEFAULT_USE_DUALSTACK_ENDPOINT=ih4;zu4.DEFAULT_USE_FIPS_ENDPOINT=th4;zu4.ENV_PROFILE=mR$;zu4.ENV_USE_DUALSTACK_ENDPOINT=M61;zu4.ENV_USE_FIPS_ENDPOINT=V61;zu4.NODE_REGION_CONFIG_FILE_OPTIONS=$u4;zu4.NODE_REGION_CONFIG_OPTIONS=eR$;zu4.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS=ph4;zu4.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS=oh4;zu4.ProviderError=Dl;zu4.REGION_ENV_NAME=sR$;zu4.REGION_INI_NAME=aR$;zu4.SelectorType=rW;zu4.TokenProviderError=R61;zu4.booleanSelector=PN;zu4.chain=cR$;zu4.externalDataInterceptor=lh4;zu4.fromStatic=rR$;zu4.fromValue=dR$;zu4.getHomeDir=ya;zu4.getProfileName=pR$;zu4.getRegionInfo=Wu4;zu4.getSSOTokenFilepath=nR$;zu4.getSSOTokenFromFile=Vh4;zu4.loadConfig=T61;zu4.loadSharedConfigFiles=I61;zu4.loadSsoSessionData=gh4;zu4.memoize=q61;zu4.nodeDualstackConfigSelectors=nh4;zu4.nodeFipsConfigSelectors=rh4;zu4.numberSelector=Mh4;zu4.parseKnownFiles=uh4;zu4.readFile=iP0;zu4.resolveCustomEndpointsConfig=sh4;zu4.resolveDefaultsModeConfig=Du4;zu4.resolveEndpointsConfig=eh4;zu4.resolveRegionConfig=Yu4});var G9=_((nl4)=>{var{CONFIG_PREFIX_SEPARATOR:Zq$,loadConfig:Hl4}=G4(),{toEndpointV1:pP0,getSmithyContext:Fl4,normalizeProvider:C61,isValidHostLabel:Xq$}=sH();nl4.isValidHostLabel=Xq$;nl4.middlewareEndpointToEndpointV1=pP0;nl4.toEndpointV1=pP0;var{EndpointURLScheme:f61}=Gf(),Qq$="AWS_ENDPOINT_URL",Yq$="endpoint_url",Ul4=($)=>({environmentVariableSelector:(Z)=>{let Q=$.split(" ").map((J)=>J.toUpperCase()),Y=Z[[Qq$,...Q].join("_")];if(Y)return Y;let X=Z[Qq$];if(X)return X;return},configFileSelector:(Z,Q)=>{if(Q&&Z.services){let X=Q[["services",Z.services].join(Zq$)];if(X){let J=$.split(" ").map((W)=>W.toLowerCase()),G=X[[J.join("_"),Yq$].join(Zq$)];if(G)return G}}let Y=Z[Yq$];if(Y)return Y;return},default:void 0}),nP0=async($)=>Hl4(Ul4($??""))(),Nl4=async($)=>{let Z=$?.Bucket||"";if(typeof $.Bucket==="string")$.Bucket=Z.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"));if(wl4(Z)){if($.ForcePathStyle===!0)throw Error("Path-style addressing cannot be used with ARN buckets")}else if(!Ll4(Z)||Z.indexOf(".")!==-1&&!String($.Endpoint).startsWith("http:")||Z.toLowerCase()!==Z||Z.length<3)$.ForcePathStyle=!0;if($.DisableMultiRegionAccessPoints)$.disableMultiRegionAccessPoints=!0,$.DisableMRAP=!0;return $},Bl4=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,Ol4=/(\d+\.){3}\d+/,Dl4=/\.\./,Ll4=($)=>Bl4.test($)&&!Ol4.test($)&&!Dl4.test($),wl4=($)=>{let[Z,Q,Y,,,X]=$.split(":"),J=Z==="arn"&&$.split(":").length>=6,G=Boolean(J&&Q&&Y&&X);if(J&&!G)throw Error(`Invalid ARN: ${$} was an invalid ARN.`);return G},El4=($,Z,Q,Y=!1)=>{let X=async()=>{let J;if(Y)J=Q.clientContextParams?.[$]??Q[$]??Q[Z];else J=Q[$]??Q[Z];if(typeof J==="function")return J();return J};if($==="credentialScope"||Z==="CredentialScope")return async()=>{let J=typeof Q.credentials==="function"?await Q.credentials():Q.credentials;return J?.credentialScope??J?.CredentialScope};if($==="accountId"||Z==="AccountId")return async()=>{let J=typeof Q.credentials==="function"?await Q.credentials():Q.credentials;return J?.accountId??J?.AccountId};if($==="endpoint"||Z==="endpoint")return async()=>{if(Q.isCustomEndpoint===!1)return;let J=await X();if(J&&typeof J==="object"){if("url"in J)return J.url.href;if("hostname"in J){let{protocol:G,hostname:W,port:K,path:H}=J;return`${G}//${W}${K?":"+K:""}${H}`}}return J};return X};function Jq$($){return async(Z,Q,Y,X)=>{if(!Y.isCustomEndpoint){let W;if(Y.serviceConfiguredEndpoint)W=await Y.serviceConfiguredEndpoint();else W=await $(Y.serviceId);if(W)Y.endpoint=()=>Promise.resolve(pP0(W)),Y.isCustomEndpoint=!0}let J=await Gq$(Z,Q,Y);if(typeof Y.endpointProvider!=="function")throw Error("config.endpointProvider is not set.");let G=Y.endpointProvider(J,X);if(Y.isCustomEndpoint&&Y.endpoint){let W=await Y.endpoint();if(W?.headers){G.headers??={};for(let[K,H]of Object.entries(W.headers))G.headers[K]=Array.isArray(H)?H:[H]}}return G}}var Gq$=async($,Z,Q)=>{let Y={},X=Z?.getEndpointParameterInstructions?.()||{};for(let[J,G]of Object.entries(X))switch(G.type){case"staticContextParams":Y[J]=G.value;break;case"contextParams":Y[J]=$[G.name];break;case"clientContextParams":case"builtInParams":Y[J]=await El4(G.name,J,Q,G.type!=="builtInParams")();break;case"operationContextParams":Y[J]=G.get($);break;default:throw Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(G))}if(Object.keys(X).length===0)Object.assign(Y,Q);if(String(Q.serviceId).toLowerCase()==="s3")await Nl4(Y);return Y};function jl4($,Z,Q){if(!$.__smithy_context)$.__smithy_context={features:{}};else if(!$.__smithy_context.features)$.__smithy_context.features={};$.__smithy_context.features[Z]=Q}function Wq$($){let Z=Jq$($);return({config:Q,instructions:Y})=>{return(X,J)=>async(G)=>{if(Q.isCustomEndpoint)jl4(J,"ENDPOINT_OVERRIDE","N");let W=await Z(G.input,{getEndpointParameterInstructions(){return Y}},{...Q},J);J.endpointV2=W,J.authSchemes=W.properties?.authSchemes;let K=J.authSchemes?.[0];if(K){J.signing_region=K.signingRegion,J.signing_service=K.signingName;let F=Fl4(J)?.selectedHttpAuthScheme?.httpAuthOption;if(F)F.signingProperties=Object.assign(F.signingProperties||{},{signing_region:K.signingRegion,signingRegion:K.signingRegion,signing_service:K.signingName,signingName:K.signingName,signingRegionSet:K.signingRegionSet},K.properties)}return X({...G})}}}var zl4={name:"serializerMiddleware"},Kq$={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:zl4.name};function Pl4($){let Z=Wq$($);return(Q,Y)=>({applyToStack:(X)=>{X.addRelativeTo(Z({config:Q,instructions:Y}),Kq$)}})}function Al4($){return(Z)=>{let Q=Z.tls??!0,{endpoint:Y,useDualstackEndpoint:X,useFipsEndpoint:J}=Z,G=Y!=null?async()=>pP0(await C61(Y)()):void 0,K=Object.assign(Z,{endpoint:G,tls:Q,isCustomEndpoint:!!Y,useDualstackEndpoint:C61(X??!1),useFipsEndpoint:C61(J??!1)}),H=void 0;return K.serviceConfiguredEndpoint=async()=>{if(Z.serviceId&&!H)H=$(Z.serviceId);return H},K}}class b61{nodes;root;conditions;results;constructor($,Z,Q,Y){this.nodes=$,this.root=Z,this.conditions=Q,this.results=Y}static from($,Z,Q,Y){return new b61($,Z,Q,Y)}}class Hq${capacity;data=new Map;parameters=[];constructor({size:$,params:Z}){if(this.capacity=$??50,Z)this.parameters=Z}get($,Z){let Q=this.hash($);if(Q===!1)return Z();if(!this.data.has(Q)){if(this.data.size>this.capacity+10){let Y=this.data.keys(),X=0;while(!0){let{value:J,done:G}=Y.next();if(this.data.delete(J),G||++X>10)break}}this.data.set(Q,Z())}return this.data.get(Q)}size(){return this.data.size}hash($){let Z="",{parameters:Q}=this;if(Q.length===0)return!1;for(let Y of Q){let X=String($[Y]??"");if(X.includes("|;"))return!1;Z+=X+"|;"}return Z}}class l7 extends Error{constructor($){super($);this.name="EndpointError"}}var ga="endpoints";function vL($){if(typeof $!=="object"||$==null)return $;if("ref"in $)return`$${vL($.ref)}`;if("fn"in $)return`${$.fn}(${($.argv||[]).map(vL).join(", ")})`;return JSON.stringify($,null,2)}var Fq$={},Tl4=($,Z)=>$===Z;function Rl4(...$){for(let Z of $)if(Z!=null)return Z;return}var ql4=($)=>{let Z=$.split("."),Q=[];for(let Y of Z){let X=Y.indexOf("[");if(X!==-1){if(Y.indexOf("]")!==Y.length-1)throw new l7(`Path: '${$}' does not end with ']'`);let J=Y.slice(X+1,-1);if(Number.isNaN(parseInt(J)))throw new l7(`Invalid array index: '${J}' in path: '${$}'`);if(X!==0)Q.push(Y.slice(0,X));Q.push(J)}else Q.push(Y)}return Q},Uq$=($,Z)=>ql4(Z).reduce((Q,Y)=>{if(typeof Q!=="object")throw new l7(`Index '${Y}' in '${Z}' not found in '${JSON.stringify($)}'`);else if(Array.isArray(Q)){let X=parseInt(Y);return Q[X<0?Q.length+X:X]}return Q[Y]},$),Il4=($)=>$!=null;function Ml4($,Z,Q){return $?Z:Q}var kl4=($)=>!$,Vl4=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),Nq$=($)=>Vl4.test($)||$.startsWith("[")&&$.endsWith("]"),_61={[f61.HTTP]:80,[f61.HTTPS]:443},Sl4=($)=>{let Z=(()=>{try{if($ instanceof URL)return $;if(typeof $==="object"&&"hostname"in $){let{hostname:N,port:B,protocol:O="",path:L="",query:w={}}=$,E=new URL(`${O}//${N}${B?`:${B}`:""}${L}`);return E.search=Object.entries(w).map(([j,z])=>`${j}=${z}`).join("&"),E}return new URL($)}catch(N){return null}})();if(!Z)return console.error(`Unable to parse ${JSON.stringify($)} as a whatwg URL.`),null;let Q=Z.href,{host:Y,hostname:X,pathname:J,protocol:G,search:W}=Z;if(W)return null;let K=G.slice(0,-1);if(!Object.values(f61).includes(K))return null;let H=Nq$(X),F=Q.includes(`${Y}:${_61[K]}`)||typeof $==="string"&&$.includes(`${Y}:${_61[K]}`),U=`${Y}${F?`:${_61[K]}`:""}`;return{scheme:K,authority:U,path:J,normalizedPath:J.endsWith("/")?J:`${J}/`,isIp:H}};function Cl4($,Z,Q){if(Q===1)return[$];if($==="")return[""];let Y=$.split(Z);if(Q===0)return Y;return Y.slice(0,Q-1).concat(Y.slice(1).join(Z))}var _l4=($,Z)=>$===Z,vl4=($,Z,Q,Y)=>{if($==null||Z>=Q||$.length<Q||/[^\u0000-\u007f]/.test($))return null;if(!Y)return $.substring(Z,Q);return $.substring($.length-Q,$.length-Z)},fl4=($)=>encodeURIComponent($).replace(/[!*'()]/g,(Z)=>`%${Z.charCodeAt(0).toString(16).toUpperCase()}`),bl4={booleanEquals:Tl4,coalesce:Rl4,getAttr:Uq$,isSet:Il4,isValidHostLabel:Xq$,ite:Ml4,not:kl4,parseURL:Sl4,split:Cl4,stringEquals:_l4,substring:vl4,uriEncode:fl4},Bq$=($,Z)=>{let Q=[],{referenceRecord:Y,endpointParams:X}=Z,J=0;while(J<$.length){let G=$.indexOf("{",J);if(G===-1){Q.push($.slice(J));break}Q.push($.slice(J,G));let W=$.indexOf("}",G);if(W===-1){Q.push($.slice(G));break}if($[G+1]==="{"&&$[W+1]==="}")Q.push($.slice(G+1,W)),J=W+2;let K=$.substring(G+1,W);if(K.includes("#")){let[H,F]=K.split("#");Q.push(Uq$(Y[H]??X[H],F))}else Q.push(Y[K]??X[K]);J=W+1}return Q.join("")},xl4=({ref:$},Z)=>{return Z.referenceRecord[$]??Z.endpointParams[$]},ha=($,Z,Q)=>{if(typeof $==="string")return Bq$($,Q);else if($.fn)return Dq$.callFunction($,Q);else if($.ref)return xl4($,Q);throw new l7(`'${Z}': ${String($)} is not a string, function or reference.`)},Oq$=({fn:$,argv:Z},Q)=>{let Y=Array(Z.length);for(let G=0;G<Y.length;++G){let W=Z[G];if(typeof W==="boolean"||typeof W==="number")Y[G]=W;else Y[G]=Dq$.evaluateExpression(W,"arg",Q)}let X=$.indexOf(".");if(X!==-1){let W=Fq$[$.slice(0,X)]?.[$.slice(X+1)];if(typeof W==="function")return W(...Y)}let J=bl4[$];if(typeof J==="function")return J(...Y);throw Error(`function ${$} not loaded in endpointFunctions.`)},Dq$={evaluateExpression:ha,callFunction:Oq$},Lq$=($,Z)=>{let{assign:Q}=$;if(Q&&Q in Z.referenceRecord)throw new l7(`'${Q}' is already defined in Reference Record.`);let Y=Oq$($,Z);Z.logger?.debug?.(`${ga} evaluateCondition: ${vL($)} = ${vL(Y)}`);let X=Y===""?!0:!!Y;if(Q!=null)return{result:X,toAssign:{name:Q,value:Y}};return{result:X}},wq$=($,Z)=>Object.entries($??{}).reduce((Q,[Y,X])=>{return Q[Y]=X.map((J)=>{let G=ha(J,"Header value entry",Z);if(typeof G!=="string")throw new l7(`Header '${Y}' value '${G}' is not a string`);return G}),Q},{}),x61=($,Z)=>Object.entries($).reduce((Q,[Y,X])=>{return Q[Y]=jq$.getEndpointProperty(X,Z),Q},{}),Eq$=($,Z)=>{if(Array.isArray($))return $.map((Q)=>Eq$(Q,Z));switch(typeof $){case"string":return Bq$($,Z);case"object":if($===null)throw new l7(`Unexpected endpoint property: ${$}`);return jq$.getEndpointProperties($,Z);case"boolean":return $;default:throw new l7(`Unexpected endpoint property type: ${typeof $}`)}},jq$={getEndpointProperty:Eq$,getEndpointProperties:x61},zq$=($,Z)=>{let Q=ha($,"Endpoint URL",Z);if(typeof Q==="string")try{return new URL(Q)}catch(Y){throw console.error(`Failed to construct URL with ${Q}`,Y),Y}throw new l7(`Endpoint URL must be a string, got ${typeof Q}`)},v61=1e8,yl4=($,Z)=>{let{nodes:Q,root:Y,results:X,conditions:J}=$,G=Y,W={},K={referenceRecord:W,endpointParams:Z.endpointParams,logger:Z.logger};while(G!==1&&G!==-1&&G<v61){let H=3*(Math.abs(G)-1),[F,U,N]=[Q[H],Q[H+1],Q[H+2]],[B,O,L]=J[F],w=Lq$({fn:B,assign:L,argv:O},K);if(w.toAssign){let{name:E,value:j}=w.toAssign;W[E]=j}G=G>=0===w.result?U:N}if(G>=v61){let H=X[G-v61];if(H[0]===-1){let[,B]=H;throw new l7(ha(B,"Error",K))}let[F,U,N]=H;return{url:zq$(F,K),properties:x61(U,K),headers:wq$(N??{},K)}}throw new l7("No matching endpoint.")},y61=($=[],Z)=>{let Q={},Y={...Z,referenceRecord:{...Z.referenceRecord}},X=!1;for(let J of $){let{result:G,toAssign:W}=Lq$(J,Y);if(!G)return{result:G};if(W)X=!0,Q[W.name]=W.value,Y.referenceRecord[W.name]=W.value,Z.logger?.debug?.(`${ga} assign: ${W.name} := ${vL(W.value)}`)}if(X)return{result:!0,referenceRecord:Q};return{result:!0}},gl4=($,Z)=>{let{conditions:Q,endpoint:Y}=$,{result:X,referenceRecord:J}=y61(Q,Z);if(!X)return;let G=J?{...Z,referenceRecord:{...Z.referenceRecord,...J}}:Z,{url:W,properties:K,headers:H}=Y;Z.logger?.debug?.(`${ga} Resolving endpoint from template: ${vL(Y)}`);let F={url:zq$(W,G)};if(H!=null)F.headers=wq$(H,G);if(K!=null)F.properties=x61(K,G);return F},hl4=($,Z)=>{let{conditions:Q,error:Y}=$,{result:X,referenceRecord:J}=y61(Q,Z);if(!X)return;let G=J?{...Z,referenceRecord:{...Z.referenceRecord,...J}}:Z;throw new l7(ha(Y,"Error",G))},Pq$=($,Z)=>{for(let Q of $)if(Q.type==="endpoint"){let Y=gl4(Q,Z);if(Y)return Y}else if(Q.type==="error")hl4(Q,Z);else if(Q.type==="tree"){let Y=Aq$.evaluateTreeRule(Q,Z);if(Y)return Y}else throw new l7(`Unknown endpoint rule: ${Q}`);throw new l7("Rules evaluation failed")},ul4=($,Z)=>{let{conditions:Q,rules:Y}=$,{result:X,referenceRecord:J}=y61(Q,Z);if(!X)return;let G=J?{...Z,referenceRecord:{...Z.referenceRecord,...J}}:Z;return Aq$.evaluateRules(Y,G)},Aq$={evaluateRules:Pq$,evaluateTreeRule:ul4},ll4=($,Z)=>{let{endpointParams:Q,logger:Y}=Z,{parameters:X,rules:J}=$;Z.logger?.debug?.(`${ga} Initial EndpointParams: ${vL(Q)}`);for(let W in X){let K=X[W],H=Q[W];if(H==null&&K.default!=null){Q[W]=K.default;continue}if(K.required&&H==null)throw new l7(`Missing required parameter: '${W}'`)}let G=Pq$(J,{endpointParams:Q,logger:Y,referenceRecord:{}});return Z.logger?.debug?.(`${ga} Resolved endpoint: ${vL(G)}`),G},cl4=($)=>{let{endpoint:Z}=$;if(Z===void 0)$.endpoint=async()=>{throw Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint.")};return $},dl4=Jq$(nP0),ml4=Al4(nP0),il4=Wq$(nP0),pl4=Pl4(nP0);nl4.BinaryDecisionDiagram=b61;nl4.EndpointCache=Hq$;nl4.EndpointError=l7;nl4.customEndpointFunctions=Fq$;nl4.decideEndpoint=yl4;nl4.endpointMiddleware=il4;nl4.endpointMiddlewareOptions=Kq$;nl4.getEndpointFromInstructions=dl4;nl4.getEndpointPlugin=pl4;nl4.isIpAddress=Nq$;nl4.resolveEndpoint=ll4;nl4.resolveEndpointConfig=ml4;nl4.resolveEndpointRequiredConfig=cl4;nl4.resolveParams=Gq$});var VY=_((nd4)=>{var{createHmac:Uc4,createHash:Nc4,getRandomValues:Bc4}=z0("crypto"),{ReadStream:Oc4,lstatSync:Dc4,fstatSync:Lc4}=z0("fs"),{HttpResponse:wc4}=sH(),{toEndpointV1:Ec4}=G9(),{Duplex:jc4,Readable:ua,Writable:Sq$,PassThrough:Tq$}=z0("stream"),Cq$=($)=>typeof ArrayBuffer==="function"&&$ instanceof ArrayBuffer||Object.prototype.toString.call($)==="[object ArrayBuffer]",El=($,Z=0,Q=$.byteLength-Z)=>{if(!Cq$($))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof $} (${$})`);return Buffer.from($,Z,Q)},sP0=($,Z)=>{if(typeof $!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof $} (${$})`);return Z?Buffer.from($,Z):Buffer.from($)},zc4=/^[A-Za-z0-9+/]*={0,2}$/,_q$=($)=>{if($.length*3%4!==0)throw TypeError("Incorrect padding on base64 string.");if(!zc4.exec($))throw TypeError("Invalid base64 string.");let Z=sP0($,"base64");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength)},aP0=($)=>{let Z=sP0($,"utf8");return new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength/Uint8Array.BYTES_PER_ELEMENT)},m61=($)=>{let Z;if(typeof $==="string")Z=aP0($);else Z=$;if(typeof Z!=="object"||typeof Z.byteOffset!=="number"||typeof Z.byteLength!=="number")throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return El(Z.buffer,Z.byteOffset,Z.byteLength).toString("base64")};function Pc4($,Z,Q,Y){return class X extends Uint8Array{static fromString(J,G="utf-8"){if(typeof J==="string"){if(G==="base64")return X.mutate(Y(J));return X.mutate(Z(J))}throw Error(`Unsupported conversion from ${typeof J} to Uint8ArrayBlobAdapter.`)}static mutate(J){return Object.setPrototypeOf(J,X.prototype),J}transformToString(J="utf-8"){if(J==="base64")return Q(this);return $(this)}}}var vq$=($)=>{if(typeof $==="string")return $;if(typeof $!=="object"||typeof $.byteOffset!=="number"||typeof $.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return El($.buffer,$.byteOffset,$.byteLength).toString("utf8")},hQ=Array.from({length:256},($,Z)=>Z.toString(16).padStart(2,"0"));function Ac4($){if(typeof crypto<"u"&&typeof crypto.randomUUID==="function")return()=>crypto.randomUUID();return()=>{let Z=new Uint8Array(16);return $(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128,hQ[Z[0]]+hQ[Z[1]]+hQ[Z[2]]+hQ[Z[3]]+"-"+hQ[Z[4]]+hQ[Z[5]]+"-"+hQ[Z[6]]+hQ[Z[7]]+"-"+hQ[Z[8]]+hQ[Z[9]]+"-"+hQ[Z[10]]+hQ[Z[11]]+hQ[Z[12]]+hQ[Z[13]]+hQ[Z[14]]+hQ[Z[15]]}}var Tc4=($,Z,Q=(Y)=>Y)=>$,Rc4=($)=>{switch($){case"true":return!0;case"false":return!1;default:throw Error(`Unable to parse boolean value "${$}"`)}},qc4=($)=>{if($===null||$===void 0)return;if(typeof $==="number"){if($===0||$===1)ia.warn(oP0(`Expected boolean, got ${typeof $}: ${$}`));if($===0)return!1;if($===1)return!0}if(typeof $==="string"){let Z=$.toLowerCase();if(Z==="false"||Z==="true")ia.warn(oP0(`Expected boolean, got ${typeof $}: ${$}`));if(Z==="false")return!1;if(Z==="true")return!0}if(typeof $==="boolean")return $;throw TypeError(`Expected boolean, got ${typeof $}: ${$}`)},da=($)=>{if($===null||$===void 0)return;if(typeof $==="string"){let Z=parseFloat($);if(!Number.isNaN(Z)){if(String(Z)!==String($))ia.warn(oP0(`Expected number but observed string: ${$}`));return Z}}if(typeof $==="number")return $;throw TypeError(`Expected number, got ${typeof $}: ${$}`)},Ic4=Math.ceil(340282346638528860000000000000000000000),tP0=($)=>{let Z=da($);if(Z!==void 0&&!Number.isNaN(Z)&&Z!==1/0&&Z!==-1/0){if(Math.abs(Z)>Ic4)throw TypeError(`Expected 32-bit float, got ${$}`)}return Z},ma=($)=>{if($===null||$===void 0)return;if(Number.isInteger($)&&!Number.isNaN($))return $;throw TypeError(`Expected integer, got ${typeof $}: ${$}`)},Mc4=ma,u61=($)=>i61($,32),l61=($)=>i61($,16),c61=($)=>i61($,8),i61=($,Z)=>{let Q=ma($);if(Q!==void 0&&kc4(Q,Z)!==Q)throw TypeError(`Expected ${Z}-bit integer, got ${$}`);return Q},kc4=($,Z)=>{switch(Z){case 32:return Int32Array.of($)[0];case 16:return Int16Array.of($)[0];case 8:return Int8Array.of($)[0]}},Vc4=($,Z)=>{if($===null||$===void 0){if(Z)throw TypeError(`Expected a non-null value for ${Z}`);throw TypeError("Expected a non-null value")}return $},fq$=($)=>{if($===null||$===void 0)return;if(typeof $==="object"&&!Array.isArray($))return $;let Z=Array.isArray($)?"array":typeof $;throw TypeError(`Expected object, got ${Z}: ${$}`)},Sc4=($)=>{if($===null||$===void 0)return;if(typeof $==="string")return $;if(["boolean","number","bigint"].includes(typeof $))return ia.warn(oP0(`Expected string, got ${typeof $}: ${$}`)),String($);throw TypeError(`Expected string, got ${typeof $}: ${$}`)},Cc4=($)=>{if($===null||$===void 0)return;let Z=fq$($),Q=[];for(let Y in Z)if(Z[Y]!=null)Q.push(Y);if(Q.length===0)throw TypeError("Unions must have exactly one non-null member. None were found.");if(Q.length>1)throw TypeError(`Unions must have exactly one non-null member. Keys ${Q} were not null.`);return Z},p61=($)=>{if(typeof $=="string")return da(Pl($));return da($)},_c4=p61,bq$=($)=>{if(typeof $=="string")return tP0(Pl($));return tP0($)},vc4=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,Pl=($)=>{let Z=$.match(vc4);if(Z===null||Z[0].length!==$.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat($)},n61=($)=>{if(typeof $=="string")return xq$($);return da($)},fc4=n61,bc4=n61,xc4=($)=>{if(typeof $=="string")return xq$($);return tP0($)},xq$=($)=>{switch($){case"NaN":return NaN;case"Infinity":return 1/0;case"-Infinity":return-1/0;default:throw Error(`Unable to parse float value: ${$}`)}},yq$=($)=>{if(typeof $==="string")return ma(Pl($));return ma($)},yc4=yq$,gc4=($)=>{if(typeof $==="string")return u61(Pl($));return u61($)},jl=($)=>{if(typeof $==="string")return l61(Pl($));return l61($)},gq$=($)=>{if(typeof $==="string")return c61(Pl($));return c61($)},oP0=($)=>{return String(TypeError($).stack||$).split(`
|
|
1633
1633
|
`).slice(0,5).filter((Z)=>!Z.includes("stackTraceWarning")).join(`
|
|
1634
1634
|
`)},ia={warn:console.warn},hc4=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t61=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function uc4($){let Z=$.getUTCFullYear(),Q=$.getUTCMonth(),Y=$.getUTCDay(),X=$.getUTCDate(),J=$.getUTCHours(),G=$.getUTCMinutes(),W=$.getUTCSeconds(),K=X<10?`0${X}`:`${X}`,H=J<10?`0${J}`:`${J}`,F=G<10?`0${G}`:`${G}`,U=W<10?`0${W}`:`${W}`;return`${hc4[Y]}, ${K} ${t61[Q]} ${Z} ${H}:${F}:${U} GMT`}var lc4=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/),cc4=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=lc4.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,Y,X,J,G,W,K,H]=Z,F=jl(zl(Y)),U=eH(X,"month",1,12),N=eH(J,"day",1,31);return la(F,U,N,{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H})},dc4=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),mc4=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let Z=dc4.exec($);if(!Z)throw TypeError("Invalid RFC-3339 date-time value");let[Q,Y,X,J,G,W,K,H,F]=Z,U=jl(zl(Y)),N=eH(X,"month",1,12),B=eH(J,"day",1,31),O=la(U,N,B,{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H});if(F.toUpperCase()!="Z")O.setTime(O.getTime()-Yd4(F));return O},ic4=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),pc4=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),nc4=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),tc4=($)=>{if($===null||$===void 0)return;if(typeof $!=="string")throw TypeError("RFC-7231 date-times must be expressed as strings");let Z=ic4.exec($);if(Z){let[Q,Y,X,J,G,W,K,H]=Z;return la(jl(zl(J)),g61(X),eH(Y,"day",1,31),{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H})}if(Z=pc4.exec($),Z){let[Q,Y,X,J,G,W,K,H]=Z;return ac4(la(rc4(J),g61(X),eH(Y,"day",1,31),{hours:G,minutes:W,seconds:K,fractionalMilliseconds:H}))}if(Z=nc4.exec($),Z){let[Q,Y,X,J,G,W,K,H]=Z;return la(jl(zl(H)),g61(Y),eH(X.trimLeft(),"day",1,31),{hours:J,minutes:G,seconds:W,fractionalMilliseconds:K})}throw TypeError("Invalid RFC-7231 date-time value")},oc4=($)=>{if($===null||$===void 0)return;let Z;if(typeof $==="number")Z=$;else if(typeof $==="string")Z=p61($);else if(typeof $==="object"&&$.tag===1)Z=$.value;else throw TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");if(Number.isNaN(Z)||Z===1/0||Z===-1/0)throw TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(Z*1000))},la=($,Z,Q,Y)=>{let X=Z-1;return $d4($,X,Q),new Date(Date.UTC($,X,Q,eH(Y.hours,"hour",0,23),eH(Y.minutes,"minute",0,59),eH(Y.seconds,"seconds",0,60),Qd4(Y.fractionalMilliseconds)))},rc4=($)=>{let Z=new Date().getUTCFullYear(),Q=Math.floor(Z/100)*100+jl(zl($));if(Q<Z)return Q+100;return Q},sc4=1576800000000,ac4=($)=>{if($.getTime()-new Date().getTime()>sc4)return new Date(Date.UTC($.getUTCFullYear()-100,$.getUTCMonth(),$.getUTCDate(),$.getUTCHours(),$.getUTCMinutes(),$.getUTCSeconds(),$.getUTCMilliseconds()));return $},g61=($)=>{let Z=t61.indexOf($);if(Z<0)throw TypeError(`Invalid month: ${$}`);return Z+1},ec4=[31,28,31,30,31,30,31,31,30,31,30,31],$d4=($,Z,Q)=>{let Y=ec4[Z];if(Z===1&&Zd4($))Y=29;if(Q>Y)throw TypeError(`Invalid day for ${t61[Z]} in ${$}: ${Q}`)},Zd4=($)=>{return $%4===0&&($%100!==0||$%400===0)},eH=($,Z,Q,Y)=>{let X=gq$(zl($));if(X<Q||X>Y)throw TypeError(`${Z} must be between ${Q} and ${Y}, inclusive`);return X},Qd4=($)=>{if($===null||$===void 0)return 0;return bq$("0."+$)*1000},Yd4=($)=>{let Z=$[0],Q=1;if(Z=="+")Q=1;else if(Z=="-")Q=-1;else throw TypeError(`Offset direction, ${Z}, must be "+" or "-"`);let Y=Number($.substring(1,3)),X=Number($.substring(4,6));return Q*(Y*60+X)*60*1000},zl=($)=>{let Z=0;while(Z<$.length-1&&$.charAt(Z)==="0")Z++;if(Z===0)return $;return $.slice(Z)},Hf=function(Z){return Object.assign(new String(Z),{deserializeJSON(){return JSON.parse(String(Z))},toString(){return String(Z)},toJSON(){return String(Z)}})};Hf.from=($)=>{if($&&typeof $==="object"&&($ instanceof Hf||("deserializeJSON"in $)))return $;else if(typeof $==="string"||Object.getPrototypeOf($)===String.prototype)return Hf(String($));return Hf(JSON.stringify($))};Hf.fromObject=Hf.from;function Xd4($){if($.includes(",")||$.includes('"'))$=`"${$.replace(/"/g,"\\\"")}"`;return $}var o61="(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?",r61="(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)",s61="(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?",hq$="(\\d?\\d)",uq$="(\\d{4})",Jd4=new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/),Gd4=new RegExp(`^${o61}, ${hq$} ${r61} ${uq$} ${s61} GMT$`),Wd4=new RegExp(`^${o61}, ${hq$}-${r61}-(\\d\\d) ${s61} GMT$`),Kd4=new RegExp(`^${o61} ${r61} ( [1-9]|\\d\\d) ${s61} ${uq$}$`),Hd4=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Fd4=($)=>{if($==null)return;let Z=NaN;if(typeof $==="number")Z=$;else if(typeof $==="string"){if(!/^-?\d*\.?\d+$/.test($))throw TypeError("parseEpochTimestamp - numeric string invalid.");Z=Number.parseFloat($)}else if(typeof $==="object"&&$.tag===1)Z=$.value;if(isNaN(Z)||Math.abs(Z)===1/0)throw TypeError("Epoch timestamps must be valid finite numbers.");return new Date(Math.round(Z*1000))},Ud4=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC3339 timestamps must be strings");let Z=Jd4.exec($);if(!Z)throw TypeError(`Invalid RFC3339 timestamp format ${$}`);let[,Q,Y,X,J,G,W,,K,H]=Z;AN(Y,1,12),AN(X,1,31),AN(J,0,23),AN(G,0,59),AN(W,0,60);let F=new Date(Date.UTC(Number(Q),Number(Y)-1,Number(X),Number(J),Number(G),Number(W),Number(K)?Math.round(parseFloat(`0.${K}`)*1000):0));if(F.setUTCFullYear(Number(Q)),H.toUpperCase()!="Z"){let[,U,N,B]=/([+-])(\d\d):(\d\d)/.exec(H)||[void 0,"+",0,0],O=U==="-"?1:-1;F.setTime(F.getTime()+O*(Number(N)*60*60*1000+Number(B)*60*1000))}return F},Nd4=($)=>{if($==null)return;if(typeof $!=="string")throw TypeError("RFC7231 timestamps must be strings.");let Z,Q,Y,X,J,G,W,K;if(K=Gd4.exec($))[,Z,Q,Y,X,J,G,W]=K;else if(K=Wd4.exec($))[,Z,Q,Y,X,J,G,W]=K,Y=(Number(Y)+1900).toString();else if(K=Kd4.exec($))[,Q,Z,X,J,G,W,Y]=K;if(Y&&G){let H=Date.UTC(Number(Y),Hd4.indexOf(Q),Number(Z),Number(X),Number(J),Number(G),W?Math.round(parseFloat(`0.${W}`)*1000):0);AN(Z,1,31),AN(X,0,23),AN(J,0,59),AN(G,0,60);let F=new Date(H);return F.setUTCFullYear(Number(Y)),F}throw TypeError(`Invalid RFC7231 date-time value ${$}.`)};function AN($,Z,Q){let Y=Number($);if(Y<Z||Y>Q)throw Error(`Value ${Y} out of range [${Z}, ${Q}]`)}function Bd4($,Z,Q){if(Q<=0||!Number.isInteger(Q))throw Error("Invalid number of delimiters ("+Q+") for splitEvery.");let Y=$.split(Z);if(Q===1)return Y;let X=[],J="";for(let G=0;G<Y.length;G++){if(J==="")J=Y[G];else J+=Z+Y[G];if((G+1)%Q===0)X.push(J),J=""}if(J!=="")X.push(J);return X}var Od4=($)=>{let Z=$.length,Q=[],Y=!1,X=void 0,J=0;for(let G=0;G<Z;++G){let W=$[G];switch(W){case'"':if(X!=="\\")Y=!Y;break;case",":if(!Y)Q.push($.slice(J,G)),J=G+1;break}X=W}return Q.push($.slice(J)),Q.map((G)=>{G=G.trim();let W=G.length;if(W<2)return G;if(G[0]==='"'&&G[W-1]==='"')G=G.slice(1,W-1);return G.replace(/\\"/g,'"')})},Rq$=/^-?\d*(\.\d+)?$/;class eP0{string;type;constructor($,Z){if(this.string=$,this.type=Z,!Rq$.test($))throw Error('@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".')}toString(){return this.string}static[Symbol.hasInstance]($){if(!$||typeof $!=="object")return!1;let Z=$;return eP0.prototype.isPrototypeOf($)||Z.type==="bigDecimal"&&Rq$.test(Z.string)}}function Dd4($){return new eP0(String($),"bigDecimal")}var lq$={},d61={};for(let $=0;$<256;$++){let Z=$.toString(16).toLowerCase();if(Z.length===1)Z=`0${Z}`;lq$[$]=Z,d61[Z]=$}function Ld4($){if($.length%2!==0)throw Error("Hex encoded strings must have an even number length");let Z=new Uint8Array($.length/2);for(let Q=0;Q<$.length;Q+=2){let Y=$.slice(Q,Q+2).toLowerCase();if(Y in d61)Z[Q/2]=d61[Y];else throw Error(`Cannot decode unrecognized sequence ${Y} as hexadecimal`)}return Z}function cq$($){let Z="";for(let Q=0;Q<$.byteLength;Q++)Z+=lq$[$[Q]];return Z}var wd4=($)=>{if(!$)return 0;if(typeof $==="string")return Buffer.byteLength($);else if(typeof $.byteLength==="number")return $.byteLength;else if(typeof $.size==="number")return $.size;else if(typeof $.start==="number"&&typeof $.end==="number")return $.end+1-$.start;else if($ instanceof Oc4){if($.path!=null)return Dc4($.path).size;else if(typeof $.fd==="number")return Lc4($.fd).size}throw Error(`Body Length computation failed for ${$}`)},dq$=($)=>{if(typeof $==="string")return aP0($);if(ArrayBuffer.isView($))return new Uint8Array($.buffer,$.byteOffset,$.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array($)},mq$=($,Z)=>(Q,Y)=>async(X)=>{let{response:J}=await Q(X);try{let G=await Z(J,$);return{response:J,output:G}}catch(G){if(Object.defineProperty(G,"$response",{value:J,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in G)){try{G.message+=`
|
|
@@ -2938,7 +2938,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
2938
2938
|
${J.join(`
|
|
2939
2939
|
`)}`:X}function KA6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
2940
2940
|
`)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var Io$=200,aP6=12,$A6,QA6=300,Pq0=3;var $G1=D(()=>{sZ();G8();zq0();$A6={aheadBy:0,behindBy:0,files:[]}});function FA6($){if(!$||$.includes(".."))return!1;return HA6.test($)}function ko$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!FA6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function Vo$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var HA6;var So$=D(()=>{HA6=/^[\w./@-]+$/});function l00($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function _o$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new Xw(zZ);let J=await MD($.storage,X,Y);if(J&&await vU($.storage,J)){let F=await HH($,J,{forceRefresh:!0}).catch((U)=>{throw new Xw(U instanceof Error?U.message:zZ)});await Co$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new Xw("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await Dh({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:zZ;throw new Xw(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await FH(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=f5$(F instanceof Error?F.message:String(F));throw U?new Xw(N):F});await Co$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function Co$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=yc($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await ZL(K,UA6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var UA6=10485760,Xw;var ZG1=D(()=>{uG();Uq0();Wr();kY0();$o();sZ();Xw=class Xw extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function BA6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!NA6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Yb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(DA6)])}async function wA6($,Z){let Q=$.var.studioContext,Y=EH(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=a_(G?.metadata?.runtime);if(W)return W;let K=LE0(Z.virtualMcpMetadata),H=K==="cms"?await fJ1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)Kr(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function EA6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await RY($.var.studioContext)}catch{return null}}function Xb($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function cc($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=l00(Z,Q);if(!X)throw new p0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=p(Y);return Bh(Y,J.id,X)}function QG1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=O6$(Z);if(Y!==void 0)return $.json({error:Q},429,{...L5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof D6)return $.json({error:Q},409,L5);let X=dG(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,L5)}return $.json({error:Q},502,L5)}async function bo$($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function xo$($){try{let Z=await cc($),Q=await Aq0(Z,$.get("vmClaim").branch);return $.json(Q,200,L5)}catch(Z){return QG1($,Z)}}function c00($,Z){let Y=(qq0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return qq0.set($,X),X.finally(()=>{if(qq0.get($)===X)qq0.delete($)}),Y}async function K7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,L5);let Y=Q?.runner??Xb($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...L5}})}}let O=await B.text(),L=Q?.redactRepoDir?jA6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...L5}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function jA6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function Iq0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function zA6($){return yo$.includes($)}var NA6,vo$=524288,OA6=65536,DA6=1e4,fo$=2000,LA6,qq0,L5,yo$,go$=()=>{let $=new $1;$.use("/:virtualMcpId/:branch/*",LA6),$.post("/:virtualMcpId/:branch/write",(Q)=>K7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:Yb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>K7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Yb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>K7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Yb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>K7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:Yb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>K7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:Yb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>K7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:Yb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>K7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:Yb(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return K7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return K7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>K7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>K7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!zA6(Y))return Q.json({error:`step must be one of: ${yo$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await fJ1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await EA6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,L5);if(Y==="start"){let G=p(Q.var.studioContext),W=ah(X.virtualMcpMetadata);try{await NE0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return K7(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return dN(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return yt$(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return xo$(Q);return Z(Q)});let Z=(Q)=>K7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(fo$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return xo$(Q);return K7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(fo$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await cc(Q),G=await Tq0(J,Y.branch,X.base);return Q.json(G,200,L5)}catch(X){return QG1(Q,X)}return K7(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,L5);let Y=Xb(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return c00(X,async()=>{try{await bJ1(W,Y,X);let K=l00(J,G);if(K)await _o$(W,Y,X,K)}catch(K){if(K instanceof Xw)return Q.json({error:K.message},403,L5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,L5)}return K7(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return c00(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,L5);try{let G=await cc(Q);return await Mo$(G,Y.branch,J),Q.json({ok:!0},200,L5)}catch(G){let W=dG(G)===409||G instanceof D6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,L5)}});return c00(Y.claimName,()=>K7(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return c00(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await cc(Q),H=W.base??await K.getDefaultBranch();return await Rq0(K,Y.branch,H),Q.json({ok:!0},200,L5)}catch(W){return QG1(Q,W)}});let X=Xb(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return c00(J,async()=>{try{await bJ1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,L5)}return K7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",v5({maxSize:vo$,onError:(Q)=>Q.json({error:"Payload too large"},413,L5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Xb(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=gJ1(F)&&N?[F,U]:X?await Promise.all([Iq0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),Iq0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await cc(Q);return Promise.all([Aq0(w,Y.branch),Tq0(w,Y.branch)])})(),L=await ct$(K,B,O);return Q.json(L,200,L5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,L5);return Q.json({error:F},502,L5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",v5({maxSize:vo$,onError:(Q)=>Q.json({error:"Payload too large"},413,L5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Xb(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=gJ1(F)&&N?[F,U]:X?await Promise.all([Iq0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),Iq0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await cc(Q);return Promise.all([Aq0(w,Y.branch),Tq0(w,Y.branch)])})(),L=await mt$(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,L5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,L5);return Q.json({error:F},502,L5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=Xb(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return bo$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",v5({maxSize:OA6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Xb(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=ko$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=Vo$(J,W.resolveType);return bo$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var ho$=D(()=>{g$();XK();xc();vJ1();Yr();ft$();nG();eh();bt$();RW();xt$();gt$();Na0();Jr();lJ1();it$();sZ();o5();$G1();So$();ZG1();NA6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;LA6=Fq0(async($,Z)=>{let Q=$.var.studioContext;try{n(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=n0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=p(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{BA6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=qo({orgId:X.id,virtualMcpId:J,branch:G}),H=await Sr0(Q,G),F=Cr0(H,Y),U=vt$({userId:F,projectRef:K}),N=W.metadata??null,B=await wA6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await RY(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});qq0=new Map;L5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};yo$=["clone","install","start"]});function uo$($,Z,Q){let Y=YG1.get($);if(!Y)Y={pending:null,running:!1},YG1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)AA6($,Y);return J}async function AA6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await TA6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)YG1.delete($)}}async function TA6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await lc(Z,Q),W=await Z.listDecofileEntries(G,Y),K=sJ1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=aJ1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
2941
|
-
`;await Ao$(Z.repo,L);let w=O[0]??`${jq0(Y)}/${mJ1(N)}.json`;H.push({path:w,content:L});let E=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:E,content:L});for(let j of O.slice(1))H.push({path:j,deleted:!0}),F.delete(j)}for(let N of $.del)for(let B of aJ1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await To$(Z,F.values(),X),{decofile:B,skipped:O}=x00(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:wW(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:RA6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof D6)||J>=PA6-1)throw N;await z$(U7(2000,200,J,2,0.5))}}}function RA6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return Yr0(Y,$.deps.coAuthor)}var PA6=3,YG1;var lo$=D(()=>{Zw0();Bq0();c6();G8();sZ();zq0();YG1=new Map});import{createHmac as co$,randomBytes as qA6,timingSafeEqual as IA6}from"crypto";function do$(){if(Mq0)return Mq0;let $;try{let Z=M0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return Mq0=$?Buffer.from($):qA6(32),Mq0}function XG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+MA6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=co$("sha256",do$()).update(Y).digest("base64url");return`${Y}.${X}`}function mo$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(co$("sha256",do$()).update(Y).digest("base64url"));if(X.length!==J.length||!IA6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var MA6=21600000,Mq0=null;var io$=D(()=>{E$()});import{z as dc}from"zod";function VA6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&kA6.test($)}function ro$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function d00($){let Z=$.get("decofileScope");return Bh($.var.studioContext,Z.organizationId,Z.githubRepo)}function m00($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof D6)return $.json({error:Q},409);let Y=dG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function so$(){let $=new $1;return $.use("/:virtualMcpId/:branch",oo$),$.use("/:virtualMcpId/:branch/*",oo$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await d00(Z),X=await Ro$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=XG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(ro$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return m00(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await d00(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return m00(Z,X)}}),$.patch("/:virtualMcpId/:branch",CA6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=_A6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{Nq0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(dJ1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await d00(Z),W=await uo$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:yc(Y)},J),K=XG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:ro$(Z)})}catch(G){return m00(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await d00(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(dG(W)!==409)throw W;await Rq0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(dG(G)===409)return Z.json({error:"merge-conflict"},409);if(dG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return m00(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await d00(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(dG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return m00(Z,Y)}}),$}var kA6,po$=500,no$=1048576,to$=1024,SA6=8388608,CA6,_A6,oo$;var ao$=D(()=>{Ba0();Bq0();g$();XK();vJ1();Uq0();ZG1();sZ();lo$();io$();$G1();zq0();kA6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;CA6=v5({maxSize:SA6,onError:($)=>$.json({error:"Payload too large"},413)}),_A6=dc.object({set:dc.record(dc.string(),dc.unknown()).optional(),delete:dc.array(dc.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=po$,{message:`Patch cannot touch more than ${po$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=no$),{message:`Each block must be at most ${no$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=to$),{message:`Each block key must be at most ${to$} characters`}),oo$=Fq0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!VA6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!mo$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!DE0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=l00(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var eo$=($)=>{let Z=new $1;if(Z.use("*",hf),Z.use("*",Cm$),Z.route("/",zR0()),Z.route("/",Ni$()),Z.route("/",em$()),Z.route("/",zt$()),Z.route("/",Bt$()),Z.route("/",wt$()),Z.route("/",Wq0()),Z.route("/tools",Mt$()),Z.route("/",Rt$()),Z.route("/",in$({kvStorage:$.kvStorage})),Z.route("/",dn$()),Z.route("/fs",Xt$({getConnection:$.getNatsConnection})),Z.route("/sandbox",go$()),Z.route("/decofile",so$()),Z.route("/",Ft$()),Z.route("/",Gt$()),Z.route("/deco-sites",AR0()),Z.route("/hosting",cm$()),Z.route("/monitor",om$()),Z.route("/sso",OR0()),Z.route("/",Kq0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ym$()),$.mountDevAssets)Z.route("/dev-assets",IR0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",ol$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Kt$()),Z.route("/mcp",wz0()),Z.route("/mcp/self",Xq0()),Z.route("/mcp",zz0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var $r$=D(()=>{g$();_m$();XR0();gm$();$X1();dm$();rm$();MR0();jc();oY1();JX1();mn$();pn$();Jt$();Wt$();Hs();dY1();Pz0();RJ1();Ht$();Ut$();Ot$();MJ1();Pt$();qt$();kJ1();kt$();VJ1();Ez0();ho$();ao$()});function vA6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var fA6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Zr$=()=>{let $=new $1;return $.use("*",fA6),$.get("/",async(Z)=>{let Q=M0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:vA6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var Qr$=D(()=>{g$();E$();UT0()});import{z as k1}from"zod";function LF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function mA6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function iA6($,Z,Q){try{return JSON.parse($)}catch{throw new Jr$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function pA6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:iA6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function nA6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?bJ(Q.function.parameters):bJ({type:"object",properties:{}});return[Q.function.name,W$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function tA6($){if(!$)return;return{openai:{response_format:$}}}function oA6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Yr$($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Xr$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var bA6=256,xA6,yA6,gA6,hA6,uA6,lA6,cA6,dA6,Jr$,Gr$,Wr$;var Kr$=D(()=>{C4();g$();xc();EN();xA6=k1.object({type:k1.literal("function"),function:k1.object({name:k1.string(),description:k1.string().optional(),parameters:k1.record(k1.string(),k1.unknown()).optional()})}),yA6=k1.object({id:k1.string(),type:k1.literal("function"),function:k1.object({name:k1.string(),arguments:k1.string()})}),gA6=k1.discriminatedUnion("role",[k1.object({role:k1.literal("system"),content:k1.string(),name:k1.string().optional()}),k1.object({role:k1.literal("user"),content:k1.union([k1.string(),k1.array(k1.union([k1.object({type:k1.literal("text"),text:k1.string()}),k1.object({type:k1.literal("image_url"),image_url:k1.object({url:k1.string(),detail:k1.string().optional()})})]))]),name:k1.string().optional()}),k1.object({role:k1.literal("assistant"),content:k1.string().nullable().optional(),name:k1.string().optional(),tool_calls:k1.array(yA6).optional()}),k1.object({role:k1.literal("tool"),content:k1.string(),tool_call_id:k1.string()})]),hA6=k1.object({type:k1.literal("text")}),uA6=k1.object({type:k1.literal("json_object")}),lA6=k1.object({type:k1.literal("json_schema"),json_schema:k1.object({name:k1.string(),description:k1.string().optional(),schema:k1.record(k1.string(),k1.unknown()),strict:k1.boolean().optional()})}),cA6=k1.union([hA6,uA6,lA6]),dA6=k1.object({model:k1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:k1.array(gA6),stream:k1.boolean().optional().default(!1),temperature:k1.number().min(0).max(2).optional(),max_tokens:k1.number().positive().optional(),top_p:k1.number().min(0).max(1).optional(),frequency_penalty:k1.number().min(-2).max(2).optional(),presence_penalty:k1.number().min(-2).max(2).optional(),stop:k1.union([k1.string(),k1.array(k1.string())]).optional(),tools:k1.array(xA6).optional(),tool_choice:k1.union([k1.literal("auto"),k1.literal("none"),k1.literal("required"),k1.object({type:k1.literal("function"),function:k1.object({name:k1.string()})})]).optional(),response_format:cA6.optional(),user:k1.string().optional()});Jr$=class Jr$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Gr$=new $1;Gr$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(LF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(LF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(LF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=dA6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(LF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=mA6(J.model);if(!G)return $.json(LF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>OE(j.providerId));if(!E)return $.json(LF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(LF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=pA6(J.messages),N=J.tools?nA6(J.tools):void 0,B=tA6(J.response_format),O=oA6(),L=Math.floor(Date.now()/1000);if(J.stream)return dN($,async(w)=>{let E=Yr$(F,U,N,J,B,$.req.raw.signal);try{let j=aD(E),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=bA6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:Xr$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=Yr$(F,U,N,J,B,$.req.raw.signal),E=await rD(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:j,finish_reason:Xr$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(LF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(LF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(LF(X.message,"server_error"),500)}});Wr$=Gr$});function rA6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Hr$(){let $=new $1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=n0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!V7(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||l5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(Z4$(U)!==J)continue;if(!rA6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Fr$=D(()=>{g$();QH()});var Nr$;var Ur$=D(()=>{Nr$={name:"decocms",version:"4.358.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/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.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/resources":"^2.6.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","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function eA6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??aA6}}var Br$,aA6="https://ph.studio.decocms.com",Or$;var Dr$=D(()=>{g$();Tn();Tv();P5();E$();kY1();Ur$();Br$=new $1;Br$.get("/",($)=>{let Z={version:Nr$.version,theme:qr1(),...GW().logo&&{logo:GW().logo},...JN()&&{internalUrl:gx1()},...M0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!M0().firecrawlApiKey,hostingEnabled:!!M0().controlplaneRestUrl&&!!M0().controlplaneServiceToken,hostingControlPlaneGa:M0().hostingControlPlaneGa,monitorEnabled:!!M0().clickhouseAnalyticsUrl&&!!M0().clickhouseAnalyticsPassword,monitorGa:M0().monitorGa,auth:_d$(),posthog:eA6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:a00()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Or$=Br$});function mc($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function JG1($){return(mc($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function wr$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(mc($))}&sz=${Z}`}function Lr$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function Er$($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?Lr$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):Lr$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as c0}from"zod";var Jb,$26,Z26,Q26,Y26,jr$;var zr$=D(()=>{Jb=c0.enum(["good","bad","neutral"]),$26=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:Jb.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),Z26=c0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},c0.array($26)),Q26={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},Y26=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:Jb.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:Jb.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:Jb.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:Jb.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(Z26).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:Jb.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:Jb.optional()})).min(1)})]),jr$=c0.object({...Q26,template:Y26})});function kq0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=jr$.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var GG1=D(()=>{zr$()});import{join as Pr$}from"path";async function J26($){try{let Z=await fetch(`${tK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(X26)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=kq0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||JG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function $G($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function G26($,Z){let Q=mc($),Y=Z?.brand?.trim()||JG1(Q),X=wr$(Q,128),G=`${(M0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Er$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${$G(W)}</title>`,`<meta name="description" content="${$G(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${$G(W)}" />`,`<meta property="og:description" content="${$G(K)}" />`,`<meta property="og:url" content="${$G(G)}" />`,`<meta property="og:image" content="${$G(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${$G(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${$G(W)}" />`,`<meta name="twitter:description" content="${$G(K)}" />`,`<meta name="twitter:image" content="${$G(H)}" />`,`<meta name="twitter:image:alt" content="${$G(F)}" />`,`<link rel="canonical" href="${$G(G)}" />`,`<link rel="icon" href="${$G(X)}" sizes="any" />`].join(`
|
|
2941
|
+
`;await Ao$(Z.repo,L);let w=O[0]??`${jq0(Y)}/${mJ1(N)}.json`;H.push({path:w,content:L});let E=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:E,content:L});for(let j of O.slice(1))H.push({path:j,deleted:!0}),F.delete(j)}for(let N of $.del)for(let B of aJ1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await To$(Z,F.values(),X),{decofile:B,skipped:O}=x00(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:wW(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:RA6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof D6)||J>=PA6-1)throw N;await z$(U7(2000,200,J,2,0.5))}}}function RA6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return Yr0(Y,$.deps.coAuthor)}var PA6=3,YG1;var lo$=D(()=>{Zw0();Bq0();c6();G8();sZ();zq0();YG1=new Map});import{createHmac as co$,randomBytes as qA6,timingSafeEqual as IA6}from"crypto";function do$(){if(Mq0)return Mq0;let $;try{let Z=M0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return Mq0=$?Buffer.from($):qA6(32),Mq0}function XG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+MA6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=co$("sha256",do$()).update(Y).digest("base64url");return`${Y}.${X}`}function mo$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(co$("sha256",do$()).update(Y).digest("base64url"));if(X.length!==J.length||!IA6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var MA6=21600000,Mq0=null;var io$=D(()=>{E$()});import{z as dc}from"zod";function VA6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&kA6.test($)}function ro$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function d00($){let Z=$.get("decofileScope");return Bh($.var.studioContext,Z.organizationId,Z.githubRepo)}function m00($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof D6)return $.json({error:Q},409);let Y=dG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function so$(){let $=new $1;return $.use("/:virtualMcpId/:branch",oo$),$.use("/:virtualMcpId/:branch/*",oo$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await d00(Z),X=await Ro$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=XG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(ro$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return m00(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await d00(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return m00(Z,X)}}),$.patch("/:virtualMcpId/:branch",CA6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=_A6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{Nq0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(dJ1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await d00(Z),W=await uo$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:yc(Y)},J),K=XG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:ro$(Z)})}catch(G){return m00(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await d00(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(dG(W)!==409)throw W;await Rq0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(dG(G)===409)return Z.json({error:"merge-conflict"},409);if(dG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return m00(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await d00(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(dG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return m00(Z,Y)}}),$}var kA6,po$=500,no$=1048576,to$=1024,SA6=8388608,CA6,_A6,oo$;var ao$=D(()=>{Ba0();Bq0();g$();XK();vJ1();Uq0();ZG1();sZ();lo$();io$();$G1();zq0();kA6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;CA6=v5({maxSize:SA6,onError:($)=>$.json({error:"Payload too large"},413)}),_A6=dc.object({set:dc.record(dc.string(),dc.unknown()).optional(),delete:dc.array(dc.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=po$,{message:`Patch cannot touch more than ${po$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=no$),{message:`Each block must be at most ${no$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=to$),{message:`Each block key must be at most ${to$} characters`}),oo$=Fq0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!VA6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!mo$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!DE0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=l00(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var eo$=($)=>{let Z=new $1;if(Z.use("*",hf),Z.use("*",Cm$),Z.route("/",zR0()),Z.route("/",Ni$()),Z.route("/",em$()),Z.route("/",zt$()),Z.route("/",Bt$()),Z.route("/",wt$()),Z.route("/",Wq0()),Z.route("/tools",Mt$()),Z.route("/",Rt$()),Z.route("/",in$({kvStorage:$.kvStorage})),Z.route("/",dn$()),Z.route("/fs",Xt$({getConnection:$.getNatsConnection})),Z.route("/sandbox",go$()),Z.route("/decofile",so$()),Z.route("/",Ft$()),Z.route("/",Gt$()),Z.route("/deco-sites",AR0()),Z.route("/hosting",cm$()),Z.route("/monitor",om$()),Z.route("/sso",OR0()),Z.route("/",Kq0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ym$()),$.mountDevAssets)Z.route("/dev-assets",IR0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",ol$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Kt$()),Z.route("/mcp",wz0()),Z.route("/mcp/self",Xq0()),Z.route("/mcp",zz0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var $r$=D(()=>{g$();_m$();XR0();gm$();$X1();dm$();rm$();MR0();jc();oY1();JX1();mn$();pn$();Jt$();Wt$();Hs();dY1();Pz0();RJ1();Ht$();Ut$();Ot$();MJ1();Pt$();qt$();kJ1();kt$();VJ1();Ez0();ho$();ao$()});function vA6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var fA6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Zr$=()=>{let $=new $1;return $.use("*",fA6),$.get("/",async(Z)=>{let Q=M0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:vA6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var Qr$=D(()=>{g$();E$();UT0()});import{z as k1}from"zod";function LF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function mA6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function iA6($,Z,Q){try{return JSON.parse($)}catch{throw new Jr$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function pA6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:iA6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function nA6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?bJ(Q.function.parameters):bJ({type:"object",properties:{}});return[Q.function.name,W$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function tA6($){if(!$)return;return{openai:{response_format:$}}}function oA6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Yr$($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Xr$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var bA6=256,xA6,yA6,gA6,hA6,uA6,lA6,cA6,dA6,Jr$,Gr$,Wr$;var Kr$=D(()=>{C4();g$();xc();EN();xA6=k1.object({type:k1.literal("function"),function:k1.object({name:k1.string(),description:k1.string().optional(),parameters:k1.record(k1.string(),k1.unknown()).optional()})}),yA6=k1.object({id:k1.string(),type:k1.literal("function"),function:k1.object({name:k1.string(),arguments:k1.string()})}),gA6=k1.discriminatedUnion("role",[k1.object({role:k1.literal("system"),content:k1.string(),name:k1.string().optional()}),k1.object({role:k1.literal("user"),content:k1.union([k1.string(),k1.array(k1.union([k1.object({type:k1.literal("text"),text:k1.string()}),k1.object({type:k1.literal("image_url"),image_url:k1.object({url:k1.string(),detail:k1.string().optional()})})]))]),name:k1.string().optional()}),k1.object({role:k1.literal("assistant"),content:k1.string().nullable().optional(),name:k1.string().optional(),tool_calls:k1.array(yA6).optional()}),k1.object({role:k1.literal("tool"),content:k1.string(),tool_call_id:k1.string()})]),hA6=k1.object({type:k1.literal("text")}),uA6=k1.object({type:k1.literal("json_object")}),lA6=k1.object({type:k1.literal("json_schema"),json_schema:k1.object({name:k1.string(),description:k1.string().optional(),schema:k1.record(k1.string(),k1.unknown()),strict:k1.boolean().optional()})}),cA6=k1.union([hA6,uA6,lA6]),dA6=k1.object({model:k1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:k1.array(gA6),stream:k1.boolean().optional().default(!1),temperature:k1.number().min(0).max(2).optional(),max_tokens:k1.number().positive().optional(),top_p:k1.number().min(0).max(1).optional(),frequency_penalty:k1.number().min(-2).max(2).optional(),presence_penalty:k1.number().min(-2).max(2).optional(),stop:k1.union([k1.string(),k1.array(k1.string())]).optional(),tools:k1.array(xA6).optional(),tool_choice:k1.union([k1.literal("auto"),k1.literal("none"),k1.literal("required"),k1.object({type:k1.literal("function"),function:k1.object({name:k1.string()})})]).optional(),response_format:cA6.optional(),user:k1.string().optional()});Jr$=class Jr$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Gr$=new $1;Gr$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(LF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(LF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(LF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=dA6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(LF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=mA6(J.model);if(!G)return $.json(LF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>OE(j.providerId));if(!E)return $.json(LF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(LF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=pA6(J.messages),N=J.tools?nA6(J.tools):void 0,B=tA6(J.response_format),O=oA6(),L=Math.floor(Date.now()/1000);if(J.stream)return dN($,async(w)=>{let E=Yr$(F,U,N,J,B,$.req.raw.signal);try{let j=aD(E),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=bA6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:Xr$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=Yr$(F,U,N,J,B,$.req.raw.signal),E=await rD(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:j,finish_reason:Xr$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(LF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(LF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(LF(X.message,"server_error"),500)}});Wr$=Gr$});function rA6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Hr$(){let $=new $1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=n0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!V7(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||l5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(Z4$(U)!==J)continue;if(!rA6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Fr$=D(()=>{g$();QH()});var Nr$;var Ur$=D(()=>{Nr$={name:"decocms",version:"4.358.2",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/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.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/resources":"^2.6.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","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function eA6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??aA6}}var Br$,aA6="https://ph.studio.decocms.com",Or$;var Dr$=D(()=>{g$();Tn();Tv();P5();E$();kY1();Ur$();Br$=new $1;Br$.get("/",($)=>{let Z={version:Nr$.version,theme:qr1(),...GW().logo&&{logo:GW().logo},...JN()&&{internalUrl:gx1()},...M0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!M0().firecrawlApiKey,hostingEnabled:!!M0().controlplaneRestUrl&&!!M0().controlplaneServiceToken,hostingControlPlaneGa:M0().hostingControlPlaneGa,monitorEnabled:!!M0().clickhouseAnalyticsUrl&&!!M0().clickhouseAnalyticsPassword,monitorGa:M0().monitorGa,auth:_d$(),posthog:eA6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:a00()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Or$=Br$});function mc($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function JG1($){return(mc($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function wr$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(mc($))}&sz=${Z}`}function Lr$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function Er$($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?Lr$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):Lr$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as c0}from"zod";var Jb,$26,Z26,Q26,Y26,jr$;var zr$=D(()=>{Jb=c0.enum(["good","bad","neutral"]),$26=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:Jb.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),Z26=c0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},c0.array($26)),Q26={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},Y26=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:Jb.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:Jb.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:Jb.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:Jb.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(Z26).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:Jb.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:Jb.optional()})).min(1)})]),jr$=c0.object({...Q26,template:Y26})});function kq0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=jr$.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var GG1=D(()=>{zr$()});import{join as Pr$}from"path";async function J26($){try{let Z=await fetch(`${tK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(X26)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=kq0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||JG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function $G($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function G26($,Z){let Q=mc($),Y=Z?.brand?.trim()||JG1(Q),X=wr$(Q,128),G=`${(M0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Er$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${$G(W)}</title>`,`<meta name="description" content="${$G(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${$G(W)}" />`,`<meta property="og:description" content="${$G(K)}" />`,`<meta property="og:url" content="${$G(G)}" />`,`<meta property="og:image" content="${$G(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${$G(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${$G(W)}" />`,`<meta name="twitter:description" content="${$G(K)}" />`,`<meta name="twitter:image" content="${$G(H)}" />`,`<meta name="twitter:image:alt" content="${$G(F)}" />`,`<link rel="canonical" href="${$G(G)}" />`,`<link rel="icon" href="${$G(X)}" sizes="any" />`].join(`
|
|
2942
2942
|
`)}function W26($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
|
|
2943
2943
|
</head>`)}function Ar$($){let Z=new $1;return Z.get("/:domain/og.png",async(Q)=>{let Y=mc(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(Pr$($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${tK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(K26)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?Pr$($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await J26(mc(Y)),K=G26(Y,W);return Q.html(W26(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var X26=2500,K26=1e4;var Tr$=D(()=>{g$();GG1();qj();E$()});function i00($,Z){return fetch(`${tK({})}${$}`,Z)}async function H26($,Z,Q){let Y=new URLSearchParams;if(Z)Y.set("pw",Z);if(Q)Y.set("lang",Q);let X=Y.toString()?`?${Y.toString()}`:"",J=await i00(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=kq0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var F26,iN,Rr$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},qr$;var Ir$=D(()=>{g$();zJ();qj();GG1();F26=new Set(["complete","errored","terminated","unknown"]),iN=new $1;iN.use("*",async($,Z)=>{let Q=await Q8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});iN.use("/link-token/*",Rr$);iN.use("/suggest",Rr$);iN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await H26(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});iN.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await i00("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Rj({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});iN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await i00(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${Rj({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:F26.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});iN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await i00(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});iN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await i00(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});qr$=iN});import{createHmac as U26,timingSafeEqual as N26}from"crypto";function kr$($,Z,Q,Y=Date.now()){if(!Z||!Q)return!1;let X,J=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let U=H.slice(0,F).trim(),N=H.slice(F+1).trim();if(U==="t")X=N;else if(U==="v1")J.push(N)}if(!X||J.length===0)return!1;let G=Number(X);if(!Number.isFinite(G)||Math.abs(Y/1000-G)>B26)return!1;let W=U26("sha256",Q).update(`${X}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return J.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&N26(K,F)})}function Vr$($){let Z;try{Z=JSON.parse($)}catch{return null}let Q=T3(Z),Y=T3(T3(Q?.data)?.object);if(!Q||typeof Q.type!=="string"||!Y)return null;return{id:wF(Q.id),type:Q.type,created:typeof Q.created==="number"?Q.created:void 0,livemode:typeof Q.livemode==="boolean"?Q.livemode:void 0,data:{object:Y}}}function Sr$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function wF($){return typeof $==="string"?$:void 0}function T3($){return typeof $==="object"&&$!==null?$:void 0}function Vq0($){return typeof $==="number"?new Date($*1000):null}function HG1($){return wF($)??wF(T3($)?.id)}function O26($){return HG1($.subscription)??wF(T3(T3($.parent)?.subscription_details)?.subscription)}function D26($){let Z=Vq0($.current_period_end);if(Z)return Z;let Q=T3($.items)?.data;if(!Array.isArray(Q))return null;let Y=0;for(let X of Q){let J=T3(X)?.current_period_end;if(typeof J==="number"&&J>Y)Y=J}return Y>0?new Date(Y*1000):null}function WG1($,Z){let Q=Vq0($.created);return!!Q&&!!Z.lastStripeEventAt&&Q<Z.lastStripeEventAt}function KG1($,Z){let Q=Vq0($.created);if(!Q)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>Q?void 0:Q}async function L26($,Z){let Q=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Y=wF(T3(Q.metadata)?.orgId);if(!Y)return{handled:!1,reason:"no orgId"};if(wF(T3(Q.metadata)?.kind)==="topup"){if(Q.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(wF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let G=wF(Q.id);if(!G)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Y}),{handled:!1,reason:"topup session without id"};let W=Number(T3(Q.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Y,creditCents:T3(Q.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Y,topUp:{creditCents:W,referenceId:`stripe-topup:${G}`}}}if(Q.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(wF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let X=await $.getBilling(Y);if(!X)return{handled:!1,reason:"unknown org"};let J=HG1(Q.subscription);if(X.stripeSubscriptionId&&J&&X.stripeSubscriptionId!==J)return console.error("stripe webhook: refused checkout rebind",{organizationId:Y,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:J};if(WG1(Z,X))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y,{stripeCustomerId:HG1(Q.customer),stripeSubscriptionId:J,status:"active",lastStripeEventAt:KG1(Z,X)}),{handled:!0,organizationId:Y}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Y=wF(Q.id);if(!Y)return{handled:!1,reason:"no sub id"};let X=await $.getBillingByStripeSubscriptionId(Y);if(!X)return{handled:!1,reason:"unknown subscription"};let J=Z.type==="customer.subscription.deleted";if(!J&&WG1(Z,X))return{handled:!1,reason:"stale event"};let G=J?"canceled":Sr$(Q.status);return await $.updateStripeState(X.organizationId,{status:G,currentPeriodEnd:D26(Q),...J&&{stripeSubscriptionId:null},lastStripeEventAt:KG1(Z,X)}),{handled:!0,organizationId:X.organizationId}}case"invoice.paid":{let Y=O26(Q);if(!Y)return{handled:!1,reason:"no sub id"};let X=await $.getBillingByStripeSubscriptionId(Y);if(!X)return{handled:!1,reason:"unknown subscription"};if(WG1(Z,X))return{handled:!1,reason:"stale event"};return await $.updateStripeState(X.organizationId,{status:"active",currentPeriodEnd:Vq0(Q.period_end),lastStripeEventAt:KG1(Z,X)}),{handled:!0,organizationId:X.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function w26($,Z){if(!Z.handled||$.livemode===!1)return null;let Q=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Sr$(Q.status),...typeof Q.cancel_at_period_end==="boolean"?{cancel_at_period_end:Q.cancel_at_period_end}:{}}};case"invoice.paid":if(Q.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Mr$($,Z){let Q=w26($,Z);if(!Q)return;NJ({event:Q.name,organizationId:Q.organizationId,...$.id?{uuid:va1(`stripe:${$.id}:${Q.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:Q.properties})}async function Cr$($){let Z=new mK(Z8().db),Q=await L26(Z,$);if(!(Q.handled&&Q.topUp))Mr$($,Q);if(Q.handled&&Q.topUp)await aT$({organizationId:Q.organizationId,amountCents:Q.topUp.creditCents,referenceId:Q.topUp.referenceId}),Mr$($,Q);if(!Q.handled&&Q.orphanSubscriptionId)try{await r4$(Q.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:Q.orphanSubscriptionId,eventId:$.id})}catch(Y){if(!(Y instanceof PJ&&(Y.status===400||Y.status===404)))throw Y}return Q}var B26=300;var _r$=D(()=>{bG();V4();eZ0();tj();Z61()});var E26=1048576,FG1;var vr$=D(()=>{g$();XK();E$();_r$();FG1=new $1;FG1.post("/webhook",v5({maxSize:E26,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=M0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!kr$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=Vr$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await Cr$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as j26}from"crypto";function A26($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return j26(Buffer.from(X),Buffer.from(Y))}function T26($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function fr$($){let Z=new $1;return Z.post("/webhook",v5({maxSize:z26,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!A26(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!P26.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});let N=(await Mr0())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=T26(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await R26($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function R26($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await VD$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var z26=5242880,P26;var br$=D(()=>{g$();XK();RW();IZ();P26=new Set(["check_suite","issue_comment"])});function xr$($){let Z=new _N($.db,new XY($.encryptionKey)),Q=new $1;return Q.get("/attachments/:token",async(Y)=>{let X=oB$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new gJ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var yr$=D(()=>{g$();xB();ua0();Wv()});function gr$($){let Z=new _N($.db,new XY($.encryptionKey));async function Q(X,J){let G=Cx$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await _H($.db,W.organizationId);if(!K)return;if(await BT0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new $1;return Y.post("/webhook/:secret",v5({maxSize:q26}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var q26=1048576;var hr$=D(()=>{g$();XK();xB();OT0();Uu()});import{DBOS as Sq0,SchedulerMode as I26}from"@dbos-inc/dbos-sdk";function lr$($){NG1=$}function cr$(){if(!NG1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return NG1}function dr$(){let $=cr$();return new _N($.db,new XY($.encryptionKey))}async function V26($,Z){try{let Q=await dr$().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await _H(cr$().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new gJ(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${ur$}m"`,K=0,H;for(let F=0;F<k26;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=_x$(N,N.changelog?.histories??[],Z);for(let O of B)if(await BT0(Y,Q,O)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function S26($,Z){let Q=new Date($.getTime()-ur$*60000),Y=await Sq0.runStep(()=>dr$().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>Sq0.runStep(()=>V26(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function mr$(){if(UG1)return;UG1=Sq0.registerWorkflow(S26,{name:"jiraTriggerSweepWorkflow"}),Sq0.registerScheduled(UG1,{name:"jiraTriggerSweepWorkflow",crontab:M26,mode:I26.ExactlyOncePerIntervalWhenActive})}var M26="7-59/10 * * * *",ur$=15,k26=5,NG1=null,UG1=null;var ir$=D(()=>{xB();Uu();Wv();OT0()});function pr$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var nr$,C26,_26,tr$;var or$=D(()=>{g$();JW();Du();vj();nr$=new $1,C26=["range","if-none-match","if-modified-since"],_26=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];nr$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Nc($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Y$(401,{message:"Authentication required"})}if(!Q)throw new Y$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new Y$(400,{message:"Missing file key"});let X=await br(Y,Z);if(!X)throw new Y$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&$X()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Y$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return pr$(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of C26){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new Y$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new Y$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of _26){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),pr$(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});tr$=nr$});var p00=_((Gb)=>{var v26=Gb&&Gb.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),f26=Gb&&Gb.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))v26(Z,$,Q)};Object.defineProperty(Gb,"__esModule",{value:!0});f26(oX(),Gb)});var ar$=_((rr$)=>{Object.defineProperty(rr$,"__esModule",{value:!0});rr$.version=void 0;rr$.version="3.4.0"});var Zs$=_((EF)=>{var b26=EF&&EF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(EF,"__esModule",{value:!0});EF.NodeTransport=EF.VERSION=void 0;EF.nodeResolveHost=l26;var W5=p00(),x26=z0("net"),BG1=z0("tls"),y26=z0("path"),er$=z0("fs"),g26=b26(z0("dns")),h26=ar$();EF.VERSION=h26.version;var u26="nats.js";class $s${socket;version;lang;yields=[];signal=(0,W5.deferred)();closedNotification=(0,W5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=u26,this.version=EF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,W5.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw W5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new W5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new W5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,W5.deferred)(),Q,Y=(0,x26.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,W5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=W5.DataBuffer.concat(...this.yields),X=(0,W5.extractProtocolMessage)(Y);if(X!=="")try{let J=W5.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,W5.deferred)();try{if($=(0,y26.resolve)($),!(0,er$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,er$.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,W5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new W5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,W5.deferred)();try{let X=(0,BG1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new W5.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,W5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new W5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,W5.deferred)();try{let Y=(0,BG1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new W5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,W5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,W5.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof BG1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,W5.render)($)}`);let Z=(0,W5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,W5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,W5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}EF.NodeTransport=$s$;function l26($){let Z=(0,W5.deferred)();return g26.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var Gs$=_((Js$)=>{Object.defineProperty(Js$,"__esModule",{value:!0});Js$.connect=c26;var Qs$=Zs$(),Ys$=p00(),Xs$=p00();function c26($={}){if((0,Xs$.hasWsProtocol)($))return Promise.reject(Xs$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Ys$.setTransportFactory)({factory:()=>{return new Qs$.NodeTransport},dnsResolveFn:Qs$.nodeResolveHost}),Ys$.NatsConnectionImpl.connect($)}});var Ws$=_((pN)=>{var m26=pN&&pN.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),i26=pN&&pN.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))m26(Z,$,Q)};Object.defineProperty(pN,"__esModule",{value:!0});pN.connect=void 0;var p26=Gs$();Object.defineProperty(pN,"connect",{enumerable:!0,get:function(){return p26.connect}});i26(p00(),pN)});function Us$($){let Z=$?.connectFn??r26,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let O=0;while(!J)try{Q=await Z({servers:N,timeout:o26,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{O++;let L=U7(t26,n26,O-1,2,0.5);await z$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let O=B?.creds?Ks$.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=Fs$.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function r26($){return Hs$.connect($)}var Ks$,Hs$,Fs$,n26=100,t26=3000,o26=3000;var Ns$=D(()=>{G8();Ks$=V(Dd(),1),Hs$=V(Ws$(),1),Fs$=V(kF(),1)});function OG1($,Z){return`${$}.${Z}`}class DG1{cache;constructor($){this.cache=Zc({ttlMs:$?.ttlMs??s26,maxSize:$?.maxSize??a26})}async get($,Z){return this.cache.get(OG1($,Z))??null}async set($,Z,Q){this.cache.set(OG1($,Z),Q)}async invalidate($,Z){this.cache.delete(OG1($,Z))}teardown(){this.cache.clear()}}var s26=600000,a26=5000;var Bs$=()=>{};function Cq0($,Z){return`${$}:${Z}`}function LG1($){let Z=Zc({ttlMs:$?.ttlMs??e26,maxSize:$?.maxSize??$T6}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(Os$,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(Cq0(K,H))},set(K,H,F){Z.set(Cq0(K,H),F)},invalidate(K,H){Z.delete(Cq0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(Os$),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(Cq0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var Os$="studio.ai-provider-keys.invalidate",e26=30000,$T6=5000;var Ds$=()=>{};class wG1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var Ls$=($)=>{let Z;return()=>Z??=$()},EG1,jG1;var ws$=D(()=>{X6();EG1=Ls$(()=>Z$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),jG1=Ls$(()=>Z$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function WT6($=zs$){return{name:hH,subjects:[`${F11}.>`],storage:WK.StorageType.File,max_age:YT6,max_bytes:JT6,max_msgs_per_subject:GT6,discard:WK.DiscardPolicy.Old,retention:WK.RetentionPolicy.Limits,duplicate_window:XT6,num_replicas:$}}class Ps${chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function Es$($){let Z=js$.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function UT6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,QT6().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function NT6($,Z){return $.info?.cluster?Z:1}function BT6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class zG1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Y,X)=>{let J=WT6(X);try{await Y.streams.info(hH),await Y.streams.update(hH,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(hH,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(hH),await Y.streams.add(J);else throw G}},Q=await b8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await WK.jetstreamManager($),X=NT6($,zs$);try{await Z(Y,X)}catch(J){if(X<=1||!BT6(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Iu});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=UT6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=uj$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=N11(H,{runId:Z}),N=performance.now()-F;EG1().record(N),jG1().add(1,{"org.id":Y??"unknown"}),FT6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?Es$(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),HT6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await b8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Es$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Iu}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=N11(Z,{runId:$,dedup:Q});EG1().record(performance.now()-X),jG1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=hj$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?WK.DeliverPolicy.New:WK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=DL($),W;try{W=await b8(async()=>{return(await Y.consumers.get(hH,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Iu})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=sj0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(nj0()).pipeThrough(tj0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:E}=await F.read();if(w){O(),L.close();return}let j=E;if(j.kind==="done"){if(J){O(),L.close();return}continue}L.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(hH,{filter:DL($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var WK,js$,ZT6=($)=>{let Z;return()=>Z??=$()},QT6,YT6=86400000000000,XT6=120000000000,JT6=4294967296,zs$,GT6=500000,KT6,HT6,FT6;var As$=D(()=>{G8();B11();aj0();oj0();X6();ws$();WK=V(kF(),1),js$=V(Dd(),1),QT6=ZT6(()=>Z$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),zs$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);KT6=process.env.STREAM_ENCODE_TRACE==="1",HT6=process.env.DECOPILOT_STREAM_TRACE==="1";FT6=KT6?new Ps$:null});function _q0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,MK(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var Ts$=D(()=>{V8()});class PG1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function OT6($,Z){let Q=$.startsWith("thread:")?qW($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function Rs$($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await jH($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await _h($,{threadId:X,runBranch:G?.branch}),K=OT6(W,await Fw0($,X)),H=await rt($,Q,Zt0(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await eG(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var qs$=D(()=>{sZ();nG();IZ()});async function Is$($,Z,Q){let Y=Z.organizationId;if(!RX(Z))return!1;if(!Bv(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=GH(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await S6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),H8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var Ms$=D(()=>{j4();VQ();Hu();bW();X9()});function PT6($){return $ instanceof wY}function AT6($,Z){return Z-$>=jT6}class AG1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??DT6;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??wT6,Q=this.options.itemIntervalMs??LT6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-fa0),pe0);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-zT6));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await de0(this.taskBoard,X,Y),await me0(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==A$.progress||G.assigneeId!==n$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await xW(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),PT6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+ET6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==A$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),H8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!AT6(kU(Q,Z.reviewCycleStartedAt),Date.now()))return;await SH($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!RX(Y))return!1;let X=Y.assigneeId===n$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await Rs$(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await Nu(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await Is$(G,Y,W))return!0;if(await Sz$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!he0(W))return!1;return await Yj0(G,Y,{previewMatchesHead:ue0(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await WL($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var DT6=60000,LT6=300000,wT6=50,ET6=60000,jT6=900000,zT6=120000;var ks$=D(()=>{j4();Me0();qs$();CH();Zs();bW();Ms$();X9();cG();ne0();IZ();Cr();Fu()});import{readdir as TT6,rm as vq0}from"fs/promises";import{join as fq0}from"path";async function bq0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-RT6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Wb($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await Vs$($,X,Z);else if(!X.startsWith(".")){let J=fq0($,X),G=await Wb(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await Vs$(J,K,Z)}if((await Wb(J)).length===0)await vq0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function Vs$($,Z,Q){let Y=0,X=fq0($,Z),J=await Wb(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=fq0(X,W),H=await Wb(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=fq0(K,U);await vq0(B,{recursive:!0,force:!0}),Y++}}if((await Wb(K)).length===0)await vq0(K,{recursive:!0,force:!0})}if((await Wb(X)).length===0)await vq0(X,{recursive:!0,force:!0});return Y}async function Wb($){try{return(await TT6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var RT6=30;var TG1=()=>{};import{DBOS as RG1,SchedulerMode as qT6}from"@dbos-inc/dbos-sdk";async function MT6(){let $=[R3(),Kb(),PF()],Z=0;for(let Q of $)try{Z+=await bq0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function kT6($,Z){await RG1.runStep(()=>MT6(),{name:"monitoringRetention"})}function Cs$(){if(Ss$)return;Ss$=!0;let $=RG1.registerWorkflow(kT6,{name:"monitoringRetentionWorkflow"});RG1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:IT6,mode:qT6.ExactlyOncePerIntervalWhenActive})}var IT6="23 4 * * *",Ss$=!1;var _s$=D(()=>{GG();TG1()});function vs$($){return async(Z,Q)=>{let Y=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await v7.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await gj($.db,Z,Y.role);return X.boundAuth=UY1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new LE(Q,void 0,X.boundAuth,Y.role,"self"),KL(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var fs$=D(()=>{JU();ZH()});function VT6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ST6(){return{services:VT6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function _T6(){for(let $ of CT6)$()}function bs$($){let Z=[...qG1.logs,$];qG1={...qG1,logs:Z.length>500?Z.slice(-500):Z},_T6()}function IG1(){return vT6}var qG1,CT6,vT6=!1;var MG1=D(()=>{qG1=ST6(),CT6=new Set});import{EventEmitter as fT6}from"events";var kG1;var xs$=D(()=>{MG1();kG1=new fT6;kG1.on("request",($)=>{bs$($)})});function ys$(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=ic(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((E)=>ic(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${w5.tool}${B}${w5.dim}(${w})${w5.reset}`}else if(N.method)J=`${w5.dim}${ic(N.method)}${w5.reset}`}}catch{}}let W=ic(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${w5.mcp}${ic(F.slice(0,12))}\u2026${w5.reset}`}else if(X==="/mcp")W=`${w5.mcp}/mcp${w5.reset}`;else if(X==="/mcp/registry")W=`${w5.mcp}/mcp/registry${w5.reset}`;let K=xT6(Y),H=G?"\u25C0":"\u2190";if(!IG1())console.log(`${w5.dim}${H}${w5.reset} ${K}${Y}${w5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=bT6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!IG1())console.log(`${w5.dim}${O}${w5.reset} ${K}${Y}${w5.reset} ${W}${J?` ${J}`:""} ${N}${U}${w5.reset} ${w5.duration}${B}${w5.reset}`);kG1.emit("request",{method:Y,path:ic(X),status:U,duration:F,timestamp:new Date})}}}var w5,bT6=($)=>{if($>=500)return w5.serverError;if($>=400)return w5.clientError;if($>=300)return w5.redirect;return w5.ok},xT6=($)=>{return w5[$]||w5.reset},ic=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var gs$=D(()=>{MG1();xs$();w5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as cs$}from"crypto";import{mkdir as yT6,readdir as gT6,rm as hs$,stat as ds$}from"fs/promises";import{join as SG1,relative as hT6}from"path";import{z as k$}from"zod";function is$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return SG1(uT6,Z)}function ps$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function VG1($,Z){let Q=is$($),Y=ps$(Z);return SG1(Q,Y)}function lT6($,Z,Q,Y){let X=M0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return cs$("sha256",X).update(J).digest("hex")}function ls$($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=lT6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${ps$(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function ns$($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${cs$("md5","etag").update(Y).digest("hex")}"`}async function ts$($,Z,Q,Y,X){try{let J=await gT6($,{withFileTypes:!0});for(let G of J){let W=SG1($,G.name),H=hT6(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await ts$(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await ds$(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:ns$(W,F.mtime,F.size)})}catch{}}}}catch{}}function os$($,Z){let Y=p($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:k$.object({prefix:k$.string().optional(),maxKeys:k$.number().optional().default(1000),continuationToken:k$.string().optional(),delimiter:k$.string().optional()}),outputSchema:k$.object({objects:k$.array(k$.object({key:k$.string(),size:k$.number(),lastModified:k$.string(),etag:k$.string()})),nextContinuationToken:k$.string().optional(),isTruncated:k$.boolean(),commonPrefixes:k$.array(k$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=is$(Y);await yT6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await ts$(F,F,G,K,U),U.objects.sort((w,E)=>w.key.localeCompare(E.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),O=N+W<U.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:k$.object({key:k$.string()}),outputSchema:k$.object({contentType:k$.string().optional(),contentLength:k$.number(),lastModified:k$.string(),etag:k$.string(),metadata:k$.record(k$.string(),k$.string()).optional()}),handler:async(X)=>{let J=X,G=VG1(Y,J.key),W=await ds$(G);return{contentType:YX1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:ns$(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:k$.object({key:k$.string(),expiresIn:k$.number().optional()}),outputSchema:k$.object({url:k$.string(),expiresIn:k$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??us$;return{url:ls$(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:k$.object({key:k$.string(),expiresIn:k$.number().optional(),contentType:k$.string().optional()}),outputSchema:k$.object({url:k$.string(),expiresIn:k$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??us$;return{url:ls$(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:k$.object({key:k$.string()}),outputSchema:k$.object({success:k$.boolean(),key:k$.string()}),handler:async(X)=>{let J=X,G=VG1(Y,J.key);try{return await hs$(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:k$.object({keys:k$.array(k$.string()).max(1000)}),outputSchema:k$.object({deleted:k$.array(k$.string()),errors:k$.array(k$.object({key:k$.string(),message:k$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=VG1(Y,K);try{await hs$(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function CG1($,Z,Q){let Y=os$(Z,Q),X=new bK({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:T5});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:k$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:k$.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new MY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),W3(X,J,$,"mcp:dev-assets")}async function rs$($,Z,Q,Y){let J=os$(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var uT6="./data/assets",us$=3600,ms$,ss$;var as$=D(()=>{E$();Cu();g$();ui();lv();HQ();MR0();ms$=new $1;ms$.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return CG1($.req.raw,Z,Y)});ss$=ms$});var es$={};T4(es$,{mountDevRoutes:()=>cT6});function cT6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return CG1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await rs$(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",ss$);let Q=new $1;Q.use("*",JK({mountPath:"/api/dev-assets"})),Q.route("/",IR0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var $a$=D(()=>{g$();rY1();MR0();as$()});import{sql as dT6}from"kysely";import{randomUUID as Za$}from"crypto";import{z as mT6}from"zod";async function pT6($){let Z=new Date().toISOString(),Q=Za$(),Y=h8.SELF($.organizationId),X="registry.publish_request.created",J={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(J),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let G=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Y)])).execute();if(G.length>0)await $.db.insertInto("event_deliveries").values(G.map((W)=>({id:Za$(),event_id:Q,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await dT6`SELECT
|
|
2944
2944
|
pg_notify('studio_events', ${Q}),
|