decocms 2.302.7 → 2.303.0

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 (224) hide show
  1. package/dist/client/assets/{AlertCircle-CG9syR30.js → AlertCircle-vEsirhNa.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-BoVSDn9e.js → ArrowNarrowLeft-DZv_aYqP.js} +1 -1
  3. package/dist/client/assets/{ArrowUpRight-BdaniATT.js → ArrowUpRight-gnKwWbdS.js} +1 -1
  4. package/dist/client/assets/{CheckCircle-DenMuCVF.js → CheckCircle-CG65sxv8.js} +1 -1
  5. package/dist/client/assets/{ChevronDown-C3Ygm425.js → ChevronDown-ClwyYcv4.js} +1 -1
  6. package/dist/client/assets/{ChevronRight-ZWCM92t_.js → ChevronRight-C0UgsndQ.js} +1 -1
  7. package/dist/client/assets/{ChevronUp-D2rVf06n.js → ChevronUp-0O0O_hLq.js} +1 -1
  8. package/dist/client/assets/{Container-D7Azh5xu.js → Container-D1_FRS1u.js} +1 -1
  9. package/dist/client/assets/{DotsVertical-CLHEpDSq.js → DotsVertical-BdLY0G_d.js} +1 -1
  10. package/dist/client/assets/{LinkExternal01-DxXEJ52C.js → LinkExternal01-C0RHT0gp.js} +1 -1
  11. package/dist/client/assets/{Lock01-BguDy0uh.js → Lock01-CJP_L01s.js} +1 -1
  12. package/dist/client/assets/{Palette-BYEIR3m2.js → Palette-DTaJJ6eW.js} +1 -1
  13. package/dist/client/assets/{Play-Bwjd77ev.js → Play-wg-GRHFk.js} +1 -1
  14. package/dist/client/assets/{Plus-DTn86Odk.js → Plus-Ukcu1-Za.js} +1 -1
  15. package/dist/client/assets/{RefreshCcw01-BHf_tfWd.js → RefreshCcw01-i1Q8uoB-.js} +1 -1
  16. package/dist/client/assets/{SearchMd-a6724p0Y.js → SearchMd-CaU1opgI.js} +1 -1
  17. package/dist/client/assets/{Settings02-CrnanDsL.js → Settings02-sn7Sw6YT.js} +1 -1
  18. package/dist/client/assets/{Shield01-DtxRf8Qj.js → Shield01-BV1qTPTH.js} +1 -1
  19. package/dist/client/assets/{Star01-BFmiet3n.js → Star01-BRRUiVRZ.js} +1 -1
  20. package/dist/client/assets/{Sun-CRJFmy5s.js → Sun-xRqcyI3R.js} +1 -1
  21. package/dist/client/assets/{Tool01-9otovhMh.js → Tool01-Baq41T_m.js} +1 -1
  22. package/dist/client/assets/{Trash01-re7YiF5g.js → Trash01-vBGY9tLb.js} +1 -1
  23. package/dist/client/assets/{User01-BgnyFNdJ.js → User01-Dt3HpnQa.js} +1 -1
  24. package/dist/client/assets/{Users03-BPGIuPOi.js → Users03-DXg5Ltjv.js} +1 -1
  25. package/dist/client/assets/{X-DlTdh5jK.js → X-cgiyE3ZM.js} +1 -1
  26. package/dist/client/assets/{XCircle-BE4LAsf8.js → XCircle-pfcw5bLn.js} +1 -1
  27. package/dist/client/assets/{XClose-CDyDeDuF.js → XClose-BddCxuhK.js} +1 -1
  28. package/dist/client/assets/{Zap-DE6pD70D.js → Zap-Csq8iSdS.js} +1 -1
  29. package/dist/client/assets/{ZapSquare-FWH2wtfn.js → ZapSquare-BcZ9bNOI.js} +1 -1
  30. package/dist/client/assets/{accordion-BubDFUkM.js → accordion-6lnK-4_B.js} +1 -1
  31. package/dist/client/assets/{agent-icon-DzVM2Y3D.js → agent-icon-BdKQ6n0b.js} +1 -1
  32. package/dist/client/assets/{agents-list-ClVNGy3h.js → agents-list-CQCT4ln6.js} +1 -1
  33. package/dist/client/assets/ai-providers-GeW9mIp3.js +1 -0
  34. package/dist/client/assets/{alert-dialog-Cp4KelsS.js → alert-dialog-eUvHx9LP.js} +1 -1
  35. package/dist/client/assets/{auth-catchall-DAjGP-X3.js → auth-catchall-DTPgUDmr.js} +1 -1
  36. package/dist/client/assets/{automation-list-row-DP5TESrt.js → automation-list-row-Dr5sNKYc.js} +1 -1
  37. package/dist/client/assets/{automations-BKKclzI8.js → automations-C3gcgD_I.js} +1 -1
  38. package/dist/client/assets/{avatar-D56WFjQj.js → avatar-DYHAtJIn.js} +1 -1
  39. package/dist/client/assets/{badge-Brrebgj_.js → badge-CbBFj3dT.js} +1 -1
  40. package/dist/client/assets/{brand-context-B9KleYrA.js → brand-context-CH3a97ud.js} +1 -1
  41. package/dist/client/assets/{card-CbtqsNyF.js → card-KdWbX1xC.js} +1 -1
  42. package/dist/client/assets/{chat-context-D8pNmIoM.js → chat-context-CyOREmRE.js} +1 -1
  43. package/dist/client/assets/{checkbox-A-1sOL7a.js → checkbox-L6ow9OAH.js} +1 -1
  44. package/dist/client/assets/{collection-detail-BiV7gm_U.js → collection-detail-BNa0DV-E.js} +1 -1
  45. package/dist/client/assets/{collection-display-button-hDD2VNh1.js → collection-display-button-Cd1AAuzE.js} +1 -1
  46. package/dist/client/assets/{collection-search-BtNt6NZG.js → collection-search-C_3BuKbi.js} +1 -1
  47. package/dist/client/assets/{collection-search-TTX5BBhb.js → collection-search-DKaMJpI1.js} +1 -1
  48. package/dist/client/assets/{collection-table-wrapper-RDfR0u8g.js → collection-table-wrapper-BZMY30r-.js} +1 -1
  49. package/dist/client/assets/{collection-tabs-BYirFRax.js → collection-tabs-CKmdw5ye.js} +1 -1
  50. package/dist/client/assets/{collections-DY4I1w_a.js → collections-JCMKBQvX.js} +1 -1
  51. package/dist/client/assets/{command-DzkZTofz.js → command-CiVqeZK9.js} +1 -1
  52. package/dist/client/assets/{connection-card-iSBKdQg9.js → connection-card-BGoNyj1I.js} +1 -1
  53. package/dist/client/assets/{connection-detail-DeALevd5.js → connection-detail-DgOZE4hQ.js} +1 -1
  54. package/dist/client/assets/{connection-form-helpers-Cad-A9NK.js → connection-form-helpers-DiXDE6He.js} +1 -1
  55. package/dist/client/assets/{connections-BhCBByIk.js → connections-BHvbqlLg.js} +1 -1
  56. package/dist/client/assets/{constants-9TBj0Gaa.js → constants-BOiLyn9k.js} +1 -1
  57. package/dist/client/assets/{constants-BXUJyD1c.js → constants-CxLUc4t1.js} +1 -1
  58. package/dist/client/assets/{dialog-DpgNnjBX.js → dialog-B24YZzA9.js} +1 -1
  59. package/dist/client/assets/{domain-settings-CfEXVZxs.js → domain-settings-WXCddaP7.js} +1 -1
  60. package/dist/client/assets/{drawer-LAm5-sL1.js → drawer-CGPAKRwg.js} +1 -1
  61. package/dist/client/assets/{dropdown-menu-CSBZWMuU.js → dropdown-menu-D3k5KxvY.js} +1 -1
  62. package/dist/client/assets/{dynamic-plugin-layout-YqPG32No.js → dynamic-plugin-layout-B06IMDFS.js} +1 -1
  63. package/dist/client/assets/{empty-state-D8Ji8JRa.js → empty-state-CI0GC98R.js} +1 -1
  64. package/dist/client/assets/{empty-state-C3GO5RSf.js → empty-state-Wp7TaLly.js} +1 -1
  65. package/dist/client/assets/{extract-connection-data-cbAHcCfh.js → extract-connection-data-C8BcpMzg.js} +1 -1
  66. package/dist/client/assets/{features-D_II3j_j.js → features-Dm0-VLa6.js} +1 -1
  67. package/dist/client/assets/{form-DFO_5Fzm.js → form-FasOp70m.js} +1 -1
  68. package/dist/client/assets/{general-By1woa8E.js → general-B7DIS0Ue.js} +1 -1
  69. package/dist/client/assets/{index-DF5x0d60.js → index-22XZTMRU.js} +1 -1
  70. package/dist/client/assets/{index-ImhE7zFL.js → index-B2vavj0S.js} +1 -1
  71. package/dist/client/assets/{index-XLC4yiSV.js → index-C6uOB0Y4.js} +1 -1
  72. package/dist/client/assets/{index-CHNVhIMp.js → index-CFi3i8-6.js} +1 -1
  73. package/dist/client/assets/{index-C4QwSWi9.js → index-CGc8iCsx.js} +1 -1
  74. package/dist/client/assets/{index-D2mitOSe.js → index-CHehLkTl.js} +4 -4
  75. package/dist/client/assets/index-CHk8-d41.js +1 -0
  76. package/dist/client/assets/{index-swcvm5Z1.js → index-CJ0MPowS.js} +1 -1
  77. package/dist/client/assets/{index-DYIl7M2a.js → index-CLPpVsE7.js} +1 -1
  78. package/dist/client/assets/{index-B2vPEOVc.js → index-CLgan7xr.js} +1 -1
  79. package/dist/client/assets/{index-tSJy2IW6.js → index-CmoaTI3v.js} +1 -1
  80. package/dist/client/assets/{index-2dOrl4x0.js → index-CnMcjZ2J.js} +1 -1
  81. package/dist/client/assets/{index-DSoRyzSx.js → index-DSDywrQr.js} +1 -1
  82. package/dist/client/assets/{index-CQ4D5GAP.js → index-DgPBaKAA.js} +2 -2
  83. package/dist/client/assets/{index-r9i7ABND.js → index-UUkaa4t8.js} +1 -1
  84. package/dist/client/assets/{index-Br3d5-Cj.js → index-Uci3t_4k.js} +1 -1
  85. package/dist/client/assets/{infiniteQueryObserver-CxkHF-jm.js → infiniteQueryObserver-BNzmdrsE.js} +1 -1
  86. package/dist/client/assets/{input-6Sf2hB_F.js → input-s7yMiYrQ.js} +1 -1
  87. package/dist/client/assets/{integration-icon-8lhkAaq5.js → integration-icon-BTFNSNVv.js} +1 -1
  88. package/dist/client/assets/{label-DoJDMV6i.js → label-DdmR-9sj.js} +1 -1
  89. package/dist/client/assets/{layout-BHQ_c4RM.js → layout-b284SHuQ.js} +1 -1
  90. package/dist/client/assets/{lean-canvas-recruit-modal-CDcr9qCt.js → lean-canvas-recruit-modal-DajQAG70.js} +1 -1
  91. package/dist/client/assets/{login-Am3HfZgi.js → login-B1PDG9tU.js} +1 -1
  92. package/dist/client/assets/{members-yGwdGYMP.js → members-BzR5JdQ2.js} +1 -1
  93. package/dist/client/assets/{monaco-editor-CglgsbP6.js → monaco-editor-CI3jdnZr.js} +1 -1
  94. package/dist/client/assets/{monitoring-stats-row-C64ix0dR.js → monitoring-stats-row-DhMQIkbL.js} +1 -1
  95. package/dist/client/assets/{oauth-callback-YaQtgy3B.js → oauth-callback-BnQ8HZqD.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-ai-provider-DXuTlaTS.js → oauth-callback-ai-provider-CRSRr_xb.js} +1 -1
  97. package/dist/client/assets/{onboarding-WnwwsOhD.js → onboarding-D_M2p9DV.js} +1 -1
  98. package/dist/client/assets/{org-layout-DCXUX3EB.js → org-layout-D2xtXfus.js} +1 -1
  99. package/dist/client/assets/{org-plugin-layout-Dsb_WQsm.js → org-plugin-layout-DZaqttiB.js} +1 -1
  100. package/dist/client/assets/{pair-B01JdgFS.js → pair-DipmF7bC.js} +1 -1
  101. package/dist/client/assets/{plugin-empty-state-D3CO3AdB.js → plugin-empty-state-Buoq-fSV.js} +1 -1
  102. package/dist/client/assets/{plugin-header-aeJUAm2h.js → plugin-header-BYnPGK02.js} +1 -1
  103. package/dist/client/assets/{plugin-layout-CP1Bb1gU.js → plugin-layout-CN3nu4uU.js} +1 -1
  104. package/dist/client/assets/{popover-BajibMdr.js → popover-BO9bGsCV.js} +1 -1
  105. package/dist/client/assets/{profile-DDe57pOS.js → profile-KMr1dQ-Q.js} +1 -1
  106. package/dist/client/assets/{project-app-view-AKSh-WqN.js → project-app-view-BUlVlC-x.js} +1 -1
  107. package/dist/client/assets/registry-BQuAXDX3.js +2 -0
  108. package/dist/client/assets/{registry-layout-QiSXnsNM.js → registry-layout-BUJ3AeXk.js} +1 -1
  109. package/dist/client/assets/{required-auth-layout-jdQgts2c.js → required-auth-layout-23LI14IJ.js} +1 -1
  110. package/dist/client/assets/{reset-password-BN5V7l8r.js → reset-password-D1P-Z7nY.js} +1 -1
  111. package/dist/client/assets/{roles-HeW5UUYX.js → roles-C76lzhHm.js} +1 -1
  112. package/dist/client/assets/{scroll-area-SGeY9dE-.js → scroll-area-BYgy2rRU.js} +1 -1
  113. package/dist/client/assets/{search-input-D6oau9hI.js → search-input-DouvVIAY.js} +1 -1
  114. package/dist/client/assets/{select-model-Di1os-Ub.js → select-model-BwlI7XmT.js} +1 -1
  115. package/dist/client/assets/{select-DeRvPFq1.js → select-tWER34RX.js} +1 -1
  116. package/dist/client/assets/{settings-layout-Ds_Ffodp.js → settings-layout-DM8Inkwn.js} +1 -1
  117. package/dist/client/assets/{settings-section-RBLHL8gf.js → settings-section-Dr0LUAWl.js} +1 -1
  118. package/dist/client/assets/{shell-layout-BBGXUnLn.js → shell-layout-RjvCJ64C.js} +1 -1
  119. package/dist/client/assets/{skeleton-BAo1ij7j.js → skeleton-CUpGn6FE.js} +1 -1
  120. package/dist/client/assets/{sso-CKN-2e5M.js → sso-BIwBaU8W.js} +1 -1
  121. package/dist/client/assets/{store-hnD4E6ii.js → store-DxMzTKYE.js} +1 -1
  122. package/dist/client/assets/store-registry-4KpCoRMs.js +2 -0
  123. package/dist/client/assets/{switch-BGrAKUyr.js → switch-DEvD95wE.js} +1 -1
  124. package/dist/client/assets/{table-0gEoBFzX.js → table-C3UVFCYb.js} +1 -1
  125. package/dist/client/assets/{tabs-ChLvcDIf.js → tabs-BVEP2lWJ.js} +1 -1
  126. package/dist/client/assets/{task-status-B0G255I6.js → task-status-CGfLBMZl.js} +1 -1
  127. package/dist/client/assets/{textarea-CDageIb2.js → textarea-D7sU3_M1.js} +1 -1
  128. package/dist/client/assets/{toggle-group-BUN1pnfF.js → toggle-group-V7Yt1Ex8.js} +1 -1
  129. package/dist/client/assets/{tools-list-DIvrgoIa.js → tools-list-CABaXV8v.js} +1 -1
  130. package/dist/client/assets/{tooltip-pBgOajzM.js → tooltip-apD1iSo_.js} +1 -1
  131. package/dist/client/assets/{types-wSZC8rz7.js → types-CD5tpm5b.js} +1 -1
  132. package/dist/client/assets/{use-ai-providers-DVEz2NmK.js → use-ai-providers-CGTNouwr.js} +1 -1
  133. package/dist/client/assets/{use-collections-DV5bwdGb.js → use-collections-DFWGNuJR.js} +1 -1
  134. package/dist/client/assets/{use-connection-fs-HjrZ7.js → use-connection-C-BvdB1r.js} +1 -1
  135. package/dist/client/assets/{use-copy-lIGig9yc.js → use-copy-DefGD5Vz.js} +1 -1
  136. package/dist/client/assets/{use-create-virtual-mcp-Bz4IDcO1.js → use-create-virtual-mcp-CBpUnMCs.js} +1 -1
  137. package/dist/client/assets/{use-decopilot-events-B38OLSFm.js → use-decopilot-events-ltSQJ_A7.js} +1 -1
  138. package/dist/client/assets/{use-delete-connection-CORGK4Oi.js → use-delete-connection-DpaPpzHo.js} +1 -1
  139. package/dist/client/assets/{use-infinite-scroll-C0wp7W5X.js → use-infinite-scroll-BQ-INmUl.js} +1 -1
  140. package/dist/client/assets/{use-list-state-DWVI_yIs.js → use-list-state-D1F4t091.js} +1 -1
  141. package/dist/client/assets/{use-mcp-tools-C-hABbHm.js → use-mcp-tools-BrbjMOtH.js} +1 -1
  142. package/dist/client/assets/{use-members-DbWcRqMH.js → use-members-b-HHyQxx.js} +1 -1
  143. package/dist/client/assets/{use-navigate-to-agent-37f-6W2B.js → use-navigate-to-agent-vkB0KE5O.js} +1 -1
  144. package/dist/client/assets/{use-org-auth-client-5_rgl0KN.js → use-org-auth-client-DpMUudQp.js} +1 -1
  145. package/dist/client/assets/{use-org-sso-CFxSE_n9.js → use-org-sso-B1ThBRct.js} +1 -1
  146. package/dist/client/assets/{use-organization-roles-Cy74Gv9v.js → use-organization-roles-CBMuGkFt.js} +1 -1
  147. package/dist/client/assets/{use-organization-settings-B3AsJEWq.js → use-organization-settings-8KaGxc8P.js} +1 -1
  148. package/dist/client/assets/{use-registry-connections-C9X2yrii.js → use-registry-connections-q8kr-T41.js} +1 -1
  149. package/dist/client/assets/{use-status-sounds-DuT0KslZ.js → use-status-sounds-C19SUHpW.js} +1 -1
  150. package/dist/client/assets/{use-tasks-Bg4m_k7S.js → use-tasks-CKR5m1e3.js} +1 -1
  151. package/dist/client/assets/{use-view-mode-_U7GAKYn.js → use-view-mode-C6IKAuZR.js} +1 -1
  152. package/dist/client/assets/{use-virtual-mcp-CwGnYHPH.js → use-virtual-mcp-DqIUOY7O.js} +1 -1
  153. package/dist/client/assets/useInfiniteQuery-eU5lg-Wu.js +1 -0
  154. package/dist/client/assets/useSuspenseInfiniteQuery-ddH3lLnG.js +1 -0
  155. package/dist/client/assets/{user-CpC285Qu.js → user-CaH0b_KG.js} +1 -1
  156. package/dist/client/assets/{view-mode-toggle-zrlQPSP1.js → view-mode-toggle-D-dHPCyZ.js} +1 -1
  157. package/dist/client/assets/{workflow-D77PbtT7.js → workflow-BivIt-Ky.js} +1 -1
  158. package/dist/client/assets/workflow-detail-Df9rIeG5.js +1 -0
  159. package/dist/client/index.html +1 -1
  160. package/dist/server/cli.js +88 -45
  161. package/dist/server/node_modules/get-east-asian-width/index.d.ts +60 -0
  162. package/dist/server/node_modules/get-east-asian-width/index.js +30 -0
  163. package/dist/server/node_modules/get-east-asian-width/lookup-data.js +18 -0
  164. package/dist/server/node_modules/get-east-asian-width/lookup.js +135 -0
  165. package/dist/server/node_modules/get-east-asian-width/package.json +71 -0
  166. package/dist/server/node_modules/get-east-asian-width/readme.md +65 -0
  167. package/dist/server/node_modules/get-east-asian-width/utilities.js +24 -0
  168. package/dist/server/server.js +87 -44
  169. package/package.json +1 -1
  170. package/dist/client/assets/ai-providers-CCNzjFxx.js +0 -1
  171. package/dist/client/assets/index-B13jh3-s.js +0 -1
  172. package/dist/client/assets/registry-BEeKP9Pe.js +0 -2
  173. package/dist/client/assets/store-registry-s8CHypuf.js +0 -2
  174. package/dist/client/assets/useInfiniteQuery-DGrk4ASG.js +0 -1
  175. package/dist/client/assets/useSuspenseInfiniteQuery-cV09mkra.js +0 -1
  176. package/dist/client/assets/workflow-detail-DAtCF7t1.js +0 -1
  177. package/dist/server/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  178. package/dist/server/node_modules/is-fullwidth-code-point/index.js +0 -12
  179. package/dist/server/node_modules/is-fullwidth-code-point/package.json +0 -53
  180. package/dist/server/node_modules/is-fullwidth-code-point/readme.md +0 -31
  181. package/dist/server/node_modules/mimic-fn/index.d.ts +0 -54
  182. package/dist/server/node_modules/mimic-fn/index.js +0 -13
  183. package/dist/server/node_modules/mimic-fn/license +0 -9
  184. package/dist/server/node_modules/mimic-fn/package.json +0 -42
  185. package/dist/server/node_modules/mimic-fn/readme.md +0 -69
  186. package/dist/server/node_modules/onetime/index.d.ts +0 -64
  187. package/dist/server/node_modules/onetime/index.js +0 -44
  188. package/dist/server/node_modules/onetime/license +0 -9
  189. package/dist/server/node_modules/onetime/package.json +0 -43
  190. package/dist/server/node_modules/onetime/readme.md +0 -94
  191. package/dist/server/node_modules/pg-int8/LICENSE +0 -13
  192. package/dist/server/node_modules/pg-int8/README.md +0 -16
  193. package/dist/server/node_modules/pg-int8/index.js +0 -100
  194. package/dist/server/node_modules/pg-int8/package.json +0 -24
  195. package/dist/server/node_modules/postgres-array/index.d.ts +0 -4
  196. package/dist/server/node_modules/postgres-array/index.js +0 -97
  197. package/dist/server/node_modules/postgres-array/license +0 -21
  198. package/dist/server/node_modules/postgres-array/package.json +0 -35
  199. package/dist/server/node_modules/postgres-array/readme.md +0 -43
  200. package/dist/server/node_modules/postgres-bytea/index.js +0 -33
  201. package/dist/server/node_modules/postgres-bytea/license +0 -21
  202. package/dist/server/node_modules/postgres-bytea/package.json +0 -34
  203. package/dist/server/node_modules/postgres-bytea/readme.md +0 -34
  204. package/dist/server/node_modules/postgres-date/index.js +0 -116
  205. package/dist/server/node_modules/postgres-date/license +0 -21
  206. package/dist/server/node_modules/postgres-date/package.json +0 -33
  207. package/dist/server/node_modules/postgres-date/readme.md +0 -49
  208. package/dist/server/node_modules/postgres-interval/index.d.ts +0 -20
  209. package/dist/server/node_modules/postgres-interval/index.js +0 -125
  210. package/dist/server/node_modules/postgres-interval/license +0 -21
  211. package/dist/server/node_modules/postgres-interval/package.json +0 -36
  212. package/dist/server/node_modules/postgres-interval/readme.md +0 -48
  213. package/dist/server/node_modules/split2/LICENSE +0 -13
  214. package/dist/server/node_modules/split2/README.md +0 -85
  215. package/dist/server/node_modules/split2/bench.js +0 -27
  216. package/dist/server/node_modules/split2/index.js +0 -141
  217. package/dist/server/node_modules/split2/package.json +0 -39
  218. package/dist/server/node_modules/split2/test.js +0 -409
  219. package/dist/server/node_modules/string-width/index.d.ts +0 -39
  220. package/dist/server/node_modules/string-width/index.js +0 -82
  221. package/dist/server/node_modules/string-width/license +0 -9
  222. package/dist/server/node_modules/string-width/package.json +0 -64
  223. package/dist/server/node_modules/string-width/readme.md +0 -66
  224. /package/dist/server/node_modules/{is-fullwidth-code-point → get-east-asian-width}/license +0 -0
@@ -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-CQ4D5GAP.js";import{u as Ve,S as qe}from"./constants-BXUJyD1c.js";import{B as ft,g as Me}from"./constants-9TBj0Gaa.js";import{C as Qe}from"./collection-display-button-hDD2VNh1.js";import{C as ht}from"./collection-search-TTX5BBhb.js";import{C as gt}from"./card-CbtqsNyF.js";import{I as Ge}from"./integration-icon-8lhkAaq5.js";import{D as He,a as Ye,b as Je,c as O}from"./dropdown-menu-CSBZWMuU.js";import{c as Ze}from"./XCircle-BE4LAsf8.js";import{i as Xe}from"./DotsVertical-CLHEpDSq.js";import{y as et,H as Ue}from"./agent-icon-DzVM2Y3D.js";import{s as tt}from"./RefreshCcw01-BHf_tfWd.js";import{s as st}from"./Trash01-re7YiF5g.js";import{C as xt}from"./collection-table-wrapper-RDfR0u8g.js";import{E as We}from"./empty-state-C3GO5RSf.js";import{U as jt}from"./user-CpC285Qu.js";import{E as it}from"./empty-state-D8Ji8JRa.js";import{u as Ct}from"./use-list-state-DWVI_yIs.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-Cp4KelsS.js";import{a as It,c as At}from"./use-collections-DV5bwdGb.js";import{a as Tt}from"./use-connection-fs-HjrZ7.js";import{s as Et}from"./Plus-DTn86Odk.js";import{a as Ot}from"./layout-BHQ_c4RM.js";import{P as je}from"./index-B2vPEOVc.js";import"./collections-DY4I1w_a.js";import"./XClose-CDyDeDuF.js";import"./ChevronDown-C3Ygm425.js";import"./tooltip-pBgOajzM.js";import"./view-mode-toggle-zrlQPSP1.js";import"./badge-Brrebgj_.js";import"./SearchMd-a6724p0Y.js";import"./Container-D7Azh5xu.js";import"./ChevronRight-ZWCM92t_.js";import"./AlertCircle-CG9syR30.js";import"./Tool01-9otovhMh.js";import"./ArrowNarrowLeft-BoVSDn9e.js";import"./ArrowUpRight-BdaniATT.js";import"./ZapSquare-FWH2wtfn.js";import"./Users03-BPGIuPOi.js";import"./CheckCircle-DenMuCVF.js";import"./ChevronUp-D2rVf06n.js";import"./Star01-BFmiet3n.js";import"./Palette-BYEIR3m2.js";import"./LinkExternal01-DxXEJ52C.js";import"./Lock01-BguDy0uh.js";import"./Sun-CRJFmy5s.js";import"./Play-Bwjd77ev.js";import"./Settings02-CrnanDsL.js";import"./Shield01-DtxRf8Qj.js";import"./User01-BgnyFNdJ.js";import"./X-DlTdh5jK.js";import"./Zap-DE6pD70D.js";import"./table-0gEoBFzX.js";import"./avatar-D56WFjQj.js";import"./use-view-mode-_U7GAKYn.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-DgPBaKAA.js";import{u as Ve,S as qe}from"./constants-CxLUc4t1.js";import{B as ft,g as Me}from"./constants-BOiLyn9k.js";import{C as Qe}from"./collection-display-button-Cd1AAuzE.js";import{C as ht}from"./collection-search-DKaMJpI1.js";import{C as gt}from"./card-KdWbX1xC.js";import{I as Ge}from"./integration-icon-BTFNSNVv.js";import{D as He,a as Ye,b as Je,c as O}from"./dropdown-menu-D3k5KxvY.js";import{c as Ze}from"./XCircle-pfcw5bLn.js";import{i as Xe}from"./DotsVertical-BdLY0G_d.js";import{y as et,H as Ue}from"./agent-icon-BdKQ6n0b.js";import{s as tt}from"./RefreshCcw01-i1Q8uoB-.js";import{s as st}from"./Trash01-vBGY9tLb.js";import{C as xt}from"./collection-table-wrapper-BZMY30r-.js";import{E as We}from"./empty-state-Wp7TaLly.js";import{U as jt}from"./user-CaH0b_KG.js";import{E as it}from"./empty-state-CI0GC98R.js";import{u as Ct}from"./use-list-state-D1F4t091.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-eUvHx9LP.js";import{a as It,c as At}from"./use-collections-DFWGNuJR.js";import{a as Tt}from"./use-connection-C-BvdB1r.js";import{s as Et}from"./Plus-Ukcu1-Za.js";import{a as Ot}from"./layout-b284SHuQ.js";import{P as je}from"./index-CLgan7xr.js";import"./collections-JCMKBQvX.js";import"./XClose-BddCxuhK.js";import"./ChevronDown-ClwyYcv4.js";import"./tooltip-apD1iSo_.js";import"./view-mode-toggle-D-dHPCyZ.js";import"./badge-CbBFj3dT.js";import"./SearchMd-CaU1opgI.js";import"./Container-D1_FRS1u.js";import"./ChevronRight-C0UgsndQ.js";import"./AlertCircle-vEsirhNa.js";import"./Tool01-Baq41T_m.js";import"./ArrowNarrowLeft-DZv_aYqP.js";import"./ArrowUpRight-gnKwWbdS.js";import"./ZapSquare-BcZ9bNOI.js";import"./Users03-DXg5Ltjv.js";import"./CheckCircle-CG65sxv8.js";import"./ChevronUp-0O0O_hLq.js";import"./Star01-BRRUiVRZ.js";import"./Palette-DTaJJ6eW.js";import"./LinkExternal01-C0RHT0gp.js";import"./Lock01-CJP_L01s.js";import"./Sun-xRqcyI3R.js";import"./Play-wg-GRHFk.js";import"./Settings02-sn7Sw6YT.js";import"./Shield01-BV1qTPTH.js";import"./User01-Dt3HpnQa.js";import"./X-cgiyE3ZM.js";import"./Zap-Csq8iSdS.js";import"./table-C3UVFCYb.js";import"./avatar-DYHAtJIn.js";import"./use-view-mode-C6IKAuZR.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-DgPBaKAA.js";import{a as f}from"./index-CGc8iCsx.js";import"./index-CFi3i8-6.js";import"./constants-CxLUc4t1.js";import"./collections-JCMKBQvX.js";import"./index-C6uOB0Y4.js";import"./use-virtual-mcp-DqIUOY7O.js";import"./use-collections-DFWGNuJR.js";import"./monaco-editor-CI3jdnZr.js";import"./index-B2vavj0S.js";import"./accordion-6lnK-4_B.js";import"./agent-icon-BdKQ6n0b.js";import"./AlertCircle-vEsirhNa.js";import"./Tool01-Baq41T_m.js";import"./XClose-BddCxuhK.js";import"./RefreshCcw01-i1Q8uoB-.js";import"./ArrowNarrowLeft-DZv_aYqP.js";import"./XCircle-pfcw5bLn.js";import"./ArrowUpRight-gnKwWbdS.js";import"./ZapSquare-BcZ9bNOI.js";import"./Users03-DXg5Ltjv.js";import"./CheckCircle-CG65sxv8.js";import"./ChevronDown-ClwyYcv4.js";import"./ChevronRight-C0UgsndQ.js";import"./ChevronUp-0O0O_hLq.js";import"./DotsVertical-BdLY0G_d.js";import"./Container-D1_FRS1u.js";import"./Star01-BRRUiVRZ.js";import"./Palette-DTaJJ6eW.js";import"./SearchMd-CaU1opgI.js";import"./index-CLgan7xr.js";import"./tooltip-apD1iSo_.js";import"./X-cgiyE3ZM.js";import"./LinkExternal01-C0RHT0gp.js";import"./Lock01-CJP_L01s.js";import"./Sun-xRqcyI3R.js";import"./Play-wg-GRHFk.js";import"./Plus-Ukcu1-Za.js";import"./Settings02-sn7Sw6YT.js";import"./Shield01-BV1qTPTH.js";import"./Trash01-vBGY9tLb.js";import"./User01-Dt3HpnQa.js";import"./Zap-Csq8iSdS.js";import"./badge-CbBFj3dT.js";import"./select-tWER34RX.js";import"./view-mode-toggle-D-dHPCyZ.js";import"./layout-b284SHuQ.js";import"./use-connection-C-BvdB1r.js";import"./use-mcp-tools-BrbjMOtH.js";import"./dialog-B24YZzA9.js";import"./index-CLPpVsE7.js";import"./dropdown-menu-D3k5KxvY.js";import"./integration-icon-BTFNSNVv.js";import"./scroll-area-BYgy2rRU.js";import"./index-UUkaa4t8.js";import"./empty-state-Wp7TaLly.js";import"./create-sse-subscription-CxkOgzKf.js";import"./input-s7yMiYrQ.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-CQ4D5GAP.js"></script>
30
+ <script type="module" crossorigin src="/assets/index-DgPBaKAA.js"></script>
31
31
  <link rel="stylesheet" crossorigin href="/assets/index-DXHNyf1g.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(() => (L30(),mx4));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (QU(),lx4)),{migrateToLatest:U}=await Promise.resolve().then(() => (tr4(),nr4)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => as4);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return Yt1($),{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 pB0=w(()=>{Xt1();l9()});var IA1={};j0(IA1,{updateService:()=>rt,toggleViewMode:()=>tB0,toggleVibeState:()=>rB0,toggleLogFlow:()=>aB0,subscribeCliState:()=>qX1,setVibe:()=>Tp5,setTuiConsoleIntercepted:()=>AA1,setServerUrl:()=>TX1,setMigrationsDone:()=>AX1,setEnv:()=>IX1,setDevMode:()=>qp5,setDataDir:()=>Ap5,isTuiConsoleIntercepted:()=>TA1,getCliState:()=>PX1,addLogEntry:()=>$z});function qU(){for(let X of nB0)X()}function PX1(){return X7}function qX1(X){return nB0.add(X),()=>nB0.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 qp5(){X7={...X7,services:[...X7.services,{name:"Vite",status:"pending",port:0}]},qU()}function tB0(){X7={...X7,viewMode:X7.viewMode==="requests"?"config":"requests"},qU()}function aB0(){X7={...X7,logFlow:!X7.logFlow},qU()}function Ap5(X){X7={...X7,dataDir:X},qU()}function Tp5(X){X7={...X7,vibe:X},qU()}function rB0(){X7={...X7,vibe:!X7.vibe},qU()}function AA1(X){rs4=X}function TA1(){return rs4}var X7,nB0,rs4=!1;var Kz=w(()=>{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},nB0=new Set});import{createServer as os4}from"net";function Ip5(X){return new Promise((Y)=>{let G=os4();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function VA1(X){if(await Ip5(X))return X;let Y=await new Promise((G,Q)=>{let J=os4();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 oB0=()=>{};var sB0={};j0(sB0,{startDevServer:()=>jp5});import{join as Vp5}from"path";function ss4(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function es4(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 $=ss4(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=ss4(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)$z({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function jp5(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=Vp5(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)es4(U.stdout),es4(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 eB0=w(()=>{pB0();Kz();oB0()});import{Box as XN0,Text as YN0}from"ink";import{jsx as Ye4,jsxs as jA1}from"react/jsx-runtime";function Xe4(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 Sp5(X,Y){if(Mp5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Rp5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>Xe4(W)).join(", "),color:"cyan"}}let Q=Xe4(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 kp5(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 Ge4({env:X}){let Y=kp5(X);return Ye4(XN0,{flexDirection:"column",children:Y.map((G)=>jA1(XN0,{flexDirection:"column",marginTop:1,children:[jA1(YN0,{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=Sp5(Q,J);return jA1(XN0,{children:[jA1(YN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),Ye4(YN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Mp5,Rp5;var Qe4=w(()=>{Mp5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Rp5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var GN0;var Je4=w(()=>{GN0={name:"decocms",version:"2.302.7",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 vp5}from"@inkjs/ui";import{useSyncExternalStore as Ze4}from"react";import{jsx as AY,jsxs as sQ}from"react/jsx-runtime";function xp5(X,Y){if(!X||!yp5.has(X))return X;let G=QN0[Y]??QN0[QN0.length-1];return X==="#875f00"?G[0]:G[1]}function We4({status:X}){if(X==="pending")return AY(vp5,{label:""});return AY(RX,{color:"green",children:"\u2713"})}function $e4({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=Ze4(Rl0,Ml0),Z=Ze4(fl0,_l0);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,bp5-U);return sQ(AU,{flexDirection:"row",children:[$.map((N,z)=>{let O=xp5(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",GN0.version]})]}):sQ(AU,{flexDirection:"column",marginTop:1,children:[_p5.map(($,K)=>AY(RX,{color:fp5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",GN0.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(We4,{status:$.status})]},$.name)),sQ(AU,{gap:1,children:[AY(RX,{children:"Migrations"}),AY(We4,{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 _p5,fp5,QN0,bp5=30,yp5;var Ke4=w(()=>{Je4();dn1();an1();_p5=[" \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 "],fp5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],QN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],yp5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as hp5}from"react";function gp5(){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 up5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function He4(){return hp5(up5,gp5)}var MA1;var Fe4=w(()=>{MA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as lp5,Text as VX1}from"ink";import{useSyncExternalStore as mp5}from"react";import{jsx as JN0,jsxs as ZN0}from"react/jsx-runtime";function dp5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function Ue4({logs:X,headerHeight:Y}){let{rows:G}=He4(),{logFlow:Q}=mp5(qX1,PX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return JN0(lp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return JN0(VX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ZN0(VX1,{children:[ZN0(VX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),JN0(VX1,{color:dp5(Z.status),children:Z.status}),ZN0(VX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var Be4=w(()=>{Kz();Fe4()});var WN0={};j0(WN0,{App:()=>rp5});import{Box as cp5,Text as ip5,useInput as pp5}from"ink";import{useSyncExternalStore as np5}from"react";import{jsx as RA1,jsxs as op5}from"react/jsx-runtime";function rp5({home:X}){let Y=np5(qX1,PX1);return pp5((G)=>{if(G==="k"||G==="K")tB0();if(G==="l"||G==="L")aB0();if((G==="v"||G==="V")&&Y.dataDir)en1(Y.dataDir),rB0();if((G==="n"||G==="N")&&Y.vibe)sn1()}),op5(cp5,{flexDirection:"column",children:[RA1($e4,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?RA1(Ge4,{env:Y.env}):RA1(ip5,{dimColor:!0,children:"Loading configuration..."}):RA1(Ue4,{logs:Y.logs,headerHeight:Y.vibe?ap5:tp5})]})}var tp5=15,ap5=19;var $N0=w(()=>{Qe4();Ke4();Be4();Kz();Sd()});function Ne4(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((Qn5)=>{Qn5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Qn5.HttpAuthLocation||(Qn5.HttpAuthLocation={}));Qn5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Qn5.HttpApiKeyAuthLocation||(Qn5.HttpApiKeyAuthLocation={}));Qn5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(Qn5.EndpointURLScheme||(Qn5.EndpointURLScheme={}));Qn5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(Qn5.AlgorithmId||(Qn5.AlgorithmId={}));var sp5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>Qn5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>Qn5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},ep5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},Xn5=(X)=>{return sp5(X)},Yn5=(X)=>{return ep5(X)};Qn5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(Qn5.FieldPosition||(Qn5.FieldPosition={}));var Gn5="__smithy_context";Qn5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(Qn5.IniSectionType||(Qn5.IniSectionType={}));Qn5.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"})(Qn5.RequestHandlerProtocol||(Qn5.RequestHandlerProtocol={}));Qn5.SMITHY_CONTEXT_KEY=Gn5;Qn5.getDefaultClientConfiguration=Xn5;Qn5.resolveDefaultRuntimeConfig=Yn5});var u7=k((Bn5)=>{var $n5=vj(),Kn5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},Hn5=(X)=>{return{httpHandler:X.httpHandler()}};class ze4{name;kind;values;constructor({name:X,kind:Y=$n5.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 Oe4{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=Fn5(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 Fn5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class De4{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 Un5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}Bn5.Field=ze4;Bn5.Fields=Oe4;Bn5.HttpRequest=SA1;Bn5.HttpResponse=De4;Bn5.getHttpHandlerExtensionConfiguration=Kn5;Bn5.isValidHostname=Un5;Bn5.resolveHttpHandlerRuntimeConfig=Hn5});function Pn5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&we4.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 we4,qn5,Le4=(X)=>({applyToStack:(Y)=>{Y.add(Pn5(X),qn5)}});var Ee4=w(()=>{we4=Y1(u7(),1);qn5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,kA1,_j,CA1,E9,Pe4,MX1;var LH=w(()=>{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"})(Pe4||(Pe4={}));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 zN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(Rq||(Rq={}))});var An5="AWS_REQUEST_CHECKSUM_CALCULATION",Tn5="request_checksum_calculation",qe4;var Ae4=w(()=>{LH();zN0();qe4={environmentVariableSelector:(X)=>ot(X,An5,wH,Rq.ENV),configFileSelector:(X)=>ot(X,Tn5,wH,Rq.CONFIG),default:kA1}});var In5="AWS_RESPONSE_CHECKSUM_VALIDATION",Vn5="response_checksum_validation",Te4;var Ie4=w(()=>{LH();zN0();Te4={environmentVariableSelector:(X)=>ot(X,In5,_j,Rq.ENV),configFileSelector:(X)=>ot(X,Vn5,_j,Rq.CONFIG),default:CA1}});var DN0=k((bn5)=>{var jn5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Mn5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Rn5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Sn5=[500,502,503,504],kn5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Cn5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],Ve4=(X)=>X?.$retryable!==void 0,vn5=(X)=>jn5.includes(X.name),je4=(X)=>X.$metadata?.clockSkewCorrected,Me4=(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)},_n5=(X)=>X.$metadata?.httpStatusCode===429||Mn5.includes(X.name)||X.$retryable?.throttling==!0,ON0=(X,Y=0)=>Ve4(X)||je4(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Rn5.includes(X.name)||kn5.includes(X?.code||"")||Cn5.includes(X?.code||"")||Sn5.includes(X.$metadata?.httpStatusCode||0)||Me4(X)||Re4(X)||X.cause!==void 0&&Y<=10&&ON0(X.cause,Y+1),fn5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!ON0(X))return!0;return!1}return!1};function Re4(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}bn5.isBrowserNetworkError=Me4;bn5.isClockSkewCorrectedError=je4;bn5.isClockSkewError=vn5;bn5.isNodeJsHttp2TransientError=Re4;bn5.isRetryableByTrait=Ve4;bn5.isServerError=fn5;bn5.isThrottlingError=_n5;bn5.isTransientError=ON0});var Dw=k((sn5)=>{var cn5=DN0();sn5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(sn5.RETRY_MODES||(sn5.RETRY_MODES={}));var _A1=3,in5=sn5.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"||cn5.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 pn5=100,EN0=20000,nn5=500,wN0=500,tn5=5,an5=10,Se4=1,rn5="amz-sdk-invocation-id",on5="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 ke4{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,EN0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class LN0{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(EN0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var vA1={incompatible:1,attempts:2,capacity:3};class RX1{mode=sn5.RETRY_MODES.STANDARD;capacity=wN0;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 ke4}async acquireInitialRetryToken(X){return new LN0(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 LN0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(wN0,this.capacity+(X.getRetryCost()??Se4))}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 Ce4{mode=sn5.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 ve4 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}}sn5.AdaptiveRetryStrategy=Ce4;sn5.ConfiguredRetryStrategy=ve4;sn5.DEFAULT_MAX_ATTEMPTS=_A1;sn5.DEFAULT_RETRY_DELAY_BASE=pn5;sn5.DEFAULT_RETRY_MODE=in5;sn5.DefaultRateLimiter=fA1;sn5.INITIAL_RETRY_TOKENS=wN0;sn5.INVOCATION_ID_HEADER=rn5;sn5.MAXIMUM_RETRY_DELAY=EN0;sn5.NO_RETRY_INCREMENT=Se4;sn5.REQUEST_HEADER=on5;sn5.RETRY_COST=tn5;sn5.Retry=eQ;sn5.StandardRetryStrategy=RX1;sn5.THROTTLING_RETRY_DELAY_BASE=nn5;sn5.TIMEOUT_RETRY_COST=an5});var WX=k((Tt5)=>{var Ot5=Dw(),PN0={warningEmitted:!1},Dt5=(X)=>{if(X&&!PN0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)PN0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
1626
+ `);Q=W.pop()??"";for(let Z of W){let $=ss4(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=ss4(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)$z({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function jp5(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=Vp5(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)es4(U.stdout),es4(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 eB0=w(()=>{pB0();Kz();oB0()});import{Box as XN0,Text as YN0}from"ink";import{jsx as Ye4,jsxs as jA1}from"react/jsx-runtime";function Xe4(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 Sp5(X,Y){if(Mp5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Rp5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>Xe4(W)).join(", "),color:"cyan"}}let Q=Xe4(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 kp5(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 Ge4({env:X}){let Y=kp5(X);return Ye4(XN0,{flexDirection:"column",children:Y.map((G)=>jA1(XN0,{flexDirection:"column",marginTop:1,children:[jA1(YN0,{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=Sp5(Q,J);return jA1(XN0,{children:[jA1(YN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),Ye4(YN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Mp5,Rp5;var Qe4=w(()=>{Mp5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Rp5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var GN0;var Je4=w(()=>{GN0={name:"decocms",version:"2.303.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"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 vp5}from"@inkjs/ui";import{useSyncExternalStore as Ze4}from"react";import{jsx as AY,jsxs as sQ}from"react/jsx-runtime";function xp5(X,Y){if(!X||!yp5.has(X))return X;let G=QN0[Y]??QN0[QN0.length-1];return X==="#875f00"?G[0]:G[1]}function We4({status:X}){if(X==="pending")return AY(vp5,{label:""});return AY(RX,{color:"green",children:"\u2713"})}function $e4({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=Ze4(Rl0,Ml0),Z=Ze4(fl0,_l0);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,bp5-U);return sQ(AU,{flexDirection:"row",children:[$.map((N,z)=>{let O=xp5(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",GN0.version]})]}):sQ(AU,{flexDirection:"column",marginTop:1,children:[_p5.map(($,K)=>AY(RX,{color:fp5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",GN0.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(We4,{status:$.status})]},$.name)),sQ(AU,{gap:1,children:[AY(RX,{children:"Migrations"}),AY(We4,{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 _p5,fp5,QN0,bp5=30,yp5;var Ke4=w(()=>{Je4();dn1();an1();_p5=[" \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 "],fp5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],QN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],yp5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as hp5}from"react";function gp5(){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 up5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function He4(){return hp5(up5,gp5)}var MA1;var Fe4=w(()=>{MA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as lp5,Text as VX1}from"ink";import{useSyncExternalStore as mp5}from"react";import{jsx as JN0,jsxs as ZN0}from"react/jsx-runtime";function dp5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function Ue4({logs:X,headerHeight:Y}){let{rows:G}=He4(),{logFlow:Q}=mp5(qX1,PX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return JN0(lp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return JN0(VX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ZN0(VX1,{children:[ZN0(VX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),JN0(VX1,{color:dp5(Z.status),children:Z.status}),ZN0(VX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var Be4=w(()=>{Kz();Fe4()});var WN0={};j0(WN0,{App:()=>rp5});import{Box as cp5,Text as ip5,useInput as pp5}from"ink";import{useSyncExternalStore as np5}from"react";import{jsx as RA1,jsxs as op5}from"react/jsx-runtime";function rp5({home:X}){let Y=np5(qX1,PX1);return pp5((G)=>{if(G==="k"||G==="K")tB0();if(G==="l"||G==="L")aB0();if((G==="v"||G==="V")&&Y.dataDir)en1(Y.dataDir),rB0();if((G==="n"||G==="N")&&Y.vibe)sn1()}),op5(cp5,{flexDirection:"column",children:[RA1($e4,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?RA1(Ge4,{env:Y.env}):RA1(ip5,{dimColor:!0,children:"Loading configuration..."}):RA1(Ue4,{logs:Y.logs,headerHeight:Y.vibe?ap5:tp5})]})}var tp5=15,ap5=19;var $N0=w(()=>{Qe4();Ke4();Be4();Kz();Sd()});function Ne4(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((Qn5)=>{Qn5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Qn5.HttpAuthLocation||(Qn5.HttpAuthLocation={}));Qn5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(Qn5.HttpApiKeyAuthLocation||(Qn5.HttpApiKeyAuthLocation={}));Qn5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(Qn5.EndpointURLScheme||(Qn5.EndpointURLScheme={}));Qn5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(Qn5.AlgorithmId||(Qn5.AlgorithmId={}));var sp5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>Qn5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>Qn5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},ep5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},Xn5=(X)=>{return sp5(X)},Yn5=(X)=>{return ep5(X)};Qn5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(Qn5.FieldPosition||(Qn5.FieldPosition={}));var Gn5="__smithy_context";Qn5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(Qn5.IniSectionType||(Qn5.IniSectionType={}));Qn5.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"})(Qn5.RequestHandlerProtocol||(Qn5.RequestHandlerProtocol={}));Qn5.SMITHY_CONTEXT_KEY=Gn5;Qn5.getDefaultClientConfiguration=Xn5;Qn5.resolveDefaultRuntimeConfig=Yn5});var u7=k((Bn5)=>{var $n5=vj(),Kn5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},Hn5=(X)=>{return{httpHandler:X.httpHandler()}};class ze4{name;kind;values;constructor({name:X,kind:Y=$n5.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 Oe4{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=Fn5(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 Fn5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class De4{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 Un5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}Bn5.Field=ze4;Bn5.Fields=Oe4;Bn5.HttpRequest=SA1;Bn5.HttpResponse=De4;Bn5.getHttpHandlerExtensionConfiguration=Kn5;Bn5.isValidHostname=Un5;Bn5.resolveHttpHandlerRuntimeConfig=Hn5});function Pn5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&we4.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 we4,qn5,Le4=(X)=>({applyToStack:(Y)=>{Y.add(Pn5(X),qn5)}});var Ee4=w(()=>{we4=Y1(u7(),1);qn5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,kA1,_j,CA1,E9,Pe4,MX1;var LH=w(()=>{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"})(Pe4||(Pe4={}));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 zN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(Rq||(Rq={}))});var An5="AWS_REQUEST_CHECKSUM_CALCULATION",Tn5="request_checksum_calculation",qe4;var Ae4=w(()=>{LH();zN0();qe4={environmentVariableSelector:(X)=>ot(X,An5,wH,Rq.ENV),configFileSelector:(X)=>ot(X,Tn5,wH,Rq.CONFIG),default:kA1}});var In5="AWS_RESPONSE_CHECKSUM_VALIDATION",Vn5="response_checksum_validation",Te4;var Ie4=w(()=>{LH();zN0();Te4={environmentVariableSelector:(X)=>ot(X,In5,_j,Rq.ENV),configFileSelector:(X)=>ot(X,Vn5,_j,Rq.CONFIG),default:CA1}});var DN0=k((bn5)=>{var jn5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Mn5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Rn5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Sn5=[500,502,503,504],kn5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Cn5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],Ve4=(X)=>X?.$retryable!==void 0,vn5=(X)=>jn5.includes(X.name),je4=(X)=>X.$metadata?.clockSkewCorrected,Me4=(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)},_n5=(X)=>X.$metadata?.httpStatusCode===429||Mn5.includes(X.name)||X.$retryable?.throttling==!0,ON0=(X,Y=0)=>Ve4(X)||je4(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Rn5.includes(X.name)||kn5.includes(X?.code||"")||Cn5.includes(X?.code||"")||Sn5.includes(X.$metadata?.httpStatusCode||0)||Me4(X)||Re4(X)||X.cause!==void 0&&Y<=10&&ON0(X.cause,Y+1),fn5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!ON0(X))return!0;return!1}return!1};function Re4(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}bn5.isBrowserNetworkError=Me4;bn5.isClockSkewCorrectedError=je4;bn5.isClockSkewError=vn5;bn5.isNodeJsHttp2TransientError=Re4;bn5.isRetryableByTrait=Ve4;bn5.isServerError=fn5;bn5.isThrottlingError=_n5;bn5.isTransientError=ON0});var Dw=k((sn5)=>{var cn5=DN0();sn5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(sn5.RETRY_MODES||(sn5.RETRY_MODES={}));var _A1=3,in5=sn5.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"||cn5.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 pn5=100,EN0=20000,nn5=500,wN0=500,tn5=5,an5=10,Se4=1,rn5="amz-sdk-invocation-id",on5="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 ke4{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,EN0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class LN0{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(EN0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var vA1={incompatible:1,attempts:2,capacity:3};class RX1{mode=sn5.RETRY_MODES.STANDARD;capacity=wN0;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 ke4}async acquireInitialRetryToken(X){return new LN0(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 LN0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(wN0,this.capacity+(X.getRetryCost()??Se4))}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 Ce4{mode=sn5.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 ve4 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}}sn5.AdaptiveRetryStrategy=Ce4;sn5.ConfiguredRetryStrategy=ve4;sn5.DEFAULT_MAX_ATTEMPTS=_A1;sn5.DEFAULT_RETRY_DELAY_BASE=pn5;sn5.DEFAULT_RETRY_MODE=in5;sn5.DefaultRateLimiter=fA1;sn5.INITIAL_RETRY_TOKENS=wN0;sn5.INVOCATION_ID_HEADER=rn5;sn5.MAXIMUM_RETRY_DELAY=EN0;sn5.NO_RETRY_INCREMENT=Se4;sn5.REQUEST_HEADER=on5;sn5.RETRY_COST=tn5;sn5.Retry=eQ;sn5.StandardRetryStrategy=RX1;sn5.THROTTLING_RETRY_DELAY_BASE=nn5;sn5.TIMEOUT_RETRY_COST=an5});var WX=k((Tt5)=>{var Ot5=Dw(),PN0={warningEmitted:!1},Dt5=(X)=>{if(X&&!PN0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)PN0.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
@@ -4372,9 +4372,10 @@ var gitSync2 = (args, opts) => gitSync(["-c", "safe.directory=*", ...args], opts
4372
4372
  class BranchStatusMonitor {
4373
4373
  config;
4374
4374
  broadcaster;
4375
- last = null;
4375
+ last = { kind: "initializing" };
4376
4376
  timer = null;
4377
4377
  watcher = null;
4378
+ pollFallback = null;
4378
4379
  constructor(config, broadcaster) {
4379
4380
  this.config = config;
4380
4381
  this.broadcaster = broadcaster;
@@ -4382,35 +4383,66 @@ class BranchStatusMonitor {
4382
4383
  getLast() {
4383
4384
  return this.last;
4384
4385
  }
4385
- emit() {
4386
+ setPhase(next) {
4387
+ if (this.equal(this.last, next))
4388
+ return;
4389
+ this.last = next;
4390
+ this.broadcast(next);
4391
+ }
4392
+ markReady() {
4386
4393
  const next = this.compute();
4387
4394
  if (!next)
4388
4395
  return;
4389
- if (this.last && JSON.stringify(this.last) === JSON.stringify(next)) {
4396
+ if (this.equal(this.last, next))
4390
4397
  return;
4391
- }
4392
4398
  this.last = next;
4399
+ this.broadcast(next);
4400
+ this.ensureWatch();
4401
+ }
4402
+ stop() {
4403
+ if (this.timer) {
4404
+ clearTimeout(this.timer);
4405
+ this.timer = null;
4406
+ }
4407
+ if (this.watcher) {
4408
+ this.watcher.close();
4409
+ this.watcher = null;
4410
+ }
4411
+ if (this.pollFallback) {
4412
+ clearInterval(this.pollFallback);
4413
+ this.pollFallback = null;
4414
+ }
4415
+ }
4416
+ broadcast(s) {
4393
4417
  this.broadcaster.broadcastEvent("branch-status", {
4394
4418
  type: "branch-status",
4395
- ...next
4419
+ ...s
4396
4420
  });
4397
4421
  }
4422
+ equal(a, b) {
4423
+ return JSON.stringify(a) === JSON.stringify(b);
4424
+ }
4398
4425
  schedule() {
4399
4426
  if (this.timer)
4400
4427
  return;
4401
4428
  this.timer = setTimeout(() => {
4402
4429
  this.timer = null;
4403
- this.emit();
4430
+ if (this.last.kind === "ready")
4431
+ this.markReady();
4404
4432
  }, 250);
4405
4433
  }
4406
- watch() {
4407
- if (this.watcher)
4434
+ ensureWatch() {
4435
+ if (this.watcher || this.pollFallback)
4408
4436
  return;
4409
4437
  const gitDir = \`\${this.config.appRoot}/.git\`;
4410
4438
  try {
4411
4439
  this.watcher = fs2.watch(gitDir, { recursive: true }, () => this.schedule());
4440
+ this.watcher.on("error", () => {});
4412
4441
  } catch {
4413
- setInterval(() => this.emit(), 5000);
4442
+ this.pollFallback = setInterval(() => {
4443
+ if (this.last.kind === "ready")
4444
+ this.markReady();
4445
+ }, 5000);
4414
4446
  }
4415
4447
  }
4416
4448
  compute() {
@@ -4451,6 +4483,7 @@ class BranchStatusMonitor {
4451
4483
  }
4452
4484
  const headSha = run(["rev-parse", branchRef]);
4453
4485
  return {
4486
+ kind: "ready",
4454
4487
  branch,
4455
4488
  base,
4456
4489
  workingTreeDirty: dirty,
@@ -5764,9 +5797,7 @@ function makeSseStream(deps) {
5764
5797
  ...deps.getAppStatus()
5765
5798
  })));
5766
5799
  const lastBranch = deps.getLastBranchStatus();
5767
- if (lastBranch) {
5768
- c.enqueue(sseFormat("branch-status", JSON.stringify({ type: "branch-status", ...lastBranch })));
5769
- }
5800
+ c.enqueue(sseFormat("branch-status", JSON.stringify({ type: "branch-status", ...lastBranch })));
5770
5801
  deps.broadcaster.register(controller);
5771
5802
  keepAlive = setInterval(() => {
5772
5803
  try {
@@ -6561,19 +6592,33 @@ class SetupOrchestrator {
6561
6592
  return;
6562
6593
  const cloneUrl = config.git?.repository?.cloneUrl;
6563
6594
  if (cloneUrl && !isResume(config.repoDir)) {
6595
+ this.deps.branchStatus.setPhase({ kind: "cloning" });
6564
6596
  const cloneTaskId = this.deps.phaseManager?.begin("clone");
6565
6597
  const cloneLogPath = appLogPath(this.deps.logsDir, "clone");
6566
6598
  try {
6567
6599
  unlinkSync3(cloneLogPath);
6568
6600
  } catch {}
6569
6601
  const cloneTee = new LogTee(cloneLogPath, INSTALL_LOG_MAX_BYTES);
6570
- const code = await spawnClone({
6571
- config,
6572
- onChunk: (_src, data) => {
6573
- this.chunk(data);
6574
- cloneTee.write(data);
6575
- }
6576
- });
6602
+ let code;
6603
+ try {
6604
+ code = await spawnClone({
6605
+ config,
6606
+ onChunk: (_src, data) => {
6607
+ this.chunk(data);
6608
+ cloneTee.write(data);
6609
+ }
6610
+ });
6611
+ } catch (e) {
6612
+ cloneTee.close();
6613
+ const error = e.message;
6614
+ this.chunk(\`\\r
6615
+ [orchestrator] clone failed: \${error}\\r
6616
+ \`);
6617
+ if (cloneTaskId)
6618
+ this.deps.phaseManager?.fail(cloneTaskId, error);
6619
+ this.deps.branchStatus.setPhase({ kind: "clone-failed", error });
6620
+ return;
6621
+ }
6577
6622
  cloneTee.close();
6578
6623
  if (code !== 0) {
6579
6624
  this.chunk(\`\\r
@@ -6581,6 +6626,10 @@ class SetupOrchestrator {
6581
6626
  \`);
6582
6627
  if (cloneTaskId)
6583
6628
  this.deps.phaseManager?.fail(cloneTaskId, \`exit \${code}\`);
6629
+ this.deps.branchStatus.setPhase({
6630
+ kind: "clone-failed",
6631
+ error: \`exit \${code}\`
6632
+ });
6584
6633
  return;
6585
6634
  }
6586
6635
  if (cloneTaskId)
@@ -6590,6 +6639,7 @@ class SetupOrchestrator {
6590
6639
  \`);
6591
6640
  }
6592
6641
  await this.gitSetup(config);
6642
+ this.deps.branchStatus.markReady();
6593
6643
  if (config.application?.intent === "running") {
6594
6644
  const installed = await this.runInstall();
6595
6645
  if (installed)
@@ -6605,6 +6655,7 @@ class SetupOrchestrator {
6605
6655
  if (!config)
6606
6656
  return;
6607
6657
  await this.gitSetup(config);
6658
+ this.deps.branchStatus.markReady();
6608
6659
  if (config.application?.intent === "running") {
6609
6660
  if (!this.deps.installState.isInstalledFor(config, this.currentBranchHead)) {
6610
6661
  const ok = await this.runInstall();
@@ -6620,15 +6671,19 @@ class SetupOrchestrator {
6620
6671
  await this.deps.appService.stop();
6621
6672
  this.chunk(\`[orchestrator] checking out branch: \${to}\\r
6622
6673
  \`);
6674
+ this.deps.branchStatus.setPhase({ kind: "checking-out", to });
6623
6675
  try {
6624
6676
  await this.checkoutBranch(to);
6625
6677
  } catch (e) {
6678
+ const error = e.message;
6626
6679
  this.chunk(\`\\r
6627
- [orchestrator] branch-change failed: \${e.message}\\r
6680
+ [orchestrator] branch-change failed: \${error}\\r
6628
6681
  \`);
6682
+ this.deps.branchStatus.setPhase({ kind: "checkout-failed", error });
6629
6683
  return;
6630
6684
  }
6631
6685
  this.refreshBranchHead();
6686
+ this.deps.branchStatus.markReady();
6632
6687
  const ok = await this.runInstall();
6633
6688
  if (ok)
6634
6689
  await this.startIfReady();
@@ -6972,6 +7027,14 @@ var appService = new ApplicationService({
6972
7027
  \`);
6973
7028
  }
6974
7029
  });
7030
+ var branchStatus = new BranchStatusMonitor({
7031
+ appRoot: bootConfig.appRoot,
7032
+ repoDir: bootConfig.repoDir,
7033
+ daemonToken: bootConfig.daemonToken,
7034
+ daemonBootId: bootConfig.daemonBootId,
7035
+ proxyPort: bootConfig.proxyPort,
7036
+ dropPrivileges: false
7037
+ }, broadcaster);
6975
7038
  var orchestrator = new SetupOrchestrator({
6976
7039
  bootConfig: { appRoot: bootConfig.appRoot, repoDir: bootConfig.repoDir },
6977
7040
  store,
@@ -6979,9 +7042,9 @@ var orchestrator = new SetupOrchestrator({
6979
7042
  broadcaster,
6980
7043
  installState,
6981
7044
  logsDir: TMP_DIR,
6982
- phaseManager
7045
+ phaseManager,
7046
+ branchStatus
6983
7047
  });
6984
- var branchStatus = null;
6985
7048
  var discoveredScripts = null;
6986
7049
  var lastWrittenProxyPort;
6987
7050
  var origEvent = broadcaster.broadcastEvent.bind(broadcaster);
@@ -6993,27 +7056,7 @@ broadcaster.broadcastEvent = (event, data) => {
6993
7056
  };
6994
7057
  store.subscribe((event) => {
6995
7058
  orchestrator.handle(event.transition);
6996
- if (event.transition.kind === "first-bootstrap") {
6997
- refreshBranchStatusMonitor();
6998
- }
6999
7059
  });
7000
- function refreshBranchStatusMonitor() {
7001
- const enriched = store.read();
7002
- if (!enriched) {
7003
- branchStatus = null;
7004
- return;
7005
- }
7006
- const config = {
7007
- ...enriched,
7008
- daemonToken: bootConfig.daemonToken,
7009
- daemonBootId: bootConfig.daemonBootId,
7010
- proxyPort: bootConfig.proxyPort,
7011
- appRoot: bootConfig.appRoot,
7012
- repoDir: bootConfig.repoDir,
7013
- dropPrivileges: false
7014
- };
7015
- branchStatus = new BranchStatusMonitor(config, broadcaster);
7016
- }
7017
7060
  var excludeFromDiscovery = new Set([bootConfig.proxyPort]);
7018
7061
  var getDiscoveredPorts = () => {
7019
7062
  const pids = [];
@@ -7102,7 +7145,7 @@ var eventsH = makeEventsHandler({
7102
7145
  getDiscoveredScripts: () => discoveredScripts,
7103
7146
  getActiveTasks,
7104
7147
  getAppStatus: () => appService.snapshot(),
7105
- getLastBranchStatus: () => branchStatus ? branchStatus.getLast() : null
7148
+ getLastBranchStatus: () => branchStatus.getLast()
7106
7149
  });
7107
7150
  var idleH = makeIdleHandler();
7108
7151
  var proxyH = makeProxyHandler({ broadcaster, getDevPort });
@@ -7139,7 +7182,6 @@ function hydrate() {
7139
7182
  if (!initial)
7140
7183
  return;
7141
7184
  store.hydrate(initial);
7142
- refreshBranchStatusMonitor();
7143
7185
  const transitionKind = isResume(bootConfig.repoDir) ? "resume" : "first-bootstrap";
7144
7186
  orchestrator.handle({ kind: transitionKind, config: initial });
7145
7187
  if (diskOutcome.kind !== "valid") {
@@ -7248,6 +7290,7 @@ Bun.serve({
7248
7290
  process.on("SIGTERM", () => {
7249
7291
  taskManager.shutdown();
7250
7292
  appService.shutdown();
7293
+ branchStatus.stop();
7251
7294
  const branch = store.read()?.git?.repository?.branch;
7252
7295
  if (branch) {
7253
7296
  try {