decocms 3.16.4 → 3.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/client/assets/{AlertCircle-C7z-V8PW.js → AlertCircle-DtsIkyhv.js} +1 -1
  2. package/dist/client/assets/{ArrowUpRight-DrdPL0e7.js → ArrowUpRight-CC6Cv2i7.js} +1 -1
  3. package/dist/client/assets/{Check-Dd4DY5uR.js → Check-vtGHgjfG.js} +1 -1
  4. package/dist/client/assets/{CheckCircle-FfKjcpCo.js → CheckCircle-BVxEOwgz.js} +1 -1
  5. package/dist/client/assets/{ChevronDown-q6om2VnP.js → ChevronDown--sdzrX52.js} +1 -1
  6. package/dist/client/assets/{ChevronLeft-MgGV-KON.js → ChevronLeft-HhUtQNOL.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-DF_7Jr6-.js → ChevronRight-I6954Qlw.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-CZ2c4QT8.js → ChevronUp-B7_FaTuI.js} +1 -1
  9. package/dist/client/assets/{Container-CLTqJvB-.js → Container-UwZa4Sjq.js} +1 -1
  10. package/dist/client/assets/{DotsVertical-ChEXuCNr.js → DotsVertical-CRhU-CQp.js} +1 -1
  11. package/dist/client/assets/{Eye-Cg3KEYLR.js → Eye-CrIialez.js} +1 -1
  12. package/dist/client/assets/{FilterLines-8Z1EXJU1.js → FilterLines-CcSUEwfK.js} +1 -1
  13. package/dist/client/assets/{Globe01-DhsYVZ78.js → Globe01-CWUyneqk.js} +1 -1
  14. package/dist/client/assets/{HardDrive-I0CJViHA.js → HardDrive-B4ApPRkU.js} +1 -1
  15. package/dist/client/assets/{Key01-BOdS0XJd.js → Key01-D8nYbfp6.js} +1 -1
  16. package/dist/client/assets/{LayoutLeft-Bb0s-28Y.js → LayoutLeft-CYBI43zr.js} +1 -1
  17. package/dist/client/assets/{LinkExternal01-D5bRZZ7Q.js → LinkExternal01-BBQVGsHV.js} +1 -1
  18. package/dist/client/assets/{Monitor01-BMO0nffP.js → Monitor01-BqyNv3z7.js} +1 -1
  19. package/dist/client/assets/{Palette-cVasQJYG.js → Palette-Dc7v0Lbc.js} +1 -1
  20. package/dist/client/assets/{Play-CnLbQjiF.js → Play-Bfu6rzoI.js} +1 -1
  21. package/dist/client/assets/{Plus-C2lPEpk2.js → Plus-CAk921Ey.js} +1 -1
  22. package/dist/client/assets/{RefreshCcw01-DkjqduXo.js → RefreshCcw01-CJHsMXtu.js} +1 -1
  23. package/dist/client/assets/{SearchMd-BZ5uFVyv.js → SearchMd-BGGjtsz7.js} +1 -1
  24. package/dist/client/assets/{Settings02-CkecSEd-.js → Settings02-B3pc9FAS.js} +1 -1
  25. package/dist/client/assets/{Shield01-DHeMOigW.js → Shield01-CevvPkir.js} +1 -1
  26. package/dist/client/assets/{Star01-CcEuFfec.js → Star01-B2sYJOUY.js} +1 -1
  27. package/dist/client/assets/{Stars01-CbHt_6-5.js → Stars01-ChUleI_g.js} +1 -1
  28. package/dist/client/assets/{Stars02-BqzITFM8.js → Stars02-DR0TfdJs.js} +1 -1
  29. package/dist/client/assets/{Sun-iU2rGybo.js → Sun-D0Tw1Afb.js} +1 -1
  30. package/dist/client/assets/{SwitchHorizontal01-CJ4InXIK.js → SwitchHorizontal01-UKGE6L3t.js} +1 -1
  31. package/dist/client/assets/{Tool01-G_qe4xr9.js → Tool01-NFK8H_gw.js} +1 -1
  32. package/dist/client/assets/{Trash01-CLPIYWB0.js → Trash01-BV0g0LQO.js} +1 -1
  33. package/dist/client/assets/{Upload01-CMufGYXQ.js → Upload01-VAW7QmhA.js} +1 -1
  34. package/dist/client/assets/{User01-DlH74QWo.js → User01-DaoMnnxf.js} +1 -1
  35. package/dist/client/assets/{Users01-Cu8ZTFie.js → Users01-BlMLYKx0.js} +1 -1
  36. package/dist/client/assets/{Users03-DzGgBVNT.js → Users03-B7HqdPkm.js} +1 -1
  37. package/dist/client/assets/{X-DcUCV36T.js → X-Tdfyixv6.js} +1 -1
  38. package/dist/client/assets/{XCircle-BLtazoy5.js → XCircle-B14veD9i.js} +1 -1
  39. package/dist/client/assets/{XClose-n_6qPNJf.js → XClose-Blplvetp.js} +1 -1
  40. package/dist/client/assets/{Zap-kDewRIEE.js → Zap-DXci2BUM.js} +1 -1
  41. package/dist/client/assets/{ZapSquare-NBV5NA7W.js → ZapSquare-DzpMrwRR.js} +1 -1
  42. package/dist/client/assets/{ZoomOut-B-M27CLc.js → ZoomOut-CT9E4Qhq.js} +1 -1
  43. package/dist/client/assets/{access-gate-fR4pq-L8.js → access-gate-DiknBkEw.js} +1 -1
  44. package/dist/client/assets/{accordion-C2y9Pzbc.js → accordion-CtA-xauN.js} +1 -1
  45. package/dist/client/assets/{add-section-modal-BOgkPRCm.js → add-section-modal-DlaN-qAI.js} +1 -1
  46. package/dist/client/assets/agent-capabilities-CmInpctC.js +3 -0
  47. package/dist/client/assets/{agent-icon-BfUtMte0.js → agent-icon-zELPPL2m.js} +1 -1
  48. package/dist/client/assets/{agent-icons-hvA3E_Do.js → agent-icons-x_5O6PzC.js} +1 -1
  49. package/dist/client/assets/{agents-list-CQqZGdLA.js → agents-list-Bszw9lN6.js} +1 -1
  50. package/dist/client/assets/{ai-providers-Db0YGoZI.js → ai-providers-BEo_1p1S.js} +1 -1
  51. package/dist/client/assets/{alert-BxLN58Xd.js → alert-CfEuO2dR.js} +1 -1
  52. package/dist/client/assets/{alert-dialog-DjURN0Wv.js → alert-dialog-CU8ZYA21.js} +1 -1
  53. package/dist/client/assets/app-editor-Qvrv5Jlv.js +1 -0
  54. package/dist/client/assets/{auth-catchall-BNZ78VhB.js → auth-catchall-CKY6yLJq.js} +1 -1
  55. package/dist/client/assets/{auth-split-layout-CZSuZiHz.js → auth-split-layout-CUDE_iDP.js} +1 -1
  56. package/dist/client/assets/{automation-list-row-0aY-wHMF.js → automation-list-row-CH--ZnEF.js} +1 -1
  57. package/dist/client/assets/{automation-runs-Cw5GALKR.js → automation-runs-yWXMKQTD.js} +1 -1
  58. package/dist/client/assets/{automations-DVaLtsbr.js → automations-qMMzEqRX.js} +1 -1
  59. package/dist/client/assets/{avatar-CPeVEYzP.js → avatar-DXzeiiiO.js} +1 -1
  60. package/dist/client/assets/{badge-Sld47C66.js → badge-zsFX23zy.js} +1 -1
  61. package/dist/client/assets/{brand-context-D5g1kbTY.js → brand-context-4BmiQwTN.js} +1 -1
  62. package/dist/client/assets/{buckets-CQrAL2WH.js → buckets-CCG_qbCS.js} +1 -1
  63. package/dist/client/assets/{calendar-D_lfc4-f.js → calendar-Crmr906f.js} +1 -1
  64. package/dist/client/assets/{capability-load-error-DntEpZQa.js → capability-load-error-BravgH0a.js} +1 -1
  65. package/dist/client/assets/{card-BoIkIdKw.js → card-D5IvObwB.js} +1 -1
  66. package/dist/client/assets/{chat-context-BllQ4wIO.js → chat-context-LqGwxYAF.js} +1 -1
  67. package/dist/client/assets/{checkbox-C3vxmcaB.js → checkbox-OOQKZtC_.js} +1 -1
  68. package/dist/client/assets/{cli-auth-success-Dp4mfXYL.js → cli-auth-success-DhicbQB5.js} +1 -1
  69. package/dist/client/assets/{collection-detail-072-Guix.js → collection-detail-BbVWcOS7.js} +1 -1
  70. package/dist/client/assets/{collection-display-button-AGMnoaLE.js → collection-display-button-D5hrgHkh.js} +1 -1
  71. package/dist/client/assets/{collection-search-BRyG5fy4.js → collection-search-DGClB-Gb.js} +1 -1
  72. package/dist/client/assets/{collection-table-wrapper-DE0BllZg.js → collection-table-wrapper-VWPtHFYE.js} +1 -1
  73. package/dist/client/assets/{collection-tabs-CZlafXgn.js → collection-tabs-BQEO65ib.js} +1 -1
  74. package/dist/client/assets/{collections-OmqpbRHJ.js → collections-C_m5uhEc.js} +1 -1
  75. package/dist/client/assets/{command-BqieK0cx.js → command-DzVv4p4m.js} +1 -1
  76. package/dist/client/assets/{connect-desktop-dialog-BBJ3ZBYq.js → connect-desktop-dialog-CZAbswkh.js} +1 -1
  77. package/dist/client/assets/{connection-card-Bm_mNiXs.js → connection-card-CDttZAWV.js} +1 -1
  78. package/dist/client/assets/{connection-detail-D3-zF53f.js → connection-detail-CWgx3CGW.js} +1 -1
  79. package/dist/client/assets/{connection-form-helpers-B7Hi4AVw.js → connection-form-helpers-BgC55lri.js} +1 -1
  80. package/dist/client/assets/{connections-DxOhnozc.js → connections-BTE9TZOq.js} +1 -1
  81. package/dist/client/assets/{constants-BN3EnnK5.js → constants-BCfpLdj8.js} +1 -1
  82. package/dist/client/assets/{decopilot-sse-pool-Cl6vHzIb.js → decopilot-sse-pool-nEWZU_3q.js} +1 -1
  83. package/dist/client/assets/{dialog-qOMSPeFV.js → dialog-CLtwKT7T.js} +1 -1
  84. package/dist/client/assets/{domain-settings-e9uj9KSS.js → domain-settings-DnOdm4Gh.js} +1 -1
  85. package/dist/client/assets/{drawer-DgiouEht.js → drawer-BewkeO2E.js} +1 -1
  86. package/dist/client/assets/{dropdown-menu-CD9L0NpR.js → dropdown-menu-COlaUXPy.js} +1 -1
  87. package/dist/client/assets/{dynamic-plugin-layout-B38NSbtx.js → dynamic-plugin-layout-CboUuftB.js} +1 -1
  88. package/dist/client/assets/{empty-state-kyadFKbp.js → empty-state-CZdqlaa-.js} +1 -1
  89. package/dist/client/assets/{empty-state-oUgpGFDY.js → empty-state-Cm-JBk7p.js} +1 -1
  90. package/dist/client/assets/{extract-connection-data-DUfac6xd.js → extract-connection-data-F1Fp1AMr.js} +1 -1
  91. package/dist/client/assets/{features-DVXCwn_d.js → features-BPybOqVM.js} +1 -1
  92. package/dist/client/assets/{file-explorer-QJj5R7Vm.js → file-explorer-Dfpjlouj.js} +1 -1
  93. package/dist/client/assets/{file-type-icon-D-cvDShc.js → file-type-icon-DfjHHTyz.js} +1 -1
  94. package/dist/client/assets/{files-GjQ9-UbG.js → files-Jq4xd8Mr.js} +1 -1
  95. package/dist/client/assets/{form-DCJSDrN9.js → form-hhL2WFgR.js} +1 -1
  96. package/dist/client/assets/{general-C0YCcLeg.js → general-Bs5LdWae.js} +1 -1
  97. package/dist/client/assets/{generate-id-BxP01XU4.js → generate-id-D01ICZCx.js} +1 -1
  98. package/dist/client/assets/{github-repo-picker-DE4TiJ6h.js → github-repo-picker-CvAVXvxg.js} +1 -1
  99. package/dist/client/assets/{header-tab-button-6bRdq2K-.js → header-tab-button-D5FYUotU.js} +1 -1
  100. package/dist/client/assets/{hover-card-lMFQF9-F.js → hover-card-CeQv0SdX.js} +1 -1
  101. package/dist/client/assets/{image-field-Dzduad-d.js → image-field-DlsH5ki1.js} +1 -1
  102. package/dist/client/assets/{index-Brd11Ohc.js → index-8WMbGW3I.js} +1 -1
  103. package/dist/client/assets/{index-OvgvLmj6.js → index-BTfRGSGJ.js} +1 -1
  104. package/dist/client/assets/{index-Bm7p6st-.js → index-BZAd5qB-.js} +1 -1
  105. package/dist/client/assets/{index-DDQ1B6Aj.js → index-BsTDIiyh.js} +1 -1
  106. package/dist/client/assets/{index-BIms-A8c.js → index-C2ou5Sih.js} +1 -1
  107. package/dist/client/assets/{index-CvOh-PKX.js → index-C3xxqIK9.js} +1 -1
  108. package/dist/client/assets/{index-Ddo-OAlk.js → index-CW2GDOZp.js} +3 -3
  109. package/dist/client/assets/{index-HfFXcyYk.js → index-CZHEDR-7.js} +1 -1
  110. package/dist/client/assets/{index-CtHmN2ln.js → index-CtKv8aMq.js} +1 -1
  111. package/dist/client/assets/{index-BLl7lttY.js → index-Cu5tt_hf.js} +1 -1
  112. package/dist/client/assets/{index-CGbH7bcb.js → index-DVjiRpca.js} +1 -1
  113. package/dist/client/assets/{index-CqTgM-6C.js → index-DljQCipR.js} +1 -1
  114. package/dist/client/assets/{index-CvgbrWNJ.js → index-Dtlw9Wg_.js} +1 -1
  115. package/dist/client/assets/{index-CtGs1DJJ.js → index-IBdkM0WT.js} +4 -4
  116. package/dist/client/assets/{index-UyCB-Rx1.js → index-MDvkqSr6.js} +1 -1
  117. package/dist/client/assets/{index-redirect-DVYvuCCP.js → index-redirect-BQ64Fw6U.js} +1 -1
  118. package/dist/client/assets/{infiniteQueryObserver-DVXVEIds.js → infiniteQueryObserver-CNU9jr7j.js} +1 -1
  119. package/dist/client/assets/{input-rSCTpjle.js → input-C6I0qBHa.js} +1 -1
  120. package/dist/client/assets/{integration-icon-Bud2iScJ.js → integration-icon-CRQNKwzw.js} +1 -1
  121. package/dist/client/assets/{label-B7rNFDmP.js → label-CBS86XNa.js} +1 -1
  122. package/dist/client/assets/{layout-CEqxg3rT.js → layout-f-vBvuP7.js} +1 -1
  123. package/dist/client/assets/{login-CapaPVFw.js → login-mW1jrlie.js} +1 -1
  124. package/dist/client/assets/{members-EJxlsGI5.js → members-C0DJ4-OC.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-CqDQuYzQ.js → monaco-editor--4Yuy9-K.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-CC0b-8JY.js → monitoring-stats-row-B05aJEZ3.js} +1 -1
  127. package/dist/client/assets/{oauth-callback-CWWtjtNz.js → oauth-callback-BAaF4Jac.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-ai-provider-C52td6lP.js → oauth-callback-ai-provider-CXA6h4bA.js} +1 -1
  129. package/dist/client/assets/{onboarding-B3pW3OTI.js → onboarding-DwclTGQV.js} +1 -1
  130. package/dist/client/assets/{org-install-BKl8mAvw.js → org-install-ClS1U1Is.js} +1 -1
  131. package/dist/client/assets/{org-layout-B6_x4zIK.js → org-layout-D2q337za.js} +1 -1
  132. package/dist/client/assets/{org-plugin-layout-CCB1NusG.js → org-plugin-layout-BU42ml-u.js} +1 -1
  133. package/dist/client/assets/{page-seo-form-enQgxFv1.js → page-seo-form-BSUK8MM8.js} +1 -1
  134. package/dist/client/assets/page-seo-sheet-rUbxuV0U.js +1 -0
  135. package/dist/client/assets/{pair-B1riNa41.js → pair-CZ7RQwEQ.js} +1 -1
  136. package/dist/client/assets/{plugin-empty-state-CTuwNPDg.js → plugin-empty-state-DUHVGpp4.js} +1 -1
  137. package/dist/client/assets/{plugin-header-CDXeYEXC.js → plugin-header-Ce72Z8AJ.js} +1 -1
  138. package/dist/client/assets/{plugin-layout-CaUNVm6a.js → plugin-layout-quK7uCnU.js} +1 -1
  139. package/dist/client/assets/{popover-C9laUh6-.js → popover-Cb-Bmegp.js} +1 -1
  140. package/dist/client/assets/{post-editor-lhgneqmv.js → post-editor-BAaD8Gds.js} +1 -1
  141. package/dist/client/assets/{primitives-B4sR9JrK.js → primitives-D8jiHpwv.js} +1 -1
  142. package/dist/client/assets/{profile-pHe9Ajxu.js → profile-B_6YhXTS.js} +1 -1
  143. package/dist/client/assets/project-app-view-DLZKJqsT.js +1 -0
  144. package/dist/client/assets/record-editor-DV-uP4sg.js +1 -0
  145. package/dist/client/assets/registry-BdCcAkG7.js +2 -0
  146. package/dist/client/assets/{registry-layout-BIYDgiNs.js → registry-layout-CCF3dO1N.js} +1 -1
  147. package/dist/client/assets/{require-capability-CLzzkYsu.js → require-capability-9UoybC--.js} +1 -1
  148. package/dist/client/assets/{required-auth-layout-DdJg8zF9.js → required-auth-layout-chyvqjm-.js} +1 -1
  149. package/dist/client/assets/{reset-password-nThxnoX9.js → reset-password-bYeIRZhU.js} +1 -1
  150. package/dist/client/assets/{resizable-D9zGGmNX.js → resizable-C3e36PAj.js} +1 -1
  151. package/dist/client/assets/{roles-Cp9Isv-V.js → roles-DUk2EDKN.js} +1 -1
  152. package/dist/client/assets/{save-status-Wb7i0dV6.js → save-status-SrY_Xvn_.js} +1 -1
  153. package/dist/client/assets/{schema-form-yX6Ft6zW.js → schema-form-q1GGwsV5.js} +1 -1
  154. package/dist/client/assets/{scroll-area-lnnHcoAD.js → scroll-area-DqzfAJq4.js} +1 -1
  155. package/dist/client/assets/{search-input-DwibiVVh.js → search-input-dUUxotu4.js} +1 -1
  156. package/dist/client/assets/{secrets-BDyxrSjf.js → secrets--HC37_lL.js} +1 -1
  157. package/dist/client/assets/{sections-editor-DUAAqhpr.js → sections-editor-9HzWjIQN.js} +1 -1
  158. package/dist/client/assets/{select-LFt-mET5.js → select-CuTEW-jA.js} +1 -1
  159. package/dist/client/assets/select-model-DeVtvLgk.js +1 -0
  160. package/dist/client/assets/{seo-editor-DCSDlOjD.js → seo-editor-CxXb6Pa5.js} +1 -1
  161. package/dist/client/assets/{settings-layout-wrO6UXp0.js → settings-layout-DsImRu68.js} +1 -1
  162. package/dist/client/assets/{settings-section-nFhQ9DC2.js → settings-section-Dqo82vZl.js} +1 -1
  163. package/dist/client/assets/{sheet-pqbHPkyu.js → sheet-XNQn2l1w.js} +1 -1
  164. package/dist/client/assets/{shell-controls-DJGk-Cm5.js → shell-controls-DOdJ_gGX.js} +1 -1
  165. package/dist/client/assets/shell-layout-BU6DfdCA.js +1 -0
  166. package/dist/client/assets/{shell-route-loading-CIX4Wpf7.js → shell-route-loading-D_OJep1W.js} +1 -1
  167. package/dist/client/assets/{sidebar-BZQ9ZuwD.js → sidebar-BVvI-fKb.js} +1 -1
  168. package/dist/client/assets/{skeleton-DDFad7Zm.js → skeleton-BsmA3SJi.js} +1 -1
  169. package/dist/client/assets/{sortable.esm-BmQU85RQ.js → sortable.esm-BLbNDEWA.js} +1 -1
  170. package/dist/client/assets/{spinner-DecrbM2u.js → spinner-CA6Z7ply.js} +1 -1
  171. package/dist/client/assets/{sso-uPYu69iU.js → sso-CaRqQ4Z-.js} +1 -1
  172. package/dist/client/assets/{store-DxDAvQny.js → store-D79L8ARY.js} +1 -1
  173. package/dist/client/assets/store-registry-RjLPX_BT.js +2 -0
  174. package/dist/client/assets/{switch-BB-CM41R.js → switch-kiGGiVP7.js} +1 -1
  175. package/dist/client/assets/{tab-id-CgZSqh3C.js → tab-id-AROsVU94.js} +1 -1
  176. package/dist/client/assets/{table-D77MLzgL.js → table-D-3eWTFI.js} +1 -1
  177. package/dist/client/assets/{tabs-DCe9cJFy.js → tabs-_BMD3gqc.js} +1 -1
  178. package/dist/client/assets/{task-status-COuLaDdz.js → task-status-DDOPfPO7.js} +1 -1
  179. package/dist/client/assets/{textarea-Dd_nswrz.js → textarea-CvogFpDT.js} +1 -1
  180. package/dist/client/assets/{toggle-group-CVhoCxfd.js → toggle-group-BAx4pQQl.js} +1 -1
  181. package/dist/client/assets/{toolbar-hSa6Dbq7.js → toolbar-CcJJYCIE.js} +1 -1
  182. package/dist/client/assets/{tools-list-DuzN2FYL.js → tools-list-C2KBBz4b.js} +1 -1
  183. package/dist/client/assets/{tooltip-BUQdgInQ.js → tooltip-6V7elEEX.js} +1 -1
  184. package/dist/client/assets/{types-C1v54Mz6.js → types-fKs_ggmz.js} +1 -1
  185. package/dist/client/assets/{use-ai-providers-B_B7XI7_.js → use-ai-providers-BSAUX_gL.js} +1 -1
  186. package/dist/client/assets/{use-automations-DH2iF1St.js → use-automations-ByU0cONY.js} +1 -1
  187. package/dist/client/assets/{use-capability-BGUE7EVy.js → use-capability-DLwHss1A.js} +1 -1
  188. package/dist/client/assets/{use-collections-DFTbd6Fl.js → use-collections-BauLzZZO.js} +1 -1
  189. package/dist/client/assets/{use-connection-lE__8xdh.js → use-connection-C4GFr9nL.js} +1 -1
  190. package/dist/client/assets/{use-copy-ZYwX79XH.js → use-copy-B4x7tAnY.js} +1 -1
  191. package/dist/client/assets/{use-create-virtual-mcp-B_aHPeoS.js → use-create-virtual-mcp-CP1TTRIQ.js} +1 -1
  192. package/dist/client/assets/{use-debounced-autosave-B34gfDHg.js → use-debounced-autosave-tQOo4KW5.js} +1 -1
  193. package/dist/client/assets/{use-delete-connection-CDUrp1iY.js → use-delete-connection-CvS5aoFM.js} +1 -1
  194. package/dist/client/assets/{use-file-configs-Cax2DWWv.js → use-file-configs-DXuMASqs.js} +1 -1
  195. package/dist/client/assets/{use-infinite-scroll-hBDGyHUM.js → use-infinite-scroll-CUCni0HP.js} +1 -1
  196. package/dist/client/assets/{use-list-state-xrbgUm4z.js → use-list-state-Cy-nbUe7.js} +1 -1
  197. package/dist/client/assets/{use-mcp-prompts-Dxg9Un5w.js → use-mcp-prompts-r6vl6hj5.js} +1 -1
  198. package/dist/client/assets/{use-mcp-tools-QU_D_i6C.js → use-mcp-tools-BH6fBXOQ.js} +1 -1
  199. package/dist/client/assets/{use-members-BWJ8hwfe.js → use-members-CN7LSdK8.js} +1 -1
  200. package/dist/client/assets/{use-navigate-to-agent-Cc-xymgp.js → use-navigate-to-agent-B17xxfnF.js} +1 -1
  201. package/dist/client/assets/{use-org-auth-client-NsurVUJ9.js → use-org-auth-client-Ct06vKxv.js} +1 -1
  202. package/dist/client/assets/{use-org-sso-DLBFty4l.js → use-org-sso-VGIrGw_f.js} +1 -1
  203. package/dist/client/assets/{use-organization-roles-BWWLZ7O1.js → use-organization-roles-CTeY8LZY.js} +1 -1
  204. package/dist/client/assets/{use-organization-settings-CCbA9nGy.js → use-organization-settings--FTRiCSw.js} +1 -1
  205. package/dist/client/assets/{use-registry-connections-DLPkHVYT.js → use-registry-connections-D9b3sQhT.js} +1 -1
  206. package/dist/client/assets/{use-secrets-cpRcdu7B.js → use-secrets-YYVI-1hB.js} +1 -1
  207. package/dist/client/assets/{use-status-sounds-B2yZVdDL.js → use-status-sounds-BDpAOn6X.js} +1 -1
  208. package/dist/client/assets/{use-view-mode-DeAHyjDR.js → use-view-mode-4iMRc-bf.js} +1 -1
  209. package/dist/client/assets/{use-virtual-mcp-BlTQLNpO.js → use-virtual-mcp-BzRoDsnX.js} +1 -1
  210. package/dist/client/assets/useInfiniteQuery-DKdeEHtH.js +1 -0
  211. package/dist/client/assets/{useRouterState-BDC7x_pD.js → useRouterState-DwQFoqEO.js} +1 -1
  212. package/dist/client/assets/useSuspenseInfiniteQuery-BgTbRsAD.js +1 -0
  213. package/dist/client/assets/{user-CJzOQ38j.js → user-CEZjs4lV.js} +1 -1
  214. package/dist/client/assets/{view-mode-toggle-BRumGdwQ.js → view-mode-toggle-BwZQDE89.js} +1 -1
  215. package/dist/client/assets/{workflow-C89XsL5x.js → workflow-2WDykuxZ.js} +1 -1
  216. package/dist/client/assets/workflow-detail-B48uxbIE.js +1 -0
  217. package/dist/client/index.html +1 -1
  218. package/dist/server/cli.js +6 -5
  219. package/dist/server/server.js +4 -4
  220. package/package.json +1 -1
  221. package/dist/client/assets/agent-capabilities-CsVK4Iyy.js +0 -3
  222. package/dist/client/assets/app-editor-C6PYtYB9.js +0 -1
  223. package/dist/client/assets/page-seo-sheet-8AFg5HN-.js +0 -1
  224. package/dist/client/assets/project-app-view-CLH-EuPS.js +0 -1
  225. package/dist/client/assets/record-editor-Cm14ALiS.js +0 -1
  226. package/dist/client/assets/registry-B-mQZydb.js +0 -2
  227. package/dist/client/assets/select-model-C3GfXMo3.js +0 -1
  228. package/dist/client/assets/shell-layout-Chk-dikt.js +0 -1
  229. package/dist/client/assets/store-registry-B62lR_g6.js +0 -2
  230. package/dist/client/assets/useInfiniteQuery-FZ-eOLUd.js +0 -1
  231. package/dist/client/assets/useSuspenseInfiniteQuery-DY0Najlz.js +0 -1
  232. package/dist/client/assets/workflow-detail-CXHAQziO.js +0 -1
@@ -67404,6 +67404,7 @@ function createClaudeCodeModel(modelId, options) {
67404
67404
  }
67405
67405
  var CLAUDE_CODE_SDK_MODELS = {
67406
67406
  "claude-code:opus": "opus",
67407
+ "claude-code:opus-1m": "claude-opus-4.8-1m",
67407
67408
  "claude-code:sonnet": "sonnet",
67408
67409
  "claude-code:haiku": "haiku",
67409
67410
  "claude-code:fable": "claude-fable-5"
@@ -104791,7 +104792,7 @@ ${c.stack}`;f.reject(d)}else f.resolve(_)}});return $.requestSubject=i,this.prot
104791
104792
  `);if(g===-1)return;let h=$.subarray(0,g).toString("utf8"),E=$.subarray(g+4),v=h.split(`\r
104792
104793
  `,1)[0]??"";if(!/^HTTP\/1\.[01] 101(?:\s|$)/.test(v)){M8(i,1011,t.upstreamErrorReason);try{c.end()}catch{}return}d=!0,i.data.upstream=c;let r=j9l((x,O)=>{try{if(x===1)i.send(O.toString("utf8"));else if(x===2)i.send(O);else if(x===8){let{code:y,reason:X}=k9l(O);M8(i,y,X);try{c.end()}catch{}}}catch{}});if(c.removeAllListeners("data"),E.length>0)r(E);c.on("data",(x)=>r(x));for(let x of i.data.pending)try{c.write(xki(x,!0))}catch{}i.data.pending.length=0})}function W9l(i,t){let u=[`GET ${i} HTTP/1.1`];for(let[l,n]of Object.entries(t))u.push(`${l}: ${n}`);return u.push("",""),u.join(`\r
104793
104794
  `)}function M8(i,t,u){try{if(t!==void 0)i.close(t,u??"");else i.close()}catch{}}function xki(i,t,u){let l,n;if(typeof i==="string")l=Buffer.from(i,"utf8"),n=1;else if(i instanceof ArrayBuffer)l=Buffer.from(i),n=2;else if(Buffer.isBuffer(i))l=i,n=2;else l=Buffer.from(i),n=2;let f=u??n,c=l.length,$=[];$.push(128|f&15);let d=t?128:0;if(c<126)$.push(d|c);else if(c<65536)$.push(d|126,c>>8&255,c&255);else $.push(d|127,0,0,0,0),$.push(c>>>24&255,c>>>16&255,c>>>8&255,c&255);if(t){let _=USt(4),g=Buffer.alloc(c);for(let h=0;h<c;h++)g[h]=l[h]^_[h&3];return Buffer.concat([Buffer.from($),_,g])}return Buffer.concat([Buffer.from($),l])}function k9l(i){if(i.length<2)return{code:1000,reason:""};return{code:i.readUInt16BE(0),reason:i.subarray(2).toString("utf8")}}function j9l(i){let t=Buffer.alloc(0);return(u)=>{t=t.length===0?u:Buffer.concat([t,u]);while(!0){if(t.length<2)return;let l=t[0],n=t[1],f=l&15,c=(n&128)!==0,$=n&127,d=2;if($===126){if(t.length<d+2)return;$=t[d]<<8|t[d+1],d+=2}else if($===127){if(t.length<d+8)return;$=t[d+4]*16777216+(t[d+5]<<16|t[d+6]<<8|t[d+7]),d+=8}let _=null;if(c){if(t.length<d+4)return;_=t.subarray(d,d+4),d+=4}if(t.length<d+$)return;let g=t.subarray(d,d+$);if(_){let h=Buffer.alloc($);for(let E=0;E<$;E++)h[E]=g[E]^_[E&3];g=h}t=t.subarray(d+$),i(f,g)}}}var A9l=256;var ISt=w(()=>{JSt()});function BSt(i){if(typeof i!=="string"||i.length===0)return null;let t=i.lastIndexOf(":");if(i.startsWith("["))return null;let l=(t>=0?i.slice(0,t):i).replace(/\.$/,"").toLowerCase(),n=".localhost";if(!l.endsWith(n))return null;let f=l.slice(0,-n.length);if(f.length===0)return null;if(f.includes("."))return null;return f}async function QSt(i){let t=ZSt({maxPendingFrames:i.maxPendingWsFrames??S9l,backlogOverflowReason:"ingress backlog overflow"}),u=Bun.serve({port:i.port,hostname:"127.0.0.1",idleTimeout:0,async fetch(l,n){let f=l.headers.get("host"),c=BSt(f);if(!c)return new Response("not found",{status:404});let $=i.lookupSandboxPort(c);if(!$){if(l.headers.get("upgrade")==="websocket")return new Response("unknown handle",{status:404});return new Response(z9l,{status:503,headers:{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store","Retry-After":"1"}})}if(l.headers.get("upgrade")==="websocket"){let h=new URL(l.url);if(!n.upgrade(l,{data:FSt({port:$,pathQuery:`${h.pathname}${h.search}`,protocols:TSt(l.headers)})}))return new Response("ws upgrade failed",{status:400});return}let d=new URL(l.url),_=`http://127.0.0.1:${$}${d.pathname}${d.search}`,g=new Headers(l.headers);return g.set("host",`127.0.0.1:${$}`),fetch(_,{method:l.method,headers:g,body:l.body,redirect:"manual"})},websocket:{open:t.open,message:t.message,close:t.close}});return{port:u.port??0,async stop(){u.stop(!0)}}}var S9l=256,z9l='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the local sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>';var YSt=w(()=>{ISt()});async function Dki(i=C9l){let t=["decopilot-sandbox","body-offload"],[u,l]=await Promise.all([i.detectClaudeCode().catch(()=>!1),i.detectCodex().catch(()=>!1)]);if(u)t.push("claude-code");if(l)t.push("codex");return t}function K9l(i){return b9l.filter((t)=>!i.includes(t))}function H9l(i,t){let u=t.filter((l)=>!i.includes(l));return i.push(...u),u}function PSt(i,t={}){let u=t.detect??(()=>Dki()),l=setInterval(()=>{if(K9l(i).length===0)return;u().then((n)=>{let f=H9l(i,n);if(f.length>0)t.onChange?.(f)}).catch(()=>{})},t.intervalMs??60000);return l.unref?.(),()=>clearInterval(l)}async function R9l(){try{let{query:i}=await import("@anthropic-ai/claude-agent-sdk"),t=i({prompt:"",options:{maxTurns:1}}),u=await t.accountInfo();return t.return(void 0),Boolean(u.email)}catch{return!1}}async function L9l(){try{let i=Bun.spawn(["codex","--version"],{stdout:"ignore",stderr:"ignore"}),t=setTimeout(()=>i.kill(),1e4),u=await i.exited;return clearTimeout(t),u===0}catch{return!1}}var b9l,C9l;var ASt=w(()=>{b9l=["claude-code","codex"];C9l={detectClaudeCode:R9l,detectCodex:L9l}});import{randomBytes as e9l}from"crypto";import{mkdir as M9l,readFile as q9l,writeFile as V9l}from"fs/promises";import{dirname as a9l,join as m9l}from"path";function o9l(i){return m9l(i,"machine-id")}async function GSt(i){let t=o9l(i);try{let n=(await q9l(t,"utf8")).trim();if(n)return n}catch{}let u=e9l(16).toString("hex");return await M9l(a9l(t),{recursive:!0}),await V9l(t,u),u}var WSt=()=>{};import{randomBytes as s9l}from"crypto";import{mkdir as p9l}from"fs/promises";import{createServer as iNl}from"net";import{join as tNl}from"path";function kSt(i,t){return Error(`sandbox failed to start: ${i}`,{cause:t})}function uNl(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function lNl(i){if(i instanceof Error){let t=i.cause;if(t instanceof Error&&t.message)return t.message;return i.message}return String(i)}function jSt(i){let t=i.maxSandboxes??20,u=new Map,l=i.pickPort??nNl,n=i.fetchImpl??fetch,f=i.resolvePreviewUrl??((E,v)=>`http://127.0.0.1:${v}`),c=(E)=>{try{i.onEvent?.(E)}catch{}},$=async(E)=>{let v=new AbortController,r=setTimeout(()=>v.abort(),1500);try{let x=await n(`${E}/health`,{signal:v.signal});if(!x.ok)console.warn(`[user-desktop] probe ${E}/health \u2192 ${x.status} (treating as dead)`);return x.ok}catch(x){return console.warn(`[user-desktop] probe ${E}/health failed: ${x instanceof Error?x.message:String(x)} (treating as dead)`),!1}finally{clearTimeout(r)}},d=(E)=>{console.warn(`[user-desktop] evicting dead daemon handle=${E.handle} port=${E.port}`);try{E.process.kill("SIGTERM")}catch{}if(u.get(E.handle)===E)u.delete(E.handle),c({handle:E.handle,phase:"evicted"})},_=new Map;function g(){if(u.size<t)return;let E=[...u.values()].filter((r)=>r.activeDispatchCount===0).sort((r,x)=>r.lastUsedAt-x.lastUsedAt);if(E.length===0){console.warn(`[user-desktop] at cap ${u.size}/${t} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let v=E[0];console.log(`[user-desktop] evicting LRU victim handle=${v.handle} port=${v.port} (cap ${t} reached, size=${u.size})`);try{v.process.kill("SIGTERM")}catch{}u.delete(v.handle),c({handle:v.handle,phase:"evicted"})}let h=async(E)=>{c({handle:E.handle,phase:"spawning"}),g();let v=tNl(i.dataDir,"sandboxes",E.handle);await p9l(v,{recursive:!0}),console.log(`[user-desktop] ensure handle=${E.handle} repo=${E.repo?.cloneUrl??"(none)"} branch=${E.repo?.branch??"(none)"} runtime=${E.workload?.runtime??"(autodetect)"} pm=${E.workload?.packageManager??"(autodetect)"}`);let r=s9l(24).toString("hex"),[x,O]=await Promise.all([l(),l()]);console.log(`[user-desktop] spawn handle=${E.handle} port=${x} devPort=${O} workdir=${v}`);let y=await Promise.resolve(i.spawnDaemon({workdir:v,handle:E.handle,port:x,daemonToken:r,offloadAllowedHosts:E.offloadAllowedHosts??[],offloadAllowSameHostDev:E.offloadAllowSameHostDev??!1,orgFsConfigJson:E.orgFsConfigJson}));try{try{await i.waitForHealth(x)}catch(J){throw kSt("the sandbox didn't come online in time",J)}console.log(`[user-desktop] healthy handle=${E.handle} port=${x} \u2014 posting config`);try{await i.postConfig(x,O,{repo:E.repo,workload:E.workload,operator:E.operator},r)}catch(J){throw kSt(uNl(J)?"configuration timed out":"the sandbox rejected its configuration",J)}}catch(J){console.error(`[user-desktop] sandbox bring-up failed handle=${E.handle} port=${x} (killing daemon):`,J);try{y.kill("SIGKILL")}catch{}throw c({handle:E.handle,phase:"failed",error:lNl(J)}),J}let X=`http://127.0.0.1:${x}`,N=f(E.handle,x);console.log(`[user-desktop] ready handle=${E.handle} port=${x} sandboxApiUrl=${X} previewUrl=${N}`);let U={handle:E.handle,port:x,process:y,sandboxApiUrl:X,previewUrl:N,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:r};if(u.set(E.handle,U),c({handle:E.handle,phase:"ready",port:x,previewUrl:N}),y.exited)y.exited.then(()=>{if(u.get(E.handle)===U)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${E.handle} port=${x} \u2014 removing from cache`),u.delete(E.handle),c({handle:E.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${E.handle} port=${x} (already replaced/removed)`)});return{sandboxApiUrl:X,previewUrl:N,port:x}};return{async ensureSandbox(E){let v=u.get(E.handle);if(v){if(await $(v.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${E.handle} port=${v.port} (alive)`),v.lastUsedAt=Date.now(),{sandboxApiUrl:v.sandboxApiUrl,previewUrl:v.previewUrl,port:v.port};console.warn(`[user-desktop] cache stale handle=${E.handle} port=${v.port} \u2014 respawning`),d(v)}let r=_.get(E.handle);if(r)return console.log(`[user-desktop] joining in-flight ensure handle=${E.handle}`),r;let x=h(E).finally(()=>{_.delete(E.handle)});return _.set(E.handle,x),x},proxyPort(E){let v=u.get(E);if(v)v.lastUsedAt=Date.now();return v?.port??null},getDaemonToken(E){return u.get(E)?.daemonToken??null},hasHandle(E){return u.has(E)||_.has(E)},recordHit(E){let v=u.get(E);if(v)v.lastUsedAt=Date.now()},acquireDispatch(E){let v=u.get(E);if(!v)return()=>{};v.activeDispatchCount+=1;let r=!1;return()=>{if(r)return;r=!0;let x=u.get(E);if(x)x.activeDispatchCount=Math.max(0,x.activeDispatchCount-1)}},listSandboxes(){return[...u.values()]},async deleteSandbox(E){let v=u.get(E);if(!v){console.log(`[user-desktop] delete handle=${E} (not found, no-op)`);return}console.log(`[user-desktop] delete handle=${E} port=${v.port}`);try{v.process.kill("SIGTERM")}catch{}u.delete(E),c({handle:E,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${u.size} sandbox(es)`);for(let E of u.values())try{E.process.kill("SIGTERM")}catch{}u.clear()}}}function nNl(){return new Promise((i,t)=>{let u=iNl();u.unref(),u.on("error",t),u.listen(0,"127.0.0.1",()=>{let l=u.address();if(l&&typeof l==="object"){let n=l.port;u.close(()=>i(n))}else u.close(()=>t(Error("could not allocate port")))})})}var SSt=()=>{};import{randomUUID as fNl}from"crypto";import{hostname as cNl}from"os";async function zSt(i){let t=cNl()||void 0;i.monitor?.onMachine?.(t??"this machine");let u=pPt(i.dataDir,{outFd:i.logFd,hotReload:i.hotReload}),l=0,n=jSt({dataDir:i.dataDir,resolvePreviewUrl:(N,U)=>l>0?`http://${N}.localhost:${l}`:`http://127.0.0.1:${U}`,spawnDaemon:async(N)=>{let U={DAEMON_BOOT_ID:fNl(),APP_ROOT:N.workdir,PROXY_PORT:String(N.port),DAEMON_TOKEN:N.daemonToken,OFFLOAD_ALLOWED_HOSTS:N.offloadAllowedHosts.join(","),...N.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(N.orgFsConfigJson){let T=await lAt(i.dataDir);if(T)U.ORGFS_CONFIG=N.orgFsConfigJson,U.ORGFS_RCLONE_PATH=T}let J=await u({workdir:N.workdir,env:U,daemonPort:N.port});return{port:N.port,kill:(T)=>J.kill(T),exited:J.exited.then(()=>{return})}},postConfig:async(N,U,J,T)=>{let Q={port:U};if(J.workload)Q.runtime=J.workload.runtime,Q.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let B={application:Q},P=ih(J.operator??null);if(P)B.operator=P;if(J.repo)B.git={repository:{cloneUrl:J.repo.cloneUrl,branch:J.repo.branch},...J.repo.userName&&J.repo.userEmail?{identity:{userName:J.repo.userName,userEmail:J.repo.userEmail}}:{}};await B8(`http://127.0.0.1:${N}`,T,B)},waitForHealth:async(N)=>{await ili(`http://127.0.0.1:${N}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),f=await QSt({port:i.port,lookupSandboxPort:(N)=>n.proxyPort(N)});l=f.port,console.log(`Local ingress listening on http://127.0.0.1:${f.port} (use http://<handle>.localhost:${f.port}/)`),i.monitor?.onIngress?.(f.port);let c=fAt({provider:n}),$=async()=>{let N=await zw({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!N)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 N.accessToken};console.log(`[link-daemon] transport=pull cluster=${i.clusterBaseUrl}`);let d=await GSt(i.dataDir),_=process.env.npm_package_version??"0.0.0",g=await Dki(),h=PSt(g,{onChange:(N)=>{console.log(`[link-daemon] capabilities detected: +${N.join(",")} (now: ${g.join(",")})`)}}),E=vki({path:`${i.dataDir}/link/outbox.sqlite`}),v=()=>{},r=await DSt({clusterBaseUrl:i.clusterBaseUrl,getAccessToken:$,provider:n,outbox:E,controlHandler:c,capabilities:g,machineId:d,cliVersion:_,previewPort:f.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl} (pull transport)`)},onShutdown:()=>v()}),x,O=new Promise((N)=>{x=N}),y=!1,X=async()=>{if(y)return;y=!0,console.log(`
104794
- Shutting down\u2026`),h();try{await r.close()}catch{}try{await f.stop()}catch{}try{await n.shutdown()}catch{}try{E.close()}catch{}x(0)};return process.on("SIGINT",()=>void X()),process.on("SIGTERM",()=>void X()),v=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms link` to reconnect."),X()},r.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!y)console.error("Cluster connection closed permanently; exiting."),X()}),{stopped:O,stop:X}}var bSt=w(()=>{EGi();HH();iAt();nAt();cAt();OSt();rki();YSt();ASt();WSt();KH();SSt()});function Oki(i){return i.map((t)=>typeof t==="string"?t:String(t)).join(" ")}var E0i;var yki=w(()=>{E0i={name:"decocms",version:"3.16.4",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:e2e":"playwright test","test:e2e:ui":"playwright test --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.2.141","@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.80","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.65","@anthropic-ai/sdk":"^0.96.0","@aws-sdk/client-s3":"^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.17.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.0","@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",kysely:"^0.28.12",nats:"^2.29.3","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.193","@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:*","@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","@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/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-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.191","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","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var ER={};Gi(ER,{printBanner:()=>_Nl,bannerLines:()=>KSt,BANNER_LINES:()=>v0i,BANNER_GRADIENT:()=>r0i});function dNl(i){let t=Number.parseInt(i.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function KSt(i){let t=v0i.map((u,l)=>{let[n,f,c]=dNl(r0i[l]);return`\x1B[38;2;${n};${f};${c}m${u}\x1B[39m`});if(i!==void 0)t.push(`\x1B[2m v${i}\x1B[22m`);return t}function _Nl(i){console.log("");for(let t of KSt(i))console.log(t);console.log("")}var v0i,r0i;var BW=w(()=>{v0i=[" \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 "],r0i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as gNl,Text as HSt}from"ink";import{jsx as hNl,jsxs as RSt}from"react/jsx-runtime";function w0i({version:i}){return RSt(gNl,{flexDirection:"column",marginTop:1,children:[v0i.map((t,u)=>hNl(HSt,{color:r0i[u],children:t},u)),RSt(HSt,{dimColor:!0,children:[" v",i]})]})}var Xki=w(()=>{BW()});var CSt={};Gi(CSt,{subscribeLinkState:()=>Uki,setMachine:()=>wNl,setLogPath:()=>DNl,setIngress:()=>rNl,setDaemonError:()=>xNl,setClusterUrl:()=>vNl,setCluster:()=>ENl,pushSandboxEvent:()=>ONl,getLinkState:()=>Jki,applySandboxEvent:()=>LSt});function LSt(i,t){let u=new Map(i);if(t.phase==="evicted"||t.phase==="deleted")return u.delete(t.handle),u;let l=u.get(t.handle);return u.set(t.handle,{handle:t.handle,port:t.port??l?.port??null,previewUrl:t.previewUrl??l?.previewUrl??null,status:t.phase,error:t.phase==="failed"?t.error??"failed":null}),u}function q8(){for(let i of Nki)i()}function Jki(){return t$}function Uki(i){return Nki.add(i),()=>Nki.delete(i)}function ENl(i){t$={...t$,cluster:i},q8()}function vNl(i){t$={...t$,clusterUrl:i},q8()}function rNl(i,t){t$={...t$,ingressPort:i,ingressUrl:t},q8()}function wNl(i){t$={...t$,machine:i},q8()}function xNl(i){t$={...t$,daemonError:i},q8()}function DNl(i){t$={...t$,logPath:i},q8()}function ONl(i){t$={...t$,sandboxes:LSt(t$.sandboxes,i)},q8()}var t$,Nki;var Tki=w(()=>{t$={cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null},Nki=new Set});var eSt={};Gi(eSt,{LinkApp:()=>NNl});import{Box as u$,Text as l$}from"ink";import{useSyncExternalStore as yNl}from"react";import{jsx as $f,jsxs as LE}from"react/jsx-runtime";function XNl(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function NNl(){let i=yNl(Uki,Jki),t=[...i.sandboxes.values()].sort((u,l)=>u.handle.localeCompare(l.handle));return LE(u$,{flexDirection:"column",children:[$f(w0i,{version:E0i.version}),$f(u$,{marginBottom:1,children:$f(l$,{dimColor:!0,children:"\u2500".repeat(80)})}),$f(u$,{children:i.cluster==="linked"?LE(l$,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?LE(l$,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):LE(l$,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),$f(u$,{children:i.ingressUrl?LE(l$,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):$f(l$,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),$f(u$,{marginBottom:1,children:$f(l$,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${t.length} of ${i.cap} previews`})}),t.length===0?$f(l$,{dimColor:!0,children:"No previews running yet."}):LE(u$,{flexDirection:"column",children:[LE(u$,{children:[$f(u$,{width:x0i.project,flexShrink:0,marginRight:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),$f(u$,{width:x0i.status,flexShrink:0,marginRight:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),$f(u$,{flexGrow:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),t.map((u)=>{let l=XNl(u);return LE(u$,{children:[$f(u$,{width:x0i.project,flexShrink:0,marginRight:1,children:$f(l$,{wrap:"truncate-end",children:u.handle})}),$f(u$,{width:x0i.status,flexShrink:0,marginRight:1,children:$f(l$,{color:l.color,wrap:"truncate-end",children:l.text})}),$f(u$,{flexGrow:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:u.previewUrl??"\u2014"})})]},u.handle)})]}),i.daemonError?$f(u$,{marginTop:1,children:LE(l$,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?$f(u$,{marginTop:1,children:LE(l$,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var x0i;var MSt=w(()=>{yki();Xki();Tki();x0i={project:18,status:14}});var VSt={};Gi(VSt,{runLinkCommand:()=>QNl});import{closeSync as JNl,mkdirSync as UNl,openSync as TNl,writeSync as FNl}from"fs";import{homedir as ZNl}from"os";import{join as qSt}from"path";function INl(i,t){let u={log:console.log,warn:console.warn,error:console.error},l=(n)=>{if(t===void 0)return;try{FNl(t,`${Oki(n)}
104795
+ Shutting down\u2026`),h();try{await r.close()}catch{}try{await f.stop()}catch{}try{await n.shutdown()}catch{}try{E.close()}catch{}x(0)};return process.on("SIGINT",()=>void X()),process.on("SIGTERM",()=>void X()),v=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms link` to reconnect."),X()},r.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!y)console.error("Cluster connection closed permanently; exiting."),X()}),{stopped:O,stop:X}}var bSt=w(()=>{EGi();HH();iAt();nAt();cAt();OSt();rki();YSt();ASt();WSt();KH();SSt()});function Oki(i){return i.map((t)=>typeof t==="string"?t:String(t)).join(" ")}var E0i;var yki=w(()=>{E0i={name:"decocms",version:"3.17.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.2.141","@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.80","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.65","@anthropic-ai/sdk":"^0.96.0","@aws-sdk/client-s3":"^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.17.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.0","@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",kysely:"^0.28.12",nats:"^2.29.3","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.193","@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:*","@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","@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/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-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.191","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","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var ER={};Gi(ER,{printBanner:()=>_Nl,bannerLines:()=>KSt,BANNER_LINES:()=>v0i,BANNER_GRADIENT:()=>r0i});function dNl(i){let t=Number.parseInt(i.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function KSt(i){let t=v0i.map((u,l)=>{let[n,f,c]=dNl(r0i[l]);return`\x1B[38;2;${n};${f};${c}m${u}\x1B[39m`});if(i!==void 0)t.push(`\x1B[2m v${i}\x1B[22m`);return t}function _Nl(i){console.log("");for(let t of KSt(i))console.log(t);console.log("")}var v0i,r0i;var BW=w(()=>{v0i=[" \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 "],r0i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as gNl,Text as HSt}from"ink";import{jsx as hNl,jsxs as RSt}from"react/jsx-runtime";function w0i({version:i}){return RSt(gNl,{flexDirection:"column",marginTop:1,children:[v0i.map((t,u)=>hNl(HSt,{color:r0i[u],children:t},u)),RSt(HSt,{dimColor:!0,children:[" v",i]})]})}var Xki=w(()=>{BW()});var CSt={};Gi(CSt,{subscribeLinkState:()=>Uki,setMachine:()=>wNl,setLogPath:()=>DNl,setIngress:()=>rNl,setDaemonError:()=>xNl,setClusterUrl:()=>vNl,setCluster:()=>ENl,pushSandboxEvent:()=>ONl,getLinkState:()=>Jki,applySandboxEvent:()=>LSt});function LSt(i,t){let u=new Map(i);if(t.phase==="evicted"||t.phase==="deleted")return u.delete(t.handle),u;let l=u.get(t.handle);return u.set(t.handle,{handle:t.handle,port:t.port??l?.port??null,previewUrl:t.previewUrl??l?.previewUrl??null,status:t.phase,error:t.phase==="failed"?t.error??"failed":null}),u}function q8(){for(let i of Nki)i()}function Jki(){return t$}function Uki(i){return Nki.add(i),()=>Nki.delete(i)}function ENl(i){t$={...t$,cluster:i},q8()}function vNl(i){t$={...t$,clusterUrl:i},q8()}function rNl(i,t){t$={...t$,ingressPort:i,ingressUrl:t},q8()}function wNl(i){t$={...t$,machine:i},q8()}function xNl(i){t$={...t$,daemonError:i},q8()}function DNl(i){t$={...t$,logPath:i},q8()}function ONl(i){t$={...t$,sandboxes:LSt(t$.sandboxes,i)},q8()}var t$,Nki;var Tki=w(()=>{t$={cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null},Nki=new Set});var eSt={};Gi(eSt,{LinkApp:()=>NNl});import{Box as u$,Text as l$}from"ink";import{useSyncExternalStore as yNl}from"react";import{jsx as $f,jsxs as LE}from"react/jsx-runtime";function XNl(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function NNl(){let i=yNl(Uki,Jki),t=[...i.sandboxes.values()].sort((u,l)=>u.handle.localeCompare(l.handle));return LE(u$,{flexDirection:"column",children:[$f(w0i,{version:E0i.version}),$f(u$,{marginBottom:1,children:$f(l$,{dimColor:!0,children:"\u2500".repeat(80)})}),$f(u$,{children:i.cluster==="linked"?LE(l$,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?LE(l$,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):LE(l$,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),$f(u$,{children:i.ingressUrl?LE(l$,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):$f(l$,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),$f(u$,{marginBottom:1,children:$f(l$,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${t.length} of ${i.cap} previews`})}),t.length===0?$f(l$,{dimColor:!0,children:"No previews running yet."}):LE(u$,{flexDirection:"column",children:[LE(u$,{children:[$f(u$,{width:x0i.project,flexShrink:0,marginRight:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),$f(u$,{width:x0i.status,flexShrink:0,marginRight:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),$f(u$,{flexGrow:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),t.map((u)=>{let l=XNl(u);return LE(u$,{children:[$f(u$,{width:x0i.project,flexShrink:0,marginRight:1,children:$f(l$,{wrap:"truncate-end",children:u.handle})}),$f(u$,{width:x0i.status,flexShrink:0,marginRight:1,children:$f(l$,{color:l.color,wrap:"truncate-end",children:l.text})}),$f(u$,{flexGrow:1,children:$f(l$,{dimColor:!0,wrap:"truncate-end",children:u.previewUrl??"\u2014"})})]},u.handle)})]}),i.daemonError?$f(u$,{marginTop:1,children:LE(l$,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?$f(u$,{marginTop:1,children:LE(l$,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var x0i;var MSt=w(()=>{yki();Xki();Tki();x0i={project:18,status:14}});var VSt={};Gi(VSt,{runLinkCommand:()=>QNl});import{closeSync as JNl,mkdirSync as UNl,openSync as TNl,writeSync as FNl}from"fs";import{homedir as ZNl}from"os";import{join as qSt}from"path";function INl(i,t){let u={log:console.log,warn:console.warn,error:console.error},l=(n)=>{if(t===void 0)return;try{FNl(t,`${Oki(n)}
104795
104796
  `)}catch{}};return console.log=(...n)=>l(n),console.warn=(...n)=>l(n),console.error=(...n)=>{l(n),i(Oki(n))},()=>{console.log=u.log,console.warn=u.warn,console.error=u.error}}async function BNl(i,t){let u;try{u=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${t}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(u.status===401||u.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 QNl(i={}){let t=i.port??5174,u=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??qSt(ZNl(),"deco"),l=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",n,f;try{let c=await mui({dataDir:u,intent:"Link",target:l});if(process.env.DECOCMS_LINK_MANAGED!=="1")await BNl(l,c.accessToken);let $;if(i.tui){let{render:_}=await import("ink"),{createElement:g}=await import("react"),{LinkApp:h}=await Promise.resolve().then(() => (MSt(),eSt)),{pushSandboxEvent:E,setCluster:v,setClusterUrl:r,setDaemonError:x,setIngress:O,setLogPath:y,setMachine:X}=await Promise.resolve().then(() => (Tki(),CSt));UNl(u,{recursive:!0});let N=qSt(u,"link.log");f=TNl(N,"a"),y(N),r(l),v("connecting"),$={onEvent:(U)=>E(U),onIngress:(U)=>O(U,`http://127.0.0.1:${U}`),onCluster:(U)=>v(U),onMachine:(U)=>X(U)},n=INl(x,f),_(g(h),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:_}=await Promise.resolve().then(() => (BW(),ER));_(i.version??"0.0.0")}return await(await zSt({port:t,clusterBaseUrl:l,dataDir:u,session:c,monitor:$,logFd:f,hotReload:i.hotReload})).stopped}catch(c){return n?.(),console.error(c instanceof Error?c.message:String(c)),1}finally{if(n?.(),f!==void 0)try{JNl(f)}catch{}}}var aSt=w(()=>{hGi();bSt()});var Yki={};Gi(Yki,{resolveDevLinkClusterUrl:()=>GNl,populateDevLinkToxiProxy:()=>tzt,isDevLinkToxiProxyEnabled:()=>ANl,ensureDevLinkToxiProxy:()=>zNl,buildDevLinkToxiProxyConfig:()=>pSt,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>oSt,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>sSt});function ANl(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Fki(i,t){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${t} must be an integer port in 1..65535`);return i}function pSt(i){let t=new URL(i.serverUrl);if(t.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let u=Fki(i.apiPort,"apiPort"),l=Fki(i.listenPort,"listenPort");if(t.port.length===0)throw Error("serverUrl must include an explicit valid port");let n=Fki(Number.parseInt(t.port,10),"upstreamPort"),f=`http://127.0.0.1:${n}`,c=`http://127.0.0.1:${l}`;return{serviceName:oSt,proxyName:sSt,apiUrl:`http://127.0.0.1:${u}`,listen:`0.0.0.0:${l}`,upstream:`host.docker.internal:${n}`,publicTargetUrl:f,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${f}`}}function GNl(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function Zki(i,t,u){if(i.ok)return;let l=await i.text();throw Error(`ToxiProxy ${t} failed for ${u}: status=${i.status} statusText=${i.statusText} body=${l}`)}function Qki(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function izt(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return izt(i.cause)}async function Iki(i,t,u,l){try{return await i(u,l)}catch(n){throw Error(`ToxiProxy ${t} failed for ${u}: ${Qki(n)}`,{cause:n})}}async function tzt(i,t=fetch){let u=`${i.apiUrl}/reset`,l=await Iki(t,"reset",u,{method:"POST"});await Zki(l,"reset",u);let n=`${i.apiUrl}/populate`,f=await Iki(t,"populate",n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await Zki(f,"populate",n)}async function WNl(i,t){let u=`${i.apiUrl}/version`;try{await Tr(async()=>{let l=await Iki(t,"readiness check",u,{method:"GET",signal:AbortSignal.timeout(PNl)});await Zki(l,"readiness check",u)},{maxAttempts:YNl,minTimeout:mSt,maxTimeout:mSt,multiplier:1,jitter:0,isRetriable:(l)=>!izt(l)})}catch(l){let n=l instanceof H6?l.cause:l;throw Error(`ToxiProxy API did not become ready at ${u}: ${Qki(n)}`,{cause:n})}}async function kNl(i){if(i===null)return"";return await new Response(i).text()}async function Bki(i,t={}){let u=["docker",...i].join(" "),l=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch($){throw Error(`Docker command failed to start (${u}): ${Qki($)}`,{cause:$})}})(),[n,f]=await Promise.all([l.exited,kNl(l.stderr)]);if(n===0||t.ignoreFailure===!0)return;let c=f.trim().length>0?`: ${f.trim()}`:"";throw Error(`Docker command failed (${u}) with exit ${n}${c}`)}async function jNl(i,t){let u=`deco-dev-link-toxiproxy-${i}`;await Bki(["rm","-f",u],{ignoreFailure:!0}),await Bki(["run","--rm","-d","--name",u,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${t}:${t}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function SNl(i,t){let u=`deco-dev-link-toxiproxy-${i}`;await Bki(["rm","-f",u],{ignoreFailure:!0})}async function zNl(i){let t=pSt(i),u=i.startDaemon??jNl,l=i.stopDaemon??(i.startDaemon===void 0?SNl:void 0);await u(i.apiPort,i.listenPort);let n=i.fetchImpl??fetch;try{await WNl(t,n),await tzt(t,n)}catch(f){if(l!==void 0)try{await l(i.apiPort,i.listenPort)}catch{}throw f}return{config:t,stop:async()=>{if(l!==void 0)await l(i.apiPort,i.listenPort)}}}var oSt="ToxiProxy",sSt="dev_link_studio",YNl=20,mSt=100,PNl=100;var Pki=w(()=>{H1()});var uzt={};Gi(uzt,{migrateBetterAuth:()=>Aki});import{getMigrations as bNl}from"better-auth/db";import{sso as KNl}from"@better-auth/sso";import{organization as HNl}from"@decocms/better-auth/plugins";import{admin as RNl,apiKey as LNl,jwt as CNl,magicLink as eNl,mcp as MNl,openAPI as qNl}from"better-auth/plugins";import{emailOTP as VNl}from"better-auth/plugins/email-otp";async function Aki(i){let u={database:kH(i||Ww()),plugins:[HNl({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),RNl(),LNl(),CNl(),qNl(),MNl({loginPage:"/login"}),KNl(),eNl({sendMagicLink:async()=>{}}),VNl({sendVerificationOTP:async()=>{}})]},{toBeAdded:l,toBeCreated:n,runMigrations:f}=await bNl(u);if(!l.length&&!n.length)return"up to date";return await f(),`${n.length+l.length} table(s) migrated`}var Gki=w(()=>{z$()});var Wki={};Gi(Wki,{up:()=>aNl,down:()=>mNl});import{sql as CE}from"kysely";async function aNl(i){await i.schema.createTable("connections").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(t)=>t.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(t)=>t.notNull()).addColumn("connectionUrl","text",(t)=>t.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(t)=>t.notNull().defaultTo("active")).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(t)=>t.primaryKey()).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(t)=>t.notNull()).addColumn("hashedKey","text",(t)=>t.notNull().unique()).addColumn("permissions","text",(t)=>t.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(t)=>t.references("user.id").onDelete("set null")).addColumn("connectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("toolName","text",(t)=>t.notNull()).addColumn("allowed","integer",(t)=>t.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(t)=>t.notNull()).addColumn("redirectUris","text",(t)=>t.notNull()).addColumn("grantTypes","text",(t)=>t.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(t)=>t.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(t)=>t.notNull()).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(t)=>t.primaryKey()).addColumn("connectionId","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(t)=>t.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(t)=>t.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(CE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(CE`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 mNl(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 lzt=()=>{};var kki={};Gi(kki,{up:()=>oNl,down:()=>sNl});import{sql as nzt}from"kysely";async function oNl(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(nzt`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(nzt`CURRENT_TIMESTAMP`)).execute()}async function sNl(i){await i.schema.dropTable("organization_settings").execute()}var fzt=()=>{};var jki={};Gi(jki,{up:()=>pNl,down:()=>iJl});async function pNl(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 iJl(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 Ski={};Gi(Ski,{up:()=>tJl,down:()=>uJl});async function tJl(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(t)=>t.notNull()).addColumn("updatedAt","text",(t)=>t.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((t)=>t.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 uJl(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(t)=>t.notNull()).addColumn("updatedAt","text",(t)=>t.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((t)=>t.selectFrom("organization_settings").select(["organizationId",t.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 zki={};Gi(zki,{up:()=>lJl,down:()=>nJl});async function lJl(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function nJl(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var bki={};Gi(bki,{up:()=>cJl,down:()=>$Jl});import{sql as fJl}from"kysely";async function cJl(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",fJl`text`).execute()}async function $Jl(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var czt=()=>{};var Kki={};Gi(Kki,{up:()=>dJl,down:()=>_Jl});async function dJl(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(t)=>t.notNull()).addColumn("tool_name","text",(t)=>t.notNull()).addColumn("input","text",(t)=>t.notNull()).addColumn("output","text",(t)=>t.notNull()).addColumn("is_error","integer",(t)=>t.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(t)=>t.notNull()).addColumn("timestamp","text",(t)=>t.notNull()).addColumn("user_id","text").addColumn("request_id","text",(t)=>t.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 _Jl(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 Hki={};Gi(Hki,{up:()=>gJl,down:()=>hJl});import{sql as vR}from"kysely";async function gJl(i){await i.schema.createTable("events").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(t)=>t.notNull()).addColumn("source","text",(t)=>t.notNull()).addColumn("specversion","text",(t)=>t.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(t)=>t.notNull()).addColumn("datacontenttype","text",(t)=>t.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(t)=>t.notNull().defaultTo("pending")).addColumn("attempts","integer",(t)=>t.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(vR`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(vR`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(t)=>t.notNull()).addColumn("filter","text").addColumn("enabled","integer",(t)=>t.notNull().defaultTo(1)).addColumn("created_at","text",(t)=>t.notNull().defaultTo(vR`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(vR`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(t)=>t.primaryKey()).addColumn("event_id","text",(t)=>t.notNull()).addColumn("subscription_id","text",(t)=>t.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(t)=>t.notNull().defaultTo("pending")).addColumn("attempts","integer",(t)=>t.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(vR`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 hJl(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 $zt=()=>{};var Rki={};Gi(Rki,{up:()=>vJl,down:()=>rJl});import{sql as EJl}from"kysely";async function vJl(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function rJl(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(t)=>t.references("user.id").onDelete("set null")).addColumn("connectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("toolName","text",(t)=>t.notNull()).addColumn("allowed","integer",(t)=>t.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(t)=>t.notNull().defaultTo(EJl`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 dzt=()=>{};var Lki={};Gi(Lki,{up:()=>wJl,down:()=>xJl});import{sql as D0i}from"kysely";async function wJl(i){await i.schema.createTable("gateways").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(t)=>t.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(t)=>t.notNull().defaultTo("active")).addColumn("is_default","integer",(t)=>t.notNull().defaultTo(0)).addColumn("created_at","text",(t)=>t.notNull().defaultTo(D0i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(D0i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(t)=>t.primaryKey()).addColumn("gateway_id","text",(t)=>t.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(D0i`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 D0i`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 xJl(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 _zt=()=>{};var Cki={};Gi(Cki,{up:()=>DJl,down:()=>OJl});async function DJl(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function OJl(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var eki={};Gi(eki,{up:()=>yJl,down:()=>XJl});import{sql as O0i}from"kysely";async function yJl(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(t)=>t.notNull().defaultTo("inclusion")).execute(),await O0i`
104796
104797
  UPDATE gateways
104797
104798
  SET tool_selection_mode = CASE
@@ -105746,7 +105747,7 @@ You are running the brand-context onboarding for the user's organization. Your o
105746
105747
  4. Do NOT call any other tools in this thread. Do NOT call \`brand_context_setup\` more than once.
105747
105748
 
105748
105749
  If the tool returns an error, surface the error message to the user and ask whether they want to try a different URL.
105749
- `.trim();Cet=TKi("site-diagnostics_"),ejl=Cet.is,Mjl=Cet.get,W_={AGENT_MANAGER:(i)=>`studio-agent-manager_${i}`,AUTOMATION_MANAGER:(i)=>`studio-automation-manager_${i}`,CONNECTION_MANAGER:(i)=>`studio-connection-manager_${i}`,STORE_MANAGER:(i)=>`studio-store-manager_${i}`,BRAND_MANAGER:(i)=>`studio-brand-manager_${i}`,USAGE_MANAGER:(i)=>`studio-usage-manager_${i}`}});var Met=w(()=>{MSi();B0i();c1i();d1i()});var qet=w(()=>{sw()});var Vet=w(()=>{Xf();sw()});var aet=w(()=>{Xf();sw()});var met=w(()=>{VSi();B0i();c1i();d1i();sw()});var oet=w(()=>{B0i();Met();c1i();qet();Vet();aet();met()});import{z as Pu}from"zod";function uv(i){return i!==null&&i!==void 0&&"command"in i}function $O(i){if(!i||!i.startsWith("virtual://"))return null;return i.replace("virtual://","")}function dO(i){return`virtual://${i}`}var FSl,set,ZSl,ISl,BSl,V$,nL,fL;var pet=w(()=>{Xf();FSl=Pu.object({authorizationEndpoint:Pu.string().url(),tokenEndpoint:Pu.string().url(),introspectionEndpoint:Pu.string().url().optional(),clientId:Pu.string(),clientSecret:Pu.string().optional(),scopes:Pu.array(Pu.string()),grantType:Pu.enum(["authorization_code","client_credentials"])}),set=Pu.object({type:Pu.literal("object"),properties:Pu.record(Pu.string(),Pu.unknown()).optional(),required:Pu.array(Pu.string()).optional()}).catchall(Pu.unknown()),ZSl=M0i.extend({inputSchema:set,outputSchema:set.optional()}),ISl=Pu.object({headers:Pu.record(Pu.string(),Pu.string()).optional()}),BSl=Pu.object({command:Pu.string().describe("Command to run (e.g., 'npx', 'node')"),args:Pu.array(Pu.string()).optional().describe("Command arguments"),cwd:Pu.string().optional().describe("Working directory"),envVars:Pu.record(Pu.string(),Pu.string()).optional().describe("Environment variables (encrypted in storage)")}),V$=Pu.object({id:Pu.string().describe("Unique identifier for the connection"),title:Pu.string().describe("Human-readable name for the connection"),created_at:Pu.string().describe("When the connection was created"),updated_at:Pu.string().describe("When the connection was last updated"),created_by:Pu.string().describe("User ID who created the connection"),updated_by:Pu.string().optional().describe("User ID who last updated the connection"),organization_id:Pu.string().describe("Organization ID this connection belongs to"),description:Pu.string().nullable().describe("Description of the connection"),icon:Pu.string().nullable().describe("Icon URL for the connection"),app_name:Pu.string().nullable().describe("Associated app name"),app_id:Pu.string().nullable().describe("Associated app ID"),slug:Pu.string().nullable().optional().describe("URL-safe slug derived from app_name, connection_url, or title"),connection_type:Pu.enum(["HTTP","SSE","Websocket","STDIO","VIRTUAL"]).describe("Type of connection"),connection_url:Pu.string().nullable().describe("URL for HTTP/SSE/WebSocket connections. virtual://$id for VIRTUAL. Null for STDIO."),connection_token:Pu.string().nullable().describe("Authentication token (for HTTP connections)"),connection_headers:Pu.union([BSl,ISl]).nullable().describe("Connection parameters. HTTP: { headers }. STDIO: { command, args, cwd, envVars }"),oauth_config:FSl.nullable().describe("OAuth configuration"),configuration_state:Pu.record(Pu.string(),Pu.unknown()).nullable().describe("Configuration state (decrypted)"),configuration_scopes:Pu.array(Pu.string()).nullable().optional().describe("Configuration scopes"),metadata:Pu.record(Pu.string(),Pu.unknown()).nullable().describe("Additional metadata (includes repository info)"),tools:Pu.array(ZSl).nullable().describe("Discovered tools from MCP"),bindings:Pu.array(Pu.string()).nullable().describe("Detected bindings"),status:Pu.enum(["active","inactive","error"]).describe("Current status")}),nL=V$.omit({created_at:!0,updated_at:!0,created_by:!0,updated_by:!0,organization_id:!0,tools:!0,bindings:!0,status:!0}).partial({id:!0,description:!0,icon:!0,app_name:!0,app_id:!0,connection_url:!0,connection_token:!0,connection_headers:!0,oauth_config:!0,configuration_state:!0,configuration_scopes:!0,metadata:!0}).extend({icon:Pu.string().nullish()}),fL=V$.partial()});import{z as it}from"zod";function _1i(i){let t=i?.homeTiles;if(Array.isArray(t)&&t.length>0)return t;let u=i?.homeTile;return u?[u]:[]}function g1i(i){return i==="cluster"?"agent-sandbox":i}function zKi(i){let t=GSl.parse(i);return h1i.parse({...t,sandboxProviderKind:t.sandboxProviderKind?g1i(t.sandboxProviderKind):void 0})}function w3(i){if(!i||typeof i!=="object"||Array.isArray(i))return{};let t=i,u={};for(let[l,n]of Object.entries(t)){if(!n||typeof n!=="object")continue;if(l!=="cluster"&&l!=="agent-sandbox"&&l!=="user-desktop")continue;let f=g1i(l);try{if(l==="cluster"&&u[f])continue;u[f]=zKi(n)}catch{}}return u}function E1i(i){if(!i||typeof i!=="object"||Array.isArray(i))return{};let t={};for(let[u,l]of Object.entries(i)){if(!l||typeof l!=="object"||Array.isArray(l))continue;let n={};for(let[f,c]of Object.entries(l)){let $=w3(c);if(Object.keys($).length>0)n[f]=$}if(Object.keys(n).length>0)t[u]=n}return t}var cL,uMt,QSl,GKi,WKi,iMt,kKi,$L,tMt,YSl,jKi,SKi,PSl,ASl,lMt,h1i,GSl,dL,a$,_L,gL;var nMt=w(()=>{cL=it.object({connection_id:it.string().describe("Connection ID"),selected_tools:it.array(it.string()).nullable().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:it.array(it.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:it.array(it.string()).nullable().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),uMt=cL.extend({selected_tools:cL.shape.selected_tools.optional(),selected_resources:cL.shape.selected_resources.optional(),selected_prompts:cL.shape.selected_prompts.optional()}),QSl=it.object({connectionId:it.string(),toolName:it.string(),label:it.string(),icon:it.string().nullable().optional()}),GKi=it.object({id:it.string().describe("Stable id; used as React key and ?tab= value"),title:it.string().describe("Tab label"),icon:it.string().optional().describe("Optional lucide icon name"),view:it.object({type:it.literal("ext-app"),appId:it.string(),args:it.record(it.string(),it.unknown()).optional()})}),WKi=it.object({defaultMainView:it.object({type:it.string(),id:it.string().optional(),toolName:it.string().optional()}).nullable().optional(),chatDefaultOpen:it.boolean().nullable().optional(),tabs:it.array(GKi).optional()}),iMt=it.object({connectionId:it.string().optional().describe("Connection that owns the resource \u2014 the host opens a direct MCP client to this connection so the iframe can call tools by their bare names."),resourceUri:it.string().describe("ui:// resource URI exposed by `connectionId`. Read on the home page and rendered via MCPAppRenderer."),minHeight:it.number().int().positive().optional(),maxHeight:it.number().int().positive().optional()}),kKi=it.object({banner:it.string().nullable().optional(),bannerColor:it.string().nullable().optional(),icon:it.string().nullable().optional(),themeColor:it.string().nullable().optional(),pinnedViews:it.array(QSl).nullable().optional(),layout:WKi.nullable().optional(),homeTile:iMt.nullable().optional(),homeTiles:it.array(iMt).nullable().optional(),homePrompts:it.array(it.string()).nullable().optional()});$L=/^[A-Za-z_][A-Za-z0-9_]*$/,tMt=it.string().min(1).regex($L,{message:"Env var key must start with a letter or underscore and contain only letters, digits, and underscores."}),YSl=it.discriminatedUnion("kind",[it.object({key:tMt,kind:it.literal("literal"),value:it.string()}),it.object({key:tMt,kind:it.literal("secret"),secretId:it.string().min(1)})]),jKi=it.object({selected:it.string().nullable().optional().describe("User-selected package manager (npm | pnpm | yarn | bun | deno). Null/absent means autodetect on next SANDBOX_START."),port:it.string().nullable().optional().describe("User-selected dev server port as a string (allows '' / null for unset). Null/absent means autodetect."),path:it.string().nullable().optional().describe("Optional path (relative to repo root) to the directory containing package.json. Null/absent means repo root. Forwarded as `application.packageManager.path` to the daemon config."),env:it.array(YSl).nullable().optional().describe("Env vars injected on every SANDBOX_START. Literal entries inline their value; secret entries store a secretId that mesh resolves via the credential vault before posting /_sandbox/config.")}),SKi=it.object({url:it.string().describe("GitHub repository URL"),owner:it.string().describe("Repository owner"),name:it.string().describe("Repository name"),installationId:it.number().optional().describe("GitHub App installation ID. Absent when the repo was linked without a GitHub connection (public-clone mode)."),connectionId:it.string().optional().describe("ID of the mcp-github connection used for authentication. Absent for public repos cloned without credentials.")}),PSl=it.enum(["agent-sandbox","user-desktop"]),ASl=it.enum(["agent-sandbox","user-desktop","cluster"]);lMt={sandboxHandle:it.string().describe("Provider-specific handle"),previewUrl:it.string().nullable().describe("URL where the sandbox's iframe-proxied UI is served, or null when the sandbox has no dev server (blank / tool sandboxes)."),sandboxApiUrl:it.string().nullable().optional().describe("Daemon's public URL \u2014 what cluster\u2192daemon RPCs target. Equal to previewUrl for user-desktop; null/absent for the agent-sandbox provider (routes through hosted ingress)."),sandboxProviderKind:PSl.optional(),createdAt:it.number().optional().describe("Epoch ms the entry was first written by SANDBOX_START. Used by the booting overlay to show a stable elapsed timer that survives browser reloads. Optional for backward compatibility with entries written before this field existed."),startedWith:it.object({packageManager:it.string().nullable().optional().describe("metadata.runtime.selected at the time of SANDBOX_START"),port:it.string().nullable().optional().describe("metadata.runtime.port at the time of SANDBOX_START"),path:it.string().nullable().optional().describe("metadata.runtime.path at the time of SANDBOX_START")}).optional().describe("Snapshot of metadata.runtime fields (selected/port/path) used at SANDBOX_START. The Preview tab compares the live metadata.runtime against this to decide if a restart is required to apply changes.")},h1i=it.object(lMt),GSl=it.object({...lMt,sandboxProviderKind:ASl.optional()});dL=it.record(it.string().describe("userId"),it.record(it.string().describe("branch"),it.record(it.string().describe("sandboxProviderKind"),h1i)));a$=it.object({id:it.string().describe("Unique identifier"),title:it.string().describe("Human-readable name"),description:it.string().nullable().describe("Description"),icon:it.string().nullable().describe("Icon URL"),created_at:it.string().describe("Creation timestamp"),updated_at:it.string().describe("Last update timestamp"),created_by:it.string().describe("User ID who created this item"),updated_by:it.string().optional().describe("User ID who last updated this item"),organization_id:it.string().describe("Organization ID this item belongs to"),status:it.enum(["active","inactive"]).describe("Current status"),pinned:it.boolean().describe("Whether this space is pinned to the sidebar"),metadata:it.object({instructions:it.string().nullable().describe("Instructions also used as system prompt"),enabled_plugins:it.array(it.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:it.array(it.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:kKi.nullable().optional().describe("UI customization settings"),githubRepo:SKi.nullable().optional().describe("Linked GitHub repository"),runtime:jKi.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:dL.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().describe("Metadata"),connections:it.array(cL).describe("Connections with their selected tools, resources, and prompts")}),_L=it.object({title:it.string().min(1).max(255).describe("Name for the virtual MCP"),description:it.string().nullable().optional().describe("Optional description"),icon:it.string().nullish().describe("Optional icon URL"),status:it.enum(["active","inactive"]).optional().default("active").describe("Initial status"),pinned:it.boolean().optional().default(!1).describe("Pin to sidebar"),metadata:it.object({instructions:it.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:it.array(it.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:it.array(it.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:kKi.nullable().optional().describe("UI customization settings"),githubRepo:SKi.nullable().optional().describe("Linked GitHub repository"),runtime:jKi.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:dL.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:it.array(uMt).describe("Connections to include/exclude (can be empty for exclusion mode)")}),gL=it.object({title:it.string().min(1).max(255).optional().describe("New name"),description:it.string().nullable().optional().describe("New description (null to clear)"),icon:it.string().nullish().describe("New icon URL"),status:it.enum(["active","inactive"]).optional().describe("New status"),pinned:it.boolean().optional().describe("Pin/unpin from sidebar"),metadata:it.object({instructions:it.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:it.array(it.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:it.array(it.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:kKi.nullable().optional().describe("UI customization settings"),githubRepo:SKi.nullable().optional().describe("Linked GitHub repository"),runtime:jKi.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:dL.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:it.array(uMt).optional().describe("New connections (replaces existing)")})});var U4;var fMt=w(()=>{U4=["deco","anthropic","openrouter","google","claude-code","codex","openai-compatible"]});function v1i(i,t){return{id:crypto.randomUUID(),type:$k.STEP,source:"decopilot",subject:i,data:{stepCount:t},time:new Date().toISOString()}}function Dx(i,t){return{id:crypto.randomUUID(),type:$k.FINISH,source:"decopilot",subject:i,data:{status:t},time:new Date().toISOString()}}function t6(i,t,u){return{id:crypto.randomUUID(),type:$k.THREAD_STATUS,source:"decopilot",subject:i,data:{status:t,...u?.virtualMcpId!==void 0&&{virtual_mcp_id:u.virtualMcpId},...u?.createdBy!==void 0&&{created_by:u.createdBy},...u?.triggerId!==void 0&&{trigger_id:u.triggerId},...u?.title!==void 0&&{title:u.title},...u?.branch!==void 0&&{branch:u.branch},...u?.createdAt!==void 0&&{created_at:u.createdAt},...u?.updatedAt!==void 0&&{updated_at:u.updatedAt},...u?.metadata!==void 0&&{metadata:u.metadata}},time:new Date().toISOString()}}var ck,cMt,$k,$Mt;var dMt=w(()=>{ck=["in_progress","requires_action","failed","completed"],cMt=[...ck,"expired"],$k={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},$Mt=Object.values($k)});var r1i=w(()=>{pet();nMt();fMt();dMt()});function kSl(){let i=new _Mt.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return gMt.default(i),i}class hMt{#i=kSl();#t=new Map;getValidator(i){let t=jSl(i),u=this.#t.get(t);if(!u)u=this.#i.compile(i),this.#t.set(t,u);let l=u;return(n)=>{if(l(n))return{valid:!0,data:n,errorMessage:void 0};return{valid:!1,data:void 0,errorMessage:this.#i.errorsText(l.errors)}}}}function jSl(i){return JSON.stringify(i,(t,u)=>{if(u&&typeof u==="object"&&!Array.isArray(u))return Object.fromEntries(Object.keys(u).sort().map((l)=>[l,u[l]]));return u})}var _Mt,gMt,fc;var bKi=w(()=>{_Mt=z(Kni(),1),gMt=z(tKi(),1);fc=new hMt});class dk{innerTransport;constructor(i){this.innerTransport=i}get sessionId(){return this.innerTransport.sessionId}async start(){return this.innerTransport.onmessage=(i)=>{this.handleIncomingMessage(i)},this.innerTransport.onerror=(i)=>{this.onerror?.(i)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send(i){return this.handleOutgoingMessage(i)}async close(){return this.innerTransport.close()}async handleOutgoingMessage(i){return this.innerTransport.send(i)}handleIncomingMessage(i){this.onmessage?.(i)}isRequest(i){return"method"in i&&i.method!==void 0}isResponse(i){return"result"in i||"error"in i&&!("method"in i)}onmessage;onerror;onclose}function _k(i,...t){return t.reduce((u,l)=>l(u),i)}class KKi{constructor(i){this._server=i}requestStream(i,t,u){return this._server.requestStream(i,t,u)}createMessageStream(i,t){let u=this._server.getClientCapabilities();if((i.tools||i.toolChoice)&&!u?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if(i.messages.length>0){let l=i.messages[i.messages.length-1],n=Array.isArray(l.content)?l.content:[l.content],f=n.some((_)=>_.type==="tool_result"),c=i.messages.length>1?i.messages[i.messages.length-2]:void 0,$=c?Array.isArray(c.content)?c.content:[c.content]:[],d=$.some((_)=>_.type==="tool_use");if(f){if(n.some((_)=>_.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!d)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(d){let _=new Set($.filter((h)=>h.type==="tool_use").map((h)=>h.id)),g=new Set(n.filter((h)=>h.type==="tool_result").map((h)=>h.toolUseId));if(_.size!==g.size||![..._].every((h)=>g.has(h)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:i},o8,t)}elicitInputStream(i,t){let u=this._server.getClientCapabilities(),l=i.mode??"form";switch(l){case"url":{if(!u?.elicitation?.url)throw Error("Client does not support url elicitation.");break}case"form":{if(!u?.elicitation?.form)throw Error("Client does not support form elicitation.");break}}let n=l==="form"&&i.mode===void 0?{...i,mode:"form"}:i;return this.requestStream({method:"elicitation/create",params:n},cx,t)}async getTask(i,t){return this._server.getTask({taskId:i},t)}async getTaskResult(i,t,u){return this._server.getTaskResult({taskId:i},t,u)}async listTasks(i,t){return this._server.listTasks(i?{cursor:i}:void 0,t)}async cancelTask(i,t){return this._server.cancelTask({taskId:i},t)}}var EMt=w(()=>{Xf()});var HKi;var vMt=w(()=>{szi();Xf();uKi();kW();EMt();HKi=class HKi extends AR{constructor(i,t){super(t);if(this._serverInfo=i,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(BR.options.map((u,l)=>[u,l])),this.isMessageIgnored=(u,l)=>{let n=this._loggingLevels.get(l);return n?this.LOG_LEVEL_SEVERITY.get(u)<this.LOG_LEVEL_SEVERITY.get(n):!1},this._capabilities=t?.capabilities??{},this._instructions=t?.instructions,this._jsonSchemaValidator=t?.jsonSchemaValidator??new uL,this.setRequestHandler(j0i,(u)=>this._oninitialize(u)),this.setNotificationHandler(S0i,()=>this.oninitialized?.()),this._capabilities.logging)this.setRequestHandler(wzi,async(u,l)=>{let n=l.sessionId||l.requestInfo?.headers["mcp-session-id"]||void 0,{level:f}=u.params,c=BR.safeParse(f);if(c.success)this._loggingLevels.set(n,c.data);return{}})}get experimental(){if(!this._experimental)this._experimental={tasks:new KKi(this)};return this._experimental}registerCapabilities(i){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=lni(this._capabilities,i)}setRequestHandler(i,t){let l=VE(i)?.method;if(!l)throw Error("Schema is missing a method literal");let n;if(Id(l)){let c=l;n=c._zod?.def?.value??c.value}else{let c=l;n=c._def?.value??c.value}if(typeof n!=="string")throw Error("Schema method literal must be a string");if(n==="tools/call"){let c=async($,d)=>{let _=C$(fx,$);if(!_.success){let v=_.error instanceof Error?_.error.message:String(_.error);throw new At(Kt.InvalidParams,`Invalid tools/call request: ${v}`)}let{params:g}=_.data,h=await Promise.resolve(t($,d));if(g.task){let v=C$(_3,h);if(!v.success){let r=v.error instanceof Error?v.error.message:String(v.error);throw new At(Kt.InvalidParams,`Invalid task creation result: ${r}`)}return v.data}let E=C$(mE,h);if(!E.success){let v=E.error instanceof Error?E.error.message:String(E.error);throw new At(Kt.InvalidParams,`Invalid tools/call result: ${v}`)}return E.data};return super.setRequestHandler(i,c)}return super.setRequestHandler(i,t)}assertCapabilityForMethod(i){switch(i){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${i})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${i})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${i})`);break;case"ping":break}}assertNotificationCapability(i){switch(i){case"notifications/message":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${i})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${i})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${i})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${i})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${i})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(i){if(!this._capabilities)return;switch(i){case"completion/complete":if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${i})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${i})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${i})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${i})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${i})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${i})`);break;case"ping":case"initialize":break}}assertTaskCapability(i){Lni(this._clientCapabilities?.tasks?.requests,i,"Client")}assertTaskHandlerCapability(i){if(!this._capabilities)return;Rni(this._capabilities.tasks?.requests,i,"Server")}async _oninitialize(i){let t=i.params.protocolVersion;return this._clientCapabilities=i.params.capabilities,this._clientVersion=i.params.clientInfo,{protocolVersion:ix.includes(t)?t:pw,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},d3)}async createMessage(i,t){if(i.tools||i.toolChoice){if(!this._clientCapabilities?.sampling?.tools)throw Error("Client does not support sampling tools capability.")}if(i.messages.length>0){let u=i.messages[i.messages.length-1],l=Array.isArray(u.content)?u.content:[u.content],n=l.some((d)=>d.type==="tool_result"),f=i.messages.length>1?i.messages[i.messages.length-2]:void 0,c=f?Array.isArray(f.content)?f.content:[f.content]:[],$=c.some((d)=>d.type==="tool_use");if(n){if(l.some((d)=>d.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!$)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if($){let d=new Set(c.filter((g)=>g.type==="tool_use").map((g)=>g.id)),_=new Set(l.filter((g)=>g.type==="tool_result").map((g)=>g.toolUseId));if(d.size!==_.size||![...d].every((g)=>_.has(g)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}if(i.tools)return this.request({method:"sampling/createMessage",params:i},QR,t);return this.request({method:"sampling/createMessage",params:i},o8,t)}async elicitInput(i,t){switch(i.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support url elicitation.");let l=i;return this.request({method:"elicitation/create",params:l},cx,t)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw Error("Client does not support form elicitation.");let l=i.mode==="form"?i:{...i,mode:"form"},n=await this.request({method:"elicitation/create",params:l},cx,t);if(n.action==="accept"&&n.content&&l.requestedSchema)try{let c=this._jsonSchemaValidator.getValidator(l.requestedSchema)(n.content);if(!c.valid)throw new At(Kt.InvalidParams,`Elicitation response content does not match requested schema: ${c.errorMessage}`)}catch(f){if(f instanceof At)throw f;throw new At(Kt.InternalError,`Error validating elicitation response: ${f instanceof Error?f.message:String(f)}`)}return n}}}createElicitationCompletionNotifier(i,t){if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:i}},t)}async listRoots(i,t){return this.request({method:"roots/list",params:i},yzi,t)}async sendLoggingMessage(i,t){if(this._capabilities.logging){if(!this.isMessageIgnored(i.level,t))return this.notification({method:"notifications/message",params:i})}}async sendResourceUpdated(i){return this.notification({method:"notifications/resources/updated",params:i})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function RKi(i){return!!i&&typeof i==="object"&&wMt in i}function xMt(i){return i[wMt]?.complete}var wMt,rMt;var DMt=w(()=>{wMt=Symbol.for("mcp.completable");(function(i){i.Completable="McpCompletable"})(rMt||(rMt={}))});function zSl(i){let t=[];if(i.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(i.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${i.length})`]};if(i.includes(" "))t.push("Tool name contains spaces, which may cause parsing issues");if(i.includes(","))t.push("Tool name contains commas, which may cause parsing issues");if(i.startsWith("-")||i.endsWith("-"))t.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts");if(i.startsWith(".")||i.endsWith("."))t.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts");if(!SSl.test(i)){let u=i.split("").filter((l)=>!/[A-Za-z0-9._-]/.test(l)).filter((l,n,f)=>f.indexOf(l)===n);return t.push(`Tool name contains invalid characters: ${u.map((l)=>`"${l}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function bSl(i,t){if(t.length>0){console.warn(`Tool name validation warning for "${i}":`);for(let u of t)console.warn(` - ${u}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function LKi(i){let t=zSl(i);return bSl(i,t.warnings),t.isValid}var SSl;var OMt=w(()=>{SSl=/^[A-Za-z0-9._-]{1,128}$/});class CKi{constructor(i){this._mcpServer=i}registerToolTask(i,t,u){let l={taskSupport:"required",...t.execution};if(l.taskSupport==="forbidden")throw Error(`Cannot register task-based tool '${i}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(i,t.title,t.description,t.inputSchema,t.outputSchema,t.annotations,l,t._meta,u)}}import{ZodOptional as KSl}from"zod";class x3{constructor(i,t){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new HKi(i,t)}get experimental(){if(!this._experimental)this._experimental={tasks:new CKi(this)};return this._experimental}async connect(i){return await this.server.connect(i)}async close(){await this.server.close()}setToolRequestHandlers(){if(this._toolHandlersInitialized)return;this.server.assertCanSetRequestHandler(Ox(HW)),this.server.assertCanSetRequestHandler(Ox(fx)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(HW,()=>({tools:Object.entries(this._registeredTools).filter(([,i])=>i.enabled).map(([i,t])=>{let u={name:i,title:t.title,description:t.description,inputSchema:(()=>{let l=WW(t.inputSchema);return l?Vzi(l,{strictUnions:!0,pipeStrategy:"input"}):HSl})(),annotations:t.annotations,execution:t.execution,_meta:t._meta};if(t.outputSchema){let l=WW(t.outputSchema);if(l)u.outputSchema=Vzi(l,{strictUnions:!0,pipeStrategy:"output"})}return u})})),this.server.setRequestHandler(fx,async(i,t)=>{try{let u=this._registeredTools[i.params.name];if(!u)throw new At(Kt.InvalidParams,`Tool ${i.params.name} not found`);if(!u.enabled)throw new At(Kt.InvalidParams,`Tool ${i.params.name} disabled`);let l=!!i.params.task,n=u.execution?.taskSupport,f="createTask"in u.handler;if((n==="required"||n==="optional")&&!f)throw new At(Kt.InternalError,`Tool ${i.params.name} has taskSupport '${n}' but was not registered with registerToolTask`);if(n==="required"&&!l)throw new At(Kt.MethodNotFound,`Tool ${i.params.name} requires task augmentation (taskSupport: 'required')`);if(n==="optional"&&!l&&f)return await this.handleAutomaticTaskPolling(u,i,t);let c=await this.validateToolInput(u,i.params.arguments,i.params.name),$=await this.executeToolHandler(u,c,t);if(l)return $;return await this.validateToolOutput(u,$,i.params.name),$}catch(u){if(u instanceof At){if(u.code===Kt.UrlElicitationRequired)throw u}return this.createToolError(u instanceof Error?u.message:String(u))}}),this._toolHandlersInitialized=!0}createToolError(i){return{content:[{type:"text",text:i}],isError:!0}}async validateToolInput(i,t,u){if(!i.inputSchema)return;let n=WW(i.inputSchema)??i.inputSchema,f=await Q0i(n,t);if(!f.success){let c="error"in f?f.error:"Unknown error",$=Y0i(c);throw new At(Kt.InvalidParams,`Input validation error: Invalid arguments for tool ${u}: ${$}`)}return f.data}async validateToolOutput(i,t,u){if(!i.outputSchema)return;if(!("content"in t))return;if(t.isError)return;if(!t.structuredContent)throw new At(Kt.InvalidParams,`Output validation error: Tool ${u} has an output schema but no structured content was provided`);let l=WW(i.outputSchema),n=await Q0i(l,t.structuredContent);if(!n.success){let f="error"in n?n.error:"Unknown error",c=Y0i(f);throw new At(Kt.InvalidParams,`Output validation error: Invalid structured content for tool ${u}: ${c}`)}}async executeToolHandler(i,t,u){let l=i.handler;if("createTask"in l){if(!u.taskStore)throw Error("No task store provided.");let f={...u,taskStore:u.taskStore};if(i.inputSchema)return await Promise.resolve(l.createTask(t,f));else return await Promise.resolve(l.createTask(f))}if(i.inputSchema)return await Promise.resolve(l(t,u));else return await Promise.resolve(l(u))}async handleAutomaticTaskPolling(i,t,u){if(!u.taskStore)throw Error("No task store provided for task-capable tool.");let l=await this.validateToolInput(i,t.params.arguments,t.params.name),n=i.handler,f={...u,taskStore:u.taskStore},c=l?await Promise.resolve(n.createTask(l,f)):await Promise.resolve(n.createTask(f)),$=c.task.taskId,d=c.task,_=d.pollInterval??5000;while(d.status!=="completed"&&d.status!=="failed"&&d.status!=="cancelled"){await new Promise((h)=>setTimeout(h,_));let g=await u.taskStore.getTask($);if(!g)throw new At(Kt.InternalError,`Task ${$} not found during polling`);d=g}return await u.taskStore.getTaskResult($)}setCompletionRequestHandler(){if(this._completionHandlerInitialized)return;this.server.assertCanSetRequestHandler(Ox(q0i)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(q0i,async(i)=>{switch(i.params.ref.type){case"ref/prompt":return nKt(i),this.handlePromptCompletion(i,i.params.ref);case"ref/resource":return fKt(i),this.handleResourceCompletion(i,i.params.ref);default:throw new At(Kt.InvalidParams,`Invalid completion reference: ${i.params.ref}`)}}),this._completionHandlerInitialized=!0}async handlePromptCompletion(i,t){let u=this._registeredPrompts[t.name];if(!u)throw new At(Kt.InvalidParams,`Prompt ${t.name} not found`);if(!u.enabled)throw new At(Kt.InvalidParams,`Prompt ${t.name} disabled`);if(!u.argsSchema)return hL;let n=VE(u.argsSchema)?.[i.params.argument.name];if(!RKi(n))return hL;let f=xMt(n);if(!f)return hL;let c=await f(i.params.argument.value,i.params.context);return XMt(c)}async handleResourceCompletion(i,t){let u=Object.values(this._registeredResourceTemplates).find((f)=>f.resourceTemplate.uriTemplate.toString()===t.uri);if(!u){if(this._registeredResources[t.uri])return hL;throw new At(Kt.InvalidParams,`Resource template ${i.params.ref.uri} not found`)}let l=u.resourceTemplate.completeCallback(i.params.argument.name);if(!l)return hL;let n=await l(i.params.argument.value,i.params.context);return XMt(n)}setResourceRequestHandlers(){if(this._resourceHandlersInitialized)return;this.server.assertCanSetRequestHandler(Ox(ux)),this.server.assertCanSetRequestHandler(Ox(lx)),this.server.assertCanSetRequestHandler(Ox(bW)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(ux,async(i,t)=>{let u=Object.entries(this._registeredResources).filter(([n,f])=>f.enabled).map(([n,f])=>({uri:n,name:f.name,...f.metadata})),l=[];for(let n of Object.values(this._registeredResourceTemplates)){if(!n.resourceTemplate.listCallback)continue;let f=await n.resourceTemplate.listCallback(t);for(let c of f.resources)l.push({...n.metadata,...c})}return{resources:[...u,...l]}}),this.server.setRequestHandler(lx,async()=>{return{resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([t,u])=>({name:t,uriTemplate:u.resourceTemplate.uriTemplate.toString(),...u.metadata}))}}),this.server.setRequestHandler(bW,async(i,t)=>{let u=new URL(i.params.uri),l=this._registeredResources[u.toString()];if(l){if(!l.enabled)throw new At(Kt.InvalidParams,`Resource ${u} disabled`);return l.readCallback(u,t)}for(let n of Object.values(this._registeredResourceTemplates)){let f=n.resourceTemplate.uriTemplate.match(u.toString());if(f)return n.readCallback(u,f,t)}throw new At(Kt.InvalidParams,`Resource ${u} not found`)}),this._resourceHandlersInitialized=!0}setPromptRequestHandlers(){if(this._promptHandlersInitialized)return;this.server.assertCanSetRequestHandler(Ox(nx)),this.server.assertCanSetRequestHandler(Ox(KW)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(nx,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,i])=>i.enabled).map(([i,t])=>{return{name:i,title:t.title,description:t.description,arguments:t.argsSchema?RSl(t.argsSchema):void 0}})})),this.server.setRequestHandler(KW,async(i,t)=>{let u=this._registeredPrompts[i.params.name];if(!u)throw new At(Kt.InvalidParams,`Prompt ${i.params.name} not found`);if(!u.enabled)throw new At(Kt.InvalidParams,`Prompt ${i.params.name} disabled`);if(u.argsSchema){let l=WW(u.argsSchema),n=await Q0i(l,i.params.arguments);if(!n.success){let $="error"in n?n.error:"Unknown error",d=Y0i($);throw new At(Kt.InvalidParams,`Invalid arguments for prompt ${i.params.name}: ${d}`)}let f=n.data,c=u.callback;return await Promise.resolve(c(f,t))}else{let l=u.callback;return await Promise.resolve(l(t))}}),this._promptHandlersInitialized=!0}resource(i,t,...u){let l;if(typeof u[0]==="object")l=u.shift();let n=u[0];if(typeof t==="string"){if(this._registeredResources[t])throw Error(`Resource ${t} is already registered`);let f=this._createRegisteredResource(i,void 0,t,l,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),f}else{if(this._registeredResourceTemplates[i])throw Error(`Resource template ${i} is already registered`);let f=this._createRegisteredResourceTemplate(i,void 0,t,l,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),f}}registerResource(i,t,u,l){if(typeof t==="string"){if(this._registeredResources[t])throw Error(`Resource ${t} is already registered`);let n=this._createRegisteredResource(i,u.title,t,u,l);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}else{if(this._registeredResourceTemplates[i])throw Error(`Resource template ${i} is already registered`);let n=this._createRegisteredResourceTemplate(i,u.title,t,u,l);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}}_createRegisteredResource(i,t,u,l,n){let f={name:i,title:t,metadata:l,readCallback:n,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({uri:null}),update:(c)=>{if(typeof c.uri<"u"&&c.uri!==u){if(delete this._registeredResources[u],c.uri)this._registeredResources[c.uri]=f}if(typeof c.name<"u")f.name=c.name;if(typeof c.title<"u")f.title=c.title;if(typeof c.metadata<"u")f.metadata=c.metadata;if(typeof c.callback<"u")f.readCallback=c.callback;if(typeof c.enabled<"u")f.enabled=c.enabled;this.sendResourceListChanged()}};return this._registeredResources[u]=f,f}_createRegisteredResourceTemplate(i,t,u,l,n){let f={resourceTemplate:u,title:t,metadata:l,readCallback:n,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:(d)=>{if(typeof d.name<"u"&&d.name!==i){if(delete this._registeredResourceTemplates[i],d.name)this._registeredResourceTemplates[d.name]=f}if(typeof d.title<"u")f.title=d.title;if(typeof d.template<"u")f.resourceTemplate=d.template;if(typeof d.metadata<"u")f.metadata=d.metadata;if(typeof d.callback<"u")f.readCallback=d.callback;if(typeof d.enabled<"u")f.enabled=d.enabled;this.sendResourceListChanged()}};this._registeredResourceTemplates[i]=f;let c=u.uriTemplate.variableNames;if(Array.isArray(c)&&c.some((d)=>!!u.completeCallback(d)))this.setCompletionRequestHandler();return f}_createRegisteredPrompt(i,t,u,l,n){let f={title:t,description:u,argsSchema:l===void 0?void 0:m8(l),callback:n,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:(c)=>{if(typeof c.name<"u"&&c.name!==i){if(delete this._registeredPrompts[i],c.name)this._registeredPrompts[c.name]=f}if(typeof c.title<"u")f.title=c.title;if(typeof c.description<"u")f.description=c.description;if(typeof c.argsSchema<"u")f.argsSchema=m8(c.argsSchema);if(typeof c.callback<"u")f.callback=c.callback;if(typeof c.enabled<"u")f.enabled=c.enabled;this.sendPromptListChanged()}};if(this._registeredPrompts[i]=f,l){if(Object.values(l).some(($)=>{let d=$ instanceof KSl?$._def?.innerType:$;return RKi(d)}))this.setCompletionRequestHandler()}return f}_createRegisteredTool(i,t,u,l,n,f,c,$,d){LKi(i);let _={title:t,description:u,inputSchema:yMt(l),outputSchema:yMt(n),annotations:f,execution:c,_meta:$,handler:d,enabled:!0,disable:()=>_.update({enabled:!1}),enable:()=>_.update({enabled:!0}),remove:()=>_.update({name:null}),update:(g)=>{if(typeof g.name<"u"&&g.name!==i){if(typeof g.name==="string")LKi(g.name);if(delete this._registeredTools[i],g.name)this._registeredTools[g.name]=_}if(typeof g.title<"u")_.title=g.title;if(typeof g.description<"u")_.description=g.description;if(typeof g.paramsSchema<"u")_.inputSchema=m8(g.paramsSchema);if(typeof g.outputSchema<"u")_.outputSchema=m8(g.outputSchema);if(typeof g.callback<"u")_.handler=g.callback;if(typeof g.annotations<"u")_.annotations=g.annotations;if(typeof g._meta<"u")_._meta=g._meta;if(typeof g.enabled<"u")_.enabled=g.enabled;this.sendToolListChanged()}};return this._registeredTools[i]=_,this.setToolRequestHandlers(),this.sendToolListChanged(),_}tool(i,...t){if(this._registeredTools[i])throw Error(`Tool ${i} is already registered`);let u,l,n,f;if(typeof t[0]==="string")u=t.shift();if(t.length>1){let $=t[0];if(eKi($)){if(l=t.shift(),t.length>1&&typeof t[0]==="object"&&t[0]!==null&&!eKi(t[0]))f=t.shift()}else if(typeof $==="object"&&$!==null){if(Object.values($).some((d)=>typeof d==="object"&&d!==null))throw Error(`Tool ${i} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);f=t.shift()}}let c=t[0];return this._createRegisteredTool(i,void 0,u,l,n,f,{taskSupport:"forbidden"},void 0,c)}registerTool(i,t,u){if(this._registeredTools[i])throw Error(`Tool ${i} is already registered`);let{title:l,description:n,inputSchema:f,outputSchema:c,annotations:$,_meta:d}=t;return this._createRegisteredTool(i,l,n,f,c,$,{taskSupport:"forbidden"},d,u)}prompt(i,...t){if(this._registeredPrompts[i])throw Error(`Prompt ${i} is already registered`);let u;if(typeof t[0]==="string")u=t.shift();let l;if(t.length>1)l=t.shift();let n=t[0],f=this._createRegisteredPrompt(i,void 0,u,l,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),f}registerPrompt(i,t,u){if(this._registeredPrompts[i])throw Error(`Prompt ${i} is already registered`);let{title:l,description:n,argsSchema:f}=t,c=this._createRegisteredPrompt(i,l,n,f,u);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),c}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(i,t){return this.server.sendLoggingMessage(i,t)}sendResourceListChanged(){if(this.isConnected())this.server.sendResourceListChanged()}sendToolListChanged(){if(this.isConnected())this.server.sendToolListChanged()}sendPromptListChanged(){if(this.isConnected())this.server.sendPromptListChanged()}}function NMt(i){return i!==null&&typeof i==="object"&&"parse"in i&&typeof i.parse==="function"&&"safeParse"in i&&typeof i.safeParse==="function"}function JMt(i){return"_def"in i||"_zod"in i||NMt(i)}function eKi(i){if(typeof i!=="object"||i===null)return!1;if(JMt(i))return!1;if(Object.keys(i).length===0)return!0;return Object.values(i).some(NMt)}function yMt(i){if(!i)return;if(eKi(i))return m8(i);if(!JMt(i))throw Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return i}function RSl(i){let t=VE(i);if(!t)return[];return Object.entries(t).map(([u,l])=>{let n=Hbt(l),f=Rbt(l);return{name:u,description:n,required:!f}})}function Ox(i){let u=VE(i)?.method;if(!u)throw Error("Schema is missing a method literal");let l=P0i(u);if(typeof l==="string")return l;throw Error("Schema method literal must be a string")}function XMt(i){return{completion:{values:i.slice(0,100),total:i.length,hasMore:i.length>100}}}var HSl,hL;var EL=w(()=>{vMt();kW();ozi();Xf();DMt();OMt();HSl={type:"object",properties:{}};hL={completion:{values:[],hasMore:!1}}});function D3(i,t,u){let l=u?.capabilities??i.getServerCapabilities(),n=u?.instructions??i.getInstructions(),f=new x3(t,{capabilities:l,instructions:n,jsonSchemaValidator:fc});if(f.server.setRequestHandler(HW,async(c)=>{let $=await i.listTools(c.params);return{...$,tools:$.tools.map(({outputSchema:d,..._})=>_)}}),f.server.setRequestHandler(fx,(c)=>i.callTool(c.params,void 0,u?.toolCallTimeoutMs?{timeout:u.toolCallTimeoutMs}:void 0)),l?.resources)f.server.setRequestHandler(ux,(c)=>i.listResources(c.params)),f.server.setRequestHandler(bW,(c)=>i.readResource(c.params)),f.server.setRequestHandler(lx,(c)=>i.listResourceTemplates(c.params));if(l?.prompts)f.server.setRequestHandler(nx,(c)=>i.listPrompts(c.params)),f.server.setRequestHandler(KW,(c)=>i.getPrompt({...c.params,arguments:c.params.arguments??{}}));return f}var UMt=w(()=>{EL();bKi();Xf()});class TMt{clientQueue=[];serverQueue=[];clientClosed=!1;serverClosed=!1;clientFlushScheduled=!1;serverFlushScheduled=!1;clientTransport;serverTransport;registerTransports(i,t){this.clientTransport=i,this.serverTransport=t,i.setOppositeTransport(t),t.setOppositeTransport(i)}getQueue(i){return i==="client"?this.clientQueue:this.serverQueue}isClosed(i){return i==="client"?this.clientClosed:this.serverClosed}close(i){if(i==="client")this.clientClosed=!0,this.clientQueue=[];else this.serverClosed=!0,this.serverQueue=[]}enqueue(i,t){if(this.isClosed(i))return;let u=this.getQueue(i);if(u.length>=1e4)throw Error(`BridgeTransport: ${i} queue overflow (max 10000 messages). The receiver may not be processing messages fast enough.`);if(u.push(t),i==="client"&&!this.clientFlushScheduled)this.scheduleFlush("client");else if(i==="server"&&!this.serverFlushScheduled)this.scheduleFlush("server")}scheduleFlush(i){if(i==="client")this.clientFlushScheduled=!0;else this.serverFlushScheduled=!0;queueMicrotask(()=>{this.flush(i)})}flush(i){let t=this.getQueue(i);if(i==="client")this.clientFlushScheduled=!1;else this.serverFlushScheduled=!1;if(this.isClosed(i)){t.length=0;return}let u=i==="client"?this.clientTransport:this.serverTransport;if(!u)return;if(!u.started)return;let l=t.splice(0);for(let n of l)u.deliverMessage(n)}closeBoth(){this.close("client"),this.close("server")}}class MKi{channel;side;started=!1;closed=!1;_onmessage;_onerror;_onclose;constructor(i,t){this.channel=i,this.side=t}get onmessage(){return this._onmessage}set onmessage(i){if(this._onmessage=i,i&&this.started&&!this.closed)this.channel.flush(this.side)}get onerror(){return this._onerror}set onerror(i){this._onerror=i}get onclose(){return this._onclose}set onclose(i){this._onclose=i}async start(){if(this.started)throw Error(`${this.side==="client"?"BridgeClientTransport":"BridgeServerTransport"} already started! If using Client/Server class, note that connect() calls start() automatically.`);if(this.started=!0,this._onmessage&&!this.closed)this.channel.flush(this.side)}async send(i){if(this.closed)return Promise.resolve();let t=this.side==="client"?"server":"client";return this.channel.enqueue(t,i),Promise.resolve()}async close(){if(!this.started||this.closed)return;this.closed=!0,this.channel.close(this.side);let i=this.getOppositeTransport();if(i&&!i.closed)i._onclose?.();this._onclose?.()}deliverMessage(i){if(!this.started||this.channel.isClosed(this.side))return;try{this._onmessage?.(i)}catch(t){this._onerror?.(t)}}}function vL(){let i=new TMt,t=new gk(i),u=new hk(i);return i.registerTransports(t,u),{client:t,server:u,channel:i}}var gk,hk;var FMt=w(()=>{gk=class gk extends MKi{oppositeTransport;constructor(i){super(i,"client")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport(i){if(!(i instanceof hk))throw Error("Opposite transport must be BridgeServerTransport");this.oppositeTransport=i}async start(){await super.start()}async send(i){await super.send(i)}};hk=class hk extends MKi{oppositeTransport;constructor(i){super(i,"server")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport(i){if(!(i instanceof gk))throw Error("Opposite transport must be BridgeClientTransport");this.oppositeTransport=i}async start(){await super.start()}async send(i){await super.send(i)}}});var k_=w(()=>{bKi();UMt();FMt()});var ZMt=w(()=>{k_()});var IMt=w(()=>{k_()});function rL(i,t,u,l){for(let n of u){let f=i.find((c)=>c.modelId===n);if(f)return{keyId:t,modelId:f.modelId,title:f.title}}for(let n of u){let f=i.find((c)=>c.modelId.includes(n));if(f)return{keyId:t,modelId:f.modelId,title:f.title}}if(l){let n=i.find(l);if(n)return{keyId:t,modelId:n.modelId,title:n.title}}return null}function qKi(i,t){let u={chat:{fast:null,smart:null,thinking:null},image:null,webResearch:null};for(let l of i){let n=t[l.id]??[],f=l.providerId;if(!u.chat.fast)u.chat.fast=rL(n,l.id,BMt[f]??[]);if(!u.chat.smart)u.chat.smart=rL(n,l.id,QMt[f]??[]);if(!u.chat.thinking)u.chat.thinking=rL(n,l.id,YMt[f]??[]);if(!u.image)u.image=rL(n,l.id,PMt[f]??[],(c)=>c.capabilities?.includes("image")===!0);if(!u.webResearch)u.webResearch=rL(n,l.id,AMt[f]??[],(c)=>{let $=c.modelId.toLowerCase().replace(/[^a-z0-9]/g,"");return $.includes("sonar")||$.includes("deepresearch")})}return u}var BMt,QMt,YMt,PMt,AMt;var GMt=w(()=>{BMt={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],google:["gemini-2.5-flash","gemini-3-flash"],"claude-code":["claude-code:haiku","claude-code:sonnet"],codex:["codex:gpt-5.4-mini"]},QMt={anthropic:["claude-sonnet-4-6","claude-sonnet"],openrouter:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude"],google:["gemini-3-pro","gemini-3-flash"],"claude-code":["claude-code:sonnet"],codex:["codex:gpt-5.4"]},YMt={anthropic:["claude-fable-5","claude-opus-4-8","claude-sonnet-4-6","claude-sonnet"],openrouter:["anthropic/claude-fable-5","anthropic/claude-opus-4.8","anthropic/claude-sonnet-4.6:extended","anthropic/claude-sonnet-4.6","google/gemini-3-pro"],deco:["anthropic/claude-fable","anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet"],google:["gemini-3-pro"],"claude-code":["claude-code:fable","claude-code:sonnet"],codex:["codex:gpt-5.5"]},PMt={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],google:["gemini-2.0-flash-image"]},AMt={openrouter:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"],deco:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"]}});var WMt=w(()=>{n1i()});function wL(i){if(!i)return;let t={};for(let u in i){let l=i[u];if(typeof l==="object"&&l!==null){let n={};for(let f of LSl)if(f in l)n[f]=l[f];t[u]=n}}return Object.keys(t).length>0?t:void 0}var LSl;var kMt=w(()=>{LSl=["usage","cost","model"]});var zl=w(()=>{VSi();oet();r1i();yKi();ZMt();IMt();sw();GMt();WMt();kMt();d1i()});var jMt="MCP Workflows",SMt="Create workflows using your MCP tools";import{sql as zMt}from"kysely";var bMt;var KMt=w(()=>{bMt={name:"001-workflows",async up(i){await i.schema.createTable("workflow_collection").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(t)=>t.notNull()).addColumn("description","text").addColumn("virtual_mcp_id","text",(t)=>t.notNull()).addColumn("steps","text",(t)=>t.notNull().defaultTo("[]")).addColumn("created_at","text",(t)=>t.notNull().defaultTo(zMt`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(zMt`CURRENT_TIMESTAMP`)).addColumn("created_by","text").addColumn("updated_by","text").execute(),await i.schema.createIndex("idx_wf_collection_org").ifNotExists().on("workflow_collection").column("organization_id").execute(),await i.schema.createIndex("idx_wf_collection_created_at").ifNotExists().on("workflow_collection").column("created_at").execute(),await i.schema.createTable("workflow").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("workflow_collection_id","text").addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("steps","text",(t)=>t.notNull().defaultTo("[]")).addColumn("input","text").addColumn("virtual_mcp_id","text",(t)=>t.notNull()).addColumn("created_at_epoch_ms","bigint",(t)=>t.notNull()).addColumn("created_by","text").execute(),await i.schema.createIndex("idx_workflow_created_at").ifNotExists().on("workflow").column("created_at_epoch_ms").execute(),await i.schema.createIndex("idx_workflow_collection_id").ifNotExists().on("workflow").column("workflow_collection_id").execute(),await i.schema.createTable("workflow_execution").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("workflow_id","text",(t)=>t.notNull().references("workflow.id").onDelete("cascade")).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("status","text",(t)=>t.notNull().defaultTo("enqueued")).addColumn("input","text").addColumn("output","text").addColumn("error","text").addColumn("created_at","bigint",(t)=>t.notNull()).addColumn("updated_at","bigint",(t)=>t.notNull()).addColumn("start_at_epoch_ms","bigint").addColumn("started_at_epoch_ms","bigint").addColumn("completed_at_epoch_ms","bigint").addColumn("timeout_ms","bigint").addColumn("deadline_at_epoch_ms","bigint").addColumn("created_by","text").execute(),await i.schema.createIndex("idx_wf_execution_status").ifNotExists().on("workflow_execution").column("status").execute(),await i.schema.createIndex("idx_wf_execution_workflow_id").ifNotExists().on("workflow_execution").column("workflow_id").execute(),await i.schema.createIndex("idx_wf_execution_org").ifNotExists().on("workflow_execution").column("organization_id").execute(),await i.schema.createIndex("idx_wf_execution_created_at").ifNotExists().on("workflow_execution").column("created_at").execute(),await i.schema.createTable("workflow_execution_step_result").ifNotExists().addColumn("execution_id","text",(t)=>t.notNull().references("workflow_execution.id").onDelete("cascade")).addColumn("step_id","text",(t)=>t.notNull()).addColumn("started_at_epoch_ms","bigint").addColumn("completed_at_epoch_ms","bigint").addColumn("output","text").addColumn("error","text").addColumn("raw_tool_output","text").execute(),await i.schema.createIndex("idx_wf_step_result_pk").ifNotExists().on("workflow_execution_step_result").columns(["execution_id","step_id"]).unique().execute(),await i.schema.createIndex("idx_wf_step_result_execution").ifNotExists().on("workflow_execution_step_result").column("execution_id").execute()},async down(i){await i.schema.dropIndex("idx_wf_step_result_execution").ifExists().execute(),await i.schema.dropIndex("idx_wf_step_result_pk").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_created_at").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_org").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_workflow_id").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_status").ifExists().execute(),await i.schema.dropIndex("idx_workflow_collection_id").ifExists().execute(),await i.schema.dropIndex("idx_workflow_created_at").ifExists().execute(),await i.schema.dropIndex("idx_wf_collection_created_at").ifExists().execute(),await i.schema.dropIndex("idx_wf_collection_org").ifExists().execute(),await i.schema.dropTable("workflow_execution_step_result").ifExists().execute(),await i.schema.dropTable("workflow_execution").ifExists().execute(),await i.schema.dropTable("workflow").ifExists().execute(),await i.schema.dropTable("workflow_collection").ifExists().execute()}}});var HMt;var RMt=w(()=>{HMt={name:"002-execution-list-index",async up(i){await i.schema.createIndex("idx_wf_execution_org_created_at").ifNotExists().on("workflow_execution").columns(["organization_id","created_at desc"]).execute()},async down(i){await i.schema.dropIndex("idx_wf_execution_org_created_at").ifExists().execute()}}});var LMt;var CMt=w(()=>{LMt={name:"003-retry-and-input-schema",async up(i){await i.schema.alterTable("workflow_execution_step_result").addColumn("attempt_number","integer",(t)=>t.notNull().defaultTo(1)).execute(),await i.schema.alterTable("workflow_collection").addColumn("input_schema","text").execute()},async down(i){await i.schema.alterTable("workflow_execution_step_result").dropColumn("attempt_number").execute(),await i.schema.alterTable("workflow_collection").dropColumn("input_schema").execute()}}});var eMt;var MMt=w(()=>{KMt();RMt();CMt();eMt=[bMt,HMt,LMt]});function Gd(i){let t=i;if(!t.organization)throw Error("Organization context required for workflow tools");return t}function ec(i){if(i===null||i===void 0)return null;if(typeof i==="object")return i;if(typeof i!=="string")return i;try{return JSON.parse(i)}catch{return i}}function qMt(i){VKi=i}function T4(){if(!VKi)throw Error('Plugin storage not initialized. Make sure the "workflows" plugin is enabled.');return VKi}var VKi=null;function VMt(i){return{...i,steps:ec(i.steps)??[],input_schema:ec(i.input_schema)??null}}class aKi{db;constructor(i){this.db=i}async list(i,t={}){let{limit:u=50,offset:l=0}=t,n=await this.db.selectFrom("workflow_collection").selectAll().where("organization_id","=",i).orderBy("created_at","desc").limit(u).offset(l).execute(),f=await this.db.selectFrom("workflow_collection").select((c)=>c.fn.countAll().as("count")).where("organization_id","=",i).executeTakeFirstOrThrow();return{items:n,totalCount:Number(f.count)}}async getById(i,t){let u=await this.db.selectFrom("workflow_collection").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst();return u?VMt(u):null}async create(i){let{input_schema:t,...u}=i,l=await this.db.insertInto("workflow_collection").values({...u,input_schema:t!=null?JSON.stringify(t):null}).returningAll().executeTakeFirstOrThrow();return VMt(l)}async update(i,t,u){let{input_schema:l,...n}=u,f={...n,updated_at:new Date().toISOString()};if(l!==void 0)f.input_schema=l?JSON.stringify(l):null;return await this.db.updateTable("workflow_collection").set(f).where("id","=",i).where("organization_id","=",t).returningAll().executeTakeFirstOrThrow()}async delete(i,t){return await this.db.deleteFrom("workflow_collection").where("id","=",i).where("organization_id","=",t).returningAll().executeTakeFirstOrThrow()}}var aMt=()=>{};function CSl(i){return{...i,steps:ec(i.steps)??[],input:ec(i.input)??null}}function yx(i){return{...i,output:ec(i.output),error:ec(i.error),raw_tool_output:ec(i.raw_tool_output)}}class mKi{db;constructor(i){this.db=i}async _createWorkflow(i,t){let u=crypto.randomUUID(),l=Date.now();return await i.insertInto("workflow").values({id:u,workflow_collection_id:t.workflowCollectionId??null,organization_id:t.organizationId,steps:JSON.stringify(t.steps),input:t.input?JSON.stringify(t.input):null,virtual_mcp_id:t.virtualMcpId,created_at_epoch_ms:l,created_by:t.createdBy??null}).execute(),{id:u}}async createWorkflow(i){return this._createWorkflow(this.db,i)}async getWorkflow(i){let t=await this.db.selectFrom("workflow").selectAll().where("id","=",i).executeTakeFirst();return t?CSl(t):null}async createExecution(i){return this.db.transaction().execute(async(t)=>{let u=Date.now(),{id:l}=await this._createWorkflow(t,{organizationId:i.organizationId,workflowCollectionId:i.workflowCollectionId,virtualMcpId:i.virtualMcpId,input:i.input,steps:i.steps,createdBy:i.createdBy}),n=crypto.randomUUID(),f=i.startAtEpochMs??u,c=i.timeoutMs?f+i.timeoutMs:null;return await t.insertInto("workflow_execution").values({id:n,workflow_id:l,organization_id:i.organizationId,status:"enqueued",input:i.input?JSON.stringify(i.input):null,created_at:u,updated_at:u,start_at_epoch_ms:f,timeout_ms:i.timeoutMs??null,deadline_at_epoch_ms:c,created_by:i.createdBy??null}).execute(),{id:n}})}async getExecution(i,t){return await this.db.selectFrom("workflow_execution").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst()??null}async getExecutionFull(i,t){let u=await this.db.selectFrom("workflow_execution").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst();if(!u)return null;let l=await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).execute();return{execution:u,stepResults:l.map(yx)}}async getExecutionContext(i){let[t,u]=await Promise.all([this.db.selectFrom("workflow_execution as we").innerJoin("workflow as w","we.workflow_id","w.id").select(["we.id","we.status","we.workflow_id","we.deadline_at_epoch_ms","w.steps","w.input","w.virtual_mcp_id"]).where("we.id","=",i).executeTakeFirst(),this.db.selectFrom("workflow_execution_step_result").select(["step_id","started_at_epoch_ms","completed_at_epoch_ms","output","error","attempt_number"]).where("execution_id","=",i).execute()]);if(!t)return null;return{execution:{id:t.id,status:t.status,workflow_id:t.workflow_id,deadline_at_epoch_ms:t.deadline_at_epoch_ms},workflow:{steps:ec(t.steps)??[],input:ec(t.input)??null,virtual_mcp_id:t.virtual_mcp_id},stepResults:u.map((l)=>({step_id:l.step_id,started_at_epoch_ms:l.started_at_epoch_ms,completed_at_epoch_ms:l.completed_at_epoch_ms,output:ec(l.output),error:ec(l.error),attempt_number:l.attempt_number}))}}async claimExecution(i){let t=Date.now(),u=await this.db.updateTable("workflow_execution").set({status:"running",updated_at:t}).where("id","=",i).where("status","=","enqueued").returningAll().executeTakeFirst();if(!u)return null;let l=await this.getWorkflow(u.workflow_id);if(!l)throw Error(`Workflow ${u.workflow_id} not found for execution ${i}`);return{execution:u,workflow:l}}async updateExecution(i,t,u){let n={updated_at:Date.now()};if(t.status!==void 0)n.status=t.status;if(t.output!==void 0)n.output=JSON.stringify(t.output);if(t.error!==void 0)n.error=JSON.stringify(t.error);if(t.completed_at_epoch_ms!==void 0)n.completed_at_epoch_ms=t.completed_at_epoch_ms;let f=this.db.updateTable("workflow_execution").set(n).where("id","=",i);if(u?.onlyIfStatus)f=f.where("status","=",u.onlyIfStatus);return await f.returningAll().executeTakeFirst()??null}async cancelExecution(i,t){let u=Date.now();return!!await this.db.updateTable("workflow_execution").set({status:"cancelled",updated_at:u}).where("id","=",i).where("organization_id","=",t).where("status","in",["enqueued","running"]).returningAll().executeTakeFirst()}async resumeExecution(i,t){return this.db.transaction().execute(async(u)=>{let l=Date.now(),n=await u.selectFrom("workflow_execution").where("id","=",i).where("organization_id","=",t).select(["status"]).executeTakeFirst();if(!n)return!1;let{status:f}=n;if(f==="success"){let d=await u.selectFrom("workflow_execution_step_result").where("execution_id","=",i).where("error","is not",null).select(u.fn.countAll().as("count")).executeTakeFirstOrThrow();if(Number(d.count)===0)return!1}else if(f!=="cancelled"&&f!=="error")return!1;await u.updateTable("workflow_execution").set({status:"enqueued",updated_at:l,completed_at_epoch_ms:null,error:null}).where("id","=",i).execute();let c=await u.selectFrom("workflow_execution_step_result").where("execution_id","=",i).where("error","is not",null).where("step_id","like","%[%").select("step_id").execute(),$=new Set;for(let d of c)$.add(d.step_id.replace(/\[\d+\]$/,""));if(await u.deleteFrom("workflow_execution_step_result").where("execution_id","=",i).where((d)=>d.or([d("completed_at_epoch_ms","is",null),d("error","is not",null)])).execute(),$.size>0)await u.deleteFrom("workflow_execution_step_result").where("execution_id","=",i).where("step_id","in",[...$]).execute();return!0})}async listExecutions(i,t={}){let{limit:u=50,offset:l=0,status:n,workflowCollectionId:f}=t,c=this.db.selectFrom("workflow_execution as we").innerJoin("workflow as w","we.workflow_id","w.id").leftJoin("workflow_collection as wc","w.workflow_collection_id","wc.id").select(["we.id","we.workflow_id","we.organization_id","we.status","we.input","we.output","we.error","we.created_at","we.updated_at","we.start_at_epoch_ms","we.started_at_epoch_ms","we.completed_at_epoch_ms","we.timeout_ms","we.deadline_at_epoch_ms","we.created_by","w.virtual_mcp_id"]).select((h)=>h.fn.coalesce("wc.title",h.val("Workflow Execution")).as("title")).where("we.organization_id","=",i);if(n)c=c.where("we.status","=",n);if(f)c=c.where("w.workflow_collection_id","=",f);let $=await c.orderBy("we.created_at","desc").limit(u).offset(l).execute(),d=this.db.selectFrom("workflow_execution as we").innerJoin("workflow as w","we.workflow_id","w.id").select((h)=>h.fn.countAll().as("count")).where("we.organization_id","=",i);if(n)d=d.where("we.status","=",n);if(f)d=d.where("w.workflow_collection_id","=",f);let _=await d.executeTakeFirstOrThrow(),g=Number(_.count);return{items:$,totalCount:g,hasMore:l+$.length<g}}async createStepResult(i){let t=await this.db.insertInto("workflow_execution_step_result").values({execution_id:i.execution_id,step_id:i.step_id,started_at_epoch_ms:i.completed_at_epoch_ms?Date.now():null,completed_at_epoch_ms:i.completed_at_epoch_ms??null,output:i.output!==void 0?JSON.stringify(i.output):null,error:i.error!==void 0?JSON.stringify(i.error):null,attempt_number:1}).onConflict((u)=>u.columns(["execution_id","step_id"]).doNothing()).returningAll().executeTakeFirst();return t?yx(t):null}async updateStepResult(i,t,u){let l={};if(u.output!==void 0)l.output=u.output===null?null:JSON.stringify(u.output);if(u.error!==void 0)l.error=u.error===null?null:JSON.stringify(u.error);if(u.started_at_epoch_ms!==void 0)l.started_at_epoch_ms=u.started_at_epoch_ms;if(u.completed_at_epoch_ms!==void 0)l.completed_at_epoch_ms=u.completed_at_epoch_ms;if(u.attempt_number!==void 0)l.attempt_number=u.attempt_number;if(u.raw_tool_output!==void 0)l.raw_tool_output=u.raw_tool_output===null?null:JSON.stringify(u.raw_tool_output);if(Object.keys(l).length===0)return null;let n=await this.db.updateTable("workflow_execution_step_result").set(l).where("execution_id","=",i).where("step_id","=",t).returningAll().executeTakeFirst();return n?yx(n):null}async claimStepForRetry(i,t,u){let l=await this.db.updateTable("workflow_execution_step_result").set({started_at_epoch_ms:Date.now()}).where("execution_id","=",i).where("step_id","=",t).where("attempt_number","=",u).where("started_at_epoch_ms","is",null).returningAll().executeTakeFirst();return l?yx(l):null}async resetStepResultForRetry(i,t,u){await this.updateStepResult(i,t,{completed_at_epoch_ms:null,output:null,error:null,started_at_epoch_ms:null,attempt_number:u,raw_tool_output:null})}async checkpointAndTransform(i,t,u,l){await this.db.updateTable("workflow_execution_step_result").set({raw_tool_output:JSON.stringify(u)}).where("execution_id","=",i).where("step_id","=",t).execute();let n,f;try{let d=await l(u);n=d.output,f=d.error}catch(d){f=d instanceof Error?`Transform failed: ${d.message}`:`Transform failed: ${String(d)}`}let c={completed_at_epoch_ms:Date.now()};if(n!==void 0)c.output=JSON.stringify(n);if(f!==void 0)c.error=JSON.stringify(f);let $=await this.db.updateTable("workflow_execution_step_result").set(c).where("execution_id","=",i).where("step_id","=",t).returningAll().executeTakeFirst();return $?yx($):null}async getStepResult(i,t){let u=await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).where("step_id","=",t).executeTakeFirst();return u?yx(u):null}async getStepResults(i){return(await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).execute()).map(yx)}async deleteStepResult(i,t){await this.db.deleteFrom("workflow_execution_step_result").where("execution_id","=",i).where("step_id","=",t).execute()}async getStepResultsByPrefix(i,t){let u=t.replaceAll("\\","\\\\").replaceAll("%","\\%").replaceAll("_","\\_");return(await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).where("step_id","like",`${u}%`).orderBy("step_id").execute()).map(yx)}async recoverStuckExecutions(){return this.db.updateTable("workflow_execution").set({status:"enqueued",updated_at:Date.now()}).where("status","=","running").returning(["id","organization_id"]).execute()}}var mMt=()=>{};function oMt(i){let t=i.db;return{collections:new aKi(t),executions:new mKi(t)}}var sMt=w(()=>{aMt();mMt()});import{z as u6}from"zod/v4";import{z as pMt}from"zod/v4";import{z as w1i}from"zod/v4";import{z as lv}from"zod/v4";import{z as VSl}from"zod/v4";import{z as _O}from"zod/v4";import{z as nv}from"zod/v4";import{z as Mc}from"zod/v4";import{z as iqt}from"zod/v4";import{z as O1i}from"zod/v4";import{z as Dzl}from"zod/v4";import{z as tqt}from"zod/v4";import{z as x1i}from"zod/v4";import{z as Zzl}from"zod/v4";function xL(i,t){if(i===t)return!0;if(i==null||t==null)return i===t;if(typeof i!==typeof t)return!1;if(Array.isArray(i)&&Array.isArray(t)){if(i.length!==t.length)return!1;return i.every((u,l)=>xL(u,t[l]))}if(typeof i==="object"&&typeof t==="object"){let u=Object.keys(i),l=Object.keys(t);if(u.length!==l.length)return!1;return u.every((n)=>l.includes(n)&&xL(i[n],t[n]))}return!1}function rzl(){return(i)=>{if(!Array.isArray(i))return!0;let t=[];return i.every((u)=>{if(t.some((n)=>xL(u,n)))return!1;return t.push(u),!0})}}function D1i(i,t){return i.safeParse(t).success}function Xc(i){if(typeof i==="boolean")return i?u6.any():u6.never();let t={};for(let n of Yzl)n.apply(t,i);let u=[];if(t.string!==!1)u.push(t.string||u6.string());if(t.number!==!1)u.push(t.number||u6.number());if(t.boolean!==!1)u.push(t.boolean||u6.boolean());if(t.null!==!1)u.push(t.null||u6.null());if(t.array!==!1)u.push(t.array||u6.array(u6.any()));if(t.tuple!==!1&&t.tuple!==void 0)u.push(t.tuple);if(t.object!==!1)if(t.object)u.push(t.object);else{let n=u6.custom((f)=>{return typeof f==="object"&&f!==null&&!Array.isArray(f)},"Must be an object, not an array");u.push(n)}if(t.file!==!1&&t.file!==void 0)u.push(t.file);let l;if(u.length===0)l=u6.never();else if(u.length===1)l=u[0];else if(!Object.keys(i).some((f)=>f!=="$schema"&&f!=="title"&&f!=="description"))l=u6.any();else l=u6.union(u);for(let n of Pzl)l=n.apply(l,i);return l}var eSl=class{apply(i,t){if(!t.type)return;let u=Array.isArray(t.type)?t.type:[t.type],l=new Set(u);if(!l.has("string"))i.string=!1;if(!l.has("number")&&!l.has("integer"))i.number=!1;if(!l.has("boolean"))i.boolean=!1;if(!l.has("null"))i.null=!1;if(!l.has("array"))i.array=!1;if(!l.has("object"))i.object=!1;if(l.has("integer")&&i.number!==!1){let n=i.number||pMt.number();if(n instanceof pMt.ZodNumber)i.number=n.int()}}},MSl=class{apply(i,t){if(t.const===void 0)return;let u=t.const;if(i.string=!1,i.number=!1,i.boolean=!1,i.null=!1,i.array=!1,i.object=!1,typeof u==="string")i.string=w1i.literal(u);else if(typeof u==="number")i.number=w1i.literal(u);else if(typeof u==="boolean")i.boolean=w1i.literal(u);else if(u===null)i.null=w1i.null();else if(Array.isArray(u))i.array=void 0;else if(typeof u==="object")i.object=void 0}},qSl=class{apply(i,t){if(!t.enum)return;if(t.enum.length===0){if(!t.type)i.string=!1,i.number=!1,i.boolean=!1,i.null=!1,i.array=!1,i.object=!1;return}let u={string:t.enum.filter((l)=>typeof l==="string"),number:t.enum.filter((l)=>typeof l==="number"),boolean:t.enum.filter((l)=>typeof l==="boolean"),null:t.enum.filter((l)=>l===null),array:t.enum.filter((l)=>Array.isArray(l)),object:t.enum.filter((l)=>typeof l==="object"&&l!==null&&!Array.isArray(l))};i.string=this.createTypeSchema(u.string,"string"),i.number=this.createTypeSchema(u.number,"number"),i.boolean=this.createTypeSchema(u.boolean,"boolean"),i.null=u.null.length>0?lv.null():!1,i.array=u.array.length>0?void 0:!1,i.object=u.object.length>0?void 0:!1}createTypeSchema(i,t){if(i.length===0)return!1;if(i.length===1)return lv.literal(i[0]);if(t==="string")return lv.enum(i);if(t==="number"){let[u,l,...n]=i;return lv.union([lv.literal(u),lv.literal(l),...n.map((f)=>lv.literal(f))])}if(t==="boolean")return lv.union([lv.literal(!0),lv.literal(!1)]);return!1}},aSl=class{apply(i,t){let u=t;if(u.type==="string"&&u.format==="binary"&&u.contentEncoding==="binary"){let l=VSl.file();if(u.minLength!==void 0)l=l.min(u.minLength);if(u.maxLength!==void 0)l=l.max(u.maxLength);if(u.contentMediaType!==void 0)l=l.mime(u.contentMediaType);i.file=l,i.string=!1}}},mSl=class{apply(i,t){let u=t;if(t.type===void 0&&(u.minLength!==void 0||u.maxLength!==void 0||u.pattern!==void 0)){if(i.string===void 0)i.string=_O.string()}}},oSl=class{apply(i,t){let u=t;if(u.minLength===void 0)return;if(i.string!==!1){let l=i.string||_O.string();if(l instanceof _O.ZodString)i.string=l.refine((n)=>{return Array.from(n).length>=u.minLength},{message:`String must be at least ${u.minLength} characters long`})}}},sSl=class{apply(i,t){let u=t;if(u.maxLength===void 0)return;if(i.string!==!1){let l=i.string||_O.string();if(l instanceof _O.ZodString)i.string=l.refine((n)=>{return Array.from(n).length<=u.maxLength},{message:`String must be at most ${u.maxLength} characters long`})}}},pSl=class{apply(i,t){let u=t;if(!u.pattern)return;if(i.string!==!1){let l=i.string||_O.string();if(l instanceof _O.ZodString){let n=new RegExp(u.pattern);i.string=l.regex(n)}}}},izl=class{apply(i,t){let u=t;if(u.minimum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)i.number=l.min(u.minimum)}}},tzl=class{apply(i,t){let u=t;if(u.maximum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)i.number=l.max(u.maximum)}}},uzl=class{apply(i,t){let u=t;if(u.exclusiveMinimum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)if(typeof u.exclusiveMinimum==="number")i.number=l.gt(u.exclusiveMinimum);else i.number=!1}}},lzl=class{apply(i,t){let u=t;if(u.exclusiveMaximum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)if(typeof u.exclusiveMaximum==="number")i.number=l.lt(u.exclusiveMaximum);else i.number=!1}}},nzl=class{apply(i,t){let u=t;if(u.multipleOf===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)i.number=l.refine((n)=>{if(u.multipleOf===0)return!1;let f=n/u.multipleOf,c=Math.round(f),$=Math.min(Math.abs(n)*Number.EPSILON*10,Math.abs(u.multipleOf)*Number.EPSILON*10);return Math.abs(f-c)<=$/Math.abs(u.multipleOf)},{message:`Must be a multiple of ${u.multipleOf}`})}}},fzl=class{apply(i,t){let u=t;if(t.type===void 0&&(u.minItems!==void 0||u.maxItems!==void 0||u.items!==void 0||u.prefixItems!==void 0)){if(i.array===void 0)i.array=Mc.array(Mc.any())}}},czl=class{apply(i,t){let u=t;if(u.minItems===void 0)return;if(i.array!==!1)i.array=(i.array||Mc.array(Mc.any())).min(u.minItems)}},$zl=class{apply(i,t){let u=t;if(u.maxItems===void 0)return;if(i.array!==!1)i.array=(i.array||Mc.array(Mc.any())).max(u.maxItems)}},dzl=class{apply(i,t){let u=t;if(i.array===!1)return;if(Array.isArray(u.items))i.array=i.array||Mc.array(Mc.any());else if(u.items&&typeof u.items!=="boolean"&&!u.prefixItems){let l=Xc(u.items),n=Mc.array(l);if(i.array&&i.array instanceof Mc.ZodArray){let f=i.array._def;if(f.checks)f.checks.forEach((c)=>{if(c._zod&&c._zod.def){let $=c._zod.def;if($.check==="min_length"&&$.minimum!==void 0)n=n.min($.minimum);else if($.check==="max_length"&&$.maximum!==void 0)n=n.max($.maximum)}})}i.array=n}else if(typeof u.items==="boolean"&&u.items===!1)if(!u.prefixItems)i.array=Mc.array(Mc.any()).max(0);else i.array=i.array||Mc.array(Mc.any());else if(typeof u.items==="boolean"&&u.items===!0)i.array=i.array||Mc.array(Mc.any());else if(u.prefixItems)i.array=i.array||Mc.array(Mc.any())}},_zl=class{apply(i,t){if(t.type!=="array")return;let u=t;if(!Array.isArray(u.items))return;if(i.array===!1)return;let l=u.items.map((f)=>Xc(f)),n;if(l.length===0)n=iqt.tuple([]);else n=iqt.tuple(l);if(u.minItems!==void 0&&u.minItems>l.length)n=!1;if(u.maxItems!==void 0&&u.maxItems<l.length)n=!1;i.tuple=n,i.array=!1}},gzl=class{apply(i,t){let u=t;if(i.object===!1)return;if(u.properties||u.required||u.additionalProperties!==void 0)i.object=i.object||O1i.object({}).passthrough()}},hzl=class{apply(i,t){let u=t;if(t.type===void 0&&(u.maxProperties!==void 0||u.minProperties!==void 0)){if(i.object===void 0)i.object=O1i.object({}).passthrough()}}},Ezl=class{apply(i,t){let u=t;if(u.maxProperties===void 0)return;if(i.object!==!1){let l=i.object||O1i.object({}).passthrough();i.object=l.refine((n)=>Object.keys(n).length<=u.maxProperties,{message:`Object must have at most ${u.maxProperties} properties`})}}},vzl=class{apply(i,t){let u=t;if(u.minProperties===void 0)return;if(i.object!==!1){let l=i.object||O1i.object({}).passthrough();i.object=l.refine((n)=>Object.keys(n).length>=u.minProperties,{message:`Object must have at least ${u.minProperties} properties`})}}},wzl=class{apply(i,t){if(!t.not)return i;let u=Xc(t.not);return i.refine((l)=>!D1i(u,l),{message:"Value must not match the 'not' schema"})}},xzl=class{apply(i,t){if(t.uniqueItems!==!0)return i;return i.refine(rzl(),{message:"Array items must be unique"})}},Ozl=class{apply(i,t){if(!t.allOf||t.allOf.length===0)return i;return t.allOf.map((l)=>Xc(l)).reduce((l,n)=>Dzl.intersection(l,n),i)}},yzl=class{apply(i,t){if(!t.anyOf||t.anyOf.length===0)return i;let u=t.anyOf.length===1?Xc(t.anyOf[0]):tqt.union([Xc(t.anyOf[0]),Xc(t.anyOf[1]),...t.anyOf.slice(2).map((l)=>Xc(l))]);return tqt.intersection(i,u)}},Xzl=class{apply(i,t){if(!t.oneOf||t.oneOf.length===0)return i;let u=t.oneOf.map((l)=>Xc(l));return i.refine((l)=>{let n=0;for(let f of u)if(f.safeParse(l).success){if(n++,n>1)return!1}return n===1},{message:"Value must match exactly one of the oneOf schemas"})}},Nzl=class{apply(i,t){let u=t;if(u.prefixItems&&Array.isArray(u.prefixItems)){let n=u.prefixItems.map((f)=>Xc(f));return i.refine((f)=>{if(!Array.isArray(f))return!0;for(let c=0;c<Math.min(f.length,n.length);c++)if(!D1i(n[c],f[c]))return!1;if(f.length>n.length){if(typeof u.items==="boolean"&&u.items===!1)return!1;else if(u.items&&typeof u.items==="object"&&!Array.isArray(u.items)){let c=Xc(u.items);for(let $=n.length;$<f.length;$++)if(!D1i(c,f[$]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return i}},Jzl=class{apply(i,t){let u=t;if(!u.properties&&!u.required&&u.additionalProperties!==!1)return i;if(i instanceof x1i.ZodObject||i instanceof x1i.ZodRecord){let l={};if(u.properties){for(let[n,f]of Object.entries(u.properties))if(f!==void 0)l[n]=Xc(f)}if(u.required&&Array.isArray(u.required)){let n=new Set(u.required);for(let f of Object.keys(l))if(!n.has(f))l[f]=l[f].optional()}else for(let n of Object.keys(l))l[n]=l[n].optional();if(u.additionalProperties===!1)return x1i.object(l);else return x1i.object(l).passthrough()}return i.refine((l)=>{if(typeof l!=="object"||l===null||Array.isArray(l))return!0;if(u.properties){for(let[n,f]of Object.entries(u.properties))if(f!==void 0){if(Object.getOwnPropertyDescriptor(l,n)!==void 0){if(!Xc(f).safeParse(l[n]).success)return!1}}}if(u.required&&Array.isArray(u.required)){for(let n of u.required)if(Object.getOwnPropertyDescriptor(l,n)===void 0)return!1}if(u.additionalProperties===!1&&u.properties){let n=new Set(Object.keys(u.properties));for(let f in l)if(!n.has(f))return!1}return!0},{message:"Object constraints validation failed"})}},Uzl=class{apply(i,t){if(!t.enum||t.enum.length===0)return i;let u=t.enum.filter((l)=>Array.isArray(l)||typeof l==="object"&&l!==null);if(u.length===0)return i;return i.refine((l)=>{if(typeof l!=="object"||l===null)return!0;return u.some((n)=>xL(l,n))},{message:"Value must match one of the enum values"})}},Tzl=class{apply(i,t){if(t.const===void 0)return i;let u=t.const;if(typeof u!=="object"||u===null)return i;return i.refine((l)=>xL(l,u),{message:"Value must equal the const value"})}},Fzl=class{apply(i,t){if(t.description)i=i.describe(t.description);return i}},Izl=class{apply(i,t){var u;let l=t;if(!((u=l.required)==null?void 0:u.includes("__proto__"))||t.type!==void 0)return i;return Zzl.any().refine((n)=>this.validateRequired(n,l.required),{message:"Missing required properties"})}validateRequired(i,t){if(typeof i!=="object"||i===null||Array.isArray(i))return!0;return t.every((u)=>Object.prototype.hasOwnProperty.call(i,u))}},Bzl=class{apply(i,t){var u;let l=t;if(l.contains===void 0)return i;let n=Xc(l.contains),f=(u=l.minContains)!=null?u:1,c=l.maxContains;return i.refine(($)=>{if(!Array.isArray($))return!0;let d=0;for(let _ of $)if(D1i(n,_))d++;if(d<f)return!1;if(c!==void 0&&d>c)return!1;return!0},{message:"Array must contain required items matching the schema"})}},Qzl=class{apply(i,t){let{default:u}=t;if(u===void 0)return i;if(!i.safeParse(u).success)return i;return i.default(u)}},Yzl,Pzl;var oKi=w(()=>{Yzl=[new MSl,new qSl,new eSl,new aSl,new mSl,new fzl,new hzl,new oSl,new sSl,new pSl,new izl,new tzl,new uzl,new lzl,new nzl,new _zl,new czl,new $zl,new dzl,new Ezl,new vzl,new gzl],Pzl=[new Izl,new Uzl,new Tzl,new Ozl,new yzl,new Xzl,new Nzl,new Jzl,new Bzl,new wzl,new xzl,new Qzl,new Fzl]});function Azl(i){let t=globalThis.DOMException;return typeof t=="function"?new t(i,"SyntaxError"):SyntaxError(i)}function pKi(i){return i instanceof Error?"errors"in i&&Array.isArray(i.errors)?i.errors.map(pKi).join(", "):("cause"in i)&&i.cause instanceof Error?`${i}: ${pKi(i.cause)}`:i.message:`${i}`}function uqt(i){return{type:i.type,message:i.message,code:i.code,defaultPrevented:i.defaultPrevented,cancelable:i.cancelable,timeStamp:i.timeStamp}}function Gzl(){let i="document"in globalThis?globalThis.document:void 0;return i&&typeof i=="object"&&"baseURI"in i&&typeof i.baseURI=="string"?i.baseURI:void 0}var sKi,nqt=(i)=>{throw TypeError(i)},$Hi=(i,t,u)=>t.has(i)||nqt("Cannot "+u),x0=(i,t,u)=>($Hi(i,t,"read from private field"),u?u.call(i):t.get(i)),Nc=(i,t,u)=>t.has(i)?nqt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(i):t.set(i,u),V1=(i,t,u,l)=>($Hi(i,t,"write to private field"),t.set(i,u),u),O3=(i,t,u)=>($Hi(i,t,"access private method"),u),Wd,gO,Ek,y1i,X1i,yL,wk,XL,Xx,vk,xk,rk,DL,Nh,iHi,tHi,uHi,lqt,lHi,nHi,OL,fHi,cHi,Dk;var fqt=w(()=>{DKi();sKi=class sKi extends Event{constructor(i,t){var u,l;super(i),this.code=(u=t==null?void 0:t.code)!=null?u:void 0,this.message=(l=t==null?void 0:t.message)!=null?l:void 0}[Symbol.for("nodejs.util.inspect.custom")](i,t,u){return u(uqt(this),t)}[Symbol.for("Deno.customInspect")](i,t){return i(uqt(this),t)}};Dk=class Dk extends EventTarget{constructor(i,t){var u,l;super(),Nc(this,Nh),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,Nc(this,Wd),Nc(this,gO),Nc(this,Ek),Nc(this,y1i),Nc(this,X1i),Nc(this,yL),Nc(this,wk),Nc(this,XL,null),Nc(this,Xx),Nc(this,vk),Nc(this,xk,null),Nc(this,rk,null),Nc(this,DL,null),Nc(this,tHi,async(n)=>{var f;x0(this,vk).reset();let{body:c,redirected:$,status:d,headers:_}=n;if(d===204){O3(this,Nh,OL).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if($?V1(this,Ek,new URL(n.url)):V1(this,Ek,void 0),d!==200){O3(this,Nh,OL).call(this,`Non-200 status code (${d})`,d);return}if(!(_.get("content-type")||"").startsWith("text/event-stream")){O3(this,Nh,OL).call(this,'Invalid content type, expected "text/event-stream"',d);return}if(x0(this,Wd)===this.CLOSED)return;V1(this,Wd,this.OPEN);let g=new Event("open");if((f=x0(this,DL))==null||f.call(this,g),this.dispatchEvent(g),typeof c!="object"||!c||!("getReader"in c)){O3(this,Nh,OL).call(this,"Invalid response body, expected a web ReadableStream",d),this.close();return}let h=new TextDecoder,E=c.getReader(),v=!0;do{let{done:r,value:x}=await E.read();x&&x0(this,vk).feed(h.decode(x,{stream:!r})),r&&(v=!1,x0(this,vk).reset(),O3(this,Nh,fHi).call(this))}while(v)}),Nc(this,uHi,(n)=>{V1(this,Xx,void 0),!(n.name==="AbortError"||n.type==="aborted")&&O3(this,Nh,fHi).call(this,pKi(n))}),Nc(this,lHi,(n)=>{typeof n.id=="string"&&V1(this,XL,n.id);let f=new MessageEvent(n.event||"message",{data:n.data,origin:x0(this,Ek)?x0(this,Ek).origin:x0(this,gO).origin,lastEventId:n.id||""});x0(this,rk)&&(!n.event||n.event==="message")&&x0(this,rk).call(this,f),this.dispatchEvent(f)}),Nc(this,nHi,(n)=>{V1(this,yL,n)}),Nc(this,cHi,()=>{V1(this,wk,void 0),x0(this,Wd)===this.CONNECTING&&O3(this,Nh,iHi).call(this)});try{if(i instanceof URL)V1(this,gO,i);else if(typeof i=="string")V1(this,gO,new URL(i,Gzl()));else throw Error("Invalid URL")}catch{throw Azl("An invalid or illegal string was specified")}V1(this,vk,f1i({onEvent:x0(this,lHi),onRetry:x0(this,nHi)})),V1(this,Wd,this.CONNECTING),V1(this,yL,3000),V1(this,X1i,(u=t==null?void 0:t.fetch)!=null?u:globalThis.fetch),V1(this,y1i,(l=t==null?void 0:t.withCredentials)!=null?l:!1),O3(this,Nh,iHi).call(this)}get readyState(){return x0(this,Wd)}get url(){return x0(this,gO).href}get withCredentials(){return x0(this,y1i)}get onerror(){return x0(this,xk)}set onerror(i){V1(this,xk,i)}get onmessage(){return x0(this,rk)}set onmessage(i){V1(this,rk,i)}get onopen(){return x0(this,DL)}set onopen(i){V1(this,DL,i)}addEventListener(i,t,u){let l=t;super.addEventListener(i,l,u)}removeEventListener(i,t,u){let l=t;super.removeEventListener(i,l,u)}close(){x0(this,wk)&&clearTimeout(x0(this,wk)),x0(this,Wd)!==this.CLOSED&&(x0(this,Xx)&&x0(this,Xx).abort(),V1(this,Wd,this.CLOSED),V1(this,Xx,void 0))}};Wd=new WeakMap,gO=new WeakMap,Ek=new WeakMap,y1i=new WeakMap,X1i=new WeakMap,yL=new WeakMap,wk=new WeakMap,XL=new WeakMap,Xx=new WeakMap,vk=new WeakMap,xk=new WeakMap,rk=new WeakMap,DL=new WeakMap,Nh=new WeakSet,iHi=function(){V1(this,Wd,this.CONNECTING),V1(this,Xx,new AbortController),x0(this,X1i)(x0(this,gO),O3(this,Nh,lqt).call(this)).then(x0(this,tHi)).catch(x0(this,uHi))},tHi=new WeakMap,uHi=new WeakMap,lqt=function(){var i;let t={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...x0(this,XL)?{"Last-Event-ID":x0(this,XL)}:void 0},cache:"no-store",signal:(i=x0(this,Xx))==null?void 0:i.signal};return"window"in globalThis&&(t.credentials=this.withCredentials?"include":"same-origin"),t},lHi=new WeakMap,nHi=new WeakMap,OL=function(i,t){var u;x0(this,Wd)!==this.CLOSED&&V1(this,Wd,this.CLOSED);let l=new sKi("error",{code:t,message:i});(u=x0(this,xk))==null||u.call(this,l),this.dispatchEvent(l)},fHi=function(i,t){var u;if(x0(this,Wd)===this.CLOSED)return;V1(this,Wd,this.CONNECTING);let l=new sKi("error",{code:t,message:i});(u=x0(this,xk))==null||u.call(this,l),this.dispatchEvent(l),V1(this,wk,setTimeout(x0(this,cHi),x0(this,yL)))},cHi=new WeakMap,Dk.CONNECTING=0,Dk.OPEN=1,Dk.CLOSED=2});class y3{constructor(i,t){this._url=i,this._resourceMetadataUrl=void 0,this._scope=void 0,this._eventSourceInit=t?.eventSourceInit,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=eni(t?.fetch,t?.requestInit)}async _authThenStart(){if(!this._authProvider)throw new Ad("No auth provider");let i;try{i=await iv(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(t){throw this.onerror?.(t),t}if(i!=="AUTHORIZED")throw new Ad;return await this._startOrAuth()}async _commonHeaders(){let i={};if(this._authProvider){let u=await this._authProvider.tokens();if(u)i.Authorization=`Bearer ${u.access_token}`}if(this._protocolVersion)i["mcp-protocol-version"]=this._protocolVersion;let t=ik(this._requestInit?.headers);return new Headers({...i,...t})}_startOrAuth(){let i=this?._eventSourceInit?.fetch??this._fetch??fetch;return new Promise((t,u)=>{this._eventSource=new Dk(this._url.href,{...this._eventSourceInit,fetch:async(l,n)=>{let f=await this._commonHeaders();f.set("Accept","text/event-stream");let c=await i(l,{...n,headers:f});if(c.status===401&&c.headers.has("www-authenticate")){let{resourceMetadataUrl:$,scope:d}=fk(c);this._resourceMetadataUrl=$,this._scope=d}return c}}),this._abortController=new AbortController,this._eventSource.onerror=(l)=>{if(l.code===401&&this._authProvider){this._authThenStart().then(t,u);return}let n=new cqt(l.code,l.message,l);u(n),this.onerror?.(n)},this._eventSource.onopen=()=>{},this._eventSource.addEventListener("endpoint",(l)=>{let n=l;try{if(this._endpoint=new URL(n.data,this._url),this._endpoint.origin!==this._url.origin)throw Error(`Endpoint origin does not match connection origin: ${this._endpoint.origin}`)}catch(f){u(f),this.onerror?.(f),this.close();return}t()}),this._eventSource.onmessage=(l)=>{let n=l,f;try{f=G_.parse(JSON.parse(n.data))}catch(c){this.onerror?.(c);return}this.onmessage?.(f)}})}async start(){if(this._eventSource)throw Error("SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.");return await this._startOrAuth()}async finishAuth(i){if(!this._authProvider)throw new Ad("No auth provider");if(await iv(this._authProvider,{serverUrl:this._url,authorizationCode:i,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new Ad("Failed to authorize")}async close(){this._abortController?.abort(),this._eventSource?.close(),this.onclose?.()}async send(i){if(!this._endpoint)throw Error("Not connected");try{let t=await this._commonHeaders();t.set("content-type","application/json");let u={...this._requestInit,method:"POST",headers:t,body:JSON.stringify(i),signal:this._abortController?.signal},l=await(this._fetch??fetch)(this._endpoint,u);if(!l.ok){let n=await l.text().catch(()=>null);if(l.status===401&&this._authProvider){let{resourceMetadataUrl:f,scope:c}=fk(l);if(this._resourceMetadataUrl=f,this._scope=c,await iv(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new Ad;return this.send(i)}throw Error(`Error POSTing to endpoint (HTTP ${l.status}): ${n}`)}await l.body?.cancel()}catch(t){throw this.onerror?.(t),t}}setProtocolVersion(i){this._protocolVersion=i}}var cqt;var NL=w(()=>{fqt();Xf();n1i();cqt=class cqt extends Error{constructor(i,t,u){super(`SSE error: ${t}`);this.code=i,this.event=u}}});class dHi{constructor(i){this._url=i}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((i,t)=>{this._socket=new WebSocket(this._url,Wzl),this._socket.onerror=(u)=>{let l="error"in u?u.error:Error(`WebSocket error: ${JSON.stringify(u)}`);t(l),this.onerror?.(l)},this._socket.onopen=()=>{i()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(u)=>{let l;try{l=G_.parse(JSON.parse(u.data))}catch(n){this.onerror?.(n);return}this.onmessage?.(l)}})}async close(){this._socket?.close()}send(i){return new Promise((t,u)=>{if(!this._socket){u(Error("Not connected"));return}this._socket?.send(JSON.stringify(i)),t()})}}var Wzl="mcp";var $qt=w(()=>{Xf()});function kzl(i){let t=i;if(!t||typeof t!=="object"||!("method"in t))return null;switch(t.method){case"initialize":{let u=t?.params?.protocolVersion;if(!u)return null;return{type:"emit",message:{result:{protocolVersion:u,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:t.jsonrpc??"2.0",id:t.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var N1i;var _Hi=w(()=>{cO();N1i=class N1i extends i6{constructor(i,t){super(i,t)}send(i,t){let u=kzl(i);if(u?.type==="emit")return this.onmessage?.(u.message),Promise.resolve();if(u?.type==="suppress")return Promise.resolve();return super.send(i,t)}}});var dqt,_qt=async(i,t,u)=>{let l=jzl(i.connection,t,u);if(!l)throw Error("Unknown MCP connection type");let n=new dqt({name:i?.name??"MCP Client",version:"1.0.0"});return await n.connect(l),{client:n}},jzl=(i,t,u)=>{if(i.type==="Websocket")return new dHi(new URL(i.url));if(i.type!=="SSE"&&i.type!=="HTTP")return null;let n={...i.token?{authorization:`Bearer ${i.token}`}:{},...u??{},..."headers"in i?i.headers||{}:{}};if(i.type==="SSE"){let f={requestInit:{headers:n,signal:t}};if(i.token)f.eventSourceInit={fetch:(c,$)=>{return fetch(c,{...$,headers:{...n,Accept:"text/event-stream"},signal:t})}};return new y3(new URL(i.url),f)}return new N1i(new URL(i.url),{requestInit:{headers:n,signal:t,credentials:"include"}})};var gqt=w(()=>{Xh();NL();$qt();Xf();_Hi();dqt=class dqt extends Nf{constructor(i,t){super(i,t)}async listTools(i,t){return await this.request({method:"tools/list",params:i},IR,t)}}});function vqt(i){let t=(u)=>{if("connection"in i)return _qt({connection:i.connection},void 0,u);return i.client};return new Proxy({},{get(u,l){if(l==="toJSON")return null;if(typeof l!=="string")throw Error("Name must be a string");if(l==="listTools")return $;async function n(d,_=l){let g=i?.debugId?.(),h=g?{"x-trace-debug-id":g}:void 0,{client:E}=await t(h),{structuredContent:v,isError:r,content:x}=await E.callTool({name:String(_),arguments:d});if(r){let y=x?.[0]?.text,X=typeof y==="string"?hqt(y):null,N=X?.code&&typeof i?.getErrorByStatusCode==="function"?i.getErrorByStatusCode(X.code,X.message,X.traceId):null;if(N)throw N;throw Error(`Tool ${String(_)} returned an error: ${JSON.stringify(v??x)}`)}if(v!==void 0)return v;let O=x?.[0]?.text;return typeof O==="string"?hqt(O):void 0}async function f(){let{client:d}=await t(),{tools:_}=await d.listTools();return _}async function c(){if(!("connection"in i))return f();let d=i.connection,_=JSON.stringify(d);try{if(!J1i.has(_))J1i.set(_,f());return await J1i.get(_)}catch(g){console.error("Failed to list tools",g),J1i.delete(_);return}}async function $(){return(await c()??[]).map((_)=>Eqt(_,n))}return n.asTool=async()=>{let _=(await c()??[]).find((g)=>g.name===l);if(!_)throw Error(`Tool ${l} not found`);return Eqt(_,n)},n}})}var hqt=(i)=>{try{return JSON.parse(i)}catch{return i}},J1i,Eqt=(i,t)=>{return{...i,id:i.name,inputSchema:i.inputSchema?Xc(i.inputSchema):void 0,outputSchema:i.outputSchema?Xc(i.outputSchema):void 0,execute:(u)=>{return t(u.context,i.name)}}};var rqt=w(()=>{oKi();gqt();J1i=new Map});function hO(i){return vqt(i)}var Ok;var gHi=w(()=>{rqt();Ok=new Proxy({},{get(i,t){if(t==="toJSON")return null;if(t==="forConnection")return(u)=>hO({connection:u});return global[t]}})});function U1i(i){return{isImplementedBy:(t)=>{for(let u of i){let l=typeof u.name==="string"?new RegExp(`^${u.name}$`):u.name,n=t.find((f)=>l.test(f.name));if(!n&&u.opt)continue;if(!n)return!1}return!0}}}var kd=(i)=>{return{...U1i(i),forClient:(t)=>{return hO({client:t})},forConnection:(t)=>{return hO({connection:t})}}};var X3=w(()=>{gHi()});import{z as Gl}from"zod";function N3(i){return Gl.object({items:Gl.array(i).describe("Array of collection items"),totalCount:Gl.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:Gl.boolean().optional().describe("Whether there are more items available")})}function UL(i){return Gl.object({item:i.nullable().describe("The retrieved item, or null if not found")})}function bzl(i){return Gl.object({data:i.partial().describe("Data for the new entity (id may be auto-generated)")})}function Kzl(i){return Gl.object({item:i.describe("The created entity with generated id")})}function Hzl(i){return Gl.object({id:Gl.string().describe("ID of the entity to update"),data:i.partial().describe("Partial entity data to update")})}function Rzl(i){return Gl.object({item:i.describe("The updated entity")})}function FL(i){return Gl.object({item:i.describe("The deleted entity")})}function cv(i,t,u){let l=i.toUpperCase(),n=u?.readOnly??!1,f=[{name:`COLLECTION_${l}_LIST`,inputSchema:Jh,outputSchema:N3(t)},{name:`COLLECTION_${l}_GET`,inputSchema:JL,outputSchema:UL(t)}];if(!n)f.push({name:`COLLECTION_${l}_CREATE`,inputSchema:bzl(t),outputSchema:Kzl(t),opt:!0},{name:`COLLECTION_${l}_UPDATE`,inputSchema:Hzl(t),outputSchema:Rzl(t),opt:!0},{name:`COLLECTION_${l}_DELETE`,inputSchema:TL,outputSchema:FL(t),opt:!0});return f}var fv,Szl,wqt,zzl,Jh,JL,TL;var jd=w(()=>{fv=Gl.object({id:Gl.string().describe("Unique identifier for the entity"),title:Gl.string().describe("Human-readable title for the entity"),description:Gl.string().nullish().describe("Description of the entity"),created_at:Gl.string().datetime(),updated_at:Gl.string().datetime(),created_by:Gl.string().optional(),updated_by:Gl.string().optional()}),Szl=Gl.object({field:Gl.array(Gl.string()),operator:Gl.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:Gl.unknown()}),wqt=Gl.lazy(()=>Gl.union([Szl,Gl.object({operator:Gl.enum(["and","or","not"]),conditions:Gl.array(wqt)})])),zzl=Gl.object({field:Gl.array(Gl.string()),direction:Gl.enum(["asc","desc"]),nulls:Gl.enum(["first","last"]).optional()}),Jh=Gl.object({where:wqt.optional().describe("Filter expression"),orderBy:Gl.array(zzl).optional().describe("Sort expressions"),limit:Gl.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:Gl.number().int().min(0).optional().describe("Number of items to skip")});JL=Gl.object({id:Gl.string().describe("ID of the entity to retrieve")});TL=Gl.object({id:Gl.string().describe("ID of the entity to delete")})});import{z as Ht}from"zod";function szl(i,t){let u=[];function l(n){if(typeof n==="string"){let f=n.match(/@([a-zA-Z_][a-zA-Z0-9_-]*)/g);if(f)for(let c of f){let $=c.substring(1);if(t.has($)&&$!==i.name)u.push($)}}else if(Array.isArray(n))n.forEach(l);else if(typeof n==="object"&&n!==null)Object.values(n).forEach(l)}if(l(i.input),i.bail&&i.bail!==!0)l(i.bail.ref);return[...new Set(u)]}function Xqt(i){let t=new Set(i.map((c)=>c.name)),u=new Map;for(let c of i)u.set(c.name,szl(c,t));let l=new Set,n=new Set;function f(c,$){if(n.has(c))return[...$,c];if(l.has(c))return null;l.add(c),n.add(c);let d=u.get(c)||[];for(let _ of d){let g=f(_,[...$,c]);if(g)return g}return n.delete(c),null}for(let c of i){let $=f(c.name,[]);if($)return{isValid:!1,error:`Circular dependency detected: ${$.join(" -> ")}`}}return{isValid:!0}}var hHi,Lzl,IUn,Czl,ezl,Mzl,yk,xqt,EO,qzl,Dqt,Vzl,BUn,azl,Oqt,mzl,ozl,EHi,QUn,yqt;var vO=w(()=>{X3();jd();hHi=Ht.object({toolName:Ht.string().describe("Name of the tool to invoke on that connection"),transformCode:Ht.string().optional().describe("Pure TypeScript function for data transformation of the tool call result. Must be a TypeScript file that declares the Output interface and exports a default function: `interface Output { ... } export default async function(stepInput): Output { ... }`\n The stepInput will match with the tool call outputSchema. If transformCode is not provided, the tool call result will be used as the step output.\n Providing an transformCode is recommended because it both allows you to transform the data and validate it against a JSON Schema - tools are ephemeral and may return unexpected data.")}),Lzl=Ht.object({code:Ht.string().describe(`Pure TypeScript function for data transformation. Useful to merge data from multiple steps and transform it. Must be a TypeScript file that declares the Output interface and exports a default function: \`interface Output { ... } export default async function(stepInput): Output { ... }\`
105750
+ `.trim();Cet=TKi("site-diagnostics_"),ejl=Cet.is,Mjl=Cet.get,W_={AGENT_MANAGER:(i)=>`studio-agent-manager_${i}`,AUTOMATION_MANAGER:(i)=>`studio-automation-manager_${i}`,CONNECTION_MANAGER:(i)=>`studio-connection-manager_${i}`,STORE_MANAGER:(i)=>`studio-store-manager_${i}`,BRAND_MANAGER:(i)=>`studio-brand-manager_${i}`,USAGE_MANAGER:(i)=>`studio-usage-manager_${i}`}});var Met=w(()=>{MSi();B0i();c1i();d1i()});var qet=w(()=>{sw()});var Vet=w(()=>{Xf();sw()});var aet=w(()=>{Xf();sw()});var met=w(()=>{VSi();B0i();c1i();d1i();sw()});var oet=w(()=>{B0i();Met();c1i();qet();Vet();aet();met()});import{z as Pu}from"zod";function uv(i){return i!==null&&i!==void 0&&"command"in i}function $O(i){if(!i||!i.startsWith("virtual://"))return null;return i.replace("virtual://","")}function dO(i){return`virtual://${i}`}var FSl,set,ZSl,ISl,BSl,V$,nL,fL;var pet=w(()=>{Xf();FSl=Pu.object({authorizationEndpoint:Pu.string().url(),tokenEndpoint:Pu.string().url(),introspectionEndpoint:Pu.string().url().optional(),clientId:Pu.string(),clientSecret:Pu.string().optional(),scopes:Pu.array(Pu.string()),grantType:Pu.enum(["authorization_code","client_credentials"])}),set=Pu.object({type:Pu.literal("object"),properties:Pu.record(Pu.string(),Pu.unknown()).optional(),required:Pu.array(Pu.string()).optional()}).catchall(Pu.unknown()),ZSl=M0i.extend({inputSchema:set,outputSchema:set.optional()}),ISl=Pu.object({headers:Pu.record(Pu.string(),Pu.string()).optional()}),BSl=Pu.object({command:Pu.string().describe("Command to run (e.g., 'npx', 'node')"),args:Pu.array(Pu.string()).optional().describe("Command arguments"),cwd:Pu.string().optional().describe("Working directory"),envVars:Pu.record(Pu.string(),Pu.string()).optional().describe("Environment variables (encrypted in storage)")}),V$=Pu.object({id:Pu.string().describe("Unique identifier for the connection"),title:Pu.string().describe("Human-readable name for the connection"),created_at:Pu.string().describe("When the connection was created"),updated_at:Pu.string().describe("When the connection was last updated"),created_by:Pu.string().describe("User ID who created the connection"),updated_by:Pu.string().optional().describe("User ID who last updated the connection"),organization_id:Pu.string().describe("Organization ID this connection belongs to"),description:Pu.string().nullable().describe("Description of the connection"),icon:Pu.string().nullable().describe("Icon URL for the connection"),app_name:Pu.string().nullable().describe("Associated app name"),app_id:Pu.string().nullable().describe("Associated app ID"),slug:Pu.string().nullable().optional().describe("URL-safe slug derived from app_name, connection_url, or title"),connection_type:Pu.enum(["HTTP","SSE","Websocket","STDIO","VIRTUAL"]).describe("Type of connection"),connection_url:Pu.string().nullable().describe("URL for HTTP/SSE/WebSocket connections. virtual://$id for VIRTUAL. Null for STDIO."),connection_token:Pu.string().nullable().describe("Authentication token (for HTTP connections)"),connection_headers:Pu.union([BSl,ISl]).nullable().describe("Connection parameters. HTTP: { headers }. STDIO: { command, args, cwd, envVars }"),oauth_config:FSl.nullable().describe("OAuth configuration"),configuration_state:Pu.record(Pu.string(),Pu.unknown()).nullable().describe("Configuration state (decrypted)"),configuration_scopes:Pu.array(Pu.string()).nullable().optional().describe("Configuration scopes"),metadata:Pu.record(Pu.string(),Pu.unknown()).nullable().describe("Additional metadata (includes repository info)"),tools:Pu.array(ZSl).nullable().describe("Discovered tools from MCP"),bindings:Pu.array(Pu.string()).nullable().describe("Detected bindings"),status:Pu.enum(["active","inactive","error"]).describe("Current status")}),nL=V$.omit({created_at:!0,updated_at:!0,created_by:!0,updated_by:!0,organization_id:!0,tools:!0,bindings:!0,status:!0}).partial({id:!0,description:!0,icon:!0,app_name:!0,app_id:!0,connection_url:!0,connection_token:!0,connection_headers:!0,oauth_config:!0,configuration_state:!0,configuration_scopes:!0,metadata:!0}).extend({icon:Pu.string().nullish()}),fL=V$.partial()});import{z as it}from"zod";function _1i(i){let t=i?.homeTiles;if(Array.isArray(t)&&t.length>0)return t;let u=i?.homeTile;return u?[u]:[]}function g1i(i){return i==="cluster"?"agent-sandbox":i}function zKi(i){let t=GSl.parse(i);return h1i.parse({...t,sandboxProviderKind:t.sandboxProviderKind?g1i(t.sandboxProviderKind):void 0})}function w3(i){if(!i||typeof i!=="object"||Array.isArray(i))return{};let t=i,u={};for(let[l,n]of Object.entries(t)){if(!n||typeof n!=="object")continue;if(l!=="cluster"&&l!=="agent-sandbox"&&l!=="user-desktop")continue;let f=g1i(l);try{if(l==="cluster"&&u[f])continue;u[f]=zKi(n)}catch{}}return u}function E1i(i){if(!i||typeof i!=="object"||Array.isArray(i))return{};let t={};for(let[u,l]of Object.entries(i)){if(!l||typeof l!=="object"||Array.isArray(l))continue;let n={};for(let[f,c]of Object.entries(l)){let $=w3(c);if(Object.keys($).length>0)n[f]=$}if(Object.keys(n).length>0)t[u]=n}return t}var cL,uMt,QSl,GKi,WKi,iMt,kKi,$L,tMt,YSl,jKi,SKi,PSl,ASl,lMt,h1i,GSl,dL,a$,_L,gL;var nMt=w(()=>{cL=it.object({connection_id:it.string().describe("Connection ID"),selected_tools:it.array(it.string()).nullable().describe("Selected tool names. null = all tools included, array = only these tools included"),selected_resources:it.array(it.string()).nullable().describe("Selected resource URIs or patterns. Supports * and ** wildcards for pattern matching. null = all resources included, array = only these resources included"),selected_prompts:it.array(it.string()).nullable().describe("Selected prompt names. null = all prompts included, array = only these prompts included")}),uMt=cL.extend({selected_tools:cL.shape.selected_tools.optional(),selected_resources:cL.shape.selected_resources.optional(),selected_prompts:cL.shape.selected_prompts.optional()}),QSl=it.object({connectionId:it.string(),toolName:it.string(),label:it.string(),icon:it.string().nullable().optional()}),GKi=it.object({id:it.string().describe("Stable id; used as React key and ?tab= value"),title:it.string().describe("Tab label"),icon:it.string().optional().describe("Optional lucide icon name"),view:it.object({type:it.literal("ext-app"),appId:it.string(),args:it.record(it.string(),it.unknown()).optional()})}),WKi=it.object({defaultMainView:it.object({type:it.string(),id:it.string().optional(),toolName:it.string().optional()}).nullable().optional(),chatDefaultOpen:it.boolean().nullable().optional(),tabs:it.array(GKi).optional()}),iMt=it.object({connectionId:it.string().optional().describe("Connection that owns the resource \u2014 the host opens a direct MCP client to this connection so the iframe can call tools by their bare names."),resourceUri:it.string().describe("ui:// resource URI exposed by `connectionId`. Read on the home page and rendered via MCPAppRenderer."),minHeight:it.number().int().positive().optional(),maxHeight:it.number().int().positive().optional()}),kKi=it.object({banner:it.string().nullable().optional(),bannerColor:it.string().nullable().optional(),icon:it.string().nullable().optional(),themeColor:it.string().nullable().optional(),pinnedViews:it.array(QSl).nullable().optional(),layout:WKi.nullable().optional(),homeTile:iMt.nullable().optional(),homeTiles:it.array(iMt).nullable().optional(),homePrompts:it.array(it.string()).nullable().optional()});$L=/^[A-Za-z_][A-Za-z0-9_]*$/,tMt=it.string().min(1).regex($L,{message:"Env var key must start with a letter or underscore and contain only letters, digits, and underscores."}),YSl=it.discriminatedUnion("kind",[it.object({key:tMt,kind:it.literal("literal"),value:it.string()}),it.object({key:tMt,kind:it.literal("secret"),secretId:it.string().min(1)})]),jKi=it.object({selected:it.string().nullable().optional().describe("User-selected package manager (npm | pnpm | yarn | bun | deno). Null/absent means autodetect on next SANDBOX_START."),port:it.string().nullable().optional().describe("User-selected dev server port as a string (allows '' / null for unset). Null/absent means autodetect."),path:it.string().nullable().optional().describe("Optional path (relative to repo root) to the directory containing package.json. Null/absent means repo root. Forwarded as `application.packageManager.path` to the daemon config."),env:it.array(YSl).nullable().optional().describe("Env vars injected on every SANDBOX_START. Literal entries inline their value; secret entries store a secretId that mesh resolves via the credential vault before posting /_sandbox/config.")}),SKi=it.object({url:it.string().describe("GitHub repository URL"),owner:it.string().describe("Repository owner"),name:it.string().describe("Repository name"),installationId:it.number().optional().describe("GitHub App installation ID. Absent when the repo was linked without a GitHub connection (public-clone mode)."),connectionId:it.string().optional().describe("ID of the mcp-github connection used for authentication. Absent for public repos cloned without credentials.")}),PSl=it.enum(["agent-sandbox","user-desktop"]),ASl=it.enum(["agent-sandbox","user-desktop","cluster"]);lMt={sandboxHandle:it.string().describe("Provider-specific handle"),previewUrl:it.string().nullable().describe("URL where the sandbox's iframe-proxied UI is served, or null when the sandbox has no dev server (blank / tool sandboxes)."),sandboxApiUrl:it.string().nullable().optional().describe("Daemon's public URL \u2014 what cluster\u2192daemon RPCs target. Equal to previewUrl for user-desktop; null/absent for the agent-sandbox provider (routes through hosted ingress)."),sandboxProviderKind:PSl.optional(),createdAt:it.number().optional().describe("Epoch ms the entry was first written by SANDBOX_START. Used by the booting overlay to show a stable elapsed timer that survives browser reloads. Optional for backward compatibility with entries written before this field existed."),startedWith:it.object({packageManager:it.string().nullable().optional().describe("metadata.runtime.selected at the time of SANDBOX_START"),port:it.string().nullable().optional().describe("metadata.runtime.port at the time of SANDBOX_START"),path:it.string().nullable().optional().describe("metadata.runtime.path at the time of SANDBOX_START")}).optional().describe("Snapshot of metadata.runtime fields (selected/port/path) used at SANDBOX_START. The Preview tab compares the live metadata.runtime against this to decide if a restart is required to apply changes.")},h1i=it.object(lMt),GSl=it.object({...lMt,sandboxProviderKind:ASl.optional()});dL=it.record(it.string().describe("userId"),it.record(it.string().describe("branch"),it.record(it.string().describe("sandboxProviderKind"),h1i)));a$=it.object({id:it.string().describe("Unique identifier"),title:it.string().describe("Human-readable name"),description:it.string().nullable().describe("Description"),icon:it.string().nullable().describe("Icon URL"),created_at:it.string().describe("Creation timestamp"),updated_at:it.string().describe("Last update timestamp"),created_by:it.string().describe("User ID who created this item"),updated_by:it.string().optional().describe("User ID who last updated this item"),organization_id:it.string().describe("Organization ID this item belongs to"),status:it.enum(["active","inactive"]).describe("Current status"),pinned:it.boolean().describe("Whether this space is pinned to the sidebar"),metadata:it.object({instructions:it.string().nullable().describe("Instructions also used as system prompt"),enabled_plugins:it.array(it.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:it.array(it.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:kKi.nullable().optional().describe("UI customization settings"),githubRepo:SKi.nullable().optional().describe("Linked GitHub repository"),runtime:jKi.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:dL.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().describe("Metadata"),connections:it.array(cL).describe("Connections with their selected tools, resources, and prompts")}),_L=it.object({title:it.string().min(1).max(255).describe("Name for the virtual MCP"),description:it.string().nullable().optional().describe("Optional description"),icon:it.string().nullish().describe("Optional icon URL"),status:it.enum(["active","inactive"]).optional().default("active").describe("Initial status"),pinned:it.boolean().optional().default(!1).describe("Pin to sidebar"),metadata:it.object({instructions:it.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:it.array(it.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:it.array(it.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:kKi.nullable().optional().describe("UI customization settings"),githubRepo:SKi.nullable().optional().describe("Linked GitHub repository"),runtime:jKi.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:dL.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:it.array(uMt).describe("Connections to include/exclude (can be empty for exclusion mode)")}),gL=it.object({title:it.string().min(1).max(255).optional().describe("New name"),description:it.string().nullable().optional().describe("New description (null to clear)"),icon:it.string().nullish().describe("New icon URL"),status:it.enum(["active","inactive"]).optional().describe("New status"),pinned:it.boolean().optional().describe("Pin/unpin from sidebar"),metadata:it.object({instructions:it.string().nullable().optional().describe("MCP server instructions"),enabled_plugins:it.array(it.string()).nullable().optional().describe("List of enabled plugin IDs"),subAgents:it.array(it.string()).nullable().optional().describe("Allowlist of Virtual MCP (agent) IDs this agent may delegate to via subtask. null/absent = all active org agents; empty array = itself only (no cross-agent delegation)."),ui:kKi.nullable().optional().describe("UI customization settings"),githubRepo:SKi.nullable().optional().describe("Linked GitHub repository"),runtime:jKi.nullable().optional().describe("User-pinned runtime config (package manager, dev port). Empty fields = autodetect."),sandboxMap:dL.optional().describe("Per-user, per-branch sandbox mapping: sandboxMap[userId][branch] -> { sandboxHandle, previewUrl }")}).loose().nullable().optional().describe("Additional metadata including MCP server instructions"),connections:it.array(uMt).optional().describe("New connections (replaces existing)")})});var U4;var fMt=w(()=>{U4=["deco","anthropic","openrouter","google","claude-code","codex","openai-compatible"]});function v1i(i,t){return{id:crypto.randomUUID(),type:$k.STEP,source:"decopilot",subject:i,data:{stepCount:t},time:new Date().toISOString()}}function Dx(i,t){return{id:crypto.randomUUID(),type:$k.FINISH,source:"decopilot",subject:i,data:{status:t},time:new Date().toISOString()}}function t6(i,t,u){return{id:crypto.randomUUID(),type:$k.THREAD_STATUS,source:"decopilot",subject:i,data:{status:t,...u?.virtualMcpId!==void 0&&{virtual_mcp_id:u.virtualMcpId},...u?.createdBy!==void 0&&{created_by:u.createdBy},...u?.triggerId!==void 0&&{trigger_id:u.triggerId},...u?.title!==void 0&&{title:u.title},...u?.branch!==void 0&&{branch:u.branch},...u?.createdAt!==void 0&&{created_at:u.createdAt},...u?.updatedAt!==void 0&&{updated_at:u.updatedAt},...u?.metadata!==void 0&&{metadata:u.metadata}},time:new Date().toISOString()}}var ck,cMt,$k,$Mt;var dMt=w(()=>{ck=["in_progress","requires_action","failed","completed"],cMt=[...ck,"expired"],$k={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},$Mt=Object.values($k)});var r1i=w(()=>{pet();nMt();fMt();dMt()});function kSl(){let i=new _Mt.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return gMt.default(i),i}class hMt{#i=kSl();#t=new Map;getValidator(i){let t=jSl(i),u=this.#t.get(t);if(!u)u=this.#i.compile(i),this.#t.set(t,u);let l=u;return(n)=>{if(l(n))return{valid:!0,data:n,errorMessage:void 0};return{valid:!1,data:void 0,errorMessage:this.#i.errorsText(l.errors)}}}}function jSl(i){return JSON.stringify(i,(t,u)=>{if(u&&typeof u==="object"&&!Array.isArray(u))return Object.fromEntries(Object.keys(u).sort().map((l)=>[l,u[l]]));return u})}var _Mt,gMt,fc;var bKi=w(()=>{_Mt=z(Kni(),1),gMt=z(tKi(),1);fc=new hMt});class dk{innerTransport;constructor(i){this.innerTransport=i}get sessionId(){return this.innerTransport.sessionId}async start(){return this.innerTransport.onmessage=(i)=>{this.handleIncomingMessage(i)},this.innerTransport.onerror=(i)=>{this.onerror?.(i)},this.innerTransport.onclose=()=>{this.onclose?.()},this.innerTransport.start()}async send(i){return this.handleOutgoingMessage(i)}async close(){return this.innerTransport.close()}async handleOutgoingMessage(i){return this.innerTransport.send(i)}handleIncomingMessage(i){this.onmessage?.(i)}isRequest(i){return"method"in i&&i.method!==void 0}isResponse(i){return"result"in i||"error"in i&&!("method"in i)}onmessage;onerror;onclose}function _k(i,...t){return t.reduce((u,l)=>l(u),i)}class KKi{constructor(i){this._server=i}requestStream(i,t,u){return this._server.requestStream(i,t,u)}createMessageStream(i,t){let u=this._server.getClientCapabilities();if((i.tools||i.toolChoice)&&!u?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if(i.messages.length>0){let l=i.messages[i.messages.length-1],n=Array.isArray(l.content)?l.content:[l.content],f=n.some((_)=>_.type==="tool_result"),c=i.messages.length>1?i.messages[i.messages.length-2]:void 0,$=c?Array.isArray(c.content)?c.content:[c.content]:[],d=$.some((_)=>_.type==="tool_use");if(f){if(n.some((_)=>_.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!d)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(d){let _=new Set($.filter((h)=>h.type==="tool_use").map((h)=>h.id)),g=new Set(n.filter((h)=>h.type==="tool_result").map((h)=>h.toolUseId));if(_.size!==g.size||![..._].every((h)=>g.has(h)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:i},o8,t)}elicitInputStream(i,t){let u=this._server.getClientCapabilities(),l=i.mode??"form";switch(l){case"url":{if(!u?.elicitation?.url)throw Error("Client does not support url elicitation.");break}case"form":{if(!u?.elicitation?.form)throw Error("Client does not support form elicitation.");break}}let n=l==="form"&&i.mode===void 0?{...i,mode:"form"}:i;return this.requestStream({method:"elicitation/create",params:n},cx,t)}async getTask(i,t){return this._server.getTask({taskId:i},t)}async getTaskResult(i,t,u){return this._server.getTaskResult({taskId:i},t,u)}async listTasks(i,t){return this._server.listTasks(i?{cursor:i}:void 0,t)}async cancelTask(i,t){return this._server.cancelTask({taskId:i},t)}}var EMt=w(()=>{Xf()});var HKi;var vMt=w(()=>{szi();Xf();uKi();kW();EMt();HKi=class HKi extends AR{constructor(i,t){super(t);if(this._serverInfo=i,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(BR.options.map((u,l)=>[u,l])),this.isMessageIgnored=(u,l)=>{let n=this._loggingLevels.get(l);return n?this.LOG_LEVEL_SEVERITY.get(u)<this.LOG_LEVEL_SEVERITY.get(n):!1},this._capabilities=t?.capabilities??{},this._instructions=t?.instructions,this._jsonSchemaValidator=t?.jsonSchemaValidator??new uL,this.setRequestHandler(j0i,(u)=>this._oninitialize(u)),this.setNotificationHandler(S0i,()=>this.oninitialized?.()),this._capabilities.logging)this.setRequestHandler(wzi,async(u,l)=>{let n=l.sessionId||l.requestInfo?.headers["mcp-session-id"]||void 0,{level:f}=u.params,c=BR.safeParse(f);if(c.success)this._loggingLevels.set(n,c.data);return{}})}get experimental(){if(!this._experimental)this._experimental={tasks:new KKi(this)};return this._experimental}registerCapabilities(i){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=lni(this._capabilities,i)}setRequestHandler(i,t){let l=VE(i)?.method;if(!l)throw Error("Schema is missing a method literal");let n;if(Id(l)){let c=l;n=c._zod?.def?.value??c.value}else{let c=l;n=c._def?.value??c.value}if(typeof n!=="string")throw Error("Schema method literal must be a string");if(n==="tools/call"){let c=async($,d)=>{let _=C$(fx,$);if(!_.success){let v=_.error instanceof Error?_.error.message:String(_.error);throw new At(Kt.InvalidParams,`Invalid tools/call request: ${v}`)}let{params:g}=_.data,h=await Promise.resolve(t($,d));if(g.task){let v=C$(_3,h);if(!v.success){let r=v.error instanceof Error?v.error.message:String(v.error);throw new At(Kt.InvalidParams,`Invalid task creation result: ${r}`)}return v.data}let E=C$(mE,h);if(!E.success){let v=E.error instanceof Error?E.error.message:String(E.error);throw new At(Kt.InvalidParams,`Invalid tools/call result: ${v}`)}return E.data};return super.setRequestHandler(i,c)}return super.setRequestHandler(i,t)}assertCapabilityForMethod(i){switch(i){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${i})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${i})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${i})`);break;case"ping":break}}assertNotificationCapability(i){switch(i){case"notifications/message":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${i})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${i})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${i})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${i})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${i})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(i){if(!this._capabilities)return;switch(i){case"completion/complete":if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${i})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${i})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${i})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${i})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${i})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${i})`);break;case"ping":case"initialize":break}}assertTaskCapability(i){Lni(this._clientCapabilities?.tasks?.requests,i,"Client")}assertTaskHandlerCapability(i){if(!this._capabilities)return;Rni(this._capabilities.tasks?.requests,i,"Server")}async _oninitialize(i){let t=i.params.protocolVersion;return this._clientCapabilities=i.params.capabilities,this._clientVersion=i.params.clientInfo,{protocolVersion:ix.includes(t)?t:pw,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},d3)}async createMessage(i,t){if(i.tools||i.toolChoice){if(!this._clientCapabilities?.sampling?.tools)throw Error("Client does not support sampling tools capability.")}if(i.messages.length>0){let u=i.messages[i.messages.length-1],l=Array.isArray(u.content)?u.content:[u.content],n=l.some((d)=>d.type==="tool_result"),f=i.messages.length>1?i.messages[i.messages.length-2]:void 0,c=f?Array.isArray(f.content)?f.content:[f.content]:[],$=c.some((d)=>d.type==="tool_use");if(n){if(l.some((d)=>d.type!=="tool_result"))throw Error("The last message must contain only tool_result content if any is present");if(!$)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if($){let d=new Set(c.filter((g)=>g.type==="tool_use").map((g)=>g.id)),_=new Set(l.filter((g)=>g.type==="tool_result").map((g)=>g.toolUseId));if(d.size!==_.size||![...d].every((g)=>_.has(g)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}if(i.tools)return this.request({method:"sampling/createMessage",params:i},QR,t);return this.request({method:"sampling/createMessage",params:i},o8,t)}async elicitInput(i,t){switch(i.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support url elicitation.");let l=i;return this.request({method:"elicitation/create",params:l},cx,t)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw Error("Client does not support form elicitation.");let l=i.mode==="form"?i:{...i,mode:"form"},n=await this.request({method:"elicitation/create",params:l},cx,t);if(n.action==="accept"&&n.content&&l.requestedSchema)try{let c=this._jsonSchemaValidator.getValidator(l.requestedSchema)(n.content);if(!c.valid)throw new At(Kt.InvalidParams,`Elicitation response content does not match requested schema: ${c.errorMessage}`)}catch(f){if(f instanceof At)throw f;throw new At(Kt.InternalError,`Error validating elicitation response: ${f instanceof Error?f.message:String(f)}`)}return n}}}createElicitationCompletionNotifier(i,t){if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:i}},t)}async listRoots(i,t){return this.request({method:"roots/list",params:i},yzi,t)}async sendLoggingMessage(i,t){if(this._capabilities.logging){if(!this.isMessageIgnored(i.level,t))return this.notification({method:"notifications/message",params:i})}}async sendResourceUpdated(i){return this.notification({method:"notifications/resources/updated",params:i})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function RKi(i){return!!i&&typeof i==="object"&&wMt in i}function xMt(i){return i[wMt]?.complete}var wMt,rMt;var DMt=w(()=>{wMt=Symbol.for("mcp.completable");(function(i){i.Completable="McpCompletable"})(rMt||(rMt={}))});function zSl(i){let t=[];if(i.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(i.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${i.length})`]};if(i.includes(" "))t.push("Tool name contains spaces, which may cause parsing issues");if(i.includes(","))t.push("Tool name contains commas, which may cause parsing issues");if(i.startsWith("-")||i.endsWith("-"))t.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts");if(i.startsWith(".")||i.endsWith("."))t.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts");if(!SSl.test(i)){let u=i.split("").filter((l)=>!/[A-Za-z0-9._-]/.test(l)).filter((l,n,f)=>f.indexOf(l)===n);return t.push(`Tool name contains invalid characters: ${u.map((l)=>`"${l}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function bSl(i,t){if(t.length>0){console.warn(`Tool name validation warning for "${i}":`);for(let u of t)console.warn(` - ${u}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function LKi(i){let t=zSl(i);return bSl(i,t.warnings),t.isValid}var SSl;var OMt=w(()=>{SSl=/^[A-Za-z0-9._-]{1,128}$/});class CKi{constructor(i){this._mcpServer=i}registerToolTask(i,t,u){let l={taskSupport:"required",...t.execution};if(l.taskSupport==="forbidden")throw Error(`Cannot register task-based tool '${i}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(i,t.title,t.description,t.inputSchema,t.outputSchema,t.annotations,l,t._meta,u)}}import{ZodOptional as KSl}from"zod";class x3{constructor(i,t){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new HKi(i,t)}get experimental(){if(!this._experimental)this._experimental={tasks:new CKi(this)};return this._experimental}async connect(i){return await this.server.connect(i)}async close(){await this.server.close()}setToolRequestHandlers(){if(this._toolHandlersInitialized)return;this.server.assertCanSetRequestHandler(Ox(HW)),this.server.assertCanSetRequestHandler(Ox(fx)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(HW,()=>({tools:Object.entries(this._registeredTools).filter(([,i])=>i.enabled).map(([i,t])=>{let u={name:i,title:t.title,description:t.description,inputSchema:(()=>{let l=WW(t.inputSchema);return l?Vzi(l,{strictUnions:!0,pipeStrategy:"input"}):HSl})(),annotations:t.annotations,execution:t.execution,_meta:t._meta};if(t.outputSchema){let l=WW(t.outputSchema);if(l)u.outputSchema=Vzi(l,{strictUnions:!0,pipeStrategy:"output"})}return u})})),this.server.setRequestHandler(fx,async(i,t)=>{try{let u=this._registeredTools[i.params.name];if(!u)throw new At(Kt.InvalidParams,`Tool ${i.params.name} not found`);if(!u.enabled)throw new At(Kt.InvalidParams,`Tool ${i.params.name} disabled`);let l=!!i.params.task,n=u.execution?.taskSupport,f="createTask"in u.handler;if((n==="required"||n==="optional")&&!f)throw new At(Kt.InternalError,`Tool ${i.params.name} has taskSupport '${n}' but was not registered with registerToolTask`);if(n==="required"&&!l)throw new At(Kt.MethodNotFound,`Tool ${i.params.name} requires task augmentation (taskSupport: 'required')`);if(n==="optional"&&!l&&f)return await this.handleAutomaticTaskPolling(u,i,t);let c=await this.validateToolInput(u,i.params.arguments,i.params.name),$=await this.executeToolHandler(u,c,t);if(l)return $;return await this.validateToolOutput(u,$,i.params.name),$}catch(u){if(u instanceof At){if(u.code===Kt.UrlElicitationRequired)throw u}return this.createToolError(u instanceof Error?u.message:String(u))}}),this._toolHandlersInitialized=!0}createToolError(i){return{content:[{type:"text",text:i}],isError:!0}}async validateToolInput(i,t,u){if(!i.inputSchema)return;let n=WW(i.inputSchema)??i.inputSchema,f=await Q0i(n,t);if(!f.success){let c="error"in f?f.error:"Unknown error",$=Y0i(c);throw new At(Kt.InvalidParams,`Input validation error: Invalid arguments for tool ${u}: ${$}`)}return f.data}async validateToolOutput(i,t,u){if(!i.outputSchema)return;if(!("content"in t))return;if(t.isError)return;if(!t.structuredContent)throw new At(Kt.InvalidParams,`Output validation error: Tool ${u} has an output schema but no structured content was provided`);let l=WW(i.outputSchema),n=await Q0i(l,t.structuredContent);if(!n.success){let f="error"in n?n.error:"Unknown error",c=Y0i(f);throw new At(Kt.InvalidParams,`Output validation error: Invalid structured content for tool ${u}: ${c}`)}}async executeToolHandler(i,t,u){let l=i.handler;if("createTask"in l){if(!u.taskStore)throw Error("No task store provided.");let f={...u,taskStore:u.taskStore};if(i.inputSchema)return await Promise.resolve(l.createTask(t,f));else return await Promise.resolve(l.createTask(f))}if(i.inputSchema)return await Promise.resolve(l(t,u));else return await Promise.resolve(l(u))}async handleAutomaticTaskPolling(i,t,u){if(!u.taskStore)throw Error("No task store provided for task-capable tool.");let l=await this.validateToolInput(i,t.params.arguments,t.params.name),n=i.handler,f={...u,taskStore:u.taskStore},c=l?await Promise.resolve(n.createTask(l,f)):await Promise.resolve(n.createTask(f)),$=c.task.taskId,d=c.task,_=d.pollInterval??5000;while(d.status!=="completed"&&d.status!=="failed"&&d.status!=="cancelled"){await new Promise((h)=>setTimeout(h,_));let g=await u.taskStore.getTask($);if(!g)throw new At(Kt.InternalError,`Task ${$} not found during polling`);d=g}return await u.taskStore.getTaskResult($)}setCompletionRequestHandler(){if(this._completionHandlerInitialized)return;this.server.assertCanSetRequestHandler(Ox(q0i)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(q0i,async(i)=>{switch(i.params.ref.type){case"ref/prompt":return nKt(i),this.handlePromptCompletion(i,i.params.ref);case"ref/resource":return fKt(i),this.handleResourceCompletion(i,i.params.ref);default:throw new At(Kt.InvalidParams,`Invalid completion reference: ${i.params.ref}`)}}),this._completionHandlerInitialized=!0}async handlePromptCompletion(i,t){let u=this._registeredPrompts[t.name];if(!u)throw new At(Kt.InvalidParams,`Prompt ${t.name} not found`);if(!u.enabled)throw new At(Kt.InvalidParams,`Prompt ${t.name} disabled`);if(!u.argsSchema)return hL;let n=VE(u.argsSchema)?.[i.params.argument.name];if(!RKi(n))return hL;let f=xMt(n);if(!f)return hL;let c=await f(i.params.argument.value,i.params.context);return XMt(c)}async handleResourceCompletion(i,t){let u=Object.values(this._registeredResourceTemplates).find((f)=>f.resourceTemplate.uriTemplate.toString()===t.uri);if(!u){if(this._registeredResources[t.uri])return hL;throw new At(Kt.InvalidParams,`Resource template ${i.params.ref.uri} not found`)}let l=u.resourceTemplate.completeCallback(i.params.argument.name);if(!l)return hL;let n=await l(i.params.argument.value,i.params.context);return XMt(n)}setResourceRequestHandlers(){if(this._resourceHandlersInitialized)return;this.server.assertCanSetRequestHandler(Ox(ux)),this.server.assertCanSetRequestHandler(Ox(lx)),this.server.assertCanSetRequestHandler(Ox(bW)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(ux,async(i,t)=>{let u=Object.entries(this._registeredResources).filter(([n,f])=>f.enabled).map(([n,f])=>({uri:n,name:f.name,...f.metadata})),l=[];for(let n of Object.values(this._registeredResourceTemplates)){if(!n.resourceTemplate.listCallback)continue;let f=await n.resourceTemplate.listCallback(t);for(let c of f.resources)l.push({...n.metadata,...c})}return{resources:[...u,...l]}}),this.server.setRequestHandler(lx,async()=>{return{resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([t,u])=>({name:t,uriTemplate:u.resourceTemplate.uriTemplate.toString(),...u.metadata}))}}),this.server.setRequestHandler(bW,async(i,t)=>{let u=new URL(i.params.uri),l=this._registeredResources[u.toString()];if(l){if(!l.enabled)throw new At(Kt.InvalidParams,`Resource ${u} disabled`);return l.readCallback(u,t)}for(let n of Object.values(this._registeredResourceTemplates)){let f=n.resourceTemplate.uriTemplate.match(u.toString());if(f)return n.readCallback(u,f,t)}throw new At(Kt.InvalidParams,`Resource ${u} not found`)}),this._resourceHandlersInitialized=!0}setPromptRequestHandlers(){if(this._promptHandlersInitialized)return;this.server.assertCanSetRequestHandler(Ox(nx)),this.server.assertCanSetRequestHandler(Ox(KW)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(nx,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,i])=>i.enabled).map(([i,t])=>{return{name:i,title:t.title,description:t.description,arguments:t.argsSchema?RSl(t.argsSchema):void 0}})})),this.server.setRequestHandler(KW,async(i,t)=>{let u=this._registeredPrompts[i.params.name];if(!u)throw new At(Kt.InvalidParams,`Prompt ${i.params.name} not found`);if(!u.enabled)throw new At(Kt.InvalidParams,`Prompt ${i.params.name} disabled`);if(u.argsSchema){let l=WW(u.argsSchema),n=await Q0i(l,i.params.arguments);if(!n.success){let $="error"in n?n.error:"Unknown error",d=Y0i($);throw new At(Kt.InvalidParams,`Invalid arguments for prompt ${i.params.name}: ${d}`)}let f=n.data,c=u.callback;return await Promise.resolve(c(f,t))}else{let l=u.callback;return await Promise.resolve(l(t))}}),this._promptHandlersInitialized=!0}resource(i,t,...u){let l;if(typeof u[0]==="object")l=u.shift();let n=u[0];if(typeof t==="string"){if(this._registeredResources[t])throw Error(`Resource ${t} is already registered`);let f=this._createRegisteredResource(i,void 0,t,l,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),f}else{if(this._registeredResourceTemplates[i])throw Error(`Resource template ${i} is already registered`);let f=this._createRegisteredResourceTemplate(i,void 0,t,l,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),f}}registerResource(i,t,u,l){if(typeof t==="string"){if(this._registeredResources[t])throw Error(`Resource ${t} is already registered`);let n=this._createRegisteredResource(i,u.title,t,u,l);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}else{if(this._registeredResourceTemplates[i])throw Error(`Resource template ${i} is already registered`);let n=this._createRegisteredResourceTemplate(i,u.title,t,u,l);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}}_createRegisteredResource(i,t,u,l,n){let f={name:i,title:t,metadata:l,readCallback:n,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({uri:null}),update:(c)=>{if(typeof c.uri<"u"&&c.uri!==u){if(delete this._registeredResources[u],c.uri)this._registeredResources[c.uri]=f}if(typeof c.name<"u")f.name=c.name;if(typeof c.title<"u")f.title=c.title;if(typeof c.metadata<"u")f.metadata=c.metadata;if(typeof c.callback<"u")f.readCallback=c.callback;if(typeof c.enabled<"u")f.enabled=c.enabled;this.sendResourceListChanged()}};return this._registeredResources[u]=f,f}_createRegisteredResourceTemplate(i,t,u,l,n){let f={resourceTemplate:u,title:t,metadata:l,readCallback:n,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:(d)=>{if(typeof d.name<"u"&&d.name!==i){if(delete this._registeredResourceTemplates[i],d.name)this._registeredResourceTemplates[d.name]=f}if(typeof d.title<"u")f.title=d.title;if(typeof d.template<"u")f.resourceTemplate=d.template;if(typeof d.metadata<"u")f.metadata=d.metadata;if(typeof d.callback<"u")f.readCallback=d.callback;if(typeof d.enabled<"u")f.enabled=d.enabled;this.sendResourceListChanged()}};this._registeredResourceTemplates[i]=f;let c=u.uriTemplate.variableNames;if(Array.isArray(c)&&c.some((d)=>!!u.completeCallback(d)))this.setCompletionRequestHandler();return f}_createRegisteredPrompt(i,t,u,l,n){let f={title:t,description:u,argsSchema:l===void 0?void 0:m8(l),callback:n,enabled:!0,disable:()=>f.update({enabled:!1}),enable:()=>f.update({enabled:!0}),remove:()=>f.update({name:null}),update:(c)=>{if(typeof c.name<"u"&&c.name!==i){if(delete this._registeredPrompts[i],c.name)this._registeredPrompts[c.name]=f}if(typeof c.title<"u")f.title=c.title;if(typeof c.description<"u")f.description=c.description;if(typeof c.argsSchema<"u")f.argsSchema=m8(c.argsSchema);if(typeof c.callback<"u")f.callback=c.callback;if(typeof c.enabled<"u")f.enabled=c.enabled;this.sendPromptListChanged()}};if(this._registeredPrompts[i]=f,l){if(Object.values(l).some(($)=>{let d=$ instanceof KSl?$._def?.innerType:$;return RKi(d)}))this.setCompletionRequestHandler()}return f}_createRegisteredTool(i,t,u,l,n,f,c,$,d){LKi(i);let _={title:t,description:u,inputSchema:yMt(l),outputSchema:yMt(n),annotations:f,execution:c,_meta:$,handler:d,enabled:!0,disable:()=>_.update({enabled:!1}),enable:()=>_.update({enabled:!0}),remove:()=>_.update({name:null}),update:(g)=>{if(typeof g.name<"u"&&g.name!==i){if(typeof g.name==="string")LKi(g.name);if(delete this._registeredTools[i],g.name)this._registeredTools[g.name]=_}if(typeof g.title<"u")_.title=g.title;if(typeof g.description<"u")_.description=g.description;if(typeof g.paramsSchema<"u")_.inputSchema=m8(g.paramsSchema);if(typeof g.outputSchema<"u")_.outputSchema=m8(g.outputSchema);if(typeof g.callback<"u")_.handler=g.callback;if(typeof g.annotations<"u")_.annotations=g.annotations;if(typeof g._meta<"u")_._meta=g._meta;if(typeof g.enabled<"u")_.enabled=g.enabled;this.sendToolListChanged()}};return this._registeredTools[i]=_,this.setToolRequestHandlers(),this.sendToolListChanged(),_}tool(i,...t){if(this._registeredTools[i])throw Error(`Tool ${i} is already registered`);let u,l,n,f;if(typeof t[0]==="string")u=t.shift();if(t.length>1){let $=t[0];if(eKi($)){if(l=t.shift(),t.length>1&&typeof t[0]==="object"&&t[0]!==null&&!eKi(t[0]))f=t.shift()}else if(typeof $==="object"&&$!==null){if(Object.values($).some((d)=>typeof d==="object"&&d!==null))throw Error(`Tool ${i} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);f=t.shift()}}let c=t[0];return this._createRegisteredTool(i,void 0,u,l,n,f,{taskSupport:"forbidden"},void 0,c)}registerTool(i,t,u){if(this._registeredTools[i])throw Error(`Tool ${i} is already registered`);let{title:l,description:n,inputSchema:f,outputSchema:c,annotations:$,_meta:d}=t;return this._createRegisteredTool(i,l,n,f,c,$,{taskSupport:"forbidden"},d,u)}prompt(i,...t){if(this._registeredPrompts[i])throw Error(`Prompt ${i} is already registered`);let u;if(typeof t[0]==="string")u=t.shift();let l;if(t.length>1)l=t.shift();let n=t[0],f=this._createRegisteredPrompt(i,void 0,u,l,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),f}registerPrompt(i,t,u){if(this._registeredPrompts[i])throw Error(`Prompt ${i} is already registered`);let{title:l,description:n,argsSchema:f}=t,c=this._createRegisteredPrompt(i,l,n,f,u);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),c}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(i,t){return this.server.sendLoggingMessage(i,t)}sendResourceListChanged(){if(this.isConnected())this.server.sendResourceListChanged()}sendToolListChanged(){if(this.isConnected())this.server.sendToolListChanged()}sendPromptListChanged(){if(this.isConnected())this.server.sendPromptListChanged()}}function NMt(i){return i!==null&&typeof i==="object"&&"parse"in i&&typeof i.parse==="function"&&"safeParse"in i&&typeof i.safeParse==="function"}function JMt(i){return"_def"in i||"_zod"in i||NMt(i)}function eKi(i){if(typeof i!=="object"||i===null)return!1;if(JMt(i))return!1;if(Object.keys(i).length===0)return!0;return Object.values(i).some(NMt)}function yMt(i){if(!i)return;if(eKi(i))return m8(i);if(!JMt(i))throw Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return i}function RSl(i){let t=VE(i);if(!t)return[];return Object.entries(t).map(([u,l])=>{let n=Hbt(l),f=Rbt(l);return{name:u,description:n,required:!f}})}function Ox(i){let u=VE(i)?.method;if(!u)throw Error("Schema is missing a method literal");let l=P0i(u);if(typeof l==="string")return l;throw Error("Schema method literal must be a string")}function XMt(i){return{completion:{values:i.slice(0,100),total:i.length,hasMore:i.length>100}}}var HSl,hL;var EL=w(()=>{vMt();kW();ozi();Xf();DMt();OMt();HSl={type:"object",properties:{}};hL={completion:{values:[],hasMore:!1}}});function D3(i,t,u){let l=u?.capabilities??i.getServerCapabilities(),n=u?.instructions??i.getInstructions(),f=new x3(t,{capabilities:l,instructions:n,jsonSchemaValidator:fc});if(f.server.setRequestHandler(HW,async(c)=>{let $=await i.listTools(c.params);return{...$,tools:$.tools.map(({outputSchema:d,..._})=>_)}}),f.server.setRequestHandler(fx,(c)=>i.callTool(c.params,void 0,u?.toolCallTimeoutMs?{timeout:u.toolCallTimeoutMs}:void 0)),l?.resources)f.server.setRequestHandler(ux,(c)=>i.listResources(c.params)),f.server.setRequestHandler(bW,(c)=>i.readResource(c.params)),f.server.setRequestHandler(lx,(c)=>i.listResourceTemplates(c.params));if(l?.prompts)f.server.setRequestHandler(nx,(c)=>i.listPrompts(c.params)),f.server.setRequestHandler(KW,(c)=>i.getPrompt({...c.params,arguments:c.params.arguments??{}}));return f}var UMt=w(()=>{EL();bKi();Xf()});class TMt{clientQueue=[];serverQueue=[];clientClosed=!1;serverClosed=!1;clientFlushScheduled=!1;serverFlushScheduled=!1;clientTransport;serverTransport;registerTransports(i,t){this.clientTransport=i,this.serverTransport=t,i.setOppositeTransport(t),t.setOppositeTransport(i)}getQueue(i){return i==="client"?this.clientQueue:this.serverQueue}isClosed(i){return i==="client"?this.clientClosed:this.serverClosed}close(i){if(i==="client")this.clientClosed=!0,this.clientQueue=[];else this.serverClosed=!0,this.serverQueue=[]}enqueue(i,t){if(this.isClosed(i))return;let u=this.getQueue(i);if(u.length>=1e4)throw Error(`BridgeTransport: ${i} queue overflow (max 10000 messages). The receiver may not be processing messages fast enough.`);if(u.push(t),i==="client"&&!this.clientFlushScheduled)this.scheduleFlush("client");else if(i==="server"&&!this.serverFlushScheduled)this.scheduleFlush("server")}scheduleFlush(i){if(i==="client")this.clientFlushScheduled=!0;else this.serverFlushScheduled=!0;queueMicrotask(()=>{this.flush(i)})}flush(i){let t=this.getQueue(i);if(i==="client")this.clientFlushScheduled=!1;else this.serverFlushScheduled=!1;if(this.isClosed(i)){t.length=0;return}let u=i==="client"?this.clientTransport:this.serverTransport;if(!u)return;if(!u.started)return;let l=t.splice(0);for(let n of l)u.deliverMessage(n)}closeBoth(){this.close("client"),this.close("server")}}class MKi{channel;side;started=!1;closed=!1;_onmessage;_onerror;_onclose;constructor(i,t){this.channel=i,this.side=t}get onmessage(){return this._onmessage}set onmessage(i){if(this._onmessage=i,i&&this.started&&!this.closed)this.channel.flush(this.side)}get onerror(){return this._onerror}set onerror(i){this._onerror=i}get onclose(){return this._onclose}set onclose(i){this._onclose=i}async start(){if(this.started)throw Error(`${this.side==="client"?"BridgeClientTransport":"BridgeServerTransport"} already started! If using Client/Server class, note that connect() calls start() automatically.`);if(this.started=!0,this._onmessage&&!this.closed)this.channel.flush(this.side)}async send(i){if(this.closed)return Promise.resolve();let t=this.side==="client"?"server":"client";return this.channel.enqueue(t,i),Promise.resolve()}async close(){if(!this.started||this.closed)return;this.closed=!0,this.channel.close(this.side);let i=this.getOppositeTransport();if(i&&!i.closed)i._onclose?.();this._onclose?.()}deliverMessage(i){if(!this.started||this.channel.isClosed(this.side))return;try{this._onmessage?.(i)}catch(t){this._onerror?.(t)}}}function vL(){let i=new TMt,t=new gk(i),u=new hk(i);return i.registerTransports(t,u),{client:t,server:u,channel:i}}var gk,hk;var FMt=w(()=>{gk=class gk extends MKi{oppositeTransport;constructor(i){super(i,"client")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport(i){if(!(i instanceof hk))throw Error("Opposite transport must be BridgeServerTransport");this.oppositeTransport=i}async start(){await super.start()}async send(i){await super.send(i)}};hk=class hk extends MKi{oppositeTransport;constructor(i){super(i,"server")}getOppositeTransport(){return this.oppositeTransport}setOppositeTransport(i){if(!(i instanceof gk))throw Error("Opposite transport must be BridgeClientTransport");this.oppositeTransport=i}async start(){await super.start()}async send(i){await super.send(i)}}});var k_=w(()=>{bKi();UMt();FMt()});var ZMt=w(()=>{k_()});var IMt=w(()=>{k_()});function rL(i,t,u,l){for(let n of u){let f=i.find((c)=>c.modelId===n);if(f)return{keyId:t,modelId:f.modelId,title:f.title}}for(let n of u){let f=i.find((c)=>c.modelId.includes(n));if(f)return{keyId:t,modelId:f.modelId,title:f.title}}if(l){let n=i.find(l);if(n)return{keyId:t,modelId:n.modelId,title:n.title}}return null}function qKi(i,t){let u={chat:{fast:null,smart:null,thinking:null},image:null,webResearch:null};for(let l of i){let n=t[l.id]??[],f=l.providerId;if(!u.chat.fast)u.chat.fast=rL(n,l.id,BMt[f]??[]);if(!u.chat.smart)u.chat.smart=rL(n,l.id,QMt[f]??[]);if(!u.chat.thinking)u.chat.thinking=rL(n,l.id,YMt[f]??[]);if(!u.image)u.image=rL(n,l.id,PMt[f]??[],(c)=>c.capabilities?.includes("image")===!0);if(!u.webResearch)u.webResearch=rL(n,l.id,AMt[f]??[],(c)=>{let $=c.modelId.toLowerCase().replace(/[^a-z0-9]/g,"");return $.includes("sonar")||$.includes("deepresearch")})}return u}var BMt,QMt,YMt,PMt,AMt;var GMt=w(()=>{BMt={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],google:["gemini-2.5-flash","gemini-3-flash"],"claude-code":["claude-code:haiku","claude-code:sonnet"],codex:["codex:gpt-5.4-mini"]},QMt={anthropic:["claude-sonnet-4-6","claude-sonnet"],openrouter:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude"],google:["gemini-3-pro","gemini-3-flash"],"claude-code":["claude-code:sonnet"],codex:["codex:gpt-5.4"]},YMt={anthropic:["claude-opus-4-8","claude-sonnet-4-6","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8","anthropic/claude-sonnet-4.6:extended","anthropic/claude-sonnet-4.6","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],google:["gemini-3-pro"],"claude-code":["claude-code:opus-1m","claude-code:opus","claude-code:sonnet"],codex:["codex:gpt-5.5"]},PMt={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],google:["gemini-2.0-flash-image"]},AMt={openrouter:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"],deco:["perplexity/sonar","perplexity/sonar-pro","perplexity/deep-research"]}});var WMt=w(()=>{n1i()});function wL(i){if(!i)return;let t={};for(let u in i){let l=i[u];if(typeof l==="object"&&l!==null){let n={};for(let f of LSl)if(f in l)n[f]=l[f];t[u]=n}}return Object.keys(t).length>0?t:void 0}var LSl;var kMt=w(()=>{LSl=["usage","cost","model"]});var zl=w(()=>{VSi();oet();r1i();yKi();ZMt();IMt();sw();GMt();WMt();kMt();d1i()});var jMt="MCP Workflows",SMt="Create workflows using your MCP tools";import{sql as zMt}from"kysely";var bMt;var KMt=w(()=>{bMt={name:"001-workflows",async up(i){await i.schema.createTable("workflow_collection").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(t)=>t.notNull()).addColumn("description","text").addColumn("virtual_mcp_id","text",(t)=>t.notNull()).addColumn("steps","text",(t)=>t.notNull().defaultTo("[]")).addColumn("created_at","text",(t)=>t.notNull().defaultTo(zMt`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(zMt`CURRENT_TIMESTAMP`)).addColumn("created_by","text").addColumn("updated_by","text").execute(),await i.schema.createIndex("idx_wf_collection_org").ifNotExists().on("workflow_collection").column("organization_id").execute(),await i.schema.createIndex("idx_wf_collection_created_at").ifNotExists().on("workflow_collection").column("created_at").execute(),await i.schema.createTable("workflow").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("workflow_collection_id","text").addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("steps","text",(t)=>t.notNull().defaultTo("[]")).addColumn("input","text").addColumn("virtual_mcp_id","text",(t)=>t.notNull()).addColumn("created_at_epoch_ms","bigint",(t)=>t.notNull()).addColumn("created_by","text").execute(),await i.schema.createIndex("idx_workflow_created_at").ifNotExists().on("workflow").column("created_at_epoch_ms").execute(),await i.schema.createIndex("idx_workflow_collection_id").ifNotExists().on("workflow").column("workflow_collection_id").execute(),await i.schema.createTable("workflow_execution").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("workflow_id","text",(t)=>t.notNull().references("workflow.id").onDelete("cascade")).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("status","text",(t)=>t.notNull().defaultTo("enqueued")).addColumn("input","text").addColumn("output","text").addColumn("error","text").addColumn("created_at","bigint",(t)=>t.notNull()).addColumn("updated_at","bigint",(t)=>t.notNull()).addColumn("start_at_epoch_ms","bigint").addColumn("started_at_epoch_ms","bigint").addColumn("completed_at_epoch_ms","bigint").addColumn("timeout_ms","bigint").addColumn("deadline_at_epoch_ms","bigint").addColumn("created_by","text").execute(),await i.schema.createIndex("idx_wf_execution_status").ifNotExists().on("workflow_execution").column("status").execute(),await i.schema.createIndex("idx_wf_execution_workflow_id").ifNotExists().on("workflow_execution").column("workflow_id").execute(),await i.schema.createIndex("idx_wf_execution_org").ifNotExists().on("workflow_execution").column("organization_id").execute(),await i.schema.createIndex("idx_wf_execution_created_at").ifNotExists().on("workflow_execution").column("created_at").execute(),await i.schema.createTable("workflow_execution_step_result").ifNotExists().addColumn("execution_id","text",(t)=>t.notNull().references("workflow_execution.id").onDelete("cascade")).addColumn("step_id","text",(t)=>t.notNull()).addColumn("started_at_epoch_ms","bigint").addColumn("completed_at_epoch_ms","bigint").addColumn("output","text").addColumn("error","text").addColumn("raw_tool_output","text").execute(),await i.schema.createIndex("idx_wf_step_result_pk").ifNotExists().on("workflow_execution_step_result").columns(["execution_id","step_id"]).unique().execute(),await i.schema.createIndex("idx_wf_step_result_execution").ifNotExists().on("workflow_execution_step_result").column("execution_id").execute()},async down(i){await i.schema.dropIndex("idx_wf_step_result_execution").ifExists().execute(),await i.schema.dropIndex("idx_wf_step_result_pk").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_created_at").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_org").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_workflow_id").ifExists().execute(),await i.schema.dropIndex("idx_wf_execution_status").ifExists().execute(),await i.schema.dropIndex("idx_workflow_collection_id").ifExists().execute(),await i.schema.dropIndex("idx_workflow_created_at").ifExists().execute(),await i.schema.dropIndex("idx_wf_collection_created_at").ifExists().execute(),await i.schema.dropIndex("idx_wf_collection_org").ifExists().execute(),await i.schema.dropTable("workflow_execution_step_result").ifExists().execute(),await i.schema.dropTable("workflow_execution").ifExists().execute(),await i.schema.dropTable("workflow").ifExists().execute(),await i.schema.dropTable("workflow_collection").ifExists().execute()}}});var HMt;var RMt=w(()=>{HMt={name:"002-execution-list-index",async up(i){await i.schema.createIndex("idx_wf_execution_org_created_at").ifNotExists().on("workflow_execution").columns(["organization_id","created_at desc"]).execute()},async down(i){await i.schema.dropIndex("idx_wf_execution_org_created_at").ifExists().execute()}}});var LMt;var CMt=w(()=>{LMt={name:"003-retry-and-input-schema",async up(i){await i.schema.alterTable("workflow_execution_step_result").addColumn("attempt_number","integer",(t)=>t.notNull().defaultTo(1)).execute(),await i.schema.alterTable("workflow_collection").addColumn("input_schema","text").execute()},async down(i){await i.schema.alterTable("workflow_execution_step_result").dropColumn("attempt_number").execute(),await i.schema.alterTable("workflow_collection").dropColumn("input_schema").execute()}}});var eMt;var MMt=w(()=>{KMt();RMt();CMt();eMt=[bMt,HMt,LMt]});function Gd(i){let t=i;if(!t.organization)throw Error("Organization context required for workflow tools");return t}function ec(i){if(i===null||i===void 0)return null;if(typeof i==="object")return i;if(typeof i!=="string")return i;try{return JSON.parse(i)}catch{return i}}function qMt(i){VKi=i}function T4(){if(!VKi)throw Error('Plugin storage not initialized. Make sure the "workflows" plugin is enabled.');return VKi}var VKi=null;function VMt(i){return{...i,steps:ec(i.steps)??[],input_schema:ec(i.input_schema)??null}}class aKi{db;constructor(i){this.db=i}async list(i,t={}){let{limit:u=50,offset:l=0}=t,n=await this.db.selectFrom("workflow_collection").selectAll().where("organization_id","=",i).orderBy("created_at","desc").limit(u).offset(l).execute(),f=await this.db.selectFrom("workflow_collection").select((c)=>c.fn.countAll().as("count")).where("organization_id","=",i).executeTakeFirstOrThrow();return{items:n,totalCount:Number(f.count)}}async getById(i,t){let u=await this.db.selectFrom("workflow_collection").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst();return u?VMt(u):null}async create(i){let{input_schema:t,...u}=i,l=await this.db.insertInto("workflow_collection").values({...u,input_schema:t!=null?JSON.stringify(t):null}).returningAll().executeTakeFirstOrThrow();return VMt(l)}async update(i,t,u){let{input_schema:l,...n}=u,f={...n,updated_at:new Date().toISOString()};if(l!==void 0)f.input_schema=l?JSON.stringify(l):null;return await this.db.updateTable("workflow_collection").set(f).where("id","=",i).where("organization_id","=",t).returningAll().executeTakeFirstOrThrow()}async delete(i,t){return await this.db.deleteFrom("workflow_collection").where("id","=",i).where("organization_id","=",t).returningAll().executeTakeFirstOrThrow()}}var aMt=()=>{};function CSl(i){return{...i,steps:ec(i.steps)??[],input:ec(i.input)??null}}function yx(i){return{...i,output:ec(i.output),error:ec(i.error),raw_tool_output:ec(i.raw_tool_output)}}class mKi{db;constructor(i){this.db=i}async _createWorkflow(i,t){let u=crypto.randomUUID(),l=Date.now();return await i.insertInto("workflow").values({id:u,workflow_collection_id:t.workflowCollectionId??null,organization_id:t.organizationId,steps:JSON.stringify(t.steps),input:t.input?JSON.stringify(t.input):null,virtual_mcp_id:t.virtualMcpId,created_at_epoch_ms:l,created_by:t.createdBy??null}).execute(),{id:u}}async createWorkflow(i){return this._createWorkflow(this.db,i)}async getWorkflow(i){let t=await this.db.selectFrom("workflow").selectAll().where("id","=",i).executeTakeFirst();return t?CSl(t):null}async createExecution(i){return this.db.transaction().execute(async(t)=>{let u=Date.now(),{id:l}=await this._createWorkflow(t,{organizationId:i.organizationId,workflowCollectionId:i.workflowCollectionId,virtualMcpId:i.virtualMcpId,input:i.input,steps:i.steps,createdBy:i.createdBy}),n=crypto.randomUUID(),f=i.startAtEpochMs??u,c=i.timeoutMs?f+i.timeoutMs:null;return await t.insertInto("workflow_execution").values({id:n,workflow_id:l,organization_id:i.organizationId,status:"enqueued",input:i.input?JSON.stringify(i.input):null,created_at:u,updated_at:u,start_at_epoch_ms:f,timeout_ms:i.timeoutMs??null,deadline_at_epoch_ms:c,created_by:i.createdBy??null}).execute(),{id:n}})}async getExecution(i,t){return await this.db.selectFrom("workflow_execution").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst()??null}async getExecutionFull(i,t){let u=await this.db.selectFrom("workflow_execution").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst();if(!u)return null;let l=await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).execute();return{execution:u,stepResults:l.map(yx)}}async getExecutionContext(i){let[t,u]=await Promise.all([this.db.selectFrom("workflow_execution as we").innerJoin("workflow as w","we.workflow_id","w.id").select(["we.id","we.status","we.workflow_id","we.deadline_at_epoch_ms","w.steps","w.input","w.virtual_mcp_id"]).where("we.id","=",i).executeTakeFirst(),this.db.selectFrom("workflow_execution_step_result").select(["step_id","started_at_epoch_ms","completed_at_epoch_ms","output","error","attempt_number"]).where("execution_id","=",i).execute()]);if(!t)return null;return{execution:{id:t.id,status:t.status,workflow_id:t.workflow_id,deadline_at_epoch_ms:t.deadline_at_epoch_ms},workflow:{steps:ec(t.steps)??[],input:ec(t.input)??null,virtual_mcp_id:t.virtual_mcp_id},stepResults:u.map((l)=>({step_id:l.step_id,started_at_epoch_ms:l.started_at_epoch_ms,completed_at_epoch_ms:l.completed_at_epoch_ms,output:ec(l.output),error:ec(l.error),attempt_number:l.attempt_number}))}}async claimExecution(i){let t=Date.now(),u=await this.db.updateTable("workflow_execution").set({status:"running",updated_at:t}).where("id","=",i).where("status","=","enqueued").returningAll().executeTakeFirst();if(!u)return null;let l=await this.getWorkflow(u.workflow_id);if(!l)throw Error(`Workflow ${u.workflow_id} not found for execution ${i}`);return{execution:u,workflow:l}}async updateExecution(i,t,u){let n={updated_at:Date.now()};if(t.status!==void 0)n.status=t.status;if(t.output!==void 0)n.output=JSON.stringify(t.output);if(t.error!==void 0)n.error=JSON.stringify(t.error);if(t.completed_at_epoch_ms!==void 0)n.completed_at_epoch_ms=t.completed_at_epoch_ms;let f=this.db.updateTable("workflow_execution").set(n).where("id","=",i);if(u?.onlyIfStatus)f=f.where("status","=",u.onlyIfStatus);return await f.returningAll().executeTakeFirst()??null}async cancelExecution(i,t){let u=Date.now();return!!await this.db.updateTable("workflow_execution").set({status:"cancelled",updated_at:u}).where("id","=",i).where("organization_id","=",t).where("status","in",["enqueued","running"]).returningAll().executeTakeFirst()}async resumeExecution(i,t){return this.db.transaction().execute(async(u)=>{let l=Date.now(),n=await u.selectFrom("workflow_execution").where("id","=",i).where("organization_id","=",t).select(["status"]).executeTakeFirst();if(!n)return!1;let{status:f}=n;if(f==="success"){let d=await u.selectFrom("workflow_execution_step_result").where("execution_id","=",i).where("error","is not",null).select(u.fn.countAll().as("count")).executeTakeFirstOrThrow();if(Number(d.count)===0)return!1}else if(f!=="cancelled"&&f!=="error")return!1;await u.updateTable("workflow_execution").set({status:"enqueued",updated_at:l,completed_at_epoch_ms:null,error:null}).where("id","=",i).execute();let c=await u.selectFrom("workflow_execution_step_result").where("execution_id","=",i).where("error","is not",null).where("step_id","like","%[%").select("step_id").execute(),$=new Set;for(let d of c)$.add(d.step_id.replace(/\[\d+\]$/,""));if(await u.deleteFrom("workflow_execution_step_result").where("execution_id","=",i).where((d)=>d.or([d("completed_at_epoch_ms","is",null),d("error","is not",null)])).execute(),$.size>0)await u.deleteFrom("workflow_execution_step_result").where("execution_id","=",i).where("step_id","in",[...$]).execute();return!0})}async listExecutions(i,t={}){let{limit:u=50,offset:l=0,status:n,workflowCollectionId:f}=t,c=this.db.selectFrom("workflow_execution as we").innerJoin("workflow as w","we.workflow_id","w.id").leftJoin("workflow_collection as wc","w.workflow_collection_id","wc.id").select(["we.id","we.workflow_id","we.organization_id","we.status","we.input","we.output","we.error","we.created_at","we.updated_at","we.start_at_epoch_ms","we.started_at_epoch_ms","we.completed_at_epoch_ms","we.timeout_ms","we.deadline_at_epoch_ms","we.created_by","w.virtual_mcp_id"]).select((h)=>h.fn.coalesce("wc.title",h.val("Workflow Execution")).as("title")).where("we.organization_id","=",i);if(n)c=c.where("we.status","=",n);if(f)c=c.where("w.workflow_collection_id","=",f);let $=await c.orderBy("we.created_at","desc").limit(u).offset(l).execute(),d=this.db.selectFrom("workflow_execution as we").innerJoin("workflow as w","we.workflow_id","w.id").select((h)=>h.fn.countAll().as("count")).where("we.organization_id","=",i);if(n)d=d.where("we.status","=",n);if(f)d=d.where("w.workflow_collection_id","=",f);let _=await d.executeTakeFirstOrThrow(),g=Number(_.count);return{items:$,totalCount:g,hasMore:l+$.length<g}}async createStepResult(i){let t=await this.db.insertInto("workflow_execution_step_result").values({execution_id:i.execution_id,step_id:i.step_id,started_at_epoch_ms:i.completed_at_epoch_ms?Date.now():null,completed_at_epoch_ms:i.completed_at_epoch_ms??null,output:i.output!==void 0?JSON.stringify(i.output):null,error:i.error!==void 0?JSON.stringify(i.error):null,attempt_number:1}).onConflict((u)=>u.columns(["execution_id","step_id"]).doNothing()).returningAll().executeTakeFirst();return t?yx(t):null}async updateStepResult(i,t,u){let l={};if(u.output!==void 0)l.output=u.output===null?null:JSON.stringify(u.output);if(u.error!==void 0)l.error=u.error===null?null:JSON.stringify(u.error);if(u.started_at_epoch_ms!==void 0)l.started_at_epoch_ms=u.started_at_epoch_ms;if(u.completed_at_epoch_ms!==void 0)l.completed_at_epoch_ms=u.completed_at_epoch_ms;if(u.attempt_number!==void 0)l.attempt_number=u.attempt_number;if(u.raw_tool_output!==void 0)l.raw_tool_output=u.raw_tool_output===null?null:JSON.stringify(u.raw_tool_output);if(Object.keys(l).length===0)return null;let n=await this.db.updateTable("workflow_execution_step_result").set(l).where("execution_id","=",i).where("step_id","=",t).returningAll().executeTakeFirst();return n?yx(n):null}async claimStepForRetry(i,t,u){let l=await this.db.updateTable("workflow_execution_step_result").set({started_at_epoch_ms:Date.now()}).where("execution_id","=",i).where("step_id","=",t).where("attempt_number","=",u).where("started_at_epoch_ms","is",null).returningAll().executeTakeFirst();return l?yx(l):null}async resetStepResultForRetry(i,t,u){await this.updateStepResult(i,t,{completed_at_epoch_ms:null,output:null,error:null,started_at_epoch_ms:null,attempt_number:u,raw_tool_output:null})}async checkpointAndTransform(i,t,u,l){await this.db.updateTable("workflow_execution_step_result").set({raw_tool_output:JSON.stringify(u)}).where("execution_id","=",i).where("step_id","=",t).execute();let n,f;try{let d=await l(u);n=d.output,f=d.error}catch(d){f=d instanceof Error?`Transform failed: ${d.message}`:`Transform failed: ${String(d)}`}let c={completed_at_epoch_ms:Date.now()};if(n!==void 0)c.output=JSON.stringify(n);if(f!==void 0)c.error=JSON.stringify(f);let $=await this.db.updateTable("workflow_execution_step_result").set(c).where("execution_id","=",i).where("step_id","=",t).returningAll().executeTakeFirst();return $?yx($):null}async getStepResult(i,t){let u=await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).where("step_id","=",t).executeTakeFirst();return u?yx(u):null}async getStepResults(i){return(await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).execute()).map(yx)}async deleteStepResult(i,t){await this.db.deleteFrom("workflow_execution_step_result").where("execution_id","=",i).where("step_id","=",t).execute()}async getStepResultsByPrefix(i,t){let u=t.replaceAll("\\","\\\\").replaceAll("%","\\%").replaceAll("_","\\_");return(await this.db.selectFrom("workflow_execution_step_result").selectAll().where("execution_id","=",i).where("step_id","like",`${u}%`).orderBy("step_id").execute()).map(yx)}async recoverStuckExecutions(){return this.db.updateTable("workflow_execution").set({status:"enqueued",updated_at:Date.now()}).where("status","=","running").returning(["id","organization_id"]).execute()}}var mMt=()=>{};function oMt(i){let t=i.db;return{collections:new aKi(t),executions:new mKi(t)}}var sMt=w(()=>{aMt();mMt()});import{z as u6}from"zod/v4";import{z as pMt}from"zod/v4";import{z as w1i}from"zod/v4";import{z as lv}from"zod/v4";import{z as VSl}from"zod/v4";import{z as _O}from"zod/v4";import{z as nv}from"zod/v4";import{z as Mc}from"zod/v4";import{z as iqt}from"zod/v4";import{z as O1i}from"zod/v4";import{z as Dzl}from"zod/v4";import{z as tqt}from"zod/v4";import{z as x1i}from"zod/v4";import{z as Zzl}from"zod/v4";function xL(i,t){if(i===t)return!0;if(i==null||t==null)return i===t;if(typeof i!==typeof t)return!1;if(Array.isArray(i)&&Array.isArray(t)){if(i.length!==t.length)return!1;return i.every((u,l)=>xL(u,t[l]))}if(typeof i==="object"&&typeof t==="object"){let u=Object.keys(i),l=Object.keys(t);if(u.length!==l.length)return!1;return u.every((n)=>l.includes(n)&&xL(i[n],t[n]))}return!1}function rzl(){return(i)=>{if(!Array.isArray(i))return!0;let t=[];return i.every((u)=>{if(t.some((n)=>xL(u,n)))return!1;return t.push(u),!0})}}function D1i(i,t){return i.safeParse(t).success}function Xc(i){if(typeof i==="boolean")return i?u6.any():u6.never();let t={};for(let n of Yzl)n.apply(t,i);let u=[];if(t.string!==!1)u.push(t.string||u6.string());if(t.number!==!1)u.push(t.number||u6.number());if(t.boolean!==!1)u.push(t.boolean||u6.boolean());if(t.null!==!1)u.push(t.null||u6.null());if(t.array!==!1)u.push(t.array||u6.array(u6.any()));if(t.tuple!==!1&&t.tuple!==void 0)u.push(t.tuple);if(t.object!==!1)if(t.object)u.push(t.object);else{let n=u6.custom((f)=>{return typeof f==="object"&&f!==null&&!Array.isArray(f)},"Must be an object, not an array");u.push(n)}if(t.file!==!1&&t.file!==void 0)u.push(t.file);let l;if(u.length===0)l=u6.never();else if(u.length===1)l=u[0];else if(!Object.keys(i).some((f)=>f!=="$schema"&&f!=="title"&&f!=="description"))l=u6.any();else l=u6.union(u);for(let n of Pzl)l=n.apply(l,i);return l}var eSl=class{apply(i,t){if(!t.type)return;let u=Array.isArray(t.type)?t.type:[t.type],l=new Set(u);if(!l.has("string"))i.string=!1;if(!l.has("number")&&!l.has("integer"))i.number=!1;if(!l.has("boolean"))i.boolean=!1;if(!l.has("null"))i.null=!1;if(!l.has("array"))i.array=!1;if(!l.has("object"))i.object=!1;if(l.has("integer")&&i.number!==!1){let n=i.number||pMt.number();if(n instanceof pMt.ZodNumber)i.number=n.int()}}},MSl=class{apply(i,t){if(t.const===void 0)return;let u=t.const;if(i.string=!1,i.number=!1,i.boolean=!1,i.null=!1,i.array=!1,i.object=!1,typeof u==="string")i.string=w1i.literal(u);else if(typeof u==="number")i.number=w1i.literal(u);else if(typeof u==="boolean")i.boolean=w1i.literal(u);else if(u===null)i.null=w1i.null();else if(Array.isArray(u))i.array=void 0;else if(typeof u==="object")i.object=void 0}},qSl=class{apply(i,t){if(!t.enum)return;if(t.enum.length===0){if(!t.type)i.string=!1,i.number=!1,i.boolean=!1,i.null=!1,i.array=!1,i.object=!1;return}let u={string:t.enum.filter((l)=>typeof l==="string"),number:t.enum.filter((l)=>typeof l==="number"),boolean:t.enum.filter((l)=>typeof l==="boolean"),null:t.enum.filter((l)=>l===null),array:t.enum.filter((l)=>Array.isArray(l)),object:t.enum.filter((l)=>typeof l==="object"&&l!==null&&!Array.isArray(l))};i.string=this.createTypeSchema(u.string,"string"),i.number=this.createTypeSchema(u.number,"number"),i.boolean=this.createTypeSchema(u.boolean,"boolean"),i.null=u.null.length>0?lv.null():!1,i.array=u.array.length>0?void 0:!1,i.object=u.object.length>0?void 0:!1}createTypeSchema(i,t){if(i.length===0)return!1;if(i.length===1)return lv.literal(i[0]);if(t==="string")return lv.enum(i);if(t==="number"){let[u,l,...n]=i;return lv.union([lv.literal(u),lv.literal(l),...n.map((f)=>lv.literal(f))])}if(t==="boolean")return lv.union([lv.literal(!0),lv.literal(!1)]);return!1}},aSl=class{apply(i,t){let u=t;if(u.type==="string"&&u.format==="binary"&&u.contentEncoding==="binary"){let l=VSl.file();if(u.minLength!==void 0)l=l.min(u.minLength);if(u.maxLength!==void 0)l=l.max(u.maxLength);if(u.contentMediaType!==void 0)l=l.mime(u.contentMediaType);i.file=l,i.string=!1}}},mSl=class{apply(i,t){let u=t;if(t.type===void 0&&(u.minLength!==void 0||u.maxLength!==void 0||u.pattern!==void 0)){if(i.string===void 0)i.string=_O.string()}}},oSl=class{apply(i,t){let u=t;if(u.minLength===void 0)return;if(i.string!==!1){let l=i.string||_O.string();if(l instanceof _O.ZodString)i.string=l.refine((n)=>{return Array.from(n).length>=u.minLength},{message:`String must be at least ${u.minLength} characters long`})}}},sSl=class{apply(i,t){let u=t;if(u.maxLength===void 0)return;if(i.string!==!1){let l=i.string||_O.string();if(l instanceof _O.ZodString)i.string=l.refine((n)=>{return Array.from(n).length<=u.maxLength},{message:`String must be at most ${u.maxLength} characters long`})}}},pSl=class{apply(i,t){let u=t;if(!u.pattern)return;if(i.string!==!1){let l=i.string||_O.string();if(l instanceof _O.ZodString){let n=new RegExp(u.pattern);i.string=l.regex(n)}}}},izl=class{apply(i,t){let u=t;if(u.minimum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)i.number=l.min(u.minimum)}}},tzl=class{apply(i,t){let u=t;if(u.maximum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)i.number=l.max(u.maximum)}}},uzl=class{apply(i,t){let u=t;if(u.exclusiveMinimum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)if(typeof u.exclusiveMinimum==="number")i.number=l.gt(u.exclusiveMinimum);else i.number=!1}}},lzl=class{apply(i,t){let u=t;if(u.exclusiveMaximum===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)if(typeof u.exclusiveMaximum==="number")i.number=l.lt(u.exclusiveMaximum);else i.number=!1}}},nzl=class{apply(i,t){let u=t;if(u.multipleOf===void 0)return;if(i.number!==!1){let l=i.number||nv.number();if(l instanceof nv.ZodNumber)i.number=l.refine((n)=>{if(u.multipleOf===0)return!1;let f=n/u.multipleOf,c=Math.round(f),$=Math.min(Math.abs(n)*Number.EPSILON*10,Math.abs(u.multipleOf)*Number.EPSILON*10);return Math.abs(f-c)<=$/Math.abs(u.multipleOf)},{message:`Must be a multiple of ${u.multipleOf}`})}}},fzl=class{apply(i,t){let u=t;if(t.type===void 0&&(u.minItems!==void 0||u.maxItems!==void 0||u.items!==void 0||u.prefixItems!==void 0)){if(i.array===void 0)i.array=Mc.array(Mc.any())}}},czl=class{apply(i,t){let u=t;if(u.minItems===void 0)return;if(i.array!==!1)i.array=(i.array||Mc.array(Mc.any())).min(u.minItems)}},$zl=class{apply(i,t){let u=t;if(u.maxItems===void 0)return;if(i.array!==!1)i.array=(i.array||Mc.array(Mc.any())).max(u.maxItems)}},dzl=class{apply(i,t){let u=t;if(i.array===!1)return;if(Array.isArray(u.items))i.array=i.array||Mc.array(Mc.any());else if(u.items&&typeof u.items!=="boolean"&&!u.prefixItems){let l=Xc(u.items),n=Mc.array(l);if(i.array&&i.array instanceof Mc.ZodArray){let f=i.array._def;if(f.checks)f.checks.forEach((c)=>{if(c._zod&&c._zod.def){let $=c._zod.def;if($.check==="min_length"&&$.minimum!==void 0)n=n.min($.minimum);else if($.check==="max_length"&&$.maximum!==void 0)n=n.max($.maximum)}})}i.array=n}else if(typeof u.items==="boolean"&&u.items===!1)if(!u.prefixItems)i.array=Mc.array(Mc.any()).max(0);else i.array=i.array||Mc.array(Mc.any());else if(typeof u.items==="boolean"&&u.items===!0)i.array=i.array||Mc.array(Mc.any());else if(u.prefixItems)i.array=i.array||Mc.array(Mc.any())}},_zl=class{apply(i,t){if(t.type!=="array")return;let u=t;if(!Array.isArray(u.items))return;if(i.array===!1)return;let l=u.items.map((f)=>Xc(f)),n;if(l.length===0)n=iqt.tuple([]);else n=iqt.tuple(l);if(u.minItems!==void 0&&u.minItems>l.length)n=!1;if(u.maxItems!==void 0&&u.maxItems<l.length)n=!1;i.tuple=n,i.array=!1}},gzl=class{apply(i,t){let u=t;if(i.object===!1)return;if(u.properties||u.required||u.additionalProperties!==void 0)i.object=i.object||O1i.object({}).passthrough()}},hzl=class{apply(i,t){let u=t;if(t.type===void 0&&(u.maxProperties!==void 0||u.minProperties!==void 0)){if(i.object===void 0)i.object=O1i.object({}).passthrough()}}},Ezl=class{apply(i,t){let u=t;if(u.maxProperties===void 0)return;if(i.object!==!1){let l=i.object||O1i.object({}).passthrough();i.object=l.refine((n)=>Object.keys(n).length<=u.maxProperties,{message:`Object must have at most ${u.maxProperties} properties`})}}},vzl=class{apply(i,t){let u=t;if(u.minProperties===void 0)return;if(i.object!==!1){let l=i.object||O1i.object({}).passthrough();i.object=l.refine((n)=>Object.keys(n).length>=u.minProperties,{message:`Object must have at least ${u.minProperties} properties`})}}},wzl=class{apply(i,t){if(!t.not)return i;let u=Xc(t.not);return i.refine((l)=>!D1i(u,l),{message:"Value must not match the 'not' schema"})}},xzl=class{apply(i,t){if(t.uniqueItems!==!0)return i;return i.refine(rzl(),{message:"Array items must be unique"})}},Ozl=class{apply(i,t){if(!t.allOf||t.allOf.length===0)return i;return t.allOf.map((l)=>Xc(l)).reduce((l,n)=>Dzl.intersection(l,n),i)}},yzl=class{apply(i,t){if(!t.anyOf||t.anyOf.length===0)return i;let u=t.anyOf.length===1?Xc(t.anyOf[0]):tqt.union([Xc(t.anyOf[0]),Xc(t.anyOf[1]),...t.anyOf.slice(2).map((l)=>Xc(l))]);return tqt.intersection(i,u)}},Xzl=class{apply(i,t){if(!t.oneOf||t.oneOf.length===0)return i;let u=t.oneOf.map((l)=>Xc(l));return i.refine((l)=>{let n=0;for(let f of u)if(f.safeParse(l).success){if(n++,n>1)return!1}return n===1},{message:"Value must match exactly one of the oneOf schemas"})}},Nzl=class{apply(i,t){let u=t;if(u.prefixItems&&Array.isArray(u.prefixItems)){let n=u.prefixItems.map((f)=>Xc(f));return i.refine((f)=>{if(!Array.isArray(f))return!0;for(let c=0;c<Math.min(f.length,n.length);c++)if(!D1i(n[c],f[c]))return!1;if(f.length>n.length){if(typeof u.items==="boolean"&&u.items===!1)return!1;else if(u.items&&typeof u.items==="object"&&!Array.isArray(u.items)){let c=Xc(u.items);for(let $=n.length;$<f.length;$++)if(!D1i(c,f[$]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return i}},Jzl=class{apply(i,t){let u=t;if(!u.properties&&!u.required&&u.additionalProperties!==!1)return i;if(i instanceof x1i.ZodObject||i instanceof x1i.ZodRecord){let l={};if(u.properties){for(let[n,f]of Object.entries(u.properties))if(f!==void 0)l[n]=Xc(f)}if(u.required&&Array.isArray(u.required)){let n=new Set(u.required);for(let f of Object.keys(l))if(!n.has(f))l[f]=l[f].optional()}else for(let n of Object.keys(l))l[n]=l[n].optional();if(u.additionalProperties===!1)return x1i.object(l);else return x1i.object(l).passthrough()}return i.refine((l)=>{if(typeof l!=="object"||l===null||Array.isArray(l))return!0;if(u.properties){for(let[n,f]of Object.entries(u.properties))if(f!==void 0){if(Object.getOwnPropertyDescriptor(l,n)!==void 0){if(!Xc(f).safeParse(l[n]).success)return!1}}}if(u.required&&Array.isArray(u.required)){for(let n of u.required)if(Object.getOwnPropertyDescriptor(l,n)===void 0)return!1}if(u.additionalProperties===!1&&u.properties){let n=new Set(Object.keys(u.properties));for(let f in l)if(!n.has(f))return!1}return!0},{message:"Object constraints validation failed"})}},Uzl=class{apply(i,t){if(!t.enum||t.enum.length===0)return i;let u=t.enum.filter((l)=>Array.isArray(l)||typeof l==="object"&&l!==null);if(u.length===0)return i;return i.refine((l)=>{if(typeof l!=="object"||l===null)return!0;return u.some((n)=>xL(l,n))},{message:"Value must match one of the enum values"})}},Tzl=class{apply(i,t){if(t.const===void 0)return i;let u=t.const;if(typeof u!=="object"||u===null)return i;return i.refine((l)=>xL(l,u),{message:"Value must equal the const value"})}},Fzl=class{apply(i,t){if(t.description)i=i.describe(t.description);return i}},Izl=class{apply(i,t){var u;let l=t;if(!((u=l.required)==null?void 0:u.includes("__proto__"))||t.type!==void 0)return i;return Zzl.any().refine((n)=>this.validateRequired(n,l.required),{message:"Missing required properties"})}validateRequired(i,t){if(typeof i!=="object"||i===null||Array.isArray(i))return!0;return t.every((u)=>Object.prototype.hasOwnProperty.call(i,u))}},Bzl=class{apply(i,t){var u;let l=t;if(l.contains===void 0)return i;let n=Xc(l.contains),f=(u=l.minContains)!=null?u:1,c=l.maxContains;return i.refine(($)=>{if(!Array.isArray($))return!0;let d=0;for(let _ of $)if(D1i(n,_))d++;if(d<f)return!1;if(c!==void 0&&d>c)return!1;return!0},{message:"Array must contain required items matching the schema"})}},Qzl=class{apply(i,t){let{default:u}=t;if(u===void 0)return i;if(!i.safeParse(u).success)return i;return i.default(u)}},Yzl,Pzl;var oKi=w(()=>{Yzl=[new MSl,new qSl,new eSl,new aSl,new mSl,new fzl,new hzl,new oSl,new sSl,new pSl,new izl,new tzl,new uzl,new lzl,new nzl,new _zl,new czl,new $zl,new dzl,new Ezl,new vzl,new gzl],Pzl=[new Izl,new Uzl,new Tzl,new Ozl,new yzl,new Xzl,new Nzl,new Jzl,new Bzl,new wzl,new xzl,new Qzl,new Fzl]});function Azl(i){let t=globalThis.DOMException;return typeof t=="function"?new t(i,"SyntaxError"):SyntaxError(i)}function pKi(i){return i instanceof Error?"errors"in i&&Array.isArray(i.errors)?i.errors.map(pKi).join(", "):("cause"in i)&&i.cause instanceof Error?`${i}: ${pKi(i.cause)}`:i.message:`${i}`}function uqt(i){return{type:i.type,message:i.message,code:i.code,defaultPrevented:i.defaultPrevented,cancelable:i.cancelable,timeStamp:i.timeStamp}}function Gzl(){let i="document"in globalThis?globalThis.document:void 0;return i&&typeof i=="object"&&"baseURI"in i&&typeof i.baseURI=="string"?i.baseURI:void 0}var sKi,nqt=(i)=>{throw TypeError(i)},$Hi=(i,t,u)=>t.has(i)||nqt("Cannot "+u),x0=(i,t,u)=>($Hi(i,t,"read from private field"),u?u.call(i):t.get(i)),Nc=(i,t,u)=>t.has(i)?nqt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(i):t.set(i,u),V1=(i,t,u,l)=>($Hi(i,t,"write to private field"),t.set(i,u),u),O3=(i,t,u)=>($Hi(i,t,"access private method"),u),Wd,gO,Ek,y1i,X1i,yL,wk,XL,Xx,vk,xk,rk,DL,Nh,iHi,tHi,uHi,lqt,lHi,nHi,OL,fHi,cHi,Dk;var fqt=w(()=>{DKi();sKi=class sKi extends Event{constructor(i,t){var u,l;super(i),this.code=(u=t==null?void 0:t.code)!=null?u:void 0,this.message=(l=t==null?void 0:t.message)!=null?l:void 0}[Symbol.for("nodejs.util.inspect.custom")](i,t,u){return u(uqt(this),t)}[Symbol.for("Deno.customInspect")](i,t){return i(uqt(this),t)}};Dk=class Dk extends EventTarget{constructor(i,t){var u,l;super(),Nc(this,Nh),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,Nc(this,Wd),Nc(this,gO),Nc(this,Ek),Nc(this,y1i),Nc(this,X1i),Nc(this,yL),Nc(this,wk),Nc(this,XL,null),Nc(this,Xx),Nc(this,vk),Nc(this,xk,null),Nc(this,rk,null),Nc(this,DL,null),Nc(this,tHi,async(n)=>{var f;x0(this,vk).reset();let{body:c,redirected:$,status:d,headers:_}=n;if(d===204){O3(this,Nh,OL).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if($?V1(this,Ek,new URL(n.url)):V1(this,Ek,void 0),d!==200){O3(this,Nh,OL).call(this,`Non-200 status code (${d})`,d);return}if(!(_.get("content-type")||"").startsWith("text/event-stream")){O3(this,Nh,OL).call(this,'Invalid content type, expected "text/event-stream"',d);return}if(x0(this,Wd)===this.CLOSED)return;V1(this,Wd,this.OPEN);let g=new Event("open");if((f=x0(this,DL))==null||f.call(this,g),this.dispatchEvent(g),typeof c!="object"||!c||!("getReader"in c)){O3(this,Nh,OL).call(this,"Invalid response body, expected a web ReadableStream",d),this.close();return}let h=new TextDecoder,E=c.getReader(),v=!0;do{let{done:r,value:x}=await E.read();x&&x0(this,vk).feed(h.decode(x,{stream:!r})),r&&(v=!1,x0(this,vk).reset(),O3(this,Nh,fHi).call(this))}while(v)}),Nc(this,uHi,(n)=>{V1(this,Xx,void 0),!(n.name==="AbortError"||n.type==="aborted")&&O3(this,Nh,fHi).call(this,pKi(n))}),Nc(this,lHi,(n)=>{typeof n.id=="string"&&V1(this,XL,n.id);let f=new MessageEvent(n.event||"message",{data:n.data,origin:x0(this,Ek)?x0(this,Ek).origin:x0(this,gO).origin,lastEventId:n.id||""});x0(this,rk)&&(!n.event||n.event==="message")&&x0(this,rk).call(this,f),this.dispatchEvent(f)}),Nc(this,nHi,(n)=>{V1(this,yL,n)}),Nc(this,cHi,()=>{V1(this,wk,void 0),x0(this,Wd)===this.CONNECTING&&O3(this,Nh,iHi).call(this)});try{if(i instanceof URL)V1(this,gO,i);else if(typeof i=="string")V1(this,gO,new URL(i,Gzl()));else throw Error("Invalid URL")}catch{throw Azl("An invalid or illegal string was specified")}V1(this,vk,f1i({onEvent:x0(this,lHi),onRetry:x0(this,nHi)})),V1(this,Wd,this.CONNECTING),V1(this,yL,3000),V1(this,X1i,(u=t==null?void 0:t.fetch)!=null?u:globalThis.fetch),V1(this,y1i,(l=t==null?void 0:t.withCredentials)!=null?l:!1),O3(this,Nh,iHi).call(this)}get readyState(){return x0(this,Wd)}get url(){return x0(this,gO).href}get withCredentials(){return x0(this,y1i)}get onerror(){return x0(this,xk)}set onerror(i){V1(this,xk,i)}get onmessage(){return x0(this,rk)}set onmessage(i){V1(this,rk,i)}get onopen(){return x0(this,DL)}set onopen(i){V1(this,DL,i)}addEventListener(i,t,u){let l=t;super.addEventListener(i,l,u)}removeEventListener(i,t,u){let l=t;super.removeEventListener(i,l,u)}close(){x0(this,wk)&&clearTimeout(x0(this,wk)),x0(this,Wd)!==this.CLOSED&&(x0(this,Xx)&&x0(this,Xx).abort(),V1(this,Wd,this.CLOSED),V1(this,Xx,void 0))}};Wd=new WeakMap,gO=new WeakMap,Ek=new WeakMap,y1i=new WeakMap,X1i=new WeakMap,yL=new WeakMap,wk=new WeakMap,XL=new WeakMap,Xx=new WeakMap,vk=new WeakMap,xk=new WeakMap,rk=new WeakMap,DL=new WeakMap,Nh=new WeakSet,iHi=function(){V1(this,Wd,this.CONNECTING),V1(this,Xx,new AbortController),x0(this,X1i)(x0(this,gO),O3(this,Nh,lqt).call(this)).then(x0(this,tHi)).catch(x0(this,uHi))},tHi=new WeakMap,uHi=new WeakMap,lqt=function(){var i;let t={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...x0(this,XL)?{"Last-Event-ID":x0(this,XL)}:void 0},cache:"no-store",signal:(i=x0(this,Xx))==null?void 0:i.signal};return"window"in globalThis&&(t.credentials=this.withCredentials?"include":"same-origin"),t},lHi=new WeakMap,nHi=new WeakMap,OL=function(i,t){var u;x0(this,Wd)!==this.CLOSED&&V1(this,Wd,this.CLOSED);let l=new sKi("error",{code:t,message:i});(u=x0(this,xk))==null||u.call(this,l),this.dispatchEvent(l)},fHi=function(i,t){var u;if(x0(this,Wd)===this.CLOSED)return;V1(this,Wd,this.CONNECTING);let l=new sKi("error",{code:t,message:i});(u=x0(this,xk))==null||u.call(this,l),this.dispatchEvent(l),V1(this,wk,setTimeout(x0(this,cHi),x0(this,yL)))},cHi=new WeakMap,Dk.CONNECTING=0,Dk.OPEN=1,Dk.CLOSED=2});class y3{constructor(i,t){this._url=i,this._resourceMetadataUrl=void 0,this._scope=void 0,this._eventSourceInit=t?.eventSourceInit,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=eni(t?.fetch,t?.requestInit)}async _authThenStart(){if(!this._authProvider)throw new Ad("No auth provider");let i;try{i=await iv(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(t){throw this.onerror?.(t),t}if(i!=="AUTHORIZED")throw new Ad;return await this._startOrAuth()}async _commonHeaders(){let i={};if(this._authProvider){let u=await this._authProvider.tokens();if(u)i.Authorization=`Bearer ${u.access_token}`}if(this._protocolVersion)i["mcp-protocol-version"]=this._protocolVersion;let t=ik(this._requestInit?.headers);return new Headers({...i,...t})}_startOrAuth(){let i=this?._eventSourceInit?.fetch??this._fetch??fetch;return new Promise((t,u)=>{this._eventSource=new Dk(this._url.href,{...this._eventSourceInit,fetch:async(l,n)=>{let f=await this._commonHeaders();f.set("Accept","text/event-stream");let c=await i(l,{...n,headers:f});if(c.status===401&&c.headers.has("www-authenticate")){let{resourceMetadataUrl:$,scope:d}=fk(c);this._resourceMetadataUrl=$,this._scope=d}return c}}),this._abortController=new AbortController,this._eventSource.onerror=(l)=>{if(l.code===401&&this._authProvider){this._authThenStart().then(t,u);return}let n=new cqt(l.code,l.message,l);u(n),this.onerror?.(n)},this._eventSource.onopen=()=>{},this._eventSource.addEventListener("endpoint",(l)=>{let n=l;try{if(this._endpoint=new URL(n.data,this._url),this._endpoint.origin!==this._url.origin)throw Error(`Endpoint origin does not match connection origin: ${this._endpoint.origin}`)}catch(f){u(f),this.onerror?.(f),this.close();return}t()}),this._eventSource.onmessage=(l)=>{let n=l,f;try{f=G_.parse(JSON.parse(n.data))}catch(c){this.onerror?.(c);return}this.onmessage?.(f)}})}async start(){if(this._eventSource)throw Error("SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.");return await this._startOrAuth()}async finishAuth(i){if(!this._authProvider)throw new Ad("No auth provider");if(await iv(this._authProvider,{serverUrl:this._url,authorizationCode:i,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new Ad("Failed to authorize")}async close(){this._abortController?.abort(),this._eventSource?.close(),this.onclose?.()}async send(i){if(!this._endpoint)throw Error("Not connected");try{let t=await this._commonHeaders();t.set("content-type","application/json");let u={...this._requestInit,method:"POST",headers:t,body:JSON.stringify(i),signal:this._abortController?.signal},l=await(this._fetch??fetch)(this._endpoint,u);if(!l.ok){let n=await l.text().catch(()=>null);if(l.status===401&&this._authProvider){let{resourceMetadataUrl:f,scope:c}=fk(l);if(this._resourceMetadataUrl=f,this._scope=c,await iv(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new Ad;return this.send(i)}throw Error(`Error POSTing to endpoint (HTTP ${l.status}): ${n}`)}await l.body?.cancel()}catch(t){throw this.onerror?.(t),t}}setProtocolVersion(i){this._protocolVersion=i}}var cqt;var NL=w(()=>{fqt();Xf();n1i();cqt=class cqt extends Error{constructor(i,t,u){super(`SSE error: ${t}`);this.code=i,this.event=u}}});class dHi{constructor(i){this._url=i}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((i,t)=>{this._socket=new WebSocket(this._url,Wzl),this._socket.onerror=(u)=>{let l="error"in u?u.error:Error(`WebSocket error: ${JSON.stringify(u)}`);t(l),this.onerror?.(l)},this._socket.onopen=()=>{i()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(u)=>{let l;try{l=G_.parse(JSON.parse(u.data))}catch(n){this.onerror?.(n);return}this.onmessage?.(l)}})}async close(){this._socket?.close()}send(i){return new Promise((t,u)=>{if(!this._socket){u(Error("Not connected"));return}this._socket?.send(JSON.stringify(i)),t()})}}var Wzl="mcp";var $qt=w(()=>{Xf()});function kzl(i){let t=i;if(!t||typeof t!=="object"||!("method"in t))return null;switch(t.method){case"initialize":{let u=t?.params?.protocolVersion;if(!u)return null;return{type:"emit",message:{result:{protocolVersion:u,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:t.jsonrpc??"2.0",id:t.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var N1i;var _Hi=w(()=>{cO();N1i=class N1i extends i6{constructor(i,t){super(i,t)}send(i,t){let u=kzl(i);if(u?.type==="emit")return this.onmessage?.(u.message),Promise.resolve();if(u?.type==="suppress")return Promise.resolve();return super.send(i,t)}}});var dqt,_qt=async(i,t,u)=>{let l=jzl(i.connection,t,u);if(!l)throw Error("Unknown MCP connection type");let n=new dqt({name:i?.name??"MCP Client",version:"1.0.0"});return await n.connect(l),{client:n}},jzl=(i,t,u)=>{if(i.type==="Websocket")return new dHi(new URL(i.url));if(i.type!=="SSE"&&i.type!=="HTTP")return null;let n={...i.token?{authorization:`Bearer ${i.token}`}:{},...u??{},..."headers"in i?i.headers||{}:{}};if(i.type==="SSE"){let f={requestInit:{headers:n,signal:t}};if(i.token)f.eventSourceInit={fetch:(c,$)=>{return fetch(c,{...$,headers:{...n,Accept:"text/event-stream"},signal:t})}};return new y3(new URL(i.url),f)}return new N1i(new URL(i.url),{requestInit:{headers:n,signal:t,credentials:"include"}})};var gqt=w(()=>{Xh();NL();$qt();Xf();_Hi();dqt=class dqt extends Nf{constructor(i,t){super(i,t)}async listTools(i,t){return await this.request({method:"tools/list",params:i},IR,t)}}});function vqt(i){let t=(u)=>{if("connection"in i)return _qt({connection:i.connection},void 0,u);return i.client};return new Proxy({},{get(u,l){if(l==="toJSON")return null;if(typeof l!=="string")throw Error("Name must be a string");if(l==="listTools")return $;async function n(d,_=l){let g=i?.debugId?.(),h=g?{"x-trace-debug-id":g}:void 0,{client:E}=await t(h),{structuredContent:v,isError:r,content:x}=await E.callTool({name:String(_),arguments:d});if(r){let y=x?.[0]?.text,X=typeof y==="string"?hqt(y):null,N=X?.code&&typeof i?.getErrorByStatusCode==="function"?i.getErrorByStatusCode(X.code,X.message,X.traceId):null;if(N)throw N;throw Error(`Tool ${String(_)} returned an error: ${JSON.stringify(v??x)}`)}if(v!==void 0)return v;let O=x?.[0]?.text;return typeof O==="string"?hqt(O):void 0}async function f(){let{client:d}=await t(),{tools:_}=await d.listTools();return _}async function c(){if(!("connection"in i))return f();let d=i.connection,_=JSON.stringify(d);try{if(!J1i.has(_))J1i.set(_,f());return await J1i.get(_)}catch(g){console.error("Failed to list tools",g),J1i.delete(_);return}}async function $(){return(await c()??[]).map((_)=>Eqt(_,n))}return n.asTool=async()=>{let _=(await c()??[]).find((g)=>g.name===l);if(!_)throw Error(`Tool ${l} not found`);return Eqt(_,n)},n}})}var hqt=(i)=>{try{return JSON.parse(i)}catch{return i}},J1i,Eqt=(i,t)=>{return{...i,id:i.name,inputSchema:i.inputSchema?Xc(i.inputSchema):void 0,outputSchema:i.outputSchema?Xc(i.outputSchema):void 0,execute:(u)=>{return t(u.context,i.name)}}};var rqt=w(()=>{oKi();gqt();J1i=new Map});function hO(i){return vqt(i)}var Ok;var gHi=w(()=>{rqt();Ok=new Proxy({},{get(i,t){if(t==="toJSON")return null;if(t==="forConnection")return(u)=>hO({connection:u});return global[t]}})});function U1i(i){return{isImplementedBy:(t)=>{for(let u of i){let l=typeof u.name==="string"?new RegExp(`^${u.name}$`):u.name,n=t.find((f)=>l.test(f.name));if(!n&&u.opt)continue;if(!n)return!1}return!0}}}var kd=(i)=>{return{...U1i(i),forClient:(t)=>{return hO({client:t})},forConnection:(t)=>{return hO({connection:t})}}};var X3=w(()=>{gHi()});import{z as Gl}from"zod";function N3(i){return Gl.object({items:Gl.array(i).describe("Array of collection items"),totalCount:Gl.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:Gl.boolean().optional().describe("Whether there are more items available")})}function UL(i){return Gl.object({item:i.nullable().describe("The retrieved item, or null if not found")})}function bzl(i){return Gl.object({data:i.partial().describe("Data for the new entity (id may be auto-generated)")})}function Kzl(i){return Gl.object({item:i.describe("The created entity with generated id")})}function Hzl(i){return Gl.object({id:Gl.string().describe("ID of the entity to update"),data:i.partial().describe("Partial entity data to update")})}function Rzl(i){return Gl.object({item:i.describe("The updated entity")})}function FL(i){return Gl.object({item:i.describe("The deleted entity")})}function cv(i,t,u){let l=i.toUpperCase(),n=u?.readOnly??!1,f=[{name:`COLLECTION_${l}_LIST`,inputSchema:Jh,outputSchema:N3(t)},{name:`COLLECTION_${l}_GET`,inputSchema:JL,outputSchema:UL(t)}];if(!n)f.push({name:`COLLECTION_${l}_CREATE`,inputSchema:bzl(t),outputSchema:Kzl(t),opt:!0},{name:`COLLECTION_${l}_UPDATE`,inputSchema:Hzl(t),outputSchema:Rzl(t),opt:!0},{name:`COLLECTION_${l}_DELETE`,inputSchema:TL,outputSchema:FL(t),opt:!0});return f}var fv,Szl,wqt,zzl,Jh,JL,TL;var jd=w(()=>{fv=Gl.object({id:Gl.string().describe("Unique identifier for the entity"),title:Gl.string().describe("Human-readable title for the entity"),description:Gl.string().nullish().describe("Description of the entity"),created_at:Gl.string().datetime(),updated_at:Gl.string().datetime(),created_by:Gl.string().optional(),updated_by:Gl.string().optional()}),Szl=Gl.object({field:Gl.array(Gl.string()),operator:Gl.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:Gl.unknown()}),wqt=Gl.lazy(()=>Gl.union([Szl,Gl.object({operator:Gl.enum(["and","or","not"]),conditions:Gl.array(wqt)})])),zzl=Gl.object({field:Gl.array(Gl.string()),direction:Gl.enum(["asc","desc"]),nulls:Gl.enum(["first","last"]).optional()}),Jh=Gl.object({where:wqt.optional().describe("Filter expression"),orderBy:Gl.array(zzl).optional().describe("Sort expressions"),limit:Gl.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:Gl.number().int().min(0).optional().describe("Number of items to skip")});JL=Gl.object({id:Gl.string().describe("ID of the entity to retrieve")});TL=Gl.object({id:Gl.string().describe("ID of the entity to delete")})});import{z as Ht}from"zod";function szl(i,t){let u=[];function l(n){if(typeof n==="string"){let f=n.match(/@([a-zA-Z_][a-zA-Z0-9_-]*)/g);if(f)for(let c of f){let $=c.substring(1);if(t.has($)&&$!==i.name)u.push($)}}else if(Array.isArray(n))n.forEach(l);else if(typeof n==="object"&&n!==null)Object.values(n).forEach(l)}if(l(i.input),i.bail&&i.bail!==!0)l(i.bail.ref);return[...new Set(u)]}function Xqt(i){let t=new Set(i.map((c)=>c.name)),u=new Map;for(let c of i)u.set(c.name,szl(c,t));let l=new Set,n=new Set;function f(c,$){if(n.has(c))return[...$,c];if(l.has(c))return null;l.add(c),n.add(c);let d=u.get(c)||[];for(let _ of d){let g=f(_,[...$,c]);if(g)return g}return n.delete(c),null}for(let c of i){let $=f(c.name,[]);if($)return{isValid:!1,error:`Circular dependency detected: ${$.join(" -> ")}`}}return{isValid:!0}}var hHi,Lzl,IUn,Czl,ezl,Mzl,yk,xqt,EO,qzl,Dqt,Vzl,BUn,azl,Oqt,mzl,ozl,EHi,QUn,yqt;var vO=w(()=>{X3();jd();hHi=Ht.object({toolName:Ht.string().describe("Name of the tool to invoke on that connection"),transformCode:Ht.string().optional().describe("Pure TypeScript function for data transformation of the tool call result. Must be a TypeScript file that declares the Output interface and exports a default function: `interface Output { ... } export default async function(stepInput): Output { ... }`\n The stepInput will match with the tool call outputSchema. If transformCode is not provided, the tool call result will be used as the step output.\n Providing an transformCode is recommended because it both allows you to transform the data and validate it against a JSON Schema - tools are ephemeral and may return unexpected data.")}),Lzl=Ht.object({code:Ht.string().describe(`Pure TypeScript function for data transformation. Useful to merge data from multiple steps and transform it. Must be a TypeScript file that declares the Output interface and exports a default function: \`interface Output { ... } export default async function(stepInput): Output { ... }\`
105750
105751
  The stepInput is the resolved value of the references in the input field. Example:
105751
105752
  {
105752
105753
  "input": {
@@ -106866,7 +106867,7 @@ data:
106866
106867
  </head>`+i.slice(g)}return`<head>
106867
106868
  `+l+`
106868
106869
  </head>
106869
- `+i}function qdi(i){if(!i||i.length===0)return[];return i.filter((t)=>mE0.test(t))}function oE0(i){if(i.csp)return i.csp;let t=i.resourceCsp;if(!t)return r3u;let u=qdi(t.resourceDomains),l=qdi(t.connectDomains),n=qdi(t.frameDomains),f=qdi(t.baseUriDomains),c=u.length>0,$=l.length>0,d=n.length>0,_=f.length>0;if(!c&&!$&&!d&&!_)return r3u;let g=u.join(" ");return["default-src 'none'",c?`script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' ${g}`:"script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",c?`style-src 'unsafe-inline' ${g}`:"style-src 'unsafe-inline'",c?`img-src * data: blob: ${g}`:"img-src * data: blob:",c?`media-src * data: blob: ${g}`:"media-src * data: blob:",c?`font-src data: ${g}`:"font-src data:",$?`connect-src ${l.join(" ")}`:"connect-src 'none'",d?`frame-src ${n.join(" ")}`:"frame-src 'none'","worker-src blob:","form-action 'none'",_?`base-uri ${f.join(" ")}`:"base-uri 'none'"].join("; ")}var r3u,mE0;var x3u=w(()=>{r3u=["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("; ");mE0=/^https?:\/\/(\*\.)?[a-zA-Z0-9._-]+(:\d+)?\/?$/});function sE0(i){let t=i.lastFailureAt-i.firstFailureAt;return i.count>=ldu&&t>=ndu}class Xsi{options;kv=null;codec=lz.JSONCodec();constructor(i){this.options=i}async init(){let i=this.options.getJetStream();if(!i)return;this.kv=await i.views.kv(pE0,{storage:lz.StorageType.Memory,ttl:lz.nanos(fdu)})}async recordFailure(i){if(!this.kv)return ysi;let t=Date.now();for(let u=0;u<iv0;u++)try{let l=await this.kv.get(i);if(!(l&&l.operation!=="DEL"&&l.operation!=="PURGE"&&l.value?.length)){let $={count:1,firstFailureAt:t,lastFailureAt:t};return await this.kv.create(i,this.codec.encode($)),{count:$.count,shouldDisable:!1}}let f=this.codec.decode(l.value),c={count:f.count+1,firstFailureAt:f.firstFailureAt,lastFailureAt:t};return await this.kv.update(i,this.codec.encode(c),l.revision),{count:c.count,shouldDisable:sE0(c)}}catch{}return ysi}async recordSuccess(i){if(!this.kv)return;try{await this.kv.delete(i)}catch{}}teardown(){this.kv=null}}class rV{async recordFailure(){return ysi}async recordSuccess(){}teardown(){}}function Nsi(i){D3u=i??new rV}function Jsi(){return D3u}var lz,ysi,pE0="DECOCMS_CONN_CIRCUIT",iv0=5,D3u;var Usi=w(()=>{lz=z(n3(),1),ysi={count:0,shouldDisable:!1};D3u=new rV});function O3u(i){if(!i)return{decision:"skip"};if(i.startsWith("notifications/"))return{decision:"skip"};if(uv0.has(i))return{decision:"skip"};let t=tv0[i];if(t)return{decision:"skip-if-list-cached",listType:t};return{decision:"probe"}}async function y3u(i){if(i.method!=="POST")return;let t=i.headers.get("content-length");if(t&&Number(t)>lv0)return;try{let u=await i.clone().json(),n=(Array.isArray(u)?u[0]:u)?.method;return typeof n==="string"?n:void 0}catch{return}}var tv0,uv0,lv0=64000;var X3u=w(()=>{tv0={"tools/list":"tools","resources/list":"resources","prompts/list":"prompts"},uv0=new Set(["ping"])});import{SpanStatusCode as Vdi}from"@opentelemetry/api";async function adi(i,t){let u=i.get("meshContext");try{let l=i.req.header("x-org-id"),n=i.req.header("x-org-slug"),f=l?l:n?await u.db.selectFrom("organization").select("id").where("slug","=",n).executeTakeFirst().then((v)=>v?.id):null,c=t?t:f?xx(f):null;if(!c)return i.json({error:"Agent ID or organization ID is required"},400);let $=await u.tracer.startActiveSpan("studio.virtual_mcp.lookup",{attributes:{"virtual_mcp.id":c}},async(v)=>{try{let r=await u.storage.virtualMcps.findById(c,f??void 0);return v.setStatus({code:Vdi.OK}),r}catch(r){throw v.setStatus({code:Vdi.ERROR,message:r.message}),v.recordException(r),r}finally{v.end()}});if(!$)return i.json({error:"Agent not found"},404);if(f&&$.organization_id!==f)return i.json({error:"Agent not found"},404);if($.status!=="active")return i.json({error:`Agent is inactive: ${$.id??"Decopilot"}`},503);if(u.organization?.id&&$.organization_id!==u.organization.id)return i.json({error:"Forbidden: Agent does not belong to your organization"},403);u.connectionId=$.id??void 0;let d=await u.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",$.organization_id).executeTakeFirst();if(d)u.organization={id:d.id,slug:d.slug,name:d.name};let _=await u.tracer.startActiveSpan("studio.virtual_mcp.create_client",{attributes:{"virtual_mcp.id":$.id??"decopilot"}},async(v)=>{try{let r=await $2($,u,"passthrough");return v.setStatus({code:Vdi.OK}),r}catch(r){throw v.setStatus({code:Vdi.ERROR,message:r.message}),v.recordException(r),r}finally{v.end()}}),g={name:$.id??"Decopilot",version:"1.0.0",title:$.title??void 0,description:$.description??void 0,icons:$.icon?[{src:$.icon}]:void 0},h=D3(_,g,{capabilities:{tools:{},resources:{},prompts:{}},instructions:typeof $.metadata?.instructions==="string"?$.metadata.instructions:void 0,toolCallTimeoutMs:$S}),E=new Z6({enableJsonResponse:i.req.header("Accept")?.includes("application/json")??!1});return await h.connect(E),await w2(h,E,i.req.raw,`virtual-mcp:${$.id??"decopilot"}`,{onClose:()=>_.close()})}catch(l){let n=l;return console.error("[virtual-mcp] Error handling virtual MCP request:",n),i.json({error:"Internal server error",message:n.message},500)}}var mdi=()=>{let i=new St;return i.all("/gateway/:virtualMcpId?",async(t)=>{let u=t.req.param("virtualMcpId")||t.req.header("x-virtual-mcp-id");return adi(t,u)}),i.all("/virtual-mcp/:virtualMcpId?",async(t)=>{let u=t.req.param("virtualMcpId")||t.req.header("x-virtual-mcp-id");return adi(t,u)}),i};var odi=w(()=>{zl();uz();nn();qS();vV()});import{SpanStatusCode as sdi}from"@opentelemetry/api";var N3u=(i,t)=>{if(i instanceof _S)return t.header("Retry-After",String(Math.ceil(i.cooldownRemainingMs/1000))),t.json({error:i.message},503);if(i.message.includes("not found"))return t.json({error:i.message},404);if(i.message.includes("does not belong to the active organization"))return t.json({error:"Connection not found"},404);if(i.message.includes("inactive"))return t.json({error:i.message},503);return t.json({error:"Internal server error",message:i.message},500)},pdi=()=>{let i=new St;return i.all("/",async(t)=>{return adi(t,void 0)}),i.get("/:connectionId/ui-resource",async(t)=>{let u=t.get("meshContext"),l=t.req.param("connectionId"),n=t.req.query("uri");if(!n)return t.json({error:"uri query param is required"},400);if(!u.organization?.id)return t.json({error:"Organization context is required"},403);let f=await u.storage.connections.findById(l,u.organization.id);if(!f||f.organization_id!==u.organization.id)return t.json({error:"Connection not found"},404);let c=w5(f,u,!1,bf()??void 0),$,d;try{let v=(await c.readResource({uri:n})).contents?.[0];$=v?.text,d=v?._meta?.ui?.csp}catch(E){return t.json({error:E.message},502)}finally{await c.close().catch(()=>{})}if(typeof $!=="string")return t.json({error:"Resource has no text content"},404);let _=w3u($,{resourceCsp:d}),g=`"${Bun.hash(_).toString(36)}"`,h="private, no-cache";if(t.req.header("if-none-match")===g)return new Response(null,{status:304,headers:{ETag:g,"Cache-Control":h}});return new Response(_,{headers:{"Content-Type":"text/html; charset=utf-8",ETag:g,"Cache-Control":h}})}),i.all("/:connectionId",async(t)=>{let u=t.req.param("connectionId"),l=t.get("meshContext");if(u.endsWith("_self")){let n=u.slice(0,-5);if(!l.organization||l.organization.id!==n)return t.json({error:"Connection not found"},404);let f=await nz(l),c=new Z6({enableJsonResponse:t.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await f.connect(c),i7.run(l,()=>w2(f,c,t.req.raw,`mcp:self:${u}`))}try{try{if(!l.organization?.id)return t.json({error:"Organization context is required"},403);let n=await l.tracer.startActiveSpan("studio.connection.lookup",{attributes:{"connection.id":u}},async(E)=>{d6(t,"mcp.find_connection");try{let v=await l.storage.connections.findById(u,l.organization.id);return E.setStatus({code:sdi.OK}),v}catch(v){throw E.setStatus({code:sdi.ERROR,message:v.message}),E.recordException(v),v}finally{C_(t,"mcp.find_connection"),E.end()}});if(!n)throw Error("Connection not found");if(n.organization_id!==l.organization.id)throw Error("Connection does not belong to the active organization");if(n.status!=="active")throw Error(`Connection inactive: ${n.status}`);let f=await y3u(t.req.raw),{decision:c,listType:$}=O3u(f),d=c==="probe";if(c==="skip-if-list-cached"&&$){let E=bf();d=E?await E.get($,u)===null:!0}if(n.connection_url&&d)n$i(u),await l.tracer.startActiveSpan("studio.connection.handshake",{attributes:{"connection.id":u,"connection.url":n.connection_url}},async(E)=>{d6(t,"mcp.client_handshake");try{await ld(n,l,!1),f$i(u),Jsi().recordSuccess(u),E.setStatus({code:sdi.OK})}catch(v){throw E.setStatus({code:sdi.ERROR,message:v.message}),E.recordException(v),v}finally{C_(t,"mcp.client_handshake"),E.end()}});d6(t,"mcp.create_server");let _=Smi(n,l,!1);C_(t,"mcp.create_server");let g=new Z6({enableJsonResponse:t.req.raw.headers.get("Accept")?.includes("application/json")??!1});d6(t,"mcp.server_connect"),await _.connect(g),C_(t,"mcp.server_connect"),d6(t,"mcp.handle_request");let h=await w2(_,g,t.req.raw,`mcp:${u}`);return C_(t,"mcp.handle_request"),h}catch(n){if(n instanceof _S)throw n;let f=await l.storage.connections.findById(u,l.organization?.id);if(f?.connection_url){let c=await Zmi({error:n,reqUrl:new URL(t.req.raw.url),connectionId:u,connectionUrl:f.connection_url,headers:{},orgSlug:l.organization?.slug});if(c)return c;c$i(u);let{shouldDisable:$}=await Jsi().recordFailure(u);if($&&f.status==="active")await l.storage.connections.update(u,{status:"error"}),console.warn("[proxy] auto-disabled connection after sustained failures",{connectionId:u,org:l.organization?.slug,error:n.message})}throw n}}catch(n){return N3u(n,t)}}),i.all("/:connectionId/call-tool/:toolName",async(t)=>{let u=t.req.param("connectionId"),l=t.req.param("toolName"),n=t.get("meshContext");try{let f=await n.storage.connections.findById(u,n.organization?.id);if(!f)return t.json({error:"Connection not found"},404);let $=await(await ld(f,n,!1)).callTool({name:l,arguments:await t.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(f){let c=await n.storage.connections.findById(u,n.organization?.id);if(c?.connection_url){let $=await Zmi({error:f,reqUrl:new URL(t.req.raw.url),connectionId:u,connectionUrl:c.connection_url,headers:{},orgSlug:n.organization?.slug});if($)return $}return N3u(f,t)}}),i};var i_i=w(()=>{VS();uz();nn();oLi();aS();vV();qq();q_();BM();x3u();kqi();Usi();X3u();odi();h$i()});async function K5(i,t,u,l){if(t.type!=="event"||!t.connection_id)return{success:!0};let n=await i.storage.connections.findById(t.connection_id);if(!n)return{success:!0};let f=i.organization?.id,c=i.organization?.slug;try{let $=await ld(n,i,!0),d=Pei.forClient(QM($)),_,g,h;if(u&&l&&f){let y=await l.generateTokenPair();g=y.plaintext,h=y.hash,_=c?`${i.baseUrl}/api/${c}/trigger-callback`:`${i.baseUrl}/api/trigger-callback`}let E=5000,v=!1,r=new Promise((y,X)=>setTimeout(()=>{v=!0,X(Error("TRIGGER_CONFIGURE timeout"))},E)),x;try{x=await Promise.race([d.TRIGGER_CONFIGURE({type:t.event_type,params:JSON.parse(t.params??"{}"),enabled:u,callbackUrl:_,callbackToken:g}),r])}catch(y){if(v&&u&&l&&f&&h)await l.persistTokenHash(f,t.connection_id,h);return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE threw on connection=${t.connection_id} type=${t.event_type}:`,y),{success:!1,error:String(y)}}let O=x;if(!O||O.success!==!0)return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE did not return success=true on connection=${t.connection_id} type=${t.event_type}. Raw payload:`,JSON.stringify(x)),{success:!1,error:`TRIGGER_CONFIGURE did not return success=true (got ${JSON.stringify(x)})`};try{if(u&&l&&f&&h)await l.persistTokenHash(f,t.connection_id,h);if(!u&&l&&f)await l.deleteByConnection(t.connection_id,f)}catch(y){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",y)}return{success:!0}}catch($){return{success:!1,error:String($)}}}var wV=w(()=>{VS();i_i();Aei()});import{z as O1}from"zod";var Tsi;var J3u=w(()=>{py();Vi();g2();wV();Tsi=li({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:O1.object({id:O1.string(),name:O1.string().min(1).max(255).optional(),active:O1.boolean().optional(),messages:O1.union([O1.string(),O1.array(O1.looseObject({id:O1.string().optional(),role:O1.enum(["user","assistant","system"]),parts:O1.array(O1.record(O1.string(),O1.unknown())),metadata:O1.unknown().optional()}))]).optional(),models:O1.object({tier:Gdi,modelId:O1.string().optional(),credentialId:O1.string().optional()}).loose().optional(),tools:O1.array(O1.string()).nullable().optional(),maxAgentSteps:O1.number().int().min(1).max(100).nullable().optional(),temperature:O1.number().optional()}),outputSchema:O1.object({id:O1.string(),name:O1.string(),active:O1.boolean(),updated_at:O1.string()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findById(i.id,u.id);if(!l)throw Error("Automation not found");let n={};if(i.name!==void 0)n.name=i.name;if(i.active!==void 0)n.active=i.active;if(i.messages!==void 0){let c=bdi(i.messages);n.messages=JSON.stringify(c)}if(i.models!==void 0)n.models=JSON.stringify(i.models);if(i.tools!==void 0)n.tools=i.tools===null?null:JSON.stringify(i.tools);if(i.temperature!==void 0)n.temperature=i.temperature;if(i.maxAgentSteps!==void 0)n.max_agent_steps=i.maxAgentSteps;let f=await t.storage.automations.update(i.id,u.id,n);if(i.active!==void 0&&i.active!==l.active){let c=await t.storage.automations.listTriggers(f.id),$=c.filter((d)=>d.type==="event");await Promise.allSettled($.map(async(d)=>{let _=await K5(t,d,i.active);if(!_.success)console.warn(`Failed to configure trigger ${d.id}: ${_.error}`)})),await _3u(c,i.active)}return{id:f.id,name:f.name,active:f.active,updated_at:f.updated_at}}})});import{z as t_i}from"zod";var Fsi;var U3u=w(()=>{py();T1();Vi();wV();Fsi=li({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:t_i.object({id:t_i.string()}),outputSchema:t_i.object({success:t_i.boolean()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);if(await t.access.check(),!await t.storage.automations.findById(i.id,u.id))throw Error("Automation not found");let n=await t.storage.automations.listTriggers(i.id),f=n.filter((d)=>d.type==="event");await Promise.allSettled(f.map(async(d)=>{let _=await K5(t,d,!1);if(!_.success)console.warn(`Failed to disable trigger ${d.id}: ${_.error}`)}));let{success:c}=await t.storage.automations.delete(i.id,u.id);await g3u(n);let $=yu(t);if($)Ju.capture({distinctId:$,event:"automation_deleted",groups:{organization:u.id},properties:{organization_id:u.id,automation_id:i.id,trigger_count:n.length}});return{success:c}}})});function fz(i){return`webhook_${i}`}function u_i(i,t,u){if(!t)throw Error("Cannot build webhook URL: organization slug missing from request context");return`${i}/api/${t}/webhooks/${u}`}import{z as k4}from"zod";var T3u=300000,nv0=10,Zsi;var F3u=w(()=>{Esi();py();gV();Vi();wV();Zsi=li({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:k4.object({automation_id:k4.string(),type:k4.enum(["cron","event","webhook"]),cron_expression:k4.string().optional(),connection_id:k4.string().optional(),event_type:k4.string().optional(),params:k4.record(k4.string(),k4.string()).optional()}),outputSchema:k4.object({id:k4.string(),automation_id:k4.string(),type:k4.enum(["cron","event","webhook"]),created_at:k4.string(),webhook:k4.object({url:k4.string(),token:k4.string()}).nullable().optional()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findById(i.automation_id,u.id);if(!l)throw Error("Automation not found");if(i.type==="cron"){if(!i.cron_expression)throw Error("cron_expression is required for cron triggers");let d=new z5(i.cron_expression,{timezone:"UTC"}).nextRuns(nv0);if(d.length===0)throw Error("Cron expression has no future runs");let _=1/0;for(let g=1;g<d.length;g++){let h=d[g].getTime()-d[g-1].getTime();if(h<_)_=h}if(d.length>=2&&Number.isFinite(_)&&_<T3u){let g=T3u/1000;throw Error(`Cron fires too frequently \u2014 minimum interval is ${g}s between runs (observed ${_/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 t.storage.connections.findById(i.connection_id,u.id))throw Error("Connection not found");let d={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:""},_=await K5(t,d,!0,t.storage.triggerCallbackTokens);if(!_.success)throw Error(`Failed to configure trigger on connection: ${_.error}`)}let n=i.type==="cron"&&i.cron_expression?Ldi(i.cron_expression,new Date):null,f=await t.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:n?.toISOString()??null}),c=null;if(i.type==="webhook")try{let $=await t.boundAuth.apiKey.create({name:`webhook:${l.name}:${f.id.slice(0,8)}`,permissions:{[fz(f.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:l.id,trigger_id:f.id}});await t.storage.automations.setTriggerApiKeyId(f.id,$.id),c={url:u_i(t.baseUrl,u.slug,f.id),token:$.key}}catch($){await t.storage.automations.removeTrigger(f.id,f.automation_id);let d=$ instanceof Error?$.message:String($);throw Error(`Failed to mint webhook token: ${d}`)}return await Mdi(f,l),{id:f.id,automation_id:f.automation_id,type:f.type,created_at:f.created_at,webhook:c}}})});import{z as l_i}from"zod";var Isi;var Z3u=w(()=>{py();Vi();wV();Isi=li({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:l_i.object({trigger_id:l_i.string()}),outputSchema:l_i.object({success:l_i.boolean()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findTriggerById(i.trigger_id);if(!l)throw Error("Trigger not found");if(!await t.storage.automations.findById(l.automation_id,u.id))throw Error("Automation not found");if(l.type==="event"){let c=await K5(t,l,!1,t.storage.triggerCallbackTokens);if(!c.success)console.warn(`Failed to disable trigger ${l.id}: ${c.error}`)}let{success:f}=await t.storage.automations.removeTrigger(l.id,l.automation_id);if(l.type==="cron")await Dsi(l.id);if(l.type==="webhook"&&l.api_key_id)try{await t.boundAuth.apiKey.delete(l.api_key_id)}catch(c){console.warn(`[trigger-remove] failed to delete api key ${l.api_key_id} for trigger ${l.id}:`,c instanceof Error?c.message:c)}return{success:f}}})});import{z as cz}from"zod";var Bsi;var I3u=w(()=>{Vi();Bsi=li({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:cz.object({trigger_id:cz.string()}),outputSchema:cz.object({trigger_id:cz.string(),url:cz.string(),token:cz.string()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findTriggerById(i.trigger_id);if(!l)throw Error("Trigger not found");if(l.type!=="webhook")throw Error("Trigger is not a webhook trigger");let n=await t.storage.automations.findById(l.automation_id,u.id);if(!n)throw Error("Automation not found");let f=l.api_key_id,c=await t.boundAuth.apiKey.create({name:`webhook:${n.name}:${l.id.slice(0,8)}`,permissions:{[fz(l.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:n.id,trigger_id:l.id}});if(await t.storage.automations.setTriggerApiKeyId(l.id,c.id),f)try{await t.boundAuth.apiKey.delete(f)}catch($){console.warn(`[trigger-rotate] failed to delete old key ${f} for trigger ${l.id}:`,$ instanceof Error?$.message:$)}return{trigger_id:l.id,url:u_i(t.baseUrl,u.slug,l.id),token:c.key}}})});import{z as $z}from"zod";var Qsi;var B3u=w(()=>{T1();Vi();Qsi=li({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:$z.object({id:$z.string()}),outputSchema:$z.object({threadId:$z.string().optional(),error:$z.string().optional(),skipped:$z.string().optional()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);if(await t.access.check(),!t.automationRunner)throw Error("Automation runner not available");let l=yu(t);if(!l)throw Error("User ID not available");let n=await t.automationRunner(i.id,u.id,l);if(Ju.capture({distinctId:l,event:"automation_run",groups:{organization:u.id},properties:{organization_id:u.id,automation_id:i.id,thread_id:"taskId"in n?n.taskId:void 0,status:"skipped"in n?"skipped":("error"in n)?"error":"started",skip_reason:"skipped"in n?n.skipped:void 0,error_message:"error"in n?n.error:void 0}}),"skipped"in n)return{skipped:n.skipped};if("error"in n)return{threadId:n.taskId,error:n.error};return{threadId:n.taskId}}})});import{z as l4}from"zod";var fv0=500,Ysi;var Q3u=w(()=>{pf();Vi();Ysi=li({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:l4.object({automation_id:l4.string(),startDate:l4.string().datetime().optional().describe("Filter runs at or after this ISO timestamp"),endDate:l4.string().datetime().optional().describe("Filter runs at or before this ISO timestamp")}),outputSchema:l4.object({runs:l4.object({total:l4.number(),completed:l4.number(),failed:l4.number(),inProgress:l4.number()}),usage:l4.object({calls:l4.number(),inputTokens:l4.number(),outputTokens:l4.number(),totalTokens:l4.number(),costUsd:l4.number(),sampledRuns:l4.number(),truncated:l4.boolean()})}),handler:async(i,t)=>{Ui(t);let u=Ei(t);if(await t.access.check(),await Sg(),!await t.storage.automations.findById(i.automation_id,u.id))throw Error("Automation not found");let n=await t.storage.automations.getRunStats(i.automation_id,u.id,{startDate:i.startDate,endDate:i.endDate}),f=await t.storage.automations.listRunThreadIds(i.automation_id,u.id,{startDate:i.startDate,endDate:i.endDate,limit:fv0}),c={calls:0,inputTokens:0,outputTokens:0,totalTokens:0,costUsd:0,sampledRuns:f.length,truncated:n.total>f.length};if(f.length>0){let $=await t.storage.monitoring.queryThreadUsage({organizationId:u.id,connectionId:"decopilot",threadIds:f,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0});for(let d of $)c.calls+=d.calls,c.inputTokens+=d.inputTokens,c.outputTokens+=d.outputTokens,c.totalTokens+=d.totalTokens,c.costUsd+=d.costUsd}return{runs:n,usage:c}}})});var Y3u=w(()=>{Vru();aru();mru();J3u();U3u();F3u();Z3u();I3u();B3u();Q3u()});import{z as H5}from"zod";var $v0,dv0,Psi;var P3u=w(()=>{Vi();$v0=H5.object({id:H5.string().min(1)}),dv0=H5.object({user:H5.object({id:H5.string(),name:H5.string(),email:H5.string(),image:H5.string().nullable()}).nullable()}),Psi=li({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:$v0,outputSchema:dv0,handler:async(i,t)=>{await t.access.check(),Ui(t);let u=yu(t);if(!u)throw Error("Authentication required");let l=await t.storage.users.findById(i.id,u);if(!l)return{user:null};return{user:{id:l.id,name:l.name,email:l.email,image:l.image??null}}}})});var A3u=w(()=>{P3u()});import dg from"zod";var Asi;var G3u=w(()=>{Vi();c2();Asi=li({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:dg.object({}),outputSchema:dg.object({providers:dg.array(dg.object({id:dg.string(),name:dg.string(),description:dg.string(),logo:dg.string().optional(),supportedMethods:dg.array(dg.enum(["api-key","oauth-pkce"])),supportsTopUp:dg.boolean().optional(),supportsCredits:dg.boolean().optional(),supportsProvision:dg.boolean().optional()}))}),handler:async(i,t)=>{return Ui(t),Ei(t),await t.access.check(),{providers:Object.values(G4()).filter((l)=>!!l).map((l)=>({...l.info,supportedMethods:l.supportedMethods,supportsTopUp:!!l.getTopUpUrl,supportsCredits:!!l.getCreditsBalance,supportsProvision:!!l.provisionKey}))}}})});function gv0(i){if(!i)return;if(!("models"in i))return;return i.models??void 0}function W3u(i,t){if(!i)return!0;if(i.includes("*:*"))return!0;return i.some((u)=>u.startsWith(`${t}:`))}function R5(i,t,u){if(!i)return!0;return i.includes("*:*")||i.includes(`${t}:*`)||i.includes(`${t}:${u}`)}function n_i(i,t){if(i===void 0)return t;let u=t;if(u.image&&!R5(i,u.image.credentialId,u.image.id)){let{image:l,...n}=u;u=n}if(u.deepResearch&&!R5(i,u.deepResearch.credentialId,u.deepResearch.id)){let{deepResearch:l,...n}=u;u=n}return u}function k3u(i){if(!i)return{allowAll:!0,models:{}};if(i.includes("*:*"))return{allowAll:!0,models:{}};let t={};for(let u of i){let l=u.indexOf(":");if(l===-1)continue;let n=u.slice(0,l),f=u.slice(l+1);if(!t[n])t[n]=[];t[n].push(f)}return{allowAll:!1,models:t}}async function x2(i,t,u){if(!u||Zv.includes(u))return;let l=await i.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",t).where("role","=",u).executeTakeFirst();if(!l?.permission)return;try{let n=JSON.parse(l.permission);return gv0(n)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${u}`),[]}}var xV=w(()=>{Jy()});var Gsi;var j3u=w(()=>{Gsi=[{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}]});var S3u=w(()=>{j3u()});var Wsi;var z3u=w(()=>{Wsi=[{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 b3u=w(()=>{z3u()});import Pc from"zod";var ksi;var K3u=w(()=>{Vi();xV();S3u();b3u();ksi=li({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:Pc.object({keyId:Pc.string().describe("The provider key ID to use")}),outputSchema:Pc.object({models:Pc.array(Pc.object({providerId:Pc.string(),modelId:Pc.string(),title:Pc.string(),description:Pc.string().nullish(),logo:Pc.string().nullish(),capabilities:Pc.array(Pc.string()),limits:Pc.object({contextWindow:Pc.coerce.number(),maxOutputTokens:Pc.coerce.number().nullable()}).nullish(),costs:Pc.object({input:Pc.coerce.number(),output:Pc.coerce.number()}).nullish(),asyncResearch:Pc.boolean().optional()}))}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.findById(i.keyId,u.id).catch(()=>null);if(l?.providerId==="claude-code")return{models:Gsi};if(l?.providerId==="codex")return{models:Wsi};let[n,f]=await Promise.all([t.aiProviders.listModels(i.keyId,u.id),x2(t.db,u.id,t.auth.user?.role)]);return{models:n.filter(($)=>R5(f,i.keyId,$.modelId))}}})});import D2 from"zod";var jsi;var H3u=w(()=>{Vi();c2();jsi=li({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:D2.object({}),outputSchema:D2.object({providers:D2.array(D2.object({id:D2.string(),name:D2.string(),description:D2.string(),logo:D2.string().optional(),keyCount:D2.number()}))}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.list({organizationId:u.id}),n=new Map;for(let c of l)n.set(c.providerId,(n.get(c.providerId)??0)+1);return{providers:[...n.entries()].flatMap(([c,$])=>{let _=G4()[c];if(!_)return console.warn(`AI provider "${c}" has stored keys but is not in the registry; skipping.`),[];return[{..._.info,keyCount:$}]})}}})});var L5=w(()=>{zl()});import sh from"zod";var t7,Ssi;var DV=w(()=>{T1();Vi();L5();t7=sh.object({id:sh.string(),providerId:sh.string(),label:sh.string(),presetId:sh.string().nullable(),createdAt:sh.string()}),Ssi=li({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:sh.object({providerId:sh.enum(U4),label:sh.string().min(1).max(100),apiKey:sh.string().min(1),presetId:sh.string().min(1).max(64).optional()}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.create({providerId:i.providerId,label:i.label,apiKey:i.apiKey,organizationId:u.id,createdBy:t.auth.user.id,presetId:i.presetId??null});return Ju.capture({distinctId:t.auth.user.id,event:"ai_provider_key_created",groups:{organization:u.id},properties:{organization_id:u.id,provider_id:l.providerId,preset_id:l.presetId,key_id:l.id,label:l.label}}),{id:l.id,providerId:l.providerId,label:l.label,presetId:l.presetId,createdAt:l.createdAt}}})});import f_i from"zod";var OV=(i,t)=>i&&i.keyId===t?null:i,hv0=(i,t)=>{let u={tiers:{fast:OV(i.tiers.fast,t),smart:OV(i.tiers.smart,t),thinking:OV(i.tiers.thinking,t),image:OV(i.tiers.image,t),web_research:OV(i.tiers.web_research,t)}},l=u.tiers.fast!==i.tiers.fast||u.tiers.smart!==i.tiers.smart||u.tiers.thinking!==i.tiers.thinking||u.tiers.image!==i.tiers.image||u.tiers.web_research!==i.tiers.web_research;return{config:u,changed:l}},zsi;var R3u=w(()=>{T1();Vi();zsi=li({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:f_i.object({keyId:f_i.string().describe("The provider key ID to delete")}),outputSchema:f_i.object({success:f_i.boolean()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.organizationSettings.get(u.id);if(l?.simple_mode){let{config:n,changed:f}=hv0(l.simple_mode,i.keyId);if(f)await t.storage.organizationSettings.upsert(u.id,{simple_mode:n})}return await t.storage.aiProviderKeys.delete(i.keyId,u.id),Ju.capture({distinctId:t.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:u.id},properties:{organization_id:u.id,key_id:i.keyId}}),{success:!0}}})});import c_i from"zod";var bsi;var L3u=w(()=>{Vi();DV();bsi=li({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:c_i.object({keyId:c_i.string(),label:c_i.string().min(1).max(100).optional(),apiKey:c_i.string().min(1).optional()}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.updateKey(i.keyId,u.id,{label:i.label,apiKey:i.apiKey});return{id:l.id,providerId:l.providerId,label:l.label,presetId:l.presetId,createdAt:l.createdAt}}})});import dz from"zod";var Ksi;var C3u=w(()=>{Vi();Ksi=li({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:dz.object({keyId:dz.string()}),outputSchema:dz.object({label:dz.string(),maskedKey:dz.string(),baseUrl:dz.string().optional()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),t.storage.aiProviderKeys.getPreview(i.keyId,u.id)}})});import ph from"zod";var Hsi;var e3u=w(()=>{Vi();L5();xV();Hsi=li({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:ph.object({providerId:ph.enum(U4).optional()}),outputSchema:ph.object({keys:ph.array(ph.object({id:ph.string(),providerId:ph.string(),label:ph.string(),presetId:ph.string().nullable(),createdBy:ph.string(),createdAt:ph.string()}))}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let[l,n]=await Promise.all([t.storage.aiProviderKeys.list({organizationId:u.id,providerId:i.providerId}),x2(t.db,u.id,t.auth.user?.role)]);return{keys:l.filter(($)=>W3u(n,$.id)).map(({organizationId:$,...d})=>d)}}})});import{createHash as Ev0,randomBytes as vv0}from"crypto";function M3u(){return vv0(32).toString("base64url")}function q3u(i){return Ev0("sha256").update(i).digest("base64url")}var V3u=()=>{};import _z from"zod";var Rsi;var a3u=w(()=>{Vi();L5();c2();V3u();U0();Rsi=li({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:_z.object({providerId:_z.enum(U4),callbackUrl:_z.string().url().refine((i)=>{let t=Qt(),u=t.baseUrl??`http://localhost:${t.port}`;return new URL(i).origin===new URL(u).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:_z.object({url:_z.string(),stateToken:_z.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=G4()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.supportedMethods.includes("oauth-pkce")||!l.getOAuthUrl)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let n=M3u(),f=q3u(n),c=await t.storage.oauthPkceStates.create(n,u.id,t.auth.user.id),$=new URL(i.callbackUrl);$.searchParams.set("state",c);let d={callbackUrl:$.toString(),codeChallenge:f,codeChallengeMethod:"S256",organizationId:u.id};return{url:l.getOAuthUrl(d),stateToken:c}}})});import yV from"zod";var Lsi;var m3u=w(()=>{Vi();L5();c2();DV();Lsi=li({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:yV.object({providerId:yV.enum(U4),code:yV.string(),stateToken:yV.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:yV.string().min(1).max(100)}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=G4()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.supportedMethods.includes("oauth-pkce")||!l.exchangeOAuthCode)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let n=yu(t);if(!n)throw Error("Unable to determine user ID");let f=await t.storage.oauthPkceStates.consume(i.stateToken,u.id,n),{apiKey:c}=await l.exchangeOAuthCode({code:i.code,codeVerifier:f,codeChallengeMethod:"S256"}),$=await t.storage.aiProviderKeys.upsert({providerId:i.providerId,label:i.label,apiKey:c,organizationId:u.id,createdBy:n});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import o3u from"zod";var Csi;var s3u=w(()=>{Vi();L5();c2();qO();DV();Csi=li({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:o3u.object({providerId:o3u.enum(U4)}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=yu(t);if(!l)throw Error("Unable to determine user ID");let n=G4()[i.providerId];if(!n)throw Error(`Unknown provider: ${i.providerId}`);if(!n.provisionKey)throw Error(`Provider ${i.providerId} does not support key provisioning`);let f=await Kx(l),c=await n.provisionKey(f,u.id),$=await t.storage.aiProviderKeys.upsert({providerId:i.providerId,label:"Auto-provisioned",apiKey:c,organizationId:u.id,createdBy:l});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import gz from"zod";var esi;var p3u=w(()=>{Vi();L5();c2();qO();esi=li({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:gz.object({providerId:gz.enum(U4),amountCents:gz.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:gz.enum(["usd","brl"]).default("usd")}),outputSchema:gz.object({url:gz.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=yu(t);if(!l)throw Error("Unable to determine user ID");let n=G4()[i.providerId];if(!n)throw Error(`Unknown provider: ${i.providerId}`);if(!n.getTopUpUrl)throw Error(`Provider ${i.providerId} does not support credit top-ups`);let f=await Kx(l);return{url:await n.getTopUpUrl(f,u.id,i.amountCents,i.currency)}}})});import $_i from"zod";var Msi;var i2u=w(()=>{Vi();L5();c2();qO();Msi=li({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:$_i.object({providerId:$_i.enum(U4)}),outputSchema:$_i.object({balanceCents:$_i.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=yu(t);if(!l)throw Error("Unable to determine user ID");let n=G4()[i.providerId];if(!n)throw Error(`Unknown provider: ${i.providerId}`);if(!n.getCreditsBalance)throw Error(`Provider ${i.providerId} does not expose a credits balance`);let f=await Kx(l);return n.getCreditsBalance(f,u.id)}})});var t2u=w(()=>{G3u();K3u();H3u();DV();R3u();L3u();C3u();e3u();a3u();m3u();s3u();p3u();i2u()});import Kv from"zod";var d_i;var qsi=w(()=>{d_i=Kv.object({id:Kv.string(),scope:Kv.enum(["user","organization"]),userId:Kv.string().nullable(),name:Kv.string(),description:Kv.string().nullable(),createdBy:Kv.string(),createdAt:Kv.string(),updatedBy:Kv.string(),updatedAt:Kv.string()})});import XV from"zod";var Vsi;var u2u=w(()=>{Vi();qsi();Vsi=li({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:XV.object({scope:XV.enum(["user","organization"]),name:XV.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:XV.string().min(1),description:XV.string().max(500).optional()}),outputSchema:d_i,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=t.auth.user.id,n=i.scope==="user"?{kind:"user",userId:l}:{kind:"organization"};return await t.storage.secrets.create({organizationId:u.id,scope:n,name:i.name,value:i.value,description:i.description??null,createdBy:l})}})});import __i from"zod";var asi;var l2u=w(()=>{Vi();qsi();asi=li({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:__i.object({scope:__i.enum(["user","organization"]).optional()}),outputSchema:__i.object({secrets:__i.array(d_i)}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=t.auth.user.id,n=i.scope==="user"?{kind:"user",userId:l}:i.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await t.storage.secrets.list({organizationId:u.id,callerUserId:l,scope:n})}}})});var n2u=w(()=>{u2u();l2u()});import $d from"zod";function h_i(i){if(i==null)return null;let t=i.trim().replace(/^\/+/,"");if(t==="")return null;return t.endsWith("/")?t:`${t}/`}function E_i(i){if(i==null)return null;let t=i.trim().replace(/\/+$/,"");return t===""?null:t}var hz,g_i;var v_i=w(()=>{hz=$d.object({id:$d.string(),name:$d.string(),description:$d.string().nullable(),bucket:$d.string(),region:$d.string(),endpoint:$d.string().nullable(),forcePathStyle:$d.boolean(),prefix:$d.string().nullable(),publicUrlBase:$d.string().nullable(),createdBy:$d.string(),createdAt:$d.string(),updatedBy:$d.string(),updatedAt:$d.string()}),g_i=$d.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."})});import Hv from"zod";var msi;var f2u=w(()=>{Vi();v_i();msi=li({name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration scoped to the organization. The access key and secret key are encrypted at rest in the credential vault and never returned by any tool.",inputSchema:Hv.object({name:g_i,description:Hv.string().max(500).optional(),bucket:Hv.string().min(1).max(255),region:Hv.string().min(1).max(64),endpoint:Hv.string().url().optional(),forcePathStyle:Hv.boolean().optional(),prefix:Hv.string().max(512).optional(),publicUrlBase:Hv.string().url().optional(),accessKeyId:Hv.string().min(1),secretAccessKey:Hv.string().min(1)}),outputSchema:hz,handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),t.storage.orgFileConfigs.create({organizationId:u.id,name:i.name,description:i.description??null,bucket:i.bucket,region:i.region,endpoint:i.endpoint??null,forcePathStyle:i.forcePathStyle??!1,prefix:h_i(i.prefix),publicUrlBase:E_i(i.publicUrlBase),credentials:{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey},createdBy:t.auth.user.id})}})});import osi from"zod";var ssi;var c2u=w(()=>{Vi();v_i();ssi=li({name:"FILE_CONFIG_LIST",description:"List S3-compatible bucket configurations for the organization. Credentials are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:osi.object({}),outputSchema:osi.object({configs:osi.array(hz)}),handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),{configs:await t.storage.orgFileConfigs.list(u.id)}}})});import iE from"zod";var psi;var $2u=w(()=>{Vi();v_i();psi=li({name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration. Credentials can be rotated by providing both accessKeyId and secretAccessKey; omit them to leave existing credentials untouched.",inputSchema:iE.object({id:iE.string().min(1),name:g_i.optional(),description:iE.string().max(500).nullable().optional(),bucket:iE.string().min(1).max(255).optional(),region:iE.string().min(1).max(64).optional(),endpoint:iE.string().url().nullable().optional(),forcePathStyle:iE.boolean().optional(),prefix:iE.string().max(512).nullable().optional(),publicUrlBase:iE.string().url().nullable().optional(),accessKeyId:iE.string().min(1).optional(),secretAccessKey:iE.string().min(1).optional()}).refine((i)=>i.accessKeyId===void 0===(i.secretAccessKey===void 0),{message:"accessKeyId and secretAccessKey must be provided together when rotating credentials."}),outputSchema:hz,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=i.accessKeyId&&i.secretAccessKey?{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey}:void 0;return t.storage.orgFileConfigs.update({id:i.id,organizationId:u.id,name:i.name,description:i.description,bucket:i.bucket,region:i.region,endpoint:i.endpoint,forcePathStyle:i.forcePathStyle,prefix:i.prefix===void 0?void 0:h_i(i.prefix),publicUrlBase:i.publicUrlBase===void 0?void 0:E_i(i.publicUrlBase),credentials:l,updatedBy:t.auth.user.id})}})});import r_i from"zod";var ipi;var d2u=w(()=>{Vi();ipi=li({name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration by id.",inputSchema:r_i.object({id:r_i.string().min(1)}),outputSchema:r_i.object({success:r_i.literal(!0)}),handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),await t.storage.orgFileConfigs.delete(i.id,u.id),{success:!0}}})});function xv0(i){return new bc({region:i.info.region,endpoint:i.info.endpoint??void 0,forcePathStyle:i.info.forcePathStyle,credentials:{accessKeyId:i.credentials.accessKeyId,secretAccessKey:i.credentials.secretAccessKey},requestChecksumCalculation:"WHEN_REQUIRED",responseChecksumValidation:"WHEN_REQUIRED"})}function upi(i,t){if(i.publicUrlBase)return`${i.publicUrlBase}/${w_i(t)}`;if(i.endpoint)return`${i.endpoint.replace(/\/+$/,"")}/${i.bucket}/${w_i(t)}`;return i.forcePathStyle?`https://s3.${i.region}.amazonaws.com/${i.bucket}/${w_i(t)}`:`https://${i.bucket}.s3.${i.region}.amazonaws.com/${w_i(t)}`}function w_i(i){return i.split("/").map(encodeURIComponent).join("/")}async function _2u(i,t,u){return i.resolveById(t,u)}async function g2u(i){let t=xv0(i.ctx),u=Math.min(i.maxKeys??50,200),l=i.ctx.info.prefix??"",n=new Date,f=String(n.getUTCFullYear()),c=String(n.getUTCFullYear()-1),$=[`${l}${f}/`,`${l}${c}/`];if(i.cursor){let r=await t.send(new kg({Bucket:i.ctx.info.bucket,Prefix:l||void 0,MaxKeys:u,ContinuationToken:i.cursor}));return Dv0(r,i.ctx,u,!1,$)}let d=$,_=new Map;for(let r of d){if(_.size>=u)break;let x=await t.send(new kg({Bucket:i.ctx.info.bucket,Prefix:r,MaxKeys:u-_.size}));for(let O of x.Contents??[]){if(!O.Key||O.Key.endsWith("/")||_.has(O.Key))continue;_.set(O.Key,tpi(O,i.ctx))}}let g=Math.max(1,u-_.size),h=await t.send(new kg({Bucket:i.ctx.info.bucket,Prefix:l||void 0,MaxKeys:g}));for(let r of h.Contents??[]){if(_.size>=u)break;if(!r.Key||r.Key.endsWith("/")||_.has(r.Key))continue;if($.some((x)=>r.Key.startsWith(x)))continue;_.set(r.Key,tpi(r,i.ctx))}let E=h.IsTruncated?h.NextContinuationToken??null:null;return{items:Array.from(_.values()).sort(h2u),nextCursor:E}}function tpi(i,t){return{key:i.Key,size:i.Size??0,lastModified:i.LastModified?i.LastModified.toISOString():null,publicUrl:upi(t.info,i.Key)}}function h2u(i,t){if(!i.lastModified&&!t.lastModified)return 0;if(!i.lastModified)return 1;if(!t.lastModified)return-1;return t.lastModified.localeCompare(i.lastModified)}function Dv0(i,t,u,l,n=[]){let f=(i.Contents??[]).filter((c)=>c.Key&&!c.Key.endsWith("/")&&!n.some(($)=>c.Key.startsWith($))).slice(0,u).map((c)=>tpi(c,t));if(l)f.sort(h2u);return{items:f,nextCursor:i.IsTruncated?i.NextContinuationToken??null:null}}var lpi=w(()=>{mG()});import I6 from"zod";var npi;var E2u=w(()=>{Vi();lpi();npi=li({name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured S3 bucket (newest first). Returns public URLs computed from the config's publicUrlBase or the bucket's S3 host. Used by the picker dialog to let users select previously uploaded files.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:I6.object({configId:I6.string().min(1),cursor:I6.string().nullable().optional(),maxKeys:I6.number().int().min(1).max(200).optional()}),outputSchema:I6.object({items:I6.array(I6.object({key:I6.string(),size:I6.number(),lastModified:I6.string().nullable(),publicUrl:I6.string()})),nextCursor:I6.string().nullable()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await _2u(t.storage.orgFileConfigs,i.configId,u.id);return g2u({ctx:l,cursor:i.cursor,maxKeys:i.maxKeys})}})});var v2u=w(()=>{f2u();c2u();$2u();d2u();E2u()});import B6 from"zod";var r2u;var w2u=w(()=>{Vi();Ud();PLi();r2u=li({name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes (org/public/*) from their configured GitHub repos. Returns per-set written/deleted/unchanged counts.",inputSchema:B6.object({}),outputSchema:B6.object({results:B6.array(B6.union([B6.object({set:B6.string(),written:B6.number(),deleted:B6.number(),unchanged:B6.number()}),B6.object({set:B6.string(),error:B6.string()})]))}),handler:async(i,t)=>{return Ui(t),await t.access.check(),{results:await jst(t.db,{baseUrl:QE()})}}})});var x2u,D2u;var O2u=w(()=>{x2u=[{name:"agents-create",title:"Create Agents",description:"Build a new agent for a specific role or workflow.",text:`# Create agent
106870
+ `+i}function qdi(i){if(!i||i.length===0)return[];return i.filter((t)=>mE0.test(t))}function oE0(i){if(i.csp)return i.csp;let t=i.resourceCsp;if(!t)return r3u;let u=qdi(t.resourceDomains),l=qdi(t.connectDomains),n=qdi(t.frameDomains),f=qdi(t.baseUriDomains),c=u.length>0,$=l.length>0,d=n.length>0,_=f.length>0;if(!c&&!$&&!d&&!_)return r3u;let g=u.join(" ");return["default-src 'none'",c?`script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval' ${g}`:"script-src 'unsafe-inline' 'unsafe-eval' 'wasm-unsafe-eval'",c?`style-src 'unsafe-inline' ${g}`:"style-src 'unsafe-inline'",c?`img-src * data: blob: ${g}`:"img-src * data: blob:",c?`media-src * data: blob: ${g}`:"media-src * data: blob:",c?`font-src data: ${g}`:"font-src data:",$?`connect-src ${l.join(" ")}`:"connect-src 'none'",d?`frame-src ${n.join(" ")}`:"frame-src 'none'","worker-src blob:","form-action 'none'",_?`base-uri ${f.join(" ")}`:"base-uri 'none'"].join("; ")}var r3u,mE0;var x3u=w(()=>{r3u=["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("; ");mE0=/^https?:\/\/(\*\.)?[a-zA-Z0-9._-]+(:\d+)?\/?$/});function sE0(i){let t=i.lastFailureAt-i.firstFailureAt;return i.count>=ldu&&t>=ndu}class Xsi{options;kv=null;codec=lz.JSONCodec();constructor(i){this.options=i}async init(){let i=this.options.getJetStream();if(!i)return;this.kv=await i.views.kv(pE0,{storage:lz.StorageType.Memory,ttl:lz.nanos(fdu)})}async recordFailure(i){if(!this.kv)return ysi;let t=Date.now();for(let u=0;u<iv0;u++)try{let l=await this.kv.get(i);if(!(l&&l.operation!=="DEL"&&l.operation!=="PURGE"&&l.value?.length)){let $={count:1,firstFailureAt:t,lastFailureAt:t};return await this.kv.create(i,this.codec.encode($)),{count:$.count,shouldDisable:!1}}let f=this.codec.decode(l.value),c={count:f.count+1,firstFailureAt:f.firstFailureAt,lastFailureAt:t};return await this.kv.update(i,this.codec.encode(c),l.revision),{count:c.count,shouldDisable:sE0(c)}}catch{}return ysi}async recordSuccess(i){if(!this.kv)return;try{await this.kv.delete(i)}catch{}}teardown(){this.kv=null}}class rV{async recordFailure(){return ysi}async recordSuccess(){}teardown(){}}function Nsi(i){D3u=i??new rV}function Jsi(){return D3u}var lz,ysi,pE0="DECOCMS_CONN_CIRCUIT",iv0=5,D3u;var Usi=w(()=>{lz=z(n3(),1),ysi={count:0,shouldDisable:!1};D3u=new rV});function O3u(i){if(!i)return{decision:"skip"};if(i.startsWith("notifications/"))return{decision:"skip"};if(uv0.has(i))return{decision:"skip"};let t=tv0[i];if(t)return{decision:"skip-if-list-cached",listType:t};return{decision:"probe"}}async function y3u(i){if(i.method!=="POST")return;let t=i.headers.get("content-length");if(t&&Number(t)>lv0)return;try{let u=await i.clone().json(),n=(Array.isArray(u)?u[0]:u)?.method;return typeof n==="string"?n:void 0}catch{return}}var tv0,uv0,lv0=64000;var X3u=w(()=>{tv0={"tools/list":"tools","resources/list":"resources","prompts/list":"prompts"},uv0=new Set(["ping"])});import{SpanStatusCode as Vdi}from"@opentelemetry/api";async function adi(i,t){let u=i.get("meshContext");try{let l=i.req.header("x-org-id"),n=i.req.header("x-org-slug"),f=l?l:n?await u.db.selectFrom("organization").select("id").where("slug","=",n).executeTakeFirst().then((v)=>v?.id):null,c=t?t:f?xx(f):null;if(!c)return i.json({error:"Agent ID or organization ID is required"},400);let $=await u.tracer.startActiveSpan("studio.virtual_mcp.lookup",{attributes:{"virtual_mcp.id":c}},async(v)=>{try{let r=await u.storage.virtualMcps.findById(c,f??void 0);return v.setStatus({code:Vdi.OK}),r}catch(r){throw v.setStatus({code:Vdi.ERROR,message:r.message}),v.recordException(r),r}finally{v.end()}});if(!$)return i.json({error:"Agent not found"},404);if(f&&$.organization_id!==f)return i.json({error:"Agent not found"},404);if($.status!=="active")return i.json({error:`Agent is inactive: ${$.id??"Decopilot"}`},503);if(u.organization?.id&&$.organization_id!==u.organization.id)return i.json({error:"Forbidden: Agent does not belong to your organization"},403);u.connectionId=$.id??void 0;let d=await u.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",$.organization_id).executeTakeFirst();if(d)u.organization={id:d.id,slug:d.slug,name:d.name};let _=await u.tracer.startActiveSpan("studio.virtual_mcp.create_client",{attributes:{"virtual_mcp.id":$.id??"decopilot"}},async(v)=>{try{let r=await $2($,u,"passthrough");return v.setStatus({code:Vdi.OK}),r}catch(r){throw v.setStatus({code:Vdi.ERROR,message:r.message}),v.recordException(r),r}finally{v.end()}}),g={name:$.id??"Decopilot",version:"1.0.0",title:$.title??void 0,description:$.description??void 0,icons:$.icon?[{src:$.icon}]:void 0},h=D3(_,g,{capabilities:{tools:{},resources:{},prompts:{}},instructions:typeof $.metadata?.instructions==="string"?$.metadata.instructions:void 0,toolCallTimeoutMs:$S}),E=new Z6({enableJsonResponse:i.req.header("Accept")?.includes("application/json")??!1});return await h.connect(E),await w2(h,E,i.req.raw,`virtual-mcp:${$.id??"decopilot"}`,{onClose:()=>_.close()})}catch(l){let n=l;return console.error("[virtual-mcp] Error handling virtual MCP request:",n),i.json({error:"Internal server error",message:n.message},500)}}var mdi=()=>{let i=new St;return i.all("/gateway/:virtualMcpId?",async(t)=>{let u=t.req.param("virtualMcpId")||t.req.header("x-virtual-mcp-id");return adi(t,u)}),i.all("/virtual-mcp/:virtualMcpId?",async(t)=>{let u=t.req.param("virtualMcpId")||t.req.header("x-virtual-mcp-id");return adi(t,u)}),i};var odi=w(()=>{zl();uz();nn();qS();vV()});import{SpanStatusCode as sdi}from"@opentelemetry/api";var N3u=(i,t)=>{if(i instanceof _S)return t.header("Retry-After",String(Math.ceil(i.cooldownRemainingMs/1000))),t.json({error:i.message},503);if(i.message.includes("not found"))return t.json({error:i.message},404);if(i.message.includes("does not belong to the active organization"))return t.json({error:"Connection not found"},404);if(i.message.includes("inactive"))return t.json({error:i.message},503);return t.json({error:"Internal server error",message:i.message},500)},pdi=()=>{let i=new St;return i.all("/",async(t)=>{return adi(t,void 0)}),i.get("/:connectionId/ui-resource",async(t)=>{let u=t.get("meshContext"),l=t.req.param("connectionId"),n=t.req.query("uri");if(!n)return t.json({error:"uri query param is required"},400);if(!u.organization?.id)return t.json({error:"Organization context is required"},403);let f=await u.storage.connections.findById(l,u.organization.id);if(!f||f.organization_id!==u.organization.id)return t.json({error:"Connection not found"},404);let c=w5(f,u,!1,bf()??void 0),$,d;try{let v=(await c.readResource({uri:n})).contents?.[0];$=v?.text,d=v?._meta?.ui?.csp}catch(E){return t.json({error:E.message},502)}finally{await c.close().catch(()=>{})}if(typeof $!=="string")return t.json({error:"Resource has no text content"},404);let _=w3u($,{resourceCsp:d}),g=`"${Bun.hash(_).toString(36)}"`,h="private, no-cache";if(t.req.header("if-none-match")===g)return new Response(null,{status:304,headers:{ETag:g,"Cache-Control":h}});return new Response(_,{headers:{"Content-Type":"text/html; charset=utf-8",ETag:g,"Cache-Control":h}})}),i.all("/:connectionId",async(t)=>{let u=t.req.param("connectionId"),l=t.get("meshContext");if(u.endsWith("_self")){let n=u.slice(0,-5);if(!l.organization||l.organization.id!==n)return t.json({error:"Connection not found"},404);let f=await nz(l),c=new Z6({enableJsonResponse:t.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await f.connect(c),i7.run(l,()=>w2(f,c,t.req.raw,`mcp:self:${u}`))}try{try{if(!l.organization?.id)return t.json({error:"Organization context is required"},403);let n=await l.tracer.startActiveSpan("studio.connection.lookup",{attributes:{"connection.id":u}},async(E)=>{d6(t,"mcp.find_connection");try{let v=await l.storage.connections.findById(u,l.organization.id);return E.setStatus({code:sdi.OK}),v}catch(v){throw E.setStatus({code:sdi.ERROR,message:v.message}),E.recordException(v),v}finally{C_(t,"mcp.find_connection"),E.end()}});if(!n)throw Error("Connection not found");if(n.organization_id!==l.organization.id)throw Error("Connection does not belong to the active organization");if(n.status!=="active")throw Error(`Connection inactive: ${n.status}`);let f=await y3u(t.req.raw),{decision:c,listType:$}=O3u(f),d=c==="probe";if(c==="skip-if-list-cached"&&$){let E=bf();d=E?await E.get($,u)===null:!0}if(n.connection_url&&d)n$i(u),await l.tracer.startActiveSpan("studio.connection.handshake",{attributes:{"connection.id":u,"connection.url":n.connection_url}},async(E)=>{d6(t,"mcp.client_handshake");try{await ld(n,l,!1),f$i(u),Jsi().recordSuccess(u),E.setStatus({code:sdi.OK})}catch(v){throw E.setStatus({code:sdi.ERROR,message:v.message}),E.recordException(v),v}finally{C_(t,"mcp.client_handshake"),E.end()}});d6(t,"mcp.create_server");let _=Smi(n,l,!1);C_(t,"mcp.create_server");let g=new Z6({enableJsonResponse:t.req.raw.headers.get("Accept")?.includes("application/json")??!1});d6(t,"mcp.server_connect"),await _.connect(g),C_(t,"mcp.server_connect"),d6(t,"mcp.handle_request");let h=await w2(_,g,t.req.raw,`mcp:${u}`);return C_(t,"mcp.handle_request"),h}catch(n){if(n instanceof _S)throw n;let f=await l.storage.connections.findById(u,l.organization?.id);if(f?.connection_url){let c=await Zmi({error:n,reqUrl:new URL(t.req.raw.url),connectionId:u,connectionUrl:f.connection_url,headers:{},orgSlug:l.organization?.slug});if(c)return c;c$i(u);let{shouldDisable:$}=await Jsi().recordFailure(u);if($&&f.status==="active")await l.storage.connections.update(u,{status:"error"}),console.warn("[proxy] auto-disabled connection after sustained failures",{connectionId:u,org:l.organization?.slug,error:n.message})}throw n}}catch(n){return N3u(n,t)}}),i.all("/:connectionId/call-tool/:toolName",async(t)=>{let u=t.req.param("connectionId"),l=t.req.param("toolName"),n=t.get("meshContext");try{let f=await n.storage.connections.findById(u,n.organization?.id);if(!f)return t.json({error:"Connection not found"},404);let $=await(await ld(f,n,!1)).callTool({name:l,arguments:await t.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(f){let c=await n.storage.connections.findById(u,n.organization?.id);if(c?.connection_url){let $=await Zmi({error:f,reqUrl:new URL(t.req.raw.url),connectionId:u,connectionUrl:c.connection_url,headers:{},orgSlug:n.organization?.slug});if($)return $}return N3u(f,t)}}),i};var i_i=w(()=>{VS();uz();nn();oLi();aS();vV();qq();q_();BM();x3u();kqi();Usi();X3u();odi();h$i()});async function K5(i,t,u,l){if(t.type!=="event"||!t.connection_id)return{success:!0};let n=await i.storage.connections.findById(t.connection_id);if(!n)return{success:!0};let f=i.organization?.id,c=i.organization?.slug;try{let $=await ld(n,i,!0),d=Pei.forClient(QM($)),_,g,h;if(u&&l&&f){let y=await l.generateTokenPair();g=y.plaintext,h=y.hash,_=c?`${i.baseUrl}/api/${c}/trigger-callback`:`${i.baseUrl}/api/trigger-callback`}let E=5000,v=!1,r=new Promise((y,X)=>setTimeout(()=>{v=!0,X(Error("TRIGGER_CONFIGURE timeout"))},E)),x;try{x=await Promise.race([d.TRIGGER_CONFIGURE({type:t.event_type,params:JSON.parse(t.params??"{}"),enabled:u,callbackUrl:_,callbackToken:g}),r])}catch(y){if(v&&u&&l&&f&&h)await l.persistTokenHash(f,t.connection_id,h);return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE threw on connection=${t.connection_id} type=${t.event_type}:`,y),{success:!1,error:String(y)}}let O=x;if(!O||O.success!==!0)return console.error(`[configureTriggerOnMcp] TRIGGER_CONFIGURE did not return success=true on connection=${t.connection_id} type=${t.event_type}. Raw payload:`,JSON.stringify(x)),{success:!1,error:`TRIGGER_CONFIGURE did not return success=true (got ${JSON.stringify(x)})`};try{if(u&&l&&f&&h)await l.persistTokenHash(f,t.connection_id,h);if(!u&&l&&f)await l.deleteByConnection(t.connection_id,f)}catch(y){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",y)}return{success:!0}}catch($){return{success:!1,error:String($)}}}var wV=w(()=>{VS();i_i();Aei()});import{z as O1}from"zod";var Tsi;var J3u=w(()=>{py();Vi();g2();wV();Tsi=li({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:O1.object({id:O1.string(),name:O1.string().min(1).max(255).optional(),active:O1.boolean().optional(),messages:O1.union([O1.string(),O1.array(O1.looseObject({id:O1.string().optional(),role:O1.enum(["user","assistant","system"]),parts:O1.array(O1.record(O1.string(),O1.unknown())),metadata:O1.unknown().optional()}))]).optional(),models:O1.object({tier:Gdi,modelId:O1.string().optional(),credentialId:O1.string().optional()}).loose().optional(),tools:O1.array(O1.string()).nullable().optional(),maxAgentSteps:O1.number().int().min(1).max(100).nullable().optional(),temperature:O1.number().optional()}),outputSchema:O1.object({id:O1.string(),name:O1.string(),active:O1.boolean(),updated_at:O1.string()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findById(i.id,u.id);if(!l)throw Error("Automation not found");let n={};if(i.name!==void 0)n.name=i.name;if(i.active!==void 0)n.active=i.active;if(i.messages!==void 0){let c=bdi(i.messages);n.messages=JSON.stringify(c)}if(i.models!==void 0)n.models=JSON.stringify(i.models);if(i.tools!==void 0)n.tools=i.tools===null?null:JSON.stringify(i.tools);if(i.temperature!==void 0)n.temperature=i.temperature;if(i.maxAgentSteps!==void 0)n.max_agent_steps=i.maxAgentSteps;let f=await t.storage.automations.update(i.id,u.id,n);if(i.active!==void 0&&i.active!==l.active){let c=await t.storage.automations.listTriggers(f.id),$=c.filter((d)=>d.type==="event");await Promise.allSettled($.map(async(d)=>{let _=await K5(t,d,i.active);if(!_.success)console.warn(`Failed to configure trigger ${d.id}: ${_.error}`)})),await _3u(c,i.active)}return{id:f.id,name:f.name,active:f.active,updated_at:f.updated_at}}})});import{z as t_i}from"zod";var Fsi;var U3u=w(()=>{py();T1();Vi();wV();Fsi=li({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:t_i.object({id:t_i.string()}),outputSchema:t_i.object({success:t_i.boolean()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);if(await t.access.check(),!await t.storage.automations.findById(i.id,u.id))throw Error("Automation not found");let n=await t.storage.automations.listTriggers(i.id),f=n.filter((d)=>d.type==="event");await Promise.allSettled(f.map(async(d)=>{let _=await K5(t,d,!1);if(!_.success)console.warn(`Failed to disable trigger ${d.id}: ${_.error}`)}));let{success:c}=await t.storage.automations.delete(i.id,u.id);await g3u(n);let $=yu(t);if($)Ju.capture({distinctId:$,event:"automation_deleted",groups:{organization:u.id},properties:{organization_id:u.id,automation_id:i.id,trigger_count:n.length}});return{success:c}}})});function fz(i){return`webhook_${i}`}function u_i(i,t,u){if(!t)throw Error("Cannot build webhook URL: organization slug missing from request context");return`${i}/api/${t}/webhooks/${u}`}import{z as k4}from"zod";var T3u=300000,nv0=10,Zsi;var F3u=w(()=>{Esi();py();gV();Vi();wV();Zsi=li({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:k4.object({automation_id:k4.string(),type:k4.enum(["cron","event","webhook"]),cron_expression:k4.string().optional(),connection_id:k4.string().optional(),event_type:k4.string().optional(),params:k4.record(k4.string(),k4.string()).optional()}),outputSchema:k4.object({id:k4.string(),automation_id:k4.string(),type:k4.enum(["cron","event","webhook"]),created_at:k4.string(),webhook:k4.object({url:k4.string(),token:k4.string()}).nullable().optional()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findById(i.automation_id,u.id);if(!l)throw Error("Automation not found");if(i.type==="cron"){if(!i.cron_expression)throw Error("cron_expression is required for cron triggers");let d=new z5(i.cron_expression,{timezone:"UTC"}).nextRuns(nv0);if(d.length===0)throw Error("Cron expression has no future runs");let _=1/0;for(let g=1;g<d.length;g++){let h=d[g].getTime()-d[g-1].getTime();if(h<_)_=h}if(d.length>=2&&Number.isFinite(_)&&_<T3u){let g=T3u/1000;throw Error(`Cron fires too frequently \u2014 minimum interval is ${g}s between runs (observed ${_/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 t.storage.connections.findById(i.connection_id,u.id))throw Error("Connection not found");let d={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:""},_=await K5(t,d,!0,t.storage.triggerCallbackTokens);if(!_.success)throw Error(`Failed to configure trigger on connection: ${_.error}`)}let n=i.type==="cron"&&i.cron_expression?Ldi(i.cron_expression,new Date):null,f=await t.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:n?.toISOString()??null}),c=null;if(i.type==="webhook")try{let $=await t.boundAuth.apiKey.create({name:`webhook:${l.name}:${f.id.slice(0,8)}`,permissions:{[fz(f.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:l.id,trigger_id:f.id}});await t.storage.automations.setTriggerApiKeyId(f.id,$.id),c={url:u_i(t.baseUrl,u.slug,f.id),token:$.key}}catch($){await t.storage.automations.removeTrigger(f.id,f.automation_id);let d=$ instanceof Error?$.message:String($);throw Error(`Failed to mint webhook token: ${d}`)}return await Mdi(f,l),{id:f.id,automation_id:f.automation_id,type:f.type,created_at:f.created_at,webhook:c}}})});import{z as l_i}from"zod";var Isi;var Z3u=w(()=>{py();Vi();wV();Isi=li({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:l_i.object({trigger_id:l_i.string()}),outputSchema:l_i.object({success:l_i.boolean()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findTriggerById(i.trigger_id);if(!l)throw Error("Trigger not found");if(!await t.storage.automations.findById(l.automation_id,u.id))throw Error("Automation not found");if(l.type==="event"){let c=await K5(t,l,!1,t.storage.triggerCallbackTokens);if(!c.success)console.warn(`Failed to disable trigger ${l.id}: ${c.error}`)}let{success:f}=await t.storage.automations.removeTrigger(l.id,l.automation_id);if(l.type==="cron")await Dsi(l.id);if(l.type==="webhook"&&l.api_key_id)try{await t.boundAuth.apiKey.delete(l.api_key_id)}catch(c){console.warn(`[trigger-remove] failed to delete api key ${l.api_key_id} for trigger ${l.id}:`,c instanceof Error?c.message:c)}return{success:f}}})});import{z as cz}from"zod";var Bsi;var I3u=w(()=>{Vi();Bsi=li({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:cz.object({trigger_id:cz.string()}),outputSchema:cz.object({trigger_id:cz.string(),url:cz.string(),token:cz.string()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.automations.findTriggerById(i.trigger_id);if(!l)throw Error("Trigger not found");if(l.type!=="webhook")throw Error("Trigger is not a webhook trigger");let n=await t.storage.automations.findById(l.automation_id,u.id);if(!n)throw Error("Automation not found");let f=l.api_key_id,c=await t.boundAuth.apiKey.create({name:`webhook:${n.name}:${l.id.slice(0,8)}`,permissions:{[fz(l.id)]:["FIRE"]},metadata:{kind:"webhook_trigger",automation_id:n.id,trigger_id:l.id}});if(await t.storage.automations.setTriggerApiKeyId(l.id,c.id),f)try{await t.boundAuth.apiKey.delete(f)}catch($){console.warn(`[trigger-rotate] failed to delete old key ${f} for trigger ${l.id}:`,$ instanceof Error?$.message:$)}return{trigger_id:l.id,url:u_i(t.baseUrl,u.slug,l.id),token:c.key}}})});import{z as $z}from"zod";var Qsi;var B3u=w(()=>{T1();Vi();Qsi=li({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:$z.object({id:$z.string()}),outputSchema:$z.object({threadId:$z.string().optional(),error:$z.string().optional(),skipped:$z.string().optional()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);if(await t.access.check(),!t.automationRunner)throw Error("Automation runner not available");let l=yu(t);if(!l)throw Error("User ID not available");let n=await t.automationRunner(i.id,u.id,l);if(Ju.capture({distinctId:l,event:"automation_run",groups:{organization:u.id},properties:{organization_id:u.id,automation_id:i.id,thread_id:"taskId"in n?n.taskId:void 0,status:"skipped"in n?"skipped":("error"in n)?"error":"started",skip_reason:"skipped"in n?n.skipped:void 0,error_message:"error"in n?n.error:void 0}}),"skipped"in n)return{skipped:n.skipped};if("error"in n)return{threadId:n.taskId,error:n.error};return{threadId:n.taskId}}})});import{z as l4}from"zod";var fv0=500,Ysi;var Q3u=w(()=>{pf();Vi();Ysi=li({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:l4.object({automation_id:l4.string(),startDate:l4.string().datetime().optional().describe("Filter runs at or after this ISO timestamp"),endDate:l4.string().datetime().optional().describe("Filter runs at or before this ISO timestamp")}),outputSchema:l4.object({runs:l4.object({total:l4.number(),completed:l4.number(),failed:l4.number(),inProgress:l4.number()}),usage:l4.object({calls:l4.number(),inputTokens:l4.number(),outputTokens:l4.number(),totalTokens:l4.number(),costUsd:l4.number(),sampledRuns:l4.number(),truncated:l4.boolean()})}),handler:async(i,t)=>{Ui(t);let u=Ei(t);if(await t.access.check(),await Sg(),!await t.storage.automations.findById(i.automation_id,u.id))throw Error("Automation not found");let n=await t.storage.automations.getRunStats(i.automation_id,u.id,{startDate:i.startDate,endDate:i.endDate}),f=await t.storage.automations.listRunThreadIds(i.automation_id,u.id,{startDate:i.startDate,endDate:i.endDate,limit:fv0}),c={calls:0,inputTokens:0,outputTokens:0,totalTokens:0,costUsd:0,sampledRuns:f.length,truncated:n.total>f.length};if(f.length>0){let $=await t.storage.monitoring.queryThreadUsage({organizationId:u.id,connectionId:"decopilot",threadIds:f,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0});for(let d of $)c.calls+=d.calls,c.inputTokens+=d.inputTokens,c.outputTokens+=d.outputTokens,c.totalTokens+=d.totalTokens,c.costUsd+=d.costUsd}return{runs:n,usage:c}}})});var Y3u=w(()=>{Vru();aru();mru();J3u();U3u();F3u();Z3u();I3u();B3u();Q3u()});import{z as H5}from"zod";var $v0,dv0,Psi;var P3u=w(()=>{Vi();$v0=H5.object({id:H5.string().min(1)}),dv0=H5.object({user:H5.object({id:H5.string(),name:H5.string(),email:H5.string(),image:H5.string().nullable()}).nullable()}),Psi=li({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:$v0,outputSchema:dv0,handler:async(i,t)=>{await t.access.check(),Ui(t);let u=yu(t);if(!u)throw Error("Authentication required");let l=await t.storage.users.findById(i.id,u);if(!l)return{user:null};return{user:{id:l.id,name:l.name,email:l.email,image:l.image??null}}}})});var A3u=w(()=>{P3u()});import dg from"zod";var Asi;var G3u=w(()=>{Vi();c2();Asi=li({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:dg.object({}),outputSchema:dg.object({providers:dg.array(dg.object({id:dg.string(),name:dg.string(),description:dg.string(),logo:dg.string().optional(),supportedMethods:dg.array(dg.enum(["api-key","oauth-pkce"])),supportsTopUp:dg.boolean().optional(),supportsCredits:dg.boolean().optional(),supportsProvision:dg.boolean().optional()}))}),handler:async(i,t)=>{return Ui(t),Ei(t),await t.access.check(),{providers:Object.values(G4()).filter((l)=>!!l).map((l)=>({...l.info,supportedMethods:l.supportedMethods,supportsTopUp:!!l.getTopUpUrl,supportsCredits:!!l.getCreditsBalance,supportsProvision:!!l.provisionKey}))}}})});function gv0(i){if(!i)return;if(!("models"in i))return;return i.models??void 0}function W3u(i,t){if(!i)return!0;if(i.includes("*:*"))return!0;return i.some((u)=>u.startsWith(`${t}:`))}function R5(i,t,u){if(!i)return!0;return i.includes("*:*")||i.includes(`${t}:*`)||i.includes(`${t}:${u}`)}function n_i(i,t){if(i===void 0)return t;let u=t;if(u.image&&!R5(i,u.image.credentialId,u.image.id)){let{image:l,...n}=u;u=n}if(u.deepResearch&&!R5(i,u.deepResearch.credentialId,u.deepResearch.id)){let{deepResearch:l,...n}=u;u=n}return u}function k3u(i){if(!i)return{allowAll:!0,models:{}};if(i.includes("*:*"))return{allowAll:!0,models:{}};let t={};for(let u of i){let l=u.indexOf(":");if(l===-1)continue;let n=u.slice(0,l),f=u.slice(l+1);if(!t[n])t[n]=[];t[n].push(f)}return{allowAll:!1,models:t}}async function x2(i,t,u){if(!u||Zv.includes(u))return;let l=await i.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",t).where("role","=",u).executeTakeFirst();if(!l?.permission)return;try{let n=JSON.parse(l.permission);return gv0(n)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${u}`),[]}}var xV=w(()=>{Jy()});var Gsi;var j3u=w(()=>{Gsi=[{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 S3u=w(()=>{j3u()});var Wsi;var z3u=w(()=>{Wsi=[{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 b3u=w(()=>{z3u()});import Pc from"zod";var ksi;var K3u=w(()=>{Vi();xV();S3u();b3u();ksi=li({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:Pc.object({keyId:Pc.string().describe("The provider key ID to use")}),outputSchema:Pc.object({models:Pc.array(Pc.object({providerId:Pc.string(),modelId:Pc.string(),title:Pc.string(),description:Pc.string().nullish(),logo:Pc.string().nullish(),capabilities:Pc.array(Pc.string()),limits:Pc.object({contextWindow:Pc.coerce.number(),maxOutputTokens:Pc.coerce.number().nullable()}).nullish(),costs:Pc.object({input:Pc.coerce.number(),output:Pc.coerce.number()}).nullish(),asyncResearch:Pc.boolean().optional()}))}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.findById(i.keyId,u.id).catch(()=>null);if(l?.providerId==="claude-code")return{models:Gsi};if(l?.providerId==="codex")return{models:Wsi};let[n,f]=await Promise.all([t.aiProviders.listModels(i.keyId,u.id),x2(t.db,u.id,t.auth.user?.role)]);return{models:n.filter(($)=>R5(f,i.keyId,$.modelId))}}})});import D2 from"zod";var jsi;var H3u=w(()=>{Vi();c2();jsi=li({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:D2.object({}),outputSchema:D2.object({providers:D2.array(D2.object({id:D2.string(),name:D2.string(),description:D2.string(),logo:D2.string().optional(),keyCount:D2.number()}))}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.list({organizationId:u.id}),n=new Map;for(let c of l)n.set(c.providerId,(n.get(c.providerId)??0)+1);return{providers:[...n.entries()].flatMap(([c,$])=>{let _=G4()[c];if(!_)return console.warn(`AI provider "${c}" has stored keys but is not in the registry; skipping.`),[];return[{..._.info,keyCount:$}]})}}})});var L5=w(()=>{zl()});import sh from"zod";var t7,Ssi;var DV=w(()=>{T1();Vi();L5();t7=sh.object({id:sh.string(),providerId:sh.string(),label:sh.string(),presetId:sh.string().nullable(),createdAt:sh.string()}),Ssi=li({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:sh.object({providerId:sh.enum(U4),label:sh.string().min(1).max(100),apiKey:sh.string().min(1),presetId:sh.string().min(1).max(64).optional()}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.create({providerId:i.providerId,label:i.label,apiKey:i.apiKey,organizationId:u.id,createdBy:t.auth.user.id,presetId:i.presetId??null});return Ju.capture({distinctId:t.auth.user.id,event:"ai_provider_key_created",groups:{organization:u.id},properties:{organization_id:u.id,provider_id:l.providerId,preset_id:l.presetId,key_id:l.id,label:l.label}}),{id:l.id,providerId:l.providerId,label:l.label,presetId:l.presetId,createdAt:l.createdAt}}})});import f_i from"zod";var OV=(i,t)=>i&&i.keyId===t?null:i,hv0=(i,t)=>{let u={tiers:{fast:OV(i.tiers.fast,t),smart:OV(i.tiers.smart,t),thinking:OV(i.tiers.thinking,t),image:OV(i.tiers.image,t),web_research:OV(i.tiers.web_research,t)}},l=u.tiers.fast!==i.tiers.fast||u.tiers.smart!==i.tiers.smart||u.tiers.thinking!==i.tiers.thinking||u.tiers.image!==i.tiers.image||u.tiers.web_research!==i.tiers.web_research;return{config:u,changed:l}},zsi;var R3u=w(()=>{T1();Vi();zsi=li({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:f_i.object({keyId:f_i.string().describe("The provider key ID to delete")}),outputSchema:f_i.object({success:f_i.boolean()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.organizationSettings.get(u.id);if(l?.simple_mode){let{config:n,changed:f}=hv0(l.simple_mode,i.keyId);if(f)await t.storage.organizationSettings.upsert(u.id,{simple_mode:n})}return await t.storage.aiProviderKeys.delete(i.keyId,u.id),Ju.capture({distinctId:t.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:u.id},properties:{organization_id:u.id,key_id:i.keyId}}),{success:!0}}})});import c_i from"zod";var bsi;var L3u=w(()=>{Vi();DV();bsi=li({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:c_i.object({keyId:c_i.string(),label:c_i.string().min(1).max(100).optional(),apiKey:c_i.string().min(1).optional()}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await t.storage.aiProviderKeys.updateKey(i.keyId,u.id,{label:i.label,apiKey:i.apiKey});return{id:l.id,providerId:l.providerId,label:l.label,presetId:l.presetId,createdAt:l.createdAt}}})});import dz from"zod";var Ksi;var C3u=w(()=>{Vi();Ksi=li({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:dz.object({keyId:dz.string()}),outputSchema:dz.object({label:dz.string(),maskedKey:dz.string(),baseUrl:dz.string().optional()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),t.storage.aiProviderKeys.getPreview(i.keyId,u.id)}})});import ph from"zod";var Hsi;var e3u=w(()=>{Vi();L5();xV();Hsi=li({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:ph.object({providerId:ph.enum(U4).optional()}),outputSchema:ph.object({keys:ph.array(ph.object({id:ph.string(),providerId:ph.string(),label:ph.string(),presetId:ph.string().nullable(),createdBy:ph.string(),createdAt:ph.string()}))}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let[l,n]=await Promise.all([t.storage.aiProviderKeys.list({organizationId:u.id,providerId:i.providerId}),x2(t.db,u.id,t.auth.user?.role)]);return{keys:l.filter(($)=>W3u(n,$.id)).map(({organizationId:$,...d})=>d)}}})});import{createHash as Ev0,randomBytes as vv0}from"crypto";function M3u(){return vv0(32).toString("base64url")}function q3u(i){return Ev0("sha256").update(i).digest("base64url")}var V3u=()=>{};import _z from"zod";var Rsi;var a3u=w(()=>{Vi();L5();c2();V3u();U0();Rsi=li({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:_z.object({providerId:_z.enum(U4),callbackUrl:_z.string().url().refine((i)=>{let t=Qt(),u=t.baseUrl??`http://localhost:${t.port}`;return new URL(i).origin===new URL(u).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:_z.object({url:_z.string(),stateToken:_z.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=G4()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.supportedMethods.includes("oauth-pkce")||!l.getOAuthUrl)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let n=M3u(),f=q3u(n),c=await t.storage.oauthPkceStates.create(n,u.id,t.auth.user.id),$=new URL(i.callbackUrl);$.searchParams.set("state",c);let d={callbackUrl:$.toString(),codeChallenge:f,codeChallengeMethod:"S256",organizationId:u.id};return{url:l.getOAuthUrl(d),stateToken:c}}})});import yV from"zod";var Lsi;var m3u=w(()=>{Vi();L5();c2();DV();Lsi=li({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:yV.object({providerId:yV.enum(U4),code:yV.string(),stateToken:yV.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:yV.string().min(1).max(100)}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=G4()[i.providerId];if(!l)throw Error(`Unknown provider: ${i.providerId}`);if(!l.supportedMethods.includes("oauth-pkce")||!l.exchangeOAuthCode)throw Error(`Provider ${i.providerId} does not support OAuth PKCE`);let n=yu(t);if(!n)throw Error("Unable to determine user ID");let f=await t.storage.oauthPkceStates.consume(i.stateToken,u.id,n),{apiKey:c}=await l.exchangeOAuthCode({code:i.code,codeVerifier:f,codeChallengeMethod:"S256"}),$=await t.storage.aiProviderKeys.upsert({providerId:i.providerId,label:i.label,apiKey:c,organizationId:u.id,createdBy:n});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import o3u from"zod";var Csi;var s3u=w(()=>{Vi();L5();c2();qO();DV();Csi=li({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:o3u.object({providerId:o3u.enum(U4)}),outputSchema:t7,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=yu(t);if(!l)throw Error("Unable to determine user ID");let n=G4()[i.providerId];if(!n)throw Error(`Unknown provider: ${i.providerId}`);if(!n.provisionKey)throw Error(`Provider ${i.providerId} does not support key provisioning`);let f=await Kx(l),c=await n.provisionKey(f,u.id),$=await t.storage.aiProviderKeys.upsert({providerId:i.providerId,label:"Auto-provisioned",apiKey:c,organizationId:u.id,createdBy:l});return{id:$.id,providerId:$.providerId,label:$.label,presetId:$.presetId,createdAt:$.createdAt}}})});import gz from"zod";var esi;var p3u=w(()=>{Vi();L5();c2();qO();esi=li({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:gz.object({providerId:gz.enum(U4),amountCents:gz.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:gz.enum(["usd","brl"]).default("usd")}),outputSchema:gz.object({url:gz.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=yu(t);if(!l)throw Error("Unable to determine user ID");let n=G4()[i.providerId];if(!n)throw Error(`Unknown provider: ${i.providerId}`);if(!n.getTopUpUrl)throw Error(`Provider ${i.providerId} does not support credit top-ups`);let f=await Kx(l);return{url:await n.getTopUpUrl(f,u.id,i.amountCents,i.currency)}}})});import $_i from"zod";var Msi;var i2u=w(()=>{Vi();L5();c2();qO();Msi=li({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:$_i.object({providerId:$_i.enum(U4)}),outputSchema:$_i.object({balanceCents:$_i.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=yu(t);if(!l)throw Error("Unable to determine user ID");let n=G4()[i.providerId];if(!n)throw Error(`Unknown provider: ${i.providerId}`);if(!n.getCreditsBalance)throw Error(`Provider ${i.providerId} does not expose a credits balance`);let f=await Kx(l);return n.getCreditsBalance(f,u.id)}})});var t2u=w(()=>{G3u();K3u();H3u();DV();R3u();L3u();C3u();e3u();a3u();m3u();s3u();p3u();i2u()});import Kv from"zod";var d_i;var qsi=w(()=>{d_i=Kv.object({id:Kv.string(),scope:Kv.enum(["user","organization"]),userId:Kv.string().nullable(),name:Kv.string(),description:Kv.string().nullable(),createdBy:Kv.string(),createdAt:Kv.string(),updatedBy:Kv.string(),updatedAt:Kv.string()})});import XV from"zod";var Vsi;var u2u=w(()=>{Vi();qsi();Vsi=li({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:XV.object({scope:XV.enum(["user","organization"]),name:XV.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."}),value:XV.string().min(1),description:XV.string().max(500).optional()}),outputSchema:d_i,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=t.auth.user.id,n=i.scope==="user"?{kind:"user",userId:l}:{kind:"organization"};return await t.storage.secrets.create({organizationId:u.id,scope:n,name:i.name,value:i.value,description:i.description??null,createdBy:l})}})});import __i from"zod";var asi;var l2u=w(()=>{Vi();qsi();asi=li({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:__i.object({scope:__i.enum(["user","organization"]).optional()}),outputSchema:__i.object({secrets:__i.array(d_i)}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=t.auth.user.id,n=i.scope==="user"?{kind:"user",userId:l}:i.scope==="organization"?{kind:"organization"}:void 0;return{secrets:await t.storage.secrets.list({organizationId:u.id,callerUserId:l,scope:n})}}})});var n2u=w(()=>{u2u();l2u()});import $d from"zod";function h_i(i){if(i==null)return null;let t=i.trim().replace(/^\/+/,"");if(t==="")return null;return t.endsWith("/")?t:`${t}/`}function E_i(i){if(i==null)return null;let t=i.trim().replace(/\/+$/,"");return t===""?null:t}var hz,g_i;var v_i=w(()=>{hz=$d.object({id:$d.string(),name:$d.string(),description:$d.string().nullable(),bucket:$d.string(),region:$d.string(),endpoint:$d.string().nullable(),forcePathStyle:$d.boolean(),prefix:$d.string().nullable(),publicUrlBase:$d.string().nullable(),createdBy:$d.string(),createdAt:$d.string(),updatedBy:$d.string(),updatedAt:$d.string()}),g_i=$d.string().min(1).max(128).regex(/^[A-Za-z0-9_.-]+$/,{message:"Name may only contain letters, digits, underscore, dot, and hyphen."})});import Hv from"zod";var msi;var f2u=w(()=>{Vi();v_i();msi=li({name:"FILE_CONFIG_CREATE",description:"Create an S3-compatible bucket configuration scoped to the organization. The access key and secret key are encrypted at rest in the credential vault and never returned by any tool.",inputSchema:Hv.object({name:g_i,description:Hv.string().max(500).optional(),bucket:Hv.string().min(1).max(255),region:Hv.string().min(1).max(64),endpoint:Hv.string().url().optional(),forcePathStyle:Hv.boolean().optional(),prefix:Hv.string().max(512).optional(),publicUrlBase:Hv.string().url().optional(),accessKeyId:Hv.string().min(1),secretAccessKey:Hv.string().min(1)}),outputSchema:hz,handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),t.storage.orgFileConfigs.create({organizationId:u.id,name:i.name,description:i.description??null,bucket:i.bucket,region:i.region,endpoint:i.endpoint??null,forcePathStyle:i.forcePathStyle??!1,prefix:h_i(i.prefix),publicUrlBase:E_i(i.publicUrlBase),credentials:{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey},createdBy:t.auth.user.id})}})});import osi from"zod";var ssi;var c2u=w(()=>{Vi();v_i();ssi=li({name:"FILE_CONFIG_LIST",description:"List S3-compatible bucket configurations for the organization. Credentials are never returned.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:osi.object({}),outputSchema:osi.object({configs:osi.array(hz)}),handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),{configs:await t.storage.orgFileConfigs.list(u.id)}}})});import iE from"zod";var psi;var $2u=w(()=>{Vi();v_i();psi=li({name:"FILE_CONFIG_UPDATE",description:"Update an S3 bucket configuration. Credentials can be rotated by providing both accessKeyId and secretAccessKey; omit them to leave existing credentials untouched.",inputSchema:iE.object({id:iE.string().min(1),name:g_i.optional(),description:iE.string().max(500).nullable().optional(),bucket:iE.string().min(1).max(255).optional(),region:iE.string().min(1).max(64).optional(),endpoint:iE.string().url().nullable().optional(),forcePathStyle:iE.boolean().optional(),prefix:iE.string().max(512).nullable().optional(),publicUrlBase:iE.string().url().nullable().optional(),accessKeyId:iE.string().min(1).optional(),secretAccessKey:iE.string().min(1).optional()}).refine((i)=>i.accessKeyId===void 0===(i.secretAccessKey===void 0),{message:"accessKeyId and secretAccessKey must be provided together when rotating credentials."}),outputSchema:hz,handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=i.accessKeyId&&i.secretAccessKey?{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey}:void 0;return t.storage.orgFileConfigs.update({id:i.id,organizationId:u.id,name:i.name,description:i.description,bucket:i.bucket,region:i.region,endpoint:i.endpoint,forcePathStyle:i.forcePathStyle,prefix:i.prefix===void 0?void 0:h_i(i.prefix),publicUrlBase:i.publicUrlBase===void 0?void 0:E_i(i.publicUrlBase),credentials:l,updatedBy:t.auth.user.id})}})});import r_i from"zod";var ipi;var d2u=w(()=>{Vi();ipi=li({name:"FILE_CONFIG_DELETE",description:"Delete an S3 bucket configuration by id.",inputSchema:r_i.object({id:r_i.string().min(1)}),outputSchema:r_i.object({success:r_i.literal(!0)}),handler:async(i,t)=>{Ui(t);let u=Ei(t);return await t.access.check(),await t.storage.orgFileConfigs.delete(i.id,u.id),{success:!0}}})});function xv0(i){return new bc({region:i.info.region,endpoint:i.info.endpoint??void 0,forcePathStyle:i.info.forcePathStyle,credentials:{accessKeyId:i.credentials.accessKeyId,secretAccessKey:i.credentials.secretAccessKey},requestChecksumCalculation:"WHEN_REQUIRED",responseChecksumValidation:"WHEN_REQUIRED"})}function upi(i,t){if(i.publicUrlBase)return`${i.publicUrlBase}/${w_i(t)}`;if(i.endpoint)return`${i.endpoint.replace(/\/+$/,"")}/${i.bucket}/${w_i(t)}`;return i.forcePathStyle?`https://s3.${i.region}.amazonaws.com/${i.bucket}/${w_i(t)}`:`https://${i.bucket}.s3.${i.region}.amazonaws.com/${w_i(t)}`}function w_i(i){return i.split("/").map(encodeURIComponent).join("/")}async function _2u(i,t,u){return i.resolveById(t,u)}async function g2u(i){let t=xv0(i.ctx),u=Math.min(i.maxKeys??50,200),l=i.ctx.info.prefix??"",n=new Date,f=String(n.getUTCFullYear()),c=String(n.getUTCFullYear()-1),$=[`${l}${f}/`,`${l}${c}/`];if(i.cursor){let r=await t.send(new kg({Bucket:i.ctx.info.bucket,Prefix:l||void 0,MaxKeys:u,ContinuationToken:i.cursor}));return Dv0(r,i.ctx,u,!1,$)}let d=$,_=new Map;for(let r of d){if(_.size>=u)break;let x=await t.send(new kg({Bucket:i.ctx.info.bucket,Prefix:r,MaxKeys:u-_.size}));for(let O of x.Contents??[]){if(!O.Key||O.Key.endsWith("/")||_.has(O.Key))continue;_.set(O.Key,tpi(O,i.ctx))}}let g=Math.max(1,u-_.size),h=await t.send(new kg({Bucket:i.ctx.info.bucket,Prefix:l||void 0,MaxKeys:g}));for(let r of h.Contents??[]){if(_.size>=u)break;if(!r.Key||r.Key.endsWith("/")||_.has(r.Key))continue;if($.some((x)=>r.Key.startsWith(x)))continue;_.set(r.Key,tpi(r,i.ctx))}let E=h.IsTruncated?h.NextContinuationToken??null:null;return{items:Array.from(_.values()).sort(h2u),nextCursor:E}}function tpi(i,t){return{key:i.Key,size:i.Size??0,lastModified:i.LastModified?i.LastModified.toISOString():null,publicUrl:upi(t.info,i.Key)}}function h2u(i,t){if(!i.lastModified&&!t.lastModified)return 0;if(!i.lastModified)return 1;if(!t.lastModified)return-1;return t.lastModified.localeCompare(i.lastModified)}function Dv0(i,t,u,l,n=[]){let f=(i.Contents??[]).filter((c)=>c.Key&&!c.Key.endsWith("/")&&!n.some(($)=>c.Key.startsWith($))).slice(0,u).map((c)=>tpi(c,t));if(l)f.sort(h2u);return{items:f,nextCursor:i.IsTruncated?i.NextContinuationToken??null:null}}var lpi=w(()=>{mG()});import I6 from"zod";var npi;var E2u=w(()=>{Vi();lpi();npi=li({name:"FILE_OBJECTS_LIST",description:"List existing objects in a configured S3 bucket (newest first). Returns public URLs computed from the config's publicUrlBase or the bucket's S3 host. Used by the picker dialog to let users select previously uploaded files.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:I6.object({configId:I6.string().min(1),cursor:I6.string().nullable().optional(),maxKeys:I6.number().int().min(1).max(200).optional()}),outputSchema:I6.object({items:I6.array(I6.object({key:I6.string(),size:I6.number(),lastModified:I6.string().nullable(),publicUrl:I6.string()})),nextCursor:I6.string().nullable()}),handler:async(i,t)=>{Ui(t);let u=Ei(t);await t.access.check();let l=await _2u(t.storage.orgFileConfigs,i.configId,u.id);return g2u({ctx:l,cursor:i.cursor,maxKeys:i.maxKeys})}})});var v2u=w(()=>{f2u();c2u();$2u();d2u();E2u()});import B6 from"zod";var r2u;var w2u=w(()=>{Vi();Ud();PLi();r2u=li({name:"ORG_FS_PUBLIC_SETS_SYNC",description:"Re-sync the shared public skill-set volumes (org/public/*) from their configured GitHub repos. Returns per-set written/deleted/unchanged counts.",inputSchema:B6.object({}),outputSchema:B6.object({results:B6.array(B6.union([B6.object({set:B6.string(),written:B6.number(),deleted:B6.number(),unchanged:B6.number()}),B6.object({set:B6.string(),error:B6.string()})]))}),handler:async(i,t)=>{return Ui(t),await t.access.check(),{results:await jst(t.db,{baseUrl:QE()})}}})});var x2u,D2u;var O2u=w(()=>{x2u=[{name:"agents-create",title:"Create Agents",description:"Build a new agent for a specific role or workflow.",text:`# Create agent
106870
106871
 
106871
106872
  Goal: create a new agent that has a clear role, the correct connections, and instructions that are specific enough to be reliable.
106872
106873
 
@@ -107886,7 +107887,7 @@ Caused by: ${t.stack}`}};RP=class RP extends Ec{constructor(i,t){super(i,t);this
107886
107887
  ORDER BY d.created_at ASC
107887
107888
  LIMIT ${i}
107888
107889
  FOR UPDATE OF d SKIP LOCKED
107889
- )`).where("status","=","pending").returning(["id"]).execute()).map((f)=>f.id);if(l.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",l).where("d.status","=","processing").execute()).map((f)=>({delivery:{id:f.delivery_id,eventId:f.event_id,subscriptionId:f.subscription_id,status:f.delivery_status,attempts:f.delivery_attempts,lastError:f.delivery_last_error,deliveredAt:f.delivered_at,nextRetryAt:f.delivery_next_retry_at,createdAt:f.delivery_created_at},event:{id:f.event_id,organizationId:f.organization_id,type:f.type,source:f.source,specversion:f.specversion,subject:f.subject,time:f.time,datacontenttype:f.datacontenttype,dataschema:f.dataschema,data:f.data?JSON.parse(f.data):null,cron:f.cron,status:f.event_status,attempts:f.event_attempts,lastError:f.event_last_error,nextRetryAt:f.next_retry_at,createdAt:f.event_created_at,updatedAt:f.event_updated_at},subscription:{id:f.subscription_id,organizationId:f.organization_id,connectionId:f.connection_id,publisher:f.publisher,eventType:f.event_type,filter:f.filter,enabled:Boolean(f.enabled),createdAt:f.subscription_created_at,updatedAt:f.subscription_updated_at}}))}async markDeliveriesDelivered(i){if(i.length===0)return;let t=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:t}).where("id","in",i).execute()}async markDeliveriesPermanentlyFailed(i,t){if(i.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:t,next_retry_at:null}).where("id","in",i).execute()}async markDeliveriesFailed(i,t,u=20,l=1000,n=3600000){if(i.length===0)return;for(let f of i){let c=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",f).executeTakeFirst();if(!c)continue;let $=c.attempts+1;if($>=u)await this.db.updateTable("event_deliveries").set({attempts:$,last_error:t,status:"failed",next_retry_at:null}).where("id","=",f).execute();else{let d=Nn(n,l,$-1,2,0),_=new Date(Date.now()+d).toISOString();await this.db.updateTable("event_deliveries").set({attempts:$,last_error:t,status:"pending",next_retry_at:_}).where("id","=",f).execute()}}}async updateEventStatus(i){let t=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",i).execute();if(t.length===0)return;let u=t.every((f)=>f.status==="delivered"),l=t.some((f)=>f.status==="failed"),n=t.some((f)=>f.status==="pending"||f.status==="processing");if(u)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",i).execute();else if(l&&!n)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",i).execute()}async resetStuckDeliveries(){if((await Elt`SELECT pg_try_advisory_lock(hashtext('event_bus_reset_stuck')) as locked`.execute(this.db)).rows[0]?.locked!==!0)return 0;try{let u=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(u.numUpdatedRows??0)}finally{await Elt`SELECT pg_advisory_unlock(hashtext('event_bus_reset_stuck'))`.execute(this.db)}}async getEvent(i,t){let u=await this.db.selectFrom("events").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst();if(!u)return null;return{id:u.id,organizationId:u.organization_id,type:u.type,source:u.source,specversion:u.specversion,subject:u.subject,time:u.time,datacontenttype:u.datacontenttype,dataschema:u.dataschema,data:u.data?JSON.parse(u.data):null,cron:u.cron,status:u.status,attempts:u.attempts,lastError:u.last_error,nextRetryAt:u.next_retry_at,createdAt:u.created_at,updatedAt:u.updated_at}}async findActiveCronEvent(i,t,u,l){let n=await this.db.selectFrom("events").selectAll().where("organization_id","=",i).where("type","=",t).where("source","=",u).where("cron","=",l).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!n)return null;return{id:n.id,organizationId:n.organization_id,type:n.type,source:n.source,specversion:n.specversion,subject:n.subject,time:n.time,datacontenttype:n.datacontenttype,dataschema:n.dataschema,data:n.data?JSON.parse(n.data):null,cron:n.cron,status:n.status,attempts:n.attempts,lastError:n.last_error,nextRetryAt:n.next_retry_at,createdAt:n.created_at,updatedAt:n.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((t)=>t.not(t.exists(t.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((t)=>({id:t.id,organizationId:t.organization_id,type:t.type,source:t.source,specversion:t.specversion,subject:t.subject,time:t.time,datacontenttype:t.datacontenttype,dataschema:t.dataschema,data:t.data?JSON.parse(t.data):null,cron:t.cron,status:t.status,attempts:t.attempts,lastError:t.last_error,nextRetryAt:t.next_retry_at,createdAt:t.created_at,updatedAt:t.updated_at}))}async cancelEvent(i,t,u){let l=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",t).where("source","=",u).where("status","in",["pending","processing"]).executeTakeFirst();if((l.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",i).where("status","in",["pending","processing"]).execute();return{success:(l.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(i,t){if(i.length===0)return;let u=new Date(Date.now()+t).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:u}).where("id","in",i).execute()}async ackDelivery(i,t,u){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",i).where("organization_id","=",t).executeTakeFirst())return{success:!1};let f=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",i).where("status","in",["pending","processing"]).where((c)=>c.exists(c.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",u).where("event_subscriptions.organization_id","=",t))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(f)await this.updateEventStatus(i);return{success:f}}async syncSubscriptions(i){let{organizationId:t,connectionId:u,subscriptions:l}=i,n=(y,X)=>{return`${y}::${X??""}`},f=await this.listSubscriptions(t,u),c=new Map;for(let y of f)c.set(n(y.eventType,y.publisher),y);let $=new Map;for(let y of l)$.set(n(y.eventType,y.publisher),y);let d=new Date().toISOString(),_=[],g=[],h=[],E=0;for(let[y,X]of $){let N=c.get(y);if(!N)_.push({id:crypto.randomUUID(),organization_id:t,connection_id:u,event_type:X.eventType,publisher:X.publisher??null,filter:X.filter??null,enabled:!0,created_at:d,updated_at:d});else{let U=N.filter??null,J=X.filter??null;if(U!==J)g.push({id:N.id,filter:J});else E++}}for(let[y,X]of c)if(!$.has(y))h.push(X.id);if(_.length>0)await this.db.insertInto("event_subscriptions").values(_).execute();if(g.length>0)await Promise.all(g.map((y)=>this.db.updateTable("event_subscriptions").set({filter:y.filter,updated_at:d}).where("id","=",y.id).execute()));if(h.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",h).execute();let v=_.length,r=g.length,x=h.length,O=await this.listSubscriptions(t,u);return{created:v,updated:r,deleted:x,unchanged:E,subscriptions:O}}}function uFu(i){return new tFu(i)}var lFu=w(()=>{H1()});class nFu{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((t,u)=>this.localEmit(t,u)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(i){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let t=this.listeners.get(i.organizationId);if(!t)t=new Map,this.listeners.set(i.organizationId,t);if(t.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${i.organizationId} (50)`),null;return t.set(i.id,i),this.totalCount++,i.id}remove(i,t){let u=this.listeners.get(i);if(!u)return;if(u.delete(t)){if(this.totalCount--,u.size===0)this.listeners.delete(i)}}emit(i,t){if(this.strategy)this.strategy.broadcast(i,t);else this.localEmit(i,t)}countForOrg(i){return this.listeners.get(i)?.size??0}get count(){return this.totalCount}localEmit(i,t){let u=this.listeners.get(i);if(!u||u.size===0)return;for(let l of u.values()){if(l.typePatterns&&!eT0(t.type,l.typePatterns))continue;try{l.push(t)}catch{this.remove(i,l.id)}}}}function eT0(i,t){for(let u of t){if(u===i)return!0;if(u.endsWith(".*")){let l=u.slice(0,-1);if(i.startsWith(l))return!0}}return!1}function fFu(i){return{id:i.id,type:i.type,source:i.source,subject:i.subject,data:i.data?MT0(i.data):void 0,time:i.time}}function MT0(i){if(typeof i==="string")try{return JSON.parse(i)}catch{return i}return i}var F$;var jyi=w(()=>{F$=new nFu});function cFu(i){if(typeof i==="object"&&i!==null){let l=i,n=l.status??l.code;if(typeof n==="number"&&qT0.has(n))return!0}let t=i instanceof Error?i.message:typeof i==="string"?i:"";if(!t)return!1;let u=t.toLowerCase();if(/\b401\b/.test(u))return!0;return VT0.some((l)=>u.includes(l))}function $Fu(i){let t=i instanceof Error?i.message:typeof i==="string"?i:"";if(!t)return!1;let u=t.toLowerCase();return aT0.some((l)=>u.includes(l))}var qT0,VT0,aT0,ya;var vlt=w(()=>{qT0=new Set([401]),VT0=["unauthorized","invalid_token","invalid api key","api key required","api-key required"],aT0=["tool on_events not found","tool not found"];ya=class ya extends Error{constructor(i){super(i);this.name="PermanentDeliveryError"}}});var Syi;var rlt=w(()=>{Syi={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function mT0(i){return i.endsWith("_self")}function oT0(i){return i.slice(0,-5)}function dFu(){return async(i,t)=>{try{if(mT0(i)){let c=oT0(i),$=await Vh.create(),d={organizationId:c,connectionId:i,publish:async(h,E,v,r)=>{await $.eventBus.publish(c,i,{type:h,subject:E,data:v,deliverAt:r?.deliverAt})},createMCPProxy:async(h)=>{let E={...$,getOrCreateClient:rS()},v=await bqi(h,E);return{callTool:async(r,x,O)=>{let y=await v.callTool(r,x,O);return{content:y.content,structuredContent:y.structuredContent,isError:y.isError}},close:()=>v.close()}}},_=t.filter((h)=>h.type==="registry.monitor.scheduled");if(_.length>0){let{parseMonitorConfig:h}=await Promise.resolve().then(() => (G6(),XOu)),E=await d.createMCPProxy(i);try{for(let v of _){let r=v.data&&typeof v.data==="object"?v.data:{},x=r.config&&typeof r.config==="object"?r.config:{},O=h(x);await E.callTool({name:"REGISTRY_MONITOR_RUN_START",arguments:{config:O}})}}finally{await E.close()}if(_.length===t.length)return{success:!0}}if(await ist(t,d))return{success:!0}}let u=await Vh.create(),l=await bqi(i,u),f=await Yei.forClient(QM(l)).ON_EVENTS({events:t});return{success:f.success,error:f.error,retryAfter:f.retryAfter,results:f.results}}catch(u){let l=u instanceof Error?u.message:String(u);if(console.error(`[EventBus] Failed to notify connection ${i}:`,l),cFu(u)||$Fu(u))throw new ya(l);return{success:!1,error:l}}}}var _Fu=w(()=>{bS();uC();O$i();_e();h$i();vlt()});function gFu(i){return{specversion:"1.0",id:i.id,source:i.source,type:i.type,time:i.time,subject:i.subject??void 0,datacontenttype:i.datacontenttype,dataschema:i.dataschema??void 0,data:i.data??void 0}}function sT0(i){let t=new Map;for(let l of i){let n=l.subscription.connectionId,f=t.get(n);if(f){if(f.deliveryIds.push(l.delivery.id),!f.seenEventIds.has(l.event.id))f.seenEventIds.add(l.event.id),f.events.push(gFu(l.event))}else t.set(n,{connectionId:l.subscription.connectionId,deliveryIds:[l.delivery.id],events:[gFu(l.event)],seenEventIds:new Set([l.event.id])})}let u=new Map;for(let[l,n]of t)u.set(l,{connectionId:n.connectionId,deliveryIds:n.deliveryIds,events:n.events});return u}class wlt{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;automationEventDispatcher;constructor(i,t,u){this.storage=i;this.notifySubscriber=u??dFu(),this.config={...Syi,...t}}setAutomationEventDispatcher(i){this.automationEventDispatcher=i}async start(){if(this.running)return;await this.storage.resetStuckDeliveries();let i=await this.storage.findOrphanedCronEvents();for(let t of i)await this.scheduleNextCronDelivery(t);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(i){console.error("[EventBus] Error processing events:",i)}finally{this.processing=!1}}async processEvents(){let i=await this.storage.claimPendingDeliveries(this.config.batchSize);if(i.length===0)return;let t=sT0(i),u=await Promise.allSettled(Array.from(t.entries()).map(async([f,c])=>{let $=new Set;try{let _=await this.notifySubscriber(c.connectionId,c.events);if(_.results&&Object.keys(_.results).length>0)await this.processPerEventResults(c,_);else if(_.success)await this.storage.markDeliveriesDelivered(c.deliveryIds);else if(_.retryAfter&&_.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(c.deliveryIds,_.retryAfter);else await this.storage.markDeliveriesFailed(c.deliveryIds,_.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(_){if(_ instanceof ya){await this.storage.markDeliveriesPermanentlyFailed(c.deliveryIds,_.message);for(let g of c.events)$.add(g.id)}else{let g=_ instanceof Error?_.message:String(_);console.error(`[EventBus] Failed to notify subscription ${f}:`,g),await this.storage.markDeliveriesFailed(c.deliveryIds,g,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let d=new Set;for(let _ of i)if(c.deliveryIds.includes(_.delivery.id))d.add(_.event.id);return{eventIds:d,permanentlyFailed:$}})),l=new Set,n=new Set;for(let f of u)if(f.status==="fulfilled"){for(let c of f.value.eventIds)l.add(c);for(let c of f.value.permanentlyFailed)n.add(c)}for(let f of l)try{await this.storage.updateEventStatus(f);let c=i.find(($)=>$.event.id===f)?.event;if(c?.cron&&!n.has(f))await this.scheduleNextCronDelivery(c)}catch(c){console.error(`[EventBus] Failed to update event status ${f}:`,c)}if(this.automationEventDispatcher){let f=new Set,c=[];for(let $ of i){if($.delivery.attempts>0)continue;if(!f.has($.event.id))f.add($.event.id),c.push({id:$.event.id,source:$.event.source,type:$.event.type,data:$.event.data,organizationId:$.event.organizationId})}if(c.length>0)this.automationEventDispatcher.dispatchForEvents(c)}}async processPerEventResults(i,t){let u=[],l=new Map,n=[],f=new Map;for(let c=0;c<i.events.length;c++){let $=i.events?.[c];if(!$)continue;let d=i.deliveryIds?.[c];if(!d)continue;f.set($.id,d)}for(let c of i.events){let $=f.get(c.id);if(!$)continue;let d=t.results?.[c.id];if(d)if(d.success)u.push($);else if(d.retryAfter&&d.retryAfter>0){let _=l.get(d.retryAfter)||[];_.push($),l.set(d.retryAfter,_)}else n.push({deliveryId:$,error:d.error||"Event processing failed"});else if(t.success)u.push($);else if(t.retryAfter&&t.retryAfter>0){let _=l.get(t.retryAfter)||[];_.push($),l.set(t.retryAfter,_)}else n.push({deliveryId:$,error:t.error||"Batch processing failed"})}if(u.length>0)await this.storage.markDeliveriesDelivered(u);for(let[c,$]of l)await this.storage.scheduleRetryWithoutAttemptIncrement($,c);if(n.length>0){let c=new Map;for(let{deliveryId:$,error:d}of n){let _=c.get(d)||[];_.push($),c.set(d,_)}for(let[$,d]of c)await this.storage.markDeliveriesFailed(d,$,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(i){if(!i.cron)return;try{let u=new z5(i.cron,{timezone:"UTC"}).nextRun();if(!u)return;let l=u.toISOString(),n=await this.storage.getMatchingSubscriptions(i);if(n.length===0)return;await this.storage.createDeliveries(i.id,n.map((f)=>f.id),l)}catch(t){console.error(`[EventBus] Failed to schedule next cron delivery for event ${i.id}:`,t)}}}var hFu=w(()=>{gV();vlt();rlt();_Fu()});class xlt{storage;worker;notifyStrategy;running=!1;constructor(i){this.storage=i.storage,this.notifyStrategy=i.notifyStrategy,this.worker=new wlt(this.storage,i.config)}setAutomationEventDispatcher(i){this.worker.setAutomationEventDispatcher(i)}async publish(i,t,u){if(u.deliverAt&&u.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let l;if(u.cron){try{let g=new z5(u.cron,{timezone:"UTC"}).nextRun();if(!g)throw Error("Cron expression does not produce a next run time");l=g.toISOString()}catch(_){throw Error(`Invalid cron expression: ${_ instanceof Error?_.message:String(_)}`)}let d=await this.storage.findActiveCronEvent(i,u.type,t,u.cron);if(d)return d}let n=crypto.randomUUID(),f=new Date().toISOString(),c=await this.storage.publishEvent({id:n,organizationId:i,type:u.type,source:t,subject:u.subject,time:f,data:u.data,cron:u.cron});F$.emit(i,fFu(c));let $=await this.storage.getMatchingSubscriptions(c);if($.length>0){let d=u.deliverAt??l;await this.storage.createDeliveries(n,$.map((g)=>g.id),d);let _=d!=null&&new Date(d).getTime()<=Date.now();if(this.notifyStrategy&&(!d||_))await this.notifyStrategy.notify(n).catch((g)=>{console.warn("[EventBus] Notify failed (non-critical):",g)})}return c}async subscribe(i,t){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:i,connectionId:t.connectionId,publisher:t.publisher,eventType:t.eventType,filter:t.filter})}async unsubscribe(i,t){return this.storage.unsubscribe(t,i)}async listSubscriptions(i,t){return this.storage.listSubscriptions(i,t)}async getSubscription(i,t){return this.storage.getSubscription(t,i)}async getEvent(i,t){return this.storage.getEvent(t,i)}async cancelEvent(i,t,u){return this.storage.cancelEvent(t,i,u)}async ackEvent(i,t,u){return this.storage.ackDelivery(t,i,u)}async syncSubscriptions(i,t){return this.storage.syncSubscriptions({organizationId:i,...t})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((i)=>{console.error("[EventBus] Error processing after notify:",i)})});await this.worker.processNow().catch((i)=>{console.error("[EventBus] Error processing pending events on startup:",i)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(i){console.error("[EventBus] Error stopping notify strategy:",i)}}isRunning(){return this.running}}var EFu=w(()=>{gV();jyi();hFu()});class Dlt{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(i){this.options=i}async start(i){if(this.sub)return;if(i)this.onNotify=i;if(!this.onNotify)return;let t=this.options.getConnection();if(!t)return;this.sub=t.subscribe("mesh.events.notify"),(async()=>{for await(let u of this.sub)this.onNotify?.()})().catch((u)=>{console.error("[NatsNotify] Subscription error:",u)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(i){try{let t=this.options.getConnection();if(!t)return;t.publish("mesh.events.notify",this.encoder.encode(i))}catch(t){console.warn("[NatsNotify] Publish failed (non-critical):",t)}}}class Olt{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 t=this.options.getConnection();if(!t)return;this.sub=t.subscribe("mesh.sse.broadcast");let u=new TextDecoder;(async()=>{for await(let l of this.sub)try{let n=JSON.parse(u.decode(l.data));if(typeof n?.originId!=="string"||typeof n?.organizationId!=="string"||typeof n?.event?.id!=="string"||typeof n?.event?.type!=="string")continue;if(n.originId===this.originId)continue;this.localEmit?.(n.organizationId,n.event)}catch{}})().catch((l)=>{console.error("[NatsSSEBroadcast] Subscription error:",l)})}broadcast(i,t){this.localEmit?.(i,t);let u={originId:this.originId,organizationId:i,event:t};try{let l=this.options.getConnection();if(!l)return;l.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(u)))}catch(l){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",l)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function vFu(...i){return{async start(t){await Promise.all(i.map((u)=>u.start(t)))},async stop(){await Promise.all(i.map((t)=>t.stop().catch((u)=>{console.error("[NotifyStrategy] Error stopping strategy:",u)})))},async notify(t){await Promise.all(i.map((u)=>u.notify(t).catch((l)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",l)})))}}}class ylt{intervalMs;timer=null;onNotify=null;constructor(i){this.intervalMs=i}async start(i){if(this.timer)return;this.onNotify=i,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify(i){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}async function rFu(i,t,u=5){try{await Tr(t,{maxAttempts:u,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(l){console.error(`${i} Deferred start failed:`,l instanceof H6?l.cause:l)}}function wFu(i,t,u){let l=uFu(i.db),n=u?.pollIntervalMs??Syi.pollIntervalMs,f=new Dlt({getConnection:()=>t.getConnection()}),c=vFu(new ylt(n),f),$=new Olt({getConnection:()=>t.getConnection()});return F$.start($).catch((d)=>{console.error("[SSEHub] Failed to start broadcast strategy:",d)}),t.onReady(()=>{rFu("[NatsNotify]",()=>f.start()),rFu("[NatsSSEBroadcast]",()=>$.start())}),new xlt({storage:l,config:u,notifyStrategy:c})}var Xlt=w(()=>{H1();lFu();EFu();rlt();jyi();jyi()});var xFu=()=>{};var Nlt=()=>{};var DFu=()=>{};var pT0,nBf;var OFu=w(()=>{xFu();Nlt();Yx();DFu();pT0={br:".br",zstd:".zst",gzip:".gz"},nBf=Object.keys(pT0)});var yFu=w(()=>{OFu()});var XFu=()=>{};var NFu=w(()=>{XFu()});var JFu=()=>{};var UFu=w(()=>{KLi()});var Jlt=w(()=>{Px();UFu()});var Ult="x-hono-disable-ssg",UBf;var Tlt=w(()=>{Jlt();UBf=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Ult]:"true"}})}catch{return null}})()});var TFu=w(()=>{jfi()});var Flt=w(()=>{TFu()});var FFu=w(()=>{NFu();JFu();Nlt();Tlt();Flt();Jlt()});var ZFu=w(()=>{Tlt();Flt();FFu()});var fQf;var IFu=w(()=>{ZFu();({write:fQf}=Bun)});var uF0=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,t){this.#i.send(i,t??{})}raw;binaryType="arraybuffer";get readyState(){return this.#i.readyState}url;protocol;close(i,t){this.#i.close(i,t)}},BFu=(i)=>{return(...t)=>{if(typeof t[0]==="function"){let[u,l]=t;return async function(f,c){let $=await u(f),d=await i(f,$,l);if(d)return d;await c()}}else{let[u,l,n]=t;return(async()=>{let f=await i(u,l,n);if(!f)throw Error("Failed to upgrade WebSocket");return f})()}}};var QFu=()=>{};var Xa=(i)=>("server"in i.env)?i.env.server:i.env;var zyi=()=>{};var lF0;var YFu=w(()=>{QFu();zyi();lF0=BFu((i,t)=>{let u=Xa(i);if(!u)throw TypeError("env has to include the 2nd argument of fetch.");if(u.upgrade(i.req.raw,{data:{events:t,url:new URL(i.req.url),protocol:i.req.url}}))return new Response(null);return})});var Zlt=(i)=>{let t=Xa(i);if(!t)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof t.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let u=t.requestIP(i.req.raw);if(!u)return{remote:{}};return{remote:{address:u.address,addressType:u.family==="IPv6"||u.family==="IPv4"?u.family:void 0,port:u.port}}};var PFu=w(()=>{zyi()});var AFu=w(()=>{yFu();IFu();YFu();PFu();zyi()});var GFu;var WFu=w(()=>{GFu={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"}}});var Kyi={};Gi(Kyi,{waitForSeed:()=>gF0,seedLocalMode:()=>$F0,markSeedComplete:()=>_F0,isLocalMode:()=>gE,getLocalAdminUser:()=>Na,getLocalAdminPassword:()=>byi});import{userInfo as nF0}from"os";async function byi(){return Qt().betterAuthSecret||"local-mode-default"}function kFu(){try{return nF0().username||"local"}catch{return"local"}}function fF0(i){return i.charAt(0).toUpperCase()+i.slice(1)}async function cF0(){let i=T0(),t=await i.db.selectFrom("user").select(i.db.fn.countAll().as("count")).executeTakeFirst();return Number(t?.count??0)===0}async function $F0(){if(!await cF0())return!1;let t=kFu(),u=`${t}@localhost.mesh`,l=fF0(t),n=await byi(),f=await an.api.signUpEmail({body:{email:u,password:n,name:l}});if(!f?.user?.id)throw Error("Failed to create local admin user");let c=f.user.id,$=T0();await $.db.updateTable("user").set({role:"admin"}).where("id","=",c).execute();let d=`${t}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),_=`${l} Local`;return await $.db.updateTable("organization").set({name:_,slug:d}).where("id","in",(g)=>g.selectFrom("member").select("organizationId").where("userId","=",c)).execute(),!0}async function Na(){let i=T0(),t=`${kFu()}@localhost.mesh`;return i.db.selectFrom("user").where("email","=",t).selectAll().executeTakeFirst()}function gE(){return Qt().localMode}function _F0(){jFu()}function gF0(){return dF0}var jFu,dF0;var ED=w(()=>{z$();U0();E2();dF0=new Promise((i)=>{if(jFu=i,!gE())i()})});function SFu(){let i=Object.keys(s0.socialProviders??{}),t=i.length>0,u=i.map((n)=>({name:n,icon:GFu[n].icon})),l=Qt().localMode;return{emailAndPassword:{enabled:s0.emailAndPassword?.enabled??!1},magicLink:{enabled:s0.magicLinkConfig?.enabled??!1},emailOtp:{enabled:s0.emailOtpConfig?.enabled??!1},resetPassword:{enabled:kyi},socialProviders:{enabled:t,providers:u},sso:s0.ssoConfig?{enabled:!0,providerId:s0.ssoConfig.providerId}:{enabled:!1},stdioEnabled:l,localMode:gE()}}var qP,zFu;var Ilt=w(()=>{nn();AFu();T1();U0();E2();z$();Boi();Uqi();WFu();ED();qk();qP=new St;qP.post("/local-session",async(i)=>{if(!gE())return i.json({success:!1,error:"Local mode is not active"},403);let t;try{t=Zlt(i).remote.address}catch{}if(!(t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1"))return i.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:l}=await Promise.resolve().then(() => (ED(),Kyi));await l();let{auth:n}=await Promise.resolve().then(() => (E2(),pTu)),f=await Na();if(!f)return i.json({success:!1,error:"Local admin user not found"},500);let c=await byi();return await n.api.signInEmail({body:{email:f.email,password:c},asResponse:!0})}catch(l){return console.error("Failed to create local session:",l),i.json({success:!1,error:l instanceof Error?l.message:"Failed to create local session"},500)}});qP.get("/my-capabilities/:slug",async(i)=>{let t=i.req.param("slug"),u=await an.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({error:"Authentication required"},401);let l=T0().db,n=await l.selectFrom("organization").select(["id"]).where("slug","=",t).executeTakeFirst();if(!n)return i.json({role:null,capabilities:{}});let c=(await l.selectFrom("member").select(["role"]).where("userId","=",u.user.id).where("organizationId","=",n.id).executeTakeFirst())?.role??null;if(!c)return i.json({role:null,capabilities:{}});if(c==="owner"||c==="admin")return i.json({role:c,capabilities:Gpt()});if(c==="user")return i.json({role:c,capabilities:pLi({self:[...Mfi]})});let $=await l.selectFrom("organizationRole").select(["permission"]).where("role","=",c).where("organizationId","=",n.id).executeTakeFirst(),d={},_=$?.permission;if(typeof _==="string")try{let g=JSON.parse(_);if(g&&typeof g==="object"&&!Array.isArray(g))d=g}catch{d={}}return i.json({role:c,capabilities:pLi(d)})});qP.get("/domain-lookup",async(i)=>{let t=await an.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);if(!t.user.emailVerified)return i.json({found:!1,organizations:[]});let u=t.user.email?.split("@")[1]?.toLowerCase();if(!u||h2.has(u))return i.json({found:!1,organizations:[]});try{let n=await new r5(T0().db).getAllByDomain(u);if(n.length===0)return i.json({found:!1,organizations:[]});let f=await T0().db.selectFrom("organization").select(["id","name","slug","logo"]).where("id","in",n.map((d)=>d.organizationId)).execute(),c=new Map(f.map((d)=>[d.id,d])),$=n.map((d)=>{let _=c.get(d.organizationId);if(!_)return null;return{id:_.id,name:_.name,slug:_.slug,logo:_.logo,autoJoinEnabled:d.autoJoinEnabled}}).filter((d)=>d!==null);return i.json({found:$.length>0,organizations:$})}catch(l){return console.error("[Auth] Domain lookup failed:",l),i.json({success:!1,error:"Domain lookup failed"},500)}});qP.post("/domain-join",async(i)=>{let t=await an.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);if(!t.user.emailVerified)return i.json({success:!1,error:"Email must be verified to join"},403);let u=t.user.email?.split("@")[1]?.toLowerCase();if(!u||h2.has(u))return i.json({success:!1,error:"Generic email domains cannot auto-join"},403);let l=await i.req.json().catch(()=>({})),n=typeof l.organizationSlug==="string"&&l.organizationSlug.trim()?l.organizationSlug.trim():null;try{let f=T0().db,d=(await new r5(f).getAllByDomain(u)).filter((g)=>g.autoJoinEnabled);if(d.length===0)return i.json({success:!1,error:"Auto-join is not available for this domain"},403);let _;if(n){let g=await f.selectFrom("organization").select(["id","slug"]).where("slug","=",n).executeTakeFirst();if(!g||!d.some((h)=>h.organizationId===g.id))return i.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);_=g}else if(d.length===1){let g=await f.selectFrom("organization").select(["id","slug"]).where("id","=",d[0].organizationId).executeTakeFirst();if(!g)return i.json({success:!1,error:"Organization not found"},404);_=g}else return i.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await an.api.addMember({body:{userId:t.user.id,role:"user",organizationId:_.id}})}catch(g){if(!(g instanceof Error?g.message.toLowerCase():"").includes("already a member"))return console.error("[Auth] Domain join addMember failed:",g),i.json({success:!1,error:"Failed to join organization"},500)}return Ju.capture({distinctId:t.user.id,event:"organization_domain_joined",groups:{organization:_.id},properties:{organization_id:_.id,organization_slug:_.slug,email_domain:u}}),i.json({success:!0,slug:_.slug})}catch(f){return Ju.captureException(f,t.user.id),console.error("[Auth] Domain join failed:",f),i.json({success:!1,error:"Failed to join organization"},500)}});qP.post("/domain-setup",async(i)=>{let t=await an.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);if(!t.user.emailVerified)return i.json({success:!1,error:"Email must be verified"},403);let u=t.user.email?.split("@")[1]?.toLowerCase();if(!u||h2.has(u))return i.json({success:!1,error:"Corporate email required"},403);let l=await i.req.json().catch(()=>({})),n=typeof l.name==="string"&&l.name.trim().length>0?l.name.trim():null,f=typeof l.logo==="string"&&l.logo.length>0?l.logo:null,c=l.claimDomain!==!1;try{let $=T0().db,d=new r5($),_=await d.getAllByDomain(u);if(_.length>0){let N=await $.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",t.user.id).where("member.organizationId","in",_.map((U)=>U.organizationId)).executeTakeFirst();if(N)return i.json({success:!0,slug:N.slug,alreadyExists:!0})}let g=u.split(".")[0]??u,h=n??g.charAt(0).toUpperCase()+g.slice(1),E=(n??g).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||g.toLowerCase().replace(/[^a-z0-9-]/g,""),v=null;for(let U=0;U<3;U++){let J=U===0?"":`-${Math.random().toString(36).slice(2,6)}`,T=U===0?h:`${h}${J}`,Q=`${E}${J}`;try{v=await an.api.createOrganization({body:{name:T,slug:Q,userId:t.user.id}});break}catch(B){if(!(B instanceof Error&&("body"in B)&&B.body?.code==="ORGANIZATION_ALREADY_EXISTS")||U===2)throw B}}if(!v?.id)throw Error("Failed to create organization");let r=v.id;if(c)await d.setDomain(r,u,!0);let x=!1,O=null,y=null;try{let N=Qt().firecrawlApiKey;if(N){let U=await Wdi(u,N,h);if(U){let J=new ZM(T0().db),T=await J.create(r,U);if(await J.setDefault(T.id,r),x=!0,U.name&&U.name!==h)O=U.name;y=U.favicon??U.logo??null}}}catch(N){console.error("[Auth] Brand extraction failed (non-fatal):",N)}let X={};if(!n&&O)X.name=O;if(f)X.logo=f;else if(y)X.logo=y;if(Object.keys(X).length>0)try{await an.api.updateOrganization({headers:i.req.raw.headers,body:{organizationId:r,data:X}})}catch(N){console.error("[Auth] Org update failed (non-fatal):",N)}return Ju.identify({distinctId:t.user.id,properties:{email:t.user.email,$set:{email:t.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),Ju.groupIdentify({groupType:"organization",groupKey:r,properties:{name:v.slug??E,slug:v.slug??E,email_domain:u,brand_extracted:x,created_at:new Date().toISOString()}}),Ju.capture({distinctId:t.user.id,event:"organization_created",groups:{organization:r},properties:{organization_id:r,organization_slug:v.slug??E,email_domain:u,brand_extracted:x}}),i.json({success:!0,slug:v.slug??E,brandExtracted:x})}catch($){return Ju.captureException($,t.user?.id),console.error("[Auth] Domain setup failed:",$),i.json({success:!1,error:"Failed to set up organization"},500)}});qP.get("/org-access-status/:slug",async(i)=>{let t=i.req.param("slug"),u=await an.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);let l=T0().db,n=await l.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",t).executeTakeFirst();if(!n)return i.json({status:"not-found"});let f={id:n.id,name:n.name,slug:n.slug,logo:n.logo};if(await l.selectFrom("member").select(["id"]).where("userId","=",u.user.id).where("organizationId","=",n.id).executeTakeFirst())return i.json({status:"member",organization:f});try{let $=await an.api.listUserInvitations({headers:i.req.raw.headers}),d=Date.now(),_=$.find((g)=>g.organizationId===n.id&&g.status==="pending"&&new Date(g.expiresAt).getTime()>d);if(_)return i.json({status:"pending-invite",invitation:{id:_.id},organization:f})}catch($){console.error("[Auth] listUserInvitations failed:",$)}if(u.user.emailVerified){let $=u.user.email?.split("@")[1]?.toLowerCase();if($&&!h2.has($)){let d=await new r5(l).getByOrganizationId(n.id);if(d?.autoJoinEnabled&&d.domain===$)return i.json({status:"auto-domain-join",organization:{...f,domain:$}})}}return i.json({status:"no-access",organization:f})});zFu=qP});import*as Ryi from"jose";function hF0(i){i.get("/status",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!await Qlt(u,u.auth.user.id,l))return t.json({error:"Not a member of this organization"},403);let f=await u.storage.orgSsoConfig.getByOrgId(l);if(!f||!f.enforced)return t.json({ssoRequired:!1});let c=await u.storage.orgSsoSessions.isValid(u.auth.user.id,l);return t.json({ssoRequired:!0,authenticated:c,issuer:f.issuer,domain:f.domain})}),i.get("/authorize",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!await Qlt(u,u.auth.user.id,l))return t.json({error:"Not a member of this organization"},403);let f=await u.storage.orgSsoConfig.getByOrgId(l);if(!f)return t.json({error:"SSO not configured for this organization"},404);let c=await Blt(f.issuer,f.discoveryEndpoint),$=EF0(),d=await vF0($),_=crypto.randomUUID(),g=JSON.stringify({state:_,codeVerifier:$,orgId:l,userId:u.auth.user.id});VLi(t,"org_sso_state",g,{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:600});let h=new URLSearchParams({response_type:"code",client_id:f.clientId,redirect_uri:`${u.baseUrl}/api/org-sso/callback`,scope:f.scopes.join(" "),state:_,code_challenge:d,code_challenge_method:"S256"}),E=`${c.authorization_endpoint}?${h.toString()}`;return t.redirect(E)}),i.get("/callback",async(t)=>{let u=t.get("meshContext"),l=t.req.query("code"),n=t.req.query("state"),f=t.req.query("error");if(f)return t.redirect(`/?sso_error=${encodeURIComponent(f)}`);if(!l||!n)return t.redirect("/?sso_error=missing_code_or_state");let c=Cfi(t,"org_sso_state");if(!c)return t.redirect("/?sso_error=state_expired");VLi(t,"org_sso_state","",{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:0});let $;try{$=JSON.parse(c)}catch{return t.redirect("/?sso_error=invalid_state")}if($.state!==n)return t.redirect("/?sso_error=state_mismatch");if(!u.auth.user||u.auth.user.id!==$.userId)return t.redirect("/?sso_error=session_expired");let d=await u.storage.orgSsoConfig.getByOrgId($.orgId);if(!d)return t.redirect("/?sso_error=sso_not_configured");let _=await Blt(d.issuer,d.discoveryEndpoint),g=await fetch(_.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:l,redirect_uri:`${u.baseUrl}/api/org-sso/callback`,client_id:d.clientId,client_secret:d.clientSecret,code_verifier:$.codeVerifier})});if(!g.ok)return console.error("[org-sso] Token exchange failed:",await g.text()),t.redirect("/?sso_error=token_exchange_failed");let h=await g.json();if(!h.id_token)return t.redirect("/?sso_error=no_id_token");try{let r=Ryi.createRemoteJWKSet(new URL(_.jwks_uri)),{payload:x}=await Ryi.jwtVerify(h.id_token,r,{issuer:d.issuer,audience:d.clientId}),O=x.email?.toLowerCase(),y=u.auth.user.email?.toLowerCase();if(!O||O!==y)return console.error(`[org-sso] Email mismatch: token=${O}, user=${y}`),t.redirect("/?sso_error=email_mismatch")}catch(r){return console.error("[org-sso] ID token verification failed:",r),t.redirect("/?sso_error=token_verification_failed")}await u.storage.orgSsoSessions.upsert(u.auth.user.id,$.orgId);let E=await Qlt(u,u.auth.user.id,$.orgId),v=E?.orgSlug?`/${E.orgSlug}`:"/";return t.redirect(v)}),i.get("/config",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!rF0(u))return t.json({error:"Admin role required"},403);let n=await u.storage.orgSsoConfig.getByOrgId(l);if(!n)return t.json({configured:!1});return t.json({configured:!0,config:u.storage.orgSsoConfig.toPublic(n)})}),i.post("/config",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!Ylt(u))return t.json({error:"Owner role required"},403);let n=await t.req.json();if(!n.issuer||!n.clientId||!n.domain)return t.json({error:"issuer, clientId, and domain are required"},400);let f=await u.storage.orgSsoConfig.getByOrgId(l);if(!f&&!n.clientSecret)return t.json({error:"clientSecret is required for initial SSO setup"},400);let c=n.clientSecret||f?.clientSecret||"";try{await Blt(n.issuer,n.discoveryEndpoint)}catch(d){return t.json({error:"Failed to reach OIDC discovery endpoint",details:d instanceof Error?d.message:String(d)},400)}let $=await u.storage.orgSsoConfig.upsert(l,{issuer:n.issuer,clientId:n.clientId,clientSecret:c,discoveryEndpoint:n.discoveryEndpoint,scopes:n.scopes,domain:n.domain,enforced:n.enforced});return t.json({success:!0,config:u.storage.orgSsoConfig.toPublic($)})}),i.post("/config/enforce",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!Ylt(u))return t.json({error:"Owner role required"},403);let n=await t.req.json();if(!await u.storage.orgSsoConfig.getByOrgId(l))return t.json({error:"SSO must be configured before enforcing"},400);return await u.storage.orgSsoConfig.setEnforced(l,n.enforced),t.json({success:!0,enforced:n.enforced})}),i.delete("/config",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!Ylt(u))return t.json({error:"Owner role required"},403);return await u.storage.orgSsoConfig.delete(l),t.json({success:!0})})}function Hyi(i){let t;try{t=new URL(i)}catch{throw Error(`Invalid URL: ${i}`)}let u=Qt().localMode;if(t.protocol!=="https:"&&!(u&&t.protocol==="http:"))throw Error(`OIDC URL must use HTTPS: ${i}`);let l=t.hostname,n=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^localhost$/i],f=/^127\.|^\[::1\]$|^localhost$/i.test(l);if(u&&f)return;for(let c of n)if(c.test(l))throw Error(`OIDC URL must not point to a private network address: ${l}`)}async function Blt(i,t){let u=t||i,l=bFu.get(u);if(l&&l.expiresAt>Date.now())return l.doc;let n=t||`${i.replace(/\/$/,"")}/.well-known/openid-configuration`;Hyi(n);let f=await fetch(n);if(!f.ok)throw Error(`OIDC discovery failed: ${f.status} ${f.statusText}`);let c=await f.json();if(!c.authorization_endpoint||!c.token_endpoint||!c.jwks_uri)throw Error("OIDC discovery document missing required endpoints");return Hyi(c.authorization_endpoint),Hyi(c.token_endpoint),Hyi(c.jwks_uri),bFu.set(u,{doc:c,expiresAt:Date.now()+3600000}),c}function EF0(){let i=new Uint8Array(32);return crypto.getRandomValues(i),btoa(String.fromCharCode(...i)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function vF0(i){let u=new TextEncoder().encode(i),l=await crypto.subtle.digest("SHA-256",u);return btoa(String.fromCharCode(...new Uint8Array(l))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Qlt(i,t,u){return await i.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug as orgSlug","member.role"]).where("member.userId","=",t).where("member.organizationId","=",u).executeTakeFirst()??null}function rF0(i){let t=i.auth.user?.role;if(!t)return!1;return Zv.includes(t)}function Ylt(i){return i.auth.user?.role==="owner"}var Lyi=()=>{let i=new St;return hF0(i),i},bFu;var Plt=w(()=>{nn();aLi();U0();Jy();bFu=new Map});function DF0(i){if(i==="claude-code")return wF0;if(i==="codex")return xF0;return null}function KFu(i,t){return DF0(i)?.[t]??null}var wF0,xF0;var HFu=w(()=>{wF0={fast:{modelId:"claude-code:haiku",label:"Haiku 4.5"},smart:{modelId:"claude-code:sonnet",label:"Sonnet 4.6"},thinking:{modelId:"claude-code:fable",label:"Fable 5"}},xF0={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 RFu=w(()=>{HFu()});function LFu(i){return i.type==="tool-call"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function OF0(i){return i.type==="tool-result"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function CFu(i){let t=null;for(let l=i.length-1;l>=0&&t===null;l--){let f=i[l].content;if(!Array.isArray(f))continue;for(let c=f.length-1;c>=0;c--){let $=f[c];if(LFu($)){t=$.toolCallId;break}}}if(t===null)return i;let u=t;return i.map((l)=>{let n=l.content;if(!Array.isArray(n))return l;let f=n.filter((c)=>{if(LFu(c))return c.toolCallId===u;if(OF0(c))return c.toolCallId===u;return!0});if(f.length===n.length)return l;return{...l,content:f}})}function yF0(i){let t=!1,u=i.map((l)=>{if(l.role!=="assistant")return l;if(!l.parts.some((f)=>("state"in f)&&f.state==="approval-requested"))return l;return t=!0,{...l,parts:l.parts.map((f)=>{if(!("state"in f)||f.state!=="approval-requested"||!("approval"in f)||!f.approval)return f;return{...f,state:"output-denied",approval:{...f.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return t?u:i}function XF0(i){let[t,u]=i.reduce((l,n)=>{if(n.role==="system")l[0].push(n);else l[1].push(n);return l},[[],[]]);return{systemMessages:t,messages:u}}async function eFu(i,t){let u=i.filter((h)=>h.role!=="assistant"||h.parts&&h.parts.length>0),l=await jV({messages:u}),n=yF0(l),f=await r7(n,{tools:t.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:c,messages:$}=XF0(f),d=CFu($),g=fit({messages:d,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((h)=>{if(h.role!=="assistant")return h;let E=Array.isArray(h.content)?h.content.filter((v)=>v.type!=="reasoning"&&v.type!=="thinking"&&v.type!=="redacted-reasoning").map((v)=>{let r=v;if("providerOptions"in r||"providerMetadata"in r){let{providerOptions:x,providerMetadata:O,...y}=r;if(r.type==="tool-call"){let X=O?.google,N=x?.google;return{...y,...X?{providerMetadata:{google:X}}:{},...N?{providerOptions:{google:N}}:{}}}return y}return v}):h.content;return{...h,content:Array.isArray(E)&&E.length===0?[{type:"text",text:""}]:E,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:c,messages:g,originalMessages:l}}var MFu=w(()=>{$n()});function qFu(i){let t=i.filter((l)=>l.role==="system"),u=i.find((l)=>l.role!=="system");return{systemMessages:t,requestMessage:u}}async function NF0(i,t){return await i.loadHistory(t)}function JF0(i,t){let u=i.filter((f)=>f.parts&&f.parts.length>0);if(!t)return u;let l=u.findIndex((f)=>f.id===t.id);return l>=0?[...u.slice(0,l),t]:[...u,t]}async function VFu(i,t,u,l){let n=await NF0(i,l),f=JF0(n,t);return[...u,...f]}var Alt=()=>{};import{z as Glt}from"zod";function Cyi(i){let{toolOutputMap:t}=i;return hl({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:hi(Glt.object({tool_call_id:Glt.string(),pattern:Glt.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:u,pattern:l})=>{if(!t.has(u))return{result:`Tool output not found for tool call id: ${u}. Available ids: ${[...t.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let n=t.get(u),f;try{f=new RegExp(l)}catch{return{result:`Invalid regex pattern: ${l}`,matchCount:0,totalLines:0}}let c=n.split(`
107890
+ )`).where("status","=","pending").returning(["id"]).execute()).map((f)=>f.id);if(l.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",l).where("d.status","=","processing").execute()).map((f)=>({delivery:{id:f.delivery_id,eventId:f.event_id,subscriptionId:f.subscription_id,status:f.delivery_status,attempts:f.delivery_attempts,lastError:f.delivery_last_error,deliveredAt:f.delivered_at,nextRetryAt:f.delivery_next_retry_at,createdAt:f.delivery_created_at},event:{id:f.event_id,organizationId:f.organization_id,type:f.type,source:f.source,specversion:f.specversion,subject:f.subject,time:f.time,datacontenttype:f.datacontenttype,dataschema:f.dataschema,data:f.data?JSON.parse(f.data):null,cron:f.cron,status:f.event_status,attempts:f.event_attempts,lastError:f.event_last_error,nextRetryAt:f.next_retry_at,createdAt:f.event_created_at,updatedAt:f.event_updated_at},subscription:{id:f.subscription_id,organizationId:f.organization_id,connectionId:f.connection_id,publisher:f.publisher,eventType:f.event_type,filter:f.filter,enabled:Boolean(f.enabled),createdAt:f.subscription_created_at,updatedAt:f.subscription_updated_at}}))}async markDeliveriesDelivered(i){if(i.length===0)return;let t=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:t}).where("id","in",i).execute()}async markDeliveriesPermanentlyFailed(i,t){if(i.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:t,next_retry_at:null}).where("id","in",i).execute()}async markDeliveriesFailed(i,t,u=20,l=1000,n=3600000){if(i.length===0)return;for(let f of i){let c=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",f).executeTakeFirst();if(!c)continue;let $=c.attempts+1;if($>=u)await this.db.updateTable("event_deliveries").set({attempts:$,last_error:t,status:"failed",next_retry_at:null}).where("id","=",f).execute();else{let d=Nn(n,l,$-1,2,0),_=new Date(Date.now()+d).toISOString();await this.db.updateTable("event_deliveries").set({attempts:$,last_error:t,status:"pending",next_retry_at:_}).where("id","=",f).execute()}}}async updateEventStatus(i){let t=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",i).execute();if(t.length===0)return;let u=t.every((f)=>f.status==="delivered"),l=t.some((f)=>f.status==="failed"),n=t.some((f)=>f.status==="pending"||f.status==="processing");if(u)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",i).execute();else if(l&&!n)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",i).execute()}async resetStuckDeliveries(){if((await Elt`SELECT pg_try_advisory_lock(hashtext('event_bus_reset_stuck')) as locked`.execute(this.db)).rows[0]?.locked!==!0)return 0;try{let u=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(u.numUpdatedRows??0)}finally{await Elt`SELECT pg_advisory_unlock(hashtext('event_bus_reset_stuck'))`.execute(this.db)}}async getEvent(i,t){let u=await this.db.selectFrom("events").selectAll().where("id","=",i).where("organization_id","=",t).executeTakeFirst();if(!u)return null;return{id:u.id,organizationId:u.organization_id,type:u.type,source:u.source,specversion:u.specversion,subject:u.subject,time:u.time,datacontenttype:u.datacontenttype,dataschema:u.dataschema,data:u.data?JSON.parse(u.data):null,cron:u.cron,status:u.status,attempts:u.attempts,lastError:u.last_error,nextRetryAt:u.next_retry_at,createdAt:u.created_at,updatedAt:u.updated_at}}async findActiveCronEvent(i,t,u,l){let n=await this.db.selectFrom("events").selectAll().where("organization_id","=",i).where("type","=",t).where("source","=",u).where("cron","=",l).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!n)return null;return{id:n.id,organizationId:n.organization_id,type:n.type,source:n.source,specversion:n.specversion,subject:n.subject,time:n.time,datacontenttype:n.datacontenttype,dataschema:n.dataschema,data:n.data?JSON.parse(n.data):null,cron:n.cron,status:n.status,attempts:n.attempts,lastError:n.last_error,nextRetryAt:n.next_retry_at,createdAt:n.created_at,updatedAt:n.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((t)=>t.not(t.exists(t.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((t)=>({id:t.id,organizationId:t.organization_id,type:t.type,source:t.source,specversion:t.specversion,subject:t.subject,time:t.time,datacontenttype:t.datacontenttype,dataschema:t.dataschema,data:t.data?JSON.parse(t.data):null,cron:t.cron,status:t.status,attempts:t.attempts,lastError:t.last_error,nextRetryAt:t.next_retry_at,createdAt:t.created_at,updatedAt:t.updated_at}))}async cancelEvent(i,t,u){let l=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",t).where("source","=",u).where("status","in",["pending","processing"]).executeTakeFirst();if((l.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",i).where("status","in",["pending","processing"]).execute();return{success:(l.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(i,t){if(i.length===0)return;let u=new Date(Date.now()+t).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:u}).where("id","in",i).execute()}async ackDelivery(i,t,u){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",i).where("organization_id","=",t).executeTakeFirst())return{success:!1};let f=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",i).where("status","in",["pending","processing"]).where((c)=>c.exists(c.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",u).where("event_subscriptions.organization_id","=",t))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(f)await this.updateEventStatus(i);return{success:f}}async syncSubscriptions(i){let{organizationId:t,connectionId:u,subscriptions:l}=i,n=(y,X)=>{return`${y}::${X??""}`},f=await this.listSubscriptions(t,u),c=new Map;for(let y of f)c.set(n(y.eventType,y.publisher),y);let $=new Map;for(let y of l)$.set(n(y.eventType,y.publisher),y);let d=new Date().toISOString(),_=[],g=[],h=[],E=0;for(let[y,X]of $){let N=c.get(y);if(!N)_.push({id:crypto.randomUUID(),organization_id:t,connection_id:u,event_type:X.eventType,publisher:X.publisher??null,filter:X.filter??null,enabled:!0,created_at:d,updated_at:d});else{let U=N.filter??null,J=X.filter??null;if(U!==J)g.push({id:N.id,filter:J});else E++}}for(let[y,X]of c)if(!$.has(y))h.push(X.id);if(_.length>0)await this.db.insertInto("event_subscriptions").values(_).execute();if(g.length>0)await Promise.all(g.map((y)=>this.db.updateTable("event_subscriptions").set({filter:y.filter,updated_at:d}).where("id","=",y.id).execute()));if(h.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",h).execute();let v=_.length,r=g.length,x=h.length,O=await this.listSubscriptions(t,u);return{created:v,updated:r,deleted:x,unchanged:E,subscriptions:O}}}function uFu(i){return new tFu(i)}var lFu=w(()=>{H1()});class nFu{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((t,u)=>this.localEmit(t,u)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(i){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let t=this.listeners.get(i.organizationId);if(!t)t=new Map,this.listeners.set(i.organizationId,t);if(t.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${i.organizationId} (50)`),null;return t.set(i.id,i),this.totalCount++,i.id}remove(i,t){let u=this.listeners.get(i);if(!u)return;if(u.delete(t)){if(this.totalCount--,u.size===0)this.listeners.delete(i)}}emit(i,t){if(this.strategy)this.strategy.broadcast(i,t);else this.localEmit(i,t)}countForOrg(i){return this.listeners.get(i)?.size??0}get count(){return this.totalCount}localEmit(i,t){let u=this.listeners.get(i);if(!u||u.size===0)return;for(let l of u.values()){if(l.typePatterns&&!eT0(t.type,l.typePatterns))continue;try{l.push(t)}catch{this.remove(i,l.id)}}}}function eT0(i,t){for(let u of t){if(u===i)return!0;if(u.endsWith(".*")){let l=u.slice(0,-1);if(i.startsWith(l))return!0}}return!1}function fFu(i){return{id:i.id,type:i.type,source:i.source,subject:i.subject,data:i.data?MT0(i.data):void 0,time:i.time}}function MT0(i){if(typeof i==="string")try{return JSON.parse(i)}catch{return i}return i}var F$;var jyi=w(()=>{F$=new nFu});function cFu(i){if(typeof i==="object"&&i!==null){let l=i,n=l.status??l.code;if(typeof n==="number"&&qT0.has(n))return!0}let t=i instanceof Error?i.message:typeof i==="string"?i:"";if(!t)return!1;let u=t.toLowerCase();if(/\b401\b/.test(u))return!0;return VT0.some((l)=>u.includes(l))}function $Fu(i){let t=i instanceof Error?i.message:typeof i==="string"?i:"";if(!t)return!1;let u=t.toLowerCase();return aT0.some((l)=>u.includes(l))}var qT0,VT0,aT0,ya;var vlt=w(()=>{qT0=new Set([401]),VT0=["unauthorized","invalid_token","invalid api key","api key required","api-key required"],aT0=["tool on_events not found","tool not found"];ya=class ya extends Error{constructor(i){super(i);this.name="PermanentDeliveryError"}}});var Syi;var rlt=w(()=>{Syi={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function mT0(i){return i.endsWith("_self")}function oT0(i){return i.slice(0,-5)}function dFu(){return async(i,t)=>{try{if(mT0(i)){let c=oT0(i),$=await Vh.create(),d={organizationId:c,connectionId:i,publish:async(h,E,v,r)=>{await $.eventBus.publish(c,i,{type:h,subject:E,data:v,deliverAt:r?.deliverAt})},createMCPProxy:async(h)=>{let E={...$,getOrCreateClient:rS()},v=await bqi(h,E);return{callTool:async(r,x,O)=>{let y=await v.callTool(r,x,O);return{content:y.content,structuredContent:y.structuredContent,isError:y.isError}},close:()=>v.close()}}},_=t.filter((h)=>h.type==="registry.monitor.scheduled");if(_.length>0){let{parseMonitorConfig:h}=await Promise.resolve().then(() => (G6(),XOu)),E=await d.createMCPProxy(i);try{for(let v of _){let r=v.data&&typeof v.data==="object"?v.data:{},x=r.config&&typeof r.config==="object"?r.config:{},O=h(x);await E.callTool({name:"REGISTRY_MONITOR_RUN_START",arguments:{config:O}})}}finally{await E.close()}if(_.length===t.length)return{success:!0}}if(await ist(t,d))return{success:!0}}let u=await Vh.create(),l=await bqi(i,u),f=await Yei.forClient(QM(l)).ON_EVENTS({events:t});return{success:f.success,error:f.error,retryAfter:f.retryAfter,results:f.results}}catch(u){let l=u instanceof Error?u.message:String(u);if(console.error(`[EventBus] Failed to notify connection ${i}:`,l),cFu(u)||$Fu(u))throw new ya(l);return{success:!1,error:l}}}}var _Fu=w(()=>{bS();uC();O$i();_e();h$i();vlt()});function gFu(i){return{specversion:"1.0",id:i.id,source:i.source,type:i.type,time:i.time,subject:i.subject??void 0,datacontenttype:i.datacontenttype,dataschema:i.dataschema??void 0,data:i.data??void 0}}function sT0(i){let t=new Map;for(let l of i){let n=l.subscription.connectionId,f=t.get(n);if(f){if(f.deliveryIds.push(l.delivery.id),!f.seenEventIds.has(l.event.id))f.seenEventIds.add(l.event.id),f.events.push(gFu(l.event))}else t.set(n,{connectionId:l.subscription.connectionId,deliveryIds:[l.delivery.id],events:[gFu(l.event)],seenEventIds:new Set([l.event.id])})}let u=new Map;for(let[l,n]of t)u.set(l,{connectionId:n.connectionId,deliveryIds:n.deliveryIds,events:n.events});return u}class wlt{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;automationEventDispatcher;constructor(i,t,u){this.storage=i;this.notifySubscriber=u??dFu(),this.config={...Syi,...t}}setAutomationEventDispatcher(i){this.automationEventDispatcher=i}async start(){if(this.running)return;await this.storage.resetStuckDeliveries();let i=await this.storage.findOrphanedCronEvents();for(let t of i)await this.scheduleNextCronDelivery(t);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(i){console.error("[EventBus] Error processing events:",i)}finally{this.processing=!1}}async processEvents(){let i=await this.storage.claimPendingDeliveries(this.config.batchSize);if(i.length===0)return;let t=sT0(i),u=await Promise.allSettled(Array.from(t.entries()).map(async([f,c])=>{let $=new Set;try{let _=await this.notifySubscriber(c.connectionId,c.events);if(_.results&&Object.keys(_.results).length>0)await this.processPerEventResults(c,_);else if(_.success)await this.storage.markDeliveriesDelivered(c.deliveryIds);else if(_.retryAfter&&_.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(c.deliveryIds,_.retryAfter);else await this.storage.markDeliveriesFailed(c.deliveryIds,_.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(_){if(_ instanceof ya){await this.storage.markDeliveriesPermanentlyFailed(c.deliveryIds,_.message);for(let g of c.events)$.add(g.id)}else{let g=_ instanceof Error?_.message:String(_);console.error(`[EventBus] Failed to notify subscription ${f}:`,g),await this.storage.markDeliveriesFailed(c.deliveryIds,g,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let d=new Set;for(let _ of i)if(c.deliveryIds.includes(_.delivery.id))d.add(_.event.id);return{eventIds:d,permanentlyFailed:$}})),l=new Set,n=new Set;for(let f of u)if(f.status==="fulfilled"){for(let c of f.value.eventIds)l.add(c);for(let c of f.value.permanentlyFailed)n.add(c)}for(let f of l)try{await this.storage.updateEventStatus(f);let c=i.find(($)=>$.event.id===f)?.event;if(c?.cron&&!n.has(f))await this.scheduleNextCronDelivery(c)}catch(c){console.error(`[EventBus] Failed to update event status ${f}:`,c)}if(this.automationEventDispatcher){let f=new Set,c=[];for(let $ of i){if($.delivery.attempts>0)continue;if(!f.has($.event.id))f.add($.event.id),c.push({id:$.event.id,source:$.event.source,type:$.event.type,data:$.event.data,organizationId:$.event.organizationId})}if(c.length>0)this.automationEventDispatcher.dispatchForEvents(c)}}async processPerEventResults(i,t){let u=[],l=new Map,n=[],f=new Map;for(let c=0;c<i.events.length;c++){let $=i.events?.[c];if(!$)continue;let d=i.deliveryIds?.[c];if(!d)continue;f.set($.id,d)}for(let c of i.events){let $=f.get(c.id);if(!$)continue;let d=t.results?.[c.id];if(d)if(d.success)u.push($);else if(d.retryAfter&&d.retryAfter>0){let _=l.get(d.retryAfter)||[];_.push($),l.set(d.retryAfter,_)}else n.push({deliveryId:$,error:d.error||"Event processing failed"});else if(t.success)u.push($);else if(t.retryAfter&&t.retryAfter>0){let _=l.get(t.retryAfter)||[];_.push($),l.set(t.retryAfter,_)}else n.push({deliveryId:$,error:t.error||"Batch processing failed"})}if(u.length>0)await this.storage.markDeliveriesDelivered(u);for(let[c,$]of l)await this.storage.scheduleRetryWithoutAttemptIncrement($,c);if(n.length>0){let c=new Map;for(let{deliveryId:$,error:d}of n){let _=c.get(d)||[];_.push($),c.set(d,_)}for(let[$,d]of c)await this.storage.markDeliveriesFailed(d,$,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(i){if(!i.cron)return;try{let u=new z5(i.cron,{timezone:"UTC"}).nextRun();if(!u)return;let l=u.toISOString(),n=await this.storage.getMatchingSubscriptions(i);if(n.length===0)return;await this.storage.createDeliveries(i.id,n.map((f)=>f.id),l)}catch(t){console.error(`[EventBus] Failed to schedule next cron delivery for event ${i.id}:`,t)}}}var hFu=w(()=>{gV();vlt();rlt();_Fu()});class xlt{storage;worker;notifyStrategy;running=!1;constructor(i){this.storage=i.storage,this.notifyStrategy=i.notifyStrategy,this.worker=new wlt(this.storage,i.config)}setAutomationEventDispatcher(i){this.worker.setAutomationEventDispatcher(i)}async publish(i,t,u){if(u.deliverAt&&u.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let l;if(u.cron){try{let g=new z5(u.cron,{timezone:"UTC"}).nextRun();if(!g)throw Error("Cron expression does not produce a next run time");l=g.toISOString()}catch(_){throw Error(`Invalid cron expression: ${_ instanceof Error?_.message:String(_)}`)}let d=await this.storage.findActiveCronEvent(i,u.type,t,u.cron);if(d)return d}let n=crypto.randomUUID(),f=new Date().toISOString(),c=await this.storage.publishEvent({id:n,organizationId:i,type:u.type,source:t,subject:u.subject,time:f,data:u.data,cron:u.cron});F$.emit(i,fFu(c));let $=await this.storage.getMatchingSubscriptions(c);if($.length>0){let d=u.deliverAt??l;await this.storage.createDeliveries(n,$.map((g)=>g.id),d);let _=d!=null&&new Date(d).getTime()<=Date.now();if(this.notifyStrategy&&(!d||_))await this.notifyStrategy.notify(n).catch((g)=>{console.warn("[EventBus] Notify failed (non-critical):",g)})}return c}async subscribe(i,t){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:i,connectionId:t.connectionId,publisher:t.publisher,eventType:t.eventType,filter:t.filter})}async unsubscribe(i,t){return this.storage.unsubscribe(t,i)}async listSubscriptions(i,t){return this.storage.listSubscriptions(i,t)}async getSubscription(i,t){return this.storage.getSubscription(t,i)}async getEvent(i,t){return this.storage.getEvent(t,i)}async cancelEvent(i,t,u){return this.storage.cancelEvent(t,i,u)}async ackEvent(i,t,u){return this.storage.ackDelivery(t,i,u)}async syncSubscriptions(i,t){return this.storage.syncSubscriptions({organizationId:i,...t})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((i)=>{console.error("[EventBus] Error processing after notify:",i)})});await this.worker.processNow().catch((i)=>{console.error("[EventBus] Error processing pending events on startup:",i)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(i){console.error("[EventBus] Error stopping notify strategy:",i)}}isRunning(){return this.running}}var EFu=w(()=>{gV();jyi();hFu()});class Dlt{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(i){this.options=i}async start(i){if(this.sub)return;if(i)this.onNotify=i;if(!this.onNotify)return;let t=this.options.getConnection();if(!t)return;this.sub=t.subscribe("mesh.events.notify"),(async()=>{for await(let u of this.sub)this.onNotify?.()})().catch((u)=>{console.error("[NatsNotify] Subscription error:",u)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(i){try{let t=this.options.getConnection();if(!t)return;t.publish("mesh.events.notify",this.encoder.encode(i))}catch(t){console.warn("[NatsNotify] Publish failed (non-critical):",t)}}}class Olt{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 t=this.options.getConnection();if(!t)return;this.sub=t.subscribe("mesh.sse.broadcast");let u=new TextDecoder;(async()=>{for await(let l of this.sub)try{let n=JSON.parse(u.decode(l.data));if(typeof n?.originId!=="string"||typeof n?.organizationId!=="string"||typeof n?.event?.id!=="string"||typeof n?.event?.type!=="string")continue;if(n.originId===this.originId)continue;this.localEmit?.(n.organizationId,n.event)}catch{}})().catch((l)=>{console.error("[NatsSSEBroadcast] Subscription error:",l)})}broadcast(i,t){this.localEmit?.(i,t);let u={originId:this.originId,organizationId:i,event:t};try{let l=this.options.getConnection();if(!l)return;l.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(u)))}catch(l){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",l)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function vFu(...i){return{async start(t){await Promise.all(i.map((u)=>u.start(t)))},async stop(){await Promise.all(i.map((t)=>t.stop().catch((u)=>{console.error("[NotifyStrategy] Error stopping strategy:",u)})))},async notify(t){await Promise.all(i.map((u)=>u.notify(t).catch((l)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",l)})))}}}class ylt{intervalMs;timer=null;onNotify=null;constructor(i){this.intervalMs=i}async start(i){if(this.timer)return;this.onNotify=i,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify(i){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}async function rFu(i,t,u=5){try{await Tr(t,{maxAttempts:u,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(l){console.error(`${i} Deferred start failed:`,l instanceof H6?l.cause:l)}}function wFu(i,t,u){let l=uFu(i.db),n=u?.pollIntervalMs??Syi.pollIntervalMs,f=new Dlt({getConnection:()=>t.getConnection()}),c=vFu(new ylt(n),f),$=new Olt({getConnection:()=>t.getConnection()});return F$.start($).catch((d)=>{console.error("[SSEHub] Failed to start broadcast strategy:",d)}),t.onReady(()=>{rFu("[NatsNotify]",()=>f.start()),rFu("[NatsSSEBroadcast]",()=>$.start())}),new xlt({storage:l,config:u,notifyStrategy:c})}var Xlt=w(()=>{H1();lFu();EFu();rlt();jyi();jyi()});var xFu=()=>{};var Nlt=()=>{};var DFu=()=>{};var pT0,nBf;var OFu=w(()=>{xFu();Nlt();Yx();DFu();pT0={br:".br",zstd:".zst",gzip:".gz"},nBf=Object.keys(pT0)});var yFu=w(()=>{OFu()});var XFu=()=>{};var NFu=w(()=>{XFu()});var JFu=()=>{};var UFu=w(()=>{KLi()});var Jlt=w(()=>{Px();UFu()});var Ult="x-hono-disable-ssg",UBf;var Tlt=w(()=>{Jlt();UBf=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Ult]:"true"}})}catch{return null}})()});var TFu=w(()=>{jfi()});var Flt=w(()=>{TFu()});var FFu=w(()=>{NFu();JFu();Nlt();Tlt();Flt();Jlt()});var ZFu=w(()=>{Tlt();Flt();FFu()});var fQf;var IFu=w(()=>{ZFu();({write:fQf}=Bun)});var uF0=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,t){this.#i.send(i,t??{})}raw;binaryType="arraybuffer";get readyState(){return this.#i.readyState}url;protocol;close(i,t){this.#i.close(i,t)}},BFu=(i)=>{return(...t)=>{if(typeof t[0]==="function"){let[u,l]=t;return async function(f,c){let $=await u(f),d=await i(f,$,l);if(d)return d;await c()}}else{let[u,l,n]=t;return(async()=>{let f=await i(u,l,n);if(!f)throw Error("Failed to upgrade WebSocket");return f})()}}};var QFu=()=>{};var Xa=(i)=>("server"in i.env)?i.env.server:i.env;var zyi=()=>{};var lF0;var YFu=w(()=>{QFu();zyi();lF0=BFu((i,t)=>{let u=Xa(i);if(!u)throw TypeError("env has to include the 2nd argument of fetch.");if(u.upgrade(i.req.raw,{data:{events:t,url:new URL(i.req.url),protocol:i.req.url}}))return new Response(null);return})});var Zlt=(i)=>{let t=Xa(i);if(!t)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof t.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let u=t.requestIP(i.req.raw);if(!u)return{remote:{}};return{remote:{address:u.address,addressType:u.family==="IPv6"||u.family==="IPv4"?u.family:void 0,port:u.port}}};var PFu=w(()=>{zyi()});var AFu=w(()=>{yFu();IFu();YFu();PFu();zyi()});var GFu;var WFu=w(()=>{GFu={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"}}});var Kyi={};Gi(Kyi,{waitForSeed:()=>gF0,seedLocalMode:()=>$F0,markSeedComplete:()=>_F0,isLocalMode:()=>gE,getLocalAdminUser:()=>Na,getLocalAdminPassword:()=>byi});import{userInfo as nF0}from"os";async function byi(){return Qt().betterAuthSecret||"local-mode-default"}function kFu(){try{return nF0().username||"local"}catch{return"local"}}function fF0(i){return i.charAt(0).toUpperCase()+i.slice(1)}async function cF0(){let i=T0(),t=await i.db.selectFrom("user").select(i.db.fn.countAll().as("count")).executeTakeFirst();return Number(t?.count??0)===0}async function $F0(){if(!await cF0())return!1;let t=kFu(),u=`${t}@localhost.mesh`,l=fF0(t),n=await byi(),f=await an.api.signUpEmail({body:{email:u,password:n,name:l}});if(!f?.user?.id)throw Error("Failed to create local admin user");let c=f.user.id,$=T0();await $.db.updateTable("user").set({role:"admin"}).where("id","=",c).execute();let d=`${t}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),_=`${l} Local`;return await $.db.updateTable("organization").set({name:_,slug:d}).where("id","in",(g)=>g.selectFrom("member").select("organizationId").where("userId","=",c)).execute(),!0}async function Na(){let i=T0(),t=`${kFu()}@localhost.mesh`;return i.db.selectFrom("user").where("email","=",t).selectAll().executeTakeFirst()}function gE(){return Qt().localMode}function _F0(){jFu()}function gF0(){return dF0}var jFu,dF0;var ED=w(()=>{z$();U0();E2();dF0=new Promise((i)=>{if(jFu=i,!gE())i()})});function SFu(){let i=Object.keys(s0.socialProviders??{}),t=i.length>0,u=i.map((n)=>({name:n,icon:GFu[n].icon})),l=Qt().localMode;return{emailAndPassword:{enabled:s0.emailAndPassword?.enabled??!1},magicLink:{enabled:s0.magicLinkConfig?.enabled??!1},emailOtp:{enabled:s0.emailOtpConfig?.enabled??!1},resetPassword:{enabled:kyi},socialProviders:{enabled:t,providers:u},sso:s0.ssoConfig?{enabled:!0,providerId:s0.ssoConfig.providerId}:{enabled:!1},stdioEnabled:l,localMode:gE()}}var qP,zFu;var Ilt=w(()=>{nn();AFu();T1();U0();E2();z$();Boi();Uqi();WFu();ED();qk();qP=new St;qP.post("/local-session",async(i)=>{if(!gE())return i.json({success:!1,error:"Local mode is not active"},403);let t;try{t=Zlt(i).remote.address}catch{}if(!(t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1"))return i.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:l}=await Promise.resolve().then(() => (ED(),Kyi));await l();let{auth:n}=await Promise.resolve().then(() => (E2(),pTu)),f=await Na();if(!f)return i.json({success:!1,error:"Local admin user not found"},500);let c=await byi();return await n.api.signInEmail({body:{email:f.email,password:c},asResponse:!0})}catch(l){return console.error("Failed to create local session:",l),i.json({success:!1,error:l instanceof Error?l.message:"Failed to create local session"},500)}});qP.get("/my-capabilities/:slug",async(i)=>{let t=i.req.param("slug"),u=await an.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({error:"Authentication required"},401);let l=T0().db,n=await l.selectFrom("organization").select(["id"]).where("slug","=",t).executeTakeFirst();if(!n)return i.json({role:null,capabilities:{}});let c=(await l.selectFrom("member").select(["role"]).where("userId","=",u.user.id).where("organizationId","=",n.id).executeTakeFirst())?.role??null;if(!c)return i.json({role:null,capabilities:{}});if(c==="owner"||c==="admin")return i.json({role:c,capabilities:Gpt()});if(c==="user")return i.json({role:c,capabilities:pLi({self:[...Mfi]})});let $=await l.selectFrom("organizationRole").select(["permission"]).where("role","=",c).where("organizationId","=",n.id).executeTakeFirst(),d={},_=$?.permission;if(typeof _==="string")try{let g=JSON.parse(_);if(g&&typeof g==="object"&&!Array.isArray(g))d=g}catch{d={}}return i.json({role:c,capabilities:pLi(d)})});qP.get("/domain-lookup",async(i)=>{let t=await an.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);if(!t.user.emailVerified)return i.json({found:!1,organizations:[]});let u=t.user.email?.split("@")[1]?.toLowerCase();if(!u||h2.has(u))return i.json({found:!1,organizations:[]});try{let n=await new r5(T0().db).getAllByDomain(u);if(n.length===0)return i.json({found:!1,organizations:[]});let f=await T0().db.selectFrom("organization").select(["id","name","slug","logo"]).where("id","in",n.map((d)=>d.organizationId)).execute(),c=new Map(f.map((d)=>[d.id,d])),$=n.map((d)=>{let _=c.get(d.organizationId);if(!_)return null;return{id:_.id,name:_.name,slug:_.slug,logo:_.logo,autoJoinEnabled:d.autoJoinEnabled}}).filter((d)=>d!==null);return i.json({found:$.length>0,organizations:$})}catch(l){return console.error("[Auth] Domain lookup failed:",l),i.json({success:!1,error:"Domain lookup failed"},500)}});qP.post("/domain-join",async(i)=>{let t=await an.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);if(!t.user.emailVerified)return i.json({success:!1,error:"Email must be verified to join"},403);let u=t.user.email?.split("@")[1]?.toLowerCase();if(!u||h2.has(u))return i.json({success:!1,error:"Generic email domains cannot auto-join"},403);let l=await i.req.json().catch(()=>({})),n=typeof l.organizationSlug==="string"&&l.organizationSlug.trim()?l.organizationSlug.trim():null;try{let f=T0().db,d=(await new r5(f).getAllByDomain(u)).filter((g)=>g.autoJoinEnabled);if(d.length===0)return i.json({success:!1,error:"Auto-join is not available for this domain"},403);let _;if(n){let g=await f.selectFrom("organization").select(["id","slug"]).where("slug","=",n).executeTakeFirst();if(!g||!d.some((h)=>h.organizationId===g.id))return i.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);_=g}else if(d.length===1){let g=await f.selectFrom("organization").select(["id","slug"]).where("id","=",d[0].organizationId).executeTakeFirst();if(!g)return i.json({success:!1,error:"Organization not found"},404);_=g}else return i.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await an.api.addMember({body:{userId:t.user.id,role:"user",organizationId:_.id}})}catch(g){if(!(g instanceof Error?g.message.toLowerCase():"").includes("already a member"))return console.error("[Auth] Domain join addMember failed:",g),i.json({success:!1,error:"Failed to join organization"},500)}return Ju.capture({distinctId:t.user.id,event:"organization_domain_joined",groups:{organization:_.id},properties:{organization_id:_.id,organization_slug:_.slug,email_domain:u}}),i.json({success:!0,slug:_.slug})}catch(f){return Ju.captureException(f,t.user.id),console.error("[Auth] Domain join failed:",f),i.json({success:!1,error:"Failed to join organization"},500)}});qP.post("/domain-setup",async(i)=>{let t=await an.api.getSession({headers:i.req.raw.headers});if(!t?.user)return i.json({success:!1,error:"Authentication required"},401);if(!t.user.emailVerified)return i.json({success:!1,error:"Email must be verified"},403);let u=t.user.email?.split("@")[1]?.toLowerCase();if(!u||h2.has(u))return i.json({success:!1,error:"Corporate email required"},403);let l=await i.req.json().catch(()=>({})),n=typeof l.name==="string"&&l.name.trim().length>0?l.name.trim():null,f=typeof l.logo==="string"&&l.logo.length>0?l.logo:null,c=l.claimDomain!==!1;try{let $=T0().db,d=new r5($),_=await d.getAllByDomain(u);if(_.length>0){let N=await $.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",t.user.id).where("member.organizationId","in",_.map((U)=>U.organizationId)).executeTakeFirst();if(N)return i.json({success:!0,slug:N.slug,alreadyExists:!0})}let g=u.split(".")[0]??u,h=n??g.charAt(0).toUpperCase()+g.slice(1),E=(n??g).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||g.toLowerCase().replace(/[^a-z0-9-]/g,""),v=null;for(let U=0;U<3;U++){let J=U===0?"":`-${Math.random().toString(36).slice(2,6)}`,T=U===0?h:`${h}${J}`,Q=`${E}${J}`;try{v=await an.api.createOrganization({body:{name:T,slug:Q,userId:t.user.id}});break}catch(B){if(!(B instanceof Error&&("body"in B)&&B.body?.code==="ORGANIZATION_ALREADY_EXISTS")||U===2)throw B}}if(!v?.id)throw Error("Failed to create organization");let r=v.id;if(c)await d.setDomain(r,u,!0);let x=!1,O=null,y=null;try{let N=Qt().firecrawlApiKey;if(N){let U=await Wdi(u,N,h);if(U){let J=new ZM(T0().db),T=await J.create(r,U);if(await J.setDefault(T.id,r),x=!0,U.name&&U.name!==h)O=U.name;y=U.favicon??U.logo??null}}}catch(N){console.error("[Auth] Brand extraction failed (non-fatal):",N)}let X={};if(!n&&O)X.name=O;if(f)X.logo=f;else if(y)X.logo=y;if(Object.keys(X).length>0)try{await an.api.updateOrganization({headers:i.req.raw.headers,body:{organizationId:r,data:X}})}catch(N){console.error("[Auth] Org update failed (non-fatal):",N)}return Ju.identify({distinctId:t.user.id,properties:{email:t.user.email,$set:{email:t.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),Ju.groupIdentify({groupType:"organization",groupKey:r,properties:{name:v.slug??E,slug:v.slug??E,email_domain:u,brand_extracted:x,created_at:new Date().toISOString()}}),Ju.capture({distinctId:t.user.id,event:"organization_created",groups:{organization:r},properties:{organization_id:r,organization_slug:v.slug??E,email_domain:u,brand_extracted:x}}),i.json({success:!0,slug:v.slug??E,brandExtracted:x})}catch($){return Ju.captureException($,t.user?.id),console.error("[Auth] Domain setup failed:",$),i.json({success:!1,error:"Failed to set up organization"},500)}});qP.get("/org-access-status/:slug",async(i)=>{let t=i.req.param("slug"),u=await an.api.getSession({headers:i.req.raw.headers});if(!u?.user)return i.json({success:!1,error:"Authentication required"},401);let l=T0().db,n=await l.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",t).executeTakeFirst();if(!n)return i.json({status:"not-found"});let f={id:n.id,name:n.name,slug:n.slug,logo:n.logo};if(await l.selectFrom("member").select(["id"]).where("userId","=",u.user.id).where("organizationId","=",n.id).executeTakeFirst())return i.json({status:"member",organization:f});try{let $=await an.api.listUserInvitations({headers:i.req.raw.headers}),d=Date.now(),_=$.find((g)=>g.organizationId===n.id&&g.status==="pending"&&new Date(g.expiresAt).getTime()>d);if(_)return i.json({status:"pending-invite",invitation:{id:_.id},organization:f})}catch($){console.error("[Auth] listUserInvitations failed:",$)}if(u.user.emailVerified){let $=u.user.email?.split("@")[1]?.toLowerCase();if($&&!h2.has($)){let d=await new r5(l).getByOrganizationId(n.id);if(d?.autoJoinEnabled&&d.domain===$)return i.json({status:"auto-domain-join",organization:{...f,domain:$}})}}return i.json({status:"no-access",organization:f})});zFu=qP});import*as Ryi from"jose";function hF0(i){i.get("/status",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!await Qlt(u,u.auth.user.id,l))return t.json({error:"Not a member of this organization"},403);let f=await u.storage.orgSsoConfig.getByOrgId(l);if(!f||!f.enforced)return t.json({ssoRequired:!1});let c=await u.storage.orgSsoSessions.isValid(u.auth.user.id,l);return t.json({ssoRequired:!0,authenticated:c,issuer:f.issuer,domain:f.domain})}),i.get("/authorize",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!await Qlt(u,u.auth.user.id,l))return t.json({error:"Not a member of this organization"},403);let f=await u.storage.orgSsoConfig.getByOrgId(l);if(!f)return t.json({error:"SSO not configured for this organization"},404);let c=await Blt(f.issuer,f.discoveryEndpoint),$=EF0(),d=await vF0($),_=crypto.randomUUID(),g=JSON.stringify({state:_,codeVerifier:$,orgId:l,userId:u.auth.user.id});VLi(t,"org_sso_state",g,{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:600});let h=new URLSearchParams({response_type:"code",client_id:f.clientId,redirect_uri:`${u.baseUrl}/api/org-sso/callback`,scope:f.scopes.join(" "),state:_,code_challenge:d,code_challenge_method:"S256"}),E=`${c.authorization_endpoint}?${h.toString()}`;return t.redirect(E)}),i.get("/callback",async(t)=>{let u=t.get("meshContext"),l=t.req.query("code"),n=t.req.query("state"),f=t.req.query("error");if(f)return t.redirect(`/?sso_error=${encodeURIComponent(f)}`);if(!l||!n)return t.redirect("/?sso_error=missing_code_or_state");let c=Cfi(t,"org_sso_state");if(!c)return t.redirect("/?sso_error=state_expired");VLi(t,"org_sso_state","",{httpOnly:!0,secure:!0,sameSite:"Lax",path:"/api/org-sso/callback",maxAge:0});let $;try{$=JSON.parse(c)}catch{return t.redirect("/?sso_error=invalid_state")}if($.state!==n)return t.redirect("/?sso_error=state_mismatch");if(!u.auth.user||u.auth.user.id!==$.userId)return t.redirect("/?sso_error=session_expired");let d=await u.storage.orgSsoConfig.getByOrgId($.orgId);if(!d)return t.redirect("/?sso_error=sso_not_configured");let _=await Blt(d.issuer,d.discoveryEndpoint),g=await fetch(_.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:l,redirect_uri:`${u.baseUrl}/api/org-sso/callback`,client_id:d.clientId,client_secret:d.clientSecret,code_verifier:$.codeVerifier})});if(!g.ok)return console.error("[org-sso] Token exchange failed:",await g.text()),t.redirect("/?sso_error=token_exchange_failed");let h=await g.json();if(!h.id_token)return t.redirect("/?sso_error=no_id_token");try{let r=Ryi.createRemoteJWKSet(new URL(_.jwks_uri)),{payload:x}=await Ryi.jwtVerify(h.id_token,r,{issuer:d.issuer,audience:d.clientId}),O=x.email?.toLowerCase(),y=u.auth.user.email?.toLowerCase();if(!O||O!==y)return console.error(`[org-sso] Email mismatch: token=${O}, user=${y}`),t.redirect("/?sso_error=email_mismatch")}catch(r){return console.error("[org-sso] ID token verification failed:",r),t.redirect("/?sso_error=token_verification_failed")}await u.storage.orgSsoSessions.upsert(u.auth.user.id,$.orgId);let E=await Qlt(u,u.auth.user.id,$.orgId),v=E?.orgSlug?`/${E.orgSlug}`:"/";return t.redirect(v)}),i.get("/config",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!rF0(u))return t.json({error:"Admin role required"},403);let n=await u.storage.orgSsoConfig.getByOrgId(l);if(!n)return t.json({configured:!1});return t.json({configured:!0,config:u.storage.orgSsoConfig.toPublic(n)})}),i.post("/config",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!Ylt(u))return t.json({error:"Owner role required"},403);let n=await t.req.json();if(!n.issuer||!n.clientId||!n.domain)return t.json({error:"issuer, clientId, and domain are required"},400);let f=await u.storage.orgSsoConfig.getByOrgId(l);if(!f&&!n.clientSecret)return t.json({error:"clientSecret is required for initial SSO setup"},400);let c=n.clientSecret||f?.clientSecret||"";try{await Blt(n.issuer,n.discoveryEndpoint)}catch(d){return t.json({error:"Failed to reach OIDC discovery endpoint",details:d instanceof Error?d.message:String(d)},400)}let $=await u.storage.orgSsoConfig.upsert(l,{issuer:n.issuer,clientId:n.clientId,clientSecret:c,discoveryEndpoint:n.discoveryEndpoint,scopes:n.scopes,domain:n.domain,enforced:n.enforced});return t.json({success:!0,config:u.storage.orgSsoConfig.toPublic($)})}),i.post("/config/enforce",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!Ylt(u))return t.json({error:"Owner role required"},403);let n=await t.req.json();if(!await u.storage.orgSsoConfig.getByOrgId(l))return t.json({error:"SSO must be configured before enforcing"},400);return await u.storage.orgSsoConfig.setEnforced(l,n.enforced),t.json({success:!0,enforced:n.enforced})}),i.delete("/config",async(t)=>{let u=t.get("meshContext");if(!u.auth.user)return t.json({error:"Authentication required"},401);let l=u.organization?.id;if(!l)return t.json({error:"Organization context required"},400);if(!Ylt(u))return t.json({error:"Owner role required"},403);return await u.storage.orgSsoConfig.delete(l),t.json({success:!0})})}function Hyi(i){let t;try{t=new URL(i)}catch{throw Error(`Invalid URL: ${i}`)}let u=Qt().localMode;if(t.protocol!=="https:"&&!(u&&t.protocol==="http:"))throw Error(`OIDC URL must use HTTPS: ${i}`);let l=t.hostname,n=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^localhost$/i],f=/^127\.|^\[::1\]$|^localhost$/i.test(l);if(u&&f)return;for(let c of n)if(c.test(l))throw Error(`OIDC URL must not point to a private network address: ${l}`)}async function Blt(i,t){let u=t||i,l=bFu.get(u);if(l&&l.expiresAt>Date.now())return l.doc;let n=t||`${i.replace(/\/$/,"")}/.well-known/openid-configuration`;Hyi(n);let f=await fetch(n);if(!f.ok)throw Error(`OIDC discovery failed: ${f.status} ${f.statusText}`);let c=await f.json();if(!c.authorization_endpoint||!c.token_endpoint||!c.jwks_uri)throw Error("OIDC discovery document missing required endpoints");return Hyi(c.authorization_endpoint),Hyi(c.token_endpoint),Hyi(c.jwks_uri),bFu.set(u,{doc:c,expiresAt:Date.now()+3600000}),c}function EF0(){let i=new Uint8Array(32);return crypto.getRandomValues(i),btoa(String.fromCharCode(...i)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function vF0(i){let u=new TextEncoder().encode(i),l=await crypto.subtle.digest("SHA-256",u);return btoa(String.fromCharCode(...new Uint8Array(l))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Qlt(i,t,u){return await i.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug as orgSlug","member.role"]).where("member.userId","=",t).where("member.organizationId","=",u).executeTakeFirst()??null}function rF0(i){let t=i.auth.user?.role;if(!t)return!1;return Zv.includes(t)}function Ylt(i){return i.auth.user?.role==="owner"}var Lyi=()=>{let i=new St;return hF0(i),i},bFu;var Plt=w(()=>{nn();aLi();U0();Jy();bFu=new Map});function DF0(i){if(i==="claude-code")return wF0;if(i==="codex")return xF0;return null}function KFu(i,t){return DF0(i)?.[t]??null}var wF0,xF0;var HFu=w(()=>{wF0={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"}},xF0={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 RFu=w(()=>{HFu()});function LFu(i){return i.type==="tool-call"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function OF0(i){return i.type==="tool-result"&&i.toolName==="todo_write"&&typeof i.toolCallId==="string"}function CFu(i){let t=null;for(let l=i.length-1;l>=0&&t===null;l--){let f=i[l].content;if(!Array.isArray(f))continue;for(let c=f.length-1;c>=0;c--){let $=f[c];if(LFu($)){t=$.toolCallId;break}}}if(t===null)return i;let u=t;return i.map((l)=>{let n=l.content;if(!Array.isArray(n))return l;let f=n.filter((c)=>{if(LFu(c))return c.toolCallId===u;if(OF0(c))return c.toolCallId===u;return!0});if(f.length===n.length)return l;return{...l,content:f}})}function yF0(i){let t=!1,u=i.map((l)=>{if(l.role!=="assistant")return l;if(!l.parts.some((f)=>("state"in f)&&f.state==="approval-requested"))return l;return t=!0,{...l,parts:l.parts.map((f)=>{if(!("state"in f)||f.state!=="approval-requested"||!("approval"in f)||!f.approval)return f;return{...f,state:"output-denied",approval:{...f.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return t?u:i}function XF0(i){let[t,u]=i.reduce((l,n)=>{if(n.role==="system")l[0].push(n);else l[1].push(n);return l},[[],[]]);return{systemMessages:t,messages:u}}async function eFu(i,t){let u=i.filter((h)=>h.role!=="assistant"||h.parts&&h.parts.length>0),l=await jV({messages:u}),n=yF0(l),f=await r7(n,{tools:t.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:c,messages:$}=XF0(f),d=CFu($),g=fit({messages:d,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((h)=>{if(h.role!=="assistant")return h;let E=Array.isArray(h.content)?h.content.filter((v)=>v.type!=="reasoning"&&v.type!=="thinking"&&v.type!=="redacted-reasoning").map((v)=>{let r=v;if("providerOptions"in r||"providerMetadata"in r){let{providerOptions:x,providerMetadata:O,...y}=r;if(r.type==="tool-call"){let X=O?.google,N=x?.google;return{...y,...X?{providerMetadata:{google:X}}:{},...N?{providerOptions:{google:N}}:{}}}return y}return v}):h.content;return{...h,content:Array.isArray(E)&&E.length===0?[{type:"text",text:""}]:E,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:c,messages:g,originalMessages:l}}var MFu=w(()=>{$n()});function qFu(i){let t=i.filter((l)=>l.role==="system"),u=i.find((l)=>l.role!=="system");return{systemMessages:t,requestMessage:u}}async function NF0(i,t){return await i.loadHistory(t)}function JF0(i,t){let u=i.filter((f)=>f.parts&&f.parts.length>0);if(!t)return u;let l=u.findIndex((f)=>f.id===t.id);return l>=0?[...u.slice(0,l),t]:[...u,t]}async function VFu(i,t,u,l){let n=await NF0(i,l),f=JF0(n,t);return[...u,...f]}var Alt=()=>{};import{z as Glt}from"zod";function Cyi(i){let{toolOutputMap:t}=i;return hl({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:hi(Glt.object({tool_call_id:Glt.string(),pattern:Glt.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:u,pattern:l})=>{if(!t.has(u))return{result:`Tool output not found for tool call id: ${u}. Available ids: ${[...t.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let n=t.get(u),f;try{f=new RegExp(l)}catch{return{result:`Invalid regex pattern: ${l}`,matchCount:0,totalLines:0}}let c=n.split(`
107890
107891
  `),$=c.filter((g)=>f.test(g)),d=$.join(`
107891
107892
  `),_=rc(d);if(_>vD){let g=Ed(d);return{result:`Output is still too long (${_} tokens), use a more specific pattern to reduce output.
107892
107893
 
@@ -107925,7 +107926,7 @@ ${X}`;if(f.has(y))x(),E(y)}),x()}return{messagesPrompt:_,systemPrompt:l,...u.len
107925
107926
  ...[truncated ${i.length-t} chars]`}if(typeof i!=="object"||i===null)return i;if(Array.isArray(i)){let f=-1,c=0;for(let $=0;$<i.length;$++){let d=i[$];if(typeof d==="string"&&d.length>c)f=$,c=d.length}if(f>=0&&c>t){let $=i[f].slice(0,t)+`
107926
107927
  ...[truncated ${c-t} chars]`,d=[...i];return d[f]=$,d}return i}let u=i,l=null,n=0;for(let[f,c]of Object.entries(u))if(typeof c==="string"&&c.length>n)l=f,n=c.length;if(l&&n>t){let f=u[l].slice(0,t)+`
107927
107928
  ...[truncated ${n-t} chars]`;return{...u,[l]:f}}return i}function slt(i={}){let t=YIu(i.defaultSettings?.logger);if(i.defaultSettings){let n=NIu(i.defaultSettings);if(!n.valid)throw Error(`Invalid default settings: ${n.errors.join(", ")}`);if(n.warnings.length>0)n.warnings.forEach((f)=>t.warn(`Claude Code Provider: ${f}`))}let u=(n,f={})=>{let c={...i.defaultSettings,...f},$=NIu(c);if(!$.valid)throw Error(`Invalid settings: ${$.errors.join(", ")}`);return new xI0({id:n,settings:c,settingsValidationWarnings:$.warnings})},l=function(n,f){if(new.target)throw Error("The Claude Code model function cannot be called with the new keyword.");return u(n,f)};return l.languageModel=u,l.chat=u,l.specificationVersion="v3",l.embeddingModel=(n)=>{throw new j6({modelId:n,modelType:"embeddingModel"})},l.imageModel=(n)=>{throw new j6({modelId:n,modelType:"imageModel"})},l}var RZ0="Image URLs are not supported by this provider; supply base64/data URLs.",cr="Unable to convert image content; supply base64/data URLs.",iI0,tI0,fI0,cI0,UIu="Claude Code SDK output ended unexpectedly; returning truncated response from buffered text. Await upstream fix to avoid data loss.",dI0=512,_I0,gI0,FIu="Claude Agent SDK features (hooks/MCP/images) require streaming input. Set `streamingInput: 'always'` or provide `canUseTool` (auto streams only when canUseTool is set).",EI0,rI0,wI0=1e4,xI0=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;modelId;settings;sessionId;modelValidationWarning;settingsValidationWarnings;logger;constructor(t){this.modelId=t.id,this.settings=t.settings??{},this.settingsValidationWarnings=t.settingsValidationWarnings??[];let u=YIu(this.settings.logger);if(this.logger=$I0(u,this.settings.verbose??!1),!this.modelId||typeof this.modelId!=="string"||this.modelId.trim()==="")throw new j6({modelId:this.modelId,modelType:"languageModel"});if(this.modelValidationWarning=uI0(this.modelId),this.modelValidationWarning)this.logger.warn(`Claude Code Model: ${this.modelValidationWarning}`)}get provider(){return"claude-code"}getModel(){return rI0[this.modelId]??this.modelId}getSanitizedSdkOptions(){if(!this.settings.sdkOptions||typeof this.settings.sdkOptions!=="object")return;let t={...this.settings.sdkOptions},u=Array.from(EI0).filter((l)=>(l in t));if(u.length>0)this.logger.warn(`[claude-code] sdkOptions includes provider-managed fields (${u.join(", ")}); these will be ignored.`),u.forEach((l)=>delete t[l]);return t}getEffectiveResume(t){return t?.resume??this.settings.resume??this.sessionId}extractTextAndThinking(t){if(!Array.isArray(t))return{text:"",thinking:[]};let u="",l=[];for(let n of t){if(!PIu(n))continue;if(n.type==="text"&&typeof n.text==="string")u+=n.text;else if(n.type==="thinking"&&typeof n.thinking==="string")l.push(n.thinking)}if(u.length>0&&typeof u!=="string")throw Error("extractTextAndThinking: accumulated text must be a string");if(l.some((n)=>typeof n!=="string"))throw Error("extractTextAndThinking: all thinking entries must be strings");return{text:u,thinking:l}}extractToolUses(t){return mlt(t,"tool_use").map((u)=>{let{id:l,name:n,input:f,parent_tool_use_id:c}=u;return{id:typeof l==="string"&&l.length>0?l:Zn(),name:typeof n==="string"&&n.length>0?n:i.UNKNOWN_TOOL_NAME,input:f,parentToolUseId:typeof c==="string"?c:null}})}extractToolResults(t){return mlt(t,"tool_result").map((u)=>{let{tool_use_id:l,content:n,is_error:f,name:c}=u;return{id:typeof l==="string"&&l.length>0?l:Zn(),name:typeof c==="string"&&c.length>0?c:void 0,result:n,isError:Boolean(f)}})}extractToolErrors(t){return mlt(t,"tool_error").map((u)=>{let{tool_use_id:l,error:n,name:f}=u;return{id:typeof l==="string"&&l.length>0?l:Zn(),name:typeof f==="string"&&f.length>0?f:void 0,error:n}})}serializeToolInput(t){if(typeof t==="string")return this.checkInputSize(t);if(t===void 0)return"";try{let u=JSON.stringify(t);return this.checkInputSize(u)}catch{let u=String(t);return this.checkInputSize(u)}}checkInputSize(t){let u=t.length;if(u>i.MAX_TOOL_INPUT_SIZE)throw Error(`Tool input exceeds maximum size of ${i.MAX_TOOL_INPUT_SIZE} bytes (got ${u} bytes). This may indicate a malformed request or an attempt to process excessively large data.`);if(u>i.MAX_TOOL_INPUT_WARN)this.logger.warn(`[claude-code] Large tool input detected: ${u} bytes. Performance may be impacted. Consider chunking or reducing input size.`);return t}normalizeToolResult(t){if(typeof t==="string")try{return JSON.parse(t)}catch{return t}if(Array.isArray(t)&&t.length>0){let u=t.filter((n)=>n?.type==="text"&&typeof n.text==="string").map((n)=>n.text);if(u.length!==t.length)return t;if(u.length===1)try{return JSON.parse(u[0])}catch{return u[0]}let l=u.join(`
107928
- `);try{return JSON.parse(l)}catch{return l}}return t}generateAllWarnings(t,u){let l=[],n=[];if(t.temperature!==void 0)n.push("temperature");if(t.topP!==void 0)n.push("topP");if(t.topK!==void 0)n.push("topK");if(t.presencePenalty!==void 0)n.push("presencePenalty");if(t.frequencyPenalty!==void 0)n.push("frequencyPenalty");if(t.stopSequences!==void 0&&t.stopSequences.length>0)n.push("stopSequences");if(t.seed!==void 0)n.push("seed");if(n.length>0)for(let c of n)l.push({type:"unsupported",feature:c,details:`Claude Code SDK does not support the ${c} parameter. It will be ignored.`});if(this.modelValidationWarning)l.push({type:"other",message:this.modelValidationWarning});if(this.settingsValidationWarnings.forEach((c)=>{l.push({type:"other",message:c})}),t.responseFormat?.type==="json"&&!t.responseFormat.schema)l.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 f=lI0(u);if(f)l.push({type:"other",message:f});return l}createQueryOptions(t,u,l,n,f){let c={model:this.getModel(),abortController:t,resume:f??this.settings.resume??this.sessionId,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.systemPrompt!==void 0)c.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? })."),c.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."),c.systemPrompt={type:"preset",preset:"claude_code",append:this.settings.appendSystemPrompt};if(this.settings.settingSources!==void 0)c.settingSources=this.settings.settingSources;if(this.settings.additionalDirectories!==void 0)c.additionalDirectories=this.settings.additionalDirectories;if(this.settings.agents!==void 0)c.agents=this.settings.agents;if(this.settings.includePartialMessages!==void 0)c.includePartialMessages=this.settings.includePartialMessages;if(this.settings.fallbackModel!==void 0)c.fallbackModel=this.settings.fallbackModel;if(this.settings.forkSession!==void 0)c.forkSession=this.settings.forkSession;if(this.settings.strictMcpConfig!==void 0)c.strictMcpConfig=this.settings.strictMcpConfig;if(this.settings.extraArgs!==void 0)c.extraArgs=this.settings.extraArgs;if(this.settings.persistSession!==void 0)c.persistSession=this.settings.persistSession;if(this.settings.spawnClaudeCodeProcess!==void 0)c.spawnClaudeCodeProcess=this.settings.spawnClaudeCodeProcess;if(this.settings.hooks)c.hooks=this.settings.hooks;if(this.settings.sessionId!==void 0)c.sessionId=this.settings.sessionId;if(this.settings.debug!==void 0)c.debug=this.settings.debug;if(this.settings.debugFile!==void 0)c.debugFile=this.settings.debugFile;let $=n?n:void 0,d=$&&typeof $.env==="object"&&$.env!==null?$.env:void 0,_=$&&typeof $.stderr==="function"?$.stderr:void 0;if($){let h={...$};delete h.env,delete h.stderr,Object.assign(c,h)}let g=_??this.settings.stderr;if(l||g)c.stderr=(h)=>{if(l)l(h);if(g)g(h)};if(this.settings.env!==void 0||d!==void 0){let h=hI0();c.env={...h,...this.settings.env,...d}}if(u?.type==="json"&&u.schema)c.outputFormat={type:"json_schema",schema:u.schema};return c}handleClaudeCodeError(t,u,l){if(alt(t))throw t;let n=(r)=>{return typeof r==="object"&&r!==null&&"message"in r},f=(r)=>{return typeof r==="object"&&r!==null},c=["not logged in","authentication","unauthorized","auth failed","please login","claude login","claude auth login","/login","invalid api key"],$=n(t)&&t.message?t.message.toLowerCase():"",d=f(t)&&typeof t.exitCode==="number"?t.exitCode:void 0;if(c.some((r)=>$.includes(r))||d===401)return oZ0({message:n(t)&&t.message?t.message:"Authentication failed. Please ensure Claude Code SDK is properly authenticated."});let g=f(t)&&typeof t.code==="string"?t.code:"";if(g==="ETIMEDOUT"||$.includes("timeout"))return sZ0({message:n(t)&&t.message?t.message:"Request timed out",promptExcerpt:u.substring(0,200)});let h=g==="ENOENT"||g==="ECONNREFUSED"||g==="ETIMEDOUT"||g==="ECONNRESET",v=(f(t)&&typeof t.stderr==="string"?t.stderr:void 0)||l||void 0;return mZ0({message:n(t)&&t.message?t.message:"Claude Code SDK error",code:g||void 0,exitCode:d,stderr:v,promptExcerpt:u.substring(0,200),isRetryable:h})}setSessionId(t){this.sessionId=t;let u=nI0(t);if(u)this.logger.warn(`Claude Code Session: ${u}`)}logMcpConnectionIssues(t){if(!Array.isArray(t)||t.length===0)return;let u=t.filter((n)=>{let f=typeof n.status==="string"?n.status.toLowerCase():"";return f==="failed"||f==="needs-auth"});if(u.length===0)return;let l=u.map((n)=>{let f=typeof n.name==="string"&&n.name.trim().length>0?n.name:"<unknown>",c=typeof n.status==="string"&&n.status.trim().length>0?n.status:"unknown",$=typeof n.error==="string"&&n.error.trim().length>0?` (${n.error})`:"";return`${f}:${c}${$}`}).join(", ");this.logger.warn(`[claude-code] MCP servers not connected: ${l}`)}async doGenerate(t){this.logger.debug(`[claude-code] Starting doGenerate request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${t.responseFormat?.type??"none"}`);let{messagesPrompt:u,warnings:l,streamingContentParts:n,hasImageParts:f}=yIu(t.prompt);this.logger.debug(`[claude-code] Converted ${t.prompt.length} messages, hasImageParts: ${f}`);let c=new AbortController,$;if(t.abortSignal?.aborted)c.abort(t.abortSignal.reason);else if(t.abortSignal)$=()=>c.abort(t.abortSignal?.reason),t.abortSignal.addEventListener("abort",$,{once:!0});let d="",_=(S)=>{d+=S},g=this.getSanitizedSdkOptions(),h=this.getEffectiveResume(g),E=this.createQueryOptions(c,t.responseFormat,_,g,h),v="",r=[],x,O=ZIu(),y={unified:"stop",raw:void 0},X=!1,N,U,J,T=this.generateAllWarnings(t,u);if(l)l.forEach((S)=>{T.push({type:"other",message:S})});let Q=this.settings.streamingInput??"auto",B=g?.canUseTool??this.settings.canUseTool,P=g?.permissionPromptToolName??this.settings.permissionPromptToolName,H=Q==="always"||Q==="auto"&&!!B;if(!H&&f)T.push({type:"other",message:FIu});let j=()=>{},k=new Promise((S)=>{j=()=>S(void 0)});try{if(B&&P)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 S=H?BIu(u,k,h,n,this.settings.onStreamStart):u;this.logger.debug(`[claude-code] Executing query with streamingInput: ${H}, session: ${h??"new"}`);let M=JIu({prompt:S,options:E});this.settings.onQueryCreated?.(M);for await(let p of M)if(this.logger.debug(`[claude-code] Received message type: ${p.type}`),p.type==="assistant"){let{text:s,thinking:$i}=this.extractTextAndThinking(p.message.content);v+=s,r.push(...$i)}else if(p.type==="result"){if(j(),this.setSessionId(p.session_id),N=p.total_cost_usd,U=p.duration_ms,J=p.modelUsage,"is_error"in p&&p.is_error===!0){let $i="result"in p&&typeof p.result==="string"?p.result:"Claude Code CLI returned an error";throw Object.assign(Error($i),{exitCode:1})}if(p.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 p&&p.structured_output!==void 0)x=p.structured_output,this.logger.debug("[claude-code] Received structured output from SDK");if(this.logger.info(`[claude-code] Request completed - Session: ${p.session_id}, Cost: $${N?.toFixed(4)??"N/A"}, Duration: ${U??"N/A"}ms`),"usage"in p)O=IIu(p.usage),this.logger.debug(`[claude-code] Token usage - Input: ${O.inputTokens.total}, Output: ${O.outputTokens.total}`);let s="stop_reason"in p?p.stop_reason:void 0;y=XIu(p.subtype,s),this.logger.debug(`[claude-code] Finish reason: ${y.unified}`)}else if(p.type==="system"&&p.subtype==="init")this.logMcpConnectionIssues(p.mcp_servers),this.setSessionId(p.session_id),this.logger.info(`[claude-code] Session initialized: ${p.session_id}`)}catch(S){if(j(),this.logger.debug(`[claude-code] Error during doGenerate: ${S instanceof Error?S.message:String(S)}`),alt(S))throw this.logger.debug("[claude-code] Request aborted by user"),t.abortSignal?.aborted?t.abortSignal.reason:S;if(TIu(S,v))this.logger.warn(`[claude-code] Detected truncated response, returning ${v.length} characters of buffered text`),X=!0,y={unified:"length",raw:"truncation"},T.push({type:"other",message:UIu});else throw this.handleClaudeCodeError(S,u,d)}finally{if(t.abortSignal&&$)t.abortSignal.removeEventListener("abort",$)}let m=x!==void 0?JSON.stringify(x):v;return{content:[...r.map((S)=>({type:"reasoning",text:S})),{type:"text",text:m}],usage:O,finishReason:y,warnings:T,response:{id:Zn(),timestamp:new Date,modelId:this.modelId},request:{body:u},providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},...N!==void 0&&{costUsd:N},...U!==void 0&&{durationMs:U},...J!==void 0&&{modelUsage:J},...X&&{truncated:!0},...r.length>0&&{thinkingTraces:r}}}}}async doStream(t){this.logger.debug(`[claude-code] Starting doStream request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${t.responseFormat?.type??"none"}`);let{messagesPrompt:u,warnings:l,streamingContentParts:n,hasImageParts:f}=yIu(t.prompt);this.logger.debug(`[claude-code] Converted ${t.prompt.length} messages for streaming, hasImageParts: ${f}`);let c=new AbortController,$;if(t.abortSignal?.aborted)c.abort(t.abortSignal.reason);else if(t.abortSignal)$=()=>c.abort(t.abortSignal?.reason),t.abortSignal.addEventListener("abort",$,{once:!0});let d="",_=(N)=>{d+=N},g=this.getSanitizedSdkOptions(),h=this.getEffectiveResume(g),E=this.createQueryOptions(c,t.responseFormat,_,g,h);if(E.includePartialMessages===void 0)E.includePartialMessages=!0;let v=this.generateAllWarnings(t,u);if(l)l.forEach((N)=>{v.push({type:"other",message:N})});let r=this.settings.streamingInput??"auto",x=g?.canUseTool??this.settings.canUseTool,O=g?.permissionPromptToolName??this.settings.permissionPromptToolName,y=r==="always"||r==="auto"&&!!x;if(!y&&f)v.push({type:"other",message:FIu});return{stream:new ReadableStream({start:async(N)=>{let U=()=>{},J=new Promise((Mi)=>{U=()=>Mi(void 0)}),T=new Map,Q=new Map,B=()=>{if(Q.size===1)return Q.keys().next().value??null;return null},P=[],H=(Mi,Yi)=>{if(!Yi.inputClosed&&Yi.inputStarted)N.enqueue({type:"tool-input-end",id:Mi}),Yi.inputClosed=!0},j=(Mi,Yi)=>{if(Yi.callEmitted)return;H(Mi,Yi),N.enqueue({type:"tool-call",toolCallId:Mi,toolName:Yi.name,input:Yi.lastSerializedInput??"",providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:Yi.lastSerializedInput??"",parentToolCallId:Yi.parentToolCallId??null}}}),Yi.callEmitted=!0},k=()=>{for(let[Mi,Yi]of T)j(Mi,Yi);T.clear()},m=ZIu(),S="",M,p=0,s=!1,$i=!1,e=new Map,fi=new Map,a=new Map,_i=!1,Oi=new Map,Di;try{if(N.enqueue({type:"stream-start",warnings:v}),x&&O)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 Mi=y?BIu(u,J,h,n,this.settings.onStreamStart):u;this.logger.debug(`[claude-code] Starting stream query with streamingInput: ${y}, session: ${h??"new"}`);let Yi=JIu({prompt:Mi,options:E});this.settings.onQueryCreated?.(Yi);for await(let Fi of Yi){if(this.logger.debug(`[claude-code] Stream received message type: ${Fi.type}`),Fi.type==="stream_event"){let qi=Fi.event;if(qi.type==="content_block_delta"&&qi.delta.type==="text_delta"&&"text"in qi.delta&&qi.delta.text){let ui=qi.delta.text;if(s=!0,t.responseFormat?.type==="json"){S+=ui,p+=ui.length;continue}if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:ui}),S+=ui,p+=ui.length}if(qi.type==="content_block_delta"&&qi.delta.type==="input_json_delta"&&"partial_json"in qi.delta&&qi.delta.partial_json){let ui=qi.delta.partial_json;s=!0;let ci="index"in qi?qi.index:-1;if(t.responseFormat?.type==="json"){if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:ui}),S+=ui,p+=ui.length,$i=!0;continue}let ii=e.get(ci);if(ii){let o=(fi.get(ii)??"")+ui;fi.set(ii,o),N.enqueue({type:"tool-input-delta",id:ii,delta:ui});continue}}if(qi.type==="content_block_start"&&"content_block"in qi&&qi.content_block?.type==="tool_use"){let ui="index"in qi?qi.index:-1,ci=qi.content_block,ii=typeof ci.id==="string"&&ci.id.length>0?ci.id:Zn(),o=typeof ci.name==="string"&&ci.name.length>0?ci.name:i.UNKNOWN_TOOL_NAME;if(s=!0,M){let xi=M;N.enqueue({type:"text-end",id:xi}),M=void 0;for(let[_t,lt]of a)if(lt===xi){a.delete(_t);break}}e.set(ui,ii),fi.set(ii,"");let zi=T.get(ii);if(!zi){let xi=o==="Task"?null:B();zi={name:o,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:xi},T.set(ii,zi)}if(!zi.inputStarted){if(this.logger.debug(`[claude-code] Tool input started (content_block) - Tool: ${o}, ID: ${ii}, parent: ${zi.parentToolCallId}`),N.enqueue({type:"tool-input-start",id:ii,toolName:o,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:zi.parentToolCallId??null}}}),o==="Task")Q.set(ii,{startTime:Date.now()});zi.inputStarted=!0}continue}if(qi.type==="content_block_start"&&"content_block"in qi&&qi.content_block?.type==="text"){let ui="index"in qi?qi.index:-1;s=!0;let ci=Zn();a.set(ui,ci),M=ci,this.logger.debug(`[claude-code] Text content block started - Index: ${ui}, ID: ${ci}`),N.enqueue({type:"text-start",id:ci}),_i=!0;continue}if(qi.type==="content_block_start"&&"content_block"in qi&&qi.content_block?.type==="thinking"){let ui="index"in qi?qi.index:-1;if(s=!0,M){let ii=M;N.enqueue({type:"text-end",id:ii}),M=void 0;for(let[o,zi]of a)if(zi===ii){a.delete(o);break}}let ci=Zn();Oi.set(ui,ci),Di=ci,this.logger.debug(`[claude-code] Reasoning started (content_block) - ID: ${ci}`),N.enqueue({type:"reasoning-start",id:ci});continue}if(qi.type==="content_block_delta"&&qi.delta.type==="thinking_delta"&&"thinking"in qi.delta&&qi.delta.thinking){let ui="index"in qi?qi.index:-1,ci=Oi.get(ui)??Di;if(s=!0,ci)N.enqueue({type:"reasoning-delta",id:ci,delta:qi.delta.thinking});continue}if(qi.type==="content_block_stop"){let ui="index"in qi?qi.index:-1;s=!0;let ci=e.get(ui);if(ci){let zi=T.get(ci);if(zi&&!zi.inputClosed){let xi=fi.get(ci)??"";this.logger.debug(`[claude-code] Tool content block stopped - Index: ${ui}, Tool: ${zi.name}, ID: ${ci}`),N.enqueue({type:"tool-input-end",id:ci}),zi.inputClosed=!0;let _t=xi||zi.lastSerializedInput||"";if(zi.lastSerializedInput=_t,!zi.callEmitted)N.enqueue({type:"tool-call",toolCallId:ci,toolName:zi.name,input:_t,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:_t,parentToolCallId:zi.parentToolCallId??null}}}),zi.callEmitted=!0}e.delete(ui),fi.delete(ci);continue}let ii=a.get(ui);if(ii){if(this.logger.debug(`[claude-code] Text content block stopped - Index: ${ui}, ID: ${ii}`),N.enqueue({type:"text-end",id:ii}),a.delete(ui),M===ii)M=void 0;continue}let o=Oi.get(ui);if(o){if(this.logger.debug(`[claude-code] Reasoning ended (content_block) - ID: ${o}`),N.enqueue({type:"reasoning-end",id:o}),Oi.delete(ui),Di===o)Di=void 0;continue}}continue}if(Fi.type==="assistant"){if(!Fi.message?.content){this.logger.warn(`[claude-code] Unexpected assistant message structure: missing content field. Message type: ${Fi.type}. This may indicate an SDK protocol violation.`);continue}let Qi=Fi.parent_tool_use_id,qi=Fi.message.content,ui=this.extractToolUses(qi);if(M&&ui.length>0){let ii=M;N.enqueue({type:"text-end",id:ii}),M=void 0;for(let[o,zi]of a)if(zi===ii){a.delete(o);break}}for(let ii of ui){let o=ii.id,zi=T.get(o);if(!zi){let _t=ii.name==="Task"?null:Qi??ii.parentToolUseId??B();zi={name:ii.name,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:_t},T.set(o,zi),this.logger.debug(`[claude-code] New tool use detected - Tool: ${ii.name}, ID: ${o}, SDK parent: ${Qi}, resolved parent: ${_t}`)}else if(!zi.parentToolCallId&&Qi&&ii.name!=="Task")zi.parentToolCallId=Qi,this.logger.debug(`[claude-code] Retroactive parent context - Tool: ${ii.name}, ID: ${o}, parent: ${Qi}`);if(zi.name=ii.name,!zi.inputStarted){if(this.logger.debug(`[claude-code] Tool input started - Tool: ${ii.name}, ID: ${o}`),N.enqueue({type:"tool-input-start",id:o,toolName:ii.name,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:zi.parentToolCallId??null}}}),ii.name==="Task")Q.set(o,{startTime:Date.now()});zi.inputStarted=!0}let xi=this.serializeToolInput(ii.input);if(xi){let _t="";if(zi.lastSerializedInput===void 0){if(xi.length<=i.MAX_DELTA_CALC_SIZE)_t=xi}else if(xi.length<=i.MAX_DELTA_CALC_SIZE&&zi.lastSerializedInput.length<=i.MAX_DELTA_CALC_SIZE&&xi.startsWith(zi.lastSerializedInput))_t=xi.slice(zi.lastSerializedInput.length);else if(xi!==zi.lastSerializedInput)_t="";if(_t)N.enqueue({type:"tool-input-delta",id:o,delta:_t});zi.lastSerializedInput=xi}}let ci=qi.map((ii)=>ii.type==="text"?ii.text:"").join("");if(ci){if(s){let ii=p,o=ci.length>ii?ci.slice(ii):"";if(S=ci,t.responseFormat?.type!=="json"&&o){if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:o})}p=ci.length}else if(S+=ci,t.responseFormat?.type!=="json"){if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:ci})}}}else if(Fi.type==="user"){if(!Fi.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${Fi.type}. This may indicate an SDK protocol violation.`);continue}if(M){let ui=M;N.enqueue({type:"text-end",id:ui}),M=void 0;for(let[ci,ii]of a)if(ii===ui){a.delete(ci);break}S="",p=0,this.logger.debug("[claude-code] Closed text part due to user message")}let Qi=Fi.parent_tool_use_id,qi=Fi.message.content;for(let ui of this.extractToolResults(qi)){let ci=T.get(ui.id),ii=ui.name??ci?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool result received - Tool: ${ii}, ID: ${ui.id}`),!ci){this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${ui.id}`);let ut=ii==="Task"?null:Qi??B();if(ci={name:ii,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:ut},T.set(ui.id,ci),!ci.inputStarted)N.enqueue({type:"tool-input-start",id:ui.id,toolName:ii,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:ci.parentToolCallId??null}}}),ci.inputStarted=!0;if(!ci.inputClosed)N.enqueue({type:"tool-input-end",id:ui.id}),ci.inputClosed=!0}ci.name=ii;let o=this.normalizeToolResult(ui.result),zi=typeof ui.result==="string"?ui.result:(()=>{try{return JSON.stringify(ui.result)}catch{return String(ui.result)}})(),xi=this.settings.maxToolResultSize,_t=QIu(o,xi),lt=QIu(zi,xi),Bi=lt!==zi;if(j(ui.id,ci),ii==="Task")Q.delete(ui.id);N.enqueue({type:"tool-result",toolCallId:ui.id,toolName:ii,result:_t,isError:ui.isError,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawResult:lt,rawResultTruncated:Bi,parentToolCallId:ci.parentToolCallId??null}}})}for(let ui of this.extractToolErrors(qi)){let ci=T.get(ui.id),ii=ui.name??ci?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool error received - Tool: ${ii}, ID: ${ui.id}`),!ci){this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${ui.id}`);let zi=ii==="Task"?null:Qi??B();ci={name:ii,inputStarted:!0,inputClosed:!0,callEmitted:!1,parentToolCallId:zi},T.set(ui.id,ci)}if(j(ui.id,ci),ii==="Task")Q.delete(ui.id);let o=typeof ui.error==="string"?ui.error:typeof ui.error==="object"&&ui.error!==null?(()=>{try{return JSON.stringify(ui.error)}catch{return String(ui.error)}})():String(ui.error);N.enqueue({type:"tool-error",toolCallId:ui.id,toolName:ii,error:o,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:o,parentToolCallId:ci.parentToolCallId??null}}})}}else if(Fi.type==="result"){if(U(),"is_error"in Fi&&Fi.is_error===!0){let o="result"in Fi&&typeof Fi.result==="string"?Fi.result:"Claude Code CLI returned an error";throw Object.assign(Error(o),{exitCode:1})}if(Fi.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: ${Fi.session_id}, Cost: $${Fi.total_cost_usd?.toFixed(4)??"N/A"}, Duration: ${Fi.duration_ms??"N/A"}ms`),"usage"in Fi)m=IIu(Fi.usage),this.logger.debug(`[claude-code] Stream token usage - Input: ${m.inputTokens.total}, Output: ${m.outputTokens.total}`);let Qi="stop_reason"in Fi?Fi.stop_reason:void 0,qi=XIu(Fi.subtype,Qi);this.logger.debug(`[claude-code] Stream finish reason: ${qi.unified}`),this.setSessionId(Fi.session_id);let ui="structured_output"in Fi?Fi.structured_output:void 0;if($i&&t.responseFormat?.type==="json"&&s){if(M)N.enqueue({type:"text-end",id:M})}else if(ui!==void 0){let o=Zn(),zi=JSON.stringify(ui);N.enqueue({type:"text-start",id:o}),N.enqueue({type:"text-delta",id:o,delta:zi}),N.enqueue({type:"text-end",id:o})}else if(M)N.enqueue({type:"text-end",id:M});else if(S&&!_i){let o=Zn();N.enqueue({type:"text-start",id:o}),N.enqueue({type:"text-delta",id:o,delta:S}),N.enqueue({type:"text-end",id:o})}k();let ii=this.serializeWarningsForMetadata(P);N.enqueue({type:"finish",finishReason:qi,usage:m,providerMetadata:{"claude-code":{sessionId:Fi.session_id,...Fi.total_cost_usd!==void 0&&{costUsd:Fi.total_cost_usd},...Fi.duration_ms!==void 0&&{durationMs:Fi.duration_ms},...Fi.modelUsage!==void 0&&{modelUsage:Fi.modelUsage},...P.length>0&&{warnings:ii}}}}),N.close();return}else if(Fi.type==="system"&&Fi.subtype==="init")this.logMcpConnectionIssues(Fi.mcp_servers),this.setSessionId(Fi.session_id),this.logger.info(`[claude-code] Stream session initialized: ${Fi.session_id}`),N.enqueue({type:"response-metadata",id:Fi.session_id,timestamp:new Date,modelId:this.modelId})}k(),this.logger.debug("[claude-code] Stream finalized, closing stream"),N.close()}catch(Mi){if(U(),this.logger.debug(`[claude-code] Error during doStream: ${Mi instanceof Error?Mi.message:String(Mi)}`),TIu(Mi,S)){this.logger.warn(`[claude-code] Detected truncated stream response, returning ${S.length} characters of buffered text`);let Fi={type:"other",message:UIu};if(P.push(Fi),M)N.enqueue({type:"text-end",id:M});else if(S&&!_i){let qi=Zn();N.enqueue({type:"text-start",id:qi}),N.enqueue({type:"text-delta",id:qi,delta:S}),N.enqueue({type:"text-end",id:qi})}k();let Qi=this.serializeWarningsForMetadata(P);N.enqueue({type:"finish",finishReason:{unified:"length",raw:"truncation"},usage:m,providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},truncated:!0,...P.length>0&&{warnings:Qi}}}}),N.close();return}k();let Yi;if(alt(Mi))Yi=t.abortSignal?.aborted?t.abortSignal.reason:Mi;else Yi=this.handleClaudeCodeError(Mi,u,d);N.enqueue({type:"error",error:Yi}),N.close()}finally{if(t.abortSignal&&$)t.abortSignal.removeEventListener("abort",$)}},cancel:()=>{if(t.abortSignal&&$)t.abortSignal.removeEventListener("abort",$)}}),request:{body:u}}}serializeWarningsForMetadata(t){return t.map((l)=>{let n={type:l.type};if("message"in l){let f=l.message;if(f!==void 0)n.message=String(f)}if(l.type==="unsupported"||l.type==="compatibility"){let f=l.feature;if(f!==void 0)n.feature=String(f);if("details"in l){let c=l.details;if(c!==void 0)n.details=String(c)}}return n})}},gPf;var AIu=w(()=>{fr();fr();Vlt();fr();iI0=Hi.object({debug:Hi.any().refine((i)=>typeof i==="function",{message:"debug must be a function"}),info:Hi.any().refine((i)=>typeof i==="function",{message:"info must be a function"}),warn:Hi.any().refine((i)=>typeof i==="function",{message:"warn must be a function"}),error:Hi.any().refine((i)=>typeof i==="function",{message:"error must be a function"})}),tI0=Hi.object({pathToClaudeCodeExecutable:Hi.string().optional(),customSystemPrompt:Hi.string().optional(),appendSystemPrompt:Hi.string().optional(),systemPrompt:Hi.union([Hi.string(),Hi.object({type:Hi.literal("preset"),preset:Hi.literal("claude_code"),append:Hi.string().optional()})]).optional(),maxTurns:Hi.number().int().min(1).max(100).optional(),maxThinkingTokens:Hi.number().int().positive().max(1e5).optional(),thinking:Hi.union([Hi.object({type:Hi.literal("adaptive")}).strict(),Hi.object({type:Hi.literal("enabled"),budgetTokens:Hi.number().int().positive().optional()}).strict(),Hi.object({type:Hi.literal("disabled")}).strict()]).optional(),effort:Hi.enum(["low","medium","high","max"]).optional(),promptSuggestions:Hi.boolean().optional(),cwd:Hi.string().refine((i)=>{if(typeof process>"u"||!process.versions?.node)return!0;return!i||pZ0(i)},{message:"Working directory must exist"}).optional(),executable:Hi.enum(["bun","deno","node"]).optional(),executableArgs:Hi.array(Hi.string()).optional(),permissionMode:Hi.enum(["default","acceptEdits","bypassPermissions","plan","delegate","dontAsk"]).optional(),permissionPromptToolName:Hi.string().optional(),continue:Hi.boolean().optional(),resume:Hi.string().optional(),sessionId:Hi.string().optional(),allowedTools:Hi.array(Hi.string()).optional(),disallowedTools:Hi.array(Hi.string()).optional(),betas:Hi.array(Hi.string()).optional(),allowDangerouslySkipPermissions:Hi.boolean().optional(),enableFileCheckpointing:Hi.boolean().optional(),maxBudgetUsd:Hi.number().min(0).optional(),plugins:Hi.array(Hi.object({type:Hi.string(),path:Hi.string()}).passthrough()).optional(),resumeSessionAt:Hi.string().optional(),sandbox:Hi.any().refine((i)=>i===void 0||typeof i==="object",{message:"sandbox must be an object"}).optional(),tools:Hi.union([Hi.array(Hi.string()),Hi.object({type:Hi.literal("preset"),preset:Hi.literal("claude_code")})]).optional(),settingSources:Hi.array(Hi.enum(["user","project","local"])).optional(),streamingInput:Hi.enum(["auto","always","off"]).optional(),canUseTool:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"canUseTool must be a function"}).optional(),hooks:Hi.record(Hi.string(),Hi.array(Hi.object({matcher:Hi.string().optional(),hooks:Hi.array(Hi.any()).nonempty()}))).optional(),mcpServers:Hi.record(Hi.string(),Hi.union([Hi.object({type:Hi.literal("stdio").optional(),command:Hi.string(),args:Hi.array(Hi.string()).optional(),env:Hi.record(Hi.string(),Hi.string()).optional()}),Hi.object({type:Hi.literal("sse"),url:Hi.string(),headers:Hi.record(Hi.string(),Hi.string()).optional()}),Hi.object({type:Hi.literal("http"),url:Hi.string(),headers:Hi.record(Hi.string(),Hi.string()).optional()}),Hi.object({type:Hi.literal("sdk"),name:Hi.string(),instance:Hi.any()})])).optional(),verbose:Hi.boolean().optional(),debug:Hi.boolean().optional(),debugFile:Hi.string().optional(),logger:Hi.union([Hi.literal(!1),iI0]).optional(),env:Hi.record(Hi.string(),Hi.string().optional()).optional(),additionalDirectories:Hi.array(Hi.string()).optional(),agents:Hi.record(Hi.string(),Hi.object({description:Hi.string(),tools:Hi.array(Hi.string()).optional(),disallowedTools:Hi.array(Hi.string()).optional(),prompt:Hi.string(),model:Hi.enum(["sonnet","opus","haiku","inherit"]).optional(),mcpServers:Hi.array(Hi.union([Hi.string(),Hi.record(Hi.string(),Hi.any())])).optional(),criticalSystemReminder_EXPERIMENTAL:Hi.string().optional()}).passthrough()).optional(),includePartialMessages:Hi.boolean().optional(),fallbackModel:Hi.string().optional(),forkSession:Hi.boolean().optional(),stderr:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"stderr must be a function"}).optional(),strictMcpConfig:Hi.boolean().optional(),extraArgs:Hi.record(Hi.string(),Hi.union([Hi.string(),Hi.null()])).optional(),persistSession:Hi.boolean().optional(),spawnClaudeCodeProcess:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"spawnClaudeCodeProcess must be a function"}).optional(),sdkOptions:Hi.record(Hi.string(),Hi.any()).optional(),maxToolResultSize:Hi.number().int().min(100).max(1e6).optional(),onQueryCreated:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"onQueryCreated must be a function"}).optional(),onStreamStart:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"onStreamStart must be a function"}).optional()}).strict();fI0={debug:(i)=>console.debug(`[DEBUG] ${i}`),info:(i)=>console.info(`[INFO] ${i}`),warn:(i)=>console.warn(`[WARN] ${i}`),error:(i)=>console.error(`[ERROR] ${i}`)},cI0={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};_I0=process.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PATHEXT","SYSTEMDRIVE","SYSTEMROOT","TEMP","TMP","USERNAME","USERPROFILE","WINDIR"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER","LANG","LC_ALL","TMPDIR"],gI0=["CLAUDE_CONFIG_DIR"];EI0=new Set(["model","abortController","prompt","outputFormat"]);rI0={opus:"opus",sonnet:"sonnet",haiku:"haiku"};gPf=slt()});function plt(i,t){let u=["AskUserQuestion","ExitPlanMode","EnterWorktree","ExitWorktree","Config"],l={mcpServers:t?.mcpServers,cwd:t?.cwd??process.cwd()};if(t?.isPlanMode||t?.toolApprovalLevel==="readonly")l.permissionMode="bypassPermissions",l.disallowedTools=[...u,"Write","Edit","Bash","NotebookEdit"];else l.permissionMode="bypassPermissions",l.disallowedTools=[...u];if(t?.resume)l.resume=t.resume;return slt({defaultSettings:l})(i)}function i0t(i){return DI0[i]??i}var DI0;var GIu=w(()=>{AIu();DI0={"claude-code:opus":"opus","claude-code:sonnet":"sonnet","claude-code:haiku":"haiku","claude-code:fable":"claude-fable-5"}});function i7i(i){return i==="default"?void 0:i}var WIu="default",kIu="/repo";function t7i(i){return r7(i,{ignoreIncompleteToolCalls:!0})}function u7i(i){for(let t=i.length-1;t>=0;t--){let u=i[t];if(!u||u.role!=="user")continue;if(typeof u.content==="string")return u.content;if(Array.isArray(u.content))return u.content.filter((n)=>typeof n==="object"&&n!==null&&n.type==="text").map((n)=>n.text).join(`
107929
+ `);try{return JSON.parse(l)}catch{return l}}return t}generateAllWarnings(t,u){let l=[],n=[];if(t.temperature!==void 0)n.push("temperature");if(t.topP!==void 0)n.push("topP");if(t.topK!==void 0)n.push("topK");if(t.presencePenalty!==void 0)n.push("presencePenalty");if(t.frequencyPenalty!==void 0)n.push("frequencyPenalty");if(t.stopSequences!==void 0&&t.stopSequences.length>0)n.push("stopSequences");if(t.seed!==void 0)n.push("seed");if(n.length>0)for(let c of n)l.push({type:"unsupported",feature:c,details:`Claude Code SDK does not support the ${c} parameter. It will be ignored.`});if(this.modelValidationWarning)l.push({type:"other",message:this.modelValidationWarning});if(this.settingsValidationWarnings.forEach((c)=>{l.push({type:"other",message:c})}),t.responseFormat?.type==="json"&&!t.responseFormat.schema)l.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 f=lI0(u);if(f)l.push({type:"other",message:f});return l}createQueryOptions(t,u,l,n,f){let c={model:this.getModel(),abortController:t,resume:f??this.settings.resume??this.sessionId,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.systemPrompt!==void 0)c.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? })."),c.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."),c.systemPrompt={type:"preset",preset:"claude_code",append:this.settings.appendSystemPrompt};if(this.settings.settingSources!==void 0)c.settingSources=this.settings.settingSources;if(this.settings.additionalDirectories!==void 0)c.additionalDirectories=this.settings.additionalDirectories;if(this.settings.agents!==void 0)c.agents=this.settings.agents;if(this.settings.includePartialMessages!==void 0)c.includePartialMessages=this.settings.includePartialMessages;if(this.settings.fallbackModel!==void 0)c.fallbackModel=this.settings.fallbackModel;if(this.settings.forkSession!==void 0)c.forkSession=this.settings.forkSession;if(this.settings.strictMcpConfig!==void 0)c.strictMcpConfig=this.settings.strictMcpConfig;if(this.settings.extraArgs!==void 0)c.extraArgs=this.settings.extraArgs;if(this.settings.persistSession!==void 0)c.persistSession=this.settings.persistSession;if(this.settings.spawnClaudeCodeProcess!==void 0)c.spawnClaudeCodeProcess=this.settings.spawnClaudeCodeProcess;if(this.settings.hooks)c.hooks=this.settings.hooks;if(this.settings.sessionId!==void 0)c.sessionId=this.settings.sessionId;if(this.settings.debug!==void 0)c.debug=this.settings.debug;if(this.settings.debugFile!==void 0)c.debugFile=this.settings.debugFile;let $=n?n:void 0,d=$&&typeof $.env==="object"&&$.env!==null?$.env:void 0,_=$&&typeof $.stderr==="function"?$.stderr:void 0;if($){let h={...$};delete h.env,delete h.stderr,Object.assign(c,h)}let g=_??this.settings.stderr;if(l||g)c.stderr=(h)=>{if(l)l(h);if(g)g(h)};if(this.settings.env!==void 0||d!==void 0){let h=hI0();c.env={...h,...this.settings.env,...d}}if(u?.type==="json"&&u.schema)c.outputFormat={type:"json_schema",schema:u.schema};return c}handleClaudeCodeError(t,u,l){if(alt(t))throw t;let n=(r)=>{return typeof r==="object"&&r!==null&&"message"in r},f=(r)=>{return typeof r==="object"&&r!==null},c=["not logged in","authentication","unauthorized","auth failed","please login","claude login","claude auth login","/login","invalid api key"],$=n(t)&&t.message?t.message.toLowerCase():"",d=f(t)&&typeof t.exitCode==="number"?t.exitCode:void 0;if(c.some((r)=>$.includes(r))||d===401)return oZ0({message:n(t)&&t.message?t.message:"Authentication failed. Please ensure Claude Code SDK is properly authenticated."});let g=f(t)&&typeof t.code==="string"?t.code:"";if(g==="ETIMEDOUT"||$.includes("timeout"))return sZ0({message:n(t)&&t.message?t.message:"Request timed out",promptExcerpt:u.substring(0,200)});let h=g==="ENOENT"||g==="ECONNREFUSED"||g==="ETIMEDOUT"||g==="ECONNRESET",v=(f(t)&&typeof t.stderr==="string"?t.stderr:void 0)||l||void 0;return mZ0({message:n(t)&&t.message?t.message:"Claude Code SDK error",code:g||void 0,exitCode:d,stderr:v,promptExcerpt:u.substring(0,200),isRetryable:h})}setSessionId(t){this.sessionId=t;let u=nI0(t);if(u)this.logger.warn(`Claude Code Session: ${u}`)}logMcpConnectionIssues(t){if(!Array.isArray(t)||t.length===0)return;let u=t.filter((n)=>{let f=typeof n.status==="string"?n.status.toLowerCase():"";return f==="failed"||f==="needs-auth"});if(u.length===0)return;let l=u.map((n)=>{let f=typeof n.name==="string"&&n.name.trim().length>0?n.name:"<unknown>",c=typeof n.status==="string"&&n.status.trim().length>0?n.status:"unknown",$=typeof n.error==="string"&&n.error.trim().length>0?` (${n.error})`:"";return`${f}:${c}${$}`}).join(", ");this.logger.warn(`[claude-code] MCP servers not connected: ${l}`)}async doGenerate(t){this.logger.debug(`[claude-code] Starting doGenerate request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${t.responseFormat?.type??"none"}`);let{messagesPrompt:u,warnings:l,streamingContentParts:n,hasImageParts:f}=yIu(t.prompt);this.logger.debug(`[claude-code] Converted ${t.prompt.length} messages, hasImageParts: ${f}`);let c=new AbortController,$;if(t.abortSignal?.aborted)c.abort(t.abortSignal.reason);else if(t.abortSignal)$=()=>c.abort(t.abortSignal?.reason),t.abortSignal.addEventListener("abort",$,{once:!0});let d="",_=(S)=>{d+=S},g=this.getSanitizedSdkOptions(),h=this.getEffectiveResume(g),E=this.createQueryOptions(c,t.responseFormat,_,g,h),v="",r=[],x,O=ZIu(),y={unified:"stop",raw:void 0},X=!1,N,U,J,T=this.generateAllWarnings(t,u);if(l)l.forEach((S)=>{T.push({type:"other",message:S})});let Q=this.settings.streamingInput??"auto",B=g?.canUseTool??this.settings.canUseTool,P=g?.permissionPromptToolName??this.settings.permissionPromptToolName,H=Q==="always"||Q==="auto"&&!!B;if(!H&&f)T.push({type:"other",message:FIu});let j=()=>{},k=new Promise((S)=>{j=()=>S(void 0)});try{if(B&&P)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 S=H?BIu(u,k,h,n,this.settings.onStreamStart):u;this.logger.debug(`[claude-code] Executing query with streamingInput: ${H}, session: ${h??"new"}`);let M=JIu({prompt:S,options:E});this.settings.onQueryCreated?.(M);for await(let p of M)if(this.logger.debug(`[claude-code] Received message type: ${p.type}`),p.type==="assistant"){let{text:s,thinking:$i}=this.extractTextAndThinking(p.message.content);v+=s,r.push(...$i)}else if(p.type==="result"){if(j(),this.setSessionId(p.session_id),N=p.total_cost_usd,U=p.duration_ms,J=p.modelUsage,"is_error"in p&&p.is_error===!0){let $i="result"in p&&typeof p.result==="string"?p.result:"Claude Code CLI returned an error";throw Object.assign(Error($i),{exitCode:1})}if(p.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 p&&p.structured_output!==void 0)x=p.structured_output,this.logger.debug("[claude-code] Received structured output from SDK");if(this.logger.info(`[claude-code] Request completed - Session: ${p.session_id}, Cost: $${N?.toFixed(4)??"N/A"}, Duration: ${U??"N/A"}ms`),"usage"in p)O=IIu(p.usage),this.logger.debug(`[claude-code] Token usage - Input: ${O.inputTokens.total}, Output: ${O.outputTokens.total}`);let s="stop_reason"in p?p.stop_reason:void 0;y=XIu(p.subtype,s),this.logger.debug(`[claude-code] Finish reason: ${y.unified}`)}else if(p.type==="system"&&p.subtype==="init")this.logMcpConnectionIssues(p.mcp_servers),this.setSessionId(p.session_id),this.logger.info(`[claude-code] Session initialized: ${p.session_id}`)}catch(S){if(j(),this.logger.debug(`[claude-code] Error during doGenerate: ${S instanceof Error?S.message:String(S)}`),alt(S))throw this.logger.debug("[claude-code] Request aborted by user"),t.abortSignal?.aborted?t.abortSignal.reason:S;if(TIu(S,v))this.logger.warn(`[claude-code] Detected truncated response, returning ${v.length} characters of buffered text`),X=!0,y={unified:"length",raw:"truncation"},T.push({type:"other",message:UIu});else throw this.handleClaudeCodeError(S,u,d)}finally{if(t.abortSignal&&$)t.abortSignal.removeEventListener("abort",$)}let m=x!==void 0?JSON.stringify(x):v;return{content:[...r.map((S)=>({type:"reasoning",text:S})),{type:"text",text:m}],usage:O,finishReason:y,warnings:T,response:{id:Zn(),timestamp:new Date,modelId:this.modelId},request:{body:u},providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},...N!==void 0&&{costUsd:N},...U!==void 0&&{durationMs:U},...J!==void 0&&{modelUsage:J},...X&&{truncated:!0},...r.length>0&&{thinkingTraces:r}}}}}async doStream(t){this.logger.debug(`[claude-code] Starting doStream request with model: ${this.modelId}`),this.logger.debug(`[claude-code] Response format: ${t.responseFormat?.type??"none"}`);let{messagesPrompt:u,warnings:l,streamingContentParts:n,hasImageParts:f}=yIu(t.prompt);this.logger.debug(`[claude-code] Converted ${t.prompt.length} messages for streaming, hasImageParts: ${f}`);let c=new AbortController,$;if(t.abortSignal?.aborted)c.abort(t.abortSignal.reason);else if(t.abortSignal)$=()=>c.abort(t.abortSignal?.reason),t.abortSignal.addEventListener("abort",$,{once:!0});let d="",_=(N)=>{d+=N},g=this.getSanitizedSdkOptions(),h=this.getEffectiveResume(g),E=this.createQueryOptions(c,t.responseFormat,_,g,h);if(E.includePartialMessages===void 0)E.includePartialMessages=!0;let v=this.generateAllWarnings(t,u);if(l)l.forEach((N)=>{v.push({type:"other",message:N})});let r=this.settings.streamingInput??"auto",x=g?.canUseTool??this.settings.canUseTool,O=g?.permissionPromptToolName??this.settings.permissionPromptToolName,y=r==="always"||r==="auto"&&!!x;if(!y&&f)v.push({type:"other",message:FIu});return{stream:new ReadableStream({start:async(N)=>{let U=()=>{},J=new Promise((Mi)=>{U=()=>Mi(void 0)}),T=new Map,Q=new Map,B=()=>{if(Q.size===1)return Q.keys().next().value??null;return null},P=[],H=(Mi,Yi)=>{if(!Yi.inputClosed&&Yi.inputStarted)N.enqueue({type:"tool-input-end",id:Mi}),Yi.inputClosed=!0},j=(Mi,Yi)=>{if(Yi.callEmitted)return;H(Mi,Yi),N.enqueue({type:"tool-call",toolCallId:Mi,toolName:Yi.name,input:Yi.lastSerializedInput??"",providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:Yi.lastSerializedInput??"",parentToolCallId:Yi.parentToolCallId??null}}}),Yi.callEmitted=!0},k=()=>{for(let[Mi,Yi]of T)j(Mi,Yi);T.clear()},m=ZIu(),S="",M,p=0,s=!1,$i=!1,e=new Map,fi=new Map,a=new Map,_i=!1,Oi=new Map,Di;try{if(N.enqueue({type:"stream-start",warnings:v}),x&&O)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 Mi=y?BIu(u,J,h,n,this.settings.onStreamStart):u;this.logger.debug(`[claude-code] Starting stream query with streamingInput: ${y}, session: ${h??"new"}`);let Yi=JIu({prompt:Mi,options:E});this.settings.onQueryCreated?.(Yi);for await(let Fi of Yi){if(this.logger.debug(`[claude-code] Stream received message type: ${Fi.type}`),Fi.type==="stream_event"){let qi=Fi.event;if(qi.type==="content_block_delta"&&qi.delta.type==="text_delta"&&"text"in qi.delta&&qi.delta.text){let ui=qi.delta.text;if(s=!0,t.responseFormat?.type==="json"){S+=ui,p+=ui.length;continue}if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:ui}),S+=ui,p+=ui.length}if(qi.type==="content_block_delta"&&qi.delta.type==="input_json_delta"&&"partial_json"in qi.delta&&qi.delta.partial_json){let ui=qi.delta.partial_json;s=!0;let ci="index"in qi?qi.index:-1;if(t.responseFormat?.type==="json"){if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:ui}),S+=ui,p+=ui.length,$i=!0;continue}let ii=e.get(ci);if(ii){let o=(fi.get(ii)??"")+ui;fi.set(ii,o),N.enqueue({type:"tool-input-delta",id:ii,delta:ui});continue}}if(qi.type==="content_block_start"&&"content_block"in qi&&qi.content_block?.type==="tool_use"){let ui="index"in qi?qi.index:-1,ci=qi.content_block,ii=typeof ci.id==="string"&&ci.id.length>0?ci.id:Zn(),o=typeof ci.name==="string"&&ci.name.length>0?ci.name:i.UNKNOWN_TOOL_NAME;if(s=!0,M){let xi=M;N.enqueue({type:"text-end",id:xi}),M=void 0;for(let[_t,lt]of a)if(lt===xi){a.delete(_t);break}}e.set(ui,ii),fi.set(ii,"");let zi=T.get(ii);if(!zi){let xi=o==="Task"?null:B();zi={name:o,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:xi},T.set(ii,zi)}if(!zi.inputStarted){if(this.logger.debug(`[claude-code] Tool input started (content_block) - Tool: ${o}, ID: ${ii}, parent: ${zi.parentToolCallId}`),N.enqueue({type:"tool-input-start",id:ii,toolName:o,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:zi.parentToolCallId??null}}}),o==="Task")Q.set(ii,{startTime:Date.now()});zi.inputStarted=!0}continue}if(qi.type==="content_block_start"&&"content_block"in qi&&qi.content_block?.type==="text"){let ui="index"in qi?qi.index:-1;s=!0;let ci=Zn();a.set(ui,ci),M=ci,this.logger.debug(`[claude-code] Text content block started - Index: ${ui}, ID: ${ci}`),N.enqueue({type:"text-start",id:ci}),_i=!0;continue}if(qi.type==="content_block_start"&&"content_block"in qi&&qi.content_block?.type==="thinking"){let ui="index"in qi?qi.index:-1;if(s=!0,M){let ii=M;N.enqueue({type:"text-end",id:ii}),M=void 0;for(let[o,zi]of a)if(zi===ii){a.delete(o);break}}let ci=Zn();Oi.set(ui,ci),Di=ci,this.logger.debug(`[claude-code] Reasoning started (content_block) - ID: ${ci}`),N.enqueue({type:"reasoning-start",id:ci});continue}if(qi.type==="content_block_delta"&&qi.delta.type==="thinking_delta"&&"thinking"in qi.delta&&qi.delta.thinking){let ui="index"in qi?qi.index:-1,ci=Oi.get(ui)??Di;if(s=!0,ci)N.enqueue({type:"reasoning-delta",id:ci,delta:qi.delta.thinking});continue}if(qi.type==="content_block_stop"){let ui="index"in qi?qi.index:-1;s=!0;let ci=e.get(ui);if(ci){let zi=T.get(ci);if(zi&&!zi.inputClosed){let xi=fi.get(ci)??"";this.logger.debug(`[claude-code] Tool content block stopped - Index: ${ui}, Tool: ${zi.name}, ID: ${ci}`),N.enqueue({type:"tool-input-end",id:ci}),zi.inputClosed=!0;let _t=xi||zi.lastSerializedInput||"";if(zi.lastSerializedInput=_t,!zi.callEmitted)N.enqueue({type:"tool-call",toolCallId:ci,toolName:zi.name,input:_t,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawInput:_t,parentToolCallId:zi.parentToolCallId??null}}}),zi.callEmitted=!0}e.delete(ui),fi.delete(ci);continue}let ii=a.get(ui);if(ii){if(this.logger.debug(`[claude-code] Text content block stopped - Index: ${ui}, ID: ${ii}`),N.enqueue({type:"text-end",id:ii}),a.delete(ui),M===ii)M=void 0;continue}let o=Oi.get(ui);if(o){if(this.logger.debug(`[claude-code] Reasoning ended (content_block) - ID: ${o}`),N.enqueue({type:"reasoning-end",id:o}),Oi.delete(ui),Di===o)Di=void 0;continue}}continue}if(Fi.type==="assistant"){if(!Fi.message?.content){this.logger.warn(`[claude-code] Unexpected assistant message structure: missing content field. Message type: ${Fi.type}. This may indicate an SDK protocol violation.`);continue}let Qi=Fi.parent_tool_use_id,qi=Fi.message.content,ui=this.extractToolUses(qi);if(M&&ui.length>0){let ii=M;N.enqueue({type:"text-end",id:ii}),M=void 0;for(let[o,zi]of a)if(zi===ii){a.delete(o);break}}for(let ii of ui){let o=ii.id,zi=T.get(o);if(!zi){let _t=ii.name==="Task"?null:Qi??ii.parentToolUseId??B();zi={name:ii.name,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:_t},T.set(o,zi),this.logger.debug(`[claude-code] New tool use detected - Tool: ${ii.name}, ID: ${o}, SDK parent: ${Qi}, resolved parent: ${_t}`)}else if(!zi.parentToolCallId&&Qi&&ii.name!=="Task")zi.parentToolCallId=Qi,this.logger.debug(`[claude-code] Retroactive parent context - Tool: ${ii.name}, ID: ${o}, parent: ${Qi}`);if(zi.name=ii.name,!zi.inputStarted){if(this.logger.debug(`[claude-code] Tool input started - Tool: ${ii.name}, ID: ${o}`),N.enqueue({type:"tool-input-start",id:o,toolName:ii.name,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:zi.parentToolCallId??null}}}),ii.name==="Task")Q.set(o,{startTime:Date.now()});zi.inputStarted=!0}let xi=this.serializeToolInput(ii.input);if(xi){let _t="";if(zi.lastSerializedInput===void 0){if(xi.length<=i.MAX_DELTA_CALC_SIZE)_t=xi}else if(xi.length<=i.MAX_DELTA_CALC_SIZE&&zi.lastSerializedInput.length<=i.MAX_DELTA_CALC_SIZE&&xi.startsWith(zi.lastSerializedInput))_t=xi.slice(zi.lastSerializedInput.length);else if(xi!==zi.lastSerializedInput)_t="";if(_t)N.enqueue({type:"tool-input-delta",id:o,delta:_t});zi.lastSerializedInput=xi}}let ci=qi.map((ii)=>ii.type==="text"?ii.text:"").join("");if(ci){if(s){let ii=p,o=ci.length>ii?ci.slice(ii):"";if(S=ci,t.responseFormat?.type!=="json"&&o){if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:o})}p=ci.length}else if(S+=ci,t.responseFormat?.type!=="json"){if(!M)M=Zn(),N.enqueue({type:"text-start",id:M});N.enqueue({type:"text-delta",id:M,delta:ci})}}}else if(Fi.type==="user"){if(!Fi.message?.content){this.logger.warn(`[claude-code] Unexpected user message structure: missing content field. Message type: ${Fi.type}. This may indicate an SDK protocol violation.`);continue}if(M){let ui=M;N.enqueue({type:"text-end",id:ui}),M=void 0;for(let[ci,ii]of a)if(ii===ui){a.delete(ci);break}S="",p=0,this.logger.debug("[claude-code] Closed text part due to user message")}let Qi=Fi.parent_tool_use_id,qi=Fi.message.content;for(let ui of this.extractToolResults(qi)){let ci=T.get(ui.id),ii=ui.name??ci?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool result received - Tool: ${ii}, ID: ${ui.id}`),!ci){this.logger.warn(`[claude-code] Received tool result for unknown tool ID: ${ui.id}`);let ut=ii==="Task"?null:Qi??B();if(ci={name:ii,inputStarted:!1,inputClosed:!1,callEmitted:!1,parentToolCallId:ut},T.set(ui.id,ci),!ci.inputStarted)N.enqueue({type:"tool-input-start",id:ui.id,toolName:ii,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{parentToolCallId:ci.parentToolCallId??null}}}),ci.inputStarted=!0;if(!ci.inputClosed)N.enqueue({type:"tool-input-end",id:ui.id}),ci.inputClosed=!0}ci.name=ii;let o=this.normalizeToolResult(ui.result),zi=typeof ui.result==="string"?ui.result:(()=>{try{return JSON.stringify(ui.result)}catch{return String(ui.result)}})(),xi=this.settings.maxToolResultSize,_t=QIu(o,xi),lt=QIu(zi,xi),Bi=lt!==zi;if(j(ui.id,ci),ii==="Task")Q.delete(ui.id);N.enqueue({type:"tool-result",toolCallId:ui.id,toolName:ii,result:_t,isError:ui.isError,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawResult:lt,rawResultTruncated:Bi,parentToolCallId:ci.parentToolCallId??null}}})}for(let ui of this.extractToolErrors(qi)){let ci=T.get(ui.id),ii=ui.name??ci?.name??i.UNKNOWN_TOOL_NAME;if(this.logger.debug(`[claude-code] Tool error received - Tool: ${ii}, ID: ${ui.id}`),!ci){this.logger.warn(`[claude-code] Received tool error for unknown tool ID: ${ui.id}`);let zi=ii==="Task"?null:Qi??B();ci={name:ii,inputStarted:!0,inputClosed:!0,callEmitted:!1,parentToolCallId:zi},T.set(ui.id,ci)}if(j(ui.id,ci),ii==="Task")Q.delete(ui.id);let o=typeof ui.error==="string"?ui.error:typeof ui.error==="object"&&ui.error!==null?(()=>{try{return JSON.stringify(ui.error)}catch{return String(ui.error)}})():String(ui.error);N.enqueue({type:"tool-error",toolCallId:ui.id,toolName:ii,error:o,providerExecuted:!0,dynamic:!0,providerMetadata:{"claude-code":{rawError:o,parentToolCallId:ci.parentToolCallId??null}}})}}else if(Fi.type==="result"){if(U(),"is_error"in Fi&&Fi.is_error===!0){let o="result"in Fi&&typeof Fi.result==="string"?Fi.result:"Claude Code CLI returned an error";throw Object.assign(Error(o),{exitCode:1})}if(Fi.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: ${Fi.session_id}, Cost: $${Fi.total_cost_usd?.toFixed(4)??"N/A"}, Duration: ${Fi.duration_ms??"N/A"}ms`),"usage"in Fi)m=IIu(Fi.usage),this.logger.debug(`[claude-code] Stream token usage - Input: ${m.inputTokens.total}, Output: ${m.outputTokens.total}`);let Qi="stop_reason"in Fi?Fi.stop_reason:void 0,qi=XIu(Fi.subtype,Qi);this.logger.debug(`[claude-code] Stream finish reason: ${qi.unified}`),this.setSessionId(Fi.session_id);let ui="structured_output"in Fi?Fi.structured_output:void 0;if($i&&t.responseFormat?.type==="json"&&s){if(M)N.enqueue({type:"text-end",id:M})}else if(ui!==void 0){let o=Zn(),zi=JSON.stringify(ui);N.enqueue({type:"text-start",id:o}),N.enqueue({type:"text-delta",id:o,delta:zi}),N.enqueue({type:"text-end",id:o})}else if(M)N.enqueue({type:"text-end",id:M});else if(S&&!_i){let o=Zn();N.enqueue({type:"text-start",id:o}),N.enqueue({type:"text-delta",id:o,delta:S}),N.enqueue({type:"text-end",id:o})}k();let ii=this.serializeWarningsForMetadata(P);N.enqueue({type:"finish",finishReason:qi,usage:m,providerMetadata:{"claude-code":{sessionId:Fi.session_id,...Fi.total_cost_usd!==void 0&&{costUsd:Fi.total_cost_usd},...Fi.duration_ms!==void 0&&{durationMs:Fi.duration_ms},...Fi.modelUsage!==void 0&&{modelUsage:Fi.modelUsage},...P.length>0&&{warnings:ii}}}}),N.close();return}else if(Fi.type==="system"&&Fi.subtype==="init")this.logMcpConnectionIssues(Fi.mcp_servers),this.setSessionId(Fi.session_id),this.logger.info(`[claude-code] Stream session initialized: ${Fi.session_id}`),N.enqueue({type:"response-metadata",id:Fi.session_id,timestamp:new Date,modelId:this.modelId})}k(),this.logger.debug("[claude-code] Stream finalized, closing stream"),N.close()}catch(Mi){if(U(),this.logger.debug(`[claude-code] Error during doStream: ${Mi instanceof Error?Mi.message:String(Mi)}`),TIu(Mi,S)){this.logger.warn(`[claude-code] Detected truncated stream response, returning ${S.length} characters of buffered text`);let Fi={type:"other",message:UIu};if(P.push(Fi),M)N.enqueue({type:"text-end",id:M});else if(S&&!_i){let qi=Zn();N.enqueue({type:"text-start",id:qi}),N.enqueue({type:"text-delta",id:qi,delta:S}),N.enqueue({type:"text-end",id:qi})}k();let Qi=this.serializeWarningsForMetadata(P);N.enqueue({type:"finish",finishReason:{unified:"length",raw:"truncation"},usage:m,providerMetadata:{"claude-code":{...this.sessionId!==void 0&&{sessionId:this.sessionId},truncated:!0,...P.length>0&&{warnings:Qi}}}}),N.close();return}k();let Yi;if(alt(Mi))Yi=t.abortSignal?.aborted?t.abortSignal.reason:Mi;else Yi=this.handleClaudeCodeError(Mi,u,d);N.enqueue({type:"error",error:Yi}),N.close()}finally{if(t.abortSignal&&$)t.abortSignal.removeEventListener("abort",$)}},cancel:()=>{if(t.abortSignal&&$)t.abortSignal.removeEventListener("abort",$)}}),request:{body:u}}}serializeWarningsForMetadata(t){return t.map((l)=>{let n={type:l.type};if("message"in l){let f=l.message;if(f!==void 0)n.message=String(f)}if(l.type==="unsupported"||l.type==="compatibility"){let f=l.feature;if(f!==void 0)n.feature=String(f);if("details"in l){let c=l.details;if(c!==void 0)n.details=String(c)}}return n})}},gPf;var AIu=w(()=>{fr();fr();Vlt();fr();iI0=Hi.object({debug:Hi.any().refine((i)=>typeof i==="function",{message:"debug must be a function"}),info:Hi.any().refine((i)=>typeof i==="function",{message:"info must be a function"}),warn:Hi.any().refine((i)=>typeof i==="function",{message:"warn must be a function"}),error:Hi.any().refine((i)=>typeof i==="function",{message:"error must be a function"})}),tI0=Hi.object({pathToClaudeCodeExecutable:Hi.string().optional(),customSystemPrompt:Hi.string().optional(),appendSystemPrompt:Hi.string().optional(),systemPrompt:Hi.union([Hi.string(),Hi.object({type:Hi.literal("preset"),preset:Hi.literal("claude_code"),append:Hi.string().optional()})]).optional(),maxTurns:Hi.number().int().min(1).max(100).optional(),maxThinkingTokens:Hi.number().int().positive().max(1e5).optional(),thinking:Hi.union([Hi.object({type:Hi.literal("adaptive")}).strict(),Hi.object({type:Hi.literal("enabled"),budgetTokens:Hi.number().int().positive().optional()}).strict(),Hi.object({type:Hi.literal("disabled")}).strict()]).optional(),effort:Hi.enum(["low","medium","high","max"]).optional(),promptSuggestions:Hi.boolean().optional(),cwd:Hi.string().refine((i)=>{if(typeof process>"u"||!process.versions?.node)return!0;return!i||pZ0(i)},{message:"Working directory must exist"}).optional(),executable:Hi.enum(["bun","deno","node"]).optional(),executableArgs:Hi.array(Hi.string()).optional(),permissionMode:Hi.enum(["default","acceptEdits","bypassPermissions","plan","delegate","dontAsk"]).optional(),permissionPromptToolName:Hi.string().optional(),continue:Hi.boolean().optional(),resume:Hi.string().optional(),sessionId:Hi.string().optional(),allowedTools:Hi.array(Hi.string()).optional(),disallowedTools:Hi.array(Hi.string()).optional(),betas:Hi.array(Hi.string()).optional(),allowDangerouslySkipPermissions:Hi.boolean().optional(),enableFileCheckpointing:Hi.boolean().optional(),maxBudgetUsd:Hi.number().min(0).optional(),plugins:Hi.array(Hi.object({type:Hi.string(),path:Hi.string()}).passthrough()).optional(),resumeSessionAt:Hi.string().optional(),sandbox:Hi.any().refine((i)=>i===void 0||typeof i==="object",{message:"sandbox must be an object"}).optional(),tools:Hi.union([Hi.array(Hi.string()),Hi.object({type:Hi.literal("preset"),preset:Hi.literal("claude_code")})]).optional(),settingSources:Hi.array(Hi.enum(["user","project","local"])).optional(),streamingInput:Hi.enum(["auto","always","off"]).optional(),canUseTool:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"canUseTool must be a function"}).optional(),hooks:Hi.record(Hi.string(),Hi.array(Hi.object({matcher:Hi.string().optional(),hooks:Hi.array(Hi.any()).nonempty()}))).optional(),mcpServers:Hi.record(Hi.string(),Hi.union([Hi.object({type:Hi.literal("stdio").optional(),command:Hi.string(),args:Hi.array(Hi.string()).optional(),env:Hi.record(Hi.string(),Hi.string()).optional()}),Hi.object({type:Hi.literal("sse"),url:Hi.string(),headers:Hi.record(Hi.string(),Hi.string()).optional()}),Hi.object({type:Hi.literal("http"),url:Hi.string(),headers:Hi.record(Hi.string(),Hi.string()).optional()}),Hi.object({type:Hi.literal("sdk"),name:Hi.string(),instance:Hi.any()})])).optional(),verbose:Hi.boolean().optional(),debug:Hi.boolean().optional(),debugFile:Hi.string().optional(),logger:Hi.union([Hi.literal(!1),iI0]).optional(),env:Hi.record(Hi.string(),Hi.string().optional()).optional(),additionalDirectories:Hi.array(Hi.string()).optional(),agents:Hi.record(Hi.string(),Hi.object({description:Hi.string(),tools:Hi.array(Hi.string()).optional(),disallowedTools:Hi.array(Hi.string()).optional(),prompt:Hi.string(),model:Hi.enum(["sonnet","opus","haiku","inherit"]).optional(),mcpServers:Hi.array(Hi.union([Hi.string(),Hi.record(Hi.string(),Hi.any())])).optional(),criticalSystemReminder_EXPERIMENTAL:Hi.string().optional()}).passthrough()).optional(),includePartialMessages:Hi.boolean().optional(),fallbackModel:Hi.string().optional(),forkSession:Hi.boolean().optional(),stderr:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"stderr must be a function"}).optional(),strictMcpConfig:Hi.boolean().optional(),extraArgs:Hi.record(Hi.string(),Hi.union([Hi.string(),Hi.null()])).optional(),persistSession:Hi.boolean().optional(),spawnClaudeCodeProcess:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"spawnClaudeCodeProcess must be a function"}).optional(),sdkOptions:Hi.record(Hi.string(),Hi.any()).optional(),maxToolResultSize:Hi.number().int().min(100).max(1e6).optional(),onQueryCreated:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"onQueryCreated must be a function"}).optional(),onStreamStart:Hi.any().refine((i)=>i===void 0||typeof i==="function",{message:"onStreamStart must be a function"}).optional()}).strict();fI0={debug:(i)=>console.debug(`[DEBUG] ${i}`),info:(i)=>console.info(`[INFO] ${i}`),warn:(i)=>console.warn(`[WARN] ${i}`),error:(i)=>console.error(`[ERROR] ${i}`)},cI0={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};_I0=process.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PATHEXT","SYSTEMDRIVE","SYSTEMROOT","TEMP","TMP","USERNAME","USERPROFILE","WINDIR"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER","LANG","LC_ALL","TMPDIR"],gI0=["CLAUDE_CONFIG_DIR"];EI0=new Set(["model","abortController","prompt","outputFormat"]);rI0={opus:"opus",sonnet:"sonnet",haiku:"haiku"};gPf=slt()});function plt(i,t){let u=["AskUserQuestion","ExitPlanMode","EnterWorktree","ExitWorktree","Config"],l={mcpServers:t?.mcpServers,cwd:t?.cwd??process.cwd()};if(t?.isPlanMode||t?.toolApprovalLevel==="readonly")l.permissionMode="bypassPermissions",l.disallowedTools=[...u,"Write","Edit","Bash","NotebookEdit"];else l.permissionMode="bypassPermissions",l.disallowedTools=[...u];if(t?.resume)l.resume=t.resume;return slt({defaultSettings:l})(i)}function i0t(i){return DI0[i]??i}var DI0;var GIu=w(()=>{AIu();DI0={"claude-code:opus":"opus","claude-code:opus-1m":"claude-opus-4.8-1m","claude-code:sonnet":"sonnet","claude-code:haiku":"haiku","claude-code:fable":"claude-fable-5"}});function i7i(i){return i==="default"?void 0:i}var WIu="default",kIu="/repo";function t7i(i){return r7(i,{ignoreIncompleteToolCalls:!0})}function u7i(i){for(let t=i.length-1;t>=0;t--){let u=i[t];if(!u||u.role!=="user")continue;if(typeof u.content==="string")return u.content;if(Array.isArray(u.content))return u.content.filter((n)=>typeof n==="object"&&n!==null&&n.type==="text").map((n)=>n.text).join(`
107929
107930
  `);return""}return""}var t0t=w(()=>{$n()});function OI0(i,t){if(!t)return;i.read+=t.inputTokenDetails?.cacheReadTokens??0,i.write+=t.inputTokenDetails?.cacheWriteTokens??0,i.input+=t.inputTokens??0}function Vz(){let i={inputTokens:0,outputTokens:0,totalTokens:0},t={read:0,write:0,input:0},u={inputTokens:0,outputTokens:0,totalTokens:0},l=0,n,f=0;function c($){return $?.openrouter?.usage?.cost??0}return{addStep($,d){if(d!==void 0)n=d;return f=$?.inputTokens??0,i={inputTokens:i.inputTokens+($?.inputTokens??0),outputTokens:i.outputTokens+($?.outputTokens??0),totalTokens:i.totalTokens+($?.totalTokens??0)},OI0(t,$),l+=c(d),{...i}},addExternal($){u.inputTokens+=$.inputTokens??0,u.outputTokens+=$.outputTokens??0,u.totalTokens+=$.totalTokens??0},buildStepUsage(){return{inputTokens:i.inputTokens,outputTokens:i.outputTokens,totalTokens:i.totalTokens,contextTokens:f,cachedInputTokens:t.read,inputTokenDetails:{cacheReadTokens:t.read,cacheWriteTokens:t.write,noCacheTokens:i.inputTokens-t.read-t.write},...l>0&&{providerMetadata:{openrouter:{usage:{cost:l}}}}}},buildFinalUsage({totalUsage:$,providerKey:d,fallbackProviderMetadata:_}){let g=n??_,h=l>0&&g?{...g,openrouter:{...g.openrouter??{},usage:{...g.openrouter?.usage??{},cost:l}}}:g,E=$&&(($.inputTokens??0)>0||($.outputTokens??0)>0)?$:i.totalTokens>0?i:$,v=u.inputTokens>0||u.outputTokens>0||u.totalTokens>0;if(!E&&!v)return;let r=E?.inputTokens??0,x=E?.outputTokens??0,O=E?.totalTokens??0;return{inputTokens:r+u.inputTokens,outputTokens:x+u.outputTokens,reasoningTokens:$?.reasoningTokens??void 0,totalTokens:O+u.totalTokens,contextTokens:f,cachedInputTokens:t.read,inputTokenDetails:{cacheReadTokens:t.read,cacheWriteTokens:t.write,noCacheTokens:r-t.read-t.write},providerMetadata:wL(d&&h?{...h,[d]:{...h[d]??{},reasoning_details:void 0}}:h)}},totalTokens(){return{...i}},cacheTotals(){return{...t}},cost(){return l}}}var l7i=w(()=>{zl()});function n7i(i){let{input:t}=i,u=Vz(),l;return({part:f})=>{if(f.type==="start")return{agent:{id:t.agent.id??null},models:{credentialId:t.models.thinking.credentialId,thinking:{...t.models.thinking,title:t.models.thinking.title??t.models.thinking.id,provider:t.models.thinking.provider??void 0}},created_at:new Date,thread_id:t.threadId};if(f.type==="finish-step"){let c=f.providerMetadata,$=c?.[i.providerMetadataKey],d=i.extractSessionId($);if(d)l=d;return u.addStep(f.usage,c),{usage:u.buildStepUsage()}}if(f.type==="finish"){let c=u.buildFinalUsage({totalUsage:f.totalUsage,providerKey:t.models.thinking.provider});return{...c&&{usage:c},...l&&{codingAgentSessionId:l,codingAgentProvider:i.providerName}}}return}}var u0t=w(()=>{l7i()});function f7i(i){return{type:"data-title-result",data:{title:i},transient:!0}}function jIu(i){return i.type==="data-title-input"}function SIu(i){return i.type==="data-title-result"}function Z$(i){if(i instanceof Error)return i.message;if(typeof i==="object"&&i!==null)try{return JSON.stringify(i)}catch{return"[unserializable object]"}return String(i)}function zIu(i){let u=i.split(/\.\s+/).filter((n)=>!/https?:\/\//i.test(n)&&!/openrouter/i.test(n));if(u.length===0)return i;let l=u.join(". ").trim();return l.endsWith(".")?l:`${l}.`}function az(i){if(i instanceof Error&&i.name==="AbortError")return"aborted";let t=(i instanceof Error?i.message:Z$(i)).toLowerCase();if(/insufficient|no credits|out of credits|balance|payment|quota exceeded|key limit|402/i.test(t))return"insufficient_funds";if(/rate.?limit|too many requests|429/i.test(t))return"rate_limit";if(/timeout|timed out|deadline/i.test(t))return"timeout";if(/unauthor|forbidden|401|403|invalid.*(key|token)/i.test(t))return"auth";if(/tool|mcp|connection/i.test(t))return"tool_error";if(/model|provider|anthropic|openai|gemini|claude/i.test(t))return"model_error";return"unknown"}function rD(i){if(i instanceof Error){let t=i.statusCode,u=i.message.toLowerCase();if(t===402||u.includes("credit")||u.includes("insufficient funds")||u.includes("insufficient balance")||u.includes("billing")||u.includes("quota exceeded")||u.includes("key limit")||u.includes("payment required"))return`[CREDITS] ${zIu(i.message)}`;return zIu(i.message)}return Z$(i)}function mz(i){return i.kind!=="subtask"&&i.currentThreadTitle===Uy}async function*c7i(i,t){let u=i[Symbol.asyncIterator](),l=!1,n=!1,f=u.next().then(($)=>({kind:"main",value:$})),c=t.promise.then(($)=>({kind:"title",value:$?f7i($):null})).catch(($)=>{return console.warn("[harness:title] title generation failed",Z$($)),{kind:"title",value:null}});try{while(!l||!n){let $=[];if(!l)$.push(f);if(!n)$.push(c);let d=await Promise.race($);if(d.kind==="main"){if(d.value.done){if(l=!0,!n)t.finish();continue}yield d.value.value,f=u.next().then((_)=>({kind:"main",value:_}));continue}if(n=!0,d.value)yield d.value}}finally{if(!n)t.finish()}}var $7i=()=>{};import{z as bIu}from"zod";function oz(i){let{abortSignal:t,model:u,userMessage:l}=i,n=new AbortController,f=()=>n.abort();t?.addEventListener("abort",f,{once:!0});let c,$=()=>{c=setTimeout(()=>{n.abort()},NI0)},d=(()=>{let g=l.slice(0,10).trim();return KIu(g)?g:"New chat"})();return{promise:(async()=>{try{let h=(await lit({model:u,schema:yI0,system:XI0,messages:[{role:"user",content:l}],temperature:0.2,abortSignal:n.signal})).object.title.replace(/[.!?]$/,"").slice(0,60).trim();if(!KIu(h))return d;return h}catch(g){let h=g;if(h.name==="AbortError")return console.warn("[decopilot:title] Title generation aborted (timeout or parent abort)"),null;return console.error("[decopilot:title] \u274C Failed to generate title:",h.message),d}finally{clearTimeout(c),t?.removeEventListener("abort",f)}})(),finish:$}}var yI0,XI0=`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.
107930
107931
 
107931
107932
  Good examples: