decocms 2.306.8 → 2.306.9

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 (206) hide show
  1. package/dist/client/assets/{AlertCircle-BTzXzMwa.js → AlertCircle-DJf7WJW3.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-D2yH9wXQ.js → ArrowNarrowLeft-zhth65sS.js} +1 -1
  3. package/dist/client/assets/{ArrowUpRight-Oalb5bG5.js → ArrowUpRight-B3qf65r_.js} +1 -1
  4. package/dist/client/assets/{Check-D4yu1L9M.js → Check-BA7p_1wq.js} +1 -1
  5. package/dist/client/assets/{CheckCircle-Ce90skz0.js → CheckCircle-Y9PieZLB.js} +1 -1
  6. package/dist/client/assets/{ChevronDown-BqGwceCn.js → ChevronDown-CHAav7qy.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-BRV7Tdzz.js → ChevronRight-2ozRd8ql.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-pbRiDYbB.js → ChevronUp-DiTrXBul.js} +1 -1
  9. package/dist/client/assets/{Container-Cf08ks6f.js → Container-C2bhieKl.js} +1 -1
  10. package/dist/client/assets/{DotsVertical-Cb1IeswQ.js → DotsVertical-EPasiNNs.js} +1 -1
  11. package/dist/client/assets/{LinkExternal01-DfeIVyGK.js → LinkExternal01-BPHdX5PH.js} +1 -1
  12. package/dist/client/assets/{Lock01-B6CuPSqy.js → Lock01-BGF0eORu.js} +1 -1
  13. package/dist/client/assets/{Palette-6MGVk9XZ.js → Palette-C_hdzDFv.js} +1 -1
  14. package/dist/client/assets/{Play-Z9TLXhXZ.js → Play-F9KGb4fS.js} +1 -1
  15. package/dist/client/assets/{Plus-BWFmeYbA.js → Plus-yWDQ_tpZ.js} +1 -1
  16. package/dist/client/assets/{RefreshCcw01-DdNBG9uq.js → RefreshCcw01-02Zm-r_b.js} +1 -1
  17. package/dist/client/assets/{SearchMd-Bk2WMaal.js → SearchMd-KthT6Z0D.js} +1 -1
  18. package/dist/client/assets/{Settings02-DV_JgL_i.js → Settings02-o9kWs5LM.js} +1 -1
  19. package/dist/client/assets/{Shield01-DabBYOJe.js → Shield01-C6IvOcka.js} +1 -1
  20. package/dist/client/assets/{Star01-EsNS3h_Z.js → Star01-DfneWwne.js} +1 -1
  21. package/dist/client/assets/{Sun-BSBNF16W.js → Sun-jEEtT5QL.js} +1 -1
  22. package/dist/client/assets/{Tool01-BLP2PhNo.js → Tool01-Ba51oSqA.js} +1 -1
  23. package/dist/client/assets/{Trash01-BrCWXUwU.js → Trash01-phS8Heeq.js} +1 -1
  24. package/dist/client/assets/{User01-YnNa4o8H.js → User01-ZJzkhpRI.js} +1 -1
  25. package/dist/client/assets/{Users03-ju7GWCNc.js → Users03-BpQp0OZp.js} +1 -1
  26. package/dist/client/assets/{X-Bwb7_m5v.js → X-C7tkmqiA.js} +1 -1
  27. package/dist/client/assets/{XCircle-CH3QyMaX.js → XCircle-D-iHz9mr.js} +1 -1
  28. package/dist/client/assets/{XClose-CWzVSlUZ.js → XClose-DGH-dkmK.js} +1 -1
  29. package/dist/client/assets/{Zap-ByRL5ggZ.js → Zap-B3d9PZiM.js} +1 -1
  30. package/dist/client/assets/{ZapSquare-DwXwFOB5.js → ZapSquare-zYT4mArq.js} +1 -1
  31. package/dist/client/assets/{accordion-DEfiI4_u.js → accordion-hHFtU32i.js} +1 -1
  32. package/dist/client/assets/{agent-icon-BWW-_spm.js → agent-icon-CJE3IrTn.js} +1 -1
  33. package/dist/client/assets/{agents-list-DtSKcauO.js → agents-list-vYYge1ev.js} +1 -1
  34. package/dist/client/assets/ai-providers-CqQQNPte.js +1 -0
  35. package/dist/client/assets/{alert-dialog-CIRyCiSh.js → alert-dialog-BX6tjxLQ.js} +1 -1
  36. package/dist/client/assets/{auth-catchall-DM2HSAyx.js → auth-catchall-tLsDaZib.js} +1 -1
  37. package/dist/client/assets/{automation-list-row-BZQnmXsD.js → automation-list-row-CcwE53y-.js} +1 -1
  38. package/dist/client/assets/{automations-BpoAkXQ6.js → automations-BESFBIp2.js} +1 -1
  39. package/dist/client/assets/{avatar-O6nD_RVH.js → avatar-qtN1d68D.js} +1 -1
  40. package/dist/client/assets/{badge-1GzX8YfJ.js → badge-B9X-6Gl1.js} +1 -1
  41. package/dist/client/assets/{brand-context-pSsdhU7u.js → brand-context-XewU7lcG.js} +1 -1
  42. package/dist/client/assets/{card-YRPYO7rK.js → card-BoqhySt6.js} +1 -1
  43. package/dist/client/assets/{chat-context-BXGy7Agh.js → chat-context-CKn0S8Zn.js} +1 -1
  44. package/dist/client/assets/{checkbox-BtvQbCay.js → checkbox-CsbRNJyh.js} +1 -1
  45. package/dist/client/assets/{collection-detail--ucxh4J-.js → collection-detail-CNKa10ok.js} +1 -1
  46. package/dist/client/assets/{collection-display-button-CMOfNtao.js → collection-display-button-DKtSFWra.js} +1 -1
  47. package/dist/client/assets/{collection-search-CYChlQpy.js → collection-search-B3qdCdab.js} +1 -1
  48. package/dist/client/assets/{collection-search-mbr97YEK.js → collection-search-Ce1lQnUu.js} +1 -1
  49. package/dist/client/assets/{collection-table-wrapper-BnAWIjfr.js → collection-table-wrapper-Bd9ZSFN9.js} +1 -1
  50. package/dist/client/assets/{collection-tabs-CkdgJkBV.js → collection-tabs-f6wZXNju.js} +1 -1
  51. package/dist/client/assets/{collections-BFntmLot.js → collections-DW4PTltg.js} +1 -1
  52. package/dist/client/assets/{command-Cbz_0bPm.js → command-COSC6-sU.js} +1 -1
  53. package/dist/client/assets/{connection-card-BLDKB8T1.js → connection-card-CZXyfhfz.js} +1 -1
  54. package/dist/client/assets/{connection-detail-BFIdeQRn.js → connection-detail-j7Z5rP7l.js} +1 -1
  55. package/dist/client/assets/{connection-form-helpers-CSJOop0l.js → connection-form-helpers-BlYNQpCT.js} +1 -1
  56. package/dist/client/assets/{connections-BW08Tw6P.js → connections-BV8XJOt_.js} +1 -1
  57. package/dist/client/assets/{constants-O6TOd6Fi.js → constants-BVAyWr7s.js} +1 -1
  58. package/dist/client/assets/{constants-CyYXtNQt.js → constants-DGVET5nO.js} +1 -1
  59. package/dist/client/assets/{dialog-BapANLA4.js → dialog-Hnl5R_ro.js} +1 -1
  60. package/dist/client/assets/{domain-settings-BiGD_AWa.js → domain-settings-C-IlkGnr.js} +1 -1
  61. package/dist/client/assets/{drawer-DXfcxG35.js → drawer-Crup1SLH.js} +1 -1
  62. package/dist/client/assets/{dropdown-menu-8r0P5O89.js → dropdown-menu-V4M0HjsW.js} +1 -1
  63. package/dist/client/assets/{dynamic-plugin-layout-88jqqJ-n.js → dynamic-plugin-layout-8c6x-ky8.js} +1 -1
  64. package/dist/client/assets/{empty-state-CxaKSceI.js → empty-state-CZ3CJw7j.js} +1 -1
  65. package/dist/client/assets/{empty-state-D31vnJxY.js → empty-state-D5_lJgOy.js} +1 -1
  66. package/dist/client/assets/{extract-connection-data-BAmE4x-0.js → extract-connection-data-em000wPy.js} +1 -1
  67. package/dist/client/assets/{features-Zs1cJ0se.js → features-DAVmQLQk.js} +1 -1
  68. package/dist/client/assets/{form-vm22t8bs.js → form-C7tw7wIR.js} +1 -1
  69. package/dist/client/assets/{general-DOQdXWNJ.js → general-DnnDmUeP.js} +1 -1
  70. package/dist/client/assets/{index-DSEbXUmT.js → index-BFRqxr4t.js} +1 -1
  71. package/dist/client/assets/{index-DnMFHGHl.js → index-BOzqanlB.js} +1 -1
  72. package/dist/client/assets/{index-C3KqPz7f.js → index-Bbymo0Ib.js} +1 -1
  73. package/dist/client/assets/index-Bg9RJYuW.js +1 -0
  74. package/dist/client/assets/{index-DCtZqQ0W.js → index-CA3OM7o_.js} +1 -1
  75. package/dist/client/assets/{index-CtJ1_vQP.js → index-CnknCe9i.js} +2 -2
  76. package/dist/client/assets/{index-4ADaRsb3.js → index-CoJ8j1Pw.js} +1 -1
  77. package/dist/client/assets/{index-BZSJm92U.js → index-DNL4AbVG.js} +1 -1
  78. package/dist/client/assets/{index-CZoa5Voq.js → index-DUQBUyCZ.js} +1 -1
  79. package/dist/client/assets/{index-B1K3k56c.js → index-DkII30Yp.js} +1 -1
  80. package/dist/client/assets/{index-Irwc0F9z.js → index-Dq2z-GHI.js} +1 -1
  81. package/dist/client/assets/{index-CDWEA7tA.js → index-DtUD0Pyz.js} +3 -3
  82. package/dist/client/assets/{index-cMeVTxue.js → index-HuDOZoSO.js} +1 -1
  83. package/dist/client/assets/{index-COg7cSsl.js → index-RIIjlnIA.js} +1 -1
  84. package/dist/client/assets/{index-CHlpZld0.js → index-XN9sCkdo.js} +1 -1
  85. package/dist/client/assets/{index-Dy9FasiB.js → index-pVdenInH.js} +1 -1
  86. package/dist/client/assets/{infiniteQueryObserver-BORSReP2.js → infiniteQueryObserver-BpzCmbvi.js} +1 -1
  87. package/dist/client/assets/{input-DzKH4IoC.js → input-tSjlegEI.js} +1 -1
  88. package/dist/client/assets/{integration-icon-DZ1DDayM.js → integration-icon-BIIE53tx.js} +1 -1
  89. package/dist/client/assets/{label-B1j7QJO9.js → label-BPDMOqL-.js} +1 -1
  90. package/dist/client/assets/{layout-CgSQP9Dz.js → layout-CdewzpDg.js} +1 -1
  91. package/dist/client/assets/{lean-canvas-recruit-modal-CkuRnY-q.js → lean-canvas-recruit-modal-vF31gMjX.js} +1 -1
  92. package/dist/client/assets/{login-BFVakp9W.js → login-BoZD0ihV.js} +1 -1
  93. package/dist/client/assets/{members-BvtGRXTq.js → members-Cu6j2bC_.js} +1 -1
  94. package/dist/client/assets/{monaco-editor-DbLGolnd.js → monaco-editor-BkaEDfnn.js} +1 -1
  95. package/dist/client/assets/{monitoring-stats-row-Bs9q7htN.js → monitoring-stats-row-B4VSVC5f.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-C2IfOXdE.js → oauth-callback-BZ22lnb7.js} +1 -1
  97. package/dist/client/assets/{oauth-callback-ai-provider-DjdeIGJy.js → oauth-callback-ai-provider-DdNo-cUU.js} +1 -1
  98. package/dist/client/assets/{onboarding-qQL2AHJp.js → onboarding-BsxXp_91.js} +1 -1
  99. package/dist/client/assets/{org-layout-r-dIMXY7.js → org-layout-C5IzT9XM.js} +1 -1
  100. package/dist/client/assets/{org-plugin-layout-BdbYhknE.js → org-plugin-layout-rnBVYx1J.js} +1 -1
  101. package/dist/client/assets/{pair-BeVk0nw4.js → pair-CgrOS8jZ.js} +1 -1
  102. package/dist/client/assets/{plugin-empty-state-tnsMkLWl.js → plugin-empty-state-DrUsi_Xi.js} +1 -1
  103. package/dist/client/assets/{plugin-header-DlR3Hsv1.js → plugin-header-CdV-nsX3.js} +1 -1
  104. package/dist/client/assets/{plugin-layout-j_5ixQWh.js → plugin-layout-CazyvxCF.js} +1 -1
  105. package/dist/client/assets/{popover-BoJSCjqj.js → popover-B72j1a-i.js} +1 -1
  106. package/dist/client/assets/{profile-DJw46v6U.js → profile-Cu0ySZu7.js} +1 -1
  107. package/dist/client/assets/{project-app-view-CqGwq86p.js → project-app-view-DrBetUBZ.js} +1 -1
  108. package/dist/client/assets/registry-BcpPcvh_.js +2 -0
  109. package/dist/client/assets/{registry-layout-CKKMYc0F.js → registry-layout-CjG7kzKY.js} +1 -1
  110. package/dist/client/assets/{required-auth-layout-BOqEO0UW.js → required-auth-layout-DesCgYHR.js} +1 -1
  111. package/dist/client/assets/{reset-password-DC2CZqgK.js → reset-password-eRneDfhd.js} +1 -1
  112. package/dist/client/assets/{roles-B7M_sNQI.js → roles-BOPJuCtk.js} +1 -1
  113. package/dist/client/assets/{scroll-area-CVP2hanW.js → scroll-area-B7p5KGay.js} +1 -1
  114. package/dist/client/assets/{search-input-DBJx5Puk.js → search-input-BkMpxSNZ.js} +1 -1
  115. package/dist/client/assets/{select-BL-3WYG3.js → select-Cgq5fB25.js} +1 -1
  116. package/dist/client/assets/{select-model-CBeAOuD4.js → select-model-BrcDDMDY.js} +1 -1
  117. package/dist/client/assets/{settings-layout-D4-CafDE.js → settings-layout-DnlWM3l_.js} +1 -1
  118. package/dist/client/assets/{settings-section-sY44gYa3.js → settings-section-BnPqXFEQ.js} +1 -1
  119. package/dist/client/assets/{shell-layout-BRqsQqla.js → shell-layout-KvQC2n8R.js} +1 -1
  120. package/dist/client/assets/{skeleton-BWfslVYc.js → skeleton-DIbgbTEL.js} +1 -1
  121. package/dist/client/assets/{sso-CqR7Oikv.js → sso-CKV2Ny8h.js} +1 -1
  122. package/dist/client/assets/{store-QjnVaNvS.js → store-OiRvkTn1.js} +1 -1
  123. package/dist/client/assets/store-registry-CcoZihF8.js +2 -0
  124. package/dist/client/assets/{switch-ClIsCuo0.js → switch-DHlXaCRu.js} +1 -1
  125. package/dist/client/assets/{table-DLr2fSXp.js → table-DM5YCF_t.js} +1 -1
  126. package/dist/client/assets/{tabs-CEhOvCGw.js → tabs-DP8p-QKj.js} +1 -1
  127. package/dist/client/assets/{task-status-C-SQfZZK.js → task-status-RjLfrU9E.js} +1 -1
  128. package/dist/client/assets/{textarea-BQD2K7xE.js → textarea-BKxnYjv4.js} +1 -1
  129. package/dist/client/assets/{toggle-group-i71R22i3.js → toggle-group-BTIHjGuh.js} +1 -1
  130. package/dist/client/assets/{tools-list-CPm-Mx4D.js → tools-list-DltD98In.js} +1 -1
  131. package/dist/client/assets/{tooltip-BTEnXfpw.js → tooltip-VTeNtMCR.js} +1 -1
  132. package/dist/client/assets/{types-lb3PNUQc.js → types-DXN89wPs.js} +1 -1
  133. package/dist/client/assets/{use-ai-providers-BKH_isZv.js → use-ai-providers-Dn3Z7IEd.js} +1 -1
  134. package/dist/client/assets/{use-collections-VlH2NrqV.js → use-collections-CiD-L_rq.js} +1 -1
  135. package/dist/client/assets/{use-connection-M1xDmD9i.js → use-connection-JNwwjcGV.js} +1 -1
  136. package/dist/client/assets/{use-copy-DEJBJAsZ.js → use-copy-BC2pt5R_.js} +1 -1
  137. package/dist/client/assets/{use-create-virtual-mcp-BL0xa08p.js → use-create-virtual-mcp-BaV_MWOd.js} +1 -1
  138. package/dist/client/assets/{use-debounced-autosave-DJj5fuFt.js → use-debounced-autosave-BZkVf5Bt.js} +1 -1
  139. package/dist/client/assets/{use-decopilot-events-Bb2NleBN.js → use-decopilot-events-CNFY9Cdo.js} +1 -1
  140. package/dist/client/assets/{use-delete-connection-Bib86QGR.js → use-delete-connection-B92EkvSW.js} +1 -1
  141. package/dist/client/assets/{use-infinite-scroll-D8nIolCd.js → use-infinite-scroll-DxHMXvd2.js} +1 -1
  142. package/dist/client/assets/{use-list-state-BYi_uUtE.js → use-list-state-CC6sLPth.js} +1 -1
  143. package/dist/client/assets/{use-mcp-tools-CtUqFvLD.js → use-mcp-tools-CVArZMz4.js} +1 -1
  144. package/dist/client/assets/{use-members-CdkSabwq.js → use-members-DwBHQoXS.js} +1 -1
  145. package/dist/client/assets/{use-navigate-to-agent-D91A1ehg.js → use-navigate-to-agent-CBT4EeEo.js} +1 -1
  146. package/dist/client/assets/{use-org-auth-client-CANxngbZ.js → use-org-auth-client-Btoi24Ng.js} +1 -1
  147. package/dist/client/assets/{use-org-sso-KaCvgTMV.js → use-org-sso-BraRussC.js} +1 -1
  148. package/dist/client/assets/{use-organization-roles-BXlhN5BZ.js → use-organization-roles-D_UI-fW0.js} +1 -1
  149. package/dist/client/assets/{use-organization-settings-CCxU4osF.js → use-organization-settings-Dxy82qy3.js} +1 -1
  150. package/dist/client/assets/{use-registry-connections-CcXpK-ys.js → use-registry-connections-Dutuf-7C.js} +1 -1
  151. package/dist/client/assets/{use-status-sounds-Cwi7Sfh7.js → use-status-sounds-D0gU5bqv.js} +1 -1
  152. package/dist/client/assets/{use-tasks-D03EtFvf.js → use-tasks-dDV8jhdD.js} +1 -1
  153. package/dist/client/assets/{use-view-mode-CQIRYhjw.js → use-view-mode-CNrwjFk2.js} +1 -1
  154. package/dist/client/assets/{use-virtual-mcp-CX5iadV3.js → use-virtual-mcp-DYwCZbrQ.js} +1 -1
  155. package/dist/client/assets/useInfiniteQuery-DgNRpfvJ.js +1 -0
  156. package/dist/client/assets/useSuspenseInfiniteQuery-olKcjkDq.js +1 -0
  157. package/dist/client/assets/{user-C8zZ-7QW.js → user-kEnfgZB9.js} +1 -1
  158. package/dist/client/assets/{view-mode-toggle-Cw5HKJog.js → view-mode-toggle-CrpJwZiO.js} +1 -1
  159. package/dist/client/assets/{workflow-Det6DT4b.js → workflow-BXznQ79f.js} +1 -1
  160. package/dist/client/assets/workflow-detail-DeJ9MrPo.js +1 -0
  161. package/dist/client/index.html +1 -1
  162. package/dist/server/cli.js +1 -8
  163. package/dist/server/node_modules/cli-boxes/boxes.json +82 -0
  164. package/dist/server/node_modules/cli-boxes/index.d.ts +127 -0
  165. package/dist/server/node_modules/cli-boxes/index.js +6 -0
  166. package/dist/server/node_modules/cli-boxes/license +9 -0
  167. package/dist/server/node_modules/cli-boxes/package.json +42 -0
  168. package/dist/server/node_modules/cli-boxes/readme.md +115 -0
  169. package/dist/server/node_modules/cli-spinners/index.d.ts +139 -0
  170. package/dist/server/node_modules/cli-spinners/index.js +11 -0
  171. package/dist/server/node_modules/cli-spinners/license +9 -0
  172. package/dist/server/node_modules/cli-spinners/package.json +56 -0
  173. package/dist/server/node_modules/cli-spinners/readme.md +74 -0
  174. package/dist/server/node_modules/cli-spinners/spinners.json +1697 -0
  175. package/dist/server/node_modules/{postgres-date/license → stack-utils/LICENSE.md} +1 -1
  176. package/dist/server/node_modules/stack-utils/index.js +344 -0
  177. package/dist/server/node_modules/stack-utils/package.json +39 -0
  178. package/dist/server/node_modules/stack-utils/readme.md +143 -0
  179. package/dist/server/server.js +0 -7
  180. package/package.json +1 -1
  181. package/dist/client/assets/ai-providers-Dmv17i-r.js +0 -1
  182. package/dist/client/assets/index-sD08ZTU7.js +0 -1
  183. package/dist/client/assets/registry-CRDkHUvw.js +0 -2
  184. package/dist/client/assets/store-registry-CEd7y-Xb.js +0 -2
  185. package/dist/client/assets/useInfiniteQuery-CgSxuvH6.js +0 -1
  186. package/dist/client/assets/useSuspenseInfiniteQuery-CH8re_uO.js +0 -1
  187. package/dist/client/assets/workflow-detail-BeFzNTls.js +0 -1
  188. package/dist/server/node_modules/postgres-bytea/index.js +0 -33
  189. package/dist/server/node_modules/postgres-bytea/license +0 -21
  190. package/dist/server/node_modules/postgres-bytea/package.json +0 -34
  191. package/dist/server/node_modules/postgres-bytea/readme.md +0 -34
  192. package/dist/server/node_modules/postgres-date/index.js +0 -116
  193. package/dist/server/node_modules/postgres-date/package.json +0 -33
  194. package/dist/server/node_modules/postgres-date/readme.md +0 -49
  195. package/dist/server/node_modules/postgres-interval/index.d.ts +0 -20
  196. package/dist/server/node_modules/postgres-interval/index.js +0 -125
  197. package/dist/server/node_modules/postgres-interval/license +0 -21
  198. package/dist/server/node_modules/postgres-interval/package.json +0 -36
  199. package/dist/server/node_modules/postgres-interval/readme.md +0 -48
  200. package/dist/server/node_modules/xtend/.jshintrc +0 -30
  201. package/dist/server/node_modules/xtend/LICENSE +0 -20
  202. package/dist/server/node_modules/xtend/README.md +0 -32
  203. package/dist/server/node_modules/xtend/immutable.js +0 -19
  204. package/dist/server/node_modules/xtend/mutable.js +0 -17
  205. package/dist/server/node_modules/xtend/package.json +0 -55
  206. package/dist/server/node_modules/xtend/test.js +0 -103
@@ -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 iA1(X){let Y={...process.env},G=e$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(() => (l$1(),u$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(),Wg4));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (GU(),Zg4)),{migrateToLatest:U}=await Promise.resolve().then(() => (Ns4(),Bs4)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => z16);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 tA1={};T0(tA1,{updateService:()=>Ga,toggleViewMode:()=>vN0,toggleVibeState:()=>fN0,toggleLogFlow:()=>_N0,subscribeCliState:()=>vX1,setVibe:()=>$a5,setTuiConsoleIntercepted:()=>pA1,setServerUrl:()=>fX1,setMigrationsDone:()=>_X1,setEnv:()=>bX1,setDevMode:()=>Za5,setDataDir:()=>Wa5,isTuiConsoleIntercepted:()=>nA1,getCliState:()=>CX1,addLogEntry:()=>Zz});function PU(){for(let X of CN0)X()}function CX1(){return e9}function vX1(X){return CN0.add(X),()=>CN0.delete(X)}function Ga(X){e9={...e9,services:e9.services.map((Y)=>Y.name===X.name?X:Y)},PU()}function _X1(){e9={...e9,migrationsStatus:"done"},PU()}function fX1(X){e9={...e9,serverUrl:X},PU()}function bX1(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 Za5(){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 Wa5(X){e9={...e9,dataDir:X},PU()}function $a5(X){e9={...e9,vibe:X},PU()}function fN0(){e9={...e9,vibe:!e9.vibe},PU()}function pA1(X){O16=X}function nA1(){return O16}var e9,CN0,O16=!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 D16}from"net";function Ka5(X){return new Promise((Y)=>{let G=D16();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function aA1(X){if(await Ka5(X))return X;let Y=await new Promise((G,Q)=>{let J=D16();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:()=>Fa5});import{join as Ha5}from"path";function w16(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function L16(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 $=w16(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=w16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Fa5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await aA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await iA1({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)Ga({name:z.name,status:"ready",port:z.port});bX1(W),_X1();let K=Ha5(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)L16(U.stdout),L16(U.stderr);let B=G||`http://localhost:${W.port}`;fX1(B),Ga({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (l$1(),u$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 P16,jsxs as rA1}from"react/jsx-runtime";function E16(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 Na5(X,Y){if(Ua5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Ba5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>E16(W)).join(", "),color:"cyan"}}let Q=E16(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 za5(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 q16({env:X}){let Y=za5(X);return P16(hN0,{flexDirection:"column",children:Y.map((G)=>rA1(hN0,{flexDirection:"column",marginTop:1,children:[rA1(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=Na5(Q,J);return rA1(hN0,{children:[rA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),P16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Ua5,Ba5;var A16=w(()=>{Ua5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Ba5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var T16=w(()=>{uN0={name:"decocms",version:"2.306.8",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 Da5}from"@inkjs/ui";import{useSyncExternalStore as I16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function qa5(X,Y){if(!X||!Pa5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function V16({status:X}){if(X==="pending")return TY(Da5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function j16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=I16(cm0,dm0),Z=I16(rm0,am0);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,Ea5-U);return sQ(qU,{flexDirection:"row",children:[$.map((N,z)=>{let O=qa5(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:[wa5.map(($,K)=>TY(RX,{color:La5[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(V16,{status:$.status})]},$.name)),sQ(qU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(V16,{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 wa5,La5,lN0,Ea5=30,Pa5;var M16=w(()=>{T16();Vt1();Ct1();wa5=[" \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 "],La5=["#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"]],Pa5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Aa5}from"react";function Ta5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==oA1.rows||Y!==oA1.columns)oA1={rows:X,columns:Y};return oA1}function Ia5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function R16(){return Aa5(Ia5,Ta5)}var oA1;var S16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Va5,Text as yX1}from"ink";import{useSyncExternalStore as ja5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function Ma5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function k16({logs:X,headerHeight:Y}){let{rows:G}=R16(),{logFlow:Q}=ja5(vX1,CX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Va5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(yX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(yX1,{children:[dN0(yX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(yX1,{color:Ma5(Z.status),children:Z.status}),dN0(yX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var C16=w(()=>{Wz();S16()});var cN0={};T0(cN0,{App:()=>fa5});import{Box as Ra5,Text as Sa5,useInput as ka5}from"ink";import{useSyncExternalStore as Ca5}from"react";import{jsx as sA1,jsxs as ba5}from"react/jsx-runtime";function fa5({home:X}){let Y=Ca5(vX1,CX1);return ka5((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()}),ba5(Ra5,{flexDirection:"column",children:[sA1(j16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(q16,{env:Y.env}):sA1(Sa5,{dimColor:!0,children:"Loading configuration..."}):sA1(k16,{logs:Y.logs,headerHeight:Y.vibe?_a5:va5})]})}var va5=15,_a5=19;var iN0=w(()=>{A16();M16();C16();Wz();bd()});function v16(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((la5)=>{la5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpAuthLocation||(la5.HttpAuthLocation={}));la5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpApiKeyAuthLocation||(la5.HttpApiKeyAuthLocation={}));la5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(la5.EndpointURLScheme||(la5.EndpointURLScheme={}));la5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(la5.AlgorithmId||(la5.AlgorithmId={}));var ya5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>la5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>la5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},xa5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},ha5=(X)=>{return ya5(X)},ga5=(X)=>{return xa5(X)};la5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(la5.FieldPosition||(la5.FieldPosition={}));var ua5="__smithy_context";la5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(la5.IniSectionType||(la5.IniSectionType={}));la5.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"})(la5.RequestHandlerProtocol||(la5.RequestHandlerProtocol={}));la5.SMITHY_CONTEXT_KEY=ua5;la5.getDefaultClientConfiguration=ha5;la5.resolveDefaultRuntimeConfig=ga5});var u7=k((ra5)=>{var ia5=bj(),pa5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},na5=(X)=>{return{httpHandler:X.httpHandler()}};class _16{name;kind;values;constructor({name:X,kind:Y=ia5.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 f16{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 eA1{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 eA1({...X,headers:{...X.headers}});if(Y.query)Y.query=ta5(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 eA1.clone(this)}}function ta5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class b16{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 aa5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ra5.Field=_16;ra5.Fields=f16;ra5.HttpRequest=eA1;ra5.HttpResponse=b16;ra5.getHttpHandlerExtensionConfiguration=pa5;ra5.isValidHostname=aa5;ra5.resolveHttpHandlerRuntimeConfig=na5});function Jr5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&y16.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 y16,Zr5,x16=(X)=>({applyToStack:(Y)=>{Y.add(Jr5(X),Zr5)}});var h16=w(()=>{y16=X1(u7(),1);Zr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,yj,YT1,E9,g16,hX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=wH.WHEN_SUPPORTED,yj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},YT1=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"})(g16||(g16={}));hX1=E9.CRC32});var kq,Qa=(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 Wr5="AWS_REQUEST_CHECKSUM_CALCULATION",$r5="request_checksum_calculation",u16;var l16=w(()=>{LH();sN0();u16={environmentVariableSelector:(X)=>Qa(X,Wr5,wH,kq.ENV),configFileSelector:(X)=>Qa(X,$r5,wH,kq.CONFIG),default:XT1}});var Kr5="AWS_RESPONSE_CHECKSUM_VALIDATION",Hr5="response_checksum_validation",m16;var d16=w(()=>{LH();sN0();m16={environmentVariableSelector:(X)=>Qa(X,Kr5,yj,kq.ENV),configFileSelector:(X)=>Qa(X,Hr5,yj,kq.CONFIG),default:YT1}});var Xz0=k((Er5)=>{var Fr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Ur5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Br5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Nr5=[500,502,503,504],zr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Or5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],c16=(X)=>X?.$retryable!==void 0,Dr5=(X)=>Fr5.includes(X.name),i16=(X)=>X.$metadata?.clockSkewCorrected,p16=(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)},wr5=(X)=>X.$metadata?.httpStatusCode===429||Ur5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>c16(X)||i16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Br5.includes(X.name)||zr5.includes(X?.code||"")||Or5.includes(X?.code||"")||Nr5.includes(X.$metadata?.httpStatusCode||0)||p16(X)||n16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),Lr5=(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 n16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Er5.isBrowserNetworkError=p16;Er5.isClockSkewCorrectedError=i16;Er5.isClockSkewError=Dr5;Er5.isNodeJsHttp2TransientError=n16;Er5.isRetryableByTrait=c16;Er5.isServerError=Lr5;Er5.isThrottlingError=wr5;Er5.isTransientError=eN0});var Dw=k((yr5)=>{var Rr5=Xz0();yr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(yr5.RETRY_MODES||(yr5.RETRY_MODES={}));var QT1=3,Sr5=yr5.RETRY_MODES.STANDARD;class JT1{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"||Rr5.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)=>JT1.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 kr5=100,Qz0=20000,Cr5=500,Yz0=500,vr5=5,_r5=10,t16=1,fr5="amz-sdk-invocation-id",br5="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 a16{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 GT1={incompatible:1,attempts:2,capacity:3};class gX1{mode=yr5.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()=>QT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new a16}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===GT1.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()??t16))}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 ${QT1}`),QT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:GT1.incompatible,W=Q<G?0:GT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:GT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class r16{mode=yr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new gX1({maxAttempts:typeof X==="number"?X:3,...Y}):new gX1(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 o16 extends gX1{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}}yr5.AdaptiveRetryStrategy=r16;yr5.ConfiguredRetryStrategy=o16;yr5.DEFAULT_MAX_ATTEMPTS=QT1;yr5.DEFAULT_RETRY_DELAY_BASE=kr5;yr5.DEFAULT_RETRY_MODE=Sr5;yr5.DefaultRateLimiter=JT1;yr5.INITIAL_RETRY_TOKENS=Yz0;yr5.INVOCATION_ID_HEADER=fr5;yr5.MAXIMUM_RETRY_DELAY=Qz0;yr5.NO_RETRY_INCREMENT=t16;yr5.REQUEST_HEADER=br5;yr5.RETRY_COST=vr5;yr5.Retry=eQ;yr5.StandardRetryStrategy=gX1;yr5.THROTTLING_RETRY_DELAY_BASE=Cr5;yr5.TIMEOUT_RETRY_COST=_r5});var WX=k(($o5)=>{var er5=Dw(),Jz0={warningEmitted:!1},Xo5=(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 $=w16(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=w16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Zz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Fa5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await aA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await iA1({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)Ga({name:z.name,status:"ready",port:z.port});bX1(W),_X1();let K=Ha5(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)L16(U.stdout),L16(U.stderr);let B=G||`http://localhost:${W.port}`;fX1(B),Ga({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (l$1(),u$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 P16,jsxs as rA1}from"react/jsx-runtime";function E16(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 Na5(X,Y){if(Ua5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Ba5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>E16(W)).join(", "),color:"cyan"}}let Q=E16(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 za5(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 q16({env:X}){let Y=za5(X);return P16(hN0,{flexDirection:"column",children:Y.map((G)=>rA1(hN0,{flexDirection:"column",marginTop:1,children:[rA1(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=Na5(Q,J);return rA1(hN0,{children:[rA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),P16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Ua5,Ba5;var A16=w(()=>{Ua5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Ba5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var T16=w(()=>{uN0={name:"decocms",version:"2.306.9",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 Da5}from"@inkjs/ui";import{useSyncExternalStore as I16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function qa5(X,Y){if(!X||!Pa5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function V16({status:X}){if(X==="pending")return TY(Da5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function j16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=I16(cm0,dm0),Z=I16(rm0,am0);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,Ea5-U);return sQ(qU,{flexDirection:"row",children:[$.map((N,z)=>{let O=qa5(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:[wa5.map(($,K)=>TY(RX,{color:La5[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(V16,{status:$.status})]},$.name)),sQ(qU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(V16,{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 wa5,La5,lN0,Ea5=30,Pa5;var M16=w(()=>{T16();Vt1();Ct1();wa5=[" \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 "],La5=["#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"]],Pa5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Aa5}from"react";function Ta5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==oA1.rows||Y!==oA1.columns)oA1={rows:X,columns:Y};return oA1}function Ia5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function R16(){return Aa5(Ia5,Ta5)}var oA1;var S16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Va5,Text as yX1}from"ink";import{useSyncExternalStore as ja5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function Ma5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function k16({logs:X,headerHeight:Y}){let{rows:G}=R16(),{logFlow:Q}=ja5(vX1,CX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Va5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(yX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(yX1,{children:[dN0(yX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(yX1,{color:Ma5(Z.status),children:Z.status}),dN0(yX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var C16=w(()=>{Wz();S16()});var cN0={};T0(cN0,{App:()=>fa5});import{Box as Ra5,Text as Sa5,useInput as ka5}from"ink";import{useSyncExternalStore as Ca5}from"react";import{jsx as sA1,jsxs as ba5}from"react/jsx-runtime";function fa5({home:X}){let Y=Ca5(vX1,CX1);return ka5((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()}),ba5(Ra5,{flexDirection:"column",children:[sA1(j16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(q16,{env:Y.env}):sA1(Sa5,{dimColor:!0,children:"Loading configuration..."}):sA1(k16,{logs:Y.logs,headerHeight:Y.vibe?_a5:va5})]})}var va5=15,_a5=19;var iN0=w(()=>{A16();M16();C16();Wz();bd()});function v16(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((la5)=>{la5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpAuthLocation||(la5.HttpAuthLocation={}));la5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(la5.HttpApiKeyAuthLocation||(la5.HttpApiKeyAuthLocation={}));la5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(la5.EndpointURLScheme||(la5.EndpointURLScheme={}));la5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(la5.AlgorithmId||(la5.AlgorithmId={}));var ya5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>la5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>la5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},xa5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},ha5=(X)=>{return ya5(X)},ga5=(X)=>{return xa5(X)};la5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(la5.FieldPosition||(la5.FieldPosition={}));var ua5="__smithy_context";la5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(la5.IniSectionType||(la5.IniSectionType={}));la5.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"})(la5.RequestHandlerProtocol||(la5.RequestHandlerProtocol={}));la5.SMITHY_CONTEXT_KEY=ua5;la5.getDefaultClientConfiguration=ha5;la5.resolveDefaultRuntimeConfig=ga5});var u7=k((ra5)=>{var ia5=bj(),pa5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},na5=(X)=>{return{httpHandler:X.httpHandler()}};class _16{name;kind;values;constructor({name:X,kind:Y=ia5.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 f16{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 eA1{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 eA1({...X,headers:{...X.headers}});if(Y.query)Y.query=ta5(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 eA1.clone(this)}}function ta5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class b16{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 aa5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ra5.Field=_16;ra5.Fields=f16;ra5.HttpRequest=eA1;ra5.HttpResponse=b16;ra5.getHttpHandlerExtensionConfiguration=pa5;ra5.isValidHostname=aa5;ra5.resolveHttpHandlerRuntimeConfig=na5});function Jr5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&y16.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 y16,Zr5,x16=(X)=>({applyToStack:(Y)=>{Y.add(Jr5(X),Zr5)}});var h16=w(()=>{y16=X1(u7(),1);Zr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,yj,YT1,E9,g16,hX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=wH.WHEN_SUPPORTED,yj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},YT1=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"})(g16||(g16={}));hX1=E9.CRC32});var kq,Qa=(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 Wr5="AWS_REQUEST_CHECKSUM_CALCULATION",$r5="request_checksum_calculation",u16;var l16=w(()=>{LH();sN0();u16={environmentVariableSelector:(X)=>Qa(X,Wr5,wH,kq.ENV),configFileSelector:(X)=>Qa(X,$r5,wH,kq.CONFIG),default:XT1}});var Kr5="AWS_RESPONSE_CHECKSUM_VALIDATION",Hr5="response_checksum_validation",m16;var d16=w(()=>{LH();sN0();m16={environmentVariableSelector:(X)=>Qa(X,Kr5,yj,kq.ENV),configFileSelector:(X)=>Qa(X,Hr5,yj,kq.CONFIG),default:YT1}});var Xz0=k((Er5)=>{var Fr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Ur5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Br5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Nr5=[500,502,503,504],zr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Or5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],c16=(X)=>X?.$retryable!==void 0,Dr5=(X)=>Fr5.includes(X.name),i16=(X)=>X.$metadata?.clockSkewCorrected,p16=(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)},wr5=(X)=>X.$metadata?.httpStatusCode===429||Ur5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>c16(X)||i16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Br5.includes(X.name)||zr5.includes(X?.code||"")||Or5.includes(X?.code||"")||Nr5.includes(X.$metadata?.httpStatusCode||0)||p16(X)||n16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),Lr5=(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 n16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Er5.isBrowserNetworkError=p16;Er5.isClockSkewCorrectedError=i16;Er5.isClockSkewError=Dr5;Er5.isNodeJsHttp2TransientError=n16;Er5.isRetryableByTrait=c16;Er5.isServerError=Lr5;Er5.isThrottlingError=wr5;Er5.isTransientError=eN0});var Dw=k((yr5)=>{var Rr5=Xz0();yr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(yr5.RETRY_MODES||(yr5.RETRY_MODES={}));var QT1=3,Sr5=yr5.RETRY_MODES.STANDARD;class JT1{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"||Rr5.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)=>JT1.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 kr5=100,Qz0=20000,Cr5=500,Yz0=500,vr5=5,_r5=10,t16=1,fr5="amz-sdk-invocation-id",br5="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 a16{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 GT1={incompatible:1,attempts:2,capacity:3};class gX1{mode=yr5.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()=>QT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new a16}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===GT1.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()??t16))}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 ${QT1}`),QT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:GT1.incompatible,W=Q<G?0:GT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:GT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class r16{mode=yr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new gX1({maxAttempts:typeof X==="number"?X:3,...Y}):new gX1(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 o16 extends gX1{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}}yr5.AdaptiveRetryStrategy=r16;yr5.ConfiguredRetryStrategy=o16;yr5.DEFAULT_MAX_ATTEMPTS=QT1;yr5.DEFAULT_RETRY_DELAY_BASE=kr5;yr5.DEFAULT_RETRY_MODE=Sr5;yr5.DefaultRateLimiter=JT1;yr5.INITIAL_RETRY_TOKENS=Yz0;yr5.INVOCATION_ID_HEADER=fr5;yr5.MAXIMUM_RETRY_DELAY=Qz0;yr5.NO_RETRY_INCREMENT=t16;yr5.REQUEST_HEADER=br5;yr5.RETRY_COST=vr5;yr5.Retry=eQ;yr5.StandardRetryStrategy=gX1;yr5.THROTTLING_RETRY_DELAY_BASE=Cr5;yr5.TIMEOUT_RETRY_COST=_r5});var WX=k(($o5)=>{var er5=Dw(),Jz0={warningEmitted:!1},Xo5=(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
@@ -7427,7 +7427,6 @@ var orchestrator = new SetupOrchestrator({
7427
7427
  branchStatus
7428
7428
  });
7429
7429
  var discoveredScripts = null;
7430
- var lastWrittenProxyPort;
7431
7430
  var origEvent = broadcaster.broadcastEvent.bind(broadcaster);
7432
7431
  broadcaster.broadcastEvent = (event, data) => {
7433
7432
  if (event === "scripts") {
@@ -7491,12 +7490,6 @@ var lastStatus = startUpstreamProbe({
7491
7490
  if (s.ready && s.port !== null) {
7492
7491
  appService.markUp();
7493
7492
  }
7494
- if (s.port !== null && s.port !== lastWrittenProxyPort && appService.pid() !== undefined) {
7495
- lastWrittenProxyPort = s.port;
7496
- store.apply({
7497
- application: { proxy: { targetPort: s.port } }
7498
- });
7499
- }
7500
7493
  }
7501
7494
  });
7502
7495
  var getDevPort = () => lastStatus.port;
@@ -0,0 +1,82 @@
1
+ {
2
+ "single": {
3
+ "topLeft": "┌",
4
+ "top": "─",
5
+ "topRight": "┐",
6
+ "right": "│",
7
+ "bottomRight": "┘",
8
+ "bottom": "─",
9
+ "bottomLeft": "└",
10
+ "left": "│"
11
+ },
12
+ "double": {
13
+ "topLeft": "╔",
14
+ "top": "═",
15
+ "topRight": "╗",
16
+ "right": "║",
17
+ "bottomRight": "╝",
18
+ "bottom": "═",
19
+ "bottomLeft": "╚",
20
+ "left": "║"
21
+ },
22
+ "round": {
23
+ "topLeft": "╭",
24
+ "top": "─",
25
+ "topRight": "╮",
26
+ "right": "│",
27
+ "bottomRight": "╯",
28
+ "bottom": "─",
29
+ "bottomLeft": "╰",
30
+ "left": "│"
31
+ },
32
+ "bold": {
33
+ "topLeft": "┏",
34
+ "top": "━",
35
+ "topRight": "┓",
36
+ "right": "┃",
37
+ "bottomRight": "┛",
38
+ "bottom": "━",
39
+ "bottomLeft": "┗",
40
+ "left": "┃"
41
+ },
42
+ "singleDouble": {
43
+ "topLeft": "╓",
44
+ "top": "─",
45
+ "topRight": "╖",
46
+ "right": "║",
47
+ "bottomRight": "╜",
48
+ "bottom": "─",
49
+ "bottomLeft": "╙",
50
+ "left": "║"
51
+ },
52
+ "doubleSingle": {
53
+ "topLeft": "╒",
54
+ "top": "═",
55
+ "topRight": "╕",
56
+ "right": "│",
57
+ "bottomRight": "╛",
58
+ "bottom": "═",
59
+ "bottomLeft": "╘",
60
+ "left": "│"
61
+ },
62
+ "classic": {
63
+ "topLeft": "+",
64
+ "top": "-",
65
+ "topRight": "+",
66
+ "right": "|",
67
+ "bottomRight": "+",
68
+ "bottom": "-",
69
+ "bottomLeft": "+",
70
+ "left": "|"
71
+ },
72
+ "arrow": {
73
+ "topLeft": "↘",
74
+ "top": "↓",
75
+ "topRight": "↙",
76
+ "right": "←",
77
+ "bottomRight": "↖",
78
+ "bottom": "↑",
79
+ "bottomLeft": "↗",
80
+ "left": "→"
81
+ }
82
+ }
@@ -0,0 +1,127 @@
1
+ declare namespace cliBoxes {
2
+ /**
3
+ Style of the box border.
4
+ */
5
+ interface BoxStyle {
6
+ readonly topLeft: string;
7
+ readonly top: string;
8
+ readonly topRight: string;
9
+ readonly right: string;
10
+ readonly bottomRight: string;
11
+ readonly bottom: string;
12
+ readonly bottomLeft: string;
13
+ readonly left: string;
14
+ }
15
+
16
+ /**
17
+ All box styles.
18
+ */
19
+ interface Boxes {
20
+ /**
21
+ @example
22
+ ```
23
+ ┌────┐
24
+ │ │
25
+ └────┘
26
+ ```
27
+ */
28
+ readonly single: BoxStyle;
29
+
30
+ /**
31
+ @example
32
+ ```
33
+ ╔════╗
34
+ ║ ║
35
+ ╚════╝
36
+ ```
37
+ */
38
+ readonly double: BoxStyle;
39
+
40
+ /**
41
+ @example
42
+ ```
43
+ ╭────╮
44
+ │ │
45
+ ╰────╯
46
+ ```
47
+ */
48
+ readonly round: BoxStyle;
49
+
50
+ /**
51
+ @example
52
+ ```
53
+ ┏━━━━┓
54
+ ┃ ┃
55
+ ┗━━━━┛
56
+ ```
57
+ */
58
+ readonly bold: BoxStyle;
59
+
60
+ /**
61
+ @example
62
+ ```
63
+ ╓────╖
64
+ ║ ║
65
+ ╙────╜
66
+ ```
67
+ */
68
+ readonly singleDouble: BoxStyle;
69
+
70
+ /**
71
+ @example
72
+ ```
73
+ ╒════╕
74
+ │ │
75
+ ╘════╛
76
+ ```
77
+ */
78
+ readonly doubleSingle: BoxStyle;
79
+
80
+ /**
81
+ @example
82
+ ```
83
+ +----+
84
+ | |
85
+ +----+
86
+ ```
87
+ */
88
+ readonly classic: BoxStyle;
89
+
90
+ /**
91
+ @example
92
+ ```
93
+ ↘↓↓↓↓↙
94
+ → ←
95
+ ↗↑↑↑↑↖
96
+ ```
97
+ */
98
+ readonly arrow: BoxStyle;
99
+ }
100
+ }
101
+
102
+ /**
103
+ Boxes for use in the terminal.
104
+
105
+ @example
106
+ ```
107
+ import cliBoxes = require('cli-boxes');
108
+
109
+ console.log(cliBoxes.single);
110
+ // {
111
+ // topLeft: '┌',
112
+ // top: '─',
113
+ // topRight: '┐',
114
+ // right: '│',
115
+ // bottomRight: '┘',
116
+ // bottom: '─',
117
+ // bottomLeft: '└',
118
+ // left: '│'
119
+ // }
120
+ ```
121
+ */
122
+ declare const cliBoxes: cliBoxes.Boxes & {
123
+ // TODO: Remove this for the next major release
124
+ default: typeof cliBoxes;
125
+ };
126
+
127
+ export = cliBoxes;
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ const cliBoxes = require('./boxes.json');
3
+
4
+ module.exports = cliBoxes;
5
+ // TODO: Remove this for the next major release
6
+ module.exports.default = cliBoxes;
@@ -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,42 @@
1
+ {
2
+ "name": "cli-boxes",
3
+ "version": "3.0.0",
4
+ "description": "Boxes for use in the terminal",
5
+ "license": "MIT",
6
+ "repository": "sindresorhus/cli-boxes",
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
+ "engines": {
14
+ "node": ">=10"
15
+ },
16
+ "scripts": {
17
+ "test": "xo && ava && tsd"
18
+ },
19
+ "files": [
20
+ "index.js",
21
+ "index.d.ts",
22
+ "boxes.json"
23
+ ],
24
+ "keywords": [
25
+ "cli",
26
+ "box",
27
+ "boxes",
28
+ "terminal",
29
+ "term",
30
+ "console",
31
+ "ascii",
32
+ "unicode",
33
+ "border",
34
+ "text",
35
+ "json"
36
+ ],
37
+ "devDependencies": {
38
+ "ava": "^2.4.0",
39
+ "tsd": "^0.14.0",
40
+ "xo": "^0.37.1"
41
+ }
42
+ }
@@ -0,0 +1,115 @@
1
+ # cli-boxes
2
+
3
+ > Boxes for use in the terminal
4
+
5
+ The list of boxes is just a [JSON file](boxes.json) and can be used anywhere.
6
+
7
+ ## Install
8
+
9
+ ```
10
+ $ npm install cli-boxes
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```js
16
+ const cliBoxes = require('cli-boxes');
17
+
18
+ console.log(cliBoxes.single);
19
+ /*
20
+ {
21
+ topLeft: '┌',
22
+ top: '─',
23
+ topRight: '┐',
24
+ right: '│',
25
+ bottomRight: '┘',
26
+ bottom: '─',
27
+ bottomLeft: '└',
28
+ left: '│'
29
+ }
30
+ */
31
+ ```
32
+
33
+ ## API
34
+
35
+ ### cliBoxes
36
+
37
+ #### `single`
38
+
39
+ ```
40
+ ┌────┐
41
+ │ │
42
+ └────┘
43
+ ```
44
+
45
+ #### `double`
46
+
47
+ ```
48
+ ╔════╗
49
+ ║ ║
50
+ ╚════╝
51
+ ```
52
+
53
+ #### `round`
54
+
55
+ ```
56
+ ╭────╮
57
+ │ │
58
+ ╰────╯
59
+ ```
60
+
61
+ #### `bold`
62
+
63
+ ```
64
+ ┏━━━━┓
65
+ ┃ ┃
66
+ ┗━━━━┛
67
+ ```
68
+
69
+ #### `singleDouble`
70
+
71
+ ```
72
+ ╓────╖
73
+ ║ ║
74
+ ╙────╜
75
+ ```
76
+
77
+ #### `doubleSingle`
78
+
79
+ ```
80
+ ╒════╕
81
+ │ │
82
+ ╘════╛
83
+ ```
84
+
85
+ #### `classic`
86
+
87
+ ```
88
+ +----+
89
+ | |
90
+ +----+
91
+ ```
92
+
93
+ #### `arrow`
94
+
95
+ ```
96
+ ↘↓↓↓↓↙
97
+ → ←
98
+ ↗↑↑↑↑↖
99
+ ```
100
+
101
+ ## Related
102
+
103
+ - [boxen](https://github.com/sindresorhus/boxen) - Create boxes in the terminal
104
+
105
+ ---
106
+
107
+ <div align="center">
108
+ <b>
109
+ <a href="https://tidelift.com/subscription/pkg/npm-cli-boxes?utm_source=npm-cli-boxes&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
110
+ </b>
111
+ <br>
112
+ <sub>
113
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
114
+ </sub>
115
+ </div>