decocms 4.326.2 → 4.326.3

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 (245) hide show
  1. package/dist/client/assets/{AlertCircle-D3Go-DxA.js → AlertCircle-Dl6r39uT.js} +1 -1
  2. package/dist/client/assets/{AreaChart-Bmz3CQNU.js → AreaChart-BjSL1YeT.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-CIz6WD1k.js → ArrowLeft-DqgwCR6c.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-ll-bFcOv.js → ArrowUp-nHmYockp.js} +1 -1
  5. package/dist/client/assets/{Check-CP8J-yue.js → Check-Cum9Gmys.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-C1GBX5mx.js → CheckCircle-D9XtHo6p.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-Dp38Bi37.js → ChevronRight-BOHs51Gk.js} +1 -1
  8. package/dist/client/assets/{ChevronSelectorVertical-CKbKoVDg.js → ChevronSelectorVertical-DvyAQIz0.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-BL3Y3Pfh.js → ChevronUp-BtYFSS5c.js} +1 -1
  10. package/dist/client/assets/{Copy01-Bxr69Pa_.js → Copy01-BVDMbV6v.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-DmdeQ-uT.js → CreditCard01-B6v90ksN.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-D4ZkWWko.js → DotsVertical-D7UvJPxE.js} +1 -1
  13. package/dist/client/assets/{Download01-CR8eSQHF.js → Download01-CcZku8uq.js} +1 -1
  14. package/dist/client/assets/{ErrorBarContext-BshwR1WZ.js → ErrorBarContext-DHv0oYl8.js} +1 -1
  15. package/dist/client/assets/{Eye-BBRrrwtS.js → Eye-BBpV6tQV.js} +1 -1
  16. package/dist/client/assets/{GitBranch01-B4qLtwjZ.js → GitBranch01-Cv4sj7eo.js} +1 -1
  17. package/dist/client/assets/{Globe01-nr4o03jt.js → Globe01-CHI0JbJD.js} +1 -1
  18. package/dist/client/assets/{HardDrive-DgjML8n3.js → HardDrive-CYdNNrHO.js} +1 -1
  19. package/dist/client/assets/{Image01-BCDVVuhU.js → Image01-G43QxhOt.js} +1 -1
  20. package/dist/client/assets/{Key01-MQO0WWsg.js → Key01-PzhVy3bm.js} +1 -1
  21. package/dist/client/assets/{Link01-CdFyVi7v.js → Link01-jVTiDBTL.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-DHU5YjYB.js → LinkExternal01-BAr6JdJK.js} +1 -1
  23. package/dist/client/assets/{Monitor01-AGRHw3ia.js → Monitor01-DmtwCbt0.js} +1 -1
  24. package/dist/client/assets/{Package-BOJoaNAm.js → Package-3nK5_noU.js} +1 -1
  25. package/dist/client/assets/{Palette-sHUoYAFN.js → Palette-BkRLRWV3.js} +1 -1
  26. package/dist/client/assets/{Play-BpAJnhCa.js → Play-rOB0bVkI.js} +1 -1
  27. package/dist/client/assets/{Plus-Bfv94HgH.js → Plus-DgoTF5Fu.js} +1 -1
  28. package/dist/client/assets/{SearchMd-CpHQDgyC.js → SearchMd-DCxhtUlV.js} +1 -1
  29. package/dist/client/assets/{Sector-hMpcgrar.js → Sector-7Pghc6v0.js} +1 -1
  30. package/dist/client/assets/{Settings02-CurphX2r.js → Settings02-A6xcIxL3.js} +1 -1
  31. package/dist/client/assets/{Share07-ssWsGQP3.js → Share07-CoyKAPbe.js} +1 -1
  32. package/dist/client/assets/{Shield01-BYxKWgbF.js → Shield01-CqkyLN7x.js} +1 -1
  33. package/dist/client/assets/{Stars01-olNWmkRu.js → Stars01-DJIB3LEU.js} +1 -1
  34. package/dist/client/assets/{Sun-ZB4uYdxA.js → Sun-Dwi_P5WX.js} +1 -1
  35. package/dist/client/assets/{Tool01-DvXgBBVx.js → Tool01-0lxxRklQ.js} +1 -1
  36. package/dist/client/assets/{Tool02-WNk8YR-K.js → Tool02-Cnabw5UC.js} +1 -1
  37. package/dist/client/assets/{Trash01-CPbHpyuZ.js → Trash01-CD0KlI7T.js} +1 -1
  38. package/dist/client/assets/{TrendUp01-BQdsc9D0.js → TrendUp01-_YI5CIFb.js} +1 -1
  39. package/dist/client/assets/{Upload01-MZGSQJ1X.js → Upload01-Cdg1b7TX.js} +1 -1
  40. package/dist/client/assets/{User01-CAqX5wMc.js → User01-CSgcN3Mo.js} +1 -1
  41. package/dist/client/assets/{UserSquare-yi9e0yva.js → UserSquare-x_yAARnl.js} +1 -1
  42. package/dist/client/assets/{Users01-CJCIsXEr.js → Users01-Cl5mbxOp.js} +1 -1
  43. package/dist/client/assets/{Users03-C_PThsgh.js → Users03-NoctxHVd.js} +1 -1
  44. package/dist/client/assets/{XCircle-BGsZ-GA9.js → XCircle-64L5ZEH3.js} +1 -1
  45. package/dist/client/assets/{XClose-CGI_e8Vl.js → XClose-C43TBRZC.js} +1 -1
  46. package/dist/client/assets/{Zap-DLbsB5zJ.js → Zap-DJkRZEDI.js} +1 -1
  47. package/dist/client/assets/{ZoomOut-CBw8qi7G.js → ZoomOut--0LbX6OL.js} +1 -1
  48. package/dist/client/assets/{access-gate-BUbY-TwB.js → access-gate-D2lpUOGL.js} +1 -1
  49. package/dist/client/assets/{agent-icon-PMomzNb8.js → agent-icon-B1Ks1Hf4.js} +1 -1
  50. package/dist/client/assets/{agents-list-DPa_dBDI.js → agents-list-DV1YEraD.js} +1 -1
  51. package/dist/client/assets/{ai-providers-RRdoy-Wj.js → ai-providers-BY-44G_U.js} +1 -1
  52. package/dist/client/assets/{alert-BIOoDhH5.js → alert-CcfOfEkZ.js} +1 -1
  53. package/dist/client/assets/{alert-dialog-Bkq1pELf.js → alert-dialog-BkuvAcwq.js} +1 -1
  54. package/dist/client/assets/{analytics-tab-DbwQQv6Z.js → analytics-tab-D4dQF9xz.js} +2 -2
  55. package/dist/client/assets/api-keys-DqAO5pnk.js +1 -0
  56. package/dist/client/assets/{api-keys-B5r3vebz.js → api-keys-UU0Dd8q7.js} +1 -1
  57. package/dist/client/assets/{app-editor-CKmxxfRk.js → app-editor-BcdMoSdU.js} +1 -1
  58. package/dist/client/assets/{auth-CVl-NJUr.js → auth-CKKcJcoC.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-CE6Jo9XA.js → auth-catchall-WghdY7oD.js} +1 -1
  60. package/dist/client/assets/{auth-entry-DQOzbIyh.js → auth-entry-BO5q101K.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-CJrzqfgH.js → auth-split-layout-D-XJ69Rm.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-DszVAKDO.js → authenticate-and-persist-oauth-C_kdJBur.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-DNrqLZFn.js → automation-list-row-B7cPw9Gz.js} +1 -1
  64. package/dist/client/assets/{automation-runs-DQpfZ3ah.js → automation-runs-BFHcKh5C.js} +1 -1
  65. package/dist/client/assets/automations-CbsQ-SVS.js +1 -0
  66. package/dist/client/assets/{avatar-Dzjj1gH4.js → avatar-C1FwFAMp.js} +1 -1
  67. package/dist/client/assets/{badge-Dxk6giR0.js → badge-BKoA71SP.js} +1 -1
  68. package/dist/client/assets/{block-document-pjGFtjxs.js → block-document-D7CDOs1D.js} +1 -1
  69. package/dist/client/assets/{breadcrumb-BbnkP8Mm.js → breadcrumb-CsON4AnM.js} +1 -1
  70. package/dist/client/assets/{buckets-iD8rpyAZ.js → buckets-GjcOzFMH.js} +1 -1
  71. package/dist/client/assets/{bulk-category-panel-BVvmkvx9.js → bulk-category-panel-BqGFGppv.js} +1 -1
  72. package/dist/client/assets/{capability-load-error-ChZ5muR5.js → capability-load-error-r2DJKoHm.js} +1 -1
  73. package/dist/client/assets/{cards-CJLJzSo_.js → cards-CmJogElE.js} +1 -1
  74. package/dist/client/assets/{category-editor-BexHONte.js → category-editor-CELEcyRA.js} +1 -1
  75. package/dist/client/assets/{cdn-tab-DZyG69nm.js → cdn-tab-ES57hPeb.js} +1 -1
  76. package/dist/client/assets/{chart-Chzu5zuO.js → chart-DSSfgTgp.js} +1 -1
  77. package/dist/client/assets/{chat-context-cCqCy4hR.js → chat-context-CwdLe8vA.js} +1 -1
  78. package/dist/client/assets/{checkbox-qcOSPDCl.js → checkbox-C2EHAB-p.js} +1 -1
  79. package/dist/client/assets/{choose-editor-B324JcMJ.js → choose-editor-Jn06xBe6.js} +1 -1
  80. package/dist/client/assets/{cli-auth-success-CkFC8w21.js → cli-auth-success-_lG6aoT4.js} +1 -1
  81. package/dist/client/assets/{client-icons-Bj62nsPg.js → client-icons-vTxh_sXE.js} +1 -1
  82. package/dist/client/assets/{collection-detail-3qunMiZ6.js → collection-detail-B79kLKfP.js} +1 -1
  83. package/dist/client/assets/{collection-display-button-BrkqRADM.js → collection-display-button-DGJFdMB3.js} +1 -1
  84. package/dist/client/assets/{collection-search-D2U_fyMd.js → collection-search-Cd9Hoe4I.js} +1 -1
  85. package/dist/client/assets/{collection-table-wrapper-ZDWvPoX3.js → collection-table-wrapper-DYC9z6z6.js} +1 -1
  86. package/dist/client/assets/{collection-tabs-BfanqDJF.js → collection-tabs-BreCrWSh.js} +1 -1
  87. package/dist/client/assets/{command-DRgpBwr9.js → command-CPhos_dZ.js} +1 -1
  88. package/dist/client/assets/{commerce-onboarding-l7AHeBI3.js → commerce-onboarding-BnHyEaX4.js} +1 -1
  89. package/dist/client/assets/{connect-n8wtTj4G.js → connect-BK_Gbziw.js} +1 -1
  90. package/dist/client/assets/{connect-layout-DOoW-xi0.js → connect-layout-Bf6-YZy6.js} +1 -1
  91. package/dist/client/assets/{connection-AsBoK6TM.js → connection-Bhnes_k3.js} +1 -1
  92. package/dist/client/assets/{connection-card-DjD5j1IW.js → connection-card-GXFJLpPX.js} +1 -1
  93. package/dist/client/assets/{connection-detail-BMZA2d1F.js → connection-detail-mo6E3bB0.js} +1 -1
  94. package/dist/client/assets/{connection-form-helpers-Uy4bdI_J.js → connection-form-helpers-Q8sC9tfP.js} +1 -1
  95. package/dist/client/assets/{connections-BEtHBUw9.js → connections-BPCdazZo.js} +1 -1
  96. package/dist/client/assets/{create-organization-dialog-Bzhf4-kb.js → create-organization-dialog-BuIL7DEr.js} +1 -1
  97. package/dist/client/assets/{decopilot-sse-pool-DkdTYKut.js → decopilot-sse-pool-Bd_t6kUk.js} +1 -1
  98. package/dist/client/assets/{dialog-D8rort4D.js → dialog-DXTASi-g.js} +1 -1
  99. package/dist/client/assets/{domain-settings-CnwYFLfj.js → domain-settings-BQrbgWdm.js} +1 -1
  100. package/dist/client/assets/{download-app-dialog-ePZ85wGq.js → download-app-dialog-CLGjRg5l.js} +1 -1
  101. package/dist/client/assets/{drawer-C0LCZcQg.js → drawer-DSWCZX2d.js} +1 -1
  102. package/dist/client/assets/{dropdown-menu-lMdG_iDY.js → dropdown-menu-D2aQrQVU.js} +1 -1
  103. package/dist/client/assets/{e2e-tab-4yn9wTPW.js → e2e-tab-BflawgCh.js} +1 -1
  104. package/dist/client/assets/{editor-Bd3prlo2.js → editor-BBvUAdKc.js} +1 -1
  105. package/dist/client/assets/{empty-state-RWtOoUAx.js → empty-state-BVPf7XOi.js} +1 -1
  106. package/dist/client/assets/{empty-state-BpKWogBT.js → empty-state-wVz9RKIg.js} +1 -1
  107. package/dist/client/assets/{extract-connection-data-gJTZYhrI.js → extract-connection-data-BSH6JM1F.js} +1 -1
  108. package/dist/client/assets/{file-explorer-DHpg7S3U.js → file-explorer-CvAmWSSX.js} +1 -1
  109. package/dist/client/assets/{file-type-icon-CQjfgGYf.js → file-type-icon-VvmmIj_F.js} +1 -1
  110. package/dist/client/assets/{folder-icon-gXZpqMuq.js → folder-icon-DB487rp_.js} +1 -1
  111. package/dist/client/assets/{form-B-BJnneF.js → form-CsgXUafl.js} +1 -1
  112. package/dist/client/assets/{general-D_RuJ7zO.js → general-CGZIH69h.js} +1 -1
  113. package/dist/client/assets/{github-repo-picker-CfIyZF9m.js → github-repo-picker-BKypvOy4.js} +1 -1
  114. package/dist/client/assets/{hooks-DXUsJ5OG.js → hooks-BdKWk0o0.js} +1 -1
  115. package/dist/client/assets/{hosting-tab-4aBO6Krh.js → hosting-tab-C-6hEK4F.js} +1 -1
  116. package/dist/client/assets/{index-DVI_ComO.js → index-Bc_h5DX8.js} +1 -1
  117. package/dist/client/assets/{index-CGPH8Aay.js → index-Bg8E_smY.js} +69 -69
  118. package/dist/client/assets/{index-Bxx-2rdv.js → index-BxadWAVl.js} +1 -1
  119. package/dist/client/assets/{index-BARlCHD0.js → index-D-qNB2wx.js} +1 -1
  120. package/dist/client/assets/{index-BipicGme.js → index-Dc9cvZ2p.js} +2 -2
  121. package/dist/client/assets/{index-BEokwCpt.js → index-Dh1XVXPl.js} +1 -1
  122. package/dist/client/assets/{index-Vz5mFGuO.js → index-Djcg24Cc.js} +1 -1
  123. package/dist/client/assets/{index-DGsk74Gi.js → index-GU577669.js} +1 -1
  124. package/dist/client/assets/{index-redirect-BailDO-h.js → index-redirect-BVfwjiR-.js} +1 -1
  125. package/dist/client/assets/{index-Bn9OGPOM.js → index-x9-OZ7Do.js} +1 -1
  126. package/dist/client/assets/{index-BLlEq7fX.js → index-yObSeQ5k.js} +4 -4
  127. package/dist/client/assets/{infra-billing-BCL64jEM.js → infra-billing-BednXcPM.js} +1 -1
  128. package/dist/client/assets/{input-BuziP07t.js → input-Cxe1UQt2.js} +1 -1
  129. package/dist/client/assets/{integration-icon-CEg56vtn.js → integration-icon-CE8UuBHA.js} +1 -1
  130. package/dist/client/assets/{invite-member-dialog-DyctdDNO.js → invite-member-dialog-mXt7nyLm.js} +1 -1
  131. package/dist/client/assets/{label-pQa9etdh.js → label-BTCxMQ9F.js} +1 -1
  132. package/dist/client/assets/{layout-DwxovjMD.js → layout-CR0Kfy66.js} +1 -1
  133. package/dist/client/assets/{login-ZcDtH9P-.js → login-gVk6fs_6.js} +1 -1
  134. package/dist/client/assets/{markdown-B2hPlfeE.js → markdown-ksWjF77S.js} +1 -1
  135. package/dist/client/assets/{mcp-oauth-DYDEHrrj.js → mcp-oauth-D35M9KJy.js} +1 -1
  136. package/dist/client/assets/{members-CMHz8FAS.js → members-D6zwzXf1.js} +1 -1
  137. package/dist/client/assets/{monaco-editor-CX6e7VrG.js → monaco-editor-NOhkrHXq.js} +1 -1
  138. package/dist/client/assets/{monitoring-stats-row-CVVUq6Vp.js → monitoring-stats-row-5RXyowBJ.js} +1 -1
  139. package/dist/client/assets/{multi-select-B0YFL0QE.js → multi-select-DfDEUEA_.js} +1 -1
  140. package/dist/client/assets/{oauth-callback-BGbaHPCK.js → oauth-callback-D3nO4PHh.js} +1 -1
  141. package/dist/client/assets/{oauth-callback-ai-provider-C_iUQvlY.js → oauth-callback-ai-provider-CwyG-3XI.js} +1 -1
  142. package/dist/client/assets/{onboarding-DLpSL4J9.js → onboarding-yQhV2wep.js} +1 -1
  143. package/dist/client/assets/org-layout-CnT_vaFr.js +1 -0
  144. package/dist/client/assets/{organization-choice-DhuWjISR.js → organization-choice-DSewUpOK.js} +1 -1
  145. package/dist/client/assets/{orgs-CdYDzU-F.js → orgs-He5zWycZ.js} +1 -1
  146. package/dist/client/assets/{page-seo-form-Do6LQWK7.js → page-seo-form-DZT9qZUP.js} +1 -1
  147. package/dist/client/assets/{popover-BHjD_6zY.js → popover-Do06EzCT.js} +1 -1
  148. package/dist/client/assets/{post-calendar-DmInAQH7.js → post-calendar-C2fCkM3y.js} +1 -1
  149. package/dist/client/assets/{post-editor-Ba2DaGx4.js → post-editor-BN2a9TQp.js} +1 -1
  150. package/dist/client/assets/{primitives-Hy9C3z90.js → primitives-Bq4Nm5Yl.js} +1 -1
  151. package/dist/client/assets/{profile-Dgy-rmrE.js → profile-BD6KfzzF.js} +1 -1
  152. package/dist/client/assets/{project-app-view-CzUmnWWK.js → project-app-view-DWJNcoc9.js} +1 -1
  153. package/dist/client/assets/{project-icon-s2rp6Kcd.js → project-icon-DiqkXgM5.js} +1 -1
  154. package/dist/client/assets/{prompts-D2YZMR_s.js → prompts-BO6CYda5.js} +1 -1
  155. package/dist/client/assets/record-editor-DTVniiyc.js +1 -0
  156. package/dist/client/assets/{redirect-editor-Zm8lYRC9.js → redirect-editor-Cyylv_7K.js} +1 -1
  157. package/dist/client/assets/registry-CMy8Wdn7.js +2 -0
  158. package/dist/client/assets/{registry-layout-CLQv6P8m.js → registry-layout-DtHo8zvb.js} +1 -1
  159. package/dist/client/assets/{reports-CMyR5ppb.js → reports--lCsxTH_.js} +1 -1
  160. package/dist/client/assets/{require-capability-BqKraIFe.js → require-capability-BiaZ8QKv.js} +1 -1
  161. package/dist/client/assets/{required-auth-layout-A6jhZ6fc.js → required-auth-layout-DrR7F1Dx.js} +1 -1
  162. package/dist/client/assets/{reset-password-CRRb7m_J.js → reset-password-BY3FW40f.js} +1 -1
  163. package/dist/client/assets/{review-settings-Be4edMKp.js → review-settings-BO-u5lQ_.js} +1 -1
  164. package/dist/client/assets/{roles-ljHpwQuE.js → roles-Bi_XnHDX.js} +1 -1
  165. package/dist/client/assets/{schema-DnDMVQH_.js → schema-_YxnJAOY.js} +1 -1
  166. package/dist/client/assets/{scroll-area-DrbBvL1-.js → scroll-area-C-I7g4EO.js} +1 -1
  167. package/dist/client/assets/{search-input-DNtr4vL-.js → search-input-BtFe-rt7.js} +1 -1
  168. package/dist/client/assets/{secrets-B2MwwoSG.js → secrets-COOZZ7y4.js} +1 -1
  169. package/dist/client/assets/{sections-editor-bH5ri5fL.js → sections-editor-BSqdOu5S.js} +1 -1
  170. package/dist/client/assets/{select-VG4g8cRT.js → select-D5KnJfVh.js} +1 -1
  171. package/dist/client/assets/{select-model-B0UUoAOy.js → select-model-Cry0FR31.js} +1 -1
  172. package/dist/client/assets/{self-tool-result-DXYS49Bh.js → self-tool-result-D3anwtmw.js} +1 -1
  173. package/dist/client/assets/{seo-editor-Dcz7nrQQ.js → seo-editor-CltqHiQ3.js} +1 -1
  174. package/dist/client/assets/settings-layout-D2BsdLul.js +1 -0
  175. package/dist/client/assets/{settings-sidebar-DBZazsqF.js → settings-sidebar-5N9kG2-X.js} +1 -1
  176. package/dist/client/assets/{shell-controls-BZx5BtXL.js → shell-controls-CHj2Ju37.js} +1 -1
  177. package/dist/client/assets/{shell-layout-DhMZzLJR.js → shell-layout-DuQD47e2.js} +1 -1
  178. package/dist/client/assets/{skill-preview-SXUpHpyk.js → skill-preview-CuuA0NCv.js} +1 -1
  179. package/dist/client/assets/{skills-JYFsi9f3.js → skills-BVJ2as6J.js} +1 -1
  180. package/dist/client/assets/{sso-BSEnZuX-.js → sso-B5p01qer.js} +1 -1
  181. package/dist/client/assets/{store-BVHGIpwa.js → store-BkUtCZiU.js} +1 -1
  182. package/dist/client/assets/store-registry-DTZpHMB2.js +2 -0
  183. package/dist/client/assets/{switch-D4rAjaTU.js → switch-PC_sbQcD.js} +1 -1
  184. package/dist/client/assets/{synced-repos-DLdqj-sH.js → synced-repos-ouYbrnEV.js} +1 -1
  185. package/dist/client/assets/{table-aWc0_ACP.js → table-D8RNQRXu.js} +1 -1
  186. package/dist/client/assets/{tabs-DQ71MG9V.js → tabs-Faw3Zc3C.js} +1 -1
  187. package/dist/client/assets/{task-board-B7fvDdgg.js → task-board-CD1GXjgz.js} +1 -1
  188. package/dist/client/assets/{task-route-CnCRbimL.js → task-route-uDMNrFf_.js} +1 -1
  189. package/dist/client/assets/{tasks-D73EL_BG.js → tasks-azd1Y_F7.js} +1 -1
  190. package/dist/client/assets/{textarea-BeXjwZ3R.js → textarea-DhJGxVim.js} +1 -1
  191. package/dist/client/assets/{toggle-group-DPgQPwoD.js → toggle-group-CfwfgsYd.js} +1 -1
  192. package/dist/client/assets/{toolbar-BSp1fgjZ.js → toolbar-Bl4AgBuV.js} +1 -1
  193. package/dist/client/assets/{toolbar-icon-button-Cl6xUShh.js → toolbar-icon-button-DvDtYRDK.js} +1 -1
  194. package/dist/client/assets/{track-De1Xf9c5.js → track-Ce_XuScA.js} +1 -1
  195. package/dist/client/assets/{types-SjjneCjg.js → types-DGCucuyk.js} +1 -1
  196. package/dist/client/assets/{use-ai-providers-nO43huzc.js → use-ai-providers-DhnneleL.js} +1 -1
  197. package/dist/client/assets/{use-automations-kB697jyQ.js → use-automations-B7EX-3Cy.js} +1 -1
  198. package/dist/client/assets/{use-autosave-10q2RTOI.js → use-autosave-lgy_6spq.js} +1 -1
  199. package/dist/client/assets/{use-connection-D8n19Xlh.js → use-connection-BH0yJvCV.js} +1 -1
  200. package/dist/client/assets/{use-copy-BXnXibzr.js → use-copy-C6XSOf-g.js} +1 -1
  201. package/dist/client/assets/{use-create-virtual-mcp-2Rkt1T5V.js → use-create-virtual-mcp-B_Big81q.js} +1 -1
  202. package/dist/client/assets/{use-debounced-autosave-DqqoYjKj.js → use-debounced-autosave-DciaJedO.js} +1 -1
  203. package/dist/client/assets/{use-debounced-value-AG5Y92S9.js → use-debounced-value-CcdkgwsW.js} +1 -1
  204. package/dist/client/assets/{use-decopilot-events-CIVaH9tI.js → use-decopilot-events-DrYsw3IG.js} +1 -1
  205. package/dist/client/assets/{use-delete-connection-BVug-4_6.js → use-delete-connection-CVXqrq8n.js} +1 -1
  206. package/dist/client/assets/{use-deployment-admin-DMYlgfzA.js → use-deployment-admin-Bszyyyc4.js} +1 -1
  207. package/dist/client/assets/{use-destination-route-h5z5mg1r.js → use-destination-route-CFPa65aL.js} +1 -1
  208. package/dist/client/assets/{use-file-configs-Gjb-1F6A.js → use-file-configs-Cpbct9Ca.js} +1 -1
  209. package/dist/client/assets/{use-infinite-scroll-C1XfEqtD.js → use-infinite-scroll-DakAwry1.js} +1 -1
  210. package/dist/client/assets/{use-join-requests-D1lhzPOS.js → use-join-requests-DAUwXiug.js} +1 -1
  211. package/dist/client/assets/{use-mcp-auth-status-C1s-X4Dw.js → use-mcp-auth-status-BfHzx4_e.js} +1 -1
  212. package/dist/client/assets/{use-mcp-client-Br9Bc_QG.js → use-mcp-client-BJ6pLoHp.js} +1 -1
  213. package/dist/client/assets/{use-mcp-prompts-BwIRDgak.js → use-mcp-prompts-CcYSsMp0.js} +1 -1
  214. package/dist/client/assets/{use-members-DqeJHhRA.js → use-members-BQ-OLDZ7.js} +1 -1
  215. package/dist/client/assets/{use-navigate-to-agent-CFT1TuW9.js → use-navigate-to-agent-RbmZ7Vsq.js} +1 -1
  216. package/dist/client/assets/{use-org-auth-client-bZkxXt4u.js → use-org-auth-client-DPKY1eIR.js} +1 -1
  217. package/dist/client/assets/{use-org-sso-C9rJ4bkG.js → use-org-sso-BxZvOwB8.js} +1 -1
  218. package/dist/client/assets/{use-organization-roles-Dmlku1aY.js → use-organization-roles-BPL6QC9s.js} +1 -1
  219. package/dist/client/assets/{use-organization-settings-CKNbCAr3.js → use-organization-settings-Cz7tRNt7.js} +1 -1
  220. package/dist/client/assets/{use-panel-navigate-BfB4XvOx.js → use-panel-navigate-D1N--iZ6.js} +1 -1
  221. package/dist/client/assets/{use-registry-connections-BP-_JczK.js → use-registry-connections-i-JM7Bb7.js} +1 -1
  222. package/dist/client/assets/{use-secrets-BbXXjAyA.js → use-secrets-DK21RXuq.js} +1 -1
  223. package/dist/client/assets/{use-section-preview-base-9h6PGpl4.js → use-section-preview-base-BiCHaw8S.js} +1 -1
  224. package/dist/client/assets/{use-status-sounds-BuHyS6qw.js → use-status-sounds-C1DPug4R.js} +1 -1
  225. package/dist/client/assets/{use-tags-DS4F47AG.js → use-tags-zUr18-mZ.js} +1 -1
  226. package/dist/client/assets/{use-view-mode-BSRUpuXF.js → use-view-mode-BPVs-eZG.js} +1 -1
  227. package/dist/client/assets/{use-virtual-mcp-D6Bwg8yT.js → use-virtual-mcp-DQ_hO67Q.js} +1 -1
  228. package/dist/client/assets/useInfiniteQuery-Cal8DBkh.js +1 -0
  229. package/dist/client/assets/useSuspenseInfiniteQuery-ByLLlJan.js +1 -0
  230. package/dist/client/assets/{users-D5H62lu9.js → users-CiSyY43d.js} +1 -1
  231. package/dist/client/assets/{variant-calendar-BoMQDpfw.js → variant-calendar-xsRZOrHI.js} +1 -1
  232. package/dist/client/assets/{view-mode-toggle-BDAqmIGs.js → view-mode-toggle-CwVnwVFQ.js} +1 -1
  233. package/dist/client/index.html +1 -1
  234. package/dist/server/cli.js +1 -1
  235. package/dist/server/server.js +1 -1
  236. package/package.json +1 -1
  237. package/dist/client/assets/api-keys-DORrrYZ_.js +0 -1
  238. package/dist/client/assets/automations-ZlJGR9fb.js +0 -1
  239. package/dist/client/assets/org-layout-B1cyHFI3.js +0 -1
  240. package/dist/client/assets/record-editor-CqkWdQdU.js +0 -1
  241. package/dist/client/assets/registry-DW2tIbg5.js +0 -2
  242. package/dist/client/assets/settings-layout-C7v9SOjB.js +0 -1
  243. package/dist/client/assets/store-registry-C0xbkc-i.js +0 -2
  244. package/dist/client/assets/useInfiniteQuery-BPKsnHdI.js +0 -1
  245. package/dist/client/assets/useSuspenseInfiniteQuery-B80OhY0M.js +0 -1
@@ -1545,7 +1545,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Sn1=L(()=>{Ub()});f
1545
1545
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await yy`
1546
1546
  DELETE FROM kysely_migration WHERE name = ${X}
1547
1547
  `.execute($)}}async function xs1($){await K04($),await W04($);let Z=new _s1({db:$,provider:{getMigrations:()=>Promise.resolve(qn0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function H04($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Bm0();let G=X??u$(),J=async()=>{if(!Z&&!X)await WO(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await xs1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function F04(){let $=u$(),Z=new _s1({db:$.db,provider:{getMigrations:()=>Promise.resolve(qn0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var bs1=L(()=>{Cs1();Om0();KX()});async function v70($){let Z={...process.env},X=I80($,Z);console.log(_E1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Ko1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (yZ0(),bZ0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Om0(),Ho1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (KX(),It1)),{migrateToLatest:F}=await Promise.resolve().then(() => (bs1(),fs1)),U=H(G.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return Cn1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Mn0=L(()=>{Ub();Wo1();j$()});var us1={};s(us1,{updateService:()=>eE,subscribeCliState:()=>Sn0,setTuiConsoleIntercepted:()=>x70,setServerUrl:()=>Cp,setMigrationsDone:()=>Sp,setDevMode:()=>N04,resetCliStateForTests:()=>U04,isTuiConsoleIntercepted:()=>f70,getCliState:()=>kn0,addLogEntry:()=>LO});function ys1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function gs1(){return{services:ys1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function U04(){tQ=gs1()}function kp(){for(let $ of Vn0)$()}function kn0(){return tQ}function Sn0($){return Vn0.add($),()=>Vn0.delete($)}function eE($){tQ={...tQ,services:tQ.services.map((Z)=>Z.name===$.name?$:Z)},kp()}function Sp(){tQ={...tQ,migrationsStatus:"done"},kp()}function Cp($){tQ={...tQ,serverUrl:$},kp()}function LO($){let Z=[...tQ.logs,$];tQ={...tQ,logs:Z.length>500?Z.slice(-500):Z},kp()}function N04(){tQ={...tQ,services:[...ys1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},kp()}function x70($){hs1=$}function f70(){return hs1}var tQ,Vn0,hs1=!1;var $j=L(()=>{tQ=gs1();Vn0=new Set});import{createServer as cs1}from"net";function B04($){return new Promise((Z)=>{let X=cs1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function _p($){if(await B04($))return $;let Z=await new Promise((X,Q)=>{let Y=cs1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Cn0=()=>{};var vn0={};s(vn0,{startDevServer:()=>L04,pipeToLogStore:()=>_n0});import{join as O04}from"path";function _n0($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1548
- `);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;LO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)LO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function L04($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await _p(Number(Y)+1):await _p(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await v70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)eE({name:D.name,status:"ready",port:D.port});Sp();let F=O04(import.meta.dir,"..","..","..","..",".."),U=X===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)_n0(N.stdout),_n0(N.stderr);Cp(G),eE({name:"Vite",status:"ready",port:Number(Y)}),eE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (yZ0(),bZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var xn0=L(()=>{Mn0();$j();Cn0()});var b70;var fn0=L(()=>{b70={name:"decocms",version:"4.326.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as w04,Text as ls1}from"ink";import{jsx as E04,jsxs as ms1}from"react/jsx-runtime";function ds1({version:$}){return ms1(w04,{flexDirection:"column",marginTop:1,children:[J70.map((Z,X)=>E04(ls1,{color:K70[X],children:Z},X)),ms1(ls1,{dimColor:!0,children:[" v",$]})]})}var is1=L(()=>{wp()});import{Box as Zj,Text as DO}from"ink";import{Spinner as j04}from"@inkjs/ui";import{jsx as UG,jsxs as gy}from"react/jsx-runtime";function ps1({status:$}){if($==="pending")return UG(j04,{label:""});return UG(DO,{color:"green",children:"\u2713"})}function z04($){return`${$.name}: ${$.port||"...."}`}function ns1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return gy(Zj,{flexDirection:"column",paddingBottom:1,children:[UG(ds1,{version:b70.version}),UG(Zj,{marginBottom:1,children:UG(DO,{dimColor:!0,children:"\u2500".repeat(80)})}),UG(Zj,{children:gy(DO,{dimColor:!0,children:["Home: ",X]})}),gy(Zj,{gap:2,children:[$.map((Y)=>gy(Zj,{gap:1,children:[UG(DO,{children:z04(Y)}),UG(ps1,{status:Y.status})]},Y.name)),gy(Zj,{gap:1,children:[UG(DO,{children:"Migrations"}),UG(ps1,{status:Z})]})]}),UG(Zj,{children:Q?gy(DO,{children:["Open in browser: ",UG(DO,{color:"cyan",children:Q})]}):UG(DO,{dimColor:!0,children:"Starting..."})})]})}var ts1=L(()=>{fn0();is1()});import{Box as P04,Text as vp}from"ink";import{jsx as bn0,jsxs as yn0}from"react/jsx-runtime";function A04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function os1({logs:$}){return bn0(P04,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return bn0(vp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return yn0(vp,{children:[yn0(vp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),bn0(vp,{color:A04(Z.status),children:Z.status}),yn0(vp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var rs1=()=>{};var gn0={};s(gn0,{App:()=>I04});import{Box as T04}from"ink";import{useSyncExternalStore as R04}from"react";import{jsx as as1,jsxs as q04}from"react/jsx-runtime";function I04({home:$}){let Z=R04(Sn0,kn0);return q04(T04,{flexDirection:"column",children:[as1(ns1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),as1(os1,{logs:Z.logs})]})}var hn0=L(()=>{ts1();rs1();$j()});var o3="thread-gate",AU="decopilot-hosted-harness",TU="decopilot-hosted-harness-sandboxed",qJ="automations",wO="background-tools",Xj="task-board-github-reads";var ss1="11";function es1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ss1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var $e1=()=>{};import M04 from"pg";async function Xe1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=V04}=$,Y=$.log??((W)=>console.log(W)),G=new M04.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Ze1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(k04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Ze1.toString()])}catch{}await G.end().catch(()=>{})}}var Ze1=8314027461559302n,V04=600000,k04=500;var Qe1=L(()=>{t8()});function S04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function un0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ye1(){let $=S04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:un0($,"--cpu-prof-dir")??process.cwd(),name:un0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(un0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Ge1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=oE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),y70=setInterval(()=>void Z().catch(()=>{}),$),y70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(y70)clearInterval(y70)}}var y70;var Je1=()=>{};import*as C04 from"bun:jsc";function Ke1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{_04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=v04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var _04,v04;var We1=L(()=>{({startSamplingProfiler:_04,samplingProfilerStackTraces:v04}=C04)});function He1(){Ye1();let $=[Ge1(),wt1(),Ke1()];return()=>{for(let Z of $)Z()}}var Fe1=L(()=>{Ym0();Je1();We1()});var Qj=v((Ue1)=>{Object.defineProperty(Ue1,"__esModule",{value:!0});Ue1.RepublishHeaders=Ue1.DirectMsgHeaders=Ue1.JsHeaders=Ue1.AdvisoryKind=void 0;Ue1.isOrderedPushConsumerOptions=x04;Ue1.isPullConsumer=f04;Ue1.isPushConsumer=b04;Ue1.isBoundPushConsumerOptions=y04;function x04($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function f04($){return $.isPullConsumer()}function b04($){return $.isPushConsumer()}function y04($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ue1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ue1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ue1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ue1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var NG=v((Be1)=>{Object.defineProperty(Be1,"__esModule",{value:!0});Be1.TD=Be1.TE=Be1.Empty=void 0;Be1.encode=p04;Be1.decode=n04;Be1.Empty=new Uint8Array(0);Be1.TE=new TextEncoder;Be1.TD=new TextDecoder;function i04(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function p04(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Be1.TE.encode($[X]));if(Z.length===0)return Be1.Empty;if(Z.length===1)return Z[0];return i04(...Z)}function n04($){if(!$||$.length===0)return"";return Be1.TD.decode($)}});var BG=v((De1)=>{Object.defineProperty(De1,"__esModule",{value:!0});De1.errors=De1.PermissionViolationError=De1.NoRespondersError=De1.TimeoutError=De1.RequestError=De1.ProtocolError=De1.ConnectionError=De1.DrainingConnectionError=De1.ClosedConnectionError=De1.AuthorizationError=De1.UserAuthenticationExpiredError=De1.InvalidOperationError=De1.InvalidArgumentError=De1.InvalidSubjectError=void 0;class ln0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}De1.InvalidSubjectError=ln0;class g70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new g70(`${$} ${Z}`,X)}}De1.InvalidArgumentError=g70;class mn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}De1.InvalidOperationError=mn0;class h70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new h70($);return null}}De1.UserAuthenticationExpiredError=h70;class u70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new u70($);return null}}De1.AuthorizationError=u70;class dn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}De1.ClosedConnectionError=dn0;class in0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}De1.DrainingConnectionError=in0;class pn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}De1.ConnectionError=pn0;class nn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}De1.ProtocolError=nn0;class tn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof c70}}De1.RequestError=tn0;class on0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}De1.TimeoutError=on0;class c70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}De1.NoRespondersError=c70;class l70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new l70($,X,Q,Y)}}De1.PermissionViolationError=l70;De1.errors={AuthorizationError:u70,ClosedConnectionError:dn0,ConnectionError:pn0,DrainingConnectionError:in0,InvalidArgumentError:g70,InvalidOperationError:mn0,InvalidSubjectError:ln0,NoRespondersError:c70,PermissionViolationError:l70,ProtocolError:nn0,RequestError:tn0,TimeoutError:on0,UserAuthenticationExpiredError:h70}});var r3=v((Pe1)=>{Object.defineProperty(Pe1,"__esModule",{value:!0});Pe1.SimpleMutex=Pe1.Perf=void 0;Pe1.extend=F14;Pe1.render=U14;Pe1.timeout=N14;Pe1.delay=B14;Pe1.deadline=O14;Pe1.deferred=an0;Pe1.debugDeferred=L14;Pe1.shuffle=D14;Pe1.collect=w14;Pe1.jitter=ze1;Pe1.backoff=E14;Pe1.nanos=j14;Pe1.millis=z14;Pe1.randomToken=T14;var H14=NG(),rn0=BG();function F14($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function U14($){return H14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function N14($,Z=!0){let X=Z?new rn0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new rn0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function B14($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function O14($,Z=1000){let X=an0(),Q=setTimeout(()=>{X.reject(new rn0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function an0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function L14(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function D14($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function w14($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ee1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Pe1.Perf=Ee1;class je1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=an0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Pe1.SimpleMutex=je1;function ze1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function E14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ze1(X>Z?$[Z]:$[X])}}}function j14($){return $*1e6}function z14($){return Math.floor($/1e6)}var P14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",RU=new Uint8Array(62);for(let $=0;$<62;$++)RU[$]=P14.charCodeAt($);var A14=218340105584896;function T14(){let $=Math.floor(Math.random()*A14),Z=$%62,X=RU[Z];$=($-Z)/62,Z=$%62;let Q=RU[Z];$=($-Z)/62,Z=$%62;let Y=RU[Z];$=($-Z)/62,Z=$%62;let G=RU[Z];$=($-Z)/62,Z=$%62;let J=RU[Z];$=($-Z)/62,Z=$%62;let K=RU[Z];$=($-Z)/62,Z=$%62;let W=RU[Z];$=($-Z)/62;let H=RU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var ke1=v((Me1)=>{Object.defineProperty(Me1,"__esModule",{value:!0});Me1.nuid=Me1.NuidImpl=void 0;var h14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",EO=62,d70=12,Ie1=10,Te1=33,u14=333,Re1=d70+Ie1,en0=new Uint8Array(EO);for(let $=0;$<EO;$++)en0[$]=h14.charCodeAt($);var m70=4294967296,qe1=BigInt(EO)**BigInt(Ie1),xp=Number(qe1/(1n<<32n)),sn0=Number(qe1%(1n<<32n));function c14($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function l14($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else c14($)}class $t0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Re1),this.cbuf=new Uint8Array(d70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(xp+1)),this.seqLo=Math.floor(Math.random()*m70);while($++<8&&this.seqHi===xp&&this.seqLo>=sn0);if(this.seqHi===xp&&this.seqLo>=sn0)this.seqLo=0;this.inc=Math.random()*(u14-Te1)+Te1|0}setPre(){l14(this.cbuf);for(let $=0;$<d70;$++)this.buf[$]=en0[this.cbuf[$]%EO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Re1-1;X>=d70;X--){let Q=Math.floor($/EO),G=($-Q*EO)*m70+Z,J=Math.floor(G/EO),K=G-J*EO;this.buf[X]=en0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=m70)this.seqLo-=m70,this.seqHi+=1;if(this.seqHi>xp||this.seqHi===xp&&this.seqLo>=sn0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Me1.NuidImpl=$t0;Me1.nuid=new $t0});var ve1=v((Ce1)=>{Object.defineProperty(Ce1,"__esModule",{value:!0});Ce1.nuid=Ce1.Nuid=void 0;var Se1=ke1();Ce1.Nuid=Se1.NuidImpl;Ce1.nuid=Se1.nuid});var p70=v((i70)=>{Object.defineProperty(i70,"__esModule",{value:!0});i70.nuid=i70.Nuid=void 0;var xe1=ve1();Object.defineProperty(i70,"Nuid",{enumerable:!0,get:function(){return xe1.Nuid}});Object.defineProperty(i70,"nuid",{enumerable:!0,get:function(){return xe1.nuid}})});var jO=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.DEFAULT_HOST=fe1.DEFAULT_PORT=fe1.Match=void 0;fe1.syncIterator=t14;fe1.createInbox=o14;var p14=p70(),n14=BG();fe1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function t14($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function o14($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw n14.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${p14.nuid.next()}`}fe1.DEFAULT_PORT=4222;fe1.DEFAULT_HOST="127.0.0.1"});var fp=v((he1)=>{Object.defineProperty(he1,"__esModule",{value:!0});he1.DataBuffer=void 0;var ye1=NG();class ge1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ye1.TE.encode($)}static toAscii($){return ye1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}he1.DataBuffer=ge1});var Yj=v((le1)=>{Object.defineProperty(le1,"__esModule",{value:!0});le1.LF=le1.CR=le1.CRLF=le1.CR_LF_LEN=le1.CR_LF=void 0;le1.setTransportFactory=Q$4;le1.defaultPort=Y$4;le1.getUrlParseFn=G$4;le1.newTransport=J$4;le1.getResolveFn=K$4;le1.protoLen=ce1;le1.extractProtocolMessage=W$4;var $$4=NG(),Z$4=jO(),X$4=fp(),OG;function Q$4($){OG=$}function Y$4(){return OG!==void 0&&OG.defaultPort!==void 0?OG.defaultPort:Z$4.DEFAULT_PORT}function G$4(){return OG!==void 0&&OG.urlParseFn?OG.urlParseFn:void 0}function J$4(){if(!OG||typeof OG.factory!=="function")throw Error("transport fn is not set");return OG.factory()}function K$4(){return OG!==void 0&&OG.dnsResolveFn?OG.dnsResolveFn:void 0}le1.CR_LF=`\r
1548
+ `);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;LO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)LO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function L04($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await _p(Number(Y)+1):await _p(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await v70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)eE({name:D.name,status:"ready",port:D.port});Sp();let F=O04(import.meta.dir,"..","..","..","..",".."),U=X===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)_n0(N.stdout),_n0(N.stderr);Cp(G),eE({name:"Vite",status:"ready",port:Number(Y)}),eE({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (yZ0(),bZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var xn0=L(()=>{Mn0();$j();Cn0()});var b70;var fn0=L(()=>{b70={name:"decocms",version:"4.326.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as w04,Text as ls1}from"ink";import{jsx as E04,jsxs as ms1}from"react/jsx-runtime";function ds1({version:$}){return ms1(w04,{flexDirection:"column",marginTop:1,children:[J70.map((Z,X)=>E04(ls1,{color:K70[X],children:Z},X)),ms1(ls1,{dimColor:!0,children:[" v",$]})]})}var is1=L(()=>{wp()});import{Box as Zj,Text as DO}from"ink";import{Spinner as j04}from"@inkjs/ui";import{jsx as UG,jsxs as gy}from"react/jsx-runtime";function ps1({status:$}){if($==="pending")return UG(j04,{label:""});return UG(DO,{color:"green",children:"\u2713"})}function z04($){return`${$.name}: ${$.port||"...."}`}function ns1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return gy(Zj,{flexDirection:"column",paddingBottom:1,children:[UG(ds1,{version:b70.version}),UG(Zj,{marginBottom:1,children:UG(DO,{dimColor:!0,children:"\u2500".repeat(80)})}),UG(Zj,{children:gy(DO,{dimColor:!0,children:["Home: ",X]})}),gy(Zj,{gap:2,children:[$.map((Y)=>gy(Zj,{gap:1,children:[UG(DO,{children:z04(Y)}),UG(ps1,{status:Y.status})]},Y.name)),gy(Zj,{gap:1,children:[UG(DO,{children:"Migrations"}),UG(ps1,{status:Z})]})]}),UG(Zj,{children:Q?gy(DO,{children:["Open in browser: ",UG(DO,{color:"cyan",children:Q})]}):UG(DO,{dimColor:!0,children:"Starting..."})})]})}var ts1=L(()=>{fn0();is1()});import{Box as P04,Text as vp}from"ink";import{jsx as bn0,jsxs as yn0}from"react/jsx-runtime";function A04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function os1({logs:$}){return bn0(P04,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return bn0(vp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return yn0(vp,{children:[yn0(vp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),bn0(vp,{color:A04(Z.status),children:Z.status}),yn0(vp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var rs1=()=>{};var gn0={};s(gn0,{App:()=>I04});import{Box as T04}from"ink";import{useSyncExternalStore as R04}from"react";import{jsx as as1,jsxs as q04}from"react/jsx-runtime";function I04({home:$}){let Z=R04(Sn0,kn0);return q04(T04,{flexDirection:"column",children:[as1(ns1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),as1(os1,{logs:Z.logs})]})}var hn0=L(()=>{ts1();rs1();$j()});var o3="thread-gate",AU="decopilot-hosted-harness",TU="decopilot-hosted-harness-sandboxed",qJ="automations",wO="background-tools",Xj="task-board-github-reads";var ss1="11";function es1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ss1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var $e1=()=>{};import M04 from"pg";async function Xe1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=V04}=$,Y=$.log??((W)=>console.log(W)),G=new M04.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Ze1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(k04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Ze1.toString()])}catch{}await G.end().catch(()=>{})}}var Ze1=8314027461559302n,V04=600000,k04=500;var Qe1=L(()=>{t8()});function S04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function un0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ye1(){let $=S04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:un0($,"--cpu-prof-dir")??process.cwd(),name:un0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(un0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Ge1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=oE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),y70=setInterval(()=>void Z().catch(()=>{}),$),y70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(y70)clearInterval(y70)}}var y70;var Je1=()=>{};import*as C04 from"bun:jsc";function Ke1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{_04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=v04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var _04,v04;var We1=L(()=>{({startSamplingProfiler:_04,samplingProfilerStackTraces:v04}=C04)});function He1(){Ye1();let $=[Ge1(),wt1(),Ke1()];return()=>{for(let Z of $)Z()}}var Fe1=L(()=>{Ym0();Je1();We1()});var Qj=v((Ue1)=>{Object.defineProperty(Ue1,"__esModule",{value:!0});Ue1.RepublishHeaders=Ue1.DirectMsgHeaders=Ue1.JsHeaders=Ue1.AdvisoryKind=void 0;Ue1.isOrderedPushConsumerOptions=x04;Ue1.isPullConsumer=f04;Ue1.isPushConsumer=b04;Ue1.isBoundPushConsumerOptions=y04;function x04($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function f04($){return $.isPullConsumer()}function b04($){return $.isPushConsumer()}function y04($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ue1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ue1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ue1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ue1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var NG=v((Be1)=>{Object.defineProperty(Be1,"__esModule",{value:!0});Be1.TD=Be1.TE=Be1.Empty=void 0;Be1.encode=p04;Be1.decode=n04;Be1.Empty=new Uint8Array(0);Be1.TE=new TextEncoder;Be1.TD=new TextDecoder;function i04(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function p04(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Be1.TE.encode($[X]));if(Z.length===0)return Be1.Empty;if(Z.length===1)return Z[0];return i04(...Z)}function n04($){if(!$||$.length===0)return"";return Be1.TD.decode($)}});var BG=v((De1)=>{Object.defineProperty(De1,"__esModule",{value:!0});De1.errors=De1.PermissionViolationError=De1.NoRespondersError=De1.TimeoutError=De1.RequestError=De1.ProtocolError=De1.ConnectionError=De1.DrainingConnectionError=De1.ClosedConnectionError=De1.AuthorizationError=De1.UserAuthenticationExpiredError=De1.InvalidOperationError=De1.InvalidArgumentError=De1.InvalidSubjectError=void 0;class ln0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}De1.InvalidSubjectError=ln0;class g70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new g70(`${$} ${Z}`,X)}}De1.InvalidArgumentError=g70;class mn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}De1.InvalidOperationError=mn0;class h70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new h70($);return null}}De1.UserAuthenticationExpiredError=h70;class u70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new u70($);return null}}De1.AuthorizationError=u70;class dn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}De1.ClosedConnectionError=dn0;class in0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}De1.DrainingConnectionError=in0;class pn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}De1.ConnectionError=pn0;class nn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}De1.ProtocolError=nn0;class tn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof c70}}De1.RequestError=tn0;class on0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}De1.TimeoutError=on0;class c70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}De1.NoRespondersError=c70;class l70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new l70($,X,Q,Y)}}De1.PermissionViolationError=l70;De1.errors={AuthorizationError:u70,ClosedConnectionError:dn0,ConnectionError:pn0,DrainingConnectionError:in0,InvalidArgumentError:g70,InvalidOperationError:mn0,InvalidSubjectError:ln0,NoRespondersError:c70,PermissionViolationError:l70,ProtocolError:nn0,RequestError:tn0,TimeoutError:on0,UserAuthenticationExpiredError:h70}});var r3=v((Pe1)=>{Object.defineProperty(Pe1,"__esModule",{value:!0});Pe1.SimpleMutex=Pe1.Perf=void 0;Pe1.extend=F14;Pe1.render=U14;Pe1.timeout=N14;Pe1.delay=B14;Pe1.deadline=O14;Pe1.deferred=an0;Pe1.debugDeferred=L14;Pe1.shuffle=D14;Pe1.collect=w14;Pe1.jitter=ze1;Pe1.backoff=E14;Pe1.nanos=j14;Pe1.millis=z14;Pe1.randomToken=T14;var H14=NG(),rn0=BG();function F14($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function U14($){return H14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function N14($,Z=!0){let X=Z?new rn0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new rn0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function B14($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function O14($,Z=1000){let X=an0(),Q=setTimeout(()=>{X.reject(new rn0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function an0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function L14(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function D14($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function w14($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ee1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Pe1.Perf=Ee1;class je1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=an0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Pe1.SimpleMutex=je1;function ze1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function E14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ze1(X>Z?$[Z]:$[X])}}}function j14($){return $*1e6}function z14($){return Math.floor($/1e6)}var P14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",RU=new Uint8Array(62);for(let $=0;$<62;$++)RU[$]=P14.charCodeAt($);var A14=218340105584896;function T14(){let $=Math.floor(Math.random()*A14),Z=$%62,X=RU[Z];$=($-Z)/62,Z=$%62;let Q=RU[Z];$=($-Z)/62,Z=$%62;let Y=RU[Z];$=($-Z)/62,Z=$%62;let G=RU[Z];$=($-Z)/62,Z=$%62;let J=RU[Z];$=($-Z)/62,Z=$%62;let K=RU[Z];$=($-Z)/62,Z=$%62;let W=RU[Z];$=($-Z)/62;let H=RU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var ke1=v((Me1)=>{Object.defineProperty(Me1,"__esModule",{value:!0});Me1.nuid=Me1.NuidImpl=void 0;var h14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",EO=62,d70=12,Ie1=10,Te1=33,u14=333,Re1=d70+Ie1,en0=new Uint8Array(EO);for(let $=0;$<EO;$++)en0[$]=h14.charCodeAt($);var m70=4294967296,qe1=BigInt(EO)**BigInt(Ie1),xp=Number(qe1/(1n<<32n)),sn0=Number(qe1%(1n<<32n));function c14($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function l14($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else c14($)}class $t0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Re1),this.cbuf=new Uint8Array(d70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(xp+1)),this.seqLo=Math.floor(Math.random()*m70);while($++<8&&this.seqHi===xp&&this.seqLo>=sn0);if(this.seqHi===xp&&this.seqLo>=sn0)this.seqLo=0;this.inc=Math.random()*(u14-Te1)+Te1|0}setPre(){l14(this.cbuf);for(let $=0;$<d70;$++)this.buf[$]=en0[this.cbuf[$]%EO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Re1-1;X>=d70;X--){let Q=Math.floor($/EO),G=($-Q*EO)*m70+Z,J=Math.floor(G/EO),K=G-J*EO;this.buf[X]=en0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=m70)this.seqLo-=m70,this.seqHi+=1;if(this.seqHi>xp||this.seqHi===xp&&this.seqLo>=sn0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Me1.NuidImpl=$t0;Me1.nuid=new $t0});var ve1=v((Ce1)=>{Object.defineProperty(Ce1,"__esModule",{value:!0});Ce1.nuid=Ce1.Nuid=void 0;var Se1=ke1();Ce1.Nuid=Se1.NuidImpl;Ce1.nuid=Se1.nuid});var p70=v((i70)=>{Object.defineProperty(i70,"__esModule",{value:!0});i70.nuid=i70.Nuid=void 0;var xe1=ve1();Object.defineProperty(i70,"Nuid",{enumerable:!0,get:function(){return xe1.Nuid}});Object.defineProperty(i70,"nuid",{enumerable:!0,get:function(){return xe1.nuid}})});var jO=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.DEFAULT_HOST=fe1.DEFAULT_PORT=fe1.Match=void 0;fe1.syncIterator=t14;fe1.createInbox=o14;var p14=p70(),n14=BG();fe1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function t14($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function o14($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw n14.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${p14.nuid.next()}`}fe1.DEFAULT_PORT=4222;fe1.DEFAULT_HOST="127.0.0.1"});var fp=v((he1)=>{Object.defineProperty(he1,"__esModule",{value:!0});he1.DataBuffer=void 0;var ye1=NG();class ge1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ye1.TE.encode($)}static toAscii($){return ye1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}he1.DataBuffer=ge1});var Yj=v((le1)=>{Object.defineProperty(le1,"__esModule",{value:!0});le1.LF=le1.CR=le1.CRLF=le1.CR_LF_LEN=le1.CR_LF=void 0;le1.setTransportFactory=Q$4;le1.defaultPort=Y$4;le1.getUrlParseFn=G$4;le1.newTransport=J$4;le1.getResolveFn=K$4;le1.protoLen=ce1;le1.extractProtocolMessage=W$4;var $$4=NG(),Z$4=jO(),X$4=fp(),OG;function Q$4($){OG=$}function Y$4(){return OG!==void 0&&OG.defaultPort!==void 0?OG.defaultPort:Z$4.DEFAULT_PORT}function G$4(){return OG!==void 0&&OG.urlParseFn?OG.urlParseFn:void 0}function J$4(){if(!OG||typeof OG.factory!=="function")throw Error("transport fn is not set");return OG.factory()}function K$4(){return OG!==void 0&&OG.dnsResolveFn?OG.dnsResolveFn:void 0}le1.CR_LF=`\r
1549
1549
  `;le1.CR_LF_LEN=le1.CR_LF.length;le1.CRLF=X$4.DataBuffer.fromAscii(le1.CR_LF);le1.CR=new Uint8Array(le1.CRLF)[0];le1.LF=new Uint8Array(le1.CRLF)[1];function ce1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===le1.CR&&$[X]===le1.LF)return X+1}return 0}function W$4($){let Z=ce1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return $$4.TD.decode(Q)}return""}});var Gt0=v((re1)=>{Object.defineProperty(re1,"__esModule",{value:!0});re1.ipV4=ne1;re1.isIP=j$4;re1.parseIP=te1;var bp=4,Gj=16,n70=48,pe1=57,de1=65,w$4=70,ie1=97,E$4=102,Yt0=16777215;function ne1($,Z,X,Q){let Y=new Uint8Array(Gj);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function j$4($){return te1($)!==void 0}function te1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return oe1($);case":":return z$4($)}return}function oe1($){let Z=new Uint8Array(bp);for(let X=0;X<bp;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=P$4($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return ne1(Z[0],Z[1],Z[2],Z[3])}function z$4($){let Z=new Uint8Array(Gj),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<Gj){let{n:Y,c:G,ok:J}=A$4($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=Gj-bp)return;if(Q+bp>Gj)return;let K=oe1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=bp;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<Gj){if(X<0)return;let Y=Gj-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function P$4($){let Z=0,X=0;for(Z=0;Z<$.length&&n70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=pe1;Z++)if(X=X*10+($.charCodeAt(Z)-n70),X>=Yt0)return{n:Yt0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function A$4($){let Z=0,X=0;for(X=0;X<$.length;X++){if(n70<=$.charCodeAt(X)&&$.charCodeAt(X)<=pe1)Z*=16,Z+=$.charCodeAt(X)-n70;else if(ie1<=$.charCodeAt(X)&&$.charCodeAt(X)<=E$4)Z*=16,Z+=$.charCodeAt(X)-ie1+10;else if(de1<=$.charCodeAt(X)&&$.charCodeAt(X)<=w$4)Z*=16,Z+=$.charCodeAt(X)-de1+10;else break;if(Z>=Yt0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Ut0=v((se1)=>{Object.defineProperty(se1,"__esModule",{value:!0});se1.Servers=se1.ServerImpl=void 0;se1.isIPV4OrHostname=ae1;se1.hostPort=Ft0;var Jt0=Yj(),Kt0=r3(),Wt0=Gt0(),q$4=jO(),M$4=BG();function ae1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Ht0($){return!ae1($)}function V$4($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Ft0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=V$4($),Ht0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Ht0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):q$4.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class hy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Ft0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Wt0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Ht0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new hy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Kt0.shuffle)(Z);return this.resolves=Z,Z}}se1.ServerImpl=hy;class t70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw M$4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Jt0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Ft0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new hy(Y))}if(this.randomize)(0,Kt0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Wt0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Jt0.getUrlParseFn)();$=X?X($):$;let Q=new hy($,Z);if((0,Wt0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return t70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return t70.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Jt0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new hy(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Kt0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}se1.Servers=t70});var o70=v((X0$)=>{Object.defineProperty(X0$,"__esModule",{value:!0});X0$.QueuedIteratorImpl=void 0;var Nt0=r3(),$0$=BG();class Z0${inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Nt0.deferred)(),this.yields=[],this.iterClosed=(0,Nt0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new $0$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new $0$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Nt0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}X0$.QueuedIteratorImpl=Z0$});var Bt0=v((J0$)=>{Object.defineProperty(J0$,"__esModule",{value:!0});J0$.MuxSubscription=void 0;var _$4=jO(),Y0$=BG();class G0${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,_$4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Y0$.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Y0$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}J0$.MuxSubscription=G0$});var Ot0=v((H0$)=>{Object.defineProperty(H0$,"__esModule",{value:!0});H0$.Heartbeat=void 0;var v$4=r3();class W0${ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,v$4.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}H0$.Heartbeat=W0$});var wt0=v((O0$)=>{Object.defineProperty(O0$,"__esModule",{value:!0});O0$.DenoBuffer=O0$.MAX_SIZE=O0$.AssertionError=void 0;O0$.assert=N0$;O0$.concat=B0$;O0$.append=f$4;O0$.readAll=b$4;O0$.writeAll=y$4;var x$4=NG();class Lt0 extends Error{constructor($){super($);this.name="AssertionError"}}O0$.AssertionError=Lt0;function N0$($,Z="Assertion failed."){if(!$)throw new Lt0(Z)}var U0$=32768;O0$.MAX_SIZE=4294967294;function r70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function B0$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function f$4($,Z){return B0$($,Uint8Array.of(Z))}class Dt0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){N0$($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=r70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(x$4.TE.encode($))}write($){let Z=this._grow($.byteLength);return r70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)r70(this._buf.subarray(this._off),this._buf);else if(Q+$>O0$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,O0$.MAX_SIZE));r70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,O0$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(U0$);while(!0){let Q=this.capacity-this.length<U0$,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}O0$.DenoBuffer=Dt0;function b$4($){let Z=new Dt0;return Z.readFrom($),Z.bytes()}function y$4($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var zt0=v((j0$)=>{Object.defineProperty(j0$,"__esModule",{value:!0});j0$.cc=j0$.State=j0$.Parser=j0$.Kind=void 0;j0$.describe=d$4;var Et0=wt0(),jt0=NG();j0$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function d$4($){let Z,X="";switch($.kind){case j0$.Kind.MSG:Z="MSG";break;case j0$.Kind.OK:Z="OK";break;case j0$.Kind.ERR:Z="ERR",X=jt0.TD.decode($.data);break;case j0$.Kind.PING:Z="PING";break;case j0$.Kind.PONG:Z="PONG";break;case j0$.Kind.INFO:Z="INFO",X=jt0.TD.decode($.data)}return`${Z}: ${X}`}function D0$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var w0$=48,i$4=57,uy=67108864;class E0${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=j0$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case j0$.State.OP_START:switch(X){case j0$.cc.M:case j0$.cc.m:this.state=j0$.State.OP_M,this.hdr=-1,this.ma=D0$();break;case j0$.cc.H:case j0$.cc.h:this.state=j0$.State.OP_H,this.hdr=0,this.ma=D0$();break;case j0$.cc.P:case j0$.cc.p:this.state=j0$.State.OP_P;break;case j0$.cc.PLUS:this.state=j0$.State.OP_PLUS;break;case j0$.cc.MINUS:this.state=j0$.State.OP_MINUS;break;case j0$.cc.I:case j0$.cc.i:this.state=j0$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_H:switch(X){case j0$.cc.M:case j0$.cc.m:this.state=j0$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_M:switch(X){case j0$.cc.S:case j0$.cc.s:this.state=j0$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_MS:switch(X){case j0$.cc.G:case j0$.cc.g:this.state=j0$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_MSG:switch(X){case j0$.cc.SPACE:case j0$.cc.TAB:this.state=j0$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_MSG_SPC:switch(X){case j0$.cc.SPACE:case j0$.cc.TAB:continue;default:this.state=j0$.State.MSG_ARG,this.as=Z}break;case j0$.State.MSG_ARG:switch(X){case j0$.cc.CR:this.drop=1;break;case j0$.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=j0$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case j0$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:j0$.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=j0$.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:j0$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=j0$.State.MSG_END;break;case j0$.State.MSG_END:switch(X){case j0$.cc.NL:this.drop=0,this.as=Z+1,this.state=j0$.State.OP_START;break;default:continue}break;case j0$.State.OP_PLUS:switch(X){case j0$.cc.O:case j0$.cc.o:this.state=j0$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_PLUS_O:switch(X){case j0$.cc.K:case j0$.cc.k:this.state=j0$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_PLUS_OK:switch(X){case j0$.cc.NL:this.dispatcher.push({kind:j0$.Kind.OK}),this.drop=0,this.state=j0$.State.OP_START;break}break;case j0$.State.OP_MINUS:switch(X){case j0$.cc.E:case j0$.cc.e:this.state=j0$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_MINUS_E:switch(X){case j0$.cc.R:case j0$.cc.r:this.state=j0$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_MINUS_ER:switch(X){case j0$.cc.R:case j0$.cc.r:this.state=j0$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_MINUS_ERR:switch(X){case j0$.cc.SPACE:case j0$.cc.TAB:this.state=j0$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_MINUS_ERR_SPC:switch(X){case j0$.cc.SPACE:case j0$.cc.TAB:continue;default:this.state=j0$.State.MINUS_ERR_ARG,this.as=Z}break;case j0$.State.MINUS_ERR_ARG:switch(X){case j0$.cc.CR:this.drop=1;break;case j0$.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:j0$.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=j0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case j0$.State.OP_P:switch(X){case j0$.cc.I:case j0$.cc.i:this.state=j0$.State.OP_PI;break;case j0$.cc.O:case j0$.cc.o:this.state=j0$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_PO:switch(X){case j0$.cc.N:case j0$.cc.n:this.state=j0$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_PON:switch(X){case j0$.cc.G:case j0$.cc.g:this.state=j0$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_PONG:switch(X){case j0$.cc.NL:this.dispatcher.push({kind:j0$.Kind.PONG}),this.drop=0,this.state=j0$.State.OP_START;break}break;case j0$.State.OP_PI:switch(X){case j0$.cc.N:case j0$.cc.n:this.state=j0$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_PIN:switch(X){case j0$.cc.G:case j0$.cc.g:this.state=j0$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_PING:switch(X){case j0$.cc.NL:this.dispatcher.push({kind:j0$.Kind.PING}),this.drop=0,this.state=j0$.State.OP_START;break}break;case j0$.State.OP_I:switch(X){case j0$.cc.N:case j0$.cc.n:this.state=j0$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_IN:switch(X){case j0$.cc.F:case j0$.cc.f:this.state=j0$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_INF:switch(X){case j0$.cc.O:case j0$.cc.o:this.state=j0$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_INFO:switch(X){case j0$.cc.SPACE:case j0$.cc.TAB:this.state=j0$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case j0$.State.OP_INFO_SPC:switch(X){case j0$.cc.SPACE:case j0$.cc.TAB:continue;default:this.state=j0$.State.INFO_ARG,this.as=Z}break;case j0$.State.INFO_ARG:switch(X){case j0$.cc.CR:this.drop=1;break;case j0$.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:j0$.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=j0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===j0$.State.MSG_ARG||this.state===j0$.State.MINUS_ERR_ARG||this.state===j0$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Et0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===j0$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Et0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new Et0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case j0$.cc.SPACE:case j0$.cc.TAB:case j0$.cc.CR:case j0$.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],uy);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],uy);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${jt0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case j0$.cc.SPACE:case j0$.cc.TAB:case j0$.cc.CR:case j0$.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],uy),this.ma.size=this.protoParseInt(Z[3],uy);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],uy),this.ma.size=this.protoParseInt(Z[4],uy);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<w0$||$[Q]>i$4)return-1;X=X*10+($[Q]-w0$)}return Z!==void 0&&X>Z?-1:X}}j0$.Parser=E0$;j0$.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};j0$.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var e70=v((P0$)=>{Object.defineProperty(P0$,"__esModule",{value:!0});P0$.MsgHdrsImpl=void 0;P0$.canonicalMIMEHeaderKey=At0;P0$.headers=t$4;var z0$=NG(),a3=jO(),s70=BG();function At0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw s70.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function t$4($=0,Z=""){if($===0&&Z!=="")throw s70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw s70.InvalidArgumentError.format("description","is required");return new cy($,Z)}var Pt0="NATS/1.0";class cy{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new cy,Q=z0$.TD.decode($).split(`\r
1550
1550
  `),Y=Q[0];if(Y!==Pt0){let G=Y.replace(Pt0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Pt0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1551
1551
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2980,7 +2980,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
2980
2980
  ${G.join(`
2981
2981
  `)}`:Y}function hN6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2982
2982
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Fd$=200,VN6=12,CN6,vN6=300,m71=3;var i71=D(()=>{rD();ST0();CN6={aheadBy:0,behindBy:0,files:[]}});function lN6($){if(!$||$.includes(".."))return!1;return uN6.test($)}function Ud$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!lN6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Nd$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var uN6;var Bd$=D(()=>{uN6=/^[\w./@-]+$/});function Is($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Od$($,Z,X,Q){if(!Q.connectionId)throw new kv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new kv(F9);await xO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let U=H instanceof Error?H.message:F9;throw new kv(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await fK(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((H)=>{let{code:U,message:N}=E9$(H instanceof Error?H.message:String(H));throw U?new kv(N):H}),K=eu($),F=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!F.ok){let H=await bO(F,cN6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var cN6=10485760,kv;var p71=D(()=>{KJ();jT0();On();gi0();dy();kv=class kv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function mN6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!dN6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Vv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(pN6)])}async function tN6($,Z){let X=$.var.studioContext,Q=JJ(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=MC(J?.metadata?.runtime);if(W)return W;let K=WD0(Z.virtualMcpMetadata),F=K==="cms"?await q71(X,{claimName:Z.claimName}):"alive",H=K==="cms"&&F!=="alive"?"cms":"sandbox",U=!!J&&(F==="gone"||F==="alive"&&K==="cms");if(U&&J)cn(X,J.id,H);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:F,resolved:H,stamped:U});return H}async function oN6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await KQ($.var.studioContext)}catch{return null}}function Sv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Yl($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Is(Z,X);if(!Y)throw new d4(404,"AUTH","repo","Project has no GitHub repository");let G=n(Q);return zT0(Q,G.id,Y)}function n71($,Z){if(Z instanceof AA0)return $.json({error:Z.message},429,{...R5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof d4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,R5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,R5)}async function Ld$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function Ed$($){try{let Z=await Yl($),X=await CT0(Z,$.get("vmClaim").branch);return $.json(X,200,R5)}catch(Z){return n71($,Z)}}function qs($,Z){let Q=(fT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return fT0.set($,Y),Y.finally(()=>{if(fT0.get($)===Y)fT0.delete($)}),Q}async function sZ($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let Q=X?.runner??Sv($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,F=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,F.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=X?.signal,U={method:W,headers:F,body:K,...H?{signal:H}:{}},N=async()=>{let B=await Q.proxyDaemonRequest(Y,Z,U);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...R5}})}}let O=await B.text(),w=X?.redactRepoDir?rN6(O):O,L=B.headers.get("content-type")??"application/json";return new Response(w,{status:B.status,headers:{"content-type":L,...R5}})};try{if(H){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((w,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function rN6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function bT0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function aN6($){return jd$.includes($)}var dN6,Dd$=524288,iN6=65536,pN6=1e4,wd$=2000,nN6,fT0,R5,jd$,zd$=()=>{let $=new W1;$.use("/:virtualMcpId/:branch/*",nN6),$.post("/:virtualMcpId/:branch/write",(X)=>sZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>sZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>sZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>sZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>sZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>sZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>sZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return sZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return sZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>sZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>sZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!aN6(Q))return X.json({error:`step must be one of: ${jd$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await q71(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await oN6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(Q==="start"){let J=n(X.var.studioContext),W=ly(Y.virtualMcpMetadata);try{await q70({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let F=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${F}`},502)}}return sZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return sU(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return zc$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Ed$(X);return Z(X)});let Z=(X)=>sZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(wd$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Ed$(X);return sZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(wd$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await Yl(X),J=await _T0(G,Q.branch,Y.base);return X.json(J,200,R5)}catch(Y){return n71(X,Y)}return sZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,R5);let Q=Sv(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return qs(Y,async()=>{try{await M71(W,Q,Y);let K=Is(G,J);if(K)await Od$(W,Q,Y,K)}catch(K){if(K instanceof kv)return X.json({error:K.message},403,R5);let F=K instanceof Error?K.message:String(K);return X.json({error:F},502,R5)}return sZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return qs(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,R5);try{let J=await Yl(X);return await Hd$(J,Q.branch,G),X.json({ok:!0},200,R5)}catch(J){let W=J instanceof d4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,R5)}});return qs(Q.claimName,()=>sZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return qs(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Yl(X),F=W.base??await K.getDefaultBranch();return await vT0(K,Q.branch,F),X.json({ok:!0},200,R5)}catch(W){return n71(X,W)}});let Y=Sv(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return qs(G,async()=>{try{await M71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,R5)}return sZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",r5({maxSize:Dd$,onError:(X)=>X.json({error:"Payload too large"},413,R5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let F=Sv(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=S71(H)&&N?[H,U]:Y?await Promise.all([bT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),bT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Yl(X);return Promise.all([CT0(L,Q.branch),_T0(L,Q.branch)])})(),w=await Ic$(K,B,O);return X.json(w,200,R5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return X.json({error:H},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",r5({maxSize:Dd$,onError:(X)=>X.json({error:"Payload too large"},413,R5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let F=Sv(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=S71(H)&&N?[H,U]:Y?await Promise.all([bT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),bT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Yl(X);return Promise.all([CT0(L,Q.branch),_T0(L,Q.branch)])})(),w=await Mc$(K,B,O,typeof F.language==="string"?F.language:void 0);return X.json(w,200,R5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return X.json({error:H},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Sv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return Ld$(X,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",r5({maxSize:iN6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Sv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Ud$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Nd$(G,W.resolveType);return Ld$(X,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Pd$=D(()=>{c$();MF();su();I71();Kn();Lc$();i3();Jg();Ec$();r3();jc$();Pc$();bi0();Nn();v71();kc$();b71();rD();i71();Bd$();p71();dN6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;nN6=ET0(async($,Z)=>{let X=$.var.studioContext;try{t(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=t0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=n(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{mN6(J)}catch(w){let L=w instanceof Error?w.message:String(w);return $.json({error:L},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Jn({orgId:Y.id,virtualMcpId:G,branch:J}),F=await Vi0(X,J),H=Si0(F,Q),U=wc$({userId:H,projectRef:K}),N=W.metadata??null,B=await tN6($,{claimName:U,branch:J,virtualMcpId:G,sandboxUserId:H,virtualMcpMetadata:N,branchThread:F});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z();let O;try{O=await KQ(X)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Q,runner:O,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z()});fT0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};jd$=["clone","install","start"]});function Ad$($,Z,X){let Q=t71.get($);if(!Q)Q={pending:null,running:!1},t71.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)eN6($,Q);return G}async function eN6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await $B6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)t71.delete($)}}async function $B6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Ql(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,Q),K=c71(W,Q),F=[],H=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,w]of $.set){let L=d71(K,O),E=`${JSON.stringify(w,null,2)}
2983
- `,j=await Z.createBlob(E);await Jd$(Z.owner,Z.repo,j,E);let z=L[0]??`${VT0(Q)}/${y71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of d71(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Ps(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:ZB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof d4&&O.status===422)||Y>=sN6-1)throw O;await L$(Z7(2000,200,Y,2,0.5))}}}function ZB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return ji0(Q,$.deps.coAuthor)}var sN6=3,t71;var Td$=D(()=>{P70();AT0();a8();rD();ST0();t71=new Map});import{createHmac as Rd$,randomBytes as XB6,timingSafeEqual as QB6}from"crypto";function Id$(){if(xT0)return xT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return xT0=$?Buffer.from($):XB6(32),xT0}function o71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+YB6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Rd$("sha256",Id$()).update(Q).digest("base64url");return`${Q}.${Y}`}function qd$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Rd$("sha256",Id$()).update(Q).digest("base64url"));if(Y.length!==G.length||!QB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var YB6=21600000,xT0=null;var Md$=D(()=>{D$()});import{z as Gl}from"zod";function JB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&GB6.test($)}function _d$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Ms($){let Z=$.get("decofileScope");return zT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function ks($,Z){if(Z instanceof d4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function vd$(){let $=new W1;return $.use("/:virtualMcpId/:branch",Cd$),$.use("/:virtualMcpId/:branch/*",Cd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ms(Z),Y=await Wd$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=o71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(_d$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return ks(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Ms(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return ks(Z,Y)}}),$.patch("/:virtualMcpId/:branch",KB6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=FB6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{PT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(x71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Ms(Z),W=await Ad$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:eu(Q)},G),K=o71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:_d$(Z)})}catch(J){return ks(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ms(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof d4&&W.status===409))throw W;await vT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof d4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof d4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return ks(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ms(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof d4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return ks(Z,Q)}}),$}var GB6,kd$=500,Vd$=1048576,Sd$=1024,WB6=8388608,KB6,FB6,Cd$;var fd$=D(()=>{Qt0();AT0();c$();MF();I71();jT0();p71();b71();Td$();Md$();i71();rD();ST0();GB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;KB6=r5({maxSize:WB6,onError:($)=>$.json({error:"Payload too large"},413)}),FB6=Gl.object({set:Gl.record(Gl.string(),Gl.unknown()).optional(),delete:Gl.array(Gl.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=kd$,{message:`Patch cannot touch more than ${kd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Vd$),{message:`Each block must be at most ${Vd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Sd$),{message:`Each block key must be at most ${Sd$} characters`}),Cd$=ET0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!JB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!qd$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!JD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=Is(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var bd$=($)=>{let Z=new W1;if(Z.use("*",wv),Z.route("/",_A0()),Z.route("/",ag$()),Z.route("/",Qc$()),Z.route("/",$c$()),Z.route("/",DT0()),Z.route("/tools",Hc$()),Z.route("/",Wc$()),Z.route("/",vl$({kvStorage:$.kvStorage})),Z.route("/",Cl$()),Z.route("/fs",nl$({getConnection:$.getNatsConnection})),Z.route("/sandbox",zd$()),Z.route("/decofile",vd$()),Z.route("/",al$()),Z.route("/deco-sites",fA0()),Z.route("/hosting",ug$()),Z.route("/monitor",ng$()),Z.route("/sso",qA0()),Z.route("/",wT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",bg$()),$.mountDevAssets)Z.route("/dev-assets",gA0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",Yx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",ol$()),Z.route("/mcp",bL0()),Z.route("/mcp/self",OT0()),Z.route("/mcp",gL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var xd$=D(()=>{c$();zA0();xg$();o91();lg$();tg$();hA0();na();m91();_l$();fl$();tl$();tt();g91();hL0();E71();rl$();sl$();Zc$();Yc$();Kc$();z71();Uc$();P71();xL0();Pd$();fd$()});function HB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var UB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},yd$=()=>{let $=new W1;return $.use("*",UB6),$.get("/",async(Z)=>{let X=V0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await zY(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:HB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var gd$=D(()=>{c$();D$();VP0()});import{z as q1}from"zod";function vF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function PB6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function AB6($,Z,X){try{return JSON.parse($)}catch{throw new ld$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function TB6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:AB6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function RB6($){let Z=$.map((X)=>{let Q=X.function.parameters?aY(X.function.parameters):aY({type:"object",properties:{}});return[X.function.name,V$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function IB6($){if(!$)return;return{openai:{response_format:$}}}function qB6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function hd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function ud$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var NB6=256,BB6,OB6,DB6,wB6,LB6,EB6,jB6,zB6,ld$,cd$,dd$;var md$=D(()=>{g4();c$();su();SU();BB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),OB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),DB6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(OB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),wB6=q1.object({type:q1.literal("text")}),LB6=q1.object({type:q1.literal("json_object")}),EB6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),jB6=q1.union([wB6,LB6,EB6]),zB6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(DB6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(BB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:jB6.optional(),user:q1.string().optional()});ld$=class ld$ extends Error{constructor($){super($);this.name="MessageConversionError"}};cd$=new W1;cd$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(vF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(vF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(vF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=zB6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(vF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=PB6(G.model);if(!J)return $.json(vF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>BL(j.providerId));if(!E)return $.json(vF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(vF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=TB6(G.messages),N=G.tools?RB6(G.tools):void 0,B=IB6(G.response_format),O=qB6(),w=Math.floor(Date.now()/1000);if(G.stream)return sU($,async(L)=>{let E=hd$(H,U,N,G,B,$.req.raw.signal);try{let j=SO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=NB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:ud$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=hd$(H,U,N,G,B,$.req.raw.signal),E=await kO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:ud$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(vF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(vF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(vF(Y.message,"server_error"),500)}});dd$=cd$});function MB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function id$(){let $=new W1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=t0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aX(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let U of H){if(ue1(U)!==G)continue;if(!MB6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var pd$=D(()=>{c$();hH()});var td$;var nd$=D(()=>{td$={name:"decocms",version:"4.326.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function SB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??VB6}}var od$,VB6="https://ph.studio.decocms.com",rd$;var ad$=D(()=>{c$();$90();eC();h5();D$();q91();nd$();od$=new W1;od$.get("/",($)=>{let Z={version:td$.version,theme:Xp1(),..._H().logo&&{logo:_H().logo},...LU()&&{internalUrl:M_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:uy$(),posthog:SB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:xs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});rd$=od$});function Jl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function r71($){return(Jl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function ed$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Jl($))}&sz=${Z}`}function sd$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function $m$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?sd$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):sd$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as u0}from"zod";var Cv,CB6,_B6,vB6,fB6,Zm$;var Xm$=D(()=>{Cv=u0.enum(["good","bad","neutral"]),CB6=u0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},u0.object({kind:u0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:u0.coerce.string().optional(),tone:Cv.optional(),muted:u0.boolean().optional(),delta:u0.coerce.string().optional(),deltaDir:u0.enum(["up","down","neutral"]).optional(),points:u0.array(u0.coerce.number()).optional(),label:u0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),_B6=u0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},u0.array(CB6)),vB6={key:u0.coerce.string(),title:u0.coerce.string(),eyebrow:u0.coerce.string().optional(),headline:u0.coerce.string(),annotation:u0.coerce.string().optional(),methodology:u0.coerce.string().optional(),sources:u0.array(u0.object({name:u0.coerce.string(),logoUrl:u0.coerce.string()})).optional()},fB6=u0.discriminatedUnion("template",[u0.object({template:u0.literal("cover"),score:u0.object({value:u0.coerce.number(),max:u0.coerce.number().optional(),grade:u0.coerce.string().optional(),label:u0.coerce.string().optional()}).optional(),brandImage:u0.coerce.string().optional(),screenshot:u0.coerce.string().optional(),mobileScreenshot:u0.coerce.string().optional()}),u0.object({template:u0.literal("cta"),ctaUrl:u0.coerce.string().optional(),ctaLabel:u0.coerce.string().optional(),bullets:u0.array(u0.coerce.string()).optional()}),u0.object({template:u0.literal("series"),points:u0.array(u0.coerce.number()).min(2),xLabels:u0.array(u0.coerce.string()).min(1),unit:u0.coerce.string().optional(),callout:u0.object({index:u0.coerce.number(),value:u0.coerce.string(),tone:Cv.optional()})}),u0.object({template:u0.literal("threshold"),value:u0.coerce.string().default(""),metricLabel:u0.coerce.string().optional(),ratio:u0.coerce.number(),thresholdRatio:u0.coerce.number().optional(),thresholdLabel:u0.coerce.string().default(""),tone:Cv.optional()}),u0.object({template:u0.literal("stats"),stats:u0.array(u0.object({value:u0.coerce.string(),label:u0.coerce.string(),tone:Cv.optional()})).min(1)}),u0.object({template:u0.literal("bars"),items:u0.array(u0.object({value:u0.coerce.string(),label:u0.coerce.string(),ratio:u0.coerce.number(),tone:Cv.optional()})).min(1)}),u0.object({template:u0.literal("gauges"),gauges:u0.array(u0.object({label:u0.coerce.string(),value:u0.coerce.string(),status:u0.enum(["good","warn","bad"]).catch("warn"),caption:u0.coerce.string().optional(),ratio:u0.coerce.number().optional()})).min(1)}),u0.object({template:u0.literal("checklist"),checks:u0.array(u0.object({label:u0.coerce.string(),status:u0.enum(["pass","fail","warn"]).catch("fail"),value:u0.coerce.string().optional()})).min(1)}),u0.object({template:u0.literal("table"),columns:u0.array(u0.object({label:u0.coerce.string(),align:u0.enum(["left","right"]).optional()})).min(1),rows:u0.array(_B6).min(1),highlightRow:u0.coerce.number().optional()}),u0.object({template:u0.literal("products"),products:u0.array(u0.object({name:u0.coerce.string(),price:u0.coerce.string().optional(),image:u0.coerce.string().optional(),url:u0.coerce.string().optional()})).min(1)}),u0.object({template:u0.literal("list"),entries:u0.array(u0.object({label:u0.coerce.string(),severity:u0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:u0.coerce.number().optional()}),u0.object({template:u0.literal("keywords"),volumeLabel:u0.coerce.string().optional(),keywords:u0.array(u0.object({term:u0.coerce.string(),volume:u0.coerce.string(),position:u0.coerce.number().catch(0)})).min(1)}),u0.object({template:u0.literal("competitor"),metricLabel:u0.coerce.string().optional(),competitors:u0.array(u0.object({name:u0.coerce.string(),value:u0.coerce.string(),tone:Cv.optional(),isYou:u0.boolean().optional()})).min(1)}),u0.object({template:u0.literal("scorecard"),rivalLabel:u0.coerce.string().optional(),dimensions:u0.array(u0.object({label:u0.coerce.string(),you:u0.coerce.string(),rival:u0.coerce.string().optional(),rivalName:u0.coerce.string().optional(),tone:Cv.optional()})).min(1)})]),Zm$=u0.object({...vB6,template:fB6})});function yT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Zm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var a71=D(()=>{Xm$()});import{join as Qm$}from"path";async function xB6($){try{let Z=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(bB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=yT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||r71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function yB6($,Z){let X=Jl($),Q=Z?.brand?.trim()||r71(X),Y=ed$(X,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=$m$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
2983
+ `,j=await Z.createBlob(E);await Jd$(Z.owner,Z.repo,j,E);let z=L[0]??`${VT0(Q)}/${y71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of d71(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Ps(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:ZB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof d4&&O.status===422)||Y>=sN6-1)throw O;await L$(Z7(2000,200,Y,2,0.5))}}}function ZB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return ji0(Q,$.deps.coAuthor)}var sN6=3,t71;var Td$=D(()=>{P70();AT0();a8();rD();ST0();t71=new Map});import{createHmac as Rd$,randomBytes as XB6,timingSafeEqual as QB6}from"crypto";function Id$(){if(xT0)return xT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return xT0=$?Buffer.from($):XB6(32),xT0}function o71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+YB6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Rd$("sha256",Id$()).update(Q).digest("base64url");return`${Q}.${Y}`}function qd$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Rd$("sha256",Id$()).update(Q).digest("base64url"));if(Y.length!==G.length||!QB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var YB6=21600000,xT0=null;var Md$=D(()=>{D$()});import{z as Gl}from"zod";function JB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&GB6.test($)}function _d$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Ms($){let Z=$.get("decofileScope");return zT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function ks($,Z){if(Z instanceof d4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function vd$(){let $=new W1;return $.use("/:virtualMcpId/:branch",Cd$),$.use("/:virtualMcpId/:branch/*",Cd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ms(Z),Y=await Wd$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=o71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(_d$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return ks(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Ms(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return ks(Z,Y)}}),$.patch("/:virtualMcpId/:branch",KB6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=FB6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{PT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(x71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Ms(Z),W=await Ad$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:eu(Q)},G),K=o71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:_d$(Z)})}catch(J){return ks(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ms(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof d4&&W.status===409))throw W;await vT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof d4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof d4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return ks(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ms(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof d4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return ks(Z,Q)}}),$}var GB6,kd$=500,Vd$=1048576,Sd$=1024,WB6=8388608,KB6,FB6,Cd$;var fd$=D(()=>{Qt0();AT0();c$();MF();I71();jT0();p71();b71();Td$();Md$();i71();rD();ST0();GB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;KB6=r5({maxSize:WB6,onError:($)=>$.json({error:"Payload too large"},413)}),FB6=Gl.object({set:Gl.record(Gl.string(),Gl.unknown()).optional(),delete:Gl.array(Gl.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=kd$,{message:`Patch cannot touch more than ${kd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Vd$),{message:`Each block must be at most ${Vd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Sd$),{message:`Each block key must be at most ${Sd$} characters`}),Cd$=ET0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!JB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!qd$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!JD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=Is(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var bd$=($)=>{let Z=new W1;if(Z.use("*",wv),Z.route("/",_A0()),Z.route("/",ag$()),Z.route("/",Qc$()),Z.route("/",$c$()),Z.route("/",DT0()),Z.route("/tools",Hc$()),Z.route("/",Wc$()),Z.route("/",vl$({kvStorage:$.kvStorage})),Z.route("/",Cl$()),Z.route("/fs",nl$({getConnection:$.getNatsConnection})),Z.route("/sandbox",zd$()),Z.route("/decofile",vd$()),Z.route("/",al$()),Z.route("/deco-sites",fA0()),Z.route("/hosting",ug$()),Z.route("/monitor",ng$()),Z.route("/sso",qA0()),Z.route("/",wT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",bg$()),$.mountDevAssets)Z.route("/dev-assets",gA0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",Yx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",ol$()),Z.route("/mcp",bL0()),Z.route("/mcp/self",OT0()),Z.route("/mcp",gL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var xd$=D(()=>{c$();zA0();xg$();o91();lg$();tg$();hA0();na();m91();_l$();fl$();tl$();tt();g91();hL0();E71();rl$();sl$();Zc$();Yc$();Kc$();z71();Uc$();P71();xL0();Pd$();fd$()});function HB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var UB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},yd$=()=>{let $=new W1;return $.use("*",UB6),$.get("/",async(Z)=>{let X=V0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await zY(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:HB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var gd$=D(()=>{c$();D$();VP0()});import{z as q1}from"zod";function vF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function PB6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function AB6($,Z,X){try{return JSON.parse($)}catch{throw new ld$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function TB6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:AB6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function RB6($){let Z=$.map((X)=>{let Q=X.function.parameters?aY(X.function.parameters):aY({type:"object",properties:{}});return[X.function.name,V$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function IB6($){if(!$)return;return{openai:{response_format:$}}}function qB6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function hd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function ud$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var NB6=256,BB6,OB6,DB6,wB6,LB6,EB6,jB6,zB6,ld$,cd$,dd$;var md$=D(()=>{g4();c$();su();SU();BB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),OB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),DB6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(OB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),wB6=q1.object({type:q1.literal("text")}),LB6=q1.object({type:q1.literal("json_object")}),EB6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),jB6=q1.union([wB6,LB6,EB6]),zB6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(DB6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(BB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:jB6.optional(),user:q1.string().optional()});ld$=class ld$ extends Error{constructor($){super($);this.name="MessageConversionError"}};cd$=new W1;cd$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(vF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(vF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(vF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=zB6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(vF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=PB6(G.model);if(!J)return $.json(vF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>BL(j.providerId));if(!E)return $.json(vF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(vF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=TB6(G.messages),N=G.tools?RB6(G.tools):void 0,B=IB6(G.response_format),O=qB6(),w=Math.floor(Date.now()/1000);if(G.stream)return sU($,async(L)=>{let E=hd$(H,U,N,G,B,$.req.raw.signal);try{let j=SO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=NB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:ud$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=hd$(H,U,N,G,B,$.req.raw.signal),E=await kO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:ud$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(vF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(vF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(vF(Y.message,"server_error"),500)}});dd$=cd$});function MB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function id$(){let $=new W1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=t0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aX(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let U of H){if(ue1(U)!==G)continue;if(!MB6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var pd$=D(()=>{c$();hH()});var td$;var nd$=D(()=>{td$={name:"decocms",version:"4.326.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function SB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??VB6}}var od$,VB6="https://ph.studio.decocms.com",rd$;var ad$=D(()=>{c$();$90();eC();h5();D$();q91();nd$();od$=new W1;od$.get("/",($)=>{let Z={version:td$.version,theme:Xp1(),..._H().logo&&{logo:_H().logo},...LU()&&{internalUrl:M_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:uy$(),posthog:SB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:xs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});rd$=od$});function Jl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function r71($){return(Jl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function ed$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Jl($))}&sz=${Z}`}function sd$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function $m$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?sd$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):sd$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as u0}from"zod";var Cv,CB6,_B6,vB6,fB6,Zm$;var Xm$=D(()=>{Cv=u0.enum(["good","bad","neutral"]),CB6=u0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},u0.object({kind:u0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:u0.coerce.string().optional(),tone:Cv.optional(),muted:u0.boolean().optional(),delta:u0.coerce.string().optional(),deltaDir:u0.enum(["up","down","neutral"]).optional(),points:u0.array(u0.coerce.number()).optional(),label:u0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),_B6=u0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},u0.array(CB6)),vB6={key:u0.coerce.string(),title:u0.coerce.string(),eyebrow:u0.coerce.string().optional(),headline:u0.coerce.string(),annotation:u0.coerce.string().optional(),methodology:u0.coerce.string().optional(),sources:u0.array(u0.object({name:u0.coerce.string(),logoUrl:u0.coerce.string()})).optional()},fB6=u0.discriminatedUnion("template",[u0.object({template:u0.literal("cover"),score:u0.object({value:u0.coerce.number(),max:u0.coerce.number().optional(),grade:u0.coerce.string().optional(),label:u0.coerce.string().optional()}).optional(),brandImage:u0.coerce.string().optional(),screenshot:u0.coerce.string().optional(),mobileScreenshot:u0.coerce.string().optional()}),u0.object({template:u0.literal("cta"),ctaUrl:u0.coerce.string().optional(),ctaLabel:u0.coerce.string().optional(),bullets:u0.array(u0.coerce.string()).optional()}),u0.object({template:u0.literal("series"),points:u0.array(u0.coerce.number()).min(2),xLabels:u0.array(u0.coerce.string()).min(1),unit:u0.coerce.string().optional(),callout:u0.object({index:u0.coerce.number(),value:u0.coerce.string(),tone:Cv.optional()})}),u0.object({template:u0.literal("threshold"),value:u0.coerce.string().default(""),metricLabel:u0.coerce.string().optional(),ratio:u0.coerce.number(),thresholdRatio:u0.coerce.number().optional(),thresholdLabel:u0.coerce.string().default(""),tone:Cv.optional()}),u0.object({template:u0.literal("stats"),stats:u0.array(u0.object({value:u0.coerce.string(),label:u0.coerce.string(),tone:Cv.optional()})).min(1)}),u0.object({template:u0.literal("bars"),items:u0.array(u0.object({value:u0.coerce.string(),label:u0.coerce.string(),ratio:u0.coerce.number(),tone:Cv.optional()})).min(1)}),u0.object({template:u0.literal("gauges"),gauges:u0.array(u0.object({label:u0.coerce.string(),value:u0.coerce.string(),status:u0.enum(["good","warn","bad"]).catch("warn"),caption:u0.coerce.string().optional(),ratio:u0.coerce.number().optional()})).min(1)}),u0.object({template:u0.literal("checklist"),checks:u0.array(u0.object({label:u0.coerce.string(),status:u0.enum(["pass","fail","warn"]).catch("fail"),value:u0.coerce.string().optional()})).min(1)}),u0.object({template:u0.literal("table"),columns:u0.array(u0.object({label:u0.coerce.string(),align:u0.enum(["left","right"]).optional()})).min(1),rows:u0.array(_B6).min(1),highlightRow:u0.coerce.number().optional()}),u0.object({template:u0.literal("products"),products:u0.array(u0.object({name:u0.coerce.string(),price:u0.coerce.string().optional(),image:u0.coerce.string().optional(),url:u0.coerce.string().optional()})).min(1)}),u0.object({template:u0.literal("list"),entries:u0.array(u0.object({label:u0.coerce.string(),severity:u0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:u0.coerce.number().optional()}),u0.object({template:u0.literal("keywords"),volumeLabel:u0.coerce.string().optional(),keywords:u0.array(u0.object({term:u0.coerce.string(),volume:u0.coerce.string(),position:u0.coerce.number().catch(0)})).min(1)}),u0.object({template:u0.literal("competitor"),metricLabel:u0.coerce.string().optional(),competitors:u0.array(u0.object({name:u0.coerce.string(),value:u0.coerce.string(),tone:Cv.optional(),isYou:u0.boolean().optional()})).min(1)}),u0.object({template:u0.literal("scorecard"),rivalLabel:u0.coerce.string().optional(),dimensions:u0.array(u0.object({label:u0.coerce.string(),you:u0.coerce.string(),rival:u0.coerce.string().optional(),rivalName:u0.coerce.string().optional(),tone:Cv.optional()})).min(1)})]),Zm$=u0.object({...vB6,template:fB6})});function yT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Zm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var a71=D(()=>{Xm$()});import{join as Qm$}from"path";async function xB6($){try{let Z=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(bB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=yT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||r71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function yB6($,Z){let X=Jl($),Q=Z?.brand?.trim()||r71(X),Y=ed$(X,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=$m$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
2984
2984
  `)}function gB6($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
2985
2985
  </head>`)}function Ym$($){let Z=new W1;return Z.get("/:domain/og.png",async(X)=>{let Q=Jl(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Qm$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(hB6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?Qm$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await xB6(Jl(Q)),K=yB6(Q,W);return X.html(gB6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var bB6=2500,hB6=1e4;var Gm$=D(()=>{c$();a71();EE();D$()});function Vs($,Z){return fetch(`${DK({})}${$}`,Z)}async function uB6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await Vs(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=yT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var lB6,$N,Jm$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Wm$;var Km$=D(()=>{c$();nY();EE();a71();lB6=new Set(["complete","errored","terminated","unknown"]),$N=new W1;$N.use("*",async($,Z)=>{let X=await e$.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});$N.use("/link-token/*",Jm$);$N.use("/suggest",Jm$);$N.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await uB6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});$N.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await Vs("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${LE({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});$N.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Vs(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${LE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:lB6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});$N.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Vs(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});$N.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Vs(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});Wm$=$N});import{createHmac as cB6,timingSafeEqual as dB6}from"crypto";function Hm$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let F of Z.split(",")){let H=F.indexOf("=");if(H<=0)continue;let U=F.slice(0,H).trim(),N=F.slice(H+1).trim();if(U==="t")Y=N;else if(U==="v1")G.push(N)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>mB6)return!1;let W=cB6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&dB6(K,H)})}function Um$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=cJ(Z),Q=cJ(cJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:fF(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Nm$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function fF($){return typeof $==="string"?$:void 0}function cJ($){return typeof $==="object"&&$!==null?$:void 0}function gT0($){return typeof $==="number"?new Date($*1000):null}function $X1($){return fF($)??fF(cJ($)?.id)}function iB6($){return $X1($.subscription)??fF(cJ(cJ($.parent)?.subscription_details)?.subscription)}function pB6($){let Z=gT0($.current_period_end);if(Z)return Z;let X=cJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=cJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function s71($,Z){let X=gT0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function e71($,Z){let X=gT0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function nB6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=fF(cJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(fF(cJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(fF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=fF(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(cJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:cJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(fF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=$X1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(s71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:$X1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:e71(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=fF(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&s71(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Nm$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:pB6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:e71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=iB6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(s71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:gT0(X.period_end),lastStripeEventAt:e71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function tB6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Nm$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Fm$($,Z){let X=tB6($,Z);if(!X)return;dY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Ht1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Bm$($){let Z=new UK(B8().db),X=await nB6(Z,$);if(!(X.handled&&X.topUp))Fm$($,X);if(X.handled&&X.topUp)await Sj$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Fm$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await l0$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof tY&&(Q.status===400||Q.status===404)))throw Q}return X}var mB6=300;var Om$=D(()=>{rG();v4();v50();SE();W11()});var oB6=1048576,ZX1;var Dm$=D(()=>{c$();MF();D$();Om$();ZX1=new W1;ZX1.post("/webhook",r5({maxSize:oB6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=V0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Hm$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Um$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Bm$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as rB6}from"crypto";function sB6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return rB6(Buffer.from(Y),Buffer.from(Q))}var aB6=5242880,XX1;var wm$=D(()=>{c$();MF();r3();XX1=new W1;XX1.post("/webhook",r5({maxSize:aB6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!sB6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Zt0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Lm$($){let Z=new cU($.db,new gX($.encryptionKey)),X=new W1;return X.get("/attachments/:token",async(Q)=>{let Y=fK$(Q.req.param("token"));if(!Y)return Q.json({error:"Invalid or expired link"},404);let G=await Z.getByOrg(Y.organizationId);if(!G)return Q.json({error:"Jira is not connected"},404);let W=await new GG(G.siteUrl,G.email,G.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return Q.json({error:"Jira refused the download"},502);let K=new Headers;for(let F of["content-type","content-length","content-disposition"]){let H=W.headers.get(F);if(H)K.set(F,H)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),X}var Em$=D(()=>{c$();iN();st0();gC()});function jm$($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let X=Z.issue?.id,Q=Z.issue?.key,Y=Z.changelog?.id;if(typeof X!=="string"&&typeof X!=="number"||typeof Q!=="string"||typeof Y!=="string"&&typeof Y!=="number")return null;let G=Z.changelog?.items?.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")return null;return{issueId:String(X),issueKey:Q,toStatus:G.toString,changelogId:String(Y)}}function zm$($,Z,X){let Q=[];for(let Y of Z){if(new Date(Y.created).getTime()<X.getTime())continue;let G=Y.items.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")continue;Q.push({issueId:$.id,issueKey:$.key,toStatus:G.toString,changelogId:Y.id})}return Q.sort((Y,G)=>Number(Y.changelogId)-Number(G.changelogId))}function ZO6($){return`Jira ${$.key}: ${$.summary}`}async function hT0($,Z,X){if(!Z.enabled)return"disabled";let Q=Z.organizationId,Y=await $.storage.jiraIntegrations.getAutomation(Q,X.toStatus);if(!Y)return"no_rule";let G=new GG(Z.siteUrl,Z.email,Z.apiToken),J=await eD0(G,Z.siteUrl,X.issueId),W=await XO6($,Z,X,J);if(!await $.storage.jiraIntegrations.claimTrigger(Q,X.issueId,X.changelogId))return"duplicate";let F=await $.storage.taskBoard.update(W.id,Q,{assigneeId:d$,assignedBy:Z.createdBy},Z.createdBy);try{await ZW($,F,{instruction:Y.prompt??eB6,source:{kind:"jira",issueKey:J.key,title:ZO6(J),body:`${$w0(J)}
2986
2986
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.326.2",
3
+ "version": "4.326.3",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as o,j as r}from"./index-BLlEq7fX.js";import{O as m}from"./api-keys-B5r3vebz.js";import{R as p}from"./require-capability-BqKraIFe.js";import"./AlertCircle-D3Go-DxA.js";import"./Copy01-Bxr69Pa_.js";import"./Key01-MQO0WWsg.js";import"./Plus-Bfv94HgH.js";import"./Trash01-CPbHpyuZ.js";import"./alert-dialog-Bkq1pELf.js";import"./dialog-D8rort4D.js";import"./input-BuziP07t.js";import"./label-pQa9etdh.js";import"./use-mcp-client-Br9Bc_QG.js";import"./constants-DNuUCxmW.js";import"./auth-CVl-NJUr.js";import"./access-gate-BUbY-TwB.js";import"./capability-load-error-ChZ5muR5.js";function A(){const t=o.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=r.jsx(p,{capability:"api-keys:manage",area:"api-keys",children:r.jsx(m,{})}),t[0]=i):i=t[0],i}export{A as default};
@@ -1 +0,0 @@
1
- import{c as B,j as o,b as $,W as D,d as M,r as q,P as d,B as V,o as R}from"./index-BLlEq7fX.js";import{s as W}from"./Plus-Bfv94HgH.js";import{i as S}from"./Zap-DLbsB5zJ.js";import{S as F}from"./search-input-DNtr4vL-.js";import{E as T}from"./empty-state-RWtOoUAx.js";import{c as G}from"./use-automations-kB697jyQ.js";import{u as H}from"./use-navigate-to-agent-CFT1TuW9.js";import{A as J}from"./automation-list-row-DNrqLZFn.js";import{h as K}from"./constants-DNuUCxmW.js";import{a as O}from"./use-virtual-mcp-D6Bwg8yT.js";import{R as Q}from"./require-capability-BqKraIFe.js";import"./SearchMd-CpHQDgyC.js";import"./use-mcp-client-Br9Bc_QG.js";import"./auth-CVl-NJUr.js";import"./use-destination-route-h5z5mg1r.js";import"./hooks-DXUsJ5OG.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-DkdTYKut.js";import"./task-board-B7fvDdgg.js";import"./schema-DnDMVQH_.js";import"./chat-context-cCqCy4hR.js";import"./use-panel-navigate-BfB4XvOx.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-ai-providers-nO43huzc.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CIVaH9tI.js";import"./use-organization-settings-CKNbCAr3.js";import"./github-repo-COLY3wWI.js";import"./alert-dialog-Bkq1pELf.js";import"./dropdown-menu-lMdG_iDY.js";import"./Check-CP8J-yue.js";import"./ChevronRight-Dp38Bi37.js";import"./DotsVertical-D4ZkWWko.js";import"./agent-icon-PMomzNb8.js";import"./AlertCircle-D3Go-DxA.js";import"./Tool01-DvXgBBVx.js";import"./ArrowUp-ll-bFcOv.js";import"./ArrowLeft-CIz6WD1k.js";import"./Tool02-WNk8YR-K.js";import"./XCircle-BGsZ-GA9.js";import"./TrendUp01-BQdsc9D0.js";import"./ZoomOut-CBw8qi7G.js";import"./Users03-C_PThsgh.js";import"./CheckCircle-C1GBX5mx.js";import"./ChevronUp-BL3Y3Pfh.js";import"./ChevronSelectorVertical-CKbKoVDg.js";import"./UserSquare-yi9e0yva.js";import"./Copy01-Bxr69Pa_.js";import"./CreditCard01-DmdeQ-uT.js";import"./Download01-CR8eSQHF.js";import"./Settings02-CurphX2r.js";import"./Eye-BBRrrwtS.js";import"./Share07-ssWsGQP3.js";import"./GitBranch01-B4qLtwjZ.js";import"./Globe01-nr4o03jt.js";import"./XClose-CGI_e8Vl.js";import"./HardDrive-DgjML8n3.js";import"./Image01-BCDVVuhU.js";import"./Key01-MQO0WWsg.js";import"./Link01-CdFyVi7v.js";import"./LinkExternal01-DHU5YjYB.js";import"./Monitor01-AGRHw3ia.js";import"./Sun-ZB4uYdxA.js";import"./Package-BOJoaNAm.js";import"./Palette-sHUoYAFN.js";import"./Play-BpAJnhCa.js";import"./Shield01-BYxKWgbF.js";import"./Stars01-olNWmkRu.js";import"./Trash01-CPbHpyuZ.js";import"./Upload01-MZGSQJ1X.js";import"./User01-CAqX5wMc.js";import"./Users01-CJCIsXEr.js";import"./access-gate-BUbY-TwB.js";import"./capability-load-error-ChZ5muR5.js";function U(){const t=B.c(20),i=$(),{org:l}=D(),{data:C}=G(void 0),g=C===void 0?[]:C,k=O(),P=H(),f=M(),[x,E]=q.useState(""),h=x.toLowerCase(),A=new Map(k.map(X)),b=g.filter(e=>{if(!h||e.name.toLowerCase().includes(h))return!0;if(e.virtual_mcp_id){const p=A.get(e.virtual_mcp_id);if(p&&p.title.toLowerCase().includes(h))return!0}return!1}),z=(e,p)=>{const N=p&&A.has(p)?p:K(l.id);R("automations_list_row_clicked",{automation_id:e,agent_id:N,source:"settings_automations"}),P(N,{panel:`automation:${e}`})};let c;t[0]!==f||t[1]!==l.slug?(c=()=>{R("automations_empty_state_browse_agents_clicked"),f({to:"/$org/settings/agents",params:{org:l.slug}})},t[0]=f,t[1]=l.slug,t[2]=c):c=t[2];const L=c,j=d,v=d,w=d;let s;t[3]!==i?(s=i("settings.automations.pageTitle"),t[3]=i,t[4]=s):s=t[4];let r;t[5]!==s?(r=o.jsx(d.Title,{children:s}),t[5]=s,t[6]=r):r=t[6];const _=g.length>0&&o.jsx(F,{value:x,onChange:E,placeholder:i("settings.automations.searchPlaceholder"),className:"w-full md:w-[375px]"});let m;t[7]!==r||t[8]!==_?(m=o.jsxs("div",{className:"flex flex-col gap-6",children:[r,_]}),t[7]=r,t[8]=_,t[9]=m):m=t[9];const y=g.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.emptyTitle"),description:i("settings.automations.emptyDescription"),actions:o.jsxs(V,{size:"sm",onClick:L,children:[o.jsx(W,{size:14}),i("settings.automations.browseAgentsButton")]})})}):b.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.noResultsTitle"),description:i("settings.automations.noResultsDescription",{search:x})})}):o.jsx("div",{className:"mt-6 rounded-xl border border-border overflow-hidden",children:b.map(e=>o.jsx(J,{automation:e,showAgent:!0,onClick:()=>z(e.id,e.virtual_mcp_id)},e.id))});let n;t[10]!==w.Body||t[11]!==m||t[12]!==y?(n=o.jsxs(w.Body,{children:[m,y]}),t[10]=w.Body,t[11]=m,t[12]=y,t[13]=n):n=t[13];let a;t[14]!==v.Content||t[15]!==n?(a=o.jsx(v.Content,{children:n}),t[14]=v.Content,t[15]=n,t[16]=a):a=t[16];let u;return t[17]!==j||t[18]!==a?(u=o.jsx(j,{children:a}),t[17]=j,t[18]=a,t[19]=u):u=t[19],u}function X(t){return[t.id,t]}function wo(){const t=B.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx(Q,{capability:"automations:manage",area:"automations",children:o.jsx(U,{})}),t[0]=i):i=t[0],i}export{wo as default};
@@ -1 +0,0 @@
1
- import{c as w,b as z,G as g,j as a,H as _,r as j,I as D,J as I,M as O,O as L,R as A,U as M}from"./index-BLlEq7fX.js";import{S as T}from"./index-BARlCHD0.js";import{u as H}from"./settings-sidebar-DBZazsqF.js";import"./task-route-CnCRbimL.js";import"./hooks-DXUsJ5OG.js";import"./use-destination-route-h5z5mg1r.js";import"./constants-DNuUCxmW.js";import"./use-mcp-client-Br9Bc_QG.js";import"./auth-CVl-NJUr.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-DkdTYKut.js";import"./task-board-B7fvDdgg.js";import"./schema-DnDMVQH_.js";import"./ChevronUp-BL3Y3Pfh.js";import"./agent-icon-PMomzNb8.js";import"./AlertCircle-D3Go-DxA.js";import"./Tool01-DvXgBBVx.js";import"./ArrowUp-ll-bFcOv.js";import"./ArrowLeft-CIz6WD1k.js";import"./Tool02-WNk8YR-K.js";import"./XCircle-BGsZ-GA9.js";import"./TrendUp01-BQdsc9D0.js";import"./ZoomOut-CBw8qi7G.js";import"./Users03-C_PThsgh.js";import"./CheckCircle-C1GBX5mx.js";import"./Check-CP8J-yue.js";import"./ChevronRight-Dp38Bi37.js";import"./ChevronSelectorVertical-CKbKoVDg.js";import"./DotsVertical-D4ZkWWko.js";import"./UserSquare-yi9e0yva.js";import"./Copy01-Bxr69Pa_.js";import"./CreditCard01-DmdeQ-uT.js";import"./Download01-CR8eSQHF.js";import"./Settings02-CurphX2r.js";import"./Eye-BBRrrwtS.js";import"./Share07-ssWsGQP3.js";import"./GitBranch01-B4qLtwjZ.js";import"./Globe01-nr4o03jt.js";import"./XClose-CGI_e8Vl.js";import"./HardDrive-DgjML8n3.js";import"./Image01-BCDVVuhU.js";import"./Key01-MQO0WWsg.js";import"./Link01-CdFyVi7v.js";import"./LinkExternal01-DHU5YjYB.js";import"./Monitor01-AGRHw3ia.js";import"./Sun-ZB4uYdxA.js";import"./Package-BOJoaNAm.js";import"./Palette-sHUoYAFN.js";import"./Play-BpAJnhCa.js";import"./Plus-Bfv94HgH.js";import"./SearchMd-CpHQDgyC.js";import"./Shield01-BYxKWgbF.js";import"./Stars01-olNWmkRu.js";import"./Trash01-CPbHpyuZ.js";import"./Upload01-MZGSQJ1X.js";import"./User01-CAqX5wMc.js";import"./Users01-CJCIsXEr.js";import"./Zap-DLbsB5zJ.js";import"./use-virtual-mcp-D6Bwg8yT.js";import"./github-repo-COLY3wWI.js";import"./use-navigate-to-agent-CFT1TuW9.js";import"./chat-context-cCqCy4hR.js";import"./use-panel-navigate-BfB4XvOx.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-ai-providers-nO43huzc.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CIVaH9tI.js";import"./use-organization-settings-CKNbCAr3.js";import"./toolbar-icon-button-Cl6xUShh.js";import"./popover-BHjD_6zY.js";import"./drawer-C0LCZcQg.js";import"./github-repo-picker-CfIyZF9m.js";import"./dialog-D8rort4D.js";import"./collection-search-D2U_fyMd.js";import"./use-debounced-value-AG5Y92S9.js";import"./use-connection-D8n19Xlh.js";import"./authenticate-and-persist-oauth-DszVAKDO.js";import"./mcp-oauth-DYDEHrrj.js";import"./extract-connection-data-gJTZYhrI.js";import"./metadata-dUsYcpuu.js";import"./connection-AsBoK6TM.js";import"./provision-repo-scoped-github-connection-WQFARyHG.js";import"./project-icon-s2rp6Kcd.js";import"./shell-layout-DhMZzLJR.js";import"./avatar-Dzjj1gH4.js";import"./download-app-dialog-ePZ85wGq.js";import"./command-DRgpBwr9.js";import"./index-Bn9OGPOM.js";import"./required-auth-layout-A6jhZ6fc.js";import"./use-org-sso-C9rJ4bkG.js";import"./connection-card-DjD5j1IW.js";import"./use-registry-connections-BP-_JczK.js";import"./useInfiniteQuery-BPKsnHdI.js";import"./use-infinite-scroll-C1XfEqtD.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./integration-icon-CEg56vtn.js";import"./form-B-BJnneF.js";import"./label-pQa9etdh.js";import"./input-BuziP07t.js";import"./select-VG4g8cRT.js";import"./textarea-BeXjwZ3R.js";import"./connection-form-helpers-Uy4bdI_J.js";import"./collection-tabs-BfanqDJF.js";import"./badge-Dxk6giR0.js";import"./useSuspenseInfiniteQuery-B80OhY0M.js";import"./use-file-configs-Gjb-1F6A.js";import"./site-slug-uya6Wp4-.js";import"./dropdown-menu-lMdG_iDY.js";import"./get-initials-D-f_fDFw.js";import"./use-deployment-admin-DMYlgfzA.js";import"./invite-member-dialog-DyctdDNO.js";import"./use-org-auth-client-bZkxXt4u.js";import"./use-organization-roles-Dmlku1aY.js";import"./scroll-area-DrbBvL1-.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./create-organization-dialog-Bzhf4-kb.js";import"./alert-dialog-Bkq1pELf.js";import"./use-join-requests-D1lhzPOS.js";function N(t){const e=w.c(11),{onPointerDown:o,onDoubleClick:l}=t,i=z(),{isMobile:b}=g(),c=H();if(b||c)return null;let s;e[0]!==i?(s=i("sidebar.sidebarResizeHandle.ariaLabel"),e[0]=i,e[1]=s):s=e[1];let r;e[2]!==i?(r=i("sidebar.sidebarResizeHandle.title"),e[2]=i,e[3]=r):r=e[3];let p,m;e[4]===Symbol.for("react.memo_cache_sentinel")?(p={left:"var(--sidebar-width)"},m=a.jsx("span",{className:"pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-transparent transition-colors duration-150 group-hover/resize:bg-border group-active/resize:bg-border"}),e[4]=p,e[5]=m):(p=e[4],m=e[5]);let n;return e[6]!==l||e[7]!==o||e[8]!==s||e[9]!==r?(n=a.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":s,title:r,onPointerDown:o,onDoubleClick:l,className:"group/resize absolute top-0 z-20 h-full w-2 -translate-x-1/2 cursor-col-resize",style:p,children:m}),e[6]=l,e[7]=o,e[8]=s,e[9]=r,e[10]=n):n=e[10],n}const v=240,W=400,C="sidebar.width";function S(t){return Math.max(v,Math.min(W,t))}function X(){const t=w.c(11),[e,o]=_(C,$),l=j.useRef(null);let i;t[0]!==o||t[1]!==e?(i=m=>{m.preventDefault();const n=m.clientX,d=S(e),f=l.current??(typeof document<"u"?document.querySelector('[data-slot="sidebar-wrapper"]'):null),u=f?Array.from(f.querySelectorAll('[data-slot="sidebar"], [data-slot="sidebar-container"]')):[];for(const y of u)y.style.transition="none";const h=y=>{const x=S(d+(y.clientX-n));f?.style.setProperty("--sidebar-width",`${x}px`)},R=y=>{const x=S(d+(y.clientX-n));o(x);for(const E of u)E.style.transition="";window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",R),document.body.style.userSelect="",document.body.style.cursor=""};document.body.style.userSelect="none",document.body.style.cursor="col-resize",window.addEventListener("pointermove",h),window.addEventListener("pointerup",R)},t[0]=o,t[1]=e,t[2]=i):i=t[2];const b=i;let c;t[3]!==o?(c=()=>{o(v)},t[3]=o,t[4]=c):c=t[4];const s=c;let r;t[5]!==e?(r=S(e),t[5]=e,t[6]=r):r=t[6];let p;return t[7]!==b||t[8]!==s||t[9]!==r?(p={width:r,wrapperRef:l,onStartResize:b,resetWidth:s},t[7]=b,t[8]=s,t[9]=r,t[10]=p):p=t[10],p}function $(t){return typeof t=="number"?S(t):v}const P="3.125rem";function rr(){const t=w.c(16),e=D();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=I.sidebarOpen(),t[0]=o):o=t[0];const[l,i]=_(o,!0),{width:b,wrapperRef:c,onStartResize:s,resetWidth:r}=X(),p=`${b}px`;let m;t[1]!==p?(m={"--sidebar-width":p,"--sidebar-width-icon":P},t[1]=p,t[2]=m):m=t[2];const n=m;let d;t[3]!==e||t[4]!==s||t[5]!==r?(d=!e&&a.jsxs(a.Fragment,{children:[a.jsx(T,{}),a.jsx(N,{onPointerDown:s,onDoubleClick:r})]}),t[3]=e,t[4]=s,t[5]=r,t[6]=d):d=t[6];let f;t[7]===Symbol.for("react.memo_cache_sentinel")?(f=a.jsx(O,{className:"flex flex-col min-h-0",style:{background:"transparent",containerType:"inline-size"},children:a.jsx(L,{})}),t[7]=f):f=t[7];let u;t[8]!==n||t[9]!==d||t[10]!==c?(u=a.jsx("div",{className:"app-shell-root flex flex-col h-dvh overflow-hidden",children:a.jsxs(A,{ref:c,className:"flex-1 bg-sidebar relative min-h-0",style:n,children:[d,f]})}),t[8]=n,t[9]=d,t[10]=c,t[11]=u):u=t[11];let h;return t[12]!==i||t[13]!==l||t[14]!==u?(h=a.jsx(M,{open:l,onOpenChange:i,children:u}),t[12]=i,t[13]=l,t[14]=u,t[15]=h):h=t[15],h}export{rr as default};
@@ -1 +0,0 @@
1
- import{c as B,b as L,j as r}from"./index-BLlEq7fX.js";import{I as A}from"./input-BuziP07t.js";import{L as F}from"./label-pQa9etdh.js";import{S as R,a as z,b as J,c as O,d as V}from"./select-VG4g8cRT.js";import{T as D}from"./textarea-BeXjwZ3R.js";import{e as M,w as $,j as q,y as G,J as H}from"./index-CGPH8Aay.js";import{s as P}from"./primitives-Hy9C3z90.js";import{u as Q}from"./use-autosave-10q2RTOI.js";import"./Check-CP8J-yue.js";import"./ChevronUp-BL3Y3Pfh.js";import"./ArrowUp-ll-bFcOv.js";import"./chat-context-cCqCy4hR.js";import"./use-panel-navigate-BfB4XvOx.js";import"./use-destination-route-h5z5mg1r.js";import"./hooks-DXUsJ5OG.js";import"./constants-DNuUCxmW.js";import"./use-mcp-client-Br9Bc_QG.js";import"./auth-CVl-NJUr.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-DkdTYKut.js";import"./task-board-B7fvDdgg.js";import"./schema-DnDMVQH_.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-D6Bwg8yT.js";import"./use-ai-providers-nO43huzc.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CIVaH9tI.js";import"./use-organization-settings-CKNbCAr3.js";import"./automation-runs-DQpfZ3ah.js";import"./agent-icon-PMomzNb8.js";import"./AlertCircle-D3Go-DxA.js";import"./Tool01-DvXgBBVx.js";import"./ArrowLeft-CIz6WD1k.js";import"./Tool02-WNk8YR-K.js";import"./XCircle-BGsZ-GA9.js";import"./TrendUp01-BQdsc9D0.js";import"./ZoomOut-CBw8qi7G.js";import"./Users03-C_PThsgh.js";import"./CheckCircle-C1GBX5mx.js";import"./ChevronRight-Dp38Bi37.js";import"./ChevronSelectorVertical-CKbKoVDg.js";import"./DotsVertical-D4ZkWWko.js";import"./UserSquare-yi9e0yva.js";import"./Copy01-Bxr69Pa_.js";import"./CreditCard01-DmdeQ-uT.js";import"./Download01-CR8eSQHF.js";import"./Settings02-CurphX2r.js";import"./Eye-BBRrrwtS.js";import"./Share07-ssWsGQP3.js";import"./GitBranch01-B4qLtwjZ.js";import"./Globe01-nr4o03jt.js";import"./XClose-CGI_e8Vl.js";import"./HardDrive-DgjML8n3.js";import"./Image01-BCDVVuhU.js";import"./Key01-MQO0WWsg.js";import"./Link01-CdFyVi7v.js";import"./LinkExternal01-DHU5YjYB.js";import"./Monitor01-AGRHw3ia.js";import"./Sun-ZB4uYdxA.js";import"./Package-BOJoaNAm.js";import"./Palette-sHUoYAFN.js";import"./Play-BpAJnhCa.js";import"./Plus-Bfv94HgH.js";import"./SearchMd-CpHQDgyC.js";import"./Shield01-BYxKWgbF.js";import"./Stars01-olNWmkRu.js";import"./Trash01-CPbHpyuZ.js";import"./Upload01-MZGSQJ1X.js";import"./User01-CAqX5wMc.js";import"./Users01-CJCIsXEr.js";import"./Zap-DLbsB5zJ.js";import"./useInfiniteQuery-BPKsnHdI.js";import"./use-infinite-scroll-C1XfEqtD.js";import"./use-connection-D8n19Xlh.js";import"./table-aWc0_ACP.js";import"./empty-state-RWtOoUAx.js";import"./use-members-DqeJHhRA.js";import"./use-org-auth-client-bZkxXt4u.js";import"./use-automations-kB697jyQ.js";import"./useSuspenseInfiniteQuery-B80OhY0M.js";import"./avatar-Dzjj1gH4.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-BXnXibzr.js";import"./markdown-B2hPlfeE.js";import"./dialog-D8rort4D.js";import"./monaco-editor-CX6e7VrG.js";import"./editor-Bd3prlo2.js";import"./types-SjjneCjg.js";import"./shell-layout-DhMZzLJR.js";import"./download-app-dialog-ePZ85wGq.js";import"./project-icon-s2rp6Kcd.js";import"./github-repo-COLY3wWI.js";import"./command-DRgpBwr9.js";import"./index-Bn9OGPOM.js";import"./required-auth-layout-A6jhZ6fc.js";import"./use-org-sso-C9rJ4bkG.js";import"./integration-icon-CEg56vtn.js";import"./use-navigate-to-agent-CFT1TuW9.js";import"./use-mcp-prompts-BwIRDgak.js";import"./form-B-BJnneF.js";import"./file-type-icon-CQjfgGYf.js";import"./drawer-C0LCZcQg.js";import"./collection-search-D2U_fyMd.js";import"./tabs-DQ71MG9V.js";import"./toggle-group-DPgQPwoD.js";import"./task-route-CnCRbimL.js";import"./toolbar-icon-button-Cl6xUShh.js";import"./popover-BHjD_6zY.js";import"./github-repo-picker-CfIyZF9m.js";import"./use-debounced-value-AG5Y92S9.js";import"./authenticate-and-persist-oauth-DszVAKDO.js";import"./mcp-oauth-DYDEHrrj.js";import"./extract-connection-data-gJTZYhrI.js";import"./metadata-dUsYcpuu.js";import"./connection-AsBoK6TM.js";import"./provision-repo-scoped-github-connection-WQFARyHG.js";import"./connection-card-DjD5j1IW.js";import"./use-registry-connections-BP-_JczK.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./connection-form-helpers-Uy4bdI_J.js";import"./collection-tabs-BfanqDJF.js";import"./badge-Dxk6giR0.js";import"./use-file-configs-Gjb-1F6A.js";import"./site-slug-uya6Wp4-.js";import"./dropdown-menu-lMdG_iDY.js";import"./get-initials-D-f_fDFw.js";import"./select-model-B0UUoAOy.js";import"./checkbox-qcOSPDCl.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-gXZpqMuq.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-BuHyS6qw.js";import"./toolbar-BSp1fgjZ.js";import"./skill-preview-SXUpHpyk.js";import"./pt-BR-CLy76QW2.js";import"./alert-dialog-Bkq1pELf.js";import"./use-debounced-autosave-DqqoYjKj.js";import"./scroll-area-DrbBvL1-.js";import"./search-input-DNtr4vL-.js";import"./use-mcp-auth-status-C1s-X4Dw.js";import"./switch-D4rAjaTU.js";import"./use-secrets-BbXXjAyA.js";import"./client-icons-Bj62nsPg.js";import"./connect-layout-DOoW-xi0.js";import"./self-tool-result-DXYS49Bh.js";import"./track-De1Xf9c5.js";import"./use-tags-DS4F47AG.js";import"./breadcrumb-BbnkP8Mm.js";import"./safe-image-url-D5z803Ot.js";import"./automation-list-row-DNrqLZFn.js";import"./site-error--i37Vnuw.js";import"./cards-CJLJzSo_.js";const U={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},W={authors:"sandbox.recordEditor.titleAuthor"};function Gr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=M(h);let g;t[4]!==f||t[5]!==a?(g=$(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:G(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=Q(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=W[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=U[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(z,{id:o.key,className:"h-10 w-full",children:r.jsx(J,{placeholder:i(o.labelKey)})}),r.jsx(O,{children:(o.options??[]).map(m=>r.jsx(V,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Gr as RecordEditor};