decocms 2.305.1 → 2.305.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +5 -5
  2. package/dist/client/assets/{AlertCircle-Br9ewHdT.js → AlertCircle-DMzVypio.js} +1 -1
  3. package/dist/client/assets/{ArrowNarrowLeft-DfAChrcB.js → ArrowNarrowLeft-BrDi0OP6.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-kwr6Olrh.js → ArrowUpRight-CffRTFwr.js} +1 -1
  5. package/dist/client/assets/{Check-BDdvLFkb.js → Check-Ce2zaI1y.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-CvaWFdv1.js → CheckCircle-D17Wk4_q.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-BPP53zSs.js → ChevronDown-DrATxf_L.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-BMEO9ter.js → ChevronRight-D_n1A1KD.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-Blh5YuTb.js → ChevronUp-wzMtW3WF.js} +1 -1
  10. package/dist/client/assets/{Container-kSvRb_TI.js → Container-B9nOU3uH.js} +1 -1
  11. package/dist/client/assets/{DotsVertical-DlNY9ok5.js → DotsVertical-CFgJEmVd.js} +1 -1
  12. package/dist/client/assets/{LinkExternal01-DS2oa6z_.js → LinkExternal01-CJuu5L5n.js} +1 -1
  13. package/dist/client/assets/{Lock01-e_YusQxH.js → Lock01-C0NTjdQ2.js} +1 -1
  14. package/dist/client/assets/{Palette-50x6cQyB.js → Palette-BqdFVWdR.js} +1 -1
  15. package/dist/client/assets/{Play-sOXcr7Am.js → Play-CpVaHTKa.js} +1 -1
  16. package/dist/client/assets/{Plus-DFCNKucG.js → Plus-rlgpPXdn.js} +1 -1
  17. package/dist/client/assets/{RefreshCcw01-ROHijjHE.js → RefreshCcw01-CjhD_64F.js} +1 -1
  18. package/dist/client/assets/{SearchMd-DIDMC0x8.js → SearchMd-DdqkiNaX.js} +1 -1
  19. package/dist/client/assets/{Settings02-CNGOY5wS.js → Settings02-BVGX612X.js} +1 -1
  20. package/dist/client/assets/{Shield01-DswPRV6t.js → Shield01-CSGiF6c-.js} +1 -1
  21. package/dist/client/assets/{Star01-DKwz3L6O.js → Star01-DXwrqMmG.js} +1 -1
  22. package/dist/client/assets/{Sun-DDtl0tTX.js → Sun-CICDmGiY.js} +1 -1
  23. package/dist/client/assets/{Tool01-CzKvFqBY.js → Tool01-BhvNB9zc.js} +1 -1
  24. package/dist/client/assets/{Trash01-D7BNCUuW.js → Trash01-DC-0vlKK.js} +1 -1
  25. package/dist/client/assets/{User01-C5o7vY8e.js → User01-B-bRCO2n.js} +1 -1
  26. package/dist/client/assets/{Users03-BHkiN8pv.js → Users03-Bgb4m-rj.js} +1 -1
  27. package/dist/client/assets/{X-BTgbOlZp.js → X-CA0yXZSK.js} +1 -1
  28. package/dist/client/assets/{XCircle-GkBI4OoY.js → XCircle-C_-dxsPx.js} +1 -1
  29. package/dist/client/assets/{XClose-1aeyb_5i.js → XClose-1VJ455H5.js} +1 -1
  30. package/dist/client/assets/{Zap-BV4QuHX8.js → Zap-CT1x4GyR.js} +1 -1
  31. package/dist/client/assets/{ZapSquare-CE4Xi6jK.js → ZapSquare-B3dm6KZf.js} +1 -1
  32. package/dist/client/assets/{accordion-Dc2wrek1.js → accordion-DlRvrND8.js} +1 -1
  33. package/dist/client/assets/{agent-icon-Cc0OK5HW.js → agent-icon-Aidj_nbT.js} +1 -1
  34. package/dist/client/assets/{agents-list-Bm5Akk_I.js → agents-list-h-PZw07V.js} +1 -1
  35. package/dist/client/assets/ai-providers-hlFksDgI.js +1 -0
  36. package/dist/client/assets/{alert-dialog-BcOhLeAS.js → alert-dialog-DHHb9UES.js} +1 -1
  37. package/dist/client/assets/{auth-catchall-Bcv_GEN6.js → auth-catchall-CMI0fqEP.js} +1 -1
  38. package/dist/client/assets/{automation-list-row-pzX08kIl.js → automation-list-row-Dw0awDhm.js} +1 -1
  39. package/dist/client/assets/{automations-CkpX1bDz.js → automations-DgSOIlaP.js} +1 -1
  40. package/dist/client/assets/{avatar-Bb_UKexv.js → avatar-C4W3LF9U.js} +1 -1
  41. package/dist/client/assets/{badge-CtLXPOql.js → badge-CKCe4xFX.js} +1 -1
  42. package/dist/client/assets/{brand-context-CoQwouQo.js → brand-context-CFjUKEZZ.js} +1 -1
  43. package/dist/client/assets/{card-9KSBCULz.js → card-DvnenXSp.js} +1 -1
  44. package/dist/client/assets/{chat-context-DpSSbPpF.js → chat-context-DQ9F_zYD.js} +1 -1
  45. package/dist/client/assets/{checkbox-BhxVCV69.js → checkbox-CpdjRPxz.js} +1 -1
  46. package/dist/client/assets/{collection-detail-DrhrluPo.js → collection-detail-D3e0mmMi.js} +1 -1
  47. package/dist/client/assets/{collection-display-button-iLTcoZ8v.js → collection-display-button-DYp1JCHl.js} +1 -1
  48. package/dist/client/assets/{collection-search-BjYBs0ij.js → collection-search-C-8aWgKY.js} +1 -1
  49. package/dist/client/assets/{collection-search-BVAD_8E4.js → collection-search-D3JPMk2G.js} +1 -1
  50. package/dist/client/assets/{collection-table-wrapper-BA1NNqwU.js → collection-table-wrapper-hKs78OI7.js} +1 -1
  51. package/dist/client/assets/{collection-tabs-Xy0nDeMn.js → collection-tabs-DIzWCpJi.js} +1 -1
  52. package/dist/client/assets/{collections-C2uKELRr.js → collections-mK3tmeo_.js} +1 -1
  53. package/dist/client/assets/{command-BaoEIiCq.js → command-CqNHzNfW.js} +1 -1
  54. package/dist/client/assets/{connection-card-DO6bL5Cc.js → connection-card-B9jp4WAJ.js} +1 -1
  55. package/dist/client/assets/{connection-detail-Bnk5mfLJ.js → connection-detail-O5xxE160.js} +1 -1
  56. package/dist/client/assets/{connection-form-helpers-BuIlPwrP.js → connection-form-helpers-DGIGa0jl.js} +1 -1
  57. package/dist/client/assets/{connections-CkFp7lWx.js → connections-CPceMglQ.js} +1 -1
  58. package/dist/client/assets/{constants-BBgzLWSw.js → constants-BJbz7WCF.js} +1 -1
  59. package/dist/client/assets/{constants-D0hFkWmt.js → constants-DlDcmvhJ.js} +1 -1
  60. package/dist/client/assets/{dialog-D-8iKYyL.js → dialog-CMvXkbcK.js} +1 -1
  61. package/dist/client/assets/{domain-settings-BJx1AelS.js → domain-settings-D94uqHZi.js} +1 -1
  62. package/dist/client/assets/{drawer-iSQ1TA5J.js → drawer-DB3e3BTg.js} +1 -1
  63. package/dist/client/assets/{dropdown-menu-Cqo8Czah.js → dropdown-menu-BgfQQHCp.js} +1 -1
  64. package/dist/client/assets/{dynamic-plugin-layout-9QCXXZSv.js → dynamic-plugin-layout-CugRGU7x.js} +1 -1
  65. package/dist/client/assets/{empty-state-DJhaCN6r.js → empty-state-BloqPoX9.js} +1 -1
  66. package/dist/client/assets/{empty-state-Bi8xfifP.js → empty-state-Cr_Sv9jS.js} +1 -1
  67. package/dist/client/assets/{extract-connection-data-BoZTN4ct.js → extract-connection-data-Cp7JciHC.js} +1 -1
  68. package/dist/client/assets/{features-D4XsJcYn.js → features-DQcaVbot.js} +1 -1
  69. package/dist/client/assets/{form-CtqIjLmm.js → form-ruyF-qzE.js} +1 -1
  70. package/dist/client/assets/{general-BmiXpGpO.js → general-k-j41zoM.js} +1 -1
  71. package/dist/client/assets/{index-mqxitPxm.js → index-2zpbfeao.js} +1 -1
  72. package/dist/client/assets/{index-COWwoaag.js → index-B6Qwj9ip.js} +1 -1
  73. package/dist/client/assets/{index-BR5R8reE.js → index-BZG21hYr.js} +1 -1
  74. package/dist/client/assets/{index-r9M0EnR_.js → index-BrlUjE-e.js} +3 -3
  75. package/dist/client/assets/index-BwlTBk4D.js +1 -0
  76. package/dist/client/assets/{index-Cb6Wqswz.js → index-C27CjGg7.js} +1 -1
  77. package/dist/client/assets/{index-BE78uXnk.js → index-C8PfOV9c.js} +1 -1
  78. package/dist/client/assets/{index-CpmjPXU0.js → index-CghtC7iY.js} +1 -1
  79. package/dist/client/assets/{index-BddtkUN5.js → index-CpASz2l8.js} +1 -1
  80. package/dist/client/assets/{index-DpyzImMn.js → index-CvjZRJAq.js} +1 -1
  81. package/dist/client/assets/{index-CigwZVFo.js → index-DUvCyy06.js} +1 -1
  82. package/dist/client/assets/{index-DLznuG2S.js → index-DWar01dh.js} +1 -1
  83. package/dist/client/assets/{index-BetgZtTA.js → index-DXgWutpH.js} +1 -1
  84. package/dist/client/assets/{index-CdGladh1.js → index-DbwpM0oT.js} +1 -1
  85. package/dist/client/assets/{index-CNq3A1fb.js → index-QJkyRpKl.js} +1 -1
  86. package/dist/client/assets/{index-DRcAHhaZ.js → index-Qc-HM-3V.js} +2 -2
  87. package/dist/client/assets/{infiniteQueryObserver-BGG1V2SW.js → infiniteQueryObserver-CNdVc6Pq.js} +1 -1
  88. package/dist/client/assets/{input-DZM-sZUE.js → input-DVKZFl3m.js} +1 -1
  89. package/dist/client/assets/{integration-icon-kCK5G0hc.js → integration-icon-Dvo8MK78.js} +1 -1
  90. package/dist/client/assets/{label-tgV3YGrK.js → label-Ddv1lEVo.js} +1 -1
  91. package/dist/client/assets/{layout-DqQ9Ilsl.js → layout-CfRuPQpD.js} +1 -1
  92. package/dist/client/assets/{lean-canvas-recruit-modal-CC2l0iFS.js → lean-canvas-recruit-modal-CZwn_x-Z.js} +1 -1
  93. package/dist/client/assets/{login-DH2jR76t.js → login-CfKhDhQu.js} +1 -1
  94. package/dist/client/assets/{members-xakt_nq_.js → members-INSx14IN.js} +1 -1
  95. package/dist/client/assets/{monaco-editor-D0NlB5-P.js → monaco-editor-DHBFS1Nz.js} +1 -1
  96. package/dist/client/assets/{monitoring-stats-row-BCYL3TVR.js → monitoring-stats-row-nN00-ahk.js} +1 -1
  97. package/dist/client/assets/{oauth-callback-CHbPqwkB.js → oauth-callback-BHNFQm9G.js} +1 -1
  98. package/dist/client/assets/{oauth-callback-ai-provider-CplqstnV.js → oauth-callback-ai-provider-kDr85b4j.js} +1 -1
  99. package/dist/client/assets/{onboarding-DuPaOSsv.js → onboarding-DayeILgQ.js} +1 -1
  100. package/dist/client/assets/{org-layout-C7TZf2Jg.js → org-layout-B7tDIjls.js} +1 -1
  101. package/dist/client/assets/{org-plugin-layout-ytui8nvZ.js → org-plugin-layout-DijtR-Yn.js} +1 -1
  102. package/dist/client/assets/{pair-n9NIJPmt.js → pair-BTg5U2i_.js} +1 -1
  103. package/dist/client/assets/{plugin-empty-state-CfM59nCo.js → plugin-empty-state-9EVNRwqH.js} +1 -1
  104. package/dist/client/assets/{plugin-header-NjqXhQtY.js → plugin-header-CCLzoupo.js} +1 -1
  105. package/dist/client/assets/{plugin-layout-CNQvsyPi.js → plugin-layout-COwnJfBo.js} +1 -1
  106. package/dist/client/assets/{popover-DqtUnTy9.js → popover-FANYiDWd.js} +1 -1
  107. package/dist/client/assets/{profile-DR5MZQYT.js → profile-BUQJJNtu.js} +1 -1
  108. package/dist/client/assets/{project-app-view-CxUipFcI.js → project-app-view-CZmIevtW.js} +1 -1
  109. package/dist/client/assets/registry-Da4K44Xl.js +2 -0
  110. package/dist/client/assets/{registry-layout-Bgcp4P6K.js → registry-layout-CQHrnVlQ.js} +1 -1
  111. package/dist/client/assets/{required-auth-layout-D_ctViyf.js → required-auth-layout-BAyE2y-F.js} +1 -1
  112. package/dist/client/assets/{reset-password-D4lmEYTa.js → reset-password-Dj4RoKKI.js} +1 -1
  113. package/dist/client/assets/{roles-CWsuEaZG.js → roles-BLdL9t1d.js} +1 -1
  114. package/dist/client/assets/{scroll-area-By7jyUhV.js → scroll-area-C_N1tWNB.js} +1 -1
  115. package/dist/client/assets/{search-input-Bc2GlzPf.js → search-input-oOemXj8U.js} +1 -1
  116. package/dist/client/assets/{select-GU1JgcQ8.js → select-BZ8Wc1K2.js} +1 -1
  117. package/dist/client/assets/{select-model-Eeva0uff.js → select-model-Dxld4BD0.js} +1 -1
  118. package/dist/client/assets/{settings-layout-Czl6BZ2k.js → settings-layout-Db_7efbC.js} +1 -1
  119. package/dist/client/assets/{settings-section-Bm0E9Bam.js → settings-section-ylY0I5Aj.js} +1 -1
  120. package/dist/client/assets/{shell-layout-5q7_gZ4N.js → shell-layout-BS0iP_zg.js} +1 -1
  121. package/dist/client/assets/{skeleton-B-naR4Ue.js → skeleton-whDLNRvh.js} +1 -1
  122. package/dist/client/assets/{sso-CQ_IeGcT.js → sso-yKSnL6cT.js} +1 -1
  123. package/dist/client/assets/{store-Cx374GVe.js → store-DVfL7GG2.js} +1 -1
  124. package/dist/client/assets/store-registry-BGm95aFQ.js +2 -0
  125. package/dist/client/assets/{switch-svOIXPFQ.js → switch-CoU4JLeW.js} +1 -1
  126. package/dist/client/assets/{table-CiWJpXWr.js → table-CWTAYJ6R.js} +1 -1
  127. package/dist/client/assets/{tabs-CQDIgfHu.js → tabs-BK4O-4QH.js} +1 -1
  128. package/dist/client/assets/{task-status-D2H9p4od.js → task-status-CrVRLNAn.js} +1 -1
  129. package/dist/client/assets/{textarea-CtQZOqL1.js → textarea-DI97iX9T.js} +1 -1
  130. package/dist/client/assets/{toggle-group-DnRsv6Tz.js → toggle-group-BWfFiqCs.js} +1 -1
  131. package/dist/client/assets/{tools-list-DZbTEL-t.js → tools-list-C7QpB8eo.js} +1 -1
  132. package/dist/client/assets/{tooltip-UFl_p-Yt.js → tooltip-CGOE-2qV.js} +1 -1
  133. package/dist/client/assets/{types-C2HWQgQd.js → types-BELLiI8t.js} +1 -1
  134. package/dist/client/assets/{use-ai-providers-B-rgDBoR.js → use-ai-providers-6wi_VCIQ.js} +1 -1
  135. package/dist/client/assets/{use-collections-THE_UO2l.js → use-collections-VMVmbDwC.js} +1 -1
  136. package/dist/client/assets/{use-connection-DujrbCZx.js → use-connection-Bs0XMRE_.js} +1 -1
  137. package/dist/client/assets/{use-copy-CxCKKWo7.js → use-copy-EgoJUqWz.js} +1 -1
  138. package/dist/client/assets/{use-create-virtual-mcp-Dj-60SI2.js → use-create-virtual-mcp-A4WarYTW.js} +1 -1
  139. package/dist/client/assets/{use-debounced-autosave-CPg8W5oz.js → use-debounced-autosave-Dte_kAEO.js} +1 -1
  140. package/dist/client/assets/{use-decopilot-events-Cjc1o1Nu.js → use-decopilot-events-Bvp1pSkJ.js} +1 -1
  141. package/dist/client/assets/{use-delete-connection-CN1nCcIJ.js → use-delete-connection-D0RH1aQq.js} +1 -1
  142. package/dist/client/assets/{use-infinite-scroll-CKzLBp1w.js → use-infinite-scroll-Bg90tKAp.js} +1 -1
  143. package/dist/client/assets/{use-list-state-WnAz6TY1.js → use-list-state-Dkv7POhH.js} +1 -1
  144. package/dist/client/assets/{use-mcp-tools-BeS0ssuN.js → use-mcp-tools-CDG9yfix.js} +1 -1
  145. package/dist/client/assets/{use-members-3B2IEyuj.js → use-members-Bf9_euWt.js} +1 -1
  146. package/dist/client/assets/{use-navigate-to-agent-Dw9ITfQX.js → use-navigate-to-agent-DeYPLoEJ.js} +1 -1
  147. package/dist/client/assets/{use-org-auth-client-DnkEDRTk.js → use-org-auth-client-CpJqPVuH.js} +1 -1
  148. package/dist/client/assets/{use-org-sso-CN15B3wE.js → use-org-sso-GPJYud0h.js} +1 -1
  149. package/dist/client/assets/{use-organization-roles-qN1PRVvQ.js → use-organization-roles-D9esIXeR.js} +1 -1
  150. package/dist/client/assets/{use-organization-settings-RqyZhOuo.js → use-organization-settings-C7zflGqs.js} +1 -1
  151. package/dist/client/assets/{use-registry-connections-BE0aFTI1.js → use-registry-connections-B1vXrR3c.js} +1 -1
  152. package/dist/client/assets/{use-status-sounds-DkqBbPSS.js → use-status-sounds-Dlkg0R7f.js} +1 -1
  153. package/dist/client/assets/{use-tasks-DsH6cZRl.js → use-tasks-CKK53Yi7.js} +1 -1
  154. package/dist/client/assets/{use-view-mode-DbO7_qIE.js → use-view-mode-WSdAEAZS.js} +1 -1
  155. package/dist/client/assets/{use-virtual-mcp-DIBjQz5k.js → use-virtual-mcp-C9_YL7kD.js} +1 -1
  156. package/dist/client/assets/useInfiniteQuery-BthTp29S.js +1 -0
  157. package/dist/client/assets/useSuspenseInfiniteQuery-5Axxf4Tp.js +1 -0
  158. package/dist/client/assets/{user-D3SI9inq.js → user-BMeM8_Kh.js} +1 -1
  159. package/dist/client/assets/{view-mode-toggle-C1b_D_--.js → view-mode-toggle-C9wA8R9s.js} +1 -1
  160. package/dist/client/assets/{workflow-bf9m4gQp.js → workflow-CoAUdsHF.js} +1 -1
  161. package/dist/client/assets/workflow-detail-Dw2RzGR4.js +1 -0
  162. package/dist/client/index.html +1 -1
  163. package/dist/server/cli.js +1 -1
  164. package/dist/server/node_modules/environment/index.d.ts +74 -0
  165. package/dist/server/node_modules/environment/index.js +47 -0
  166. package/dist/server/node_modules/environment/license +9 -0
  167. package/dist/server/node_modules/environment/package.json +74 -0
  168. package/dist/server/node_modules/environment/readme.md +94 -0
  169. package/dist/server/node_modules/escape-string-regexp/index.d.ts +18 -0
  170. package/dist/server/node_modules/escape-string-regexp/index.js +11 -0
  171. package/dist/server/node_modules/escape-string-regexp/license +9 -0
  172. package/dist/server/node_modules/escape-string-regexp/package.json +43 -0
  173. package/dist/server/node_modules/escape-string-regexp/readme.md +29 -0
  174. package/dist/server/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  175. package/dist/server/node_modules/is-fullwidth-code-point/index.js +12 -0
  176. package/dist/server/node_modules/is-fullwidth-code-point/license +9 -0
  177. package/dist/server/node_modules/is-fullwidth-code-point/package.json +53 -0
  178. package/dist/server/node_modules/is-fullwidth-code-point/readme.md +31 -0
  179. package/dist/server/node_modules/is-unicode-supported/index.d.ts +12 -0
  180. package/dist/server/node_modules/is-unicode-supported/index.js +21 -0
  181. package/dist/server/node_modules/is-unicode-supported/license +9 -0
  182. package/dist/server/node_modules/is-unicode-supported/package.json +47 -0
  183. package/dist/server/node_modules/is-unicode-supported/readme.md +35 -0
  184. package/dist/server/node_modules/mimic-fn/index.d.ts +54 -0
  185. package/dist/server/node_modules/mimic-fn/index.js +13 -0
  186. package/dist/server/node_modules/mimic-fn/license +9 -0
  187. package/dist/server/node_modules/mimic-fn/package.json +42 -0
  188. package/dist/server/node_modules/mimic-fn/readme.md +69 -0
  189. package/dist/server/node_modules/pg-int8/LICENSE +13 -0
  190. package/dist/server/node_modules/pg-int8/README.md +16 -0
  191. package/dist/server/node_modules/pg-int8/index.js +100 -0
  192. package/dist/server/node_modules/pg-int8/package.json +24 -0
  193. package/dist/server/node_modules/postgres-array/index.d.ts +4 -0
  194. package/dist/server/node_modules/postgres-array/index.js +97 -0
  195. package/dist/server/node_modules/postgres-array/license +21 -0
  196. package/dist/server/node_modules/postgres-array/package.json +35 -0
  197. package/dist/server/node_modules/postgres-array/readme.md +43 -0
  198. package/dist/server/node_modules/restore-cursor/index.d.ts +11 -0
  199. package/dist/server/node_modules/restore-cursor/index.js +11 -0
  200. package/dist/server/node_modules/restore-cursor/license +9 -0
  201. package/dist/server/node_modules/restore-cursor/package.json +55 -0
  202. package/dist/server/node_modules/restore-cursor/readme.md +31 -0
  203. package/dist/server/node_modules/split2/LICENSE +13 -0
  204. package/dist/server/node_modules/split2/README.md +85 -0
  205. package/dist/server/node_modules/split2/bench.js +27 -0
  206. package/dist/server/node_modules/split2/index.js +141 -0
  207. package/dist/server/node_modules/split2/package.json +39 -0
  208. package/dist/server/node_modules/split2/test.js +409 -0
  209. package/dist/server/node_modules/string-width/index.d.ts +39 -0
  210. package/dist/server/node_modules/string-width/index.js +82 -0
  211. package/dist/server/node_modules/string-width/license +9 -0
  212. package/dist/server/node_modules/string-width/package.json +64 -0
  213. package/dist/server/node_modules/string-width/readme.md +66 -0
  214. package/package.json +1 -1
  215. package/dist/client/assets/ai-providers-BTHVSznc.js +0 -1
  216. package/dist/client/assets/index-DR3jGuDX.js +0 -1
  217. package/dist/client/assets/registry-D_qBGD1h.js +0 -2
  218. package/dist/client/assets/store-registry-BxAYDZYi.js +0 -2
  219. package/dist/client/assets/useInfiniteQuery-B3MVtmJM.js +0 -1
  220. package/dist/client/assets/useSuspenseInfiniteQuery-BCYthwLz.js +0 -1
  221. package/dist/client/assets/workflow-detail-_fTRA7hJ.js +0 -1
@@ -1643,7 +1643,7 @@ AS SELECT
1643
1643
  FROM monitoring_metrics
1644
1644
  GROUP BY organization_id, name, bucket, connection_id, tool_name, status
1645
1645
  `}),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 cA1(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(() => (u$1(),g$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(() => (YW0(),Zg4));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (GU(),Jg4)),{migrateToLatest:U}=await Promise.resolve().then(() => (Bs4(),Us4)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => N16);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return xt1($),{settings:$,services:Z.map((K)=>({name:K.name==="PostgreSQL"?"Postgres":K.name,port:K.port})),managedServiceNames:Z.filter((K)=>K.owner==="managed").map((K)=>K.name)}}var kN0=w(()=>{yt1();l9()});var nA1={};T0(nA1,{updateService:()=>Ya,toggleViewMode:()=>vN0,toggleVibeState:()=>fN0,toggleLogFlow:()=>_N0,subscribeCliState:()=>CX1,setVibe:()=>Wa5,setTuiConsoleIntercepted:()=>iA1,setServerUrl:()=>_X1,setMigrationsDone:()=>vX1,setEnv:()=>fX1,setDevMode:()=>Ja5,setDataDir:()=>Za5,isTuiConsoleIntercepted:()=>pA1,getCliState:()=>kX1,addLogEntry:()=>Zz});function PU(){for(let X of CN0)X()}function kX1(){return e9}function CX1(X){return CN0.add(X),()=>CN0.delete(X)}function Ya(X){e9={...e9,services:e9.services.map((Y)=>Y.name===X.name?X:Y)},PU()}function vX1(){e9={...e9,migrationsStatus:"done"},PU()}function _X1(X){e9={...e9,serverUrl:X},PU()}function fX1(X){e9={...e9,env:X},PU()}function Zz(X){let Y=[...e9.logs,X];e9={...e9,logs:Y.length>500?Y.slice(-500):Y},PU()}function Ja5(){e9={...e9,services:[...e9.services,{name:"Vite",status:"pending",port:0}]},PU()}function vN0(){e9={...e9,viewMode:e9.viewMode==="requests"?"config":"requests"},PU()}function _N0(){e9={...e9,logFlow:!e9.logFlow},PU()}function Za5(X){e9={...e9,dataDir:X},PU()}function Wa5(X){e9={...e9,vibe:X},PU()}function fN0(){e9={...e9,vibe:!e9.vibe},PU()}function iA1(X){z16=X}function pA1(){return z16}var e9,CN0,z16=!1;var Wz=w(()=>{e9={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},CN0=new Set});import{createServer as O16}from"net";function $a5(X){return new Promise((Y)=>{let G=O16();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function tA1(X){if(await $a5(X))return X;let Y=await new Promise((G,Q)=>{let J=O16();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 bN0=()=>{};var yN0={};T0(yN0,{startDevServer:()=>Ha5});import{join as Ka5}from"path";function D16(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function w16(X){let Y=X.getReader(),G=new TextDecoder,Q="";function J(){let W=Q.split(`
1646
- `);Q=W.pop()??"";for(let Z of W){let $=D16(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Zz({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=D16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Ha5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await tA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await cA1({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)Ya({name:z.name,status:"ready",port:z.port});fX1(W),vX1();let K=Ka5(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)w16(U.stdout),w16(U.stderr);let B=G||`http://localhost:${W.port}`;_X1(B),Ya({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (u$1(),g$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var xN0=w(()=>{kN0();Wz();bN0()});import{Box as hN0,Text as gN0}from"ink";import{jsx as E16,jsxs as aA1}from"react/jsx-runtime";function L16(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 Ba5(X,Y){if(Fa5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Ua5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>L16(W)).join(", "),color:"cyan"}}let Q=L16(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 Na5(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 P16({env:X}){let Y=Na5(X);return E16(hN0,{flexDirection:"column",children:Y.map((G)=>aA1(hN0,{flexDirection:"column",marginTop:1,children:[aA1(gN0,{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=Ba5(Q,J);return aA1(hN0,{children:[aA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),E16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Fa5,Ua5;var q16=w(()=>{Fa5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Ua5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var A16=w(()=>{uN0={name:"decocms",version:"2.305.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@deco-cx/warp-node":"^0.3.20","@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 qU,Text as RX}from"ink";import{Spinner as Oa5}from"@inkjs/ui";import{useSyncExternalStore as T16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function Pa5(X,Y){if(!X||!Ea5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function I16({status:X}){if(X==="pending")return TY(Oa5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function V16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=T16(dm0,mm0),Z=T16(am0,tm0);return sQ(qU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(qU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,La5-U);return sQ(qU,{flexDirection:"row",children:[$.map((N,z)=>{let O=Pa5(N.color,K);return O?TY(RX,{color:O,children:N.text},z):TY(RX,{children:N.text},z)}),TY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?TY(RX,{color:N.color,children:N.char},z):TY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}):sQ(qU,{flexDirection:"column",marginTop:1,children:[Da5.map(($,K)=>TY(RX,{color:wa5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}),TY(qU,{marginBottom:1,children:TY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),TY(qU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(qU,{gap:2,children:[X.map(($)=>sQ(qU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),TY(I16,{status:$.status})]},$.name)),sQ(qU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(I16,{status:Y})]})]}),TY(qU,{children:Q?sQ(RX,{children:["Open in browser: ",TY(RX,{color:"cyan",children:Q})]}):TY(RX,{dimColor:!0,children:"Starting..."})}),sQ(qU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var Da5,wa5,lN0,La5=30,Ea5;var j16=w(()=>{A16();Vt1();Ct1();Da5=[" \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 "],wa5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],lN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],Ea5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as qa5}from"react";function Aa5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==rA1.rows||Y!==rA1.columns)rA1={rows:X,columns:Y};return rA1}function Ta5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function M16(){return qa5(Ta5,Aa5)}var rA1;var R16=w(()=>{rA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Ia5,Text as bX1}from"ink";import{useSyncExternalStore as Va5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function ja5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function S16({logs:X,headerHeight:Y}){let{rows:G}=M16(),{logFlow:Q}=Va5(CX1,kX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Ia5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(bX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(bX1,{children:[dN0(bX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(bX1,{color:ja5(Z.status),children:Z.status}),dN0(bX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var k16=w(()=>{Wz();R16()});var cN0={};T0(cN0,{App:()=>_a5});import{Box as Ma5,Text as Ra5,useInput as Sa5}from"ink";import{useSyncExternalStore as ka5}from"react";import{jsx as oA1,jsxs as fa5}from"react/jsx-runtime";function _a5({home:X}){let Y=ka5(CX1,kX1);return Sa5((G)=>{if(G==="k"||G==="K")vN0();if(G==="l"||G==="L")_N0();if((G==="v"||G==="V")&&Y.dataDir)bt1(Y.dataDir),fN0();if((G==="n"||G==="N")&&Y.vibe)ft1()}),fa5(Ma5,{flexDirection:"column",children:[oA1(V16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?oA1(P16,{env:Y.env}):oA1(Ra5,{dimColor:!0,children:"Loading configuration..."}):oA1(S16,{logs:Y.logs,headerHeight:Y.vibe?va5:Ca5})]})}var Ca5=15,va5=19;var iN0=w(()=>{q16();j16();k16();Wz();fd()});function C16(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,OTEL_EXPORTER_OTLP_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_PROTOCOL:process.env.OTEL_EXPORTER_OTLP_PROTOCOL,OTEL_RESOURCE_ATTRIBUTES:process.env.OTEL_RESOURCE_ATTRIBUTES,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 bj=k((ua5)=>{ua5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ua5.HttpAuthLocation||(ua5.HttpAuthLocation={}));ua5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ua5.HttpApiKeyAuthLocation||(ua5.HttpApiKeyAuthLocation={}));ua5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(ua5.EndpointURLScheme||(ua5.EndpointURLScheme={}));ua5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(ua5.AlgorithmId||(ua5.AlgorithmId={}));var ba5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>ua5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>ua5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},ya5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},xa5=(X)=>{return ba5(X)},ha5=(X)=>{return ya5(X)};ua5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(ua5.FieldPosition||(ua5.FieldPosition={}));var ga5="__smithy_context";ua5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(ua5.IniSectionType||(ua5.IniSectionType={}));ua5.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"})(ua5.RequestHandlerProtocol||(ua5.RequestHandlerProtocol={}));ua5.SMITHY_CONTEXT_KEY=ga5;ua5.getDefaultClientConfiguration=xa5;ua5.resolveDefaultRuntimeConfig=ha5});var u7=k((aa5)=>{var ca5=bj(),ia5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},pa5=(X)=>{return{httpHandler:X.httpHandler()}};class v16{name;kind;values;constructor({name:X,kind:Y=ca5.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 _16{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=na5(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 na5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class f16{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 ta5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}aa5.Field=v16;aa5.Fields=_16;aa5.HttpRequest=sA1;aa5.HttpResponse=f16;aa5.getHttpHandlerExtensionConfiguration=ia5;aa5.isValidHostname=ta5;aa5.resolveHttpHandlerRuntimeConfig=pa5});function Qr5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&b16.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 b16,Jr5,y16=(X)=>({applyToStack:(Y)=>{Y.add(Qr5(X),Jr5)}});var x16=w(()=>{b16=X1(u7(),1);Jr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,eA1,yj,XT1,E9,h16,xX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},eA1=wH.WHEN_SUPPORTED,yj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=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"})(h16||(h16={}));xX1=E9.CRC32});var kq,Ga=(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 sN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Zr5="AWS_REQUEST_CHECKSUM_CALCULATION",Wr5="request_checksum_calculation",g16;var u16=w(()=>{LH();sN0();g16={environmentVariableSelector:(X)=>Ga(X,Zr5,wH,kq.ENV),configFileSelector:(X)=>Ga(X,Wr5,wH,kq.CONFIG),default:eA1}});var $r5="AWS_RESPONSE_CHECKSUM_VALIDATION",Kr5="response_checksum_validation",l16;var m16=w(()=>{LH();sN0();l16={environmentVariableSelector:(X)=>Ga(X,$r5,yj,kq.ENV),configFileSelector:(X)=>Ga(X,Kr5,yj,kq.CONFIG),default:XT1}});var Xz0=k((Lr5)=>{var Hr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Fr5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ur5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Br5=[500,502,503,504],Nr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],zr5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],d16=(X)=>X?.$retryable!==void 0,Or5=(X)=>Hr5.includes(X.name),c16=(X)=>X.$metadata?.clockSkewCorrected,i16=(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)},Dr5=(X)=>X.$metadata?.httpStatusCode===429||Fr5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>d16(X)||c16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Ur5.includes(X.name)||Nr5.includes(X?.code||"")||zr5.includes(X?.code||"")||Br5.includes(X.$metadata?.httpStatusCode||0)||i16(X)||p16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),wr5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!eN0(X))return!0;return!1}return!1};function p16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Lr5.isBrowserNetworkError=i16;Lr5.isClockSkewCorrectedError=c16;Lr5.isClockSkewError=Or5;Lr5.isNodeJsHttp2TransientError=p16;Lr5.isRetryableByTrait=d16;Lr5.isServerError=wr5;Lr5.isThrottlingError=Dr5;Lr5.isTransientError=eN0});var Dw=k((br5)=>{var Mr5=Xz0();br5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(br5.RETRY_MODES||(br5.RETRY_MODES={}));var GT1=3,Rr5=br5.RETRY_MODES.STANDARD;class QT1{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"||Mr5.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)=>QT1.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 Sr5=100,Qz0=20000,kr5=500,Yz0=500,Cr5=5,vr5=10,n16=1,_r5="amz-sdk-invocation-id",fr5="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 t16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Qz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Gz0{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(Qz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var YT1={incompatible:1,attempts:2,capacity:3};class hX1{mode=br5.RETRY_MODES.STANDARD;capacity=Yz0;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()=>GT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new t16}async acquireInitialRetryToken(X){return new Gz0(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===YT1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new Gz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Yz0,this.capacity+(X.getRetryCost()??n16))}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 ${GT1}`),GT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:YT1.incompatible,W=Q<G?0:YT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:YT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class a16{mode=br5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new QT1,this.standardRetryStrategy=Y?new hX1({maxAttempts:typeof X==="number"?X:3,...Y}):new hX1(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 r16 extends hX1{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}}br5.AdaptiveRetryStrategy=a16;br5.ConfiguredRetryStrategy=r16;br5.DEFAULT_MAX_ATTEMPTS=GT1;br5.DEFAULT_RETRY_DELAY_BASE=Sr5;br5.DEFAULT_RETRY_MODE=Rr5;br5.DefaultRateLimiter=QT1;br5.INITIAL_RETRY_TOKENS=Yz0;br5.INVOCATION_ID_HEADER=_r5;br5.MAXIMUM_RETRY_DELAY=Qz0;br5.NO_RETRY_INCREMENT=n16;br5.REQUEST_HEADER=fr5;br5.RETRY_COST=Cr5;br5.Retry=eQ;br5.StandardRetryStrategy=hX1;br5.THROTTLING_RETRY_DELAY_BASE=kr5;br5.TIMEOUT_RETRY_COST=vr5});var WX=k((Wo5)=>{var sr5=Dw(),Jz0={warningEmitted:!1},er5=(X)=>{if(X&&!Jz0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)Jz0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
1646
+ `);Q=W.pop()??"";for(let Z of W){let $=D16(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Zz({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=D16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Ha5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await tA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await cA1({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)Ya({name:z.name,status:"ready",port:z.port});fX1(W),vX1();let K=Ka5(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)w16(U.stdout),w16(U.stderr);let B=G||`http://localhost:${W.port}`;_X1(B),Ya({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (u$1(),g$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var xN0=w(()=>{kN0();Wz();bN0()});import{Box as hN0,Text as gN0}from"ink";import{jsx as E16,jsxs as aA1}from"react/jsx-runtime";function L16(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 Ba5(X,Y){if(Fa5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Ua5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>L16(W)).join(", "),color:"cyan"}}let Q=L16(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 Na5(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 P16({env:X}){let Y=Na5(X);return E16(hN0,{flexDirection:"column",children:Y.map((G)=>aA1(hN0,{flexDirection:"column",marginTop:1,children:[aA1(gN0,{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=Ba5(Q,J);return aA1(hN0,{children:[aA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),E16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Fa5,Ua5;var q16=w(()=>{Fa5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Ua5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var A16=w(()=>{uN0={name:"decocms",version:"2.305.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@deco-cx/warp-node":"^0.3.20","@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 qU,Text as RX}from"ink";import{Spinner as Oa5}from"@inkjs/ui";import{useSyncExternalStore as T16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function Pa5(X,Y){if(!X||!Ea5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function I16({status:X}){if(X==="pending")return TY(Oa5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function V16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=T16(dm0,mm0),Z=T16(am0,tm0);return sQ(qU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(qU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,La5-U);return sQ(qU,{flexDirection:"row",children:[$.map((N,z)=>{let O=Pa5(N.color,K);return O?TY(RX,{color:O,children:N.text},z):TY(RX,{children:N.text},z)}),TY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?TY(RX,{color:N.color,children:N.char},z):TY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}):sQ(qU,{flexDirection:"column",marginTop:1,children:[Da5.map(($,K)=>TY(RX,{color:wa5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}),TY(qU,{marginBottom:1,children:TY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),TY(qU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(qU,{gap:2,children:[X.map(($)=>sQ(qU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),TY(I16,{status:$.status})]},$.name)),sQ(qU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(I16,{status:Y})]})]}),TY(qU,{children:Q?sQ(RX,{children:["Open in browser: ",TY(RX,{color:"cyan",children:Q})]}):TY(RX,{dimColor:!0,children:"Starting..."})}),sQ(qU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var Da5,wa5,lN0,La5=30,Ea5;var j16=w(()=>{A16();Vt1();Ct1();Da5=[" \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 "],wa5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],lN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],Ea5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as qa5}from"react";function Aa5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==rA1.rows||Y!==rA1.columns)rA1={rows:X,columns:Y};return rA1}function Ta5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function M16(){return qa5(Ta5,Aa5)}var rA1;var R16=w(()=>{rA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Ia5,Text as bX1}from"ink";import{useSyncExternalStore as Va5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function ja5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function S16({logs:X,headerHeight:Y}){let{rows:G}=M16(),{logFlow:Q}=Va5(CX1,kX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Ia5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(bX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(bX1,{children:[dN0(bX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(bX1,{color:ja5(Z.status),children:Z.status}),dN0(bX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var k16=w(()=>{Wz();R16()});var cN0={};T0(cN0,{App:()=>_a5});import{Box as Ma5,Text as Ra5,useInput as Sa5}from"ink";import{useSyncExternalStore as ka5}from"react";import{jsx as oA1,jsxs as fa5}from"react/jsx-runtime";function _a5({home:X}){let Y=ka5(CX1,kX1);return Sa5((G)=>{if(G==="k"||G==="K")vN0();if(G==="l"||G==="L")_N0();if((G==="v"||G==="V")&&Y.dataDir)bt1(Y.dataDir),fN0();if((G==="n"||G==="N")&&Y.vibe)ft1()}),fa5(Ma5,{flexDirection:"column",children:[oA1(V16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?oA1(P16,{env:Y.env}):oA1(Ra5,{dimColor:!0,children:"Loading configuration..."}):oA1(S16,{logs:Y.logs,headerHeight:Y.vibe?va5:Ca5})]})}var Ca5=15,va5=19;var iN0=w(()=>{q16();j16();k16();Wz();fd()});function C16(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,OTEL_EXPORTER_OTLP_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_PROTOCOL:process.env.OTEL_EXPORTER_OTLP_PROTOCOL,OTEL_RESOURCE_ATTRIBUTES:process.env.OTEL_RESOURCE_ATTRIBUTES,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 bj=k((ua5)=>{ua5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ua5.HttpAuthLocation||(ua5.HttpAuthLocation={}));ua5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ua5.HttpApiKeyAuthLocation||(ua5.HttpApiKeyAuthLocation={}));ua5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(ua5.EndpointURLScheme||(ua5.EndpointURLScheme={}));ua5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(ua5.AlgorithmId||(ua5.AlgorithmId={}));var ba5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>ua5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>ua5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},ya5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},xa5=(X)=>{return ba5(X)},ha5=(X)=>{return ya5(X)};ua5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(ua5.FieldPosition||(ua5.FieldPosition={}));var ga5="__smithy_context";ua5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(ua5.IniSectionType||(ua5.IniSectionType={}));ua5.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"})(ua5.RequestHandlerProtocol||(ua5.RequestHandlerProtocol={}));ua5.SMITHY_CONTEXT_KEY=ga5;ua5.getDefaultClientConfiguration=xa5;ua5.resolveDefaultRuntimeConfig=ha5});var u7=k((aa5)=>{var ca5=bj(),ia5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},pa5=(X)=>{return{httpHandler:X.httpHandler()}};class v16{name;kind;values;constructor({name:X,kind:Y=ca5.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 _16{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=na5(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 na5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class f16{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 ta5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}aa5.Field=v16;aa5.Fields=_16;aa5.HttpRequest=sA1;aa5.HttpResponse=f16;aa5.getHttpHandlerExtensionConfiguration=ia5;aa5.isValidHostname=ta5;aa5.resolveHttpHandlerRuntimeConfig=pa5});function Qr5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&b16.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 b16,Jr5,y16=(X)=>({applyToStack:(Y)=>{Y.add(Qr5(X),Jr5)}});var x16=w(()=>{b16=X1(u7(),1);Jr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,eA1,yj,XT1,E9,h16,xX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},eA1=wH.WHEN_SUPPORTED,yj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=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"})(h16||(h16={}));xX1=E9.CRC32});var kq,Ga=(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 sN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Zr5="AWS_REQUEST_CHECKSUM_CALCULATION",Wr5="request_checksum_calculation",g16;var u16=w(()=>{LH();sN0();g16={environmentVariableSelector:(X)=>Ga(X,Zr5,wH,kq.ENV),configFileSelector:(X)=>Ga(X,Wr5,wH,kq.CONFIG),default:eA1}});var $r5="AWS_RESPONSE_CHECKSUM_VALIDATION",Kr5="response_checksum_validation",l16;var m16=w(()=>{LH();sN0();l16={environmentVariableSelector:(X)=>Ga(X,$r5,yj,kq.ENV),configFileSelector:(X)=>Ga(X,Kr5,yj,kq.CONFIG),default:XT1}});var Xz0=k((Lr5)=>{var Hr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Fr5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ur5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Br5=[500,502,503,504],Nr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],zr5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],d16=(X)=>X?.$retryable!==void 0,Or5=(X)=>Hr5.includes(X.name),c16=(X)=>X.$metadata?.clockSkewCorrected,i16=(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)},Dr5=(X)=>X.$metadata?.httpStatusCode===429||Fr5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>d16(X)||c16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Ur5.includes(X.name)||Nr5.includes(X?.code||"")||zr5.includes(X?.code||"")||Br5.includes(X.$metadata?.httpStatusCode||0)||i16(X)||p16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),wr5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!eN0(X))return!0;return!1}return!1};function p16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Lr5.isBrowserNetworkError=i16;Lr5.isClockSkewCorrectedError=c16;Lr5.isClockSkewError=Or5;Lr5.isNodeJsHttp2TransientError=p16;Lr5.isRetryableByTrait=d16;Lr5.isServerError=wr5;Lr5.isThrottlingError=Dr5;Lr5.isTransientError=eN0});var Dw=k((br5)=>{var Mr5=Xz0();br5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(br5.RETRY_MODES||(br5.RETRY_MODES={}));var GT1=3,Rr5=br5.RETRY_MODES.STANDARD;class QT1{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"||Mr5.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)=>QT1.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 Sr5=100,Qz0=20000,kr5=500,Yz0=500,Cr5=5,vr5=10,n16=1,_r5="amz-sdk-invocation-id",fr5="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 t16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Qz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Gz0{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(Qz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var YT1={incompatible:1,attempts:2,capacity:3};class hX1{mode=br5.RETRY_MODES.STANDARD;capacity=Yz0;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()=>GT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new t16}async acquireInitialRetryToken(X){return new Gz0(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===YT1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new Gz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Yz0,this.capacity+(X.getRetryCost()??n16))}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 ${GT1}`),GT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:YT1.incompatible,W=Q<G?0:YT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:YT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class a16{mode=br5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new QT1,this.standardRetryStrategy=Y?new hX1({maxAttempts:typeof X==="number"?X:3,...Y}):new hX1(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 r16 extends hX1{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}}br5.AdaptiveRetryStrategy=a16;br5.ConfiguredRetryStrategy=r16;br5.DEFAULT_MAX_ATTEMPTS=GT1;br5.DEFAULT_RETRY_DELAY_BASE=Sr5;br5.DEFAULT_RETRY_MODE=Rr5;br5.DefaultRateLimiter=QT1;br5.INITIAL_RETRY_TOKENS=Yz0;br5.INVOCATION_ID_HEADER=_r5;br5.MAXIMUM_RETRY_DELAY=Qz0;br5.NO_RETRY_INCREMENT=n16;br5.REQUEST_HEADER=fr5;br5.RETRY_COST=Cr5;br5.Retry=eQ;br5.StandardRetryStrategy=hX1;br5.THROTTLING_RETRY_DELAY_BASE=kr5;br5.TIMEOUT_RETRY_COST=vr5});var WX=k((Wo5)=>{var sr5=Dw(),Jz0={warningEmitted:!1},er5=(X)=>{if(X&&!Jz0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)Jz0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
1647
1647
  no longer support Node.js ${X} in January 2026.
1648
1648
 
1649
1649
  To continue receiving updates to AWS services, bug fixes, and security
@@ -0,0 +1,74 @@
1
+ /**
2
+ Check if the code is running in a web browser environment.
3
+ */
4
+ export const isBrowser: boolean;
5
+
6
+ /**
7
+ Check if the code is running in a [Node.js](https://nodejs.org) environment.
8
+ */
9
+ export const isNode: boolean;
10
+
11
+ /**
12
+ Check if the code is running in a [Bun](https://bun.sh) environment.
13
+ */
14
+ export const isBun: boolean;
15
+
16
+ /**
17
+ Check if the code is running in a Deno environment.
18
+ */
19
+ export const isDeno: boolean;
20
+
21
+ /**
22
+ Check if the code is running in an Electron environment.
23
+ */
24
+ export const isElectron: boolean;
25
+
26
+ /**
27
+ Check if the code is running in a [jsdom](https://github.com/jsdom/jsdom) environment.
28
+ */
29
+ export const isJsDom: boolean;
30
+
31
+ /**
32
+ Check if the code is running in a [Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API#worker_global_contexts_and_functions) environment, which could be either a dedicated worker, shared worker, or service worker.
33
+ */
34
+ export const isWebWorker: boolean;
35
+
36
+ /**
37
+ Check if the code is running in a [Dedicated Worker](https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope) environment.
38
+ */
39
+ export const isDedicatedWorker: boolean;
40
+
41
+ /**
42
+ Check if the code is running in a [Shared Worker](https://developer.mozilla.org/en-US/docs/Web/API/SharedWorkerGlobalScope) environment.
43
+ */
44
+ export const isSharedWorker: boolean;
45
+
46
+ /**
47
+ Check if the code is running in a [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope) environment.
48
+ */
49
+ export const isServiceWorker: boolean;
50
+
51
+ /**
52
+ Check if the code is running on macOS.
53
+ */
54
+ export const isMacOs: boolean;
55
+
56
+ /**
57
+ Check if the code is running on Windows.
58
+ */
59
+ export const isWindows: boolean;
60
+
61
+ /**
62
+ Check if the code is running on Linux.
63
+ */
64
+ export const isLinux: boolean;
65
+
66
+ /**
67
+ Check if the code is running on iOS.
68
+ */
69
+ export const isIos: boolean;
70
+
71
+ /**
72
+ Check if the code is running on Android.
73
+ */
74
+ export const isAndroid: boolean;
@@ -0,0 +1,47 @@
1
+ /* globals WorkerGlobalScope, DedicatedWorkerGlobalScope, SharedWorkerGlobalScope, ServiceWorkerGlobalScope */
2
+
3
+ export const isBrowser = globalThis.window?.document !== undefined;
4
+
5
+ export const isNode = globalThis.process?.versions?.node !== undefined;
6
+
7
+ export const isBun = globalThis.process?.versions?.bun !== undefined;
8
+
9
+ export const isDeno = globalThis.Deno?.version?.deno !== undefined;
10
+
11
+ export const isElectron = globalThis.process?.versions?.electron !== undefined;
12
+
13
+ export const isJsDom = globalThis.navigator?.userAgent?.includes('jsdom') === true;
14
+
15
+ export const isWebWorker = typeof WorkerGlobalScope !== 'undefined' && globalThis instanceof WorkerGlobalScope;
16
+
17
+ export const isDedicatedWorker = typeof DedicatedWorkerGlobalScope !== 'undefined' && globalThis instanceof DedicatedWorkerGlobalScope;
18
+
19
+ export const isSharedWorker = typeof SharedWorkerGlobalScope !== 'undefined' && globalThis instanceof SharedWorkerGlobalScope;
20
+
21
+ export const isServiceWorker = typeof ServiceWorkerGlobalScope !== 'undefined' && globalThis instanceof ServiceWorkerGlobalScope;
22
+
23
+ // Note: I'm intentionally not DRYing up the other variables to keep them "lazy".
24
+ const platform = globalThis.navigator?.userAgentData?.platform;
25
+
26
+ export const isMacOs = platform === 'macOS'
27
+ || globalThis.navigator?.platform === 'MacIntel' // Even on Apple silicon Macs.
28
+ || globalThis.navigator?.userAgent?.includes(' Mac ') === true
29
+ || globalThis.process?.platform === 'darwin';
30
+
31
+ export const isWindows = platform === 'Windows'
32
+ || globalThis.navigator?.platform === 'Win32'
33
+ || globalThis.process?.platform === 'win32';
34
+
35
+ export const isLinux = platform === 'Linux'
36
+ || globalThis.navigator?.platform?.startsWith('Linux') === true
37
+ || globalThis.navigator?.userAgent?.includes(' Linux ') === true
38
+ || globalThis.process?.platform === 'linux';
39
+
40
+ export const isIos = platform === 'iOS'
41
+ || (globalThis.navigator?.platform === 'MacIntel' && globalThis.navigator?.maxTouchPoints > 1)
42
+ || /iPad|iPhone|iPod/.test(globalThis.navigator?.platform);
43
+
44
+ export const isAndroid = platform === 'Android'
45
+ || globalThis.navigator?.platform === 'Android'
46
+ || globalThis.navigator?.userAgent?.includes(' Android ') === true
47
+ || globalThis.process?.platform === 'android';
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "environment",
3
+ "version": "1.1.0",
4
+ "description": "Check which JavaScript environment your code is running in at runtime: browser, Node.js, Bun, etc",
5
+ "license": "MIT",
6
+ "repository": "sindresorhus/environment",
7
+ "funding": "https://github.com/sponsors/sindresorhus",
8
+ "author": {
9
+ "name": "Sindre Sorhus",
10
+ "email": "sindresorhus@gmail.com",
11
+ "url": "https://sindresorhus.com"
12
+ },
13
+ "type": "module",
14
+ "exports": {
15
+ "types": "./index.d.ts",
16
+ "default": "./index.js"
17
+ },
18
+ "sideEffects": false,
19
+ "engines": {
20
+ "node": ">=18"
21
+ },
22
+ "scripts": {
23
+ "test": "xo && ava && tsc index.d.ts"
24
+ },
25
+ "files": [
26
+ "index.js",
27
+ "index.d.ts"
28
+ ],
29
+ "keywords": [
30
+ "runtime",
31
+ "environment",
32
+ "env",
33
+ "execution",
34
+ "engine",
35
+ "platform",
36
+ "context",
37
+ "js",
38
+ "javascript",
39
+ "is",
40
+ "check",
41
+ "checking",
42
+ "detect",
43
+ "detection",
44
+ "browser",
45
+ "node",
46
+ "bun",
47
+ "deno",
48
+ "electron",
49
+ "jsdom",
50
+ "webworker",
51
+ "worker",
52
+ "serviceworker",
53
+ "macos",
54
+ "ios",
55
+ "iphone",
56
+ "ipad",
57
+ "windows",
58
+ "linux",
59
+ "android",
60
+ "os",
61
+ "operating",
62
+ "system"
63
+ ],
64
+ "devDependencies": {
65
+ "ava": "^6.1.3",
66
+ "typescript": "^5.4.5",
67
+ "xo": "^0.58.0"
68
+ },
69
+ "xo": {
70
+ "rules": {
71
+ "n/prefer-global/process": "off"
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,94 @@
1
+ # environment
2
+
3
+ > Check which JavaScript environment your code is running in at runtime
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm install environment
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```js
14
+ import {isBrowser, isNode} from 'environment';
15
+
16
+ if (isBrowser) {
17
+ console.log('Running in a browser!');
18
+ }
19
+
20
+ if (isNode) {
21
+ console.log('Running in Node.js!');
22
+ }
23
+ ```
24
+
25
+ > [!NOTE]
26
+ > Runtime checks should be used sparingly. Prefer [conditional package exports](https://nodejs.org/api/packages.html#conditional-exports) and [imports](https://nodejs.org/api/packages.html#subpath-imports) whenever possible.
27
+
28
+ ## API
29
+
30
+ ### `isBrowser`
31
+
32
+ Check if the code is running in a web browser environment.
33
+
34
+ ### `isNode`
35
+
36
+ Check if the code is running in a [Node.js](https://nodejs.org) environment.
37
+
38
+ ### `isBun`
39
+
40
+ Check if the code is running in a [Bun](https://bun.sh) environment.
41
+
42
+ ### `isDeno`
43
+
44
+ Check if the code is running in a [Deno](https://deno.com) environment.
45
+
46
+ ### `isElectron`
47
+
48
+ Check if the code is running in an [Electron](https://www.electronjs.org) environment.
49
+
50
+ ### `isJsDom`
51
+
52
+ Check if the code is running in a [jsdom](https://github.com/jsdom/jsdom) environment.
53
+
54
+ ### `isWebWorker`
55
+
56
+ Check if the code is running in a [Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API#worker_global_contexts_and_functions) environment, which could be either a dedicated worker, shared worker, or service worker.
57
+
58
+ ### `isDedicatedWorker`
59
+
60
+ Check if the code is running in a [Dedicated Worker](https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope) environment.
61
+
62
+ ### `isSharedWorker`
63
+
64
+ Check if the code is running in a [Shared Worker](https://developer.mozilla.org/en-US/docs/Web/API/SharedWorkerGlobalScope) environment.
65
+
66
+ ### `isServiceWorker`
67
+
68
+ Check if the code is running in a [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope) environment.
69
+
70
+ ### `isMacOs`
71
+
72
+ Check if the code is running on macOS.
73
+
74
+ ### `isWindows`
75
+
76
+ Check if the code is running on Windows.
77
+
78
+ ### `isLinux`
79
+
80
+ Check if the code is running on Linux.
81
+
82
+ ### `isIos`
83
+
84
+ Check if the code is running on iOS.
85
+
86
+ ### `isAndroid`
87
+
88
+ Check if the code is running on Android.
89
+
90
+ ## Related
91
+
92
+ - [is-in-ci](https://github.com/sindresorhus/is-in-ci) - Check if the process is running in a CI environment
93
+ - [is64bit](https://github.com/sindresorhus/is64bit) - Check if the operating system CPU architecture is 64-bit or 32-bit
94
+ - [is](https://github.com/sindresorhus/is) - Type check values
@@ -0,0 +1,18 @@
1
+ /**
2
+ Escape RegExp special characters.
3
+
4
+ You can also use this to escape a string that is inserted into the middle of a regex, for example, into a character class.
5
+
6
+ @example
7
+ ```
8
+ import escapeStringRegexp = require('escape-string-regexp');
9
+
10
+ const escapedString = escapeStringRegexp('How much $ for a 🦄?');
11
+ //=> 'How much \\$ for a 🦄\\?'
12
+
13
+ new RegExp(escapedString);
14
+ ```
15
+ */
16
+ declare const escapeStringRegexp: (string: string) => string;
17
+
18
+ export = escapeStringRegexp;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ const matchOperatorsRegex = /[|\\{}()[\]^$+*?.-]/g;
4
+
5
+ module.exports = string => {
6
+ if (typeof string !== 'string') {
7
+ throw new TypeError('Expected a string');
8
+ }
9
+
10
+ return string.replace(matchOperatorsRegex, '\\$&');
11
+ };
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "escape-string-regexp",
3
+ "version": "2.0.0",
4
+ "description": "Escape RegExp special characters",
5
+ "license": "MIT",
6
+ "repository": "sindresorhus/escape-string-regexp",
7
+ "author": {
8
+ "name": "Sindre Sorhus",
9
+ "email": "sindresorhus@gmail.com",
10
+ "url": "sindresorhus.com"
11
+ },
12
+ "maintainers": [
13
+ "Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)",
14
+ "Joshua Boy Nicolai Appelman <joshua@jbna.nl> (jbna.nl)"
15
+ ],
16
+ "engines": {
17
+ "node": ">=8"
18
+ },
19
+ "scripts": {
20
+ "test": "xo && ava && tsd"
21
+ },
22
+ "files": [
23
+ "index.js",
24
+ "index.d.ts"
25
+ ],
26
+ "keywords": [
27
+ "escape",
28
+ "regex",
29
+ "regexp",
30
+ "re",
31
+ "regular",
32
+ "expression",
33
+ "string",
34
+ "str",
35
+ "special",
36
+ "characters"
37
+ ],
38
+ "devDependencies": {
39
+ "ava": "^1.4.1",
40
+ "tsd": "^0.7.2",
41
+ "xo": "^0.24.0"
42
+ }
43
+ }
@@ -0,0 +1,29 @@
1
+ # escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp)
2
+
3
+ > Escape RegExp special characters
4
+
5
+
6
+ ## Install
7
+
8
+ ```
9
+ $ npm install escape-string-regexp
10
+ ```
11
+
12
+
13
+ ## Usage
14
+
15
+ ```js
16
+ const escapeStringRegexp = require('escape-string-regexp');
17
+
18
+ const escapedString = escapeStringRegexp('How much $ for a 🦄?');
19
+ //=> 'How much \\$ for a 🦄\\?'
20
+
21
+ new RegExp(escapedString);
22
+ ```
23
+
24
+ You can also use this to escape a string that is inserted into the middle of a regex, for example, into a character class.
25
+
26
+
27
+ ## License
28
+
29
+ MIT © [Sindre Sorhus](https://sindresorhus.com)
@@ -0,0 +1,17 @@
1
+ /**
2
+ Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms).
3
+
4
+ @param codePoint - The [code point](https://en.wikipedia.org/wiki/Code_point) of a character.
5
+
6
+ @example
7
+ ```
8
+ import isFullwidthCodePoint from 'is-fullwidth-code-point';
9
+
10
+ isFullwidthCodePoint('谢'.codePointAt(0));
11
+ //=> true
12
+
13
+ isFullwidthCodePoint('a'.codePointAt(0));
14
+ //=> false
15
+ ```
16
+ */
17
+ export default function isFullwidthCodePoint(codePoint: number): boolean;