decocms 2.299.0 → 2.300.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/dist/client/assets/{AlertCircle-aQgTv3kr.js → AlertCircle-DQvE1HHW.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-C_pLc5t-.js → ArrowNarrowLeft-JeNHsl7t.js} +1 -1
  3. package/dist/client/assets/{ArrowUpRight-Bws5ir-q.js → ArrowUpRight-DrX0ZBVK.js} +1 -1
  4. package/dist/client/assets/{CheckCircle-Cwc7BvQq.js → CheckCircle-jz1wj0OZ.js} +1 -1
  5. package/dist/client/assets/{ChevronDown-C4MI00HX.js → ChevronDown-CJXiv6mb.js} +1 -1
  6. package/dist/client/assets/{ChevronRight-DDkghuaf.js → ChevronRight-jhe98Hpl.js} +1 -1
  7. package/dist/client/assets/{ChevronUp-BjFGxYUb.js → ChevronUp--G-qrAEM.js} +1 -1
  8. package/dist/client/assets/{Container-U4v06cth.js → Container-LZZyJPZO.js} +1 -1
  9. package/dist/client/assets/{DotsVertical-BCK2nFhn.js → DotsVertical-B-LaCx0W.js} +1 -1
  10. package/dist/client/assets/{LinkExternal01-C_yQygSO.js → LinkExternal01-2sbW7UGS.js} +1 -1
  11. package/dist/client/assets/{Lock01-rLvN1xbd.js → Lock01-BOEORqQ0.js} +1 -1
  12. package/dist/client/assets/{Palette-CA95sDHj.js → Palette-CZdOy-tN.js} +1 -1
  13. package/dist/client/assets/{Play-BlOman6C.js → Play-CVmYi0Gz.js} +1 -1
  14. package/dist/client/assets/{Plus-B5soxpbi.js → Plus-0qTCNeQu.js} +1 -1
  15. package/dist/client/assets/{RefreshCcw01-onzNEsM4.js → RefreshCcw01-CczH9hEb.js} +1 -1
  16. package/dist/client/assets/{SearchMd-fvAW1pa8.js → SearchMd-D3ej9sdm.js} +1 -1
  17. package/dist/client/assets/{Settings02-Cro6-7q4.js → Settings02-DSMqESXP.js} +1 -1
  18. package/dist/client/assets/{Shield01-DtWtqZJ1.js → Shield01-Dk5a3EIz.js} +1 -1
  19. package/dist/client/assets/{Star01-BHGJRtit.js → Star01-BRqpvEVh.js} +1 -1
  20. package/dist/client/assets/{Sun-C6J9iUe_.js → Sun-D-zn2wQr.js} +1 -1
  21. package/dist/client/assets/{Tool01-DeRpug6W.js → Tool01-ta8c5owo.js} +1 -1
  22. package/dist/client/assets/{Trash01-BSFNbfe8.js → Trash01-piYSxXuV.js} +1 -1
  23. package/dist/client/assets/{User01-C-8Fo7RS.js → User01-BRe74tu_.js} +1 -1
  24. package/dist/client/assets/{Users03-C25Ink_E.js → Users03-BthJNdjb.js} +1 -1
  25. package/dist/client/assets/{X-Cf3FFZEE.js → X-Bs-K3rP3.js} +1 -1
  26. package/dist/client/assets/{XCircle-CLM44_6-.js → XCircle-W80KsA2R.js} +1 -1
  27. package/dist/client/assets/{XClose-B9H_q-Ab.js → XClose-BvTeI7_p.js} +1 -1
  28. package/dist/client/assets/{Zap-BQvzqOLx.js → Zap-CruZDu0W.js} +1 -1
  29. package/dist/client/assets/{ZapSquare-CjSpwpWX.js → ZapSquare-oPqMGrmK.js} +1 -1
  30. package/dist/client/assets/{accordion-YUzrCziW.js → accordion-CbzOgqka.js} +1 -1
  31. package/dist/client/assets/{agent-icon-CyFFhaia.js → agent-icon-a5rgdmvn.js} +1 -1
  32. package/dist/client/assets/{agents-list-W7eiHZAH.js → agents-list-DUOWHygM.js} +1 -1
  33. package/dist/client/assets/ai-providers-BrRsZwwm.js +1 -0
  34. package/dist/client/assets/{alert-dialog-BRriT9Rx.js → alert-dialog-DpjW0duE.js} +1 -1
  35. package/dist/client/assets/{auth-catchall-dvNJT_HW.js → auth-catchall-DdrEC2nk.js} +1 -1
  36. package/dist/client/assets/{automation-list-row-Dr5BqZcR.js → automation-list-row-DmDAOiMK.js} +1 -1
  37. package/dist/client/assets/{automations-DThDEBhK.js → automations-BGpDui88.js} +1 -1
  38. package/dist/client/assets/{avatar-DZ7Lcia3.js → avatar-C9H5J0ZH.js} +1 -1
  39. package/dist/client/assets/{badge-CNKFpwCQ.js → badge-DM1yKdHA.js} +1 -1
  40. package/dist/client/assets/{brand-context-FHNmQTmw.js → brand-context-CHgKeNYL.js} +1 -1
  41. package/dist/client/assets/{card-DVXldwSE.js → card-D3EHlDqN.js} +1 -1
  42. package/dist/client/assets/{chat-context-clHOazkR.js → chat-context-BTwAu2wE.js} +1 -1
  43. package/dist/client/assets/{checkbox-EVw79nds.js → checkbox-BfEy2ev6.js} +1 -1
  44. package/dist/client/assets/{collection-detail-C13v-yoJ.js → collection-detail-CwiJKTp0.js} +1 -1
  45. package/dist/client/assets/{collection-display-button-BM4OZbbR.js → collection-display-button-I1MRNJca.js} +1 -1
  46. package/dist/client/assets/{collection-search-DjqZM35U.js → collection-search-BDlHgig4.js} +1 -1
  47. package/dist/client/assets/{collection-search-DoSMDd39.js → collection-search-DTXYBhEG.js} +1 -1
  48. package/dist/client/assets/{collection-table-wrapper-jyvgWmq5.js → collection-table-wrapper-BZgayY2v.js} +1 -1
  49. package/dist/client/assets/{collection-tabs-Nu6UZ0Wa.js → collection-tabs-ZB2vm_Ts.js} +1 -1
  50. package/dist/client/assets/{collections-_TpL4Kbd.js → collections-B4NDDkQp.js} +1 -1
  51. package/dist/client/assets/{command-BGK9JNiv.js → command-C8axDPx1.js} +1 -1
  52. package/dist/client/assets/{connection-card-h503T7yE.js → connection-card-B8zimY_1.js} +1 -1
  53. package/dist/client/assets/{connection-detail-E3ZTKIWY.js → connection-detail-CteDwS0C.js} +1 -1
  54. package/dist/client/assets/{connection-form-helpers-B5DiwUxU.js → connection-form-helpers-DW_KgaUQ.js} +1 -1
  55. package/dist/client/assets/{connections-Ba8EED2x.js → connections-DDRTvEHs.js} +1 -1
  56. package/dist/client/assets/{constants-CiJRSGoE.js → constants-6-xiUPcQ.js} +1 -1
  57. package/dist/client/assets/{constants-lTcLVS5n.js → constants-o7_eEaEl.js} +1 -1
  58. package/dist/client/assets/{dialog-BRB-AdlQ.js → dialog-Bt7s8NCP.js} +1 -1
  59. package/dist/client/assets/{domain-settings-vcc_x35P.js → domain-settings-2mBA4m9S.js} +1 -1
  60. package/dist/client/assets/{drawer-rKfRlJNC.js → drawer-a25q5Lla.js} +1 -1
  61. package/dist/client/assets/{dropdown-menu-DaYjsctt.js → dropdown-menu-BNdhp1TS.js} +1 -1
  62. package/dist/client/assets/{dynamic-plugin-layout-Bs-dtzIc.js → dynamic-plugin-layout-COSx8up3.js} +1 -1
  63. package/dist/client/assets/{empty-state-DpWDEkDd.js → empty-state-DfhDT_rL.js} +1 -1
  64. package/dist/client/assets/{empty-state-DLaWKneQ.js → empty-state-TuyNETUf.js} +1 -1
  65. package/dist/client/assets/{extract-connection-data-DIDviCIp.js → extract-connection-data-D-LoPsgm.js} +1 -1
  66. package/dist/client/assets/{features-CE8oBb9H.js → features-Dlqphz2t.js} +1 -1
  67. package/dist/client/assets/{form-mI6GLCMQ.js → form-DdyedIOG.js} +1 -1
  68. package/dist/client/assets/{general-27HuvgYf.js → general-B4yYUcgX.js} +1 -1
  69. package/dist/client/assets/{index-DHZDsons.js → index-0ONdtZvR.js} +1 -1
  70. package/dist/client/assets/index-6xFo1iCj.js +1 -0
  71. package/dist/client/assets/index-B4J1yAvl.css +1 -0
  72. package/dist/client/assets/{index-BLqORW7O.js → index-BLw8IR3q.js} +1 -1
  73. package/dist/client/assets/{index-CD-vU91r.js → index-C656JC4f.js} +1 -1
  74. package/dist/client/assets/{index-D8ZWoKb1.js → index-CFysdS9W.js} +1 -1
  75. package/dist/client/assets/{index-B3zZp_Qu.js → index-CPCIVubP.js} +1 -1
  76. package/dist/client/assets/{index-Ccm19Owr.js → index-CQbllXV7.js} +1 -1
  77. package/dist/client/assets/{index-cC9WxUf7.js → index-Cpu398f4.js} +1 -1
  78. package/dist/client/assets/{index-hcEg81hB.js → index-CyHkfxs2.js} +10 -10
  79. package/dist/client/assets/{index-WenLlWbb.js → index-DC8ny_LW.js} +19 -19
  80. package/dist/client/assets/{index-oMBghIJJ.js → index-DK4Y3HO1.js} +1 -1
  81. package/dist/client/assets/{index-CHiZkXhm.js → index-DiI3qNgk.js} +1 -1
  82. package/dist/client/assets/{index-C4eEdhdn.js → index-DrWfdeB3.js} +1 -1
  83. package/dist/client/assets/{index-B3FEpuQw.js → index-EieaBqsE.js} +1 -1
  84. package/dist/client/assets/{index-BdrUauLh.js → index-kpfWZVBp.js} +1 -1
  85. package/dist/client/assets/{index-B11-oLok.js → index-prfGmBrm.js} +1 -1
  86. package/dist/client/assets/{infiniteQueryObserver-DkM0VxlF.js → infiniteQueryObserver-WKNIeKEe.js} +1 -1
  87. package/dist/client/assets/{input-Cuud93wX.js → input-DocW6-0a.js} +1 -1
  88. package/dist/client/assets/{integration-icon-CsrRg2Lu.js → integration-icon-DtlHVjfw.js} +1 -1
  89. package/dist/client/assets/{label-Bk3DQN0Y.js → label-DbfzJMol.js} +1 -1
  90. package/dist/client/assets/{layout-BtQea4Qg.js → layout-Csh5DA6j.js} +1 -1
  91. package/dist/client/assets/{lean-canvas-recruit-modal-CbbipZjJ.js → lean-canvas-recruit-modal-DUB9h6gA.js} +1 -1
  92. package/dist/client/assets/{login-BgZ8a57W.js → login-D1QEp6zv.js} +1 -1
  93. package/dist/client/assets/{members-BrEtD2C0.js → members-CW5_GrD2.js} +1 -1
  94. package/dist/client/assets/{monaco-editor-B5h0xAd0.js → monaco-editor-CteNuuJr.js} +1 -1
  95. package/dist/client/assets/{monitoring-stats-row-FmuYstq7.js → monitoring-stats-row-C3CIix3j.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-BOHYAMsk.js → oauth-callback-DvWEpCtv.js} +1 -1
  97. package/dist/client/assets/{oauth-callback-ai-provider-D2JxS3R_.js → oauth-callback-ai-provider-D6aB3jn_.js} +1 -1
  98. package/dist/client/assets/{onboarding-Dls-YBag.js → onboarding-CSq15NJd.js} +1 -1
  99. package/dist/client/assets/{org-layout-B0WpG86a.js → org-layout-BcG-IuRM.js} +1 -1
  100. package/dist/client/assets/{org-plugin-layout-fSkxW1jN.js → org-plugin-layout-R-CfCKdC.js} +1 -1
  101. package/dist/client/assets/{pair-CqYfP4a_.js → pair-4EJpDs9f.js} +1 -1
  102. package/dist/client/assets/{plugin-empty-state-C3M4-bHq.js → plugin-empty-state-C1qJ21wH.js} +1 -1
  103. package/dist/client/assets/{plugin-header-Bhl8FTKN.js → plugin-header-CnnrJKt7.js} +1 -1
  104. package/dist/client/assets/{plugin-layout-DOuAk8f9.js → plugin-layout-OKTV_231.js} +1 -1
  105. package/dist/client/assets/{popover-BWawolwL.js → popover-BD8OsO_3.js} +1 -1
  106. package/dist/client/assets/{profile-DKggoElb.js → profile-CPpu_rOC.js} +1 -1
  107. package/dist/client/assets/{project-app-view-BTqqbkYN.js → project-app-view-gL9oMI0P.js} +1 -1
  108. package/dist/client/assets/registry-BsoIBUPl.js +2 -0
  109. package/dist/client/assets/{registry-layout-Bcb0ETu2.js → registry-layout-CNGnjhXy.js} +1 -1
  110. package/dist/client/assets/{required-auth-layout-B0aP_BYa.js → required-auth-layout-crEy15On.js} +1 -1
  111. package/dist/client/assets/{reset-password-DAQu9CHm.js → reset-password-kcnAbcv3.js} +1 -1
  112. package/dist/client/assets/{roles-CV8Id8qK.js → roles-DYIwGuDN.js} +1 -1
  113. package/dist/client/assets/{scroll-area-0g8Z_dWS.js → scroll-area-DuFte1VC.js} +1 -1
  114. package/dist/client/assets/{search-input-jyuCy7Ai.js → search-input-DQy0Ln81.js} +1 -1
  115. package/dist/client/assets/{select-hpzuL2n7.js → select-Ceunqeln.js} +1 -1
  116. package/dist/client/assets/{select-model-CtHOnPsy.js → select-model-UWZWvXzk.js} +1 -1
  117. package/dist/client/assets/{settings-layout-ClllTp0r.js → settings-layout-DMvCQRt1.js} +1 -1
  118. package/dist/client/assets/{settings-section-DTpTGGC-.js → settings-section-iYYh-GAG.js} +1 -1
  119. package/dist/client/assets/{shell-layout-B405kN5F.js → shell-layout-B8B_ABl6.js} +1 -1
  120. package/dist/client/assets/{skeleton-B9GboYxM.js → skeleton-D9tsK-SD.js} +1 -1
  121. package/dist/client/assets/{sso-Dh1NgG1u.js → sso-D0aPF4WO.js} +1 -1
  122. package/dist/client/assets/{store-2uy2qIUV.js → store-dscxfYPH.js} +1 -1
  123. package/dist/client/assets/store-registry-D40XBFQ3.js +2 -0
  124. package/dist/client/assets/{switch-CD5xHhwa.js → switch-PJFUwNv2.js} +1 -1
  125. package/dist/client/assets/{table-Bl-CW2Ey.js → table-B0qcR2jp.js} +1 -1
  126. package/dist/client/assets/{tabs-8bRAvOFB.js → tabs-CbvFgdFf.js} +1 -1
  127. package/dist/client/assets/{task-status-Df19deFg.js → task-status-C0VnLSBE.js} +1 -1
  128. package/dist/client/assets/{textarea-0ebJKTCS.js → textarea-BBy60ci1.js} +1 -1
  129. package/dist/client/assets/{toggle-group-BqrVPEZw.js → toggle-group-wE6dZdNy.js} +1 -1
  130. package/dist/client/assets/{tools-list-1YgWwNhM.js → tools-list-B1mXoVnY.js} +1 -1
  131. package/dist/client/assets/{tooltip-CGmvkTM6.js → tooltip-MEij__fd.js} +1 -1
  132. package/dist/client/assets/{types-CN-G9hqy.js → types-DfUe_JMo.js} +1 -1
  133. package/dist/client/assets/{use-ai-providers-BtZzelvz.js → use-ai-providers-BsFsk2om.js} +1 -1
  134. package/dist/client/assets/{use-collections-DjbmBbmU.js → use-collections-CuFil9_H.js} +1 -1
  135. package/dist/client/assets/{use-connection-CffI5S47.js → use-connection-CyKUB7va.js} +1 -1
  136. package/dist/client/assets/{use-copy-DNx2iDfI.js → use-copy-L-Votg83.js} +1 -1
  137. package/dist/client/assets/{use-create-virtual-mcp-BFp1mbc9.js → use-create-virtual-mcp-DCZ_Q4yV.js} +1 -1
  138. package/dist/client/assets/{use-decopilot-events-D5TlUkky.js → use-decopilot-events-BU0YCIkb.js} +1 -1
  139. package/dist/client/assets/{use-delete-connection-O5X9Xo4O.js → use-delete-connection-CH1yR3V8.js} +1 -1
  140. package/dist/client/assets/{use-infinite-scroll-FZg8WuOv.js → use-infinite-scroll-CQf3beQh.js} +1 -1
  141. package/dist/client/assets/{use-list-state-CbWjR069.js → use-list-state-BO6QgJwM.js} +1 -1
  142. package/dist/client/assets/{use-mcp-tools-CxZifaYv.js → use-mcp-tools-UR7Tvr-a.js} +1 -1
  143. package/dist/client/assets/{use-members-CXQMD9Vu.js → use-members-0EtHtToT.js} +1 -1
  144. package/dist/client/assets/{use-navigate-to-agent-C0C5E43c.js → use-navigate-to-agent-C4FkilnS.js} +1 -1
  145. package/dist/client/assets/{use-org-auth-client-Dy4G77my.js → use-org-auth-client-DSFb3AOu.js} +1 -1
  146. package/dist/client/assets/{use-org-sso-Drj77Zm1.js → use-org-sso-uVWWV8lc.js} +1 -1
  147. package/dist/client/assets/{use-organization-roles-DmSBxwGY.js → use-organization-roles-DBQSLgAo.js} +1 -1
  148. package/dist/client/assets/{use-organization-settings--1KNcya1.js → use-organization-settings-D388Q9Bl.js} +1 -1
  149. package/dist/client/assets/{use-registry-connections-BaBm7Ii1.js → use-registry-connections-Cdqd9fMq.js} +1 -1
  150. package/dist/client/assets/{use-status-sounds-BDL4IJ6A.js → use-status-sounds-DcqY0aWN.js} +1 -1
  151. package/dist/client/assets/{use-tasks-DF42FEXc.js → use-tasks-BJrgZKAK.js} +1 -1
  152. package/dist/client/assets/{use-view-mode-CBcjjJZG.js → use-view-mode-DLgQEYRO.js} +1 -1
  153. package/dist/client/assets/{use-virtual-mcp-CTmQF3FY.js → use-virtual-mcp-MAVDLFj3.js} +1 -1
  154. package/dist/client/assets/useInfiniteQuery-Cb2JkfVZ.js +1 -0
  155. package/dist/client/assets/useSuspenseInfiniteQuery-JMOXdk3c.js +1 -0
  156. package/dist/client/assets/{user-DNhBNgsY.js → user-DvRNamCQ.js} +1 -1
  157. package/dist/client/assets/{view-mode-toggle-KbDgQNkg.js → view-mode-toggle-D8-KKhvu.js} +1 -1
  158. package/dist/client/assets/{workflow-DZzf5GRI.js → workflow-C2dwTU43.js} +1 -1
  159. package/dist/client/assets/workflow-detail-BcRuChZH.js +1 -0
  160. package/dist/client/index.html +2 -2
  161. package/dist/server/cli.js +1 -1
  162. package/dist/server/node_modules/get-east-asian-width/index.d.ts +60 -0
  163. package/dist/server/node_modules/get-east-asian-width/index.js +30 -0
  164. package/dist/server/node_modules/get-east-asian-width/lookup-data.js +18 -0
  165. package/dist/server/node_modules/get-east-asian-width/lookup.js +135 -0
  166. package/dist/server/node_modules/get-east-asian-width/package.json +71 -0
  167. package/dist/server/node_modules/get-east-asian-width/readme.md +65 -0
  168. package/dist/server/node_modules/get-east-asian-width/utilities.js +24 -0
  169. package/dist/server/node_modules/{xtend → pg}/LICENSE +7 -6
  170. package/dist/server/node_modules/pg/README.md +95 -0
  171. package/dist/server/node_modules/pg/esm/index.mjs +20 -0
  172. package/dist/server/node_modules/pg/lib/client.js +743 -0
  173. package/dist/server/node_modules/pg/lib/connection-parameters.js +171 -0
  174. package/dist/server/node_modules/pg/lib/connection.js +221 -0
  175. package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +122 -0
  176. package/dist/server/node_modules/pg/lib/crypto/sasl.js +212 -0
  177. package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +43 -0
  178. package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +89 -0
  179. package/dist/server/node_modules/pg/lib/crypto/utils.js +9 -0
  180. package/dist/server/node_modules/pg/lib/defaults.js +91 -0
  181. package/dist/server/node_modules/pg/lib/index.js +73 -0
  182. package/dist/server/node_modules/pg/lib/native/client.js +323 -0
  183. package/dist/server/node_modules/pg/lib/native/index.js +2 -0
  184. package/dist/server/node_modules/pg/lib/native/query.js +165 -0
  185. package/dist/server/node_modules/pg/lib/query.js +252 -0
  186. package/dist/server/node_modules/pg/lib/result.js +109 -0
  187. package/dist/server/node_modules/pg/lib/stream.js +83 -0
  188. package/dist/server/node_modules/pg/lib/type-overrides.js +35 -0
  189. package/dist/server/node_modules/pg/lib/utils.js +217 -0
  190. package/dist/server/node_modules/pg/package.json +76 -0
  191. package/package.json +1 -1
  192. package/dist/client/assets/ai-providers-D112U5ed.js +0 -1
  193. package/dist/client/assets/index-CLgHTXwu.js +0 -1
  194. package/dist/client/assets/index-DT63_YMm.css +0 -1
  195. package/dist/client/assets/registry-BOvZQpcE.js +0 -2
  196. package/dist/client/assets/store-registry-LkT6leWD.js +0 -2
  197. package/dist/client/assets/useInfiniteQuery-BugVQNDu.js +0 -1
  198. package/dist/client/assets/useSuspenseInfiniteQuery-CMPA3kQv.js +0 -1
  199. package/dist/client/assets/workflow-detail-OXlDN5sZ.js +0 -1
  200. package/dist/server/node_modules/ansi-styles/index.d.ts +0 -236
  201. package/dist/server/node_modules/ansi-styles/index.js +0 -223
  202. package/dist/server/node_modules/ansi-styles/package.json +0 -54
  203. package/dist/server/node_modules/ansi-styles/readme.md +0 -173
  204. package/dist/server/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  205. package/dist/server/node_modules/emoji-regex/README.md +0 -107
  206. package/dist/server/node_modules/emoji-regex/index.d.ts +0 -3
  207. package/dist/server/node_modules/emoji-regex/index.js +0 -4
  208. package/dist/server/node_modules/emoji-regex/index.mjs +0 -4
  209. package/dist/server/node_modules/emoji-regex/package.json +0 -45
  210. package/dist/server/node_modules/onetime/index.d.ts +0 -64
  211. package/dist/server/node_modules/onetime/index.js +0 -44
  212. package/dist/server/node_modules/onetime/license +0 -9
  213. package/dist/server/node_modules/onetime/package.json +0 -43
  214. package/dist/server/node_modules/onetime/readme.md +0 -94
  215. package/dist/server/node_modules/split2/LICENSE +0 -13
  216. package/dist/server/node_modules/split2/README.md +0 -85
  217. package/dist/server/node_modules/split2/bench.js +0 -27
  218. package/dist/server/node_modules/split2/index.js +0 -141
  219. package/dist/server/node_modules/split2/package.json +0 -39
  220. package/dist/server/node_modules/split2/test.js +0 -409
  221. package/dist/server/node_modules/xtend/.jshintrc +0 -30
  222. package/dist/server/node_modules/xtend/README.md +0 -32
  223. package/dist/server/node_modules/xtend/immutable.js +0 -19
  224. package/dist/server/node_modules/xtend/mutable.js +0 -17
  225. package/dist/server/node_modules/xtend/package.json +0 -55
  226. package/dist/server/node_modules/xtend/test.js +0 -103
  227. /package/dist/server/node_modules/{ansi-styles → get-east-asian-width}/license +0 -0
@@ -1 +1 @@
1
- import{e as oe,j as t,B as Ce,f as Be,b as ct,s as ze,r as dt,x as Le,o as ut,a as mt,K as Fe,Y as Ke,Z as pt}from"./index-hcEg81hB.js";import{u as Ve,S as qe}from"./constants-CiJRSGoE.js";import{B as ft,g as Me}from"./constants-lTcLVS5n.js";import{C as Qe}from"./collection-display-button-BM4OZbbR.js";import{C as ht}from"./collection-search-DoSMDd39.js";import{C as gt}from"./card-DVXldwSE.js";import{I as Ge}from"./integration-icon-CsrRg2Lu.js";import{D as He,a as Ye,b as Je,c as O}from"./dropdown-menu-DaYjsctt.js";import{c as Ze}from"./XCircle-CLM44_6-.js";import{i as Xe}from"./DotsVertical-BCK2nFhn.js";import{y as et,H as Ue}from"./agent-icon-CyFFhaia.js";import{s as tt}from"./RefreshCcw01-onzNEsM4.js";import{s as st}from"./Trash01-BSFNbfe8.js";import{C as xt}from"./collection-table-wrapper-jyvgWmq5.js";import{E as We}from"./empty-state-DpWDEkDd.js";import{U as jt}from"./user-DNhBNgsY.js";import{E as it}from"./empty-state-DLaWKneQ.js";import{u as Ct}from"./use-list-state-CbWjR069.js";import{g as bt}from"./connection-slug-eyAPH6o3.js";import{f as vt,g as yt,c as Nt,b as wt,d as St,e as Pt,a as _t,A as Dt}from"./alert-dialog-BRriT9Rx.js";import{a as It,c as At}from"./use-collections-DjbmBbmU.js";import{a as Tt}from"./use-connection-CffI5S47.js";import{s as Et}from"./Plus-B5soxpbi.js";import{a as Ot}from"./layout-BtQea4Qg.js";import{P as je}from"./index-oMBghIJJ.js";import"./collections-_TpL4Kbd.js";import"./XClose-B9H_q-Ab.js";import"./ChevronDown-C4MI00HX.js";import"./tooltip-CGmvkTM6.js";import"./view-mode-toggle-KbDgQNkg.js";import"./badge-CNKFpwCQ.js";import"./SearchMd-fvAW1pa8.js";import"./Container-U4v06cth.js";import"./ChevronRight-DDkghuaf.js";import"./AlertCircle-aQgTv3kr.js";import"./Tool01-DeRpug6W.js";import"./ArrowNarrowLeft-C_pLc5t-.js";import"./ArrowUpRight-Bws5ir-q.js";import"./ZapSquare-CjSpwpWX.js";import"./Users03-C25Ink_E.js";import"./CheckCircle-Cwc7BvQq.js";import"./ChevronUp-BjFGxYUb.js";import"./Star01-BHGJRtit.js";import"./Palette-CA95sDHj.js";import"./LinkExternal01-C_yQygSO.js";import"./Lock01-rLvN1xbd.js";import"./Sun-C6J9iUe_.js";import"./Play-BlOman6C.js";import"./Settings02-Cro6-7q4.js";import"./Shield01-DtWtqZJ1.js";import"./User01-C-8Fo7RS.js";import"./X-Cf3FFZEE.js";import"./Zap-BQvzqOLx.js";import"./table-Bl-CW2Ey.js";import"./avatar-DZ7Lcia3.js";import"./use-view-mode-CBcjjJZG.js";function $t(i,e){const s=i.properties||{};for(const n in s){const c=s[n];if(c&&c.type==="string"&&(c.format==="url"||c.format==="uri")&&e&&typeof e=="object"&&n in e&&e[n])return e[n]}const l=["image","img","avatar","icon","logo","thumbnail","cover"];for(const n of l)if(e&&typeof e=="object"&&n in e&&typeof e[n]=="string")return e[n]}function kt(i){const e=oe.c(25),{item:s,schema:l,actions:n}=i;let c;e[0]!==s||e[1]!==l?(c=$t(l,s),e[0]=s,e[1]=l,e[2]=c):c=e[2];const r=c,p=s&&typeof s=="object"&&"description"in s&&typeof s.description=="string"?s.description:void 0;let d;e[3]!==n?(d=n&&Object.keys(n).length>0,e[3]=n,e[4]=d):d=e[4];const o=d;let m;e[5]!==r||e[6]!==s.title?(m=t.jsx(Ge,{icon:r,name:s.title,size:"md",className:"shrink-0 shadow-sm"}),e[5]=r,e[6]=s.title,e[7]=m):m=e[7];let u;e[8]!==s.title?(u=t.jsx("h3",{className:"text-base font-medium text-foreground truncate",children:s.title}),e[8]=s.title,e[9]=u):u=e[9];const f=p||"No description";let a;e[10]!==f?(a=t.jsx("p",{className:"text-base text-muted-foreground line-clamp-2",children:f}),e[10]=f,e[11]=a):a=e[11];let b;e[12]!==u||e[13]!==a?(b=t.jsxs("div",{className:"flex flex-col gap-0 flex-1",children:[u,a]}),e[12]=u,e[13]=a,e[14]=b):b=e[14];let y;e[15]!==m||e[16]!==b?(y=t.jsxs("div",{className:"flex flex-col gap-4 p-6 flex-1",children:[m,b]}),e[15]=m,e[16]=b,e[17]=y):y=e[17];let C;e[18]!==n||e[19]!==o||e[20]!==s?(C=o&&t.jsx("div",{className:"absolute top-6 right-6 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity",onClick:Kt,onMouseDown:Ft,children:t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Lt,children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:zt,children:[n.open&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.open?.(s)},children:[t.jsx(tt,{size:16}),"Open"]}),n.edit&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.edit?.(s)},children:[t.jsx(et,{size:16}),"Edit"]}),n.duplicate&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.duplicate?.(s)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),n.delete&&t.jsxs(O,{variant:"destructive",onClick:g=>{g.stopPropagation(),n.delete?.(s)},children:[t.jsx(st,{size:16}),"Delete"]})]})]})}),e[18]=n,e[19]=o,e[20]=s,e[21]=C):C=e[21];let v;return e[22]!==y||e[23]!==C?(v=t.jsxs(gt,{className:"cursor-pointer transition-colors hover:bg-accent/50 h-full flex flex-col group relative",children:[y,C]}),e[22]=y,e[23]=C,e[24]=v):v=e[24],v}function zt(i){return i.stopPropagation()}function Lt(i){return i.stopPropagation()}function Ft(i){return i.stopPropagation()}function Kt(i){return i.stopPropagation()}const Mt=["icon","avatar","logo"],Re=["created_at","created_by","id"];function Ut(i){return Object.keys(i).find(e=>Mt.includes(e.toLowerCase()))}function ot(i,e){return Object.keys(i.properties||{}).filter(s=>["id","created_at","updated_at","created_by","updated_by"].includes(s)?!1:e?e.includes(s):!0).map(s=>({id:s,label:s.charAt(0).toUpperCase()+s.slice(1).replace(/_/g," ")}))}function Wt(i){const e=oe.c(30),{data:s,schema:l,viewMode:n,search:c,sortKey:r,sortDirection:p,onSort:d,actions:o,onItemClick:m,headerActions:u,emptyState:f,readOnly:a,columns:b,hideToolbar:y,sortableFields:C}=i,v=p===void 0?"asc":p,g=d===void 0?qt:d;let $;e[0]!==o?($=o===void 0?{}:o,e[0]=o,e[1]=$):$=e[1];const h=$,T=m===void 0?Vt:m,E=u===void 0?null:u,N=f===void 0?null:f,k=a===void 0?!1:a,x=b===void 0?void 0:b,z=y===void 0?!1:y,P=C===void 0?void 0:C;let D;e[2]!==x||e[3]!==l||e[4]!==P?(D=x?x.filter(Bt).filter(A=>!P||P.includes(A.id)).map(Rt):ot(l,P),e[2]=x,e[3]=l,e[4]=P,e[5]=D):D=e[5];const w=D;let S;e[6]!==E||e[7]!==z||e[8]!==g||e[9]!==v||e[10]!==r||e[11]!==w?(S=!z&&t.jsx("div",{className:"shrink-0 w-full border-b border-border h-12",children:t.jsxs("div",{className:"flex items-center gap-3 h-12 px-4",children:[t.jsx("div",{className:"flex items-center gap-2 flex-1",children:E}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(Qe,{sortKey:r,sortDirection:v,onSort:g,sortOptions:w})})]})}),e[6]=E,e[7]=z,e[8]=g,e[9]=v,e[10]=r,e[11]=w,e[12]=S):S=e[12];let _;e[13]!==h||e[14]!==x||e[15]!==s||e[16]!==N||e[17]!==T||e[18]!==g||e[19]!==k||e[20]!==l||e[21]!==c||e[22]!==v||e[23]!==r||e[24]!==P||e[25]!==n?(_=n==="cards"?t.jsx("div",{className:"flex-1 overflow-auto p-5",children:s.length===0?t.jsx("div",{className:"flex items-center justify-center h-full",children:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}):t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4",children:s.map(A=>t.jsx("div",{onClick:()=>T?.(A),className:"cursor-pointer h-full",children:t.jsx(kt,{item:A,schema:l,readOnly:k,actions:h})},A.id))})}):t.jsx(xt,{columns:Ht(x,l,P,h),data:s,sortKey:r,sortDirection:v,onSort:g,onRowClick:T,emptyState:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}),e[13]=h,e[14]=x,e[15]=s,e[16]=N,e[17]=T,e[18]=g,e[19]=k,e[20]=l,e[21]=c,e[22]=v,e[23]=r,e[24]=P,e[25]=n,e[26]=_):_=e[26];let I;return e[27]!==S||e[28]!==_?(I=t.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[S,_]}),e[27]=S,e[28]=_,e[29]=I):I=e[29],I}function Rt(i){return{id:i.id,label:typeof i.header=="string"?i.header:i.id}}function Bt(i){return i.sortable!==!1}function Vt(){}function qt(){}function Qt(i){return{id:"actions",header:"",render:e=>t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:s=>s.stopPropagation(),children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:s=>s.stopPropagation(),children:[i.open&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.open?.(e)},children:[t.jsx(tt,{size:16}),"Open"]}),i.edit&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.edit?.(e)},children:[t.jsx(et,{size:16}),"Edit"]}),i.duplicate&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.duplicate?.(e)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),i.delete&&t.jsxs(O,{variant:"destructive",onClick:s=>{s.stopPropagation(),i.delete?.(e)},children:[t.jsx(st,{size:16}),"Delete"]})]})]}),cellClassName:"w-[60px]",sortable:!1}}function nt(i){const e=i.type;return Array.isArray(e)?e.every(s=>nt({type:s})):e==="string"||e==="number"||e==="integer"||e==="boolean"||e==="null"}function Gt(i,e){const s=i.properties||{},l=Object.keys(s).filter(o=>{const m=s[o];return m&&nt(m)}),n=Ut(s),c=[],r=new Set;n&&l.includes(n)&&(c.push(n),r.add(n));const p=["title","description","updated_at","updated_by"];for(const o of p)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));const d=l.filter(o=>!r.has(o)&&!Re.includes(o)).sort((o,m)=>o.localeCompare(m));for(const o of d)c.push(o),r.add(o);for(const o of Re)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));return c.map(o=>{const m=s[o],u=e?e.includes(o):!["id"].includes(o);return o===n?{id:o,header:"",render:f=>{const a=f[o];return t.jsx(Ge,{icon:a,name:f.title,size:"sm",className:"shrink-0 shadow-sm"})},sortable:!1,cellClassName:"w-16 shrink-0",wrap:!0}:o==="description"?{id:o,header:"Description",render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-[50ch]",children:String(a)})},sortable:u,cellClassName:"max-w-[50ch]"}:o==="created_by"||o==="updated_by"?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx(jt,{id:String(a),size:"xs"}):"—"},sortable:u,cellClassName:"max-w-[250px]"}:m?.format==="date-time"||o.endsWith("_at")?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx("span",{className:"block truncate max-w-full",children:new Date(a).toLocaleDateString()}):"—"},sortable:u,cellClassName:"max-w-[200px]"}:{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-full",children:String(a)})},sortable:u,cellClassName:"max-w-[200px]"}})}function Ht(i,e,s,l){const n=i||Gt(e,s);return n.some(p=>p.id==="actions")?n:Object.keys(l).length>0?[...n,Qt(l)]:n}function Yt(i){const e=oe.c(118),{connectionId:s,org:l,activeCollection:n,onItemClick:c}=i,r=n.name,p=n.schema??ft,d=n.hasCreateTool,o=n.hasUpdateTool,m=n.hasDeleteTool,u=Be(),{data:f}=ct.useSession(),a=f?.user?.id||"unknown",b=Tt(s);let y;e[0]!==b||e[1]!==s?(y=b?bt(b):s,e[0]=b,e[1]=s,e[2]=y):y=e[2];const C=y,{org:v}=ze();let g;e[3]!==s||e[4]!==v.id?(g={connectionId:s,orgId:v.id},e[3]=s,e[4]=v.id,e[5]=g):g=e[5];const $=Ve(g),h=It(s,r,$),T=`${s}-${r}`;let E;e[6]!==l||e[7]!==T?(E={namespace:l,resource:T,defaultSortKey:"updated_at"},e[6]=l,e[7]=T,e[8]=E):E=e[8];const{search:N,searchTerm:k,setSearch:x,viewMode:z,setViewMode:P,sortKey:D,sortDirection:w,handleSort:S}=Ct(E);let _;e[9]!==k||e[10]!==w||e[11]!==D?(_={searchTerm:k,sortKey:D,sortDirection:w},e[9]=k,e[10]=w,e[11]=D,e[12]=_):_=e[12];const I=At(s,r,$,_),A=!d&&!o&&!m;let ne;e[13]!==C||e[14]!==r||e[15]!==u||e[16]!==c||e[17]!==l?(ne=j=>{if(c){c(j);return}u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:C,collectionName:r,itemId:j.id}})},e[13]=C,e[14]=r,e[15]=u,e[16]=c,e[17]=l,e[18]=ne):ne=e[18];const L=ne;let re;e[19]!==h.create||e[20]!==a?(re=async j=>{const xe=new Date().toISOString();await h.create.mutateAsync({...j,id:Me("conn"),title:`${j.title} (Copy)`,created_at:xe,updated_at:xe,created_by:a,updated_by:a})},e[19]=h.create,e[20]=a,e[21]=re):re=e[21];const be=re,[F,ve]=dt.useState(null);let le;e[22]===Symbol.for("react.memo_cache_sentinel")?(le=j=>{ve(j)},e[22]=le):le=e[22];const rt=le;let K;e[23]!==L||e[24]!==o?(K=o&&{edit:L},e[23]=L,e[24]=o,e[25]=K):K=e[25];let M;e[26]!==be||e[27]!==d?(M=d&&{duplicate:be},e[26]=be,e[27]=d,e[28]=M):M=e[28];let U;e[29]!==m?(U=m&&{delete:rt},e[29]=m,e[30]=U):U=e[30];let ae;e[31]!==M||e[32]!==U||e[33]!==K?(ae={...K,...M,...U},e[31]=M,e[32]=U,e[33]=K,e[34]=ae):ae=e[34];const ye=ae;let ce;e[35]!==h.delete||e[36]!==F?(ce=async()=>{F&&(await h.delete.mutateAsync(F.id),ve(null))},e[35]=h.delete,e[36]=F,e[37]=ce):ce=e[37];const Ne=ce;let de;e[38]!==h.create||e[39]!==C||e[40]!==r||e[41]!==d||e[42]!==u||e[43]!==l||e[44]!==a?(de=async()=>{if(!d){Le.error("Create operation is not available for this collection");return}const j=new Date().toISOString(),xe={id:Me("conn"),title:"New Item",description:"A brief description of the item",created_at:j,updated_at:j,created_by:a,updated_by:a};try{const ke=await h.create.mutateAsync(xe);u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:C,collectionName:r,itemId:ke.id}})}catch(ke){console.error("Failed to create item:",ke)}},e[38]=h.create,e[39]=C,e[40]=r,e[41]=d,e[42]=u,e[43]=l,e[44]=a,e[45]=de):de=e[45];const we=de;let ue;e[46]!==p?(ue=ot(p),e[46]=p,e[47]=ue):ue=e[47];const Se=ue,lt=(I?.length??0)>0,at=d&&!lt&&!N;let me;e[48]!==h.create||e[49]!==we||e[50]!==d?(me=d?t.jsxs(Ce,{onClick:we,size:"sm",disabled:h.create.isPending,className:"h-7",children:[t.jsx(Et,{className:"mr-2 h-4 w-4"}),h.create.isPending?"Creating...":"Create"]}):null,e[48]=h.create,e[49]=we,e[50]=d,e[51]=me):me=e[51];const pe=me,Pe=D;let W;e[52]!==S||e[53]!==w||e[54]!==Se||e[55]!==Pe?(W=t.jsx(Ot,{children:t.jsx(Qe,{sortKey:Pe,sortDirection:w,onSort:S,sortOptions:Se})}),e[52]=S,e[53]=w,e[54]=Se,e[55]=Pe,e[56]=W):W=e[56];const _e=`Search ${r}...`;let R;e[57]!==x?(R=j=>{j.key==="Escape"&&(x(""),j.target.blur())},e[57]=x,e[58]=R):R=e[58];let B;e[59]!==N||e[60]!==x||e[61]!==_e||e[62]!==R?(B=t.jsx("div",{className:"flex-1",children:t.jsx(ht,{value:N,onChange:x,placeholder:_e,onKeyDown:R})}),e[59]=N,e[60]=x,e[61]=_e,e[62]=R,e[63]=B):B=e[63];let V;e[64]!==pe||e[65]!==d?(V=d&&t.jsx("div",{className:"pr-3",children:pe}),e[64]=pe,e[65]=d,e[66]=V):V=e[66];let q;e[67]!==B||e[68]!==V?(q=t.jsxs("div",{className:"flex items-center gap-2",children:[B,V]}),e[67]=B,e[68]=V,e[69]=q):q=e[69];let Q;e[70]!==I?(Q=I??[],e[70]=I,e[71]=Q):Q=e[71];const De=D;let G;e[72]!==L?(G=j=>L(j),e[72]=L,e[73]=G):G=e[73];const Ie="No items found",Ae=N?"Try adjusting your search terms":"This collection doesn't have any items yet.",Te=at?pe:void 0;let H;e[74]!==Ie||e[75]!==Ae||e[76]!==Te?(H=t.jsx(it,{image:null,title:Ie,description:Ae,actions:Te}),e[74]=Ie,e[75]=Ae,e[76]=Te,e[77]=H):H=e[77];let Y;e[78]!==S||e[79]!==A||e[80]!==ye||e[81]!==p||e[82]!==N||e[83]!==x||e[84]!==P||e[85]!==w||e[86]!==Q||e[87]!==De||e[88]!==G||e[89]!==H||e[90]!==z?(Y=t.jsx("div",{className:"flex-1 overflow-auto",children:t.jsx(Wt,{hideToolbar:!0,data:Q,schema:p,viewMode:z,onViewModeChange:P,search:N,onSearchChange:x,sortKey:De,sortDirection:w,onSort:S,actions:ye,onItemClick:G,readOnly:A,emptyState:H})}),e[78]=S,e[79]=A,e[80]=ye,e[81]=p,e[82]=N,e[83]=x,e[84]=P,e[85]=w,e[86]=Q,e[87]=De,e[88]=G,e[89]=H,e[90]=z,e[91]=Y):Y=e[91];let J;e[92]!==q||e[93]!==Y?(J=t.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[q,Y]}),e[92]=q,e[93]=Y,e[94]=J):J=e[94];const Ee=!!F;let fe;e[95]===Symbol.for("react.memo_cache_sentinel")?(fe=j=>{j||ve(null)},e[95]=fe):fe=e[95];let he;e[96]===Symbol.for("react.memo_cache_sentinel")?(he=t.jsx(Nt,{children:"Delete item?"}),e[96]=he):he=e[96];const Oe=F?.title;let Z;e[97]!==Oe?(Z=t.jsxs(wt,{children:[he,t.jsxs(St,{children:['Are you sure you want to delete "',Oe,'"? This action cannot be undone.']})]}),e[97]=Oe,e[98]=Z):Z=e[98];let X;e[99]!==h.delete.isPending?(X=t.jsx(vt,{disabled:h.delete.isPending,children:"Cancel"}),e[99]=h.delete.isPending,e[100]=X):X=e[100];const $e=h.delete.isPending?"Deleting...":"Delete";let ee;e[101]!==h.delete.isPending||e[102]!==Ne||e[103]!==$e?(ee=t.jsx(yt,{onClick:Ne,disabled:h.delete.isPending,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:$e}),e[101]=h.delete.isPending,e[102]=Ne,e[103]=$e,e[104]=ee):ee=e[104];let te;e[105]!==X||e[106]!==ee?(te=t.jsxs(Pt,{children:[X,ee]}),e[105]=X,e[106]=ee,e[107]=te):te=e[107];let se;e[108]!==Z||e[109]!==te?(se=t.jsxs(_t,{children:[Z,te]}),e[108]=Z,e[109]=te,e[110]=se):se=e[110];let ie;e[111]!==Ee||e[112]!==se?(ie=t.jsx(Dt,{open:Ee,onOpenChange:fe,children:se}),e[111]=Ee,e[112]=se,e[113]=ie):ie=e[113];let ge;return e[114]!==W||e[115]!==J||e[116]!==ie?(ge=t.jsxs(t.Fragment,{children:[W,J,ie]}),e[114]=W,e[115]=J,e[116]=ie,e[117]=ge):ge=e[117],ge}function Jt(){const i=oe.c(12),{org:e,project:s}=ze(),l=ut();let n;i[0]!==e.id?(n={connectionId:qe,orgId:e.id},i[0]=e.id,i[1]=n):n=i[1];const c=Ve(n);let r;i[2]!==c||i[3]!==s?(r=async m=>{const u=s.enabledPlugins??[];if(u.includes(m))return;const f=[...u,m],a=await c.callTool({name:"COLLECTION_VIRTUAL_MCP_UPDATE",arguments:{id:s.id,data:{metadata:{enabled_plugins:f}}}});return a.structuredContent??a},i[2]=c,i[3]=s,i[4]=r):r=i[4];let p;i[5]!==e.id||i[6]!==s||i[7]!==l?(p=()=>{l.invalidateQueries({queryKey:Fe.project(e.id,s.slug)}),l.invalidateQueries({queryKey:Fe.projects(e.id)})},i[5]=e.id,i[6]=s,i[7]=l,i[8]=p):p=i[8];let d;return i[9]!==r||i[10]!==p?(d={mutationFn:r,onSuccess:p,onError:Zt},i[9]=r,i[10]=p,i[11]=d):d=i[11],mt(d)}function Zt(i){Le.error("Failed to enable plugin: "+(i instanceof Error?i.message:"Unknown error"))}function Xt(i){const e=oe.c(12),{pluginId:s,title:l,description:n,icon:c}=i,r=Jt();let p;e[0]!==r||e[1]!==s?(p=async()=>{try{await r.mutateAsync(s),Le.success("Plugin enabled!")}catch{}},e[0]=r,e[1]=s,e[2]=p):p=e[2];const d=p,o=c??null,m=r.isPending?"Enabling…":"Enable plugin";let u;e[3]!==r.isPending||e[4]!==d||e[5]!==m?(u=t.jsx(Ce,{onClick:d,disabled:r.isPending,children:m}),e[3]=r.isPending,e[4]=d,e[5]=m,e[6]=u):u=e[6];let f;return e[7]!==n||e[8]!==o||e[9]!==u||e[10]!==l?(f=t.jsx(it,{image:o,title:l,description:n,actions:u}),e[7]=n,e[8]=o,e[9]=u,e[10]=l,e[11]=f):f=e[11],f}const es={name:"WORKFLOW",displayName:"Workflow",hasCreateTool:!0,hasUpdateTool:!0,hasDeleteTool:!0};function oi(){const{project:i,org:e}=ze();if(!(i.enabledPlugins??[]).includes(Ke))return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(Xt,{pluginId:Ke,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(pt,{className:"size-8 text-muted-foreground"})})})})})});const n=Be();return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx(Yt,{connectionId:qe,org:e.slug,activeCollection:es,onItemClick:c=>n({to:"/$org/settings/workflows/$itemId",params:{org:e.slug,itemId:c.id}})})})})}export{oi as default};
1
+ import{e as oe,j as t,B as Ce,f as Be,b as ct,s as ze,r as dt,x as Le,o as ut,a as mt,K as Fe,Y as Ke,Z as pt}from"./index-CyHkfxs2.js";import{u as Ve,S as qe}from"./constants-6-xiUPcQ.js";import{B as ft,g as Me}from"./constants-o7_eEaEl.js";import{C as Qe}from"./collection-display-button-I1MRNJca.js";import{C as ht}from"./collection-search-DTXYBhEG.js";import{C as gt}from"./card-D3EHlDqN.js";import{I as Ge}from"./integration-icon-DtlHVjfw.js";import{D as He,a as Ye,b as Je,c as O}from"./dropdown-menu-BNdhp1TS.js";import{c as Ze}from"./XCircle-W80KsA2R.js";import{i as Xe}from"./DotsVertical-B-LaCx0W.js";import{y as et,H as Ue}from"./agent-icon-a5rgdmvn.js";import{s as tt}from"./RefreshCcw01-CczH9hEb.js";import{s as st}from"./Trash01-piYSxXuV.js";import{C as xt}from"./collection-table-wrapper-BZgayY2v.js";import{E as We}from"./empty-state-DfhDT_rL.js";import{U as jt}from"./user-DvRNamCQ.js";import{E as it}from"./empty-state-TuyNETUf.js";import{u as Ct}from"./use-list-state-BO6QgJwM.js";import{g as bt}from"./connection-slug-eyAPH6o3.js";import{f as vt,g as yt,c as Nt,b as wt,d as St,e as Pt,a as _t,A as Dt}from"./alert-dialog-DpjW0duE.js";import{a as It,c as At}from"./use-collections-CuFil9_H.js";import{a as Tt}from"./use-connection-CyKUB7va.js";import{s as Et}from"./Plus-0qTCNeQu.js";import{a as Ot}from"./layout-Csh5DA6j.js";import{P as je}from"./index-DK4Y3HO1.js";import"./collections-B4NDDkQp.js";import"./XClose-BvTeI7_p.js";import"./ChevronDown-CJXiv6mb.js";import"./tooltip-MEij__fd.js";import"./view-mode-toggle-D8-KKhvu.js";import"./badge-DM1yKdHA.js";import"./SearchMd-D3ej9sdm.js";import"./Container-LZZyJPZO.js";import"./ChevronRight-jhe98Hpl.js";import"./AlertCircle-DQvE1HHW.js";import"./Tool01-ta8c5owo.js";import"./ArrowNarrowLeft-JeNHsl7t.js";import"./ArrowUpRight-DrX0ZBVK.js";import"./ZapSquare-oPqMGrmK.js";import"./Users03-BthJNdjb.js";import"./CheckCircle-jz1wj0OZ.js";import"./ChevronUp--G-qrAEM.js";import"./Star01-BRqpvEVh.js";import"./Palette-CZdOy-tN.js";import"./LinkExternal01-2sbW7UGS.js";import"./Lock01-BOEORqQ0.js";import"./Sun-D-zn2wQr.js";import"./Play-CVmYi0Gz.js";import"./Settings02-DSMqESXP.js";import"./Shield01-Dk5a3EIz.js";import"./User01-BRe74tu_.js";import"./X-Bs-K3rP3.js";import"./Zap-CruZDu0W.js";import"./table-B0qcR2jp.js";import"./avatar-C9H5J0ZH.js";import"./use-view-mode-DLgQEYRO.js";function $t(i,e){const s=i.properties||{};for(const n in s){const c=s[n];if(c&&c.type==="string"&&(c.format==="url"||c.format==="uri")&&e&&typeof e=="object"&&n in e&&e[n])return e[n]}const l=["image","img","avatar","icon","logo","thumbnail","cover"];for(const n of l)if(e&&typeof e=="object"&&n in e&&typeof e[n]=="string")return e[n]}function kt(i){const e=oe.c(25),{item:s,schema:l,actions:n}=i;let c;e[0]!==s||e[1]!==l?(c=$t(l,s),e[0]=s,e[1]=l,e[2]=c):c=e[2];const r=c,p=s&&typeof s=="object"&&"description"in s&&typeof s.description=="string"?s.description:void 0;let d;e[3]!==n?(d=n&&Object.keys(n).length>0,e[3]=n,e[4]=d):d=e[4];const o=d;let m;e[5]!==r||e[6]!==s.title?(m=t.jsx(Ge,{icon:r,name:s.title,size:"md",className:"shrink-0 shadow-sm"}),e[5]=r,e[6]=s.title,e[7]=m):m=e[7];let u;e[8]!==s.title?(u=t.jsx("h3",{className:"text-base font-medium text-foreground truncate",children:s.title}),e[8]=s.title,e[9]=u):u=e[9];const f=p||"No description";let a;e[10]!==f?(a=t.jsx("p",{className:"text-base text-muted-foreground line-clamp-2",children:f}),e[10]=f,e[11]=a):a=e[11];let b;e[12]!==u||e[13]!==a?(b=t.jsxs("div",{className:"flex flex-col gap-0 flex-1",children:[u,a]}),e[12]=u,e[13]=a,e[14]=b):b=e[14];let y;e[15]!==m||e[16]!==b?(y=t.jsxs("div",{className:"flex flex-col gap-4 p-6 flex-1",children:[m,b]}),e[15]=m,e[16]=b,e[17]=y):y=e[17];let C;e[18]!==n||e[19]!==o||e[20]!==s?(C=o&&t.jsx("div",{className:"absolute top-6 right-6 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity",onClick:Kt,onMouseDown:Ft,children:t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Lt,children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:zt,children:[n.open&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.open?.(s)},children:[t.jsx(tt,{size:16}),"Open"]}),n.edit&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.edit?.(s)},children:[t.jsx(et,{size:16}),"Edit"]}),n.duplicate&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.duplicate?.(s)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),n.delete&&t.jsxs(O,{variant:"destructive",onClick:g=>{g.stopPropagation(),n.delete?.(s)},children:[t.jsx(st,{size:16}),"Delete"]})]})]})}),e[18]=n,e[19]=o,e[20]=s,e[21]=C):C=e[21];let v;return e[22]!==y||e[23]!==C?(v=t.jsxs(gt,{className:"cursor-pointer transition-colors hover:bg-accent/50 h-full flex flex-col group relative",children:[y,C]}),e[22]=y,e[23]=C,e[24]=v):v=e[24],v}function zt(i){return i.stopPropagation()}function Lt(i){return i.stopPropagation()}function Ft(i){return i.stopPropagation()}function Kt(i){return i.stopPropagation()}const Mt=["icon","avatar","logo"],Re=["created_at","created_by","id"];function Ut(i){return Object.keys(i).find(e=>Mt.includes(e.toLowerCase()))}function ot(i,e){return Object.keys(i.properties||{}).filter(s=>["id","created_at","updated_at","created_by","updated_by"].includes(s)?!1:e?e.includes(s):!0).map(s=>({id:s,label:s.charAt(0).toUpperCase()+s.slice(1).replace(/_/g," ")}))}function Wt(i){const e=oe.c(30),{data:s,schema:l,viewMode:n,search:c,sortKey:r,sortDirection:p,onSort:d,actions:o,onItemClick:m,headerActions:u,emptyState:f,readOnly:a,columns:b,hideToolbar:y,sortableFields:C}=i,v=p===void 0?"asc":p,g=d===void 0?qt:d;let $;e[0]!==o?($=o===void 0?{}:o,e[0]=o,e[1]=$):$=e[1];const h=$,T=m===void 0?Vt:m,E=u===void 0?null:u,N=f===void 0?null:f,k=a===void 0?!1:a,x=b===void 0?void 0:b,z=y===void 0?!1:y,P=C===void 0?void 0:C;let D;e[2]!==x||e[3]!==l||e[4]!==P?(D=x?x.filter(Bt).filter(A=>!P||P.includes(A.id)).map(Rt):ot(l,P),e[2]=x,e[3]=l,e[4]=P,e[5]=D):D=e[5];const w=D;let S;e[6]!==E||e[7]!==z||e[8]!==g||e[9]!==v||e[10]!==r||e[11]!==w?(S=!z&&t.jsx("div",{className:"shrink-0 w-full border-b border-border h-12",children:t.jsxs("div",{className:"flex items-center gap-3 h-12 px-4",children:[t.jsx("div",{className:"flex items-center gap-2 flex-1",children:E}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(Qe,{sortKey:r,sortDirection:v,onSort:g,sortOptions:w})})]})}),e[6]=E,e[7]=z,e[8]=g,e[9]=v,e[10]=r,e[11]=w,e[12]=S):S=e[12];let _;e[13]!==h||e[14]!==x||e[15]!==s||e[16]!==N||e[17]!==T||e[18]!==g||e[19]!==k||e[20]!==l||e[21]!==c||e[22]!==v||e[23]!==r||e[24]!==P||e[25]!==n?(_=n==="cards"?t.jsx("div",{className:"flex-1 overflow-auto p-5",children:s.length===0?t.jsx("div",{className:"flex items-center justify-center h-full",children:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}):t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4",children:s.map(A=>t.jsx("div",{onClick:()=>T?.(A),className:"cursor-pointer h-full",children:t.jsx(kt,{item:A,schema:l,readOnly:k,actions:h})},A.id))})}):t.jsx(xt,{columns:Ht(x,l,P,h),data:s,sortKey:r,sortDirection:v,onSort:g,onRowClick:T,emptyState:N||t.jsx(We,{icon:t.jsx(Ue,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}),e[13]=h,e[14]=x,e[15]=s,e[16]=N,e[17]=T,e[18]=g,e[19]=k,e[20]=l,e[21]=c,e[22]=v,e[23]=r,e[24]=P,e[25]=n,e[26]=_):_=e[26];let I;return e[27]!==S||e[28]!==_?(I=t.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[S,_]}),e[27]=S,e[28]=_,e[29]=I):I=e[29],I}function Rt(i){return{id:i.id,label:typeof i.header=="string"?i.header:i.id}}function Bt(i){return i.sortable!==!1}function Vt(){}function qt(){}function Qt(i){return{id:"actions",header:"",render:e=>t.jsxs(He,{children:[t.jsx(Ye,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:s=>s.stopPropagation(),children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:s=>s.stopPropagation(),children:[i.open&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.open?.(e)},children:[t.jsx(tt,{size:16}),"Open"]}),i.edit&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.edit?.(e)},children:[t.jsx(et,{size:16}),"Edit"]}),i.duplicate&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.duplicate?.(e)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),i.delete&&t.jsxs(O,{variant:"destructive",onClick:s=>{s.stopPropagation(),i.delete?.(e)},children:[t.jsx(st,{size:16}),"Delete"]})]})]}),cellClassName:"w-[60px]",sortable:!1}}function nt(i){const e=i.type;return Array.isArray(e)?e.every(s=>nt({type:s})):e==="string"||e==="number"||e==="integer"||e==="boolean"||e==="null"}function Gt(i,e){const s=i.properties||{},l=Object.keys(s).filter(o=>{const m=s[o];return m&&nt(m)}),n=Ut(s),c=[],r=new Set;n&&l.includes(n)&&(c.push(n),r.add(n));const p=["title","description","updated_at","updated_by"];for(const o of p)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));const d=l.filter(o=>!r.has(o)&&!Re.includes(o)).sort((o,m)=>o.localeCompare(m));for(const o of d)c.push(o),r.add(o);for(const o of Re)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));return c.map(o=>{const m=s[o],u=e?e.includes(o):!["id"].includes(o);return o===n?{id:o,header:"",render:f=>{const a=f[o];return t.jsx(Ge,{icon:a,name:f.title,size:"sm",className:"shrink-0 shadow-sm"})},sortable:!1,cellClassName:"w-16 shrink-0",wrap:!0}:o==="description"?{id:o,header:"Description",render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-[50ch]",children:String(a)})},sortable:u,cellClassName:"max-w-[50ch]"}:o==="created_by"||o==="updated_by"?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx(jt,{id:String(a),size:"xs"}):"—"},sortable:u,cellClassName:"max-w-[250px]"}:m?.format==="date-time"||o.endsWith("_at")?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx("span",{className:"block truncate max-w-full",children:new Date(a).toLocaleDateString()}):"—"},sortable:u,cellClassName:"max-w-[200px]"}:{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-full",children:String(a)})},sortable:u,cellClassName:"max-w-[200px]"}})}function Ht(i,e,s,l){const n=i||Gt(e,s);return n.some(p=>p.id==="actions")?n:Object.keys(l).length>0?[...n,Qt(l)]:n}function Yt(i){const e=oe.c(118),{connectionId:s,org:l,activeCollection:n,onItemClick:c}=i,r=n.name,p=n.schema??ft,d=n.hasCreateTool,o=n.hasUpdateTool,m=n.hasDeleteTool,u=Be(),{data:f}=ct.useSession(),a=f?.user?.id||"unknown",b=Tt(s);let y;e[0]!==b||e[1]!==s?(y=b?bt(b):s,e[0]=b,e[1]=s,e[2]=y):y=e[2];const C=y,{org:v}=ze();let g;e[3]!==s||e[4]!==v.id?(g={connectionId:s,orgId:v.id},e[3]=s,e[4]=v.id,e[5]=g):g=e[5];const $=Ve(g),h=It(s,r,$),T=`${s}-${r}`;let E;e[6]!==l||e[7]!==T?(E={namespace:l,resource:T,defaultSortKey:"updated_at"},e[6]=l,e[7]=T,e[8]=E):E=e[8];const{search:N,searchTerm:k,setSearch:x,viewMode:z,setViewMode:P,sortKey:D,sortDirection:w,handleSort:S}=Ct(E);let _;e[9]!==k||e[10]!==w||e[11]!==D?(_={searchTerm:k,sortKey:D,sortDirection:w},e[9]=k,e[10]=w,e[11]=D,e[12]=_):_=e[12];const I=At(s,r,$,_),A=!d&&!o&&!m;let ne;e[13]!==C||e[14]!==r||e[15]!==u||e[16]!==c||e[17]!==l?(ne=j=>{if(c){c(j);return}u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:C,collectionName:r,itemId:j.id}})},e[13]=C,e[14]=r,e[15]=u,e[16]=c,e[17]=l,e[18]=ne):ne=e[18];const L=ne;let re;e[19]!==h.create||e[20]!==a?(re=async j=>{const xe=new Date().toISOString();await h.create.mutateAsync({...j,id:Me("conn"),title:`${j.title} (Copy)`,created_at:xe,updated_at:xe,created_by:a,updated_by:a})},e[19]=h.create,e[20]=a,e[21]=re):re=e[21];const be=re,[F,ve]=dt.useState(null);let le;e[22]===Symbol.for("react.memo_cache_sentinel")?(le=j=>{ve(j)},e[22]=le):le=e[22];const rt=le;let K;e[23]!==L||e[24]!==o?(K=o&&{edit:L},e[23]=L,e[24]=o,e[25]=K):K=e[25];let M;e[26]!==be||e[27]!==d?(M=d&&{duplicate:be},e[26]=be,e[27]=d,e[28]=M):M=e[28];let U;e[29]!==m?(U=m&&{delete:rt},e[29]=m,e[30]=U):U=e[30];let ae;e[31]!==M||e[32]!==U||e[33]!==K?(ae={...K,...M,...U},e[31]=M,e[32]=U,e[33]=K,e[34]=ae):ae=e[34];const ye=ae;let ce;e[35]!==h.delete||e[36]!==F?(ce=async()=>{F&&(await h.delete.mutateAsync(F.id),ve(null))},e[35]=h.delete,e[36]=F,e[37]=ce):ce=e[37];const Ne=ce;let de;e[38]!==h.create||e[39]!==C||e[40]!==r||e[41]!==d||e[42]!==u||e[43]!==l||e[44]!==a?(de=async()=>{if(!d){Le.error("Create operation is not available for this collection");return}const j=new Date().toISOString(),xe={id:Me("conn"),title:"New Item",description:"A brief description of the item",created_at:j,updated_at:j,created_by:a,updated_by:a};try{const ke=await h.create.mutateAsync(xe);u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:C,collectionName:r,itemId:ke.id}})}catch(ke){console.error("Failed to create item:",ke)}},e[38]=h.create,e[39]=C,e[40]=r,e[41]=d,e[42]=u,e[43]=l,e[44]=a,e[45]=de):de=e[45];const we=de;let ue;e[46]!==p?(ue=ot(p),e[46]=p,e[47]=ue):ue=e[47];const Se=ue,lt=(I?.length??0)>0,at=d&&!lt&&!N;let me;e[48]!==h.create||e[49]!==we||e[50]!==d?(me=d?t.jsxs(Ce,{onClick:we,size:"sm",disabled:h.create.isPending,className:"h-7",children:[t.jsx(Et,{className:"mr-2 h-4 w-4"}),h.create.isPending?"Creating...":"Create"]}):null,e[48]=h.create,e[49]=we,e[50]=d,e[51]=me):me=e[51];const pe=me,Pe=D;let W;e[52]!==S||e[53]!==w||e[54]!==Se||e[55]!==Pe?(W=t.jsx(Ot,{children:t.jsx(Qe,{sortKey:Pe,sortDirection:w,onSort:S,sortOptions:Se})}),e[52]=S,e[53]=w,e[54]=Se,e[55]=Pe,e[56]=W):W=e[56];const _e=`Search ${r}...`;let R;e[57]!==x?(R=j=>{j.key==="Escape"&&(x(""),j.target.blur())},e[57]=x,e[58]=R):R=e[58];let B;e[59]!==N||e[60]!==x||e[61]!==_e||e[62]!==R?(B=t.jsx("div",{className:"flex-1",children:t.jsx(ht,{value:N,onChange:x,placeholder:_e,onKeyDown:R})}),e[59]=N,e[60]=x,e[61]=_e,e[62]=R,e[63]=B):B=e[63];let V;e[64]!==pe||e[65]!==d?(V=d&&t.jsx("div",{className:"pr-3",children:pe}),e[64]=pe,e[65]=d,e[66]=V):V=e[66];let q;e[67]!==B||e[68]!==V?(q=t.jsxs("div",{className:"flex items-center gap-2",children:[B,V]}),e[67]=B,e[68]=V,e[69]=q):q=e[69];let Q;e[70]!==I?(Q=I??[],e[70]=I,e[71]=Q):Q=e[71];const De=D;let G;e[72]!==L?(G=j=>L(j),e[72]=L,e[73]=G):G=e[73];const Ie="No items found",Ae=N?"Try adjusting your search terms":"This collection doesn't have any items yet.",Te=at?pe:void 0;let H;e[74]!==Ie||e[75]!==Ae||e[76]!==Te?(H=t.jsx(it,{image:null,title:Ie,description:Ae,actions:Te}),e[74]=Ie,e[75]=Ae,e[76]=Te,e[77]=H):H=e[77];let Y;e[78]!==S||e[79]!==A||e[80]!==ye||e[81]!==p||e[82]!==N||e[83]!==x||e[84]!==P||e[85]!==w||e[86]!==Q||e[87]!==De||e[88]!==G||e[89]!==H||e[90]!==z?(Y=t.jsx("div",{className:"flex-1 overflow-auto",children:t.jsx(Wt,{hideToolbar:!0,data:Q,schema:p,viewMode:z,onViewModeChange:P,search:N,onSearchChange:x,sortKey:De,sortDirection:w,onSort:S,actions:ye,onItemClick:G,readOnly:A,emptyState:H})}),e[78]=S,e[79]=A,e[80]=ye,e[81]=p,e[82]=N,e[83]=x,e[84]=P,e[85]=w,e[86]=Q,e[87]=De,e[88]=G,e[89]=H,e[90]=z,e[91]=Y):Y=e[91];let J;e[92]!==q||e[93]!==Y?(J=t.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[q,Y]}),e[92]=q,e[93]=Y,e[94]=J):J=e[94];const Ee=!!F;let fe;e[95]===Symbol.for("react.memo_cache_sentinel")?(fe=j=>{j||ve(null)},e[95]=fe):fe=e[95];let he;e[96]===Symbol.for("react.memo_cache_sentinel")?(he=t.jsx(Nt,{children:"Delete item?"}),e[96]=he):he=e[96];const Oe=F?.title;let Z;e[97]!==Oe?(Z=t.jsxs(wt,{children:[he,t.jsxs(St,{children:['Are you sure you want to delete "',Oe,'"? This action cannot be undone.']})]}),e[97]=Oe,e[98]=Z):Z=e[98];let X;e[99]!==h.delete.isPending?(X=t.jsx(vt,{disabled:h.delete.isPending,children:"Cancel"}),e[99]=h.delete.isPending,e[100]=X):X=e[100];const $e=h.delete.isPending?"Deleting...":"Delete";let ee;e[101]!==h.delete.isPending||e[102]!==Ne||e[103]!==$e?(ee=t.jsx(yt,{onClick:Ne,disabled:h.delete.isPending,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:$e}),e[101]=h.delete.isPending,e[102]=Ne,e[103]=$e,e[104]=ee):ee=e[104];let te;e[105]!==X||e[106]!==ee?(te=t.jsxs(Pt,{children:[X,ee]}),e[105]=X,e[106]=ee,e[107]=te):te=e[107];let se;e[108]!==Z||e[109]!==te?(se=t.jsxs(_t,{children:[Z,te]}),e[108]=Z,e[109]=te,e[110]=se):se=e[110];let ie;e[111]!==Ee||e[112]!==se?(ie=t.jsx(Dt,{open:Ee,onOpenChange:fe,children:se}),e[111]=Ee,e[112]=se,e[113]=ie):ie=e[113];let ge;return e[114]!==W||e[115]!==J||e[116]!==ie?(ge=t.jsxs(t.Fragment,{children:[W,J,ie]}),e[114]=W,e[115]=J,e[116]=ie,e[117]=ge):ge=e[117],ge}function Jt(){const i=oe.c(12),{org:e,project:s}=ze(),l=ut();let n;i[0]!==e.id?(n={connectionId:qe,orgId:e.id},i[0]=e.id,i[1]=n):n=i[1];const c=Ve(n);let r;i[2]!==c||i[3]!==s?(r=async m=>{const u=s.enabledPlugins??[];if(u.includes(m))return;const f=[...u,m],a=await c.callTool({name:"COLLECTION_VIRTUAL_MCP_UPDATE",arguments:{id:s.id,data:{metadata:{enabled_plugins:f}}}});return a.structuredContent??a},i[2]=c,i[3]=s,i[4]=r):r=i[4];let p;i[5]!==e.id||i[6]!==s||i[7]!==l?(p=()=>{l.invalidateQueries({queryKey:Fe.project(e.id,s.slug)}),l.invalidateQueries({queryKey:Fe.projects(e.id)})},i[5]=e.id,i[6]=s,i[7]=l,i[8]=p):p=i[8];let d;return i[9]!==r||i[10]!==p?(d={mutationFn:r,onSuccess:p,onError:Zt},i[9]=r,i[10]=p,i[11]=d):d=i[11],mt(d)}function Zt(i){Le.error("Failed to enable plugin: "+(i instanceof Error?i.message:"Unknown error"))}function Xt(i){const e=oe.c(12),{pluginId:s,title:l,description:n,icon:c}=i,r=Jt();let p;e[0]!==r||e[1]!==s?(p=async()=>{try{await r.mutateAsync(s),Le.success("Plugin enabled!")}catch{}},e[0]=r,e[1]=s,e[2]=p):p=e[2];const d=p,o=c??null,m=r.isPending?"Enabling…":"Enable plugin";let u;e[3]!==r.isPending||e[4]!==d||e[5]!==m?(u=t.jsx(Ce,{onClick:d,disabled:r.isPending,children:m}),e[3]=r.isPending,e[4]=d,e[5]=m,e[6]=u):u=e[6];let f;return e[7]!==n||e[8]!==o||e[9]!==u||e[10]!==l?(f=t.jsx(it,{image:o,title:l,description:n,actions:u}),e[7]=n,e[8]=o,e[9]=u,e[10]=l,e[11]=f):f=e[11],f}const es={name:"WORKFLOW",displayName:"Workflow",hasCreateTool:!0,hasUpdateTool:!0,hasDeleteTool:!0};function oi(){const{project:i,org:e}=ze();if(!(i.enabledPlugins??[]).includes(Ke))return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(Xt,{pluginId:Ke,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(pt,{className:"size-8 text-muted-foreground"})})})})})});const n=Be();return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx(Yt,{connectionId:qe,org:e.slug,activeCollection:es,onItemClick:c=>n({to:"/$org/settings/workflows/$itemId",params:{org:e.slug,itemId:c.id}})})})})}export{oi as default};
@@ -0,0 +1 @@
1
+ import{e as s,g as l,j as o,l as a,E as n,r as c}from"./index-CyHkfxs2.js";import{a as f}from"./index-EieaBqsE.js";import"./index-0ONdtZvR.js";import"./constants-6-xiUPcQ.js";import"./collections-B4NDDkQp.js";import"./index-CPCIVubP.js";import"./use-virtual-mcp-MAVDLFj3.js";import"./use-collections-CuFil9_H.js";import"./monaco-editor-CteNuuJr.js";import"./index-Cpu398f4.js";import"./accordion-CbzOgqka.js";import"./agent-icon-a5rgdmvn.js";import"./AlertCircle-DQvE1HHW.js";import"./Tool01-ta8c5owo.js";import"./XClose-BvTeI7_p.js";import"./RefreshCcw01-CczH9hEb.js";import"./ArrowNarrowLeft-JeNHsl7t.js";import"./XCircle-W80KsA2R.js";import"./ArrowUpRight-DrX0ZBVK.js";import"./ZapSquare-oPqMGrmK.js";import"./Users03-BthJNdjb.js";import"./CheckCircle-jz1wj0OZ.js";import"./ChevronDown-CJXiv6mb.js";import"./ChevronRight-jhe98Hpl.js";import"./ChevronUp--G-qrAEM.js";import"./DotsVertical-B-LaCx0W.js";import"./Container-LZZyJPZO.js";import"./Star01-BRqpvEVh.js";import"./Palette-CZdOy-tN.js";import"./SearchMd-D3ej9sdm.js";import"./index-DK4Y3HO1.js";import"./tooltip-MEij__fd.js";import"./X-Bs-K3rP3.js";import"./LinkExternal01-2sbW7UGS.js";import"./Lock01-BOEORqQ0.js";import"./Sun-D-zn2wQr.js";import"./Play-CVmYi0Gz.js";import"./Plus-0qTCNeQu.js";import"./Settings02-DSMqESXP.js";import"./Shield01-Dk5a3EIz.js";import"./Trash01-piYSxXuV.js";import"./User01-BRe74tu_.js";import"./Zap-CruZDu0W.js";import"./badge-DM1yKdHA.js";import"./select-Ceunqeln.js";import"./view-mode-toggle-D8-KKhvu.js";import"./layout-Csh5DA6j.js";import"./use-connection-CyKUB7va.js";import"./use-mcp-tools-UR7Tvr-a.js";import"./dialog-Bt7s8NCP.js";import"./index-prfGmBrm.js";import"./dropdown-menu-BNdhp1TS.js";import"./integration-icon-DtlHVjfw.js";import"./scroll-area-DuFte1VC.js";import"./index-BLw8IR3q.js";import"./empty-state-DfhDT_rL.js";import"./create-sse-subscription-CxkOgzKf.js";import"./input-DocW6-0a.js";function ht(){const t=s.c(4);let r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={from:"/shell/$org/settings/workflows/$itemId"},t[0]=r):r=t[0];const{itemId:e}=l(r);let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx("div",{className:"flex h-full items-center justify-center",children:o.jsx(a,{size:32,className:"animate-spin text-muted-foreground"})}),t[1]=i):i=t[1];const p=decodeURIComponent(e);let m;return t[2]!==p?(m=o.jsx(n,{children:o.jsx(c.Suspense,{fallback:i,children:o.jsx(f,{itemId:p})})}),t[2]=p,t[3]=m):m=t[3],m}export{ht as default};
@@ -27,8 +27,8 @@
27
27
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
28
28
  <link rel="manifest" href="/manifest.webmanifest" />
29
29
  <meta name="theme-color" content="#D0EC1A" />
30
- <script type="module" crossorigin src="/assets/index-hcEg81hB.js"></script>
31
- <link rel="stylesheet" crossorigin href="/assets/index-DT63_YMm.css">
30
+ <script type="module" crossorigin src="/assets/index-CyHkfxs2.js"></script>
31
+ <link rel="stylesheet" crossorigin href="/assets/index-B4J1yAvl.css">
32
32
  </head>
33
33
  <body>
34
34
  <div id="root"></div>
@@ -1623,7 +1623,7 @@ AS SELECT
1623
1623
  FROM monitoring_metrics
1624
1624
  GROUP BY organization_id, name, bucket, connection_id, tool_name, status
1625
1625
  `}),console.log("[clickhouse-schema] monitoring_metrics_rollup_1m_mv view ready")}finally{await G.close()}}catch(Y){console.error("[clickhouse-schema] Failed to create rollup DDL (queries will fall back to raw table):",Y)}}async function NA1(X){let Y={...process.env},G=q$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(() => (O$1(),z$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(() => (oZ0(),Zx6));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (YU(),Jx6)),{migrateToLatest:U}=await Promise.resolve().then(() => (Ur6(),Fr6)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => Bs6);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return fn1($),{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 TB0=D(()=>{_n1();l9()});var DA1={};j0(DA1,{updateService:()=>pa,toggleViewMode:()=>VB0,toggleVibeState:()=>MB0,toggleLogFlow:()=>jB0,subscribeCliState:()=>DX1,setVibe:()=>xi5,setTuiConsoleIntercepted:()=>zA1,setServerUrl:()=>LX1,setMigrationsDone:()=>wX1,setEnv:()=>EX1,setDevMode:()=>bi5,setDataDir:()=>yi5,isTuiConsoleIntercepted:()=>OA1,getCliState:()=>OX1,addLogEntry:()=>Gz});function EU(){for(let X of IB0)X()}function OX1(){return X7}function DX1(X){return IB0.add(X),()=>IB0.delete(X)}function pa(X){X7={...X7,services:X7.services.map((Y)=>Y.name===X.name?X:Y)},EU()}function wX1(){X7={...X7,migrationsStatus:"done"},EU()}function LX1(X){X7={...X7,serverUrl:X},EU()}function EX1(X){X7={...X7,env:X},EU()}function Gz(X){let Y=[...X7.logs,X];X7={...X7,logs:Y.length>500?Y.slice(-500):Y},EU()}function bi5(){X7={...X7,services:[...X7.services,{name:"Vite",status:"pending",port:0}]},EU()}function VB0(){X7={...X7,viewMode:X7.viewMode==="requests"?"config":"requests"},EU()}function jB0(){X7={...X7,logFlow:!X7.logFlow},EU()}function yi5(X){X7={...X7,dataDir:X},EU()}function xi5(X){X7={...X7,vibe:X},EU()}function MB0(){X7={...X7,vibe:!X7.vibe},EU()}function zA1(X){Ns6=X}function OA1(){return Ns6}var X7,IB0,Ns6=!1;var Qz=D(()=>{X7={services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,env:null,logs:[],viewMode:"requests",logFlow:!1,vibe:!1,dataDir:null},IB0=new Set});import{createServer as zs6}from"net";function hi5(X){return new Promise((Y)=>{let G=zs6();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function wA1(X){if(await hi5(X))return X;let Y=await new Promise((G,Q)=>{let J=zs6();J.once("error",Q),J.listen(0,"0.0.0.0",()=>{let W=J.address(),Z=typeof W==="object"&&W?W.port:0;J.close(()=>G(Z))})});return console.warn(`Port ${X} is in use, using port ${Y} instead.`),Y}var RB0=()=>{};var SB0={};j0(SB0,{startDevServer:()=>ui5});import{join as gi5}from"path";function Os6(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function Ds6(X){let Y=X.getReader(),G=new TextDecoder,Q="";function J(){let W=Q.split(`
1626
- `);Q=W.pop()??"";for(let Z of W){let $=Os6(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Gz({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=Os6(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Gz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function ui5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await wA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await NA1({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)pa({name:z.name,status:"ready",port:z.port});EX1(W),wX1();let K=gi5(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)Ds6(U.stdout),Ds6(U.stderr);let B=G||`http://localhost:${W.port}`;LX1(B),pa({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (O$1(),z$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var kB0=D(()=>{TB0();Qz();RB0()});import{Box as CB0,Text as vB0}from"ink";import{jsx as Ls6,jsxs as LA1}from"react/jsx-runtime";function ws6(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 di5(X,Y){if(li5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(mi5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>ws6(W)).join(", "),color:"cyan"}}let Q=ws6(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 ci5(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 Es6({env:X}){let Y=ci5(X);return Ls6(CB0,{flexDirection:"column",children:Y.map((G)=>LA1(CB0,{flexDirection:"column",marginTop:1,children:[LA1(vB0,{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=di5(Q,J);return LA1(CB0,{children:[LA1(vB0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),Ls6(vB0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var li5,mi5;var Ps6=D(()=>{li5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),mi5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var _B0;var qs6=D(()=>{_B0={name:"decocms",version:"2.299.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as PU,Text as MX}from"ink";import{Spinner as pi5}from"@inkjs/ui";import{useSyncExternalStore as As6}from"react";import{jsx as qY,jsxs as oQ}from"react/jsx-runtime";function oi5(X,Y){if(!X||!ri5.has(X))return X;let G=fB0[Y]??fB0[fB0.length-1];return X==="#875f00"?G[0]:G[1]}function Ts6({status:X}){if(X==="pending")return qY(pi5,{label:""});return qY(MX,{color:"green",children:"\u2713"})}function Is6({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=As6(iu0,cu0),Z=As6(ou0,ru0);return oQ(PU,{flexDirection:"column",paddingBottom:1,children:[J?oQ(PU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,ti5-U);return oQ(PU,{flexDirection:"row",children:[$.map((N,z)=>{let O=oi5(N.color,K);return O?qY(MX,{color:O,children:N.text},z):qY(MX,{children:N.text},z)}),qY(MX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?qY(MX,{color:N.color,children:N.char},z):qY(MX,{children:N.char},z))]},K)}),oQ(MX,{dimColor:!0,children:[" v",_B0.version]})]}):oQ(PU,{flexDirection:"column",marginTop:1,children:[ni5.map(($,K)=>qY(MX,{color:ai5[K],children:$},K)),oQ(MX,{dimColor:!0,children:[" v",_B0.version]})]}),qY(PU,{marginBottom:1,children:qY(MX,{dimColor:!0,children:"\u2500".repeat(80)})}),qY(PU,{children:oQ(MX,{dimColor:!0,children:["Home: ",G]})}),oQ(PU,{gap:2,children:[X.map(($)=>oQ(PU,{gap:1,children:[oQ(MX,{children:[$.name," :",$.port||"...."]}),qY(Ts6,{status:$.status})]},$.name)),oQ(PU,{gap:1,children:[qY(MX,{children:"Migrations"}),qY(Ts6,{status:Y})]})]}),qY(PU,{children:Q?oQ(MX,{children:["Open in browser: ",qY(MX,{color:"cyan",children:Q})]}):qY(MX,{dimColor:!0,children:"Starting..."})}),oQ(PU,{gap:2,children:[oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var ni5,ai5,fB0,ti5=30,ri5;var Vs6=D(()=>{qs6();An1();Rn1();ni5=[" \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 "],ai5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],fB0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],ri5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as si5}from"react";function ei5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==EA1.rows||Y!==EA1.columns)EA1={rows:X,columns:Y};return EA1}function Xp5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function js6(){return si5(Xp5,ei5)}var EA1;var Ms6=D(()=>{EA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Yp5,Text as PX1}from"ink";import{useSyncExternalStore as Gp5}from"react";import{jsx as bB0,jsxs as yB0}from"react/jsx-runtime";function Qp5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function Rs6({logs:X,headerHeight:Y}){let{rows:G}=js6(),{logFlow:Q}=Gp5(DX1,OX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return bB0(Yp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return bB0(PX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return yB0(PX1,{children:[yB0(PX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),bB0(PX1,{color:Qp5(Z.status),children:Z.status}),yB0(PX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var Ss6=D(()=>{Qz();Ms6()});var xB0={};j0(xB0,{App:()=>Fp5});import{Box as Jp5,Text as Zp5,useInput as Wp5}from"ink";import{useSyncExternalStore as $p5}from"react";import{jsx as PA1,jsxs as Up5}from"react/jsx-runtime";function Fp5({home:X}){let Y=$p5(DX1,OX1);return Wp5((G)=>{if(G==="k"||G==="K")VB0();if(G==="l"||G==="L")jB0();if((G==="v"||G==="V")&&Y.dataDir)vn1(Y.dataDir),MB0();if((G==="n"||G==="N")&&Y.vibe)Cn1()}),Up5(Jp5,{flexDirection:"column",children:[PA1(Is6,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?PA1(Es6,{env:Y.env}):PA1(Zp5,{dimColor:!0,children:"Loading configuration..."}):PA1(Rs6,{logs:Y.logs,headerHeight:Y.vibe?Hp5:Kp5})]})}var Kp5=15,Hp5=19;var hB0=D(()=>{Ps6();Vs6();Ss6();Qz();Vd()});function ks6(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,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 Rj=k((wp5)=>{wp5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(wp5.HttpAuthLocation||(wp5.HttpAuthLocation={}));wp5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(wp5.HttpApiKeyAuthLocation||(wp5.HttpApiKeyAuthLocation={}));wp5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(wp5.EndpointURLScheme||(wp5.EndpointURLScheme={}));wp5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(wp5.AlgorithmId||(wp5.AlgorithmId={}));var Bp5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>wp5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>wp5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},Np5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},zp5=(X)=>{return Bp5(X)},Op5=(X)=>{return Np5(X)};wp5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(wp5.FieldPosition||(wp5.FieldPosition={}));var Dp5="__smithy_context";wp5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(wp5.IniSectionType||(wp5.IniSectionType={}));wp5.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"})(wp5.RequestHandlerProtocol||(wp5.RequestHandlerProtocol={}));wp5.SMITHY_CONTEXT_KEY=Dp5;wp5.getDefaultClientConfiguration=zp5;wp5.resolveDefaultRuntimeConfig=Op5});var u7=k((jp5)=>{var qp5=Rj(),Ap5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},Tp5=(X)=>{return{httpHandler:X.httpHandler()}};class Cs6{name;kind;values;constructor({name:X,kind:Y=qp5.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 vs6{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 qA1{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 qA1({...X,headers:{...X.headers}});if(Y.query)Y.query=Ip5(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 qA1.clone(this)}}function Ip5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class _s6{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 Vp5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}jp5.Field=Cs6;jp5.Fields=vs6;jp5.HttpRequest=qA1;jp5.HttpResponse=_s6;jp5.getHttpHandlerExtensionConfiguration=Ap5;jp5.isValidHostname=Vp5;jp5.resolveHttpHandlerRuntimeConfig=Tp5});function fp5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&fs6.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 fs6,bp5,bs6=(X)=>({applyToStack:(Y)=>{Y.add(fp5(X),bp5)}});var ys6=D(()=>{fs6=Y1(u7(),1);bp5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var OH,AA1,Sj,TA1,E9,xs6,AX1;var DH=D(()=>{OH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},AA1=OH.WHEN_SUPPORTED,Sj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},TA1=OH.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"})(xs6||(xs6={}));AX1=E9.CRC32});var Vq,na=(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 iB0=D(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(Vq||(Vq={}))});var yp5="AWS_REQUEST_CHECKSUM_CALCULATION",xp5="request_checksum_calculation",hs6;var gs6=D(()=>{DH();iB0();hs6={environmentVariableSelector:(X)=>na(X,yp5,OH,Vq.ENV),configFileSelector:(X)=>na(X,xp5,OH,Vq.CONFIG),default:AA1}});var hp5="AWS_RESPONSE_CHECKSUM_VALIDATION",gp5="response_checksum_validation",us6;var ls6=D(()=>{DH();iB0();us6={environmentVariableSelector:(X)=>na(X,hp5,Sj,Vq.ENV),configFileSelector:(X)=>na(X,gp5,Sj,Vq.CONFIG),default:TA1}});var nB0=k((tp5)=>{var up5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],lp5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],mp5=["TimeoutError","RequestTimeout","RequestTimeoutException"],dp5=[500,502,503,504],cp5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],ip5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],ms6=(X)=>X?.$retryable!==void 0,pp5=(X)=>up5.includes(X.name),ds6=(X)=>X.$metadata?.clockSkewCorrected,cs6=(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)},np5=(X)=>X.$metadata?.httpStatusCode===429||lp5.includes(X.name)||X.$retryable?.throttling==!0,pB0=(X,Y=0)=>ms6(X)||ds6(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||mp5.includes(X.name)||cp5.includes(X?.code||"")||ip5.includes(X?.code||"")||dp5.includes(X.$metadata?.httpStatusCode||0)||cs6(X)||is6(X)||X.cause!==void 0&&Y<=10&&pB0(X.cause,Y+1),ap5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!pB0(X))return!0;return!1}return!1};function is6(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}tp5.isBrowserNetworkError=cs6;tp5.isClockSkewCorrectedError=ds6;tp5.isClockSkewError=pp5;tp5.isNodeJsHttp2TransientError=is6;tp5.isRetryableByTrait=ms6;tp5.isServerError=ap5;tp5.isThrottlingError=np5;tp5.isTransientError=pB0});var Nw=k((Bn5)=>{var Jn5=nB0();Bn5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(Bn5.RETRY_MODES||(Bn5.RETRY_MODES={}));var VA1=3,Zn5=Bn5.RETRY_MODES.STANDARD;class jA1{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"||Jn5.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)=>jA1.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 Wn5=100,rB0=20000,$n5=500,aB0=500,Kn5=5,Hn5=10,ps6=1,Fn5="amz-sdk-invocation-id",Un5="amz-sdk-request";class sQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return sQ.v2026?50:100}static throttlingDelay(){return sQ.v2026?1000:500}static cost(){return sQ.v2026?14:5}static throttlingCost(){return sQ.v2026?5:10}static modifiedCostType(){return sQ.v2026?"THROTTLING":"TRANSIENT"}}class ns6{x=sQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,rB0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class tB0{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(rB0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var IA1={incompatible:1,attempts:2,capacity:3};class TX1{mode=Bn5.RETRY_MODES.STANDARD;capacity=aB0;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()=>VA1,this.baseDelay??=sQ.delay(),this.retryBackoffStrategy??=new ns6}async acquireInitialRetryToken(X){return new tB0(sQ.delay(),0,void 0,sQ.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"?sQ.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:sQ.v2026&&Q===IA1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new tB0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(aB0,this.capacity+(X.getRetryCost()??ps6))}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 ${VA1}`),VA1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:IA1.incompatible,W=Q<G?0:IA1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:IA1.capacity;return J||W||Z}getCapacityCost(X){return X===sQ.modifiedCostType()?sQ.throttlingCost():sQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class as6{mode=Bn5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new jA1,this.standardRetryStrategy=Y?new TX1({maxAttempts:typeof X==="number"?X:3,...Y}):new TX1(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 ts6 extends TX1{computeNextBackoffDelay;constructor(X,Y=sQ.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}}Bn5.AdaptiveRetryStrategy=as6;Bn5.ConfiguredRetryStrategy=ts6;Bn5.DEFAULT_MAX_ATTEMPTS=VA1;Bn5.DEFAULT_RETRY_DELAY_BASE=Wn5;Bn5.DEFAULT_RETRY_MODE=Zn5;Bn5.DefaultRateLimiter=jA1;Bn5.INITIAL_RETRY_TOKENS=aB0;Bn5.INVOCATION_ID_HEADER=Fn5;Bn5.MAXIMUM_RETRY_DELAY=rB0;Bn5.NO_RETRY_INCREMENT=ps6;Bn5.REQUEST_HEADER=Un5;Bn5.RETRY_COST=Kn5;Bn5.Retry=sQ;Bn5.StandardRetryStrategy=TX1;Bn5.THROTTLING_RETRY_DELAY_BASE=$n5;Bn5.TIMEOUT_RETRY_COST=Hn5});var WX=k((xn5)=>{var Sn5=Nw(),oB0={warningEmitted:!1},kn5=(X)=>{if(X&&!oB0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)oB0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
1626
+ `);Q=W.pop()??"";for(let Z of W){let $=Os6(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Gz({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=Os6(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Gz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function ui5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await wA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await NA1({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)pa({name:z.name,status:"ready",port:z.port});EX1(W),wX1();let K=gi5(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)Ds6(U.stdout),Ds6(U.stderr);let B=G||`http://localhost:${W.port}`;LX1(B),pa({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (O$1(),z$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var kB0=D(()=>{TB0();Qz();RB0()});import{Box as CB0,Text as vB0}from"ink";import{jsx as Ls6,jsxs as LA1}from"react/jsx-runtime";function ws6(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 di5(X,Y){if(li5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(mi5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>ws6(W)).join(", "),color:"cyan"}}let Q=ws6(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 ci5(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 Es6({env:X}){let Y=ci5(X);return Ls6(CB0,{flexDirection:"column",children:Y.map((G)=>LA1(CB0,{flexDirection:"column",marginTop:1,children:[LA1(vB0,{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=di5(Q,J);return LA1(CB0,{children:[LA1(vB0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),Ls6(vB0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var li5,mi5;var Ps6=D(()=>{li5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),mi5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var _B0;var qs6=D(()=>{_B0={name:"decocms",version:"2.300.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as PU,Text as MX}from"ink";import{Spinner as pi5}from"@inkjs/ui";import{useSyncExternalStore as As6}from"react";import{jsx as qY,jsxs as oQ}from"react/jsx-runtime";function oi5(X,Y){if(!X||!ri5.has(X))return X;let G=fB0[Y]??fB0[fB0.length-1];return X==="#875f00"?G[0]:G[1]}function Ts6({status:X}){if(X==="pending")return qY(pi5,{label:""});return qY(MX,{color:"green",children:"\u2713"})}function Is6({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=As6(iu0,cu0),Z=As6(ou0,ru0);return oQ(PU,{flexDirection:"column",paddingBottom:1,children:[J?oQ(PU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,ti5-U);return oQ(PU,{flexDirection:"row",children:[$.map((N,z)=>{let O=oi5(N.color,K);return O?qY(MX,{color:O,children:N.text},z):qY(MX,{children:N.text},z)}),qY(MX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?qY(MX,{color:N.color,children:N.char},z):qY(MX,{children:N.char},z))]},K)}),oQ(MX,{dimColor:!0,children:[" v",_B0.version]})]}):oQ(PU,{flexDirection:"column",marginTop:1,children:[ni5.map(($,K)=>qY(MX,{color:ai5[K],children:$},K)),oQ(MX,{dimColor:!0,children:[" v",_B0.version]})]}),qY(PU,{marginBottom:1,children:qY(MX,{dimColor:!0,children:"\u2500".repeat(80)})}),qY(PU,{children:oQ(MX,{dimColor:!0,children:["Home: ",G]})}),oQ(PU,{gap:2,children:[X.map(($)=>oQ(PU,{gap:1,children:[oQ(MX,{children:[$.name," :",$.port||"...."]}),qY(Ts6,{status:$.status})]},$.name)),oQ(PU,{gap:1,children:[qY(MX,{children:"Migrations"}),qY(Ts6,{status:Y})]})]}),qY(PU,{children:Q?oQ(MX,{children:["Open in browser: ",qY(MX,{color:"cyan",children:Q})]}):qY(MX,{dimColor:!0,children:"Starting..."})}),oQ(PU,{gap:2,children:[oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&oQ(MX,{dimColor:!0,children:[qY(MX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var ni5,ai5,fB0,ti5=30,ri5;var Vs6=D(()=>{qs6();An1();Rn1();ni5=[" \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 "],ai5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],fB0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],ri5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as si5}from"react";function ei5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==EA1.rows||Y!==EA1.columns)EA1={rows:X,columns:Y};return EA1}function Xp5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function js6(){return si5(Xp5,ei5)}var EA1;var Ms6=D(()=>{EA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Yp5,Text as PX1}from"ink";import{useSyncExternalStore as Gp5}from"react";import{jsx as bB0,jsxs as yB0}from"react/jsx-runtime";function Qp5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function Rs6({logs:X,headerHeight:Y}){let{rows:G}=js6(),{logFlow:Q}=Gp5(DX1,OX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return bB0(Yp5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return bB0(PX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return yB0(PX1,{children:[yB0(PX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),bB0(PX1,{color:Qp5(Z.status),children:Z.status}),yB0(PX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var Ss6=D(()=>{Qz();Ms6()});var xB0={};j0(xB0,{App:()=>Fp5});import{Box as Jp5,Text as Zp5,useInput as Wp5}from"ink";import{useSyncExternalStore as $p5}from"react";import{jsx as PA1,jsxs as Up5}from"react/jsx-runtime";function Fp5({home:X}){let Y=$p5(DX1,OX1);return Wp5((G)=>{if(G==="k"||G==="K")VB0();if(G==="l"||G==="L")jB0();if((G==="v"||G==="V")&&Y.dataDir)vn1(Y.dataDir),MB0();if((G==="n"||G==="N")&&Y.vibe)Cn1()}),Up5(Jp5,{flexDirection:"column",children:[PA1(Is6,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?PA1(Es6,{env:Y.env}):PA1(Zp5,{dimColor:!0,children:"Loading configuration..."}):PA1(Rs6,{logs:Y.logs,headerHeight:Y.vibe?Hp5:Kp5})]})}var Kp5=15,Hp5=19;var hB0=D(()=>{Ps6();Vs6();Ss6();Qz();Vd()});function ks6(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,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 Rj=k((wp5)=>{wp5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(wp5.HttpAuthLocation||(wp5.HttpAuthLocation={}));wp5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(wp5.HttpApiKeyAuthLocation||(wp5.HttpApiKeyAuthLocation={}));wp5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(wp5.EndpointURLScheme||(wp5.EndpointURLScheme={}));wp5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(wp5.AlgorithmId||(wp5.AlgorithmId={}));var Bp5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>wp5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>wp5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},Np5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},zp5=(X)=>{return Bp5(X)},Op5=(X)=>{return Np5(X)};wp5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(wp5.FieldPosition||(wp5.FieldPosition={}));var Dp5="__smithy_context";wp5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(wp5.IniSectionType||(wp5.IniSectionType={}));wp5.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"})(wp5.RequestHandlerProtocol||(wp5.RequestHandlerProtocol={}));wp5.SMITHY_CONTEXT_KEY=Dp5;wp5.getDefaultClientConfiguration=zp5;wp5.resolveDefaultRuntimeConfig=Op5});var u7=k((jp5)=>{var qp5=Rj(),Ap5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},Tp5=(X)=>{return{httpHandler:X.httpHandler()}};class Cs6{name;kind;values;constructor({name:X,kind:Y=qp5.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 vs6{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 qA1{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 qA1({...X,headers:{...X.headers}});if(Y.query)Y.query=Ip5(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 qA1.clone(this)}}function Ip5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class _s6{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 Vp5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}jp5.Field=Cs6;jp5.Fields=vs6;jp5.HttpRequest=qA1;jp5.HttpResponse=_s6;jp5.getHttpHandlerExtensionConfiguration=Ap5;jp5.isValidHostname=Vp5;jp5.resolveHttpHandlerRuntimeConfig=Tp5});function fp5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&fs6.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 fs6,bp5,bs6=(X)=>({applyToStack:(Y)=>{Y.add(fp5(X),bp5)}});var ys6=D(()=>{fs6=Y1(u7(),1);bp5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var OH,AA1,Sj,TA1,E9,xs6,AX1;var DH=D(()=>{OH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},AA1=OH.WHEN_SUPPORTED,Sj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},TA1=OH.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"})(xs6||(xs6={}));AX1=E9.CRC32});var Vq,na=(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 iB0=D(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(Vq||(Vq={}))});var yp5="AWS_REQUEST_CHECKSUM_CALCULATION",xp5="request_checksum_calculation",hs6;var gs6=D(()=>{DH();iB0();hs6={environmentVariableSelector:(X)=>na(X,yp5,OH,Vq.ENV),configFileSelector:(X)=>na(X,xp5,OH,Vq.CONFIG),default:AA1}});var hp5="AWS_RESPONSE_CHECKSUM_VALIDATION",gp5="response_checksum_validation",us6;var ls6=D(()=>{DH();iB0();us6={environmentVariableSelector:(X)=>na(X,hp5,Sj,Vq.ENV),configFileSelector:(X)=>na(X,gp5,Sj,Vq.CONFIG),default:TA1}});var nB0=k((tp5)=>{var up5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],lp5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],mp5=["TimeoutError","RequestTimeout","RequestTimeoutException"],dp5=[500,502,503,504],cp5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],ip5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],ms6=(X)=>X?.$retryable!==void 0,pp5=(X)=>up5.includes(X.name),ds6=(X)=>X.$metadata?.clockSkewCorrected,cs6=(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)},np5=(X)=>X.$metadata?.httpStatusCode===429||lp5.includes(X.name)||X.$retryable?.throttling==!0,pB0=(X,Y=0)=>ms6(X)||ds6(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||mp5.includes(X.name)||cp5.includes(X?.code||"")||ip5.includes(X?.code||"")||dp5.includes(X.$metadata?.httpStatusCode||0)||cs6(X)||is6(X)||X.cause!==void 0&&Y<=10&&pB0(X.cause,Y+1),ap5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!pB0(X))return!0;return!1}return!1};function is6(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}tp5.isBrowserNetworkError=cs6;tp5.isClockSkewCorrectedError=ds6;tp5.isClockSkewError=pp5;tp5.isNodeJsHttp2TransientError=is6;tp5.isRetryableByTrait=ms6;tp5.isServerError=ap5;tp5.isThrottlingError=np5;tp5.isTransientError=pB0});var Nw=k((Bn5)=>{var Jn5=nB0();Bn5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(Bn5.RETRY_MODES||(Bn5.RETRY_MODES={}));var VA1=3,Zn5=Bn5.RETRY_MODES.STANDARD;class jA1{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"||Jn5.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)=>jA1.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 Wn5=100,rB0=20000,$n5=500,aB0=500,Kn5=5,Hn5=10,ps6=1,Fn5="amz-sdk-invocation-id",Un5="amz-sdk-request";class sQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return sQ.v2026?50:100}static throttlingDelay(){return sQ.v2026?1000:500}static cost(){return sQ.v2026?14:5}static throttlingCost(){return sQ.v2026?5:10}static modifiedCostType(){return sQ.v2026?"THROTTLING":"TRANSIENT"}}class ns6{x=sQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,rB0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class tB0{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(rB0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var IA1={incompatible:1,attempts:2,capacity:3};class TX1{mode=Bn5.RETRY_MODES.STANDARD;capacity=aB0;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()=>VA1,this.baseDelay??=sQ.delay(),this.retryBackoffStrategy??=new ns6}async acquireInitialRetryToken(X){return new tB0(sQ.delay(),0,void 0,sQ.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"?sQ.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:sQ.v2026&&Q===IA1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new tB0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(aB0,this.capacity+(X.getRetryCost()??ps6))}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 ${VA1}`),VA1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:IA1.incompatible,W=Q<G?0:IA1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:IA1.capacity;return J||W||Z}getCapacityCost(X){return X===sQ.modifiedCostType()?sQ.throttlingCost():sQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class as6{mode=Bn5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new jA1,this.standardRetryStrategy=Y?new TX1({maxAttempts:typeof X==="number"?X:3,...Y}):new TX1(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 ts6 extends TX1{computeNextBackoffDelay;constructor(X,Y=sQ.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}}Bn5.AdaptiveRetryStrategy=as6;Bn5.ConfiguredRetryStrategy=ts6;Bn5.DEFAULT_MAX_ATTEMPTS=VA1;Bn5.DEFAULT_RETRY_DELAY_BASE=Wn5;Bn5.DEFAULT_RETRY_MODE=Zn5;Bn5.DefaultRateLimiter=jA1;Bn5.INITIAL_RETRY_TOKENS=aB0;Bn5.INVOCATION_ID_HEADER=Fn5;Bn5.MAXIMUM_RETRY_DELAY=rB0;Bn5.NO_RETRY_INCREMENT=ps6;Bn5.REQUEST_HEADER=Un5;Bn5.RETRY_COST=Kn5;Bn5.Retry=sQ;Bn5.StandardRetryStrategy=TX1;Bn5.THROTTLING_RETRY_DELAY_BASE=$n5;Bn5.TIMEOUT_RETRY_COST=Hn5});var WX=k((xn5)=>{var Sn5=Nw(),oB0={warningEmitted:!1},kn5=(X)=>{if(X&&!oB0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)oB0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
1627
1627
  no longer support Node.js ${X} in January 2026.
1628
1628
 
1629
1629
  To continue receiving updates to AWS services, bug fixes, and security
@@ -0,0 +1,60 @@
1
+ export type WidthType = 'fullwidth' | 'halfwidth' | 'wide' | 'narrow' | 'neutral' | 'ambiguous';
2
+
3
+ export type Options = {
4
+ /**
5
+ Whether to treat an `'ambiguous'` character as wide.
6
+
7
+ @default true
8
+
9
+ @example
10
+ ```
11
+ import {eastAsianWidth} from 'get-east-asian-width';
12
+
13
+ const codePoint = '⛣'.codePointAt(0);
14
+
15
+ console.log(eastAsianWidth(codePoint));
16
+ //=> 1
17
+
18
+ console.log(eastAsianWidth(codePoint, {ambiguousAsWide: true}));
19
+ //=> 2
20
+ ```
21
+
22
+ > Ambiguous characters behave like wide or narrow characters depending on the context (language tag, script identification, associated font, source of data, or explicit markup; all can provide the context). __If the context cannot be established reliably, they should be treated as narrow characters by default.__
23
+ > - http://www.unicode.org/reports/tr11/
24
+ */
25
+ readonly ambiguousAsWide?: boolean;
26
+ };
27
+
28
+ /**
29
+ Returns the width as a number for the given code point.
30
+
31
+ @param codePoint - A Unicode code point.
32
+
33
+ @example
34
+ ```
35
+ import {eastAsianWidth} from 'get-east-asian-width';
36
+
37
+ const codePoint = '字'.codePointAt(0);
38
+
39
+ console.log(eastAsianWidth(codePoint));
40
+ //=> 2
41
+ ```
42
+ */
43
+ export function eastAsianWidth(codePoint: number, options?: Options): 1 | 2;
44
+
45
+ /**
46
+ Returns the type of “East Asian Width” for the given code point.
47
+
48
+ @param codePoint - A Unicode code point.
49
+
50
+ @example
51
+ ```
52
+ import {eastAsianWidthType} from 'get-east-asian-width';
53
+
54
+ const codePoint = '字'.codePointAt(0);
55
+
56
+ console.log(eastAsianWidthType(codePoint));
57
+ //=> 'wide'
58
+ ```
59
+ */
60
+ export function eastAsianWidthType(codePoint: number): WidthType;
@@ -0,0 +1,30 @@
1
+ import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';
2
+
3
+ function validate(codePoint) {
4
+ if (!Number.isSafeInteger(codePoint)) {
5
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
6
+ }
7
+ }
8
+
9
+ export function eastAsianWidthType(codePoint) {
10
+ validate(codePoint);
11
+
12
+ return getCategory(codePoint);
13
+ }
14
+
15
+ export function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {
16
+ validate(codePoint);
17
+
18
+ if (
19
+ isFullWidth(codePoint)
20
+ || isWide(codePoint)
21
+ || (ambiguousAsWide && isAmbiguous(codePoint))
22
+ ) {
23
+ return 2;
24
+ }
25
+
26
+ return 1;
27
+ }
28
+
29
+ // Private exports for https://github.com/sindresorhus/is-fullwidth-code-point
30
+ export {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';
@@ -0,0 +1,18 @@
1
+ // Generated by scripts/build.js
2
+
3
+ // prettier-ignore
4
+ const ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
5
+
6
+ // prettier-ignore
7
+ const fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
8
+
9
+ // prettier-ignore
10
+ const halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
11
+
12
+ // prettier-ignore
13
+ const narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
14
+
15
+ // prettier-ignore
16
+ const wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
17
+
18
+ export {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};
@@ -0,0 +1,135 @@
1
+ import {
2
+ ambiguousRanges,
3
+ fullwidthRanges,
4
+ halfwidthRanges,
5
+ narrowRanges,
6
+ wideRanges,
7
+ } from './lookup-data.js';
8
+ import {isInRange} from './utilities.js';
9
+
10
+ const minimumAmbiguousCodePoint = ambiguousRanges[0];
11
+ const maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
12
+ const minimumFullWidthCodePoint = fullwidthRanges[0];
13
+ const maximumFullWidthCodePoint = fullwidthRanges.at(-1);
14
+ const minimumHalfWidthCodePoint = halfwidthRanges[0];
15
+ const maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
16
+ const minimumNarrowCodePoint = narrowRanges[0];
17
+ const maximumNarrowCodePoint = narrowRanges.at(-1);
18
+ const minimumWideCodePoint = wideRanges[0];
19
+ const maximumWideCodePoint = wideRanges.at(-1);
20
+
21
+ const commonCjkCodePoint = 0x4E_00;
22
+ const [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
23
+
24
+ // Use a hot-path range so common `isWide` calls can skip binary search.
25
+ // The range containing U+4E00 covers common CJK ideographs;
26
+ // fallback to the largest range for resilience to Unicode table changes.
27
+ function findWideFastPathRange(ranges) {
28
+ let fastPathStart = ranges[0];
29
+ let fastPathEnd = ranges[1];
30
+
31
+ for (let index = 0; index < ranges.length; index += 2) {
32
+ const start = ranges[index];
33
+ const end = ranges[index + 1];
34
+
35
+ if (
36
+ commonCjkCodePoint >= start
37
+ && commonCjkCodePoint <= end
38
+ ) {
39
+ return [start, end];
40
+ }
41
+
42
+ if ((end - start) > (fastPathEnd - fastPathStart)) {
43
+ fastPathStart = start;
44
+ fastPathEnd = end;
45
+ }
46
+ }
47
+
48
+ return [fastPathStart, fastPathEnd];
49
+ }
50
+
51
+ export const isAmbiguous = codePoint => {
52
+ if (
53
+ codePoint < minimumAmbiguousCodePoint
54
+ || codePoint > maximumAmbiguousCodePoint
55
+ ) {
56
+ return false;
57
+ }
58
+
59
+ return isInRange(ambiguousRanges, codePoint);
60
+ };
61
+
62
+ export const isFullWidth = codePoint => {
63
+ if (
64
+ codePoint < minimumFullWidthCodePoint
65
+ || codePoint > maximumFullWidthCodePoint
66
+ ) {
67
+ return false;
68
+ }
69
+
70
+ return isInRange(fullwidthRanges, codePoint);
71
+ };
72
+
73
+ const isHalfWidth = codePoint => {
74
+ if (
75
+ codePoint < minimumHalfWidthCodePoint
76
+ || codePoint > maximumHalfWidthCodePoint
77
+ ) {
78
+ return false;
79
+ }
80
+
81
+ return isInRange(halfwidthRanges, codePoint);
82
+ };
83
+
84
+ const isNarrow = codePoint => {
85
+ if (
86
+ codePoint < minimumNarrowCodePoint
87
+ || codePoint > maximumNarrowCodePoint
88
+ ) {
89
+ return false;
90
+ }
91
+
92
+ return isInRange(narrowRanges, codePoint);
93
+ };
94
+
95
+ export const isWide = codePoint => {
96
+ if (
97
+ codePoint >= wideFastPathStart
98
+ && codePoint <= wideFastPathEnd
99
+ ) {
100
+ return true;
101
+ }
102
+
103
+ if (
104
+ codePoint < minimumWideCodePoint
105
+ || codePoint > maximumWideCodePoint
106
+ ) {
107
+ return false;
108
+ }
109
+
110
+ return isInRange(wideRanges, codePoint);
111
+ };
112
+
113
+ export function getCategory(codePoint) {
114
+ if (isAmbiguous(codePoint)) {
115
+ return 'ambiguous';
116
+ }
117
+
118
+ if (isFullWidth(codePoint)) {
119
+ return 'fullwidth';
120
+ }
121
+
122
+ if (isHalfWidth(codePoint)) {
123
+ return 'halfwidth';
124
+ }
125
+
126
+ if (isNarrow(codePoint)) {
127
+ return 'narrow';
128
+ }
129
+
130
+ if (isWide(codePoint)) {
131
+ return 'wide';
132
+ }
133
+
134
+ return 'neutral';
135
+ }