decocms 4.126.2 → 4.126.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/client/assets/{AlertCircle-wZFBWpo0.js → AlertCircle-DO28VkLK.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BWG_A2yL.js → AreaChart-wx8e58jQ.js} +1 -1
  3. package/dist/client/assets/{ArrowRight-DDYoySSU.js → ArrowRight-YSgIdraI.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-BfmJVXpe.js → ArrowUp-DLQj-yN-.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-CX0JFgau.js → ArrowUpRight-ytNbj3wP.js} +1 -1
  6. package/dist/client/assets/{Check-C-gVe66h.js → Check-CiC1WT_1.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-DwQTzzLo.js → CheckCircle-DdSXAOOm.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-CHUXS0bx.js → ChevronDown-CxcM0X4P.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-BewiR8jv.js → ChevronRight-CeImacf4.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-DbJPy-my.js → ChevronUp-DCp9f4F7.js} +1 -1
  11. package/dist/client/assets/{Copy01-CXOBuKeI.js → Copy01-RW_C528d.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-DSuOWFkK.js → DotsVertical-C8_FY0JN.js} +1 -1
  13. package/dist/client/assets/{Eye-BzQwpriV.js → Eye-C-DzX860.js} +1 -1
  14. package/dist/client/assets/{FilterLines-Cmyrpv9O.js → FilterLines-CvfUxJD1.js} +1 -1
  15. package/dist/client/assets/{HardDrive-MuN_hYGO.js → HardDrive-B2axgoId.js} +1 -1
  16. package/dist/client/assets/{Key01-DsAMFomV.js → Key01-1MhvTNtm.js} +1 -1
  17. package/dist/client/assets/{LayoutLeft-BKoIFwRN.js → LayoutLeft-D9hylUQS.js} +1 -1
  18. package/dist/client/assets/{LinkExternal01-B0YPc_S1.js → LinkExternal01-BAIxqD9c.js} +1 -1
  19. package/dist/client/assets/{LogOut01-Cr7guD_C.js → LogOut01-CgbNp9VX.js} +1 -1
  20. package/dist/client/assets/{Monitor01-BDL-jnJs.js → Monitor01-iGrRcTfx.js} +1 -1
  21. package/dist/client/assets/{Palette-BAqGRxp5.js → Palette-DIU9ofMK.js} +1 -1
  22. package/dist/client/assets/{Play-DgsbjMDE.js → Play-oPeCuFtu.js} +1 -1
  23. package/dist/client/assets/{Plus--3XFCNRh.js → Plus-BQ_CB8x9.js} +1 -1
  24. package/dist/client/assets/{SearchLg-fj8vBgbf.js → SearchLg-CSK6uiYO.js} +1 -1
  25. package/dist/client/assets/{SearchMd-Db6xGpMm.js → SearchMd-BzxvsaUO.js} +1 -1
  26. package/dist/client/assets/{Settings02-BCqIMlR1.js → Settings02-DEqPcOSr.js} +1 -1
  27. package/dist/client/assets/{Shield01-DmJb3xyD.js → Shield01-BS9oneyH.js} +1 -1
  28. package/dist/client/assets/{Star01-6fXqBYGO.js → Star01-DbUxnjZ8.js} +1 -1
  29. package/dist/client/assets/{Stars01-6mAfYED3.js → Stars01-D4Y2xu7U.js} +1 -1
  30. package/dist/client/assets/{Stars02-DXc-e3hC.js → Stars02-D6tQXWrS.js} +1 -1
  31. package/dist/client/assets/{Sun-BUqEkjZt.js → Sun-Bp8VcT1Y.js} +1 -1
  32. package/dist/client/assets/{SwitchHorizontal01-CGOv_Rrr.js → SwitchHorizontal01-NxyXYAHz.js} +1 -1
  33. package/dist/client/assets/{Tool01-pmII3WpR.js → Tool01-nMz--LLL.js} +1 -1
  34. package/dist/client/assets/{Tool02-CBXM0F92.js → Tool02-BGleO6cp.js} +1 -1
  35. package/dist/client/assets/{Trash01-CJ9K1v0c.js → Trash01-BGSDMJpv.js} +1 -1
  36. package/dist/client/assets/{TrendUp01-BjARk23u.js → TrendUp01-Bo6v5kEp.js} +1 -1
  37. package/dist/client/assets/{Upload01-dYbrTK96.js → Upload01-CfJ7a7QO.js} +1 -1
  38. package/dist/client/assets/{User01-BWh29jlX.js → User01-D6AK-IpV.js} +1 -1
  39. package/dist/client/assets/{Users01-CVpagA8a.js → Users01-B-MVCpAl.js} +1 -1
  40. package/dist/client/assets/{Users03-X_nEGPVF.js → Users03-DeuRyiGY.js} +1 -1
  41. package/dist/client/assets/{X-BB9BsBG9.js → X-q13sWA3X.js} +1 -1
  42. package/dist/client/assets/{XCircle-Cnd7dAXs.js → XCircle-7MN0q2p8.js} +1 -1
  43. package/dist/client/assets/{XClose-DYcmy7Dm.js → XClose-DSNfQytA.js} +1 -1
  44. package/dist/client/assets/{Zap-CjDEO_x2.js → Zap-DSodTFcm.js} +1 -1
  45. package/dist/client/assets/{ZapSquare-l2Bo-FFh.js → ZapSquare-wDtwqJ9E.js} +1 -1
  46. package/dist/client/assets/{access-gate-wIXn4O0u.js → access-gate-BdTveOWn.js} +1 -1
  47. package/dist/client/assets/{add-section-modal-LPPys9Wr.js → add-section-modal-CcNmJ1u6.js} +1 -1
  48. package/dist/client/assets/{agent-icon-zWW3t6VG.js → agent-icon-vZRkuFuJ.js} +1 -1
  49. package/dist/client/assets/{agents-list-BfMyyq9F.js → agents-list-BnSWn1gJ.js} +1 -1
  50. package/dist/client/assets/{ai-providers-CrFNNWxE.js → ai-providers-DcICI1PD.js} +1 -1
  51. package/dist/client/assets/{alert-CG7QTVbj.js → alert-BaA0JUeJ.js} +1 -1
  52. package/dist/client/assets/{alert-dialog-DboT2S2L.js → alert-dialog-DqB5jGJa.js} +1 -1
  53. package/dist/client/assets/{app-editor-BuHoAPSu.js → app-editor-fQgNwFyv.js} +1 -1
  54. package/dist/client/assets/{auth-_9lv2gUI.js → auth-1oEezdDv.js} +1 -1
  55. package/dist/client/assets/{auth-catchall-zPdg3Kfr.js → auth-catchall-Cd9QV09_.js} +1 -1
  56. package/dist/client/assets/{auth-entry-DvIBJ_b3.js → auth-entry-DMAhHu8H.js} +1 -1
  57. package/dist/client/assets/{auth-split-layout-DcqR7Bmx.js → auth-split-layout-Gt6cZaQj.js} +1 -1
  58. package/dist/client/assets/{authenticate-and-persist-oauth-B1ortyYw.js → authenticate-and-persist-oauth-UOeJ65UH.js} +1 -1
  59. package/dist/client/assets/{automation-list-row-CwLU5mFl.js → automation-list-row-BDP8KHKH.js} +1 -1
  60. package/dist/client/assets/{automation-runs-DIhCKhoX.js → automation-runs-Bm1T0TVu.js} +1 -1
  61. package/dist/client/assets/{automations-CxAr-Q1U.js → automations-B5UHOs5O.js} +1 -1
  62. package/dist/client/assets/{avatar-BLfSxUga.js → avatar-CCfWyId6.js} +1 -1
  63. package/dist/client/assets/{badge-Caz53JSJ.js → badge-TM_RjXvB.js} +1 -1
  64. package/dist/client/assets/{block-document-DCUWew_G.js → block-document-CzkRL8mK.js} +1 -1
  65. package/dist/client/assets/{brand-context-CNCL9GzV.js → brand-context-BDkKLvmy.js} +1 -1
  66. package/dist/client/assets/{buckets-DzyUqHLV.js → buckets-DvwwX_Aw.js} +1 -1
  67. package/dist/client/assets/{bulk-category-panel-BS7tQG_z.js → bulk-category-panel-Cr9f8YKL.js} +1 -1
  68. package/dist/client/assets/{calendar-DDRNxoxt.js → calendar-CaKlgQNK.js} +1 -1
  69. package/dist/client/assets/{capability-load-error-CQIupxYq.js → capability-load-error-LW0k524d.js} +1 -1
  70. package/dist/client/assets/{card-MKJv9EQN.js → card-T6-8Tr-_.js} +1 -1
  71. package/dist/client/assets/{category-editor-oiFHZZss.js → category-editor-BdXoXNid.js} +1 -1
  72. package/dist/client/assets/{chat-context-CS8lxm9_.js → chat-context-D6Zqkcka.js} +1 -1
  73. package/dist/client/assets/{checkbox-PaZ4NcMV.js → checkbox-BfOIcygx.js} +1 -1
  74. package/dist/client/assets/{cli-auth-success-CDUUNd9g.js → cli-auth-success-D-6OOuPn.js} +1 -1
  75. package/dist/client/assets/{collection-detail-0xKJQ9H2.js → collection-detail-BQHOxO_p.js} +1 -1
  76. package/dist/client/assets/{collection-display-button-BshEeKVa.js → collection-display-button-coiVW_k5.js} +1 -1
  77. package/dist/client/assets/{collection-search-B27cYP5F.js → collection-search-B7VnAdyO.js} +1 -1
  78. package/dist/client/assets/{collection-table-wrapper-BC54lFoV.js → collection-table-wrapper-BN3UeqJW.js} +1 -1
  79. package/dist/client/assets/{collection-tabs-CkE9QnXQ.js → collection-tabs-BVySz0pc.js} +1 -1
  80. package/dist/client/assets/{command-BtKeqRh4.js → command-BgebSUtl.js} +1 -1
  81. package/dist/client/assets/{commerce-onboarding-DrIMQf60.js → commerce-onboarding-nHNafBGk.js} +1 -1
  82. package/dist/client/assets/{companions-core-CSljQMf_.js → companions-core-DblViEOS.js} +1 -1
  83. package/dist/client/assets/{connect-CvYZoBOv.js → connect-C6gJQT8k.js} +1 -1
  84. package/dist/client/assets/{connect-desktop-dialog-DPG0q8Du.js → connect-desktop-dialog-BCm4QW5K.js} +1 -1
  85. package/dist/client/assets/{connection-vOOMEOVb.js → connection-BGPcZ_f3.js} +1 -1
  86. package/dist/client/assets/{connection-card-CR8Tezk_.js → connection-card-ARok31He.js} +1 -1
  87. package/dist/client/assets/{connection-detail-BMvUAx0H.js → connection-detail-w9wQZmoc.js} +1 -1
  88. package/dist/client/assets/{connection-form-helpers-BHvHPEt2.js → connection-form-helpers-DShgjyvK.js} +1 -1
  89. package/dist/client/assets/{connections-CANGKksk.js → connections-OC-gye_s.js} +1 -1
  90. package/dist/client/assets/{decopilot-sse-pool-Cs4Wzcc3.js → decopilot-sse-pool-edoGXn-4.js} +1 -1
  91. package/dist/client/assets/{dialog-Bx0tkWaQ.js → dialog-Cd1xOuEP.js} +1 -1
  92. package/dist/client/assets/{domain-settings-D3GvEyoX.js → domain-settings-9c7K15-6.js} +1 -1
  93. package/dist/client/assets/{drawer-D1lsCtV4.js → drawer-Duf29Ytj.js} +1 -1
  94. package/dist/client/assets/{dropdown-menu-DuOVs_Vf.js → dropdown-menu-ypxi5YA4.js} +1 -1
  95. package/dist/client/assets/{empty-state-CJ5pANud.js → empty-state-lKBQbk5U.js} +1 -1
  96. package/dist/client/assets/{extract-connection-data-DN3g7eFu.js → extract-connection-data-DE4nI_Wd.js} +1 -1
  97. package/dist/client/assets/{file-explorer-CwtsUPq9.js → file-explorer-CG-ENFq9.js} +1 -1
  98. package/dist/client/assets/{form-Du5MP186.js → form-DKhZwHU2.js} +1 -1
  99. package/dist/client/assets/{general-Nt3tjjZW.js → general-DJqvrl3J.js} +1 -1
  100. package/dist/client/assets/{github-repo-picker-CevuiACk.js → github-repo-picker-BABbIFUG.js} +1 -1
  101. package/dist/client/assets/{hooks--vfnlMbG.js → hooks-DQFGVv_U.js} +1 -1
  102. package/dist/client/assets/{index-CoQgMoag.js → index-BGYdv2r6.js} +3 -3
  103. package/dist/client/assets/{index-D7ecmoEk.js → index-BY8SqhiC.js} +3 -3
  104. package/dist/client/assets/{index-do14p2vi.js → index-Brna68xE.js} +1 -1
  105. package/dist/client/assets/{index-BGBjg2-p.js → index-Bstqf7Rm.js} +1 -1
  106. package/dist/client/assets/{index-DdOGLJvQ.js → index-Cssym4Vo.js} +1 -1
  107. package/dist/client/assets/{index-CQJLbbtF.js → index-Dc1XpWA4.js} +5 -5
  108. package/dist/client/assets/{index-CNkhfL0R.js → index-DzfqE0zS.js} +1 -1
  109. package/dist/client/assets/{index-D7Rza1Tk.js → index-KMC0I3Sg.js} +1 -1
  110. package/dist/client/assets/{index-99C6r-0O.js → index-WgJ8AJhH.js} +1 -1
  111. package/dist/client/assets/{index-CGW3LfG6.js → index-qjncT50x.js} +1 -1
  112. package/dist/client/assets/{index-redirect-mbRRtjqd.js → index-redirect-CjV7cF1N.js} +1 -1
  113. package/dist/client/assets/{index-3f_ZHyYf.js → index-xZtdEvFe.js} +1 -1
  114. package/dist/client/assets/{input-Dc_Ksu2B.js → input-Bhbsoxci.js} +1 -1
  115. package/dist/client/assets/{integration-icon-Bep1O6vd.js → integration-icon-B3VsSRSU.js} +1 -1
  116. package/dist/client/assets/{invite-member-dialog-Cgl5-4U8.js → invite-member-dialog-Dy1ZuwK5.js} +1 -1
  117. package/dist/client/assets/{label-C7DWPW8F.js → label-BDLx8BY5.js} +1 -1
  118. package/dist/client/assets/{layout-DBTeM9nZ.js → layout-C5_4aUnF.js} +1 -1
  119. package/dist/client/assets/{login-DpMXYVre.js → login-DOiIkHQz.js} +1 -1
  120. package/dist/client/assets/{mcp-oauth-BaAftNVP.js → mcp-oauth-Dqs_xCxQ.js} +1 -1
  121. package/dist/client/assets/{members-Bmt50hSJ.js → members-B5UT1mVF.js} +1 -1
  122. package/dist/client/assets/{monaco-editor-BgAWurBW.js → monaco-editor-CjUIvZl4.js} +1 -1
  123. package/dist/client/assets/{monitoring-stats-row-Bm74hEZ0.js → monitoring-stats-row-BSUmMKtK.js} +1 -1
  124. package/dist/client/assets/{multi-select-CfZlB5Qw.js → multi-select-tRURrVIo.js} +1 -1
  125. package/dist/client/assets/{oauth-callback-CYLUgfp4.js → oauth-callback-C-_0WM1g.js} +1 -1
  126. package/dist/client/assets/{oauth-callback-ai-provider-K0a_OY_-.js → oauth-callback-ai-provider-Bt3bhn24.js} +1 -1
  127. package/dist/client/assets/{onboarding-BGO_NBG2.js → onboarding-kstHQCMT.js} +1 -1
  128. package/dist/client/assets/{org-install-DR5oM3KD.js → org-install-HhIBiDD1.js} +1 -1
  129. package/dist/client/assets/{org-layout-703CuN-Z.js → org-layout-DcVwTyMh.js} +1 -1
  130. package/dist/client/assets/{organization-choice-CFpQM--U.js → organization-choice-BqAjJ5fS.js} +1 -1
  131. package/dist/client/assets/{orgs-EWbhKMdE.js → orgs-DCLRyz0d.js} +1 -1
  132. package/dist/client/assets/{page-seo-form-D8vHQJoo.js → page-seo-form-DRUFdbhO.js} +1 -1
  133. package/dist/client/assets/page-seo-sheet-DWIxAAxv.js +1 -0
  134. package/dist/client/assets/{popover-uYC-XEIg.js → popover-DRfcTcTD.js} +1 -1
  135. package/dist/client/assets/{post-editor-BqIreh8a.js → post-editor-kWDNV26a.js} +1 -1
  136. package/dist/client/assets/{primitives-BPDffT-K.js → primitives-DvgG5s_Z.js} +1 -1
  137. package/dist/client/assets/{profile-Da2FFTD6.js → profile-C10R9FrN.js} +1 -1
  138. package/dist/client/assets/project-app-view-RtjM7u_4.js +1 -0
  139. package/dist/client/assets/record-editor-DJ-VG76l.js +1 -0
  140. package/dist/client/assets/{redirect-editor-Bh1TaWO_.js → redirect-editor-wS6Ld3rr.js} +1 -1
  141. package/dist/client/assets/registry-CQfx_5J-.js +2 -0
  142. package/dist/client/assets/{registry-layout-D4_J8FmQ.js → registry-layout-DXn_cGoR.js} +1 -1
  143. package/dist/client/assets/{reports-BjYgGXCV.js → reports-DpdEiNyo.js} +1 -1
  144. package/dist/client/assets/{require-capability-BiIETUd1.js → require-capability-BfsBHdYN.js} +1 -1
  145. package/dist/client/assets/{required-auth-layout-CWsSFaCw.js → required-auth-layout-prSUFzB4.js} +1 -1
  146. package/dist/client/assets/{reset-password-DLH3cD85.js → reset-password-BCRdNDGY.js} +1 -1
  147. package/dist/client/assets/{roles-BrK-3S4P.js → roles-BOzogNu4.js} +1 -1
  148. package/dist/client/assets/{search-input-yjiuaHAG.js → search-input-CU01OUdh.js} +1 -1
  149. package/dist/client/assets/{secrets-PZ05_PBq.js → secrets-DI5gEQnO.js} +1 -1
  150. package/dist/client/assets/{sections-editor-BksufGla.js → sections-editor-DHXBkqND.js} +1 -1
  151. package/dist/client/assets/{select-o--wOfO_.js → select-DP0in1_p.js} +1 -1
  152. package/dist/client/assets/{select-model-ZFqJATQj.js → select-model-iuCudSDR.js} +1 -1
  153. package/dist/client/assets/{self-tool-result-CGMZAwKq.js → self-tool-result-DQgQ_-pw.js} +1 -1
  154. package/dist/client/assets/{seo-editor-Bxl54AMl.js → seo-editor-J8Le1bsQ.js} +1 -1
  155. package/dist/client/assets/{settings-layout-DPWbQ34b.js → settings-layout-BLNSqeL9.js} +1 -1
  156. package/dist/client/assets/{settings-section-ClU7ej3n.js → settings-section-sddhAXGi.js} +1 -1
  157. package/dist/client/assets/{shell-controls-CH6DRW8q.js → shell-controls-orNBKHok.js} +1 -1
  158. package/dist/client/assets/{shell-layout-Bp9VqH1i.js → shell-layout-CbdAe4gL.js} +1 -1
  159. package/dist/client/assets/{sidebar-BVI_V0Ou.js → sidebar-VNoPByEB.js} +1 -1
  160. package/dist/client/assets/{skeleton-DzEF007-.js → skeleton-CAEzKsu_.js} +1 -1
  161. package/dist/client/assets/{sso-DVZelKBV.js → sso-CHFea8Ml.js} +1 -1
  162. package/dist/client/assets/store-registry-B0a4XniK.js +2 -0
  163. package/dist/client/assets/{store-BMsGxZX_.js → store-uTSJYuEh.js} +1 -1
  164. package/dist/client/assets/{studio-tools-BnkAV7Qh.js → studio-tools-B5ZBfGyP.js} +1 -1
  165. package/dist/client/assets/{switch-JdJblN-W.js → switch-CMlHxoyO.js} +1 -1
  166. package/dist/client/assets/{tab-id-BUyXQAAI.js → tab-id-Du5zRSUU.js} +1 -1
  167. package/dist/client/assets/{table-BsxxkDds.js → table-CmrQb2Dv.js} +1 -1
  168. package/dist/client/assets/{tabs-SMaulwar.js → tabs-BG8oBEXF.js} +1 -1
  169. package/dist/client/assets/{textarea-BJyqw4SL.js → textarea-Bn9UQpSX.js} +1 -1
  170. package/dist/client/assets/{toggle-group-D32XTjzk.js → toggle-group-DjC6FK2q.js} +1 -1
  171. package/dist/client/assets/{toolbar-CdMnBYXx.js → toolbar-CrtRE5EE.js} +1 -1
  172. package/dist/client/assets/{tooltip-DV8_wP4H.js → tooltip-NYMnEnpV.js} +1 -1
  173. package/dist/client/assets/{use-ai-providers-CGmpPHf_.js → use-ai-providers-DIvAmIiH.js} +1 -1
  174. package/dist/client/assets/{use-api-keys-BfTMjXnb.js → use-api-keys-Rp9qULW7.js} +1 -1
  175. package/dist/client/assets/{use-automations-DKxhc36V.js → use-automations-DEep68Bq.js} +1 -1
  176. package/dist/client/assets/{use-autosave-B7d7j-io.js → use-autosave-t7qFm77l.js} +1 -1
  177. package/dist/client/assets/{use-capability-ev2jDwzE.js → use-capability-D0Ax_2Mu.js} +1 -1
  178. package/dist/client/assets/{use-clock-tick-CdvZtpVB.js → use-clock-tick-CYGjBpRr.js} +1 -1
  179. package/dist/client/assets/{use-connection-BVFqG9Id.js → use-connection-Dk5U-92j.js} +1 -1
  180. package/dist/client/assets/{use-copy-ChgQcxSu.js → use-copy-BW82QfLt.js} +1 -1
  181. package/dist/client/assets/{use-create-virtual-mcp-Cz4bgQ9e.js → use-create-virtual-mcp-jNTs_pDe.js} +1 -1
  182. package/dist/client/assets/{use-debounced-autosave-D35X8JvW.js → use-debounced-autosave-BLPavctK.js} +1 -1
  183. package/dist/client/assets/{use-debounced-value-BC1HcYvB.js → use-debounced-value-B0Y0tp_w.js} +1 -1
  184. package/dist/client/assets/{use-deco-credits-BuBKE8oE.js → use-deco-credits-Df5RUjVO.js} +1 -1
  185. package/dist/client/assets/{use-decopilot-events-hTj_0wvh.js → use-decopilot-events-C93aNKT2.js} +1 -1
  186. package/dist/client/assets/{use-delete-connection-qfgJCzx4.js → use-delete-connection-BmYE1yKN.js} +1 -1
  187. package/dist/client/assets/{use-deployment-admin-BmhPiQqU.js → use-deployment-admin-CcLGwlnh.js} +1 -1
  188. package/dist/client/assets/{use-file-configs-h0BKPSC_.js → use-file-configs-BncwrE8p.js} +1 -1
  189. package/dist/client/assets/{use-infinite-scroll-DaBbmjUW.js → use-infinite-scroll-DrVpwdxR.js} +1 -1
  190. package/dist/client/assets/{use-join-requests-RAdw_UW-.js → use-join-requests-CJwOoOUH.js} +1 -1
  191. package/dist/client/assets/{use-mcp-auth-status-D78D4ly6.js → use-mcp-auth-status-BkLVgLji.js} +1 -1
  192. package/dist/client/assets/{use-mcp-client-CnyXhKwV.js → use-mcp-client-CXQfXmW1.js} +1 -1
  193. package/dist/client/assets/{use-mcp-tools-Y11uuW0V.js → use-mcp-tools-Vborm3Md.js} +1 -1
  194. package/dist/client/assets/{use-members-SNaM7f-x.js → use-members-Dq6dyvHP.js} +1 -1
  195. package/dist/client/assets/{use-mobile-BvPCUKE_.js → use-mobile-CVS1DWhI.js} +1 -1
  196. package/dist/client/assets/{use-navigate-to-agent-mziLMlnK.js → use-navigate-to-agent-Dz9VKGfK.js} +1 -1
  197. package/dist/client/assets/{use-org-auth-client-D-a5lzlz.js → use-org-auth-client-qUDaZF1y.js} +1 -1
  198. package/dist/client/assets/{use-org-sso-DRXrpsuQ.js → use-org-sso-BquxtHPj.js} +1 -1
  199. package/dist/client/assets/{use-organization-roles-Bfvpk2iJ.js → use-organization-roles-BKvvlxCM.js} +1 -1
  200. package/dist/client/assets/{use-organization-settings-BIY_uMId.js → use-organization-settings-DFEKbln7.js} +1 -1
  201. package/dist/client/assets/{use-registry-app-Dah_IHSb.js → use-registry-app-CzHmy4Wj.js} +1 -1
  202. package/dist/client/assets/{use-registry-connections-Dt1w8c5m.js → use-registry-connections-CPGcjryf.js} +1 -1
  203. package/dist/client/assets/{use-secrets-CDDI4aok.js → use-secrets-UvV55MbK.js} +1 -1
  204. package/dist/client/assets/{use-status-sounds-Co4aEO2K.js → use-status-sounds-Cf58fcQL.js} +1 -1
  205. package/dist/client/assets/{use-view-mode-D5dCZ-RY.js → use-view-mode-C2rzSHQ8.js} +1 -1
  206. package/dist/client/assets/{use-virtual-mcp-qSYuKLW8.js → use-virtual-mcp-GiyprHQn.js} +1 -1
  207. package/dist/client/assets/useInfiniteQuery-BctKVZJI.js +1 -0
  208. package/dist/client/assets/{useQueries-BoGu5qPQ.js → useQueries-MAFudhi8.js} +1 -1
  209. package/dist/client/assets/{useRouterState-Dmetv5YU.js → useRouterState-D4kOLw3L.js} +1 -1
  210. package/dist/client/assets/useSuspenseInfiniteQuery-9HOxS-t0.js +1 -0
  211. package/dist/client/assets/{users-BU2FMU03.js → users-BrvbeRRr.js} +1 -1
  212. package/dist/client/assets/{variant-calendar-Bby2_euu.js → variant-calendar-DmVMWER0.js} +1 -1
  213. package/dist/client/assets/{view-mode-toggle-AG0DCuNp.js → view-mode-toggle-BlF6gGnh.js} +1 -1
  214. package/dist/client/index.html +1 -1
  215. package/dist/server/cli.js +9 -5
  216. package/dist/server/server.js +2 -2
  217. package/package.json +1 -1
  218. package/dist/client/assets/page-seo-sheet-DyzBHLgd.js +0 -1
  219. package/dist/client/assets/project-app-view-C3gRZgWO.js +0 -1
  220. package/dist/client/assets/record-editor-nWW4hsfT.js +0 -1
  221. package/dist/client/assets/registry-CCileC0o.js +0 -2
  222. package/dist/client/assets/store-registry-xshyt2Qy.js +0 -2
  223. package/dist/client/assets/useInfiniteQuery-BRBbsKnZ.js +0 -1
  224. package/dist/client/assets/useSuspenseInfiniteQuery-BjnR7v75.js +0 -1
@@ -12659,8 +12659,12 @@ function readStatusFiles(repoDir) {
12659
12659
  }
12660
12660
  return files;
12661
12661
  }
12662
+ var UNMERGED_STATUSES = new Set(["DD", "AU", "UD", "UA", "DU", "AA", "UU"]);
12663
+ function isUnmerged(f) {
12664
+ return UNMERGED_STATUSES.has(\`\${f.index}\${f.working_dir}\`);
12665
+ }
12662
12666
  function getConflictedFiles(repoDir) {
12663
- return readStatusFiles(repoDir).filter((f) => \`\${f.index}\${f.working_dir}\`.includes("U")).map((f) => f.path);
12667
+ return readStatusFiles(repoDir).filter(isUnmerged).map((f) => f.path);
12664
12668
  }
12665
12669
  function abortRebase(repoDir) {
12666
12670
  if (isRebaseInProgress(repoDir)) {
@@ -12703,7 +12707,7 @@ function resolveConflictFile(repoDir, summary) {
12703
12707
  runGit(repoDir, ["add", "--", filePath]);
12704
12708
  return;
12705
12709
  }
12706
- if (xy === "UD") {
12710
+ if (xy === "UD" || xy === "DD") {
12707
12711
  runGit(repoDir, ["rm", "-f", "--", filePath]);
12708
12712
  return;
12709
12713
  }
@@ -12741,7 +12745,7 @@ function resolveConflictsRecursively(repoDir, wip = MAX_CONFLICT_RESOLUTION_ATTE
12741
12745
  throw new Error("Rebase conflict resolution exceeded maximum attempts");
12742
12746
  }
12743
12747
  const files = readStatusFiles(repoDir);
12744
- const conflicted = files.filter((f) => \`\${f.index}\${f.working_dir}\`.includes("U"));
12748
+ const conflicted = files.filter(isUnmerged);
12745
12749
  for (const summary of conflicted) {
12746
12750
  resolveConflictFile(repoDir, summary);
12747
12751
  }
@@ -83069,7 +83073,7 @@ ${w}`;v(B);return}if(c(null,F),t.strategy==="count"){if($--,$===0)v()}if(t.strat
83069
83073
  `);function v(d){if(t===void 0)return!0;let D=Zq(d),_=D&&Zq(t)?Dau(t):t,N=D?Dau(d):_au(d),Z=NVt(_,N);return Z===""||!Z.startsWith("..")&&!DVt(Z)}return{upsert(d){f.run({$handle:d.handle,$status:d.status,$sandboxPath:d.sandboxPath,$port:d.port??null,$previewUrl:d.previewUrl??null,$repoCloneUrl:d.repoCloneUrl??null,$branch:d.branch??null,$projectName:d.projectName??null,$error:d.error??null,$now:Date.now()})},list(){return l.all().map(i6i)},reconcile(){let d=Date.now();for(let D of l.all().map(i6i)){if(!v(D.sandboxPath)){E.run({$handle:D.handle,$now:d});continue}if(!Zq(D.sandboxPath)){c.run({$handle:D.handle,$now:d});continue}if(D.status==="spawning"||D.status==="ready"||D.status==="failed"||D.status==="missing")w.run({$handle:D.handle,$now:d})}return l.all().map(i6i)},prune(d){let D=[],_=[],N=this.reconcile();for(let Z of N){if(!v(Z.sandboxPath)){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(d.missing&&Z.status==="missing"){$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!d.merged||!Zq(Z.sandboxPath))continue;if(Z.branch===null||Z.branch.trim()===""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!k_(Z.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let B=k_(Z.sandboxPath,["status","--porcelain"]);if(!B.ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(B.stdout.trim()!==""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let F=Oau(Z.sandboxPath,Z.branch);if(F===null){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!F){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}vVt(Z.sandboxPath,{recursive:!0,force:!0}),$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:D,skipped:_}},delete(d){$.run({$handle:d})},inspect(d){let D=h.get({$handle:d});if(D===null)return null;let _=i6i(D),N=0,Z=null;if(Zq(_.sandboxPath)&&k_(_.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let B=k_(_.sandboxPath,["status","--porcelain"]);if(B.ok){let F=B.stdout.trim();N=F===""?0:F.split(`
83070
83074
  `).length}if(_.branch!==null&&_.branch.trim()!=="")Z=Oau(_.sandboxPath,_.branch)}return{handle:_.handle,branch:_.branch,sandboxPath:_.sandboxPath,dirtyCount:N,merged:Z}},close(){u.close()}}}var Gbi=()=>{};function FVt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function Bau(i,u){if(process.platform==="win32")return;for(let t of FVt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var Fau=()=>{};import{existsSync as gVt,readdirSync as TVt}from"fs";import{rm as UVt}from"fs/promises";import{join as gau}from"path";async function Tau(i,u={}){let t=u.detach??AVt,f=u.exists??gVt,l=u.readdir??((w)=>TVt(w)),E=u.rm??((w)=>UVt(w,{recursive:!0,force:!0})),c=gau(i,"org");if(f(c))for(let w of l(c))t(gau(c,w));await E(i)}var AVt=(i)=>Bau(i,process.platform==="darwin");var Uau=O(()=>{Fau()});import{join as yVt}from"path";function Aau(i){let u=i.purge??Tau;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await B1(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??yVt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof H6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var yau=O(()=>{O4();Uau()});import{randomBytes as PVt}from"crypto";import{mkdir as GVt}from"fs/promises";import{createServer as IVt}from"net";import{join as xVt}from"path";function Pau(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function Gau(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function Iau(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function kVt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function jVt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:kVt(i.repo?.cloneUrl)}}function xau(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??XVt,l=i.fetchImpl??fetch,E=i.resolvePreviewUrl??((N,Z)=>`http://127.0.0.1:${Z}`),c=(N)=>xVt(i.dataDir,"sandboxes",N),w=(N)=>{try{i.registry?.upsert(N)}catch(Z){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${N.handle} status=${N.status}:`,Z)}},$=(N)=>{try{i.onEvent?.(N)}catch{}},h=async(N)=>{let Z=new AbortController,B=setTimeout(()=>Z.abort(),1500);try{let F=await l(`${N}/health`,{signal:Z.signal});if(!F.ok)console.warn(`[user-desktop] probe ${N}/health \u2192 ${F.status} (treating as dead)`);return F.ok}catch(F){return console.warn(`[user-desktop] probe ${N}/health failed: ${F instanceof Error?F.message:String(F)} (treating as dead)`),!1}finally{clearTimeout(B)}},v=(N)=>{console.warn(`[user-desktop] evicting dead daemon handle=${N.handle} port=${N.port}`);try{N.process.kill("SIGTERM")}catch{}if(t.get(N.handle)===N)t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:c(N.handle),port:null,previewUrl:null,...N.registryMetadata,error:null}),$({handle:N.handle,phase:"evicted"})},d=new Map;function D(){if(t.size<u)return;let N=[...t.values()].filter((B)=>B.activeDispatchCount===0).sort((B,F)=>B.lastUsedAt-F.lastUsedAt);if(N.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let Z=N[0];console.log(`[user-desktop] evicting LRU victim handle=${Z.handle} port=${Z.port} (cap ${u} reached, size=${t.size})`);try{Z.process.kill("SIGTERM")}catch{}t.delete(Z.handle),w({handle:Z.handle,status:"stopped",sandboxPath:c(Z.handle),port:null,previewUrl:null,...Z.registryMetadata,error:null}),$({handle:Z.handle,phase:"evicted"})}let _=async(N)=>{let Z=jVt(N),B=c(N.handle);w({handle:N.handle,status:"spawning",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"spawning",sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),D();let F,g=null,T;try{await GVt(B,{recursive:!0}),console.log(`[user-desktop] ensure handle=${N.handle} repo=${N.repo?.cloneUrl??"(none)"} branch=${N.repo?.branch??"(none)"} runtime=${N.workload?.runtime??"(autodetect)"} pm=${N.workload?.packageManager??"(autodetect)"}`),T=PVt(24).toString("hex");let[k,I]=await Promise.all([f(),f()]);F=k,console.log(`[user-desktop] spawn handle=${N.handle} port=${F} devPort=${I} workdir=${B}`),g=await Promise.resolve(i.spawnDaemon({workdir:B,handle:N.handle,port:F,daemonToken:T,offloadAllowedHosts:N.offloadAllowedHosts??[],offloadAllowSameHostDev:N.offloadAllowSameHostDev??!1,orgFsConfigJson:N.orgFsConfigJson}));try{await i.waitForHealth(F)}catch(X){throw Pau("the sandbox didn't come online in time",X)}console.log(`[user-desktop] healthy handle=${N.handle} port=${F} \u2014 posting config`);try{await i.postConfig(F,I,{repo:N.repo,workload:N.workload,operator:N.operator},T)}catch(X){throw Pau(Gau(X)?"configuration timed out":"the sandbox rejected its configuration",X)}}catch(k){if((Gau(k)?console.warn:console.error)(`[user-desktop] sandbox bring-up failed handle=${N.handle} port=${F??"(none)"}${g?" (killing daemon)":""}:`,k),g)try{g.kill("SIGKILL")}catch{}throw $({handle:N.handle,phase:"failed",error:Iau(k),sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),w({handle:N.handle,status:"failed",sandboxPath:B,port:null,previewUrl:null,...Z,error:Iau(k)}),k}if(!g||F===void 0)throw Error("sandbox bring-up invariant violated");let U=`http://127.0.0.1:${F}`,A=E(N.handle,F);console.log(`[user-desktop] ready handle=${N.handle} port=${F} sandboxApiUrl=${U} previewUrl=${A}`);let G={handle:N.handle,port:F,process:g,sandboxApiUrl:U,previewUrl:A,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:T,registryMetadata:Z};if(t.set(N.handle,G),w({handle:N.handle,status:"ready",sandboxPath:B,port:F,previewUrl:A,...Z,error:null}),$({handle:N.handle,phase:"ready",port:F,previewUrl:A,sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),g.exited)g.exited.then(()=>{if(t.get(N.handle)===G)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${N.handle} port=${F} \u2014 removing from cache`),t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${N.handle} port=${F} (already replaced/removed)`)});return{sandboxApiUrl:U,previewUrl:A,port:F}};return{async ensureSandbox(N){let Z=t.get(N.handle);if(Z){if(await h(Z.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${N.handle} port=${Z.port} (alive)`),Z.lastUsedAt=Date.now(),{sandboxApiUrl:Z.sandboxApiUrl,previewUrl:Z.previewUrl,port:Z.port};console.warn(`[user-desktop] cache stale handle=${N.handle} port=${Z.port} \u2014 respawning`),v(Z)}let B=d.get(N.handle);if(B)return console.log(`[user-desktop] joining in-flight ensure handle=${N.handle}`),B;let F=_(N).finally(()=>{d.delete(N.handle)});return d.set(N.handle,F),F},proxyPort(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now();return Z?.port??null},getDaemonToken(N){return t.get(N)?.daemonToken??null},hasHandle(N){return t.has(N)||d.has(N)},recordHit(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now()},acquireDispatch(N){let Z=t.get(N);if(!Z)return()=>{};Z.activeDispatchCount+=1;let B=!1;return()=>{if(B)return;B=!0;let F=t.get(N);if(F)F.activeDispatchCount=Math.max(0,F.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(N){let Z=t.get(N);if(!Z){console.log(`[user-desktop] delete handle=${N} (not found, no-op)`);return}if(Z.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${N} port=${Z.port} REFUSED \u2014 ${Z.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${N} port=${Z.port}`);try{Z.process.kill("SIGTERM")}catch{}t.delete(N),w({handle:N,status:"stopped",sandboxPath:c(N),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),$({handle:N,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let N of t.values())try{N.process.kill("SIGTERM")}catch{}t.clear()}}}function XVt(){return new Promise((i,u)=>{let t=IVt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var kau=()=>{};import{randomUUID as JVt}from"crypto";import{hostname as KVt}from"os";async function jau(i){let u=KVt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=$Mu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=t6i({path:u6i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,E=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let c=0,w=xau({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(X,b)=>c>0?`http://${X}.localhost:${c}`:`http://127.0.0.1:${b}`,spawnDaemon:async(X)=>{let b={DAEMON_BOOT_ID:JVt(),APP_ROOT:X.workdir,PROXY_PORT:String(X.port),DAEMON_TOKEN:X.daemonToken,OFFLOAD_ALLOWED_HOSTS:X.offloadAllowedHosts.join(","),...X.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(X.orgFsConfigJson){let L=await DMu(i.dataDir);if(L)b.ORGFS_CONFIG=X.orgFsConfigJson,b.ORGFS_RCLONE_PATH=L}let K=await t({workdir:X.workdir,env:b,daemonPort:X.port});return{port:X.port,kill:(L)=>K.kill(L),exited:K.exited.then(()=>{return})}},postConfig:async(X,b,K,L)=>{let m={port:b};if(K.workload)m.runtime=K.workload.runtime,m.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Q={application:m},ti=T5(K.operator??null);if(ti)Q.operator=ti;if(K.repo)Q.git={repository:{cloneUrl:K.repo.cloneUrl,branch:K.repo.branch,...K.repo.submoduleCredentials&&K.repo.submoduleCredentials.length>0?{submoduleCredentials:K.repo.submoduleCredentials}:{}},...K.repo.userName&&K.repo.userEmail?{identity:{userName:K.repo.userName,userEmail:K.repo.userEmail}}:{}};await B_(`http://127.0.0.1:${X}`,L,Q)},waitForHealth:async(X)=>{await uli(`http://127.0.0.1:${X}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),$=await iau({port:i.port,lookupSandboxPort:(X)=>w.proxyPort(X)});c=$.port,console.log(`Local ingress listening on http://127.0.0.1:${$.port} (use http://<handle>.localhost:${$.port}/)`),i.monitor?.onIngress?.($.port);let h=NMu({provider:w}),v=async()=>{let X=await Z_({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!X)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return X.accessToken},d=await vau(i.dataDir),D=process.env.npm_package_version??"0.0.0",_=await Pbi(),N=$au(_,{onChange:(X)=>{console.log(`[link-daemon] capabilities detected: +${X.join(",")} (now: ${_.join(",")})`)}}),Z=Dni({path:`${i.dataDir}/link/outbox.sqlite`});Z.clear();let B=()=>{},F=new AbortController,g={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:v,provider:w,outbox:Z,controlHandler:h,capabilities:_,machineId:d,cliVersion:D,previewPort:$.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>B(),runLifetimeSignal:F.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let T=await beu(g);console.log("[link-daemon] active transport=tunnel");let U,A=new Promise((X)=>{U=X}),G=!1,k=async()=>{if(G)return;G=!0,F.abort(),console.log(`
83071
83075
  Shutting down\u2026`),N();try{await T.close()}catch{}try{await $.stop()}catch{}try{await w.shutdown()}catch{}try{Z.close()}catch{}E(),U(0)};process.on("SIGINT",()=>void k()),process.on("SIGTERM",()=>void k()),B=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),k()},T.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!G)console.error("Cluster connection closed permanently; exiting."),k()});let I=Aau({provider:w,registry:f,dataDir:i.dataDir});return{stopped:A,stop:k,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(c){throw E(),c}}var Xau=O(()=>{Eni();zM();hMu();_Mu();OMu();_ni();Ceu();uau();hau();dau();HM();Gbi();yau();kau()});function Ibi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as YVt}from"net";async function SVt(i){for(let u of WVt)if(await xbi(i,u))return u;return null}async function Jau(i,{intervalMs:u=1000}={}){for(;;){let t=await SVt(i);if(t)return t;await y0(u)}}function xbi(i,u){return new Promise((t)=>{let f=YVt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var WVt;var kbi=O(()=>{O4();WVt=["localhost","127.0.0.1","0.0.0.0"]});function Kau(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function LVt(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function Yau(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${LVt(i,u)}`].join(`
83072
- `)}var jbi;var Wau=O(()=>{jbi=class jbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var gL;var f6i=O(()=>{gL={name:"decocms",version:"4.126.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","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 src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@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/resources":"^2.6.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","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var Bq={};ji(Bq,{printBanner:()=>zVt,bannerLines:()=>Sau,BANNER_LINES:()=>l6i,BANNER_GRADIENT:()=>E6i});function HVt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Sau(i){let u=l6i.map((t,f)=>{let[l,E,c]=HVt(E6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function zVt(i){console.log("");for(let u of Sau(i))console.log(u);console.log("")}var l6i,E6i;var TL=O(()=>{l6i=[" \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 "],E6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as nVt,Text as Lau}from"ink";import{jsx as RVt,jsxs as Qau}from"react/jsx-runtime";function c6i({version:i}){return Qau(nVt,{flexDirection:"column",marginTop:1,children:[l6i.map((u,t)=>RVt(Lau,{color:E6i[t],children:u},t)),Qau(Lau,{dimColor:!0,children:[" v",i]})]})}var Xbi=O(()=>{TL()});function Hau(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function UL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function zau(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function nau(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var Wbi={};ji(Wbi,{subscribeLinkState:()=>Jbi,setSelectedHandle:()=>Kbi,setRemoving:()=>h6i,setPersistedSandboxes:()=>oVt,setPendingConfirm:()=>gq,setMachine:()=>rVt,setLogPath:()=>eVt,setLinkActions:()=>aVt,setIngress:()=>VVt,setDaemonError:()=>mVt,setClusterUrl:()=>qVt,setCluster:()=>MVt,setActionError:()=>$6i,resetLinkStateForTests:()=>pVt,removeSandboxRow:()=>Ybi,pushSandboxEvent:()=>sVt,getLinkState:()=>Fq,applySandboxEvent:()=>Rau});function CVt(i){return i==="spawning"||i==="ready"||i==="failed"}function Rau(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function bau(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:bVt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function b3(){for(let i of w6i)i()}function Fq(){return lf}function Jbi(i){return w6i.add(i),()=>w6i.delete(i)}function MVt(i){lf={...lf,cluster:i},b3()}function qVt(i){lf={...lf,clusterUrl:i},b3()}function VVt(i,u){lf={...lf,ingressPort:i,ingressUrl:u},b3()}function rVt(i){lf={...lf,machine:i},b3()}function mVt(i){lf={...lf,daemonError:i},b3()}function eVt(i){lf={...lf,logPath:i},b3()}function Kbi(i){lf={...lf,selectedHandle:i},b3()}function gq(i){lf={...lf,pendingConfirm:i},b3()}function $6i(i){lf={...lf,actionError:i},b3()}function h6i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},b3()}function aVt(i){lf={...lf,actions:i},b3()}function Ybi(i){let u=UL(lf.sandboxes),t=nau(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},b3()}function oVt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of lf.sandboxes)if(CVt(f.status))u.set(t,f);lf={...lf,sandboxes:u},b3()}function sVt(i){lf={...lf,sandboxes:Rau(lf.sandboxes,i)},b3()}function pVt(){lf=bau(),w6i.clear()}var bVt=20,lf,w6i;var Tq=O(()=>{lf=bau(),w6i=new Set});import{spawn as irt}from"child_process";function urt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Cau(i,u=process.platform){let t=urt(u);try{irt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Mau=()=>{};function qau(i,u={}){let t=u.openUrl??Cau,f=Fq(),l=UL(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":Kbi(zau(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);$6i(null),gq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(gq(null),w===null||!c)return;h6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Ybi(w.handle);else h6i(w.handle,!1),$6i($.error)});return}case"confirmNo":gq(null);return;case"quit":if(c)c.quit();return}}var Vau=O(()=>{Tq();Mau()});function rau(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var mau={};ji(mau,{LinkApp:()=>Ert});import{Box as b1,Text as hl,useInput as trt}from"ink";import{useSyncExternalStore as frt}from"react";import{jsx as kf,jsxs as J5}from"react/jsx-runtime";function lrt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function Ert(){let i=frt(Jbi,Fq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=UL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return trt((l,E)=>{let c=rau(l,E,i.pendingConfirm!==null);if(c!==null)qau(c)}),J5(b1,{flexDirection:"column",children:[kf(c6i,{version:gL.version}),kf(b1,{marginBottom:1,children:kf(hl,{dimColor:!0,children:"\u2500".repeat(80)})}),kf(b1,{children:i.cluster==="linked"?J5(hl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?J5(hl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):J5(hl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),kf(b1,{children:i.ingressUrl?J5(hl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):kf(hl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),kf(b1,{marginBottom:1,children:kf(hl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?kf(hl,{dimColor:!0,children:"No previews running yet."}):J5(b1,{flexDirection:"column",children:[J5(b1,{children:[kf(b1,{width:2,flexShrink:0}),kf(b1,{width:AL.project,flexShrink:0,marginRight:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),kf(b1,{width:AL.branch,flexShrink:0,marginRight:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),kf(b1,{width:AL.status,flexShrink:0,marginRight:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),kf(b1,{flexGrow:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=lrt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return J5(b1,{children:[kf(b1,{width:2,flexShrink:0,children:kf(hl,{color:"cyan",children:c?"\u203A":" "})}),kf(b1,{width:AL.project,flexShrink:0,marginRight:1,children:kf(hl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),kf(b1,{width:AL.branch,flexShrink:0,marginRight:1,children:kf(hl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),kf(b1,{width:AL.status,flexShrink:0,marginRight:1,children:kf(hl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),kf(b1,{flexGrow:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?kf(b1,{marginTop:1,children:J5(hl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?kf(b1,{marginTop:1,children:J5(hl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?kf(b1,{marginTop:1,children:kf(hl,{color:"yellow",children:Hau(i.pendingConfirm)})}):null,i.actionError?kf(b1,{marginTop:1,children:J5(hl,{color:"red",children:["\u2717 ",i.actionError]})}):null,kf(b1,{marginTop:1,children:kf(hl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var AL;var eau=O(()=>{f6i();Xbi();Vau();Tq();AL={project:18,branch:22,status:14}});var aau={};ji(aau,{runLinkCommand:()=>_rt});import{closeSync as crt,mkdirSync as wrt,openSync as $rt,writeSync as hrt}from"fs";import{homedir as vrt}from"os";import{join as Sbi}from"path";function drt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{hrt(u,`${Ibi(l)}
83076
+ `)}var jbi;var Wau=O(()=>{jbi=class jbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var gL;var f6i=O(()=>{gL={name:"decocms",version:"4.126.3",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/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","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 src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@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/resources":"^2.6.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","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var Bq={};ji(Bq,{printBanner:()=>zVt,bannerLines:()=>Sau,BANNER_LINES:()=>l6i,BANNER_GRADIENT:()=>E6i});function HVt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Sau(i){let u=l6i.map((t,f)=>{let[l,E,c]=HVt(E6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function zVt(i){console.log("");for(let u of Sau(i))console.log(u);console.log("")}var l6i,E6i;var TL=O(()=>{l6i=[" \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 "],E6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as nVt,Text as Lau}from"ink";import{jsx as RVt,jsxs as Qau}from"react/jsx-runtime";function c6i({version:i}){return Qau(nVt,{flexDirection:"column",marginTop:1,children:[l6i.map((u,t)=>RVt(Lau,{color:E6i[t],children:u},t)),Qau(Lau,{dimColor:!0,children:[" v",i]})]})}var Xbi=O(()=>{TL()});function Hau(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function UL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function zau(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function nau(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var Wbi={};ji(Wbi,{subscribeLinkState:()=>Jbi,setSelectedHandle:()=>Kbi,setRemoving:()=>h6i,setPersistedSandboxes:()=>oVt,setPendingConfirm:()=>gq,setMachine:()=>rVt,setLogPath:()=>eVt,setLinkActions:()=>aVt,setIngress:()=>VVt,setDaemonError:()=>mVt,setClusterUrl:()=>qVt,setCluster:()=>MVt,setActionError:()=>$6i,resetLinkStateForTests:()=>pVt,removeSandboxRow:()=>Ybi,pushSandboxEvent:()=>sVt,getLinkState:()=>Fq,applySandboxEvent:()=>Rau});function CVt(i){return i==="spawning"||i==="ready"||i==="failed"}function Rau(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function bau(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:bVt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function b3(){for(let i of w6i)i()}function Fq(){return lf}function Jbi(i){return w6i.add(i),()=>w6i.delete(i)}function MVt(i){lf={...lf,cluster:i},b3()}function qVt(i){lf={...lf,clusterUrl:i},b3()}function VVt(i,u){lf={...lf,ingressPort:i,ingressUrl:u},b3()}function rVt(i){lf={...lf,machine:i},b3()}function mVt(i){lf={...lf,daemonError:i},b3()}function eVt(i){lf={...lf,logPath:i},b3()}function Kbi(i){lf={...lf,selectedHandle:i},b3()}function gq(i){lf={...lf,pendingConfirm:i},b3()}function $6i(i){lf={...lf,actionError:i},b3()}function h6i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},b3()}function aVt(i){lf={...lf,actions:i},b3()}function Ybi(i){let u=UL(lf.sandboxes),t=nau(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},b3()}function oVt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of lf.sandboxes)if(CVt(f.status))u.set(t,f);lf={...lf,sandboxes:u},b3()}function sVt(i){lf={...lf,sandboxes:Rau(lf.sandboxes,i)},b3()}function pVt(){lf=bau(),w6i.clear()}var bVt=20,lf,w6i;var Tq=O(()=>{lf=bau(),w6i=new Set});import{spawn as irt}from"child_process";function urt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Cau(i,u=process.platform){let t=urt(u);try{irt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Mau=()=>{};function qau(i,u={}){let t=u.openUrl??Cau,f=Fq(),l=UL(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":Kbi(zau(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);$6i(null),gq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(gq(null),w===null||!c)return;h6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Ybi(w.handle);else h6i(w.handle,!1),$6i($.error)});return}case"confirmNo":gq(null);return;case"quit":if(c)c.quit();return}}var Vau=O(()=>{Tq();Mau()});function rau(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var mau={};ji(mau,{LinkApp:()=>Ert});import{Box as b1,Text as hl,useInput as trt}from"ink";import{useSyncExternalStore as frt}from"react";import{jsx as kf,jsxs as J5}from"react/jsx-runtime";function lrt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function Ert(){let i=frt(Jbi,Fq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=UL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return trt((l,E)=>{let c=rau(l,E,i.pendingConfirm!==null);if(c!==null)qau(c)}),J5(b1,{flexDirection:"column",children:[kf(c6i,{version:gL.version}),kf(b1,{marginBottom:1,children:kf(hl,{dimColor:!0,children:"\u2500".repeat(80)})}),kf(b1,{children:i.cluster==="linked"?J5(hl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?J5(hl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):J5(hl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),kf(b1,{children:i.ingressUrl?J5(hl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):kf(hl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),kf(b1,{marginBottom:1,children:kf(hl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?kf(hl,{dimColor:!0,children:"No previews running yet."}):J5(b1,{flexDirection:"column",children:[J5(b1,{children:[kf(b1,{width:2,flexShrink:0}),kf(b1,{width:AL.project,flexShrink:0,marginRight:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),kf(b1,{width:AL.branch,flexShrink:0,marginRight:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),kf(b1,{width:AL.status,flexShrink:0,marginRight:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),kf(b1,{flexGrow:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=lrt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return J5(b1,{children:[kf(b1,{width:2,flexShrink:0,children:kf(hl,{color:"cyan",children:c?"\u203A":" "})}),kf(b1,{width:AL.project,flexShrink:0,marginRight:1,children:kf(hl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),kf(b1,{width:AL.branch,flexShrink:0,marginRight:1,children:kf(hl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),kf(b1,{width:AL.status,flexShrink:0,marginRight:1,children:kf(hl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),kf(b1,{flexGrow:1,children:kf(hl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?kf(b1,{marginTop:1,children:J5(hl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?kf(b1,{marginTop:1,children:J5(hl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?kf(b1,{marginTop:1,children:kf(hl,{color:"yellow",children:Hau(i.pendingConfirm)})}):null,i.actionError?kf(b1,{marginTop:1,children:J5(hl,{color:"red",children:["\u2717 ",i.actionError]})}):null,kf(b1,{marginTop:1,children:kf(hl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var AL;var eau=O(()=>{f6i();Xbi();Vau();Tq();AL={project:18,branch:22,status:14}});var aau={};ji(aau,{runLinkCommand:()=>_rt});import{closeSync as crt,mkdirSync as wrt,openSync as $rt,writeSync as hrt}from"fs";import{homedir as vrt}from"os";import{join as Sbi}from"path";function drt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{hrt(u,`${Ibi(l)}
83073
83077
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(Ibi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function Drt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function _rt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??Sbi(vrt(),"deco"),f=i.clusterBaseUrl??process.env.STUDIO_CLUSTER_URL??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,E,c,w=()=>{if(c===void 0)return;try{c.close()}catch{}finally{c=void 0}};try{if(await xbi(u,"127.0.0.1"))throw new jbi(u);let $=Sbi(t,"sandboxes");c=t6i({path:u6i(t),managedSandboxRoot:$});let h=await o1i({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await Drt(f,h.accessToken);let v=c.reconcile();if(i.prune){let N=c.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${N.removed.length}, skipped ${N.skipped.length}.`);v=c.reconcile()}let d;if(i.tui){let{render:N}=await import("ink"),{createElement:Z}=await import("react"),{LinkApp:B}=await Promise.resolve().then(() => (eau(),mau)),{pushSandboxEvent:F,setCluster:g,setClusterUrl:T,setDaemonError:U,setIngress:A,setLogPath:G,setMachine:k,setPersistedSandboxes:I}=await Promise.resolve().then(() => (Tq(),Wbi));wrt(t,{recursive:!0});let X=Sbi(t,"link.log");E=$rt(X,"w"),G(X),I(v),T(f),g("connecting"),d={onEvent:(b)=>F(b),onIngress:(b)=>A(b,`http://127.0.0.1:${b}`),onCluster:(b)=>g(b),onMachine:(b)=>k(b)},l=drt(U,E),N(Z(B),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:N}=await Promise.resolve().then(() => (TL(),Bq));N(i.version??"0.0.0")}w();let D=process.env.DECOCMS_LINK_MANAGED!=="1",_=await jau({port:u,clusterBaseUrl:f,dataDir:t,session:h,monitor:d,logFd:E,perSandboxLogs:D,hotReload:i.hotReload});if(i.tui){let{setLinkActions:N}=await Promise.resolve().then(() => (Tq(),Wbi));N({stopSandbox:_.stopSandbox,removeSandbox:_.removeSandbox,inspectSandbox:_.inspectSandbox,quit:_.stop})}return await _.stopped}catch($){return l?.(),console.error(Kau($)?Yau(u):$ instanceof Error?$.message:String($)),1}finally{if(l?.(),E!==void 0)try{crt(E)}catch{}w()}}var oau=O(()=>{lni();Xau();kbi();Wau();Gbi()});var Rbi={};ji(Rbi,{resolveDevLinkClusterUrl:()=>Brt,populateDevLinkToxiProxy:()=>fou,isDevLinkToxiProxyEnabled:()=>Zrt,ensureDevLinkToxiProxy:()=>Art,buildDevLinkToxiProxyConfig:()=>uou,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>pau,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>iou});function Zrt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Lbi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function uou(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=Lbi(i.apiPort,"apiPort"),f=Lbi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=Lbi(Number.parseInt(u.port,10),"upstreamPort"),E=`http://127.0.0.1:${l}`,c=`http://127.0.0.1:${f}`;return{serviceName:pau,proxyName:iou,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:E,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${E}`}}function Brt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function Qbi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function nbi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function tou(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return tou(i.cause)}async function Hbi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${nbi(l)}`,{cause:l})}}async function fou(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await Hbi(u,"reset",t,{method:"POST"});await Qbi(f,"reset",t);let l=`${i.apiUrl}/populate`,E=await Hbi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await Qbi(E,"populate",l)}async function Frt(i,u){let t=`${i.apiUrl}/version`;try{await B1(async()=>{let f=await Hbi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(Ort)});await Qbi(f,"readiness check",t)},{maxAttempts:Nrt,minTimeout:sau,maxTimeout:sau,multiplier:1,jitter:0,isRetriable:(f)=>!tou(f)})}catch(f){let l=f instanceof H6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${nbi(l)}`,{cause:l})}}async function grt(i){if(i===null)return"";return await new Response(i).text()}async function zbi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch(w){throw Error(`Docker command failed to start (${t}): ${nbi(w)}`,{cause:w})}})(),[l,E]=await Promise.all([f.exited,grt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let c=E.trim().length>0?`: ${E.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${c}`)}async function Trt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await zbi(["rm","-f",t],{ignoreFailure:!0}),await zbi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function Urt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await zbi(["rm","-f",t],{ignoreFailure:!0})}async function Art(i){let u=uou(i),t=i.startDaemon??Trt,f=i.stopDaemon??(i.startDaemon===void 0?Urt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await Frt(u,l),await fou(u,l)}catch(E){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw E}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var pau="ToxiProxy",iou="dev_link_studio",Nrt=20,sau=100,Ort=100;var bbi=O(()=>{O4()});var lou={};ji(lou,{migrateBetterAuth:()=>Cbi});import{getMigrations as yrt}from"better-auth/db";import{sso as Prt}from"@better-auth/sso";import{organization as Grt}from"@decocms/better-auth/plugins";import{admin as Irt,apiKey as xrt,jwt as krt,magicLink as jrt,mcp as Xrt,openAPI as Jrt}from"better-auth/plugins";import{emailOTP as Krt}from"better-auth/plugins/email-otp";async function Cbi(i){let t={database:KM(i||D_()),plugins:[Grt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),Irt(),xrt(),krt(),Jrt(),Xrt({loginPage:"/login"}),Prt(),jrt({sendMagicLink:async()=>{}}),Krt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:E}=await yrt(t);if(!f.length&&!l.length)return"up to date";return await E(),`${l.length+f.length} table(s) migrated`}var Mbi=O(()=>{b6()});var qbi={};ji(qbi,{up:()=>Yrt,down:()=>Wrt});import{sql as _d}from"kysely";async function Yrt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(_d`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function Wrt(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var Eou=()=>{};var Vbi={};ji(Vbi,{up:()=>Srt,down:()=>Lrt});import{sql as cou}from"kysely";async function Srt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(cou`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(cou`CURRENT_TIMESTAMP`)).execute()}async function Lrt(i){await i.schema.dropTable("organization_settings").execute()}var wou=()=>{};var rbi={};ji(rbi,{up:()=>Qrt,down:()=>Hrt});async function Qrt(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function Hrt(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var mbi={};ji(mbi,{up:()=>zrt,down:()=>nrt});async function zrt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function nrt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var ebi={};ji(ebi,{up:()=>Rrt,down:()=>brt});async function Rrt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function brt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var abi={};ji(abi,{up:()=>Mrt,down:()=>qrt});import{sql as Crt}from"kysely";async function Mrt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",Crt`text`).execute()}async function qrt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var $ou=()=>{};var obi={};ji(obi,{up:()=>Vrt,down:()=>rrt});async function Vrt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function rrt(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var sbi={};ji(sbi,{up:()=>mrt,down:()=>ert});import{sql as Uq}from"kysely";async function mrt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(Uq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(Uq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(Uq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(Uq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(Uq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function ert(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var hou=()=>{};var pbi={};ji(pbi,{up:()=>ort,down:()=>srt});import{sql as art}from"kysely";async function ort(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function srt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(art`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var vou=()=>{};var iCi={};ji(iCi,{up:()=>prt,down:()=>imt});import{sql as v6i}from"kysely";async function prt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(v6i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(v6i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(v6i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await v6i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function imt(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var dou=()=>{};var uCi={};ji(uCi,{up:()=>umt,down:()=>tmt});async function umt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function tmt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var tCi={};ji(tCi,{up:()=>fmt,down:()=>lmt});import{sql as d6i}from"kysely";async function fmt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await d6i`
83074
83078
  UPDATE gateways
83075
83079
  SET tool_selection_mode = CASE
@@ -86754,7 +86758,7 @@ The expected part count is based on the byte-count of the input.params.Body,
86754
86758
  which was read from ${c} and is ${E}.
86755
86759
  If this is not correct, provide an override value by setting a number
86756
86760
  to input.params.ContentLength in bytes.
86757
- `);this.uploadedParts.sort(($,h)=>$.PartNumber-h.PartNumber);let w={...this.params,Body:void 0,UploadId:this.uploadId,MultipartUpload:{Parts:this.uploadedParts}};if(t=await this.client.send(new zS(w)),typeof t?.Location==="string"&&t.Location.includes("%2F"))t.Location=t.Location.replace(/%2F/g,"/")}else t=this.singleUploadResult;if(this.abortMultipartUploadCommand=null,this.tags.length)await this.client.send(new qS({...this.params,Tagging:{TagSet:this.tags}}));return t}async markUploadAsAborted(){if(this.uploadId&&!this.leavePartsOnError&&this.abortMultipartUploadCommand!==null)await this.client.send(this.abortMultipartUploadCommand),this.abortMultipartUploadCommand=null}__notifyProgress(i){if(this.uploadEvent)this.emit(this.uploadEvent,i)}async __abortTimeout(i){return new Promise((u,t)=>{i.onabort=()=>{let f=Error("Upload aborted.");f.name="AbortError",t(f)}})}__validateUploadPart(i){let u=fii(i.data);if(u===void 0)throw Error(`A dataPart was generated without a measurable data chunk size for part number ${i.partNumber}`);if(i.partNumber===1&&i.lastPart)return;if(!i.lastPart&&u!==this.partSize)throw Error(`The byte size for part number ${i.partNumber}, size ${u} does not match expected size ${this.partSize}`)}__validateInput(){if(!this.client)throw Error("InputError: Upload requires a AWS client to do uploads with.");if(this.partSize<lb.MIN_PART_SIZE)throw Error(`EntityTooSmall: Your proposed upload part size [${this.partSize}] is smaller than the minimum allowed size [${lb.MIN_PART_SIZE}] (5MB)`);if(this.queueSize<1)throw Error("Queue size: Must have at least one uploading queue.")}}});var Vft=()=>{};var rft=O(()=>{qft();Vft()});import{randomUUID as VY4}from"crypto";function mft(i,u){if(!rY4.has(i))throw new fW(`Content type "${i}" is not allowed.`);if(!Number.isFinite(u)||u<=0)throw new fW("File size must be a positive number.");if(u>lW)throw new fW(`File too large: ${u} bytes (max ${lW}).`)}function mY4(i){let u=i.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/-+/g,"-").replace(/^[-.]+|[-.]+$/g,"");if(u.length<=80)return u||"file";let t=u.lastIndexOf(".");if(t>0&&u.length-t<=10){let f=u.slice(t);return u.slice(0,80-f.length)+f}return u.slice(0,80)}function eft(i){let u=new Date,t=u.getUTCFullYear().toString(),f=String(u.getUTCMonth()+1).padStart(2,"0"),l=VY4(),E=mY4(i.filename),c=`${t}/${f}/${l}-${E}`;return i.prefix?`${i.prefix}${c}`:c}var lW=104857600,rY4,fW;var aft=O(()=>{rY4=new Set(["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","image/avif","video/mp4","video/webm","video/quicktime","audio/mpeg","audio/wav","audio/ogg","application/pdf","application/json","application/zip","text/plain","text/csv","text/markdown","font/woff","font/woff2","font/ttf","font/otf"]);fW=class fW extends Error{constructor(i){super(i);this.name="UploadRejected"}}});var oft=()=>{let i=new Ku;return i.post("/file-configs/:id/upload",async(u)=>{let t=u.get("studioContext");if(!t.auth?.user?.id)throw new G0(401,{message:"Unauthorized"});let l=t.organization?.id;if(!l)throw new G0(400,{message:"Organization required"});await t.access.check("FILE_CONFIG_UPDATE");let E=u.req.param("id");if(!E)throw new G0(400,{message:"Missing config id"});let c=u.req.query("filename");if(!c)throw new G0(400,{message:"Missing `filename` query parameter"});let w=u.req.header("content-type")||"application/octet-stream",$=u.req.header("content-length"),h=$?Number($):NaN;if(!Number.isFinite(h)||h<=0)throw new G0(411,{message:"Content-Length required and must be a positive number"});try{mft(w,h)}catch(F){if(F instanceof fW)throw new G0(h>lW?413:400,{message:F.message});throw F}let v=u.req.raw.body;if(!v)throw new G0(400,{message:"Empty request body"});let d=0,D=!1,_=v.pipeThrough(new TransformStream({transform(F,g){if(d+=F.byteLength,d>lW){D=!0,g.error(new fW(`File too large: stream exceeded ${lW} bytes.`));return}g.enqueue(F)}})),N;try{N=await HPi(t.storage.orgFileConfigs,t.storage.orgSites,E,l)}catch(F){if(F instanceof QPi)throw new G0(403,{message:F.message});throw F}let Z=eft({prefix:N.info.prefix,filename:c}),B=rhu(N);try{await new lb({client:B,params:{Bucket:N.info.bucket,Key:Z,Body:_,ContentType:w},partSize:8388608,queueSize:4}).done()}catch(F){if(D)throw new G0(413,{message:`File too large: stream exceeded ${lW} bytes.`});throw new G0(502,{message:`Upload to bucket failed: ${F instanceof Error?F.message:String(F)}`})}return u.json({key:Z,publicUrl:LPi(N.info,Z),contentType:w,size:d})}),i};var sft=O(()=>{rft();mt();C5();ehu();aft()});function pft(i){let u=new Ku;return u.get("/kv/:key",async(t)=>{let l=t.get("studioContext").organization?.id;if(!l)return t.json({error:"Organization required"},400);let E=t.req.param("key");if(g8u(E))return t.json({error:"Reserved key"},403);let c=await i.kvStorage.get(l,E);if(c===null)return t.json({error:"Not found"},404);return t.json({key:E,value:c})}),u.put("/kv/:key",qE({maxSize:eY4,onError:(t)=>t.json({error:"Payload too large"},413)}),async(t)=>{let l=t.get("studioContext").organization?.id;if(!l)return t.json({error:"Organization required"},400);let E=t.req.param("key");if(g8u(E))return t.json({error:"Reserved key"},403);let c;try{c=await t.req.json()}catch{return t.json({error:"Invalid JSON body"},400)}return await i.kvStorage.set(l,E,c),t.json({ok:!0})}),u.delete("/kv/:key",async(t)=>{let l=t.get("studioContext").organization?.id;if(!l)return t.json({error:"Organization required"},400);let E=t.req.param("key");if(g8u(E))return t.json({error:"Reserved key"},403);return await i.kvStorage.delete(l,E),t.json({ok:!0})}),u}var eY4=1048576,aY4,g8u=(i)=>aY4.some((u)=>i.startsWith(u));var i4t=O(()=>{mt();aY();aY4=[jD0]});function T8u(i,u){if(/[.*>\s]/.test(i)||/[.*>\s]/.test(u))return[];return oY4.map((t)=>`${t}.${i}.${u}`)}function lii(i,u,t){if(!i)return;let f=T8u(u,t);try{for(let l of f)i.publish(l)}catch{}}var oY4;var u4t=O(()=>{oY4=["studio.org-fs.changes","mesh.org-fs.changes"]});function E4t(i,u,t,f){let l=C6(t),E={"Content-Type":l,"Cache-Control":f?"public, max-age=0, must-revalidate":"private, max-age=0"};if(l.startsWith("text/html"))E["Content-Security-Policy"]="sandbox allow-scripts allow-modals allow-same-origin";return i.body(Buffer.from(u),200,E)}function w4t(i,u){let t=Eb.get(i);return!!t&&Date.now()<=t.resetAt&&t.count>=u}function EW4(i,u){return!w4t(i,tW4)&&!w4t(u,fW4)}function $4t(i,u){let t=Eb.get(i);if(!t||u>t.resetAt)Eb.set(i,{count:1,resetAt:u+lW4});else t.count++}function cW4(i,u){let t=Date.now();if(Eb.size>5000){for(let[f,l]of Eb)if(t>l.resetAt)Eb.delete(f)}$4t(i,t),$4t(u,t)}function wW4(i){return i.req.header("cf-connecting-ip")||i.req.header("x-real-ip")||i.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function $W4(i){if(i.req.header("x-forwarded-proto")==="https")return!0;try{return new URL(i.req.url).protocol==="https:"}catch{return!1}}function hW4(i,u,t,f){let l=aL(i,lVi(u,t,f.govPath));if(!l)return!1;return qpu(l,{org:u,volume:t,secret:f.secret,nowSec:Math.floor(Date.now()/1000)})?.govPath===f.govPath}function A8u(i,u,t=401){let f=`/api/${encodeURIComponent(u.orgSlug)}/fs/${encodeURIComponent(u.volume)}/unlock?path=${encodeURIComponent(u.path)}`,l=`<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Password required</title><style>
86761
+ `);this.uploadedParts.sort(($,h)=>$.PartNumber-h.PartNumber);let w={...this.params,Body:void 0,UploadId:this.uploadId,MultipartUpload:{Parts:this.uploadedParts}};if(t=await this.client.send(new zS(w)),typeof t?.Location==="string"&&t.Location.includes("%2F"))t.Location=t.Location.replace(/%2F/g,"/")}else t=this.singleUploadResult;if(this.abortMultipartUploadCommand=null,this.tags.length)await this.client.send(new qS({...this.params,Tagging:{TagSet:this.tags}}));return t}async markUploadAsAborted(){if(this.uploadId&&!this.leavePartsOnError&&this.abortMultipartUploadCommand!==null)await this.client.send(this.abortMultipartUploadCommand),this.abortMultipartUploadCommand=null}__notifyProgress(i){if(this.uploadEvent)this.emit(this.uploadEvent,i)}async __abortTimeout(i){return new Promise((u,t)=>{i.onabort=()=>{let f=Error("Upload aborted.");f.name="AbortError",t(f)}})}__validateUploadPart(i){let u=fii(i.data);if(u===void 0)throw Error(`A dataPart was generated without a measurable data chunk size for part number ${i.partNumber}`);if(i.partNumber===1&&i.lastPart)return;if(!i.lastPart&&u!==this.partSize)throw Error(`The byte size for part number ${i.partNumber}, size ${u} does not match expected size ${this.partSize}`)}__validateInput(){if(!this.client)throw Error("InputError: Upload requires a AWS client to do uploads with.");if(this.partSize<lb.MIN_PART_SIZE)throw Error(`EntityTooSmall: Your proposed upload part size [${this.partSize}] is smaller than the minimum allowed size [${lb.MIN_PART_SIZE}] (5MB)`);if(this.queueSize<1)throw Error("Queue size: Must have at least one uploading queue.")}}});var Vft=()=>{};var rft=O(()=>{qft();Vft()});import{randomUUID as VY4}from"crypto";function mft(i,u){if(!rY4.has(i))throw new fW(`Content type "${i}" is not allowed.`);if(!Number.isFinite(u)||u<=0)throw new fW("File size must be a positive number.");if(u>lW)throw new fW(`File too large: ${u} bytes (max ${lW}).`)}function mY4(i){let u=i.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/-+/g,"-").replace(/^[-.]+|[-.]+$/g,"");if(u.length<=80)return u||"file";let t=u.lastIndexOf(".");if(t>0&&u.length-t<=10){let f=u.slice(t);return u.slice(0,80-f.length)+f}return u.slice(0,80)}function eft(i){let u=new Date,t=u.getUTCFullYear().toString(),f=String(u.getUTCMonth()+1).padStart(2,"0"),l=VY4(),E=mY4(i.filename),c=`${t}/${f}/${l}-${E}`;return i.prefix?`${i.prefix}${c}`:c}var lW=104857600,rY4,fW;var aft=O(()=>{rY4=new Set(["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","image/avif","video/mp4","video/webm","video/quicktime","audio/mpeg","audio/wav","audio/ogg","application/pdf","application/json","application/zip","text/plain","text/csv","text/markdown","font/woff","font/woff2","font/ttf","font/otf"]);fW=class fW extends Error{constructor(i){super(i);this.name="UploadRejected"}}});var oft=()=>{let i=new Ku;return i.post("/file-configs/:id/upload",async(u)=>{let t=u.get("studioContext");if(!t.auth?.user?.id)throw new G0(401,{message:"Unauthorized"});let l=t.organization?.id;if(!l)throw new G0(400,{message:"Organization required"});await t.access.check("FILE_CONFIG_UPDATE");let E=u.req.param("id");if(!E)throw new G0(400,{message:"Missing config id"});let c=u.req.query("filename");if(!c)throw new G0(400,{message:"Missing `filename` query parameter"});let w=u.req.header("content-type")||"application/octet-stream",$=u.req.header("content-length"),h=$?Number($):NaN;if(!Number.isFinite(h)||h<=0)throw new G0(411,{message:"Content-Length required and must be a positive number"});try{mft(w,h)}catch(F){if(F instanceof fW)throw new G0(h>lW?413:400,{message:F.message});throw F}let v=u.req.raw.body;if(!v)throw new G0(400,{message:"Empty request body"});let d=0,D=!1,_=v.pipeThrough(new TransformStream({transform(F,g){if(d+=F.byteLength,d>lW){D=!0,g.error(new fW(`File too large: stream exceeded ${lW} bytes.`));return}g.enqueue(F)}})),N;try{N=await HPi(t.storage.orgFileConfigs,t.storage.orgSites,E,l)}catch(F){if(F instanceof QPi)throw new G0(403,{message:F.message});throw F}let Z=eft({prefix:N.info.prefix,filename:c}),B=rhu(N);try{await new lb({client:B,params:{Bucket:N.info.bucket,Key:Z,Body:_,ContentType:w},partSize:8388608,queueSize:4}).done()}catch(F){if(D)throw new G0(413,{message:`File too large: stream exceeded ${lW} bytes.`});throw new G0(502,{message:`Upload to bucket failed: ${F instanceof Error?F.message:String(F)}`})}return u.json({key:Z,publicUrl:LPi(N.info,Z),contentType:w,size:d})}),i};var sft=O(()=>{rft();mt();C5();ehu();aft()});function pft(i){let u=new Ku;return u.get("/kv/:key",async(t)=>{let l=t.get("studioContext").organization?.id;if(!l)return t.json({error:"Organization required"},400);let E=t.req.param("key");if(g8u(E))return t.json({error:"Reserved key"},403);let c=await i.kvStorage.get(l,E);if(c===null)return t.json({error:"Not found"},404);return t.json({key:E,value:c})}),u.put("/kv/:key",qE({maxSize:eY4,onError:(t)=>t.json({error:"Payload too large"},413)}),async(t)=>{let l=t.get("studioContext").organization?.id;if(!l)return t.json({error:"Organization required"},400);let E=t.req.param("key");if(g8u(E))return t.json({error:"Reserved key"},403);let c;try{c=await t.req.json()}catch{return t.json({error:"Invalid JSON body"},400)}return await i.kvStorage.set(l,E,c),t.json({ok:!0})}),u.delete("/kv/:key",async(t)=>{let l=t.get("studioContext").organization?.id;if(!l)return t.json({error:"Organization required"},400);let E=t.req.param("key");if(g8u(E))return t.json({error:"Reserved key"},403);return await i.kvStorage.delete(l,E),t.json({ok:!0})}),u}var eY4=1048576,aY4,g8u=(i)=>aY4.some((u)=>i.startsWith(u));var i4t=O(()=>{mt();aY();aY4=[jD0]});function T8u(i,u){if(/[.*>\s]/.test(i)||/[.*>\s]/.test(u))return[];return oY4.map((t)=>`${t}.${i}.${u}`)}function lii(i,u,t){if(!i)return;let f=T8u(u,t);try{for(let l of f)i.publish(l)}catch{}}var oY4;var u4t=O(()=>{oY4=["studio.org-fs.changes","mesh.org-fs.changes"]});function E4t(i,u,t,f){let l=C6(t),E={"Content-Type":l,"Cache-Control":f?"public, max-age=0, must-revalidate":"private, max-age=0"};if(l.startsWith("text/html"))E["Content-Security-Policy"]="sandbox allow-scripts allow-modals allow-same-origin allow-downloads";return i.body(Buffer.from(u),200,E)}function w4t(i,u){let t=Eb.get(i);return!!t&&Date.now()<=t.resetAt&&t.count>=u}function EW4(i,u){return!w4t(i,tW4)&&!w4t(u,fW4)}function $4t(i,u){let t=Eb.get(i);if(!t||u>t.resetAt)Eb.set(i,{count:1,resetAt:u+lW4});else t.count++}function cW4(i,u){let t=Date.now();if(Eb.size>5000){for(let[f,l]of Eb)if(t>l.resetAt)Eb.delete(f)}$4t(i,t),$4t(u,t)}function wW4(i){return i.req.header("cf-connecting-ip")||i.req.header("x-real-ip")||i.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function $W4(i){if(i.req.header("x-forwarded-proto")==="https")return!0;try{return new URL(i.req.url).protocol==="https:"}catch{return!1}}function hW4(i,u,t,f){let l=aL(i,lVi(u,t,f.govPath));if(!l)return!1;return qpu(l,{org:u,volume:t,secret:f.secret,nowSec:Math.floor(Date.now()/1000)})?.govPath===f.govPath}function A8u(i,u,t=401){let f=`/api/${encodeURIComponent(u.orgSlug)}/fs/${encodeURIComponent(u.volume)}/unlock?path=${encodeURIComponent(u.path)}`,l=`<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Password required</title><style>
86758
86762
  :root{color-scheme:light dark}
86759
86763
  body{margin:0;min-height:100vh;display:grid;place-items:center;font:15px/1.5 ui-sans-serif,system-ui,sans-serif;background:#f6f6f7;color:#18181b}
86760
86764
  @media(prefers-color-scheme:dark){body{background:#0b0b0c;color:#fafafa}}