decocms 2.302.1 → 2.302.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/client/assets/{AlertCircle-BFJK99tM.js → AlertCircle-BkX4HzbS.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-DCbP5K-g.js → ArrowNarrowLeft-BebHkn1X.js} +1 -1
  3. package/dist/client/assets/{ArrowUpRight-BvzWf0q7.js → ArrowUpRight-uszsF274.js} +1 -1
  4. package/dist/client/assets/{CheckCircle-qqOIolWc.js → CheckCircle-Boq6G01L.js} +1 -1
  5. package/dist/client/assets/{ChevronDown-BMTA9_Ap.js → ChevronDown-ByP-e484.js} +1 -1
  6. package/dist/client/assets/{ChevronRight-QeeRSp8z.js → ChevronRight-BUfZMnd9.js} +1 -1
  7. package/dist/client/assets/{ChevronUp-BHiGg6ZY.js → ChevronUp-TwiYbtUW.js} +1 -1
  8. package/dist/client/assets/{Container-CIDvyJX8.js → Container-DzkLD13G.js} +1 -1
  9. package/dist/client/assets/{DotsVertical-Bd2_5HYZ.js → DotsVertical-BrUfBHwt.js} +1 -1
  10. package/dist/client/assets/{LinkExternal01-DCnMv_g7.js → LinkExternal01-gfL-Fk4b.js} +1 -1
  11. package/dist/client/assets/{Lock01-Ds-YEZnN.js → Lock01-CI-miN4g.js} +1 -1
  12. package/dist/client/assets/{Palette-DescRwe0.js → Palette-1HvN4NnC.js} +1 -1
  13. package/dist/client/assets/{Play-Ch3KWC7Z.js → Play-O7ldNAxa.js} +1 -1
  14. package/dist/client/assets/{Plus-gLdNtuBE.js → Plus-Bihyskqy.js} +1 -1
  15. package/dist/client/assets/{RefreshCcw01-DKf5Q7r6.js → RefreshCcw01-BzT-xyrO.js} +1 -1
  16. package/dist/client/assets/{SearchMd-BI1BY0Xc.js → SearchMd-vBRV-l3E.js} +1 -1
  17. package/dist/client/assets/{Settings02-D0o0GA4h.js → Settings02-eiwWD3s7.js} +1 -1
  18. package/dist/client/assets/{Shield01-btPXI3TS.js → Shield01-D7ml37xT.js} +1 -1
  19. package/dist/client/assets/{Star01-DInOTW7T.js → Star01-ByzmPd4J.js} +1 -1
  20. package/dist/client/assets/{Sun-DLagUbKM.js → Sun-xA_CdWAJ.js} +1 -1
  21. package/dist/client/assets/{Tool01-D1xeep7h.js → Tool01-Dqyo2VjJ.js} +1 -1
  22. package/dist/client/assets/{Trash01-OgQVP2St.js → Trash01-f4CvhuWB.js} +1 -1
  23. package/dist/client/assets/{User01-Cr_qCqW_.js → User01-lDhxACAV.js} +1 -1
  24. package/dist/client/assets/{Users03-DVwMLxYo.js → Users03-IortA-KV.js} +1 -1
  25. package/dist/client/assets/{X-fvjwb2RC.js → X-BiphajNJ.js} +1 -1
  26. package/dist/client/assets/{XCircle-CVED_3Ss.js → XCircle-Dp1Lqd1t.js} +1 -1
  27. package/dist/client/assets/{XClose-C1T9ODT_.js → XClose-lRlzG-cb.js} +1 -1
  28. package/dist/client/assets/{Zap-u543Wk9m.js → Zap-ebWdIwXf.js} +1 -1
  29. package/dist/client/assets/{ZapSquare-B03aoE62.js → ZapSquare-_fsDSSOX.js} +1 -1
  30. package/dist/client/assets/{accordion-zoDibAHc.js → accordion-D3c87Mh0.js} +1 -1
  31. package/dist/client/assets/{agent-icon-B5EEcofO.js → agent-icon-Be_PnRh0.js} +1 -1
  32. package/dist/client/assets/{agents-list-KuDCGevU.js → agents-list-45a0yQhW.js} +1 -1
  33. package/dist/client/assets/ai-providers-BzCSRpkV.js +1 -0
  34. package/dist/client/assets/{alert-dialog-B6JtF6Oy.js → alert-dialog-BUApN05b.js} +1 -1
  35. package/dist/client/assets/{auth-catchall-CnOfYh4q.js → auth-catchall-DH0bWyBT.js} +1 -1
  36. package/dist/client/assets/{automation-list-row-Ce2nqVRS.js → automation-list-row-DETQBuFK.js} +1 -1
  37. package/dist/client/assets/{automations-3wicI9sJ.js → automations-DvIFzGM7.js} +1 -1
  38. package/dist/client/assets/{avatar-B5CcOSaZ.js → avatar-BBnvw18x.js} +1 -1
  39. package/dist/client/assets/{badge-Vn5olYFX.js → badge-CRHmlYav.js} +1 -1
  40. package/dist/client/assets/{brand-context-JEzNXnYS.js → brand-context-CH2SSDlY.js} +1 -1
  41. package/dist/client/assets/{card-DHIGW2Gm.js → card-DoqftRz7.js} +1 -1
  42. package/dist/client/assets/{chat-context-DZ4ItXeY.js → chat-context-JbYHex_O.js} +1 -1
  43. package/dist/client/assets/{checkbox-DBBm6J90.js → checkbox-CHYA_sQZ.js} +1 -1
  44. package/dist/client/assets/{collection-detail-CYmy41EW.js → collection-detail-Bb5ojn6D.js} +1 -1
  45. package/dist/client/assets/{collection-display-button-DifdWxZd.js → collection-display-button-C2ECPv0_.js} +1 -1
  46. package/dist/client/assets/{collection-search-dr2VH0_A.js → collection-search-B8mdZm7u.js} +1 -1
  47. package/dist/client/assets/{collection-search-EJTdRq0l.js → collection-search-C-2UZGyD.js} +1 -1
  48. package/dist/client/assets/{collection-table-wrapper-BNTrWb5l.js → collection-table-wrapper-pDRU_Alr.js} +1 -1
  49. package/dist/client/assets/{collection-tabs-BhSzOngN.js → collection-tabs-Bj7BShdC.js} +1 -1
  50. package/dist/client/assets/{collections-x4R34QWs.js → collections-CjrHbdtT.js} +1 -1
  51. package/dist/client/assets/{command-dTUEruN1.js → command-CZWy1buB.js} +1 -1
  52. package/dist/client/assets/{connection-card-DHMMRnIO.js → connection-card-HM9ImVMm.js} +1 -1
  53. package/dist/client/assets/{connection-detail-B_69g2MY.js → connection-detail-CWdb5LvI.js} +1 -1
  54. package/dist/client/assets/{connection-form-helpers-CSnwVczG.js → connection-form-helpers-Cr0s3TXQ.js} +1 -1
  55. package/dist/client/assets/{connections-DL-vzzoi.js → connections-CpsKPW6X.js} +1 -1
  56. package/dist/client/assets/{constants-BVU634u9.js → constants-Cj0U39_n.js} +1 -1
  57. package/dist/client/assets/{constants-DhipgDPU.js → constants-DE2tzNng.js} +1 -1
  58. package/dist/client/assets/{dialog-Cc5-s5cq.js → dialog-BdVY7mqq.js} +1 -1
  59. package/dist/client/assets/{domain-settings-Ddgt5zKc.js → domain-settings-DALXcXKA.js} +1 -1
  60. package/dist/client/assets/{drawer-CYKJkhyy.js → drawer-0C4xllAB.js} +1 -1
  61. package/dist/client/assets/{dropdown-menu-BdezCavF.js → dropdown-menu-Bq-aRZ_r.js} +1 -1
  62. package/dist/client/assets/{dynamic-plugin-layout-BPGpVId2.js → dynamic-plugin-layout-CXa5_dk-.js} +1 -1
  63. package/dist/client/assets/{empty-state-B-SDOSco.js → empty-state-Cw5GxS3i.js} +1 -1
  64. package/dist/client/assets/{empty-state-CGM_VDGy.js → empty-state-S_EjXlZP.js} +1 -1
  65. package/dist/client/assets/{extract-connection-data-CGFCZBB1.js → extract-connection-data-DN-EBamj.js} +1 -1
  66. package/dist/client/assets/{features-D36LrRkp.js → features-CZe-SpPx.js} +1 -1
  67. package/dist/client/assets/{form-BlgCJwww.js → form-Stkhqjoi.js} +1 -1
  68. package/dist/client/assets/{general-ByIyj3-X.js → general-aMP5BKAQ.js} +1 -1
  69. package/dist/client/assets/{index-DcnDvcwB.js → index-B7sUvMqz.js} +1 -1
  70. package/dist/client/assets/{index-C4B8wMiM.js → index-BP0vNLKa.js} +1 -1
  71. package/dist/client/assets/{index-Ce3V05Jd.js → index-BY8F27EB.js} +1 -1
  72. package/dist/client/assets/{index-C-49LFOm.js → index-BZhxvvXQ.js} +1 -1
  73. package/dist/client/assets/{index-iJW-G2eC.js → index-C--avMTn.js} +1 -1
  74. package/dist/client/assets/{index-CQbT2-AO.js → index-CAum6J1D.js} +1 -1
  75. package/dist/client/assets/{index-CxcuSo6g.js → index-ClNUcJ8s.js} +1 -1
  76. package/dist/client/assets/{index-DL3V_XAA.js → index-Crkc58Yb.js} +1 -1
  77. package/dist/client/assets/index-D2fHFr2F.js +1 -0
  78. package/dist/client/assets/{index-gtAbs0Sc.js → index-D58bzP3p.js} +1 -1
  79. package/dist/client/assets/{index-QpbQL5yY.js → index-DCOURowK.js} +1 -1
  80. package/dist/client/assets/{index-BEdZpL1a.js → index-DhThG5rF.js} +3 -3
  81. package/dist/client/assets/{index-DWnDHmtK.js → index-ZmvI6xf3.js} +1 -1
  82. package/dist/client/assets/{index-BGvMfUr2.js → index-b_n-uXmh.js} +2 -2
  83. package/dist/client/assets/{index-BizlRsAk.js → index-pdnGjAa-.js} +1 -1
  84. package/dist/client/assets/{index-DRSFVCQG.js → index-y9YjpvN-.js} +1 -1
  85. package/dist/client/assets/{infiniteQueryObserver-B9_hQDN4.js → infiniteQueryObserver-DMFjl81X.js} +1 -1
  86. package/dist/client/assets/{input-r-FVR1hH.js → input-C80VzPpQ.js} +1 -1
  87. package/dist/client/assets/{integration-icon-Btl0P6Zi.js → integration-icon-LX1nChXa.js} +1 -1
  88. package/dist/client/assets/{label-CDE7or5s.js → label-2a4WSF52.js} +1 -1
  89. package/dist/client/assets/{layout-DtEpOSua.js → layout-BAy6nHY2.js} +1 -1
  90. package/dist/client/assets/{lean-canvas-recruit-modal-70F-bJzI.js → lean-canvas-recruit-modal-C1vNRy0q.js} +1 -1
  91. package/dist/client/assets/{login-D6mlZnBr.js → login-BwOZspJc.js} +1 -1
  92. package/dist/client/assets/{members-B44F43x3.js → members-BxmUMFwY.js} +1 -1
  93. package/dist/client/assets/{monaco-editor-D9GcAVz1.js → monaco-editor-BY6pRUNM.js} +1 -1
  94. package/dist/client/assets/{monitoring-stats-row-9xBJedBt.js → monitoring-stats-row-BPKt_N1O.js} +1 -1
  95. package/dist/client/assets/{oauth-callback-BzeoI5mr.js → oauth-callback-Dkjb5tCM.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-ai-provider-B7fEhkFp.js → oauth-callback-ai-provider-mujJmFGt.js} +1 -1
  97. package/dist/client/assets/{onboarding-C_yRTGs2.js → onboarding-C1DRaGue.js} +1 -1
  98. package/dist/client/assets/{org-layout-xgtHVrWJ.js → org-layout-DioVArtE.js} +1 -1
  99. package/dist/client/assets/{org-plugin-layout-DjYWXXLz.js → org-plugin-layout-BZoT2SIg.js} +1 -1
  100. package/dist/client/assets/{pair-TlV_Y8fY.js → pair-CBvrXYZC.js} +1 -1
  101. package/dist/client/assets/{plugin-empty-state-wcs5uyqa.js → plugin-empty-state-DRAuC0gx.js} +1 -1
  102. package/dist/client/assets/{plugin-header-D00boOwo.js → plugin-header-Y35bsPBd.js} +1 -1
  103. package/dist/client/assets/{plugin-layout-kZMGzqtV.js → plugin-layout-BM2m7Nsv.js} +1 -1
  104. package/dist/client/assets/{popover-CENSHA5K.js → popover-CALdcEX7.js} +1 -1
  105. package/dist/client/assets/{profile-CmCDElOt.js → profile-Cz2Ymv3u.js} +1 -1
  106. package/dist/client/assets/{project-app-view-CXSUfW9V.js → project-app-view-BJIaTnR2.js} +1 -1
  107. package/dist/client/assets/registry-Bm6dPwQv.js +2 -0
  108. package/dist/client/assets/{registry-layout-jKwqcMMI.js → registry-layout-Bg8yl9if.js} +1 -1
  109. package/dist/client/assets/{required-auth-layout-ByW838Wg.js → required-auth-layout-CnSE-XLF.js} +1 -1
  110. package/dist/client/assets/{reset-password-Cn2aTTGW.js → reset-password-BEfzUzVH.js} +1 -1
  111. package/dist/client/assets/{roles-BOss14ty.js → roles-CFSaKkJP.js} +1 -1
  112. package/dist/client/assets/{scroll-area-KyXayDS_.js → scroll-area-18YOEnqD.js} +1 -1
  113. package/dist/client/assets/{search-input-LdRGRYga.js → search-input-6INcGAwd.js} +1 -1
  114. package/dist/client/assets/{select-CKhnD_dJ.js → select-CaDZpVbI.js} +1 -1
  115. package/dist/client/assets/{select-model-DSERjqbn.js → select-model-S5cFobu5.js} +1 -1
  116. package/dist/client/assets/{settings-layout-DmMGjApo.js → settings-layout-jEkhhHU3.js} +1 -1
  117. package/dist/client/assets/{settings-section-BSfLZRSf.js → settings-section-e84UGEbx.js} +1 -1
  118. package/dist/client/assets/{shell-layout-BTN4hGpk.js → shell-layout-Cdsgdqci.js} +1 -1
  119. package/dist/client/assets/{skeleton-PrntJAKB.js → skeleton-DCXc9Mjl.js} +1 -1
  120. package/dist/client/assets/{sso-Dt9Y-guZ.js → sso-DTC2FHjx.js} +1 -1
  121. package/dist/client/assets/{store-lsrePhQV.js → store-pc-wftmt.js} +1 -1
  122. package/dist/client/assets/store-registry-BCuueIrr.js +2 -0
  123. package/dist/client/assets/{switch-DIPW9oSx.js → switch-BUxRExf5.js} +1 -1
  124. package/dist/client/assets/{table-CyZKmPMu.js → table-CT5HWSPV.js} +1 -1
  125. package/dist/client/assets/{tabs-Cnic4mBc.js → tabs-Cge-9ZTd.js} +1 -1
  126. package/dist/client/assets/{task-status-B4S1zCuU.js → task-status-tGA8S8H-.js} +1 -1
  127. package/dist/client/assets/{textarea-DWnLf30W.js → textarea-Dx8hdqfA.js} +1 -1
  128. package/dist/client/assets/{toggle-group-Bw-pO6dq.js → toggle-group-psHBbDPI.js} +1 -1
  129. package/dist/client/assets/{tools-list-Ddp6jSMU.js → tools-list-tDufGw9O.js} +1 -1
  130. package/dist/client/assets/{tooltip-8sj0FPxK.js → tooltip-B-nRvfy-.js} +1 -1
  131. package/dist/client/assets/{types-CPAcvDGA.js → types-hw9no7At.js} +1 -1
  132. package/dist/client/assets/{use-ai-providers-TD5f5keD.js → use-ai-providers-Bc_Jl0e6.js} +1 -1
  133. package/dist/client/assets/{use-collections-DbJUoPI1.js → use-collections-CqIGWKSp.js} +1 -1
  134. package/dist/client/assets/{use-connection-EBpfvjCE.js → use-connection-DuXPSqwF.js} +1 -1
  135. package/dist/client/assets/{use-copy-DNbmGYTy.js → use-copy-CJlR4d5Y.js} +1 -1
  136. package/dist/client/assets/{use-create-virtual-mcp-oePzdlSN.js → use-create-virtual-mcp-B-gULvH7.js} +1 -1
  137. package/dist/client/assets/{use-decopilot-events-CTJPtEAG.js → use-decopilot-events-CWIgEPKA.js} +1 -1
  138. package/dist/client/assets/{use-delete-connection-DeDsXAxU.js → use-delete-connection-mOKpqJ4Z.js} +1 -1
  139. package/dist/client/assets/{use-infinite-scroll-Blb-Zkmq.js → use-infinite-scroll-HGu4x7ZU.js} +1 -1
  140. package/dist/client/assets/{use-list-state-Bt40g0pF.js → use-list-state-Dlljnhsv.js} +1 -1
  141. package/dist/client/assets/{use-mcp-tools-yGAchpt7.js → use-mcp-tools-BkDSNv3W.js} +1 -1
  142. package/dist/client/assets/{use-members-elTW2IMS.js → use-members-8sha4K9R.js} +1 -1
  143. package/dist/client/assets/{use-navigate-to-agent-XL440g7Q.js → use-navigate-to-agent-B5j-9-p3.js} +1 -1
  144. package/dist/client/assets/{use-org-auth-client-kuXtTIo4.js → use-org-auth-client-Ev284uyK.js} +1 -1
  145. package/dist/client/assets/{use-org-sso-DzmlEuU4.js → use-org-sso-CD6laYaL.js} +1 -1
  146. package/dist/client/assets/{use-organization-roles-B18S9BiQ.js → use-organization-roles-CN53ZUes.js} +1 -1
  147. package/dist/client/assets/{use-organization-settings-vi5z2D5l.js → use-organization-settings-DFNDQvXK.js} +1 -1
  148. package/dist/client/assets/{use-registry-connections-vdam_2jo.js → use-registry-connections-D1xCWobU.js} +1 -1
  149. package/dist/client/assets/{use-status-sounds-DVkOG6QZ.js → use-status-sounds-ojr3d2EQ.js} +1 -1
  150. package/dist/client/assets/{use-tasks-BSCdum36.js → use-tasks-DFEEn9nC.js} +1 -1
  151. package/dist/client/assets/{use-view-mode-IRjBIGSa.js → use-view-mode-BjLGHFfJ.js} +1 -1
  152. package/dist/client/assets/{use-virtual-mcp-BOr32Cw9.js → use-virtual-mcp-Qy5dDA1Q.js} +1 -1
  153. package/dist/client/assets/useInfiniteQuery-B82zG1fE.js +1 -0
  154. package/dist/client/assets/useSuspenseInfiniteQuery-4BiVmPoE.js +1 -0
  155. package/dist/client/assets/{user-Cr4eZetj.js → user-ysfLNnXi.js} +1 -1
  156. package/dist/client/assets/{view-mode-toggle-DqaIt4c7.js → view-mode-toggle-C5L447if.js} +1 -1
  157. package/dist/client/assets/{workflow-f-0F4vKd.js → workflow-CWouU_7K.js} +1 -1
  158. package/dist/client/assets/workflow-detail-rg2LspQv.js +1 -0
  159. package/dist/client/index.html +1 -1
  160. package/dist/server/cli.js +42 -10
  161. package/dist/server/server.js +41 -9
  162. package/package.json +1 -1
  163. package/dist/client/assets/ai-providers-3jYxMl4T.js +0 -1
  164. package/dist/client/assets/index-CSOTvYaA.js +0 -1
  165. package/dist/client/assets/registry-M9hpVTeC.js +0 -2
  166. package/dist/client/assets/store-registry-BiQl34xL.js +0 -2
  167. package/dist/client/assets/useInfiniteQuery-D6CYdRiz.js +0 -1
  168. package/dist/client/assets/useSuspenseInfiniteQuery-hnE5tAGb.js +0 -1
  169. package/dist/client/assets/workflow-detail-CHEOWOns.js +0 -1
  170. package/dist/server/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  171. package/dist/server/node_modules/is-fullwidth-code-point/index.js +0 -12
  172. package/dist/server/node_modules/is-fullwidth-code-point/license +0 -9
  173. package/dist/server/node_modules/is-fullwidth-code-point/package.json +0 -53
  174. package/dist/server/node_modules/is-fullwidth-code-point/readme.md +0 -31
  175. package/dist/server/node_modules/pg/LICENSE +0 -21
  176. package/dist/server/node_modules/pg/README.md +0 -95
  177. package/dist/server/node_modules/pg/esm/index.mjs +0 -20
  178. package/dist/server/node_modules/pg/lib/client.js +0 -743
  179. package/dist/server/node_modules/pg/lib/connection-parameters.js +0 -171
  180. package/dist/server/node_modules/pg/lib/connection.js +0 -221
  181. package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +0 -122
  182. package/dist/server/node_modules/pg/lib/crypto/sasl.js +0 -212
  183. package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +0 -43
  184. package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +0 -89
  185. package/dist/server/node_modules/pg/lib/crypto/utils.js +0 -9
  186. package/dist/server/node_modules/pg/lib/defaults.js +0 -91
  187. package/dist/server/node_modules/pg/lib/index.js +0 -73
  188. package/dist/server/node_modules/pg/lib/native/client.js +0 -323
  189. package/dist/server/node_modules/pg/lib/native/index.js +0 -2
  190. package/dist/server/node_modules/pg/lib/native/query.js +0 -165
  191. package/dist/server/node_modules/pg/lib/query.js +0 -252
  192. package/dist/server/node_modules/pg/lib/result.js +0 -109
  193. package/dist/server/node_modules/pg/lib/stream.js +0 -83
  194. package/dist/server/node_modules/pg/lib/type-overrides.js +0 -35
  195. package/dist/server/node_modules/pg/lib/utils.js +0 -217
  196. package/dist/server/node_modules/pg/package.json +0 -76
  197. package/dist/server/node_modules/pg-int8/LICENSE +0 -13
  198. package/dist/server/node_modules/pg-int8/README.md +0 -16
  199. package/dist/server/node_modules/pg-int8/index.js +0 -100
  200. package/dist/server/node_modules/pg-int8/package.json +0 -24
  201. package/dist/server/node_modules/postgres-interval/index.d.ts +0 -20
  202. package/dist/server/node_modules/postgres-interval/index.js +0 -125
  203. package/dist/server/node_modules/postgres-interval/license +0 -21
  204. package/dist/server/node_modules/postgres-interval/package.json +0 -36
  205. package/dist/server/node_modules/postgres-interval/readme.md +0 -48
@@ -1 +1 @@
1
- import{e as oe,j as t,B as Ce,f as Be,b as ct,s as ze,r as dt,x as Le,o as ut,a as mt,K as Fe,Y as Ke,Z as pt}from"./index-BGvMfUr2.js";import{u as Ve,S as qe}from"./constants-BVU634u9.js";import{B as ft,g as Me}from"./constants-DhipgDPU.js";import{C as Qe}from"./collection-display-button-DifdWxZd.js";import{C as ht}from"./collection-search-dr2VH0_A.js";import{C as gt}from"./card-DHIGW2Gm.js";import{I as Ge}from"./integration-icon-Btl0P6Zi.js";import{D as He,a as Ye,b as Je,c as O}from"./dropdown-menu-BdezCavF.js";import{c as Ze}from"./XCircle-CVED_3Ss.js";import{i as Xe}from"./DotsVertical-Bd2_5HYZ.js";import{y as et,H as Ue}from"./agent-icon-B5EEcofO.js";import{s as tt}from"./RefreshCcw01-DKf5Q7r6.js";import{s as st}from"./Trash01-OgQVP2St.js";import{C as xt}from"./collection-table-wrapper-BNTrWb5l.js";import{E as We}from"./empty-state-B-SDOSco.js";import{U as jt}from"./user-Cr4eZetj.js";import{E as it}from"./empty-state-CGM_VDGy.js";import{u as Ct}from"./use-list-state-Bt40g0pF.js";import{g as bt}from"./connection-slug-eyAPH6o3.js";import{f as vt,g as yt,c as Nt,b as wt,d as St,e as Pt,a as _t,A as Dt}from"./alert-dialog-B6JtF6Oy.js";import{a as It,c as At}from"./use-collections-DbJUoPI1.js";import{a as Tt}from"./use-connection-EBpfvjCE.js";import{s as Et}from"./Plus-gLdNtuBE.js";import{a as Ot}from"./layout-DtEpOSua.js";import{P as je}from"./index-C-49LFOm.js";import"./collections-x4R34QWs.js";import"./XClose-C1T9ODT_.js";import"./ChevronDown-BMTA9_Ap.js";import"./tooltip-8sj0FPxK.js";import"./view-mode-toggle-DqaIt4c7.js";import"./badge-Vn5olYFX.js";import"./SearchMd-BI1BY0Xc.js";import"./Container-CIDvyJX8.js";import"./ChevronRight-QeeRSp8z.js";import"./AlertCircle-BFJK99tM.js";import"./Tool01-D1xeep7h.js";import"./ArrowNarrowLeft-DCbP5K-g.js";import"./ArrowUpRight-BvzWf0q7.js";import"./ZapSquare-B03aoE62.js";import"./Users03-DVwMLxYo.js";import"./CheckCircle-qqOIolWc.js";import"./ChevronUp-BHiGg6ZY.js";import"./Star01-DInOTW7T.js";import"./Palette-DescRwe0.js";import"./LinkExternal01-DCnMv_g7.js";import"./Lock01-Ds-YEZnN.js";import"./Sun-DLagUbKM.js";import"./Play-Ch3KWC7Z.js";import"./Settings02-D0o0GA4h.js";import"./Shield01-btPXI3TS.js";import"./User01-Cr_qCqW_.js";import"./X-fvjwb2RC.js";import"./Zap-u543Wk9m.js";import"./table-CyZKmPMu.js";import"./avatar-B5CcOSaZ.js";import"./use-view-mode-IRjBIGSa.js";function $t(i,e){const s=i.properties||{};for(const n in s){const c=s[n];if(c&&c.type==="string"&&(c.format==="url"||c.format==="uri")&&e&&typeof e=="object"&&n in e&&e[n])return e[n]}const r=["image","img","avatar","icon","logo","thumbnail","cover"];for(const n of r)if(e&&typeof e=="object"&&n in e&&typeof e[n]=="string")return e[n]}function kt(i){const e=oe.c(25),{item:s,schema:r,actions:n}=i;let c;e[0]!==s||e[1]!==r?(c=$t(r,s),e[0]=s,e[1]=r,e[2]=c):c=e[2];const l=c,p=s&&typeof s=="object"&&"description"in s&&typeof s.description=="string"?s.description:void 0;let d;e[3]!==n?(d=n&&Object.keys(n).length>0,e[3]=n,e[4]=d):d=e[4];const o=d;let m;e[5]!==l||e[6]!==s.title?(m=t.jsx(Ge,{icon:l,name:s.title,size:"md",className:"shrink-0 shadow-sm"}),e[5]=l,e[6]=s.title,e[7]=m):m=e[7];let u;e[8]!==s.title?(u=t.jsx("h3",{className:"text-base font-medium text-foreground truncate",children:s.title}),e[8]=s.title,e[9]=u):u=e[9];const f=p||"No description";let a;e[10]!==f?(a=t.jsx("p",{className:"text-base text-muted-foreground line-clamp-2",children:f}),e[10]=f,e[11]=a):a=e[11];let v;e[12]!==u||e[13]!==a?(v=t.jsxs("div",{className:"flex flex-col gap-0 flex-1",children:[u,a]}),e[12]=u,e[13]=a,e[14]=v):v=e[14];let y;e[15]!==m||e[16]!==v?(y=t.jsxs("div",{className:"flex flex-col gap-4 p-6 flex-1",children:[m,v]}),e[15]=m,e[16]=v,e[17]=y):y=e[17];let b;e[18]!==n||e[19]!==o||e[20]!==s?(b=o&&t.jsx("div",{className:"absolute top-6 right-6 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity",onClick:Kt,onMouseDown:Ft,children:t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Lt,children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:zt,children:[n.open&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.open?.(s)},children:[t.jsx(tt,{size:16}),"Open"]}),n.edit&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.edit?.(s)},children:[t.jsx(et,{size:16}),"Edit"]}),n.duplicate&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.duplicate?.(s)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),n.delete&&t.jsxs(O,{variant:"destructive",onClick:g=>{g.stopPropagation(),n.delete?.(s)},children:[t.jsx(st,{size:16}),"Delete"]})]})]})}),e[18]=n,e[19]=o,e[20]=s,e[21]=b):b=e[21];let x;return e[22]!==y||e[23]!==b?(x=t.jsxs(gt,{className:"cursor-pointer transition-colors hover:bg-accent/50 h-full flex flex-col group relative",children:[y,b]}),e[22]=y,e[23]=b,e[24]=x):x=e[24],x}function zt(i){return i.stopPropagation()}function Lt(i){return i.stopPropagation()}function Ft(i){return i.stopPropagation()}function Kt(i){return i.stopPropagation()}const Mt=["icon","avatar","logo"],Re=["created_at","created_by","id"];function Ut(i){return Object.keys(i).find(e=>Mt.includes(e.toLowerCase()))}function ot(i,e){return Object.keys(i.properties||{}).filter(s=>["id","created_at","updated_at","created_by","updated_by"].includes(s)?!1:e?e.includes(s):!0).map(s=>({id:s,label:s.charAt(0).toUpperCase()+s.slice(1).replace(/_/g," ")}))}function Wt(i){const e=oe.c(30),{data:s,schema:r,viewMode:n,search:c,sortKey:l,sortDirection:p,onSort:d,actions:o,onItemClick:m,headerActions:u,emptyState:f,readOnly:a,columns:v,hideToolbar:y,sortableFields:b}=i,x=p===void 0?"asc":p,g=d===void 0?qt:d;let $;e[0]!==o?($=o===void 0?{}:o,e[0]=o,e[1]=$):$=e[1];const h=$,T=m===void 0?Vt:m,E=u===void 0?null:u,N=f===void 0?null:f,k=a===void 0?!1:a,j=v===void 0?void 0:v,z=y===void 0?!1:y,P=b===void 0?void 0:b;let D;e[2]!==j||e[3]!==r||e[4]!==P?(D=j?j.filter(Bt).filter(A=>!P||P.includes(A.id)).map(Rt):ot(r,P),e[2]=j,e[3]=r,e[4]=P,e[5]=D):D=e[5];const w=D;let S;e[6]!==E||e[7]!==z||e[8]!==g||e[9]!==x||e[10]!==l||e[11]!==w?(S=!z&&t.jsx("div",{className:"shrink-0 w-full border-b border-border h-12",children:t.jsxs("div",{className:"flex items-center gap-3 h-12 px-4",children:[t.jsx("div",{className:"flex items-center gap-2 flex-1",children:E}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(Qe,{sortKey:l,sortDirection:x,onSort:g,sortOptions:w})})]})}),e[6]=E,e[7]=z,e[8]=g,e[9]=x,e[10]=l,e[11]=w,e[12]=S):S=e[12];let _;e[13]!==h||e[14]!==j||e[15]!==s||e[16]!==N||e[17]!==T||e[18]!==g||e[19]!==k||e[20]!==r||e[21]!==c||e[22]!==x||e[23]!==l||e[24]!==P||e[25]!==n?(_=n==="cards"?t.jsx("div",{className:"flex-1 overflow-auto p-5",children:s.length===0?t.jsx("div",{className:"flex items-center justify-center h-full",children:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}):t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4",children:s.map(A=>t.jsx("div",{onClick:()=>T?.(A),className:"cursor-pointer h-full",children:t.jsx(kt,{item:A,schema:r,readOnly:k,actions:h})},A.id))})}):t.jsx(xt,{columns:Ht(j,r,P,h),data:s,sortKey:l,sortDirection:x,onSort:g,onRowClick:T,emptyState:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}),e[13]=h,e[14]=j,e[15]=s,e[16]=N,e[17]=T,e[18]=g,e[19]=k,e[20]=r,e[21]=c,e[22]=x,e[23]=l,e[24]=P,e[25]=n,e[26]=_):_=e[26];let I;return e[27]!==S||e[28]!==_?(I=t.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[S,_]}),e[27]=S,e[28]=_,e[29]=I):I=e[29],I}function Rt(i){return{id:i.id,label:typeof i.header=="string"?i.header:i.id}}function Bt(i){return i.sortable!==!1}function Vt(){}function qt(){}function Qt(i){return{id:"actions",header:"",render:e=>t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:s=>s.stopPropagation(),children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:s=>s.stopPropagation(),children:[i.open&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.open?.(e)},children:[t.jsx(tt,{size:16}),"Open"]}),i.edit&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.edit?.(e)},children:[t.jsx(et,{size:16}),"Edit"]}),i.duplicate&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.duplicate?.(e)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),i.delete&&t.jsxs(O,{variant:"destructive",onClick:s=>{s.stopPropagation(),i.delete?.(e)},children:[t.jsx(st,{size:16}),"Delete"]})]})]}),cellClassName:"w-[60px]",sortable:!1}}function nt(i){const e=i.type;return Array.isArray(e)?e.every(s=>nt({type:s})):e==="string"||e==="number"||e==="integer"||e==="boolean"||e==="null"}function Gt(i,e){const s=i.properties||{},r=Object.keys(s).filter(o=>{const m=s[o];return m&&nt(m)}),n=Ut(s),c=[],l=new Set;n&&r.includes(n)&&(c.push(n),l.add(n));const p=["title","description","updated_at","updated_by"];for(const o of p)r.includes(o)&&!l.has(o)&&(c.push(o),l.add(o));const d=r.filter(o=>!l.has(o)&&!Re.includes(o)).sort((o,m)=>o.localeCompare(m));for(const o of d)c.push(o),l.add(o);for(const o of Re)r.includes(o)&&!l.has(o)&&(c.push(o),l.add(o));return c.map(o=>{const m=s[o],u=e?e.includes(o):!["id"].includes(o);return o===n?{id:o,header:"",render:f=>{const a=f[o];return t.jsx(Ge,{icon:a,name:f.title,size:"sm",className:"shrink-0 shadow-sm"})},sortable:!1,cellClassName:"w-16 shrink-0",wrap:!0}:o==="description"?{id:o,header:"Description",render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-[50ch]",children:String(a)})},sortable:u,cellClassName:"max-w-[50ch]"}:o==="created_by"||o==="updated_by"?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx(jt,{id:String(a),size:"xs"}):"—"},sortable:u,cellClassName:"max-w-[250px]"}:m?.format==="date-time"||o.endsWith("_at")?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx("span",{className:"block truncate max-w-full",children:new Date(a).toLocaleDateString()}):"—"},sortable:u,cellClassName:"max-w-[200px]"}:{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-full",children:String(a)})},sortable:u,cellClassName:"max-w-[200px]"}})}function Ht(i,e,s,r){const n=i||Gt(e,s);return n.some(p=>p.id==="actions")?n:Object.keys(r).length>0?[...n,Qt(r)]:n}function Yt(i){const e=oe.c(119),{connectionId:s,org:r,activeCollection:n,onItemClick:c}=i,l=n.name,p=n.schema??ft,d=n.hasCreateTool,o=n.hasUpdateTool,m=n.hasDeleteTool,u=Be(),{data:f}=ct.useSession(),a=f?.user?.id||"unknown",v=Tt(s);let y;e[0]!==v||e[1]!==s?(y=v?bt(v):s,e[0]=v,e[1]=s,e[2]=y):y=e[2];const b=y,{org:x}=ze();let g;e[3]!==s||e[4]!==x.id||e[5]!==x.slug?(g={connectionId:s,orgId:x.id,orgSlug:x.slug},e[3]=s,e[4]=x.id,e[5]=x.slug,e[6]=g):g=e[6];const $=Ve(g),h=It(s,l,$),T=`${s}-${l}`;let E;e[7]!==r||e[8]!==T?(E={namespace:r,resource:T,defaultSortKey:"updated_at"},e[7]=r,e[8]=T,e[9]=E):E=e[9];const{search:N,searchTerm:k,setSearch:j,viewMode:z,setViewMode:P,sortKey:D,sortDirection:w,handleSort:S}=Ct(E);let _;e[10]!==k||e[11]!==w||e[12]!==D?(_={searchTerm:k,sortKey:D,sortDirection:w},e[10]=k,e[11]=w,e[12]=D,e[13]=_):_=e[13];const I=At(s,l,$,_),A=!d&&!o&&!m;let ne;e[14]!==b||e[15]!==l||e[16]!==u||e[17]!==c||e[18]!==r?(ne=C=>{if(c){c(C);return}u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:r,appSlug:b,collectionName:l,itemId:C.id}})},e[14]=b,e[15]=l,e[16]=u,e[17]=c,e[18]=r,e[19]=ne):ne=e[19];const L=ne;let le;e[20]!==h.create||e[21]!==a?(le=async C=>{const xe=new Date().toISOString();await h.create.mutateAsync({...C,id:Me("conn"),title:`${C.title} (Copy)`,created_at:xe,updated_at:xe,created_by:a,updated_by:a})},e[20]=h.create,e[21]=a,e[22]=le):le=e[22];const be=le,[F,ve]=dt.useState(null);let re;e[23]===Symbol.for("react.memo_cache_sentinel")?(re=C=>{ve(C)},e[23]=re):re=e[23];const lt=re;let K;e[24]!==L||e[25]!==o?(K=o&&{edit:L},e[24]=L,e[25]=o,e[26]=K):K=e[26];let M;e[27]!==be||e[28]!==d?(M=d&&{duplicate:be},e[27]=be,e[28]=d,e[29]=M):M=e[29];let U;e[30]!==m?(U=m&&{delete:lt},e[30]=m,e[31]=U):U=e[31];let ae;e[32]!==M||e[33]!==U||e[34]!==K?(ae={...K,...M,...U},e[32]=M,e[33]=U,e[34]=K,e[35]=ae):ae=e[35];const ye=ae;let ce;e[36]!==h.delete||e[37]!==F?(ce=async()=>{F&&(await h.delete.mutateAsync(F.id),ve(null))},e[36]=h.delete,e[37]=F,e[38]=ce):ce=e[38];const Ne=ce;let de;e[39]!==h.create||e[40]!==b||e[41]!==l||e[42]!==d||e[43]!==u||e[44]!==r||e[45]!==a?(de=async()=>{if(!d){Le.error("Create operation is not available for this collection");return}const C=new Date().toISOString(),xe={id:Me("conn"),title:"New Item",description:"A brief description of the item",created_at:C,updated_at:C,created_by:a,updated_by:a};try{const ke=await h.create.mutateAsync(xe);u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:r,appSlug:b,collectionName:l,itemId:ke.id}})}catch(ke){console.error("Failed to create item:",ke)}},e[39]=h.create,e[40]=b,e[41]=l,e[42]=d,e[43]=u,e[44]=r,e[45]=a,e[46]=de):de=e[46];const we=de;let ue;e[47]!==p?(ue=ot(p),e[47]=p,e[48]=ue):ue=e[48];const Se=ue,rt=(I?.length??0)>0,at=d&&!rt&&!N;let me;e[49]!==h.create||e[50]!==we||e[51]!==d?(me=d?t.jsxs(Ce,{onClick:we,size:"sm",disabled:h.create.isPending,className:"h-7",children:[t.jsx(Et,{className:"mr-2 h-4 w-4"}),h.create.isPending?"Creating...":"Create"]}):null,e[49]=h.create,e[50]=we,e[51]=d,e[52]=me):me=e[52];const pe=me,Pe=D;let W;e[53]!==S||e[54]!==w||e[55]!==Se||e[56]!==Pe?(W=t.jsx(Ot,{children:t.jsx(Qe,{sortKey:Pe,sortDirection:w,onSort:S,sortOptions:Se})}),e[53]=S,e[54]=w,e[55]=Se,e[56]=Pe,e[57]=W):W=e[57];const _e=`Search ${l}...`;let R;e[58]!==j?(R=C=>{C.key==="Escape"&&(j(""),C.target.blur())},e[58]=j,e[59]=R):R=e[59];let B;e[60]!==N||e[61]!==j||e[62]!==_e||e[63]!==R?(B=t.jsx("div",{className:"flex-1",children:t.jsx(ht,{value:N,onChange:j,placeholder:_e,onKeyDown:R})}),e[60]=N,e[61]=j,e[62]=_e,e[63]=R,e[64]=B):B=e[64];let V;e[65]!==pe||e[66]!==d?(V=d&&t.jsx("div",{className:"pr-3",children:pe}),e[65]=pe,e[66]=d,e[67]=V):V=e[67];let q;e[68]!==B||e[69]!==V?(q=t.jsxs("div",{className:"flex items-center gap-2",children:[B,V]}),e[68]=B,e[69]=V,e[70]=q):q=e[70];let Q;e[71]!==I?(Q=I??[],e[71]=I,e[72]=Q):Q=e[72];const De=D;let G;e[73]!==L?(G=C=>L(C),e[73]=L,e[74]=G):G=e[74];const Ie="No items found",Ae=N?"Try adjusting your search terms":"This collection doesn't have any items yet.",Te=at?pe:void 0;let H;e[75]!==Ie||e[76]!==Ae||e[77]!==Te?(H=t.jsx(it,{image:null,title:Ie,description:Ae,actions:Te}),e[75]=Ie,e[76]=Ae,e[77]=Te,e[78]=H):H=e[78];let Y;e[79]!==S||e[80]!==A||e[81]!==ye||e[82]!==p||e[83]!==N||e[84]!==j||e[85]!==P||e[86]!==w||e[87]!==Q||e[88]!==De||e[89]!==G||e[90]!==H||e[91]!==z?(Y=t.jsx("div",{className:"flex-1 overflow-auto",children:t.jsx(Wt,{hideToolbar:!0,data:Q,schema:p,viewMode:z,onViewModeChange:P,search:N,onSearchChange:j,sortKey:De,sortDirection:w,onSort:S,actions:ye,onItemClick:G,readOnly:A,emptyState:H})}),e[79]=S,e[80]=A,e[81]=ye,e[82]=p,e[83]=N,e[84]=j,e[85]=P,e[86]=w,e[87]=Q,e[88]=De,e[89]=G,e[90]=H,e[91]=z,e[92]=Y):Y=e[92];let J;e[93]!==q||e[94]!==Y?(J=t.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[q,Y]}),e[93]=q,e[94]=Y,e[95]=J):J=e[95];const Ee=!!F;let fe;e[96]===Symbol.for("react.memo_cache_sentinel")?(fe=C=>{C||ve(null)},e[96]=fe):fe=e[96];let he;e[97]===Symbol.for("react.memo_cache_sentinel")?(he=t.jsx(Nt,{children:"Delete item?"}),e[97]=he):he=e[97];const Oe=F?.title;let Z;e[98]!==Oe?(Z=t.jsxs(wt,{children:[he,t.jsxs(St,{children:['Are you sure you want to delete "',Oe,'"? This action cannot be undone.']})]}),e[98]=Oe,e[99]=Z):Z=e[99];let X;e[100]!==h.delete.isPending?(X=t.jsx(vt,{disabled:h.delete.isPending,children:"Cancel"}),e[100]=h.delete.isPending,e[101]=X):X=e[101];const $e=h.delete.isPending?"Deleting...":"Delete";let ee;e[102]!==h.delete.isPending||e[103]!==Ne||e[104]!==$e?(ee=t.jsx(yt,{onClick:Ne,disabled:h.delete.isPending,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:$e}),e[102]=h.delete.isPending,e[103]=Ne,e[104]=$e,e[105]=ee):ee=e[105];let te;e[106]!==X||e[107]!==ee?(te=t.jsxs(Pt,{children:[X,ee]}),e[106]=X,e[107]=ee,e[108]=te):te=e[108];let se;e[109]!==Z||e[110]!==te?(se=t.jsxs(_t,{children:[Z,te]}),e[109]=Z,e[110]=te,e[111]=se):se=e[111];let ie;e[112]!==Ee||e[113]!==se?(ie=t.jsx(Dt,{open:Ee,onOpenChange:fe,children:se}),e[112]=Ee,e[113]=se,e[114]=ie):ie=e[114];let ge;return e[115]!==W||e[116]!==J||e[117]!==ie?(ge=t.jsxs(t.Fragment,{children:[W,J,ie]}),e[115]=W,e[116]=J,e[117]=ie,e[118]=ge):ge=e[118],ge}function Jt(){const i=oe.c(13),{org:e,project:s}=ze(),r=ut();let n;i[0]!==e.id||i[1]!==e.slug?(n={connectionId:qe,orgId:e.id,orgSlug:e.slug},i[0]=e.id,i[1]=e.slug,i[2]=n):n=i[2];const c=Ve(n);let l;i[3]!==c||i[4]!==s?(l=async m=>{const u=s.enabledPlugins??[];if(u.includes(m))return;const f=[...u,m],a=await c.callTool({name:"COLLECTION_VIRTUAL_MCP_UPDATE",arguments:{id:s.id,data:{metadata:{enabled_plugins:f}}}});return a.structuredContent??a},i[3]=c,i[4]=s,i[5]=l):l=i[5];let p;i[6]!==e.id||i[7]!==s||i[8]!==r?(p=()=>{r.invalidateQueries({queryKey:Fe.project(e.id,s.slug)}),r.invalidateQueries({queryKey:Fe.projects(e.id)})},i[6]=e.id,i[7]=s,i[8]=r,i[9]=p):p=i[9];let d;return i[10]!==l||i[11]!==p?(d={mutationFn:l,onSuccess:p,onError:Zt},i[10]=l,i[11]=p,i[12]=d):d=i[12],mt(d)}function Zt(i){Le.error("Failed to enable plugin: "+(i instanceof Error?i.message:"Unknown error"))}function Xt(i){const e=oe.c(12),{pluginId:s,title:r,description:n,icon:c}=i,l=Jt();let p;e[0]!==l||e[1]!==s?(p=async()=>{try{await l.mutateAsync(s),Le.success("Plugin enabled!")}catch{}},e[0]=l,e[1]=s,e[2]=p):p=e[2];const d=p,o=c??null,m=l.isPending?"Enabling…":"Enable plugin";let u;e[3]!==l.isPending||e[4]!==d||e[5]!==m?(u=t.jsx(Ce,{onClick:d,disabled:l.isPending,children:m}),e[3]=l.isPending,e[4]=d,e[5]=m,e[6]=u):u=e[6];let f;return e[7]!==n||e[8]!==o||e[9]!==u||e[10]!==r?(f=t.jsx(it,{image:o,title:r,description:n,actions:u}),e[7]=n,e[8]=o,e[9]=u,e[10]=r,e[11]=f):f=e[11],f}const es={name:"WORKFLOW",displayName:"Workflow",hasCreateTool:!0,hasUpdateTool:!0,hasDeleteTool:!0};function oi(){const{project:i,org:e}=ze();if(!(i.enabledPlugins??[]).includes(Ke))return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(Xt,{pluginId:Ke,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(pt,{className:"size-8 text-muted-foreground"})})})})})});const n=Be();return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx(Yt,{connectionId:qe,org:e.slug,activeCollection:es,onItemClick:c=>n({to:"/$org/settings/workflows/$itemId",params:{org:e.slug,itemId:c.id}})})})})}export{oi as default};
1
+ import{e as oe,j as t,B as Ce,f as Be,b as ct,s as ze,r as dt,x as Le,o as ut,a as mt,K as Fe,Y as Ke,Z as pt}from"./index-b_n-uXmh.js";import{u as Ve,S as qe}from"./constants-Cj0U39_n.js";import{B as ft,g as Me}from"./constants-DE2tzNng.js";import{C as Qe}from"./collection-display-button-C2ECPv0_.js";import{C as ht}from"./collection-search-B8mdZm7u.js";import{C as gt}from"./card-DoqftRz7.js";import{I as Ge}from"./integration-icon-LX1nChXa.js";import{D as He,a as Ye,b as Je,c as O}from"./dropdown-menu-Bq-aRZ_r.js";import{c as Ze}from"./XCircle-Dp1Lqd1t.js";import{i as Xe}from"./DotsVertical-BrUfBHwt.js";import{y as et,H as Ue}from"./agent-icon-Be_PnRh0.js";import{s as tt}from"./RefreshCcw01-BzT-xyrO.js";import{s as st}from"./Trash01-f4CvhuWB.js";import{C as xt}from"./collection-table-wrapper-pDRU_Alr.js";import{E as We}from"./empty-state-Cw5GxS3i.js";import{U as jt}from"./user-ysfLNnXi.js";import{E as it}from"./empty-state-S_EjXlZP.js";import{u as Ct}from"./use-list-state-Dlljnhsv.js";import{g as bt}from"./connection-slug-eyAPH6o3.js";import{f as vt,g as yt,c as Nt,b as wt,d as St,e as Pt,a as _t,A as Dt}from"./alert-dialog-BUApN05b.js";import{a as It,c as At}from"./use-collections-CqIGWKSp.js";import{a as Tt}from"./use-connection-DuXPSqwF.js";import{s as Et}from"./Plus-Bihyskqy.js";import{a as Ot}from"./layout-BAy6nHY2.js";import{P as je}from"./index-BZhxvvXQ.js";import"./collections-CjrHbdtT.js";import"./XClose-lRlzG-cb.js";import"./ChevronDown-ByP-e484.js";import"./tooltip-B-nRvfy-.js";import"./view-mode-toggle-C5L447if.js";import"./badge-CRHmlYav.js";import"./SearchMd-vBRV-l3E.js";import"./Container-DzkLD13G.js";import"./ChevronRight-BUfZMnd9.js";import"./AlertCircle-BkX4HzbS.js";import"./Tool01-Dqyo2VjJ.js";import"./ArrowNarrowLeft-BebHkn1X.js";import"./ArrowUpRight-uszsF274.js";import"./ZapSquare-_fsDSSOX.js";import"./Users03-IortA-KV.js";import"./CheckCircle-Boq6G01L.js";import"./ChevronUp-TwiYbtUW.js";import"./Star01-ByzmPd4J.js";import"./Palette-1HvN4NnC.js";import"./LinkExternal01-gfL-Fk4b.js";import"./Lock01-CI-miN4g.js";import"./Sun-xA_CdWAJ.js";import"./Play-O7ldNAxa.js";import"./Settings02-eiwWD3s7.js";import"./Shield01-D7ml37xT.js";import"./User01-lDhxACAV.js";import"./X-BiphajNJ.js";import"./Zap-ebWdIwXf.js";import"./table-CT5HWSPV.js";import"./avatar-BBnvw18x.js";import"./use-view-mode-BjLGHFfJ.js";function $t(i,e){const s=i.properties||{};for(const n in s){const c=s[n];if(c&&c.type==="string"&&(c.format==="url"||c.format==="uri")&&e&&typeof e=="object"&&n in e&&e[n])return e[n]}const r=["image","img","avatar","icon","logo","thumbnail","cover"];for(const n of r)if(e&&typeof e=="object"&&n in e&&typeof e[n]=="string")return e[n]}function kt(i){const e=oe.c(25),{item:s,schema:r,actions:n}=i;let c;e[0]!==s||e[1]!==r?(c=$t(r,s),e[0]=s,e[1]=r,e[2]=c):c=e[2];const l=c,p=s&&typeof s=="object"&&"description"in s&&typeof s.description=="string"?s.description:void 0;let d;e[3]!==n?(d=n&&Object.keys(n).length>0,e[3]=n,e[4]=d):d=e[4];const o=d;let m;e[5]!==l||e[6]!==s.title?(m=t.jsx(Ge,{icon:l,name:s.title,size:"md",className:"shrink-0 shadow-sm"}),e[5]=l,e[6]=s.title,e[7]=m):m=e[7];let u;e[8]!==s.title?(u=t.jsx("h3",{className:"text-base font-medium text-foreground truncate",children:s.title}),e[8]=s.title,e[9]=u):u=e[9];const f=p||"No description";let a;e[10]!==f?(a=t.jsx("p",{className:"text-base text-muted-foreground line-clamp-2",children:f}),e[10]=f,e[11]=a):a=e[11];let v;e[12]!==u||e[13]!==a?(v=t.jsxs("div",{className:"flex flex-col gap-0 flex-1",children:[u,a]}),e[12]=u,e[13]=a,e[14]=v):v=e[14];let y;e[15]!==m||e[16]!==v?(y=t.jsxs("div",{className:"flex flex-col gap-4 p-6 flex-1",children:[m,v]}),e[15]=m,e[16]=v,e[17]=y):y=e[17];let b;e[18]!==n||e[19]!==o||e[20]!==s?(b=o&&t.jsx("div",{className:"absolute top-6 right-6 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity",onClick:Kt,onMouseDown:Ft,children:t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Lt,children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:zt,children:[n.open&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.open?.(s)},children:[t.jsx(tt,{size:16}),"Open"]}),n.edit&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.edit?.(s)},children:[t.jsx(et,{size:16}),"Edit"]}),n.duplicate&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.duplicate?.(s)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),n.delete&&t.jsxs(O,{variant:"destructive",onClick:g=>{g.stopPropagation(),n.delete?.(s)},children:[t.jsx(st,{size:16}),"Delete"]})]})]})}),e[18]=n,e[19]=o,e[20]=s,e[21]=b):b=e[21];let x;return e[22]!==y||e[23]!==b?(x=t.jsxs(gt,{className:"cursor-pointer transition-colors hover:bg-accent/50 h-full flex flex-col group relative",children:[y,b]}),e[22]=y,e[23]=b,e[24]=x):x=e[24],x}function zt(i){return i.stopPropagation()}function Lt(i){return i.stopPropagation()}function Ft(i){return i.stopPropagation()}function Kt(i){return i.stopPropagation()}const Mt=["icon","avatar","logo"],Re=["created_at","created_by","id"];function Ut(i){return Object.keys(i).find(e=>Mt.includes(e.toLowerCase()))}function ot(i,e){return Object.keys(i.properties||{}).filter(s=>["id","created_at","updated_at","created_by","updated_by"].includes(s)?!1:e?e.includes(s):!0).map(s=>({id:s,label:s.charAt(0).toUpperCase()+s.slice(1).replace(/_/g," ")}))}function Wt(i){const e=oe.c(30),{data:s,schema:r,viewMode:n,search:c,sortKey:l,sortDirection:p,onSort:d,actions:o,onItemClick:m,headerActions:u,emptyState:f,readOnly:a,columns:v,hideToolbar:y,sortableFields:b}=i,x=p===void 0?"asc":p,g=d===void 0?qt:d;let $;e[0]!==o?($=o===void 0?{}:o,e[0]=o,e[1]=$):$=e[1];const h=$,T=m===void 0?Vt:m,E=u===void 0?null:u,N=f===void 0?null:f,k=a===void 0?!1:a,j=v===void 0?void 0:v,z=y===void 0?!1:y,P=b===void 0?void 0:b;let D;e[2]!==j||e[3]!==r||e[4]!==P?(D=j?j.filter(Bt).filter(A=>!P||P.includes(A.id)).map(Rt):ot(r,P),e[2]=j,e[3]=r,e[4]=P,e[5]=D):D=e[5];const w=D;let S;e[6]!==E||e[7]!==z||e[8]!==g||e[9]!==x||e[10]!==l||e[11]!==w?(S=!z&&t.jsx("div",{className:"shrink-0 w-full border-b border-border h-12",children:t.jsxs("div",{className:"flex items-center gap-3 h-12 px-4",children:[t.jsx("div",{className:"flex items-center gap-2 flex-1",children:E}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(Qe,{sortKey:l,sortDirection:x,onSort:g,sortOptions:w})})]})}),e[6]=E,e[7]=z,e[8]=g,e[9]=x,e[10]=l,e[11]=w,e[12]=S):S=e[12];let _;e[13]!==h||e[14]!==j||e[15]!==s||e[16]!==N||e[17]!==T||e[18]!==g||e[19]!==k||e[20]!==r||e[21]!==c||e[22]!==x||e[23]!==l||e[24]!==P||e[25]!==n?(_=n==="cards"?t.jsx("div",{className:"flex-1 overflow-auto p-5",children:s.length===0?t.jsx("div",{className:"flex items-center justify-center h-full",children:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}):t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4",children:s.map(A=>t.jsx("div",{onClick:()=>T?.(A),className:"cursor-pointer h-full",children:t.jsx(kt,{item:A,schema:r,readOnly:k,actions:h})},A.id))})}):t.jsx(xt,{columns:Ht(j,r,P,h),data:s,sortKey:l,sortDirection:x,onSort:g,onRowClick:T,emptyState:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}),e[13]=h,e[14]=j,e[15]=s,e[16]=N,e[17]=T,e[18]=g,e[19]=k,e[20]=r,e[21]=c,e[22]=x,e[23]=l,e[24]=P,e[25]=n,e[26]=_):_=e[26];let I;return e[27]!==S||e[28]!==_?(I=t.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[S,_]}),e[27]=S,e[28]=_,e[29]=I):I=e[29],I}function Rt(i){return{id:i.id,label:typeof i.header=="string"?i.header:i.id}}function Bt(i){return i.sortable!==!1}function Vt(){}function qt(){}function Qt(i){return{id:"actions",header:"",render:e=>t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:s=>s.stopPropagation(),children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:s=>s.stopPropagation(),children:[i.open&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.open?.(e)},children:[t.jsx(tt,{size:16}),"Open"]}),i.edit&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.edit?.(e)},children:[t.jsx(et,{size:16}),"Edit"]}),i.duplicate&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.duplicate?.(e)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),i.delete&&t.jsxs(O,{variant:"destructive",onClick:s=>{s.stopPropagation(),i.delete?.(e)},children:[t.jsx(st,{size:16}),"Delete"]})]})]}),cellClassName:"w-[60px]",sortable:!1}}function nt(i){const e=i.type;return Array.isArray(e)?e.every(s=>nt({type:s})):e==="string"||e==="number"||e==="integer"||e==="boolean"||e==="null"}function Gt(i,e){const s=i.properties||{},r=Object.keys(s).filter(o=>{const m=s[o];return m&&nt(m)}),n=Ut(s),c=[],l=new Set;n&&r.includes(n)&&(c.push(n),l.add(n));const p=["title","description","updated_at","updated_by"];for(const o of p)r.includes(o)&&!l.has(o)&&(c.push(o),l.add(o));const d=r.filter(o=>!l.has(o)&&!Re.includes(o)).sort((o,m)=>o.localeCompare(m));for(const o of d)c.push(o),l.add(o);for(const o of Re)r.includes(o)&&!l.has(o)&&(c.push(o),l.add(o));return c.map(o=>{const m=s[o],u=e?e.includes(o):!["id"].includes(o);return o===n?{id:o,header:"",render:f=>{const a=f[o];return t.jsx(Ge,{icon:a,name:f.title,size:"sm",className:"shrink-0 shadow-sm"})},sortable:!1,cellClassName:"w-16 shrink-0",wrap:!0}:o==="description"?{id:o,header:"Description",render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-[50ch]",children:String(a)})},sortable:u,cellClassName:"max-w-[50ch]"}:o==="created_by"||o==="updated_by"?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx(jt,{id:String(a),size:"xs"}):"—"},sortable:u,cellClassName:"max-w-[250px]"}:m?.format==="date-time"||o.endsWith("_at")?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx("span",{className:"block truncate max-w-full",children:new Date(a).toLocaleDateString()}):"—"},sortable:u,cellClassName:"max-w-[200px]"}:{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-full",children:String(a)})},sortable:u,cellClassName:"max-w-[200px]"}})}function Ht(i,e,s,r){const n=i||Gt(e,s);return n.some(p=>p.id==="actions")?n:Object.keys(r).length>0?[...n,Qt(r)]:n}function Yt(i){const e=oe.c(119),{connectionId:s,org:r,activeCollection:n,onItemClick:c}=i,l=n.name,p=n.schema??ft,d=n.hasCreateTool,o=n.hasUpdateTool,m=n.hasDeleteTool,u=Be(),{data:f}=ct.useSession(),a=f?.user?.id||"unknown",v=Tt(s);let y;e[0]!==v||e[1]!==s?(y=v?bt(v):s,e[0]=v,e[1]=s,e[2]=y):y=e[2];const b=y,{org:x}=ze();let g;e[3]!==s||e[4]!==x.id||e[5]!==x.slug?(g={connectionId:s,orgId:x.id,orgSlug:x.slug},e[3]=s,e[4]=x.id,e[5]=x.slug,e[6]=g):g=e[6];const $=Ve(g),h=It(s,l,$),T=`${s}-${l}`;let E;e[7]!==r||e[8]!==T?(E={namespace:r,resource:T,defaultSortKey:"updated_at"},e[7]=r,e[8]=T,e[9]=E):E=e[9];const{search:N,searchTerm:k,setSearch:j,viewMode:z,setViewMode:P,sortKey:D,sortDirection:w,handleSort:S}=Ct(E);let _;e[10]!==k||e[11]!==w||e[12]!==D?(_={searchTerm:k,sortKey:D,sortDirection:w},e[10]=k,e[11]=w,e[12]=D,e[13]=_):_=e[13];const I=At(s,l,$,_),A=!d&&!o&&!m;let ne;e[14]!==b||e[15]!==l||e[16]!==u||e[17]!==c||e[18]!==r?(ne=C=>{if(c){c(C);return}u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:r,appSlug:b,collectionName:l,itemId:C.id}})},e[14]=b,e[15]=l,e[16]=u,e[17]=c,e[18]=r,e[19]=ne):ne=e[19];const L=ne;let le;e[20]!==h.create||e[21]!==a?(le=async C=>{const xe=new Date().toISOString();await h.create.mutateAsync({...C,id:Me("conn"),title:`${C.title} (Copy)`,created_at:xe,updated_at:xe,created_by:a,updated_by:a})},e[20]=h.create,e[21]=a,e[22]=le):le=e[22];const be=le,[F,ve]=dt.useState(null);let re;e[23]===Symbol.for("react.memo_cache_sentinel")?(re=C=>{ve(C)},e[23]=re):re=e[23];const lt=re;let K;e[24]!==L||e[25]!==o?(K=o&&{edit:L},e[24]=L,e[25]=o,e[26]=K):K=e[26];let M;e[27]!==be||e[28]!==d?(M=d&&{duplicate:be},e[27]=be,e[28]=d,e[29]=M):M=e[29];let U;e[30]!==m?(U=m&&{delete:lt},e[30]=m,e[31]=U):U=e[31];let ae;e[32]!==M||e[33]!==U||e[34]!==K?(ae={...K,...M,...U},e[32]=M,e[33]=U,e[34]=K,e[35]=ae):ae=e[35];const ye=ae;let ce;e[36]!==h.delete||e[37]!==F?(ce=async()=>{F&&(await h.delete.mutateAsync(F.id),ve(null))},e[36]=h.delete,e[37]=F,e[38]=ce):ce=e[38];const Ne=ce;let de;e[39]!==h.create||e[40]!==b||e[41]!==l||e[42]!==d||e[43]!==u||e[44]!==r||e[45]!==a?(de=async()=>{if(!d){Le.error("Create operation is not available for this collection");return}const C=new Date().toISOString(),xe={id:Me("conn"),title:"New Item",description:"A brief description of the item",created_at:C,updated_at:C,created_by:a,updated_by:a};try{const ke=await h.create.mutateAsync(xe);u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:r,appSlug:b,collectionName:l,itemId:ke.id}})}catch(ke){console.error("Failed to create item:",ke)}},e[39]=h.create,e[40]=b,e[41]=l,e[42]=d,e[43]=u,e[44]=r,e[45]=a,e[46]=de):de=e[46];const we=de;let ue;e[47]!==p?(ue=ot(p),e[47]=p,e[48]=ue):ue=e[48];const Se=ue,rt=(I?.length??0)>0,at=d&&!rt&&!N;let me;e[49]!==h.create||e[50]!==we||e[51]!==d?(me=d?t.jsxs(Ce,{onClick:we,size:"sm",disabled:h.create.isPending,className:"h-7",children:[t.jsx(Et,{className:"mr-2 h-4 w-4"}),h.create.isPending?"Creating...":"Create"]}):null,e[49]=h.create,e[50]=we,e[51]=d,e[52]=me):me=e[52];const pe=me,Pe=D;let W;e[53]!==S||e[54]!==w||e[55]!==Se||e[56]!==Pe?(W=t.jsx(Ot,{children:t.jsx(Qe,{sortKey:Pe,sortDirection:w,onSort:S,sortOptions:Se})}),e[53]=S,e[54]=w,e[55]=Se,e[56]=Pe,e[57]=W):W=e[57];const _e=`Search ${l}...`;let R;e[58]!==j?(R=C=>{C.key==="Escape"&&(j(""),C.target.blur())},e[58]=j,e[59]=R):R=e[59];let B;e[60]!==N||e[61]!==j||e[62]!==_e||e[63]!==R?(B=t.jsx("div",{className:"flex-1",children:t.jsx(ht,{value:N,onChange:j,placeholder:_e,onKeyDown:R})}),e[60]=N,e[61]=j,e[62]=_e,e[63]=R,e[64]=B):B=e[64];let V;e[65]!==pe||e[66]!==d?(V=d&&t.jsx("div",{className:"pr-3",children:pe}),e[65]=pe,e[66]=d,e[67]=V):V=e[67];let q;e[68]!==B||e[69]!==V?(q=t.jsxs("div",{className:"flex items-center gap-2",children:[B,V]}),e[68]=B,e[69]=V,e[70]=q):q=e[70];let Q;e[71]!==I?(Q=I??[],e[71]=I,e[72]=Q):Q=e[72];const De=D;let G;e[73]!==L?(G=C=>L(C),e[73]=L,e[74]=G):G=e[74];const Ie="No items found",Ae=N?"Try adjusting your search terms":"This collection doesn't have any items yet.",Te=at?pe:void 0;let H;e[75]!==Ie||e[76]!==Ae||e[77]!==Te?(H=t.jsx(it,{image:null,title:Ie,description:Ae,actions:Te}),e[75]=Ie,e[76]=Ae,e[77]=Te,e[78]=H):H=e[78];let Y;e[79]!==S||e[80]!==A||e[81]!==ye||e[82]!==p||e[83]!==N||e[84]!==j||e[85]!==P||e[86]!==w||e[87]!==Q||e[88]!==De||e[89]!==G||e[90]!==H||e[91]!==z?(Y=t.jsx("div",{className:"flex-1 overflow-auto",children:t.jsx(Wt,{hideToolbar:!0,data:Q,schema:p,viewMode:z,onViewModeChange:P,search:N,onSearchChange:j,sortKey:De,sortDirection:w,onSort:S,actions:ye,onItemClick:G,readOnly:A,emptyState:H})}),e[79]=S,e[80]=A,e[81]=ye,e[82]=p,e[83]=N,e[84]=j,e[85]=P,e[86]=w,e[87]=Q,e[88]=De,e[89]=G,e[90]=H,e[91]=z,e[92]=Y):Y=e[92];let J;e[93]!==q||e[94]!==Y?(J=t.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[q,Y]}),e[93]=q,e[94]=Y,e[95]=J):J=e[95];const Ee=!!F;let fe;e[96]===Symbol.for("react.memo_cache_sentinel")?(fe=C=>{C||ve(null)},e[96]=fe):fe=e[96];let he;e[97]===Symbol.for("react.memo_cache_sentinel")?(he=t.jsx(Nt,{children:"Delete item?"}),e[97]=he):he=e[97];const Oe=F?.title;let Z;e[98]!==Oe?(Z=t.jsxs(wt,{children:[he,t.jsxs(St,{children:['Are you sure you want to delete "',Oe,'"? This action cannot be undone.']})]}),e[98]=Oe,e[99]=Z):Z=e[99];let X;e[100]!==h.delete.isPending?(X=t.jsx(vt,{disabled:h.delete.isPending,children:"Cancel"}),e[100]=h.delete.isPending,e[101]=X):X=e[101];const $e=h.delete.isPending?"Deleting...":"Delete";let ee;e[102]!==h.delete.isPending||e[103]!==Ne||e[104]!==$e?(ee=t.jsx(yt,{onClick:Ne,disabled:h.delete.isPending,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:$e}),e[102]=h.delete.isPending,e[103]=Ne,e[104]=$e,e[105]=ee):ee=e[105];let te;e[106]!==X||e[107]!==ee?(te=t.jsxs(Pt,{children:[X,ee]}),e[106]=X,e[107]=ee,e[108]=te):te=e[108];let se;e[109]!==Z||e[110]!==te?(se=t.jsxs(_t,{children:[Z,te]}),e[109]=Z,e[110]=te,e[111]=se):se=e[111];let ie;e[112]!==Ee||e[113]!==se?(ie=t.jsx(Dt,{open:Ee,onOpenChange:fe,children:se}),e[112]=Ee,e[113]=se,e[114]=ie):ie=e[114];let ge;return e[115]!==W||e[116]!==J||e[117]!==ie?(ge=t.jsxs(t.Fragment,{children:[W,J,ie]}),e[115]=W,e[116]=J,e[117]=ie,e[118]=ge):ge=e[118],ge}function Jt(){const i=oe.c(13),{org:e,project:s}=ze(),r=ut();let n;i[0]!==e.id||i[1]!==e.slug?(n={connectionId:qe,orgId:e.id,orgSlug:e.slug},i[0]=e.id,i[1]=e.slug,i[2]=n):n=i[2];const c=Ve(n);let l;i[3]!==c||i[4]!==s?(l=async m=>{const u=s.enabledPlugins??[];if(u.includes(m))return;const f=[...u,m],a=await c.callTool({name:"COLLECTION_VIRTUAL_MCP_UPDATE",arguments:{id:s.id,data:{metadata:{enabled_plugins:f}}}});return a.structuredContent??a},i[3]=c,i[4]=s,i[5]=l):l=i[5];let p;i[6]!==e.id||i[7]!==s||i[8]!==r?(p=()=>{r.invalidateQueries({queryKey:Fe.project(e.id,s.slug)}),r.invalidateQueries({queryKey:Fe.projects(e.id)})},i[6]=e.id,i[7]=s,i[8]=r,i[9]=p):p=i[9];let d;return i[10]!==l||i[11]!==p?(d={mutationFn:l,onSuccess:p,onError:Zt},i[10]=l,i[11]=p,i[12]=d):d=i[12],mt(d)}function Zt(i){Le.error("Failed to enable plugin: "+(i instanceof Error?i.message:"Unknown error"))}function Xt(i){const e=oe.c(12),{pluginId:s,title:r,description:n,icon:c}=i,l=Jt();let p;e[0]!==l||e[1]!==s?(p=async()=>{try{await l.mutateAsync(s),Le.success("Plugin enabled!")}catch{}},e[0]=l,e[1]=s,e[2]=p):p=e[2];const d=p,o=c??null,m=l.isPending?"Enabling…":"Enable plugin";let u;e[3]!==l.isPending||e[4]!==d||e[5]!==m?(u=t.jsx(Ce,{onClick:d,disabled:l.isPending,children:m}),e[3]=l.isPending,e[4]=d,e[5]=m,e[6]=u):u=e[6];let f;return e[7]!==n||e[8]!==o||e[9]!==u||e[10]!==r?(f=t.jsx(it,{image:o,title:r,description:n,actions:u}),e[7]=n,e[8]=o,e[9]=u,e[10]=r,e[11]=f):f=e[11],f}const es={name:"WORKFLOW",displayName:"Workflow",hasCreateTool:!0,hasUpdateTool:!0,hasDeleteTool:!0};function oi(){const{project:i,org:e}=ze();if(!(i.enabledPlugins??[]).includes(Ke))return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(Xt,{pluginId:Ke,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(pt,{className:"size-8 text-muted-foreground"})})})})})});const n=Be();return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx(Yt,{connectionId:qe,org:e.slug,activeCollection:es,onItemClick:c=>n({to:"/$org/settings/workflows/$itemId",params:{org:e.slug,itemId:c.id}})})})})}export{oi as default};
@@ -0,0 +1 @@
1
+ import{e as s,g as l,j as o,l as a,E as n,r as c}from"./index-b_n-uXmh.js";import{a as f}from"./index-C--avMTn.js";import"./index-DCOURowK.js";import"./constants-Cj0U39_n.js";import"./collections-CjrHbdtT.js";import"./index-ClNUcJ8s.js";import"./use-virtual-mcp-Qy5dDA1Q.js";import"./use-collections-CqIGWKSp.js";import"./monaco-editor-BY6pRUNM.js";import"./index-pdnGjAa-.js";import"./accordion-D3c87Mh0.js";import"./agent-icon-Be_PnRh0.js";import"./AlertCircle-BkX4HzbS.js";import"./Tool01-Dqyo2VjJ.js";import"./XClose-lRlzG-cb.js";import"./RefreshCcw01-BzT-xyrO.js";import"./ArrowNarrowLeft-BebHkn1X.js";import"./XCircle-Dp1Lqd1t.js";import"./ArrowUpRight-uszsF274.js";import"./ZapSquare-_fsDSSOX.js";import"./Users03-IortA-KV.js";import"./CheckCircle-Boq6G01L.js";import"./ChevronDown-ByP-e484.js";import"./ChevronRight-BUfZMnd9.js";import"./ChevronUp-TwiYbtUW.js";import"./DotsVertical-BrUfBHwt.js";import"./Container-DzkLD13G.js";import"./Star01-ByzmPd4J.js";import"./Palette-1HvN4NnC.js";import"./SearchMd-vBRV-l3E.js";import"./index-BZhxvvXQ.js";import"./tooltip-B-nRvfy-.js";import"./X-BiphajNJ.js";import"./LinkExternal01-gfL-Fk4b.js";import"./Lock01-CI-miN4g.js";import"./Sun-xA_CdWAJ.js";import"./Play-O7ldNAxa.js";import"./Plus-Bihyskqy.js";import"./Settings02-eiwWD3s7.js";import"./Shield01-D7ml37xT.js";import"./Trash01-f4CvhuWB.js";import"./User01-lDhxACAV.js";import"./Zap-ebWdIwXf.js";import"./badge-CRHmlYav.js";import"./select-CaDZpVbI.js";import"./view-mode-toggle-C5L447if.js";import"./layout-BAy6nHY2.js";import"./use-connection-DuXPSqwF.js";import"./use-mcp-tools-BkDSNv3W.js";import"./dialog-BdVY7mqq.js";import"./index-ZmvI6xf3.js";import"./dropdown-menu-Bq-aRZ_r.js";import"./integration-icon-LX1nChXa.js";import"./scroll-area-18YOEnqD.js";import"./index-y9YjpvN-.js";import"./empty-state-Cw5GxS3i.js";import"./create-sse-subscription-CxkOgzKf.js";import"./input-C80VzPpQ.js";function ht(){const t=s.c(4);let r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={from:"/shell/$org/settings/workflows/$itemId"},t[0]=r):r=t[0];const{itemId:e}=l(r);let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx("div",{className:"flex h-full items-center justify-center",children:o.jsx(a,{size:32,className:"animate-spin text-muted-foreground"})}),t[1]=i):i=t[1];const p=decodeURIComponent(e);let m;return t[2]!==p?(m=o.jsx(n,{children:o.jsx(c.Suspense,{fallback:i,children:o.jsx(f,{itemId:p})})}),t[2]=p,t[3]=m):m=t[3],m}export{ht as default};
@@ -27,7 +27,7 @@
27
27
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
28
28
  <link rel="manifest" href="/manifest.webmanifest" />
29
29
  <meta name="theme-color" content="#D0EC1A" />
30
- <script type="module" crossorigin src="/assets/index-BGvMfUr2.js"></script>
30
+ <script type="module" crossorigin src="/assets/index-b_n-uXmh.js"></script>
31
31
  <link rel="stylesheet" crossorigin href="/assets/index-B4J1yAvl.css">
32
32
  </head>
33
33
  <body>
@@ -1623,7 +1623,7 @@ AS SELECT
1623
1623
  FROM monitoring_metrics
1624
1624
  GROUP BY organization_id, name, bucket, connection_id, tool_name, status
1625
1625
  `}),console.log("[clickhouse-schema] monitoring_metrics_rollup_1m_mv view ready")}finally{await G.close()}}catch(Y){console.error("[clickhouse-schema] Failed to create rollup DDL (queries will fall back to raw table):",Y)}}async function qA1(X){let Y={...process.env},G=S$1(X,Y),Q=G.settings.encryptionKey;console.log(`[settings] ENCRYPTION_KEY = ${JSON.stringify(Q)} (${Q.length} chars)`);let{ensureServices:J}=await Promise.resolve().then(() => (T$1(),A$1)),{outputs:W,services:Z}=await J({home:G.settings.dataDir,externalDatabaseUrl:G.externalDatabaseUrl,externalNatsUrl:G.externalNatsUrl});if(!G.skipMigrations){let{migrateBetterAuth:K}=await Promise.resolve().then(() => (w30(),gx4));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (QU(),hx4)),{migrateToLatest:U}=await Promise.resolve().then(() => (ir4(),cr4)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => ps4);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return Xt1($),{settings:$,services:Z.map((K)=>({name:K.name==="PostgreSQL"?"Postgres":K.name,port:K.port})),managedServiceNames:Z.filter((K)=>K.owner==="managed").map((K)=>K.name)}}var iB0=D(()=>{en1();l9()});var IA1={};j0(IA1,{updateService:()=>rt,toggleViewMode:()=>nB0,toggleVibeState:()=>aB0,toggleLogFlow:()=>tB0,subscribeCliState:()=>qX1,setVibe:()=>Pp5,setTuiConsoleIntercepted:()=>AA1,setServerUrl:()=>TX1,setMigrationsDone:()=>AX1,setEnv:()=>IX1,setDevMode:()=>Lp5,setDataDir:()=>Ep5,isTuiConsoleIntercepted:()=>TA1,getCliState:()=>PX1,addLogEntry:()=>$z});function qU(){for(let X of pB0)X()}function PX1(){return X7}function qX1(X){return pB0.add(X),()=>pB0.delete(X)}function rt(X){X7={...X7,services:X7.services.map((Y)=>Y.name===X.name?X:Y)},qU()}function AX1(){X7={...X7,migrationsStatus:"done"},qU()}function TX1(X){X7={...X7,serverUrl:X},qU()}function IX1(X){X7={...X7,env:X},qU()}function $z(X){let Y=[...X7.logs,X];X7={...X7,logs:Y.length>500?Y.slice(-500):Y},qU()}function Lp5(){X7={...X7,services:[...X7.services,{name:"Vite",status:"pending",port:0}]},qU()}function nB0(){X7={...X7,viewMode:X7.viewMode==="requests"?"config":"requests"},qU()}function tB0(){X7={...X7,logFlow:!X7.logFlow},qU()}function Ep5(X){X7={...X7,dataDir:X},qU()}function Pp5(X){X7={...X7,vibe:X},qU()}function aB0(){X7={...X7,vibe:!X7.vibe},qU()}function AA1(X){ns4=X}function TA1(){return ns4}var X7,pB0,ns4=!1;var Kz=D(()=>{X7={services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,env:null,logs:[],viewMode:"requests",logFlow:!1,vibe:!1,dataDir:null},pB0=new Set});import{createServer as ts4}from"net";function qp5(X){return new Promise((Y)=>{let G=ts4();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function VA1(X){if(await qp5(X))return X;let Y=await new Promise((G,Q)=>{let J=ts4();J.once("error",Q),J.listen(0,"0.0.0.0",()=>{let W=J.address(),Z=typeof W==="object"&&W?W.port:0;J.close(()=>G(Z))})});return console.warn(`Port ${X} is in use, using port ${Y} instead.`),Y}var rB0=()=>{};var oB0={};j0(oB0,{startDevServer:()=>Tp5});import{join as Ap5}from"path";function as4(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function rs4(X){let Y=X.getReader(),G=new TextDecoder,Q="";function J(){let W=Q.split(`
1626
- `);Q=W.pop()??"";for(let Z of W){let $=as4(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;$z({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=as4(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)$z({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Tp5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await VA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await qA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)rt({name:z.name,status:"ready",port:z.port});IX1(W),AX1();let K=Ap5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)rs4(U.stdout),rs4(U.stderr);let B=G||`http://localhost:${W.port}`;TX1(B),rt({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (T$1(),A$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var sB0=D(()=>{iB0();Kz();rB0()});import{Box as eB0,Text as XN0}from"ink";import{jsx as ss4,jsxs as jA1}from"react/jsx-runtime";function os4(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function jp5(X,Y){if(Ip5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Vp5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>os4(W)).join(", "),color:"cyan"}}let Q=os4(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function Mp5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function es4({env:X}){let Y=Mp5(X);return ss4(eB0,{flexDirection:"column",children:Y.map((G)=>jA1(eB0,{flexDirection:"column",marginTop:1,children:[jA1(XN0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=jp5(Q,J);return jA1(eB0,{children:[jA1(XN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),ss4(XN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Ip5,Vp5;var Xe4=D(()=>{Ip5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Vp5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var YN0;var Ye4=D(()=>{YN0={name:"decocms",version:"2.302.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as AU,Text as RX}from"ink";import{Spinner as Sp5}from"@inkjs/ui";import{useSyncExternalStore as Ge4}from"react";import{jsx as AY,jsxs as sQ}from"react/jsx-runtime";function fp5(X,Y){if(!X||!_p5.has(X))return X;let G=GN0[Y]??GN0[GN0.length-1];return X==="#875f00"?G[0]:G[1]}function Qe4({status:X}){if(X==="pending")return AY(Sp5,{label:""});return AY(RX,{color:"green",children:"\u2713"})}function Je4({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=Ge4(Vl0,Il0),Z=Ge4(Cl0,kl0);return sQ(AU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(AU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,vp5-U);return sQ(AU,{flexDirection:"row",children:[$.map((N,z)=>{let O=fp5(N.color,K);return O?AY(RX,{color:O,children:N.text},z):AY(RX,{children:N.text},z)}),AY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?AY(RX,{color:N.color,children:N.char},z):AY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",YN0.version]})]}):sQ(AU,{flexDirection:"column",marginTop:1,children:[kp5.map(($,K)=>AY(RX,{color:Cp5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",YN0.version]})]}),AY(AU,{marginBottom:1,children:AY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),AY(AU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(AU,{gap:2,children:[X.map(($)=>sQ(AU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),AY(Qe4,{status:$.status})]},$.name)),sQ(AU,{gap:1,children:[AY(RX,{children:"Migrations"}),AY(Qe4,{status:Y})]})]}),AY(AU,{children:Q?sQ(RX,{children:["Open in browser: ",AY(RX,{color:"cyan",children:Q})]}):AY(RX,{dimColor:!0,children:"Starting..."})}),sQ(AU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var kp5,Cp5,GN0,vp5=30,_p5;var Ze4=D(()=>{Ye4();mn1();tn1();kp5=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],Cp5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],GN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],_p5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as bp5}from"react";function yp5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==MA1.rows||Y!==MA1.columns)MA1={rows:X,columns:Y};return MA1}function xp5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function We4(){return bp5(xp5,yp5)}var MA1;var $e4=D(()=>{MA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as hp5,Text as VX1}from"ink";import{useSyncExternalStore as gp5}from"react";import{jsx as QN0,jsxs as JN0}from"react/jsx-runtime";function up5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function Ke4({logs:X,headerHeight:Y}){let{rows:G}=We4(),{logFlow:Q}=gp5(qX1,PX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return QN0(hp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return QN0(VX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return JN0(VX1,{children:[JN0(VX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),QN0(VX1,{color:up5(Z.status),children:Z.status}),JN0(VX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var He4=D(()=>{Kz();$e4()});var ZN0={};j0(ZN0,{App:()=>np5});import{Box as lp5,Text as mp5,useInput as dp5}from"ink";import{useSyncExternalStore as cp5}from"react";import{jsx as RA1,jsxs as tp5}from"react/jsx-runtime";function np5({home:X}){let Y=cp5(qX1,PX1);return dp5((G)=>{if(G==="k"||G==="K")nB0();if(G==="l"||G==="L")tB0();if((G==="v"||G==="V")&&Y.dataDir)sn1(Y.dataDir),aB0();if((G==="n"||G==="N")&&Y.vibe)on1()}),tp5(lp5,{flexDirection:"column",children:[RA1(Je4,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?RA1(es4,{env:Y.env}):RA1(mp5,{dimColor:!0,children:"Loading configuration..."}):RA1(Ke4,{logs:Y.logs,headerHeight:Y.vibe?pp5:ip5})]})}var ip5=15,pp5=19;var WN0=D(()=>{Xe4();Ze4();He4();Kz();Sd()});function Fe4(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,STUDIO_SANDBOX_SENTINEL_TOKEN:process.env.STUDIO_SANDBOX_SENTINEL_TOKEN,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}var vj=k((Xn5)=>{Xn5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Xn5.HttpAuthLocation||(Xn5.HttpAuthLocation={}));Xn5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Xn5.HttpApiKeyAuthLocation||(Xn5.HttpApiKeyAuthLocation={}));Xn5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(Xn5.EndpointURLScheme||(Xn5.EndpointURLScheme={}));Xn5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(Xn5.AlgorithmId||(Xn5.AlgorithmId={}));var ap5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>Xn5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>Xn5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},rp5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},op5=(X)=>{return ap5(X)},sp5=(X)=>{return rp5(X)};Xn5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(Xn5.FieldPosition||(Xn5.FieldPosition={}));var ep5="__smithy_context";Xn5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(Xn5.IniSectionType||(Xn5.IniSectionType={}));Xn5.RequestHandlerProtocol=void 0;(function(X){X.HTTP_0_9="http/0.9",X.HTTP_1_0="http/1.0",X.TDS_8_0="tds/8.0"})(Xn5.RequestHandlerProtocol||(Xn5.RequestHandlerProtocol={}));Xn5.SMITHY_CONTEXT_KEY=ep5;Xn5.getDefaultClientConfiguration=op5;Xn5.resolveDefaultRuntimeConfig=sp5});var u7=k((Hn5)=>{var Jn5=vj(),Zn5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},Wn5=(X)=>{return{httpHandler:X.httpHandler()}};class Ue4{name;kind;values;constructor({name:X,kind:Y=Jn5.FieldPosition.HEADER,values:G=[]}){this.name=X,this.kind=Y,this.values=G}add(X){this.values.push(X)}set(X){this.values=X}remove(X){this.values=this.values.filter((Y)=>Y!==X)}toString(){return this.values.map((X)=>X.includes(",")||X.includes(" ")?`"${X}"`:X).join(", ")}get(){return this.values}}class Be4{entries={};encoding;constructor({fields:X=[],encoding:Y="utf-8"}){X.forEach(this.setField.bind(this)),this.encoding=Y}setField(X){this.entries[X.name.toLowerCase()]=X}getField(X){return this.entries[X.toLowerCase()]}removeField(X){delete this.entries[X.toLowerCase()]}getByType(X){return Object.values(this.entries).filter((Y)=>Y.kind===X)}}class SA1{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(X){this.method=X.method||"GET",this.hostname=X.hostname||"localhost",this.port=X.port,this.query=X.query||{},this.headers=X.headers||{},this.body=X.body,this.protocol=X.protocol?X.protocol.slice(-1)!==":"?`${X.protocol}:`:X.protocol:"https:",this.path=X.path?X.path.charAt(0)!=="/"?`/${X.path}`:X.path:"/",this.username=X.username,this.password=X.password,this.fragment=X.fragment}static clone(X){let Y=new SA1({...X,headers:{...X.headers}});if(Y.query)Y.query=$n5(Y.query);return Y}static isInstance(X){if(!X)return!1;let Y=X;return"method"in Y&&"protocol"in Y&&"hostname"in Y&&"path"in Y&&typeof Y.query==="object"&&typeof Y.headers==="object"}clone(){return SA1.clone(this)}}function $n5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class Ne4{statusCode;reason;headers;body;constructor(X){this.statusCode=X.statusCode,this.reason=X.reason,this.headers=X.headers||{},this.body=X.body}static isInstance(X){if(!X)return!1;let Y=X;return typeof Y.statusCode==="number"&&typeof Y.headers==="object"}}function Kn5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}Hn5.Field=Ue4;Hn5.Fields=Be4;Hn5.HttpRequest=SA1;Hn5.HttpResponse=Ne4;Hn5.getHttpHandlerExtensionConfiguration=Zn5;Hn5.isValidHostname=Kn5;Hn5.resolveHttpHandlerRuntimeConfig=Wn5});function wn5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&ze4.HttpRequest.isInstance(Q)&&Q.body&&X.runtime==="node"&&X.requestHandler?.constructor?.name!=="FetchHttpHandler"){let J=!0;if(typeof X.expectContinueHeader==="number")try{J=(Number(Q.headers?.["content-length"])??X.bodyLengthChecker?.(Q.body)??1/0)>=X.expectContinueHeader}catch(W){}else J=!!X.expectContinueHeader;if(J)Q.headers.Expect="100-continue"}return Y({...G,request:Q})}}var ze4,Ln5,Oe4=(X)=>({applyToStack:(Y)=>{Y.add(wn5(X),Ln5)}});var De4=D(()=>{ze4=Y1(u7(),1);Ln5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,kA1,_j,CA1,E9,we4,MX1;var LH=D(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},kA1=wH.WHEN_SUPPORTED,_j={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},CA1=wH.WHEN_SUPPORTED;(function(X){X.MD5="MD5",X.CRC32="CRC32",X.CRC32C="CRC32C",X.CRC64NVME="CRC64NVME",X.SHA1="SHA1",X.SHA256="SHA256"})(E9||(E9={}));(function(X){X.HEADER="header",X.TRAILER="trailer"})(we4||(we4={}));MX1=E9.CRC32});var Rq,ot=(X,Y,G,Q)=>{if(!(Y in X))return;let J=X[Y].toUpperCase();if(!Object.values(G).includes(J))throw TypeError(`Cannot load ${Q} '${Y}'. Expected one of ${Object.values(G)}, got '${X[Y]}'.`);return J};var NN0=D(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(Rq||(Rq={}))});var En5="AWS_REQUEST_CHECKSUM_CALCULATION",Pn5="request_checksum_calculation",Le4;var Ee4=D(()=>{LH();NN0();Le4={environmentVariableSelector:(X)=>ot(X,En5,wH,Rq.ENV),configFileSelector:(X)=>ot(X,Pn5,wH,Rq.CONFIG),default:kA1}});var qn5="AWS_RESPONSE_CHECKSUM_VALIDATION",An5="response_checksum_validation",Pe4;var qe4=D(()=>{LH();NN0();Pe4={environmentVariableSelector:(X)=>ot(X,qn5,_j,Rq.ENV),configFileSelector:(X)=>ot(X,An5,_j,Rq.CONFIG),default:CA1}});var ON0=k((vn5)=>{var Tn5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],In5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Vn5=["TimeoutError","RequestTimeout","RequestTimeoutException"],jn5=[500,502,503,504],Mn5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Rn5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],Ae4=(X)=>X?.$retryable!==void 0,Sn5=(X)=>Tn5.includes(X.name),Te4=(X)=>X.$metadata?.clockSkewCorrected,Ie4=(X)=>{let Y=new Set(["Failed to fetch","NetworkError when attempting to fetch resource","The Internet connection appears to be offline","Load failed","Network request failed"]);if(!(X&&X instanceof TypeError))return!1;return Y.has(X.message)},kn5=(X)=>X.$metadata?.httpStatusCode===429||In5.includes(X.name)||X.$retryable?.throttling==!0,zN0=(X,Y=0)=>Ae4(X)||Te4(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Vn5.includes(X.name)||Mn5.includes(X?.code||"")||Rn5.includes(X?.code||"")||jn5.includes(X.$metadata?.httpStatusCode||0)||Ie4(X)||Ve4(X)||X.cause!==void 0&&Y<=10&&zN0(X.cause,Y+1),Cn5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!zN0(X))return!0;return!1}return!1};function Ve4(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}vn5.isBrowserNetworkError=Ie4;vn5.isClockSkewCorrectedError=Te4;vn5.isClockSkewError=Sn5;vn5.isNodeJsHttp2TransientError=Ve4;vn5.isRetryableByTrait=Ae4;vn5.isServerError=Cn5;vn5.isThrottlingError=kn5;vn5.isTransientError=zN0});var Dw=k((an5)=>{var ln5=ON0();an5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(an5.RETRY_MODES||(an5.RETRY_MODES={}));var _A1=3,mn5=an5.RETRY_MODES.STANDARD;class fA1{static setTimeoutFn=setTimeout;beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(X){this.beta=X?.beta??0.7,this.minCapacity=X?.minCapacity??1,this.minFillRate=X?.minFillRate??0.5,this.scaleConstant=X?.scaleConstant??0.4,this.smooth=X?.smooth??0.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(X){let Y;this.updateMeasuredRate();let G=X;if(G?.errorType==="THROTTLING"||ln5.isThrottlingError(G?.error??X)){let W=!this.enabled?this.measuredTxRate:Math.min(this.measuredTxRate,this.fillRate);this.lastMaxRate=W,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),Y=this.cubicThrottle(W),this.enableTokenBucket()}else this.calculateTimeWindow(),Y=this.cubicSuccess(this.getCurrentTimeInSeconds());let J=Math.min(Y,2*this.measuredTxRate);this.updateTokenBucketRate(J)}getCurrentTimeInSeconds(){return Date.now()/1000}async acquireTokenBucket(X){if(!this.enabled)return;if(this.refillTokenBucket(),X>this.availableTokens){let Y=(X-this.availableTokens)/this.fillRate*1000;await new Promise((G)=>fA1.setTimeoutFn(G,Y))}this.availableTokens=this.availableTokens-X}refillTokenBucket(){let X=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=X;return}let Y=(X-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+Y),this.lastTimestamp=X}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,0.3333333333333333))}cubicThrottle(X){return this.getPrecise(X*this.beta)}cubicSuccess(X){return this.getPrecise(this.scaleConstant*Math.pow(X-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(X){this.refillTokenBucket(),this.fillRate=Math.max(X,this.minFillRate),this.maxCapacity=Math.max(X,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let X=this.getCurrentTimeInSeconds(),Y=Math.floor(X*2)/2;if(this.requestCount++,Y>this.lastTxRateBucket){let G=this.requestCount/(Y-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(G*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=Y}}getPrecise(X){return parseFloat(X.toFixed(8))}}var dn5=100,LN0=20000,cn5=500,DN0=500,in5=5,pn5=10,je4=1,nn5="amz-sdk-invocation-id",tn5="amz-sdk-request";class eQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return eQ.v2026?50:100}static throttlingDelay(){return eQ.v2026?1000:500}static cost(){return eQ.v2026?14:5}static throttlingCost(){return eQ.v2026?5:10}static modifiedCostType(){return eQ.v2026?"THROTTLING":"TRANSIENT"}}class Me4{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,LN0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class wN0{delay;count;cost;longPoll;constructor(X,Y,G,Q){this.delay=X,this.count=Y,this.cost=G,this.longPoll=Q}getRetryCount(){return this.count}getRetryDelay(){return Math.min(LN0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var vA1={incompatible:1,attempts:2,capacity:3};class RX1{mode=an5.RETRY_MODES.STANDARD;capacity=DN0;retryBackoffStrategy;maxAttemptsProvider;baseDelay;constructor(X){if(typeof X==="number")this.maxAttemptsProvider=async()=>X;else if(typeof X==="function")this.maxAttemptsProvider=X;else if(X&&typeof X==="object")this.maxAttemptsProvider=async()=>X.maxAttempts,this.baseDelay=X.baseDelay,this.retryBackoffStrategy=X.backoff;this.maxAttemptsProvider??=async()=>_A1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new Me4}async acquireInitialRetryToken(X){return new wN0(eQ.delay(),0,void 0,eQ.v2026&&X.includes(":longpoll"))}async refreshRetryTokenForRetry(X,Y){let G=await this.getMaxAttempts(),Q=this.retryCode(X,Y,G),J=Q===0,W=X.isLongPoll?.();if(J||W){let Z=Y.errorType;this.retryBackoffStrategy.setDelayBase(Z==="THROTTLING"?eQ.throttlingDelay():this.baseDelay);let $=this.retryBackoffStrategy.computeNextBackoffDelay(X.getRetryCount()),K=$;if(Y.retryAfterHint instanceof Date)K=Math.max($,Math.min(Y.retryAfterHint.getTime()-Date.now(),$+5000));if(!J)throw Object.assign(Error("No retry token available"),{$backoff:eQ.v2026&&Q===vA1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new wN0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(DN0,this.capacity+(X.getRetryCost()??je4))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(X){return console.warn(`Max attempts provider could not resolve. Using default of ${_A1}`),_A1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:vA1.incompatible,W=Q<G?0:vA1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:vA1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class Re4{mode=an5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new fA1,this.standardRetryStrategy=Y?new RX1({maxAttempts:typeof X==="number"?X:3,...Y}):new RX1(X)}async acquireInitialRetryToken(X){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(X)}async refreshRetryTokenForRetry(X,Y){return this.rateLimiter.updateClientSendingRate(Y),this.standardRetryStrategy.refreshRetryTokenForRetry(X,Y)}recordSuccess(X){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(X)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}class Se4 extends RX1{computeNextBackoffDelay;constructor(X,Y=eQ.delay()){super(typeof X==="function"?X:async()=>X);if(typeof Y==="number")this.computeNextBackoffDelay=()=>Y;else this.computeNextBackoffDelay=Y}async refreshRetryTokenForRetry(X,Y){let G=await super.refreshRetryTokenForRetry(X,Y);return G.getRetryDelay=()=>this.computeNextBackoffDelay(G.getRetryCount()),G}}an5.AdaptiveRetryStrategy=Re4;an5.ConfiguredRetryStrategy=Se4;an5.DEFAULT_MAX_ATTEMPTS=_A1;an5.DEFAULT_RETRY_DELAY_BASE=dn5;an5.DEFAULT_RETRY_MODE=mn5;an5.DefaultRateLimiter=fA1;an5.INITIAL_RETRY_TOKENS=DN0;an5.INVOCATION_ID_HEADER=nn5;an5.MAXIMUM_RETRY_DELAY=LN0;an5.NO_RETRY_INCREMENT=je4;an5.REQUEST_HEADER=tn5;an5.RETRY_COST=in5;an5.Retry=eQ;an5.StandardRetryStrategy=RX1;an5.THROTTLING_RETRY_DELAY_BASE=cn5;an5.TIMEOUT_RETRY_COST=pn5});var WX=k((Pt5)=>{var Bt5=Dw(),EN0={warningEmitted:!1},Nt5=(X)=>{if(X&&!EN0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)EN0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
1626
+ `);Q=W.pop()??"";for(let Z of W){let $=as4(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;$z({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=as4(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)$z({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Tp5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await VA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await qA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)rt({name:z.name,status:"ready",port:z.port});IX1(W),AX1();let K=Ap5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)rs4(U.stdout),rs4(U.stderr);let B=G||`http://localhost:${W.port}`;TX1(B),rt({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (T$1(),A$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var sB0=D(()=>{iB0();Kz();rB0()});import{Box as eB0,Text as XN0}from"ink";import{jsx as ss4,jsxs as jA1}from"react/jsx-runtime";function os4(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function jp5(X,Y){if(Ip5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Vp5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>os4(W)).join(", "),color:"cyan"}}let Q=os4(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function Mp5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function es4({env:X}){let Y=Mp5(X);return ss4(eB0,{flexDirection:"column",children:Y.map((G)=>jA1(eB0,{flexDirection:"column",marginTop:1,children:[jA1(XN0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=jp5(Q,J);return jA1(eB0,{children:[jA1(XN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),ss4(XN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Ip5,Vp5;var Xe4=D(()=>{Ip5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Vp5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var YN0;var Ye4=D(()=>{YN0={name:"decocms",version:"2.302.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as AU,Text as RX}from"ink";import{Spinner as Sp5}from"@inkjs/ui";import{useSyncExternalStore as Ge4}from"react";import{jsx as AY,jsxs as sQ}from"react/jsx-runtime";function fp5(X,Y){if(!X||!_p5.has(X))return X;let G=GN0[Y]??GN0[GN0.length-1];return X==="#875f00"?G[0]:G[1]}function Qe4({status:X}){if(X==="pending")return AY(Sp5,{label:""});return AY(RX,{color:"green",children:"\u2713"})}function Je4({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=Ge4(Vl0,Il0),Z=Ge4(Cl0,kl0);return sQ(AU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(AU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,vp5-U);return sQ(AU,{flexDirection:"row",children:[$.map((N,z)=>{let O=fp5(N.color,K);return O?AY(RX,{color:O,children:N.text},z):AY(RX,{children:N.text},z)}),AY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?AY(RX,{color:N.color,children:N.char},z):AY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",YN0.version]})]}):sQ(AU,{flexDirection:"column",marginTop:1,children:[kp5.map(($,K)=>AY(RX,{color:Cp5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",YN0.version]})]}),AY(AU,{marginBottom:1,children:AY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),AY(AU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(AU,{gap:2,children:[X.map(($)=>sQ(AU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),AY(Qe4,{status:$.status})]},$.name)),sQ(AU,{gap:1,children:[AY(RX,{children:"Migrations"}),AY(Qe4,{status:Y})]})]}),AY(AU,{children:Q?sQ(RX,{children:["Open in browser: ",AY(RX,{color:"cyan",children:Q})]}):AY(RX,{dimColor:!0,children:"Starting..."})}),sQ(AU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[AY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var kp5,Cp5,GN0,vp5=30,_p5;var Ze4=D(()=>{Ye4();mn1();tn1();kp5=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],Cp5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],GN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],_p5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as bp5}from"react";function yp5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==MA1.rows||Y!==MA1.columns)MA1={rows:X,columns:Y};return MA1}function xp5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function We4(){return bp5(xp5,yp5)}var MA1;var $e4=D(()=>{MA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as hp5,Text as VX1}from"ink";import{useSyncExternalStore as gp5}from"react";import{jsx as QN0,jsxs as JN0}from"react/jsx-runtime";function up5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function Ke4({logs:X,headerHeight:Y}){let{rows:G}=We4(),{logFlow:Q}=gp5(qX1,PX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return QN0(hp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return QN0(VX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return JN0(VX1,{children:[JN0(VX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),QN0(VX1,{color:up5(Z.status),children:Z.status}),JN0(VX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var He4=D(()=>{Kz();$e4()});var ZN0={};j0(ZN0,{App:()=>np5});import{Box as lp5,Text as mp5,useInput as dp5}from"ink";import{useSyncExternalStore as cp5}from"react";import{jsx as RA1,jsxs as tp5}from"react/jsx-runtime";function np5({home:X}){let Y=cp5(qX1,PX1);return dp5((G)=>{if(G==="k"||G==="K")nB0();if(G==="l"||G==="L")tB0();if((G==="v"||G==="V")&&Y.dataDir)sn1(Y.dataDir),aB0();if((G==="n"||G==="N")&&Y.vibe)on1()}),tp5(lp5,{flexDirection:"column",children:[RA1(Je4,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?RA1(es4,{env:Y.env}):RA1(mp5,{dimColor:!0,children:"Loading configuration..."}):RA1(Ke4,{logs:Y.logs,headerHeight:Y.vibe?pp5:ip5})]})}var ip5=15,pp5=19;var WN0=D(()=>{Xe4();Ze4();He4();Kz();Sd()});function Fe4(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,STUDIO_SANDBOX_SENTINEL_TOKEN:process.env.STUDIO_SANDBOX_SENTINEL_TOKEN,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}var vj=k((Xn5)=>{Xn5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Xn5.HttpAuthLocation||(Xn5.HttpAuthLocation={}));Xn5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Xn5.HttpApiKeyAuthLocation||(Xn5.HttpApiKeyAuthLocation={}));Xn5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(Xn5.EndpointURLScheme||(Xn5.EndpointURLScheme={}));Xn5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(Xn5.AlgorithmId||(Xn5.AlgorithmId={}));var ap5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>Xn5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>Xn5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},rp5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},op5=(X)=>{return ap5(X)},sp5=(X)=>{return rp5(X)};Xn5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(Xn5.FieldPosition||(Xn5.FieldPosition={}));var ep5="__smithy_context";Xn5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(Xn5.IniSectionType||(Xn5.IniSectionType={}));Xn5.RequestHandlerProtocol=void 0;(function(X){X.HTTP_0_9="http/0.9",X.HTTP_1_0="http/1.0",X.TDS_8_0="tds/8.0"})(Xn5.RequestHandlerProtocol||(Xn5.RequestHandlerProtocol={}));Xn5.SMITHY_CONTEXT_KEY=ep5;Xn5.getDefaultClientConfiguration=op5;Xn5.resolveDefaultRuntimeConfig=sp5});var u7=k((Hn5)=>{var Jn5=vj(),Zn5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},Wn5=(X)=>{return{httpHandler:X.httpHandler()}};class Ue4{name;kind;values;constructor({name:X,kind:Y=Jn5.FieldPosition.HEADER,values:G=[]}){this.name=X,this.kind=Y,this.values=G}add(X){this.values.push(X)}set(X){this.values=X}remove(X){this.values=this.values.filter((Y)=>Y!==X)}toString(){return this.values.map((X)=>X.includes(",")||X.includes(" ")?`"${X}"`:X).join(", ")}get(){return this.values}}class Be4{entries={};encoding;constructor({fields:X=[],encoding:Y="utf-8"}){X.forEach(this.setField.bind(this)),this.encoding=Y}setField(X){this.entries[X.name.toLowerCase()]=X}getField(X){return this.entries[X.toLowerCase()]}removeField(X){delete this.entries[X.toLowerCase()]}getByType(X){return Object.values(this.entries).filter((Y)=>Y.kind===X)}}class SA1{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(X){this.method=X.method||"GET",this.hostname=X.hostname||"localhost",this.port=X.port,this.query=X.query||{},this.headers=X.headers||{},this.body=X.body,this.protocol=X.protocol?X.protocol.slice(-1)!==":"?`${X.protocol}:`:X.protocol:"https:",this.path=X.path?X.path.charAt(0)!=="/"?`/${X.path}`:X.path:"/",this.username=X.username,this.password=X.password,this.fragment=X.fragment}static clone(X){let Y=new SA1({...X,headers:{...X.headers}});if(Y.query)Y.query=$n5(Y.query);return Y}static isInstance(X){if(!X)return!1;let Y=X;return"method"in Y&&"protocol"in Y&&"hostname"in Y&&"path"in Y&&typeof Y.query==="object"&&typeof Y.headers==="object"}clone(){return SA1.clone(this)}}function $n5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class Ne4{statusCode;reason;headers;body;constructor(X){this.statusCode=X.statusCode,this.reason=X.reason,this.headers=X.headers||{},this.body=X.body}static isInstance(X){if(!X)return!1;let Y=X;return typeof Y.statusCode==="number"&&typeof Y.headers==="object"}}function Kn5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}Hn5.Field=Ue4;Hn5.Fields=Be4;Hn5.HttpRequest=SA1;Hn5.HttpResponse=Ne4;Hn5.getHttpHandlerExtensionConfiguration=Zn5;Hn5.isValidHostname=Kn5;Hn5.resolveHttpHandlerRuntimeConfig=Wn5});function wn5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&ze4.HttpRequest.isInstance(Q)&&Q.body&&X.runtime==="node"&&X.requestHandler?.constructor?.name!=="FetchHttpHandler"){let J=!0;if(typeof X.expectContinueHeader==="number")try{J=(Number(Q.headers?.["content-length"])??X.bodyLengthChecker?.(Q.body)??1/0)>=X.expectContinueHeader}catch(W){}else J=!!X.expectContinueHeader;if(J)Q.headers.Expect="100-continue"}return Y({...G,request:Q})}}var ze4,Ln5,Oe4=(X)=>({applyToStack:(Y)=>{Y.add(wn5(X),Ln5)}});var De4=D(()=>{ze4=Y1(u7(),1);Ln5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,kA1,_j,CA1,E9,we4,MX1;var LH=D(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},kA1=wH.WHEN_SUPPORTED,_j={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},CA1=wH.WHEN_SUPPORTED;(function(X){X.MD5="MD5",X.CRC32="CRC32",X.CRC32C="CRC32C",X.CRC64NVME="CRC64NVME",X.SHA1="SHA1",X.SHA256="SHA256"})(E9||(E9={}));(function(X){X.HEADER="header",X.TRAILER="trailer"})(we4||(we4={}));MX1=E9.CRC32});var Rq,ot=(X,Y,G,Q)=>{if(!(Y in X))return;let J=X[Y].toUpperCase();if(!Object.values(G).includes(J))throw TypeError(`Cannot load ${Q} '${Y}'. Expected one of ${Object.values(G)}, got '${X[Y]}'.`);return J};var NN0=D(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(Rq||(Rq={}))});var En5="AWS_REQUEST_CHECKSUM_CALCULATION",Pn5="request_checksum_calculation",Le4;var Ee4=D(()=>{LH();NN0();Le4={environmentVariableSelector:(X)=>ot(X,En5,wH,Rq.ENV),configFileSelector:(X)=>ot(X,Pn5,wH,Rq.CONFIG),default:kA1}});var qn5="AWS_RESPONSE_CHECKSUM_VALIDATION",An5="response_checksum_validation",Pe4;var qe4=D(()=>{LH();NN0();Pe4={environmentVariableSelector:(X)=>ot(X,qn5,_j,Rq.ENV),configFileSelector:(X)=>ot(X,An5,_j,Rq.CONFIG),default:CA1}});var ON0=k((vn5)=>{var Tn5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],In5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Vn5=["TimeoutError","RequestTimeout","RequestTimeoutException"],jn5=[500,502,503,504],Mn5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Rn5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],Ae4=(X)=>X?.$retryable!==void 0,Sn5=(X)=>Tn5.includes(X.name),Te4=(X)=>X.$metadata?.clockSkewCorrected,Ie4=(X)=>{let Y=new Set(["Failed to fetch","NetworkError when attempting to fetch resource","The Internet connection appears to be offline","Load failed","Network request failed"]);if(!(X&&X instanceof TypeError))return!1;return Y.has(X.message)},kn5=(X)=>X.$metadata?.httpStatusCode===429||In5.includes(X.name)||X.$retryable?.throttling==!0,zN0=(X,Y=0)=>Ae4(X)||Te4(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Vn5.includes(X.name)||Mn5.includes(X?.code||"")||Rn5.includes(X?.code||"")||jn5.includes(X.$metadata?.httpStatusCode||0)||Ie4(X)||Ve4(X)||X.cause!==void 0&&Y<=10&&zN0(X.cause,Y+1),Cn5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!zN0(X))return!0;return!1}return!1};function Ve4(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}vn5.isBrowserNetworkError=Ie4;vn5.isClockSkewCorrectedError=Te4;vn5.isClockSkewError=Sn5;vn5.isNodeJsHttp2TransientError=Ve4;vn5.isRetryableByTrait=Ae4;vn5.isServerError=Cn5;vn5.isThrottlingError=kn5;vn5.isTransientError=zN0});var Dw=k((an5)=>{var ln5=ON0();an5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(an5.RETRY_MODES||(an5.RETRY_MODES={}));var _A1=3,mn5=an5.RETRY_MODES.STANDARD;class fA1{static setTimeoutFn=setTimeout;beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(X){this.beta=X?.beta??0.7,this.minCapacity=X?.minCapacity??1,this.minFillRate=X?.minFillRate??0.5,this.scaleConstant=X?.scaleConstant??0.4,this.smooth=X?.smooth??0.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(X){let Y;this.updateMeasuredRate();let G=X;if(G?.errorType==="THROTTLING"||ln5.isThrottlingError(G?.error??X)){let W=!this.enabled?this.measuredTxRate:Math.min(this.measuredTxRate,this.fillRate);this.lastMaxRate=W,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),Y=this.cubicThrottle(W),this.enableTokenBucket()}else this.calculateTimeWindow(),Y=this.cubicSuccess(this.getCurrentTimeInSeconds());let J=Math.min(Y,2*this.measuredTxRate);this.updateTokenBucketRate(J)}getCurrentTimeInSeconds(){return Date.now()/1000}async acquireTokenBucket(X){if(!this.enabled)return;if(this.refillTokenBucket(),X>this.availableTokens){let Y=(X-this.availableTokens)/this.fillRate*1000;await new Promise((G)=>fA1.setTimeoutFn(G,Y))}this.availableTokens=this.availableTokens-X}refillTokenBucket(){let X=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=X;return}let Y=(X-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+Y),this.lastTimestamp=X}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,0.3333333333333333))}cubicThrottle(X){return this.getPrecise(X*this.beta)}cubicSuccess(X){return this.getPrecise(this.scaleConstant*Math.pow(X-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(X){this.refillTokenBucket(),this.fillRate=Math.max(X,this.minFillRate),this.maxCapacity=Math.max(X,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let X=this.getCurrentTimeInSeconds(),Y=Math.floor(X*2)/2;if(this.requestCount++,Y>this.lastTxRateBucket){let G=this.requestCount/(Y-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(G*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=Y}}getPrecise(X){return parseFloat(X.toFixed(8))}}var dn5=100,LN0=20000,cn5=500,DN0=500,in5=5,pn5=10,je4=1,nn5="amz-sdk-invocation-id",tn5="amz-sdk-request";class eQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return eQ.v2026?50:100}static throttlingDelay(){return eQ.v2026?1000:500}static cost(){return eQ.v2026?14:5}static throttlingCost(){return eQ.v2026?5:10}static modifiedCostType(){return eQ.v2026?"THROTTLING":"TRANSIENT"}}class Me4{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,LN0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class wN0{delay;count;cost;longPoll;constructor(X,Y,G,Q){this.delay=X,this.count=Y,this.cost=G,this.longPoll=Q}getRetryCount(){return this.count}getRetryDelay(){return Math.min(LN0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var vA1={incompatible:1,attempts:2,capacity:3};class RX1{mode=an5.RETRY_MODES.STANDARD;capacity=DN0;retryBackoffStrategy;maxAttemptsProvider;baseDelay;constructor(X){if(typeof X==="number")this.maxAttemptsProvider=async()=>X;else if(typeof X==="function")this.maxAttemptsProvider=X;else if(X&&typeof X==="object")this.maxAttemptsProvider=async()=>X.maxAttempts,this.baseDelay=X.baseDelay,this.retryBackoffStrategy=X.backoff;this.maxAttemptsProvider??=async()=>_A1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new Me4}async acquireInitialRetryToken(X){return new wN0(eQ.delay(),0,void 0,eQ.v2026&&X.includes(":longpoll"))}async refreshRetryTokenForRetry(X,Y){let G=await this.getMaxAttempts(),Q=this.retryCode(X,Y,G),J=Q===0,W=X.isLongPoll?.();if(J||W){let Z=Y.errorType;this.retryBackoffStrategy.setDelayBase(Z==="THROTTLING"?eQ.throttlingDelay():this.baseDelay);let $=this.retryBackoffStrategy.computeNextBackoffDelay(X.getRetryCount()),K=$;if(Y.retryAfterHint instanceof Date)K=Math.max($,Math.min(Y.retryAfterHint.getTime()-Date.now(),$+5000));if(!J)throw Object.assign(Error("No retry token available"),{$backoff:eQ.v2026&&Q===vA1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new wN0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(DN0,this.capacity+(X.getRetryCost()??je4))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(X){return console.warn(`Max attempts provider could not resolve. Using default of ${_A1}`),_A1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:vA1.incompatible,W=Q<G?0:vA1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:vA1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class Re4{mode=an5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new fA1,this.standardRetryStrategy=Y?new RX1({maxAttempts:typeof X==="number"?X:3,...Y}):new RX1(X)}async acquireInitialRetryToken(X){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(X)}async refreshRetryTokenForRetry(X,Y){return this.rateLimiter.updateClientSendingRate(Y),this.standardRetryStrategy.refreshRetryTokenForRetry(X,Y)}recordSuccess(X){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(X)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}class Se4 extends RX1{computeNextBackoffDelay;constructor(X,Y=eQ.delay()){super(typeof X==="function"?X:async()=>X);if(typeof Y==="number")this.computeNextBackoffDelay=()=>Y;else this.computeNextBackoffDelay=Y}async refreshRetryTokenForRetry(X,Y){let G=await super.refreshRetryTokenForRetry(X,Y);return G.getRetryDelay=()=>this.computeNextBackoffDelay(G.getRetryCount()),G}}an5.AdaptiveRetryStrategy=Re4;an5.ConfiguredRetryStrategy=Se4;an5.DEFAULT_MAX_ATTEMPTS=_A1;an5.DEFAULT_RETRY_DELAY_BASE=dn5;an5.DEFAULT_RETRY_MODE=mn5;an5.DefaultRateLimiter=fA1;an5.INITIAL_RETRY_TOKENS=DN0;an5.INVOCATION_ID_HEADER=nn5;an5.MAXIMUM_RETRY_DELAY=LN0;an5.NO_RETRY_INCREMENT=je4;an5.REQUEST_HEADER=tn5;an5.RETRY_COST=in5;an5.Retry=eQ;an5.StandardRetryStrategy=RX1;an5.THROTTLING_RETRY_DELAY_BASE=cn5;an5.TIMEOUT_RETRY_COST=pn5});var WX=k((Pt5)=>{var Bt5=Dw(),EN0={warningEmitted:!1},Nt5=(X)=>{if(X&&!EN0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)EN0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
1627
1627
  no longer support Node.js ${X} in January 2026.
1628
1628
 
1629
1629
  To continue receiving updates to AWS services, bug fixes, and security
@@ -3362,8 +3362,8 @@ ${N}`)},K=(U)=>{W=Buffer.concat([W,U]);let B=W.indexOf(Q47);if(B===-1){if(W.leng
3362
3362
  `)});async function b_0(X={}){let Y=globalThis;if(Y[zn6])return;Y[zn6]=!0;try{let Q=await new ZB(X).sweepOrphans();if(Q>0)console.log(`[sandbox] Boot sweep: stopped ${Q} stale container(s).`)}catch(G){console.warn("[sandbox] Boot sweep failed (continuing without it):",G instanceof Error?G.message:G)}}async function y_0(X){if(!X)return;console.log("[shutdown] Sweeping docker sandbox containers...");try{let Y=await X.sweepOrphans();if(Y>0)console.log(`[shutdown] Swept ${Y} sandbox container(s).`)}catch(Y){console.error("[shutdown] Sandbox sweep error:",Y)}}var zn6;var On6=D(()=>{__0();zn6=Symbol.for("mesh.sandbox.bootSweepDone")});var T31=D(()=>{__0();Nn6();On6()});var Tk1=`// @bun
3363
3363
  // daemon/entry.ts
3364
3364
  import { randomUUID } from "crypto";
3365
- import { existsSync as existsSync4, mkdirSync as mkdirSync3, unlinkSync as unlinkSync4 } from "fs";
3366
- import { join as join4 } from "path";
3365
+ import { existsSync as existsSync4, mkdirSync as mkdirSync4, unlinkSync as unlinkSync4 } from "fs";
3366
+ import { join as join5 } from "path";
3367
3367
 
3368
3368
  // shared.ts
3369
3369
  var IFRAME_BOOTSTRAP_SCRIPT = \`<script>(function(){try{var W=window.WebSocket;if(W){var m=location.pathname.match(/^(\\\\/api\\\\/sandbox\\\\/[^\\\\/]+(?:\\\\/thread\\\\/[^\\\\/]+)?\\\\/preview(?:\\\\/\\\\d+)?)/);var p=m?m[1]:"";function r(u){try{var x=new URL(String(u),location.href);var lb=x.hostname==="localhost"||x.hostname==="127.0.0.1"||x.hostname==="0.0.0.0";var pm=x.hostname===location.hostname&&x.port!==location.port&&x.port!=="";if(!lb&&!pm)return String(u);x.protocol=location.protocol==="https:"?"wss:":"ws:";x.host=location.host;if(p&&!x.pathname.startsWith(p))x.pathname=p+x.pathname;return x.toString();}catch(_){return String(u);}}class P extends W{constructor(u,pr){super(r(u),pr);}}window.WebSocket=P;}}catch(_){}window.addEventListener("message",function(e){if(e.data&&e.data.type==="visual-editor::activate"&&e.data.script){try{new Function(e.data.script)();}catch(err){console.error("[visual-editor] injection failed",err);}}});})();</script>\`;
@@ -6308,7 +6308,7 @@ function makeScriptsHandler(getScripts) {
6308
6308
 
6309
6309
  // daemon/setup/orchestrator.ts
6310
6310
  import { existsSync as existsSync3, unlinkSync as unlinkSync3 } from "fs";
6311
- import { join as join3 } from "path";
6311
+ import { join as join4 } from "path";
6312
6312
 
6313
6313
  // daemon/setup/spawn-step.ts
6314
6314
  function spawnSetupStep(cmd, onChunk, dropPrivileges) {
@@ -6389,6 +6389,29 @@ $ \${pmConfig.install}\\r
6389
6389
  return spawnSetupStep(cmd, deps.onChunk, deps.dropPrivileges);
6390
6390
  }
6391
6391
 
6392
+ // daemon/git/protect-branch.ts
6393
+ import { chmodSync, mkdirSync as mkdirSync3, writeFileSync } from "fs";
6394
+ import { join as join3 } from "path";
6395
+ var HOOK = \`#!/bin/sh
6396
+ while IFS=' ' read -r _local_ref _local_sha remote_ref _remote_sha; do
6397
+ branch="\\\${remote_ref#refs/heads/}"
6398
+ case "$branch" in
6399
+ main|master)
6400
+ echo "error: pushing to '$branch' is not allowed from a sandbox" >&2
6401
+ exit 1
6402
+ ;;
6403
+ esac
6404
+ done
6405
+ exit 0
6406
+ \`;
6407
+ function installProtectedBranchHook(repoDir) {
6408
+ const hooksDir = join3(repoDir, ".git", "hooks");
6409
+ mkdirSync3(hooksDir, { recursive: true });
6410
+ const hookPath = join3(hooksDir, "pre-push");
6411
+ writeFileSync(hookPath, HOOK, { encoding: "utf-8" });
6412
+ chmodSync(hookPath, 493);
6413
+ }
6414
+
6392
6415
  // daemon/setup/resume.ts
6393
6416
  function isResume(repoDir) {
6394
6417
  return hasGitRepo(repoDir);
@@ -6645,7 +6668,7 @@ class SetupOrchestrator {
6645
6668
  const cwd = resolvePmRoot(config.repoDir, config.application?.packageManager?.path);
6646
6669
  const scripts = discoverScripts(cwd, pm);
6647
6670
  if (scripts.length === 0) {
6648
- const hasManifest = pmConf?.manifests.some((f) => existsSync3(join3(cwd, f)));
6671
+ const hasManifest = pmConf?.manifests.some((f) => existsSync3(join4(cwd, f)));
6649
6672
  if (!hasManifest) {
6650
6673
  return \`\\r
6651
6674
  [orchestrator] skipping start: no package manifest (\${pmConf?.manifests.join(" or ")}) found at \${cwd} \\u2014 update the VM config if a dev server should run\\r
@@ -6732,6 +6755,15 @@ class SetupOrchestrator {
6732
6755
  [orchestrator] warning: git identity setup failed: \${e.message}\\r
6733
6756
  \`);
6734
6757
  }
6758
+ if (config.repoDir) {
6759
+ try {
6760
+ installProtectedBranchHook(config.repoDir);
6761
+ } catch (e) {
6762
+ this.chunk(\`\\r
6763
+ [orchestrator] warning: could not install protected-branch hook: \${e.message}\\r
6764
+ \`);
6765
+ }
6766
+ }
6735
6767
  if (config.git?.repository?.branch) {
6736
6768
  this.chunk(\`[orchestrator] checking out branch: \${config.git.repository.branch}\\r
6737
6769
  \`);
@@ -6890,12 +6922,12 @@ var bootConfig = {
6890
6922
  daemonToken: process.env.DAEMON_TOKEN ?? "",
6891
6923
  daemonBootId: process.env.DAEMON_BOOT_ID ?? "",
6892
6924
  appRoot: APP_ROOT,
6893
- repoDir: join4(APP_ROOT, "repo"),
6925
+ repoDir: join5(APP_ROOT, "repo"),
6894
6926
  proxyPort: parseInt(process.env.DAEMON_PORT ?? process.env.PROXY_PORT ?? "9000", 10)
6895
6927
  };
6896
- mkdirSync3(bootConfig.repoDir, { recursive: true });
6928
+ mkdirSync4(bootConfig.repoDir, { recursive: true });
6897
6929
  var CONFIG_DIR = process.env.DAEMON_CONFIG_DIR ?? APP_ROOT;
6898
- var TMP_DIR = join4(APP_ROOT, "tmp");
6930
+ var TMP_DIR = join5(APP_ROOT, "tmp");
6899
6931
  var broadcaster = new Broadcaster(REPLAY_BYTES);
6900
6932
  var store = new TenantConfigStore({ storageDir: CONFIG_DIR });
6901
6933
  var installState = new InstallState;
@@ -7204,8 +7236,8 @@ process.on("SIGTERM", () => {
7204
7236
  taskManager.shutdown();
7205
7237
  appService.shutdown();
7206
7238
  try {
7207
- if (existsSync4(join4(CONFIG_DIR, CONFIG_FILENAME))) {}
7208
- unlinkSync4(join4(CONFIG_DIR, "config.json.tmp"));
7239
+ if (existsSync4(join5(CONFIG_DIR, CONFIG_FILENAME))) {}
7240
+ unlinkSync4(join5(CONFIG_DIR, "config.json.tmp"));
7209
7241
  } catch {}
7210
7242
  process.exit(0);
7211
7243
  });
@@ -2928,8 +2928,8 @@ ${N}`)},K=(U)=>{$=Buffer.concat([$,U]);let B=$.indexOf(c_5);if(B===-1){if($.leng
2928
2928
  `)});async function LV0(X={}){let Y=globalThis;if(Y[bf6])return;Y[bf6]=!0;try{let Q=await new PU(X).sweepOrphans();if(Q>0)console.log(`[sandbox] Boot sweep: stopped ${Q} stale container(s).`)}catch(G){console.warn("[sandbox] Boot sweep failed (continuing without it):",G instanceof Error?G.message:G)}}async function EV0(X){if(!X)return;console.log("[shutdown] Sweeping docker sandbox containers...");try{let Y=await X.sweepOrphans();if(Y>0)console.log(`[shutdown] Swept ${Y} sandbox container(s).`)}catch(Y){console.error("[shutdown] Sandbox sweep error:",Y)}}var bf6;var yf6=D(()=>{DV0();bf6=Symbol.for("mesh.sandbox.bootSweepDone")});var DQ1=D(()=>{DV0();ff6();yf6()});var aV1=`// @bun
2929
2929
  // daemon/entry.ts
2930
2930
  import { randomUUID } from "crypto";
2931
- import { existsSync as existsSync4, mkdirSync as mkdirSync3, unlinkSync as unlinkSync4 } from "fs";
2932
- import { join as join4 } from "path";
2931
+ import { existsSync as existsSync4, mkdirSync as mkdirSync4, unlinkSync as unlinkSync4 } from "fs";
2932
+ import { join as join5 } from "path";
2933
2933
 
2934
2934
  // shared.ts
2935
2935
  var IFRAME_BOOTSTRAP_SCRIPT = \`<script>(function(){try{var W=window.WebSocket;if(W){var m=location.pathname.match(/^(\\\\/api\\\\/sandbox\\\\/[^\\\\/]+(?:\\\\/thread\\\\/[^\\\\/]+)?\\\\/preview(?:\\\\/\\\\d+)?)/);var p=m?m[1]:"";function r(u){try{var x=new URL(String(u),location.href);var lb=x.hostname==="localhost"||x.hostname==="127.0.0.1"||x.hostname==="0.0.0.0";var pm=x.hostname===location.hostname&&x.port!==location.port&&x.port!=="";if(!lb&&!pm)return String(u);x.protocol=location.protocol==="https:"?"wss:":"ws:";x.host=location.host;if(p&&!x.pathname.startsWith(p))x.pathname=p+x.pathname;return x.toString();}catch(_){return String(u);}}class P extends W{constructor(u,pr){super(r(u),pr);}}window.WebSocket=P;}}catch(_){}window.addEventListener("message",function(e){if(e.data&&e.data.type==="visual-editor::activate"&&e.data.script){try{new Function(e.data.script)();}catch(err){console.error("[visual-editor] injection failed",err);}}});})();</script>\`;
@@ -5874,7 +5874,7 @@ function makeScriptsHandler(getScripts) {
5874
5874
 
5875
5875
  // daemon/setup/orchestrator.ts
5876
5876
  import { existsSync as existsSync3, unlinkSync as unlinkSync3 } from "fs";
5877
- import { join as join3 } from "path";
5877
+ import { join as join4 } from "path";
5878
5878
 
5879
5879
  // daemon/setup/spawn-step.ts
5880
5880
  function spawnSetupStep(cmd, onChunk, dropPrivileges) {
@@ -5955,6 +5955,29 @@ $ \${pmConfig.install}\\r
5955
5955
  return spawnSetupStep(cmd, deps.onChunk, deps.dropPrivileges);
5956
5956
  }
5957
5957
 
5958
+ // daemon/git/protect-branch.ts
5959
+ import { chmodSync, mkdirSync as mkdirSync3, writeFileSync } from "fs";
5960
+ import { join as join3 } from "path";
5961
+ var HOOK = \`#!/bin/sh
5962
+ while IFS=' ' read -r _local_ref _local_sha remote_ref _remote_sha; do
5963
+ branch="\\\${remote_ref#refs/heads/}"
5964
+ case "$branch" in
5965
+ main|master)
5966
+ echo "error: pushing to '$branch' is not allowed from a sandbox" >&2
5967
+ exit 1
5968
+ ;;
5969
+ esac
5970
+ done
5971
+ exit 0
5972
+ \`;
5973
+ function installProtectedBranchHook(repoDir) {
5974
+ const hooksDir = join3(repoDir, ".git", "hooks");
5975
+ mkdirSync3(hooksDir, { recursive: true });
5976
+ const hookPath = join3(hooksDir, "pre-push");
5977
+ writeFileSync(hookPath, HOOK, { encoding: "utf-8" });
5978
+ chmodSync(hookPath, 493);
5979
+ }
5980
+
5958
5981
  // daemon/setup/resume.ts
5959
5982
  function isResume(repoDir) {
5960
5983
  return hasGitRepo(repoDir);
@@ -6211,7 +6234,7 @@ class SetupOrchestrator {
6211
6234
  const cwd = resolvePmRoot(config.repoDir, config.application?.packageManager?.path);
6212
6235
  const scripts = discoverScripts(cwd, pm);
6213
6236
  if (scripts.length === 0) {
6214
- const hasManifest = pmConf?.manifests.some((f) => existsSync3(join3(cwd, f)));
6237
+ const hasManifest = pmConf?.manifests.some((f) => existsSync3(join4(cwd, f)));
6215
6238
  if (!hasManifest) {
6216
6239
  return \`\\r
6217
6240
  [orchestrator] skipping start: no package manifest (\${pmConf?.manifests.join(" or ")}) found at \${cwd} \\u2014 update the VM config if a dev server should run\\r
@@ -6298,6 +6321,15 @@ class SetupOrchestrator {
6298
6321
  [orchestrator] warning: git identity setup failed: \${e.message}\\r
6299
6322
  \`);
6300
6323
  }
6324
+ if (config.repoDir) {
6325
+ try {
6326
+ installProtectedBranchHook(config.repoDir);
6327
+ } catch (e) {
6328
+ this.chunk(\`\\r
6329
+ [orchestrator] warning: could not install protected-branch hook: \${e.message}\\r
6330
+ \`);
6331
+ }
6332
+ }
6301
6333
  if (config.git?.repository?.branch) {
6302
6334
  this.chunk(\`[orchestrator] checking out branch: \${config.git.repository.branch}\\r
6303
6335
  \`);
@@ -6456,12 +6488,12 @@ var bootConfig = {
6456
6488
  daemonToken: process.env.DAEMON_TOKEN ?? "",
6457
6489
  daemonBootId: process.env.DAEMON_BOOT_ID ?? "",
6458
6490
  appRoot: APP_ROOT,
6459
- repoDir: join4(APP_ROOT, "repo"),
6491
+ repoDir: join5(APP_ROOT, "repo"),
6460
6492
  proxyPort: parseInt(process.env.DAEMON_PORT ?? process.env.PROXY_PORT ?? "9000", 10)
6461
6493
  };
6462
- mkdirSync3(bootConfig.repoDir, { recursive: true });
6494
+ mkdirSync4(bootConfig.repoDir, { recursive: true });
6463
6495
  var CONFIG_DIR = process.env.DAEMON_CONFIG_DIR ?? APP_ROOT;
6464
- var TMP_DIR = join4(APP_ROOT, "tmp");
6496
+ var TMP_DIR = join5(APP_ROOT, "tmp");
6465
6497
  var broadcaster = new Broadcaster(REPLAY_BYTES);
6466
6498
  var store = new TenantConfigStore({ storageDir: CONFIG_DIR });
6467
6499
  var installState = new InstallState;
@@ -6770,8 +6802,8 @@ process.on("SIGTERM", () => {
6770
6802
  taskManager.shutdown();
6771
6803
  appService.shutdown();
6772
6804
  try {
6773
- if (existsSync4(join4(CONFIG_DIR, CONFIG_FILENAME))) {}
6774
- unlinkSync4(join4(CONFIG_DIR, "config.json.tmp"));
6805
+ if (existsSync4(join5(CONFIG_DIR, CONFIG_FILENAME))) {}
6806
+ unlinkSync4(join5(CONFIG_DIR, "config.json.tmp"));
6775
6807
  } catch {}
6776
6808
  process.exit(0);
6777
6809
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "2.302.1",
3
+ "version": "2.302.2",
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{e as t,j as i}from"./index-BGvMfUr2.js";import{O as m}from"./select-model-DSERjqbn.js";import"./checkbox-DBBm6J90.js";import"./ChevronDown-BMTA9_Ap.js";import"./input-r-FVR1hH.js";import"./dialog-Cc5-s5cq.js";import"./X-fvjwb2RC.js";import"./drawer-CYKJkhyy.js";import"./tooltip-8sj0FPxK.js";import"./select-CKhnD_dJ.js";import"./ChevronUp-BHiGg6ZY.js";import"./skeleton-PrntJAKB.js";import"./Tool01-D1xeep7h.js";import"./RefreshCcw01-DKf5Q7r6.js";import"./SearchMd-BI1BY0Xc.js";import"./Settings02-D0o0GA4h.js";import"./use-ai-providers-TD5f5keD.js";import"./constants-BVU634u9.js";import"./chat-context-DZ4ItXeY.js";import"./use-virtual-mcp-BOr32Cw9.js";import"./use-collections-DbJUoPI1.js";import"./use-decopilot-events-CTJPtEAG.js";import"./create-sse-subscription-CxkOgzKf.js";import"./use-tasks-BSCdum36.js";import"./use-organization-settings-vi5z2D5l.js";import"./ai-providers-logos-DD3qZ33J.js";import"./Zap-u543Wk9m.js";import"./AlertCircle-BFJK99tM.js";import"./CheckCircle-qqOIolWc.js";import"./Trash01-OgQVP2St.js";import"./index-C-49LFOm.js";import"./settings-section-BSfLZRSf.js";import"./card-DHIGW2Gm.js";import"./ArrowUpRight-BvzWf0q7.js";import"./switch-DIPW9oSx.js";import"./toggle-group-Bw-pO6dq.js";import"./avatar-B5CcOSaZ.js";import"./User01-Cr_qCqW_.js";import"./alert-dialog-B6JtF6Oy.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./unwrap-tool-result-BYXdCQMg.js";function T(){const o=t.c(1);let r;return o[0]===Symbol.for("react.memo_cache_sentinel")?(r=i.jsx(m,{}),o[0]=r):r=o[0],r}export{T as default};
@@ -1 +0,0 @@
1
- import{e as n,j as r,r as d,g as h,O as f,l as u}from"./index-BGvMfUr2.js";import{S as j,a as b,b as S}from"./index-C-49LFOm.js";import{u as _}from"./tooltip-8sj0FPxK.js";import{u as k,T as y,a as T,b as i,S as g}from"./index-Ce3V05Jd.js";import{C as v}from"./chat-context-DZ4ItXeY.js";import"./X-fvjwb2RC.js";import"./agent-icon-B5EEcofO.js";import"./AlertCircle-BFJK99tM.js";import"./Tool01-D1xeep7h.js";import"./XClose-C1T9ODT_.js";import"./RefreshCcw01-DKf5Q7r6.js";import"./ArrowNarrowLeft-DCbP5K-g.js";import"./XCircle-CVED_3Ss.js";import"./ArrowUpRight-BvzWf0q7.js";import"./ZapSquare-B03aoE62.js";import"./Users03-DVwMLxYo.js";import"./CheckCircle-qqOIolWc.js";import"./ChevronDown-BMTA9_Ap.js";import"./ChevronRight-QeeRSp8z.js";import"./ChevronUp-BHiGg6ZY.js";import"./DotsVertical-Bd2_5HYZ.js";import"./Container-CIDvyJX8.js";import"./Star01-DInOTW7T.js";import"./Palette-DescRwe0.js";import"./SearchMd-BI1BY0Xc.js";import"./LinkExternal01-DCnMv_g7.js";import"./Lock01-Ds-YEZnN.js";import"./Sun-DLagUbKM.js";import"./Play-Ch3KWC7Z.js";import"./Plus-gLdNtuBE.js";import"./Settings02-D0o0GA4h.js";import"./Shield01-btPXI3TS.js";import"./Trash01-OgQVP2St.js";import"./User01-Cr_qCqW_.js";import"./Zap-u543Wk9m.js";import"./shell-layout-BTN4hGpk.js";import"./dialog-Cc5-s5cq.js";import"./required-auth-layout-ByW838Wg.js";import"./use-tasks-BSCdum36.js";import"./use-collections-DbJUoPI1.js";import"./constants-BVU634u9.js";import"./use-organization-settings-vi5z2D5l.js";import"./use-org-sso-DzmlEuU4.js";import"./pair-TlV_Y8fY.js";import"./index-BizlRsAk.js";import"./use-copy-DNbmGYTy.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./content-blocks-o63cs2vh.js";import"./types-CPAcvDGA.js";import"./integration-icon-Btl0P6Zi.js";import"./use-virtual-mcp-BOr32Cw9.js";import"./skeleton-PrntJAKB.js";import"./popover-CENSHA5K.js";import"./drawer-CYKJkhyy.js";import"./avatar-B5CcOSaZ.js";import"./alert-dialog-B6JtF6Oy.js";import"./form-BlgCJwww.js";import"./label-CDE7or5s.js";import"./input-r-FVR1hH.js";import"./index-DRSFVCQG.js";import"./use-mcp-tools-yGAchpt7.js";import"./use-ai-providers-TD5f5keD.js";import"./index-CQbT2-AO.js";import"./switch-DIPW9oSx.js";import"./use-connection-EBpfvjCE.js";import"./lean-canvas-recruit-modal-70F-bJzI.js";import"./use-navigate-to-agent-XL440g7Q.js";import"./collection-search-dr2VH0_A.js";import"./checkbox-DBBm6J90.js";import"./extract-connection-data-CGFCZBB1.js";import"./constants-DhipgDPU.js";import"./collections-x4R34QWs.js";import"./tabs-Cnic4mBc.js";import"./dropdown-menu-BdezCavF.js";import"./select-CKhnD_dJ.js";import"./toggle-group-Bw-pO6dq.js";import"./select-model-DSERjqbn.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-BSfLZRSf.js";import"./card-DHIGW2Gm.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./unwrap-tool-result-BYXdCQMg.js";import"./index-DWnDHmtK.js";import"./question-004-sINsf4GQ.js";import"./connection-slug-eyAPH6o3.js";import"./connection-card-DHMMRnIO.js";import"./use-registry-connections-vdam_2jo.js";import"./useInfiniteQuery-D6CYdRiz.js";import"./infiniteQueryObserver-B9_hQDN4.js";import"./collection-tabs-BhSzOngN.js";import"./badge-Vn5olYFX.js";import"./textarea-DWnLf30W.js";import"./connection-form-helpers-CSnwVczG.js";import"./use-infinite-scroll-Blb-Zkmq.js";import"./useSuspenseInfiniteQuery-hnE5tAGb.js";import"./collection-search-EJTdRq0l.js";import"./use-create-virtual-mcp-oePzdlSN.js";import"./empty-state-CGM_VDGy.js";import"./use-decopilot-events-CTJPtEAG.js";import"./create-sse-subscription-CxkOgzKf.js";import"./task-status-B4S1zCuU.js";const N=280;function P(){const t=n.c(2),{tasksOpen:e}=k();if(!e)return null;let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o={width:`${N}px`},t[0]=o):o=t[0];let m;return t[1]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx("aside",{className:"shrink-0 h-full bg-sidebar pb-1",style:o,children:r.jsx("div",{className:"h-full p-0.5 pt-0.25",children:r.jsx("div",{className:"h-full bg-background rounded-[0.75rem] overflow-hidden card-shadow",children:r.jsx(y,{})})})}),t[1]=m):m=t[1],m}function C(){const t=n.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=r.jsx(d.Suspense,{fallback:null,children:r.jsx(P,{})}),t[0]=e):e=t[0],e}function x(){const t=n.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=r.jsx("div",{className:"flex-1 flex items-center justify-center",children:r.jsx(u,{size:20,className:"animate-spin text-muted-foreground"})}),t[0]=e):e=t[0],e}function yr(){const t=n.c(7),e=_();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o={strict:!1},t[0]=o):o=t[0];const c=!!h(o).taskId;let s;t[1]===Symbol.for("react.memo_cache_sentinel")?(s={"--sidebar-width-icon":"3.5rem"},t[1]=s):s=t[1];let l;t[2]===Symbol.for("react.memo_cache_sentinel")?(l=r.jsx(g,{}),t[2]=l):l=t[2];let p;t[3]===Symbol.for("react.memo_cache_sentinel")?(p={background:"transparent",containerType:"inline-size"},t[3]=p):p=t[3];let a;return t[4]!==c||t[5]!==e?(a=r.jsx(j,{defaultOpen:!1,children:r.jsx("div",{className:"flex flex-col h-dvh overflow-hidden",children:r.jsxs(b,{className:"flex-1 bg-sidebar",style:s,children:[l,r.jsx(S,{className:"flex flex-col",style:p,children:r.jsx(v,{children:r.jsx(T,{children:e?r.jsx(d.Suspense,{fallback:r.jsx(x,{}),children:r.jsx(f,{})}):r.jsxs(i,{children:[r.jsxs(i.Header,{children:[r.jsxs(i.LeftColumn,{children:[r.jsx(i.Nav,{}),r.jsx(i.TogglesSlot,{})]}),r.jsx(i.CenterSlot,{}),r.jsxs(i.RightColumn,{children:[r.jsx(i.TabsSlot,{}),r.jsx(i.RightSlot,{})]})]}),r.jsxs("div",{className:"flex-1 min-h-0 flex flex-row",children:[c&&r.jsx(C,{}),r.jsx(d.Suspense,{fallback:r.jsx(x,{}),children:r.jsx(f,{})})]})]})})})})]})})}),t[4]=c,t[5]=e,t[6]=a):a=t[6],a}export{yr as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-jKwqcMMI.js","assets/index-BGvMfUr2.js","assets/index-B4J1yAvl.css","assets/ArrowNarrowLeft-DCbP5K-g.js","assets/CheckCircle-qqOIolWc.js","assets/Container-CIDvyJX8.js","assets/Settings02-D0o0GA4h.js","assets/XCircle-CVED_3Ss.js","assets/constants-BVU634u9.js","assets/useInfiniteQuery-D6CYdRiz.js","assets/infiniteQueryObserver-B9_hQDN4.js","assets/badge-Vn5olYFX.js","assets/input-r-FVR1hH.js","assets/dropdown-menu-BdezCavF.js","assets/ChevronDown-BMTA9_Ap.js","assets/ChevronRight-QeeRSp8z.js","assets/DotsVertical-Bd2_5HYZ.js","assets/table-CyZKmPMu.js","assets/toggle-group-Bw-pO6dq.js","assets/use-view-mode-IRjBIGSa.js","assets/tooltip-8sj0FPxK.js","assets/SearchMd-BI1BY0Xc.js","assets/dialog-Cc5-s5cq.js","assets/X-fvjwb2RC.js","assets/AlertCircle-BFJK99tM.js","assets/alert-dialog-B6JtF6Oy.js","assets/card-DHIGW2Gm.js","assets/Trash01-OgQVP2St.js","assets/label-CDE7or5s.js","assets/select-CKhnD_dJ.js","assets/ChevronUp-BHiGg6ZY.js","assets/switch-DIPW9oSx.js","assets/textarea-DWnLf30W.js","assets/RefreshCcw01-DKf5Q7r6.js","assets/checkbox-DBBm6J90.js","assets/LinkExternal01-DCnMv_g7.js","assets/use-copy-DNbmGYTy.js","assets/Plus-gLdNtuBE.js","assets/Play-Ch3KWC7Z.js"])))=>i.map(i=>d[i]);
2
- import{e as a,j as t,r,l as i,_ as o}from"./index-BGvMfUr2.js";const n=r.lazy(()=>o(()=>import("./registry-layout-jKwqcMMI.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])));function c(){const s=a.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(r.Suspense,{fallback:t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsx(i,{size:20,className:"animate-spin text-muted-foreground"})}),children:t.jsx(n,{})}),s[0]=e):e=s[0],e}export{c as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-jKwqcMMI.js","assets/index-BGvMfUr2.js","assets/index-B4J1yAvl.css","assets/ArrowNarrowLeft-DCbP5K-g.js","assets/CheckCircle-qqOIolWc.js","assets/Container-CIDvyJX8.js","assets/Settings02-D0o0GA4h.js","assets/XCircle-CVED_3Ss.js","assets/constants-BVU634u9.js","assets/useInfiniteQuery-D6CYdRiz.js","assets/infiniteQueryObserver-B9_hQDN4.js","assets/badge-Vn5olYFX.js","assets/input-r-FVR1hH.js","assets/dropdown-menu-BdezCavF.js","assets/ChevronDown-BMTA9_Ap.js","assets/ChevronRight-QeeRSp8z.js","assets/DotsVertical-Bd2_5HYZ.js","assets/table-CyZKmPMu.js","assets/toggle-group-Bw-pO6dq.js","assets/use-view-mode-IRjBIGSa.js","assets/tooltip-8sj0FPxK.js","assets/SearchMd-BI1BY0Xc.js","assets/dialog-Cc5-s5cq.js","assets/X-fvjwb2RC.js","assets/AlertCircle-BFJK99tM.js","assets/alert-dialog-B6JtF6Oy.js","assets/card-DHIGW2Gm.js","assets/Trash01-OgQVP2St.js","assets/label-CDE7or5s.js","assets/select-CKhnD_dJ.js","assets/ChevronUp-BHiGg6ZY.js","assets/switch-DIPW9oSx.js","assets/textarea-DWnLf30W.js","assets/RefreshCcw01-DKf5Q7r6.js","assets/checkbox-DBBm6J90.js","assets/LinkExternal01-DCnMv_g7.js","assets/use-copy-DNbmGYTy.js","assets/Plus-gLdNtuBE.js","assets/Play-Ch3KWC7Z.js"])))=>i.map(i=>d[i]);
2
- import{e as n,f as c,g as m,j as r,l as f,r as l,_ as u}from"./index-BGvMfUr2.js";const _=l.lazy(()=>u(()=>import("./registry-layout-jKwqcMMI.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])));function x(){const e=n.c(5),o=c();let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t={from:"/shell/$org"},e[0]=t):t=e[0];const{org:i}=m(t);let s;e[1]===Symbol.for("react.memo_cache_sentinel")?(s=r.jsx("div",{className:"h-full flex items-center justify-center",children:r.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=s):s=e[1];let a;return e[2]!==o||e[3]!==i?(a=r.jsx(l.Suspense,{fallback:s,children:r.jsx(_,{onBack:()=>o({to:"/$org/settings/store",params:{org:i}})})}),e[2]=o,e[3]=i,e[4]=a):a=e[4],a}export{x as default};
@@ -1 +0,0 @@
1
- import{I as u}from"./infiniteQueryObserver-B9_hQDN4.js";import{c2 as i}from"./index-BGvMfUr2.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./infiniteQueryObserver-B9_hQDN4.js";import{c2 as u,c3 as n}from"./index-BGvMfUr2.js";function a(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{a as u};
@@ -1 +0,0 @@
1
- import{e as s,g as l,j as o,l as a,E as n,r as c}from"./index-BGvMfUr2.js";import{a as f}from"./index-iJW-G2eC.js";import"./index-QpbQL5yY.js";import"./constants-BVU634u9.js";import"./collections-x4R34QWs.js";import"./index-CxcuSo6g.js";import"./use-virtual-mcp-BOr32Cw9.js";import"./use-collections-DbJUoPI1.js";import"./monaco-editor-D9GcAVz1.js";import"./index-BizlRsAk.js";import"./accordion-zoDibAHc.js";import"./agent-icon-B5EEcofO.js";import"./AlertCircle-BFJK99tM.js";import"./Tool01-D1xeep7h.js";import"./XClose-C1T9ODT_.js";import"./RefreshCcw01-DKf5Q7r6.js";import"./ArrowNarrowLeft-DCbP5K-g.js";import"./XCircle-CVED_3Ss.js";import"./ArrowUpRight-BvzWf0q7.js";import"./ZapSquare-B03aoE62.js";import"./Users03-DVwMLxYo.js";import"./CheckCircle-qqOIolWc.js";import"./ChevronDown-BMTA9_Ap.js";import"./ChevronRight-QeeRSp8z.js";import"./ChevronUp-BHiGg6ZY.js";import"./DotsVertical-Bd2_5HYZ.js";import"./Container-CIDvyJX8.js";import"./Star01-DInOTW7T.js";import"./Palette-DescRwe0.js";import"./SearchMd-BI1BY0Xc.js";import"./index-C-49LFOm.js";import"./tooltip-8sj0FPxK.js";import"./X-fvjwb2RC.js";import"./LinkExternal01-DCnMv_g7.js";import"./Lock01-Ds-YEZnN.js";import"./Sun-DLagUbKM.js";import"./Play-Ch3KWC7Z.js";import"./Plus-gLdNtuBE.js";import"./Settings02-D0o0GA4h.js";import"./Shield01-btPXI3TS.js";import"./Trash01-OgQVP2St.js";import"./User01-Cr_qCqW_.js";import"./Zap-u543Wk9m.js";import"./badge-Vn5olYFX.js";import"./select-CKhnD_dJ.js";import"./view-mode-toggle-DqaIt4c7.js";import"./layout-DtEpOSua.js";import"./use-connection-EBpfvjCE.js";import"./use-mcp-tools-yGAchpt7.js";import"./dialog-Cc5-s5cq.js";import"./index-DWnDHmtK.js";import"./dropdown-menu-BdezCavF.js";import"./integration-icon-Btl0P6Zi.js";import"./scroll-area-KyXayDS_.js";import"./index-DRSFVCQG.js";import"./empty-state-B-SDOSco.js";import"./create-sse-subscription-CxkOgzKf.js";import"./input-r-FVR1hH.js";function ht(){const t=s.c(4);let r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={from:"/shell/$org/settings/workflows/$itemId"},t[0]=r):r=t[0];const{itemId:e}=l(r);let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx("div",{className:"flex h-full items-center justify-center",children:o.jsx(a,{size:32,className:"animate-spin text-muted-foreground"})}),t[1]=i):i=t[1];const p=decodeURIComponent(e);let m;return t[2]!==p?(m=o.jsx(n,{children:o.jsx(c.Suspense,{fallback:i,children:o.jsx(f,{itemId:p})})}),t[2]=p,t[3]=m):m=t[3],m}export{ht as default};