decocms 3.75.0 → 3.75.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-gDIRb30q.js → AlertCircle-CNubGDaO.js} +1 -1
- package/dist/client/assets/{ArrowRight-DOrox7OR.js → ArrowRight-xN7BW_ul.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-DUpL9CZ2.js → ArrowUpRight-D3CKRkTo.js} +1 -1
- package/dist/client/assets/{Check-Cm33WeVI.js → Check-DU5rb3bM.js} +1 -1
- package/dist/client/assets/{CheckCircle-n1UVh1rp.js → CheckCircle-BSoYnn-I.js} +1 -1
- package/dist/client/assets/{ChevronDown-B1p7gEgu.js → ChevronDown-TvYn-OY4.js} +1 -1
- package/dist/client/assets/{ChevronLeft-mGN37yAj.js → ChevronLeft-BTipE5Wt.js} +1 -1
- package/dist/client/assets/{ChevronRight-BaLK8W40.js → ChevronRight-VbCUQ4nm.js} +1 -1
- package/dist/client/assets/{ChevronUp-DGOcvlL6.js → ChevronUp-CE5JDW17.js} +1 -1
- package/dist/client/assets/{DotsVertical-CnMx95BE.js → DotsVertical-C3vJLOIx.js} +1 -1
- package/dist/client/assets/{Eye-zZDQDA3a.js → Eye-C2MUknhG.js} +1 -1
- package/dist/client/assets/{FilterLines-Dl8wSr4T.js → FilterLines-C44nyj1e.js} +1 -1
- package/dist/client/assets/{Globe01-BLm5QG5d.js → Globe01-DF9LBrGV.js} +1 -1
- package/dist/client/assets/{Globe04-C-LVP6qx.js → Globe04-DiSYAA-c.js} +1 -1
- package/dist/client/assets/{HardDrive-m2RrTwEL.js → HardDrive-d3IntPKl.js} +1 -1
- package/dist/client/assets/{Key01-RXyewMb-.js → Key01-DoBeqbsw.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BdoPIgTz.js → LayoutLeft-yX6ZaEXM.js} +1 -1
- package/dist/client/assets/{LinkExternal01-D8bSh32s.js → LinkExternal01-BzrXa1Dk.js} +1 -1
- package/dist/client/assets/{Monitor01-BCz40A5M.js → Monitor01-B4R66HFG.js} +1 -1
- package/dist/client/assets/{Palette-wtl4QkBp.js → Palette-CZf9xPYO.js} +1 -1
- package/dist/client/assets/{Play-DDTUl1uH.js → Play-Bh8sfYwM.js} +1 -1
- package/dist/client/assets/{Plus-CVwFP0PN.js → Plus-BoROENfr.js} +1 -1
- package/dist/client/assets/{SearchMd-BW7euwEe.js → SearchMd-BfPMpih2.js} +1 -1
- package/dist/client/assets/{Settings02-iz5Ayf9j.js → Settings02-DBLsMPef.js} +1 -1
- package/dist/client/assets/{Shield01-BCu1IdE0.js → Shield01-CTNl8Ar6.js} +1 -1
- package/dist/client/assets/{Star01-DCpmC1j3.js → Star01-BFLcGuw1.js} +1 -1
- package/dist/client/assets/{Stars01-BRfLDHl4.js → Stars01-CHs_UD1n.js} +1 -1
- package/dist/client/assets/{Stars02-Bzgbk92-.js → Stars02-BJLb-WgL.js} +1 -1
- package/dist/client/assets/{Sun-C8DHOjPt.js → Sun-BZGkPKkt.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CfRV3USq.js → SwitchHorizontal01-Dtng_RoY.js} +1 -1
- package/dist/client/assets/{Tool01-B5EFkWYb.js → Tool01-lXuB6RrN.js} +1 -1
- package/dist/client/assets/{Trash01-pGyZZZg3.js → Trash01-DXfifcH2.js} +1 -1
- package/dist/client/assets/{Upload01-CO717o9q.js → Upload01-D3BizWvA.js} +1 -1
- package/dist/client/assets/{User01-BsJPatkI.js → User01-DJp_IeHl.js} +1 -1
- package/dist/client/assets/{Users01-BxvSAjH8.js → Users01-Cd5fFCG3.js} +1 -1
- package/dist/client/assets/{Users03-CIlsRKUq.js → Users03-DBhmjqg-.js} +1 -1
- package/dist/client/assets/{X-CZpN5x6J.js → X-Cb9V7Mmc.js} +1 -1
- package/dist/client/assets/{XCircle-DVQX_ogU.js → XCircle-D1bMGooP.js} +1 -1
- package/dist/client/assets/{XClose-C6AbPQFS.js → XClose-C-OqIzD0.js} +1 -1
- package/dist/client/assets/{Zap-DG9_RSXd.js → Zap-fD2sTtVx.js} +1 -1
- package/dist/client/assets/{ZapSquare-BTnHHxm_.js → ZapSquare-CQngmi94.js} +1 -1
- package/dist/client/assets/{ZoomOut-CZ4ld1AP.js → ZoomOut-btgvbLfz.js} +1 -1
- package/dist/client/assets/{access-gate-D9-CVWiV.js → access-gate-DopFOivn.js} +1 -1
- package/dist/client/assets/{add-section-modal-CP1B07W5.js → add-section-modal-DaW89V0L.js} +1 -1
- package/dist/client/assets/{agent-icon-B9d-96TZ.js → agent-icon-Dt9gAenf.js} +1 -1
- package/dist/client/assets/{agents-list-BRtDsLop.js → agents-list-DJqTtRwj.js} +1 -1
- package/dist/client/assets/{ai-providers-DW6wb4_w.js → ai-providers-Dt9ZC4ot.js} +1 -1
- package/dist/client/assets/{alert-6Fct2Yfh.js → alert-BEVgn7Ey.js} +1 -1
- package/dist/client/assets/{alert-dialog-BNLt3lQD.js → alert-dialog-BI0HtITQ.js} +1 -1
- package/dist/client/assets/{app-editor-CnPsZtOc.js → app-editor-NI3cJ7Tq.js} +1 -1
- package/dist/client/assets/{auth-4W_EFEAm.js → auth-B4gmwlqe.js} +1 -1
- package/dist/client/assets/{auth-catchall-FBHQyT3w.js → auth-catchall-BQbd477s.js} +1 -1
- package/dist/client/assets/{auth-entry-CatFRWPl.js → auth-entry-ChG4AH7U.js} +1 -1
- package/dist/client/assets/{auth-split-layout-Qbd_XkxB.js → auth-split-layout-DCJj8VSe.js} +1 -1
- package/dist/client/assets/{automation-list-row-DoJkgDgr.js → automation-list-row-DppLBhCt.js} +1 -1
- package/dist/client/assets/{automation-runs-CUFxzmfV.js → automation-runs-5dSIKSAM.js} +1 -1
- package/dist/client/assets/{automations-CabohE9a.js → automations-Ci91R3wv.js} +1 -1
- package/dist/client/assets/{avatar-P-4FtMAp.js → avatar-fJAHQTnV.js} +1 -1
- package/dist/client/assets/{badge-CA2aw-nf.js → badge-_YKQKI_5.js} +1 -1
- package/dist/client/assets/{block-document-DBOLBUl9.js → block-document-CsRe6WAh.js} +1 -1
- package/dist/client/assets/{brand-context-DUqDv9rb.js → brand-context-DDDXyCcm.js} +1 -1
- package/dist/client/assets/{buckets-CZzli-pv.js → buckets-DFAe7O6M.js} +1 -1
- package/dist/client/assets/{calendar-txHWMXIT.js → calendar-DNMnej2k.js} +1 -1
- package/dist/client/assets/{capability-load-error-DR1p6bTx.js → capability-load-error-6WyfjcJj.js} +1 -1
- package/dist/client/assets/{card-B2iG-uof.js → card--NKS06Go.js} +1 -1
- package/dist/client/assets/category-editor-BSYT0S7j.js +1 -0
- package/dist/client/assets/{chat-context-rlOQNE59.js → chat-context-BBXOT296.js} +1 -1
- package/dist/client/assets/{checkbox-BA_77XLZ.js → checkbox-DioyTT5K.js} +1 -1
- package/dist/client/assets/{cli-auth-success-ma7E5wYX.js → cli-auth-success-CyURtcqJ.js} +1 -1
- package/dist/client/assets/{collection-detail-CS3p9M1R.js → collection-detail-DmymJ-oX.js} +1 -1
- package/dist/client/assets/{collection-display-button-Dj5uDvuS.js → collection-display-button-Cd9myrh7.js} +1 -1
- package/dist/client/assets/{collection-search-_6FIA0Xj.js → collection-search-BZq7gbHk.js} +1 -1
- package/dist/client/assets/{collection-tabs-DwMsWo9f.js → collection-tabs-D6OcWh8j.js} +1 -1
- package/dist/client/assets/{command-B27wsER9.js → command-C8wmQ_e6.js} +1 -1
- package/dist/client/assets/commerce-onboarding-nmWmtHC4.js +1 -0
- package/dist/client/assets/{connect-desktop-dialog-GQLUi7li.js → connect-desktop-dialog-DdSa47RX.js} +1 -1
- package/dist/client/assets/{connection-card-CX1DS71u.js → connection-card-Bk1hBg4j.js} +1 -1
- package/dist/client/assets/{connection-detail-DqcnMDO-.js → connection-detail-Bx3dAqUw.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-CBjQkddI.js → connection-form-helpers-B5KjXNd0.js} +1 -1
- package/dist/client/assets/{connections-F_I9_qJr.js → connections-CQD6YxIa.js} +1 -1
- package/dist/client/assets/{context-menu-BpgQstIM.js → context-menu-gCK6_paD.js} +1 -1
- package/dist/client/assets/{decopilot-FgrFF7Fp.js → decopilot-B0LSd6zj.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-DMpx5_Wv.js → decopilot-sse-pool-Dr6zLVju.js} +1 -1
- package/dist/client/assets/{dialog-K6fUF2ve.js → dialog-oTR0pyLu.js} +1 -1
- package/dist/client/assets/{domain-settings-C3FHyjrg.js → domain-settings-D1RYSSaH.js} +1 -1
- package/dist/client/assets/{drawer-Co3WWFC1.js → drawer-CQ737j09.js} +1 -1
- package/dist/client/assets/{dropdown-menu-5W_sgZVH.js → dropdown-menu-C8krdQDA.js} +1 -1
- package/dist/client/assets/{empty-state-CO4a25-j.js → empty-state-2-TuTLZO.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DZucvYfU.js → extract-connection-data-CoqC381t.js} +1 -1
- package/dist/client/assets/{file-explorer-CqPeyiCF.js → file-explorer-D_emiMhz.js} +1 -1
- package/dist/client/assets/{file-type-icon-BZQ5R-XM.js → file-type-icon-0w6lWLwV.js} +1 -1
- package/dist/client/assets/{files-BDxHO9pY.js → files-DgtpUNqB.js} +1 -1
- package/dist/client/assets/{form-BjMnGj6X.js → form-BagRiauK.js} +1 -1
- package/dist/client/assets/{general-BBlcQ-ht.js → general-u65O_ulZ.js} +1 -1
- package/dist/client/assets/{github-repo-picker-_k79qN8r.js → github-repo-picker-BPZlnUfE.js} +1 -1
- package/dist/client/assets/{hooks-D6XuBBC6.js → hooks-CxzPycJ_.js} +1 -1
- package/dist/client/assets/{image-field-BmdkZbCY.js → image-field-MuguRJgc.js} +1 -1
- package/dist/client/assets/{import-from-deco-dialog-OGhtcz0k.js → import-from-deco-dialog-UI3dH-Hl.js} +1 -1
- package/dist/client/assets/{index-4DFLhyGP.js → index-4QUVw0pj.js} +1 -1
- package/dist/client/assets/{index-5wLfHEXe.js → index-BIs9Ud-n.js} +1 -1
- package/dist/client/assets/{index-O7bXn1ca.js → index-BarrImOK.js} +1 -1
- package/dist/client/assets/{index-D1GDu3f0.js → index-BkjLb3UM.js} +1 -1
- package/dist/client/assets/{index-C_oukb-6.js → index-ByF5bntS.js} +3 -3
- package/dist/client/assets/{index-Dq7zL7ft.js → index-CDiti927.js} +1 -1
- package/dist/client/assets/{index-okWbIZy5.js → index-CZhEygsx.js} +4 -4
- package/dist/client/assets/{index-Czglk-CY.js → index-CbbSoEZK.js} +1 -1
- package/dist/client/assets/index-Ccsp4bJ3.js +3 -0
- package/dist/client/assets/{index-_4NX_Yew.js → index-D2SAtRXJ.js} +1 -1
- package/dist/client/assets/{index-CJD5j0F7.js → index-DIdWimus.js} +1 -1
- package/dist/client/assets/{index-dPL3Unnh.js → index-DaQLp-vp.js} +1 -1
- package/dist/client/assets/{index-MKNwh3Ag.js → index-aZUbmonm.js} +1 -1
- package/dist/client/assets/{index-redirect-DIsWHj9i.js → index-redirect-BihaLwOx.js} +1 -1
- package/dist/client/assets/{index-B-GcMgWE.js → index-vZmzAO4E.js} +1 -1
- package/dist/client/assets/{input-D5W2abuH.js → input-BbFJIfNw.js} +1 -1
- package/dist/client/assets/{integration-icon-CRb2USX8.js → integration-icon-CnsCd0E7.js} +1 -1
- package/dist/client/assets/{label-BElDaZMn.js → label-BMmTnqcN.js} +1 -1
- package/dist/client/assets/{login-DlGbre6S.js → login-BgMVzBys.js} +1 -1
- package/dist/client/assets/{mcp-oauth-C0C6iyUr.js → mcp-oauth-Bz-VdP7D.js} +1 -1
- package/dist/client/assets/{members-DANdG_qT.js → members-DR6dSQyU.js} +1 -1
- package/dist/client/assets/{monaco-editor-qyEj4EXj.js → monaco-editor-ESNgwP--.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-ClqdPUY_.js → monitoring-stats-row-kDhyNhF-.js} +1 -1
- package/dist/client/assets/{oauth-callback-BnZw5lf7.js → oauth-callback-BOzxigzA.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BDfsvj3N.js → oauth-callback-ai-provider-C5MfgzuH.js} +1 -1
- package/dist/client/assets/{onboarding-Bhh2Gfr7.js → onboarding-JGOf00z4.js} +1 -1
- package/dist/client/assets/{org-install-CLKcwFC7.js → org-install-DxVgzR1j.js} +1 -1
- package/dist/client/assets/{org-layout-BtwB1Yd_.js → org-layout-UNAnU3dA.js} +1 -1
- package/dist/client/assets/{organization-choice-Utx7V6Tf.js → organization-choice-U7SIyZLD.js} +1 -1
- package/dist/client/assets/{page-seo-form-IyeHzt0x.js → page-seo-form-DDmJ7WM7.js} +1 -1
- package/dist/client/assets/page-seo-sheet-tAzLcu1B.js +1 -0
- package/dist/client/assets/{popover-DrmoScrz.js → popover-CbGGQiRT.js} +1 -1
- package/dist/client/assets/{post-editor-85T1iDhM.js → post-editor-EFJORDJS.js} +1 -1
- package/dist/client/assets/{preview-dialog-BtBeOlGc.js → preview-dialog-C6JG48B-.js} +1 -1
- package/dist/client/assets/{primitives-CyAmXJ6r.js → primitives-CmNGaFLq.js} +1 -1
- package/dist/client/assets/{profile-BZvBJZHl.js → profile-DeZ6t4-R.js} +1 -1
- package/dist/client/assets/project-app-view-lTLFjkpn.js +1 -0
- package/dist/client/assets/record-editor-cDeH3Vh6.js +1 -0
- package/dist/client/assets/registry-BuM4iuit.js +2 -0
- package/dist/client/assets/{registry-layout-Blav6YiD.js → registry-layout-EyoNoFU9.js} +1 -1
- package/dist/client/assets/{require-capability-rNA3gn0T.js → require-capability-BTWSjjcL.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DKqkYrYg.js → required-auth-layout-nQU7linn.js} +1 -1
- package/dist/client/assets/{reset-password-B9qOkXzA.js → reset-password-BPJYUgtU.js} +1 -1
- package/dist/client/assets/{roles-B0IO3W8R.js → roles-D2UJQdT5.js} +1 -1
- package/dist/client/assets/save-referenced-block-Cz8Q3CB5.js +1 -0
- package/dist/client/assets/{save-status-BGoLsugG.js → save-status-B0qeonp0.js} +1 -1
- package/dist/client/assets/{schema-form-AuQQIbwO.js → schema-form-C3xSIHrW.js} +1 -1
- package/dist/client/assets/{scroll-area-DU0ESQct.js → scroll-area-B8ItTjhW.js} +1 -1
- package/dist/client/assets/{search-input-CQDoT-2H.js → search-input-CdLueOhF.js} +1 -1
- package/dist/client/assets/{secrets-Bt7g_eL6.js → secrets-CJIvH6yN.js} +1 -1
- package/dist/client/assets/{sections-editor-C5D7KMRv.js → sections-editor-D8owzXB3.js} +1 -1
- package/dist/client/assets/{select-CWgv_m_K.js → select-Bo6CrzVw.js} +1 -1
- package/dist/client/assets/{select-model-BbKGRdYy.js → select-model-ppX7sHfC.js} +1 -1
- package/dist/client/assets/{seo-editor-B__Haa2P.js → seo-editor-0xmY1Z00.js} +1 -1
- package/dist/client/assets/{settings-layout-DCyMU3DC.js → settings-layout-Og4lnODt.js} +1 -1
- package/dist/client/assets/{settings-section-CJtoNKEm.js → settings-section-CnVR3qqE.js} +1 -1
- package/dist/client/assets/{sheet-CdA5nUqw.js → sheet-BuEWFo6R.js} +1 -1
- package/dist/client/assets/{shell-controls-CykUSzsG.js → shell-controls-DLyk9enu.js} +1 -1
- package/dist/client/assets/shell-layout-BmHL7kpa.js +1 -0
- package/dist/client/assets/{shell-route-loading-XgUvvz6p.js → shell-route-loading-RRQOTV6Y.js} +1 -1
- package/dist/client/assets/{sidebar-ChFfr0rN.js → sidebar-CRs9fZ48.js} +1 -1
- package/dist/client/assets/{skeleton-sLaw1Xk2.js → skeleton-BBoWXlQw.js} +1 -1
- package/dist/client/assets/{sortable.esm-B2GVQDR4.js → sortable.esm-Bj8xmSPS.js} +1 -1
- package/dist/client/assets/{sso-wVe-gPEC.js → sso-DtcGtItQ.js} +1 -1
- package/dist/client/assets/{store-DKnN_mWg.js → store-GzsI2yK1.js} +1 -1
- package/dist/client/assets/store-registry-DkQNv_eF.js +2 -0
- package/dist/client/assets/{studio-tools-Bf0h7pKn.js → studio-tools-DkpVw1Fk.js} +1 -1
- package/dist/client/assets/{switch-B5emAkAa.js → switch-DxdiLTfz.js} +1 -1
- package/dist/client/assets/{table-DDDAcgpb.js → table-DhLw2Dwk.js} +1 -1
- package/dist/client/assets/{tabs-DpXkahnx.js → tabs-XHi1y4Cg.js} +1 -1
- package/dist/client/assets/{task-status-DxP55tG6.js → task-status-Cavo-ZwA.js} +1 -1
- package/dist/client/assets/{textarea-wSBnNv7u.js → textarea-_jouvwDc.js} +1 -1
- package/dist/client/assets/{toggle-group-BcGBnErX.js → toggle-group-CfmlR7sy.js} +1 -1
- package/dist/client/assets/{toolbar-fshSxuLx.js → toolbar-CIBafoV_.js} +1 -1
- package/dist/client/assets/{tooltip-CDUQmtIe.js → tooltip-BGNlh40O.js} +1 -1
- package/dist/client/assets/{types-BXRFG3iR.js → types-sci-lCr2.js} +1 -1
- package/dist/client/assets/{use-ai-providers-D_ebIH0r.js → use-ai-providers-B2SGssyX.js} +1 -1
- package/dist/client/assets/{use-automations-ERukqXr_.js → use-automations-DlxacTNX.js} +1 -1
- package/dist/client/assets/{use-capability-CrbE-PVJ.js → use-capability-B9zmFZLR.js} +1 -1
- package/dist/client/assets/{use-clock-tick-Doyp_hie.js → use-clock-tick-xD667FrM.js} +1 -1
- package/dist/client/assets/{use-collections-C5c19M28.js → use-collections-YcK_UpXo.js} +1 -1
- package/dist/client/assets/{use-connection-BmWMtwa9.js → use-connection-8IOgdNi0.js} +1 -1
- package/dist/client/assets/{use-copy-Cq9FbLLo.js → use-copy-CRqf_gDL.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DdNYKluu.js → use-create-virtual-mcp-CDVY_QqV.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-D7-TM9NJ.js → use-debounced-autosave-cJge7NGp.js} +1 -1
- package/dist/client/assets/{use-deco-credits-l2OguEyG.js → use-deco-credits-DgT4uYPb.js} +1 -1
- package/dist/client/assets/{use-delete-connection-LB7jL5NP.js → use-delete-connection-2pMxBj7g.js} +1 -1
- package/dist/client/assets/{use-file-configs-BIkBkbG9.js → use-file-configs-ClyDZHyo.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-eransp1S.js → use-infinite-scroll-B-zoWl8c.js} +1 -1
- package/dist/client/assets/{use-join-requests-DJIGN6qo.js → use-join-requests-CS9hHY93.js} +1 -1
- package/dist/client/assets/{use-mcp-client-4Oly-YkT.js → use-mcp-client-BI9mCeJ3.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-BzVgnzr0.js → use-mcp-prompts-B4uY1_xI.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BQHlQR5o.js → use-mcp-tools-B5SwMdAl.js} +1 -1
- package/dist/client/assets/{use-members-DfpjiEN8.js → use-members-BXMztwuo.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-BkZH8xYi.js → use-navigate-to-agent-BeUkvKDD.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BUfV82c_.js → use-org-auth-client-BN1ti7dt.js} +1 -1
- package/dist/client/assets/{use-org-sso-BHaPLxVv.js → use-org-sso-C6H_RLHI.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CHXWUrIp.js → use-organization-roles-B7adr4SK.js} +1 -1
- package/dist/client/assets/{use-organization-settings-D2zerFXW.js → use-organization-settings-C1kJraO9.js} +1 -1
- package/dist/client/assets/{use-registry-connections-D-BNd8aV.js → use-registry-connections-xZJwULcQ.js} +1 -1
- package/dist/client/assets/{use-secrets-cs3fO-m_.js → use-secrets-Dz889CgS.js} +1 -1
- package/dist/client/assets/{use-status-sounds-DpP7gGFB.js → use-status-sounds-CRdMhPvE.js} +1 -1
- package/dist/client/assets/{use-view-mode-D-rE3O6I.js → use-view-mode-rOJla7nl.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-Ctv1YJgk.js → use-virtual-mcp-DVO8vnjv.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-cug4FXD1.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-B6VvfHY4.js +1 -0
- package/dist/client/assets/{variant-calendar-se_uWtri.js → variant-calendar-B3h7hcmo.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DuWN4iSs.js → view-mode-toggle-B8QrRReE.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +6 -6
- package/dist/server/server.js +3 -3
- package/package.json +1 -1
- package/dist/client/assets/category-editor-dHLb0Q5z.js +0 -1
- package/dist/client/assets/commerce-onboarding-Cc0EEeKk.js +0 -1
- package/dist/client/assets/index-fBd_LCW3.js +0 -3
- package/dist/client/assets/page-seo-sheet-BAekolJG.js +0 -1
- package/dist/client/assets/project-app-view-C27tx_mL.js +0 -1
- package/dist/client/assets/record-editor-DCcletMQ.js +0 -1
- package/dist/client/assets/registry-BMCM3rbD.js +0 -2
- package/dist/client/assets/save-referenced-block-KDKLCPRO.js +0 -1
- package/dist/client/assets/shell-layout-CrOv1YY7.js +0 -1
- package/dist/client/assets/store-registry-Be51xSYe.js +0 -2
- package/dist/client/assets/useInfiniteQuery-ClmiO4eL.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Bg7QIp7e.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -70183,7 +70183,7 @@ function createClaudeCodeModel(modelId, options) {
|
|
|
70183
70183
|
var CLAUDE_CODE_SDK_MODELS = {
|
|
70184
70184
|
"claude-code:opus": "opus",
|
|
70185
70185
|
"claude-code:opus-1m": "opus[1m]",
|
|
70186
|
-
"claude-code:sonnet": "sonnet",
|
|
70186
|
+
"claude-code:sonnet": "claude-sonnet-5",
|
|
70187
70187
|
"claude-code:haiku": "haiku",
|
|
70188
70188
|
"claude-code:fable": "claude-fable-5"
|
|
70189
70189
|
};
|
|
@@ -80690,8 +80690,8 @@ ${$}`;_(Z);return}if(E(null,B),t.strategy==="count"){if(w--,w===0)_()}if(t.strat
|
|
|
80690
80690
|
`),w=u.query(`
|
|
80691
80691
|
DELETE FROM link_sandboxes
|
|
80692
80692
|
WHERE handle = $handle
|
|
80693
|
-
`);function d(_){if(t===void 0)return!0;let v=P1i(_),h=v&&P1i(t)?FVu(t):t,D=v?FVu(_):yVu(_),g=_Qt(h,D);return g===""||!g.startsWith("..")&&!wQt(g)}return{upsert(_){f.run({$handle:_.handle,$status:_.status,$sandboxPath:_.sandboxPath,$port:_.port??null,$previewUrl:_.previewUrl??null,$repoCloneUrl:_.repoCloneUrl??null,$branch:_.branch??null,$projectName:_.projectName??null,$error:_.error??null,$now:Date.now()})},list(){return l.all().map(oQi)},reconcile(){let _=Date.now();for(let v of l.all().map(oQi)){if(!d(v.sandboxPath)){c.run({$handle:v.handle,$now:_});continue}if(!P1i(v.sandboxPath)){E.run({$handle:v.handle,$now:_});continue}if(v.status==="spawning"||v.status==="ready"||v.status==="failed"||v.status==="missing")$.run({$handle:v.handle,$now:_})}return l.all().map(oQi)},prune(_){let v=[],h=[],D=this.reconcile();for(let g of D){if(!d(g.sandboxPath)){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(_.missing&&g.status==="missing"){w.run({$handle:g.handle}),v.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!_.merged||!P1i(g.sandboxPath))continue;if(g.branch===null||g.branch.trim()===""){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!FY(g.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let O=FY(g.sandboxPath,["status","--porcelain"]);if(!O.ok){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(O.stdout.trim()!==""){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let Z=gQt(g.sandboxPath,g.branch);if(Z===null){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!Z){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}EQt(g.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:g.handle}),v.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:v,skipped:h}},close(){u.close()}}}var sQi=()=>{};import{randomBytes as NQt}from"crypto";import{mkdir as OQt}from"fs/promises";import{createServer as ZQt}from"net";import{join as BQt}from"path";function PVu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function FQt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function xVu(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function yQt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function TQt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:yQt(i.repo?.cloneUrl)}}function IVu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??UQt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((g,O)=>`http://127.0.0.1:${O}`),E=(g)=>BQt(i.dataDir,"sandboxes",g),$=(g)=>{try{i.registry?.upsert(g)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${g.handle} status=${g.status}:`,O)}},w=(g)=>{try{i.onEvent?.(g)}catch{}},d=async(g)=>{let O=new AbortController,Z=setTimeout(()=>O.abort(),1500);try{let B=await l(`${g}/health`,{signal:O.signal});if(!B.ok)console.warn(`[user-desktop] probe ${g}/health \u2192 ${B.status} (treating as dead)`);return B.ok}catch(B){return console.warn(`[user-desktop] probe ${g}/health failed: ${B instanceof Error?B.message:String(B)} (treating as dead)`),!1}finally{clearTimeout(Z)}},_=(g)=>{console.warn(`[user-desktop] evicting dead daemon handle=${g.handle} port=${g.port}`);try{g.process.kill("SIGTERM")}catch{}if(t.get(g.handle)===g)t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:E(g.handle),port:null,previewUrl:null,...g.registryMetadata,error:null}),w({handle:g.handle,phase:"evicted"})},v=new Map;function h(){if(t.size<u)return;let g=[...t.values()].filter((Z)=>Z.activeDispatchCount===0).sort((Z,B)=>Z.lastUsedAt-B.lastUsedAt);if(g.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let O=g[0];console.log(`[user-desktop] evicting LRU victim handle=${O.handle} port=${O.port} (cap ${u} reached, size=${t.size})`);try{O.process.kill("SIGTERM")}catch{}t.delete(O.handle),$({handle:O.handle,status:"stopped",sandboxPath:E(O.handle),port:null,previewUrl:null,...O.registryMetadata,error:null}),w({handle:O.handle,phase:"evicted"})}let D=async(g)=>{let O=TQt(g),Z=E(g.handle);$({handle:g.handle,status:"spawning",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"spawning"}),h();let B,F=null,y;try{await OQt(Z,{recursive:!0}),console.log(`[user-desktop] ensure handle=${g.handle} repo=${g.repo?.cloneUrl??"(none)"} branch=${g.repo?.branch??"(none)"} runtime=${g.workload?.runtime??"(autodetect)"} pm=${g.workload?.packageManager??"(autodetect)"}`),y=NQt(24).toString("hex");let[j,A]=await Promise.all([f(),f()]);B=j,console.log(`[user-desktop] spawn handle=${g.handle} port=${B} devPort=${A} workdir=${Z}`),F=await Promise.resolve(i.spawnDaemon({workdir:Z,handle:g.handle,port:B,daemonToken:y,offloadAllowedHosts:g.offloadAllowedHosts??[],offloadAllowSameHostDev:g.offloadAllowSameHostDev??!1,orgFsConfigJson:g.orgFsConfigJson}));try{await i.waitForHealth(B)}catch(n){throw PVu("the sandbox didn't come online in time",n)}console.log(`[user-desktop] healthy handle=${g.handle} port=${B} \u2014 posting config`);try{await i.postConfig(B,A,{repo:g.repo,workload:g.workload,operator:g.operator},y)}catch(n){throw PVu(FQt(n)?"configuration timed out":"the sandbox rejected its configuration",n)}}catch(j){if(console.error(`[user-desktop] sandbox bring-up failed handle=${g.handle} port=${B??"(none)"}${F?" (killing daemon)":""}:`,j),F)try{F.kill("SIGKILL")}catch{}throw w({handle:g.handle,phase:"failed",error:xVu(j)}),$({handle:g.handle,status:"failed",sandboxPath:Z,port:null,previewUrl:null,...O,error:xVu(j)}),j}if(!F||B===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${B}`,U=c(g.handle,B);console.log(`[user-desktop] ready handle=${g.handle} port=${B} sandboxApiUrl=${T} previewUrl=${U}`);let I={handle:g.handle,port:B,process:F,sandboxApiUrl:T,previewUrl:U,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:y,registryMetadata:O};if(t.set(g.handle,I),$({handle:g.handle,status:"ready",sandboxPath:Z,port:B,previewUrl:U,...O,error:null}),w({handle:g.handle,phase:"ready",port:B,previewUrl:U}),F.exited)F.exited.then(()=>{if(t.get(g.handle)===I)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${g.handle} port=${B} \u2014 removing from cache`),t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${g.handle} port=${B} (already replaced/removed)`)});return{sandboxApiUrl:T,previewUrl:U,port:B}};return{async ensureSandbox(g){let O=t.get(g.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${g.handle} port=${O.port} (alive)`),O.lastUsedAt=Date.now(),{sandboxApiUrl:O.sandboxApiUrl,previewUrl:O.previewUrl,port:O.port};console.warn(`[user-desktop] cache stale handle=${g.handle} port=${O.port} \u2014 respawning`),_(O)}let Z=v.get(g.handle);if(Z)return console.log(`[user-desktop] joining in-flight ensure handle=${g.handle}`),Z;let B=D(g).finally(()=>{v.delete(g.handle)});return v.set(g.handle,B),B},proxyPort(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(g){return t.get(g)?.daemonToken??null},hasHandle(g){return t.has(g)||v.has(g)},recordHit(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now()},acquireDispatch(g){let O=t.get(g);if(!O)return()=>{};O.activeDispatchCount+=1;let Z=!1;return()=>{if(Z)return;Z=!0;let B=t.get(g);if(B)B.activeDispatchCount=Math.max(0,B.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(g){let O=t.get(g);if(!O){console.log(`[user-desktop] delete handle=${g} (not found, no-op)`);return}console.log(`[user-desktop] delete handle=${g} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(g),$({handle:g,status:"stopped",sandboxPath:E(g),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:g,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let g of t.values())try{g.process.kill("SIGTERM")}catch{}t.clear()}}}function UQt(){return new Promise((i,u)=>{let t=ZQt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var AVu=()=>{};import{randomUUID as PQt}from"crypto";import{hostname as xQt}from"os";async function GVu(i){let u=xQt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=NHu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=I1i({path:x1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=IVu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(A,n)=>E>0?`http://${A}.localhost:${E}`:`http://127.0.0.1:${n}`,spawnDaemon:async(A)=>{let n={DAEMON_BOOT_ID:PQt(),APP_ROOT:A.workdir,PROXY_PORT:String(A.port),DAEMON_TOKEN:A.daemonToken,OFFLOAD_ALLOWED_HOSTS:A.offloadAllowedHosts.join(","),...A.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(A.orgFsConfigJson){let S=await FHu(i.dataDir);if(S)n.ORGFS_CONFIG=A.orgFsConfigJson,n.ORGFS_RCLONE_PATH=S}let M=await t({workdir:A.workdir,env:n,daemonPort:A.port});return{port:A.port,kill:(S)=>M.kill(S),exited:M.exited.then(()=>{return})}},postConfig:async(A,n,M,S)=>{let Y={port:n};if(M.workload)Y.runtime=M.workload.runtime,Y.packageManager={name:M.workload.packageManager,...M.workload.packageManagerPath?{path:M.workload.packageManagerPath}:{}};let V={application:Y},L=ed(M.operator??null);if(L)V.operator=L;if(M.repo)V.git={repository:{cloneUrl:M.repo.cloneUrl,branch:M.repo.branch},...M.repo.userName&&M.repo.userEmail?{identity:{userName:M.repo.userName,userEmail:M.repo.userEmail}}:{}};await lO(`http://127.0.0.1:${A}`,S,V)},waitForHealth:async(A)=>{await I4i(`http://127.0.0.1:${A}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await $Vu({port:i.port,lookupSandboxPort:(A)=>$.proxyPort(A)});E=w.port,console.log(`Local ingress listening on http://127.0.0.1:${w.port} (use http://<handle>.localhost:${w.port}/)`),i.monitor?.onIngress?.(w.port);let d=THu({provider:$}),_=async()=>{let A=await H2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!A)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return A.accessToken},v=await ZVu(i.dataDir),h=process.env.npm_package_version??"0.0.0",D=await aQi(),g=NVu(D,{onChange:(A)=>{console.log(`[link-daemon] capabilities detected: +${A.join(",")} (now: ${D.join(",")})`)}}),O=QLi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let Z=()=>{},B=new AbortController,F={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:_,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:v,cliVersion:h,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>Z(),runLifetimeSignal:B.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let y=await equ(F);console.log("[link-daemon] active transport=tunnel");let T,U=new Promise((A)=>{T=A}),I=!1,j=async()=>{if(I)return;I=!0,B.abort(),console.log(`
|
|
80694
|
-
Shutting down\u2026`),g();try{await y.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};return process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},y.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()}),{stopped:U,stop:j}}catch(E){throw c(),E}}var nVu=N(()=>{KLi();jC();OHu();yHu();UHu();HLi();aqu();wVu();OVu();BVu();kC();sQi();AVu()});function pQi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var A1i;var iHi=N(()=>{A1i={name:"decocms",version:"3.75.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.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",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@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","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var EM={};zi(EM,{printBanner:()=>GQt,bannerLines:()=>kVu,BANNER_LINES:()=>G1i,BANNER_GRADIENT:()=>n1i});function AQt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function kVu(i){let u=G1i.map((t,f)=>{let[l,c,E]=AQt(n1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function GQt(i){console.log("");for(let u of kVu(i))console.log(u);console.log("")}var G1i,n1i;var yY=N(()=>{G1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],n1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as nQt,Text as jVu}from"ink";import{jsx as kQt,jsxs as XVu}from"react/jsx-runtime";function k1i({version:i}){return XVu(nQt,{flexDirection:"column",marginTop:1,children:[G1i.map((u,t)=>kQt(jVu,{color:n1i[t],children:u},t)),XVu(jVu,{dimColor:!0,children:[" v",i]})]})}var uHi=N(()=>{yY()});var SVu={};zi(SVu,{subscribeLinkState:()=>fHi,setPersistedSandboxes:()=>LQt,setMachine:()=>SQt,setLogPath:()=>WQt,setIngress:()=>JQt,setDaemonError:()=>YQt,setClusterUrl:()=>KQt,setCluster:()=>XQt,resetLinkStateForTests:()=>QQt,pushSandboxEvent:()=>zQt,getLinkState:()=>tHi,applySandboxEvent:()=>KVu});function jQt(i){return i==="spawning"||i==="ready"||i==="failed"}function KVu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function JVu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null}}function o2(){for(let i of j1i)i()}function tHi(){return zl}function fHi(i){return j1i.add(i),()=>j1i.delete(i)}function XQt(i){zl={...zl,cluster:i},o2()}function KQt(i){zl={...zl,clusterUrl:i},o2()}function JQt(i,u){zl={...zl,ingressPort:i,ingressUrl:u},o2()}function SQt(i){zl={...zl,machine:i},o2()}function YQt(i){zl={...zl,daemonError:i},o2()}function WQt(i){zl={...zl,logPath:i},o2()}function LQt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of zl.sandboxes)if(jQt(f.status))u.set(t,f);zl={...zl,sandboxes:u},o2()}function zQt(i){zl={...zl,sandboxes:KVu(zl.sandboxes,i)},o2()}function QQt(){zl=JVu(),j1i.clear()}var zl,j1i;var lHi=N(()=>{zl=JVu(),j1i=new Set});var YVu={};zi(YVu,{LinkApp:()=>RQt});import{Box as W6,Text as L6}from"ink";import{useSyncExternalStore as HQt}from"react";import{jsx as V4,jsxs as M_}from"react/jsx-runtime";function bQt(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function RQt(){let i=HQt(fHi,tHi),u=[...i.sandboxes.values()].sort((t,f)=>t.handle.localeCompare(f.handle));return M_(W6,{flexDirection:"column",children:[V4(k1i,{version:A1i.version}),V4(W6,{marginBottom:1,children:V4(L6,{dimColor:!0,children:"\u2500".repeat(80)})}),V4(W6,{children:i.cluster==="linked"?M_(L6,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?M_(L6,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):M_(L6,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),V4(W6,{children:i.ingressUrl?M_(L6,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):V4(L6,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),V4(W6,{marginBottom:1,children:V4(L6,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?V4(L6,{dimColor:!0,children:"No previews running yet."}):M_(W6,{flexDirection:"column",children:[M_(W6,{children:[V4(W6,{width:TY.project,flexShrink:0,marginRight:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),V4(W6,{width:TY.branch,flexShrink:0,marginRight:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),V4(W6,{width:TY.status,flexShrink:0,marginRight:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),V4(W6,{flexGrow:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((t)=>{let f=bQt(t);return M_(W6,{children:[V4(W6,{width:TY.project,flexShrink:0,marginRight:1,children:V4(L6,{wrap:"truncate-end",children:t.projectName??t.handle})}),V4(W6,{width:TY.branch,flexShrink:0,marginRight:1,children:V4(L6,{wrap:"truncate-end",children:t.branch??"\u2014"})}),V4(W6,{width:TY.status,flexShrink:0,marginRight:1,children:V4(L6,{color:f.color,wrap:"truncate-end",children:f.text})}),V4(W6,{flexGrow:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:t.previewUrl??"\u2014"})})]},t.handle)})]}),i.daemonError?V4(W6,{marginTop:1,children:M_(L6,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?V4(W6,{marginTop:1,children:M_(L6,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var TY;var WVu=N(()=>{iHi();uHi();lHi();TY={project:18,branch:22,status:14}});var LVu={};zi(LVu,{runLinkCommand:()=>aQt});import{closeSync as CQt,mkdirSync as MQt,openSync as qQt,writeSync as VQt}from"fs";import{homedir as rQt}from"os";import{join as cHi}from"path";function mQt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{VQt(u,`${pQi(l)}
|
|
80693
|
+
`);function d(_){if(t===void 0)return!0;let v=P1i(_),h=v&&P1i(t)?FVu(t):t,D=v?FVu(_):yVu(_),g=_Qt(h,D);return g===""||!g.startsWith("..")&&!wQt(g)}return{upsert(_){f.run({$handle:_.handle,$status:_.status,$sandboxPath:_.sandboxPath,$port:_.port??null,$previewUrl:_.previewUrl??null,$repoCloneUrl:_.repoCloneUrl??null,$branch:_.branch??null,$projectName:_.projectName??null,$error:_.error??null,$now:Date.now()})},list(){return l.all().map(oQi)},reconcile(){let _=Date.now();for(let v of l.all().map(oQi)){if(!d(v.sandboxPath)){c.run({$handle:v.handle,$now:_});continue}if(!P1i(v.sandboxPath)){E.run({$handle:v.handle,$now:_});continue}if(v.status==="spawning"||v.status==="ready"||v.status==="failed"||v.status==="missing")$.run({$handle:v.handle,$now:_})}return l.all().map(oQi)},prune(_){let v=[],h=[],D=this.reconcile();for(let g of D){if(!d(g.sandboxPath)){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(_.missing&&g.status==="missing"){w.run({$handle:g.handle}),v.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!_.merged||!P1i(g.sandboxPath))continue;if(g.branch===null||g.branch.trim()===""){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!FY(g.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let O=FY(g.sandboxPath,["status","--porcelain"]);if(!O.ok){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(O.stdout.trim()!==""){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let Z=gQt(g.sandboxPath,g.branch);if(Z===null){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!Z){h.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}EQt(g.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:g.handle}),v.push({handle:g.handle,sandboxPath:g.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:v,skipped:h}},close(){u.close()}}}var sQi=()=>{};import{randomBytes as NQt}from"crypto";import{mkdir as OQt}from"fs/promises";import{createServer as ZQt}from"net";import{join as BQt}from"path";function PVu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function FQt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function xVu(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function yQt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function TQt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:yQt(i.repo?.cloneUrl)}}function IVu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??UQt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((g,O)=>`http://127.0.0.1:${O}`),E=(g)=>BQt(i.dataDir,"sandboxes",g),$=(g)=>{try{i.registry?.upsert(g)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${g.handle} status=${g.status}:`,O)}},w=(g)=>{try{i.onEvent?.(g)}catch{}},d=async(g)=>{let O=new AbortController,Z=setTimeout(()=>O.abort(),1500);try{let B=await l(`${g}/health`,{signal:O.signal});if(!B.ok)console.warn(`[user-desktop] probe ${g}/health \u2192 ${B.status} (treating as dead)`);return B.ok}catch(B){return console.warn(`[user-desktop] probe ${g}/health failed: ${B instanceof Error?B.message:String(B)} (treating as dead)`),!1}finally{clearTimeout(Z)}},_=(g)=>{console.warn(`[user-desktop] evicting dead daemon handle=${g.handle} port=${g.port}`);try{g.process.kill("SIGTERM")}catch{}if(t.get(g.handle)===g)t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:E(g.handle),port:null,previewUrl:null,...g.registryMetadata,error:null}),w({handle:g.handle,phase:"evicted"})},v=new Map;function h(){if(t.size<u)return;let g=[...t.values()].filter((Z)=>Z.activeDispatchCount===0).sort((Z,B)=>Z.lastUsedAt-B.lastUsedAt);if(g.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let O=g[0];console.log(`[user-desktop] evicting LRU victim handle=${O.handle} port=${O.port} (cap ${u} reached, size=${t.size})`);try{O.process.kill("SIGTERM")}catch{}t.delete(O.handle),$({handle:O.handle,status:"stopped",sandboxPath:E(O.handle),port:null,previewUrl:null,...O.registryMetadata,error:null}),w({handle:O.handle,phase:"evicted"})}let D=async(g)=>{let O=TQt(g),Z=E(g.handle);$({handle:g.handle,status:"spawning",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"spawning"}),h();let B,F=null,y;try{await OQt(Z,{recursive:!0}),console.log(`[user-desktop] ensure handle=${g.handle} repo=${g.repo?.cloneUrl??"(none)"} branch=${g.repo?.branch??"(none)"} runtime=${g.workload?.runtime??"(autodetect)"} pm=${g.workload?.packageManager??"(autodetect)"}`),y=NQt(24).toString("hex");let[j,A]=await Promise.all([f(),f()]);B=j,console.log(`[user-desktop] spawn handle=${g.handle} port=${B} devPort=${A} workdir=${Z}`),F=await Promise.resolve(i.spawnDaemon({workdir:Z,handle:g.handle,port:B,daemonToken:y,offloadAllowedHosts:g.offloadAllowedHosts??[],offloadAllowSameHostDev:g.offloadAllowSameHostDev??!1,orgFsConfigJson:g.orgFsConfigJson}));try{await i.waitForHealth(B)}catch(n){throw PVu("the sandbox didn't come online in time",n)}console.log(`[user-desktop] healthy handle=${g.handle} port=${B} \u2014 posting config`);try{await i.postConfig(B,A,{repo:g.repo,workload:g.workload,operator:g.operator},y)}catch(n){throw PVu(FQt(n)?"configuration timed out":"the sandbox rejected its configuration",n)}}catch(j){if(console.error(`[user-desktop] sandbox bring-up failed handle=${g.handle} port=${B??"(none)"}${F?" (killing daemon)":""}:`,j),F)try{F.kill("SIGKILL")}catch{}throw w({handle:g.handle,phase:"failed",error:xVu(j)}),$({handle:g.handle,status:"failed",sandboxPath:Z,port:null,previewUrl:null,...O,error:xVu(j)}),j}if(!F||B===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${B}`,U=c(g.handle,B);console.log(`[user-desktop] ready handle=${g.handle} port=${B} sandboxApiUrl=${T} previewUrl=${U}`);let I={handle:g.handle,port:B,process:F,sandboxApiUrl:T,previewUrl:U,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:y,registryMetadata:O};if(t.set(g.handle,I),$({handle:g.handle,status:"ready",sandboxPath:Z,port:B,previewUrl:U,...O,error:null}),w({handle:g.handle,phase:"ready",port:B,previewUrl:U}),F.exited)F.exited.then(()=>{if(t.get(g.handle)===I)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${g.handle} port=${B} \u2014 removing from cache`),t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${g.handle} port=${B} (already replaced/removed)`)});return{sandboxApiUrl:T,previewUrl:U,port:B}};return{async ensureSandbox(g){let O=t.get(g.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${g.handle} port=${O.port} (alive)`),O.lastUsedAt=Date.now(),{sandboxApiUrl:O.sandboxApiUrl,previewUrl:O.previewUrl,port:O.port};console.warn(`[user-desktop] cache stale handle=${g.handle} port=${O.port} \u2014 respawning`),_(O)}let Z=v.get(g.handle);if(Z)return console.log(`[user-desktop] joining in-flight ensure handle=${g.handle}`),Z;let B=D(g).finally(()=>{v.delete(g.handle)});return v.set(g.handle,B),B},proxyPort(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(g){return t.get(g)?.daemonToken??null},hasHandle(g){return t.has(g)||v.has(g)},recordHit(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now()},acquireDispatch(g){let O=t.get(g);if(!O)return()=>{};O.activeDispatchCount+=1;let Z=!1;return()=>{if(Z)return;Z=!0;let B=t.get(g);if(B)B.activeDispatchCount=Math.max(0,B.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(g){let O=t.get(g);if(!O){console.log(`[user-desktop] delete handle=${g} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${g} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${g} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(g),$({handle:g,status:"stopped",sandboxPath:E(g),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:g,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let g of t.values())try{g.process.kill("SIGTERM")}catch{}t.clear()}}}function UQt(){return new Promise((i,u)=>{let t=ZQt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var AVu=()=>{};import{randomUUID as PQt}from"crypto";import{hostname as xQt}from"os";async function GVu(i){let u=xQt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=NHu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=I1i({path:x1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=IVu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(A,n)=>E>0?`http://${A}.localhost:${E}`:`http://127.0.0.1:${n}`,spawnDaemon:async(A)=>{let n={DAEMON_BOOT_ID:PQt(),APP_ROOT:A.workdir,PROXY_PORT:String(A.port),DAEMON_TOKEN:A.daemonToken,OFFLOAD_ALLOWED_HOSTS:A.offloadAllowedHosts.join(","),...A.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(A.orgFsConfigJson){let S=await FHu(i.dataDir);if(S)n.ORGFS_CONFIG=A.orgFsConfigJson,n.ORGFS_RCLONE_PATH=S}let M=await t({workdir:A.workdir,env:n,daemonPort:A.port});return{port:A.port,kill:(S)=>M.kill(S),exited:M.exited.then(()=>{return})}},postConfig:async(A,n,M,S)=>{let Y={port:n};if(M.workload)Y.runtime=M.workload.runtime,Y.packageManager={name:M.workload.packageManager,...M.workload.packageManagerPath?{path:M.workload.packageManagerPath}:{}};let V={application:Y},L=ed(M.operator??null);if(L)V.operator=L;if(M.repo)V.git={repository:{cloneUrl:M.repo.cloneUrl,branch:M.repo.branch},...M.repo.userName&&M.repo.userEmail?{identity:{userName:M.repo.userName,userEmail:M.repo.userEmail}}:{}};await lO(`http://127.0.0.1:${A}`,S,V)},waitForHealth:async(A)=>{await I4i(`http://127.0.0.1:${A}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await $Vu({port:i.port,lookupSandboxPort:(A)=>$.proxyPort(A)});E=w.port,console.log(`Local ingress listening on http://127.0.0.1:${w.port} (use http://<handle>.localhost:${w.port}/)`),i.monitor?.onIngress?.(w.port);let d=THu({provider:$}),_=async()=>{let A=await H2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!A)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return A.accessToken},v=await ZVu(i.dataDir),h=process.env.npm_package_version??"0.0.0",D=await aQi(),g=NVu(D,{onChange:(A)=>{console.log(`[link-daemon] capabilities detected: +${A.join(",")} (now: ${D.join(",")})`)}}),O=QLi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let Z=()=>{},B=new AbortController,F={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:_,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:v,cliVersion:h,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>Z(),runLifetimeSignal:B.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let y=await equ(F);console.log("[link-daemon] active transport=tunnel");let T,U=new Promise((A)=>{T=A}),I=!1,j=async()=>{if(I)return;I=!0,B.abort(),console.log(`
|
|
80694
|
+
Shutting down\u2026`),g();try{await y.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};return process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},y.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()}),{stopped:U,stop:j}}catch(E){throw c(),E}}var nVu=N(()=>{KLi();jC();OHu();yHu();UHu();HLi();aqu();wVu();OVu();BVu();kC();sQi();AVu()});function pQi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var A1i;var iHi=N(()=>{A1i={name:"decocms",version:"3.75.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/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.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",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@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","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var EM={};zi(EM,{printBanner:()=>GQt,bannerLines:()=>kVu,BANNER_LINES:()=>G1i,BANNER_GRADIENT:()=>n1i});function AQt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function kVu(i){let u=G1i.map((t,f)=>{let[l,c,E]=AQt(n1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function GQt(i){console.log("");for(let u of kVu(i))console.log(u);console.log("")}var G1i,n1i;var yY=N(()=>{G1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],n1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as nQt,Text as jVu}from"ink";import{jsx as kQt,jsxs as XVu}from"react/jsx-runtime";function k1i({version:i}){return XVu(nQt,{flexDirection:"column",marginTop:1,children:[G1i.map((u,t)=>kQt(jVu,{color:n1i[t],children:u},t)),XVu(jVu,{dimColor:!0,children:[" v",i]})]})}var uHi=N(()=>{yY()});var SVu={};zi(SVu,{subscribeLinkState:()=>fHi,setPersistedSandboxes:()=>LQt,setMachine:()=>SQt,setLogPath:()=>WQt,setIngress:()=>JQt,setDaemonError:()=>YQt,setClusterUrl:()=>KQt,setCluster:()=>XQt,resetLinkStateForTests:()=>QQt,pushSandboxEvent:()=>zQt,getLinkState:()=>tHi,applySandboxEvent:()=>KVu});function jQt(i){return i==="spawning"||i==="ready"||i==="failed"}function KVu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function JVu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null}}function o2(){for(let i of j1i)i()}function tHi(){return zl}function fHi(i){return j1i.add(i),()=>j1i.delete(i)}function XQt(i){zl={...zl,cluster:i},o2()}function KQt(i){zl={...zl,clusterUrl:i},o2()}function JQt(i,u){zl={...zl,ingressPort:i,ingressUrl:u},o2()}function SQt(i){zl={...zl,machine:i},o2()}function YQt(i){zl={...zl,daemonError:i},o2()}function WQt(i){zl={...zl,logPath:i},o2()}function LQt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of zl.sandboxes)if(jQt(f.status))u.set(t,f);zl={...zl,sandboxes:u},o2()}function zQt(i){zl={...zl,sandboxes:KVu(zl.sandboxes,i)},o2()}function QQt(){zl=JVu(),j1i.clear()}var zl,j1i;var lHi=N(()=>{zl=JVu(),j1i=new Set});var YVu={};zi(YVu,{LinkApp:()=>RQt});import{Box as W6,Text as L6}from"ink";import{useSyncExternalStore as HQt}from"react";import{jsx as V4,jsxs as M_}from"react/jsx-runtime";function bQt(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function RQt(){let i=HQt(fHi,tHi),u=[...i.sandboxes.values()].sort((t,f)=>t.handle.localeCompare(f.handle));return M_(W6,{flexDirection:"column",children:[V4(k1i,{version:A1i.version}),V4(W6,{marginBottom:1,children:V4(L6,{dimColor:!0,children:"\u2500".repeat(80)})}),V4(W6,{children:i.cluster==="linked"?M_(L6,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?M_(L6,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):M_(L6,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),V4(W6,{children:i.ingressUrl?M_(L6,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):V4(L6,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),V4(W6,{marginBottom:1,children:V4(L6,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?V4(L6,{dimColor:!0,children:"No previews running yet."}):M_(W6,{flexDirection:"column",children:[M_(W6,{children:[V4(W6,{width:TY.project,flexShrink:0,marginRight:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),V4(W6,{width:TY.branch,flexShrink:0,marginRight:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),V4(W6,{width:TY.status,flexShrink:0,marginRight:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),V4(W6,{flexGrow:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((t)=>{let f=bQt(t);return M_(W6,{children:[V4(W6,{width:TY.project,flexShrink:0,marginRight:1,children:V4(L6,{wrap:"truncate-end",children:t.projectName??t.handle})}),V4(W6,{width:TY.branch,flexShrink:0,marginRight:1,children:V4(L6,{wrap:"truncate-end",children:t.branch??"\u2014"})}),V4(W6,{width:TY.status,flexShrink:0,marginRight:1,children:V4(L6,{color:f.color,wrap:"truncate-end",children:f.text})}),V4(W6,{flexGrow:1,children:V4(L6,{dimColor:!0,wrap:"truncate-end",children:t.previewUrl??"\u2014"})})]},t.handle)})]}),i.daemonError?V4(W6,{marginTop:1,children:M_(L6,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?V4(W6,{marginTop:1,children:M_(L6,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var TY;var WVu=N(()=>{iHi();uHi();lHi();TY={project:18,branch:22,status:14}});var LVu={};zi(LVu,{runLinkCommand:()=>aQt});import{closeSync as CQt,mkdirSync as MQt,openSync as qQt,writeSync as VQt}from"fs";import{homedir as rQt}from"os";import{join as cHi}from"path";function mQt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{VQt(u,`${pQi(l)}
|
|
80695
80695
|
`)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(pQi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function eQt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function aQt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??cHi(rQt(),"deco"),f=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,c,E,$=()=>{if(E===void 0)return;try{E.close()}catch{}finally{E=void 0}};try{let w=cHi(t,"sandboxes");E=I1i({path:x1i(t),managedSandboxRoot:w});let d=await T4i({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await eQt(f,d.accessToken);let _=E.reconcile();if(i.prune){let g=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${g.removed.length}, skipped ${g.skipped.length}.`);_=E.reconcile()}let v;if(i.tui){let{render:g}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:Z}=await Promise.resolve().then(() => (WVu(),YVu)),{pushSandboxEvent:B,setCluster:F,setClusterUrl:y,setDaemonError:T,setIngress:U,setLogPath:I,setMachine:j,setPersistedSandboxes:A}=await Promise.resolve().then(() => (lHi(),SVu));MQt(t,{recursive:!0});let n=cHi(t,"link.log");c=qQt(n,"w"),I(n),A(_),y(f),F("connecting"),v={onEvent:(M)=>B(M),onIngress:(M)=>U(M,`http://127.0.0.1:${M}`),onCluster:(M)=>F(M),onMachine:(M)=>j(M)},l=mQt(T,c),g(O(Z),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:g}=await Promise.resolve().then(() => (yY(),EM));g(i.version??"0.0.0")}$();let h=process.env.DECOCMS_LINK_MANAGED!=="1";return await(await GVu({port:u,clusterBaseUrl:f,dataDir:t,session:d,monitor:v,logFd:c,perSandboxLogs:h,hotReload:i.hotReload})).stopped}catch(w){return l?.(),console.error(w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{CQt(c)}catch{}$()}}var zVu=N(()=>{XLi();nVu();sQi()});var vHi={};zi(vHi,{resolveDevLinkClusterUrl:()=>iHt,populateDevLinkToxiProxy:()=>MVu,isDevLinkToxiProxyEnabled:()=>pQt,ensureDevLinkToxiProxy:()=>cHt,buildDevLinkToxiProxyConfig:()=>RVu,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>HVu,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>bVu});function pQt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function EHi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function RVu(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=EHi(i.apiPort,"apiPort"),f=EHi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=EHi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:HVu,proxyName:bVu,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:c,clusterUrl:E,logLine:`[dev-link-toxiproxy] ready: ${E} -> ${c}`}}function iHt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function $Hi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function _Hi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function CVu(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return CVu(i.cause)}async function wHi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${_Hi(l)}`,{cause:l})}}async function MVu(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await wHi(u,"reset",t,{method:"POST"});await $Hi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await wHi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await $Hi(c,"populate",l)}async function uHt(i,u){let t=`${i.apiUrl}/version`;try{await jE(async()=>{let f=await wHi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(sQt)});await $Hi(f,"readiness check",t)},{maxAttempts:oQt,minTimeout:QVu,maxTimeout:QVu,multiplier:1,jitter:0,isRetriable:(f)=>!CVu(f)})}catch(f){let l=f instanceof Mc?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${_Hi(l)}`,{cause:l})}}async function tHt(i){if(i===null)return"";return await new Response(i).text()}async function dHi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch($){throw Error(`Docker command failed to start (${t}): ${_Hi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,tHt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let E=c.trim().length>0?`: ${c.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${E}`)}async function fHt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await dHi(["rm","-f",t],{ignoreFailure:!0}),await dHi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function lHt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await dHi(["rm","-f",t],{ignoreFailure:!0})}async function cHt(i){let u=RVu(i),t=i.startDaemon??fHt,f=i.stopDaemon??(i.startDaemon===void 0?lHt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await uHt(u,l),await MVu(u,l)}catch(c){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw c}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var HVu="ToxiProxy",bVu="dev_link_studio",oQt=20,QVu=100,sQt=100;var hHi=N(()=>{Sl()});var qVu={};zi(qVu,{migrateBetterAuth:()=>DHi});import{getMigrations as EHt}from"better-auth/db";import{sso as $Ht}from"@better-auth/sso";import{organization as wHt}from"@decocms/better-auth/plugins";import{admin as dHt,apiKey as _Ht,jwt as vHt,magicLink as hHt,mcp as DHt,openAPI as gHt}from"better-auth/plugins";import{emailOTP as NHt}from"better-auth/plugins/email-otp";async function DHi(i){let t={database:PC(i||W2()),plugins:[wHt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),dHt(),_Ht(),vHt(),gHt(),DHt({loginPage:"/login"}),$Ht(),hHt({sendMagicLink:async()=>{}}),NHt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await EHt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var gHi=N(()=>{zE()});var NHi={};zi(NHi,{up:()=>OHt,down:()=>ZHt});import{sql as q_}from"kysely";async function OHt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(q_`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function ZHt(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var VVu=()=>{};var OHi={};zi(OHi,{up:()=>BHt,down:()=>FHt});import{sql as rVu}from"kysely";async function BHt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(rVu`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(rVu`CURRENT_TIMESTAMP`)).execute()}async function FHt(i){await i.schema.dropTable("organization_settings").execute()}var mVu=()=>{};var ZHi={};zi(ZHi,{up:()=>yHt,down:()=>THt});async function yHt(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function THt(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var BHi={};zi(BHi,{up:()=>UHt,down:()=>PHt});async function UHt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function PHt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var FHi={};zi(FHi,{up:()=>xHt,down:()=>IHt});async function xHt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function IHt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var yHi={};zi(yHi,{up:()=>GHt,down:()=>nHt});import{sql as AHt}from"kysely";async function GHt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",AHt`text`).execute()}async function nHt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var eVu=()=>{};var THi={};zi(THi,{up:()=>kHt,down:()=>jHt});async function kHt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function jHt(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var UHi={};zi(UHi,{up:()=>XHt,down:()=>KHt});import{sql as $M}from"kysely";async function XHt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo($M`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo($M`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo($M`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo($M`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo($M`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function KHt(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var aVu=()=>{};var PHi={};zi(PHi,{up:()=>SHt,down:()=>YHt});import{sql as JHt}from"kysely";async function SHt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function YHt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(JHt`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var oVu=()=>{};var xHi={};zi(xHi,{up:()=>WHt,down:()=>LHt});import{sql as X1i}from"kysely";async function WHt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(X1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(X1i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(X1i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await X1i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function LHt(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var sVu=()=>{};var IHi={};zi(IHi,{up:()=>zHt,down:()=>QHt});async function zHt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function QHt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var AHi={};zi(AHi,{up:()=>HHt,down:()=>bHt});import{sql as K1i}from"kysely";async function HHt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await K1i`
|
|
80696
80696
|
UPDATE gateways
|
|
80697
80697
|
SET tool_selection_mode = CASE
|
|
@@ -83013,7 +83013,7 @@ data:
|
|
|
83013
83013
|
</head>`+i.slice(_)}return`<head>
|
|
83014
83014
|
`+f+`
|
|
83015
83015
|
</head>
|
|
83016
|
-
`+i}function IFi(i){if(!i||i.length===0)return[];return i.filter((u)=>ubf.test(u))}function tbf(i){if(i.csp)return i.csp;let u=i.resourceCsp;if(!u)return mn0;let t=IFi(u.resourceDomains),f=IFi(u.connectDomains),l=IFi(u.frameDomains),c=IFi(u.baseUriDomains),E=t.length>0,$=f.length>0,w=l.length>0,d=c.length>0;if(!E&&!$&&!w&&!d)return mn0;let _=t.join(" ");return["default-src 'none'",E?`script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' ${_}`:"script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",E?`style-src 'unsafe-inline' ${_}`:"style-src 'unsafe-inline'",E?`img-src * data: blob: ${_}`:"img-src * data: blob:",E?`media-src * data: blob: ${_}`:"media-src * data: blob:",E?`font-src data: ${_}`:"font-src data:",$?`connect-src ${f.join(" ")}`:"connect-src 'none'",w?`frame-src ${l.join(" ")}`:"frame-src 'none'","worker-src blob:","form-action 'none'",d?`base-uri ${c.join(" ")}`:"base-uri 'none'"].join("; ")}var mn0,ubf;var an0=N(()=>{mn0=["default-src 'none'","script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'","style-src 'unsafe-inline'","img-src * data: blob:","media-src * data: blob:","font-src data:","connect-src 'none'","frame-src 'none'","worker-src blob:","form-action 'none'","base-uri 'none'"].join("; ");ubf=/^https?:\/\/(\*\.)?[a-zA-Z0-9._-]+(:\d+)?\/?$/});function fbf(i){let u=i.lastFailureAt-i.firstFailureAt;return i.count>=kl0&&u>=jl0}class b1u{options;kv=null;codec=pci();constructor(i){this.options=i}async init(){let i=this.options.getJetStream();if(!i)return;this.kv=await new sn0.Kvm(i).create(lbf,{storage:on0.StorageType.Memory,ttl:pn0.nanos(Xl0)})}async recordFailure(i){if(!this.kv)return H1u;let u=Date.now();for(let t=0;t<cbf;t++)try{let f=await this.kv.get(i);if(!(f&&f.operation!=="DEL"&&f.operation!=="PURGE"&&f.value?.length)){let $={count:1,firstFailureAt:u,lastFailureAt:u};return await this.kv.create(i,this.codec.encode($)),{count:$.count,shouldDisable:!1}}let c=this.codec.decode(f.value),E={count:c.count+1,firstFailureAt:c.firstFailureAt,lastFailureAt:u};return await this.kv.update(i,this.codec.encode(E),f.revision),{count:E.count,shouldDisable:fbf(E)}}catch{}return H1u}async recordSuccess(i){if(!this.kv)return;try{await this.kv.delete(i)}catch{}}teardown(){this.kv=null}}class Wa{async recordFailure(){return H1u}async recordSuccess(){}teardown(){}}function R1u(i){ik0=i??new Wa}function C1u(){return ik0}var on0,sn0,pn0,H1u,lbf="DECOCMS_CONN_CIRCUIT",cbf=5,ik0;var M1u=N(()=>{on0=k(e2(),1),sn0=k(Smi(),1),pn0=k(DO(),1),H1u={count:0,shouldDisable:!1};ik0=new Wa});function uk0(i){if(!i)return{decision:"skip"};if(i.startsWith("notifications/"))return{decision:"skip"};if($bf.has(i))return{decision:"skip"};let u=Ebf[i];if(u)return{decision:"skip-if-list-cached",listType:u};return{decision:"probe"}}async function tk0(i){if(i.method!=="POST")return;let u=i.headers.get("content-length");if(u&&Number(u)>wbf)return;try{let t=await i.clone().json(),l=(Array.isArray(t)?t[0]:t)?.method;return typeof l==="string"?l:void 0}catch{return}}var Ebf,$bf,wbf=64000;var fk0=N(()=>{Ebf={"tools/list":"tools","resources/list":"resources","prompts/list":"prompts"},$bf=new Set(["ping"])});function q1u(i){let u=Object.values(i),[t]=u;if(!t)return null;return u.find((f)=>f.sandboxProviderKind!=="user-desktop")??t}async function vbf(i){if(lk0.has(i))return!0;let u=Date.now();if(u-(ck0.get(i)??0)<_bf)return!1;ck0.set(i,u);try{let t=await fetch(i,{method:"POST",headers:{"content-type":"application/json",accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mesh-dev-probe",version:"1"}}}),signal:AbortSignal.timeout(4000)}),f=t.ok?await t.text():"",l=/"protocolVersion"|"serverInfo"/.test(f);if(l)lk0.add(i);return l}catch{return!1}}async function NK(i,u,t,f){let l=i.organization?.id;if(!l)return null;let c=await i.storage.virtualMcps.findById(u);if(!c||c.organization_id!==l)return null;let E=c.metadata??{},$=B6(E)[t];if(!$)return null;let w=f?hbf($,f):Dbf($);if(!w?.entry.previewUrl)return null;let d=await gbf(i,E,l,t),_=w.entry.previewUrl.replace(/\/+$/,""),v=d?`${_}/api/mcp?token=${encodeURIComponent(d)}`:`${_}/api/mcp`;if(!await vbf(v))return null;return{id:Jqi(u),organization_id:l,title:`${c.title} (dev)`,description:"Ephemeral sandbox dev-server connection",icon:c.icon??null,app_name:c.title??null,app_id:null,slug:null,connection_type:"HTTP",connection_url:v,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDevConnection:!0,virtualMcpId:u,branch:w.branch},tools:null,bindings:null,status:"active",created_at:new Date().toISOString(),updated_at:new Date().toISOString(),created_by:"system"}}function hbf(i,u){let t=q1u(r3(i[u]));return t?{branch:u,entry:t}:null}function Dbf(i){let u=null;for(let[t,f]of Object.entries(i)){let l=q1u(r3(f));if(!l)continue;if(!u||(l.createdAt??0)>(u.entry.createdAt??0))u={branch:t,entry:l}}return u}async function gbf(i,u,t,f){let l=mBi(u)?.find((c)=>c.key===dbf);if(!l)return null;if(l.kind==="literal")return l.value||null;try{let{value:c}=await i.storage.secrets.resolveById(l.secretId,t,f);return c||null}catch(c){if(c instanceof xv||c instanceof qL)return null;throw c}}var dbf="MCP_AUTH_TOKEN",lk0,ck0,_bf=1e4;var AFi=N(()=>{gf();G$i();yQ();Bd();lk0=new Set,ck0=new Map});import{SpanStatusCode as GFi}from"@opentelemetry/api";async function nFi(i,u){let t=i.get("meshContext");try{let f=i.req.header("x-org-id"),l=i.req.header("x-org-slug"),c=f?f:l?await t.db.selectFrom("organization").select("id").where("slug","=",l).executeTakeFirst().then((O)=>O?.id):null,E=u?u:c?Z6i(c):null;if(!E)return i.json({error:"Agent ID or organization ID is required"},400);let $=await t.tracer.startActiveSpan("studio.virtual_mcp.lookup",{attributes:{"virtual_mcp.id":E}},async(O)=>{try{let Z=await t.storage.virtualMcps.findById(E,c??void 0);return O.setStatus({code:GFi.OK}),Z}catch(Z){throw O.setStatus({code:GFi.ERROR,message:Z.message}),O.recordException(Z),Z}finally{O.end()}});if(!$)return i.json({error:"Agent not found"},404);if(c&&$.organization_id!==c)return i.json({error:"Agent not found"},404);if($.status!=="active")return i.json({error:`Agent is inactive: ${$.id??"Decopilot"}`},503);if(t.organization?.id&&$.organization_id!==t.organization.id)return i.json({error:"Forbidden: Agent does not belong to your organization"},403);t.connectionId=$.id??void 0;let w=await t.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",$.organization_id).executeTakeFirst();if(w)t.organization={id:w.id,slug:w.slug,name:w.name};let d=Vu(t),_=null;if($.id&&d&&B6($.metadata)[d])_=await NK(t,$.id,d,i.req.query("branch")??void 0).catch(()=>null);let v=await t.tracer.startActiveSpan("studio.virtual_mcp.create_client",{attributes:{"virtual_mcp.id":$.id??"decopilot"}},async(O)=>{try{let Z=await sD($,t,"passthrough",!1,{includeSkillsCatalog:!0,additionalConnections:_?[_]:[]});return O.setStatus({code:GFi.OK}),Z}catch(Z){throw O.setStatus({code:GFi.ERROR,message:Z.message}),O.recordException(Z),Z}finally{O.end()}}),h={name:$.id??"Decopilot",version:"1.0.0",title:$.title??void 0,description:$.description??void 0,icons:$.icon?[{src:$.icon}]:void 0},D=GD(v,h,{capabilities:{tools:{},resources:{},prompts:{}},instructions:v.getInstructions(),toolCallTimeoutMs:GW}),g=new D3({enableJsonResponse:i.req.header("Accept")?.includes("application/json")??!1});return await D.connect(g),await fh(D,g,i.req.raw,`virtual-mcp:${$.id??"decopilot"}`,{onClose:()=>v.close()})}catch(f){let l=f;return console.error("[virtual-mcp] Error handling virtual MCP request:",l),i.json({error:"Internal server error",message:l.message},500)}}var kFi=()=>{let i=new zu;return i.all("/gateway/:virtualMcpId?",async(u)=>{let t=u.req.param("virtualMcpId")||u.req.header("x-virtual-mcp-id");return nFi(u,t)}),i.all("/virtual-mcp/:virtualMcpId?",async(u)=>{let t=u.req.param("virtualMcpId")||u.req.header("x-virtual-mcp-id");return nFi(u,t)}),i};var jFi=N(()=>{gf();nQ();Vf();Sz();AFi();Bd();Ya()});import{SpanStatusCode as XFi}from"@opentelemetry/api";var Ek0=(i,u)=>{if(i instanceof bL)return u.header("Retry-After",String(Math.ceil(i.cooldownRemainingMs/1000))),u.json({error:i.message},503);if(i.message.includes("not found"))return u.json({error:i.message},404);if(i.message.includes("does not belong to the active organization"))return u.json({error:"Connection not found"},404);if(i.message.includes("inactive"))return u.json({error:i.message},503);return u.json({error:"Internal server error",message:i.message},500)},KFi=()=>{let i=new zu;return i.all("/",async(u)=>{return nFi(u,void 0)}),i.get("/:connectionId/ui-resource",async(u)=>{let t=u.get("meshContext"),f=u.req.param("connectionId"),l=u.req.query("uri");if(!l)return u.json({error:"uri query param is required"},400);if(!t.organization?.id)return u.json({error:"Organization context is required"},403);let c=B6i(f),E;if(c){let D=Vu(t);if(!D)return u.json({error:"Authentication required"},401);if(E=await NK(t,c,D,u.req.query("branch")??void 0),!E)return u.json({error:"Dev server not running"},503)}else if(E=await t.storage.connections.findById(f,t.organization.id),!E||E.organization_id!==t.organization.id)return u.json({error:"Connection not found"},404);let $=D9(E,t,!1,Tl()??void 0),w,d;try{let g=(await $.readResource({uri:l})).contents?.[0];w=g?.text,d=g?._meta?.ui?.csp}catch(D){return u.json({error:D.message},502)}finally{await $.close().catch(()=>{})}if(typeof w!=="string")return u.json({error:"Resource has no text content"},404);let _=en0(w,{resourceCsp:d}),v=`"${Bun.hash(_).toString(36)}"`,h="private, no-cache";if(u.req.header("if-none-match")===v)return new Response(null,{status:304,headers:{ETag:v,"Cache-Control":h}});return new Response(_,{headers:{"Content-Type":"text/html; charset=utf-8",ETag:v,"Cache-Control":h}})}),i.all("/:connectionId",async(u)=>{let t=u.req.param("connectionId"),f=u.get("meshContext");if(t.endsWith("_self")){let c=t.slice(0,-5);if(!f.organization||f.organization.id!==c)return u.json({error:"Connection not found"},404);let E=await kQ(f),$=new D3({enableJsonResponse:u.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await E.connect($),OK.run(f,()=>fh(E,$,u.req.raw,`mcp:self:${t}`))}let l=B6i(t);if(l){if(!f.organization?.id)return u.json({error:"Organization context is required"},403);let c=Vu(f);if(!c)return u.json({error:"Authentication required"},401);let E=await NK(f,l,c,u.req.query("branch")??void 0);if(!E)return u.json({error:"Dev server not running"},503);let $=i3i(E,f,!1),w=new D3({enableJsonResponse:u.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await $.connect(w),fh($,w,u.req.raw,`mcp:dev:${t}`)}try{try{if(!f.organization?.id)return u.json({error:"Organization context is required"},403);let c=await f.tracer.startActiveSpan("studio.connection.lookup",{attributes:{"connection.id":t}},async(g)=>{m3(u,"mcp.find_connection");try{let O=await f.storage.connections.findById(t,f.organization.id);return g.setStatus({code:XFi.OK}),O}catch(O){throw g.setStatus({code:XFi.ERROR,message:O.message}),g.recordException(O),O}finally{bw(u,"mcp.find_connection"),g.end()}});if(!c)throw Error("Connection not found");if(c.organization_id!==f.organization.id)throw Error("Connection does not belong to the active organization");let E=!1;if(c.status!=="active"){let g=Date.now()-new Date(c.updated_at).getTime();if(c.status==="error"&&!!c.connection_url&&g>=ori)E=!0;else{if(c.status==="error"&&c.connection_url){let Z=ori-g;u.header("Retry-After",String(Math.ceil(Z/1000)))}throw Error(`Connection inactive: ${c.status}`)}}let $=await tk0(u.req.raw),{decision:w,listType:d}=uk0($),_=w==="probe";if(w==="skip-if-list-cached"&&d){let g=Tl();_=g?await g.get(d,t)===null:!0}if(E)_=!0;if(c.connection_url&&_)g$i(t),await f.tracer.startActiveSpan("studio.connection.handshake",{attributes:{"connection.id":t,"connection.url":c.connection_url}},async(g)=>{m3(u,"mcp.client_handshake");try{if(await yc(c,f,!1),N$i(t),C1u().recordSuccess(t),E)await f.storage.connections.update(t,{status:"active"}),console.info("[proxy] auto-recovered connection after successful re-probe",{connectionId:t,org:f.organization?.slug});g.setStatus({code:XFi.OK})}catch(O){throw g.setStatus({code:XFi.ERROR,message:O.message}),g.recordException(O),O}finally{bw(u,"mcp.client_handshake"),g.end()}});m3(u,"mcp.create_server");let v=i3i(c,f,!1);bw(u,"mcp.create_server");let h=new D3({enableJsonResponse:u.req.raw.headers.get("Accept")?.includes("application/json")??!1});m3(u,"mcp.server_connect"),await v.connect(h),bw(u,"mcp.server_connect"),m3(u,"mcp.handle_request");let D=await fh(v,h,u.req.raw,`mcp:${t}`);return bw(u,"mcp.handle_request"),D}catch(c){if(c instanceof bL)throw c;let E=await f.storage.connections.findById(t,f.organization?.id);if(E?.connection_url){let $=await Diu({error:c,reqUrl:new URL(u.req.raw.url),connectionId:t,connectionUrl:E.connection_url,headers:{},orgSlug:f.organization?.slug});if($)return $;O$i(t);let{shouldDisable:w}=await C1u().recordFailure(t);if(w&&E.status==="active")await f.storage.connections.update(t,{status:"error"}),console.warn("[proxy] auto-disabled connection after sustained failures",{connectionId:t,org:f.organization?.slug,error:c.message})}throw c}}catch(c){return Ek0(c,u)}}),i.all("/:connectionId/call-tool/:toolName",async(u)=>{let t=u.req.param("connectionId"),f=u.req.param("toolName"),l=u.get("meshContext");try{let c=await l.storage.connections.findById(t,l.organization?.id);if(!c)return u.json({error:"Connection not found"},404);let $=await(await yc(c,l,!1)).callTool({name:f,arguments:await u.req.json()});if($.isError)return new Response(JSON.stringify($.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify($.structuredContent??$.content),{headers:{"Content-Type":"application/json"}})}catch(c){let E=await l.storage.connections.findById(t,l.organization?.id);if(E?.connection_url){let $=await Diu({error:c,reqUrl:new URL(u.req.raw.url),connectionId:t,connectionUrl:E.connection_url,headers:{},orgSlug:l.organization?.slug});if($)return $}return Ek0(c,u)}}),i};var JFi=N(()=>{_B();nQ();Vf();bVi();NB();Ya();he();Cw();Jr();an0();Rai();M1u();fk0();jFi();AFi();gf();eai()});async function yg(i,u,t,f){if(u.type!=="event"||!u.connection_id)return{success:!0};let l=await i.storage.connections.findById(u.connection_id);if(!l)return{success:!0};let c=i.organization?.id,E=i.organization?.slug;try{let $=await yc(l,i,!0),w=Kiu.forClient(mai($)),d,_,v;if(t&&f&&c){let B=await f.generateTokenPair();_=B.plaintext,v=B.hash,d=E?`${i.baseUrl}/api/${E}/trigger-callback`:`${i.baseUrl}/api/trigger-callback`}let h=5000,D=!1,g=new Promise((B,F)=>setTimeout(()=>{D=!0,F(Error("TRIGGER_CONFIGURE timeout"))},h)),O;try{O=await Promise.race([w.TRIGGER_CONFIGURE({type:u.event_type,params:JSON.parse(u.params??"{}"),enabled:t,callbackUrl:d,callbackToken:_}),g])}catch(B){if(D&&t&&f&&c&&v)await f.persistTokenHash(c,u.connection_id,v);return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE threw on connection=${u.connection_id} type=${u.event_type}:`,B),{success:!1,error:String(B)}}let Z=O;if(!Z||Z.success!==!0)return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE did not return success=true on connection=${u.connection_id} type=${u.event_type}. Raw payload:`,JSON.stringify(O)),{success:!1,error:`TRIGGER_CONFIGURE did not return success=true (got ${JSON.stringify(O)})`};try{if(t&&f&&c&&v)await f.persistTokenHash(c,u.connection_id,v);if(!t&&f&&c)await f.deleteByConnection(u.connection_id,c)}catch(B){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",B)}return{success:!0}}catch($){return{success:!1,error:String($)}}}var La=N(()=>{_B();JFi();Jiu()});import{z as i1}from"zod";var V1u;var $k0=N(()=>{gK();du();t8();La();V1u=di({name:"AUTOMATION_UPDATE",description:"Update an automation's config. Toggling active state reconfigures event triggers on MCPs.",annotations:{title:"Update Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:i1.object({id:i1.string(),name:i1.string().min(1).max(255).optional(),active:i1.boolean().optional(),messages:i1.union([i1.string(),i1.array(i1.looseObject({id:i1.string().optional(),role:i1.enum(["user","assistant","system"]),parts:i1.array(i1.record(i1.string(),i1.unknown())),metadata:i1.unknown().optional()}))]).optional(),models:i1.object({tier:F3i,modelId:i1.string().optional(),credentialId:i1.string().optional()}).loose().optional(),tools:i1.array(i1.string()).nullable().optional(),maxAgentSteps:i1.number().int().min(1).max(100).nullable().optional(),temperature:i1.number().optional()}),outputSchema:i1.object({id:i1.string(),name:i1.string(),active:i1.boolean(),updated_at:i1.string()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findById(i.id,t.id);if(!f)throw Error("Automation not found");let l={};if(i.name!==void 0)l.name=i.name;if(i.active!==void 0)l.active=i.active;if(i.messages!==void 0){let E=FFi(i.messages);l.messages=JSON.stringify(E)}if(i.models!==void 0)l.models=JSON.stringify(i.models);if(i.tools!==void 0)l.tools=i.tools===null?null:JSON.stringify(i.tools);if(i.temperature!==void 0)l.temperature=i.temperature;if(i.maxAgentSteps!==void 0)l.max_agent_steps=i.maxAgentSteps;let c=await u.storage.automations.update(i.id,t.id,l);if(i.active!==void 0&&i.active!==f.active){let E=await u.storage.automations.listTriggers(c.id),$=E.filter((w)=>w.type==="event");await Promise.allSettled($.map(async(w)=>{let d=await yg(u,w,i.active);if(!d.success)console.warn(`Failed to configure trigger ${w.id}: ${d.error}`)})),await Cn0(E,i.active)}return{id:c.id,name:c.name,active:c.active,updated_at:c.updated_at}}})});import{z as SFi}from"zod";var r1u;var wk0=N(()=>{gK();m4();du();La();r1u=di({name:"AUTOMATION_DELETE",description:"Permanently delete an automation. Disables all event triggers on connected MCPs first.",annotations:{title:"Delete Automation",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:SFi.object({id:SFi.string()}),outputSchema:SFi.object({success:SFi.boolean()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);if(await u.access.check(),!await u.storage.automations.findById(i.id,t.id))throw Error("Automation not found");let l=await u.storage.automations.listTriggers(i.id),c=l.filter((w)=>w.type==="event");await Promise.allSettled(c.map(async(w)=>{let d=await yg(u,w,!1);if(!d.success)console.warn(`Failed to disable trigger ${w.id}: ${d.error}`)}));let{success:E}=await u.storage.automations.delete(i.id,t.id);await Mn0(l);let $=Vu(u);if($)ou.capture({distinctId:$,event:"automation_deleted",groups:{organization:t.id},properties:{organization_id:t.id,automation_id:i.id,trigger_count:l.length}});return{success:E}}})});function jQ(i){return`webhook_${i}`}function YFi(i,u,t){if(!u)throw Error("Cannot build webhook URL: organization slug missing from request context");return`${i}/api/${u}/webhooks/${t}`}import{z as Xc}from"zod";var dk0=300000,Nbf=10,m1u;var _k0=N(()=>{j1u();gK();k1u();du();La();m1u=di({name:"AUTOMATION_TRIGGER_ADD",description:"Add a cron, event, or webhook trigger to an automation. For webhook triggers the response includes a one-time URL + secret token.",annotations:{title:"Add Trigger",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:Xc.object({automation_id:Xc.string(),type:Xc.enum(["cron","event","webhook"]),cron_expression:Xc.string().optional(),connection_id:Xc.string().optional(),event_type:Xc.string().optional(),params:Xc.record(Xc.string(),Xc.string()).optional()}),outputSchema:Xc.object({id:Xc.string(),automation_id:Xc.string(),type:Xc.enum(["cron","event","webhook"]),created_at:Xc.string(),webhook:Xc.object({url:Xc.string(),token:Xc.string()}).nullable().optional()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findById(i.automation_id,t.id);if(!f)throw Error("Automation not found");if(i.type==="cron"){if(!i.cron_expression)throw Error("cron_expression is required for cron triggers");let w=new TFi(i.cron_expression,{timezone:"UTC"}).nextRuns(Nbf);if(w.length===0)throw Error("Cron expression has no future runs");let d=1/0;for(let _=1;_<w.length;_++){let v=w[_].getTime()-w[_-1].getTime();if(v<d)d=v}if(w.length>=2&&Number.isFinite(d)&&d<dk0){let _=dk0/1000;throw Error(`Cron fires too frequently \u2014 minimum interval is ${_}s between runs (observed ${d/1000}s)`)}}if(i.type==="event"){if(!i.connection_id)throw Error("connection_id is required for event triggers");if(!i.event_type)throw Error("event_type is required for event triggers");if(!await u.storage.connections.findById(i.connection_id,t.id))throw Error("Connection not found");let w={id:"",automation_id:i.automation_id,type:"event",cron_expression:null,connection_id:i.connection_id,event_type:i.event_type,params:i.params?JSON.stringify(i.params):null,last_run_at:null,next_run_at:null,api_key_id:null,created_at:""},d=await yg(u,w,!0,u.storage.triggerCallbackTokens);if(!d.success)throw Error(`Failed to configure trigger on connection: ${d.error}`)}let l=i.type==="cron"&&i.cron_expression?UFi(i.cron_expression,new Date):null,c=await u.storage.automations.addTrigger({automation_id:i.automation_id,type:i.type,cron_expression:i.type==="cron"?i.cron_expression:null,connection_id:i.type==="event"?i.connection_id:null,event_type:i.type==="event"?i.event_type:null,params:i.params?JSON.stringify(i.params):null,next_run_at:l?.toISOString()??null}),E=null;if(i.type==="webhook")try{let $=await u.boundAuth.apiKey.create({name:`webhook:${f.name}:${c.id.slice(0,8)}`,permissions:{[jQ(c.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:f.id,trigger_id:c.id}});await u.storage.automations.setTriggerApiKeyId(c.id,$.id),E={url:YFi(u.baseUrl,t.slug,c.id),token:$.key}}catch($){await u.storage.automations.removeTrigger(c.id,c.automation_id);let w=$ instanceof Error?$.message:String($);throw Error(`Failed to mint webhook token: ${w}`)}return await xFi(c,f),{id:c.id,automation_id:c.automation_id,type:c.type,created_at:c.created_at,webhook:E}}})});import{z as WFi}from"zod";var e1u;var vk0=N(()=>{gK();du();La();e1u=di({name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove a trigger from an automation. Disables associated event listeners on MCPs.",annotations:{title:"Remove Trigger",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:WFi.object({trigger_id:WFi.string()}),outputSchema:WFi.object({success:WFi.boolean()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findTriggerById(i.trigger_id);if(!f)throw Error("Trigger not found");if(!await u.storage.automations.findById(f.automation_id,t.id))throw Error("Automation not found");if(f.type==="event"){let E=await yg(u,f,!1,u.storage.triggerCallbackTokens);if(!E.success)console.warn(`Failed to disable trigger ${f.id}: ${E.error}`)}let{success:c}=await u.storage.automations.removeTrigger(f.id,f.automation_id);if(f.type==="cron")await z1u(f.id);if(f.type==="webhook"&&f.api_key_id)try{await u.boundAuth.apiKey.delete(f.api_key_id)}catch(E){console.warn(`[trigger-remove] failed to delete api key ${f.api_key_id} for trigger ${f.id}:`,E instanceof Error?E.message:E)}return{success:c}}})});import{z as XQ}from"zod";var a1u;var hk0=N(()=>{du();a1u=di({name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger. Returns a new token; the old token is revoked.",annotations:{title:"Rotate Webhook Token",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:XQ.object({trigger_id:XQ.string()}),outputSchema:XQ.object({trigger_id:XQ.string(),url:XQ.string(),token:XQ.string()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findTriggerById(i.trigger_id);if(!f)throw Error("Trigger not found");if(f.type!=="webhook")throw Error("Trigger is not a webhook trigger");let l=await u.storage.automations.findById(f.automation_id,t.id);if(!l)throw Error("Automation not found");let c=f.api_key_id,E=await u.boundAuth.apiKey.create({name:`webhook:${l.name}:${f.id.slice(0,8)}`,permissions:{[jQ(f.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:l.id,trigger_id:f.id}});if(await u.storage.automations.setTriggerApiKeyId(f.id,E.id),c)try{await u.boundAuth.apiKey.delete(c)}catch($){console.warn(`[trigger-rotate] failed to delete old key ${c} for trigger ${f.id}:`,$ instanceof Error?$.message:$)}return{trigger_id:f.id,url:YFi(u.baseUrl,t.slug,f.id),token:E.key}}})});import{z as KQ}from"zod";var o1u;var Dk0=N(()=>{m4();du();o1u=di({name:"AUTOMATION_RUN",description:"Manually trigger an automation run. Bypasses configured triggers.",annotations:{title:"Run Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:KQ.object({id:KQ.string()}),outputSchema:KQ.object({threadId:KQ.string().optional(),error:KQ.string().optional(),skipped:KQ.string().optional()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);if(await u.access.check(),!u.automationRunner)throw Error("Automation runner not available");let f=Vu(u);if(!f)throw Error("User ID not available");let l=await u.automationRunner(i.id,t.id,f);if(ou.capture({distinctId:f,event:"automation_run",groups:{organization:t.id},properties:{organization_id:t.id,automation_id:i.id,thread_id:"taskId"in l?l.taskId:void 0,status:"skipped"in l?"skipped":("error"in l)?"error":"started",skip_reason:"skipped"in l?l.skipped:void 0,error_message:"error"in l?l.error:void 0}}),"skipped"in l)return{skipped:l.skipped};if("error"in l)return{threadId:l.taskId,error:l.error};return{threadId:l.taskId}}})});import{z as a6}from"zod";var Obf=500,s1u;var gk0=N(()=>{G1();du();s1u=di({name:"AUTOMATION_RUN_STATS",description:"Aggregate run counts (by status) and LLM token/cost totals for a single automation.",annotations:{title:"Automation Run Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:a6.object({automation_id:a6.string(),startDate:a6.string().datetime().optional().describe("Filter runs at or after this ISO timestamp"),endDate:a6.string().datetime().optional().describe("Filter runs at or before this ISO timestamp")}),outputSchema:a6.object({runs:a6.object({total:a6.number(),completed:a6.number(),failed:a6.number(),inProgress:a6.number()}),usage:a6.object({calls:a6.number(),inputTokens:a6.number(),outputTokens:a6.number(),totalTokens:a6.number(),costUsd:a6.number(),sampledRuns:a6.number(),truncated:a6.boolean()})}),handler:async(i,u)=>{Yi(u);let t=Bi(u);if(await u.access.check(),await L3(),!await u.storage.automations.findById(i.automation_id,t.id))throw Error("Automation not found");let l=await u.storage.automations.getRunStats(i.automation_id,t.id,{startDate:i.startDate,endDate:i.endDate}),c=await u.storage.automations.listRunThreadIds(i.automation_id,t.id,{startDate:i.startDate,endDate:i.endDate,limit:Obf}),E={calls:0,inputTokens:0,outputTokens:0,totalTokens:0,costUsd:0,sampledRuns:c.length,truncated:l.total>c.length};if(c.length>0){let $=await u.storage.monitoring.queryThreadUsage({organizationId:t.id,connectionId:"decopilot",threadIds:c,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0});for(let w of $)E.calls+=w.calls,E.inputTokens+=w.inputTokens,E.outputTokens+=w.outputTokens,E.totalTokens+=w.totalTokens,E.costUsd+=w.costUsd}return{runs:l,usage:E}}})});var Nk0=N(()=>{Xn0();Kn0();Jn0();$k0();wk0();_k0();vk0();hk0();Dk0();gk0()});import{z as Tg}from"zod";var Bbf,Fbf,p1u;var Ok0=N(()=>{du();Bbf=Tg.object({id:Tg.string().min(1)}),Fbf=Tg.object({user:Tg.object({id:Tg.string(),name:Tg.string(),email:Tg.string(),image:Tg.string().nullable()}).nullable()}),p1u=di({name:"USER_GET",description:"Get a user's profile by ID. Only returns users who share an organization with the caller.",annotations:{title:"Get User",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Bbf,outputSchema:Fbf,handler:async(i,u)=>{await u.access.check(),Yi(u);let t=Vu(u);if(!t)throw Error("Authentication required");let f=await u.storage.users.findById(i.id,t);if(!f)return{user:null};return{user:{id:f.id,name:f.name,email:f.email,image:f.image??null}}}})});var Zk0=N(()=>{Ok0()});import g3 from"zod";var ilu;var Bk0=N(()=>{du();oD();ilu=di({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:g3.object({}),outputSchema:g3.object({providers:g3.array(g3.object({id:g3.string(),name:g3.string(),description:g3.string(),logo:g3.string().optional(),supportedMethods:g3.array(g3.enum(["api-key","oauth-pkce"])),supportsTopUp:g3.boolean().optional(),supportsCredits:g3.boolean().optional(),supportsProvision:g3.boolean().optional()}))}),handler:async(i,u)=>{return Yi(u),Bi(u),await u.access.check(),{providers:Object.values(Ic()).filter((f)=>!!f).map((f)=>({...f.info,supportedMethods:f.supportedMethods,supportsTopUp:!!f.getTopUpUrl,supportsCredits:!!f.getCreditsBalance,supportsProvision:!!f.provisionKey}))}}})});function Tbf(i){if(!i)return;if(!("models"in i))return;return i.models??void 0}function Fk0(i,u){if(!i)return!0;if(i.includes("*:*"))return!0;return i.some((t)=>t.startsWith(`${u}:`))}function P8(i,u,t){if(!i)return!0;return i.includes("*:*")||i.includes(`${u}:*`)||i.includes(`${u}:${t}`)}function LFi(i,u){if(i===void 0)return u;let t=u;if(t.image&&!P8(i,t.image.credentialId,t.image.id)){let{image:f,...l}=t;t=l}if(t.webSearch&&!P8(i,t.webSearch.credentialId,t.webSearch.id)){let{webSearch:f,...l}=t;t=l}if(t.deepResearch&&!P8(i,t.deepResearch.credentialId,t.deepResearch.id)){let{deepResearch:f,...l}=t;t=l}return t}function yk0(i){if(!i)return{allowAll:!0,models:{}};if(i.includes("*:*"))return{allowAll:!0,models:{}};let u={};for(let t of i){let f=t.indexOf(":");if(f===-1)continue;let l=t.slice(0,f),c=t.slice(f+1);if(!u[l])u[l]=[];u[l].push(c)}return{allowAll:!1,models:u}}async function x8(i,u,t){if(!t||id.includes(t))return;let f=await i.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",u).where("role","=",t).executeTakeFirst();if(!f?.permission)return;try{let l=JSON.parse(f.permission);return Tbf(l)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${t}`),[]}}var za=N(()=>{Pv()});var ulu;var Tk0=N(()=>{ulu=[{providerId:"claude-code",modelId:"claude-code:haiku",title:"Claude Code Haiku",description:"Fast and lightweight",capabilities:["text"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:sonnet",title:"Claude Code Sonnet",description:"Balanced performance",capabilities:["text","reasoning"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:opus",title:"Claude Code Opus",description:"Most capable",capabilities:["text","reasoning"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:opus-1m",title:"Claude Code Opus 4.8 1M",description:"Most capable, 1M context window",capabilities:["text","reasoning"],limits:{contextWindow:1e6,maxOutputTokens:null},costs:null}]});var Uk0=N(()=>{Tk0()});var tlu;var Pk0=N(()=>{tlu=[{providerId:"codex",modelId:"codex:gpt-5.5",title:"GPT-5.5",description:"Frontier model for complex coding, research, and real-world work",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4",title:"GPT-5.4",description:"Strong model for everyday coding",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4-mini",title:"GPT-5.4 Mini",description:"Small, fast, and cost-efficient model for simpler coding tasks",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.3-codex-spark",title:"GPT-5.3 Codex Spark",description:"Ultra-fast coding model",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null}]});var xk0=N(()=>{Pk0()});import y6 from"zod";var flu;var Ik0=N(()=>{du();za();Uk0();xk0();flu=di({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:y6.object({keyId:y6.string().describe("The provider key ID to use")}),outputSchema:y6.object({models:y6.array(y6.object({providerId:y6.string(),modelId:y6.string(),title:y6.string(),description:y6.string().nullish(),logo:y6.string().nullish(),capabilities:y6.array(y6.string()),limits:y6.object({contextWindow:y6.coerce.number(),maxOutputTokens:y6.coerce.number().nullable()}).nullish(),costs:y6.object({input:y6.coerce.number(),output:y6.coerce.number()}).nullish(),asyncResearch:y6.boolean().optional()}))}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.findById(i.keyId,t.id).catch(()=>null);if(f?.providerId==="claude-code")return{models:ulu};if(f?.providerId==="codex")return{models:tlu};let[l,c]=await Promise.all([u.aiProviders.listModels(i.keyId,t.id),x8(u.db,t.id,u.auth.user?.role)]);return{models:l.filter(($)=>P8(c,i.keyId,$.modelId))}}})});import I8 from"zod";var llu;var Ak0=N(()=>{du();oD();llu=di({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:I8.object({}),outputSchema:I8.object({providers:I8.array(I8.object({id:I8.string(),name:I8.string(),description:I8.string(),logo:I8.string().optional(),keyCount:I8.number()}))}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.list({organizationId:t.id}),l=new Map;for(let E of f)l.set(E.providerId,(l.get(E.providerId)??0)+1);return{providers:[...l.entries()].flatMap(([E,$])=>{let d=Ic()[E];if(!d)return console.warn(`AI provider "${E}" has stored keys but is not in the registry; skipping.`),[];return[{...d.info,keyCount:$}]})}}})});var Ug=N(()=>{gf()});import __ from"zod";var ZK,clu;var Qa=N(()=>{m4();du();Ug();ZK=__.object({id:__.string(),providerId:__.string(),label:__.string(),presetId:__.string().nullable(),createdAt:__.string()}),clu=di({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:__.object({providerId:__.enum(Zc),label:__.string().min(1).max(100),apiKey:__.string().min(1),presetId:__.string().min(1).max(64).optional()}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.create({providerId:i.providerId,label:i.label,apiKey:i.apiKey,organizationId:t.id,createdBy:u.auth.user.id,presetId:i.presetId??null});return ou.capture({distinctId:u.auth.user.id,event:"ai_provider_key_created",groups:{organization:t.id},properties:{organization_id:t.id,provider_id:f.providerId,preset_id:f.presetId,key_id:f.id,label:f.label}}),{id:f.id,providerId:f.providerId,label:f.label,presetId:f.presetId,createdAt:f.createdAt}}})});import zFi from"zod";var JQ=(i,u)=>i&&i.keyId===u?null:i,Ubf=(i,u)=>{let t={tiers:{fast:JQ(i.tiers.fast,u),smart:JQ(i.tiers.smart,u),thinking:JQ(i.tiers.thinking,u),image:JQ(i.tiers.image,u),web_search:JQ(i.tiers.web_search,u),deep_research:JQ(i.tiers.deep_research,u)}},f=t.tiers.fast!==i.tiers.fast||t.tiers.smart!==i.tiers.smart||t.tiers.thinking!==i.tiers.thinking||t.tiers.image!==i.tiers.image||t.tiers.web_search!==i.tiers.web_search||t.tiers.deep_research!==i.tiers.deep_research;return{config:t,changed:f}},Elu;var Gk0=N(()=>{m4();du();Elu=di({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:zFi.object({keyId:zFi.string().describe("The provider key ID to delete")}),outputSchema:zFi.object({success:zFi.boolean()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.organizationSettings.get(t.id);if(f?.simple_mode){let{config:l,changed:c}=Ubf(f.simple_mode,i.keyId);if(c)await u.storage.organizationSettings.upsert(t.id,{simple_mode:l})}return await u.storage.aiProviderKeys.delete(i.keyId,t.id),ou.capture({distinctId:u.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:t.id},properties:{organization_id:t.id,key_id:i.keyId}}),{success:!0}}})});import QFi from"zod";var $lu;var nk0=N(()=>{du();Qa();$lu=di({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:QFi.object({keyId:QFi.string(),label:QFi.string().min(1).max(100).optional(),apiKey:QFi.string().min(1).optional()}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.updateKey(i.keyId,t.id,{label:i.label,apiKey:i.apiKey});return{id:f.id,providerId:f.providerId,label:f.label,presetId:f.presetId,createdAt:f.createdAt}}})});import SQ from"zod";var wlu;var kk0=N(()=>{du();wlu=di({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:SQ.object({keyId:SQ.string()}),outputSchema:SQ.object({label:SQ.string(),maskedKey:SQ.string(),baseUrl:SQ.string().optional()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);return await u.access.check(),u.storage.aiProviderKeys.getPreview(i.keyId,t.id)}})});import v_ from"zod";var dlu;var jk0=N(()=>{du();Ug();za();dlu=di({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:v_.object({providerId:v_.enum(Zc).optional()}),outputSchema:v_.object({keys:v_.array(v_.object({id:v_.string(),providerId:v_.string(),label:v_.string(),presetId:v_.string().nullable(),createdBy:v_.string(),createdAt:v_.string()}))}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let[f,l]=await Promise.all([u.storage.aiProviderKeys.list({organizationId:t.id,providerId:i.providerId}),x8(u.db,t.id,u.auth.user?.role)]);return{keys:f.filter(($)=>Fk0(l,$.id)).map(({organizationId:$,...w})=>w)}}})});import{createHash as Pbf,randomBytes as xbf}from"crypto";function Xk0(){return xbf(32).toString("base64url")}function Kk0(i){return Pbf("sha256").update(i).digest("base64url")}var Jk0=()=>{};import YQ from"zod";function Sk0(i){return i==="localhost"||i.endsWith(".localhost")||i==="127.0.0.1"||i==="[::1]"||i==="::1"}function Ibf(i){let u=Tu(),t=u.baseUrl??`http://localhost:${u.port}`,f=new URL(i),l=new URL(t);if(f.origin===l.origin)return!0;return f.protocol===l.protocol&&Sk0(f.hostname)&&Sk0(l.hostname)}var _lu;var Yk0=N(()=>{du();Ug();oD();Jk0();Yt();_lu=di({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:YQ.object({providerId:YQ.enum(Zc),callbackUrl:YQ.string().url().refine((i)=>{return Ibf(i)},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:YQ.object({url:YQ.string(),stateToken:YQ.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Ic()[i.providerId];if(!f)throw Error(`Unknown provider: ${i.providerId}`);if(!f.supportedMethods.includes("oauth-pkce")||!f.getOAuthUrl)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let l=Xk0(),c=Kk0(l),E=await u.storage.oauthPkceStates.create(l,t.id,u.auth.user.id),$=new URL(i.callbackUrl);$.searchParams.set("state",E);let w={callbackUrl:$.toString(),codeChallenge:c,codeChallengeMethod:"S256",organizationId:t.id};return{url:f.getOAuthUrl(w),stateToken:E}}})});import Ha from"zod";var vlu;var Wk0=N(()=>{du();Ug();oD();Qa();vlu=di({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:Ha.object({providerId:Ha.enum(Zc),code:Ha.string(),stateToken:Ha.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:Ha.string().min(1).max(100)}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Ic()[i.providerId];if(!f)throw Error(`Unknown provider: ${i.providerId}`);if(!f.supportedMethods.includes("oauth-pkce")||!f.exchangeOAuthCode)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let l=Vu(u);if(!l)throw Error("Unable to determine user ID");let c=await u.storage.oauthPkceStates.consume(i.stateToken,t.id,l),{apiKey:E}=await f.exchangeOAuthCode({code:i.code,codeVerifier:c,codeChallengeMethod:"S256"}),$=await u.storage.aiProviderKeys.upsert({providerId:i.providerId,label:i.label,apiKey:E,organizationId:t.id,createdBy:l});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import Lk0 from"zod";var hlu;var zk0=N(()=>{du();Ug();oD();cZ();Qa();hlu=di({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:Lk0.object({providerId:Lk0.enum(Zc)}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("Unable to determine user ID");let l=Ic()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.provisionKey)throw Error(`Provider ${i.providerId} does not support key provisioning`);let c=await Y7(f),E=await l.provisionKey(c,t.id),$=await u.storage.aiProviderKeys.upsert({providerId:i.providerId,label:"Auto-provisioned",apiKey:E,organizationId:t.id,createdBy:f});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import WQ from"zod";var Dlu;var Qk0=N(()=>{du();Ug();oD();cZ();Dlu=di({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:WQ.object({providerId:WQ.enum(Zc),amountCents:WQ.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:WQ.enum(["usd","brl"]).default("usd")}),outputSchema:WQ.object({url:WQ.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("Unable to determine user ID");let l=Ic()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.getTopUpUrl)throw Error(`Provider ${i.providerId} does not support credit top-ups`);let c=await Y7(f,u.auth.user?.email);return{url:await l.getTopUpUrl(c,t.id,i.amountCents,i.currency)}}})});import HFi from"zod";var glu;var Hk0=N(()=>{du();Ug();oD();cZ();glu=di({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:HFi.object({providerId:HFi.enum(Zc)}),outputSchema:HFi.object({balanceCents:HFi.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("Unable to determine user ID");let l=Ic()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.getCreditsBalance)throw Error(`Provider ${i.providerId} does not expose a credits balance`);let c=await Y7(f);return l.getCreditsBalance(c,t.id)}})});var bk0=N(()=>{Bk0();Ik0();Ak0();Qa();Gk0();nk0();kk0();jk0();Yk0();Wk0();zk0();Qk0();Hk0()});import lh from"zod";var bFi;var Nlu=N(()=>{bFi=lh.object({id:lh.string(),scope:lh.enum(["user","organization"]),userId:lh.string().nullable(),name:lh.string(),description:lh.string().nullable(),createdBy:lh.string(),createdAt:lh.string(),updatedBy:lh.string(),updatedAt:lh.string()})});import ba from"zod";var Olu;var Rk0=N(()=>{du();Nlu();Olu=di({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:ba.object({scope:ba.enum(["user","organization"]),name:ba.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:ba.string().min(1),description:ba.string().max(500).optional()}),outputSchema:bFi,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=u.auth.user.id,l=i.scope==="user"?{kind:"user",userId:f}:{kind:"organization"};return await u.storage.secrets.create({organizationId:t.id,scope:l,name:i.name,value:i.value,description:i.description??null,createdBy:f})}})});import RFi from"zod";var Zlu;var Ck0=N(()=>{du();Nlu();Zlu=di({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:RFi.object({scope:RFi.enum(["user","organization"]).optional()}),outputSchema:RFi.object({secrets:RFi.array(bFi)}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=u.auth.user.id,l=i.scope==="user"?{kind:"user",userId:f}:i.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await u.storage.secrets.list({organizationId:t.id,callerUserId:f,scope:l})}}})});var Mk0=N(()=>{Rk0();Ck0()});var BK=K((Jbf)=>{var Blu;(function(i){i.HEADER="header",i.QUERY="query"})(Blu||(Blu={}));var Flu;(function(i){i.HEADER="header",i.QUERY="query"})(Flu||(Flu={}));var ylu;(function(i){i.HTTP="http",i.HTTPS="https"})(ylu||(ylu={}));var Ra;(function(i){i.MD5="md5",i.CRC32="crc32",i.CRC32C="crc32c",i.SHA1="sha1",i.SHA256="sha256"})(Ra||(Ra={}));var nbf=(i)=>{let u=[];if(i.sha256!==void 0)u.push({algorithmId:()=>Ra.SHA256,checksumConstructor:()=>i.sha256});if(i.md5!=null)u.push({algorithmId:()=>Ra.MD5,checksumConstructor:()=>i.md5});return{addChecksumAlgorithm(t){u.push(t)},checksumAlgorithms(){return u}}},kbf=(i)=>{let u={};return i.checksumAlgorithms().forEach((t)=>{u[t.algorithmId()]=t.checksumConstructor()}),u},jbf=(i)=>{return nbf(i)},Xbf=(i)=>{return kbf(i)},Tlu;(function(i){i[i.HEADER=0]="HEADER",i[i.TRAILER=1]="TRAILER"})(Tlu||(Tlu={}));var Kbf="__smithy_context",Ulu;(function(i){i.PROFILE="profile",i.SSO_SESSION="sso-session",i.SERVICES="services"})(Ulu||(Ulu={}));var Plu;(function(i){i.HTTP_0_9="http/0.9",i.HTTP_1_0="http/1.0",i.TDS_8_0="tds/8.0"})(Plu||(Plu={}));Jbf.AlgorithmId=Ra;Jbf.EndpointURLScheme=ylu;Jbf.FieldPosition=Tlu;Jbf.HttpApiKeyAuthLocation=Flu;Jbf.HttpAuthLocation=Blu;Jbf.IniSectionType=Ulu;Jbf.RequestHandlerProtocol=Plu;Jbf.SMITHY_CONTEXT_KEY=Kbf;Jbf.getDefaultClientConfiguration=jbf;Jbf.resolveDefaultRuntimeConfig=Xbf});var ch=K((abf)=>{var{SMITHY_CONTEXT_KEY:qk0}=BK(),Mbf=(i)=>i[qk0]||(i[qk0]={});class CFi{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(i){this.method=i.method||"GET",this.hostname=i.hostname||"localhost",this.port=i.port,this.query=i.query||{},this.headers=i.headers||{},this.body=i.body,this.protocol=i.protocol?i.protocol.slice(-1)!==":"?`${i.protocol}:`:i.protocol:"https:",this.path=i.path?i.path.charAt(0)!=="/"?`/${i.path}`:i.path:"/",this.username=i.username,this.password=i.password,this.fragment=i.fragment}static clone(i){let u=new CFi({...i,headers:{...i.headers}});if(u.query)u.query=qbf(u.query);return u}static isInstance(i){if(!i)return!1;let u=i;return"method"in u&&"protocol"in u&&"hostname"in u&&"path"in u&&typeof u.query==="object"&&typeof u.headers==="object"}clone(){return CFi.clone(this)}}function qbf(i){return Object.keys(i).reduce((u,t)=>{let f=i[t];return{...u,[t]:Array.isArray(f)?[...f]:f}},{})}class Vk0{statusCode;reason;headers;body;constructor(i){this.statusCode=i.statusCode,this.reason=i.reason,this.headers=i.headers||{},this.body=i.body}static isInstance(i){if(!i)return!1;let u=i;return typeof u.statusCode==="number"&&typeof u.headers==="object"}}var Vbf=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),rk0=(i,u=!1)=>{if(!u)return Vbf.test(i);let t=i.split(".");for(let f of t)if(!rk0(f))return!1;return!0};function rbf(i){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(i)}var mbf=(i)=>{if(typeof i==="function")return i;let u=Promise.resolve(i);return()=>u};function mk0(i){let u={};if(i=i.replace(/^\?/,""),i)for(let t of i.split("&")){let[f,l=null]=t.split("=");if(f=decodeURIComponent(f),l)l=decodeURIComponent(l);if(!(f in u))u[f]=l;else if(Array.isArray(u[f]))u[f].push(l);else u[f]=[u[f],l]}return u}var MFi=(i)=>{if(typeof i==="string")return MFi(new URL(i));let{hostname:u,pathname:t,port:f,protocol:l,search:c}=i,E;if(c)E=mk0(c);return{hostname:u,port:f?parseInt(f):void 0,protocol:l,path:t,query:E}},ebf=(i)=>{if(typeof i==="object"){if("url"in i){let u=MFi(i.url);if(i.headers){u.headers={};for(let t in i.headers)u.headers[t.toLowerCase()]=i.headers[t].join(", ")}return u}return i}return MFi(i)};abf.HttpRequest=CFi;abf.HttpResponse=Vk0;abf.getSmithyContext=Mbf;abf.isValidHostLabel=rk0;abf.isValidHostname=rbf;abf.normalizeProvider=mbf;abf.parseQueryString=mk0;abf.parseUrl=MFi;abf.toEndpointV1=ebf});var h_=K((FRf)=>{var{getSmithyContext:ek0,HttpResponse:ERf,toEndpointV1:$Rf}=ch(),qFi=(i)=>{if(typeof i==="function")return i();return i},Alu=(i,u,t,f,l)=>({name:u,namespace:i,traits:t,input:f,output:l}),wRf=(i)=>(u,t)=>async(f)=>{let{response:l}=await u(f),{operationSchema:c}=ek0(t),[,E,$,w,d,_]=c??[];try{let v=await i.protocol.deserializeResponse(Alu(E,$,w,d,_),{...i,...t},l);return{response:l,output:v}}catch(v){if(Object.defineProperty(v,"$response",{value:l,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in v)){try{v.message+=`
|
|
83016
|
+
`+i}function IFi(i){if(!i||i.length===0)return[];return i.filter((u)=>ubf.test(u))}function tbf(i){if(i.csp)return i.csp;let u=i.resourceCsp;if(!u)return mn0;let t=IFi(u.resourceDomains),f=IFi(u.connectDomains),l=IFi(u.frameDomains),c=IFi(u.baseUriDomains),E=t.length>0,$=f.length>0,w=l.length>0,d=c.length>0;if(!E&&!$&&!w&&!d)return mn0;let _=t.join(" ");return["default-src 'none'",E?`script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' ${_}`:"script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",E?`style-src 'unsafe-inline' ${_}`:"style-src 'unsafe-inline'",E?`img-src * data: blob: ${_}`:"img-src * data: blob:",E?`media-src * data: blob: ${_}`:"media-src * data: blob:",E?`font-src data: ${_}`:"font-src data:",$?`connect-src ${f.join(" ")}`:"connect-src 'none'",w?`frame-src ${l.join(" ")}`:"frame-src 'none'","worker-src blob:","form-action 'none'",d?`base-uri ${c.join(" ")}`:"base-uri 'none'"].join("; ")}var mn0,ubf;var an0=N(()=>{mn0=["default-src 'none'","script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'","style-src 'unsafe-inline'","img-src * data: blob:","media-src * data: blob:","font-src data:","connect-src 'none'","frame-src 'none'","worker-src blob:","form-action 'none'","base-uri 'none'"].join("; ");ubf=/^https?:\/\/(\*\.)?[a-zA-Z0-9._-]+(:\d+)?\/?$/});function fbf(i){let u=i.lastFailureAt-i.firstFailureAt;return i.count>=kl0&&u>=jl0}class b1u{options;kv=null;codec=pci();constructor(i){this.options=i}async init(){let i=this.options.getJetStream();if(!i)return;this.kv=await new sn0.Kvm(i).create(lbf,{storage:on0.StorageType.Memory,ttl:pn0.nanos(Xl0)})}async recordFailure(i){if(!this.kv)return H1u;let u=Date.now();for(let t=0;t<cbf;t++)try{let f=await this.kv.get(i);if(!(f&&f.operation!=="DEL"&&f.operation!=="PURGE"&&f.value?.length)){let $={count:1,firstFailureAt:u,lastFailureAt:u};return await this.kv.create(i,this.codec.encode($)),{count:$.count,shouldDisable:!1}}let c=this.codec.decode(f.value),E={count:c.count+1,firstFailureAt:c.firstFailureAt,lastFailureAt:u};return await this.kv.update(i,this.codec.encode(E),f.revision),{count:E.count,shouldDisable:fbf(E)}}catch{}return H1u}async recordSuccess(i){if(!this.kv)return;try{await this.kv.delete(i)}catch{}}teardown(){this.kv=null}}class Wa{async recordFailure(){return H1u}async recordSuccess(){}teardown(){}}function R1u(i){ik0=i??new Wa}function C1u(){return ik0}var on0,sn0,pn0,H1u,lbf="DECOCMS_CONN_CIRCUIT",cbf=5,ik0;var M1u=N(()=>{on0=k(e2(),1),sn0=k(Smi(),1),pn0=k(DO(),1),H1u={count:0,shouldDisable:!1};ik0=new Wa});function uk0(i){if(!i)return{decision:"skip"};if(i.startsWith("notifications/"))return{decision:"skip"};if($bf.has(i))return{decision:"skip"};let u=Ebf[i];if(u)return{decision:"skip-if-list-cached",listType:u};return{decision:"probe"}}async function tk0(i){if(i.method!=="POST")return;let u=i.headers.get("content-length");if(u&&Number(u)>wbf)return;try{let t=await i.clone().json(),l=(Array.isArray(t)?t[0]:t)?.method;return typeof l==="string"?l:void 0}catch{return}}var Ebf,$bf,wbf=64000;var fk0=N(()=>{Ebf={"tools/list":"tools","resources/list":"resources","prompts/list":"prompts"},$bf=new Set(["ping"])});function q1u(i){let u=Object.values(i),[t]=u;if(!t)return null;return u.find((f)=>f.sandboxProviderKind!=="user-desktop")??t}async function vbf(i){if(lk0.has(i))return!0;let u=Date.now();if(u-(ck0.get(i)??0)<_bf)return!1;ck0.set(i,u);try{let t=await fetch(i,{method:"POST",headers:{"content-type":"application/json",accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mesh-dev-probe",version:"1"}}}),signal:AbortSignal.timeout(4000)}),f=t.ok?await t.text():"",l=/"protocolVersion"|"serverInfo"/.test(f);if(l)lk0.add(i);return l}catch{return!1}}async function NK(i,u,t,f){let l=i.organization?.id;if(!l)return null;let c=await i.storage.virtualMcps.findById(u);if(!c||c.organization_id!==l)return null;let E=c.metadata??{},$=B6(E)[t];if(!$)return null;let w=f?hbf($,f):Dbf($);if(!w?.entry.previewUrl)return null;let d=await gbf(i,E,l,t),_=w.entry.previewUrl.replace(/\/+$/,""),v=d?`${_}/api/mcp?token=${encodeURIComponent(d)}`:`${_}/api/mcp`;if(!await vbf(v))return null;return{id:Jqi(u),organization_id:l,title:`${c.title} (dev)`,description:"Ephemeral sandbox dev-server connection",icon:c.icon??null,app_name:c.title??null,app_id:null,slug:null,connection_type:"HTTP",connection_url:v,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:{isDevConnection:!0,virtualMcpId:u,branch:w.branch},tools:null,bindings:null,status:"active",created_at:new Date().toISOString(),updated_at:new Date().toISOString(),created_by:"system"}}function hbf(i,u){let t=q1u(r3(i[u]));return t?{branch:u,entry:t}:null}function Dbf(i){let u=null;for(let[t,f]of Object.entries(i)){let l=q1u(r3(f));if(!l)continue;if(!u||(l.createdAt??0)>(u.entry.createdAt??0))u={branch:t,entry:l}}return u}async function gbf(i,u,t,f){let l=mBi(u)?.find((c)=>c.key===dbf);if(!l)return null;if(l.kind==="literal")return l.value||null;try{let{value:c}=await i.storage.secrets.resolveById(l.secretId,t,f);return c||null}catch(c){if(c instanceof xv||c instanceof qL)return null;throw c}}var dbf="MCP_AUTH_TOKEN",lk0,ck0,_bf=1e4;var AFi=N(()=>{gf();G$i();yQ();Bd();lk0=new Set,ck0=new Map});import{SpanStatusCode as GFi}from"@opentelemetry/api";async function nFi(i,u){let t=i.get("meshContext");try{let f=i.req.header("x-org-id"),l=i.req.header("x-org-slug"),c=f?f:l?await t.db.selectFrom("organization").select("id").where("slug","=",l).executeTakeFirst().then((O)=>O?.id):null,E=u?u:c?Z6i(c):null;if(!E)return i.json({error:"Agent ID or organization ID is required"},400);let $=await t.tracer.startActiveSpan("studio.virtual_mcp.lookup",{attributes:{"virtual_mcp.id":E}},async(O)=>{try{let Z=await t.storage.virtualMcps.findById(E,c??void 0);return O.setStatus({code:GFi.OK}),Z}catch(Z){throw O.setStatus({code:GFi.ERROR,message:Z.message}),O.recordException(Z),Z}finally{O.end()}});if(!$)return i.json({error:"Agent not found"},404);if(c&&$.organization_id!==c)return i.json({error:"Agent not found"},404);if($.status!=="active")return i.json({error:`Agent is inactive: ${$.id??"Decopilot"}`},503);if(t.organization?.id&&$.organization_id!==t.organization.id)return i.json({error:"Forbidden: Agent does not belong to your organization"},403);t.connectionId=$.id??void 0;let w=await t.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",$.organization_id).executeTakeFirst();if(w)t.organization={id:w.id,slug:w.slug,name:w.name};let d=Vu(t),_=null;if($.id&&d&&B6($.metadata)[d])_=await NK(t,$.id,d,i.req.query("branch")??void 0).catch(()=>null);let v=await t.tracer.startActiveSpan("studio.virtual_mcp.create_client",{attributes:{"virtual_mcp.id":$.id??"decopilot"}},async(O)=>{try{let Z=await sD($,t,"passthrough",!1,{includeSkillsCatalog:!0,additionalConnections:_?[_]:[]});return O.setStatus({code:GFi.OK}),Z}catch(Z){throw O.setStatus({code:GFi.ERROR,message:Z.message}),O.recordException(Z),Z}finally{O.end()}}),h={name:$.id??"Decopilot",version:"1.0.0",title:$.title??void 0,description:$.description??void 0,icons:$.icon?[{src:$.icon}]:void 0},D=GD(v,h,{capabilities:{tools:{},resources:{},prompts:{}},instructions:v.getInstructions(),toolCallTimeoutMs:GW}),g=new D3({enableJsonResponse:i.req.header("Accept")?.includes("application/json")??!1});return await D.connect(g),await fh(D,g,i.req.raw,`virtual-mcp:${$.id??"decopilot"}`,{onClose:()=>v.close()})}catch(f){let l=f;return console.error("[virtual-mcp] Error handling virtual MCP request:",l),i.json({error:"Internal server error",message:l.message},500)}}var kFi=()=>{let i=new zu;return i.all("/gateway/:virtualMcpId?",async(u)=>{let t=u.req.param("virtualMcpId")||u.req.header("x-virtual-mcp-id");return nFi(u,t)}),i.all("/virtual-mcp/:virtualMcpId?",async(u)=>{let t=u.req.param("virtualMcpId")||u.req.header("x-virtual-mcp-id");return nFi(u,t)}),i};var jFi=N(()=>{gf();nQ();Vf();Sz();AFi();Bd();Ya()});import{SpanStatusCode as XFi}from"@opentelemetry/api";var Ek0=(i,u)=>{if(i instanceof bL)return u.header("Retry-After",String(Math.ceil(i.cooldownRemainingMs/1000))),u.json({error:i.message},503);if(i.message.includes("not found"))return u.json({error:i.message},404);if(i.message.includes("does not belong to the active organization"))return u.json({error:"Connection not found"},404);if(i.message.includes("inactive"))return u.json({error:i.message},503);return u.json({error:"Internal server error",message:i.message},500)},KFi=()=>{let i=new zu;return i.all("/",async(u)=>{return nFi(u,void 0)}),i.get("/:connectionId/ui-resource",async(u)=>{let t=u.get("meshContext"),f=u.req.param("connectionId"),l=u.req.query("uri");if(!l)return u.json({error:"uri query param is required"},400);if(!t.organization?.id)return u.json({error:"Organization context is required"},403);let c=B6i(f),E;if(c){let D=Vu(t);if(!D)return u.json({error:"Authentication required"},401);if(E=await NK(t,c,D,u.req.query("branch")??void 0),!E)return u.json({error:"Dev server not running"},503)}else if(E=await t.storage.connections.findById(f,t.organization.id),!E||E.organization_id!==t.organization.id)return u.json({error:"Connection not found"},404);let $=D9(E,t,!1,Tl()??void 0),w,d;try{let g=(await $.readResource({uri:l})).contents?.[0];w=g?.text,d=g?._meta?.ui?.csp}catch(D){return u.json({error:D.message},502)}finally{await $.close().catch(()=>{})}if(typeof w!=="string")return u.json({error:"Resource has no text content"},404);let _=en0(w,{resourceCsp:d}),v=`"${Bun.hash(_).toString(36)}"`,h="private, no-cache";if(u.req.header("if-none-match")===v)return new Response(null,{status:304,headers:{ETag:v,"Cache-Control":h}});return new Response(_,{headers:{"Content-Type":"text/html; charset=utf-8",ETag:v,"Cache-Control":h}})}),i.all("/:connectionId",async(u)=>{let t=u.req.param("connectionId"),f=u.get("meshContext");if(t.endsWith("_self")){let c=t.slice(0,-5);if(!f.organization||f.organization.id!==c)return u.json({error:"Connection not found"},404);let E=await kQ(f),$=new D3({enableJsonResponse:u.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await E.connect($),OK.run(f,()=>fh(E,$,u.req.raw,`mcp:self:${t}`))}let l=B6i(t);if(l){if(!f.organization?.id)return u.json({error:"Organization context is required"},403);let c=Vu(f);if(!c)return u.json({error:"Authentication required"},401);let E=await NK(f,l,c,u.req.query("branch")??void 0);if(!E)return u.json({error:"Dev server not running"},503);let $=i3i(E,f,!1),w=new D3({enableJsonResponse:u.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await $.connect(w),fh($,w,u.req.raw,`mcp:dev:${t}`)}try{try{if(!f.organization?.id)return u.json({error:"Organization context is required"},403);let c=await f.tracer.startActiveSpan("studio.connection.lookup",{attributes:{"connection.id":t}},async(g)=>{m3(u,"mcp.find_connection");try{let O=await f.storage.connections.findById(t,f.organization.id);return g.setStatus({code:XFi.OK}),O}catch(O){throw g.setStatus({code:XFi.ERROR,message:O.message}),g.recordException(O),O}finally{bw(u,"mcp.find_connection"),g.end()}});if(!c)throw Error("Connection not found");if(c.organization_id!==f.organization.id)throw Error("Connection does not belong to the active organization");let E=!1;if(c.status!=="active"){let g=Date.now()-new Date(c.updated_at).getTime();if(c.status==="error"&&!!c.connection_url&&g>=ori)E=!0;else{if(c.status==="error"&&c.connection_url){let Z=ori-g;u.header("Retry-After",String(Math.ceil(Z/1000)))}throw Error(`Connection inactive: ${c.status}`)}}let $=await tk0(u.req.raw),{decision:w,listType:d}=uk0($),_=w==="probe";if(w==="skip-if-list-cached"&&d){let g=Tl();_=g?await g.get(d,t)===null:!0}if(E)_=!0;if(c.connection_url&&_)g$i(t),await f.tracer.startActiveSpan("studio.connection.handshake",{attributes:{"connection.id":t,"connection.url":c.connection_url}},async(g)=>{m3(u,"mcp.client_handshake");try{if(await yc(c,f,!1),N$i(t),C1u().recordSuccess(t),E)await f.storage.connections.update(t,{status:"active"}),console.info("[proxy] auto-recovered connection after successful re-probe",{connectionId:t,org:f.organization?.slug});g.setStatus({code:XFi.OK})}catch(O){throw g.setStatus({code:XFi.ERROR,message:O.message}),g.recordException(O),O}finally{bw(u,"mcp.client_handshake"),g.end()}});m3(u,"mcp.create_server");let v=i3i(c,f,!1);bw(u,"mcp.create_server");let h=new D3({enableJsonResponse:u.req.raw.headers.get("Accept")?.includes("application/json")??!1});m3(u,"mcp.server_connect"),await v.connect(h),bw(u,"mcp.server_connect"),m3(u,"mcp.handle_request");let D=await fh(v,h,u.req.raw,`mcp:${t}`);return bw(u,"mcp.handle_request"),D}catch(c){if(c instanceof bL)throw c;let E=await f.storage.connections.findById(t,f.organization?.id);if(E?.connection_url){let $=await Diu({error:c,reqUrl:new URL(u.req.raw.url),connectionId:t,connectionUrl:E.connection_url,headers:{},orgSlug:f.organization?.slug});if($)return $;O$i(t);let{shouldDisable:w}=await C1u().recordFailure(t);if(w&&E.status==="active")await f.storage.connections.update(t,{status:"error"}),console.warn("[proxy] auto-disabled connection after sustained failures",{connectionId:t,org:f.organization?.slug,error:c.message})}throw c}}catch(c){return Ek0(c,u)}}),i.all("/:connectionId/call-tool/:toolName",async(u)=>{let t=u.req.param("connectionId"),f=u.req.param("toolName"),l=u.get("meshContext");try{let c=await l.storage.connections.findById(t,l.organization?.id);if(!c)return u.json({error:"Connection not found"},404);let $=await(await yc(c,l,!1)).callTool({name:f,arguments:await u.req.json()});if($.isError)return new Response(JSON.stringify($.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify($.structuredContent??$.content),{headers:{"Content-Type":"application/json"}})}catch(c){let E=await l.storage.connections.findById(t,l.organization?.id);if(E?.connection_url){let $=await Diu({error:c,reqUrl:new URL(u.req.raw.url),connectionId:t,connectionUrl:E.connection_url,headers:{},orgSlug:l.organization?.slug});if($)return $}return Ek0(c,u)}}),i};var JFi=N(()=>{_B();nQ();Vf();bVi();NB();Ya();he();Cw();Jr();an0();Rai();M1u();fk0();jFi();AFi();gf();eai()});async function yg(i,u,t,f){if(u.type!=="event"||!u.connection_id)return{success:!0};let l=await i.storage.connections.findById(u.connection_id);if(!l)return{success:!0};let c=i.organization?.id,E=i.organization?.slug;try{let $=await yc(l,i,!0),w=Kiu.forClient(mai($)),d,_,v;if(t&&f&&c){let B=await f.generateTokenPair();_=B.plaintext,v=B.hash,d=E?`${i.baseUrl}/api/${E}/trigger-callback`:`${i.baseUrl}/api/trigger-callback`}let h=5000,D=!1,g=new Promise((B,F)=>setTimeout(()=>{D=!0,F(Error("TRIGGER_CONFIGURE timeout"))},h)),O;try{O=await Promise.race([w.TRIGGER_CONFIGURE({type:u.event_type,params:JSON.parse(u.params??"{}"),enabled:t,callbackUrl:d,callbackToken:_}),g])}catch(B){if(D&&t&&f&&c&&v)await f.persistTokenHash(c,u.connection_id,v);return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE threw on connection=${u.connection_id} type=${u.event_type}:`,B),{success:!1,error:String(B)}}let Z=O;if(!Z||Z.success!==!0)return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE did not return success=true on connection=${u.connection_id} type=${u.event_type}. Raw payload:`,JSON.stringify(O)),{success:!1,error:`TRIGGER_CONFIGURE did not return success=true (got ${JSON.stringify(O)})`};try{if(t&&f&&c&&v)await f.persistTokenHash(c,u.connection_id,v);if(!t&&f&&c)await f.deleteByConnection(u.connection_id,c)}catch(B){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",B)}return{success:!0}}catch($){return{success:!1,error:String($)}}}var La=N(()=>{_B();JFi();Jiu()});import{z as i1}from"zod";var V1u;var $k0=N(()=>{gK();du();t8();La();V1u=di({name:"AUTOMATION_UPDATE",description:"Update an automation's config. Toggling active state reconfigures event triggers on MCPs.",annotations:{title:"Update Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:i1.object({id:i1.string(),name:i1.string().min(1).max(255).optional(),active:i1.boolean().optional(),messages:i1.union([i1.string(),i1.array(i1.looseObject({id:i1.string().optional(),role:i1.enum(["user","assistant","system"]),parts:i1.array(i1.record(i1.string(),i1.unknown())),metadata:i1.unknown().optional()}))]).optional(),models:i1.object({tier:F3i,modelId:i1.string().optional(),credentialId:i1.string().optional()}).loose().optional(),tools:i1.array(i1.string()).nullable().optional(),maxAgentSteps:i1.number().int().min(1).max(100).nullable().optional(),temperature:i1.number().optional()}),outputSchema:i1.object({id:i1.string(),name:i1.string(),active:i1.boolean(),updated_at:i1.string()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findById(i.id,t.id);if(!f)throw Error("Automation not found");let l={};if(i.name!==void 0)l.name=i.name;if(i.active!==void 0)l.active=i.active;if(i.messages!==void 0){let E=FFi(i.messages);l.messages=JSON.stringify(E)}if(i.models!==void 0)l.models=JSON.stringify(i.models);if(i.tools!==void 0)l.tools=i.tools===null?null:JSON.stringify(i.tools);if(i.temperature!==void 0)l.temperature=i.temperature;if(i.maxAgentSteps!==void 0)l.max_agent_steps=i.maxAgentSteps;let c=await u.storage.automations.update(i.id,t.id,l);if(i.active!==void 0&&i.active!==f.active){let E=await u.storage.automations.listTriggers(c.id),$=E.filter((w)=>w.type==="event");await Promise.allSettled($.map(async(w)=>{let d=await yg(u,w,i.active);if(!d.success)console.warn(`Failed to configure trigger ${w.id}: ${d.error}`)})),await Cn0(E,i.active)}return{id:c.id,name:c.name,active:c.active,updated_at:c.updated_at}}})});import{z as SFi}from"zod";var r1u;var wk0=N(()=>{gK();m4();du();La();r1u=di({name:"AUTOMATION_DELETE",description:"Permanently delete an automation. Disables all event triggers on connected MCPs first.",annotations:{title:"Delete Automation",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:SFi.object({id:SFi.string()}),outputSchema:SFi.object({success:SFi.boolean()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);if(await u.access.check(),!await u.storage.automations.findById(i.id,t.id))throw Error("Automation not found");let l=await u.storage.automations.listTriggers(i.id),c=l.filter((w)=>w.type==="event");await Promise.allSettled(c.map(async(w)=>{let d=await yg(u,w,!1);if(!d.success)console.warn(`Failed to disable trigger ${w.id}: ${d.error}`)}));let{success:E}=await u.storage.automations.delete(i.id,t.id);await Mn0(l);let $=Vu(u);if($)ou.capture({distinctId:$,event:"automation_deleted",groups:{organization:t.id},properties:{organization_id:t.id,automation_id:i.id,trigger_count:l.length}});return{success:E}}})});function jQ(i){return`webhook_${i}`}function YFi(i,u,t){if(!u)throw Error("Cannot build webhook URL: organization slug missing from request context");return`${i}/api/${u}/webhooks/${t}`}import{z as Xc}from"zod";var dk0=300000,Nbf=10,m1u;var _k0=N(()=>{j1u();gK();k1u();du();La();m1u=di({name:"AUTOMATION_TRIGGER_ADD",description:"Add a cron, event, or webhook trigger to an automation. For webhook triggers the response includes a one-time URL + secret token.",annotations:{title:"Add Trigger",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:Xc.object({automation_id:Xc.string(),type:Xc.enum(["cron","event","webhook"]),cron_expression:Xc.string().optional(),connection_id:Xc.string().optional(),event_type:Xc.string().optional(),params:Xc.record(Xc.string(),Xc.string()).optional()}),outputSchema:Xc.object({id:Xc.string(),automation_id:Xc.string(),type:Xc.enum(["cron","event","webhook"]),created_at:Xc.string(),webhook:Xc.object({url:Xc.string(),token:Xc.string()}).nullable().optional()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findById(i.automation_id,t.id);if(!f)throw Error("Automation not found");if(i.type==="cron"){if(!i.cron_expression)throw Error("cron_expression is required for cron triggers");let w=new TFi(i.cron_expression,{timezone:"UTC"}).nextRuns(Nbf);if(w.length===0)throw Error("Cron expression has no future runs");let d=1/0;for(let _=1;_<w.length;_++){let v=w[_].getTime()-w[_-1].getTime();if(v<d)d=v}if(w.length>=2&&Number.isFinite(d)&&d<dk0){let _=dk0/1000;throw Error(`Cron fires too frequently \u2014 minimum interval is ${_}s between runs (observed ${d/1000}s)`)}}if(i.type==="event"){if(!i.connection_id)throw Error("connection_id is required for event triggers");if(!i.event_type)throw Error("event_type is required for event triggers");if(!await u.storage.connections.findById(i.connection_id,t.id))throw Error("Connection not found");let w={id:"",automation_id:i.automation_id,type:"event",cron_expression:null,connection_id:i.connection_id,event_type:i.event_type,params:i.params?JSON.stringify(i.params):null,last_run_at:null,next_run_at:null,api_key_id:null,created_at:""},d=await yg(u,w,!0,u.storage.triggerCallbackTokens);if(!d.success)throw Error(`Failed to configure trigger on connection: ${d.error}`)}let l=i.type==="cron"&&i.cron_expression?UFi(i.cron_expression,new Date):null,c=await u.storage.automations.addTrigger({automation_id:i.automation_id,type:i.type,cron_expression:i.type==="cron"?i.cron_expression:null,connection_id:i.type==="event"?i.connection_id:null,event_type:i.type==="event"?i.event_type:null,params:i.params?JSON.stringify(i.params):null,next_run_at:l?.toISOString()??null}),E=null;if(i.type==="webhook")try{let $=await u.boundAuth.apiKey.create({name:`webhook:${f.name}:${c.id.slice(0,8)}`,permissions:{[jQ(c.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:f.id,trigger_id:c.id}});await u.storage.automations.setTriggerApiKeyId(c.id,$.id),E={url:YFi(u.baseUrl,t.slug,c.id),token:$.key}}catch($){await u.storage.automations.removeTrigger(c.id,c.automation_id);let w=$ instanceof Error?$.message:String($);throw Error(`Failed to mint webhook token: ${w}`)}return await xFi(c,f),{id:c.id,automation_id:c.automation_id,type:c.type,created_at:c.created_at,webhook:E}}})});import{z as WFi}from"zod";var e1u;var vk0=N(()=>{gK();du();La();e1u=di({name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove a trigger from an automation. Disables associated event listeners on MCPs.",annotations:{title:"Remove Trigger",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:WFi.object({trigger_id:WFi.string()}),outputSchema:WFi.object({success:WFi.boolean()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findTriggerById(i.trigger_id);if(!f)throw Error("Trigger not found");if(!await u.storage.automations.findById(f.automation_id,t.id))throw Error("Automation not found");if(f.type==="event"){let E=await yg(u,f,!1,u.storage.triggerCallbackTokens);if(!E.success)console.warn(`Failed to disable trigger ${f.id}: ${E.error}`)}let{success:c}=await u.storage.automations.removeTrigger(f.id,f.automation_id);if(f.type==="cron")await z1u(f.id);if(f.type==="webhook"&&f.api_key_id)try{await u.boundAuth.apiKey.delete(f.api_key_id)}catch(E){console.warn(`[trigger-remove] failed to delete api key ${f.api_key_id} for trigger ${f.id}:`,E instanceof Error?E.message:E)}return{success:c}}})});import{z as XQ}from"zod";var a1u;var hk0=N(()=>{du();a1u=di({name:"AUTOMATION_TRIGGER_ROTATE_TOKEN",description:"Rotate the secret token for a webhook automation trigger. Returns a new token; the old token is revoked.",annotations:{title:"Rotate Webhook Token",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:XQ.object({trigger_id:XQ.string()}),outputSchema:XQ.object({trigger_id:XQ.string(),url:XQ.string(),token:XQ.string()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.automations.findTriggerById(i.trigger_id);if(!f)throw Error("Trigger not found");if(f.type!=="webhook")throw Error("Trigger is not a webhook trigger");let l=await u.storage.automations.findById(f.automation_id,t.id);if(!l)throw Error("Automation not found");let c=f.api_key_id,E=await u.boundAuth.apiKey.create({name:`webhook:${l.name}:${f.id.slice(0,8)}`,permissions:{[jQ(f.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:l.id,trigger_id:f.id}});if(await u.storage.automations.setTriggerApiKeyId(f.id,E.id),c)try{await u.boundAuth.apiKey.delete(c)}catch($){console.warn(`[trigger-rotate] failed to delete old key ${c} for trigger ${f.id}:`,$ instanceof Error?$.message:$)}return{trigger_id:f.id,url:YFi(u.baseUrl,t.slug,f.id),token:E.key}}})});import{z as KQ}from"zod";var o1u;var Dk0=N(()=>{m4();du();o1u=di({name:"AUTOMATION_RUN",description:"Manually trigger an automation run. Bypasses configured triggers.",annotations:{title:"Run Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:KQ.object({id:KQ.string()}),outputSchema:KQ.object({threadId:KQ.string().optional(),error:KQ.string().optional(),skipped:KQ.string().optional()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);if(await u.access.check(),!u.automationRunner)throw Error("Automation runner not available");let f=Vu(u);if(!f)throw Error("User ID not available");let l=await u.automationRunner(i.id,t.id,f);if(ou.capture({distinctId:f,event:"automation_run",groups:{organization:t.id},properties:{organization_id:t.id,automation_id:i.id,thread_id:"taskId"in l?l.taskId:void 0,status:"skipped"in l?"skipped":("error"in l)?"error":"started",skip_reason:"skipped"in l?l.skipped:void 0,error_message:"error"in l?l.error:void 0}}),"skipped"in l)return{skipped:l.skipped};if("error"in l)return{threadId:l.taskId,error:l.error};return{threadId:l.taskId}}})});import{z as a6}from"zod";var Obf=500,s1u;var gk0=N(()=>{G1();du();s1u=di({name:"AUTOMATION_RUN_STATS",description:"Aggregate run counts (by status) and LLM token/cost totals for a single automation.",annotations:{title:"Automation Run Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:a6.object({automation_id:a6.string(),startDate:a6.string().datetime().optional().describe("Filter runs at or after this ISO timestamp"),endDate:a6.string().datetime().optional().describe("Filter runs at or before this ISO timestamp")}),outputSchema:a6.object({runs:a6.object({total:a6.number(),completed:a6.number(),failed:a6.number(),inProgress:a6.number()}),usage:a6.object({calls:a6.number(),inputTokens:a6.number(),outputTokens:a6.number(),totalTokens:a6.number(),costUsd:a6.number(),sampledRuns:a6.number(),truncated:a6.boolean()})}),handler:async(i,u)=>{Yi(u);let t=Bi(u);if(await u.access.check(),await L3(),!await u.storage.automations.findById(i.automation_id,t.id))throw Error("Automation not found");let l=await u.storage.automations.getRunStats(i.automation_id,t.id,{startDate:i.startDate,endDate:i.endDate}),c=await u.storage.automations.listRunThreadIds(i.automation_id,t.id,{startDate:i.startDate,endDate:i.endDate,limit:Obf}),E={calls:0,inputTokens:0,outputTokens:0,totalTokens:0,costUsd:0,sampledRuns:c.length,truncated:l.total>c.length};if(c.length>0){let $=await u.storage.monitoring.queryThreadUsage({organizationId:t.id,connectionId:"decopilot",threadIds:c,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0});for(let w of $)E.calls+=w.calls,E.inputTokens+=w.inputTokens,E.outputTokens+=w.outputTokens,E.totalTokens+=w.totalTokens,E.costUsd+=w.costUsd}return{runs:l,usage:E}}})});var Nk0=N(()=>{Xn0();Kn0();Jn0();$k0();wk0();_k0();vk0();hk0();Dk0();gk0()});import{z as Tg}from"zod";var Bbf,Fbf,p1u;var Ok0=N(()=>{du();Bbf=Tg.object({id:Tg.string().min(1)}),Fbf=Tg.object({user:Tg.object({id:Tg.string(),name:Tg.string(),email:Tg.string(),image:Tg.string().nullable()}).nullable()}),p1u=di({name:"USER_GET",description:"Get a user's profile by ID. Only returns users who share an organization with the caller.",annotations:{title:"Get User",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Bbf,outputSchema:Fbf,handler:async(i,u)=>{await u.access.check(),Yi(u);let t=Vu(u);if(!t)throw Error("Authentication required");let f=await u.storage.users.findById(i.id,t);if(!f)return{user:null};return{user:{id:f.id,name:f.name,email:f.email,image:f.image??null}}}})});var Zk0=N(()=>{Ok0()});import g3 from"zod";var ilu;var Bk0=N(()=>{du();oD();ilu=di({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:g3.object({}),outputSchema:g3.object({providers:g3.array(g3.object({id:g3.string(),name:g3.string(),description:g3.string(),logo:g3.string().optional(),supportedMethods:g3.array(g3.enum(["api-key","oauth-pkce"])),supportsTopUp:g3.boolean().optional(),supportsCredits:g3.boolean().optional(),supportsProvision:g3.boolean().optional()}))}),handler:async(i,u)=>{return Yi(u),Bi(u),await u.access.check(),{providers:Object.values(Ic()).filter((f)=>!!f).map((f)=>({...f.info,supportedMethods:f.supportedMethods,supportsTopUp:!!f.getTopUpUrl,supportsCredits:!!f.getCreditsBalance,supportsProvision:!!f.provisionKey}))}}})});function Tbf(i){if(!i)return;if(!("models"in i))return;return i.models??void 0}function Fk0(i,u){if(!i)return!0;if(i.includes("*:*"))return!0;return i.some((t)=>t.startsWith(`${u}:`))}function P8(i,u,t){if(!i)return!0;return i.includes("*:*")||i.includes(`${u}:*`)||i.includes(`${u}:${t}`)}function LFi(i,u){if(i===void 0)return u;let t=u;if(t.image&&!P8(i,t.image.credentialId,t.image.id)){let{image:f,...l}=t;t=l}if(t.webSearch&&!P8(i,t.webSearch.credentialId,t.webSearch.id)){let{webSearch:f,...l}=t;t=l}if(t.deepResearch&&!P8(i,t.deepResearch.credentialId,t.deepResearch.id)){let{deepResearch:f,...l}=t;t=l}return t}function yk0(i){if(!i)return{allowAll:!0,models:{}};if(i.includes("*:*"))return{allowAll:!0,models:{}};let u={};for(let t of i){let f=t.indexOf(":");if(f===-1)continue;let l=t.slice(0,f),c=t.slice(f+1);if(!u[l])u[l]=[];u[l].push(c)}return{allowAll:!1,models:u}}async function x8(i,u,t){if(!t||id.includes(t))return;let f=await i.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",u).where("role","=",t).executeTakeFirst();if(!f?.permission)return;try{let l=JSON.parse(f.permission);return Tbf(l)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${t}`),[]}}var za=N(()=>{Pv()});var ulu;var Tk0=N(()=>{ulu=[{providerId:"claude-code",modelId:"claude-code:haiku",title:"Claude Code Haiku",description:"Fast and lightweight",capabilities:["text"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:sonnet",title:"Claude Code Sonnet 5",description:"Balanced performance",capabilities:["text","reasoning"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:opus",title:"Claude Code Opus",description:"Most capable",capabilities:["text","reasoning"],limits:null,costs:null},{providerId:"claude-code",modelId:"claude-code:opus-1m",title:"Claude Code Opus 4.8 1M",description:"Most capable, 1M context window",capabilities:["text","reasoning"],limits:{contextWindow:1e6,maxOutputTokens:null},costs:null}]});var Uk0=N(()=>{Tk0()});var tlu;var Pk0=N(()=>{tlu=[{providerId:"codex",modelId:"codex:gpt-5.5",title:"GPT-5.5",description:"Frontier model for complex coding, research, and real-world work",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4",title:"GPT-5.4",description:"Strong model for everyday coding",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.4-mini",title:"GPT-5.4 Mini",description:"Small, fast, and cost-efficient model for simpler coding tasks",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null},{providerId:"codex",modelId:"codex:gpt-5.3-codex-spark",title:"GPT-5.3 Codex Spark",description:"Ultra-fast coding model",capabilities:["text","reasoning"],logo:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png",limits:null,costs:null}]});var xk0=N(()=>{Pk0()});import y6 from"zod";var flu;var Ik0=N(()=>{du();za();Uk0();xk0();flu=di({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:y6.object({keyId:y6.string().describe("The provider key ID to use")}),outputSchema:y6.object({models:y6.array(y6.object({providerId:y6.string(),modelId:y6.string(),title:y6.string(),description:y6.string().nullish(),logo:y6.string().nullish(),capabilities:y6.array(y6.string()),limits:y6.object({contextWindow:y6.coerce.number(),maxOutputTokens:y6.coerce.number().nullable()}).nullish(),costs:y6.object({input:y6.coerce.number(),output:y6.coerce.number()}).nullish(),asyncResearch:y6.boolean().optional()}))}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.findById(i.keyId,t.id).catch(()=>null);if(f?.providerId==="claude-code")return{models:ulu};if(f?.providerId==="codex")return{models:tlu};let[l,c]=await Promise.all([u.aiProviders.listModels(i.keyId,t.id),x8(u.db,t.id,u.auth.user?.role)]);return{models:l.filter(($)=>P8(c,i.keyId,$.modelId))}}})});import I8 from"zod";var llu;var Ak0=N(()=>{du();oD();llu=di({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:I8.object({}),outputSchema:I8.object({providers:I8.array(I8.object({id:I8.string(),name:I8.string(),description:I8.string(),logo:I8.string().optional(),keyCount:I8.number()}))}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.list({organizationId:t.id}),l=new Map;for(let E of f)l.set(E.providerId,(l.get(E.providerId)??0)+1);return{providers:[...l.entries()].flatMap(([E,$])=>{let d=Ic()[E];if(!d)return console.warn(`AI provider "${E}" has stored keys but is not in the registry; skipping.`),[];return[{...d.info,keyCount:$}]})}}})});var Ug=N(()=>{gf()});import __ from"zod";var ZK,clu;var Qa=N(()=>{m4();du();Ug();ZK=__.object({id:__.string(),providerId:__.string(),label:__.string(),presetId:__.string().nullable(),createdAt:__.string()}),clu=di({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:__.object({providerId:__.enum(Zc),label:__.string().min(1).max(100),apiKey:__.string().min(1),presetId:__.string().min(1).max(64).optional()}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.create({providerId:i.providerId,label:i.label,apiKey:i.apiKey,organizationId:t.id,createdBy:u.auth.user.id,presetId:i.presetId??null});return ou.capture({distinctId:u.auth.user.id,event:"ai_provider_key_created",groups:{organization:t.id},properties:{organization_id:t.id,provider_id:f.providerId,preset_id:f.presetId,key_id:f.id,label:f.label}}),{id:f.id,providerId:f.providerId,label:f.label,presetId:f.presetId,createdAt:f.createdAt}}})});import zFi from"zod";var JQ=(i,u)=>i&&i.keyId===u?null:i,Ubf=(i,u)=>{let t={tiers:{fast:JQ(i.tiers.fast,u),smart:JQ(i.tiers.smart,u),thinking:JQ(i.tiers.thinking,u),image:JQ(i.tiers.image,u),web_search:JQ(i.tiers.web_search,u),deep_research:JQ(i.tiers.deep_research,u)}},f=t.tiers.fast!==i.tiers.fast||t.tiers.smart!==i.tiers.smart||t.tiers.thinking!==i.tiers.thinking||t.tiers.image!==i.tiers.image||t.tiers.web_search!==i.tiers.web_search||t.tiers.deep_research!==i.tiers.deep_research;return{config:t,changed:f}},Elu;var Gk0=N(()=>{m4();du();Elu=di({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:zFi.object({keyId:zFi.string().describe("The provider key ID to delete")}),outputSchema:zFi.object({success:zFi.boolean()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.organizationSettings.get(t.id);if(f?.simple_mode){let{config:l,changed:c}=Ubf(f.simple_mode,i.keyId);if(c)await u.storage.organizationSettings.upsert(t.id,{simple_mode:l})}return await u.storage.aiProviderKeys.delete(i.keyId,t.id),ou.capture({distinctId:u.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:t.id},properties:{organization_id:t.id,key_id:i.keyId}}),{success:!0}}})});import QFi from"zod";var $lu;var nk0=N(()=>{du();Qa();$lu=di({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:QFi.object({keyId:QFi.string(),label:QFi.string().min(1).max(100).optional(),apiKey:QFi.string().min(1).optional()}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=await u.storage.aiProviderKeys.updateKey(i.keyId,t.id,{label:i.label,apiKey:i.apiKey});return{id:f.id,providerId:f.providerId,label:f.label,presetId:f.presetId,createdAt:f.createdAt}}})});import SQ from"zod";var wlu;var kk0=N(()=>{du();wlu=di({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:SQ.object({keyId:SQ.string()}),outputSchema:SQ.object({label:SQ.string(),maskedKey:SQ.string(),baseUrl:SQ.string().optional()}),handler:async(i,u)=>{Yi(u);let t=Bi(u);return await u.access.check(),u.storage.aiProviderKeys.getPreview(i.keyId,t.id)}})});import v_ from"zod";var dlu;var jk0=N(()=>{du();Ug();za();dlu=di({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:v_.object({providerId:v_.enum(Zc).optional()}),outputSchema:v_.object({keys:v_.array(v_.object({id:v_.string(),providerId:v_.string(),label:v_.string(),presetId:v_.string().nullable(),createdBy:v_.string(),createdAt:v_.string()}))}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let[f,l]=await Promise.all([u.storage.aiProviderKeys.list({organizationId:t.id,providerId:i.providerId}),x8(u.db,t.id,u.auth.user?.role)]);return{keys:f.filter(($)=>Fk0(l,$.id)).map(({organizationId:$,...w})=>w)}}})});import{createHash as Pbf,randomBytes as xbf}from"crypto";function Xk0(){return xbf(32).toString("base64url")}function Kk0(i){return Pbf("sha256").update(i).digest("base64url")}var Jk0=()=>{};import YQ from"zod";function Sk0(i){return i==="localhost"||i.endsWith(".localhost")||i==="127.0.0.1"||i==="[::1]"||i==="::1"}function Ibf(i){let u=Tu(),t=u.baseUrl??`http://localhost:${u.port}`,f=new URL(i),l=new URL(t);if(f.origin===l.origin)return!0;return f.protocol===l.protocol&&Sk0(f.hostname)&&Sk0(l.hostname)}var _lu;var Yk0=N(()=>{du();Ug();oD();Jk0();Yt();_lu=di({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:YQ.object({providerId:YQ.enum(Zc),callbackUrl:YQ.string().url().refine((i)=>{return Ibf(i)},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:YQ.object({url:YQ.string(),stateToken:YQ.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Ic()[i.providerId];if(!f)throw Error(`Unknown provider: ${i.providerId}`);if(!f.supportedMethods.includes("oauth-pkce")||!f.getOAuthUrl)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let l=Xk0(),c=Kk0(l),E=await u.storage.oauthPkceStates.create(l,t.id,u.auth.user.id),$=new URL(i.callbackUrl);$.searchParams.set("state",E);let w={callbackUrl:$.toString(),codeChallenge:c,codeChallengeMethod:"S256",organizationId:t.id};return{url:f.getOAuthUrl(w),stateToken:E}}})});import Ha from"zod";var vlu;var Wk0=N(()=>{du();Ug();oD();Qa();vlu=di({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:Ha.object({providerId:Ha.enum(Zc),code:Ha.string(),stateToken:Ha.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:Ha.string().min(1).max(100)}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Ic()[i.providerId];if(!f)throw Error(`Unknown provider: ${i.providerId}`);if(!f.supportedMethods.includes("oauth-pkce")||!f.exchangeOAuthCode)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let l=Vu(u);if(!l)throw Error("Unable to determine user ID");let c=await u.storage.oauthPkceStates.consume(i.stateToken,t.id,l),{apiKey:E}=await f.exchangeOAuthCode({code:i.code,codeVerifier:c,codeChallengeMethod:"S256"}),$=await u.storage.aiProviderKeys.upsert({providerId:i.providerId,label:i.label,apiKey:E,organizationId:t.id,createdBy:l});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import Lk0 from"zod";var hlu;var zk0=N(()=>{du();Ug();oD();cZ();Qa();hlu=di({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:Lk0.object({providerId:Lk0.enum(Zc)}),outputSchema:ZK,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("Unable to determine user ID");let l=Ic()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.provisionKey)throw Error(`Provider ${i.providerId} does not support key provisioning`);let c=await Y7(f),E=await l.provisionKey(c,t.id),$=await u.storage.aiProviderKeys.upsert({providerId:i.providerId,label:"Auto-provisioned",apiKey:E,organizationId:t.id,createdBy:f});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import WQ from"zod";var Dlu;var Qk0=N(()=>{du();Ug();oD();cZ();Dlu=di({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:WQ.object({providerId:WQ.enum(Zc),amountCents:WQ.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:WQ.enum(["usd","brl"]).default("usd")}),outputSchema:WQ.object({url:WQ.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("Unable to determine user ID");let l=Ic()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.getTopUpUrl)throw Error(`Provider ${i.providerId} does not support credit top-ups`);let c=await Y7(f,u.auth.user?.email);return{url:await l.getTopUpUrl(c,t.id,i.amountCents,i.currency)}}})});import HFi from"zod";var glu;var Hk0=N(()=>{du();Ug();oD();cZ();glu=di({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:HFi.object({providerId:HFi.enum(Zc)}),outputSchema:HFi.object({balanceCents:HFi.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("Unable to determine user ID");let l=Ic()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.getCreditsBalance)throw Error(`Provider ${i.providerId} does not expose a credits balance`);let c=await Y7(f);return l.getCreditsBalance(c,t.id)}})});var bk0=N(()=>{Bk0();Ik0();Ak0();Qa();Gk0();nk0();kk0();jk0();Yk0();Wk0();zk0();Qk0();Hk0()});import lh from"zod";var bFi;var Nlu=N(()=>{bFi=lh.object({id:lh.string(),scope:lh.enum(["user","organization"]),userId:lh.string().nullable(),name:lh.string(),description:lh.string().nullable(),createdBy:lh.string(),createdAt:lh.string(),updatedBy:lh.string(),updatedAt:lh.string()})});import ba from"zod";var Olu;var Rk0=N(()=>{du();Nlu();Olu=di({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:ba.object({scope:ba.enum(["user","organization"]),name:ba.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:ba.string().min(1),description:ba.string().max(500).optional()}),outputSchema:bFi,handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=u.auth.user.id,l=i.scope==="user"?{kind:"user",userId:f}:{kind:"organization"};return await u.storage.secrets.create({organizationId:t.id,scope:l,name:i.name,value:i.value,description:i.description??null,createdBy:f})}})});import RFi from"zod";var Zlu;var Ck0=N(()=>{du();Nlu();Zlu=di({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:RFi.object({scope:RFi.enum(["user","organization"]).optional()}),outputSchema:RFi.object({secrets:RFi.array(bFi)}),handler:async(i,u)=>{Yi(u);let t=Bi(u);await u.access.check();let f=u.auth.user.id,l=i.scope==="user"?{kind:"user",userId:f}:i.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await u.storage.secrets.list({organizationId:t.id,callerUserId:f,scope:l})}}})});var Mk0=N(()=>{Rk0();Ck0()});var BK=K((Jbf)=>{var Blu;(function(i){i.HEADER="header",i.QUERY="query"})(Blu||(Blu={}));var Flu;(function(i){i.HEADER="header",i.QUERY="query"})(Flu||(Flu={}));var ylu;(function(i){i.HTTP="http",i.HTTPS="https"})(ylu||(ylu={}));var Ra;(function(i){i.MD5="md5",i.CRC32="crc32",i.CRC32C="crc32c",i.SHA1="sha1",i.SHA256="sha256"})(Ra||(Ra={}));var nbf=(i)=>{let u=[];if(i.sha256!==void 0)u.push({algorithmId:()=>Ra.SHA256,checksumConstructor:()=>i.sha256});if(i.md5!=null)u.push({algorithmId:()=>Ra.MD5,checksumConstructor:()=>i.md5});return{addChecksumAlgorithm(t){u.push(t)},checksumAlgorithms(){return u}}},kbf=(i)=>{let u={};return i.checksumAlgorithms().forEach((t)=>{u[t.algorithmId()]=t.checksumConstructor()}),u},jbf=(i)=>{return nbf(i)},Xbf=(i)=>{return kbf(i)},Tlu;(function(i){i[i.HEADER=0]="HEADER",i[i.TRAILER=1]="TRAILER"})(Tlu||(Tlu={}));var Kbf="__smithy_context",Ulu;(function(i){i.PROFILE="profile",i.SSO_SESSION="sso-session",i.SERVICES="services"})(Ulu||(Ulu={}));var Plu;(function(i){i.HTTP_0_9="http/0.9",i.HTTP_1_0="http/1.0",i.TDS_8_0="tds/8.0"})(Plu||(Plu={}));Jbf.AlgorithmId=Ra;Jbf.EndpointURLScheme=ylu;Jbf.FieldPosition=Tlu;Jbf.HttpApiKeyAuthLocation=Flu;Jbf.HttpAuthLocation=Blu;Jbf.IniSectionType=Ulu;Jbf.RequestHandlerProtocol=Plu;Jbf.SMITHY_CONTEXT_KEY=Kbf;Jbf.getDefaultClientConfiguration=jbf;Jbf.resolveDefaultRuntimeConfig=Xbf});var ch=K((abf)=>{var{SMITHY_CONTEXT_KEY:qk0}=BK(),Mbf=(i)=>i[qk0]||(i[qk0]={});class CFi{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(i){this.method=i.method||"GET",this.hostname=i.hostname||"localhost",this.port=i.port,this.query=i.query||{},this.headers=i.headers||{},this.body=i.body,this.protocol=i.protocol?i.protocol.slice(-1)!==":"?`${i.protocol}:`:i.protocol:"https:",this.path=i.path?i.path.charAt(0)!=="/"?`/${i.path}`:i.path:"/",this.username=i.username,this.password=i.password,this.fragment=i.fragment}static clone(i){let u=new CFi({...i,headers:{...i.headers}});if(u.query)u.query=qbf(u.query);return u}static isInstance(i){if(!i)return!1;let u=i;return"method"in u&&"protocol"in u&&"hostname"in u&&"path"in u&&typeof u.query==="object"&&typeof u.headers==="object"}clone(){return CFi.clone(this)}}function qbf(i){return Object.keys(i).reduce((u,t)=>{let f=i[t];return{...u,[t]:Array.isArray(f)?[...f]:f}},{})}class Vk0{statusCode;reason;headers;body;constructor(i){this.statusCode=i.statusCode,this.reason=i.reason,this.headers=i.headers||{},this.body=i.body}static isInstance(i){if(!i)return!1;let u=i;return typeof u.statusCode==="number"&&typeof u.headers==="object"}}var Vbf=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),rk0=(i,u=!1)=>{if(!u)return Vbf.test(i);let t=i.split(".");for(let f of t)if(!rk0(f))return!1;return!0};function rbf(i){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(i)}var mbf=(i)=>{if(typeof i==="function")return i;let u=Promise.resolve(i);return()=>u};function mk0(i){let u={};if(i=i.replace(/^\?/,""),i)for(let t of i.split("&")){let[f,l=null]=t.split("=");if(f=decodeURIComponent(f),l)l=decodeURIComponent(l);if(!(f in u))u[f]=l;else if(Array.isArray(u[f]))u[f].push(l);else u[f]=[u[f],l]}return u}var MFi=(i)=>{if(typeof i==="string")return MFi(new URL(i));let{hostname:u,pathname:t,port:f,protocol:l,search:c}=i,E;if(c)E=mk0(c);return{hostname:u,port:f?parseInt(f):void 0,protocol:l,path:t,query:E}},ebf=(i)=>{if(typeof i==="object"){if("url"in i){let u=MFi(i.url);if(i.headers){u.headers={};for(let t in i.headers)u.headers[t.toLowerCase()]=i.headers[t].join(", ")}return u}return i}return MFi(i)};abf.HttpRequest=CFi;abf.HttpResponse=Vk0;abf.getSmithyContext=Mbf;abf.isValidHostLabel=rk0;abf.isValidHostname=rbf;abf.normalizeProvider=mbf;abf.parseQueryString=mk0;abf.parseUrl=MFi;abf.toEndpointV1=ebf});var h_=K((FRf)=>{var{getSmithyContext:ek0,HttpResponse:ERf,toEndpointV1:$Rf}=ch(),qFi=(i)=>{if(typeof i==="function")return i();return i},Alu=(i,u,t,f,l)=>({name:u,namespace:i,traits:t,input:f,output:l}),wRf=(i)=>(u,t)=>async(f)=>{let{response:l}=await u(f),{operationSchema:c}=ek0(t),[,E,$,w,d,_]=c??[];try{let v=await i.protocol.deserializeResponse(Alu(E,$,w,d,_),{...i,...t},l);return{response:l,output:v}}catch(v){if(Object.defineProperty(v,"$response",{value:l,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in v)){try{v.message+=`
|
|
83017
83017
|
Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`}catch(D){if(!t.logger||t.logger?.constructor?.name==="NoOpLogger")console.warn("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.");else t.logger?.warn?.("Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.")}if(typeof v.$responseBodyText<"u"){if(v.$response)v.$response.body=v.$responseBodyText}try{if(ERf.isInstance(l)){let{headers:D={},statusCode:g}=l,O=Object.entries(D);v.$metadata={httpStatusCode:g,requestId:xlu(/^x-[\w-]+-request-?id$/,O),extendedRequestId:xlu(/^x-[\w-]+-id-2$/,O),cfId:xlu(/^x-[\w-]+-cf-id$/,O)}}}catch(D){}}throw v}},xlu=(i,u)=>{return(u.find(([t])=>{return t.match(i)})||[void 0,void 0])[1]},dRf=(i)=>(u,t)=>async(f)=>{let{operationSchema:l}=ek0(t),[,c,E,$,w,d]=l??[],_=t.endpointV2?async()=>$Rf(t.endpointV2):i.endpoint,v=await i.protocol.serializeRequest(Alu(c,E,$,w,d),f.input,{...i,...t,endpoint:_});return u({...f,request:v})},ak0={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ok0={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function _Rf(i){return{applyToStack:(u)=>{u.add(dRf(i),ok0),u.add(wRf(i),ak0),i.protocol.setSerdeContext(i)}}}class hw{name;namespace;traits;static assign(i,u){return Object.assign(i,u)}static[Symbol.hasInstance](i){let u=this.prototype.isPrototypeOf(i);if(!u&&typeof i==="object"&&i!==null)return i.symbol===this.symbol;return u}getName(){return this.namespace+"#"+this.name}}class eFi extends hw{static symbol=Symbol.for("@smithy/lis");name;traits;valueSchema;symbol=eFi.symbol}var vRf=(i,u,t,f)=>hw.assign(new eFi,{name:u,namespace:i,traits:t,valueSchema:f});class aFi extends hw{static symbol=Symbol.for("@smithy/map");name;traits;keySchema;valueSchema;symbol=aFi.symbol}var hRf=(i,u,t,f,l)=>hw.assign(new aFi,{name:u,namespace:i,traits:t,keySchema:f,valueSchema:l});class oFi extends hw{static symbol=Symbol.for("@smithy/ope");name;traits;input;output;symbol=oFi.symbol}var DRf=(i,u,t,f,l)=>hw.assign(new oFi,{name:u,namespace:i,traits:t,input:f,output:l});class Va extends hw{static symbol=Symbol.for("@smithy/str");name;traits;memberNames;memberList;symbol=Va.symbol}var gRf=(i,u,t,f,l)=>hw.assign(new Va,{name:u,namespace:i,traits:t,memberNames:f,memberList:l});class sFi extends Va{static symbol=Symbol.for("@smithy/err");ctor;symbol=sFi.symbol}var NRf=(i,u,t,f,l,c)=>hw.assign(new sFi,{name:u,namespace:i,traits:t,memberNames:f,memberList:l,ctor:null}),VFi=[];function qa(i){if(typeof i==="object")return i;if(i=i|0,VFi[i])return VFi[i];let u={},t=0;for(let f of["httpLabel","idempotent","idempotencyToken","sensitive","httpPayload","httpResponseCode","httpQueryParams"])if((i>>t++&1)===1)u[f]=1;return VFi[i]=u}var Ca={it:Symbol.for("@smithy/nor-struct-it"),ns:Symbol.for("@smithy/ns")},rFi=[],mFi={};class G8{ref;memberName;static symbol=Symbol.for("@smithy/nor");symbol=G8.symbol;name;schema;_isMemberSchema;traits;memberTraits;normalizedTraits;constructor(i,u){this.ref=i,this.memberName=u;let t=[],f=i,l=i;this._isMemberSchema=!1;while(Ilu(f))t.push(f[1]),f=f[0],l=qFi(f),this._isMemberSchema=!0;if(t.length>0){this.memberTraits={};for(let c=t.length-1;c>=0;--c){let E=t[c];Object.assign(this.memberTraits,qa(E))}}else this.memberTraits=0;if(l instanceof G8){let c=this.memberTraits;Object.assign(this,l),this.memberTraits=Object.assign({},c,l.getMemberTraits(),this.getMemberTraits()),this.normalizedTraits=void 0,this.memberName=u??l.memberName;return}if(this.schema=qFi(l),sk0(this.schema))this.name=`${this.schema[1]}#${this.schema[2]}`,this.traits=this.schema[3];else this.name=this.memberName??String(l),this.traits=0;if(this._isMemberSchema&&!u)throw Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(!0)} missing member name.`)}static[Symbol.hasInstance](i){let u=this.prototype.isPrototypeOf(i);if(!u&&typeof i==="object"&&i!==null)return i.symbol===this.symbol;return u}static of(i){let u=typeof i==="function"||typeof i==="object"&&i!==null;if(typeof i==="number"){if(rFi[i])return rFi[i]}else if(typeof i==="string"){if(mFi[i])return mFi[i]}else if(u){if(i[Ca.ns])return i[Ca.ns]}let t=qFi(i);if(t instanceof G8)return t;if(Ilu(t)){let[l,c]=t;if(l instanceof G8)return Object.assign(l.getMergedTraits(),qa(c)),l;throw Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(i,null,2)}.`)}let f=new G8(t);if(u)return i[Ca.ns]=f;if(typeof t==="string")return mFi[t]=f;if(typeof t==="number")return rFi[t]=f;return f}getSchema(){let i=this.schema;if(Array.isArray(i)&&i[0]===0)return i[4];return i}getName(i=!1){let{name:u}=this;return!i&&u&&u.includes("#")?u.split("#")[1]:u||void 0}getMemberName(){return this.memberName}isMemberSchema(){return this._isMemberSchema}isListSchema(){let i=this.getSchema();return typeof i==="number"?i>=64&&i<128:i[0]===1}isMapSchema(){let i=this.getSchema();return typeof i==="number"?i>=128&&i<=255:i[0]===2}isStructSchema(){let i=this.getSchema();if(typeof i!=="object")return!1;let u=i[0];return u===3||u===-3||u===4}isUnionSchema(){let i=this.getSchema();if(typeof i!=="object")return!1;return i[0]===4}isBlobSchema(){let i=this.getSchema();return i===21||i===42}isTimestampSchema(){let i=this.getSchema();return typeof i==="number"&&i>=4&&i<=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:i}=this.getMergedTraits();return!!i||this.getSchema()===42}isIdempotencyToken(){return!!this.getMergedTraits().idempotencyToken}getMergedTraits(){return this.normalizedTraits??(this.normalizedTraits={...this.getOwnTraits(),...this.getMemberTraits()})}getMemberTraits(){return qa(this.memberTraits)}getOwnTraits(){return qa(this.traits)}getKeySchema(){let[i,u]=[this.isDocumentSchema(),this.isMapSchema()];if(!i&&!u)throw Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(!0)}`);let t=this.getSchema(),f=i?15:t[4]??0;return Ma([f,0],"key")}getValueSchema(){let i=this.getSchema(),[u,t,f]=[this.isDocumentSchema(),this.isMapSchema(),this.isListSchema()],l=typeof i==="number"?63&i:i&&typeof i==="object"&&(t||f)?i[3+i[0]]:u?15:void 0;if(l!=null)return Ma([l,0],t?"value":"member");throw Error(`@smithy/core/schema - ${this.getName(!0)} has no value member.`)}getMemberSchema(i){let u=this.getSchema();if(this.isStructSchema()&&u[4].includes(i)){let t=u[4].indexOf(i),f=u[5][t];return Ma(Ilu(f)?f:[f,0],i)}if(this.isDocumentSchema())return Ma([15,0],i);throw Error(`@smithy/core/schema - ${this.getName(!0)} has no member=${i}.`)}getMemberSchemas(){let i={};try{for(let[u,t]of this.structIterator())i[u]=t}catch(u){}return i}getEventStreamMember(){if(this.isStructSchema()){for(let[i,u]of this.structIterator())if(u.isStreaming()&&u.isStructSchema())return i}return""}*structIterator(){if(this.isUnitSchema())return;if(!this.isStructSchema())throw Error("@smithy/core/schema - cannot iterate non-struct schema.");let i=this.getSchema(),u=i[4].length,t=i[Ca.it];if(t&&u===t.length){yield*t;return}t=Array(u);for(let f=0;f<u;++f){let l=i[4][f],c=Ma([i[5][f],0],l);yield t[f]=[l,c]}i[Ca.it]=t}}function Ma(i,u){if(i instanceof G8)return Object.assign(i,{memberName:u,_isMemberSchema:!0});return new G8(i,u)}var Ilu=(i)=>Array.isArray(i)&&i.length===2,sk0=(i)=>Array.isArray(i)&&i.length>=5;class ra extends hw{static symbol=Symbol.for("@smithy/sim");name;schemaRef;traits;symbol=ra.symbol}var ORf=(i,u,t,f)=>hw.assign(new ra,{name:u,namespace:i,traits:f,schemaRef:t}),ZRf=(i,u,t,f)=>hw.assign(new ra,{name:u,namespace:i,traits:t,schemaRef:f}),BRf={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 A8{namespace;schemas;exceptions;static registries=new Map;constructor(i,u=new Map,t=new Map){this.namespace=i,this.schemas=u,this.exceptions=t}static for(i){if(!A8.registries.has(i))A8.registries.set(i,new A8(i));return A8.registries.get(i)}copyFrom(i){let{schemas:u,exceptions:t}=this;for(let[f,l]of i.schemas)if(!u.has(f))u.set(f,l);for(let[f,l]of i.exceptions)if(!t.has(f))t.set(f,l)}register(i,u){let t=this.normalizeShapeId(i);for(let f of[this,A8.for(t.split("#")[0])])f.schemas.set(t,u)}getSchema(i){let u=this.normalizeShapeId(i);if(!this.schemas.has(u)){if(!i.includes("#")){let t="#"+i,f=[];for(let[l,c]of this.schemas.entries())if(l.endsWith(t))f.push(c);if(f.length===1)return f[0]}throw Error(`@smithy/core/schema - schema not found for ${u}`)}return this.schemas.get(u)}registerError(i,u){let t=i,f=t[1];for(let l of[this,A8.for(f)])l.schemas.set(f+"#"+t[2],t),l.exceptions.set(t,u)}getErrorCtor(i){let u=i;if(this.exceptions.has(u))return this.exceptions.get(u);return A8.for(u[1]).exceptions.get(u)}getBaseException(){for(let i of this.exceptions.keys())if(Array.isArray(i)){let[,u,t]=i,f=u+"#"+t;if(f.startsWith("smithy.ts.sdk.synthetic.")&&f.endsWith("ServiceException"))return i}return}find(i){for(let u of this.schemas.values())if(i(u))return u;return}clear(){this.schemas.clear(),this.exceptions.clear()}normalizeShapeId(i){if(i.includes("#"))return i;return this.namespace+"#"+i}}FRf.ErrorSchema=sFi;FRf.ListSchema=eFi;FRf.MapSchema=aFi;FRf.NormalizedSchema=G8;FRf.OperationSchema=oFi;FRf.SCHEMA=BRf;FRf.Schema=hw;FRf.SimpleSchema=ra;FRf.StructureSchema=Va;FRf.TypeRegistry=A8;FRf.deref=qFi;FRf.deserializerMiddlewareOption=ak0;FRf.error=NRf;FRf.getSchemaSerdePlugin=_Rf;FRf.isStaticSchema=sk0;FRf.list=vRf;FRf.map=hRf;FRf.op=DRf;FRf.operation=Alu;FRf.serializerMiddlewareOption=ok0;FRf.sim=ORf;FRf.simAdapter=ZRf;FRf.simpleSchemaCacheN=rFi;FRf.simpleSchemaCacheS=mFi;FRf.struct=gRf;FRf.traitsCache=VFi;FRf.translateTraits=qa});var u1=K((ICf)=>{var{getSmithyContext:rRf,normalizeProvider:mRf}=ch();ICf.getSmithyContext=rRf;ICf.normalizeProvider=mRf;var{SMITHY_CONTEXT_KEY:eRf,AlgorithmId:iyi}=BK();ICf.AlgorithmId=iyi;var{NormalizedSchema:aRf}=h_(),FK=(i,u)=>{let t=[];if(i)t.push(i);if(u)for(let f of u)t.push(f);return t},Pg=(i,u)=>{return`${i||"anonymous"}${u&&u.length>0?` (a.k.a. ${u.join(",")})`:""}`},ma=()=>{let i=[],u=[],t=!1,f=new Set,l=(v)=>v.sort((h,D)=>pk0[D.step]-pk0[h.step]||ij0[D.priority||"normal"]-ij0[h.priority||"normal"]),c=(v)=>{let h=!1,D=(g)=>{let O=FK(g.name,g.aliases);if(O.includes(v)){h=!0;for(let Z of O)f.delete(Z);return!1}return!0};return i=i.filter(D),u=u.filter(D),h},E=(v)=>{let h=!1,D=(g)=>{if(g.middleware===v){h=!0;for(let O of FK(g.name,g.aliases))f.delete(O);return!1}return!0};return i=i.filter(D),u=u.filter(D),h},$=(v)=>{return i.forEach((h)=>{v.add(h.middleware,{...h})}),u.forEach((h)=>{v.addRelativeTo(h.middleware,{...h})}),v.identifyOnResolve?.(_.identifyOnResolve()),v},w=(v)=>{let h=[];return v.before.forEach((D)=>{if(D.before.length===0&&D.after.length===0)h.push(D);else h.push(...w(D))}),h.push(v),v.after.reverse().forEach((D)=>{if(D.before.length===0&&D.after.length===0)h.push(D);else h.push(...w(D))}),h},d=(v=!1)=>{let h=[],D=[],g={};return i.forEach((Z)=>{let B={...Z,before:[],after:[]};for(let F of FK(B.name,B.aliases))g[F]=B;h.push(B)}),u.forEach((Z)=>{let B={...Z,before:[],after:[]};for(let F of FK(B.name,B.aliases))g[F]=B;D.push(B)}),D.forEach((Z)=>{if(Z.toMiddleware){let B=g[Z.toMiddleware];if(B===void 0){if(v)return;throw Error(`${Z.toMiddleware} is not found when adding ${Pg(Z.name,Z.aliases)} middleware ${Z.relation} ${Z.toMiddleware}`)}if(Z.relation==="after")B.after.push(Z);if(Z.relation==="before")B.before.push(Z)}}),l(h).map(w).reduce((Z,B)=>{return Z.push(...B),Z},[])},_={add:(v,h={})=>{let{name:D,override:g,aliases:O}=h,Z={step:"initialize",priority:"normal",middleware:v,...h},B=FK(D,O);if(B.length>0){if(B.some((F)=>f.has(F))){if(!g)throw Error(`Duplicate middleware name '${Pg(D,O)}'`);for(let F of B){let y=i.findIndex((U)=>U.name===F||U.aliases?.some((I)=>I===F));if(y===-1)continue;let T=i[y];if(T.step!==Z.step||Z.priority!==T.priority)throw Error(`"${Pg(T.name,T.aliases)}" middleware with ${T.priority} priority in ${T.step} step cannot be overridden by "${Pg(D,O)}" middleware with ${Z.priority} priority in ${Z.step} step.`);i.splice(y,1)}}for(let F of B)f.add(F)}i.push(Z)},addRelativeTo:(v,h)=>{let{name:D,override:g,aliases:O}=h,Z={middleware:v,...h},B=FK(D,O);if(B.length>0){if(B.some((F)=>f.has(F))){if(!g)throw Error(`Duplicate middleware name '${Pg(D,O)}'`);for(let F of B){let y=u.findIndex((U)=>U.name===F||U.aliases?.some((I)=>I===F));if(y===-1)continue;let T=u[y];if(T.toMiddleware!==Z.toMiddleware||T.relation!==Z.relation)throw Error(`"${Pg(T.name,T.aliases)}" middleware ${T.relation} "${T.toMiddleware}" middleware cannot be overridden by "${Pg(D,O)}" middleware ${Z.relation} "${Z.toMiddleware}" middleware.`);u.splice(y,1)}}for(let F of B)f.add(F)}u.push(Z)},clone:()=>$(ma()),use:(v)=>{v.applyToStack(_)},remove:(v)=>{if(typeof v==="string")return c(v);else return E(v)},removeByTag:(v)=>{let h=!1,D=(g)=>{let{tags:O,name:Z,aliases:B}=g;if(O&&O.includes(v)){let F=FK(Z,B);for(let y of F)f.delete(y);return h=!0,!1}return!0};return i=i.filter(D),u=u.filter(D),h},concat:(v)=>{let h=$(ma());return h.use(v),h.identifyOnResolve(t||h.identifyOnResolve()||(v.identifyOnResolve?.()??!1)),h},applyToStack:$,identify:()=>{return d(!0).map((v)=>{let h=v.step??v.relation+" "+v.toMiddleware;return Pg(v.name,v.aliases)+" - "+h})},identifyOnResolve(v){if(typeof v==="boolean")t=v;return t},resolve:(v,h)=>{for(let D of d().map((g)=>g.middleware).reverse())v=D(v,h);if(t)console.log(_.identify());return v}};return _},pk0={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},ij0={high:3,normal:2,low:1},oRf=(i)=>()=>{throw Error(i)},sRf=(i)=>()=>Promise.reject(i),pFi=()=>{let i=new WeakSet;return(u,t)=>{if(typeof t==="object"&&t!==null){if(i.has(t))return"[Circular]";i.add(t)}return t}},pRf=(i)=>{return new Promise((u)=>setTimeout(u,i*1000))},fj0={minDelay:2,maxDelay:120},Eh;(function(i){i.ABORTED="ABORTED",i.FAILURE="FAILURE",i.SUCCESS="SUCCESS",i.RETRY="RETRY",i.TIMEOUT="TIMEOUT"})(Eh||(Eh={}));var iCf=(i)=>{if(i.state===Eh.ABORTED){let u=Error(`${JSON.stringify({...i,reason:"Request was aborted"},pFi())}`);throw u.name="AbortError",u}else if(i.state===Eh.TIMEOUT){let u=Error(`${JSON.stringify({...i,reason:"Waiter has timed out"},pFi())}`);throw u.name="TimeoutError",u}else if(i.state!==Eh.SUCCESS)throw Error(`${JSON.stringify(i,pFi())}`);return i},uCf=async({minDelay:i,maxDelay:u,maxWaitTime:t,abortController:f,client:l,abortSignal:c},E,$)=>{let w={},[d,_]=[i*1000,u*1000],v=0,h=Date.now()+t*1000,D=Date.now()+60000,g=!1;while(!0){if(v>0){let B=lCf(d,_,v,h);if(f?.signal?.aborted||c?.aborted)return w["AbortController signal aborted."]|=0,w["AbortController signal aborted."]+=1,{state:Eh.ABORTED,observedResponses:w};if(Date.now()+B>h)return{state:Eh.TIMEOUT,observedResponses:w};await pRf(B/1000)}let{state:O,reason:Z}=await $(l,E);if(Z){let B=fCf(Z);w[B]|=0,w[B]+=1}if(O!==Eh.RETRY)return{state:O,reason:Z,final:Z,observedResponses:w};if(v+=1,!g&&Date.now()>=D)tCf(w,l),g=!0}},tCf=(i={},u)=>{let t=Object.keys(i),f=0;for(let E of t){let $=i[E]|0;if(E.startsWith("403:"))f+=$}let l=u?.config?.logger,c=typeof l?.warn==="function"&&!l.constructor?.name?.includes?.("NoOpLogger")?l:console;if(f>=3||t[t.length-1]?.startsWith("403:"))c.warn("@smithy/util-waiter WARN - 403 status code encountered during waiter polling.")},fCf=(i)=>{let u=i?.$response?.statusCode??i?.$metadata?.httpStatusCode;if(i?.$responseBodyText)return`${u?u+": ":""}Deserialization error for body: ${i.$responseBodyText}`;if(u){if(i?.$response||i?.message)return`${u??"Unknown"}: ${i?.message}`;return`${u}: OK`}return String(i?.message??JSON.stringify(i,pFi())??"Unknown")},lCf=(i,u,t,f)=>{let l=Math.log(u/i)/Math.log(2)+1;if(t>l)return u;let c=i*2**(t-1),E=Math.min(c,u),$=cCf(i,E);if(Date.now()+$>f){let w=f-Date.now();return Math.max(0,w-500)}return $},cCf=(i,u)=>i+Math.random()*(u-i),ECf=(i)=>{if(i.maxWaitTime<=0)throw Error("WaiterConfiguration.maxWaitTime must be greater than 0");else if(i.minDelay<=0)throw Error("WaiterConfiguration.minDelay must be greater than 0");else if(i.maxDelay<=0)throw Error("WaiterConfiguration.maxDelay must be greater than 0");else if(i.maxWaitTime<=i.minDelay)throw Error(`WaiterConfiguration.maxWaitTime [${i.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${i.minDelay}] for this waiter`);else if(i.maxDelay<i.minDelay)throw Error(`WaiterConfiguration.maxDelay [${i.maxDelay}] must be greater than WaiterConfiguration.minDelay [${i.minDelay}] for this waiter`)},uj0=(i)=>{let u,t=new Promise((f)=>{if(u=()=>f({state:Eh.ABORTED}),typeof i.addEventListener==="function")i.addEventListener("abort",u);else i.onabort=u});return{clearListener(){if(typeof i.removeEventListener==="function")i.removeEventListener("abort",u)},aborted:t}},$Cf=async(i,u,t)=>{let f={...fj0,...i};ECf(f);let l=[uCf(f,u,t)],c=[];if(i.abortSignal){let{aborted:E,clearListener:$}=uj0(i.abortSignal);c.push($),l.push(E)}if(i.abortController?.signal){let{aborted:E,clearListener:$}=uj0(i.abortController.signal);c.push($),l.push(E)}return Promise.race(l).then((E)=>{for(let $ of c)$();return E})};class lj0{config;middlewareStack=ma();initConfig;handlers;constructor(i){this.config=i;let{protocol:u,protocolSettings:t}=i;if(t){if(typeof u==="function")i.protocol=new u(t)}}send(i,u,t){let f=typeof u!=="function"?u:void 0,l=typeof u==="function"?u:t,c=f===void 0&&this.config.cacheMiddleware===!0,E;if(c){if(!this.handlers)this.handlers=new WeakMap;let $=this.handlers;if($.has(i.constructor))E=$.get(i.constructor);else E=i.resolveMiddleware(this.middlewareStack,this.config,f),$.set(i.constructor,E)}else delete this.handlers,E=i.resolveMiddleware(this.middlewareStack,this.config,f);if(l)E(i).then(($)=>l(null,$.output),($)=>l($)).catch(()=>{});else return E(i).then(($)=>$.output)}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}var Glu="***SensitiveInformation***";function uyi(i,u){if(u==null)return u;let t=aRf.of(i);if(t.getMergedTraits().sensitive)return Glu;if(t.isListSchema()){if(!!t.getValueSchema().getMergedTraits().sensitive)return Glu}else if(t.isMapSchema()){if(!!t.getKeySchema().getMergedTraits().sensitive||!!t.getValueSchema().getMergedTraits().sensitive)return Glu}else if(t.isStructSchema()&&typeof u==="object"){let f=u,l={};for(let[c,E]of t.structIterator())if(f[c]!=null)l[c]=uyi(E,f[c]);return l}return u}class klu{middlewareStack=ma();schema;static classBuilder(){return new cj0}resolveMiddlewareWithContext(i,u,t,{middlewareFn:f,clientName:l,commandName:c,inputFilterSensitiveLog:E,outputFilterSensitiveLog:$,smithyContext:w,additionalContext:d,CommandCtor:_}){for(let Z of f.bind(this)(_,i,u,t))this.middlewareStack.use(Z);let v=i.concat(this.middlewareStack),{logger:h}=u,D={logger:h,clientName:l,commandName:c,inputFilterSensitiveLog:E,outputFilterSensitiveLog:$,[eRf]:{commandInstance:this,...w},...d},{requestHandler:g}=u,O=t??{};if(w.eventStream)O={isEventStream:!0,...O};return v.resolve((Z)=>g.handle(Z.request,O),D)}}class cj0{_init=()=>{};_ep={};_middlewareFn=()=>[];_commandName="";_clientName="";_additionalContext={};_smithyContext={};_inputFilterSensitiveLog=void 0;_outputFilterSensitiveLog=void 0;_serializer=null;_deserializer=null;_operationSchema;init(i){this._init=i}ep(i){return this._ep=i,this}m(i){return this._middlewareFn=i,this}s(i,u,t={}){return this._smithyContext={service:i,operation:u,...t},this}c(i={}){return this._additionalContext=i,this}n(i,u){return this._clientName=i,this._commandName=u,this}f(i=(t)=>t,u=(t)=>t){return this._inputFilterSensitiveLog=i,this._outputFilterSensitiveLog=u,this}ser(i){return this._serializer=i,this}de(i){return this._deserializer=i,this}sc(i){return this._operationSchema=i,this._smithyContext.operationSchema=i,this}build(){let i=this,u;return u=class extends klu{input;static getEndpointParameterInstructions(){return i._ep}constructor(...[t]){super();this.input=t??{},i._init(this),this.schema=i._operationSchema}resolveMiddleware(t,f,l){let c=i._operationSchema,E=c?.[4]??c?.input,$=c?.[5]??c?.output;return this.resolveMiddlewareWithContext(t,f,l,{CommandCtor:u,middlewareFn:i._middlewareFn,clientName:i._clientName,commandName:i._commandName,inputFilterSensitiveLog:i._inputFilterSensitiveLog??(c?uyi.bind(null,E):(w)=>w),outputFilterSensitiveLog:i._outputFilterSensitiveLog??(c?uyi.bind(null,$):(w)=>w),smithyContext:i._smithyContext,additionalContext:i._additionalContext})}serialize=i._serializer;deserialize=i._deserializer}}}var wCf="***SensitiveInformation***",dCf=(i,u,t)=>{for(let[c,E]of Object.entries(i)){let $=async function(d,_,v){let h=new E(d);if(typeof _==="function")this.send(h,_);else if(typeof v==="function"){if(typeof _!=="object")throw Error(`Expected http options but got ${typeof _}`);this.send(h,_||{},v)}else return this.send(h,_)},w=(c[0].toLowerCase()+c.slice(1)).replace(/Command$/,"");u.prototype[w]=$}let{paginators:f={},waiters:l={}}=t??{};for(let[c,E]of Object.entries(f))if(u.prototype[c]===void 0)u.prototype[c]=function($={},w,...d){return E({...w,client:this},$,...d)};for(let[c,E]of Object.entries(l))if(u.prototype[c]===void 0)u.prototype[c]=async function($={},w,...d){let _=w;if(typeof w==="number")_={maxWaitTime:w};return E({..._,client:this},$,...d)}};class LQ extends Error{$fault;$response;$retryable;$metadata;constructor(i){super(i.message);Object.setPrototypeOf(this,Object.getPrototypeOf(this).constructor.prototype),this.name=i.name,this.$fault=i.$fault,this.$metadata=i.$metadata}static isInstance(i){if(!i)return!1;let u=i;return LQ.prototype.isPrototypeOf(u)||Boolean(u.$fault)&&Boolean(u.$metadata)&&(u.$fault==="client"||u.$fault==="server")}static[Symbol.hasInstance](i){if(!i)return!1;let u=i;if(this===LQ)return LQ.isInstance(i);if(LQ.isInstance(i)){if(u.name&&this.name)return this.prototype.isPrototypeOf(i)||u.name===this.name;return this.prototype.isPrototypeOf(i)}return!1}}var Ej0=(i,u={})=>{Object.entries(u).filter(([,f])=>f!==void 0).forEach(([f,l])=>{if(i[f]==null||i[f]==="")i[f]=l});let t=i.message||i.Message||"UnknownError";return i.message=t,delete i.Message,i},$j0=({output:i,parsedBody:u,exceptionCtor:t,errorCode:f})=>{let l=vCf(i),c=l.httpStatusCode?l.httpStatusCode+"":void 0,E=new t({name:u?.code||u?.Code||f||c||"UnknownError",$fault:"client",$metadata:l});throw Ej0(E,u)},_Cf=(i)=>{return({output:u,parsedBody:t,errorCode:f})=>{$j0({output:u,parsedBody:t,exceptionCtor:i,errorCode:f})}},vCf=(i)=>({httpStatusCode:i.statusCode,requestId:i.headers["x-amzn-requestid"]??i.headers["x-amzn-request-id"]??i.headers["x-amz-request-id"],extendedRequestId:i.headers["x-amz-id-2"],cfId:i.headers["x-amz-cf-id"]}),hCf=(i)=>{switch(i){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{}}},tj0=!1,DCf=(i)=>{if(i&&!tj0&&parseInt(i.substring(1,i.indexOf(".")))<16)tj0=!0},wj0=Object.values(iyi),dj0=(i)=>{let u=[];for(let t in iyi){let f=iyi[t];if(i[f]===void 0)continue;u.push({algorithmId:()=>f,checksumConstructor:()=>i[f]})}for(let[t,f]of Object.entries(i.checksumAlgorithms??{}))u.push({algorithmId:()=>t,checksumConstructor:()=>f});return{addChecksumAlgorithm(t){i.checksumAlgorithms=i.checksumAlgorithms??{};let f=t.algorithmId(),l=t.checksumConstructor();if(wj0.includes(f))i.checksumAlgorithms[f.toUpperCase()]=l;else i.checksumAlgorithms[f]=l;u.push(t)},checksumAlgorithms(){return u}}},_j0=(i)=>{let u={};return i.checksumAlgorithms().forEach((t)=>{let f=t.algorithmId();if(wj0.includes(f))u[f]=t.checksumConstructor()}),u},vj0=(i)=>{return{setRetryStrategy(u){i.retryStrategy=u},retryStrategy(){return i.retryStrategy}}},hj0=(i)=>{let u={};return u.retryStrategy=i.retryStrategy(),u},Dj0=(i)=>{return Object.assign(dj0(i),vj0(i))},gCf=Dj0,NCf=(i)=>{return Object.assign(_j0(i),hj0(i))},OCf=(i)=>Array.isArray(i)?i:[i],gj0=(i)=>{for(let t in i)if(Object.prototype.hasOwnProperty.call(i,t)&&i[t]["#text"]!==void 0)i[t]=i[t]["#text"];else if(typeof i[t]==="object"&&i[t]!==null)i[t]=gj0(i[t]);return i},ZCf=(i)=>{return i!=null};class Nj0{trace(){}debug(){}info(){}warn(){}error(){}}function Oj0(i,u,t){let f,l,c;if(typeof u>"u"&&typeof t>"u")f={},c=i;else if(f=i,typeof u==="function")return l=u,c=t,yCf(f,l,c);else c=u;for(let E of Object.keys(c)){if(!Array.isArray(c[E])){f[E]=c[E];continue}Zj0(f,null,c,E)}return f}var BCf=(i)=>{let u={};for(let[t,f]of Object.entries(i||{}))u[t]=[,f];return u},FCf=(i,u)=>{let t={};for(let f in u)Zj0(t,i,u,f);return t},yCf=(i,u,t)=>{return Oj0(i,Object.entries(t).reduce((f,[l,c])=>{if(Array.isArray(c))f[l]=c;else if(typeof c==="function")f[l]=[u,c()];else f[l]=[u,c];return f},{}))},Zj0=(i,u,t,f)=>{if(u!==null){let E=t[f];if(typeof E==="function")E=[,E];let[$=TCf,w=UCf,d=f]=E;if(typeof $==="function"&&$(u[d])||typeof $!=="function"&&!!$)i[f]=w(u[d]);return}let[l,c]=t[f];if(typeof c==="function"){let E,$=l===void 0&&(E=c())!=null,w=typeof l==="function"&&!!l(void 0)||typeof l!=="function"&&!!l;if($)i[f]=E;else if(w)i[f]=c()}else{let E=l===void 0&&c!=null,$=typeof l==="function"&&!!l(c)||typeof l!=="function"&&!!l;if(E||$)i[f]=c}},TCf=(i)=>i!=null,UCf=(i)=>i,PCf=(i)=>{if(i!==i)return"NaN";switch(i){case 1/0:return"Infinity";case-1/0:return"-Infinity";default:return i}},xCf=(i)=>i.toISOString().replace(".000Z","Z"),nlu=(i)=>{if(i==null)return{};if(Array.isArray(i))return i.filter((u)=>u!=null).map(nlu);if(typeof i==="object"){let u={};for(let t of Object.keys(i)){if(i[t]==null)continue;u[t]=nlu(i[t])}return u}return i};ICf.Client=lj0;ICf.Command=klu;ICf.NoOpLogger=Nj0;ICf.SENSITIVE_STRING=wCf;ICf.ServiceException=LQ;ICf.WaiterState=Eh;ICf._json=nlu;ICf.checkExceptions=iCf;ICf.constructStack=ma;ICf.convertMap=BCf;ICf.createAggregatedClient=dCf;ICf.createWaiter=$Cf;ICf.decorateServiceException=Ej0;ICf.emitWarningIfUnsupportedVersion=DCf;ICf.getArrayIfSingleItem=OCf;ICf.getChecksumConfiguration=dj0;ICf.getDefaultClientConfiguration=gCf;ICf.getDefaultExtensionConfiguration=Dj0;ICf.getRetryConfiguration=vj0;ICf.getValueFromTextNode=gj0;ICf.invalidFunction=oRf;ICf.invalidProvider=sRf;ICf.isSerializableHeaderValue=ZCf;ICf.loadConfigsForDefaultMode=hCf;ICf.map=Oj0;ICf.resolveChecksumRuntimeConfig=_j0;ICf.resolveDefaultRuntimeConfig=NCf;ICf.resolveRetryRuntimeConfig=hj0;ICf.schemaLogFilter=uyi;ICf.serializeDateTime=xCf;ICf.serializeFloat=PCf;ICf.take=FCf;ICf.throwDefaultError=$j0;ICf.waiterServiceDefaults=fj0;ICf.withBaseException=_Cf});var cf=K(($qf)=>{var{homedir:_Mf}=Zi("os"),{sep:vMf,join:ea}=Zi("path"),{createHash:hMf}=Zi("crypto"),{readFile:Pj0}=Zi("fs/promises"),{IniSectionType:tyi}=BK(),{normalizeProvider:fyi}=u1(),{isValidHostLabel:DMf}=ch();class zQ extends Error{name="ProviderError";tryNextLink;constructor(i,u=!0){let t,f=!0;if(typeof u==="boolean")t=void 0,f=u;else if(u!=null&&typeof u==="object")t=u.logger,f=u.tryNextLink??!0;super(i);this.tryNextLink=f,Object.setPrototypeOf(this,zQ.prototype),t?.debug?.(`@smithy/property-provider ${f?"->":"(!)"} ${i}`)}static from(i,u=!0){return Object.assign(new this(i.message,u),i)}}class aa extends zQ{name="CredentialsProviderError";constructor(i,u=!0){super(i,u);Object.setPrototypeOf(this,aa.prototype)}}class Slu extends zQ{name="TokenProviderError";constructor(i,u=!0){super(i,u);Object.setPrototypeOf(this,Slu.prototype)}}var xj0=(...i)=>async()=>{if(i.length===0)throw new zQ("No providers in chain");let u;for(let t of i)try{return await t()}catch(f){if(u=f,f?.tryNextLink)continue;throw f}throw u},Ij0=(i)=>()=>Promise.resolve(i),Ylu=(i,u,t)=>{let f,l,c,E=!1,$=async()=>{if(!l)l=i();try{f=await l,c=!0,E=!1}finally{l=void 0}return f};if(u===void 0)return async(w)=>{if(!c||w?.forceRefresh)f=await $();return f};return async(w)=>{if(!c||w?.forceRefresh)f=await $();if(E)return f;if(t&&!t(f))return E=!0,f;if(u(f))return await $(),f;return f}},n8=(i,u,t)=>{if(!(u in i))return;if(i[u]==="true")return!0;if(i[u]==="false")return!1;throw Error(`Cannot load ${t} "${u}". Expected "true" or "false", got ${i[u]}.`)},gMf=(i,u,t)=>{if(!(u in i))return;let f=parseInt(i[u],10);if(Number.isNaN(f))throw TypeError(`Cannot load ${t} '${u}'. Expected number, got '${i[u]}'.`);return f},D_;(function(i){i.ENV="env",i.CONFIG="shared config entry"})(D_||(D_={}));var jlu={},NMf=()=>{if(process&&process.geteuid)return`${process.geteuid()}`;return"DEFAULT"},oa=()=>{let{HOME:i,USERPROFILE:u,HOMEPATH:t,HOMEDRIVE:f=`C:${vMf}`}=process.env;if(i)return i;if(u)return u;if(t)return`${f}${t}`;let l=NMf();if(!jlu[l])jlu[l]=_Mf();return jlu[l]},Aj0="AWS_PROFILE",Gj0="default",nj0=(i)=>i.profile||process.env[Aj0]||Gj0,kj0=(i)=>{let t=hMf("sha1").update(i).digest("hex");return ea(oa(),".aws","sso","cache",`${t}.json`)},lyi={},OMf=async(i)=>{if(lyi[i])return lyi[i];let u=kj0(i),t=await Pj0(u,"utf8");return JSON.parse(t)},yK=".",ZMf=(i)=>Object.entries(i).filter(([u])=>{let t=u.indexOf(yK);if(t===-1)return!1;return Object.values(tyi).includes(u.substring(0,t))}).reduce((u,[t,f])=>{let l=t.indexOf(yK),c=t.substring(0,l)===tyi.PROFILE?t.substring(l+1):t;return u[c]=f,u},{...i.default&&{default:i.default}}),BMf="AWS_CONFIG_FILE",jj0=()=>process.env[BMf]||ea(oa(),".aws","config"),FMf="AWS_SHARED_CREDENTIALS_FILE",yMf=()=>process.env[FMf]||ea(oa(),".aws","credentials"),TMf=/^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/,UMf=["__proto__","profile __proto__"],Klu=(i)=>{let u={},t,f;for(let l of i.split(/\r?\n/)){let c=l.split(/(^|\s)[;#]/)[0].trim();if(c[0]==="["&&c[c.length-1]==="]"){t=void 0,f=void 0;let $=c.substring(1,c.length-1),w=TMf.exec($);if(w){let[,d,,_]=w;if(Object.values(tyi).includes(d))t=[d,_].join(yK)}else t=$;if(UMf.includes($))throw Error(`Found invalid profile name "${$}"`)}else if(t){let $=c.indexOf("=");if(![0,-1].includes($)){let[w,d]=[c.substring(0,$).trim(),c.substring($+1).trim()];if(d==="")f=w;else{if(f&&l.trimStart()===l)f=void 0;u[t]=u[t]||{};let _=f?[f,w].join(yK):w;u[t][_]=d}}}}return u},Xlu={},cyi={},Eyi=(i,u)=>{if(cyi[i]!==void 0)return cyi[i];if(!Xlu[i]||u?.ignoreCache)Xlu[i]=Pj0(i,"utf8");return Xlu[i]},Bj0=()=>({}),Wlu=async(i={})=>{let{filepath:u=yMf(),configFilepath:t=jj0()}=i,f=oa(),l="~/",c=u;if(u.startsWith("~/"))c=ea(f,u.slice(2));let E=t;if(t.startsWith("~/"))E=ea(f,t.slice(2));let $=await Promise.all([Eyi(E,{ignoreCache:i.ignoreCache}).then(Klu).then(ZMf).catch(Bj0),Eyi(c,{ignoreCache:i.ignoreCache}).then(Klu).catch(Bj0)]);return{configFile:$[0],credentialsFile:$[1]}},PMf=(i)=>Object.entries(i).filter(([u])=>u.startsWith(tyi.SSO_SESSION+yK)).reduce((u,[t,f])=>({...u,[t.substring(t.indexOf(yK)+1)]:f}),{}),xMf=()=>({}),IMf=async(i={})=>Eyi(i.configFilepath??jj0()).then(Klu).then(PMf).catch(xMf),AMf=(...i)=>{let u={};for(let t of i)for(let[f,l]of Object.entries(t))if(u[f]!==void 0)Object.assign(u[f],l);else u[f]=l;return u},GMf=async(i)=>{let u=await Wlu(i);return AMf(u.configFile,u.credentialsFile)},nMf={getFileRecord(){return cyi},interceptFile(i,u){cyi[i]=Promise.resolve(u)},getTokenRecord(){return lyi},interceptToken(i,u){lyi[i]=u}};function Xj0(i){try{let u=new Set(Array.from(i.match(/([A-Z_]){3,}/g)??[]));return u.delete("CONFIG"),u.delete("CONFIG_PREFIX_SEPARATOR"),u.delete("ENV"),[...u].join(", ")}catch(u){return i}}var kMf=(i,u)=>async()=>{try{let t=i(process.env,u);if(t===void 0)throw Error();return t}catch(t){throw new aa(t.message||`Not found in ENV: ${Xj0(i.toString())}`,{logger:u?.logger})}},jMf=(i,{preferredFile:u="config",...t}={})=>async()=>{let f=nj0(t),{configFile:l,credentialsFile:c}=await Wlu(t),E=c[f]||{},$=l[f]||{},w=u==="config"?{...E,...$}:{...$,...E};try{let _=i(w,u==="config"?l:c);if(_===void 0)throw Error();return _}catch(d){throw new aa(d.message||`Not found in config files w/ profile [${f}]: ${Xj0(i.toString())}`,{logger:t.logger})}},XMf=(i)=>typeof i==="function",Kj0=(i)=>XMf(i)?async()=>await i():Ij0(i),Jlu=({environmentVariableSelector:i,configFileSelector:u,default:t},f={})=>{let{signingName:l,logger:c}=f;return Ylu(xj0(kMf(i,{signingName:l,logger:c}),jMf(u,f),Kj0(t)))},Llu="AWS_USE_DUALSTACK_ENDPOINT",zlu="use_dualstack_endpoint",KMf=!1,JMf={environmentVariableSelector:(i)=>n8(i,Llu,D_.ENV),configFileSelector:(i)=>n8(i,zlu,D_.CONFIG),default:!1},SMf={environmentVariableSelector:(i)=>n8(i,Llu,D_.ENV),configFileSelector:(i)=>n8(i,zlu,D_.CONFIG),default:void 0},Qlu="AWS_USE_FIPS_ENDPOINT",Hlu="use_fips_endpoint",YMf=!1,WMf={environmentVariableSelector:(i)=>n8(i,Qlu,D_.ENV),configFileSelector:(i)=>n8(i,Hlu,D_.CONFIG),default:!1},LMf={environmentVariableSelector:(i)=>n8(i,Qlu,D_.ENV),configFileSelector:(i)=>n8(i,Hlu,D_.CONFIG),default:void 0},zMf=(i)=>{let{tls:u,endpoint:t,urlParser:f,useDualstackEndpoint:l}=i;return Object.assign(i,{tls:u??!0,endpoint:fyi(typeof t==="string"?f(t):t),isCustomEndpoint:!0,useDualstackEndpoint:fyi(l??!1)})},QMf=async(i)=>{let{tls:u=!0}=i,t=await i.region();if(!new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/).test(t))throw Error("Invalid region in client config");let l=await i.useDualstackEndpoint(),c=await i.useFipsEndpoint(),{hostname:E}=await i.regionInfoProvider(t,{useDualstackEndpoint:l,useFipsEndpoint:c})??{};if(!E)throw Error("Cannot resolve hostname from client config");return i.urlParser(`${u?"https:":"http:"}//${E}`)},HMf=(i)=>{let u=fyi(i.useDualstackEndpoint??!1),{endpoint:t,useFipsEndpoint:f,urlParser:l,tls:c}=i;return Object.assign(i,{tls:c??!0,endpoint:t?fyi(typeof t==="string"?l(t):t):()=>QMf({...i,useDualstackEndpoint:u,useFipsEndpoint:f}),isCustomEndpoint:!!t,useDualstackEndpoint:u})},Jj0="AWS_REGION",Sj0="region",Yj0={environmentVariableSelector:(i)=>i[Jj0],configFileSelector:(i)=>i[Sj0],default:()=>{throw Error("Region is missing")}},bMf={preferredFile:"credentials"},Fj0=new Set,RMf=(i,u=DMf)=>{if(!Fj0.has(i)&&!u(i))if(i==="*")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="${i}" is not a valid hostname component.`);else Fj0.add(i)},Wj0=(i)=>typeof i==="string"&&(i.startsWith("fips-")||i.endsWith("-fips")),CMf=(i)=>Wj0(i)?["fips-aws-global","aws-fips"].includes(i)?"us-east-1":i.replace(/fips-(dkr-|prod-)?|-fips/,""):i,MMf=(i)=>{let{region:u,useFipsEndpoint:t}=i;if(!u)throw Error("Region is missing");return Object.assign(i,{region:async()=>{let f=typeof u==="function"?await u():u,l=CMf(f);return RMf(l),l},useFipsEndpoint:async()=>{let f=typeof u==="string"?u:await u();if(Wj0(f))return!0;return typeof t!=="function"?Promise.resolve(!!t):t()}})},yj0=(i=[],{useFipsEndpoint:u,useDualstackEndpoint:t})=>i.find(({tags:f})=>u===f.includes("fips")&&t===f.includes("dualstack"))?.hostname,qMf=(i,{regionHostname:u,partitionHostname:t})=>u?u:t?t.replace("{region}",i):void 0,VMf=(i,{partitionHash:u})=>Object.keys(u||{}).find((t)=>u[t].regions.includes(i))??"aws",rMf=(i,{signingRegion:u,regionRegex:t,useFipsEndpoint:f})=>{if(u)return u;else if(f){let l=t.replace("\\\\","\\").replace(/^\^/g,"\\.").replace(/\$$/g,"\\."),c=i.match(l);if(c)return c[0].slice(1,-1)}},mMf=(i,{useFipsEndpoint:u=!1,useDualstackEndpoint:t=!1,signingService:f,regionHash:l,partitionHash:c})=>{let E=VMf(i,{partitionHash:c}),$=i in l?i:c[E]?.endpoint??i,w={useFipsEndpoint:u,useDualstackEndpoint:t},d=yj0(l[$]?.variants,w),_=yj0(c[E]?.variants,w),v=qMf($,{regionHostname:d,partitionHostname:_});if(v===void 0)throw Error(`Endpoint resolution failed for: ${{resolvedRegion:$,useFipsEndpoint:u,useDualstackEndpoint:t}}`);let h=rMf(v,{signingRegion:l[$]?.signingRegion,regionRegex:c[E].regionRegex,useFipsEndpoint:u});return{partition:E,signingService:f,hostname:v,...h&&{signingRegion:h},...l[$]?.signingService&&{signingService:l[$].signingService}}},eMf="AWS_EXECUTION_ENV",Tj0="AWS_REGION",Uj0="AWS_DEFAULT_REGION",aMf="AWS_EC2_METADATA_DISABLED",oMf=["in-region","cross-region","mobile","standard","legacy"],sMf="/latest/meta-data/placement/region",pMf="AWS_DEFAULTS_MODE",iqf="defaults_mode",uqf={environmentVariableSelector:(i)=>{return i[pMf]},configFileSelector:(i)=>{return i[iqf]},default:"legacy"},tqf=({region:i=Jlu(Yj0),defaultsMode:u=Jlu(uqf)}={})=>Ylu(async()=>{let t=typeof u==="function"?await u():u;switch(t?.toLowerCase()){case"auto":return fqf(i);case"in-region":case"cross-region":case"mobile":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw Error(`Invalid parameter for "defaultsMode", expect ${oMf.join(", ")}, got ${t}`)}}),fqf=async(i)=>{if(i){let u=typeof i==="function"?await i():i,t=await lqf();if(!t)return"standard";if(u===t)return"in-region";else return"cross-region"}return"standard"},lqf=async()=>{if(process.env[eMf]&&(process.env[Tj0]||process.env[Uj0]))return process.env[Tj0]??process.env[Uj0];if(!process.env[aMf])try{let i=await cqf();return(await Eqf({hostname:i.hostname,path:sMf})).toString()}catch(i){}},cqf=async()=>{let i=process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT;if(i){let t=new URL(i);return{hostname:t.hostname,path:t.pathname}}if(process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE==="IPv6")return{hostname:"fd00:ec2::254",path:"/"};return{hostname:"169.254.169.254",path:"/"}},Eqf=async({hostname:i,path:u})=>{let{request:t}=Zi("http");return new Promise((f,l)=>{let c=t({method:"GET",hostname:i.replace(/^\[(.+)]$/,"$1"),path:u,timeout:1000,signal:AbortSignal.timeout(1000)});c.on("error",(E)=>{l(E),c.destroy()}),c.on("timeout",()=>{l(Error("TimeoutError from instance metadata service")),c.destroy()}),c.on("response",(E)=>{let{statusCode:$=400}=E;if($<200||300<=$){l(Object.assign(Error("Error response received from instance metadata service"),{statusCode:$})),c.destroy();return}let w=[];E.on("data",(d)=>w.push(d)),E.on("end",()=>{f(Buffer.concat(w)),c.destroy()})}),c.end()})};$qf.CONFIG_PREFIX_SEPARATOR=yK;$qf.CONFIG_USE_DUALSTACK_ENDPOINT=zlu;$qf.CONFIG_USE_FIPS_ENDPOINT=Hlu;$qf.CredentialsProviderError=aa;$qf.DEFAULT_PROFILE=Gj0;$qf.DEFAULT_USE_DUALSTACK_ENDPOINT=KMf;$qf.DEFAULT_USE_FIPS_ENDPOINT=YMf;$qf.ENV_PROFILE=Aj0;$qf.ENV_USE_DUALSTACK_ENDPOINT=Llu;$qf.ENV_USE_FIPS_ENDPOINT=Qlu;$qf.NODE_REGION_CONFIG_FILE_OPTIONS=bMf;$qf.NODE_REGION_CONFIG_OPTIONS=Yj0;$qf.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS=JMf;$qf.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS=WMf;$qf.ProviderError=zQ;$qf.REGION_ENV_NAME=Jj0;$qf.REGION_INI_NAME=Sj0;$qf.SelectorType=D_;$qf.TokenProviderError=Slu;$qf.booleanSelector=n8;$qf.chain=xj0;$qf.externalDataInterceptor=nMf;$qf.fromStatic=Kj0;$qf.fromValue=Ij0;$qf.getHomeDir=oa;$qf.getProfileName=nj0;$qf.getRegionInfo=mMf;$qf.getSSOTokenFilepath=kj0;$qf.getSSOTokenFromFile=OMf;$qf.loadConfig=Jlu;$qf.loadSharedConfigFiles=Wlu;$qf.loadSsoSessionData=IMf;$qf.memoize=Ylu;$qf.nodeDualstackConfigSelectors=SMf;$qf.nodeFipsConfigSelectors=LMf;$qf.numberSelector=gMf;$qf.parseKnownFiles=GMf;$qf.readFile=Eyi;$qf.resolveCustomEndpointsConfig=zMf;$qf.resolveDefaultsModeConfig=tqf;$qf.resolveEndpointsConfig=HMf;$qf.resolveRegionConfig=MMf});var m1=K((SVf)=>{var{CONFIG_PREFIX_SEPARATOR:Lj0,loadConfig:aqf}=cf(),{toEndpointV1:$yi,getSmithyContext:oqf,normalizeProvider:blu,isValidHostLabel:Hj0}=ch();SVf.isValidHostLabel=Hj0;SVf.middlewareEndpointToEndpointV1=$yi;SVf.toEndpointV1=$yi;var{EndpointURLScheme:Mlu}=BK(),zj0="AWS_ENDPOINT_URL",Qj0="endpoint_url",sqf=(i)=>({environmentVariableSelector:(u)=>{let t=i.split(" ").map((c)=>c.toUpperCase()),f=u[[zj0,...t].join("_")];if(f)return f;let l=u[zj0];if(l)return l;return},configFileSelector:(u,t)=>{if(t&&u.services){let l=t[["services",u.services].join(Lj0)];if(l){let c=i.split(" ").map(($)=>$.toLowerCase()),E=l[[c.join("_"),Qj0].join(Lj0)];if(E)return E}}let f=u[Qj0];if(f)return f;return},default:void 0}),wyi=async(i)=>aqf(sqf(i??""))(),pqf=async(i)=>{let u=i?.Bucket||"";if(typeof i.Bucket==="string")i.Bucket=u.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"));if(lVf(u)){if(i.ForcePathStyle===!0)throw Error("Path-style addressing cannot be used with ARN buckets")}else if(!fVf(u)||u.indexOf(".")!==-1&&!String(i.Endpoint).startsWith("http:")||u.toLowerCase()!==u||u.length<3)i.ForcePathStyle=!0;if(i.DisableMultiRegionAccessPoints)i.disableMultiRegionAccessPoints=!0,i.DisableMRAP=!0;return i},iVf=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,uVf=/(\d+\.){3}\d+/,tVf=/\.\./,fVf=(i)=>iVf.test(i)&&!uVf.test(i)&&!tVf.test(i),lVf=(i)=>{let[u,t,f,,,l]=i.split(":"),c=u==="arn"&&i.split(":").length>=6,E=Boolean(c&&t&&f&&l);if(c&&!E)throw Error(`Invalid ARN: ${i} was an invalid ARN.`);return E},cVf=(i,u,t,f=!1)=>{let l=async()=>{let c;if(f)c=t.clientContextParams?.[i]??t[i]??t[u];else c=t[i]??t[u];if(typeof c==="function")return c();return c};if(i==="credentialScope"||u==="CredentialScope")return async()=>{let c=typeof t.credentials==="function"?await t.credentials():t.credentials;return c?.credentialScope??c?.CredentialScope};if(i==="accountId"||u==="AccountId")return async()=>{let c=typeof t.credentials==="function"?await t.credentials():t.credentials;return c?.accountId??c?.AccountId};if(i==="endpoint"||u==="endpoint")return async()=>{if(t.isCustomEndpoint===!1)return;let c=await l();if(c&&typeof c==="object"){if("url"in c)return c.url.href;if("hostname"in c){let{protocol:E,hostname:$,port:w,path:d}=c;return`${E}//${$}${w?":"+w:""}${d}`}}return c};return l};function bj0(i){return async(u,t,f,l)=>{if(!f.isCustomEndpoint){let $;if(f.serviceConfiguredEndpoint)$=await f.serviceConfiguredEndpoint();else $=await i(f.serviceId);if($)f.endpoint=()=>Promise.resolve($yi($)),f.isCustomEndpoint=!0}let c=await Rj0(u,t,f);if(typeof f.endpointProvider!=="function")throw Error("config.endpointProvider is not set.");let E=f.endpointProvider(c,l);if(f.isCustomEndpoint&&f.endpoint){let $=await f.endpoint();if($?.headers){E.headers??={};for(let[w,d]of Object.entries($.headers))E.headers[w]=Array.isArray(d)?d:[d]}}return E}}var Rj0=async(i,u,t)=>{let f={},l=u?.getEndpointParameterInstructions?.()||{};for(let[c,E]of Object.entries(l))switch(E.type){case"staticContextParams":f[c]=E.value;break;case"contextParams":f[c]=i[E.name];break;case"clientContextParams":case"builtInParams":f[c]=await cVf(E.name,c,t,E.type!=="builtInParams")();break;case"operationContextParams":f[c]=E.get(i);break;default:throw Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(E))}if(Object.keys(l).length===0)Object.assign(f,t);if(String(t.serviceId).toLowerCase()==="s3")await pqf(f);return f};function EVf(i,u,t){if(!i.__smithy_context)i.__smithy_context={features:{}};else if(!i.__smithy_context.features)i.__smithy_context.features={};i.__smithy_context.features[u]=t}function Cj0(i){let u=bj0(i);return({config:t,instructions:f})=>{return(l,c)=>async(E)=>{if(t.isCustomEndpoint)EVf(c,"ENDPOINT_OVERRIDE","N");let $=await u(E.input,{getEndpointParameterInstructions(){return f}},{...t},c);c.endpointV2=$,c.authSchemes=$.properties?.authSchemes;let w=c.authSchemes?.[0];if(w){c.signing_region=w.signingRegion,c.signing_service=w.signingName;let _=oqf(c)?.selectedHttpAuthScheme?.httpAuthOption;if(_)_.signingProperties=Object.assign(_.signingProperties||{},{signing_region:w.signingRegion,signingRegion:w.signingRegion,signing_service:w.signingName,signingName:w.signingName,signingRegionSet:w.signingRegionSet},w.properties)}return l({...E})}}}var $Vf={name:"serializerMiddleware"},Mj0={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:$Vf.name};function wVf(i){let u=Cj0(i);return(t,f)=>({applyToStack:(l)=>{l.addRelativeTo(u({config:t,instructions:f}),Mj0)}})}function dVf(i){return(u)=>{let t=u.tls??!0,{endpoint:f,useDualstackEndpoint:l,useFipsEndpoint:c}=u,E=f!=null?async()=>$yi(await blu(f)()):void 0,w=Object.assign(u,{endpoint:E,tls:t,isCustomEndpoint:!!f,useDualstackEndpoint:blu(l??!1),useFipsEndpoint:blu(c??!1)}),d=void 0;return w.serviceConfiguredEndpoint=async()=>{if(u.serviceId&&!d)d=i(u.serviceId);return d},w}}class qlu{nodes;root;conditions;results;constructor(i,u,t,f){this.nodes=i,this.root=u,this.conditions=t,this.results=f}static from(i,u,t,f){return new qlu(i,u,t,f)}}class qj0{capacity;data=new Map;parameters=[];constructor({size:i,params:u}){if(this.capacity=i??50,u)this.parameters=u}get(i,u){let t=this.hash(i);if(t===!1)return u();if(!this.data.has(t)){if(this.data.size>this.capacity+10){let f=this.data.keys(),l=0;while(!0){let{value:c,done:E}=f.next();if(this.data.delete(c),E||++l>10)break}}this.data.set(t,u())}return this.data.get(t)}size(){return this.data.size}hash(i){let u="",{parameters:t}=this;if(t.length===0)return!1;for(let f of t){let l=String(i[f]??"");if(l.includes("|;"))return!1;u+=l+"|;"}return u}}class Kc extends Error{constructor(i){super(i);this.name="EndpointError"}}var sa="endpoints";function xg(i){if(typeof i!=="object"||i==null)return i;if("ref"in i)return`$${xg(i.ref)}`;if("fn"in i)return`${i.fn}(${(i.argv||[]).map(xg).join(", ")})`;return JSON.stringify(i,null,2)}var Vj0={},_Vf=(i,u)=>i===u;function vVf(...i){for(let u of i)if(u!=null)return u;return}var hVf=(i)=>{let u=i.split("."),t=[];for(let f of u){let l=f.indexOf("[");if(l!==-1){if(f.indexOf("]")!==f.length-1)throw new Kc(`Path: '${i}' does not end with ']'`);let c=f.slice(l+1,-1);if(Number.isNaN(parseInt(c)))throw new Kc(`Invalid array index: '${c}' in path: '${i}'`);if(l!==0)t.push(f.slice(0,l));t.push(c)}else t.push(f)}return t},rj0=(i,u)=>hVf(u).reduce((t,f)=>{if(typeof t!=="object")throw new Kc(`Index '${f}' in '${u}' not found in '${JSON.stringify(i)}'`);else if(Array.isArray(t)){let l=parseInt(f);return t[l<0?t.length+l:l]}return t[f]},i),DVf=(i)=>i!=null;function gVf(i,u,t){return i?u:t}var NVf=(i)=>!i,OVf=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}$"),mj0=(i)=>OVf.test(i)||i.startsWith("[")&&i.endsWith("]"),Rlu={[Mlu.HTTP]:80,[Mlu.HTTPS]:443},ZVf=(i)=>{let u=(()=>{try{if(i instanceof URL)return i;if(typeof i==="object"&&"hostname"in i){let{hostname:h,port:D,protocol:g="",path:O="",query:Z={}}=i,B=new URL(`${g}//${h}${D?`:${D}`:""}${O}`);return B.search=Object.entries(Z).map(([F,y])=>`${F}=${y}`).join("&"),B}return new URL(i)}catch(h){return null}})();if(!u)return console.error(`Unable to parse ${JSON.stringify(i)} as a whatwg URL.`),null;let t=u.href,{host:f,hostname:l,pathname:c,protocol:E,search:$}=u;if($)return null;let w=E.slice(0,-1);if(!Object.values(Mlu).includes(w))return null;let d=mj0(l),_=t.includes(`${f}:${Rlu[w]}`)||typeof i==="string"&&i.includes(`${f}:${Rlu[w]}`),v=`${f}${_?`:${Rlu[w]}`:""}`;return{scheme:w,authority:v,path:c,normalizedPath:c.endsWith("/")?c:`${c}/`,isIp:d}};function BVf(i,u,t){if(t===1)return[i];if(i==="")return[""];let f=i.split(u);if(t===0)return f;return f.slice(0,t-1).concat(f.slice(1).join(u))}var FVf=(i,u)=>i===u,yVf=(i,u,t,f)=>{if(i==null||u>=t||i.length<t||/[^\u0000-\u007f]/.test(i))return null;if(!f)return i.substring(u,t);return i.substring(i.length-t,i.length-u)},TVf=(i)=>encodeURIComponent(i).replace(/[!*'()]/g,(u)=>`%${u.charCodeAt(0).toString(16).toUpperCase()}`),UVf={booleanEquals:_Vf,coalesce:vVf,getAttr:rj0,isSet:DVf,isValidHostLabel:Hj0,ite:gVf,not:NVf,parseURL:ZVf,split:BVf,stringEquals:FVf,substring:yVf,uriEncode:TVf},ej0=(i,u)=>{let t=[],{referenceRecord:f,endpointParams:l}=u,c=0;while(c<i.length){let E=i.indexOf("{",c);if(E===-1){t.push(i.slice(c));break}t.push(i.slice(c,E));let $=i.indexOf("}",E);if($===-1){t.push(i.slice(E));break}if(i[E+1]==="{"&&i[$+1]==="}")t.push(i.slice(E+1,$)),c=$+2;let w=i.substring(E+1,$);if(w.includes("#")){let[d,_]=w.split("#");t.push(rj0(f[d]??l[d],_))}else t.push(f[w]??l[w]);c=$+1}return t.join("")},PVf=({ref:i},u)=>{return u.referenceRecord[i]??u.endpointParams[i]},pa=(i,u,t)=>{if(typeof i==="string")return ej0(i,t);else if(i.fn)return oj0.callFunction(i,t);else if(i.ref)return PVf(i,t);throw new Kc(`'${u}': ${String(i)} is not a string, function or reference.`)},aj0=({fn:i,argv:u},t)=>{let f=Array(u.length);for(let E=0;E<f.length;++E){let $=u[E];if(typeof $==="boolean"||typeof $==="number")f[E]=$;else f[E]=oj0.evaluateExpression($,"arg",t)}let l=i.indexOf(".");if(l!==-1){let $=Vj0[i.slice(0,l)]?.[i.slice(l+1)];if(typeof $==="function")return $(...f)}let c=UVf[i];if(typeof c==="function")return c(...f);throw Error(`function ${i} not loaded in endpointFunctions.`)},oj0={evaluateExpression:pa,callFunction:aj0},sj0=(i,u)=>{let{assign:t}=i;if(t&&t in u.referenceRecord)throw new Kc(`'${t}' is already defined in Reference Record.`);let f=aj0(i,u);u.logger?.debug?.(`${sa} evaluateCondition: ${xg(i)} = ${xg(f)}`);let l=f===""?!0:!!f;if(t!=null)return{result:l,toAssign:{name:t,value:f}};return{result:l}},pj0=(i,u)=>Object.entries(i??{}).reduce((t,[f,l])=>{return t[f]=l.map((c)=>{let E=pa(c,"Header value entry",u);if(typeof E!=="string")throw new Kc(`Header '${f}' value '${E}' is not a string`);return E}),t},{}),Vlu=(i,u)=>Object.entries(i).reduce((t,[f,l])=>{return t[f]=uX0.getEndpointProperty(l,u),t},{}),iX0=(i,u)=>{if(Array.isArray(i))return i.map((t)=>iX0(t,u));switch(typeof i){case"string":return ej0(i,u);case"object":if(i===null)throw new Kc(`Unexpected endpoint property: ${i}`);return uX0.getEndpointProperties(i,u);case"boolean":return i;default:throw new Kc(`Unexpected endpoint property type: ${typeof i}`)}},uX0={getEndpointProperty:iX0,getEndpointProperties:Vlu},tX0=(i,u)=>{let t=pa(i,"Endpoint URL",u);if(typeof t==="string")try{return new URL(t)}catch(f){throw console.error(`Failed to construct URL with ${t}`,f),f}throw new Kc(`Endpoint URL must be a string, got ${typeof t}`)},Clu=1e8,xVf=(i,u)=>{let{nodes:t,root:f,results:l,conditions:c}=i,E=f,$={},w={referenceRecord:$,endpointParams:u.endpointParams,logger:u.logger};while(E!==1&&E!==-1&&E<Clu){let d=3*(Math.abs(E)-1),[_,v,h]=[t[d],t[d+1],t[d+2]],[D,g,O]=c[_],Z=sj0({fn:D,assign:O,argv:g},w);if(Z.toAssign){let{name:B,value:F}=Z.toAssign;$[B]=F}E=E>=0===Z.result?v:h}if(E>=Clu){let d=l[E-Clu];if(d[0]===-1){let[,D]=d;throw new Kc(pa(D,"Error",w))}let[_,v,h]=d;return{url:tX0(_,w),properties:Vlu(v,w),headers:pj0(h??{},w)}}throw new Kc("No matching endpoint.")},rlu=(i=[],u)=>{let t={},f={...u,referenceRecord:{...u.referenceRecord}},l=!1;for(let c of i){let{result:E,toAssign:$}=sj0(c,f);if(!E)return{result:E};if($)l=!0,t[$.name]=$.value,f.referenceRecord[$.name]=$.value,u.logger?.debug?.(`${sa} assign: ${$.name} := ${xg($.value)}`)}if(l)return{result:!0,referenceRecord:t};return{result:!0}},IVf=(i,u)=>{let{conditions:t,endpoint:f}=i,{result:l,referenceRecord:c}=rlu(t,u);if(!l)return;let E=c?{...u,referenceRecord:{...u.referenceRecord,...c}}:u,{url:$,properties:w,headers:d}=f;u.logger?.debug?.(`${sa} Resolving endpoint from template: ${xg(f)}`);let _={url:tX0($,E)};if(d!=null)_.headers=pj0(d,E);if(w!=null)_.properties=Vlu(w,E);return _},AVf=(i,u)=>{let{conditions:t,error:f}=i,{result:l,referenceRecord:c}=rlu(t,u);if(!l)return;let E=c?{...u,referenceRecord:{...u.referenceRecord,...c}}:u;throw new Kc(pa(f,"Error",E))},fX0=(i,u)=>{for(let t of i)if(t.type==="endpoint"){let f=IVf(t,u);if(f)return f}else if(t.type==="error")AVf(t,u);else if(t.type==="tree"){let f=lX0.evaluateTreeRule(t,u);if(f)return f}else throw new Kc(`Unknown endpoint rule: ${t}`);throw new Kc("Rules evaluation failed")},GVf=(i,u)=>{let{conditions:t,rules:f}=i,{result:l,referenceRecord:c}=rlu(t,u);if(!l)return;let E=c?{...u,referenceRecord:{...u.referenceRecord,...c}}:u;return lX0.evaluateRules(f,E)},lX0={evaluateRules:fX0,evaluateTreeRule:GVf},nVf=(i,u)=>{let{endpointParams:t,logger:f}=u,{parameters:l,rules:c}=i;u.logger?.debug?.(`${sa} Initial EndpointParams: ${xg(t)}`);for(let $ in l){let w=l[$],d=t[$];if(d==null&&w.default!=null){t[$]=w.default;continue}if(w.required&&d==null)throw new Kc(`Missing required parameter: '${$}'`)}let E=fX0(c,{endpointParams:t,logger:f,referenceRecord:{}});return u.logger?.debug?.(`${sa} Resolved endpoint: ${xg(E)}`),E},kVf=(i)=>{let{endpoint:u}=i;if(u===void 0)i.endpoint=async()=>{throw Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint.")};return i},jVf=bj0(wyi),XVf=dVf(wyi),KVf=Cj0(wyi),JVf=wVf(wyi);SVf.BinaryDecisionDiagram=qlu;SVf.EndpointCache=qj0;SVf.EndpointError=Kc;SVf.customEndpointFunctions=Vj0;SVf.decideEndpoint=xVf;SVf.endpointMiddleware=KVf;SVf.endpointMiddlewareOptions=Mj0;SVf.getEndpointFromInstructions=jVf;SVf.getEndpointPlugin=JVf;SVf.isIpAddress=mj0;SVf.resolveEndpoint=nVf;SVf.resolveEndpointConfig=XVf;SVf.resolveEndpointRequiredConfig=kVf;SVf.resolveParams=Rj0});var h$=K((Smf)=>{var{createHmac:sVf,createHash:pVf,getRandomValues:irf}=Zi("crypto"),{ReadStream:urf,lstatSync:trf,fstatSync:frf}=Zi("fs"),{HttpResponse:lrf}=ch(),{toEndpointV1:crf}=m1(),{Duplex:Erf,Readable:io,Writable:hX0,PassThrough:cX0}=Zi("stream"),DX0=(i)=>typeof ArrayBuffer==="function"&&i instanceof ArrayBuffer||Object.prototype.toString.call(i)==="[object ArrayBuffer]",bQ=(i,u=0,t=i.byteLength-u)=>{if(!DX0(i))throw TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof i} (${i})`);return Buffer.from(i,u,t)},hyi=(i,u)=>{if(typeof i!=="string")throw TypeError(`The "input" argument must be of type string. Received type ${typeof i} (${i})`);return u?Buffer.from(i,u):Buffer.from(i)},$rf=/^[A-Za-z0-9+/]*={0,2}$/,gX0=(i)=>{if(i.length*3%4!==0)throw TypeError("Incorrect padding on base64 string.");if(!$rf.exec(i))throw TypeError("Invalid base64 string.");let u=hyi(i,"base64");return new Uint8Array(u.buffer,u.byteOffset,u.byteLength)},Dyi=(i)=>{let u=hyi(i,"utf8");return new Uint8Array(u.buffer,u.byteOffset,u.byteLength/Uint8Array.BYTES_PER_ELEMENT)},i6u=(i)=>{let u;if(typeof i==="string")u=Dyi(i);else u=i;if(typeof u!=="object"||typeof u.byteOffset!=="number"||typeof u.byteLength!=="number")throw Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return bQ(u.buffer,u.byteOffset,u.byteLength).toString("base64")};function wrf(i,u,t,f){return class l extends Uint8Array{static fromString(c,E="utf-8"){if(typeof c==="string"){if(E==="base64")return l.mutate(f(c));return l.mutate(u(c))}throw Error(`Unsupported conversion from ${typeof c} to Uint8ArrayBlobAdapter.`)}static mutate(c){return Object.setPrototypeOf(c,l.prototype),c}transformToString(c="utf-8"){if(c==="base64")return t(this);return i(this)}}}var NX0=(i)=>{if(typeof i==="string")return i;if(typeof i!=="object"||typeof i.byteOffset!=="number"||typeof i.byteLength!=="number")throw Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return bQ(i.buffer,i.byteOffset,i.byteLength).toString("utf8")},xE=Array.from({length:256},(i,u)=>u.toString(16).padStart(2,"0"));function drf(i){if(typeof crypto<"u"&&typeof crypto.randomUUID==="function")return()=>crypto.randomUUID();return()=>{let u=new Uint8Array(16);return i(u),u[6]=u[6]&15|64,u[8]=u[8]&63|128,xE[u[0]]+xE[u[1]]+xE[u[2]]+xE[u[3]]+"-"+xE[u[4]]+xE[u[5]]+"-"+xE[u[6]]+xE[u[7]]+"-"+xE[u[8]]+xE[u[9]]+"-"+xE[u[10]]+xE[u[11]]+xE[u[12]]+xE[u[13]]+xE[u[14]]+xE[u[15]]}}var _rf=(i,u,t=(f)=>f)=>i,vrf=(i)=>{switch(i){case"true":return!0;case"false":return!1;default:throw Error(`Unable to parse boolean value "${i}"`)}},hrf=(i)=>{if(i===null||i===void 0)return;if(typeof i==="number"){if(i===0||i===1)co.warn(_yi(`Expected boolean, got ${typeof i}: ${i}`));if(i===0)return!1;if(i===1)return!0}if(typeof i==="string"){let u=i.toLowerCase();if(u==="false"||u==="true")co.warn(_yi(`Expected boolean, got ${typeof i}: ${i}`));if(u==="false")return!1;if(u==="true")return!0}if(typeof i==="boolean")return i;throw TypeError(`Expected boolean, got ${typeof i}: ${i}`)},fo=(i)=>{if(i===null||i===void 0)return;if(typeof i==="string"){let u=parseFloat(i);if(!Number.isNaN(u)){if(String(u)!==String(i))co.warn(_yi(`Expected number but observed string: ${i}`));return u}}if(typeof i==="number")return i;throw TypeError(`Expected number, got ${typeof i}: ${i}`)},Drf=Math.ceil(340282346638528860000000000000000000000),dyi=(i)=>{let u=fo(i);if(u!==void 0&&!Number.isNaN(u)&&u!==1/0&&u!==-1/0){if(Math.abs(u)>Drf)throw TypeError(`Expected 32-bit float, got ${i}`)}return u},lo=(i)=>{if(i===null||i===void 0)return;if(Number.isInteger(i)&&!Number.isNaN(i))return i;throw TypeError(`Expected integer, got ${typeof i}: ${i}`)},grf=lo,alu=(i)=>u6u(i,32),olu=(i)=>u6u(i,16),slu=(i)=>u6u(i,8),u6u=(i,u)=>{let t=lo(i);if(t!==void 0&&Nrf(t,u)!==t)throw TypeError(`Expected ${u}-bit integer, got ${i}`);return t},Nrf=(i,u)=>{switch(u){case 32:return Int32Array.of(i)[0];case 16:return Int16Array.of(i)[0];case 8:return Int8Array.of(i)[0]}},Orf=(i,u)=>{if(i===null||i===void 0){if(u)throw TypeError(`Expected a non-null value for ${u}`);throw TypeError("Expected a non-null value")}return i},OX0=(i)=>{if(i===null||i===void 0)return;if(typeof i==="object"&&!Array.isArray(i))return i;let u=Array.isArray(i)?"array":typeof i;throw TypeError(`Expected object, got ${u}: ${i}`)},Zrf=(i)=>{if(i===null||i===void 0)return;if(typeof i==="string")return i;if(["boolean","number","bigint"].includes(typeof i))return co.warn(_yi(`Expected string, got ${typeof i}: ${i}`)),String(i);throw TypeError(`Expected string, got ${typeof i}: ${i}`)},Brf=(i)=>{if(i===null||i===void 0)return;let u=OX0(i),t=[];for(let f in u)if(u[f]!=null)t.push(f);if(t.length===0)throw TypeError("Unions must have exactly one non-null member. None were found.");if(t.length>1)throw TypeError(`Unions must have exactly one non-null member. Keys ${t} were not null.`);return u},t6u=(i)=>{if(typeof i=="string")return fo(MQ(i));return fo(i)},Frf=t6u,ZX0=(i)=>{if(typeof i=="string")return dyi(MQ(i));return dyi(i)},yrf=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,MQ=(i)=>{let u=i.match(yrf);if(u===null||u[0].length!==i.length)throw TypeError("Expected real number, got implicit NaN");return parseFloat(i)},f6u=(i)=>{if(typeof i=="string")return BX0(i);return fo(i)},Trf=f6u,Urf=f6u,Prf=(i)=>{if(typeof i=="string")return BX0(i);return dyi(i)},BX0=(i)=>{switch(i){case"NaN":return NaN;case"Infinity":return 1/0;case"-Infinity":return-1/0;default:throw Error(`Unable to parse float value: ${i}`)}},FX0=(i)=>{if(typeof i==="string")return lo(MQ(i));return lo(i)},xrf=FX0,Irf=(i)=>{if(typeof i==="string")return alu(MQ(i));return alu(i)},RQ=(i)=>{if(typeof i==="string")return olu(MQ(i));return olu(i)},yX0=(i)=>{if(typeof i==="string")return slu(MQ(i));return slu(i)},_yi=(i)=>{return String(TypeError(i).stack||i).split(`
|
|
83018
83018
|
`).slice(0,5).filter((u)=>!u.includes("stackTraceWarning")).join(`
|
|
83019
83019
|
`)},co={warn:console.warn},Arf=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],l6u=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Grf(i){let u=i.getUTCFullYear(),t=i.getUTCMonth(),f=i.getUTCDay(),l=i.getUTCDate(),c=i.getUTCHours(),E=i.getUTCMinutes(),$=i.getUTCSeconds(),w=l<10?`0${l}`:`${l}`,d=c<10?`0${c}`:`${c}`,_=E<10?`0${E}`:`${E}`,v=$<10?`0${$}`:`${$}`;return`${Arf[f]}, ${w} ${l6u[t]} ${u} ${d}:${_}:${v} GMT`}var nrf=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/),krf=(i)=>{if(i===null||i===void 0)return;if(typeof i!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let u=nrf.exec(i);if(!u)throw TypeError("Invalid RFC-3339 date-time value");let[t,f,l,c,E,$,w,d]=u,_=RQ(CQ(f)),v=$h(l,"month",1,12),h=$h(c,"day",1,31);return uo(_,v,h,{hours:E,minutes:$,seconds:w,fractionalMilliseconds:d})},jrf=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),Xrf=(i)=>{if(i===null||i===void 0)return;if(typeof i!=="string")throw TypeError("RFC-3339 date-times must be expressed as strings");let u=jrf.exec(i);if(!u)throw TypeError("Invalid RFC-3339 date-time value");let[t,f,l,c,E,$,w,d,_]=u,v=RQ(CQ(f)),h=$h(l,"month",1,12),D=$h(c,"day",1,31),g=uo(v,h,D,{hours:E,minutes:$,seconds:w,fractionalMilliseconds:d});if(_.toUpperCase()!="Z")g.setTime(g.getTime()-Mrf(_));return g},Krf=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$/),Jrf=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$/),Srf=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})$/),Yrf=(i)=>{if(i===null||i===void 0)return;if(typeof i!=="string")throw TypeError("RFC-7231 date-times must be expressed as strings");let u=Krf.exec(i);if(u){let[t,f,l,c,E,$,w,d]=u;return uo(RQ(CQ(c)),mlu(l),$h(f,"day",1,31),{hours:E,minutes:$,seconds:w,fractionalMilliseconds:d})}if(u=Jrf.exec(i),u){let[t,f,l,c,E,$,w,d]=u;return Qrf(uo(Lrf(c),mlu(l),$h(f,"day",1,31),{hours:E,minutes:$,seconds:w,fractionalMilliseconds:d}))}if(u=Srf.exec(i),u){let[t,f,l,c,E,$,w,d]=u;return uo(RQ(CQ(d)),mlu(f),$h(l.trimLeft(),"day",1,31),{hours:c,minutes:E,seconds:$,fractionalMilliseconds:w})}throw TypeError("Invalid RFC-7231 date-time value")},Wrf=(i)=>{if(i===null||i===void 0)return;let u;if(typeof i==="number")u=i;else if(typeof i==="string")u=t6u(i);else if(typeof i==="object"&&i.tag===1)u=i.value;else throw TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");if(Number.isNaN(u)||u===1/0||u===-1/0)throw TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(u*1000))},uo=(i,u,t,f)=>{let l=u-1;return brf(i,l,t),new Date(Date.UTC(i,l,t,$h(f.hours,"hour",0,23),$h(f.minutes,"minute",0,59),$h(f.seconds,"seconds",0,60),Crf(f.fractionalMilliseconds)))},Lrf=(i)=>{let u=new Date().getUTCFullYear(),t=Math.floor(u/100)*100+RQ(CQ(i));if(t<u)return t+100;return t},zrf=1576800000000,Qrf=(i)=>{if(i.getTime()-new Date().getTime()>zrf)return new Date(Date.UTC(i.getUTCFullYear()-100,i.getUTCMonth(),i.getUTCDate(),i.getUTCHours(),i.getUTCMinutes(),i.getUTCSeconds(),i.getUTCMilliseconds()));return i},mlu=(i)=>{let u=l6u.indexOf(i);if(u<0)throw TypeError(`Invalid month: ${i}`);return u+1},Hrf=[31,28,31,30,31,30,31,31,30,31,30,31],brf=(i,u,t)=>{let f=Hrf[u];if(u===1&&Rrf(i))f=29;if(t>f)throw TypeError(`Invalid day for ${l6u[u]} in ${i}: ${t}`)},Rrf=(i)=>{return i%4===0&&(i%100!==0||i%400===0)},$h=(i,u,t,f)=>{let l=yX0(CQ(i));if(l<t||l>f)throw TypeError(`${u} must be between ${t} and ${f}, inclusive`);return l},Crf=(i)=>{if(i===null||i===void 0)return 0;return ZX0("0."+i)*1000},Mrf=(i)=>{let u=i[0],t=1;if(u=="+")t=1;else if(u=="-")t=-1;else throw TypeError(`Offset direction, ${u}, must be "+" or "-"`);let f=Number(i.substring(1,3)),l=Number(i.substring(4,6));return t*(f*60+l)*60*1000},CQ=(i)=>{let u=0;while(u<i.length-1&&i.charAt(u)==="0")u++;if(u===0)return i;return i.slice(u)},TK=function(u){return Object.assign(new String(u),{deserializeJSON(){return JSON.parse(String(u))},toString(){return String(u)},toJSON(){return String(u)}})};TK.from=(i)=>{if(i&&typeof i==="object"&&(i instanceof TK||("deserializeJSON"in i)))return i;else if(typeof i==="string"||Object.getPrototypeOf(i)===String.prototype)return TK(String(i));return TK(JSON.stringify(i))};TK.fromObject=TK.from;function qrf(i){if(i.includes(",")||i.includes('"'))i=`"${i.replace(/"/g,"\\\"")}"`;return i}var c6u="(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?",E6u="(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)",$6u="(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?",TX0="(\\d?\\d)",UX0="(\\d{4})",Vrf=new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/),rrf=new RegExp(`^${c6u}, ${TX0} ${E6u} ${UX0} ${$6u} GMT$`),mrf=new RegExp(`^${c6u}, ${TX0}-${E6u}-(\\d\\d) ${$6u} GMT$`),erf=new RegExp(`^${c6u} ${E6u} ( [1-9]|\\d\\d) ${$6u} ${UX0}$`),arf=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],orf=(i)=>{if(i==null)return;let u=NaN;if(typeof i==="number")u=i;else if(typeof i==="string"){if(!/^-?\d*\.?\d+$/.test(i))throw TypeError("parseEpochTimestamp - numeric string invalid.");u=Number.parseFloat(i)}else if(typeof i==="object"&&i.tag===1)u=i.value;if(isNaN(u)||Math.abs(u)===1/0)throw TypeError("Epoch timestamps must be valid finite numbers.");return new Date(Math.round(u*1000))},srf=(i)=>{if(i==null)return;if(typeof i!=="string")throw TypeError("RFC3339 timestamps must be strings");let u=Vrf.exec(i);if(!u)throw TypeError(`Invalid RFC3339 timestamp format ${i}`);let[,t,f,l,c,E,$,,w,d]=u;k8(f,1,12),k8(l,1,31),k8(c,0,23),k8(E,0,59),k8($,0,60);let _=new Date(Date.UTC(Number(t),Number(f)-1,Number(l),Number(c),Number(E),Number($),Number(w)?Math.round(parseFloat(`0.${w}`)*1000):0));if(_.setUTCFullYear(Number(t)),d.toUpperCase()!="Z"){let[,v,h,D]=/([+-])(\d\d):(\d\d)/.exec(d)||[void 0,"+",0,0],g=v==="-"?1:-1;_.setTime(_.getTime()+g*(Number(h)*60*60*1000+Number(D)*60*1000))}return _},prf=(i)=>{if(i==null)return;if(typeof i!=="string")throw TypeError("RFC7231 timestamps must be strings.");let u,t,f,l,c,E,$,w;if(w=rrf.exec(i))[,u,t,f,l,c,E,$]=w;else if(w=mrf.exec(i))[,u,t,f,l,c,E,$]=w,f=(Number(f)+1900).toString();else if(w=erf.exec(i))[,t,u,l,c,E,$,f]=w;if(f&&E){let d=Date.UTC(Number(f),arf.indexOf(t),Number(u),Number(l),Number(c),Number(E),$?Math.round(parseFloat(`0.${$}`)*1000):0);k8(u,1,31),k8(l,0,23),k8(c,0,59),k8(E,0,60);let _=new Date(d);return _.setUTCFullYear(Number(f)),_}throw TypeError(`Invalid RFC7231 date-time value ${i}.`)};function k8(i,u,t){let f=Number(i);if(f<u||f>t)throw Error(`Value ${f} out of range [${u}, ${t}]`)}function imf(i,u,t){if(t<=0||!Number.isInteger(t))throw Error("Invalid number of delimiters ("+t+") for splitEvery.");let f=i.split(u);if(t===1)return f;let l=[],c="";for(let E=0;E<f.length;E++){if(c==="")c=f[E];else c+=u+f[E];if((E+1)%t===0)l.push(c),c=""}if(c!=="")l.push(c);return l}var umf=(i)=>{let u=i.length,t=[],f=!1,l=void 0,c=0;for(let E=0;E<u;++E){let $=i[E];switch($){case'"':if(l!=="\\")f=!f;break;case",":if(!f)t.push(i.slice(c,E)),c=E+1;break}l=$}return t.push(i.slice(c)),t.map((E)=>{E=E.trim();let $=E.length;if($<2)return E;if(E[0]==='"'&&E[$-1]==='"')E=E.slice(1,$-1);return E.replace(/\\"/g,'"')})},EX0=/^-?\d*(\.\d+)?$/;class gyi{string;type;constructor(i,u){if(this.string=i,this.type=u,!EX0.test(i))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](i){if(!i||typeof i!=="object")return!1;let u=i;return gyi.prototype.isPrototypeOf(i)||u.type==="bigDecimal"&&EX0.test(u.string)}}function tmf(i){return new gyi(String(i),"bigDecimal")}var PX0={},plu={};for(let i=0;i<256;i++){let u=i.toString(16).toLowerCase();if(u.length===1)u=`0${u}`;PX0[i]=u,plu[u]=i}function fmf(i){if(i.length%2!==0)throw Error("Hex encoded strings must have an even number length");let u=new Uint8Array(i.length/2);for(let t=0;t<i.length;t+=2){let f=i.slice(t,t+2).toLowerCase();if(f in plu)u[t/2]=plu[f];else throw Error(`Cannot decode unrecognized sequence ${f} as hexadecimal`)}return u}function xX0(i){let u="";for(let t=0;t<i.byteLength;t++)u+=PX0[i[t]];return u}var lmf=(i)=>{if(!i)return 0;if(typeof i==="string")return Buffer.byteLength(i);else if(typeof i.byteLength==="number")return i.byteLength;else if(typeof i.size==="number")return i.size;else if(typeof i.start==="number"&&typeof i.end==="number")return i.end+1-i.start;else if(i instanceof urf){if(i.path!=null)return trf(i.path).size;else if(typeof i.fd==="number")return frf(i.fd).size}throw Error(`Body Length computation failed for ${i}`)},IX0=(i)=>{if(typeof i==="string")return Dyi(i);if(ArrayBuffer.isView(i))return new Uint8Array(i.buffer,i.byteOffset,i.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(i)},AX0=(i,u)=>(t,f)=>async(l)=>{let{response:c}=await t(l);try{let E=await u(c,i);return{response:c,output:E}}catch(E){if(Object.defineProperty(E,"$response",{value:c,enumerable:!1,writable:!1,configurable:!1}),!("$metadata"in E)){try{E.message+=`
|
|
@@ -84003,7 +84003,7 @@ Hint: Configure a valid Google account email in Monitor Configuration > Contexto
|
|
|
84003
84003
|
AND "organizationId" NOT IN (
|
|
84004
84004
|
SELECT "organizationId" FROM "member" WHERE "userId" = ${w.id}
|
|
84005
84005
|
)
|
|
84006
|
-
`.execute(d),await ao`DELETE FROM "member" WHERE "userId" = ${u.id}`.execute(d),await ao`DELETE FROM "user" WHERE "id" = ${u.id}`.execute(d)})}catch(d){console.error("[SSO] Failed to merge duplicate user:",d)}}var uD4=(i)=>{return{trustEmailVerified:!0,provisionUser:fD4,defaultSSO:[{domain:i.domain,providerId:i.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:i.MS_CLIENT_ID,clientSecret:i.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:i.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified",oid:"oid"}}}}]}},tD4=(i)=>{return{trustEmailVerified:!0,defaultSSO:[{domain:i.domain,providerId:i.providerId,oidcConfig:{issuer:"https://accounts.google.com",pkce:!0,clientId:i.GOOGLE_CLIENT_ID,clientSecret:i.GOOGLE_CLIENT_SECRET,discoveryEndpoint:"https://accounts.google.com/.well-known/openid-configuration",authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token",jwksEndpoint:"https://www.googleapis.com/oauth2/v3/certs",userInfoEndpoint:"https://openidconnect.googleapis.com/v1/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:i.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified",hd:"hd"}}}}]}},hq0=(i)=>{if(i.providerId==="microsoft")return uD4(i);if(i.providerId==="google")return tD4(i);throw Error(`Unsupported provider: ${i.providerId}`)};var Dq0=N(()=>{zE()});function iwu(i){let[u,t,...f]=i.trim().split("@");if(!u||!t||f.length>0)return null;return t.toLowerCase()}function lD4(i){let u=i.trim().toLowerCase();return u.length>0&&!p5.has(u)}function uwu(i){let u=iwu(i.email);return i.emailVerified===!0&&!!u&&lD4(u)}function twu(i){return i.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function gq0(i){let[u=""]=i.trim().toLowerCase().split(".");return u.split(/[^a-z0-9]+/).filter(Boolean).map((f)=>f.charAt(0).toUpperCase()+f.slice(1)).join(" ")||"Workspace"}function Nq0(i){let u=i.name?.trim().split(/\s+/)[0];if(u)return u;let[t]=i.email.trim().split("@");return t||"Workspace"}function JUi(i){return i.verificationStatus==="verified"&&i.joinMode!=="off"}var p5;var SUi=N(()=>{p5=new Set(["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","yahoo.com","yahoo.co.uk","icloud.com","me.com","mac.com","aol.com","protonmail.com","proton.me","zoho.com","yandex.com","mail.com","gmx.com","gmx.net","tutanota.com","fastmail.com"])});import{sql as Tq0}from"kysely";async function YUi(i){let{db:u,authApi:t,user:f,allowCreate:l,createdVia:c}=i,E=iwu(f.email);return u.transaction().execute(async($)=>{await Tq0`select pg_advisory_xact_lock(hashtext(${`user-org:${f.id}`})::bigint)`.execute($);let w=await dD4($,f.id);if(w)return await wD4($,f,E,w),{status:"already_has_organization",organization:w,domain:E};return $D4({db:$,authApi:t,user:f,allowCreate:l,createdVia:c,domain:E})})}async function $D4(i){let{db:u,authApi:t,user:f,allowCreate:l,createdVia:c,domain:E}=i;if(uwu(f)&&E){let v=await new qw(u).getAllByDomain(E),h=await Bq0(u,v);if(h.length===1&&h[0]?.joinMode==="auto"){let F=h[0];return await Fq0(t,f.id,F.id),{status:"joined",organization:F,domain:E,createdVia:c}}if(h.length>0)return{status:"ambiguous",domain:E,organizations:h};if(!l)return{status:"skipped",reason:"auto-create-disabled",domain:E};await Tq0`select pg_advisory_xact_lock(hashtext(${E})::bigint)`.execute(u);let D=new qw(u),g=await D.getAllByDomain(E),O=await Bq0(u,g);if(O.length===1&&O[0]?.joinMode==="auto"){let F=O[0];return await Fq0(t,f.id,F.id),{status:"joined",organization:F,domain:E,createdVia:c}}if(O.length>0)return{status:"ambiguous",domain:E,organizations:O};let Z=await yq0(t,{name:gq0(E),baseSlug:twu(E),userId:f.id});await D.add(Z.id,E,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"});let B=await Zq0(u,Z.id);if(!B)throw Error("Created organization could not be loaded");return{status:"created",organization:B,domain:E,createdVia:c}}if(!l)return{status:"skipped",reason:"auto-create-disabled",domain:E};let $=`${Nq0(f)} ${vD4()}`,w=await yq0(t,{name:$,baseSlug:_D4($),userId:f.id}),d=await Zq0(u,w.id);if(!d)throw Error("Created organization could not be loaded");return{status:"created",organization:d,domain:E,createdVia:c}}async function wD4(i,u,t,f){if(!t||!uwu(u))return;if(f.slug!==twu(t))return;let l=new qw(i);if((await l.getAllByDomain(t)).length>0)return;await l.add(f.id,t,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"})}async function dD4(i,u){let f=(await i.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.name as name","organization.slug as slug","organization.logo as logo","organization.metadata as metadata"]).where("member.userId","=",u).orderBy("member.createdAt","asc").execute()).find((E)=>!i$(E));if(!f)return null;let{metadata:l,...c}=f;return c}function _D4(i){return i.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function vD4(){let i=Math.random()<0.5?cD4:ED4;return i[Math.floor(Math.random()*i.length)]}function hD4(i){if(i&&typeof i==="object"&&"id"in i&&typeof i.id==="string")return{id:i.id};throw Error("Failed to create organization")}function DD4(i){return i instanceof Error&&"body"in i&&i.body?.code==="ORGANIZATION_ALREADY_EXISTS"}async function Zq0(i,u){return await i.selectFrom("organization").select(["id","name","slug","logo"]).where("id","=",u).executeTakeFirst()??null}async function Bq0(i,u){let t=u.filter((c)=>JUi(c));if(t.length===0)return[];let f=await i.selectFrom("organization").select(["id","name","slug","logo","metadata"]).where("id","in",t.map((c)=>c.organizationId)).execute(),l=new Map(f.map((c)=>[c.id,c]));return t.flatMap((c)=>{let E=l.get(c.organizationId);if(!E)return[];if(i$(E))return[];let{metadata:$,...w}=E;return[{...w,joinMode:c.joinMode}]})}async function Fq0(i,u,t){try{await i.addMember({body:{userId:u,role:"user",organizationId:t}})}catch(f){if(!(f instanceof Error?f.message.toLowerCase():"").includes("already a member"))throw f}}async function yq0(i,u){for(let t=0;t<Oq0;t++){let f=t===0?"":`-${Math.random().toString(36).slice(2,6)}`;try{return hD4(await i.createOrganization({body:{name:u.name,slug:`${u.baseSlug}${f}`,userId:u.userId}}))}catch(l){if(!DD4(l)||t===Oq0-1)throw l}}throw Error("Failed to create organization")}var Oq0=5,cD4,ED4;var fwu=N(()=>{SUi();cD4=["labs","agent","studio","workspace","systems","core","cloud","works"],ED4=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"]});var Aq0={};zi(Aq0,{resetPasswordEnabled:()=>LUi,authConfig:()=>ot,auth:()=>E4,GENERIC_EMAIL_DOMAINS:()=>p5});import{sso as gD4}from"@better-auth/sso";import{organization as ND4}from"@decocms/better-auth/plugins";import{betterAuth as OD4}from"better-auth";import{admin as ZD4,apiKey as BD4,jwt as FD4,magicLink as yD4,mcp as TD4,openAPI as UD4}from"better-auth/plugins";import{emailOTP as PD4}from"better-auth/plugins/email-otp";import{APIError as xD4}from"better-auth/api";import{adminAc as ID4,defaultRoles as AD4}from"better-auth/plugins/admin/access";import{defaultStatements as GD4}from"@decocms/better-auth/plugins/organization/access";import{createAccessControl as nD4}from"@decocms/better-auth/plugins/access";function WD4(){let i=[oo];try{let u=new URL(oo);if(u.hostname==="localhost")i.push(oo.replace("localhost","127.0.0.1"));else if(u.hostname==="127.0.0.1")i.push(oo.replace("127.0.0.1","localhost"))}catch{}return i}var xq0,kD4,WUi,cwu,jD4,XD4,KD4,Uq0,ot,Iq0=void 0,lwu=void 0,LUi=!1,JD4,SD4,YD4,oo,Pq0,LD4=262144,E4;var f8=N(()=>{Yt();BW();VVi();m4();HE();zE();W40();Cq();z40();wq0();_q0();vq0();Pv();pai();Dq0();SUi();fwu();xq0=Object.values(qO()).map((i)=>i.map((u)=>u.name)).flat(),kD4={...GD4,self:["*",...xq0]},WUi=nD4(kD4),cwu=sai(xq0),jD4=WUi.newRole(cwu.user),XD4=WUi.newRole(cwu.admin),KD4=WUi.newRole(cwu.owner),Uq0=Object.values(qO()).map((i)=>i.map((u)=>`self:${u.name}`)).flat(),ot=VO().auth;if(ot.inviteEmailProviderId&&ot.emailProviders&&ot.emailProviders.length>0){let i=jD(ot.emailProviders,ot.inviteEmailProviderId);if(i){let u=kD(i);Iq0=async(t)=>{let f=t.inviter.user?.name||t.inviter.user?.email,l=`${Wl()}/auth/accept-invitation?invitationId=${t.invitation.id}&redirectTo=/${t.organization.slug}`;await u({to:t.email,subject:`You've been invited to join ${t.organization.name}`,html:XD({preheader:`${f} has invited you to join ${t.organization.name} on deco Studio.`,heading:"You've been invited",subheading:`<strong>${f}</strong> has invited you to join <strong>${t.organization.name}</strong> on deco Studio.`,body:oO("Accept invitation",l),footnote:"If you weren\u2019t expecting an invitation, you can safely ignore this email."})})}}}if(ot.resetPasswordEmailProviderId&&ot.emailProviders&&ot.emailProviders.length>0){let i=jD(ot.emailProviders,ot.resetPasswordEmailProviderId);if(i){let u=kD(i);LUi=!0,lwu=async({user:t,url:f})=>{await u({to:t.email,subject:"Reset your password",html:XD({preheader:"We received a request to reset the password on your deco Studio account.",heading:"Reset your password",subheading:"We received a password reset request for your account. Click the button below to choose a new password.",body:oO("Reset password",f)+Pci("This link expires in 24\xA0hours. If you didn\u2019t request a password reset, no action is needed.",!0),footnote:"If you didn\u2019t request a password reset, you can safely ignore this email."})})}}}JD4=[ND4({organizationCreation:{afterCreate:async(i)=>{await $q0(i.organization.id,i.member.userId)}},organizationHooks:{beforeUpdateOrganization:async({organization:i,member:u})=>{let t=i.logo;if(typeof t!=="string"||!t.startsWith("data:"))return;let f=await dq0(u.organizationId,t);if(f===t)return;return{data:{...i,logo:f}}}},ac:WUi,creatorRole:"owner",allowUserToCreateOrganization:!0,dynamicAccessControl:{enabled:!0,maximumRolesPerOrganization:500,enableCustomResources:!0,allowedRolesToCreateResources:id,resourceNameValidation:(i)=>{return{valid:/^[a-zA-Z0-9-_]+$/.test(i)}}},roles:{user:jD4,admin:XD4,owner:KD4},sendInvitationEmail:Iq0}),TD4({loginPage:"/login",oidcConfig:{scopes:Uq0,metadata:{scopes_supported:Uq0},loginPage:"/login"}}),BD4({enableMetadata:!0,maximumNameLength:64,keyExpiration:{minExpiresIn:0.003472222222222222},enableSessionForAPIKeys:!0,customAPIKeyGetter:(i)=>{if(i.headers?.get("X-MCP-Session-Auth")==="true")return null;let t=i.headers?.get("Authorization");if(t?.startsWith("Bearer "))return t.replace("Bearer ","").trim();return null},rateLimit:{enabled:!1}}),ZD4({defaultRole:"user",adminRoles:["admin","owner"],roles:{...AD4,owner:ID4}}),UD4(),FD4({jwt:{expirationTime:"5m",definePayload:({user:i})=>({id:i.id,email:i.email,name:i.name,role:i.role})}}),gD4(ot.ssoConfig?hq0(ot.ssoConfig):void 0),...ot.magicLinkConfig?.enabled&&ot.emailProviders&&ot.emailProviders.length>0?[yD4(L40(ot.magicLinkConfig,ot.emailProviders))]:[],...ot.emailOtpConfig?.enabled&&ot.emailProviders&&ot.emailProviders.length>0?[PD4(Y40(ot.emailOtpConfig,ot.emailProviders))]:[]],SD4=W2(),YD4=PC(SD4),oo=Wl();Pq0=Tu(),E4=OD4({secret:Pq0.betterAuthSecret||"deco-default-secret-k7x9m2p4q8w3n5v6",logger:{log:(i,u,...t)=>{if(i==="error"&&u.includes("validate API key"))return;if(i==="error"&&t.some((l)=>{let c=l?.statusCode;return typeof c==="number"&&c>=300&&c<400}))return;let f=`${new Date().toISOString()} ${i.toUpperCase()} [Better Auth]: ${u}`;if(i==="error")console.error(f,...t);else if(i==="warn")console.warn(f,...t);else console.log(f,...t)}},baseURL:oo,trustedOrigins:WD4(),database:YD4,socialProviders:ot.socialProviders,...ot.ssoConfig&&{account:{accountLinking:{trustedProviders:[ot.ssoConfig.providerId]}}},emailAndPassword:{enabled:ot.emailAndPassword.enabled,...lwu&&{sendResetPassword:lwu}},rateLimit:{enabled:!Pq0.disableRateLimit,window:60,max:1e4},plugins:JD4,databaseHooks:{user:{create:{after:async(i)=>{p$u({id:i.id,email:i.email,name:i.name??null,emailVerified:!!i.emailVerified}),ou.capture({distinctId:i.id,event:"user_signed_up",properties:{email:i.email,email_domain:i.email?.split("@")[1]?.toLowerCase()??null,email_verified:!!i.emailVerified,has_name:!!i.name}});let u=VO().autoCreateOrganizationOnSignup!==!1;try{let t=await YUi({db:qt().db,authApi:E4.api,user:{id:i.id,email:i.email,name:i.name??null,emailVerified:!!i.emailVerified},allowCreate:u,createdVia:"signup"});if(t.status==="created")ou.groupIdentify({groupType:"organization",groupKey:t.organization.id,properties:{name:t.organization.name,slug:t.organization.slug,created_at:new Date().toISOString(),created_via:t.createdVia,email_domain:t.domain}}),ou.capture({distinctId:i.id,event:"organization_created",groups:{organization:t.organization.id},properties:{organization_id:t.organization.id,organization_slug:t.organization.slug,name:t.organization.name,created_via:t.createdVia,email_domain:t.domain}});if(t.status==="joined")ou.capture({distinctId:i.id,event:"organization_domain_joined",groups:{organization:t.organization.id},properties:{organization_id:t.organization.id,organization_slug:t.organization.slug,email_domain:t.domain,joined_via:t.createdVia}})}catch(t){ou.captureException(t,i.id),console.error("Failed to ensure organization on signup:",t)}}},update:{before:async(i)=>{let u=i.image;if(typeof u==="string"&&u.startsWith("data:")&&u.length>LD4)throw new xD4("PAYLOAD_TOO_LARGE",{message:"Avatar image is too large. Upload an image smaller than 5MB."})}}},session:{create:{after:async(i)=>{let u=await qt().db.selectFrom("user").select(["id","email","name","emailVerified"]).where("id","=",i.userId).executeTakeFirst();if(!u)return;p$u({id:u.id,email:u.email,name:u.name??null,emailVerified:!!u.emailVerified})}}}}})});function Ewu(i,u){return`${i}:${u}`}function Gq0(i){let u=i?.ttlMs??120000,t=i?.maxSize??1e4,f=new Map;function l(){if(f.size<=t)return;let c=Date.now();for(let[E,$]of f)if($.expiresAt<=c)f.delete(E);if(f.size>t){let E=f.size-t,$=0;for(let w of f.keys()){if($>=E)break;f.delete(w),$++}}}return{get(c,E){let $=Ewu(c,E),w=f.get($);if(!w)return;if(w.expiresAt<=Date.now()){f.delete($);return}return w.role},set(c,E,$){let w=Ewu(c,E);f.set(w,{role:$,expiresAt:Date.now()+u,organizationId:E}),l()},invalidate(c,E){f.delete(Ewu(c,E))},invalidateOrg(c){for(let[E,$]of f)if($.organizationId===c)f.delete(E)}}}class $wu{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(i){this.options=i}async start(i){if(i)this.localEmit=i;if(this.sub)return;if(!this.localEmit)return;let u=this.options.getConnection();if(!u)return;this.sub=u.subscribe("mesh.sse.broadcast");let t=new TextDecoder;(async()=>{for await(let f of this.sub)try{let l=JSON.parse(t.decode(f.data));if(typeof l?.originId!=="string"||typeof l?.organizationId!=="string"||typeof l?.event?.id!=="string"||typeof l?.event?.type!=="string")continue;if(l.originId===this.originId)continue;this.localEmit?.(l.organizationId,l.event)}catch{}})().catch((f)=>{console.error("[NatsSSEBroadcast] Subscription error:",f)})}broadcast(i,u){this.localEmit?.(i,u);let t={originId:this.originId,organizationId:i,event:u};try{let f=this.options.getConnection();if(!f)return;f.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(t)))}catch(f){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",f)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}class jq0{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(i){if(this.started){if(!i)return;await this.stop()}this.strategy=i,await this.strategy.start((u,t)=>this.localEmit(u,t)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(i){if(this.totalCount>=kq0)return console.warn(`[SSEHub] Total connection limit reached (${kq0})`),null;let u=this.listeners.get(i.organizationId);if(!u)u=new Map,this.listeners.set(i.organizationId,u);if(u.size>=nq0)return console.warn(`[SSEHub] Per-org connection limit reached for ${i.organizationId} (${nq0})`),null;return u.set(i.id,i),this.totalCount++,i.id}remove(i,u){let t=this.listeners.get(i);if(!t)return;if(t.delete(u)){if(this.totalCount--,t.size===0)this.listeners.delete(i)}}emit(i,u){if(this.strategy)this.strategy.broadcast(i,u);else this.localEmit(i,u)}countForOrg(i){return this.listeners.get(i)?.size??0}get count(){return this.totalCount}localEmit(i,u){let t=this.listeners.get(i);if(!t||t.size===0)return;for(let f of t.values()){if(f.typePatterns&&!zD4(u.type,f.typePatterns))continue;try{f.push(u)}catch{this.remove(i,f.id)}}}}function zD4(i,u){for(let t of u){if(t===i)return!0;if(t.endsWith(".*")){let f=t.slice(0,-1);if(i.startsWith(f))return!0}}return!1}var nq0=50,kq0=500,P6;var wwu=N(()=>{G1();P6=new jq0;xt.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback((i)=>i.observe(P6.count))});async function QD4(i,u,t=5){try{await jE(u,{maxAttempts:t,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(f){console.error(`${i} Deferred start failed:`,f instanceof Mc?f.cause:f)}}function Xq0(i){let u=new $wu({getConnection:()=>i.getConnection()});P6.start(u).catch((t)=>{console.error("[SSEHub] Failed to start broadcast strategy:",t)}),i.onReady(()=>{QD4("[NatsSSEBroadcast]",()=>u.start())})}var dwu=N(()=>{Sl();wwu();wwu()});var Kq0=()=>{};var _wu=()=>{};var Jq0=()=>{};var HD4,iZ6;var Sq0=N(()=>{Kq0();_wu();P7();Jq0();HD4={br:".br",zstd:".zst",gzip:".gz"},iZ6=Object.keys(HD4)});var Yq0=N(()=>{Sq0()});var Wq0=()=>{};var Lq0=N(()=>{Wq0()});var zq0=()=>{};var Qq0=N(()=>{KVi()});var vwu=N(()=>{x7();Qq0()});var hwu="x-hono-disable-ssg",FZ6;var Dwu=N(()=>{vwu();FZ6=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[hwu]:"true"}})}catch{return null}})()});var Hq0=N(()=>{r6i()});var gwu=N(()=>{Hq0()});var bq0=N(()=>{Lq0();zq0();_wu();Dwu();gwu();vwu()});var Rq0=N(()=>{Dwu();gwu();bq0()});var uB6;var Cq0=N(()=>{Rq0();({write:uB6}=Bun)});var CD4=class{#i;constructor(i){this.#i=i,this.raw=i.raw,this.url=i.url?new URL(i.url):null,this.protocol=i.protocol??null}send(i,u){this.#i.send(i,u??{})}raw;binaryType="arraybuffer";get readyState(){return this.#i.readyState}url;protocol;close(i,u){this.#i.close(i,u)}},Mq0=(i)=>{return(...u)=>{if(typeof u[0]==="function"){let[t,f]=u;return async function(c,E){let $=await t(c),w=await i(c,$,f);if(w)return w;await E()}}else{let[t,f,l]=u;return(async()=>{let c=await i(t,f,l);if(!c)throw Error("Failed to upgrade WebSocket");return c})()}}};var qq0=()=>{};var so=(i)=>("server"in i.env)?i.env.server:i.env;var zUi=()=>{};var MD4;var Vq0=N(()=>{qq0();zUi();MD4=Mq0((i,u)=>{let t=so(i);if(!t)throw TypeError("env has to include the 2nd argument of fetch.");if(t.upgrade(i.req.raw,{data:{events:u,url:new URL(i.req.url),protocol:i.req.url}}))return new Response(null);return})});var Nwu=(i)=>{let u=so(i);if(!u)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof u.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let t=u.requestIP(i.req.raw);if(!t)return{remote:{}};return{remote:{address:t.address,addressType:t.family==="IPv6"||t.family==="IPv4"?t.family:void 0,port:t.port}}};var rq0=N(()=>{zUi()});var mq0=N(()=>{Yq0();Cq0();Vq0();rq0();zUi()});var eq0;var aq0=N(()=>{eq0={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/decocms/e02ce92e-6684-41a6-acfc-432977eb4878/github.png"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});function oq0(){let i=Object.keys(ot.socialProviders??{}),u=i.length>0,t=i.map((l)=>({name:l,icon:eq0[l].icon})),f=Tu().localMode;return{emailAndPassword:{enabled:ot.emailAndPassword?.enabled??!1},magicLink:{enabled:ot.magicLinkConfig?.enabled??!1},emailOtp:{enabled:ot.emailOtpConfig?.enabled??!1},resetPassword:{enabled:LUi},socialProviders:{enabled:u,providers:t},sso:ot.ssoConfig?{enabled:!0,providerId:ot.ssoConfig.providerId}:{enabled:!1},stdioEnabled:f,localMode:Td()}}async function qD4(i,u,t){try{if(!ot.inviteEmailProviderId||!ot.emailProviders||ot.emailProviders.length===0)return;let f=jD(ot.emailProviders,ot.inviteEmailProviderId);if(!f)return;let l=await i.selectFrom("member").innerJoin("user","user.id","member.userId").select(["user.email as email","member.role as role"]).where("member.organizationId","=",u.id).execute(),c=id,E=l.filter((d)=>(d.role??"").split(",").map((_)=>_.trim()).some((_)=>c.includes(_)));if(E.length===0)return;let $=kD(f),w=`${Wl()}/${u.slug}/settings/members`;await Promise.allSettled(E.map((d)=>$({to:d.email,subject:`New request to join ${u.name}`,html:XD({preheader:`${t} requested to join ${u.name}.`,heading:"New join request",subheading:`<strong>${t}</strong> requested to join <strong>${u.name}</strong> on deco Studio.`,body:oO("Review request",w),footnote:"You can approve or deny this request from your members settings."})})))}catch(f){console.error("[Auth] Failed to notify admins of join request:",f)}}var Y8,sq0;var Owu=N(()=>{Vf();mq0();m4();Yt();f8();zE();fwu();Buu();SUi();Cq();Pv();HE();Xai();aq0();Zg();BW();Y8=new zu;Y8.post("/local-session",async(i)=>{if(!Td())return i.json({success:!1,error:"Local mode is not active"},403);let u;try{u=Nwu(i).remote.address}catch{}if(!(u==="127.0.0.1"||u==="::1"||u==="::ffff:127.0.0.1"))return i.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:f}=await Promise.resolve().then(() => (Zg(),dFi));await f();let{auth:l}=await Promise.resolve().then(() => (f8(),Aq0)),c=await ja();if(!c)return i.json({success:!1,error:"Local admin user not found"},500);let E=await wFi();return await l.api.signInEmail({body:{email:c.email,password:E},asResponse:!0})}catch(f){return console.error("Failed to create local session:",f),i.json({success:!1,error:f instanceof Error?f.message:"Failed to create local session"},500)}});Y8.get("/my-capabilities/:slug",async(i)=>{let u=i.req.param("slug"),t=await E4.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({error:"Authentication required"},401);let f=qt().db,l=await f.selectFrom("organization").select(["id"]).where("slug","=",u).executeTakeFirst();if(!l)return i.json({role:null,capabilities:{}});let E=(await f.selectFrom("member").select(["role"]).where("userId","=",t.user.id).where("organizationId","=",l.id).executeTakeFirst())?.role??null;if(!E)return i.json({role:null,capabilities:{}});if(E==="owner"||E==="admin")return i.json({role:E,capabilities:Ut0()});if(E==="user")return i.json({role:E,capabilities:CVi({self:[...fci]})});let $=await f.selectFrom("organizationRole").select(["permission"]).where("role","=",E).where("organizationId","=",l.id).executeTakeFirst(),w={},d=$?.permission;if(typeof d==="string")try{let _=JSON.parse(d);if(_&&typeof _==="object"&&!Array.isArray(_))w=_}catch{w={}}return i.json({role:E,capabilities:CVi(w)})});Y8.get("/domain-lookup",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({found:!1,organizations:[]});let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({found:!1,organizations:[]});try{let l=(await new qw(qt().db).getAllByDomain(t)).filter(JUi);if(l.length===0)return i.json({found:!1,organizations:[]});let c=await qt().db.selectFrom("organization").select(["id","name","slug","logo","metadata"]).where("id","in",l.map((w)=>w.organizationId)).execute(),E=new Map(c.map((w)=>[w.id,w])),$=l.map((w)=>{let d=E.get(w.organizationId);if(!d)return null;if(i$(d))return null;return{id:d.id,name:d.name,slug:d.slug,logo:d.logo,joinMode:w.joinMode}}).filter((w)=>w!==null);return i.json({found:$.length>0,organizations:$})}catch(f){return console.error("[Auth] Domain lookup failed:",f),i.json({success:!1,error:"Domain lookup failed"},500)}});Y8.post("/domain-join",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({success:!1,error:"Email must be verified to join"},403);let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({success:!1,error:"Generic email domains cannot auto-join"},403);let f=await i.req.json().catch(()=>({})),l=typeof f.organizationSlug==="string"&&f.organizationSlug.trim()?f.organizationSlug.trim():null;try{let c=qt().db,w=(await new qw(c).getAllByDomain(t)).filter((D)=>D.verificationStatus==="verified"&&D.joinMode==="auto");if(w.length===0)return i.json({success:!1,error:"Auto-join is not available for this domain"},403);let d=await c.selectFrom("organization").select(["id","slug","metadata"]).where("id","in",w.map((D)=>D.organizationId)).execute(),_=new Map(d.filter((D)=>!i$(D)).map((D)=>[D.id,{id:D.id,slug:D.slug}])),v=w.flatMap((D)=>{let g=_.get(D.organizationId);return g?[g]:[]});if(v.length===0)return i.json({success:!1,error:"Auto-join is not available for this domain"},403);let h;if(l){let D=v.find((g)=>g.slug===l);if(!D)return i.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);h=D}else if(v.length===1)h=v[0];else return i.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await E4.api.addMember({body:{userId:u.user.id,role:"user",organizationId:h.id}})}catch(D){if(!(D instanceof Error?D.message.toLowerCase():"").includes("already a member"))return console.error("[Auth] Domain join addMember failed:",D),i.json({success:!1,error:"Failed to join organization"},500)}return ou.capture({distinctId:u.user.id,event:"organization_domain_joined",groups:{organization:h.id},properties:{organization_id:h.id,organization_slug:h.slug,email_domain:t}}),i.json({success:!0,slug:h.slug})}catch(c){return ou.captureException(c,u.user.id),console.error("[Auth] Domain join failed:",c),i.json({success:!1,error:"Failed to join organization"},500)}});Y8.post("/domain-setup",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({success:!1,error:"Email must be verified"},403);let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({success:!1,error:"Corporate email required"},403);let f=await i.req.json().catch(()=>({})),l=typeof f.name==="string"&&f.name.trim().length>0?f.name.trim():null,c=typeof f.logo==="string"&&f.logo.length>0?f.logo:null,E=f.claimDomain!==!1;try{let $=qt().db,w=new qw($),d=await w.getAllByDomain(t);if(d.length>0){let y=await $.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",u.user.id).where("member.organizationId","in",d.map((T)=>T.organizationId)).executeTakeFirst();if(y)return i.json({success:!0,slug:y.slug,alreadyExists:!0})}let _=t.split(".")[0]??t,v=l??_.charAt(0).toUpperCase()+_.slice(1),h=(l??_).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||_.toLowerCase().replace(/[^a-z0-9-]/g,""),D=null;for(let T=0;T<3;T++){let U=T===0?"":`-${Math.random().toString(36).slice(2,6)}`,I=T===0?v:`${v}${U}`,j=`${h}${U}`;try{D=await E4.api.createOrganization({body:{name:I,slug:j,userId:u.user.id}});break}catch(A){if(!(A instanceof Error&&("body"in A)&&A.body?.code==="ORGANIZATION_ALREADY_EXISTS")||T===2)throw A}}if(!D?.id)throw Error("Failed to create organization");let g=D.id;if(E)await w.add(g,t,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"});let O=!1,Z=null,B=null;try{let y=Tu().firecrawlApiKey;if(y){let T=await y3i(t,y,v);if(T){let U=new kr(qt().db),I=await U.create(g,T);if(await U.setDefault(I.id,g),O=!0,T.name&&T.name!==v)Z=T.name;B=T.favicon??T.logo??null}}}catch(y){console.error("[Auth] Brand extraction failed (non-fatal):",y)}let F={};if(!l&&Z)F.name=Z;if(c)F.logo=c;else if(B)F.logo=B;if(Object.keys(F).length>0)try{await E4.api.updateOrganization({headers:i.req.raw.headers,body:{organizationId:g,data:F}})}catch(y){console.error("[Auth] Org update failed (non-fatal):",y)}return ou.identify({distinctId:u.user.id,properties:{email:u.user.email,$set:{email:u.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),ou.groupIdentify({groupType:"organization",groupKey:g,properties:{name:D.slug??h,slug:D.slug??h,email_domain:t,brand_extracted:O,created_at:new Date().toISOString()}}),ou.capture({distinctId:u.user.id,event:"organization_created",groups:{organization:g},properties:{organization_id:g,organization_slug:D.slug??h,email_domain:t,brand_extracted:O}}),i.json({success:!0,slug:D.slug??h,brandExtracted:O})}catch($){return ou.captureException($,u.user?.id),console.error("[Auth] Domain setup failed:",$),i.json({success:!1,error:"Failed to set up organization"},500)}});Y8.get("/org-access-status/:slug",async(i)=>{let u=i.req.param("slug"),t=await E4.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);let f=qt().db,l=await f.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",u).executeTakeFirst();if(!l)return i.json({status:"not-found"});let c={id:l.id,name:l.name,slug:l.slug,logo:l.logo};if(await f.selectFrom("member").select(["id"]).where("userId","=",t.user.id).where("organizationId","=",l.id).executeTakeFirst())return i.json({status:"member",organization:c});try{let $=await E4.api.listUserInvitations({headers:i.req.raw.headers}),w=Date.now(),d=$.find((_)=>_.organizationId===l.id&&_.status==="pending"&&new Date(_.expiresAt).getTime()>w);if(d)return i.json({status:"pending-invite",invitation:{id:d.id},organization:c})}catch($){console.error("[Auth] listUserInvitations failed:",$)}if(t.user.emailVerified){let $=t.user.email?.split("@")[1]?.toLowerCase();if($&&!p5.has($)){let w=await new qw(f).getByOrgAndDomain(l.id,$);if(w?.verificationStatus==="verified"){if(w.joinMode==="auto")return i.json({status:"auto-domain-join",organization:{...c,domain:$}});if(w.joinMode==="request"){let d=await new WL(f).getPending(l.id,t.user.id);return i.json({status:d?"request-pending":"can-request",organization:{...c,domain:$}})}}}}return i.json({status:"no-access",organization:c})});Y8.post("/domain-request-join",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({success:!1,error:"Email must be verified to request access"},403);let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({success:!1,error:"Generic email domains cannot request access"},403);let f=await i.req.json().catch(()=>({})),l=typeof f.organizationSlug==="string"&&f.organizationSlug.trim()?f.organizationSlug.trim():null;if(!l)return i.json({success:!1,error:"organizationSlug is required"},400);try{let c=qt().db,E=await c.selectFrom("organization").select(["id","slug","name"]).where("slug","=",l).executeTakeFirst();if(!E)return i.json({success:!1,error:"Organization not found"},404);let $=await new qw(c).getByOrgAndDomain(E.id,t);if(!$||$.verificationStatus!=="verified"||$.joinMode!=="request")return i.json({success:!1,error:"This organization is not accepting requests for your domain."},403);if(await c.selectFrom("member").select(["id"]).where("userId","=",u.user.id).where("organizationId","=",E.id).executeTakeFirst())return i.json({success:!0,slug:E.slug,alreadyMember:!0});return await new WL(c).create(E.id,u.user.id),await qD4(c,E,u.user.email),ou.capture({distinctId:u.user.id,event:"organization_join_requested",groups:{organization:E.id},properties:{organization_id:E.id,organization_slug:E.slug,email_domain:t}}),i.json({success:!0,status:"pending"})}catch(c){return ou.captureException(c,u.user.id),console.error("[Auth] Domain request-join failed:",c),i.json({success:!1,error:"Failed to request access"},500)}});Y8.post("/ensure-organization",async(i)=>{let u=null;try{if(u=await E4.api.getSession({headers:i.req.raw.headers}),!u?.user)return i.json({success:!1,error:"Authentication required"},401);let t=await YUi({db:qt().db,authApi:E4.api,user:{id:u.user.id,email:u.user.email,name:u.user.name??null,emailVerified:!!u.user.emailVerified},allowCreate:!0,createdVia:"commerce_onboarding_recovery"});if(t.status==="ambiguous")return i.json({success:!1,status:t.status,domain:t.domain,organizations:t.organizations});if(t.status==="skipped")return i.json({success:!1,status:t.status,reason:t.reason,domain:t.domain,error:"Organization creation is not available."},409);if(t.status==="already_has_organization")return i.json({success:!0,status:t.status,organization:t.organization,domain:t.domain});return i.json({success:!0,status:t.status,organization:t.organization,domain:t.domain})}catch(t){let f=u?.user?.id;if(f)ou.captureException(t,f);return console.error("[Auth] ensure organization failed:",t),i.json({success:!1,error:"Failed to ensure organization"},500)}});sq0=Y8});import*as HUi from"jose";function VD4(i){i.get("/status",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!await Bwu(t,t.auth.user.id,f))return u.json({error:"Not a member of this organization"},403);let c=await t.storage.orgSsoConfig.getByOrgId(f);if(!c||!c.enforced)return u.json({ssoRequired:!1});let E=await t.storage.orgSsoSessions.isValid(t.auth.user.id,f);return u.json({ssoRequired:!0,authenticated:E,issuer:c.issuer,domain:c.domain})}),i.get("/authorize",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!await Bwu(t,t.auth.user.id,f))return u.json({error:"Not a member of this organization"},403);let c=await t.storage.orgSsoConfig.getByOrgId(f);if(!c)return u.json({error:"SSO not configured for this organization"},404);let E=await Zwu(c.issuer,c.discoveryEndpoint),$=rD4(),w=await mD4($),d=crypto.randomUUID(),_=JSON.stringify({state:d,codeVerifier:$,orgId:f,userId:t.auth.user.id});Kq(u,"org_sso_state",_,{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:600});let v=new URLSearchParams({response_type:"code",client_id:c.clientId,redirect_uri:`${t.baseUrl}/api/org-sso/callback`,scope:c.scopes.join(" "),state:d,code_challenge:w,code_challenge_method:"S256"}),h=`${E.authorization_endpoint}?${v.toString()}`;return u.redirect(h)}),i.get("/callback",async(u)=>{let t=u.get("meshContext"),f=u.req.query("code"),l=u.req.query("state"),c=u.req.query("error");if(c)return u.redirect(`/?sso_error=${encodeURIComponent(c)}`);if(!f||!l)return u.redirect("/?sso_error=missing_code_or_state");let E=ZW(u,"org_sso_state");if(!E)return u.redirect("/?sso_error=state_expired");Kq(u,"org_sso_state","",{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:0});let $;try{$=JSON.parse(E)}catch{return u.redirect("/?sso_error=invalid_state")}if($.state!==l)return u.redirect("/?sso_error=state_mismatch");if(!t.auth.user||t.auth.user.id!==$.userId)return u.redirect("/?sso_error=session_expired");let w=await t.storage.orgSsoConfig.getByOrgId($.orgId);if(!w)return u.redirect("/?sso_error=sso_not_configured");let d=await Zwu(w.issuer,w.discoveryEndpoint),_=await fetch(d.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:f,redirect_uri:`${t.baseUrl}/api/org-sso/callback`,client_id:w.clientId,client_secret:w.clientSecret,code_verifier:$.codeVerifier})});if(!_.ok)return console.error("[org-sso] Token exchange failed:",await _.text()),u.redirect("/?sso_error=token_exchange_failed");let v=await _.json();if(!v.id_token)return u.redirect("/?sso_error=no_id_token");try{let g=HUi.createRemoteJWKSet(new URL(d.jwks_uri)),{payload:O}=await HUi.jwtVerify(v.id_token,g,{issuer:w.issuer,audience:w.clientId}),Z=O.email?.toLowerCase(),B=t.auth.user.email?.toLowerCase();if(!Z||Z!==B)return console.error(`[org-sso] Email mismatch: token=${Z}, user=${B}`),u.redirect("/?sso_error=email_mismatch")}catch(g){return console.error("[org-sso] ID token verification failed:",g),u.redirect("/?sso_error=token_verification_failed")}let h=await Bwu(t,t.auth.user.id,$.orgId);if(!h)return u.redirect("/?sso_error=not_a_member");await t.storage.orgSsoSessions.upsert(t.auth.user.id,$.orgId);let D=h.orgSlug?`/${h.orgSlug}`:"/";return u.redirect(D)}),i.get("/config",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!eD4(t))return u.json({error:"Admin role required"},403);let l=await t.storage.orgSsoConfig.getByOrgId(f);if(!l)return u.json({configured:!1});return u.json({configured:!0,config:t.storage.orgSsoConfig.toPublic(l)})}),i.post("/config",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!Fwu(t))return u.json({error:"Owner role required"},403);let l=await u.req.json();if(!l.issuer||!l.clientId||!l.domain)return u.json({error:"issuer, clientId, and domain are required"},400);let c=await t.storage.orgSsoConfig.getByOrgId(f);if(!c&&!l.clientSecret)return u.json({error:"clientSecret is required for initial SSO setup"},400);let E=l.clientSecret||c?.clientSecret||"";try{await Zwu(l.issuer,l.discoveryEndpoint)}catch(w){return u.json({error:"Failed to reach OIDC discovery endpoint",details:w instanceof Error?w.message:String(w)},400)}let $=await t.storage.orgSsoConfig.upsert(f,{issuer:l.issuer,clientId:l.clientId,clientSecret:E,discoveryEndpoint:l.discoveryEndpoint,scopes:l.scopes,domain:l.domain,enforced:l.enforced});return u.json({success:!0,config:t.storage.orgSsoConfig.toPublic($)})}),i.post("/config/enforce",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!Fwu(t))return u.json({error:"Owner role required"},403);let l=await u.req.json();if(!await t.storage.orgSsoConfig.getByOrgId(f))return u.json({error:"SSO must be configured before enforcing"},400);return await t.storage.orgSsoConfig.setEnforced(f,l.enforced),u.json({success:!0,enforced:l.enforced})}),i.delete("/config",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!Fwu(t))return u.json({error:"Owner role required"},403);return await t.storage.orgSsoConfig.delete(f),u.json({success:!0})})}function QUi(i){let u;try{u=new URL(i)}catch{throw Error(`Invalid URL: ${i}`)}let t=Tu().localMode;if(u.protocol!=="https:"&&!(t&&u.protocol==="http:"))throw Error(`OIDC URL must use HTTPS: ${i}`);let f=u.hostname,l=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^localhost$/i],c=/^127\.|^\[::1\]$|^localhost$/i.test(f);if(t&&c)return;for(let E of l)if(E.test(f))throw Error(`OIDC URL must not point to a private network address: ${f}`)}async function Zwu(i,u){let t=u||i,f=pq0.get(t);if(f&&f.expiresAt>Date.now())return f.doc;let l=u||`${i.replace(/\/$/,"")}/.well-known/openid-configuration`;QUi(l);let c=await fetch(l);if(!c.ok)throw Error(`OIDC discovery failed: ${c.status} ${c.statusText}`);let E=await c.json();if(!E.authorization_endpoint||!E.token_endpoint||!E.jwks_uri)throw Error("OIDC discovery document missing required endpoints");return QUi(E.authorization_endpoint),QUi(E.token_endpoint),QUi(E.jwks_uri),pq0.set(t,{doc:E,expiresAt:Date.now()+3600000}),E}function rD4(){let i=new Uint8Array(32);return crypto.getRandomValues(i),btoa(String.fromCharCode(...i)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function mD4(i){let t=new TextEncoder().encode(i),f=await crypto.subtle.digest("SHA-256",t);return btoa(String.fromCharCode(...new Uint8Array(f))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Bwu(i,u,t){return await i.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug as orgSlug","member.role"]).where("member.userId","=",u).where("member.organizationId","=",t).executeTakeFirst()??null}function eD4(i){let u=i.auth.user?.role;if(!u)return!1;return id.includes(u)}function Fwu(i){return i.auth.user?.role==="owner"}var bUi=()=>{let i=new zu;return VD4(i),i},pq0;var ywu=N(()=>{Vf();uci();Yt();Pv();pq0=new Map});function sD4(i){if(i==="claude-code")return aD4;if(i==="codex")return oD4;return null}function iV0(i,u){return sD4(i)?.[u]??null}var aD4,oD4;var uV0=N(()=>{aD4={fast:{modelId:"claude-code:haiku",label:"Haiku 4.5"},smart:{modelId:"claude-code:sonnet",label:"Sonnet 4.6"},thinking:{modelId:"claude-code:opus-1m",label:"Opus 4.8 1M"}},oD4={fast:{modelId:"codex:gpt-5.4-mini",label:"GPT-5.4 Mini"},smart:{modelId:"codex:gpt-5.4",label:"GPT-5.4"},thinking:{modelId:"codex:gpt-5.5",label:"GPT-5.5"}}});var tV0=N(()=>{uV0()});function fV0(i){return i.type==="tool-call"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function pD4(i){return i.type==="tool-result"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function lV0(i){let u=null;for(let f=i.length-1;f>=0&&u===null;f--){let c=i[f].content;if(!Array.isArray(c))continue;for(let E=c.length-1;E>=0;E--){let $=c[E];if(fV0($)){u=$.toolCallId;break}}}if(u===null)return i;let t=u;return i.map((f)=>{let l=f.content;if(!Array.isArray(l))return f;let c=l.filter((E)=>{if(fV0(E))return E.toolCallId===t;if(pD4(E))return E.toolCallId===t;return!0});if(c.length===l.length)return f;return{...f,content:c}})}function i84(i){let u=!1,t=i.map((f)=>{if(f.role!=="assistant")return f;if(!f.parts.some((c)=>("state"in c)&&c.state==="approval-requested"))return f;return u=!0,{...f,parts:f.parts.map((c)=>{if(!("state"in c)||c.state!=="approval-requested"||!("approval"in c)||!c.approval)return c;return{...c,state:"output-denied",approval:{...c.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return u?t:i}function u84(i){let[u,t]=i.reduce((f,l)=>{if(l.role==="system")f[0].push(l);else f[1].push(l);return f},[[],[]]);return{systemMessages:u,messages:t}}async function cV0(i,u){let t=i.filter((v)=>v.role!=="assistant"||v.parts&&v.parts.length>0),f=await ae({messages:t}),l=i84(f),c=await GB(l,{tools:u.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:E,messages:$}=u84(c),w=lV0($),_=M0u({messages:w,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((v)=>{if(v.role!=="assistant")return v;let h=Array.isArray(v.content)?v.content.filter((D)=>D.type!=="reasoning"&&D.type!=="thinking"&&D.type!=="redacted-reasoning").map((D)=>{let g=D;if("providerOptions"in g||"providerMetadata"in g){let{providerOptions:O,providerMetadata:Z,...B}=g;if(g.type==="tool-call"){let F=Z?.google,y=O?.google;return{...B,...F?{providerMetadata:{google:F}}:{},...y?{providerOptions:{google:y}}:{}}}return B}return D}):v.content;return{...v,content:Array.isArray(h)&&h.length===0?[{type:"text",text:""}]:h,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:E,messages:_,originalMessages:f}}var EV0=N(()=>{bf()});function $V0(i){let u=i.filter((f)=>f.role==="system"),t=i.find((f)=>f.role!=="system");return{systemMessages:u,requestMessage:t}}var wV0=()=>{};function RUi(i){let u=i.get("meshContext").organization;if(!u)throw Error("Organization context is required");if((u.slug??u.id)!==i.req.param("org"))throw Error("Organization mismatch");return u}async function CUi(i){let u=i.get("meshContext"),t=u.auth?.user?.id;if(!t)throw new P0(401,{message:"Unauthorized"});let f=RUi(i),l=i.req.param("threadId");if(!l)throw new P0(400,{message:"Missing thread ID"});if(/[.*>\s]/.test(l))throw new P0(400,{message:"Invalid thread ID"});let c=await u.storage.threads.get(l);if(!c)throw new P0(404,{message:"Thread not found"});return{ctx:u,organization:f,thread:c,taskId:l,userId:t}}async function dV0(i){let u=await CUi(i);if(u.thread.created_by!==u.userId)throw new P0(403,{message:"Not authorized"});return u}var _V0=N(()=>{I5()});import{z as a1}from"zod";var t84,f84,vV0;var hV0=N(()=>{t8();N9();t84=a1.looseObject({id:a1.string().optional(),role:a1.enum(["user","assistant","system"]),parts:a1.array(a1.record(a1.string(),a1.unknown())),metadata:a1.unknown().optional()}),f84=a1.object({windowSize:a1.number().default(ud),thread_id:a1.string()}),vV0=a1.object({messages:a1.array(t84).min(1).refine((i)=>i.filter((u)=>u.role!=="system").length===1,{message:"Expected exactly one non-system message"}),memory:f84.optional(),tier:b90.optional(),agent:a1.object({id:a1.string()}).loose(),stream:a1.boolean().optional(),temperature:a1.number().default(0.5),thread_id:a1.string().optional(),branch:a1.string().nullish(),toolApprovalLevel:a1.enum(["auto","readonly"]).default("auto"),sandboxProviderKind:a1.enum(["agent-sandbox","user-desktop","cluster"]).transform((i)=>i==="cluster"?"agent-sandbox":i).nullish().describe("Pinned on first message. Subsequent messages ignore this field (the thread row carries the pinned value)."),harnessId:a1.enum(["claude-code","codex","decopilot"]).nullish().describe("Pinned on first message. Subsequent messages ignore this field."),mode:a1.enum(["default","plan","web-search","deep-research","gen-image"]).default("default")}).strict()});function MUi(i){DV0.set(i.id,i)}function gV0(i){return DV0.get(i)}var DV0;var Twu=N(()=>{DV0=new Map});function Uwu(i,u,t){let f=gV0(i);if(!f)throw Error(`No harness factory registered for id "${i}". Available ids must be registered in apps/mesh/src/harnesses/index.ts.`);return f.create(t).stream(u)}var Pwu=N(()=>{Twu()});class xwu{ctx;harnessId;constructor(i){this.ctx=i.ctx,this.harnessId=i.harnessId}dispatch(i){return Uwu(this.harnessId,i,this.ctx)}}var NV0=N(()=>{Pwu()});function xH(i,u){return o9(i,u)}var qUi=N(()=>{E3()});import{z as Ri}from"zod";import{existsSync as N84}from"fs";import{query as TV0}from"@anthropic-ai/claude-agent-sdk";import{createSdkMcpServer as GF6,tool as nF6,SYSTEM_PROMPT_DYNAMIC_BOUNDARY as kF6,InMemorySessionStore as jF6,HOOK_EVENTS as XF6,AbortError as KF6}from"@anthropic-ai/claude-agent-sdk";import{listSessions as SF6,forkSession as YF6,getSessionInfo as WF6,getSessionMessages as LF6,deleteSession as zF6,renameSession as QF6,tagSession as HF6,listSubagents as bF6,getSubagentMessages as RF6,foldSessionSummary as CF6,importSessionToStore as MF6}from"@anthropic-ai/claude-agent-sdk";import{startup as VF6}from"@anthropic-ai/claude-agent-sdk";import{createSdkMcpServer as mF6,tool as eF6}from"@anthropic-ai/claude-agent-sdk";import"zod";function c84(i){let u;if(i===void 0)u="";else try{u=JSON.stringify(i)??String(i)}catch{u=String(i)}if(u.length>OV0)return`${u.slice(0,OV0)}...[truncated]`;return u}function E84(i){return i.replace(/\s+/g,"")}function $84(i){return typeof i==="string"&&i.trim().toLowerCase().startsWith("image/")}function IH(i,u){let t=i.trim(),f=E84(u.trim());if(!t||!f)return;return{type:"image",source:{type:"base64",media_type:t,data:f}}}function kwu(i){if(typeof i==="string"&&i.trim())return i.trim();return}function w84(i,u){let t=typeof i.data==="string"?i.data:void 0,f=kwu(i.mimeType??i.mediaType??i.media_type??u);if(!t||!f)return;return IH(f,t)}function d84(i,u){let t=i.trim();if(/^https?:\/\//i.test(t))return{warning:l84};let f=t.match(/^data:([^;]+);base64,(.+)$/i);if(f){let[,c,E]=f,$=IH(c,E);return $?{content:$}:{warning:Bh}}let l=t.match(/^base64:([^,]+),(.+)$/i);if(l){let[,c,E]=l,$=IH(c,E);return $?{content:$}:{warning:Bh}}if(u){let c=IH(u,t);if(c)return{content:c}}return{warning:Bh}}function _84(i){if(!i||typeof i!=="object")return{warning:Bh};let u=i.image,t=kwu(i.mimeType);if(typeof u==="string")return d84(u,t);if(u&&typeof u==="object"){let f=w84(u,t);return f?{content:f}:{warning:Bh}}return{warning:Bh}}function v84(i){if(typeof Buffer<"u")return(i instanceof Uint8Array?Buffer.from(i):Buffer.from(new Uint8Array(i))).toString("base64");if(typeof btoa==="function"){let u=i instanceof Uint8Array?i:new Uint8Array(i),t="",f=32768;for(let l=0;l<u.length;l+=f){let c=u.subarray(l,l+f);t+=String.fromCharCode(...c)}return btoa(t)}return}function h84(i){let u=kwu(i.mediaType??i.mimeType);if(!u||!$84(u))return{};let t=i.data;if(typeof t==="string"){let f=IH(u,t);return f?{content:f}:{warning:Bh}}if(t instanceof Uint8Array||typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer){let f=v84(t);if(!f)return{warning:Bh};let l=IH(u,f);return l?{content:l}:{warning:Bh}}return{warning:Bh}}function ZV0(i){let u=[],t=[],f,l=[],c=new Map,E=!1,$=(D)=>{return l.push({formatted:D}),l.length-1},w=(D,g)=>{if(E=!0,!c.has(D))c.set(D,[]);c.get(D)?.push(g)};for(let D of i)switch(D.role){case"system":if(f=D.content,typeof D.content==="string"&&D.content.trim().length>0)$(D.content);else $("");break;case"user":if(typeof D.content==="string")u.push(D.content),$(`Human: ${D.content}`);else{let g=D.content.filter((Z)=>Z.type==="text").map((Z)=>Z.text).join(`
|
|
84006
|
+
`.execute(d),await ao`DELETE FROM "member" WHERE "userId" = ${u.id}`.execute(d),await ao`DELETE FROM "user" WHERE "id" = ${u.id}`.execute(d)})}catch(d){console.error("[SSO] Failed to merge duplicate user:",d)}}var uD4=(i)=>{return{trustEmailVerified:!0,provisionUser:fD4,defaultSSO:[{domain:i.domain,providerId:i.providerId,oidcConfig:{issuer:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/v2.0`,pkce:!0,clientId:i.MS_CLIENT_ID,clientSecret:i.MS_CLIENT_SECRET,discoveryEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/v2.0/.well-known/openid-configuration`,authorizationEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/oauth2/v2.0/authorize`,tokenEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/oauth2/v2.0/token`,jwksEndpoint:`https://login.microsoftonline.com/${i.MS_TENANT_ID}/discovery/v2.0/keys`,userInfoEndpoint:"https://graph.microsoft.com/oidc/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:i.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified",oid:"oid"}}}}]}},tD4=(i)=>{return{trustEmailVerified:!0,defaultSSO:[{domain:i.domain,providerId:i.providerId,oidcConfig:{issuer:"https://accounts.google.com",pkce:!0,clientId:i.GOOGLE_CLIENT_ID,clientSecret:i.GOOGLE_CLIENT_SECRET,discoveryEndpoint:"https://accounts.google.com/.well-known/openid-configuration",authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token",jwksEndpoint:"https://www.googleapis.com/oauth2/v3/certs",userInfoEndpoint:"https://openidconnect.googleapis.com/v1/userinfo",tokenEndpointAuthentication:"client_secret_post",scopes:i.scopes,mapping:{id:"sub",email:"email",emailVerified:"email_verified",name:"name",image:"picture",extraFields:{emailVerified:"email_verified",hd:"hd"}}}}]}},hq0=(i)=>{if(i.providerId==="microsoft")return uD4(i);if(i.providerId==="google")return tD4(i);throw Error(`Unsupported provider: ${i.providerId}`)};var Dq0=N(()=>{zE()});function iwu(i){let[u,t,...f]=i.trim().split("@");if(!u||!t||f.length>0)return null;return t.toLowerCase()}function lD4(i){let u=i.trim().toLowerCase();return u.length>0&&!p5.has(u)}function uwu(i){let u=iwu(i.email);return i.emailVerified===!0&&!!u&&lD4(u)}function twu(i){return i.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function gq0(i){let[u=""]=i.trim().toLowerCase().split(".");return u.split(/[^a-z0-9]+/).filter(Boolean).map((f)=>f.charAt(0).toUpperCase()+f.slice(1)).join(" ")||"Workspace"}function Nq0(i){let u=i.name?.trim().split(/\s+/)[0];if(u)return u;let[t]=i.email.trim().split("@");return t||"Workspace"}function JUi(i){return i.verificationStatus==="verified"&&i.joinMode!=="off"}var p5;var SUi=N(()=>{p5=new Set(["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","yahoo.com","yahoo.co.uk","icloud.com","me.com","mac.com","aol.com","protonmail.com","proton.me","zoho.com","yandex.com","mail.com","gmx.com","gmx.net","tutanota.com","fastmail.com"])});import{sql as Tq0}from"kysely";async function YUi(i){let{db:u,authApi:t,user:f,allowCreate:l,createdVia:c}=i,E=iwu(f.email);return u.transaction().execute(async($)=>{await Tq0`select pg_advisory_xact_lock(hashtext(${`user-org:${f.id}`})::bigint)`.execute($);let w=await dD4($,f.id);if(w)return await wD4($,f,E,w),{status:"already_has_organization",organization:w,domain:E};return $D4({db:$,authApi:t,user:f,allowCreate:l,createdVia:c,domain:E})})}async function $D4(i){let{db:u,authApi:t,user:f,allowCreate:l,createdVia:c,domain:E}=i;if(uwu(f)&&E){let v=await new qw(u).getAllByDomain(E),h=await Bq0(u,v);if(h.length===1&&h[0]?.joinMode==="auto"){let F=h[0];return await Fq0(t,f.id,F.id),{status:"joined",organization:F,domain:E,createdVia:c}}if(h.length>0)return{status:"ambiguous",domain:E,organizations:h};if(!l)return{status:"skipped",reason:"auto-create-disabled",domain:E};await Tq0`select pg_advisory_xact_lock(hashtext(${E})::bigint)`.execute(u);let D=new qw(u),g=await D.getAllByDomain(E),O=await Bq0(u,g);if(O.length===1&&O[0]?.joinMode==="auto"){let F=O[0];return await Fq0(t,f.id,F.id),{status:"joined",organization:F,domain:E,createdVia:c}}if(O.length>0)return{status:"ambiguous",domain:E,organizations:O};let Z=await yq0(t,{name:gq0(E),baseSlug:twu(E),userId:f.id});await D.add(Z.id,E,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"});let B=await Zq0(u,Z.id);if(!B)throw Error("Created organization could not be loaded");return{status:"created",organization:B,domain:E,createdVia:c}}if(!l)return{status:"skipped",reason:"auto-create-disabled",domain:E};let $=`${Nq0(f)} ${vD4()}`,w=await yq0(t,{name:$,baseSlug:_D4($),userId:f.id}),d=await Zq0(u,w.id);if(!d)throw Error("Created organization could not be loaded");return{status:"created",organization:d,domain:E,createdVia:c}}async function wD4(i,u,t,f){if(!t||!uwu(u))return;if(f.slug!==twu(t))return;let l=new qw(i);if((await l.getAllByDomain(t)).length>0)return;await l.add(f.id,t,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"})}async function dD4(i,u){let f=(await i.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.name as name","organization.slug as slug","organization.logo as logo","organization.metadata as metadata"]).where("member.userId","=",u).orderBy("member.createdAt","asc").execute()).find((E)=>!i$(E));if(!f)return null;let{metadata:l,...c}=f;return c}function _D4(i){return i.toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function vD4(){let i=Math.random()<0.5?cD4:ED4;return i[Math.floor(Math.random()*i.length)]}function hD4(i){if(i&&typeof i==="object"&&"id"in i&&typeof i.id==="string")return{id:i.id};throw Error("Failed to create organization")}function DD4(i){return i instanceof Error&&"body"in i&&i.body?.code==="ORGANIZATION_ALREADY_EXISTS"}async function Zq0(i,u){return await i.selectFrom("organization").select(["id","name","slug","logo"]).where("id","=",u).executeTakeFirst()??null}async function Bq0(i,u){let t=u.filter((c)=>JUi(c));if(t.length===0)return[];let f=await i.selectFrom("organization").select(["id","name","slug","logo","metadata"]).where("id","in",t.map((c)=>c.organizationId)).execute(),l=new Map(f.map((c)=>[c.id,c]));return t.flatMap((c)=>{let E=l.get(c.organizationId);if(!E)return[];if(i$(E))return[];let{metadata:$,...w}=E;return[{...w,joinMode:c.joinMode}]})}async function Fq0(i,u,t){try{await i.addMember({body:{userId:u,role:"user",organizationId:t}})}catch(f){if(!(f instanceof Error?f.message.toLowerCase():"").includes("already a member"))throw f}}async function yq0(i,u){for(let t=0;t<Oq0;t++){let f=t===0?"":`-${Math.random().toString(36).slice(2,6)}`;try{return hD4(await i.createOrganization({body:{name:u.name,slug:`${u.baseSlug}${f}`,userId:u.userId}}))}catch(l){if(!DD4(l)||t===Oq0-1)throw l}}throw Error("Failed to create organization")}var Oq0=5,cD4,ED4;var fwu=N(()=>{SUi();cD4=["labs","agent","studio","workspace","systems","core","cloud","works"],ED4=["capybara","guarana","deco","samba","feijoada","capoeira","carnival"]});var Aq0={};zi(Aq0,{resetPasswordEnabled:()=>LUi,authConfig:()=>ot,auth:()=>E4,GENERIC_EMAIL_DOMAINS:()=>p5});import{sso as gD4}from"@better-auth/sso";import{organization as ND4}from"@decocms/better-auth/plugins";import{betterAuth as OD4}from"better-auth";import{admin as ZD4,apiKey as BD4,jwt as FD4,magicLink as yD4,mcp as TD4,openAPI as UD4}from"better-auth/plugins";import{emailOTP as PD4}from"better-auth/plugins/email-otp";import{APIError as xD4}from"better-auth/api";import{adminAc as ID4,defaultRoles as AD4}from"better-auth/plugins/admin/access";import{defaultStatements as GD4}from"@decocms/better-auth/plugins/organization/access";import{createAccessControl as nD4}from"@decocms/better-auth/plugins/access";function WD4(){let i=[oo];try{let u=new URL(oo);if(u.hostname==="localhost")i.push(oo.replace("localhost","127.0.0.1"));else if(u.hostname==="127.0.0.1")i.push(oo.replace("127.0.0.1","localhost"))}catch{}return i}var xq0,kD4,WUi,cwu,jD4,XD4,KD4,Uq0,ot,Iq0=void 0,lwu=void 0,LUi=!1,JD4,SD4,YD4,oo,Pq0,LD4=262144,E4;var f8=N(()=>{Yt();BW();VVi();m4();HE();zE();W40();Cq();z40();wq0();_q0();vq0();Pv();pai();Dq0();SUi();fwu();xq0=Object.values(qO()).map((i)=>i.map((u)=>u.name)).flat(),kD4={...GD4,self:["*",...xq0]},WUi=nD4(kD4),cwu=sai(xq0),jD4=WUi.newRole(cwu.user),XD4=WUi.newRole(cwu.admin),KD4=WUi.newRole(cwu.owner),Uq0=Object.values(qO()).map((i)=>i.map((u)=>`self:${u.name}`)).flat(),ot=VO().auth;if(ot.inviteEmailProviderId&&ot.emailProviders&&ot.emailProviders.length>0){let i=jD(ot.emailProviders,ot.inviteEmailProviderId);if(i){let u=kD(i);Iq0=async(t)=>{let f=t.inviter.user?.name||t.inviter.user?.email,l=`${Wl()}/auth/accept-invitation?invitationId=${t.invitation.id}&redirectTo=/${t.organization.slug}`;await u({to:t.email,subject:`You've been invited to join ${t.organization.name}`,html:XD({preheader:`${f} has invited you to join ${t.organization.name} on deco Studio.`,heading:"You've been invited",subheading:`<strong>${f}</strong> has invited you to join <strong>${t.organization.name}</strong> on deco Studio.`,body:oO("Accept invitation",l),footnote:"If you weren\u2019t expecting an invitation, you can safely ignore this email."})})}}}if(ot.resetPasswordEmailProviderId&&ot.emailProviders&&ot.emailProviders.length>0){let i=jD(ot.emailProviders,ot.resetPasswordEmailProviderId);if(i){let u=kD(i);LUi=!0,lwu=async({user:t,url:f})=>{await u({to:t.email,subject:"Reset your password",html:XD({preheader:"We received a request to reset the password on your deco Studio account.",heading:"Reset your password",subheading:"We received a password reset request for your account. Click the button below to choose a new password.",body:oO("Reset password",f)+Pci("This link expires in 24\xA0hours. If you didn\u2019t request a password reset, no action is needed.",!0),footnote:"If you didn\u2019t request a password reset, you can safely ignore this email."})})}}}JD4=[ND4({organizationCreation:{afterCreate:async(i)=>{await $q0(i.organization.id,i.member.userId)}},organizationHooks:{beforeUpdateOrganization:async({organization:i,member:u})=>{let t=i.logo;if(typeof t!=="string"||!t.startsWith("data:"))return;let f=await dq0(u.organizationId,t);if(f===t)return;return{data:{...i,logo:f}}}},ac:WUi,creatorRole:"owner",allowUserToCreateOrganization:!0,dynamicAccessControl:{enabled:!0,maximumRolesPerOrganization:500,enableCustomResources:!0,allowedRolesToCreateResources:id,resourceNameValidation:(i)=>{return{valid:/^[a-zA-Z0-9-_]+$/.test(i)}}},roles:{user:jD4,admin:XD4,owner:KD4},sendInvitationEmail:Iq0}),TD4({loginPage:"/login",oidcConfig:{scopes:Uq0,metadata:{scopes_supported:Uq0},loginPage:"/login"}}),BD4({enableMetadata:!0,maximumNameLength:64,keyExpiration:{minExpiresIn:0.003472222222222222},enableSessionForAPIKeys:!0,customAPIKeyGetter:(i)=>{if(i.headers?.get("X-MCP-Session-Auth")==="true")return null;let t=i.headers?.get("Authorization");if(t?.startsWith("Bearer "))return t.replace("Bearer ","").trim();return null},rateLimit:{enabled:!1}}),ZD4({defaultRole:"user",adminRoles:["admin","owner"],roles:{...AD4,owner:ID4}}),UD4(),FD4({jwt:{expirationTime:"5m",definePayload:({user:i})=>({id:i.id,email:i.email,name:i.name,role:i.role})}}),gD4(ot.ssoConfig?hq0(ot.ssoConfig):void 0),...ot.magicLinkConfig?.enabled&&ot.emailProviders&&ot.emailProviders.length>0?[yD4(L40(ot.magicLinkConfig,ot.emailProviders))]:[],...ot.emailOtpConfig?.enabled&&ot.emailProviders&&ot.emailProviders.length>0?[PD4(Y40(ot.emailOtpConfig,ot.emailProviders))]:[]],SD4=W2(),YD4=PC(SD4),oo=Wl();Pq0=Tu(),E4=OD4({secret:Pq0.betterAuthSecret||"deco-default-secret-k7x9m2p4q8w3n5v6",logger:{log:(i,u,...t)=>{if(i==="error"&&u.includes("validate API key"))return;if(i==="error"&&t.some((l)=>{let c=l?.statusCode;return typeof c==="number"&&c>=300&&c<400}))return;let f=`${new Date().toISOString()} ${i.toUpperCase()} [Better Auth]: ${u}`;if(i==="error")console.error(f,...t);else if(i==="warn")console.warn(f,...t);else console.log(f,...t)}},baseURL:oo,trustedOrigins:WD4(),database:YD4,socialProviders:ot.socialProviders,...ot.ssoConfig&&{account:{accountLinking:{trustedProviders:[ot.ssoConfig.providerId]}}},emailAndPassword:{enabled:ot.emailAndPassword.enabled,...lwu&&{sendResetPassword:lwu}},rateLimit:{enabled:!Pq0.disableRateLimit,window:60,max:1e4},plugins:JD4,databaseHooks:{user:{create:{after:async(i)=>{p$u({id:i.id,email:i.email,name:i.name??null,emailVerified:!!i.emailVerified}),ou.capture({distinctId:i.id,event:"user_signed_up",properties:{email:i.email,email_domain:i.email?.split("@")[1]?.toLowerCase()??null,email_verified:!!i.emailVerified,has_name:!!i.name}});let u=VO().autoCreateOrganizationOnSignup!==!1;try{let t=await YUi({db:qt().db,authApi:E4.api,user:{id:i.id,email:i.email,name:i.name??null,emailVerified:!!i.emailVerified},allowCreate:u,createdVia:"signup"});if(t.status==="created")ou.groupIdentify({groupType:"organization",groupKey:t.organization.id,properties:{name:t.organization.name,slug:t.organization.slug,created_at:new Date().toISOString(),created_via:t.createdVia,email_domain:t.domain}}),ou.capture({distinctId:i.id,event:"organization_created",groups:{organization:t.organization.id},properties:{organization_id:t.organization.id,organization_slug:t.organization.slug,name:t.organization.name,created_via:t.createdVia,email_domain:t.domain}});if(t.status==="joined")ou.capture({distinctId:i.id,event:"organization_domain_joined",groups:{organization:t.organization.id},properties:{organization_id:t.organization.id,organization_slug:t.organization.slug,email_domain:t.domain,joined_via:t.createdVia}})}catch(t){ou.captureException(t,i.id),console.error("Failed to ensure organization on signup:",t)}}},update:{before:async(i)=>{let u=i.image;if(typeof u==="string"&&u.startsWith("data:")&&u.length>LD4)throw new xD4("PAYLOAD_TOO_LARGE",{message:"Avatar image is too large. Upload an image smaller than 5MB."})}}},session:{create:{after:async(i)=>{let u=await qt().db.selectFrom("user").select(["id","email","name","emailVerified"]).where("id","=",i.userId).executeTakeFirst();if(!u)return;p$u({id:u.id,email:u.email,name:u.name??null,emailVerified:!!u.emailVerified})}}}}})});function Ewu(i,u){return`${i}:${u}`}function Gq0(i){let u=i?.ttlMs??120000,t=i?.maxSize??1e4,f=new Map;function l(){if(f.size<=t)return;let c=Date.now();for(let[E,$]of f)if($.expiresAt<=c)f.delete(E);if(f.size>t){let E=f.size-t,$=0;for(let w of f.keys()){if($>=E)break;f.delete(w),$++}}}return{get(c,E){let $=Ewu(c,E),w=f.get($);if(!w)return;if(w.expiresAt<=Date.now()){f.delete($);return}return w.role},set(c,E,$){let w=Ewu(c,E);f.set(w,{role:$,expiresAt:Date.now()+u,organizationId:E}),l()},invalidate(c,E){f.delete(Ewu(c,E))},invalidateOrg(c){for(let[E,$]of f)if($.organizationId===c)f.delete(E)}}}class $wu{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(i){this.options=i}async start(i){if(i)this.localEmit=i;if(this.sub)return;if(!this.localEmit)return;let u=this.options.getConnection();if(!u)return;this.sub=u.subscribe("mesh.sse.broadcast");let t=new TextDecoder;(async()=>{for await(let f of this.sub)try{let l=JSON.parse(t.decode(f.data));if(typeof l?.originId!=="string"||typeof l?.organizationId!=="string"||typeof l?.event?.id!=="string"||typeof l?.event?.type!=="string")continue;if(l.originId===this.originId)continue;this.localEmit?.(l.organizationId,l.event)}catch{}})().catch((f)=>{console.error("[NatsSSEBroadcast] Subscription error:",f)})}broadcast(i,u){this.localEmit?.(i,u);let t={originId:this.originId,organizationId:i,event:u};try{let f=this.options.getConnection();if(!f)return;f.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(t)))}catch(f){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",f)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}class jq0{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(i){if(this.started){if(!i)return;await this.stop()}this.strategy=i,await this.strategy.start((u,t)=>this.localEmit(u,t)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(i){if(this.totalCount>=kq0)return console.warn(`[SSEHub] Total connection limit reached (${kq0})`),null;let u=this.listeners.get(i.organizationId);if(!u)u=new Map,this.listeners.set(i.organizationId,u);if(u.size>=nq0)return console.warn(`[SSEHub] Per-org connection limit reached for ${i.organizationId} (${nq0})`),null;return u.set(i.id,i),this.totalCount++,i.id}remove(i,u){let t=this.listeners.get(i);if(!t)return;if(t.delete(u)){if(this.totalCount--,t.size===0)this.listeners.delete(i)}}emit(i,u){if(this.strategy)this.strategy.broadcast(i,u);else this.localEmit(i,u)}countForOrg(i){return this.listeners.get(i)?.size??0}get count(){return this.totalCount}localEmit(i,u){let t=this.listeners.get(i);if(!t||t.size===0)return;for(let f of t.values()){if(f.typePatterns&&!zD4(u.type,f.typePatterns))continue;try{f.push(u)}catch{this.remove(i,f.id)}}}}function zD4(i,u){for(let t of u){if(t===i)return!0;if(t.endsWith(".*")){let f=t.slice(0,-1);if(i.startsWith(f))return!0}}return!1}var nq0=50,kq0=500,P6;var wwu=N(()=>{G1();P6=new jq0;xt.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback((i)=>i.observe(P6.count))});async function QD4(i,u,t=5){try{await jE(u,{maxAttempts:t,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(f){console.error(`${i} Deferred start failed:`,f instanceof Mc?f.cause:f)}}function Xq0(i){let u=new $wu({getConnection:()=>i.getConnection()});P6.start(u).catch((t)=>{console.error("[SSEHub] Failed to start broadcast strategy:",t)}),i.onReady(()=>{QD4("[NatsSSEBroadcast]",()=>u.start())})}var dwu=N(()=>{Sl();wwu();wwu()});var Kq0=()=>{};var _wu=()=>{};var Jq0=()=>{};var HD4,iZ6;var Sq0=N(()=>{Kq0();_wu();P7();Jq0();HD4={br:".br",zstd:".zst",gzip:".gz"},iZ6=Object.keys(HD4)});var Yq0=N(()=>{Sq0()});var Wq0=()=>{};var Lq0=N(()=>{Wq0()});var zq0=()=>{};var Qq0=N(()=>{KVi()});var vwu=N(()=>{x7();Qq0()});var hwu="x-hono-disable-ssg",FZ6;var Dwu=N(()=>{vwu();FZ6=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[hwu]:"true"}})}catch{return null}})()});var Hq0=N(()=>{r6i()});var gwu=N(()=>{Hq0()});var bq0=N(()=>{Lq0();zq0();_wu();Dwu();gwu();vwu()});var Rq0=N(()=>{Dwu();gwu();bq0()});var uB6;var Cq0=N(()=>{Rq0();({write:uB6}=Bun)});var CD4=class{#i;constructor(i){this.#i=i,this.raw=i.raw,this.url=i.url?new URL(i.url):null,this.protocol=i.protocol??null}send(i,u){this.#i.send(i,u??{})}raw;binaryType="arraybuffer";get readyState(){return this.#i.readyState}url;protocol;close(i,u){this.#i.close(i,u)}},Mq0=(i)=>{return(...u)=>{if(typeof u[0]==="function"){let[t,f]=u;return async function(c,E){let $=await t(c),w=await i(c,$,f);if(w)return w;await E()}}else{let[t,f,l]=u;return(async()=>{let c=await i(t,f,l);if(!c)throw Error("Failed to upgrade WebSocket");return c})()}}};var qq0=()=>{};var so=(i)=>("server"in i.env)?i.env.server:i.env;var zUi=()=>{};var MD4;var Vq0=N(()=>{qq0();zUi();MD4=Mq0((i,u)=>{let t=so(i);if(!t)throw TypeError("env has to include the 2nd argument of fetch.");if(t.upgrade(i.req.raw,{data:{events:u,url:new URL(i.req.url),protocol:i.req.url}}))return new Response(null);return})});var Nwu=(i)=>{let u=so(i);if(!u)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof u.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let t=u.requestIP(i.req.raw);if(!t)return{remote:{}};return{remote:{address:t.address,addressType:t.family==="IPv6"||t.family==="IPv4"?t.family:void 0,port:t.port}}};var rq0=N(()=>{zUi()});var mq0=N(()=>{Yq0();Cq0();Vq0();rq0();zUi()});var eq0;var aq0=N(()=>{eq0={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/decocms/e02ce92e-6684-41a6-acfc-432977eb4878/github.png"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});function oq0(){let i=Object.keys(ot.socialProviders??{}),u=i.length>0,t=i.map((l)=>({name:l,icon:eq0[l].icon})),f=Tu().localMode;return{emailAndPassword:{enabled:ot.emailAndPassword?.enabled??!1},magicLink:{enabled:ot.magicLinkConfig?.enabled??!1},emailOtp:{enabled:ot.emailOtpConfig?.enabled??!1},resetPassword:{enabled:LUi},socialProviders:{enabled:u,providers:t},sso:ot.ssoConfig?{enabled:!0,providerId:ot.ssoConfig.providerId}:{enabled:!1},stdioEnabled:f,localMode:Td()}}async function qD4(i,u,t){try{if(!ot.inviteEmailProviderId||!ot.emailProviders||ot.emailProviders.length===0)return;let f=jD(ot.emailProviders,ot.inviteEmailProviderId);if(!f)return;let l=await i.selectFrom("member").innerJoin("user","user.id","member.userId").select(["user.email as email","member.role as role"]).where("member.organizationId","=",u.id).execute(),c=id,E=l.filter((d)=>(d.role??"").split(",").map((_)=>_.trim()).some((_)=>c.includes(_)));if(E.length===0)return;let $=kD(f),w=`${Wl()}/${u.slug}/settings/members`;await Promise.allSettled(E.map((d)=>$({to:d.email,subject:`New request to join ${u.name}`,html:XD({preheader:`${t} requested to join ${u.name}.`,heading:"New join request",subheading:`<strong>${t}</strong> requested to join <strong>${u.name}</strong> on deco Studio.`,body:oO("Review request",w),footnote:"You can approve or deny this request from your members settings."})})))}catch(f){console.error("[Auth] Failed to notify admins of join request:",f)}}var Y8,sq0;var Owu=N(()=>{Vf();mq0();m4();Yt();f8();zE();fwu();Buu();SUi();Cq();Pv();HE();Xai();aq0();Zg();BW();Y8=new zu;Y8.post("/local-session",async(i)=>{if(!Td())return i.json({success:!1,error:"Local mode is not active"},403);let u;try{u=Nwu(i).remote.address}catch{}if(!(u==="127.0.0.1"||u==="::1"||u==="::ffff:127.0.0.1"))return i.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:f}=await Promise.resolve().then(() => (Zg(),dFi));await f();let{auth:l}=await Promise.resolve().then(() => (f8(),Aq0)),c=await ja();if(!c)return i.json({success:!1,error:"Local admin user not found"},500);let E=await wFi();return await l.api.signInEmail({body:{email:c.email,password:E},asResponse:!0})}catch(f){return console.error("Failed to create local session:",f),i.json({success:!1,error:f instanceof Error?f.message:"Failed to create local session"},500)}});Y8.get("/my-capabilities/:slug",async(i)=>{let u=i.req.param("slug"),t=await E4.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({error:"Authentication required"},401);let f=qt().db,l=await f.selectFrom("organization").select(["id"]).where("slug","=",u).executeTakeFirst();if(!l)return i.json({role:null,capabilities:{}});let E=(await f.selectFrom("member").select(["role"]).where("userId","=",t.user.id).where("organizationId","=",l.id).executeTakeFirst())?.role??null;if(!E)return i.json({role:null,capabilities:{}});if(E==="owner"||E==="admin")return i.json({role:E,capabilities:Ut0()});if(E==="user")return i.json({role:E,capabilities:CVi({self:[...fci]})});let $=await f.selectFrom("organizationRole").select(["permission"]).where("role","=",E).where("organizationId","=",l.id).executeTakeFirst(),w={},d=$?.permission;if(typeof d==="string")try{let _=JSON.parse(d);if(_&&typeof _==="object"&&!Array.isArray(_))w=_}catch{w={}}return i.json({role:E,capabilities:CVi(w)})});Y8.get("/domain-lookup",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({found:!1,organizations:[]});let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({found:!1,organizations:[]});try{let l=(await new qw(qt().db).getAllByDomain(t)).filter(JUi);if(l.length===0)return i.json({found:!1,organizations:[]});let c=await qt().db.selectFrom("organization").select(["id","name","slug","logo","metadata"]).where("id","in",l.map((w)=>w.organizationId)).execute(),E=new Map(c.map((w)=>[w.id,w])),$=l.map((w)=>{let d=E.get(w.organizationId);if(!d)return null;if(i$(d))return null;return{id:d.id,name:d.name,slug:d.slug,logo:d.logo,joinMode:w.joinMode}}).filter((w)=>w!==null);return i.json({found:$.length>0,organizations:$})}catch(f){return console.error("[Auth] Domain lookup failed:",f),i.json({success:!1,error:"Domain lookup failed"},500)}});Y8.post("/domain-join",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({success:!1,error:"Email must be verified to join"},403);let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({success:!1,error:"Generic email domains cannot auto-join"},403);let f=await i.req.json().catch(()=>({})),l=typeof f.organizationSlug==="string"&&f.organizationSlug.trim()?f.organizationSlug.trim():null;try{let c=qt().db,w=(await new qw(c).getAllByDomain(t)).filter((D)=>D.verificationStatus==="verified"&&D.joinMode==="auto");if(w.length===0)return i.json({success:!1,error:"Auto-join is not available for this domain"},403);let d=await c.selectFrom("organization").select(["id","slug","metadata"]).where("id","in",w.map((D)=>D.organizationId)).execute(),_=new Map(d.filter((D)=>!i$(D)).map((D)=>[D.id,{id:D.id,slug:D.slug}])),v=w.flatMap((D)=>{let g=_.get(D.organizationId);return g?[g]:[]});if(v.length===0)return i.json({success:!1,error:"Auto-join is not available for this domain"},403);let h;if(l){let D=v.find((g)=>g.slug===l);if(!D)return i.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);h=D}else if(v.length===1)h=v[0];else return i.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await E4.api.addMember({body:{userId:u.user.id,role:"user",organizationId:h.id}})}catch(D){if(!(D instanceof Error?D.message.toLowerCase():"").includes("already a member"))return console.error("[Auth] Domain join addMember failed:",D),i.json({success:!1,error:"Failed to join organization"},500)}return ou.capture({distinctId:u.user.id,event:"organization_domain_joined",groups:{organization:h.id},properties:{organization_id:h.id,organization_slug:h.slug,email_domain:t}}),i.json({success:!0,slug:h.slug})}catch(c){return ou.captureException(c,u.user.id),console.error("[Auth] Domain join failed:",c),i.json({success:!1,error:"Failed to join organization"},500)}});Y8.post("/domain-setup",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({success:!1,error:"Email must be verified"},403);let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({success:!1,error:"Corporate email required"},403);let f=await i.req.json().catch(()=>({})),l=typeof f.name==="string"&&f.name.trim().length>0?f.name.trim():null,c=typeof f.logo==="string"&&f.logo.length>0?f.logo:null,E=f.claimDomain!==!1;try{let $=qt().db,w=new qw($),d=await w.getAllByDomain(t);if(d.length>0){let y=await $.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",u.user.id).where("member.organizationId","in",d.map((T)=>T.organizationId)).executeTakeFirst();if(y)return i.json({success:!0,slug:y.slug,alreadyExists:!0})}let _=t.split(".")[0]??t,v=l??_.charAt(0).toUpperCase()+_.slice(1),h=(l??_).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||_.toLowerCase().replace(/[^a-z0-9-]/g,""),D=null;for(let T=0;T<3;T++){let U=T===0?"":`-${Math.random().toString(36).slice(2,6)}`,I=T===0?v:`${v}${U}`,j=`${h}${U}`;try{D=await E4.api.createOrganization({body:{name:I,slug:j,userId:u.user.id}});break}catch(A){if(!(A instanceof Error&&("body"in A)&&A.body?.code==="ORGANIZATION_ALREADY_EXISTS")||T===2)throw A}}if(!D?.id)throw Error("Failed to create organization");let g=D.id;if(E)await w.add(g,t,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"});let O=!1,Z=null,B=null;try{let y=Tu().firecrawlApiKey;if(y){let T=await y3i(t,y,v);if(T){let U=new kr(qt().db),I=await U.create(g,T);if(await U.setDefault(I.id,g),O=!0,T.name&&T.name!==v)Z=T.name;B=T.favicon??T.logo??null}}}catch(y){console.error("[Auth] Brand extraction failed (non-fatal):",y)}let F={};if(!l&&Z)F.name=Z;if(c)F.logo=c;else if(B)F.logo=B;if(Object.keys(F).length>0)try{await E4.api.updateOrganization({headers:i.req.raw.headers,body:{organizationId:g,data:F}})}catch(y){console.error("[Auth] Org update failed (non-fatal):",y)}return ou.identify({distinctId:u.user.id,properties:{email:u.user.email,$set:{email:u.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),ou.groupIdentify({groupType:"organization",groupKey:g,properties:{name:D.slug??h,slug:D.slug??h,email_domain:t,brand_extracted:O,created_at:new Date().toISOString()}}),ou.capture({distinctId:u.user.id,event:"organization_created",groups:{organization:g},properties:{organization_id:g,organization_slug:D.slug??h,email_domain:t,brand_extracted:O}}),i.json({success:!0,slug:D.slug??h,brandExtracted:O})}catch($){return ou.captureException($,u.user?.id),console.error("[Auth] Domain setup failed:",$),i.json({success:!1,error:"Failed to set up organization"},500)}});Y8.get("/org-access-status/:slug",async(i)=>{let u=i.req.param("slug"),t=await E4.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);let f=qt().db,l=await f.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",u).executeTakeFirst();if(!l)return i.json({status:"not-found"});let c={id:l.id,name:l.name,slug:l.slug,logo:l.logo};if(await f.selectFrom("member").select(["id"]).where("userId","=",t.user.id).where("organizationId","=",l.id).executeTakeFirst())return i.json({status:"member",organization:c});try{let $=await E4.api.listUserInvitations({headers:i.req.raw.headers}),w=Date.now(),d=$.find((_)=>_.organizationId===l.id&&_.status==="pending"&&new Date(_.expiresAt).getTime()>w);if(d)return i.json({status:"pending-invite",invitation:{id:d.id},organization:c})}catch($){console.error("[Auth] listUserInvitations failed:",$)}if(t.user.emailVerified){let $=t.user.email?.split("@")[1]?.toLowerCase();if($&&!p5.has($)){let w=await new qw(f).getByOrgAndDomain(l.id,$);if(w?.verificationStatus==="verified"){if(w.joinMode==="auto")return i.json({status:"auto-domain-join",organization:{...c,domain:$}});if(w.joinMode==="request"){let d=await new WL(f).getPending(l.id,t.user.id);return i.json({status:d?"request-pending":"can-request",organization:{...c,domain:$}})}}}}return i.json({status:"no-access",organization:c})});Y8.post("/domain-request-join",async(i)=>{let u=await E4.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);if(!u.user.emailVerified)return i.json({success:!1,error:"Email must be verified to request access"},403);let t=u.user.email?.split("@")[1]?.toLowerCase();if(!t||p5.has(t))return i.json({success:!1,error:"Generic email domains cannot request access"},403);let f=await i.req.json().catch(()=>({})),l=typeof f.organizationSlug==="string"&&f.organizationSlug.trim()?f.organizationSlug.trim():null;if(!l)return i.json({success:!1,error:"organizationSlug is required"},400);try{let c=qt().db,E=await c.selectFrom("organization").select(["id","slug","name"]).where("slug","=",l).executeTakeFirst();if(!E)return i.json({success:!1,error:"Organization not found"},404);let $=await new qw(c).getByOrgAndDomain(E.id,t);if(!$||$.verificationStatus!=="verified"||$.joinMode!=="request")return i.json({success:!1,error:"This organization is not accepting requests for your domain."},403);if(await c.selectFrom("member").select(["id"]).where("userId","=",u.user.id).where("organizationId","=",E.id).executeTakeFirst())return i.json({success:!0,slug:E.slug,alreadyMember:!0});return await new WL(c).create(E.id,u.user.id),await qD4(c,E,u.user.email),ou.capture({distinctId:u.user.id,event:"organization_join_requested",groups:{organization:E.id},properties:{organization_id:E.id,organization_slug:E.slug,email_domain:t}}),i.json({success:!0,status:"pending"})}catch(c){return ou.captureException(c,u.user.id),console.error("[Auth] Domain request-join failed:",c),i.json({success:!1,error:"Failed to request access"},500)}});Y8.post("/ensure-organization",async(i)=>{let u=null;try{if(u=await E4.api.getSession({headers:i.req.raw.headers}),!u?.user)return i.json({success:!1,error:"Authentication required"},401);let t=await YUi({db:qt().db,authApi:E4.api,user:{id:u.user.id,email:u.user.email,name:u.user.name??null,emailVerified:!!u.user.emailVerified},allowCreate:!0,createdVia:"commerce_onboarding_recovery"});if(t.status==="ambiguous")return i.json({success:!1,status:t.status,domain:t.domain,organizations:t.organizations});if(t.status==="skipped")return i.json({success:!1,status:t.status,reason:t.reason,domain:t.domain,error:"Organization creation is not available."},409);if(t.status==="already_has_organization")return i.json({success:!0,status:t.status,organization:t.organization,domain:t.domain});return i.json({success:!0,status:t.status,organization:t.organization,domain:t.domain})}catch(t){let f=u?.user?.id;if(f)ou.captureException(t,f);return console.error("[Auth] ensure organization failed:",t),i.json({success:!1,error:"Failed to ensure organization"},500)}});sq0=Y8});import*as HUi from"jose";function VD4(i){i.get("/status",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!await Bwu(t,t.auth.user.id,f))return u.json({error:"Not a member of this organization"},403);let c=await t.storage.orgSsoConfig.getByOrgId(f);if(!c||!c.enforced)return u.json({ssoRequired:!1});let E=await t.storage.orgSsoSessions.isValid(t.auth.user.id,f);return u.json({ssoRequired:!0,authenticated:E,issuer:c.issuer,domain:c.domain})}),i.get("/authorize",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!await Bwu(t,t.auth.user.id,f))return u.json({error:"Not a member of this organization"},403);let c=await t.storage.orgSsoConfig.getByOrgId(f);if(!c)return u.json({error:"SSO not configured for this organization"},404);let E=await Zwu(c.issuer,c.discoveryEndpoint),$=rD4(),w=await mD4($),d=crypto.randomUUID(),_=JSON.stringify({state:d,codeVerifier:$,orgId:f,userId:t.auth.user.id});Kq(u,"org_sso_state",_,{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:600});let v=new URLSearchParams({response_type:"code",client_id:c.clientId,redirect_uri:`${t.baseUrl}/api/org-sso/callback`,scope:c.scopes.join(" "),state:d,code_challenge:w,code_challenge_method:"S256"}),h=`${E.authorization_endpoint}?${v.toString()}`;return u.redirect(h)}),i.get("/callback",async(u)=>{let t=u.get("meshContext"),f=u.req.query("code"),l=u.req.query("state"),c=u.req.query("error");if(c)return u.redirect(`/?sso_error=${encodeURIComponent(c)}`);if(!f||!l)return u.redirect("/?sso_error=missing_code_or_state");let E=ZW(u,"org_sso_state");if(!E)return u.redirect("/?sso_error=state_expired");Kq(u,"org_sso_state","",{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:0});let $;try{$=JSON.parse(E)}catch{return u.redirect("/?sso_error=invalid_state")}if($.state!==l)return u.redirect("/?sso_error=state_mismatch");if(!t.auth.user||t.auth.user.id!==$.userId)return u.redirect("/?sso_error=session_expired");let w=await t.storage.orgSsoConfig.getByOrgId($.orgId);if(!w)return u.redirect("/?sso_error=sso_not_configured");let d=await Zwu(w.issuer,w.discoveryEndpoint),_=await fetch(d.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:f,redirect_uri:`${t.baseUrl}/api/org-sso/callback`,client_id:w.clientId,client_secret:w.clientSecret,code_verifier:$.codeVerifier})});if(!_.ok)return console.error("[org-sso] Token exchange failed:",await _.text()),u.redirect("/?sso_error=token_exchange_failed");let v=await _.json();if(!v.id_token)return u.redirect("/?sso_error=no_id_token");try{let g=HUi.createRemoteJWKSet(new URL(d.jwks_uri)),{payload:O}=await HUi.jwtVerify(v.id_token,g,{issuer:w.issuer,audience:w.clientId}),Z=O.email?.toLowerCase(),B=t.auth.user.email?.toLowerCase();if(!Z||Z!==B)return console.error(`[org-sso] Email mismatch: token=${Z}, user=${B}`),u.redirect("/?sso_error=email_mismatch")}catch(g){return console.error("[org-sso] ID token verification failed:",g),u.redirect("/?sso_error=token_verification_failed")}let h=await Bwu(t,t.auth.user.id,$.orgId);if(!h)return u.redirect("/?sso_error=not_a_member");await t.storage.orgSsoSessions.upsert(t.auth.user.id,$.orgId);let D=h.orgSlug?`/${h.orgSlug}`:"/";return u.redirect(D)}),i.get("/config",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!eD4(t))return u.json({error:"Admin role required"},403);let l=await t.storage.orgSsoConfig.getByOrgId(f);if(!l)return u.json({configured:!1});return u.json({configured:!0,config:t.storage.orgSsoConfig.toPublic(l)})}),i.post("/config",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!Fwu(t))return u.json({error:"Owner role required"},403);let l=await u.req.json();if(!l.issuer||!l.clientId||!l.domain)return u.json({error:"issuer, clientId, and domain are required"},400);let c=await t.storage.orgSsoConfig.getByOrgId(f);if(!c&&!l.clientSecret)return u.json({error:"clientSecret is required for initial SSO setup"},400);let E=l.clientSecret||c?.clientSecret||"";try{await Zwu(l.issuer,l.discoveryEndpoint)}catch(w){return u.json({error:"Failed to reach OIDC discovery endpoint",details:w instanceof Error?w.message:String(w)},400)}let $=await t.storage.orgSsoConfig.upsert(f,{issuer:l.issuer,clientId:l.clientId,clientSecret:E,discoveryEndpoint:l.discoveryEndpoint,scopes:l.scopes,domain:l.domain,enforced:l.enforced});return u.json({success:!0,config:t.storage.orgSsoConfig.toPublic($)})}),i.post("/config/enforce",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!Fwu(t))return u.json({error:"Owner role required"},403);let l=await u.req.json();if(!await t.storage.orgSsoConfig.getByOrgId(f))return u.json({error:"SSO must be configured before enforcing"},400);return await t.storage.orgSsoConfig.setEnforced(f,l.enforced),u.json({success:!0,enforced:l.enforced})}),i.delete("/config",async(u)=>{let t=u.get("meshContext");if(!t.auth.user)return u.json({error:"Authentication required"},401);let f=t.organization?.id;if(!f)return u.json({error:"Organization context required"},400);if(!Fwu(t))return u.json({error:"Owner role required"},403);return await t.storage.orgSsoConfig.delete(f),u.json({success:!0})})}function QUi(i){let u;try{u=new URL(i)}catch{throw Error(`Invalid URL: ${i}`)}let t=Tu().localMode;if(u.protocol!=="https:"&&!(t&&u.protocol==="http:"))throw Error(`OIDC URL must use HTTPS: ${i}`);let f=u.hostname,l=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^localhost$/i],c=/^127\.|^\[::1\]$|^localhost$/i.test(f);if(t&&c)return;for(let E of l)if(E.test(f))throw Error(`OIDC URL must not point to a private network address: ${f}`)}async function Zwu(i,u){let t=u||i,f=pq0.get(t);if(f&&f.expiresAt>Date.now())return f.doc;let l=u||`${i.replace(/\/$/,"")}/.well-known/openid-configuration`;QUi(l);let c=await fetch(l);if(!c.ok)throw Error(`OIDC discovery failed: ${c.status} ${c.statusText}`);let E=await c.json();if(!E.authorization_endpoint||!E.token_endpoint||!E.jwks_uri)throw Error("OIDC discovery document missing required endpoints");return QUi(E.authorization_endpoint),QUi(E.token_endpoint),QUi(E.jwks_uri),pq0.set(t,{doc:E,expiresAt:Date.now()+3600000}),E}function rD4(){let i=new Uint8Array(32);return crypto.getRandomValues(i),btoa(String.fromCharCode(...i)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function mD4(i){let t=new TextEncoder().encode(i),f=await crypto.subtle.digest("SHA-256",t);return btoa(String.fromCharCode(...new Uint8Array(f))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Bwu(i,u,t){return await i.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug as orgSlug","member.role"]).where("member.userId","=",u).where("member.organizationId","=",t).executeTakeFirst()??null}function eD4(i){let u=i.auth.user?.role;if(!u)return!1;return id.includes(u)}function Fwu(i){return i.auth.user?.role==="owner"}var bUi=()=>{let i=new zu;return VD4(i),i},pq0;var ywu=N(()=>{Vf();uci();Yt();Pv();pq0=new Map});function sD4(i){if(i==="claude-code")return aD4;if(i==="codex")return oD4;return null}function iV0(i,u){return sD4(i)?.[u]??null}var aD4,oD4;var uV0=N(()=>{aD4={fast:{modelId:"claude-code:haiku",label:"Haiku 4.5"},smart:{modelId:"claude-code:sonnet",label:"Sonnet 5"},thinking:{modelId:"claude-code:opus-1m",label:"Opus 4.8 1M"}},oD4={fast:{modelId:"codex:gpt-5.4-mini",label:"GPT-5.4 Mini"},smart:{modelId:"codex:gpt-5.4",label:"GPT-5.4"},thinking:{modelId:"codex:gpt-5.5",label:"GPT-5.5"}}});var tV0=N(()=>{uV0()});function fV0(i){return i.type==="tool-call"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function pD4(i){return i.type==="tool-result"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function lV0(i){let u=null;for(let f=i.length-1;f>=0&&u===null;f--){let c=i[f].content;if(!Array.isArray(c))continue;for(let E=c.length-1;E>=0;E--){let $=c[E];if(fV0($)){u=$.toolCallId;break}}}if(u===null)return i;let t=u;return i.map((f)=>{let l=f.content;if(!Array.isArray(l))return f;let c=l.filter((E)=>{if(fV0(E))return E.toolCallId===t;if(pD4(E))return E.toolCallId===t;return!0});if(c.length===l.length)return f;return{...f,content:c}})}function i84(i){let u=!1,t=i.map((f)=>{if(f.role!=="assistant")return f;if(!f.parts.some((c)=>("state"in c)&&c.state==="approval-requested"))return f;return u=!0,{...f,parts:f.parts.map((c)=>{if(!("state"in c)||c.state!=="approval-requested"||!("approval"in c)||!c.approval)return c;return{...c,state:"output-denied",approval:{...c.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return u?t:i}function u84(i){let[u,t]=i.reduce((f,l)=>{if(l.role==="system")f[0].push(l);else f[1].push(l);return f},[[],[]]);return{systemMessages:u,messages:t}}async function cV0(i,u){let t=i.filter((v)=>v.role!=="assistant"||v.parts&&v.parts.length>0),f=await ae({messages:t}),l=i84(f),c=await GB(l,{tools:u.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:E,messages:$}=u84(c),w=lV0($),_=M0u({messages:w,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((v)=>{if(v.role!=="assistant")return v;let h=Array.isArray(v.content)?v.content.filter((D)=>D.type!=="reasoning"&&D.type!=="thinking"&&D.type!=="redacted-reasoning").map((D)=>{let g=D;if("providerOptions"in g||"providerMetadata"in g){let{providerOptions:O,providerMetadata:Z,...B}=g;if(g.type==="tool-call"){let F=Z?.google,y=O?.google;return{...B,...F?{providerMetadata:{google:F}}:{},...y?{providerOptions:{google:y}}:{}}}return B}return D}):v.content;return{...v,content:Array.isArray(h)&&h.length===0?[{type:"text",text:""}]:h,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:E,messages:_,originalMessages:f}}var EV0=N(()=>{bf()});function $V0(i){let u=i.filter((f)=>f.role==="system"),t=i.find((f)=>f.role!=="system");return{systemMessages:u,requestMessage:t}}var wV0=()=>{};function RUi(i){let u=i.get("meshContext").organization;if(!u)throw Error("Organization context is required");if((u.slug??u.id)!==i.req.param("org"))throw Error("Organization mismatch");return u}async function CUi(i){let u=i.get("meshContext"),t=u.auth?.user?.id;if(!t)throw new P0(401,{message:"Unauthorized"});let f=RUi(i),l=i.req.param("threadId");if(!l)throw new P0(400,{message:"Missing thread ID"});if(/[.*>\s]/.test(l))throw new P0(400,{message:"Invalid thread ID"});let c=await u.storage.threads.get(l);if(!c)throw new P0(404,{message:"Thread not found"});return{ctx:u,organization:f,thread:c,taskId:l,userId:t}}async function dV0(i){let u=await CUi(i);if(u.thread.created_by!==u.userId)throw new P0(403,{message:"Not authorized"});return u}var _V0=N(()=>{I5()});import{z as a1}from"zod";var t84,f84,vV0;var hV0=N(()=>{t8();N9();t84=a1.looseObject({id:a1.string().optional(),role:a1.enum(["user","assistant","system"]),parts:a1.array(a1.record(a1.string(),a1.unknown())),metadata:a1.unknown().optional()}),f84=a1.object({windowSize:a1.number().default(ud),thread_id:a1.string()}),vV0=a1.object({messages:a1.array(t84).min(1).refine((i)=>i.filter((u)=>u.role!=="system").length===1,{message:"Expected exactly one non-system message"}),memory:f84.optional(),tier:b90.optional(),agent:a1.object({id:a1.string()}).loose(),stream:a1.boolean().optional(),temperature:a1.number().default(0.5),thread_id:a1.string().optional(),branch:a1.string().nullish(),toolApprovalLevel:a1.enum(["auto","readonly"]).default("auto"),sandboxProviderKind:a1.enum(["agent-sandbox","user-desktop","cluster"]).transform((i)=>i==="cluster"?"agent-sandbox":i).nullish().describe("Pinned on first message. Subsequent messages ignore this field (the thread row carries the pinned value)."),harnessId:a1.enum(["claude-code","codex","decopilot"]).nullish().describe("Pinned on first message. Subsequent messages ignore this field."),mode:a1.enum(["default","plan","web-search","deep-research","gen-image"]).default("default")}).strict()});function MUi(i){DV0.set(i.id,i)}function gV0(i){return DV0.get(i)}var DV0;var Twu=N(()=>{DV0=new Map});function Uwu(i,u,t){let f=gV0(i);if(!f)throw Error(`No harness factory registered for id "${i}". Available ids must be registered in apps/mesh/src/harnesses/index.ts.`);return f.create(t).stream(u)}var Pwu=N(()=>{Twu()});class xwu{ctx;harnessId;constructor(i){this.ctx=i.ctx,this.harnessId=i.harnessId}dispatch(i){return Uwu(this.harnessId,i,this.ctx)}}var NV0=N(()=>{Pwu()});function xH(i,u){return o9(i,u)}var qUi=N(()=>{E3()});import{z as Ri}from"zod";import{existsSync as N84}from"fs";import{query as TV0}from"@anthropic-ai/claude-agent-sdk";import{createSdkMcpServer as GF6,tool as nF6,SYSTEM_PROMPT_DYNAMIC_BOUNDARY as kF6,InMemorySessionStore as jF6,HOOK_EVENTS as XF6,AbortError as KF6}from"@anthropic-ai/claude-agent-sdk";import{listSessions as SF6,forkSession as YF6,getSessionInfo as WF6,getSessionMessages as LF6,deleteSession as zF6,renameSession as QF6,tagSession as HF6,listSubagents as bF6,getSubagentMessages as RF6,foldSessionSummary as CF6,importSessionToStore as MF6}from"@anthropic-ai/claude-agent-sdk";import{startup as VF6}from"@anthropic-ai/claude-agent-sdk";import{createSdkMcpServer as mF6,tool as eF6}from"@anthropic-ai/claude-agent-sdk";import"zod";function c84(i){let u;if(i===void 0)u="";else try{u=JSON.stringify(i)??String(i)}catch{u=String(i)}if(u.length>OV0)return`${u.slice(0,OV0)}...[truncated]`;return u}function E84(i){return i.replace(/\s+/g,"")}function $84(i){return typeof i==="string"&&i.trim().toLowerCase().startsWith("image/")}function IH(i,u){let t=i.trim(),f=E84(u.trim());if(!t||!f)return;return{type:"image",source:{type:"base64",media_type:t,data:f}}}function kwu(i){if(typeof i==="string"&&i.trim())return i.trim();return}function w84(i,u){let t=typeof i.data==="string"?i.data:void 0,f=kwu(i.mimeType??i.mediaType??i.media_type??u);if(!t||!f)return;return IH(f,t)}function d84(i,u){let t=i.trim();if(/^https?:\/\//i.test(t))return{warning:l84};let f=t.match(/^data:([^;]+);base64,(.+)$/i);if(f){let[,c,E]=f,$=IH(c,E);return $?{content:$}:{warning:Bh}}let l=t.match(/^base64:([^,]+),(.+)$/i);if(l){let[,c,E]=l,$=IH(c,E);return $?{content:$}:{warning:Bh}}if(u){let c=IH(u,t);if(c)return{content:c}}return{warning:Bh}}function _84(i){if(!i||typeof i!=="object")return{warning:Bh};let u=i.image,t=kwu(i.mimeType);if(typeof u==="string")return d84(u,t);if(u&&typeof u==="object"){let f=w84(u,t);return f?{content:f}:{warning:Bh}}return{warning:Bh}}function v84(i){if(typeof Buffer<"u")return(i instanceof Uint8Array?Buffer.from(i):Buffer.from(new Uint8Array(i))).toString("base64");if(typeof btoa==="function"){let u=i instanceof Uint8Array?i:new Uint8Array(i),t="",f=32768;for(let l=0;l<u.length;l+=f){let c=u.subarray(l,l+f);t+=String.fromCharCode(...c)}return btoa(t)}return}function h84(i){let u=kwu(i.mediaType??i.mimeType);if(!u||!$84(u))return{};let t=i.data;if(typeof t==="string"){let f=IH(u,t);return f?{content:f}:{warning:Bh}}if(t instanceof Uint8Array||typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer){let f=v84(t);if(!f)return{warning:Bh};let l=IH(u,f);return l?{content:l}:{warning:Bh}}return{warning:Bh}}function ZV0(i){let u=[],t=[],f,l=[],c=new Map,E=!1,$=(D)=>{return l.push({formatted:D}),l.length-1},w=(D,g)=>{if(E=!0,!c.has(D))c.set(D,[]);c.get(D)?.push(g)};for(let D of i)switch(D.role){case"system":if(f=D.content,typeof D.content==="string"&&D.content.trim().length>0)$(D.content);else $("");break;case"user":if(typeof D.content==="string")u.push(D.content),$(`Human: ${D.content}`);else{let g=D.content.filter((Z)=>Z.type==="text").map((Z)=>Z.text).join(`
|
|
84007
84007
|
`),O=$(g?`Human: ${g}`:"");if(g)u.push(g);for(let Z of D.content)if(Z.type==="image"){let{content:B,warning:F}=_84(Z);if(B)w(O,B);else if(F)t.push(F)}else if(Z.type==="file"){let{content:B,warning:F}=h84(Z);if(B)w(O,B);else if(F)t.push(F)}}break;case"assistant":{let g="";if(typeof D.content==="string")g=D.content;else{let Z=D.content.filter((F)=>F.type==="text").map((F)=>F.text).join(`
|
|
84008
84008
|
`);if(Z)g=Z;let B=D.content.filter((F)=>F.type==="tool-call");if(B.length>0){let F=B.map((y)=>`[Tool call: ${y.toolName}(${c84(y.input)})]`).join(`
|
|
84009
84009
|
`);g+=g?`
|
|
@@ -84022,7 +84022,7 @@ ${F}`;if(c.has(B))O(),h(B)}),O()}return{messagesPrompt:d,systemPrompt:f,...t.len
|
|
|
84022
84022
|
...[truncated ${i.length-u} chars]`}if(typeof i!=="object"||i===null)return i;if(Array.isArray(i)){let c=-1,E=0;for(let $=0;$<i.length;$++){let w=i[$];if(typeof w==="string"&&w.length>E)c=$,E=w.length}if(c>=0&&E>u){let $=i[c].slice(0,u)+`
|
|
84023
84023
|
...[truncated ${E-u} chars]`,w=[...i];return w[c]=$,w}return i}let t=i,f=null,l=0;for(let[c,E]of Object.entries(t))if(typeof E==="string"&&E.length>l)f=c,l=E.length;if(f&&l>u){let c=t[f].slice(0,u)+`
|
|
84024
84024
|
...[truncated ${l-u} chars]`;return{...t,[f]:c}}return i}function jwu(i={}){let u=JV0(i.defaultSettings?.logger);if(i.defaultSettings){let l=FV0(i.defaultSettings);if(!l.valid)throw Error(`Invalid default settings: ${l.errors.join(", ")}`);if(l.warnings.length>0)l.warnings.forEach((c)=>u.warn(`Claude Code Provider: ${c}`))}let t=(l,c={})=>{let E={...i.defaultSettings,...c},$=FV0(E);if(!$.valid)throw Error(`Invalid settings: ${$.errors.join(", ")}`);return new M84({id:l,settings:E,settingsValidationWarnings:$.warnings})},f=function(l,c){if(new.target)throw Error("The Claude Code model function cannot be called with the new keyword.");return t(l,c)};return f.languageModel=t,f.chat=t,f.specificationVersion="v3",f.embeddingModel=(l)=>{throw new Gf({modelId:l,modelType:"embeddingModel"})},f.imageModel=(l)=>{throw new Gf({modelId:l,modelType:"imageModel"})},f}var l84="Image URLs are not supported by this provider; supply base64/data URLs.",Bh="Unable to convert image content; supply base64/data URLs.",OV0=1000,O84,Z84,T84,U84,P84,I84,A84,n84="3.5.0",k84,UV0="Claude Code SDK output ended unexpectedly; returning truncated response from buffered text. Await upstream fix to avoid data loss.",j84=512,xV0="Structured output was requested (responseFormat with a JSON schema) but the Claude Code CLI returned no structured_output, and the prose response could not be parsed as JSON. This usually means the schema contains constructs the CLI cannot enforce (e.g. complex regex patterns with lookaheads/backreferences), causing it to silently fall back to prose. Simplify the generation schema and validate strictly client-side. See the 'Structured Outputs' section of the ai-sdk-provider-claude-code README for the list of known limitations.",K84,J84,S84,Y84,W84,IV0="Claude Agent SDK features (hooks/MCP/images) require streaming input. Set `streamingInput: 'always'` or provide `canUseTool` (auto streams only when canUseTool is set).",z84,Q84,H84,R84,C84=1e4,M84=class i{specificationVersion="v3";defaultObjectGenerationMode="json";supportsImageUrls=!1;supportedUrls={};supportsStructuredOutputs=!0;static UNKNOWN_TOOL_NAME="unknown-tool";static MAX_TOOL_INPUT_SIZE=1048576;static MAX_TOOL_INPUT_WARN=102400;static MAX_DELTA_CALC_SIZE=1e4;static PROMPT_SUGGESTION_DRAIN_TIMEOUT_MS=1e4;modelId;settings;sessionId;modelValidationWarning;settingsValidationWarnings;logger;constructor(u){this.modelId=u.id,this.settings=u.settings??{},this.settingsValidationWarnings=u.settingsValidationWarnings??[];let t=JV0(this.settings.logger);if(this.logger=G84(t,this.settings.verbose??!1),!this.modelId||typeof this.modelId!=="string"||this.modelId.trim()==="")throw new Gf({modelId:this.modelId,modelType:"languageModel"});if(this.modelValidationWarning=B84(this.modelId),this.modelValidationWarning)this.logger.warn(`Claude Code Model: ${this.modelValidationWarning}`)}get provider(){return"claude-code"}getModel(){return R84[this.modelId]??this.modelId}getSanitizedSdkOptions(){if(!this.settings.sdkOptions||typeof this.settings.sdkOptions!=="object")return;let u={...this.settings.sdkOptions},t=Array.from(z84).filter((f)=>(f in u));if(t.length>0)this.logger.warn(`[claude-code] sdkOptions includes provider-managed fields (${t.join(", ")}); these will be ignored.`),t.forEach((f)=>delete u[f]);return u}getEffectiveResume(u){for(let t of[u?.resume,this.settings.resume,this.sessionId])if(typeof t==="string"&&!nwu(t))return t;return}static sessionIdConflictsWithResumeOrContinue(u){return(u.resumePresent||u.continue)&&!u.forkSession}applySessionResolution(u,t){if(nwu(u.resume))u.resume=t;if(u.sessionId!==void 0&&i.sessionIdConflictsWithResumeOrContinue({resumePresent:u.resume!==void 0,continue:u.continue===!0,forkSession:u.forkSession===!0}))u.sessionId=void 0}extractToolUses(u){return Gwu(u,"tool_use").map((t)=>{let{id:f,name:l,input:c,parent_tool_use_id:E}=t;return{id:typeof f==="string"&&f.length>0?f:qu(),name:typeof l==="string"&&l.length>0?l:i.UNKNOWN_TOOL_NAME,input:c,parentToolUseId:typeof E==="string"?E:null}})}extractToolResults(u){return Gwu(u,"tool_result").map((t)=>{let{tool_use_id:f,content:l,is_error:c,name:E}=t;return{id:typeof f==="string"&&f.length>0?f:qu(),name:typeof E==="string"&&E.length>0?E:void 0,result:l,isError:Boolean(c)}})}extractToolErrors(u){return Gwu(u,"tool_error").map((t)=>{let{tool_use_id:f,error:l,name:c}=t;return{id:typeof f==="string"&&f.length>0?f:qu(),name:typeof c==="string"&&c.length>0?c:void 0,error:l}})}serializeToolInput(u){if(typeof u==="string")return this.checkInputSize(u);if(u===void 0)return"";try{let t=JSON.stringify(u);return this.checkInputSize(t)}catch{let t=String(u);return this.checkInputSize(t)}}checkInputSize(u){let t=u.length;if(t>i.MAX_TOOL_INPUT_SIZE)throw Error(`Tool input exceeds maximum size of ${i.MAX_TOOL_INPUT_SIZE} bytes (got ${t} bytes). This may indicate a malformed request or an attempt to process excessively large data.`);if(t>i.MAX_TOOL_INPUT_WARN)this.logger.warn(`[claude-code] Large tool input detected: ${t} bytes. Performance may be impacted. Consider chunking or reducing input size.`);return u}normalizeToolResult(u){if(typeof u==="string")try{return JSON.parse(u)}catch{return u}if(Array.isArray(u)&&u.length>0){let t=u.filter((l)=>l?.type==="text"&&typeof l.text==="string").map((l)=>l.text);if(t.length!==u.length)return u;if(t.length===1)try{return JSON.parse(t[0])}catch{return t[0]}let f=t.join(`
|
|
84025
|
-
`);try{return JSON.parse(f)}catch{return f}}return u}buildToolCallPart(u,t,f,l){return{type:"tool-call",toolCallId:u,toolName:t,input:f,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:f,parentToolCallId:l??null}}}}buildToolResultPart(u,t,f,l,c){let E=this.normalizeToolResult(f),$=typeof f==="string"?f:f===void 0?"":(()=>{try{return JSON.stringify(f)??String(f)}catch{return String(f)}})(),w=this.settings.maxToolResultSize,d=KV0(E,w),_=KV0($,w);return{type:"tool-result",toolCallId:u,toolName:t,result:d??"",isError:l,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawResult:_,rawResultTruncated:_!==$,parentToolCallId:c??null}}}}serializeToolError(u){return typeof u==="string"?u:typeof u==="object"&&u!==null?(()=>{try{return JSON.stringify(u)??String(u)}catch{return String(u)}})():String(u)}buildToolErrorPart(u,t,f,l){let c=this.serializeToolError(f);return{type:"tool-error",toolCallId:u,toolName:t,error:c,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:c,parentToolCallId:l??null}}}}buildToolErrorResultPart(u,t,f,l){let c=this.serializeToolError(f);return{type:"tool-result",toolCallId:u,toolName:t,result:c,isError:!0,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:c,parentToolCallId:l??null}}}}isRetractedToolFrame(u,t,f){if(!t.has(u))return!1;return this.logger.debug(`[claude-code] Dropping tool ${f} for retracted (superseded) tool ID: ${u}`),!0}generateAllWarnings(u,t){let f=[],l=[];if(u.temperature!==void 0)l.push("temperature");if(u.topP!==void 0)l.push("topP");if(u.topK!==void 0)l.push("topK");if(u.presencePenalty!==void 0)l.push("presencePenalty");if(u.frequencyPenalty!==void 0)l.push("frequencyPenalty");if(u.stopSequences!==void 0&&u.stopSequences.length>0)l.push("stopSequences");if(u.seed!==void 0)l.push("seed");if(l.length>0)for(let E of l)f.push({type:"unsupported",feature:E,details:`Claude Code SDK does not support the ${E} parameter. It will be ignored.`});if(u.tools!==void 0&&u.tools.length>0)f.push({type:"unsupported",feature:"tools",details:"The Claude Code CLI executes its own tools; AI SDK tools cannot be auto-bridged at the provider layer and will be ignored. To expose custom tools to the CLI, build an in-process MCP server with the createAiSdkMcpServer helper (exported by this package) and pass it via the mcpServers setting (plus allowedTools)."});if(u.toolChoice!==void 0&&u.toolChoice.type!=="auto")f.push({type:"unsupported",feature:"toolChoice",details:`Claude Code CLI does not support toolChoice '${u.toolChoice.type}'. Only automatic tool selection is available; the toolChoice parameter will be ignored.`});if(u.maxOutputTokens!==void 0)f.push({type:"unsupported",feature:"maxOutputTokens",details:"Claude Code CLI does not accept an output token cap. The maxOutputTokens parameter will be ignored."});if(this.modelValidationWarning)f.push({type:"other",message:this.modelValidationWarning});if(this.settingsValidationWarnings.forEach((E)=>{f.push({type:"other",message:E})}),u.responseFormat?.type==="json"&&!u.responseFormat.schema)f.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema for the Claude Code provider. The JSON responseFormat is ignored and the call is treated as plain text."});let c=F84(t);if(c)f.push({type:"other",message:c});return f}createQueryOptions(u,t,f,l,c){let E={model:this.getModel(),abortController:u,resume:c,pathToClaudeCodeExecutable:this.settings.pathToClaudeCodeExecutable,maxTurns:this.settings.maxTurns,maxThinkingTokens:this.settings.maxThinkingTokens,thinking:this.settings.thinking,effort:this.settings.effort,promptSuggestions:this.settings.promptSuggestions,cwd:this.settings.cwd,executable:this.settings.executable,executableArgs:this.settings.executableArgs,permissionMode:this.settings.permissionMode,permissionPromptToolName:this.settings.permissionPromptToolName,continue:this.settings.continue,allowedTools:this.settings.allowedTools,disallowedTools:this.settings.disallowedTools,betas:this.settings.betas,allowDangerouslySkipPermissions:this.settings.allowDangerouslySkipPermissions,enableFileCheckpointing:this.settings.enableFileCheckpointing,maxBudgetUsd:this.settings.maxBudgetUsd,plugins:this.settings.plugins,resumeSessionAt:this.settings.resumeSessionAt,sandbox:this.settings.sandbox,tools:this.settings.tools,mcpServers:this.settings.mcpServers,canUseTool:this.settings.canUseTool};if(this.settings.onUserDialog!==void 0)E.onUserDialog=this.settings.onUserDialog;if(this.settings.supportedDialogKinds!==void 0)E.supportedDialogKinds=this.settings.supportedDialogKinds;if(this.settings.systemPrompt!==void 0)E.systemPrompt=this.settings.systemPrompt;else if(this.settings.customSystemPrompt!==void 0)this.logger.warn("[claude-code] 'customSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt' instead (string or { type: 'preset', preset: 'claude_code', append? })."),E.systemPrompt=this.settings.customSystemPrompt;else if(this.settings.appendSystemPrompt!==void 0)this.logger.warn("[claude-code] 'appendSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt: { type: 'preset', preset: 'claude_code', append: <text> }' instead."),E.systemPrompt={type:"preset",preset:"claude_code",append:this.settings.appendSystemPrompt};if(this.settings.settingSources!==void 0)E.settingSources=this.settings.settingSources;else E.settingSources=[];if(this.settings.additionalDirectories!==void 0)E.additionalDirectories=this.settings.additionalDirectories;if(this.settings.agents!==void 0)E.agents=this.settings.agents;if(this.settings.skills!==void 0)E.skills=this.settings.skills;if(this.settings.settings!==void 0)E.settings=this.settings.settings;if(this.settings.managedSettings!==void 0)E.managedSettings=this.settings.managedSettings;if(this.settings.toolAliases!==void 0)E.toolAliases=this.settings.toolAliases;if(this.settings.toolConfig!==void 0)E.toolConfig=this.settings.toolConfig;if(this.settings.planModeInstructions!==void 0)E.planModeInstructions=this.settings.planModeInstructions;if(this.settings.title!==void 0)E.title=this.settings.title;if(this.settings.forwardSubagentText!==void 0)E.forwardSubagentText=this.settings.forwardSubagentText;if(this.settings.agentProgressSummaries!==void 0)E.agentProgressSummaries=this.settings.agentProgressSummaries;if(this.settings.includeHookEvents!==void 0)E.includeHookEvents=this.settings.includeHookEvents;if(this.settings.taskBudget!==void 0)E.taskBudget=this.settings.taskBudget;if(this.settings.sessionStore!==void 0)E.sessionStore=this.settings.sessionStore;if(this.settings.sessionStoreFlush!==void 0)E.sessionStoreFlush=this.settings.sessionStoreFlush;if(this.settings.loadTimeoutMs!==void 0)E.loadTimeoutMs=this.settings.loadTimeoutMs;if(this.settings.includePartialMessages!==void 0)E.includePartialMessages=this.settings.includePartialMessages;if(this.settings.fallbackModel!==void 0)E.fallbackModel=this.settings.fallbackModel;if(this.settings.forkSession!==void 0)E.forkSession=this.settings.forkSession;if(this.settings.strictMcpConfig!==void 0)E.strictMcpConfig=this.settings.strictMcpConfig;if(this.settings.extraArgs!==void 0)E.extraArgs=this.settings.extraArgs;if(this.settings.persistSession!==void 0)E.persistSession=this.settings.persistSession;if(this.settings.spawnClaudeCodeProcess!==void 0)E.spawnClaudeCodeProcess=this.settings.spawnClaudeCodeProcess;if(this.settings.hooks)E.hooks=this.settings.hooks;let $=l?.forkSession??this.settings.forkSession,w=l?.continue??this.settings.continue;if(this.settings.sessionId!==void 0&&!i.sessionIdConflictsWithResumeOrContinue({resumePresent:E.resume!==void 0,continue:w===!0,forkSession:$===!0}))E.sessionId=this.settings.sessionId;if(this.settings.debug!==void 0)E.debug=this.settings.debug;if(this.settings.debugFile!==void 0)E.debugFile=this.settings.debugFile;let d=l?l:void 0,_=d&&typeof d.env==="object"&&d.env!==null?d.env:void 0,v=d&&typeof d.stderr==="function"?d.stderr:void 0;if(d){let g={...d};delete g.env,delete g.stderr;for(let[O,Z]of Object.entries(g))if(Z!==void 0)E[O]=Z}if(this.applySessionResolution(E,c),typeof E.fallbackModel==="string"&&E.fallbackModel===E.model)throw Error(`fallbackModel cannot be the same as the model ('${String(E.model)}'). Specify a different model for fallbackModel, or remove it.`);let h=v??this.settings.stderr;if(f||h)E.stderr=(g)=>{if(f)f(g);if(h)h(g)};let D={...L84(),...this.settings.env,..._};if(!("CLAUDE_AGENT_SDK_CLIENT_APP"in D))D.CLAUDE_AGENT_SDK_CLIENT_APP=k84;if(E.env=D,t?.type==="json"&&t.schema){let{schema:g,strippedFormatPaths:O}=x84(t.schema);if(O.length>0)this.logger.debug(`[claude-code] Stripped unsupported 'format' keywords from outputFormat schema (hints folded into descriptions; client-side Zod validation still enforces them) at: ${O.join(", ")}`);E.outputFormat={type:"json_schema",schema:g}}return E}handleClaudeCodeError(u,t,f){if(Awu(u))throw u;if(u instanceof wt||u instanceof Vw)return u;let l=(O)=>{return typeof O==="object"&&O!==null&&"message"in O},c=(O)=>{return typeof O==="object"&&O!==null},E=["not logged in","authentication","unauthorized","auth failed","please login","claude login","claude auth login","/login","invalid api key","oauth_org_not_allowed"],$=l(u)&&u.message?u.message.toLowerCase():"",w=X84(u),d=c(u)&&typeof u.exitCode==="number"?u.exitCode:void 0;if(w==="authentication_failed"||w==="oauth_org_not_allowed"||E.some((O)=>$.includes(O))||d===401)return D84({message:l(u)&&u.message?u.message:"Authentication failed. Please ensure Claude Code SDK is properly authenticated."});let v=c(u)&&typeof u.code==="string"?u.code:"";if(v==="ETIMEDOUT"||$.includes("timeout"))return g84({message:l(u)&&u.message?u.message:"Request timed out",promptExcerpt:t.substring(0,200)});let D=(c(u)&&typeof u.stderr==="string"?u.stderr:void 0)||f||void 0;if(w==="overloaded"||w==="rate_limit"||$.includes("overloaded"))return po({message:l(u)&&u.message?u.message:"Anthropic API is overloaded. Please retry.",code:v||void 0,exitCode:d,stderr:D,promptExcerpt:t.substring(0,200),isRetryable:!0});if(w==="model_not_found"||$.includes("model_not_found")||$.includes("no such model")){let O=l(u)&&u.message?u.message:"Model not found";return po({message:`${O}. The requested model was not found. Verify the model id passed to the provider (e.g. 'opus', 'sonnet', 'haiku', or a full model name) and that your account has access to it.`,code:v||void 0,exitCode:d,stderr:D,promptExcerpt:t.substring(0,200),isRetryable:!1})}let g=v==="ENOENT"||v==="ECONNREFUSED"||v==="ETIMEDOUT"||v==="ECONNRESET";return po({message:l(u)&&u.message?u.message:"Claude Code SDK error",code:v||void 0,exitCode:d,stderr:D,promptExcerpt:t.substring(0,200),isRetryable:g})}setSessionId(u){this.sessionId=u;let t=y84(u);if(t)this.logger.warn(`Claude Code Session: ${t}`)}logMcpConnectionIssues(u){if(!Array.isArray(u)||u.length===0)return;let t=u.filter((l)=>{let c=typeof l.status==="string"?l.status.toLowerCase():"";return c==="failed"||c==="needs-auth"});if(t.length===0)return;let f=t.map((l)=>{let c=typeof l.name==="string"&&l.name.trim().length>0?l.name:"<unknown>",E=typeof l.status==="string"&&l.status.trim().length>0?l.status:"unknown",$=typeof l.error==="string"&&l.error.trim().length>0?` (${l.error})`:"";return`${c}:${E}${$}`}).join(", ");this.logger.warn(`[claude-code] MCP servers not connected: ${f}`)}handleSystemMessage(u,t,f){switch(u.subtype){case"api_retry":t.apiRetries+=1,this.logger.debug(`[claude-code] API retry ${u.attempt}/${u.max_retries} in ${u.retry_delay_ms}ms - Status: ${u.error_status??"unknown"}, Error: ${u.error}`);break;case"permission_denied":{let l=u.decision_reason??u.message;t.permissionDenials.push({toolName:u.tool_name,toolUseId:u.tool_use_id,...l!==void 0&&{reason:l}}),this.logger.warn(`[claude-code] Permission denied - Tool: ${u.tool_name}${l?`, Reason: ${l}`:""}`);break}case"mirror_error":{let l=u.error??"unknown error",c=u.key?.sessionId??u.session_id??"unknown";t.mirrorErrors.push({error:l,sessionId:c}),this.logger.warn(`[claude-code] SessionStore mirror error (transcript batch dropped) - Session: ${c}, Error: ${l}`);break}case"model_refusal_fallback":{this.logger.debug(`[claude-code] Model refusal fallback - ${u.original_model} -> ${u.fallback_model} (direction: ${u.direction})`);let l=u.retracted_message_uuids;if(f&&l&&l.length>0)this.logger.debug(`[claude-code] Refusal fallback retracts ${l.length} message uuid(s)`),f(l);break}case"thinking_tokens":t.estimatedThinkingTokens+=u.estimated_tokens_delta,this.logger.debug(`[claude-code] Thinking tokens estimate - block total: ${u.estimated_tokens}, delta: ${u.estimated_tokens_delta}, accumulated: ${t.estimatedThinkingTokens}`);break;default:if(H84.has(u.subtype))this.logger.debug(`[claude-code] Ignoring informational system message: ${u.subtype}`);else this.logger.debug(`[claude-code] Unhandled system message subtype: ${u.subtype}`);break}}mergeResultPermissionDenials(u,t){for(let f of u.permission_denials??[])if(!t.permissionDenials.some((c)=>c.toolUseId!==void 0&&c.toolUseId===f.tool_use_id))t.permissionDenials.push({toolName:f.tool_name,toolUseId:f.tool_use_id})}async drainPromptSuggestion(u,t){let f=u[Symbol.asyncIterator](),l,c=new Promise((E)=>{l=setTimeout(()=>E("timeout"),i.PROMPT_SUGGESTION_DRAIN_TIMEOUT_MS),l.unref?.()});try{while(!0){let E=await Promise.race([f.next(),c]);if(E==="timeout"){this.logger.debug("[claude-code] Post-result drain timed out; closing SDK iterator"),f.return?.().catch(()=>{});break}if(E.done)break;let $=E.value;if(this.logger.debug(`[claude-code] Post-result message type: ${$.type}`),$.type==="prompt_suggestion"){t($.suggestion),f.return?.().catch(()=>{});break}}}catch(E){this.logger.debug(`[claude-code] Error draining post-result messages: ${E instanceof Error?E.message:String(E)}`)}finally{if(l!==void 0)clearTimeout(l)}}async doGenerate(u){this.logger.debug(`[claude-code] Starting doGenerate request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${u.responseFormat?.type??"none"}`);let{messagesPrompt:t,warnings:f,streamingContentParts:l,hasImageParts:c}=ZV0(u.prompt);this.logger.debug(`[claude-code] Converted ${u.prompt.length} messages, hasImageParts: ${c}`);let E=new AbortController,$;if(u.abortSignal?.aborted)E.abort(u.abortSignal.reason);let w="",d=(Di)=>{w+=Di},_=this.getSanitizedSdkOptions(),v=this.getEffectiveResume(_),h=this.createQueryOptions(E,u.responseFormat,d,_,v);if(u.abortSignal&&!u.abortSignal.aborted)$=()=>E.abort(u.abortSignal?.reason),u.abortSignal.addEventListener("abort",$,{once:!0});let D="",g=[],O=()=>g.filter((Di)=>Di.kind==="text").map((Di)=>Di.text).join(""),Z=()=>{let Di=0;for(let $i=0;$i<g.length;$i++){let fi=g[$i]?.kind;if(fi==="tool-result"||fi==="tool-error")Di=$i+1}return g.slice(Di).filter(($i)=>$i.kind==="text").map(($i)=>$i.text).join("")},B=new Map,F=new Set,y=(Di)=>{if(Di.size===0)return;let $i=AV0(Di,g.filter((fi)=>fi.kind==="tool-call"||fi.kind==="tool-result"||fi.kind==="tool-error").map((fi)=>({toolCallId:fi.toolCallId,uuid:fi.uuid})));for(let fi of $i)F.add(fi),B.delete(fi),T.delete(fi);for(let fi=g.length-1;fi>=0;fi--){let ji=g[fi];if(ji===void 0)continue;let a="uuid"in ji?ji.uuid:void 0;if(a!==void 0&&Di.has(a)||(ji.kind==="tool-result"||ji.kind==="tool-error")&&$i.has(ji.toolCallId))g.splice(fi,1)}},T=new Map,U=()=>{if(T.size===1)return T.keys().next().value??null;return null},I,j=!1,A=kV0(),n={unified:"stop",raw:void 0},M=!1,S,Y,V,L,wi,Ei,li,ii,e={apiRetries:0,permissionDenials:[],mirrorErrors:[],estimatedThinkingTokens:0},Oi=this.generateAllWarnings(u,t);if(f)f.forEach((Di)=>{Oi.push({type:"other",message:Di})});let _i=this.settings.streamingInput??"auto",Ii=_?.canUseTool??this.settings.canUseTool,Vi=_?.permissionPromptToolName??this.settings.permissionPromptToolName,Wi=_i==="always"||_i==="auto"&&!!Ii;if(!Wi&&c)Oi.push({type:"other",message:IV0});let ri=()=>{},gi=new Promise((Di)=>{ri=()=>Di(void 0)});try{if(Ii&&Vi)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let Di=Wi?XV0(t,gi,v,l,this.settings.onStreamStart):t;this.logger.debug(`[claude-code] Executing query with streamingInput: ${Wi}, session: ${v??"new"}`);let $i=TV0({prompt:Di,options:h});this.settings.onQueryCreated?.($i);let fi,ji=$i[Symbol.asyncIterator](),a={[Symbol.asyncIterator]:()=>({next:()=>ji.next(),return:()=>{return ji.return?.().catch(()=>{}),Promise.resolve({done:!0,value:void 0})}})};for await(let ui of a)if(this.logger.debug(`[claude-code] Received message type: ${ui.type}`),ui.type==="assistant"){if(typeof ui.error==="string")fi=ui.error;GV0(ui,y,this.logger,"truthy");let ei=typeof ui.uuid==="string"?ui.uuid:void 0,Ai=ui.parent_tool_use_id,q=ui.message.content;if(Array.isArray(q))for(let m of q){if(!SV0(m))continue;if(m.type==="text"&&typeof m.text==="string"){if(m.text.length>0)g.push({kind:"text",...ei!==void 0&&{uuid:ei},text:m.text})}else if(m.type==="thinking"&&typeof m.thinking==="string")g.push({kind:"reasoning",...ei!==void 0&&{uuid:ei},text:m.thinking});else if(m.type==="tool_use"){let[Xi]=this.extractToolUses([m]);if(!Xi)continue;let Li=g$(Xi.name)?null:aK(Ai,Xi.parentToolUseId,U);if(this.logger.debug(`[claude-code] Tool use detected - Tool: ${Xi.name}, ID: ${Xi.id}, SDK parent: ${Ai}, resolved parent: ${Li}`),B.set(Xi.id,{name:Xi.name,parentToolCallId:Li}),g$(Xi.name))T.set(Xi.id,{startTime:Date.now()});g.push({kind:"tool-call",...ei!==void 0&&{uuid:ei},toolCallId:Xi.id,part:this.buildToolCallPart(Xi.id,Xi.name,this.serializeToolInput(Xi.input),Li)})}}D=O()}else if(ui.type==="user"){if(!ui.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${ui.type}. This may indicate an SDK protocol violation.`);continue}let ei=ui.parent_tool_use_id,Ai=typeof ui.uuid==="string"?ui.uuid:void 0,q=ui.message.content;for(let m of this.extractToolResults(q)){if(this.isRetractedToolFrame(m.id,F,"result"))continue;let Xi=B.get(m.id),Li=m.name??Xi?.name??i.UNKNOWN_TOOL_NAME;this.logger.debug(`[claude-code] Tool result received - Tool: ${Li}, ID: ${m.id}`);let oi;if(Xi)Xi.name=Li,oi=Xi.parentToolCallId;else this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${m.id}`),oi=g$(Li)?null:aK(ei,void 0,U),B.set(m.id,{name:Li,parentToolCallId:oi}),g.push({kind:"tool-call",toolCallId:m.id,part:this.buildToolCallPart(m.id,Li,"",oi)});if(g$(Li))T.delete(m.id);g.push({kind:"tool-result",...Ai!==void 0&&{uuid:Ai},toolCallId:m.id,part:this.buildToolResultPart(m.id,Li,m.result,m.isError,oi)})}for(let m of this.extractToolErrors(q)){if(this.isRetractedToolFrame(m.id,F,"error"))continue;let Xi=B.get(m.id),Li=m.name??Xi?.name??i.UNKNOWN_TOOL_NAME;this.logger.debug(`[claude-code] Tool error received - Tool: ${Li}, ID: ${m.id}`);let oi;if(Xi)Xi.name=Li,oi=Xi.parentToolCallId;else this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${m.id}`),oi=g$(Li)?null:aK(ei,void 0,U),B.set(m.id,{name:Li,parentToolCallId:oi}),g.push({kind:"tool-call",toolCallId:m.id,part:this.buildToolCallPart(m.id,Li,"",oi)});if(g$(Li))T.delete(m.id);g.push({kind:"tool-error",...Ai!==void 0&&{uuid:Ai},toolCallId:m.id,part:this.buildToolErrorResultPart(m.id,Li,m.error,oi)})}}else if(ui.type==="result"){if(ri(),j=!0,this.setSessionId(ui.session_id),S=ui.total_cost_usd,Y=ui.duration_ms,V=ui.modelUsage,"ttft_ms"in ui)L=ui.ttft_ms;if("ttft_stream_ms"in ui)wi=ui.ttft_stream_ms;if("time_to_request_ms"in ui)Ei=ui.time_to_request_ms;if("warm_spare_claimed"in ui)li=ui.warm_spare_claimed;if(ii=ui.terminal_reason,this.mergeResultPermissionDenials(ui,e),"is_error"in ui&&ui.is_error===!0){let q="result"in ui&&typeof ui.result==="string"?ui.result:void 0,m="errors"in ui&&Array.isArray(ui.errors)?ui.errors.filter((Li)=>typeof Li==="string").join("; "):"";throw Object.assign(Error(q??(m||"Claude Code CLI returned an error")),{exitCode:1,errorKind:fi})}if(ui.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if("structured_output"in ui&&ui.structured_output!==void 0)I=ui.structured_output,this.logger.debug("[claude-code] Received structured output from SDK");if(this.logger.info(`[claude-code] Request completed - Session: ${ui.session_id}, Cost: $${S?.toFixed(4)??"N/A"}, Duration: ${Y??"N/A"}ms`),"usage"in ui)A=jV0(ui.usage),this.logger.debug(`[claude-code] Token usage - Input: ${A.inputTokens.total}, Output: ${A.outputTokens.total}`);let ei="stop_reason"in ui?ui.stop_reason:void 0;n=BV0(ui.subtype,ei),this.logger.debug(`[claude-code] Finish reason: ${n.unified}`);let Ai=_?.promptSuggestions??this.settings.promptSuggestions;if(this.settings.onPromptSuggestion&&Ai!==!1)await this.drainPromptSuggestion($i,this.settings.onPromptSuggestion);break}else if(ui.type==="system"&&ui.subtype==="init")this.logMcpConnectionIssues(ui.mcp_servers),this.setSessionId(ui.session_id),this.logger.info(`[claude-code] Session initialized: ${ui.session_id}`);else if(ui.type==="system")this.handleSystemMessage(ui,e,nV0(y))}catch(Di){if(ri(),this.logger.debug(`[claude-code] Error during doGenerate: ${Di instanceof Error?Di.message:String(Di)}`),Awu(Di))throw this.logger.debug("[claude-code] Request aborted by user"),u.abortSignal?.aborted?u.abortSignal.reason:Di;if(PV0(Di,D))this.logger.warn(`[claude-code] Detected truncated response, returning ${D.length} characters of buffered text`),M=!0,n={unified:"length",raw:"truncation"},Oi.push({type:"other",message:UV0});else throw this.handleClaudeCodeError(Di,t,w)}finally{if(u.abortSignal&&$)u.abortSignal.removeEventListener("abort",$)}if(u.responseFormat?.type==="json"&&u.responseFormat.schema!==void 0&&j&&I===void 0&&!M&&n.unified==="stop"){let Di=Iwu(Z())??Iwu(O());if(Di!==void 0)this.logger.warn("[claude-code] outputFormat was requested but the CLI returned no structured_output; recovered JSON by parsing the prose response. The schema likely contains constructs the CLI cannot enforce - see the README structured-output limitations."),I=JSON.parse(Di);else throw po({message:xV0,promptExcerpt:t.substring(0,200),isRetryable:!1})}let Ki=g.filter((Di)=>Di.kind==="reasoning").map((Di)=>Di.text),Gi=[];for(let Di of g)if(Di.kind==="reasoning")Gi.push({type:"reasoning",text:Di.text});else if(Di.kind==="text"){if(I!==void 0)continue;let $i=Gi[Gi.length-1];if($i!==void 0&&$i.type==="text")$i.text+=Di.text;else Gi.push({type:"text",text:Di.text})}else Gi.push(Di.part);if(I!==void 0)Gi.push({type:"text",text:JSON.stringify(I)});else if(!Gi.some((Di)=>Di.type==="text"))Gi.push({type:"text",text:""});return{content:Gi,usage:A,finishReason:n,warnings:Oi,response:{id:qu(),timestamp:new Date,modelId:this.modelId},request:{body:t},providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},...S!==void 0&&{costUsd:S},...Y!==void 0&&{durationMs:Y},...V!==void 0&&{modelUsage:V},...L!==void 0&&{ttftMs:L},...wi!==void 0&&{ttftStreamMs:wi},...Ei!==void 0&&{timeToRequestMs:Ei},...li!==void 0&&{warmSpareClaimed:li},...ii!==void 0&&{terminalReason:ii},...e.apiRetries>0&&{apiRetries:e.apiRetries},...e.permissionDenials.length>0&&{permissionDenials:e.permissionDenials},...e.mirrorErrors.length>0&&{mirrorErrors:e.mirrorErrors},...e.estimatedThinkingTokens>0&&{estimatedThinkingTokens:e.estimatedThinkingTokens},...M&&{truncated:!0},...Ki.length>0&&{thinkingTraces:Ki}}}}}async doStream(u){this.logger.debug(`[claude-code] Starting doStream request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${u.responseFormat?.type??"none"}`);let{messagesPrompt:t,warnings:f,streamingContentParts:l,hasImageParts:c}=ZV0(u.prompt);this.logger.debug(`[claude-code] Converted ${u.prompt.length} messages for streaming, hasImageParts: ${c}`);let E=new AbortController,$;if(u.abortSignal?.aborted)E.abort(u.abortSignal.reason);let w="",d=(y)=>{w+=y},_=this.getSanitizedSdkOptions(),v=this.getEffectiveResume(_),h=this.createQueryOptions(E,u.responseFormat,d,_,v);if(u.abortSignal&&!u.abortSignal.aborted)$=()=>E.abort(u.abortSignal?.reason),u.abortSignal.addEventListener("abort",$,{once:!0});if(h.includePartialMessages===void 0)h.includePartialMessages=!0;let D=this.generateAllWarnings(u,t);if(f)f.forEach((y)=>{D.push({type:"other",message:y})});let g=this.settings.streamingInput??"auto",O=_?.canUseTool??this.settings.canUseTool,Z=_?.permissionPromptToolName??this.settings.permissionPromptToolName,B=g==="always"||g==="auto"&&!!O;if(!B&&c)D.push({type:"other",message:IV0});return{stream:new ReadableStream({start:async(y)=>{let T=()=>{},U=new Promise((fi)=>{T=()=>fi(void 0)}),I=new Map,j=new Set,A=new Map,n=()=>{if(A.size===1)return A.keys().next().value??null;return null},M=[],S=(fi,ji)=>{if(!ji.inputClosed&&ji.inputStarted)y.enqueue({type:"tool-input-end",id:fi}),ji.inputClosed=!0},Y=(fi,ji)=>{if(ji.callEmitted)return;S(fi,ji),y.enqueue(this.buildToolCallPart(fi,ji.name,ji.lastSerializedInput??"",ji.parentToolCallId)),ji.callEmitted=!0},V=()=>{for(let[fi,ji]of I)Y(fi,ji);I.clear()},L=kV0(),wi="",Ei=[],li,ii=0,e="",Oi=!1,_i=!1,Ii,Vi={apiRetries:0,permissionDenials:[],mirrorErrors:[],estimatedThinkingTokens:0},Wi=new Map,ri=new Map,gi=new Map,Ki=!1,Gi=new Map,Di,$i=(fi)=>{if(fi.size===0)return;for(let a=Ei.length-1;a>=0;a--){let ui=Ei[a]?.uuid;if(ui!==void 0&&fi.has(ui))Ei.splice(a,1)}wi=Ei.map((a)=>a.text).join("");let ji=AV0(fi,[...I].map(([a,ui])=>({toolCallId:a,uuid:ui.messageUuid})));for(let a of ji){let ui=I.get(a);if(!ui)continue;if(A.delete(a),!ui.callEmitted){S(a,ui),I.delete(a),j.add(a),ri.delete(a);for(let[ei,Ai]of Wi)if(Ai===a)Wi.delete(ei);this.logger.debug(`[claude-code] Retracted pending tool call from superseded message - ID: ${a}`)}}};try{if(y.enqueue({type:"stream-start",warnings:D}),O&&Z)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let fi=B?XV0(t,U,v,l,this.settings.onStreamStart):t;this.logger.debug(`[claude-code] Starting stream query with streamingInput: ${B}, session: ${v??"new"}`);let ji=TV0({prompt:fi,options:h});this.settings.onQueryCreated?.(ji);for await(let a of ji){if(this.logger.debug(`[claude-code] Stream received message type: ${a.type}`),a.type==="stream_event"){let ei=a.event;if(ei.type==="content_block_delta"&&ei.delta.type==="text_delta"&&"text"in ei.delta&&ei.delta.text){let Ai=ei.delta.text;if(Oi=!0,u.responseFormat?.type==="json"){wi+=Ai,ii+=Ai.length;continue}if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Ai}),wi+=Ai,ii+=Ai.length,e+=Ai}if(ei.type==="content_block_delta"&&ei.delta.type==="input_json_delta"&&"partial_json"in ei.delta&&ei.delta.partial_json){let Ai=ei.delta.partial_json;Oi=!0;let q="index"in ei?ei.index:-1;if(u.responseFormat?.type==="json"){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Ai}),wi+=Ai,ii+=Ai.length,_i=!0;continue}let m=Wi.get(q);if(m){let Xi=(ri.get(m)??"")+Ai;ri.set(m,Xi),y.enqueue({type:"tool-input-delta",id:m,delta:Ai});continue}}if(ei.type==="content_block_start"&&"content_block"in ei&&ei.content_block?.type==="tool_use"){let Ai="index"in ei?ei.index:-1,q=ei.content_block,m=typeof q.id==="string"&&q.id.length>0?q.id:qu(),Xi=typeof q.name==="string"&&q.name.length>0?q.name:i.UNKNOWN_TOOL_NAME;if(Oi=!0,li){let oi=li;y.enqueue({type:"text-end",id:oi}),li=void 0;for(let[iu,Qu]of gi)if(Qu===oi){gi.delete(iu);break}}Wi.set(Ai,m),ri.set(m,"");let Li=I.get(m);if(!Li){let oi=a.parent_tool_use_id,iu=g$(Xi)?null:aK(oi,void 0,n),Qu=a.uuid;Li={name:Xi,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:iu,...typeof Qu==="string"&&{messageUuid:Qu}},I.set(m,Li)}if(!Li.inputStarted){if(this.logger.debug(`[claude-code] Tool input started (content_block) - Tool: ${Xi}, ID: ${m}, parent: ${Li.parentToolCallId}`),y.enqueue({type:"tool-input-start",id:m,toolName:Xi,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:Li.parentToolCallId??null}}}),g$(Xi))A.set(m,{startTime:Date.now()});Li.inputStarted=!0}continue}if(ei.type==="content_block_start"&&"content_block"in ei&&ei.content_block?.type==="text"){let Ai="index"in ei?ei.index:-1;Oi=!0;let q=qu();gi.set(Ai,q),li=q,this.logger.debug(`[claude-code] Text content block started - Index: ${Ai}, ID: ${q}`),y.enqueue({type:"text-start",id:q}),Ki=!0;continue}if(ei.type==="content_block_start"&&"content_block"in ei&&ei.content_block?.type==="thinking"){let Ai="index"in ei?ei.index:-1;if(Oi=!0,li){let m=li;y.enqueue({type:"text-end",id:m}),li=void 0;for(let[Xi,Li]of gi)if(Li===m){gi.delete(Xi);break}}let q=qu();Gi.set(Ai,q),Di=q,this.logger.debug(`[claude-code] Reasoning started (content_block) - ID: ${q}`),y.enqueue({type:"reasoning-start",id:q});continue}if(ei.type==="content_block_delta"&&ei.delta.type==="thinking_delta"&&"thinking"in ei.delta&&ei.delta.thinking){let Ai="index"in ei?ei.index:-1,q=Gi.get(Ai)??Di;if(Oi=!0,q)y.enqueue({type:"reasoning-delta",id:q,delta:ei.delta.thinking});continue}if(ei.type==="content_block_stop"){let Ai="index"in ei?ei.index:-1;Oi=!0;let q=Wi.get(Ai);if(q){let Li=I.get(q);if(Li&&!Li.inputClosed){let oi=ri.get(q)??"";this.logger.debug(`[claude-code] Tool content block stopped - Index: ${Ai}, Tool: ${Li.name}, ID: ${q}`),y.enqueue({type:"tool-input-end",id:q}),Li.inputClosed=!0;let iu=oi||Li.lastSerializedInput||"";if(Li.lastSerializedInput=iu,!Li.callEmitted)y.enqueue(this.buildToolCallPart(q,Li.name,iu,Li.parentToolCallId)),Li.callEmitted=!0}Wi.delete(Ai),ri.delete(q);continue}let m=gi.get(Ai);if(m){if(this.logger.debug(`[claude-code] Text content block stopped - Index: ${Ai}, ID: ${m}`),y.enqueue({type:"text-end",id:m}),gi.delete(Ai),li===m)li=void 0;continue}let Xi=Gi.get(Ai);if(Xi){if(this.logger.debug(`[claude-code] Reasoning ended (content_block) - ID: ${Xi}`),y.enqueue({type:"reasoning-end",id:Xi}),Gi.delete(Ai),Di===Xi)Di=void 0;continue}}continue}if(a.type==="assistant"){if(typeof a.error==="string")Ii=a.error;let ui=GV0(a,$i,this.logger);if(!a.message?.content){this.logger.warn(`[claude-code] Unexpected assistant message structure: missing content field. Message type: ${a.type}. This may indicate an SDK protocol violation.`);continue}let ei=a.parent_tool_use_id,Ai=a.message.content,q=this.extractToolUses(Ai);if(li&&q.length>0){let Xi=li;y.enqueue({type:"text-end",id:Xi}),li=void 0;for(let[Li,oi]of gi)if(oi===Xi){gi.delete(Li);break}}for(let Xi of q){let Li=Xi.id,oi=I.get(Li);if(!oi){let Qu=g$(Xi.name)?null:aK(ei,Xi.parentToolUseId,n);oi={name:Xi.name,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:Qu,...typeof a.uuid==="string"&&{messageUuid:a.uuid}},I.set(Li,oi),this.logger.debug(`[claude-code] New tool use detected - Tool: ${Xi.name}, ID: ${Li}, SDK parent: ${ei}, resolved parent: ${Qu}`)}else if(!oi.parentToolCallId&&ei&&!g$(Xi.name))oi.parentToolCallId=ei,this.logger.debug(`[claude-code] Retroactive parent context - Tool: ${Xi.name}, ID: ${Li}, parent: ${ei}`);if(oi.name=Xi.name,!oi.inputStarted){if(this.logger.debug(`[claude-code] Tool input started - Tool: ${Xi.name}, ID: ${Li}`),y.enqueue({type:"tool-input-start",id:Li,toolName:Xi.name,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:oi.parentToolCallId??null}}}),g$(Xi.name))A.set(Li,{startTime:Date.now()});oi.inputStarted=!0}let iu=this.serializeToolInput(Xi.input);if(iu){let Qu="";if(oi.lastSerializedInput===void 0){if(iu.length<=i.MAX_DELTA_CALC_SIZE)Qu=iu}else if(iu.length<=i.MAX_DELTA_CALC_SIZE&&oi.lastSerializedInput.length<=i.MAX_DELTA_CALC_SIZE&&iu.startsWith(oi.lastSerializedInput))Qu=iu.slice(oi.lastSerializedInput.length);else if(iu!==oi.lastSerializedInput)Qu="";if(Qu)y.enqueue({type:"tool-input-delta",id:Li,delta:Qu});oi.lastSerializedInput=iu}}let m=Ai.map((Xi)=>Xi.type==="text"?Xi.text:"").join("");if(m){if(ui){if(Ei.push({...typeof a.uuid==="string"&&{uuid:a.uuid},text:m}),wi=Ei.map((Xi)=>Xi.text).join(""),e===m)ii=Math.max(ii,m.length),this.logger.debug("[claude-code] Skipping text emission for superseding assistant message (replacement already streamed)");else if(e.length>0&&m.startsWith(e)){if(u.responseFormat?.type!=="json"){let Xi=m.slice(e.length);if(Xi){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Xi}),e=m}}ii=Math.max(ii,m.length),this.logger.debug("[claude-code] Emitted unstreamed suffix of superseding assistant message")}else if(u.responseFormat?.type!=="json"){if(li){let Xi=li;y.enqueue({type:"text-end",id:Xi}),li=void 0;for(let[Li,oi]of gi)if(oi===Xi){gi.delete(Li);break}}li=qu(),y.enqueue({type:"text-start",id:li}),y.enqueue({type:"text-delta",id:li,delta:m}),ii=Math.max(ii,m.length),this.logger.debug("[claude-code] Emitted superseding assistant message as a new text part (canonical replacement)")}}else if(Oi){let Xi=ii,Li=m.length>Xi?m.slice(Xi):"";if(wi=m,Ei.length=0,Ei.push({...typeof a.uuid==="string"&&{uuid:a.uuid},text:m}),u.responseFormat?.type!=="json"&&Li){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Li})}ii=m.length}else if(wi+=m,Ei.push({...typeof a.uuid==="string"&&{uuid:a.uuid},text:m}),u.responseFormat?.type!=="json"){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:m})}}e=""}else if(a.type==="user"){if(!a.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${a.type}. This may indicate an SDK protocol violation.`);continue}if(li){let Ai=li;y.enqueue({type:"text-end",id:Ai}),li=void 0;for(let[q,m]of gi)if(m===Ai){gi.delete(q);break}this.logger.debug("[claude-code] Closed text part due to user message")}wi="",Ei.length=0,ii=0,e="";let ui=a.parent_tool_use_id,ei=a.message.content;for(let Ai of this.extractToolResults(ei)){if(this.isRetractedToolFrame(Ai.id,j,"result"))continue;let q=I.get(Ai.id),m=Ai.name??q?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool result received - Tool: ${m}, ID: ${Ai.id}`),!q){this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${Ai.id}`);let Xi=g$(m)?null:aK(ui,void 0,n);if(q={name:m,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:Xi},I.set(Ai.id,q),!q.inputStarted)y.enqueue({type:"tool-input-start",id:Ai.id,toolName:m,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:q.parentToolCallId??null}}}),q.inputStarted=!0;if(!q.inputClosed)y.enqueue({type:"tool-input-end",id:Ai.id}),q.inputClosed=!0}if(q.name=m,Y(Ai.id,q),g$(m))A.delete(Ai.id);y.enqueue(this.buildToolResultPart(Ai.id,m,Ai.result,Ai.isError,q.parentToolCallId))}for(let Ai of this.extractToolErrors(ei)){if(this.isRetractedToolFrame(Ai.id,j,"error"))continue;let q=I.get(Ai.id),m=Ai.name??q?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool error received - Tool: ${m}, ID: ${Ai.id}`),!q){this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${Ai.id}`);let Xi=g$(m)?null:aK(ui,void 0,n);q={name:m,inputStarted:!0,inputClosed:!0,callEmitted:!1,parentToolCallId:Xi},I.set(Ai.id,q)}if(Y(Ai.id,q),g$(m))A.delete(Ai.id);y.enqueue(this.buildToolErrorPart(Ai.id,m,Ai.error,q.parentToolCallId))}}else if(a.type==="result"){if(T(),this.mergeResultPermissionDenials(a,Vi),"is_error"in a&&a.is_error===!0){let Li="result"in a&&typeof a.result==="string"?a.result:void 0,oi="errors"in a&&Array.isArray(a.errors)?a.errors.filter((Qu)=>typeof Qu==="string").join("; "):"";throw Object.assign(Error(Li??(oi||"Claude Code CLI returned an error")),{exitCode:1,errorKind:Ii})}if(a.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if(this.logger.info(`[claude-code] Stream completed - Session: ${a.session_id}, Cost: $${a.total_cost_usd?.toFixed(4)??"N/A"}, Duration: ${a.duration_ms??"N/A"}ms`),"usage"in a)L=jV0(a.usage),this.logger.debug(`[claude-code] Stream token usage - Input: ${L.inputTokens.total}, Output: ${L.outputTokens.total}`);let ui="stop_reason"in a?a.stop_reason:void 0,ei=BV0(a.subtype,ui);this.logger.debug(`[claude-code] Stream finish reason: ${ei.unified}`),this.setSessionId(a.session_id);let Ai="structured_output"in a?a.structured_output:void 0;if(_i&&u.responseFormat?.type==="json"&&Oi){if(li)y.enqueue({type:"text-end",id:li})}else if(Ai!==void 0){let Li=qu(),oi=JSON.stringify(Ai);y.enqueue({type:"text-start",id:Li}),y.enqueue({type:"text-delta",id:Li,delta:oi}),y.enqueue({type:"text-end",id:Li})}else if(u.responseFormat?.type==="json"&&u.responseFormat.schema!==void 0&&ei.unified==="stop"){let Li=Iwu(wi);if(Li===void 0)throw po({message:xV0,promptExcerpt:t.substring(0,200),isRetryable:!1});if(this.logger.warn("[claude-code] outputFormat was requested but the CLI returned no structured_output; recovered JSON by parsing the prose response. The schema likely contains constructs the CLI cannot enforce - see the README structured-output limitations."),li)y.enqueue({type:"text-end",id:li});let oi=qu();y.enqueue({type:"text-start",id:oi}),y.enqueue({type:"text-delta",id:oi,delta:Li}),y.enqueue({type:"text-end",id:oi})}else if(li)y.enqueue({type:"text-end",id:li});else if(wi&&!Ki){let Li=qu();y.enqueue({type:"text-start",id:Li}),y.enqueue({type:"text-delta",id:Li,delta:wi}),y.enqueue({type:"text-end",id:Li})}V();let m=this.serializeWarningsForMetadata(M);y.enqueue({type:"finish",finishReason:ei,usage:L,providerMetadata:{"claude-code":{sessionId:a.session_id,...a.total_cost_usd!==void 0&&{costUsd:a.total_cost_usd},...a.duration_ms!==void 0&&{durationMs:a.duration_ms},...a.modelUsage!==void 0&&{modelUsage:a.modelUsage},..."ttft_ms"in a&&a.ttft_ms!==void 0&&{ttftMs:a.ttft_ms},..."ttft_stream_ms"in a&&a.ttft_stream_ms!==void 0&&{ttftStreamMs:a.ttft_stream_ms},..."time_to_request_ms"in a&&a.time_to_request_ms!==void 0&&{timeToRequestMs:a.time_to_request_ms},..."warm_spare_claimed"in a&&a.warm_spare_claimed!==void 0&&{warmSpareClaimed:a.warm_spare_claimed},...a.terminal_reason!==void 0&&{terminalReason:a.terminal_reason},...Vi.apiRetries>0&&{apiRetries:Vi.apiRetries},...Vi.permissionDenials.length>0&&{permissionDenials:Vi.permissionDenials},...Vi.mirrorErrors.length>0&&{mirrorErrors:Vi.mirrorErrors},...Vi.estimatedThinkingTokens>0&&{estimatedThinkingTokens:Vi.estimatedThinkingTokens},...M.length>0&&{warnings:m}}}}),y.close();let Xi=_?.promptSuggestions??this.settings.promptSuggestions;if(this.settings.onPromptSuggestion&&Xi!==!1)await this.drainPromptSuggestion(ji,this.settings.onPromptSuggestion);return}else if(a.type==="system"&&a.subtype==="init")this.logMcpConnectionIssues(a.mcp_servers),this.setSessionId(a.session_id),this.logger.info(`[claude-code] Stream session initialized: ${a.session_id}`),y.enqueue({type:"response-metadata",id:a.session_id,timestamp:new Date,modelId:this.modelId});else if(a.type==="system")this.handleSystemMessage(a,Vi,nV0($i));else if(a.type==="prompt_suggestion")this.logger.debug("[claude-code] Received prompt suggestion"),this.settings.onPromptSuggestion?.(a.suggestion)}V(),this.logger.debug("[claude-code] Stream finalized, closing stream"),y.close()}catch(fi){if(T(),this.logger.debug(`[claude-code] Error during doStream: ${fi instanceof Error?fi.message:String(fi)}`),PV0(fi,wi)){this.logger.warn(`[claude-code] Detected truncated stream response, returning ${wi.length} characters of buffered text`);let a={type:"other",message:UV0};if(M.push(a),li)y.enqueue({type:"text-end",id:li});else if(wi&&!Ki){let ei=qu();y.enqueue({type:"text-start",id:ei}),y.enqueue({type:"text-delta",id:ei,delta:wi}),y.enqueue({type:"text-end",id:ei})}V();let ui=this.serializeWarningsForMetadata(M);y.enqueue({type:"finish",finishReason:{unified:"length",raw:"truncation"},usage:L,providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},truncated:!0,...Vi.apiRetries>0&&{apiRetries:Vi.apiRetries},...Vi.permissionDenials.length>0&&{permissionDenials:Vi.permissionDenials},...Vi.mirrorErrors.length>0&&{mirrorErrors:Vi.mirrorErrors},...Vi.estimatedThinkingTokens>0&&{estimatedThinkingTokens:Vi.estimatedThinkingTokens},...M.length>0&&{warnings:ui}}}}),y.close();return}V();let ji;if(Awu(fi))ji=u.abortSignal?.aborted?u.abortSignal.reason:fi;else ji=this.handleClaudeCodeError(fi,t,w);y.enqueue({type:"error",error:ji}),y.close()}finally{if(u.abortSignal&&$)u.abortSignal.removeEventListener("abort",$)}},cancel:()=>{if(u.abortSignal&&$)u.abortSignal.removeEventListener("abort",$)}}),request:{body:t}}}serializeWarningsForMetadata(u){return u.map((f)=>{let l={type:f.type};if("message"in f){let c=f.message;if(c!==void 0)l.message=String(c)}if(f.type==="unsupported"||f.type==="compatibility"){let c=f.feature;if(c!==void 0)l.feature=String(c);if("details"in f){let E=f.details;if(E!==void 0)l.details=String(E)}}return l})}},IF6;var YV0=N(()=>{ru();ru();tu();ru();O84=Ri.object({debug:Ri.any().refine((i)=>typeof i==="function",{message:"debug must be a function"}),info:Ri.any().refine((i)=>typeof i==="function",{message:"info must be a function"}),warn:Ri.any().refine((i)=>typeof i==="function",{message:"warn must be a function"}),error:Ri.any().refine((i)=>typeof i==="function",{message:"error must be a function"})}),Z84=Ri.object({pathToClaudeCodeExecutable:Ri.string().optional(),customSystemPrompt:Ri.string().optional(),appendSystemPrompt:Ri.string().optional(),systemPrompt:Ri.union([Ri.string(),Ri.array(Ri.string()),Ri.object({type:Ri.literal("preset"),preset:Ri.literal("claude_code"),append:Ri.string().optional(),excludeDynamicSections:Ri.boolean().optional()})]).optional(),maxTurns:Ri.number().int().min(1).max(100).optional(),maxThinkingTokens:Ri.number().int().positive().max(1e5).optional(),thinking:Ri.union([Ri.object({type:Ri.literal("adaptive"),display:Ri.enum(["summarized","omitted"]).optional()}).strict(),Ri.object({type:Ri.literal("enabled"),budgetTokens:Ri.number().int().positive().optional(),display:Ri.enum(["summarized","omitted"]).optional()}).strict(),Ri.object({type:Ri.literal("disabled")}).strict()]).optional(),effort:Ri.enum(["low","medium","high","xhigh","max"]).optional(),promptSuggestions:Ri.boolean().optional(),cwd:Ri.string().refine((i)=>{if(typeof process>"u"||!process.versions?.node)return!0;return!i||N84(i)},{message:"Working directory must exist"}).optional(),executable:Ri.enum(["bun","deno","node"]).optional(),executableArgs:Ri.array(Ri.string()).optional(),permissionMode:Ri.enum(["default","acceptEdits","bypassPermissions","plan","dontAsk","auto"]).optional(),permissionPromptToolName:Ri.string().optional(),continue:Ri.boolean().optional(),resume:Ri.string().optional(),sessionId:Ri.string().refine((i)=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(i),{message:"sessionId must be a valid UUID (the CLI rejects non-UUID session IDs)"}).optional(),allowedTools:Ri.array(Ri.string()).optional(),disallowedTools:Ri.array(Ri.string()).optional(),betas:Ri.array(Ri.string()).optional(),allowDangerouslySkipPermissions:Ri.boolean().optional(),enableFileCheckpointing:Ri.boolean().optional(),maxBudgetUsd:Ri.number().min(0).optional(),plugins:Ri.array(Ri.object({type:Ri.literal("local"),path:Ri.string()}).passthrough()).optional(),resumeSessionAt:Ri.string().optional(),sandbox:Ri.any().refine((i)=>i===void 0||typeof i==="object",{message:"sandbox must be an object"}).optional(),tools:Ri.union([Ri.array(Ri.string()),Ri.object({type:Ri.literal("preset"),preset:Ri.literal("claude_code")})]).optional(),skills:Ri.union([Ri.array(Ri.string()),Ri.literal("all")]).optional(),settings:Ri.union([Ri.string(),Ri.record(Ri.string(),Ri.any())]).optional(),managedSettings:Ri.record(Ri.string(),Ri.any()).optional(),toolAliases:Ri.record(Ri.string(),Ri.string()).optional(),toolConfig:Ri.object({askUserQuestion:Ri.object({previewFormat:Ri.enum(["markdown","html"]).optional()}).passthrough().optional()}).passthrough().optional(),planModeInstructions:Ri.string().optional(),title:Ri.string().optional(),forwardSubagentText:Ri.boolean().optional(),agentProgressSummaries:Ri.boolean().optional(),includeHookEvents:Ri.boolean().optional(),taskBudget:Ri.object({total:Ri.number().positive()}).strict().optional(),sessionStore:Ri.any().refine((i)=>i===void 0||typeof i==="object"&&i!==null&&typeof i.append==="function"&&typeof i.load==="function",{message:"sessionStore must be an object with append() and load() functions"}).optional(),sessionStoreFlush:Ri.enum(["batched","eager"]).optional(),loadTimeoutMs:Ri.number().int().positive().optional(),settingSources:Ri.array(Ri.enum(["user","project","local"])).optional(),streamingInput:Ri.enum(["auto","always","off"]).optional(),canUseTool:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"canUseTool must be a function"}).optional(),onUserDialog:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onUserDialog must be a function"}).optional(),supportedDialogKinds:Ri.array(Ri.string()).optional(),hooks:Ri.record(Ri.string(),Ri.array(Ri.object({matcher:Ri.string().optional(),hooks:Ri.array(Ri.any()).nonempty()}))).optional(),mcpServers:Ri.record(Ri.string(),Ri.union([Ri.object({type:Ri.literal("stdio").optional(),command:Ri.string(),args:Ri.array(Ri.string()).optional(),env:Ri.record(Ri.string(),Ri.string()).optional()}),Ri.object({type:Ri.literal("sse"),url:Ri.string(),headers:Ri.record(Ri.string(),Ri.string()).optional()}),Ri.object({type:Ri.literal("http"),url:Ri.string(),headers:Ri.record(Ri.string(),Ri.string()).optional()}),Ri.object({type:Ri.literal("sdk"),name:Ri.string(),instance:Ri.any()})])).optional(),verbose:Ri.boolean().optional(),debug:Ri.boolean().optional(),debugFile:Ri.string().optional(),logger:Ri.union([Ri.literal(!1),O84]).optional(),env:Ri.record(Ri.string(),Ri.string().optional()).optional(),additionalDirectories:Ri.array(Ri.string()).optional(),agents:Ri.record(Ri.string(),Ri.object({description:Ri.string(),tools:Ri.array(Ri.string()).optional(),disallowedTools:Ri.array(Ri.string()).optional(),prompt:Ri.string(),model:Ri.string().optional(),mcpServers:Ri.array(Ri.union([Ri.string(),Ri.record(Ri.string(),Ri.any())])).optional(),criticalSystemReminder_EXPERIMENTAL:Ri.string().optional()}).passthrough()).optional(),includePartialMessages:Ri.boolean().optional(),fallbackModel:Ri.string().optional(),forkSession:Ri.boolean().optional(),stderr:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"stderr must be a function"}).optional(),strictMcpConfig:Ri.boolean().optional(),extraArgs:Ri.record(Ri.string(),Ri.union([Ri.string(),Ri.null()])).optional(),persistSession:Ri.boolean().optional(),spawnClaudeCodeProcess:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"spawnClaudeCodeProcess must be a function"}).optional(),sdkOptions:Ri.record(Ri.string(),Ri.any()).optional(),maxToolResultSize:Ri.number().int().min(100).max(1e6).optional(),onQueryCreated:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onQueryCreated must be a function"}).optional(),onStreamStart:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onStreamStart must be a function"}).optional(),onPromptSuggestion:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onPromptSuggestion must be a function"}).optional()}).strict();T84=["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"],U84=["items","additionalItems","additionalProperties","unevaluatedItems","unevaluatedProperties","not","contains","propertyNames","contentSchema","if","then","else"],P84=["prefixItems","anyOf","oneOf","allOf"];I84={debug:(i)=>console.debug(`[DEBUG] ${i}`),info:(i)=>console.info(`[INFO] ${i}`),warn:(i)=>console.warn(`[WARN] ${i}`),error:(i)=>console.error(`[ERROR] ${i}`)},A84={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};k84=`ai-sdk-provider-claude-code/${n84}`;K84=process.platform==="win32"?["APPDATA","COMSPEC","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PATHEXT","SYSTEMDRIVE","SYSTEMROOT","TEMP","TMP","USERNAME","USERPROFILE","WINDIR"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER","LANG","LC_ALL","TMPDIR"],J84=["CLAUDE_CONFIG_DIR"],S84=["HTTP_PROXY","HTTPS_PROXY","NO_PROXY","http_proxy","https_proxy","no_proxy","NODE_EXTRA_CA_CERTS","SSL_CERT_FILE","SSL_CERT_DIR"],Y84=["GCLOUD_PROJECT","CLOUD_ML_REGION"],W84=["ANTHROPIC_","CLAUDE_","AWS_","GOOGLE_"];z84=new Set(["model","abortController","prompt","outputFormat"]),Q84=new Set(["Task","Agent"]);H84=new Set(["notification","status","task_updated","session_state_changed","commands_changed","memory_recall","plugin_install"]);R84={opus:"opus",sonnet:"sonnet",haiku:"haiku"};IF6=jwu()});function Xwu(i,u){let t=["AskUserQuestion","ExitPlanMode","EnterWorktree","ExitWorktree","Config"],f={mcpServers:u?.mcpServers,cwd:u?.cwd??process.cwd(),settingSources:["user","project","local"]},l=mQi();if(l)f.pathToClaudeCodeExecutable=l;if(u?.isPlanMode||u?.toolApprovalLevel==="readonly")f.permissionMode="bypassPermissions",f.disallowedTools=[...t,"Write","Edit","Bash","NotebookEdit"];else f.permissionMode="bypassPermissions",f.disallowedTools=[...t];if(u?.resume)f.resume=u.resume;if(u?.systemPrompt)f.systemPrompt=u.systemPrompt;return jwu({defaultSettings:f})(i)}function Kwu(i){return q84[i]??i}var q84;var WV0=N(()=>{YV0();eQi();q84={"claude-code:opus":"opus","claude-code:opus-1m":"opus[1m]","claude-code:sonnet":"sonnet","claude-code:haiku":"haiku","claude-code:fable":"claude-fable-5"}});function mUi(i){return i??void 0}var rUi="/repo";function eUi(i){return GB(i,{ignoreIncompleteToolCalls:!0})}function aUi(i){for(let u=i.length-1;u>=0;u--){let t=i[u];if(!t||t.role!=="user")continue;if(typeof t.content==="string")return t.content;if(Array.isArray(t.content))return t.content.filter((l)=>typeof l==="object"&&l!==null&&l.type==="text").map((l)=>l.text).join(`
|
|
84025
|
+
`);try{return JSON.parse(f)}catch{return f}}return u}buildToolCallPart(u,t,f,l){return{type:"tool-call",toolCallId:u,toolName:t,input:f,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:f,parentToolCallId:l??null}}}}buildToolResultPart(u,t,f,l,c){let E=this.normalizeToolResult(f),$=typeof f==="string"?f:f===void 0?"":(()=>{try{return JSON.stringify(f)??String(f)}catch{return String(f)}})(),w=this.settings.maxToolResultSize,d=KV0(E,w),_=KV0($,w);return{type:"tool-result",toolCallId:u,toolName:t,result:d??"",isError:l,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawResult:_,rawResultTruncated:_!==$,parentToolCallId:c??null}}}}serializeToolError(u){return typeof u==="string"?u:typeof u==="object"&&u!==null?(()=>{try{return JSON.stringify(u)??String(u)}catch{return String(u)}})():String(u)}buildToolErrorPart(u,t,f,l){let c=this.serializeToolError(f);return{type:"tool-error",toolCallId:u,toolName:t,error:c,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:c,parentToolCallId:l??null}}}}buildToolErrorResultPart(u,t,f,l){let c=this.serializeToolError(f);return{type:"tool-result",toolCallId:u,toolName:t,result:c,isError:!0,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:c,parentToolCallId:l??null}}}}isRetractedToolFrame(u,t,f){if(!t.has(u))return!1;return this.logger.debug(`[claude-code] Dropping tool ${f} for retracted (superseded) tool ID: ${u}`),!0}generateAllWarnings(u,t){let f=[],l=[];if(u.temperature!==void 0)l.push("temperature");if(u.topP!==void 0)l.push("topP");if(u.topK!==void 0)l.push("topK");if(u.presencePenalty!==void 0)l.push("presencePenalty");if(u.frequencyPenalty!==void 0)l.push("frequencyPenalty");if(u.stopSequences!==void 0&&u.stopSequences.length>0)l.push("stopSequences");if(u.seed!==void 0)l.push("seed");if(l.length>0)for(let E of l)f.push({type:"unsupported",feature:E,details:`Claude Code SDK does not support the ${E} parameter. It will be ignored.`});if(u.tools!==void 0&&u.tools.length>0)f.push({type:"unsupported",feature:"tools",details:"The Claude Code CLI executes its own tools; AI SDK tools cannot be auto-bridged at the provider layer and will be ignored. To expose custom tools to the CLI, build an in-process MCP server with the createAiSdkMcpServer helper (exported by this package) and pass it via the mcpServers setting (plus allowedTools)."});if(u.toolChoice!==void 0&&u.toolChoice.type!=="auto")f.push({type:"unsupported",feature:"toolChoice",details:`Claude Code CLI does not support toolChoice '${u.toolChoice.type}'. Only automatic tool selection is available; the toolChoice parameter will be ignored.`});if(u.maxOutputTokens!==void 0)f.push({type:"unsupported",feature:"maxOutputTokens",details:"Claude Code CLI does not accept an output token cap. The maxOutputTokens parameter will be ignored."});if(this.modelValidationWarning)f.push({type:"other",message:this.modelValidationWarning});if(this.settingsValidationWarnings.forEach((E)=>{f.push({type:"other",message:E})}),u.responseFormat?.type==="json"&&!u.responseFormat.schema)f.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema for the Claude Code provider. The JSON responseFormat is ignored and the call is treated as plain text."});let c=F84(t);if(c)f.push({type:"other",message:c});return f}createQueryOptions(u,t,f,l,c){let E={model:this.getModel(),abortController:u,resume:c,pathToClaudeCodeExecutable:this.settings.pathToClaudeCodeExecutable,maxTurns:this.settings.maxTurns,maxThinkingTokens:this.settings.maxThinkingTokens,thinking:this.settings.thinking,effort:this.settings.effort,promptSuggestions:this.settings.promptSuggestions,cwd:this.settings.cwd,executable:this.settings.executable,executableArgs:this.settings.executableArgs,permissionMode:this.settings.permissionMode,permissionPromptToolName:this.settings.permissionPromptToolName,continue:this.settings.continue,allowedTools:this.settings.allowedTools,disallowedTools:this.settings.disallowedTools,betas:this.settings.betas,allowDangerouslySkipPermissions:this.settings.allowDangerouslySkipPermissions,enableFileCheckpointing:this.settings.enableFileCheckpointing,maxBudgetUsd:this.settings.maxBudgetUsd,plugins:this.settings.plugins,resumeSessionAt:this.settings.resumeSessionAt,sandbox:this.settings.sandbox,tools:this.settings.tools,mcpServers:this.settings.mcpServers,canUseTool:this.settings.canUseTool};if(this.settings.onUserDialog!==void 0)E.onUserDialog=this.settings.onUserDialog;if(this.settings.supportedDialogKinds!==void 0)E.supportedDialogKinds=this.settings.supportedDialogKinds;if(this.settings.systemPrompt!==void 0)E.systemPrompt=this.settings.systemPrompt;else if(this.settings.customSystemPrompt!==void 0)this.logger.warn("[claude-code] 'customSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt' instead (string or { type: 'preset', preset: 'claude_code', append? })."),E.systemPrompt=this.settings.customSystemPrompt;else if(this.settings.appendSystemPrompt!==void 0)this.logger.warn("[claude-code] 'appendSystemPrompt' is deprecated and will be removed in a future major release. Please use 'systemPrompt: { type: 'preset', preset: 'claude_code', append: <text> }' instead."),E.systemPrompt={type:"preset",preset:"claude_code",append:this.settings.appendSystemPrompt};if(this.settings.settingSources!==void 0)E.settingSources=this.settings.settingSources;else E.settingSources=[];if(this.settings.additionalDirectories!==void 0)E.additionalDirectories=this.settings.additionalDirectories;if(this.settings.agents!==void 0)E.agents=this.settings.agents;if(this.settings.skills!==void 0)E.skills=this.settings.skills;if(this.settings.settings!==void 0)E.settings=this.settings.settings;if(this.settings.managedSettings!==void 0)E.managedSettings=this.settings.managedSettings;if(this.settings.toolAliases!==void 0)E.toolAliases=this.settings.toolAliases;if(this.settings.toolConfig!==void 0)E.toolConfig=this.settings.toolConfig;if(this.settings.planModeInstructions!==void 0)E.planModeInstructions=this.settings.planModeInstructions;if(this.settings.title!==void 0)E.title=this.settings.title;if(this.settings.forwardSubagentText!==void 0)E.forwardSubagentText=this.settings.forwardSubagentText;if(this.settings.agentProgressSummaries!==void 0)E.agentProgressSummaries=this.settings.agentProgressSummaries;if(this.settings.includeHookEvents!==void 0)E.includeHookEvents=this.settings.includeHookEvents;if(this.settings.taskBudget!==void 0)E.taskBudget=this.settings.taskBudget;if(this.settings.sessionStore!==void 0)E.sessionStore=this.settings.sessionStore;if(this.settings.sessionStoreFlush!==void 0)E.sessionStoreFlush=this.settings.sessionStoreFlush;if(this.settings.loadTimeoutMs!==void 0)E.loadTimeoutMs=this.settings.loadTimeoutMs;if(this.settings.includePartialMessages!==void 0)E.includePartialMessages=this.settings.includePartialMessages;if(this.settings.fallbackModel!==void 0)E.fallbackModel=this.settings.fallbackModel;if(this.settings.forkSession!==void 0)E.forkSession=this.settings.forkSession;if(this.settings.strictMcpConfig!==void 0)E.strictMcpConfig=this.settings.strictMcpConfig;if(this.settings.extraArgs!==void 0)E.extraArgs=this.settings.extraArgs;if(this.settings.persistSession!==void 0)E.persistSession=this.settings.persistSession;if(this.settings.spawnClaudeCodeProcess!==void 0)E.spawnClaudeCodeProcess=this.settings.spawnClaudeCodeProcess;if(this.settings.hooks)E.hooks=this.settings.hooks;let $=l?.forkSession??this.settings.forkSession,w=l?.continue??this.settings.continue;if(this.settings.sessionId!==void 0&&!i.sessionIdConflictsWithResumeOrContinue({resumePresent:E.resume!==void 0,continue:w===!0,forkSession:$===!0}))E.sessionId=this.settings.sessionId;if(this.settings.debug!==void 0)E.debug=this.settings.debug;if(this.settings.debugFile!==void 0)E.debugFile=this.settings.debugFile;let d=l?l:void 0,_=d&&typeof d.env==="object"&&d.env!==null?d.env:void 0,v=d&&typeof d.stderr==="function"?d.stderr:void 0;if(d){let g={...d};delete g.env,delete g.stderr;for(let[O,Z]of Object.entries(g))if(Z!==void 0)E[O]=Z}if(this.applySessionResolution(E,c),typeof E.fallbackModel==="string"&&E.fallbackModel===E.model)throw Error(`fallbackModel cannot be the same as the model ('${String(E.model)}'). Specify a different model for fallbackModel, or remove it.`);let h=v??this.settings.stderr;if(f||h)E.stderr=(g)=>{if(f)f(g);if(h)h(g)};let D={...L84(),...this.settings.env,..._};if(!("CLAUDE_AGENT_SDK_CLIENT_APP"in D))D.CLAUDE_AGENT_SDK_CLIENT_APP=k84;if(E.env=D,t?.type==="json"&&t.schema){let{schema:g,strippedFormatPaths:O}=x84(t.schema);if(O.length>0)this.logger.debug(`[claude-code] Stripped unsupported 'format' keywords from outputFormat schema (hints folded into descriptions; client-side Zod validation still enforces them) at: ${O.join(", ")}`);E.outputFormat={type:"json_schema",schema:g}}return E}handleClaudeCodeError(u,t,f){if(Awu(u))throw u;if(u instanceof wt||u instanceof Vw)return u;let l=(O)=>{return typeof O==="object"&&O!==null&&"message"in O},c=(O)=>{return typeof O==="object"&&O!==null},E=["not logged in","authentication","unauthorized","auth failed","please login","claude login","claude auth login","/login","invalid api key","oauth_org_not_allowed"],$=l(u)&&u.message?u.message.toLowerCase():"",w=X84(u),d=c(u)&&typeof u.exitCode==="number"?u.exitCode:void 0;if(w==="authentication_failed"||w==="oauth_org_not_allowed"||E.some((O)=>$.includes(O))||d===401)return D84({message:l(u)&&u.message?u.message:"Authentication failed. Please ensure Claude Code SDK is properly authenticated."});let v=c(u)&&typeof u.code==="string"?u.code:"";if(v==="ETIMEDOUT"||$.includes("timeout"))return g84({message:l(u)&&u.message?u.message:"Request timed out",promptExcerpt:t.substring(0,200)});let D=(c(u)&&typeof u.stderr==="string"?u.stderr:void 0)||f||void 0;if(w==="overloaded"||w==="rate_limit"||$.includes("overloaded"))return po({message:l(u)&&u.message?u.message:"Anthropic API is overloaded. Please retry.",code:v||void 0,exitCode:d,stderr:D,promptExcerpt:t.substring(0,200),isRetryable:!0});if(w==="model_not_found"||$.includes("model_not_found")||$.includes("no such model")){let O=l(u)&&u.message?u.message:"Model not found";return po({message:`${O}. The requested model was not found. Verify the model id passed to the provider (e.g. 'opus', 'sonnet', 'haiku', or a full model name) and that your account has access to it.`,code:v||void 0,exitCode:d,stderr:D,promptExcerpt:t.substring(0,200),isRetryable:!1})}let g=v==="ENOENT"||v==="ECONNREFUSED"||v==="ETIMEDOUT"||v==="ECONNRESET";return po({message:l(u)&&u.message?u.message:"Claude Code SDK error",code:v||void 0,exitCode:d,stderr:D,promptExcerpt:t.substring(0,200),isRetryable:g})}setSessionId(u){this.sessionId=u;let t=y84(u);if(t)this.logger.warn(`Claude Code Session: ${t}`)}logMcpConnectionIssues(u){if(!Array.isArray(u)||u.length===0)return;let t=u.filter((l)=>{let c=typeof l.status==="string"?l.status.toLowerCase():"";return c==="failed"||c==="needs-auth"});if(t.length===0)return;let f=t.map((l)=>{let c=typeof l.name==="string"&&l.name.trim().length>0?l.name:"<unknown>",E=typeof l.status==="string"&&l.status.trim().length>0?l.status:"unknown",$=typeof l.error==="string"&&l.error.trim().length>0?` (${l.error})`:"";return`${c}:${E}${$}`}).join(", ");this.logger.warn(`[claude-code] MCP servers not connected: ${f}`)}handleSystemMessage(u,t,f){switch(u.subtype){case"api_retry":t.apiRetries+=1,this.logger.debug(`[claude-code] API retry ${u.attempt}/${u.max_retries} in ${u.retry_delay_ms}ms - Status: ${u.error_status??"unknown"}, Error: ${u.error}`);break;case"permission_denied":{let l=u.decision_reason??u.message;t.permissionDenials.push({toolName:u.tool_name,toolUseId:u.tool_use_id,...l!==void 0&&{reason:l}}),this.logger.warn(`[claude-code] Permission denied - Tool: ${u.tool_name}${l?`, Reason: ${l}`:""}`);break}case"mirror_error":{let l=u.error??"unknown error",c=u.key?.sessionId??u.session_id??"unknown";t.mirrorErrors.push({error:l,sessionId:c}),this.logger.warn(`[claude-code] SessionStore mirror error (transcript batch dropped) - Session: ${c}, Error: ${l}`);break}case"model_refusal_fallback":{this.logger.debug(`[claude-code] Model refusal fallback - ${u.original_model} -> ${u.fallback_model} (direction: ${u.direction})`);let l=u.retracted_message_uuids;if(f&&l&&l.length>0)this.logger.debug(`[claude-code] Refusal fallback retracts ${l.length} message uuid(s)`),f(l);break}case"thinking_tokens":t.estimatedThinkingTokens+=u.estimated_tokens_delta,this.logger.debug(`[claude-code] Thinking tokens estimate - block total: ${u.estimated_tokens}, delta: ${u.estimated_tokens_delta}, accumulated: ${t.estimatedThinkingTokens}`);break;default:if(H84.has(u.subtype))this.logger.debug(`[claude-code] Ignoring informational system message: ${u.subtype}`);else this.logger.debug(`[claude-code] Unhandled system message subtype: ${u.subtype}`);break}}mergeResultPermissionDenials(u,t){for(let f of u.permission_denials??[])if(!t.permissionDenials.some((c)=>c.toolUseId!==void 0&&c.toolUseId===f.tool_use_id))t.permissionDenials.push({toolName:f.tool_name,toolUseId:f.tool_use_id})}async drainPromptSuggestion(u,t){let f=u[Symbol.asyncIterator](),l,c=new Promise((E)=>{l=setTimeout(()=>E("timeout"),i.PROMPT_SUGGESTION_DRAIN_TIMEOUT_MS),l.unref?.()});try{while(!0){let E=await Promise.race([f.next(),c]);if(E==="timeout"){this.logger.debug("[claude-code] Post-result drain timed out; closing SDK iterator"),f.return?.().catch(()=>{});break}if(E.done)break;let $=E.value;if(this.logger.debug(`[claude-code] Post-result message type: ${$.type}`),$.type==="prompt_suggestion"){t($.suggestion),f.return?.().catch(()=>{});break}}}catch(E){this.logger.debug(`[claude-code] Error draining post-result messages: ${E instanceof Error?E.message:String(E)}`)}finally{if(l!==void 0)clearTimeout(l)}}async doGenerate(u){this.logger.debug(`[claude-code] Starting doGenerate request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${u.responseFormat?.type??"none"}`);let{messagesPrompt:t,warnings:f,streamingContentParts:l,hasImageParts:c}=ZV0(u.prompt);this.logger.debug(`[claude-code] Converted ${u.prompt.length} messages, hasImageParts: ${c}`);let E=new AbortController,$;if(u.abortSignal?.aborted)E.abort(u.abortSignal.reason);let w="",d=(Di)=>{w+=Di},_=this.getSanitizedSdkOptions(),v=this.getEffectiveResume(_),h=this.createQueryOptions(E,u.responseFormat,d,_,v);if(u.abortSignal&&!u.abortSignal.aborted)$=()=>E.abort(u.abortSignal?.reason),u.abortSignal.addEventListener("abort",$,{once:!0});let D="",g=[],O=()=>g.filter((Di)=>Di.kind==="text").map((Di)=>Di.text).join(""),Z=()=>{let Di=0;for(let $i=0;$i<g.length;$i++){let fi=g[$i]?.kind;if(fi==="tool-result"||fi==="tool-error")Di=$i+1}return g.slice(Di).filter(($i)=>$i.kind==="text").map(($i)=>$i.text).join("")},B=new Map,F=new Set,y=(Di)=>{if(Di.size===0)return;let $i=AV0(Di,g.filter((fi)=>fi.kind==="tool-call"||fi.kind==="tool-result"||fi.kind==="tool-error").map((fi)=>({toolCallId:fi.toolCallId,uuid:fi.uuid})));for(let fi of $i)F.add(fi),B.delete(fi),T.delete(fi);for(let fi=g.length-1;fi>=0;fi--){let ji=g[fi];if(ji===void 0)continue;let a="uuid"in ji?ji.uuid:void 0;if(a!==void 0&&Di.has(a)||(ji.kind==="tool-result"||ji.kind==="tool-error")&&$i.has(ji.toolCallId))g.splice(fi,1)}},T=new Map,U=()=>{if(T.size===1)return T.keys().next().value??null;return null},I,j=!1,A=kV0(),n={unified:"stop",raw:void 0},M=!1,S,Y,V,L,wi,Ei,li,ii,e={apiRetries:0,permissionDenials:[],mirrorErrors:[],estimatedThinkingTokens:0},Oi=this.generateAllWarnings(u,t);if(f)f.forEach((Di)=>{Oi.push({type:"other",message:Di})});let _i=this.settings.streamingInput??"auto",Ii=_?.canUseTool??this.settings.canUseTool,Vi=_?.permissionPromptToolName??this.settings.permissionPromptToolName,Wi=_i==="always"||_i==="auto"&&!!Ii;if(!Wi&&c)Oi.push({type:"other",message:IV0});let ri=()=>{},gi=new Promise((Di)=>{ri=()=>Di(void 0)});try{if(Ii&&Vi)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let Di=Wi?XV0(t,gi,v,l,this.settings.onStreamStart):t;this.logger.debug(`[claude-code] Executing query with streamingInput: ${Wi}, session: ${v??"new"}`);let $i=TV0({prompt:Di,options:h});this.settings.onQueryCreated?.($i);let fi,ji=$i[Symbol.asyncIterator](),a={[Symbol.asyncIterator]:()=>({next:()=>ji.next(),return:()=>{return ji.return?.().catch(()=>{}),Promise.resolve({done:!0,value:void 0})}})};for await(let ui of a)if(this.logger.debug(`[claude-code] Received message type: ${ui.type}`),ui.type==="assistant"){if(typeof ui.error==="string")fi=ui.error;GV0(ui,y,this.logger,"truthy");let ei=typeof ui.uuid==="string"?ui.uuid:void 0,Ai=ui.parent_tool_use_id,q=ui.message.content;if(Array.isArray(q))for(let m of q){if(!SV0(m))continue;if(m.type==="text"&&typeof m.text==="string"){if(m.text.length>0)g.push({kind:"text",...ei!==void 0&&{uuid:ei},text:m.text})}else if(m.type==="thinking"&&typeof m.thinking==="string")g.push({kind:"reasoning",...ei!==void 0&&{uuid:ei},text:m.thinking});else if(m.type==="tool_use"){let[Xi]=this.extractToolUses([m]);if(!Xi)continue;let Li=g$(Xi.name)?null:aK(Ai,Xi.parentToolUseId,U);if(this.logger.debug(`[claude-code] Tool use detected - Tool: ${Xi.name}, ID: ${Xi.id}, SDK parent: ${Ai}, resolved parent: ${Li}`),B.set(Xi.id,{name:Xi.name,parentToolCallId:Li}),g$(Xi.name))T.set(Xi.id,{startTime:Date.now()});g.push({kind:"tool-call",...ei!==void 0&&{uuid:ei},toolCallId:Xi.id,part:this.buildToolCallPart(Xi.id,Xi.name,this.serializeToolInput(Xi.input),Li)})}}D=O()}else if(ui.type==="user"){if(!ui.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${ui.type}. This may indicate an SDK protocol violation.`);continue}let ei=ui.parent_tool_use_id,Ai=typeof ui.uuid==="string"?ui.uuid:void 0,q=ui.message.content;for(let m of this.extractToolResults(q)){if(this.isRetractedToolFrame(m.id,F,"result"))continue;let Xi=B.get(m.id),Li=m.name??Xi?.name??i.UNKNOWN_TOOL_NAME;this.logger.debug(`[claude-code] Tool result received - Tool: ${Li}, ID: ${m.id}`);let oi;if(Xi)Xi.name=Li,oi=Xi.parentToolCallId;else this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${m.id}`),oi=g$(Li)?null:aK(ei,void 0,U),B.set(m.id,{name:Li,parentToolCallId:oi}),g.push({kind:"tool-call",toolCallId:m.id,part:this.buildToolCallPart(m.id,Li,"",oi)});if(g$(Li))T.delete(m.id);g.push({kind:"tool-result",...Ai!==void 0&&{uuid:Ai},toolCallId:m.id,part:this.buildToolResultPart(m.id,Li,m.result,m.isError,oi)})}for(let m of this.extractToolErrors(q)){if(this.isRetractedToolFrame(m.id,F,"error"))continue;let Xi=B.get(m.id),Li=m.name??Xi?.name??i.UNKNOWN_TOOL_NAME;this.logger.debug(`[claude-code] Tool error received - Tool: ${Li}, ID: ${m.id}`);let oi;if(Xi)Xi.name=Li,oi=Xi.parentToolCallId;else this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${m.id}`),oi=g$(Li)?null:aK(ei,void 0,U),B.set(m.id,{name:Li,parentToolCallId:oi}),g.push({kind:"tool-call",toolCallId:m.id,part:this.buildToolCallPart(m.id,Li,"",oi)});if(g$(Li))T.delete(m.id);g.push({kind:"tool-error",...Ai!==void 0&&{uuid:Ai},toolCallId:m.id,part:this.buildToolErrorResultPart(m.id,Li,m.error,oi)})}}else if(ui.type==="result"){if(ri(),j=!0,this.setSessionId(ui.session_id),S=ui.total_cost_usd,Y=ui.duration_ms,V=ui.modelUsage,"ttft_ms"in ui)L=ui.ttft_ms;if("ttft_stream_ms"in ui)wi=ui.ttft_stream_ms;if("time_to_request_ms"in ui)Ei=ui.time_to_request_ms;if("warm_spare_claimed"in ui)li=ui.warm_spare_claimed;if(ii=ui.terminal_reason,this.mergeResultPermissionDenials(ui,e),"is_error"in ui&&ui.is_error===!0){let q="result"in ui&&typeof ui.result==="string"?ui.result:void 0,m="errors"in ui&&Array.isArray(ui.errors)?ui.errors.filter((Li)=>typeof Li==="string").join("; "):"";throw Object.assign(Error(q??(m||"Claude Code CLI returned an error")),{exitCode:1,errorKind:fi})}if(ui.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if("structured_output"in ui&&ui.structured_output!==void 0)I=ui.structured_output,this.logger.debug("[claude-code] Received structured output from SDK");if(this.logger.info(`[claude-code] Request completed - Session: ${ui.session_id}, Cost: $${S?.toFixed(4)??"N/A"}, Duration: ${Y??"N/A"}ms`),"usage"in ui)A=jV0(ui.usage),this.logger.debug(`[claude-code] Token usage - Input: ${A.inputTokens.total}, Output: ${A.outputTokens.total}`);let ei="stop_reason"in ui?ui.stop_reason:void 0;n=BV0(ui.subtype,ei),this.logger.debug(`[claude-code] Finish reason: ${n.unified}`);let Ai=_?.promptSuggestions??this.settings.promptSuggestions;if(this.settings.onPromptSuggestion&&Ai!==!1)await this.drainPromptSuggestion($i,this.settings.onPromptSuggestion);break}else if(ui.type==="system"&&ui.subtype==="init")this.logMcpConnectionIssues(ui.mcp_servers),this.setSessionId(ui.session_id),this.logger.info(`[claude-code] Session initialized: ${ui.session_id}`);else if(ui.type==="system")this.handleSystemMessage(ui,e,nV0(y))}catch(Di){if(ri(),this.logger.debug(`[claude-code] Error during doGenerate: ${Di instanceof Error?Di.message:String(Di)}`),Awu(Di))throw this.logger.debug("[claude-code] Request aborted by user"),u.abortSignal?.aborted?u.abortSignal.reason:Di;if(PV0(Di,D))this.logger.warn(`[claude-code] Detected truncated response, returning ${D.length} characters of buffered text`),M=!0,n={unified:"length",raw:"truncation"},Oi.push({type:"other",message:UV0});else throw this.handleClaudeCodeError(Di,t,w)}finally{if(u.abortSignal&&$)u.abortSignal.removeEventListener("abort",$)}if(u.responseFormat?.type==="json"&&u.responseFormat.schema!==void 0&&j&&I===void 0&&!M&&n.unified==="stop"){let Di=Iwu(Z())??Iwu(O());if(Di!==void 0)this.logger.warn("[claude-code] outputFormat was requested but the CLI returned no structured_output; recovered JSON by parsing the prose response. The schema likely contains constructs the CLI cannot enforce - see the README structured-output limitations."),I=JSON.parse(Di);else throw po({message:xV0,promptExcerpt:t.substring(0,200),isRetryable:!1})}let Ki=g.filter((Di)=>Di.kind==="reasoning").map((Di)=>Di.text),Gi=[];for(let Di of g)if(Di.kind==="reasoning")Gi.push({type:"reasoning",text:Di.text});else if(Di.kind==="text"){if(I!==void 0)continue;let $i=Gi[Gi.length-1];if($i!==void 0&&$i.type==="text")$i.text+=Di.text;else Gi.push({type:"text",text:Di.text})}else Gi.push(Di.part);if(I!==void 0)Gi.push({type:"text",text:JSON.stringify(I)});else if(!Gi.some((Di)=>Di.type==="text"))Gi.push({type:"text",text:""});return{content:Gi,usage:A,finishReason:n,warnings:Oi,response:{id:qu(),timestamp:new Date,modelId:this.modelId},request:{body:t},providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},...S!==void 0&&{costUsd:S},...Y!==void 0&&{durationMs:Y},...V!==void 0&&{modelUsage:V},...L!==void 0&&{ttftMs:L},...wi!==void 0&&{ttftStreamMs:wi},...Ei!==void 0&&{timeToRequestMs:Ei},...li!==void 0&&{warmSpareClaimed:li},...ii!==void 0&&{terminalReason:ii},...e.apiRetries>0&&{apiRetries:e.apiRetries},...e.permissionDenials.length>0&&{permissionDenials:e.permissionDenials},...e.mirrorErrors.length>0&&{mirrorErrors:e.mirrorErrors},...e.estimatedThinkingTokens>0&&{estimatedThinkingTokens:e.estimatedThinkingTokens},...M&&{truncated:!0},...Ki.length>0&&{thinkingTraces:Ki}}}}}async doStream(u){this.logger.debug(`[claude-code] Starting doStream request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${u.responseFormat?.type??"none"}`);let{messagesPrompt:t,warnings:f,streamingContentParts:l,hasImageParts:c}=ZV0(u.prompt);this.logger.debug(`[claude-code] Converted ${u.prompt.length} messages for streaming, hasImageParts: ${c}`);let E=new AbortController,$;if(u.abortSignal?.aborted)E.abort(u.abortSignal.reason);let w="",d=(y)=>{w+=y},_=this.getSanitizedSdkOptions(),v=this.getEffectiveResume(_),h=this.createQueryOptions(E,u.responseFormat,d,_,v);if(u.abortSignal&&!u.abortSignal.aborted)$=()=>E.abort(u.abortSignal?.reason),u.abortSignal.addEventListener("abort",$,{once:!0});if(h.includePartialMessages===void 0)h.includePartialMessages=!0;let D=this.generateAllWarnings(u,t);if(f)f.forEach((y)=>{D.push({type:"other",message:y})});let g=this.settings.streamingInput??"auto",O=_?.canUseTool??this.settings.canUseTool,Z=_?.permissionPromptToolName??this.settings.permissionPromptToolName,B=g==="always"||g==="auto"&&!!O;if(!B&&c)D.push({type:"other",message:IV0});return{stream:new ReadableStream({start:async(y)=>{let T=()=>{},U=new Promise((fi)=>{T=()=>fi(void 0)}),I=new Map,j=new Set,A=new Map,n=()=>{if(A.size===1)return A.keys().next().value??null;return null},M=[],S=(fi,ji)=>{if(!ji.inputClosed&&ji.inputStarted)y.enqueue({type:"tool-input-end",id:fi}),ji.inputClosed=!0},Y=(fi,ji)=>{if(ji.callEmitted)return;S(fi,ji),y.enqueue(this.buildToolCallPart(fi,ji.name,ji.lastSerializedInput??"",ji.parentToolCallId)),ji.callEmitted=!0},V=()=>{for(let[fi,ji]of I)Y(fi,ji);I.clear()},L=kV0(),wi="",Ei=[],li,ii=0,e="",Oi=!1,_i=!1,Ii,Vi={apiRetries:0,permissionDenials:[],mirrorErrors:[],estimatedThinkingTokens:0},Wi=new Map,ri=new Map,gi=new Map,Ki=!1,Gi=new Map,Di,$i=(fi)=>{if(fi.size===0)return;for(let a=Ei.length-1;a>=0;a--){let ui=Ei[a]?.uuid;if(ui!==void 0&&fi.has(ui))Ei.splice(a,1)}wi=Ei.map((a)=>a.text).join("");let ji=AV0(fi,[...I].map(([a,ui])=>({toolCallId:a,uuid:ui.messageUuid})));for(let a of ji){let ui=I.get(a);if(!ui)continue;if(A.delete(a),!ui.callEmitted){S(a,ui),I.delete(a),j.add(a),ri.delete(a);for(let[ei,Ai]of Wi)if(Ai===a)Wi.delete(ei);this.logger.debug(`[claude-code] Retracted pending tool call from superseded message - ID: ${a}`)}}};try{if(y.enqueue({type:"stream-start",warnings:D}),O&&Z)throw Error("canUseTool requires streamingInput mode ('auto' or 'always') and cannot be used with permissionPromptToolName (SDK constraint). Set streamingInput: 'auto' (or 'always') and remove permissionPromptToolName, or remove canUseTool.");let fi=B?XV0(t,U,v,l,this.settings.onStreamStart):t;this.logger.debug(`[claude-code] Starting stream query with streamingInput: ${B}, session: ${v??"new"}`);let ji=TV0({prompt:fi,options:h});this.settings.onQueryCreated?.(ji);for await(let a of ji){if(this.logger.debug(`[claude-code] Stream received message type: ${a.type}`),a.type==="stream_event"){let ei=a.event;if(ei.type==="content_block_delta"&&ei.delta.type==="text_delta"&&"text"in ei.delta&&ei.delta.text){let Ai=ei.delta.text;if(Oi=!0,u.responseFormat?.type==="json"){wi+=Ai,ii+=Ai.length;continue}if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Ai}),wi+=Ai,ii+=Ai.length,e+=Ai}if(ei.type==="content_block_delta"&&ei.delta.type==="input_json_delta"&&"partial_json"in ei.delta&&ei.delta.partial_json){let Ai=ei.delta.partial_json;Oi=!0;let q="index"in ei?ei.index:-1;if(u.responseFormat?.type==="json"){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Ai}),wi+=Ai,ii+=Ai.length,_i=!0;continue}let m=Wi.get(q);if(m){let Xi=(ri.get(m)??"")+Ai;ri.set(m,Xi),y.enqueue({type:"tool-input-delta",id:m,delta:Ai});continue}}if(ei.type==="content_block_start"&&"content_block"in ei&&ei.content_block?.type==="tool_use"){let Ai="index"in ei?ei.index:-1,q=ei.content_block,m=typeof q.id==="string"&&q.id.length>0?q.id:qu(),Xi=typeof q.name==="string"&&q.name.length>0?q.name:i.UNKNOWN_TOOL_NAME;if(Oi=!0,li){let oi=li;y.enqueue({type:"text-end",id:oi}),li=void 0;for(let[iu,Qu]of gi)if(Qu===oi){gi.delete(iu);break}}Wi.set(Ai,m),ri.set(m,"");let Li=I.get(m);if(!Li){let oi=a.parent_tool_use_id,iu=g$(Xi)?null:aK(oi,void 0,n),Qu=a.uuid;Li={name:Xi,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:iu,...typeof Qu==="string"&&{messageUuid:Qu}},I.set(m,Li)}if(!Li.inputStarted){if(this.logger.debug(`[claude-code] Tool input started (content_block) - Tool: ${Xi}, ID: ${m}, parent: ${Li.parentToolCallId}`),y.enqueue({type:"tool-input-start",id:m,toolName:Xi,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:Li.parentToolCallId??null}}}),g$(Xi))A.set(m,{startTime:Date.now()});Li.inputStarted=!0}continue}if(ei.type==="content_block_start"&&"content_block"in ei&&ei.content_block?.type==="text"){let Ai="index"in ei?ei.index:-1;Oi=!0;let q=qu();gi.set(Ai,q),li=q,this.logger.debug(`[claude-code] Text content block started - Index: ${Ai}, ID: ${q}`),y.enqueue({type:"text-start",id:q}),Ki=!0;continue}if(ei.type==="content_block_start"&&"content_block"in ei&&ei.content_block?.type==="thinking"){let Ai="index"in ei?ei.index:-1;if(Oi=!0,li){let m=li;y.enqueue({type:"text-end",id:m}),li=void 0;for(let[Xi,Li]of gi)if(Li===m){gi.delete(Xi);break}}let q=qu();Gi.set(Ai,q),Di=q,this.logger.debug(`[claude-code] Reasoning started (content_block) - ID: ${q}`),y.enqueue({type:"reasoning-start",id:q});continue}if(ei.type==="content_block_delta"&&ei.delta.type==="thinking_delta"&&"thinking"in ei.delta&&ei.delta.thinking){let Ai="index"in ei?ei.index:-1,q=Gi.get(Ai)??Di;if(Oi=!0,q)y.enqueue({type:"reasoning-delta",id:q,delta:ei.delta.thinking});continue}if(ei.type==="content_block_stop"){let Ai="index"in ei?ei.index:-1;Oi=!0;let q=Wi.get(Ai);if(q){let Li=I.get(q);if(Li&&!Li.inputClosed){let oi=ri.get(q)??"";this.logger.debug(`[claude-code] Tool content block stopped - Index: ${Ai}, Tool: ${Li.name}, ID: ${q}`),y.enqueue({type:"tool-input-end",id:q}),Li.inputClosed=!0;let iu=oi||Li.lastSerializedInput||"";if(Li.lastSerializedInput=iu,!Li.callEmitted)y.enqueue(this.buildToolCallPart(q,Li.name,iu,Li.parentToolCallId)),Li.callEmitted=!0}Wi.delete(Ai),ri.delete(q);continue}let m=gi.get(Ai);if(m){if(this.logger.debug(`[claude-code] Text content block stopped - Index: ${Ai}, ID: ${m}`),y.enqueue({type:"text-end",id:m}),gi.delete(Ai),li===m)li=void 0;continue}let Xi=Gi.get(Ai);if(Xi){if(this.logger.debug(`[claude-code] Reasoning ended (content_block) - ID: ${Xi}`),y.enqueue({type:"reasoning-end",id:Xi}),Gi.delete(Ai),Di===Xi)Di=void 0;continue}}continue}if(a.type==="assistant"){if(typeof a.error==="string")Ii=a.error;let ui=GV0(a,$i,this.logger);if(!a.message?.content){this.logger.warn(`[claude-code] Unexpected assistant message structure: missing content field. Message type: ${a.type}. This may indicate an SDK protocol violation.`);continue}let ei=a.parent_tool_use_id,Ai=a.message.content,q=this.extractToolUses(Ai);if(li&&q.length>0){let Xi=li;y.enqueue({type:"text-end",id:Xi}),li=void 0;for(let[Li,oi]of gi)if(oi===Xi){gi.delete(Li);break}}for(let Xi of q){let Li=Xi.id,oi=I.get(Li);if(!oi){let Qu=g$(Xi.name)?null:aK(ei,Xi.parentToolUseId,n);oi={name:Xi.name,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:Qu,...typeof a.uuid==="string"&&{messageUuid:a.uuid}},I.set(Li,oi),this.logger.debug(`[claude-code] New tool use detected - Tool: ${Xi.name}, ID: ${Li}, SDK parent: ${ei}, resolved parent: ${Qu}`)}else if(!oi.parentToolCallId&&ei&&!g$(Xi.name))oi.parentToolCallId=ei,this.logger.debug(`[claude-code] Retroactive parent context - Tool: ${Xi.name}, ID: ${Li}, parent: ${ei}`);if(oi.name=Xi.name,!oi.inputStarted){if(this.logger.debug(`[claude-code] Tool input started - Tool: ${Xi.name}, ID: ${Li}`),y.enqueue({type:"tool-input-start",id:Li,toolName:Xi.name,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:oi.parentToolCallId??null}}}),g$(Xi.name))A.set(Li,{startTime:Date.now()});oi.inputStarted=!0}let iu=this.serializeToolInput(Xi.input);if(iu){let Qu="";if(oi.lastSerializedInput===void 0){if(iu.length<=i.MAX_DELTA_CALC_SIZE)Qu=iu}else if(iu.length<=i.MAX_DELTA_CALC_SIZE&&oi.lastSerializedInput.length<=i.MAX_DELTA_CALC_SIZE&&iu.startsWith(oi.lastSerializedInput))Qu=iu.slice(oi.lastSerializedInput.length);else if(iu!==oi.lastSerializedInput)Qu="";if(Qu)y.enqueue({type:"tool-input-delta",id:Li,delta:Qu});oi.lastSerializedInput=iu}}let m=Ai.map((Xi)=>Xi.type==="text"?Xi.text:"").join("");if(m){if(ui){if(Ei.push({...typeof a.uuid==="string"&&{uuid:a.uuid},text:m}),wi=Ei.map((Xi)=>Xi.text).join(""),e===m)ii=Math.max(ii,m.length),this.logger.debug("[claude-code] Skipping text emission for superseding assistant message (replacement already streamed)");else if(e.length>0&&m.startsWith(e)){if(u.responseFormat?.type!=="json"){let Xi=m.slice(e.length);if(Xi){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Xi}),e=m}}ii=Math.max(ii,m.length),this.logger.debug("[claude-code] Emitted unstreamed suffix of superseding assistant message")}else if(u.responseFormat?.type!=="json"){if(li){let Xi=li;y.enqueue({type:"text-end",id:Xi}),li=void 0;for(let[Li,oi]of gi)if(oi===Xi){gi.delete(Li);break}}li=qu(),y.enqueue({type:"text-start",id:li}),y.enqueue({type:"text-delta",id:li,delta:m}),ii=Math.max(ii,m.length),this.logger.debug("[claude-code] Emitted superseding assistant message as a new text part (canonical replacement)")}}else if(Oi){let Xi=ii,Li=m.length>Xi?m.slice(Xi):"";if(wi=m,Ei.length=0,Ei.push({...typeof a.uuid==="string"&&{uuid:a.uuid},text:m}),u.responseFormat?.type!=="json"&&Li){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:Li})}ii=m.length}else if(wi+=m,Ei.push({...typeof a.uuid==="string"&&{uuid:a.uuid},text:m}),u.responseFormat?.type!=="json"){if(!li)li=qu(),y.enqueue({type:"text-start",id:li});y.enqueue({type:"text-delta",id:li,delta:m})}}e=""}else if(a.type==="user"){if(!a.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${a.type}. This may indicate an SDK protocol violation.`);continue}if(li){let Ai=li;y.enqueue({type:"text-end",id:Ai}),li=void 0;for(let[q,m]of gi)if(m===Ai){gi.delete(q);break}this.logger.debug("[claude-code] Closed text part due to user message")}wi="",Ei.length=0,ii=0,e="";let ui=a.parent_tool_use_id,ei=a.message.content;for(let Ai of this.extractToolResults(ei)){if(this.isRetractedToolFrame(Ai.id,j,"result"))continue;let q=I.get(Ai.id),m=Ai.name??q?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool result received - Tool: ${m}, ID: ${Ai.id}`),!q){this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${Ai.id}`);let Xi=g$(m)?null:aK(ui,void 0,n);if(q={name:m,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:Xi},I.set(Ai.id,q),!q.inputStarted)y.enqueue({type:"tool-input-start",id:Ai.id,toolName:m,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:q.parentToolCallId??null}}}),q.inputStarted=!0;if(!q.inputClosed)y.enqueue({type:"tool-input-end",id:Ai.id}),q.inputClosed=!0}if(q.name=m,Y(Ai.id,q),g$(m))A.delete(Ai.id);y.enqueue(this.buildToolResultPart(Ai.id,m,Ai.result,Ai.isError,q.parentToolCallId))}for(let Ai of this.extractToolErrors(ei)){if(this.isRetractedToolFrame(Ai.id,j,"error"))continue;let q=I.get(Ai.id),m=Ai.name??q?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool error received - Tool: ${m}, ID: ${Ai.id}`),!q){this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${Ai.id}`);let Xi=g$(m)?null:aK(ui,void 0,n);q={name:m,inputStarted:!0,inputClosed:!0,callEmitted:!1,parentToolCallId:Xi},I.set(Ai.id,q)}if(Y(Ai.id,q),g$(m))A.delete(Ai.id);y.enqueue(this.buildToolErrorPart(Ai.id,m,Ai.error,q.parentToolCallId))}}else if(a.type==="result"){if(T(),this.mergeResultPermissionDenials(a,Vi),"is_error"in a&&a.is_error===!0){let Li="result"in a&&typeof a.result==="string"?a.result:void 0,oi="errors"in a&&Array.isArray(a.errors)?a.errors.filter((Qu)=>typeof Qu==="string").join("; "):"";throw Object.assign(Error(Li??(oi||"Claude Code CLI returned an error")),{exitCode:1,errorKind:Ii})}if(a.subtype==="error_max_structured_output_retries")throw Error("Failed to generate valid structured output after maximum retries. The model could not produce a response matching the required schema.");if(this.logger.info(`[claude-code] Stream completed - Session: ${a.session_id}, Cost: $${a.total_cost_usd?.toFixed(4)??"N/A"}, Duration: ${a.duration_ms??"N/A"}ms`),"usage"in a)L=jV0(a.usage),this.logger.debug(`[claude-code] Stream token usage - Input: ${L.inputTokens.total}, Output: ${L.outputTokens.total}`);let ui="stop_reason"in a?a.stop_reason:void 0,ei=BV0(a.subtype,ui);this.logger.debug(`[claude-code] Stream finish reason: ${ei.unified}`),this.setSessionId(a.session_id);let Ai="structured_output"in a?a.structured_output:void 0;if(_i&&u.responseFormat?.type==="json"&&Oi){if(li)y.enqueue({type:"text-end",id:li})}else if(Ai!==void 0){let Li=qu(),oi=JSON.stringify(Ai);y.enqueue({type:"text-start",id:Li}),y.enqueue({type:"text-delta",id:Li,delta:oi}),y.enqueue({type:"text-end",id:Li})}else if(u.responseFormat?.type==="json"&&u.responseFormat.schema!==void 0&&ei.unified==="stop"){let Li=Iwu(wi);if(Li===void 0)throw po({message:xV0,promptExcerpt:t.substring(0,200),isRetryable:!1});if(this.logger.warn("[claude-code] outputFormat was requested but the CLI returned no structured_output; recovered JSON by parsing the prose response. The schema likely contains constructs the CLI cannot enforce - see the README structured-output limitations."),li)y.enqueue({type:"text-end",id:li});let oi=qu();y.enqueue({type:"text-start",id:oi}),y.enqueue({type:"text-delta",id:oi,delta:Li}),y.enqueue({type:"text-end",id:oi})}else if(li)y.enqueue({type:"text-end",id:li});else if(wi&&!Ki){let Li=qu();y.enqueue({type:"text-start",id:Li}),y.enqueue({type:"text-delta",id:Li,delta:wi}),y.enqueue({type:"text-end",id:Li})}V();let m=this.serializeWarningsForMetadata(M);y.enqueue({type:"finish",finishReason:ei,usage:L,providerMetadata:{"claude-code":{sessionId:a.session_id,...a.total_cost_usd!==void 0&&{costUsd:a.total_cost_usd},...a.duration_ms!==void 0&&{durationMs:a.duration_ms},...a.modelUsage!==void 0&&{modelUsage:a.modelUsage},..."ttft_ms"in a&&a.ttft_ms!==void 0&&{ttftMs:a.ttft_ms},..."ttft_stream_ms"in a&&a.ttft_stream_ms!==void 0&&{ttftStreamMs:a.ttft_stream_ms},..."time_to_request_ms"in a&&a.time_to_request_ms!==void 0&&{timeToRequestMs:a.time_to_request_ms},..."warm_spare_claimed"in a&&a.warm_spare_claimed!==void 0&&{warmSpareClaimed:a.warm_spare_claimed},...a.terminal_reason!==void 0&&{terminalReason:a.terminal_reason},...Vi.apiRetries>0&&{apiRetries:Vi.apiRetries},...Vi.permissionDenials.length>0&&{permissionDenials:Vi.permissionDenials},...Vi.mirrorErrors.length>0&&{mirrorErrors:Vi.mirrorErrors},...Vi.estimatedThinkingTokens>0&&{estimatedThinkingTokens:Vi.estimatedThinkingTokens},...M.length>0&&{warnings:m}}}}),y.close();let Xi=_?.promptSuggestions??this.settings.promptSuggestions;if(this.settings.onPromptSuggestion&&Xi!==!1)await this.drainPromptSuggestion(ji,this.settings.onPromptSuggestion);return}else if(a.type==="system"&&a.subtype==="init")this.logMcpConnectionIssues(a.mcp_servers),this.setSessionId(a.session_id),this.logger.info(`[claude-code] Stream session initialized: ${a.session_id}`),y.enqueue({type:"response-metadata",id:a.session_id,timestamp:new Date,modelId:this.modelId});else if(a.type==="system")this.handleSystemMessage(a,Vi,nV0($i));else if(a.type==="prompt_suggestion")this.logger.debug("[claude-code] Received prompt suggestion"),this.settings.onPromptSuggestion?.(a.suggestion)}V(),this.logger.debug("[claude-code] Stream finalized, closing stream"),y.close()}catch(fi){if(T(),this.logger.debug(`[claude-code] Error during doStream: ${fi instanceof Error?fi.message:String(fi)}`),PV0(fi,wi)){this.logger.warn(`[claude-code] Detected truncated stream response, returning ${wi.length} characters of buffered text`);let a={type:"other",message:UV0};if(M.push(a),li)y.enqueue({type:"text-end",id:li});else if(wi&&!Ki){let ei=qu();y.enqueue({type:"text-start",id:ei}),y.enqueue({type:"text-delta",id:ei,delta:wi}),y.enqueue({type:"text-end",id:ei})}V();let ui=this.serializeWarningsForMetadata(M);y.enqueue({type:"finish",finishReason:{unified:"length",raw:"truncation"},usage:L,providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},truncated:!0,...Vi.apiRetries>0&&{apiRetries:Vi.apiRetries},...Vi.permissionDenials.length>0&&{permissionDenials:Vi.permissionDenials},...Vi.mirrorErrors.length>0&&{mirrorErrors:Vi.mirrorErrors},...Vi.estimatedThinkingTokens>0&&{estimatedThinkingTokens:Vi.estimatedThinkingTokens},...M.length>0&&{warnings:ui}}}}),y.close();return}V();let ji;if(Awu(fi))ji=u.abortSignal?.aborted?u.abortSignal.reason:fi;else ji=this.handleClaudeCodeError(fi,t,w);y.enqueue({type:"error",error:ji}),y.close()}finally{if(u.abortSignal&&$)u.abortSignal.removeEventListener("abort",$)}},cancel:()=>{if(u.abortSignal&&$)u.abortSignal.removeEventListener("abort",$)}}),request:{body:t}}}serializeWarningsForMetadata(u){return u.map((f)=>{let l={type:f.type};if("message"in f){let c=f.message;if(c!==void 0)l.message=String(c)}if(f.type==="unsupported"||f.type==="compatibility"){let c=f.feature;if(c!==void 0)l.feature=String(c);if("details"in f){let E=f.details;if(E!==void 0)l.details=String(E)}}return l})}},IF6;var YV0=N(()=>{ru();ru();tu();ru();O84=Ri.object({debug:Ri.any().refine((i)=>typeof i==="function",{message:"debug must be a function"}),info:Ri.any().refine((i)=>typeof i==="function",{message:"info must be a function"}),warn:Ri.any().refine((i)=>typeof i==="function",{message:"warn must be a function"}),error:Ri.any().refine((i)=>typeof i==="function",{message:"error must be a function"})}),Z84=Ri.object({pathToClaudeCodeExecutable:Ri.string().optional(),customSystemPrompt:Ri.string().optional(),appendSystemPrompt:Ri.string().optional(),systemPrompt:Ri.union([Ri.string(),Ri.array(Ri.string()),Ri.object({type:Ri.literal("preset"),preset:Ri.literal("claude_code"),append:Ri.string().optional(),excludeDynamicSections:Ri.boolean().optional()})]).optional(),maxTurns:Ri.number().int().min(1).max(100).optional(),maxThinkingTokens:Ri.number().int().positive().max(1e5).optional(),thinking:Ri.union([Ri.object({type:Ri.literal("adaptive"),display:Ri.enum(["summarized","omitted"]).optional()}).strict(),Ri.object({type:Ri.literal("enabled"),budgetTokens:Ri.number().int().positive().optional(),display:Ri.enum(["summarized","omitted"]).optional()}).strict(),Ri.object({type:Ri.literal("disabled")}).strict()]).optional(),effort:Ri.enum(["low","medium","high","xhigh","max"]).optional(),promptSuggestions:Ri.boolean().optional(),cwd:Ri.string().refine((i)=>{if(typeof process>"u"||!process.versions?.node)return!0;return!i||N84(i)},{message:"Working directory must exist"}).optional(),executable:Ri.enum(["bun","deno","node"]).optional(),executableArgs:Ri.array(Ri.string()).optional(),permissionMode:Ri.enum(["default","acceptEdits","bypassPermissions","plan","dontAsk","auto"]).optional(),permissionPromptToolName:Ri.string().optional(),continue:Ri.boolean().optional(),resume:Ri.string().optional(),sessionId:Ri.string().refine((i)=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(i),{message:"sessionId must be a valid UUID (the CLI rejects non-UUID session IDs)"}).optional(),allowedTools:Ri.array(Ri.string()).optional(),disallowedTools:Ri.array(Ri.string()).optional(),betas:Ri.array(Ri.string()).optional(),allowDangerouslySkipPermissions:Ri.boolean().optional(),enableFileCheckpointing:Ri.boolean().optional(),maxBudgetUsd:Ri.number().min(0).optional(),plugins:Ri.array(Ri.object({type:Ri.literal("local"),path:Ri.string()}).passthrough()).optional(),resumeSessionAt:Ri.string().optional(),sandbox:Ri.any().refine((i)=>i===void 0||typeof i==="object",{message:"sandbox must be an object"}).optional(),tools:Ri.union([Ri.array(Ri.string()),Ri.object({type:Ri.literal("preset"),preset:Ri.literal("claude_code")})]).optional(),skills:Ri.union([Ri.array(Ri.string()),Ri.literal("all")]).optional(),settings:Ri.union([Ri.string(),Ri.record(Ri.string(),Ri.any())]).optional(),managedSettings:Ri.record(Ri.string(),Ri.any()).optional(),toolAliases:Ri.record(Ri.string(),Ri.string()).optional(),toolConfig:Ri.object({askUserQuestion:Ri.object({previewFormat:Ri.enum(["markdown","html"]).optional()}).passthrough().optional()}).passthrough().optional(),planModeInstructions:Ri.string().optional(),title:Ri.string().optional(),forwardSubagentText:Ri.boolean().optional(),agentProgressSummaries:Ri.boolean().optional(),includeHookEvents:Ri.boolean().optional(),taskBudget:Ri.object({total:Ri.number().positive()}).strict().optional(),sessionStore:Ri.any().refine((i)=>i===void 0||typeof i==="object"&&i!==null&&typeof i.append==="function"&&typeof i.load==="function",{message:"sessionStore must be an object with append() and load() functions"}).optional(),sessionStoreFlush:Ri.enum(["batched","eager"]).optional(),loadTimeoutMs:Ri.number().int().positive().optional(),settingSources:Ri.array(Ri.enum(["user","project","local"])).optional(),streamingInput:Ri.enum(["auto","always","off"]).optional(),canUseTool:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"canUseTool must be a function"}).optional(),onUserDialog:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onUserDialog must be a function"}).optional(),supportedDialogKinds:Ri.array(Ri.string()).optional(),hooks:Ri.record(Ri.string(),Ri.array(Ri.object({matcher:Ri.string().optional(),hooks:Ri.array(Ri.any()).nonempty()}))).optional(),mcpServers:Ri.record(Ri.string(),Ri.union([Ri.object({type:Ri.literal("stdio").optional(),command:Ri.string(),args:Ri.array(Ri.string()).optional(),env:Ri.record(Ri.string(),Ri.string()).optional()}),Ri.object({type:Ri.literal("sse"),url:Ri.string(),headers:Ri.record(Ri.string(),Ri.string()).optional()}),Ri.object({type:Ri.literal("http"),url:Ri.string(),headers:Ri.record(Ri.string(),Ri.string()).optional()}),Ri.object({type:Ri.literal("sdk"),name:Ri.string(),instance:Ri.any()})])).optional(),verbose:Ri.boolean().optional(),debug:Ri.boolean().optional(),debugFile:Ri.string().optional(),logger:Ri.union([Ri.literal(!1),O84]).optional(),env:Ri.record(Ri.string(),Ri.string().optional()).optional(),additionalDirectories:Ri.array(Ri.string()).optional(),agents:Ri.record(Ri.string(),Ri.object({description:Ri.string(),tools:Ri.array(Ri.string()).optional(),disallowedTools:Ri.array(Ri.string()).optional(),prompt:Ri.string(),model:Ri.string().optional(),mcpServers:Ri.array(Ri.union([Ri.string(),Ri.record(Ri.string(),Ri.any())])).optional(),criticalSystemReminder_EXPERIMENTAL:Ri.string().optional()}).passthrough()).optional(),includePartialMessages:Ri.boolean().optional(),fallbackModel:Ri.string().optional(),forkSession:Ri.boolean().optional(),stderr:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"stderr must be a function"}).optional(),strictMcpConfig:Ri.boolean().optional(),extraArgs:Ri.record(Ri.string(),Ri.union([Ri.string(),Ri.null()])).optional(),persistSession:Ri.boolean().optional(),spawnClaudeCodeProcess:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"spawnClaudeCodeProcess must be a function"}).optional(),sdkOptions:Ri.record(Ri.string(),Ri.any()).optional(),maxToolResultSize:Ri.number().int().min(100).max(1e6).optional(),onQueryCreated:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onQueryCreated must be a function"}).optional(),onStreamStart:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onStreamStart must be a function"}).optional(),onPromptSuggestion:Ri.any().refine((i)=>i===void 0||typeof i==="function",{message:"onPromptSuggestion must be a function"}).optional()}).strict();T84=["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"],U84=["items","additionalItems","additionalProperties","unevaluatedItems","unevaluatedProperties","not","contains","propertyNames","contentSchema","if","then","else"],P84=["prefixItems","anyOf","oneOf","allOf"];I84={debug:(i)=>console.debug(`[DEBUG] ${i}`),info:(i)=>console.info(`[INFO] ${i}`),warn:(i)=>console.warn(`[WARN] ${i}`),error:(i)=>console.error(`[ERROR] ${i}`)},A84={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};k84=`ai-sdk-provider-claude-code/${n84}`;K84=process.platform==="win32"?["APPDATA","COMSPEC","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PATHEXT","SYSTEMDRIVE","SYSTEMROOT","TEMP","TMP","USERNAME","USERPROFILE","WINDIR"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER","LANG","LC_ALL","TMPDIR"],J84=["CLAUDE_CONFIG_DIR"],S84=["HTTP_PROXY","HTTPS_PROXY","NO_PROXY","http_proxy","https_proxy","no_proxy","NODE_EXTRA_CA_CERTS","SSL_CERT_FILE","SSL_CERT_DIR"],Y84=["GCLOUD_PROJECT","CLOUD_ML_REGION"],W84=["ANTHROPIC_","CLAUDE_","AWS_","GOOGLE_"];z84=new Set(["model","abortController","prompt","outputFormat"]),Q84=new Set(["Task","Agent"]);H84=new Set(["notification","status","task_updated","session_state_changed","commands_changed","memory_recall","plugin_install"]);R84={opus:"opus",sonnet:"sonnet",haiku:"haiku"};IF6=jwu()});function Xwu(i,u){let t=["AskUserQuestion","ExitPlanMode","EnterWorktree","ExitWorktree","Config"],f={mcpServers:u?.mcpServers,cwd:u?.cwd??process.cwd(),settingSources:["user","project","local"]},l=mQi();if(l)f.pathToClaudeCodeExecutable=l;if(u?.isPlanMode||u?.toolApprovalLevel==="readonly")f.permissionMode="bypassPermissions",f.disallowedTools=[...t,"Write","Edit","Bash","NotebookEdit"];else f.permissionMode="bypassPermissions",f.disallowedTools=[...t];if(u?.resume)f.resume=u.resume;if(u?.systemPrompt)f.systemPrompt=u.systemPrompt;return jwu({defaultSettings:f})(i)}function Kwu(i){return q84[i]??i}var q84;var WV0=N(()=>{YV0();eQi();q84={"claude-code:opus":"opus","claude-code:opus-1m":"opus[1m]","claude-code:sonnet":"claude-sonnet-5","claude-code:haiku":"haiku","claude-code:fable":"claude-fable-5"}});function mUi(i){return i??void 0}var rUi="/repo";function eUi(i){return GB(i,{ignoreIncompleteToolCalls:!0})}function aUi(i){for(let u=i.length-1;u>=0;u--){let t=i[u];if(!t||t.role!=="user")continue;if(typeof t.content==="string")return t.content;if(Array.isArray(t.content))return t.content.filter((l)=>typeof l==="object"&&l!==null&&l.type==="text").map((l)=>l.text).join(`
|
|
84026
84026
|
`);return""}return""}var Jwu=N(()=>{bf()});function V84(i,u){if(!u)return;i.read+=u.inputTokenDetails?.cacheReadTokens??0,i.write+=u.inputTokenDetails?.cacheWriteTokens??0,i.input+=u.inputTokens??0}function AH(){let i={inputTokens:0,outputTokens:0,totalTokens:0},u={read:0,write:0,input:0},t={inputTokens:0,outputTokens:0,totalTokens:0},f=0,l,c=0;function E($){return $?.openrouter?.usage?.cost??0}return{addStep($,w){if(w!==void 0)l=w;return c=$?.inputTokens??0,i={inputTokens:i.inputTokens+($?.inputTokens??0),outputTokens:i.outputTokens+($?.outputTokens??0),totalTokens:i.totalTokens+($?.totalTokens??0)},V84(u,$),f+=E(w),{...i}},addExternal($){t.inputTokens+=$.inputTokens??0,t.outputTokens+=$.outputTokens??0,t.totalTokens+=$.totalTokens??0},buildStepUsage(){return{inputTokens:i.inputTokens,outputTokens:i.outputTokens,totalTokens:i.totalTokens,contextTokens:c,cachedInputTokens:u.read,inputTokenDetails:{cacheReadTokens:u.read,cacheWriteTokens:u.write,noCacheTokens:i.inputTokens-u.read-u.write},...f>0&&{providerMetadata:{openrouter:{usage:{cost:f}}}}}},buildFinalUsage({totalUsage:$,providerKey:w,fallbackProviderMetadata:d}){let _=l??d,v=f>0&&_?{..._,openrouter:{..._.openrouter??{},usage:{..._.openrouter?.usage??{},cost:f}}}:_,h=$&&(($.inputTokens??0)>0||($.outputTokens??0)>0)?$:i.totalTokens>0?i:$,D=t.inputTokens>0||t.outputTokens>0||t.totalTokens>0;if(!h&&!D)return;let g=h?.inputTokens??0,O=h?.outputTokens??0,Z=h?.totalTokens??0;return{inputTokens:g+t.inputTokens,outputTokens:O+t.outputTokens,reasoningTokens:$?.reasoningTokens??void 0,totalTokens:Z+t.totalTokens,contextTokens:c,cachedInputTokens:u.read,inputTokenDetails:{cacheReadTokens:u.read,cacheWriteTokens:u.write,noCacheTokens:g-u.read-u.write},providerMetadata:xq(w&&v?{...v,[w]:{...v[w]??{},reasoning_details:void 0}}:v)}},totalTokens(){return{...i}},cacheTotals(){return{...u}},cost(){return f}}}var oUi=N(()=>{gf()});function sUi(i){let{input:u}=i,t=AH(),f;return({part:c})=>{if(c.type==="start")return{agent:{id:u.agent.id??null},models:{credentialId:u.models.thinking.credentialId,thinking:{...u.models.thinking,title:u.models.thinking.title??u.models.thinking.id,provider:u.models.thinking.provider??void 0}},created_at:new Date,thread_id:u.threadId};if(c.type==="finish-step"){let E=c.providerMetadata,$=E?.[i.providerMetadataKey],w=i.extractSessionId($);if(w)f=w;return t.addStep(c.usage,E),{usage:t.buildStepUsage()}}if(c.type==="finish"){let E=t.buildFinalUsage({totalUsage:c.totalUsage,providerKey:u.models.thinking.provider});return{...E&&{usage:E},...f&&{codingAgentSessionId:f,codingAgentProvider:i.providerName}}}return}}var Swu=N(()=>{oUi()});function GH(i){return i.kind!=="subtask"&&i.currentThreadTitle===HD}async function*pUi(i,u){let t=i[Symbol.asyncIterator](),f=!1,l=!1,c=t.next().then(($)=>({kind:"main",value:$})),E=u.promise.then(($)=>({kind:"title",value:$?a3i($):null})).catch(($)=>{return console.warn("[harness:title] title generation failed",c$($)),{kind:"title",value:null}});try{while(!f||!l){let $=[];if(!f)$.push(c);if(!l)$.push(E);let w=await Promise.race($);if(w.kind==="main"){if(w.value.done){if(f=!0,!l)u.finish();continue}yield w.value.value,c=t.next().then((d)=>({kind:"main",value:d}));continue}if(l=!0,w.value)yield w.value}}finally{if(!l)u.finish()}}var iPi=()=>{};import{z as LV0}from"zod";function nH(i){let{abortSignal:u,model:t,userMessage:f}=i,l=i.timeoutMs??a84,c=new AbortController,E=()=>c.abort();u?.addEventListener("abort",E,{once:!0});let $,w=setTimeout(()=>{c.abort()},l),d=()=>{$=setTimeout(()=>{c.abort()},e84)},_=(()=>{let h=f.slice(0,o84).trim();return zV0(h)?h:"New chat"})();return{promise:(async()=>{try{let D=(await R0u({model:t,schema:r84,system:m84,messages:[{role:"user",content:f}],temperature:0.2,abortSignal:c.signal})).object.title.replace(/[.!?]$/,"").slice(0,60).trim();if(!zV0(D))return _;return D}catch(h){let D=h;if(D.name==="AbortError"){if(u?.aborted)return console.warn("[decopilot:title] Title generation aborted (parent abort)"),null;return console.warn("[decopilot:title] Title generation timed out; using fallback"),_}return console.error("[decopilot:title] \u274C Failed to generate title:",D.message),_}finally{clearTimeout($),clearTimeout(w),u?.removeEventListener("abort",E)}})(),finish:d}}var r84,m84=`Generate a concise, sentence-case title (3-7 words) that captures the main topic or goal of this session. Use sentence case: capitalize only the first word and proper nouns.
|
|
84027
84027
|
|
|
84028
84028
|
Good examples:
|