decocms 4.155.3 → 4.155.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/client/assets/{AlertCircle-Ch8mO3YQ.js → AlertCircle-Ppf_Ku5j.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BFUY9bdD.js → AreaChart-BHYk1K-B.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-BnKF068f.js → ArrowUp-DwYb3ImC.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-a2GoyjEM.js → ArrowUpRight-CalIWHlU.js} +1 -1
  5. package/dist/client/assets/{Check-D5IFtDAd.js → Check-CaGCohJ4.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-B03jCIzy.js → CheckCircle-B0hTk1HK.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-zLBvmB9W.js → ChevronDown-DhQOqv8y.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-TUDmolU_.js → ChevronRight-D_V9QqeR.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-BTc8FGqD.js → ChevronUp-CbtciMCp.js} +1 -1
  10. package/dist/client/assets/{Copy01-M8tscsd7.js → Copy01-x5_EyVs5.js} +1 -1
  11. package/dist/client/assets/{CpuChip01-D5zP5Oiw.js → CpuChip01-uyPm36RB.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-BGBkY7Q1.js → DotsVertical-DF6emoXy.js} +1 -1
  13. package/dist/client/assets/{Eye-BhQfsF8j.js → Eye-DdJoqxVZ.js} +1 -1
  14. package/dist/client/assets/{FilterLines-wVzvgmme.js → FilterLines-0LP6Yqd6.js} +1 -1
  15. package/dist/client/assets/{HardDrive-p_7f-6_R.js → HardDrive-Xjn63XK5.js} +1 -1
  16. package/dist/client/assets/{Key01-9KYvjuxW.js → Key01-BooDgQ9_.js} +1 -1
  17. package/dist/client/assets/{LayoutLeft-ChcLbs2q.js → LayoutLeft-CzG_GBDV.js} +1 -1
  18. package/dist/client/assets/{LinkExternal01-CcaTawvF.js → LinkExternal01-Bu6zmey-.js} +1 -1
  19. package/dist/client/assets/{LogOut01-PrD9B1AL.js → LogOut01-C1mq8-V8.js} +1 -1
  20. package/dist/client/assets/{Monitor01-DvhrvQKi.js → Monitor01-CEtfvPFr.js} +1 -1
  21. package/dist/client/assets/{Palette-Cbuuj4Lt.js → Palette-cjhK6yH0.js} +1 -1
  22. package/dist/client/assets/{Play-mjSe-io-.js → Play-DLZUUQCo.js} +1 -1
  23. package/dist/client/assets/{Plus-Dd6w_Sih.js → Plus-mjTHiasb.js} +1 -1
  24. package/dist/client/assets/{SearchLg-BuHLTpiQ.js → SearchLg-DZPjlX6b.js} +1 -1
  25. package/dist/client/assets/{SearchMd-eXao8uJK.js → SearchMd-ABT6b7Cr.js} +1 -1
  26. package/dist/client/assets/{Settings02-BSHMAvYU.js → Settings02-BdnladeZ.js} +1 -1
  27. package/dist/client/assets/{Shield01-B4Xogb21.js → Shield01-BuGvGbim.js} +1 -1
  28. package/dist/client/assets/{Star01-yAvVK7_Z.js → Star01-ZV9zdbu_.js} +1 -1
  29. package/dist/client/assets/{Stars01-2VmMj7yj.js → Stars01-CLQDzvHn.js} +1 -1
  30. package/dist/client/assets/{Stars02-DIWS6S4V.js → Stars02-lgbJztMs.js} +1 -1
  31. package/dist/client/assets/{Sun-DkcyJn3E.js → Sun-BWrdE0n8.js} +1 -1
  32. package/dist/client/assets/{SwitchHorizontal01-Dwal8wH9.js → SwitchHorizontal01-K04oqscl.js} +1 -1
  33. package/dist/client/assets/{Tool01-DoxPqQII.js → Tool01-CAAqCxPN.js} +1 -1
  34. package/dist/client/assets/{Tool02-D_pNjGh6.js → Tool02-C2CWQ2Bx.js} +1 -1
  35. package/dist/client/assets/{Trash01-BDEWF8P6.js → Trash01-Ca6Tymc3.js} +1 -1
  36. package/dist/client/assets/{TrendUp01-2zErLTBi.js → TrendUp01-CFGXkagE.js} +1 -1
  37. package/dist/client/assets/{Upload01-79XT2p-2.js → Upload01-BjjauAMf.js} +1 -1
  38. package/dist/client/assets/{User01-BvpCHWwg.js → User01-B5HWYPeH.js} +1 -1
  39. package/dist/client/assets/{Users01-B7zbI4KU.js → Users01-BDrBnpcx.js} +1 -1
  40. package/dist/client/assets/{Users03-C9kjDYas.js → Users03-C3gOU7K5.js} +1 -1
  41. package/dist/client/assets/{X-C6ZNAGXV.js → X-BPKQhmen.js} +1 -1
  42. package/dist/client/assets/{XCircle-CWrYF61N.js → XCircle-BIQ1gZEZ.js} +1 -1
  43. package/dist/client/assets/{XClose-DK2KHpN1.js → XClose-BCuFActY.js} +1 -1
  44. package/dist/client/assets/{Zap-BsWR2ahn.js → Zap-t3UzfbWk.js} +1 -1
  45. package/dist/client/assets/{ZapSquare-D1NeF16j.js → ZapSquare-Bf4IFVK5.js} +1 -1
  46. package/dist/client/assets/{access-gate-DQmT0fMS.js → access-gate-CdWgW00R.js} +1 -1
  47. package/dist/client/assets/{add-section-modal-BIrn8vhR.js → add-section-modal-DjflBSAd.js} +1 -1
  48. package/dist/client/assets/{agent-icon-CcIwEqFb.js → agent-icon-CskqZ_sv.js} +1 -1
  49. package/dist/client/assets/{agents-list-mePH465W.js → agents-list-CJ7QCMro.js} +1 -1
  50. package/dist/client/assets/{ai-providers-xlzZ4NO_.js → ai-providers-cJfqZijR.js} +1 -1
  51. package/dist/client/assets/{alert-To1v-D1M.js → alert-CbkNTu0I.js} +1 -1
  52. package/dist/client/assets/{alert-dialog-B1CLGZQ3.js → alert-dialog-BDfr5FhB.js} +1 -1
  53. package/dist/client/assets/{app-editor-By_2zspQ.js → app-editor-kNW8cXxu.js} +1 -1
  54. package/dist/client/assets/{auth-Dq3hmv1S.js → auth-B9UXAN00.js} +1 -1
  55. package/dist/client/assets/{auth-catchall-QVhPG5p4.js → auth-catchall-cXr0EHl-.js} +1 -1
  56. package/dist/client/assets/{auth-entry-7hF2Dlam.js → auth-entry-EjIdNWVw.js} +1 -1
  57. package/dist/client/assets/{auth-split-layout-EFCu0ewM.js → auth-split-layout-DH-9GZaO.js} +1 -1
  58. package/dist/client/assets/{authenticate-and-persist-oauth-CmKFCry3.js → authenticate-and-persist-oauth-DFDi1mDI.js} +1 -1
  59. package/dist/client/assets/{automation-list-row-BjDK9Nii.js → automation-list-row-BJPs7V6K.js} +1 -1
  60. package/dist/client/assets/{automation-runs-IMkZqAbP.js → automation-runs-C07Taw7M.js} +1 -1
  61. package/dist/client/assets/{automations-Bh0vj_xD.js → automations-mwZqGTfX.js} +1 -1
  62. package/dist/client/assets/{avatar-cURFoY0t.js → avatar-DqywwqOo.js} +1 -1
  63. package/dist/client/assets/{badge-JJYt64fc.js → badge-BV1tnuMg.js} +1 -1
  64. package/dist/client/assets/{block-document-Blp_QfsJ.js → block-document-P4PfOHFB.js} +1 -1
  65. package/dist/client/assets/{brand-context-Ca42Z_lx.js → brand-context-D_-XiFKP.js} +1 -1
  66. package/dist/client/assets/{buckets-Bjn0oX_J.js → buckets-ClNBD1Wq.js} +1 -1
  67. package/dist/client/assets/{bulk-category-panel-BDPm9jaD.js → bulk-category-panel-DSxUNM_1.js} +1 -1
  68. package/dist/client/assets/{calendar-BnlM7BTK.js → calendar-BoIdNSVB.js} +1 -1
  69. package/dist/client/assets/{capability-load-error-gW2tnPjA.js → capability-load-error-V8ZdZdBF.js} +1 -1
  70. package/dist/client/assets/{card-DceL6fJC.js → card-CbNSsNWr.js} +1 -1
  71. package/dist/client/assets/{category-editor-1vKj5veR.js → category-editor-EwKJwO7S.js} +1 -1
  72. package/dist/client/assets/{chat-context-EkX4H3Ta.js → chat-context-DXpKsjVo.js} +1 -1
  73. package/dist/client/assets/{checkbox-CykE_GY5.js → checkbox-BtcVLwTh.js} +1 -1
  74. package/dist/client/assets/{cli-auth-success-CId7uRt6.js → cli-auth-success-BokAjVBN.js} +1 -1
  75. package/dist/client/assets/{collection-detail-DSVxFkNU.js → collection-detail-BHh0Jwe0.js} +1 -1
  76. package/dist/client/assets/{collection-display-button-Bm2pTwXB.js → collection-display-button-DrKyOWqt.js} +1 -1
  77. package/dist/client/assets/{collection-search-Cq8uHImO.js → collection-search-D-wT0_Xy.js} +1 -1
  78. package/dist/client/assets/{collection-table-wrapper-DKWdTmCR.js → collection-table-wrapper-iHIO3d02.js} +1 -1
  79. package/dist/client/assets/{collection-tabs-B713OLtR.js → collection-tabs-CEm1oMBv.js} +1 -1
  80. package/dist/client/assets/{command-C3va_Dye.js → command-CBBfPSRS.js} +1 -1
  81. package/dist/client/assets/{commerce-onboarding-CREQF1j-.js → commerce-onboarding-B-PN1BjH.js} +1 -1
  82. package/dist/client/assets/{companions-core-D_NGbrJN.js → companions-core-Du1hddZ-.js} +1 -1
  83. package/dist/client/assets/{connect-CQMfItZM.js → connect-BKaUe0ym.js} +1 -1
  84. package/dist/client/assets/{connection-1oJ0X527.js → connection-DHUqMnvs.js} +1 -1
  85. package/dist/client/assets/{connection-card-DCNTWuVV.js → connection-card-BWTca7Pl.js} +1 -1
  86. package/dist/client/assets/{connection-detail-DxGk3lmB.js → connection-detail-CF9AkemL.js} +1 -1
  87. package/dist/client/assets/{connection-form-helpers-u_9zESY3.js → connection-form-helpers-CWzCUpaJ.js} +1 -1
  88. package/dist/client/assets/{connections-BaTC7PU0.js → connections-CRl6gHLy.js} +1 -1
  89. package/dist/client/assets/{decopilot-sse-pool-ByThbzqU.js → decopilot-sse-pool-rsXX73Cl.js} +1 -1
  90. package/dist/client/assets/{dialog-DJkXbQZT.js → dialog-CRMoLDMT.js} +1 -1
  91. package/dist/client/assets/{domain-settings-DKG85woG.js → domain-settings-DsBzNIMU.js} +1 -1
  92. package/dist/client/assets/{drawer-ChqpMUVm.js → drawer-DmZk9uWR.js} +1 -1
  93. package/dist/client/assets/{dropdown-menu-NXDJiYTh.js → dropdown-menu-BJCy0IUg.js} +1 -1
  94. package/dist/client/assets/{empty-state-BndtaAzK.js → empty-state-DxEZUCP-.js} +1 -1
  95. package/dist/client/assets/{extract-connection-data-KJQkw2wA.js → extract-connection-data-3JagziPe.js} +1 -1
  96. package/dist/client/assets/{file-explorer-BWBlF-B8.js → file-explorer-CS3QyTuA.js} +1 -1
  97. package/dist/client/assets/{form-CwGPiNYH.js → form-DBuGxIQE.js} +1 -1
  98. package/dist/client/assets/{general-DJFvfpj7.js → general-DUBMeBdj.js} +1 -1
  99. package/dist/client/assets/{github-repo-picker-B5bfjskF.js → github-repo-picker-BiNR57mS.js} +1 -1
  100. package/dist/client/assets/{hooks-wtnZ1lFJ.js → hooks-Dhewe61J.js} +1 -1
  101. package/dist/client/assets/{index-0Ol0nkKI.js → index-B0EQZ_zH.js} +5 -5
  102. package/dist/client/assets/{index-BXkgAQtp.js → index-Bl-dnwEg.js} +1 -1
  103. package/dist/client/assets/{index-zBFC3Ngw.js → index-CYw8wHBB.js} +3 -3
  104. package/dist/client/assets/{index-Dst3WiD5.js → index-CuxwWR5m.js} +1 -1
  105. package/dist/client/assets/{index-klCFESPh.js → index-D1kL2TEg.js} +1 -1
  106. package/dist/client/assets/{index-F6P1uN0u.js → index-D3ZnIYSA.js} +1 -1
  107. package/dist/client/assets/{index-HILL3lRy.js → index-DErf9_mi.js} +1 -1
  108. package/dist/client/assets/{index-IAfVL8eZ.js → index-Dp_DdJk3.js} +1 -1
  109. package/dist/client/assets/{index-B4rN3FZ1.js → index-DtklJJSJ.js} +1 -1
  110. package/dist/client/assets/{index-D0Pjo53o.js → index-a7TF5P06.js} +1 -1
  111. package/dist/client/assets/{index-DLbviL_Z.js → index-g0cuPRKZ.js} +3 -3
  112. package/dist/client/assets/{index-redirect-C48EFTzd.js → index-redirect-sU94cagT.js} +1 -1
  113. package/dist/client/assets/{input-DmBP41cx.js → input-C0Sy_LKI.js} +1 -1
  114. package/dist/client/assets/{integration-icon-DvGxbUK9.js → integration-icon-Ba4VB8H0.js} +1 -1
  115. package/dist/client/assets/{invite-member-dialog-CRWATpkI.js → invite-member-dialog-DZScsdXj.js} +1 -1
  116. package/dist/client/assets/{label-DEJ5wCpT.js → label-DKCsCA2G.js} +1 -1
  117. package/dist/client/assets/{layout-BF-8v5L-.js → layout-BDIHcZ4c.js} +1 -1
  118. package/dist/client/assets/{login-DlofCdb7.js → login-CFSq5D_f.js} +1 -1
  119. package/dist/client/assets/{mcp-oauth-mp65WTE_.js → mcp-oauth-BfX7Kmjr.js} +1 -1
  120. package/dist/client/assets/{members-BexJZpeI.js → members-BxMazCHM.js} +1 -1
  121. package/dist/client/assets/{monaco-editor-BkyBcYf_.js → monaco-editor-C8zvcXPr.js} +1 -1
  122. package/dist/client/assets/{monitoring-stats-row-D32rNr8j.js → monitoring-stats-row-DsUGPEdp.js} +1 -1
  123. package/dist/client/assets/{multi-select-B9v1ELjK.js → multi-select-9rQEC8tR.js} +1 -1
  124. package/dist/client/assets/{oauth-callback-CswDh7jg.js → oauth-callback-WhZ1Lojh.js} +1 -1
  125. package/dist/client/assets/{oauth-callback-ai-provider-B2JdH6l_.js → oauth-callback-ai-provider-B877WrSd.js} +1 -1
  126. package/dist/client/assets/{onboarding-Caj4Tud1.js → onboarding-DQoj1RVg.js} +1 -1
  127. package/dist/client/assets/{org-layout-DaRExWgD.js → org-layout-CXTDPc3M.js} +1 -1
  128. package/dist/client/assets/{organization-choice-B47ddJgx.js → organization-choice-hsp_6WWI.js} +1 -1
  129. package/dist/client/assets/{orgs-B4PLlrTE.js → orgs-BE4cLt0v.js} +1 -1
  130. package/dist/client/assets/{page-seo-form-BqEYX0wM.js → page-seo-form-vWa5383U.js} +1 -1
  131. package/dist/client/assets/{popover-cQpARc1B.js → popover-BjHXCFyF.js} +1 -1
  132. package/dist/client/assets/{post-editor-hEOosFU9.js → post-editor-UWWBRnPP.js} +1 -1
  133. package/dist/client/assets/{primitives-C8-aIFLX.js → primitives-DTngMtK_.js} +1 -1
  134. package/dist/client/assets/{profile-BrfQ5SOX.js → profile-Caubt-nW.js} +1 -1
  135. package/dist/client/assets/project-app-view-DOP_NiNL.js +1 -0
  136. package/dist/client/assets/record-editor-CUVq7gs2.js +1 -0
  137. package/dist/client/assets/{redirect-editor-B_y3RQhp.js → redirect-editor-B30s457F.js} +1 -1
  138. package/dist/client/assets/registry-DZyWrlkO.js +2 -0
  139. package/dist/client/assets/{registry-layout-PbAf4JJU.js → registry-layout-KW8uafd5.js} +1 -1
  140. package/dist/client/assets/{reports-DHTYM6PK.js → reports-DBhv0-Oq.js} +1 -1
  141. package/dist/client/assets/{require-capability-DVH68zdW.js → require-capability-CJo1geEc.js} +1 -1
  142. package/dist/client/assets/{required-auth-layout-DbfJ7L_G.js → required-auth-layout-CjW1yEh4.js} +1 -1
  143. package/dist/client/assets/{reset-password-B6XK2v77.js → reset-password-Dv467Owi.js} +1 -1
  144. package/dist/client/assets/{roles-BA0oNDGV.js → roles-Dc2HT9LU.js} +1 -1
  145. package/dist/client/assets/{search-input-wqrfyYM9.js → search-input-Bu5stt0T.js} +1 -1
  146. package/dist/client/assets/{secrets-CQM2Cn-9.js → secrets-Jm4A7Imt.js} +1 -1
  147. package/dist/client/assets/{sections-editor-B9LCpoOW.js → sections-editor-5vBrQ8ha.js} +1 -1
  148. package/dist/client/assets/{select-CVo1V0HA.js → select-DF7qtXdV.js} +1 -1
  149. package/dist/client/assets/{select-model-w_5d24-o.js → select-model-B-0dG4JK.js} +1 -1
  150. package/dist/client/assets/{self-tool-result-DBg9EQt1.js → self-tool-result-CIc_qRlq.js} +1 -1
  151. package/dist/client/assets/{seo-editor-D64kZrAJ.js → seo-editor-ClATq1gO.js} +1 -1
  152. package/dist/client/assets/{settings-layout-Cm5IlFq1.js → settings-layout-CwXm9VAj.js} +1 -1
  153. package/dist/client/assets/{settings-section-XtYeHid9.js → settings-section-Blk-Rdpm.js} +1 -1
  154. package/dist/client/assets/{shell-controls-CPB4buaC.js → shell-controls-BRTUkXt6.js} +1 -1
  155. package/dist/client/assets/{shell-layout-eCgEsAfR.js → shell-layout-ByK7aPpx.js} +1 -1
  156. package/dist/client/assets/{sidebar-BWaCIkOj.js → sidebar-BVMu87W6.js} +1 -1
  157. package/dist/client/assets/{skeleton-DescEPe9.js → skeleton-BqwGAV7Y.js} +1 -1
  158. package/dist/client/assets/{spinner-DkGJFOak.js → spinner-BLMAonWH.js} +1 -1
  159. package/dist/client/assets/{sso-CtrR9K4k.js → sso-BcTV8NEq.js} +1 -1
  160. package/dist/client/assets/store-registry-MfQDLydd.js +2 -0
  161. package/dist/client/assets/{store-DF_Z36kx.js → store-tfV1mYT-.js} +1 -1
  162. package/dist/client/assets/{studio-tools-BzgqJWUt.js → studio-tools-DsbggKAR.js} +1 -1
  163. package/dist/client/assets/{switch-mv_dZPIY.js → switch-CeKoKOvB.js} +1 -1
  164. package/dist/client/assets/{tab-id-8mx7M716.js → tab-id-DrdX3fEb.js} +1 -1
  165. package/dist/client/assets/{table-B7puz_Gx.js → table-BpTVBClg.js} +1 -1
  166. package/dist/client/assets/{tabs-WWjEtXeC.js → tabs-qOAPRKb9.js} +1 -1
  167. package/dist/client/assets/{textarea-DK6P2U1j.js → textarea-1IWNYdny.js} +1 -1
  168. package/dist/client/assets/{toggle-group-B6DYhVlP.js → toggle-group-C9RIQ91L.js} +1 -1
  169. package/dist/client/assets/{toolbar-C886lUvS.js → toolbar-CIgxB38M.js} +1 -1
  170. package/dist/client/assets/{tooltip-DP1YDrGX.js → tooltip-tmjJHakE.js} +1 -1
  171. package/dist/client/assets/{use-ai-providers-Hp7cs_bR.js → use-ai-providers-DgcskZoe.js} +1 -1
  172. package/dist/client/assets/{use-automations-BezLFTHV.js → use-automations-B5iv0CU_.js} +1 -1
  173. package/dist/client/assets/{use-autosave-D4oqsIal.js → use-autosave-DQN3zIOo.js} +1 -1
  174. package/dist/client/assets/{use-capability-CfU2vLkF.js → use-capability-BcEjShCB.js} +1 -1
  175. package/dist/client/assets/{use-clock-tick-DKJvWpYc.js → use-clock-tick-BbejDzLo.js} +1 -1
  176. package/dist/client/assets/{use-connection-BVmhJzRV.js → use-connection-D-Bh7uWs.js} +1 -1
  177. package/dist/client/assets/{use-copy-Dm05kVsf.js → use-copy-DlgzgAM-.js} +1 -1
  178. package/dist/client/assets/{use-create-virtual-mcp-BClnDliC.js → use-create-virtual-mcp-Df0M9kV3.js} +1 -1
  179. package/dist/client/assets/{use-debounced-autosave-BPQoZ4C2.js → use-debounced-autosave-F60fN1GB.js} +1 -1
  180. package/dist/client/assets/{use-debounced-value-BPdcdQ0C.js → use-debounced-value-WfWm3nmt.js} +1 -1
  181. package/dist/client/assets/{use-deco-credits-C4nDwiQo.js → use-deco-credits-pxGsf_yf.js} +1 -1
  182. package/dist/client/assets/{use-decopilot-events-d8cDirm7.js → use-decopilot-events-5pm47S0T.js} +1 -1
  183. package/dist/client/assets/{use-delete-connection-DvPrIDFL.js → use-delete-connection-DffoPCNb.js} +1 -1
  184. package/dist/client/assets/{use-deployment-admin-Dr1neRAI.js → use-deployment-admin-CxgYO_tf.js} +1 -1
  185. package/dist/client/assets/{use-file-configs-DKSqeG-_.js → use-file-configs-DwM8E-kQ.js} +1 -1
  186. package/dist/client/assets/{use-infinite-scroll-DNDoAxcd.js → use-infinite-scroll-p6WCwEcJ.js} +1 -1
  187. package/dist/client/assets/{use-join-requests-BJ-JrmO6.js → use-join-requests--CbwmYp7.js} +1 -1
  188. package/dist/client/assets/{use-mcp-auth-status-BNWPRBI6.js → use-mcp-auth-status-C2o05Ev8.js} +1 -1
  189. package/dist/client/assets/{use-mcp-client-DMfaiYCA.js → use-mcp-client-y7fi29FG.js} +1 -1
  190. package/dist/client/assets/{use-mcp-tools-C-D_ibCx.js → use-mcp-tools-Cm95XUwC.js} +1 -1
  191. package/dist/client/assets/{use-members-B3T7E_g4.js → use-members-D6WGG3t5.js} +1 -1
  192. package/dist/client/assets/{use-mobile-sh69srhZ.js → use-mobile-CzdMbVrc.js} +1 -1
  193. package/dist/client/assets/{use-navigate-to-agent-dP9kXCRO.js → use-navigate-to-agent-BgImaYtF.js} +1 -1
  194. package/dist/client/assets/{use-org-auth-client-D7_2NGpb.js → use-org-auth-client-DGr65Zua.js} +1 -1
  195. package/dist/client/assets/{use-org-sso-ColVpJzo.js → use-org-sso--PZeqw9Y.js} +1 -1
  196. package/dist/client/assets/{use-organization-roles-DxaJdwA6.js → use-organization-roles-DYCciC4e.js} +1 -1
  197. package/dist/client/assets/{use-organization-settings-61qkSzWB.js → use-organization-settings-Db4PFBW1.js} +1 -1
  198. package/dist/client/assets/{use-registry-connections-BOuoMWXm.js → use-registry-connections-DKNMRzqT.js} +1 -1
  199. package/dist/client/assets/{use-secrets-Cr_1k2bv.js → use-secrets-CWQ-gOIe.js} +1 -1
  200. package/dist/client/assets/{use-status-sounds-DTjCjOkC.js → use-status-sounds-DZOHVmOu.js} +1 -1
  201. package/dist/client/assets/{use-tags-B6gKW3qV.js → use-tags-Brt6znZZ.js} +1 -1
  202. package/dist/client/assets/{use-view-mode-Dcd7K8GJ.js → use-view-mode-CQBozTt6.js} +1 -1
  203. package/dist/client/assets/{use-virtual-mcp-B0Eqa6PX.js → use-virtual-mcp-CVWjZ3IK.js} +1 -1
  204. package/dist/client/assets/useInfiniteQuery-bBb1MegH.js +1 -0
  205. package/dist/client/assets/{useQueries-mFPM8jTF.js → useQueries-BT8ypNi1.js} +1 -1
  206. package/dist/client/assets/{useRouterState-CpnGH_up.js → useRouterState-CYjxLIhd.js} +1 -1
  207. package/dist/client/assets/useSuspenseInfiniteQuery-KOXQpKrP.js +1 -0
  208. package/dist/client/assets/{users-Di6LylTF.js → users-DlX2IpzE.js} +1 -1
  209. package/dist/client/assets/{variant-calendar-9LpubqXP.js → variant-calendar-Cfky9rYT.js} +1 -1
  210. package/dist/client/assets/{view-mode-toggle-FL6B2RjX.js → view-mode-toggle-Crs8S333.js} +1 -1
  211. package/dist/client/index.html +1 -1
  212. package/dist/server/cli.js +2 -2
  213. package/dist/server/migrate.js +1 -1
  214. package/dist/server/server.js +2 -2
  215. package/package.json +1 -1
  216. package/dist/client/assets/project-app-view-CU_ftwL3.js +0 -1
  217. package/dist/client/assets/record-editor-CGBxLLB6.js +0 -1
  218. package/dist/client/assets/registry-CXRq9HKd.js +0 -2
  219. package/dist/client/assets/store-registry-dBZoiSD6.js +0 -2
  220. package/dist/client/assets/useInfiniteQuery-Bu2J1rzT.js +0 -1
  221. package/dist/client/assets/useSuspenseInfiniteQuery-LDQyEl1f.js +0 -1
@@ -1 +1 @@
1
- import{c as K,b as tt,r as et,j as s,m as ot,B as nt}from"./index-DLbviL_Z.js";import{x as vt,$ as dt,h as yt}from"./agent-icon-CcIwEqFb.js";import{i as Tt}from"./ChevronRight-TUDmolU_.js";import{L as jt}from"./label-DEJ5wCpT.js";import{n as ft}from"./automation-runs-IMkZqAbP.js";import{S as Nt}from"./switch-mv_dZPIY.js";import{T as wt,c as kt,a as Mt}from"./tooltip-DP1YDrGX.js";import{V as _t}from"./view-mode-toggle-FL6B2RjX.js";import"./AlertCircle-Ch8mO3YQ.js";import"./Tool01-DoxPqQII.js";import"./ArrowUp-BnKF068f.js";import"./Settings02-BSHMAvYU.js";import"./Tool02-D_pNjGh6.js";import"./XCircle-CWrYF61N.js";import"./ArrowUpRight-a2GoyjEM.js";import"./TrendUp01-2zErLTBi.js";import"./ZapSquare-D1NeF16j.js";import"./Users03-C9kjDYas.js";import"./CheckCircle-B03jCIzy.js";import"./Check-D5IFtDAd.js";import"./ChevronDown-zLBvmB9W.js";import"./ChevronUp-BTc8FGqD.js";import"./DotsVertical-BGBkY7Q1.js";import"./Stars02-DIWS6S4V.js";import"./Copy01-M8tscsd7.js";import"./CpuChip01-D5zP5Oiw.js";import"./Eye-BhQfsF8j.js";import"./FilterLines-wVzvgmme.js";import"./Star01-yAvVK7_Z.js";import"./Palette-Cbuuj4Lt.js";import"./SwitchHorizontal01-Dwal8wH9.js";import"./HardDrive-p_7f-6_R.js";import"./Key01-9KYvjuxW.js";import"./LayoutLeft-ChcLbs2q.js";import"./LinkExternal01-CcaTawvF.js";import"./LogOut01-PrD9B1AL.js";import"./Monitor01-DvhrvQKi.js";import"./Sun-DkcyJn3E.js";import"./Play-mjSe-io-.js";import"./Plus-Dd6w_Sih.js";import"./SearchLg-BuHLTpiQ.js";import"./SearchMd-eXao8uJK.js";import"./Shield01-B4Xogb21.js";import"./Stars01-2VmMj7yj.js";import"./Trash01-BDEWF8P6.js";import"./Upload01-79XT2p-2.js";import"./User01-BvpCHWwg.js";import"./Users01-B7zbI4KU.js";import"./XClose-DK2KHpN1.js";import"./X-C6ZNAGXV.js";import"./Zap-BsWR2ahn.js";import"./select-CVo1V0HA.js";import"./useInfiniteQuery-Bu2J1rzT.js";import"./use-infinite-scroll-DNDoAxcd.js";import"./use-connection-BVmhJzRV.js";import"./use-mcp-client-DMfaiYCA.js";import"./auth-Dq3hmv1S.js";import"./use-virtual-mcp-B0Eqa6PX.js";import"./card-DceL6fJC.js";import"./sidebar-BWaCIkOj.js";import"./use-mobile-sh69srhZ.js";import"./table-B7puz_Gx.js";import"./empty-state-BndtaAzK.js";import"./use-members-B3T7E_g4.js";import"./use-org-auth-client-D7_2NGpb.js";import"./use-clock-tick-DKJvWpYc.js";import"./use-automations-BezLFTHV.js";import"./studio-tools-BzgqJWUt.js";import"./useSuspenseInfiniteQuery-LDQyEl1f.js";import"./avatar-cURFoY0t.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-Dm05kVsf.js";import"./dialog-DJkXbQZT.js";import"./tab-id-8mx7M716.js";import"./hooks-wtnZ1lFJ.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-ByThbzqU.js";import"./chat-context-EkX4H3Ta.js";import"./use-ai-providers-Hp7cs_bR.js";import"./use-decopilot-events-d8cDirm7.js";import"./use-organization-settings-61qkSzWB.js";import"./monaco-editor-BkyBcYf_.js";import"./spinner-DkGJFOak.js";import"./index-D0Pjo53o.js";import"./calendar-BnlM7BTK.js";import"./shell-layout-eCgEsAfR.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DbfJ7L_G.js";import"./use-org-sso-ColVpJzo.js";import"./integration-icon-DvGxbUK9.js";import"./use-navigate-to-agent-dP9kXCRO.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-BFUY9bdD.js";import"./form-CwGPiNYH.js";import"./input-DmBP41cx.js";const Et=new Set(["website/matchers/date.ts","$live/matchers/MatchDate.ts"]),St=new Set(["website/matchers/multi.ts","$live/matchers/MatchMulti.ts"]),Ct=new Date(-864e13),Dt=new Date(864e13),At=/\/flags\/multivariate(?:\/[^/]+)?\.ts$/,$t=/\/flags\/multivariate\.ts$/;function Lt(e){let t=e;t.startsWith("pages-")&&(t=t.slice(6).replace(/-\d+$/,""));try{t=decodeURIComponent(t)}catch{}return t}function Rt(e){if(!e||typeof e!="object")return null;const{start:t,end:n}=e,r=typeof t=="string",i=typeof n=="string";if(!r&&!i)return null;const o=r?new Date(t):Ct,a=i?new Date(n):Dt;return Number.isNaN(o.getTime())||Number.isNaN(a.getTime())||r&&i&&a.getTime()<=o.getTime()?null:{start:o,end:a,openStart:!r,openEnd:!i}}function pt(e,t){if(!e||typeof e!="object")return;const n=e.__resolveType;if(typeof n=="string"){if(Et.has(n)){const r=Rt(e);r&&t.push(r);return}if(St.has(n)){const r=e.matchers;if(Array.isArray(r))for(const i of r)pt(i,t)}}}function Ot(e){if(!e||typeof e!="object")return!1;const t=e.__resolveType;if(typeof t!="string"||!At.test(t))return!1;const n=e.variants;return Array.isArray(n)}function It(e){if(typeof e=="string"){const m=e.trim();if(m.length===0)return null;try{const c=new URL(m).pathname.split("/").filter(Boolean),d=c[c.length-1];if(d)return decodeURIComponent(d)}catch{}return m.length>80?`${m.slice(0,77)}…`:m}if(!e||typeof e!="object")return null;const t=e,n=t.config,i=t.desktop?.media,o=[t.title,t.name,t.label,t.alt,n?.title,n?.name,n?.typeAlert?.message,i?.alt,Array.isArray(t.matcher)?t.matcher[0]:void 0];for(const m of o)if(typeof m=="string"&&m.trim().length>0)return m.trim();const a=t.__resolveType;if(typeof a=="string"){const l=(a.split("/").pop()??a).replace(/\.(tsx?|jsx?)$/i,"");if(l.length>0)return l}return null}function Pt(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];typeof r=="number"?t.length>0?t[t.length-1]+=`[${r}]`:t.push(`[${r}]`):t.push(r)}return t.join(" · ")}function X(e,t,n,r,i){if(Ot(e)){const o=e.variants,a=e.__resolveType,m=$t.test(a)?"":Pt(r);o.forEach((l,c)=>{if(!l||typeof l!="object")return;const d=l,p=[];if(pt(d.rule,p),p.length===0)return;const x=It(d.value)??(m||n);for(const h of p)i.push({blockKey:t,blockLabel:n,innerPath:m,variantIndex:c,start:h.start,end:h.end,openStart:h.openStart,openEnd:h.openEnd,label:x,flagResolveType:a})});for(let l=0;l<o.length;l++){const c=o[l];c&&typeof c=="object"&&X(c.value,t,n,[...r,"variants",l,"value"],i)}return}if(Array.isArray(e)){for(let o=0;o<e.length;o++)X(e[o],t,n,[...r,o],i);return}if(e&&typeof e=="object")for(const[o,a]of Object.entries(e))o!=="__resolveType"&&X(a,t,n,[...r,o],i)}function Ft(e){if(!e)return[];const t=[];for(const[n,r]of Object.entries(e))X(r,n,Lt(n),[],t);return t.sort((n,r)=>n.start.getTime()-r.start.getTime())}function Vt(e){const t=[...new Set(e)].sort(),n=new Map;return t.forEach((r,i)=>{const o=i*137.508%360;n.set(r,{bg:`oklch(0.62 0.14 ${o})`,text:"white",border:`oklch(0.50 0.14 ${o})`})}),n}const Ht={bg:"oklch(0.62 0.14 0)",text:"white",border:"oklch(0.50 0.14 0)"};function ut(e,t){return e.get(t)??Ht}const Bt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ht=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=1440*60*1e3;function B(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function xt(e){return new Date(e.getFullYear(),e.getMonth(),1)}function G(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}function Z(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function st(e,t){return Math.round((B(e).getTime()-B(t).getTime())/gt)}function Wt(e){const t=(e.getTime()-B(e).getTime())/gt;return Math.min(Math.max(t,0),1)}function it(e,t){return st(e,t)+Wt(e)}function zt(e){const t=Z(e,-e.getDay()),n=[];for(let r=0;r<6;r++){const i=[];for(let o=0;o<7;o++)i.push(Z(t,r*7+o));n.push(i)}for(;n.length>0&&n[n.length-1].every(r=>r.getMonth()!==e.getMonth());)n.pop();return n}function Ut(e,t){const n=B(e[0]),r=Z(n,7),i=n.getTime(),o=r.getTime(),a=[];for(const c of t){const d=B(c.start),p=B(c.end);if(p.getTime()<n.getTime()||d.getTime()>=r.getTime())continue;const u=d.getTime()<n.getTime()?n:d,x=p.getTime()>=r.getTime()?Z(r,-1):p,h=st(u,n),g=st(x,u)+1;if(g<=0)continue;const b=Math.max(c.start.getTime(),i),j=Math.min(c.end.getTime(),o),v=it(new Date(b),n),f=Math.max(it(new Date(j),n)-v,0);f<=0||a.push({variant:c,startCol:h,span:g,leftUnits:v,widthUnits:f})}a.sort((c,d)=>c.startCol-d.startCol||d.span-c.span||c.variant.blockKey.localeCompare(d.variant.blockKey));const m=[],l=[];for(const c of a){let d=m.findIndex(p=>p<=c.startCol);d===-1&&(d=m.length,m.push(0)),m[d]=c.startCol+c.span,l.push({...c,lane:d})}return l}const at=new Intl.DateTimeFormat("en",{dateStyle:"medium",timeStyle:"short"});function Yt(e,t){const n=e.openStart?t("sandbox.variantCalendar.always"):at.format(e.start),r=e.openEnd?t("sandbox.variantCalendar.ongoing"):at.format(e.end);return`${n} → ${r}`}function Gt(e){const t=K.c(18),{variant:n}=e,r=tt();let i;t[0]!==n.blockLabel?(i=s.jsx("div",{className:"font-semibold",children:n.blockLabel}),t[0]=n.blockLabel,t[1]=i):i=t[1];let o;t[2]!==n.innerPath?(o=n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.innerPath}),t[2]=n.innerPath,t[3]=o):o=t[3];let a;t[4]!==n.blockLabel||t[5]!==n.innerPath||t[6]!==n.label?(a=n.label!==n.blockLabel&&n.label!==n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.label}),t[4]=n.blockLabel,t[5]=n.innerPath,t[6]=n.label,t[7]=a):a=t[7];let m;t[8]!==r||t[9]!==n?(m=Yt(n,r),t[8]=r,t[9]=n,t[10]=m):m=t[10];let l;t[11]!==m?(l=s.jsx("div",{className:"mt-1",children:m}),t[11]=m,t[12]=l):l=t[12];let c;return t[13]!==i||t[14]!==o||t[15]!==a||t[16]!==l?(c=s.jsx(Mt,{children:s.jsxs("div",{className:"text-xs",children:[i,o,a,l]})}),t[13]=i,t[14]=o,t[15]=a,t[16]=l,t[17]=c):c=t[17],c}const lt=16;function Kt(e,t){const n=e?"transparent":"#000 0",r=t?"transparent":"#000 100%";if(!(!e&&!t))return`linear-gradient(to right, ${n}, #000 ${lt}px, #000 calc(100% - ${lt}px), ${r})`}function bt(e){const t=K.c(26),{variant:n,color:r,style:i,children:o,fadeStart:a,fadeEnd:m}=e,l=a===void 0?!1:a,c=m===void 0?!1:m;let d;t[0]!==c||t[1]!==l?(d=Kt(l,c),t[0]=c,t[1]=l,t[2]=d):d=t[2];const p=d;let u;t[3]!==l?(u=l&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},t[3]=l,t[4]=u):u=t[4];let x;t[5]!==c?(x=c&&{borderTopRightRadius:0,borderBottomRightRadius:0},t[5]=c,t[6]=x):x=t[6];let h;t[7]!==p?(h=p&&{maskImage:p,WebkitMaskImage:p},t[7]=p,t[8]=h):h=t[8];let g;t[9]!==r.bg||t[10]!==r.text||t[11]!==i||t[12]!==u||t[13]!==x||t[14]!==h?(g={background:r.bg,color:r.text,borderRadius:4,...u,...x,...h,...i},t[9]=r.bg,t[10]=r.text,t[11]=i,t[12]=u,t[13]=x,t[14]=h,t[15]=g):g=t[15];let b;t[16]!==o?(b=s.jsx("span",{className:"truncate",children:o}),t[16]=o,t[17]=b):b=t[17];let j;t[18]!==g||t[19]!==b?(j=s.jsx(wt,{asChild:!0,children:s.jsx("div",{className:"absolute flex items-center px-2 text-[11px] font-medium truncate cursor-default",style:g,children:b})}),t[18]=g,t[19]=b,t[20]=j):j=t[20];let v;t[21]!==n?(v=s.jsx(Gt,{variant:n}),t[21]=n,t[22]=v):v=t[22];let f;return t[23]!==v||t[24]!==j?(f=s.jsxs(kt,{children:[j,v]}),t[23]=v,t[24]=j,t[25]=f):f=t[25],f}function Zn(e){const t=K.c(72),{decofile:n}=e,r=tt(),[i,o]=et.useState("calendar"),[a,m]=et.useState(Xt),[l,c]=et.useState(!1);let d,p,u;if(t[0]!==n||t[1]!==l){const P=Ft(n);d=P.filter(Qt).length,u=l?P:P.filter(qt),p=Vt(u.map(Jt)),t[0]=n,t[1]=l,t[2]=d,t[3]=p,t[4]=u}else d=t[2],p=t[3],u=t[4];const x=p;let h;t[5]===Symbol.for("react.memo_cache_sentinel")?(h=()=>m(xt(new Date)),t[5]=h):h=t[5];const g=h;let b;t[6]!==i?(b=()=>m(P=>i==="calendar"?G(P,-1):G(P,-3)),t[6]=i,t[7]=b):b=t[7];const j=b;let v;t[8]!==i?(v=()=>m(P=>i==="calendar"?G(P,1):G(P,3)),t[8]=i,t[9]=v):v=t[9];const f=v;let y;t[10]!==r?(y=r("sandbox.variantCalendar.today"),t[10]=r,t[11]=y):y=t[11];let T;t[12]!==y?(T=s.jsx(nt,{variant:"outline",size:"sm",onClick:g,children:y}),t[12]=y,t[13]=T):T=t[13];let w;t[14]!==r?(w=r("sandbox.variantCalendar.previous"),t[14]=r,t[15]=w):w=t[15];let D;t[16]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(vt,{size:16}),t[16]=D):D=t[16];let k;t[17]!==j||t[18]!==w?(k=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:j,"aria-label":w,children:D}),t[17]=j,t[18]=w,t[19]=k):k=t[19];let M;t[20]!==r?(M=r("sandbox.variantCalendar.next"),t[20]=r,t[21]=M):M=t[21];let S;t[22]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Tt,{size:16}),t[22]=S):S=t[22];let A;t[23]!==f||t[24]!==M?(A=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:f,"aria-label":M,children:S}),t[23]=f,t[24]=M,t[25]=A):A=t[25];const $=ht[a.getMonth()];let C;t[26]!==a?(C=a.getFullYear(),t[26]=a,t[27]=C):C=t[27];let _;t[28]!==$||t[29]!==C?(_=s.jsxs("h2",{className:"ml-2 text-base font-semibold",children:[$," ",C]}),t[28]=$,t[29]=C,t[30]=_):_=t[30];let N;t[31]!==A||t[32]!==_||t[33]!==T||t[34]!==k?(N=s.jsxs("div",{className:"flex items-center gap-2",children:[T,k,A,_]}),t[31]=A,t[32]=_,t[33]=T,t[34]=k,t[35]=N):N=t[35];let L;t[36]!==d||t[37]!==l||t[38]!==r?(L=d>0&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nt,{id:"show-ongoing",checked:l,onCheckedChange:c}),s.jsx(jt,{htmlFor:"show-ongoing",className:"text-xs text-muted-foreground cursor-pointer",children:r("sandbox.variantCalendar.showOngoing",{count:d})})]}),t[36]=d,t[37]=l,t[38]=r,t[39]=L):L=t[39];let H;t[40]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(dt,{}),t[40]=H):H=t[40];let F;t[41]!==r?(F=r("sandbox.variantCalendar.calendarMode"),t[41]=r,t[42]=F):F=t[42];let E;t[43]!==F?(E={value:"calendar",icon:H,label:F},t[43]=F,t[44]=E):E=t[44];let W;t[45]===Symbol.for("react.memo_cache_sentinel")?(W=s.jsx(yt,{}),t[45]=W):W=t[45];let R;t[46]!==r?(R=r("sandbox.variantCalendar.timelineMode"),t[46]=r,t[47]=R):R=t[47];let O;t[48]!==R?(O={value:"timeline",icon:W,label:R},t[48]=R,t[49]=O):O=t[49];let I;t[50]!==E||t[51]!==O?(I=[E,O],t[50]=E,t[51]=O,t[52]=I):I=t[52];let V;t[53]!==I||t[54]!==i?(V=s.jsx(_t,{value:i,onValueChange:o,options:I}),t[53]=I,t[54]=i,t[55]=V):V=t[55];let z;t[56]!==L||t[57]!==V?(z=s.jsxs("div",{className:"flex items-center gap-4",children:[L,V]}),t[56]=L,t[57]=V,t[58]=z):z=t[58];let U;t[59]!==N||t[60]!==z?(U=s.jsxs("div",{className:"flex items-center justify-between px-4 h-12 border-b shrink-0",children:[N,z]}),t[59]=N,t[60]=z,t[61]=U):U=t[61];let Y;t[62]!==x||t[63]!==a||t[64]!==d||t[65]!==l||t[66]!==u||t[67]!==i?(Y=u.length===0?s.jsx(Zt,{hiddenOngoing:l?0:d}):i==="calendar"?s.jsx(ee,{monthStart:a,variants:u,colorMap:x}):s.jsx(oe,{monthStart:a,variants:u,colorMap:x}),t[62]=x,t[63]=a,t[64]=d,t[65]=l,t[66]=u,t[67]=i,t[68]=Y):Y=t[68];let q;return t[69]!==U||t[70]!==Y?(q=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[U,Y]}),t[69]=U,t[70]=Y,t[71]=q):q=t[71],q}function Jt(e){return e.blockKey}function qt(e){return!e.openEnd}function Qt(e){return e.openEnd}function Xt(){return xt(new Date)}function Zt(e){const t=K.c(4),{hiddenOngoing:n}=e,r=n===void 0?0:n,i=tt();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(dt,{size:24,className:"text-muted-foreground/60"}),t[0]=o):o=t[0];let a;return t[1]!==r||t[2]!==i?(a=s.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-sm text-muted-foreground p-6",children:[o,r>0?s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noDatedVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.hiddenOngoingVariants",{count:r})})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noScheduledVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.dateMatcherInfo")})]})]}),t[1]=r,t[2]=i,t[3]=a):a=t[3],a}const rt=20,ct=2,mt=28,te=6;function ee(e){const t=K.c(17),{monthStart:n,variants:r,colorMap:i}=e;let o,a,m,l,c;if(t[0]!==i||t[1]!==n||t[2]!==r){const u=zt(n),x=B(new Date);o=ft,c="flex-1 min-h-0",a="min-w-[840px]",t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("div",{className:"grid grid-cols-7 border-b text-xs text-muted-foreground sticky top-0 bg-background z-10",children:Bt.map(re)}),t[8]=m):m=t[8],l=u.map((h,g)=>{const b=Ut(h,r),j=b.reduce(ne,0),v=mt+j*(rt+ct)+8;return s.jsxs("div",{className:"grid grid-cols-7 relative border-b",style:{height:v},children:[h.map((f,y)=>{const T=f.getMonth()===n.getMonth(),w=f.getTime()===x.getTime();return s.jsx("div",{className:ot("border-r last:border-r-0 px-2 pt-1.5 text-xs",T?"bg-background":"bg-muted/30 text-muted-foreground"),children:s.jsx("span",{className:ot("inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1",w&&"bg-primary text-primary-foreground font-semibold"),children:f.getDate()})},y)}),b.map((f,y)=>{const T=ut(i,f.variant.blockKey),w=mt+f.lane*(rt+ct),D=f.leftUnits/7*100,k=f.widthUnits/7*100,M=f.variant.openStart&&g===0,S=f.variant.openEnd&&g===u.length-1;return s.jsxs(bt,{variant:f.variant,color:T,fadeStart:M,fadeEnd:S,style:{top:w,left:`calc(${D}% + 2px)`,width:`calc(${k}% - 4px)`,minWidth:te,height:rt},children:[f.variant.blockLabel,f.variant.label!==f.variant.blockLabel&&s.jsxs("span",{className:"opacity-70",children:[" · ",f.variant.label]})]},`${g}-${y}`)})]},g)}),t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=a,t[5]=m,t[6]=l,t[7]=c}else o=t[3],a=t[4],m=t[5],l=t[6],c=t[7];let d;t[9]!==a||t[10]!==m||t[11]!==l?(d=s.jsxs("div",{className:a,children:[m,l]}),t[9]=a,t[10]=m,t[11]=l,t[12]=d):d=t[12];let p;return t[13]!==o||t[14]!==c||t[15]!==d?(p=s.jsx(o,{className:c,children:d}),t[13]=o,t[14]=c,t[15]=d,t[16]=p):p=t[16],p}function ne(e,t){return Math.max(e,t.lane+1)}function re(e){return s.jsx("div",{className:"px-2 py-2 text-center uppercase tracking-wide",children:e},e)}const Q=4,se=32,J=240;function oe(e){const t=K.c(23),{monthStart:n,variants:r,colorMap:i}=e,o=n,a=G(n,Q),m=new Date,l=new Map;for(const _ of r){const N=l.get(_.blockKey)??[];N.push(_),l.set(_.blockKey,N)}const c=Array.from(l.entries()).sort(le),d=a.getTime()-o.getTime(),p=_=>(Math.max(o.getTime(),Math.min(a.getTime(),_.getTime()))-o.getTime())/d*100;let u;t[0]!==o?(u=(_,N)=>G(o,N),t[0]=o,t[1]=u):u=t[1];const x=Array.from({length:Q},u),h=m.getTime()>=o.getTime()&&m.getTime()<=a.getTime()?p(m):null,g=tt(),b=ft,j="flex-1 min-h-0",v="min-w-[900px] relative";let f;t[2]===Symbol.for("react.memo_cache_sentinel")?(f={width:J},t[2]=f):f=t[2];let y;t[3]!==g?(y=g("sandbox.variantCalendar.variantBlock"),t[3]=g,t[4]=y):y=t[4];let T;t[5]!==y?(T=s.jsx("div",{className:"shrink-0 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r",style:f,children:y}),t[5]=y,t[6]=T):T=t[6];let w;t[7]===Symbol.for("react.memo_cache_sentinel")?(w={gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},t[7]=w):w=t[7];const D=x.map(ae);let k;t[8]!==D?(k=s.jsx("div",{className:"flex-1 grid",style:w,children:D}),t[8]=D,t[9]=k):k=t[9];let M;t[10]!==T||t[11]!==k?(M=s.jsxs("div",{className:"flex border-b sticky top-0 bg-background z-10",children:[T,k]}),t[10]=T,t[11]=k,t[12]=M):M=t[12];let S;t[13]!==g||t[14]!==h?(S=h!==null&&s.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70 z-[5]",style:{left:`calc(${J}px + (100% - ${J}px) * ${h} / 100)`},children:s.jsx("span",{className:"absolute -top-0.5 -translate-x-1/2 rounded-sm bg-primary px-1.5 py-px text-[10px] font-medium text-primary-foreground",children:g("sandbox.variantCalendar.todayLabel")})}),t[13]=g,t[14]=h,t[15]=S):S=t[15];const A=c.map(_=>{const[N,L]=_,H=ut(i,N),F=L[0]?.blockLabel??N;return s.jsxs("div",{children:[s.jsx("div",{className:"flex items-center bg-muted/40 border-b text-xs font-semibold uppercase tracking-wide text-muted-foreground",style:{height:28},children:s.jsx("div",{className:"px-3 truncate",style:{width:J},children:F})}),L.map((E,W)=>s.jsxs("div",{className:"flex border-b items-center",style:{height:se},children:[s.jsxs("div",{className:"flex items-center gap-2 px-3 text-sm border-r shrink-0",style:{width:J},children:[s.jsx("span",{className:"inline-block h-2 w-2 rounded-full shrink-0",style:{background:H.bg}}),s.jsx("span",{className:"truncate text-foreground/80",children:E.label})]}),s.jsxs("div",{className:"relative flex-1 h-full",children:[s.jsx("div",{className:"absolute inset-0 grid",style:{gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},children:x.map(ie)}),(()=>{const R=Math.max(E.start.getTime(),o.getTime()),O=Math.min(E.end.getTime(),a.getTime());if(O<=R)return null;const I=p(new Date(R)),V=p(new Date(O))-I;return s.jsx(bt,{variant:E,color:H,fadeStart:E.openStart,fadeEnd:E.openEnd,style:{top:"50%",transform:"translateY(-50%)",left:`${I}%`,width:`calc(${V}% - 2px)`,height:22},children:E.label})})()]})]},W))]},N)});let $;t[16]!==M||t[17]!==S||t[18]!==A?($=s.jsxs("div",{className:v,children:[M,S,A]}),t[16]=M,t[17]=S,t[18]=A,t[19]=$):$=t[19];let C;return t[20]!==b||t[21]!==$?(C=s.jsx(b,{className:j,children:$}),t[20]=b,t[21]=$,t[22]=C):C=t[22],C}function ie(e,t){return s.jsx("div",{className:"border-r last:border-r-0 border-border/40"},t)}function ae(e,t){return s.jsxs("div",{className:"px-2 py-2 text-xs uppercase tracking-wide text-muted-foreground border-r last:border-r-0",children:[ht[e.getMonth()]?.slice(0,3)," ",e.getFullYear()]},t)}function le(e,t){return e[0].localeCompare(t[0])}export{Zn as VariantCalendar};
1
+ import{c as K,b as tt,r as et,j as s,m as ot,B as nt}from"./index-g0cuPRKZ.js";import{x as vt,$ as dt,h as yt}from"./agent-icon-CskqZ_sv.js";import{i as Tt}from"./ChevronRight-D_V9QqeR.js";import{L as jt}from"./label-DKCsCA2G.js";import{n as ft}from"./automation-runs-C07Taw7M.js";import{S as Nt}from"./switch-CeKoKOvB.js";import{T as wt,c as kt,a as Mt}from"./tooltip-tmjJHakE.js";import{V as _t}from"./view-mode-toggle-Crs8S333.js";import"./AlertCircle-Ppf_Ku5j.js";import"./Tool01-CAAqCxPN.js";import"./ArrowUp-DwYb3ImC.js";import"./Settings02-BdnladeZ.js";import"./Tool02-C2CWQ2Bx.js";import"./XCircle-BIQ1gZEZ.js";import"./ArrowUpRight-CalIWHlU.js";import"./TrendUp01-CFGXkagE.js";import"./ZapSquare-Bf4IFVK5.js";import"./Users03-C3gOU7K5.js";import"./CheckCircle-B0hTk1HK.js";import"./Check-CaGCohJ4.js";import"./ChevronDown-DhQOqv8y.js";import"./ChevronUp-CbtciMCp.js";import"./DotsVertical-DF6emoXy.js";import"./Stars02-lgbJztMs.js";import"./Copy01-x5_EyVs5.js";import"./CpuChip01-uyPm36RB.js";import"./Eye-DdJoqxVZ.js";import"./FilterLines-0LP6Yqd6.js";import"./Star01-ZV9zdbu_.js";import"./Palette-cjhK6yH0.js";import"./SwitchHorizontal01-K04oqscl.js";import"./HardDrive-Xjn63XK5.js";import"./Key01-BooDgQ9_.js";import"./LayoutLeft-CzG_GBDV.js";import"./LinkExternal01-Bu6zmey-.js";import"./LogOut01-C1mq8-V8.js";import"./Monitor01-CEtfvPFr.js";import"./Sun-BWrdE0n8.js";import"./Play-DLZUUQCo.js";import"./Plus-mjTHiasb.js";import"./SearchLg-DZPjlX6b.js";import"./SearchMd-ABT6b7Cr.js";import"./Shield01-BuGvGbim.js";import"./Stars01-CLQDzvHn.js";import"./Trash01-Ca6Tymc3.js";import"./Upload01-BjjauAMf.js";import"./User01-B5HWYPeH.js";import"./Users01-BDrBnpcx.js";import"./XClose-BCuFActY.js";import"./X-BPKQhmen.js";import"./Zap-t3UzfbWk.js";import"./select-DF7qtXdV.js";import"./useInfiniteQuery-bBb1MegH.js";import"./use-infinite-scroll-p6WCwEcJ.js";import"./use-connection-D-Bh7uWs.js";import"./use-mcp-client-y7fi29FG.js";import"./auth-B9UXAN00.js";import"./use-virtual-mcp-CVWjZ3IK.js";import"./card-CbNSsNWr.js";import"./sidebar-BVMu87W6.js";import"./use-mobile-CzdMbVrc.js";import"./table-BpTVBClg.js";import"./empty-state-DxEZUCP-.js";import"./use-members-D6WGG3t5.js";import"./use-org-auth-client-DGr65Zua.js";import"./use-clock-tick-BbejDzLo.js";import"./use-automations-B5iv0CU_.js";import"./studio-tools-DsbggKAR.js";import"./useSuspenseInfiniteQuery-KOXQpKrP.js";import"./avatar-DqywwqOo.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-DlgzgAM-.js";import"./dialog-CRMoLDMT.js";import"./tab-id-DrdX3fEb.js";import"./hooks-Dhewe61J.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-rsXX73Cl.js";import"./chat-context-DXpKsjVo.js";import"./use-ai-providers-DgcskZoe.js";import"./use-decopilot-events-5pm47S0T.js";import"./use-organization-settings-Db4PFBW1.js";import"./monaco-editor-C8zvcXPr.js";import"./spinner-BLMAonWH.js";import"./index-a7TF5P06.js";import"./calendar-BoIdNSVB.js";import"./shell-layout-ByK7aPpx.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-CjW1yEh4.js";import"./use-org-sso--PZeqw9Y.js";import"./integration-icon-Ba4VB8H0.js";import"./use-navigate-to-agent-BgImaYtF.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-BHYk1K-B.js";import"./form-DBuGxIQE.js";import"./input-C0Sy_LKI.js";const Et=new Set(["website/matchers/date.ts","$live/matchers/MatchDate.ts"]),St=new Set(["website/matchers/multi.ts","$live/matchers/MatchMulti.ts"]),Ct=new Date(-864e13),Dt=new Date(864e13),At=/\/flags\/multivariate(?:\/[^/]+)?\.ts$/,$t=/\/flags\/multivariate\.ts$/;function Lt(e){let t=e;t.startsWith("pages-")&&(t=t.slice(6).replace(/-\d+$/,""));try{t=decodeURIComponent(t)}catch{}return t}function Rt(e){if(!e||typeof e!="object")return null;const{start:t,end:n}=e,r=typeof t=="string",i=typeof n=="string";if(!r&&!i)return null;const o=r?new Date(t):Ct,a=i?new Date(n):Dt;return Number.isNaN(o.getTime())||Number.isNaN(a.getTime())||r&&i&&a.getTime()<=o.getTime()?null:{start:o,end:a,openStart:!r,openEnd:!i}}function pt(e,t){if(!e||typeof e!="object")return;const n=e.__resolveType;if(typeof n=="string"){if(Et.has(n)){const r=Rt(e);r&&t.push(r);return}if(St.has(n)){const r=e.matchers;if(Array.isArray(r))for(const i of r)pt(i,t)}}}function Ot(e){if(!e||typeof e!="object")return!1;const t=e.__resolveType;if(typeof t!="string"||!At.test(t))return!1;const n=e.variants;return Array.isArray(n)}function It(e){if(typeof e=="string"){const m=e.trim();if(m.length===0)return null;try{const c=new URL(m).pathname.split("/").filter(Boolean),d=c[c.length-1];if(d)return decodeURIComponent(d)}catch{}return m.length>80?`${m.slice(0,77)}…`:m}if(!e||typeof e!="object")return null;const t=e,n=t.config,i=t.desktop?.media,o=[t.title,t.name,t.label,t.alt,n?.title,n?.name,n?.typeAlert?.message,i?.alt,Array.isArray(t.matcher)?t.matcher[0]:void 0];for(const m of o)if(typeof m=="string"&&m.trim().length>0)return m.trim();const a=t.__resolveType;if(typeof a=="string"){const l=(a.split("/").pop()??a).replace(/\.(tsx?|jsx?)$/i,"");if(l.length>0)return l}return null}function Pt(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];typeof r=="number"?t.length>0?t[t.length-1]+=`[${r}]`:t.push(`[${r}]`):t.push(r)}return t.join(" · ")}function X(e,t,n,r,i){if(Ot(e)){const o=e.variants,a=e.__resolveType,m=$t.test(a)?"":Pt(r);o.forEach((l,c)=>{if(!l||typeof l!="object")return;const d=l,p=[];if(pt(d.rule,p),p.length===0)return;const x=It(d.value)??(m||n);for(const h of p)i.push({blockKey:t,blockLabel:n,innerPath:m,variantIndex:c,start:h.start,end:h.end,openStart:h.openStart,openEnd:h.openEnd,label:x,flagResolveType:a})});for(let l=0;l<o.length;l++){const c=o[l];c&&typeof c=="object"&&X(c.value,t,n,[...r,"variants",l,"value"],i)}return}if(Array.isArray(e)){for(let o=0;o<e.length;o++)X(e[o],t,n,[...r,o],i);return}if(e&&typeof e=="object")for(const[o,a]of Object.entries(e))o!=="__resolveType"&&X(a,t,n,[...r,o],i)}function Ft(e){if(!e)return[];const t=[];for(const[n,r]of Object.entries(e))X(r,n,Lt(n),[],t);return t.sort((n,r)=>n.start.getTime()-r.start.getTime())}function Vt(e){const t=[...new Set(e)].sort(),n=new Map;return t.forEach((r,i)=>{const o=i*137.508%360;n.set(r,{bg:`oklch(0.62 0.14 ${o})`,text:"white",border:`oklch(0.50 0.14 ${o})`})}),n}const Ht={bg:"oklch(0.62 0.14 0)",text:"white",border:"oklch(0.50 0.14 0)"};function ut(e,t){return e.get(t)??Ht}const Bt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ht=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=1440*60*1e3;function B(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function xt(e){return new Date(e.getFullYear(),e.getMonth(),1)}function G(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}function Z(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function st(e,t){return Math.round((B(e).getTime()-B(t).getTime())/gt)}function Wt(e){const t=(e.getTime()-B(e).getTime())/gt;return Math.min(Math.max(t,0),1)}function it(e,t){return st(e,t)+Wt(e)}function zt(e){const t=Z(e,-e.getDay()),n=[];for(let r=0;r<6;r++){const i=[];for(let o=0;o<7;o++)i.push(Z(t,r*7+o));n.push(i)}for(;n.length>0&&n[n.length-1].every(r=>r.getMonth()!==e.getMonth());)n.pop();return n}function Ut(e,t){const n=B(e[0]),r=Z(n,7),i=n.getTime(),o=r.getTime(),a=[];for(const c of t){const d=B(c.start),p=B(c.end);if(p.getTime()<n.getTime()||d.getTime()>=r.getTime())continue;const u=d.getTime()<n.getTime()?n:d,x=p.getTime()>=r.getTime()?Z(r,-1):p,h=st(u,n),g=st(x,u)+1;if(g<=0)continue;const b=Math.max(c.start.getTime(),i),j=Math.min(c.end.getTime(),o),v=it(new Date(b),n),f=Math.max(it(new Date(j),n)-v,0);f<=0||a.push({variant:c,startCol:h,span:g,leftUnits:v,widthUnits:f})}a.sort((c,d)=>c.startCol-d.startCol||d.span-c.span||c.variant.blockKey.localeCompare(d.variant.blockKey));const m=[],l=[];for(const c of a){let d=m.findIndex(p=>p<=c.startCol);d===-1&&(d=m.length,m.push(0)),m[d]=c.startCol+c.span,l.push({...c,lane:d})}return l}const at=new Intl.DateTimeFormat("en",{dateStyle:"medium",timeStyle:"short"});function Yt(e,t){const n=e.openStart?t("sandbox.variantCalendar.always"):at.format(e.start),r=e.openEnd?t("sandbox.variantCalendar.ongoing"):at.format(e.end);return`${n} → ${r}`}function Gt(e){const t=K.c(18),{variant:n}=e,r=tt();let i;t[0]!==n.blockLabel?(i=s.jsx("div",{className:"font-semibold",children:n.blockLabel}),t[0]=n.blockLabel,t[1]=i):i=t[1];let o;t[2]!==n.innerPath?(o=n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.innerPath}),t[2]=n.innerPath,t[3]=o):o=t[3];let a;t[4]!==n.blockLabel||t[5]!==n.innerPath||t[6]!==n.label?(a=n.label!==n.blockLabel&&n.label!==n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.label}),t[4]=n.blockLabel,t[5]=n.innerPath,t[6]=n.label,t[7]=a):a=t[7];let m;t[8]!==r||t[9]!==n?(m=Yt(n,r),t[8]=r,t[9]=n,t[10]=m):m=t[10];let l;t[11]!==m?(l=s.jsx("div",{className:"mt-1",children:m}),t[11]=m,t[12]=l):l=t[12];let c;return t[13]!==i||t[14]!==o||t[15]!==a||t[16]!==l?(c=s.jsx(Mt,{children:s.jsxs("div",{className:"text-xs",children:[i,o,a,l]})}),t[13]=i,t[14]=o,t[15]=a,t[16]=l,t[17]=c):c=t[17],c}const lt=16;function Kt(e,t){const n=e?"transparent":"#000 0",r=t?"transparent":"#000 100%";if(!(!e&&!t))return`linear-gradient(to right, ${n}, #000 ${lt}px, #000 calc(100% - ${lt}px), ${r})`}function bt(e){const t=K.c(26),{variant:n,color:r,style:i,children:o,fadeStart:a,fadeEnd:m}=e,l=a===void 0?!1:a,c=m===void 0?!1:m;let d;t[0]!==c||t[1]!==l?(d=Kt(l,c),t[0]=c,t[1]=l,t[2]=d):d=t[2];const p=d;let u;t[3]!==l?(u=l&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},t[3]=l,t[4]=u):u=t[4];let x;t[5]!==c?(x=c&&{borderTopRightRadius:0,borderBottomRightRadius:0},t[5]=c,t[6]=x):x=t[6];let h;t[7]!==p?(h=p&&{maskImage:p,WebkitMaskImage:p},t[7]=p,t[8]=h):h=t[8];let g;t[9]!==r.bg||t[10]!==r.text||t[11]!==i||t[12]!==u||t[13]!==x||t[14]!==h?(g={background:r.bg,color:r.text,borderRadius:4,...u,...x,...h,...i},t[9]=r.bg,t[10]=r.text,t[11]=i,t[12]=u,t[13]=x,t[14]=h,t[15]=g):g=t[15];let b;t[16]!==o?(b=s.jsx("span",{className:"truncate",children:o}),t[16]=o,t[17]=b):b=t[17];let j;t[18]!==g||t[19]!==b?(j=s.jsx(wt,{asChild:!0,children:s.jsx("div",{className:"absolute flex items-center px-2 text-[11px] font-medium truncate cursor-default",style:g,children:b})}),t[18]=g,t[19]=b,t[20]=j):j=t[20];let v;t[21]!==n?(v=s.jsx(Gt,{variant:n}),t[21]=n,t[22]=v):v=t[22];let f;return t[23]!==v||t[24]!==j?(f=s.jsxs(kt,{children:[j,v]}),t[23]=v,t[24]=j,t[25]=f):f=t[25],f}function Zn(e){const t=K.c(72),{decofile:n}=e,r=tt(),[i,o]=et.useState("calendar"),[a,m]=et.useState(Xt),[l,c]=et.useState(!1);let d,p,u;if(t[0]!==n||t[1]!==l){const P=Ft(n);d=P.filter(Qt).length,u=l?P:P.filter(qt),p=Vt(u.map(Jt)),t[0]=n,t[1]=l,t[2]=d,t[3]=p,t[4]=u}else d=t[2],p=t[3],u=t[4];const x=p;let h;t[5]===Symbol.for("react.memo_cache_sentinel")?(h=()=>m(xt(new Date)),t[5]=h):h=t[5];const g=h;let b;t[6]!==i?(b=()=>m(P=>i==="calendar"?G(P,-1):G(P,-3)),t[6]=i,t[7]=b):b=t[7];const j=b;let v;t[8]!==i?(v=()=>m(P=>i==="calendar"?G(P,1):G(P,3)),t[8]=i,t[9]=v):v=t[9];const f=v;let y;t[10]!==r?(y=r("sandbox.variantCalendar.today"),t[10]=r,t[11]=y):y=t[11];let T;t[12]!==y?(T=s.jsx(nt,{variant:"outline",size:"sm",onClick:g,children:y}),t[12]=y,t[13]=T):T=t[13];let w;t[14]!==r?(w=r("sandbox.variantCalendar.previous"),t[14]=r,t[15]=w):w=t[15];let D;t[16]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(vt,{size:16}),t[16]=D):D=t[16];let k;t[17]!==j||t[18]!==w?(k=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:j,"aria-label":w,children:D}),t[17]=j,t[18]=w,t[19]=k):k=t[19];let M;t[20]!==r?(M=r("sandbox.variantCalendar.next"),t[20]=r,t[21]=M):M=t[21];let S;t[22]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Tt,{size:16}),t[22]=S):S=t[22];let A;t[23]!==f||t[24]!==M?(A=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:f,"aria-label":M,children:S}),t[23]=f,t[24]=M,t[25]=A):A=t[25];const $=ht[a.getMonth()];let C;t[26]!==a?(C=a.getFullYear(),t[26]=a,t[27]=C):C=t[27];let _;t[28]!==$||t[29]!==C?(_=s.jsxs("h2",{className:"ml-2 text-base font-semibold",children:[$," ",C]}),t[28]=$,t[29]=C,t[30]=_):_=t[30];let N;t[31]!==A||t[32]!==_||t[33]!==T||t[34]!==k?(N=s.jsxs("div",{className:"flex items-center gap-2",children:[T,k,A,_]}),t[31]=A,t[32]=_,t[33]=T,t[34]=k,t[35]=N):N=t[35];let L;t[36]!==d||t[37]!==l||t[38]!==r?(L=d>0&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nt,{id:"show-ongoing",checked:l,onCheckedChange:c}),s.jsx(jt,{htmlFor:"show-ongoing",className:"text-xs text-muted-foreground cursor-pointer",children:r("sandbox.variantCalendar.showOngoing",{count:d})})]}),t[36]=d,t[37]=l,t[38]=r,t[39]=L):L=t[39];let H;t[40]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(dt,{}),t[40]=H):H=t[40];let F;t[41]!==r?(F=r("sandbox.variantCalendar.calendarMode"),t[41]=r,t[42]=F):F=t[42];let E;t[43]!==F?(E={value:"calendar",icon:H,label:F},t[43]=F,t[44]=E):E=t[44];let W;t[45]===Symbol.for("react.memo_cache_sentinel")?(W=s.jsx(yt,{}),t[45]=W):W=t[45];let R;t[46]!==r?(R=r("sandbox.variantCalendar.timelineMode"),t[46]=r,t[47]=R):R=t[47];let O;t[48]!==R?(O={value:"timeline",icon:W,label:R},t[48]=R,t[49]=O):O=t[49];let I;t[50]!==E||t[51]!==O?(I=[E,O],t[50]=E,t[51]=O,t[52]=I):I=t[52];let V;t[53]!==I||t[54]!==i?(V=s.jsx(_t,{value:i,onValueChange:o,options:I}),t[53]=I,t[54]=i,t[55]=V):V=t[55];let z;t[56]!==L||t[57]!==V?(z=s.jsxs("div",{className:"flex items-center gap-4",children:[L,V]}),t[56]=L,t[57]=V,t[58]=z):z=t[58];let U;t[59]!==N||t[60]!==z?(U=s.jsxs("div",{className:"flex items-center justify-between px-4 h-12 border-b shrink-0",children:[N,z]}),t[59]=N,t[60]=z,t[61]=U):U=t[61];let Y;t[62]!==x||t[63]!==a||t[64]!==d||t[65]!==l||t[66]!==u||t[67]!==i?(Y=u.length===0?s.jsx(Zt,{hiddenOngoing:l?0:d}):i==="calendar"?s.jsx(ee,{monthStart:a,variants:u,colorMap:x}):s.jsx(oe,{monthStart:a,variants:u,colorMap:x}),t[62]=x,t[63]=a,t[64]=d,t[65]=l,t[66]=u,t[67]=i,t[68]=Y):Y=t[68];let q;return t[69]!==U||t[70]!==Y?(q=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[U,Y]}),t[69]=U,t[70]=Y,t[71]=q):q=t[71],q}function Jt(e){return e.blockKey}function qt(e){return!e.openEnd}function Qt(e){return e.openEnd}function Xt(){return xt(new Date)}function Zt(e){const t=K.c(4),{hiddenOngoing:n}=e,r=n===void 0?0:n,i=tt();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(dt,{size:24,className:"text-muted-foreground/60"}),t[0]=o):o=t[0];let a;return t[1]!==r||t[2]!==i?(a=s.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-sm text-muted-foreground p-6",children:[o,r>0?s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noDatedVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.hiddenOngoingVariants",{count:r})})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noScheduledVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.dateMatcherInfo")})]})]}),t[1]=r,t[2]=i,t[3]=a):a=t[3],a}const rt=20,ct=2,mt=28,te=6;function ee(e){const t=K.c(17),{monthStart:n,variants:r,colorMap:i}=e;let o,a,m,l,c;if(t[0]!==i||t[1]!==n||t[2]!==r){const u=zt(n),x=B(new Date);o=ft,c="flex-1 min-h-0",a="min-w-[840px]",t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("div",{className:"grid grid-cols-7 border-b text-xs text-muted-foreground sticky top-0 bg-background z-10",children:Bt.map(re)}),t[8]=m):m=t[8],l=u.map((h,g)=>{const b=Ut(h,r),j=b.reduce(ne,0),v=mt+j*(rt+ct)+8;return s.jsxs("div",{className:"grid grid-cols-7 relative border-b",style:{height:v},children:[h.map((f,y)=>{const T=f.getMonth()===n.getMonth(),w=f.getTime()===x.getTime();return s.jsx("div",{className:ot("border-r last:border-r-0 px-2 pt-1.5 text-xs",T?"bg-background":"bg-muted/30 text-muted-foreground"),children:s.jsx("span",{className:ot("inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1",w&&"bg-primary text-primary-foreground font-semibold"),children:f.getDate()})},y)}),b.map((f,y)=>{const T=ut(i,f.variant.blockKey),w=mt+f.lane*(rt+ct),D=f.leftUnits/7*100,k=f.widthUnits/7*100,M=f.variant.openStart&&g===0,S=f.variant.openEnd&&g===u.length-1;return s.jsxs(bt,{variant:f.variant,color:T,fadeStart:M,fadeEnd:S,style:{top:w,left:`calc(${D}% + 2px)`,width:`calc(${k}% - 4px)`,minWidth:te,height:rt},children:[f.variant.blockLabel,f.variant.label!==f.variant.blockLabel&&s.jsxs("span",{className:"opacity-70",children:[" · ",f.variant.label]})]},`${g}-${y}`)})]},g)}),t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=a,t[5]=m,t[6]=l,t[7]=c}else o=t[3],a=t[4],m=t[5],l=t[6],c=t[7];let d;t[9]!==a||t[10]!==m||t[11]!==l?(d=s.jsxs("div",{className:a,children:[m,l]}),t[9]=a,t[10]=m,t[11]=l,t[12]=d):d=t[12];let p;return t[13]!==o||t[14]!==c||t[15]!==d?(p=s.jsx(o,{className:c,children:d}),t[13]=o,t[14]=c,t[15]=d,t[16]=p):p=t[16],p}function ne(e,t){return Math.max(e,t.lane+1)}function re(e){return s.jsx("div",{className:"px-2 py-2 text-center uppercase tracking-wide",children:e},e)}const Q=4,se=32,J=240;function oe(e){const t=K.c(23),{monthStart:n,variants:r,colorMap:i}=e,o=n,a=G(n,Q),m=new Date,l=new Map;for(const _ of r){const N=l.get(_.blockKey)??[];N.push(_),l.set(_.blockKey,N)}const c=Array.from(l.entries()).sort(le),d=a.getTime()-o.getTime(),p=_=>(Math.max(o.getTime(),Math.min(a.getTime(),_.getTime()))-o.getTime())/d*100;let u;t[0]!==o?(u=(_,N)=>G(o,N),t[0]=o,t[1]=u):u=t[1];const x=Array.from({length:Q},u),h=m.getTime()>=o.getTime()&&m.getTime()<=a.getTime()?p(m):null,g=tt(),b=ft,j="flex-1 min-h-0",v="min-w-[900px] relative";let f;t[2]===Symbol.for("react.memo_cache_sentinel")?(f={width:J},t[2]=f):f=t[2];let y;t[3]!==g?(y=g("sandbox.variantCalendar.variantBlock"),t[3]=g,t[4]=y):y=t[4];let T;t[5]!==y?(T=s.jsx("div",{className:"shrink-0 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r",style:f,children:y}),t[5]=y,t[6]=T):T=t[6];let w;t[7]===Symbol.for("react.memo_cache_sentinel")?(w={gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},t[7]=w):w=t[7];const D=x.map(ae);let k;t[8]!==D?(k=s.jsx("div",{className:"flex-1 grid",style:w,children:D}),t[8]=D,t[9]=k):k=t[9];let M;t[10]!==T||t[11]!==k?(M=s.jsxs("div",{className:"flex border-b sticky top-0 bg-background z-10",children:[T,k]}),t[10]=T,t[11]=k,t[12]=M):M=t[12];let S;t[13]!==g||t[14]!==h?(S=h!==null&&s.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70 z-[5]",style:{left:`calc(${J}px + (100% - ${J}px) * ${h} / 100)`},children:s.jsx("span",{className:"absolute -top-0.5 -translate-x-1/2 rounded-sm bg-primary px-1.5 py-px text-[10px] font-medium text-primary-foreground",children:g("sandbox.variantCalendar.todayLabel")})}),t[13]=g,t[14]=h,t[15]=S):S=t[15];const A=c.map(_=>{const[N,L]=_,H=ut(i,N),F=L[0]?.blockLabel??N;return s.jsxs("div",{children:[s.jsx("div",{className:"flex items-center bg-muted/40 border-b text-xs font-semibold uppercase tracking-wide text-muted-foreground",style:{height:28},children:s.jsx("div",{className:"px-3 truncate",style:{width:J},children:F})}),L.map((E,W)=>s.jsxs("div",{className:"flex border-b items-center",style:{height:se},children:[s.jsxs("div",{className:"flex items-center gap-2 px-3 text-sm border-r shrink-0",style:{width:J},children:[s.jsx("span",{className:"inline-block h-2 w-2 rounded-full shrink-0",style:{background:H.bg}}),s.jsx("span",{className:"truncate text-foreground/80",children:E.label})]}),s.jsxs("div",{className:"relative flex-1 h-full",children:[s.jsx("div",{className:"absolute inset-0 grid",style:{gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},children:x.map(ie)}),(()=>{const R=Math.max(E.start.getTime(),o.getTime()),O=Math.min(E.end.getTime(),a.getTime());if(O<=R)return null;const I=p(new Date(R)),V=p(new Date(O))-I;return s.jsx(bt,{variant:E,color:H,fadeStart:E.openStart,fadeEnd:E.openEnd,style:{top:"50%",transform:"translateY(-50%)",left:`${I}%`,width:`calc(${V}% - 2px)`,height:22},children:E.label})})()]})]},W))]},N)});let $;t[16]!==M||t[17]!==S||t[18]!==A?($=s.jsxs("div",{className:v,children:[M,S,A]}),t[16]=M,t[17]=S,t[18]=A,t[19]=$):$=t[19];let C;return t[20]!==b||t[21]!==$?(C=s.jsx(b,{className:j,children:$}),t[20]=b,t[21]=$,t[22]=C):C=t[22],C}function ie(e,t){return s.jsx("div",{className:"border-r last:border-r-0 border-border/40"},t)}function ae(e,t){return s.jsxs("div",{className:"px-2 py-2 text-xs uppercase tracking-wide text-muted-foreground border-r last:border-r-0",children:[ht[e.getMonth()]?.slice(0,3)," ",e.getFullYear()]},t)}function le(e,t){return e[0].localeCompare(t[0])}export{Zn as VariantCalendar};
@@ -1 +1 @@
1
- import{c as $,r as T,m as f,j as i}from"./index-DLbviL_Z.js";import{c as k,T as I,a as P}from"./tooltip-DP1YDrGX.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const l=M[_];let n;t[6]!==z?(n=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=n):n=t[7];let a;t[8]!==l||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),"aria-label":e.label,className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(l.buttonWithLabel,"px-3"):l.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",l.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=l,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":l.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==n||t[25]!==a?(v=i.jsxs("div",{className:n,children:[a,u]}),t[23]=u,t[24]=n,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
1
+ import{c as $,r as T,m as f,j as i}from"./index-g0cuPRKZ.js";import{c as k,T as I,a as P}from"./tooltip-tmjJHakE.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const l=M[_];let n;t[6]!==z?(n=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=n):n=t[7];let a;t[8]!==l||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),"aria-label":e.label,className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(l.buttonWithLabel,"px-3"):l.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",l.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=l,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":l.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==n||t[25]!==a?(v=i.jsxs("div",{className:n,children:[a,u]}),t[23]=u,t[24]=n,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
@@ -50,7 +50,7 @@
50
50
  <meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
51
51
  <meta name="twitter:image" content="/og-image.png" />
52
52
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
53
- <script type="module" crossorigin src="/assets/index-DLbviL_Z.js"></script>
53
+ <script type="module" crossorigin src="/assets/index-g0cuPRKZ.js"></script>
54
54
  <link rel="stylesheet" crossorigin href="/assets/index-B5jBvolo.css">
55
55
  </head>
56
56
  <body>
@@ -82,7 +82,7 @@ _deco_commands() {
82
82
  }
83
83
 
84
84
  _deco "$@"
85
- `}async function r5t(i){let u=i||process.env.SHELL?.split("/").pop()||"bash",t,f;switch(u){case"bash":{t=q5t(),f=K_u(Y_u(),".local/share/bash-completion/completions/deco");break}case"zsh":{t=V5t(),f=K_u(Y_u(),".zsh/completions/_deco");break}default:console.error(`Unsupported shell: ${u}`),console.log("Supported shells: bash, zsh"),process.exit(1)}if(M5t(J_u(f),{recursive:!0}),await C5t(f,t,"utf8"),console.log(`Completion script installed to: ${f}`),console.log(""),u==="bash")console.log("To enable completions, add to your ~/.bashrc:"),console.log(` source "${f}"`);else console.log("To enable completions, add to your ~/.zshrc:"),console.log(` fpath=("${J_u(f)}" $fpath)`),console.log(" autoload -U compinit && compinit");console.log(""),console.log("Then restart your shell.")}var L_u=()=>{};import{homedir as m5t}from"os";function a5t(i){let u=(i??"").trim();return e5t.has(u)?u:"all"}function s5t(i){let u=(i??"").trim();return o5t.has(u)?u:"development"}function S_u(i,u,t){let f=i==="worker"?0:Math.floor(u*0.6);if(t===void 0||t==="")return f;let l=Number(t);return Number.isFinite(l)&&l>=0?l:f}function Q_u(i){if(!i)return"[settings] ENCRYPTION_KEY is not set (using deterministic fallback, 32 chars) \u2014 set ENCRYPTION_KEY for production";return`[settings] ENCRYPTION_KEY is set (${i.length<=8?"***":`${i.slice(0,4)}..${i.slice(-4)}`}, ${i.length} chars)`}function cZ(i){return i==="true"||i==="1"}function p5t(i){if(i===void 0||i==="")return;return cZ(i)}function Wki(i,u){if(u===void 0||u==="")return;let t=Number(u);if(!Number.isSafeInteger(t)||t<=0)throw Error(`${i} must be a positive integer`);return t}function R7(i,u,t){return Wki(i,u)??t}function iht(i,u){if(i===void 0||i==="")return u;return i==="true"||i==="1"}function mb(i){if(!i)return null;try{let t=new URL(i).hostname.replace(/^\[|\]$/g,"");if(t==="localhost"||t==="127.0.0.1"||t==="::1")return null;return i}catch{return null}}function Lki(i){return i===void 0||i===""||i==="true"||i==="1"}function rb(i,u){return i||u}function tht(i){let u=(i??"").trim(),t=u.length>0?u:"user-desktop";if(t==="cluster")return"agent-sandbox";if(!uht.has(t))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return t}function Nui(i,u){let t=i.home||u.DATA_DIR||u.DECOCMS_HOME||`${m5t()}/deco`,f=i.localMode,l=i.nodeEnv||s5t(u.NODE_ENV),E=u.NATS_URL||"nats://localhost:4222",c=p5t(u.NATS_TUNNEL_PUBLIC_ENABLED)??!!u.NATS_PUBLIC_URL;return{settings:{nodeEnv:l,port:R7("PORT",i.port||u.PORT,3000),baseUrl:i.baseUrl||u.BASE_URL,publicUrl:rb(u.STUDIO_PUBLIC_URL,u.MESH_PUBLIC_URL),dataDir:t,databasePgSsl:cZ(u.DATABASE_PG_SSL),databasePoolMax:R7("DATABASE_POOL_MAX",u.DATABASE_POOL_MAX,5),dbosPoolSize:R7("DBOS_POOL_SIZE",u.DBOS_POOL_SIZE,5),betterAuthSecret:u.BETTER_AUTH_SECRET||"",encryptionKey:u.ENCRYPTION_KEY||"",studioJwtSecret:rb(u.STUDIO_JWT_SECRET,u.MESH_JWT_SECRET),localMode:f,disableRateLimit:cZ(u.DISABLE_RATE_LIMIT),studioProvisionSecretKey:u.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(u.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map(($)=>$.trim().toLowerCase()).filter(Boolean),clickhouseUrl:u.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Wki("CLICKHOUSE_MAX_MEMORY_USAGE",u.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:u.MONITORING_OTLP_ENDPOINT,otelServiceName:u.OTEL_SERVICE_NAME||"studio",natsPublicUrl:u.NATS_PUBLIC_URL,natsTunnelPublicEnabled:c,natsTunnelSessionTtlSeconds:R7("NATS_TUNNEL_SESSION_TTL_SECONDS",u.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:u.NATS_OPERATOR_JWT,natsAccountJwt:u.NATS_ACCOUNT_JWT,natsAccountSigningKey:u.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:u.NATS_CREDS,configPath:u.CONFIG_PATH||"./config.json",aiGatewayEnabled:cZ(u.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:u.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:u.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:R7("STUDIO_SEAT_ALLOWANCE_CENTS",u.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:u.STRIPE_WEBHOOK_SECRET,stripeSecretKey:u.STRIPE_SECRET_KEY,stripeSeatPriceId:u.STRIPE_SEAT_PRICE_ID,topupFeePercent:R7("STUDIO_TOPUP_FEE_PERCENT",u.STUDIO_TOPUP_FEE_PERCENT,15),enableDecoImport:cZ(u.ENABLE_DECO_IMPORT),billingEnforced:cZ(u.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:iht(u.MCP_CACHE_ENABLED,l!=="development"),orgFsPublicSetsJson:u.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:cZ(u.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:R7("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",u.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:R7("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",u.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:u.S3_ENDPOINT,s3Bucket:u.S3_BUCKET,s3Region:u.S3_REGION||"auto",s3AccessKeyId:u.S3_ACCESS_KEY_ID,s3SecretAccessKey:u.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:Lki(u.S3_FORCE_PATH_STYLE),monitoringS3Bucket:u.MONITORING_S3_BUCKET,monitoringS3Endpoint:u.MONITORING_S3_ENDPOINT,monitoringS3Region:u.MONITORING_S3_REGION,monitoringS3AccessKeyId:u.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:u.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:u.MONITORING_S3_PREFIX,duckdbExtensionDirectory:u.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:u.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:Wki("DUCKDB_THREADS",u.DUCKDB_THREADS),isCli:!0,noTui:i.noTui===!0,podName:u.POD_NAME||crypto.randomUUID(),dispatchRole:a5t(rb(u.STUDIO_DISPATCH_ROLE,u.MESH_DISPATCH_ROLE)),sandboxProviderKind:tht(u.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:u.DECO_SUPABASE_URL,decoSupabaseServiceKey:u.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:u.FIRECRAWL_API_KEY,reportsInternalApiUrl:rb(u.REPORTS_INTERNAL_API_URL,u.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:rb(u.REPORTS_INTERNAL_API_KEY,u.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:u.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:u.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:u.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:u.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:u.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:u.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:u.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:mb(u.DATABASE_URL),externalNatsUrl:mb(E),skipMigrations:i.skipMigrations}}var e5t,o5t,uht;var CW=O(()=>{e5t=new Set(["all","worker","api"]);o5t=new Set(["production","development","test"]);uht=new Set(["agent-sandbox","user-desktop"])});function y0(i,u={}){let{signal:t}=u;if(t?.aborted)return Promise.reject(t.reason);return new Promise((f,l)=>{let E=()=>{clearTimeout(+w),l(t?.reason)},w=fht(()=>{t?.removeEventListener("abort",E),f()},i);t?.addEventListener("abort",E,{once:!0})})}function fht(i,u){if(u=Math.trunc(Math.max(u,0)||0),u<=Ski){let E=Number(setTimeout(i,u));return{valueOf:()=>E}}let t=Date.now(),f,l=()=>{let E=u-(Date.now()-t);f=E>Ski?Number(setTimeout(l,Ski)):Number(setTimeout(i,E))};return l(),{valueOf:()=>f}}var Ski=2147483647;function hE(i,u,t,f,l){let E=Math.min(i,u*f**t);return(1-l*Math.random())*E}async function F1(i,u){let{multiplier:t=2,maxTimeout:f=60000,maxAttempts:l=5,minTimeout:E=1000,jitter:c=1,isRetriable:w=()=>!0,signal:$}=u??{};if(!Number.isInteger(l)||l<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${l}`);if(!Number.isFinite(t)||t<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${t}`);if(Number.isNaN(f)||f<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${f}`);if(Number.isNaN(E)||E<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${E}`);if(E>f)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${E}', 'maxTimeout=${f}'`);if(Number.isNaN(c)||c<0||c>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${c}`);let h=0;while(!0){$?.throwIfAborted();try{return await i()}catch(v){if(!w(v))throw v;if(h+1>=l)throw new H6(v,l);let d=hE(f,E,h,t,c);await y0(d,$?{signal:$}:void 0)}h++}}var H6;var H_u=O(()=>{H6=class H6 extends Error{constructor(i,u){super(`Retrying exceeded the maxAttempts (${u}).`);this.name="RetryError",this.cause=i}}});var Z4=O(()=>{H_u()});class Oui{static encode(i){if(typeof i==="string")return btoa(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}static decode(i,u=!1){let t=atob(i);if(!u)return t;let f=new Uint8Array(t.length);for(let l=0;l<t.length;l++)f[l]=t.charCodeAt(l);return f}}class vD{static encode(i){return vD.toB64URLEncoding(Oui.encode(i))}static decode(i,u=!1){return Oui.decode(vD.fromB64URLEncoding(i),u)}static toB64URLEncoding(i){return i=i.replace(/=/g,""),i=i.replace(/\+/g,"-"),i.replace(/\//g,"_")}static fromB64URLEncoding(i){return i=i.replace(/_/g,"/"),i=i.replace(/-/g,"+"),i}}function Eht(i){n_u=i}function m$(){return n_u}class Zui{static encode(i){let u=0,t=0,f=new Uint8Array(i),l=new Uint8Array(i.byteLength*2),E=0;for(let c=0;c<f.byteLength;c++){t=t<<8|f[c],u+=8;while(u>=5){let w=t>>>u-5&31;l[E++]=Qki.charAt(w).charCodeAt(0),u-=5}}if(u>0){let c=t<<5-u&31;l[E++]=Qki.charAt(c).charCodeAt(0)}return l.slice(0,E)}static decode(i){let u=0,t=0,f=0,l=new Uint8Array(i),E=new Uint8Array(l.byteLength*5/8|0);for(let c=0;c<l.byteLength;c++){let w=String.fromCharCode(l[c]),$=Qki.indexOf(w);if($===-1)throw Error("Illegal Base32 character: "+l[c]);if(t=t<<5|$,u+=5,u>=8)E[f++]=t>>>u-8&255,u-=8}return E.slice(0,f)}}class ab{static checksum(i){let u=0;for(let t=0;t<i.byteLength;t++){let f=i[t];u=u<<8&65535^cht[(u>>8^f)&255]}return u}static validate(i,u){return ab.checksum(i)==u}}function R_u(){return nki(Ht.Operator)}function Bui(){return nki(Ht.Account)}function Fui(){return nki(Ht.User)}class hZ{static isValidPublicPrefix(i){return i==Ht.Server||i==Ht.Operator||i==Ht.Cluster||i==Ht.Account||i==Ht.User||i==Ht.Curve}static startsWithValidPrefix(i){let u=i[0];return u=="S"||u=="P"||u=="O"||u=="N"||u=="C"||u=="A"||u=="U"||u=="X"}static isValidPrefix(i){return this.parsePrefix(i)!==Ht.Unknown}static parsePrefix(i){switch(i){case Ht.Seed:return Ht.Seed;case Ht.Private:return Ht.Private;case Ht.Operator:return Ht.Operator;case Ht.Server:return Ht.Server;case Ht.Cluster:return Ht.Cluster;case Ht.Account:return Ht.Account;case Ht.User:return Ht.User;case Ht.Curve:return Ht.Curve;default:return Ht.Unknown}}}class $6{static encode(i,u){if(!u||!(u instanceof Uint8Array))throw new m0(V0.SerializationError);if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);return $6._encode(!1,i,u)}static encodeSeed(i,u){if(!u)throw new m0(V0.ApiError);if(!hZ.isValidPublicPrefix(i))throw new m0(V0.InvalidPrefixByte);if(u.byteLength!==32)throw new m0(V0.InvalidSeedLen);return $6._encode(!0,i,u)}static decode(i,u){if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);let t=$6._decode(u);if(t[0]!==i)throw new m0(V0.InvalidPrefixByte);return t.slice(1)}static decodeSeed(i){let u=$6._decode(i),t=$6._decodePrefix(u);if(t[0]!=Ht.Seed)throw new m0(V0.InvalidSeed);if(!hZ.isValidPublicPrefix(t[1]))throw new m0(V0.InvalidPrefixByte);return{buf:u.slice(2),prefix:t[1]}}static _encode(i,u,t){let f=i?2:1,l=t.byteLength,E=f+l+2,c=f+l,w=new Uint8Array(E);if(i){let v=$6._encodePrefix(Ht.Seed,u);w.set(v)}else w[0]=u;w.set(t,f);let $=ab.checksum(w.slice(0,c));return new DataView(w.buffer).setUint16(c,$,!0),Zui.encode(w)}static _decode(i){if(i.byteLength<4)throw new m0(V0.InvalidEncoding);let u;try{u=Zui.decode(i)}catch(c){throw new m0(V0.InvalidEncoding,c)}let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ab.validate(E,l))throw new m0(V0.InvalidChecksum);return E}static _encodePrefix(i,u){let t=i|u>>5,f=(u&31)<<3;return new Uint8Array([t,f])}static _decodePrefix(i){let u=i[0]&248,t=(i[0]&7)<<5|(i[1]&248)>>3;return new Uint8Array([u,t])}}class Hki{seed;constructor(i){this.seed=i}getRawSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=$6.decodeSeed(this.seed),u=m$().fromSeed(this.getRawSeed()),t=$6.encode(i.prefix,u.publicKey);return new TextDecoder().decode(t)}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=m$().fromSeed(this.getRawSeed());return $6.encode(Ht.Private,i.secretKey)}sign(i){if(!this.seed)throw new m0(V0.ClearedPair);let u=m$().fromSeed(this.getRawSeed());return m$().sign(i,u.secretKey)}verify(i,u){if(!this.seed)throw new m0(V0.ClearedPair);let t=m$().fromSeed(this.getRawSeed());return m$().verify(i,u,t.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}class zki{seed;constructor(i){this.seed=i}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encode(Ht.Private,this.seed)}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=m$().scalarBaseMultiply(this.seed),u=$6.encode(Ht.Curve,i);return new TextDecoder().decode(u)}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encodeSeed(Ht.Curve,this.seed)}sign(){throw new m0(V0.InvalidCurveOperation)}verify(){throw new m0(V0.InvalidCurveOperation)}decodePubCurveKey(i){try{let u=Zui.decode(new TextEncoder().encode(i));if(u.byteLength!==35)throw new m0(V0.InvalidCurveKey);if(u[0]!==Ht.Curve)throw new m0(V0.InvalidPublicKey);let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ab.validate(E,l))throw new m0(V0.InvalidChecksum);return E.slice(1)}catch(u){throw new m0(V0.InvalidRecipient,u)}}seal(i,u,t){if(!this.seed)throw new m0(V0.ClearedPair);if(!t)t=m$().randomBytes(z_u);let f=this.decodePubCurveKey(u),l=new Uint8Array($Z.length+24);l.set($Z,0),l.set(t,$Z.length);let E=m$().seal(i,t,f,this.seed),c=new Uint8Array(l.length+E.length);return c.set(l),c.set(E,l.length),c}open(i,u){if(!this.seed)throw new m0(V0.ClearedPair);if(i.length<=24+$Z.length)throw new m0(V0.InvalidEncrypted);for(let l=0;l<$Z.length;l++)if(i[l]!==$Z[l])throw new m0(V0.InvalidEncrypted);let t=this.decodePubCurveKey(u);i=i.slice($Z.length);let f=i.slice(0,24);return i=i.slice(z_u),m$().open(i,f,t,this.seed)}}function nki(i){let u=i===Ht.Curve?32:32,t=m$().randomBytes(u),f=$6.encodeSeed(i,new Uint8Array(t));return i===Ht.Curve?new zki(new Uint8Array(t)):new Hki(f)}class b_u{publicKey;constructor(i){this.publicKey=i}getPublicKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}sign(i){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.CannotSign)}verify(i,u){if(!this.publicKey)throw new m0(V0.ClearedPair);let t=$6._decode(this.publicKey);return m$().verify(i,u,t.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}function Rki(i){let u=new TextEncoder().encode(i),t=$6._decode(u),f=hZ.parsePrefix(t[0]);if(hZ.isValidPublicPrefix(f))return new b_u(u);throw new m0(V0.InvalidPublicKey)}function wht(i){let u=$6.decodeSeed(i);if(u.prefix!==Ht.Curve)throw new m0(V0.InvalidCurveSeed);if(u.buf.byteLength!==32)throw new m0(V0.InvalidSeedLen);return new zki(u.buf)}function ob(i){if($6.decodeSeed(i).prefix===Ht.Curve)return wht(i);return new Hki(i)}function $ht(i){if(i instanceof Uint8Array)i=new TextDecoder().decode(i);if(i.charAt(0)==="S")return ob(new TextEncoder().encode(i));return Rki(i)}function b7(i,u="",t=!1){let f=typeof i==="string"||i instanceof Uint8Array?$ht(i):i,l=f.getPublicKey(),E=[];if(!Array.isArray(u)){if(u!=="")E.push(u)}else E.push(...u);if(u.length>0&&E.indexOf(l.charAt(0))===-1)throw Error(`unexpected type ${l.charAt(0)} - wanted ${E}`);if(t)f.getPrivateKey();return f}function hht(i={}){return C_u({data:-1,payload:-1,subs:-1},i)}function C_u(i,...u){for(let t=0;t<u.length;t++){let f=u[t];Object.assign(i,f)}return i}function bki(i){let{exp:u,nbf:t,aud:f}=i;return C_u({},{exp:u,nbf:t,aud:f})}function Cki(i={}){if(!i.algorithm)i.algorithm=sE.v2;return i}async function M_u(i,u,t={},f={}){u=b7(u,"O",!f.signer);let l=u;if(f.signer)l=b7(f.signer,["O"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,eb.Operator,E),await Vki(c.algorithm,E,l)}async function Mki(i,u,t={},f={}){u=b7(u,"A",!f.signer);let l=u;if(f.signer)l=b7(f.signer,["O","A"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,eb.Account,E),await Vki(c.algorithm,E,l)}async function gui(i,u,t,f={},l={}){t=b7(t,"A",!l.signer);let E=t;if(l.signer)E=b7(l.signer,"A",!0);u=b7(u,"U");let c=bki(l);if(c.name=i,c.sub=u.getPublicKey(),c.nats=l.scopedUser?f:hht(f),l.signer)c.nats.issuer_account=t.getPublicKey();let w=Cki(l);return qki(w.algorithm,eb.User,c),await Vki(w.algorithm,c,E)}function qki(i,u,t){if(t.aud=t.aud||"NATS",i===sE.v2)t.nats.type=u;else t.type=u}function q_u(i){let u=i.split(".");if(u.length!==3)throw Error(`invalid jwt - ${u.length} chunks: ${i}`);let t=JSON.parse(vD.decode(u[0]));if(t.typ!=="jwt"&&t.typ!=="JWT")throw Error(`not a nats jwt - typ ${t.type}`);if(t.alg!==sE.v1&&t.alg!==sE.v2)throw Error(`not a nats jwt - alg ${t.alg}`);let f=JSON.parse(vD.decode(u[1])),l=b7(f.iss),E=vD.decode(u[2],!0),c=new TextEncoder,w=t.alg===sE.v2?`${u[0]}.${u[1]}`:u[1];if(!l.verify(c.encode(w),E))throw Error("sig verification failed");return f}function vht(i){for(let u=0;u<i.length;u++)i[u]=Math.floor(Math.random()*255)}function dht(){let i=new Uint8Array(12);vht(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}async function Vki(i,u,t){u.iss=t.getPublicKey(),u.iat=Math.floor(Date.now()/1000);let f=u;if(i===sE.v2)f.nats.version=2;let l=new TextEncoder,E=l.encode(JSON.stringify(u));if(globalThis.crypto&&globalThis.crypto.subtle){let d=await globalThis.crypto.subtle.digest("SHA-512",E);u.jti=Oui.encode(new Uint8Array(d))}else u.jti=dht();let c={typ:"JWT",alg:i},w=vD.encode(JSON.stringify(c)),$=vD.encode(JSON.stringify(u)),h=i===sE.v2?`${w}.${$}`:$,v=vD.encode(t.sign(l.encode(h)));return`${w}.${$}.${v}`}function Uui(i,u){let t=new TextDecoder().decode(u.getSeed()),f=`-----BEGIN NATS USER JWT-----
85
+ `}async function r5t(i){let u=i||process.env.SHELL?.split("/").pop()||"bash",t,f;switch(u){case"bash":{t=q5t(),f=K_u(Y_u(),".local/share/bash-completion/completions/deco");break}case"zsh":{t=V5t(),f=K_u(Y_u(),".zsh/completions/_deco");break}default:console.error(`Unsupported shell: ${u}`),console.log("Supported shells: bash, zsh"),process.exit(1)}if(M5t(J_u(f),{recursive:!0}),await C5t(f,t,"utf8"),console.log(`Completion script installed to: ${f}`),console.log(""),u==="bash")console.log("To enable completions, add to your ~/.bashrc:"),console.log(` source "${f}"`);else console.log("To enable completions, add to your ~/.zshrc:"),console.log(` fpath=("${J_u(f)}" $fpath)`),console.log(" autoload -U compinit && compinit");console.log(""),console.log("Then restart your shell.")}var L_u=()=>{};import{homedir as m5t}from"os";function a5t(i){let u=(i??"").trim();return e5t.has(u)?u:"all"}function s5t(i){let u=(i??"").trim();return o5t.has(u)?u:"development"}function S_u(i,u,t){let f=i==="worker"?0:Math.floor(u*0.6);if(t===void 0||t==="")return f;let l=Number(t);return Number.isFinite(l)&&l>=0?l:f}function Q_u(i){if(!i)return"[settings] ENCRYPTION_KEY is not set (using deterministic fallback, 32 chars) \u2014 set ENCRYPTION_KEY for production";return`[settings] ENCRYPTION_KEY is set (${i.length<=8?"***":`${i.slice(0,4)}..${i.slice(-4)}`}, ${i.length} chars)`}function cZ(i){return i==="true"||i==="1"}function p5t(i){if(i===void 0||i==="")return;return cZ(i)}function Wki(i,u,t){if(u===void 0||u==="")return;let f=Number(u);if(!Number.isSafeInteger(f)||f<=0)throw Error(`${i} must be a positive integer`);if(t!==void 0&&f>t)throw Error(`${i} must be at most ${t}`);return f}function R7(i,u,t,f){return Wki(i,u,f)??t}function iht(i,u){if(i===void 0||i==="")return u;return i==="true"||i==="1"}function mb(i){if(!i)return null;try{let t=new URL(i).hostname.replace(/^\[|\]$/g,"");if(t==="localhost"||t==="127.0.0.1"||t==="::1")return null;return i}catch{return null}}function Lki(i){return i===void 0||i===""||i==="true"||i==="1"}function rb(i,u){return i||u}function tht(i){let u=(i??"").trim(),t=u.length>0?u:"user-desktop";if(t==="cluster")return"agent-sandbox";if(!uht.has(t))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return t}function Nui(i,u){let t=i.home||u.DATA_DIR||u.DECOCMS_HOME||`${m5t()}/deco`,f=i.localMode,l=i.nodeEnv||s5t(u.NODE_ENV),E=u.NATS_URL||"nats://localhost:4222",c=p5t(u.NATS_TUNNEL_PUBLIC_ENABLED)??!!u.NATS_PUBLIC_URL;return{settings:{nodeEnv:l,port:R7("PORT",i.port||u.PORT,3000),baseUrl:i.baseUrl||u.BASE_URL,publicUrl:rb(u.STUDIO_PUBLIC_URL,u.MESH_PUBLIC_URL),dataDir:t,databasePgSsl:cZ(u.DATABASE_PG_SSL),databasePoolMax:R7("DATABASE_POOL_MAX",u.DATABASE_POOL_MAX,5),dbosPoolSize:R7("DBOS_POOL_SIZE",u.DBOS_POOL_SIZE,5),betterAuthSecret:u.BETTER_AUTH_SECRET||"",encryptionKey:u.ENCRYPTION_KEY||"",studioJwtSecret:rb(u.STUDIO_JWT_SECRET,u.MESH_JWT_SECRET),localMode:f,disableRateLimit:cZ(u.DISABLE_RATE_LIMIT),studioProvisionSecretKey:u.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(u.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map(($)=>$.trim().toLowerCase()).filter(Boolean),clickhouseUrl:u.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Wki("CLICKHOUSE_MAX_MEMORY_USAGE",u.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:u.MONITORING_OTLP_ENDPOINT,otelServiceName:u.OTEL_SERVICE_NAME||"studio",natsPublicUrl:u.NATS_PUBLIC_URL,natsTunnelPublicEnabled:c,natsTunnelSessionTtlSeconds:R7("NATS_TUNNEL_SESSION_TTL_SECONDS",u.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:u.NATS_OPERATOR_JWT,natsAccountJwt:u.NATS_ACCOUNT_JWT,natsAccountSigningKey:u.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:u.NATS_CREDS,configPath:u.CONFIG_PATH||"./config.json",aiGatewayEnabled:cZ(u.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:u.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:u.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:R7("STUDIO_SEAT_ALLOWANCE_CENTS",u.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:u.STRIPE_WEBHOOK_SECRET,stripeSecretKey:u.STRIPE_SECRET_KEY,stripeSeatPriceId:u.STRIPE_SEAT_PRICE_ID,topupFeePercent:R7("STUDIO_TOPUP_FEE_PERCENT",u.STUDIO_TOPUP_FEE_PERCENT,15,100),enableDecoImport:cZ(u.ENABLE_DECO_IMPORT),billingEnforced:cZ(u.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:iht(u.MCP_CACHE_ENABLED,l!=="development"),orgFsPublicSetsJson:u.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:cZ(u.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:R7("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",u.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:R7("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",u.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:u.S3_ENDPOINT,s3Bucket:u.S3_BUCKET,s3Region:u.S3_REGION||"auto",s3AccessKeyId:u.S3_ACCESS_KEY_ID,s3SecretAccessKey:u.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:Lki(u.S3_FORCE_PATH_STYLE),monitoringS3Bucket:u.MONITORING_S3_BUCKET,monitoringS3Endpoint:u.MONITORING_S3_ENDPOINT,monitoringS3Region:u.MONITORING_S3_REGION,monitoringS3AccessKeyId:u.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:u.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:u.MONITORING_S3_PREFIX,duckdbExtensionDirectory:u.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:u.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:Wki("DUCKDB_THREADS",u.DUCKDB_THREADS),isCli:!0,noTui:i.noTui===!0,podName:u.POD_NAME||crypto.randomUUID(),dispatchRole:a5t(rb(u.STUDIO_DISPATCH_ROLE,u.MESH_DISPATCH_ROLE)),sandboxProviderKind:tht(u.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:u.DECO_SUPABASE_URL,decoSupabaseServiceKey:u.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:u.FIRECRAWL_API_KEY,reportsInternalApiUrl:rb(u.REPORTS_INTERNAL_API_URL,u.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:rb(u.REPORTS_INTERNAL_API_KEY,u.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:u.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:u.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:u.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:u.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:u.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:u.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:u.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:mb(u.DATABASE_URL),externalNatsUrl:mb(E),skipMigrations:i.skipMigrations}}var e5t,o5t,uht;var CW=O(()=>{e5t=new Set(["all","worker","api"]);o5t=new Set(["production","development","test"]);uht=new Set(["agent-sandbox","user-desktop"])});function y0(i,u={}){let{signal:t}=u;if(t?.aborted)return Promise.reject(t.reason);return new Promise((f,l)=>{let E=()=>{clearTimeout(+w),l(t?.reason)},w=fht(()=>{t?.removeEventListener("abort",E),f()},i);t?.addEventListener("abort",E,{once:!0})})}function fht(i,u){if(u=Math.trunc(Math.max(u,0)||0),u<=Ski){let E=Number(setTimeout(i,u));return{valueOf:()=>E}}let t=Date.now(),f,l=()=>{let E=u-(Date.now()-t);f=E>Ski?Number(setTimeout(l,Ski)):Number(setTimeout(i,E))};return l(),{valueOf:()=>f}}var Ski=2147483647;function hE(i,u,t,f,l){let E=Math.min(i,u*f**t);return(1-l*Math.random())*E}async function F1(i,u){let{multiplier:t=2,maxTimeout:f=60000,maxAttempts:l=5,minTimeout:E=1000,jitter:c=1,isRetriable:w=()=>!0,signal:$}=u??{};if(!Number.isInteger(l)||l<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${l}`);if(!Number.isFinite(t)||t<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${t}`);if(Number.isNaN(f)||f<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${f}`);if(Number.isNaN(E)||E<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${E}`);if(E>f)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${E}', 'maxTimeout=${f}'`);if(Number.isNaN(c)||c<0||c>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${c}`);let h=0;while(!0){$?.throwIfAborted();try{return await i()}catch(v){if(!w(v))throw v;if(h+1>=l)throw new H6(v,l);let d=hE(f,E,h,t,c);await y0(d,$?{signal:$}:void 0)}h++}}var H6;var H_u=O(()=>{H6=class H6 extends Error{constructor(i,u){super(`Retrying exceeded the maxAttempts (${u}).`);this.name="RetryError",this.cause=i}}});var Z4=O(()=>{H_u()});class Oui{static encode(i){if(typeof i==="string")return btoa(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}static decode(i,u=!1){let t=atob(i);if(!u)return t;let f=new Uint8Array(t.length);for(let l=0;l<t.length;l++)f[l]=t.charCodeAt(l);return f}}class vD{static encode(i){return vD.toB64URLEncoding(Oui.encode(i))}static decode(i,u=!1){return Oui.decode(vD.fromB64URLEncoding(i),u)}static toB64URLEncoding(i){return i=i.replace(/=/g,""),i=i.replace(/\+/g,"-"),i.replace(/\//g,"_")}static fromB64URLEncoding(i){return i=i.replace(/_/g,"/"),i=i.replace(/-/g,"+"),i}}function Eht(i){n_u=i}function m$(){return n_u}class Zui{static encode(i){let u=0,t=0,f=new Uint8Array(i),l=new Uint8Array(i.byteLength*2),E=0;for(let c=0;c<f.byteLength;c++){t=t<<8|f[c],u+=8;while(u>=5){let w=t>>>u-5&31;l[E++]=Qki.charAt(w).charCodeAt(0),u-=5}}if(u>0){let c=t<<5-u&31;l[E++]=Qki.charAt(c).charCodeAt(0)}return l.slice(0,E)}static decode(i){let u=0,t=0,f=0,l=new Uint8Array(i),E=new Uint8Array(l.byteLength*5/8|0);for(let c=0;c<l.byteLength;c++){let w=String.fromCharCode(l[c]),$=Qki.indexOf(w);if($===-1)throw Error("Illegal Base32 character: "+l[c]);if(t=t<<5|$,u+=5,u>=8)E[f++]=t>>>u-8&255,u-=8}return E.slice(0,f)}}class ab{static checksum(i){let u=0;for(let t=0;t<i.byteLength;t++){let f=i[t];u=u<<8&65535^cht[(u>>8^f)&255]}return u}static validate(i,u){return ab.checksum(i)==u}}function R_u(){return nki(Ht.Operator)}function Bui(){return nki(Ht.Account)}function Fui(){return nki(Ht.User)}class hZ{static isValidPublicPrefix(i){return i==Ht.Server||i==Ht.Operator||i==Ht.Cluster||i==Ht.Account||i==Ht.User||i==Ht.Curve}static startsWithValidPrefix(i){let u=i[0];return u=="S"||u=="P"||u=="O"||u=="N"||u=="C"||u=="A"||u=="U"||u=="X"}static isValidPrefix(i){return this.parsePrefix(i)!==Ht.Unknown}static parsePrefix(i){switch(i){case Ht.Seed:return Ht.Seed;case Ht.Private:return Ht.Private;case Ht.Operator:return Ht.Operator;case Ht.Server:return Ht.Server;case Ht.Cluster:return Ht.Cluster;case Ht.Account:return Ht.Account;case Ht.User:return Ht.User;case Ht.Curve:return Ht.Curve;default:return Ht.Unknown}}}class $6{static encode(i,u){if(!u||!(u instanceof Uint8Array))throw new m0(V0.SerializationError);if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);return $6._encode(!1,i,u)}static encodeSeed(i,u){if(!u)throw new m0(V0.ApiError);if(!hZ.isValidPublicPrefix(i))throw new m0(V0.InvalidPrefixByte);if(u.byteLength!==32)throw new m0(V0.InvalidSeedLen);return $6._encode(!0,i,u)}static decode(i,u){if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);let t=$6._decode(u);if(t[0]!==i)throw new m0(V0.InvalidPrefixByte);return t.slice(1)}static decodeSeed(i){let u=$6._decode(i),t=$6._decodePrefix(u);if(t[0]!=Ht.Seed)throw new m0(V0.InvalidSeed);if(!hZ.isValidPublicPrefix(t[1]))throw new m0(V0.InvalidPrefixByte);return{buf:u.slice(2),prefix:t[1]}}static _encode(i,u,t){let f=i?2:1,l=t.byteLength,E=f+l+2,c=f+l,w=new Uint8Array(E);if(i){let v=$6._encodePrefix(Ht.Seed,u);w.set(v)}else w[0]=u;w.set(t,f);let $=ab.checksum(w.slice(0,c));return new DataView(w.buffer).setUint16(c,$,!0),Zui.encode(w)}static _decode(i){if(i.byteLength<4)throw new m0(V0.InvalidEncoding);let u;try{u=Zui.decode(i)}catch(c){throw new m0(V0.InvalidEncoding,c)}let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ab.validate(E,l))throw new m0(V0.InvalidChecksum);return E}static _encodePrefix(i,u){let t=i|u>>5,f=(u&31)<<3;return new Uint8Array([t,f])}static _decodePrefix(i){let u=i[0]&248,t=(i[0]&7)<<5|(i[1]&248)>>3;return new Uint8Array([u,t])}}class Hki{seed;constructor(i){this.seed=i}getRawSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=$6.decodeSeed(this.seed),u=m$().fromSeed(this.getRawSeed()),t=$6.encode(i.prefix,u.publicKey);return new TextDecoder().decode(t)}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=m$().fromSeed(this.getRawSeed());return $6.encode(Ht.Private,i.secretKey)}sign(i){if(!this.seed)throw new m0(V0.ClearedPair);let u=m$().fromSeed(this.getRawSeed());return m$().sign(i,u.secretKey)}verify(i,u){if(!this.seed)throw new m0(V0.ClearedPair);let t=m$().fromSeed(this.getRawSeed());return m$().verify(i,u,t.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}class zki{seed;constructor(i){this.seed=i}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encode(Ht.Private,this.seed)}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=m$().scalarBaseMultiply(this.seed),u=$6.encode(Ht.Curve,i);return new TextDecoder().decode(u)}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encodeSeed(Ht.Curve,this.seed)}sign(){throw new m0(V0.InvalidCurveOperation)}verify(){throw new m0(V0.InvalidCurveOperation)}decodePubCurveKey(i){try{let u=Zui.decode(new TextEncoder().encode(i));if(u.byteLength!==35)throw new m0(V0.InvalidCurveKey);if(u[0]!==Ht.Curve)throw new m0(V0.InvalidPublicKey);let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ab.validate(E,l))throw new m0(V0.InvalidChecksum);return E.slice(1)}catch(u){throw new m0(V0.InvalidRecipient,u)}}seal(i,u,t){if(!this.seed)throw new m0(V0.ClearedPair);if(!t)t=m$().randomBytes(z_u);let f=this.decodePubCurveKey(u),l=new Uint8Array($Z.length+24);l.set($Z,0),l.set(t,$Z.length);let E=m$().seal(i,t,f,this.seed),c=new Uint8Array(l.length+E.length);return c.set(l),c.set(E,l.length),c}open(i,u){if(!this.seed)throw new m0(V0.ClearedPair);if(i.length<=24+$Z.length)throw new m0(V0.InvalidEncrypted);for(let l=0;l<$Z.length;l++)if(i[l]!==$Z[l])throw new m0(V0.InvalidEncrypted);let t=this.decodePubCurveKey(u);i=i.slice($Z.length);let f=i.slice(0,24);return i=i.slice(z_u),m$().open(i,f,t,this.seed)}}function nki(i){let u=i===Ht.Curve?32:32,t=m$().randomBytes(u),f=$6.encodeSeed(i,new Uint8Array(t));return i===Ht.Curve?new zki(new Uint8Array(t)):new Hki(f)}class b_u{publicKey;constructor(i){this.publicKey=i}getPublicKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}sign(i){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.CannotSign)}verify(i,u){if(!this.publicKey)throw new m0(V0.ClearedPair);let t=$6._decode(this.publicKey);return m$().verify(i,u,t.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}function Rki(i){let u=new TextEncoder().encode(i),t=$6._decode(u),f=hZ.parsePrefix(t[0]);if(hZ.isValidPublicPrefix(f))return new b_u(u);throw new m0(V0.InvalidPublicKey)}function wht(i){let u=$6.decodeSeed(i);if(u.prefix!==Ht.Curve)throw new m0(V0.InvalidCurveSeed);if(u.buf.byteLength!==32)throw new m0(V0.InvalidSeedLen);return new zki(u.buf)}function ob(i){if($6.decodeSeed(i).prefix===Ht.Curve)return wht(i);return new Hki(i)}function $ht(i){if(i instanceof Uint8Array)i=new TextDecoder().decode(i);if(i.charAt(0)==="S")return ob(new TextEncoder().encode(i));return Rki(i)}function b7(i,u="",t=!1){let f=typeof i==="string"||i instanceof Uint8Array?$ht(i):i,l=f.getPublicKey(),E=[];if(!Array.isArray(u)){if(u!=="")E.push(u)}else E.push(...u);if(u.length>0&&E.indexOf(l.charAt(0))===-1)throw Error(`unexpected type ${l.charAt(0)} - wanted ${E}`);if(t)f.getPrivateKey();return f}function hht(i={}){return C_u({data:-1,payload:-1,subs:-1},i)}function C_u(i,...u){for(let t=0;t<u.length;t++){let f=u[t];Object.assign(i,f)}return i}function bki(i){let{exp:u,nbf:t,aud:f}=i;return C_u({},{exp:u,nbf:t,aud:f})}function Cki(i={}){if(!i.algorithm)i.algorithm=sE.v2;return i}async function M_u(i,u,t={},f={}){u=b7(u,"O",!f.signer);let l=u;if(f.signer)l=b7(f.signer,["O"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,eb.Operator,E),await Vki(c.algorithm,E,l)}async function Mki(i,u,t={},f={}){u=b7(u,"A",!f.signer);let l=u;if(f.signer)l=b7(f.signer,["O","A"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,eb.Account,E),await Vki(c.algorithm,E,l)}async function gui(i,u,t,f={},l={}){t=b7(t,"A",!l.signer);let E=t;if(l.signer)E=b7(l.signer,"A",!0);u=b7(u,"U");let c=bki(l);if(c.name=i,c.sub=u.getPublicKey(),c.nats=l.scopedUser?f:hht(f),l.signer)c.nats.issuer_account=t.getPublicKey();let w=Cki(l);return qki(w.algorithm,eb.User,c),await Vki(w.algorithm,c,E)}function qki(i,u,t){if(t.aud=t.aud||"NATS",i===sE.v2)t.nats.type=u;else t.type=u}function q_u(i){let u=i.split(".");if(u.length!==3)throw Error(`invalid jwt - ${u.length} chunks: ${i}`);let t=JSON.parse(vD.decode(u[0]));if(t.typ!=="jwt"&&t.typ!=="JWT")throw Error(`not a nats jwt - typ ${t.type}`);if(t.alg!==sE.v1&&t.alg!==sE.v2)throw Error(`not a nats jwt - alg ${t.alg}`);let f=JSON.parse(vD.decode(u[1])),l=b7(f.iss),E=vD.decode(u[2],!0),c=new TextEncoder,w=t.alg===sE.v2?`${u[0]}.${u[1]}`:u[1];if(!l.verify(c.encode(w),E))throw Error("sig verification failed");return f}function vht(i){for(let u=0;u<i.length;u++)i[u]=Math.floor(Math.random()*255)}function dht(){let i=new Uint8Array(12);vht(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}async function Vki(i,u,t){u.iss=t.getPublicKey(),u.iat=Math.floor(Date.now()/1000);let f=u;if(i===sE.v2)f.nats.version=2;let l=new TextEncoder,E=l.encode(JSON.stringify(u));if(globalThis.crypto&&globalThis.crypto.subtle){let d=await globalThis.crypto.subtle.digest("SHA-512",E);u.jti=Oui.encode(new Uint8Array(d))}else u.jti=dht();let c={typ:"JWT",alg:i},w=vD.encode(JSON.stringify(c)),$=vD.encode(JSON.stringify(u)),h=i===sE.v2?`${w}.${$}`:$,v=vD.encode(t.sign(l.encode(h)));return`${w}.${$}.${v}`}function Uui(i,u){let t=new TextDecoder().decode(u.getSeed()),f=`-----BEGIN NATS USER JWT-----
86
86
  ${i}
87
87
  ------END NATS USER JWT------
88
88
 
@@ -83538,7 +83538,7 @@ ${w}`;v(B);return}if(c(null,F),t.strategy==="count"){if($--,$===0)v()}if(t.strat
83538
83538
  `);function v(d){if(t===void 0)return!0;let D=Pq(d),_=D&&Pq(t)?bau(t):t,N=D?bau(d):Cau(d),Z=Drt(_,N);return Z===""||!Z.startsWith("..")&&!vrt(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(l6i)},reconcile(){let d=Date.now();for(let D of l.all().map(l6i)){if(!v(D.sandboxPath)){E.run({$handle:D.handle,$now:d});continue}if(!Pq(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(l6i)},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||!Pq(Z.sandboxPath))continue;if(Z.branch===null||Z.branch.trim()===""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!W_(Z.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let B=W_(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=qau(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}$rt(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 _=l6i(D),N=0,Z=null;if(Pq(_.sandboxPath)&&W_(_.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let B=W_(_.sandboxPath,["status","--porcelain"]);if(B.ok){let F=B.stdout.trim();N=F===""?0:F.split(`
83539
83539
  `).length}if(_.branch!==null&&_.branch.trim()!=="")Z=qau(_.sandboxPath,_.branch)}return{handle:_.handle,branch:_.branch,sandboxPath:_.sandboxPath,dirtyCount:N,merged:Z}},close(){u.close()}}}var Ybi=()=>{};function Zrt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function rau(i,u){if(process.platform==="win32")return;for(let t of Zrt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var mau=()=>{};import{existsSync as Brt,readdirSync as Frt}from"fs";import{rm as grt}from"fs/promises";import{join as eau}from"path";async function aau(i,u={}){let t=u.detach??Urt,f=u.exists??Brt,l=u.readdir??((w)=>Frt(w)),E=u.rm??((w)=>grt(w,{recursive:!0,force:!0})),c=eau(i,"org");if(f(c))for(let w of l(c))t(eau(c,w));await E(i)}var Urt=(i)=>rau(i,process.platform==="darwin");var oau=O(()=>{mau()});import{join as Trt}from"path";function sau(i){let u=i.purge??aau;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await F1(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??Trt(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 pau=O(()=>{Z4();oau()});import{randomBytes as Art}from"crypto";import{mkdir as Prt}from"fs/promises";import{createServer as yrt}from"net";import{join as Grt}from"path";function iou(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function uou(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function tou(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 Irt(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 xrt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:Irt(i.repo?.cloneUrl)}}function fou(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??krt,l=i.fetchImpl??fetch,E=i.resolvePreviewUrl??((N,Z)=>`http://127.0.0.1:${Z}`),c=(N)=>Grt(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=xrt(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,U;try{await Prt(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)"}`),U=Art(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:U,offloadAllowedHosts:N.offloadAllowedHosts??[],offloadAllowSameHostDev:N.offloadAllowSameHostDev??!1,orgFsConfigJson:N.orgFsConfigJson}));try{await i.waitForHealth(F)}catch(j){throw iou("the sandbox didn't come online in time",j)}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},U)}catch(j){throw iou(uou(j)?"configuration timed out":"the sandbox rejected its configuration",j)}}catch(k){if((uou(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:tou(k),sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),w({handle:N.handle,status:"failed",sandboxPath:B,port:null,previewUrl:null,...Z,error:tou(k)}),k}if(!g||F===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${F}`,A=E(N.handle,F);console.log(`[user-desktop] ready handle=${N.handle} port=${F} sandboxApiUrl=${T} previewUrl=${A}`);let G={handle:N.handle,port:F,process:g,sandboxApiUrl:T,previewUrl:A,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:U,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:T,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 krt(){return new Promise((i,u)=>{let t=yrt();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 lou=()=>{};import{randomUUID as jrt}from"crypto";import{hostname as Xrt}from"os";async function Eou(i){let u=Xrt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=HMu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=c6i({path:E6i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,E=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let c=0,w=fou({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(j,C)=>c>0?`http://${j}.localhost:${c}`:`http://127.0.0.1:${C}`,spawnDaemon:async(j)=>{let C={DAEMON_BOOT_ID:jrt(),APP_ROOT:j.workdir,PROXY_PORT:String(j.port),DAEMON_TOKEN:j.daemonToken,OFFLOAD_ALLOWED_HOSTS:j.offloadAllowedHosts.join(","),...j.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(j.orgFsConfigJson){let S=await bMu(i.dataDir);if(S)C.ORGFS_CONFIG=j.orgFsConfigJson,C.ORGFS_RCLONE_PATH=S}let K=await t({workdir:j.workdir,env:C,daemonPort:j.port});return{port:j.port,kill:(S)=>K.kill(S),exited:K.exited.then(()=>{return})}},postConfig:async(j,C,K,S)=>{let r={port:C};if(K.workload)r.runtime=K.workload.runtime,r.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Q={application:r},fi=gh(K.operator??null);if(fi)Q.operator=fi;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 P_(`http://127.0.0.1:${j}`,S,Q)},waitForHealth:async(j)=>{await lli(`http://127.0.0.1:${j}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),$=await Xau({port:i.port,lookupSandboxPort:(j)=>w.proxyPort(j)});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=MMu({provider:w}),v=async()=>{let j=await A_({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!j)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 j.accessToken},d=await nau(i.dataDir),D=process.env.npm_package_version??"0.0.0",_=await Kbi(),N=Hau(_,{onChange:(j)=>{console.log(`[link-daemon] capabilities detected: +${j.join(",")} (now: ${_.join(",")})`)}}),Z=Tni({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 U=await Fau(g);console.log("[link-daemon] active transport=tunnel");let T,A=new Promise((j)=>{T=j}),G=!1,k=async()=>{if(G)return;G=!0,F.abort(),console.log(`
83540
83540
  Shutting down\u2026`),N();try{await U.close()}catch{}try{await $.stop()}catch{}try{await w.shutdown()}catch{}try{Z.close()}catch{}E(),T(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()},U.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!G)console.error("Cluster connection closed permanently; exiting."),k()});let I=sau({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 cou=O(()=>{Nni();rM();zMu();CMu();qMu();Ani();gau();Jau();zau();Rau();VM();Ybi();pau();lou()});function Wbi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as Jrt}from"net";async function Yrt(i){for(let u of Krt)if(await Lbi(i,u))return u;return null}async function wou(i,{intervalMs:u=1000,sleepFn:t=y0}={}){for(;;){let f=await Yrt(i);if(f)return f;await t(u)}}function Lbi(i,u){return new Promise((t)=>{let f=Jrt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var Krt;var Sbi=O(()=>{Z4();Krt=["localhost","127.0.0.1","0.0.0.0"]});function $ou(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function Wrt(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 hou(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`:","",` ${Wrt(i,u)}`].join(`
83541
- `)}var Qbi;var vou=O(()=>{Qbi=class Qbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var IS;var w6i=O(()=>{IS={name:"decocms",version:"4.155.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:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var yq={};yi(yq,{printBanner:()=>Qrt,bannerLines:()=>dou,BANNER_LINES:()=>$6i,BANNER_GRADIENT:()=>h6i});function Srt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function dou(i){let u=$6i.map((t,f)=>{let[l,E,c]=Srt(h6i[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 Qrt(i){console.log("");for(let u of dou(i))console.log(u);console.log("")}var $6i,h6i;var xS=O(()=>{$6i=[" \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 "],h6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Hrt,Text as Dou}from"ink";import{jsx as zrt,jsxs as _ou}from"react/jsx-runtime";function v6i({version:i}){return _ou(Hrt,{flexDirection:"column",marginTop:1,children:[$6i.map((u,t)=>zrt(Dou,{color:h6i[t],children:u},t)),_ou(Dou,{dimColor:!0,children:[" v",i]})]})}var Hbi=O(()=>{xS()});function Nou(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 kS(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Oou(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 Zou(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 bbi={};yi(bbi,{subscribeLinkState:()=>zbi,setSelectedHandle:()=>nbi,setRemoving:()=>_6i,setPersistedSandboxes:()=>ert,setPendingConfirm:()=>Iq,setMachine:()=>qrt,setLogPath:()=>rrt,setLinkActions:()=>mrt,setIngress:()=>Mrt,setDaemonError:()=>Vrt,setClusterUrl:()=>Crt,setCluster:()=>brt,setActionError:()=>D6i,resetLinkStateForTests:()=>ort,removeSandboxRow:()=>Rbi,pushSandboxEvent:()=>art,getLinkState:()=>Gq,applySandboxEvent:()=>Bou});function Rrt(i){return i==="spawning"||i==="ready"||i==="failed"}function Bou(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 Fou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:nrt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Cw(){for(let i of d6i)i()}function Gq(){return Ef}function zbi(i){return d6i.add(i),()=>d6i.delete(i)}function brt(i){Ef={...Ef,cluster:i},Cw()}function Crt(i){Ef={...Ef,clusterUrl:i},Cw()}function Mrt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},Cw()}function qrt(i){Ef={...Ef,machine:i},Cw()}function Vrt(i){Ef={...Ef,daemonError:i},Cw()}function rrt(i){Ef={...Ef,logPath:i},Cw()}function nbi(i){Ef={...Ef,selectedHandle:i},Cw()}function Iq(i){Ef={...Ef,pendingConfirm:i},Cw()}function D6i(i){Ef={...Ef,actionError:i},Cw()}function _6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},Cw()}function mrt(i){Ef={...Ef,actions:i},Cw()}function Rbi(i){let u=kS(Ef.sandboxes),t=Zou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Cw()}function ert(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 Ef.sandboxes)if(Rrt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},Cw()}function art(i){Ef={...Ef,sandboxes:Bou(Ef.sandboxes,i)},Cw()}function ort(){Ef=Fou(),d6i.clear()}var nrt=20,Ef,d6i;var xq=O(()=>{Ef=Fou(),d6i=new Set});import{spawn as srt}from"child_process";function prt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function gou(i,u=process.platform){let t=prt(u);try{srt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Uou=()=>{};function Tou(i,u={}){let t=u.openUrl??gou,f=Gq(),l=kS(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":nbi(Oou(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);D6i(null),Iq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Iq(null),w===null||!c)return;_6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Rbi(w.handle);else _6i(w.handle,!1),D6i($.error)});return}case"confirmNo":Iq(null);return;case"quit":if(c)c.quit();return}}var Aou=O(()=>{xq();Uou()});function Pou(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 you={};yi(you,{LinkApp:()=>fmt});import{Box as C1,Text as vl,useInput as imt}from"ink";import{useSyncExternalStore as umt}from"react";import{jsx as Xf,jsxs as Xh}from"react/jsx-runtime";function tmt(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 fmt(){let i=umt(zbi,Gq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=kS(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return imt((l,E)=>{let c=Pou(l,E,i.pendingConfirm!==null);if(c!==null)Tou(c)}),Xh(C1,{flexDirection:"column",children:[Xf(v6i,{version:IS.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Xh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Xh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Xh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Xh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Xh(C1,{flexDirection:"column",children:[Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=tmt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Xh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:Nou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var jS;var Gou=O(()=>{w6i();Hbi();Aou();xq();jS={project:18,branch:22,status:14}});var Iou={};yi(Iou,{runLinkCommand:()=>dmt});import{closeSync as lmt,mkdirSync as Emt,openSync as cmt,writeSync as wmt}from"fs";import{homedir as $mt}from"os";import{join as Cbi}from"path";function hmt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{wmt(u,`${Wbi(l)}
83541
+ `)}var Qbi;var vou=O(()=>{Qbi=class Qbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var IS;var w6i=O(()=>{IS={name:"decocms",version:"4.155.4",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:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var yq={};yi(yq,{printBanner:()=>Qrt,bannerLines:()=>dou,BANNER_LINES:()=>$6i,BANNER_GRADIENT:()=>h6i});function Srt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function dou(i){let u=$6i.map((t,f)=>{let[l,E,c]=Srt(h6i[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 Qrt(i){console.log("");for(let u of dou(i))console.log(u);console.log("")}var $6i,h6i;var xS=O(()=>{$6i=[" \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 "],h6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Hrt,Text as Dou}from"ink";import{jsx as zrt,jsxs as _ou}from"react/jsx-runtime";function v6i({version:i}){return _ou(Hrt,{flexDirection:"column",marginTop:1,children:[$6i.map((u,t)=>zrt(Dou,{color:h6i[t],children:u},t)),_ou(Dou,{dimColor:!0,children:[" v",i]})]})}var Hbi=O(()=>{xS()});function Nou(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 kS(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Oou(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 Zou(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 bbi={};yi(bbi,{subscribeLinkState:()=>zbi,setSelectedHandle:()=>nbi,setRemoving:()=>_6i,setPersistedSandboxes:()=>ert,setPendingConfirm:()=>Iq,setMachine:()=>qrt,setLogPath:()=>rrt,setLinkActions:()=>mrt,setIngress:()=>Mrt,setDaemonError:()=>Vrt,setClusterUrl:()=>Crt,setCluster:()=>brt,setActionError:()=>D6i,resetLinkStateForTests:()=>ort,removeSandboxRow:()=>Rbi,pushSandboxEvent:()=>art,getLinkState:()=>Gq,applySandboxEvent:()=>Bou});function Rrt(i){return i==="spawning"||i==="ready"||i==="failed"}function Bou(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 Fou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:nrt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Cw(){for(let i of d6i)i()}function Gq(){return Ef}function zbi(i){return d6i.add(i),()=>d6i.delete(i)}function brt(i){Ef={...Ef,cluster:i},Cw()}function Crt(i){Ef={...Ef,clusterUrl:i},Cw()}function Mrt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},Cw()}function qrt(i){Ef={...Ef,machine:i},Cw()}function Vrt(i){Ef={...Ef,daemonError:i},Cw()}function rrt(i){Ef={...Ef,logPath:i},Cw()}function nbi(i){Ef={...Ef,selectedHandle:i},Cw()}function Iq(i){Ef={...Ef,pendingConfirm:i},Cw()}function D6i(i){Ef={...Ef,actionError:i},Cw()}function _6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},Cw()}function mrt(i){Ef={...Ef,actions:i},Cw()}function Rbi(i){let u=kS(Ef.sandboxes),t=Zou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Cw()}function ert(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 Ef.sandboxes)if(Rrt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},Cw()}function art(i){Ef={...Ef,sandboxes:Bou(Ef.sandboxes,i)},Cw()}function ort(){Ef=Fou(),d6i.clear()}var nrt=20,Ef,d6i;var xq=O(()=>{Ef=Fou(),d6i=new Set});import{spawn as srt}from"child_process";function prt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function gou(i,u=process.platform){let t=prt(u);try{srt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Uou=()=>{};function Tou(i,u={}){let t=u.openUrl??gou,f=Gq(),l=kS(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":nbi(Oou(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);D6i(null),Iq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Iq(null),w===null||!c)return;_6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Rbi(w.handle);else _6i(w.handle,!1),D6i($.error)});return}case"confirmNo":Iq(null);return;case"quit":if(c)c.quit();return}}var Aou=O(()=>{xq();Uou()});function Pou(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 you={};yi(you,{LinkApp:()=>fmt});import{Box as C1,Text as vl,useInput as imt}from"ink";import{useSyncExternalStore as umt}from"react";import{jsx as Xf,jsxs as Xh}from"react/jsx-runtime";function tmt(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 fmt(){let i=umt(zbi,Gq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=kS(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return imt((l,E)=>{let c=Pou(l,E,i.pendingConfirm!==null);if(c!==null)Tou(c)}),Xh(C1,{flexDirection:"column",children:[Xf(v6i,{version:IS.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Xh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Xh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Xh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Xh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Xh(C1,{flexDirection:"column",children:[Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=tmt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Xh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:Nou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var jS;var Gou=O(()=>{w6i();Hbi();Aou();xq();jS={project:18,branch:22,status:14}});var Iou={};yi(Iou,{runLinkCommand:()=>dmt});import{closeSync as lmt,mkdirSync as Emt,openSync as cmt,writeSync as wmt}from"fs";import{homedir as $mt}from"os";import{join as Cbi}from"path";function hmt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{wmt(u,`${Wbi(l)}
83542
83542
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(Wbi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function vmt(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 dmt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??Cbi($mt(),"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 Lbi(u,"127.0.0.1"))throw new Qbi(u);let $=Cbi(t,"sandboxes");c=c6i({path:E6i(t),managedSandboxRoot:$});let h=await ili({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await vmt(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(() => (Gou(),you)),{pushSandboxEvent:F,setCluster:g,setClusterUrl:U,setDaemonError:T,setIngress:A,setLogPath:G,setMachine:k,setPersistedSandboxes:I}=await Promise.resolve().then(() => (xq(),bbi));Emt(t,{recursive:!0});let j=Cbi(t,"link.log");E=cmt(j,"w"),G(j),I(v),U(f),g("connecting"),d={onEvent:(C)=>F(C),onIngress:(C)=>A(C,`http://127.0.0.1:${C}`),onCluster:(C)=>g(C),onMachine:(C)=>k(C)},l=hmt(T,E),N(Z(B),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:N}=await Promise.resolve().then(() => (xS(),yq));N(i.version??"0.0.0")}w();let D=process.env.DECOCMS_LINK_MANAGED!=="1",_=await Eou({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(() => (xq(),bbi));N({stopSandbox:_.stopSandbox,removeSandbox:_.removeSandbox,inspectSandbox:_.inspectSandbox,quit:_.stop})}return await _.stopped}catch($){return l?.(),console.error($ou($)?hou(u):$ instanceof Error?$.message:String($)),1}finally{if(l?.(),E!==void 0)try{lmt(E)}catch{}w()}}var xou=O(()=>{_ni();cou();Sbi();vou();Ybi()});var ebi={};yi(ebi,{resolveDevLinkClusterUrl:()=>Omt,populateDevLinkToxiProxy:()=>You,isDevLinkToxiProxyEnabled:()=>Nmt,ensureDevLinkToxiProxy:()=>Umt,buildDevLinkToxiProxyConfig:()=>Jou,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>jou,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Xou});function Nmt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Mbi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Jou(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=Mbi(i.apiPort,"apiPort"),f=Mbi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=Mbi(Number.parseInt(u.port,10),"upstreamPort"),E=`http://127.0.0.1:${l}`,c=`http://127.0.0.1:${f}`;return{serviceName:jou,proxyName:Xou,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 Omt(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 mbi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Kou(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Kou(i.cause)}async function Vbi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${mbi(l)}`,{cause:l})}}async function You(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await Vbi(u,"reset",t,{method:"POST"});await qbi(f,"reset",t);let l=`${i.apiUrl}/populate`,E=await Vbi(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 Zmt(i,u){let t=`${i.apiUrl}/version`;try{await F1(async()=>{let f=await Vbi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(_mt)});await qbi(f,"readiness check",t)},{maxAttempts:Dmt,minTimeout:kou,maxTimeout:kou,multiplier:1,jitter:0,isRetriable:(f)=>!Kou(f)})}catch(f){let l=f instanceof H6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${mbi(l)}`,{cause:l})}}async function Bmt(i){if(i===null)return"";return await new Response(i).text()}async function rbi(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}): ${mbi(w)}`,{cause:w})}})(),[l,E]=await Promise.all([f.exited,Bmt(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 Fmt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await rbi(["rm","-f",t],{ignoreFailure:!0}),await rbi(["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 gmt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await rbi(["rm","-f",t],{ignoreFailure:!0})}async function Umt(i){let u=Jou(i),t=i.startDaemon??Fmt,f=i.stopDaemon??(i.startDaemon===void 0?gmt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await Zmt(u,l),await You(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 jou="ToxiProxy",Xou="dev_link_studio",Dmt=20,kou=100,_mt=100;var abi=O(()=>{Z4()});var Wou={};yi(Wou,{migrateBetterAuth:()=>obi});import{getMigrations as Tmt}from"better-auth/db";import{sso as Amt}from"@better-auth/sso";import{organization as Pmt}from"@decocms/better-auth/plugins";import{admin as ymt,apiKey as Gmt,jwt as Imt,magicLink as xmt,mcp as kmt,openAPI as jmt}from"better-auth/plugins";import{emailOTP as Xmt}from"better-auth/plugins/email-otp";async function obi(i){let t={database:nM(i||F_()),plugins:[Pmt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),ymt(),Gmt(),Imt(),jmt(),kmt({loginPage:"/login"}),Amt(),xmt({sendMagicLink:async()=>{}}),Xmt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:E}=await Tmt(t);if(!f.length&&!l.length)return"up to date";return await E(),`${l.length+f.length} table(s) migrated`}var sbi=O(()=>{b6()});var pbi={};yi(pbi,{up:()=>Jmt,down:()=>Kmt});import{sql as Fd}from"kysely";async function Jmt(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(Fd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Fd`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(Fd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Fd`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(Fd`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(Fd`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(Fd`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(Fd`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(Fd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Fd`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 Kmt(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 Lou=()=>{};var iCi={};yi(iCi,{up:()=>Ymt,down:()=>Wmt});import{sql as Sou}from"kysely";async function Ymt(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(Sou`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Sou`CURRENT_TIMESTAMP`)).execute()}async function Wmt(i){await i.schema.dropTable("organization_settings").execute()}var Qou=()=>{};var uCi={};yi(uCi,{up:()=>Lmt,down:()=>Smt});async function Lmt(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 Smt(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 tCi={};yi(tCi,{up:()=>Qmt,down:()=>Hmt});async function Qmt(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 Hmt(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 fCi={};yi(fCi,{up:()=>zmt,down:()=>nmt});async function zmt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function nmt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var lCi={};yi(lCi,{up:()=>bmt,down:()=>Cmt});import{sql as Rmt}from"kysely";async function bmt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",Rmt`text`).execute()}async function Cmt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Hou=()=>{};var ECi={};yi(ECi,{up:()=>Mmt,down:()=>qmt});async function Mmt(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 qmt(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 cCi={};yi(cCi,{up:()=>Vmt,down:()=>rmt});import{sql as kq}from"kysely";async function Vmt(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(kq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(kq`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(kq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(kq`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(kq`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 rmt(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 zou=()=>{};var wCi={};yi(wCi,{up:()=>emt,down:()=>amt});import{sql as mmt}from"kysely";async function emt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function amt(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(mmt`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 nou=()=>{};var $Ci={};yi($Ci,{up:()=>omt,down:()=>smt});import{sql as N6i}from"kysely";async function omt(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(N6i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(N6i`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(N6i`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 N6i`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 smt(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 Rou=()=>{};var hCi={};yi(hCi,{up:()=>pmt,down:()=>iet});async function pmt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function iet(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var vCi={};yi(vCi,{up:()=>uet,down:()=>tet});import{sql as O6i}from"kysely";async function uet(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await O6i`
83543
83543
  UPDATE gateways
83544
83544
  SET tool_selection_mode = CASE
@@ -1053,7 +1053,7 @@ var $e=Object.defineProperty;var Xe=(t)=>t;function Qe(t,n){this[t]=Xe.bind(null
1053
1053
  SELECT id, app_name, connection_url, title, slug
1054
1054
  FROM connections
1055
1055
  WHERE connection_type != 'VIRTUAL'
1056
- `.execute(t),u=0;for(let _ of n.rows){let e=sy(_);if(e===_.slug)continue;await Te`UPDATE connections SET slug = ${e} WHERE id = ${_.id}`.execute(t),u++}if(u>0)console.log(`[152] repaired ${u} drifted connection slug(s)`)}async function vy(){}var Ui={};i(Ui,{up:()=>ly,down:()=>dy});import{sql as qy}from"kysely";async function ly(t){await qy`CREATE INDEX idx_tmp_latest_assistant_text ON thread_message_parts (thread_id, created_at DESC, id DESC) WHERE role = 'assistant' AND kind = 'text'`.execute(t)}async function dy(t){await t.schema.dropIndex("idx_tmp_latest_assistant_text").execute()}var by={"001-initial-schema":Kt,"002-organization-settings":ct,"003-connection-schema-align":pt,"004-remove-models-binding":zt,"005-connection-configuration":Pt,"006-add-views-to-settings":rt,"007-monitoring-logs":Ut,"008-event-bus":jt,"009-drop-audit-logs":Dt,"010-gateways":Jt,"011-gateway-icon":Lt,"012-gateway-tool-selection-mode":Rt,"013-monitoring-user-agent-gateway":Wt,"014-gateway-resources-prompts":kt,"015-monitoring-properties":$t,"016-downstream-token-client-info":Xt,"017-downstream-token-remove-userid":Qt,"018-drop-gateway-tool-selection-strategy":Zt,"019-remove-gateway-is-default":Ft,"020-enabled-plugins":Ht,"021-threads":Mt,"022-rename-gateway-to-virtual-mcp":Yt,"023-optimize-thread-indexes":ht,"024-consolidate-virtual-mcp":Bt,"025-add-monitoring-virtual-mcp-id":At,"026-restrict-child-connection-delete":St,"027-update-management-mcp-url":Gt,"028-update-management-mcp-to-self":gt,"029-add-updated-by-to-connections":st,"030-member-tags":Vt,"031-add-dependency-mode":vt,"032-projects":qt,"033-thread-status":lt,"034-monitoring-dashboards":dt,"035-project-connections":bt,"036-update-registry-url":tn,"037-ai-provider-keys":nn,"038-oauth-pkce-states":un,"039-automations":en,"040-replace-next-run-at-with-last-run-at":_n,"041-ai-provider-keys-unique-constraint":xn,"042-rename-mesh-mcp-to-cms-mcp":an,"043-rename-cms-mcp-to-deco-cms":mn,"044-drop-connections-tools-column":on,"045-thread-context-start-message":yn,"046-remove-object-storage-plugin":Cn,"047-add-next-run-at":Nn,"048-merge-projects-agents":En,"049-remove-org-admin-projects":wn,"050-durable-agent-runs":Kn,"051-org-sso":pn,"052-thread-agent-ids":zn,"053-registry-config":Pn,"054-connection-slug":Un,"055-spaces":jn,"056-automation-project-scope":Dn,"057-thread-virtual-mcp-id":Jn,"058-trigger-callback-tokens":Ln,"059-kv":Rn,"060-member-index":Wn,"061-downstream-token-connection-index":kn,"062-private-registry":$n,"063-event-subscriptions-enabled-boolean":Xn,"064-brand-context":Qn,"065-organization-domains":Zn,"066-brand-context-structured":Fn,"067-threads-metadata":Hn,"068-threads-branch":Mn,"069-sandbox-runner-state":Yn,"070-model-categories":hn,"071-default-home-agents":Bn,"072-ai-provider-key-preset-id":An,"073-backfill-basic-usage-roles":Sn,"074-sandbox-runner-state-handle-nonunique":On,"075-thread-inflight-async-jobs":Gn,"076-automations-drop-agent-json":In,"077-tier-only-model-selection":sn,"078-automation-tool-call-kind":Vn,"079-strip-legacy-freestyle-vm-map-entries":vn,"080-async-research-jobs":qn,"081-async-research-jobs-result-content":ln,"082-secrets":dn,"083-thread-run-locally":bn,"084-drop-host-sandbox-rows":tu,"085-rename-runner-kind":nu,"086-thread-pins-and-vm-map-rekey":uu,"087-fix-vm-map-rekey":iu,"088-purge-cli-activate-keys":eu,"089-rename-remote-user-to-desktop":_u,"090-automation-webhook-triggers":xu,"091-organization-domains-allow-multi":au,"092-sandbox-naming-uniformization":mu,"093-backfill-global-search-basic-usage":ou,"094-org-file-configs":Tu,"095-remove-automation-tool-call-kind":Cu,"096-org-file-configs-public-url-base":Nu,"097-drop-local-docker-sandbox-state":Eu,"098-thread-message-parts":wu,"099-run-fence":Ku,"100-link-transport":cu,"101-cancel-requested-at":pu,"102-observational-agent":zu,"103-revert-observational-agent":Pu,"104-agent-sandbox-provider-kind":Uu,"105-org-fs":ju,"106-automation-tools":Du,"107-org-fs-public-org":Ju,"108-automation-max-agent-steps":Lu,"109-thread-message-parts-per-message-seq":Ru,"110-backfill-ghs-token-expiry":Wu,"111-org-fs-thread-id":ku,"112-org-file-configs-credential-type":$u,"113-thread-failure-reason":Xu,"114-run-acked-seq":Qu,"115-thread-projected-seq":Zu,"116-org-sites":Fu,"117-org-file-configs-site-slug":Hu,"118-organization-domains-multi-verify":Mu,"119-organization-join-requests":Yu,"120-org-fs-read-public":hu,"121-org-fs-share-password":Bu,"122-split-web-research-tier":Ou,"123-connection-credential-vault":Gu,"124-drop-thread-projected-seq":Iu,"125-github-child-single-parent":gu,"126-task-board":Vu,"127-task-board-due-date":vu,"128-reports-only":qu,"129-task-board-assigned-by":lu,"130-task-board-thread-id":du,"131-task-board-thread-link-cascade":bu,"132-task-board-item-prs":ti,"133-dedupe-duplicate-members":ni,"134-drop-task-board-enabled":ui,"135-task-board-item-fk-cascade":ii,"136-task-board-import-idempotency":ei,"137-agent-sandbox-runner-state":_i,"138-agent-sandbox-sessions":xi,"139-organization-billing":ai,"140-seat-change-log":mi,"141-benefits-sync-pending":oi,"142-stripe-event-watermark":yi,"143-armed-report-url":Ti,"144-benefits-pending-index":Ci,"145-user-model-preferences":Ni,"146-organization-main-agent":fi,"147-drop-agent-sandbox-tables":Ei,"148-org-flags":wi,"149-task-board-item-sort-order":Ki,"150-task-board-activity":ci,"151-task-board-tags":zi,"152-repair-connection-slug":ri,"153-task-board-latest-assistant-part-index":Ui},ji=by;import{getMigrations as QT}from"better-auth/db";import{sso as ZT}from"@better-auth/sso";import{organization as FT}from"@decocms/better-auth/plugins";import{admin as HT,apiKey as MT,jwt as YT,magicLink as hT,mcp as BT,openAPI as AT}from"better-auth/plugins";import{emailOTP as ST}from"better-auth/plugins/email-otp";import{Kysely as JT,PostgresDialect as re}from"kysely";import{Pool as Ue}from"pg";import{homedir as tT}from"os";var nT=new Set(["all","worker","api"]);function uT(t){let n=(t??"").trim();return nT.has(n)?n:"all"}var iT=new Set(["production","development","test"]);function eT(t){let n=(t??"").trim();return iT.has(n)?n:"development"}function k(t){return t==="true"||t==="1"}function _T(t){if(t===void 0||t==="")return;return k(t)}function Di(t,n){if(n===void 0||n==="")return;let u=Number(n);if(!Number.isSafeInteger(u)||u<=0)throw Error(`${t} must be a positive integer`);return u}function L(t,n,u){return Di(t,n)??u}function xT(t,n){if(t===void 0||t==="")return n;return t==="true"||t==="1"}function Ce(t){if(!t)return null;try{let u=new URL(t).hostname.replace(/^\[|\]$/g,"");if(u==="localhost"||u==="127.0.0.1"||u==="::1")return null;return t}catch{return null}}function aT(t){return t===void 0||t===""||t==="true"||t==="1"}function s(t,n){return t||n}var mT=new Set(["agent-sandbox","user-desktop"]);function oT(t){let n=(t??"").trim(),u=n.length>0?n:"user-desktop";if(u==="cluster")return"agent-sandbox";if(!mT.has(u))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${t}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return u}function Ne(t,n){let u=t.home||n.DATA_DIR||n.DECOCMS_HOME||`${tT()}/deco`,_=t.localMode,e=t.nodeEnv||eT(n.NODE_ENV),x=n.NATS_URL||"nats://localhost:4222",m=_T(n.NATS_TUNNEL_PUBLIC_ENABLED)??!!n.NATS_PUBLIC_URL;return{settings:{nodeEnv:e,port:L("PORT",t.port||n.PORT,3000),baseUrl:t.baseUrl||n.BASE_URL,publicUrl:s(n.STUDIO_PUBLIC_URL,n.MESH_PUBLIC_URL),dataDir:u,databasePgSsl:k(n.DATABASE_PG_SSL),databasePoolMax:L("DATABASE_POOL_MAX",n.DATABASE_POOL_MAX,5),dbosPoolSize:L("DBOS_POOL_SIZE",n.DBOS_POOL_SIZE,5),betterAuthSecret:n.BETTER_AUTH_SECRET||"",encryptionKey:n.ENCRYPTION_KEY||"",studioJwtSecret:s(n.STUDIO_JWT_SECRET,n.MESH_JWT_SECRET),localMode:_,disableRateLimit:k(n.DISABLE_RATE_LIMIT),studioProvisionSecretKey:n.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(n.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((o)=>o.trim().toLowerCase()).filter(Boolean),clickhouseUrl:n.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Di("CLICKHOUSE_MAX_MEMORY_USAGE",n.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:n.MONITORING_OTLP_ENDPOINT,otelServiceName:n.OTEL_SERVICE_NAME||"studio",natsPublicUrl:n.NATS_PUBLIC_URL,natsTunnelPublicEnabled:m,natsTunnelSessionTtlSeconds:L("NATS_TUNNEL_SESSION_TTL_SECONDS",n.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:n.NATS_OPERATOR_JWT,natsAccountJwt:n.NATS_ACCOUNT_JWT,natsAccountSigningKey:n.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:n.NATS_CREDS,configPath:n.CONFIG_PATH||"./config.json",aiGatewayEnabled:k(n.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:n.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:n.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:L("STUDIO_SEAT_ALLOWANCE_CENTS",n.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:n.STRIPE_WEBHOOK_SECRET,stripeSecretKey:n.STRIPE_SECRET_KEY,stripeSeatPriceId:n.STRIPE_SEAT_PRICE_ID,topupFeePercent:L("STUDIO_TOPUP_FEE_PERCENT",n.STUDIO_TOPUP_FEE_PERCENT,15),enableDecoImport:k(n.ENABLE_DECO_IMPORT),billingEnforced:k(n.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:xT(n.MCP_CACHE_ENABLED,e!=="development"),orgFsPublicSetsJson:n.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:k(n.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:L("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",n.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:L("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",n.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:n.S3_ENDPOINT,s3Bucket:n.S3_BUCKET,s3Region:n.S3_REGION||"auto",s3AccessKeyId:n.S3_ACCESS_KEY_ID,s3SecretAccessKey:n.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:aT(n.S3_FORCE_PATH_STYLE),monitoringS3Bucket:n.MONITORING_S3_BUCKET,monitoringS3Endpoint:n.MONITORING_S3_ENDPOINT,monitoringS3Region:n.MONITORING_S3_REGION,monitoringS3AccessKeyId:n.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:n.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:n.MONITORING_S3_PREFIX,duckdbExtensionDirectory:n.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:n.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:Di("DUCKDB_THREADS",n.DUCKDB_THREADS),isCli:!0,noTui:t.noTui===!0,podName:n.POD_NAME||crypto.randomUUID(),dispatchRole:uT(s(n.STUDIO_DISPATCH_ROLE,n.MESH_DISPATCH_ROLE)),sandboxProviderKind:oT(n.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:n.DECO_SUPABASE_URL,decoSupabaseServiceKey:n.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:n.FIRECRAWL_API_KEY,reportsInternalApiUrl:s(n.REPORTS_INTERNAL_API_URL,n.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:s(n.REPORTS_INTERNAL_API_KEY,n.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:n.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:n.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:n.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:n.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:n.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:n.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:n.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:Ce(n.DATABASE_URL),externalNatsUrl:Ce(x),skipMigrations:t.skipMigrations}}var Ct=null;function H(){if(!Ct)yT();return Ct}function yT(){if(Ct)return;let t={...process.env},n=Ne({port:t.PORT||"3000",home:t.DATA_DIR||t.DECOCMS_HOME||"",localMode:t.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:t.DECO_NO_TUI==="true",vitePort:t.VITE_PORT,baseUrl:t.BASE_URL},t);Ct=Object.freeze({...n.settings,databaseUrl:t.DATABASE_URL||"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:(t.NATS_URL||"nats://localhost:4222").split(",").map((u)=>u.trim()).filter(Boolean)})}import{createContextKey as wT,metrics as KT,propagation as _E,ROOT_CONTEXT as xE,SpanStatusCode as aE,trace as cT}from"@opentelemetry/api";import{logs as pT,SeverityNumber as Ji}from"@opentelemetry/api-logs";import{OTLPLogExporter as yE}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as zT}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as NE}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as EE}from"@opentelemetry/instrumentation-runtime-node";import{context as dN,propagation as bN,SpanKind as tf,SpanStatusCode as nf}from"@opentelemetry/api";var ef=globalThis.fetch;import{ExportResultCode as wf}from"@opentelemetry/core";import{ExportResultCode as Nt}from"@opentelemetry/core";import{mkdir as TT,rename as CT,writeFile as NT}from"fs/promises";import{join as ft}from"path";class Et{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor(t){this.basePath=t.basePath,this.flushThreshold=t.flushThreshold??1000,this.maxBufferBytes=t.maxBufferBytes??10485760,this.partitionKey=t.partitionKey;let n=t.flushIntervalMs??60000;if(n>0&&n<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((u)=>{console.error("[NDJSONExporter] Timer flush failed:",u)})},n),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows(t){if(this.isShutdown)return Promise.resolve({code:Nt.FAILED});for(let n of t){let u=JSON.stringify(n),_=this.partitionKey?this.partitionKey(n):"";this.bufferItems.push({partition:_,json:u}),this.bufferBytes+=Buffer.byteLength(u,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:Nt.SUCCESS})).catch((n)=>{return console.error("[NDJSONExporter] Flush failed:",n),{code:Nt.FAILED}});return Promise.resolve({code:Nt.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let n=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=n,n}async doFlush(){if(this.bufferItems.length===0)return;let t=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let n=new Map;for(let e of t){let x=n.get(e.partition);if(!x)x=[],n.set(e.partition,x);x.push(e.json)}let u=await Promise.allSettled(Array.from(n.entries()).map(([e,x])=>this.writeNDJSON(x,e).then(()=>e))),_=u.find((e)=>e.status==="rejected");if(_){let e=new Set;for(let m of u)if(m.status==="fulfilled")e.add(m.value);let x=t.filter((m)=>!e.has(m.partition));this.bufferItems=x.concat(this.bufferItems),this.bufferBytes=0;for(let m of this.bufferItems)this.bufferBytes+=Buffer.byteLength(m.json,"utf8")+1;throw _.reason}}async writeNDJSON(t,n){let u=new Date,_=[String(u.getUTCFullYear()),String(u.getUTCMonth()+1).padStart(2,"0"),String(u.getUTCDate()).padStart(2,"0"),String(u.getUTCHours()).padStart(2,"0")],e=n?ft(this.basePath,n,..._):ft(this.basePath,..._);if(!this.knownDirs.has(e))await TT(e,{recursive:!0,mode:448}),this.knownDirs.add(e);let x=`${crypto.randomUUID()}.ndjson`,m=ft(e,`.${x}.tmp`),a=ft(e,x),o=t.join(`
1056
+ `.execute(t),u=0;for(let _ of n.rows){let e=sy(_);if(e===_.slug)continue;await Te`UPDATE connections SET slug = ${e} WHERE id = ${_.id}`.execute(t),u++}if(u>0)console.log(`[152] repaired ${u} drifted connection slug(s)`)}async function vy(){}var Ui={};i(Ui,{up:()=>ly,down:()=>dy});import{sql as qy}from"kysely";async function ly(t){await qy`CREATE INDEX idx_tmp_latest_assistant_text ON thread_message_parts (thread_id, created_at DESC, id DESC) WHERE role = 'assistant' AND kind = 'text'`.execute(t)}async function dy(t){await t.schema.dropIndex("idx_tmp_latest_assistant_text").execute()}var by={"001-initial-schema":Kt,"002-organization-settings":ct,"003-connection-schema-align":pt,"004-remove-models-binding":zt,"005-connection-configuration":Pt,"006-add-views-to-settings":rt,"007-monitoring-logs":Ut,"008-event-bus":jt,"009-drop-audit-logs":Dt,"010-gateways":Jt,"011-gateway-icon":Lt,"012-gateway-tool-selection-mode":Rt,"013-monitoring-user-agent-gateway":Wt,"014-gateway-resources-prompts":kt,"015-monitoring-properties":$t,"016-downstream-token-client-info":Xt,"017-downstream-token-remove-userid":Qt,"018-drop-gateway-tool-selection-strategy":Zt,"019-remove-gateway-is-default":Ft,"020-enabled-plugins":Ht,"021-threads":Mt,"022-rename-gateway-to-virtual-mcp":Yt,"023-optimize-thread-indexes":ht,"024-consolidate-virtual-mcp":Bt,"025-add-monitoring-virtual-mcp-id":At,"026-restrict-child-connection-delete":St,"027-update-management-mcp-url":Gt,"028-update-management-mcp-to-self":gt,"029-add-updated-by-to-connections":st,"030-member-tags":Vt,"031-add-dependency-mode":vt,"032-projects":qt,"033-thread-status":lt,"034-monitoring-dashboards":dt,"035-project-connections":bt,"036-update-registry-url":tn,"037-ai-provider-keys":nn,"038-oauth-pkce-states":un,"039-automations":en,"040-replace-next-run-at-with-last-run-at":_n,"041-ai-provider-keys-unique-constraint":xn,"042-rename-mesh-mcp-to-cms-mcp":an,"043-rename-cms-mcp-to-deco-cms":mn,"044-drop-connections-tools-column":on,"045-thread-context-start-message":yn,"046-remove-object-storage-plugin":Cn,"047-add-next-run-at":Nn,"048-merge-projects-agents":En,"049-remove-org-admin-projects":wn,"050-durable-agent-runs":Kn,"051-org-sso":pn,"052-thread-agent-ids":zn,"053-registry-config":Pn,"054-connection-slug":Un,"055-spaces":jn,"056-automation-project-scope":Dn,"057-thread-virtual-mcp-id":Jn,"058-trigger-callback-tokens":Ln,"059-kv":Rn,"060-member-index":Wn,"061-downstream-token-connection-index":kn,"062-private-registry":$n,"063-event-subscriptions-enabled-boolean":Xn,"064-brand-context":Qn,"065-organization-domains":Zn,"066-brand-context-structured":Fn,"067-threads-metadata":Hn,"068-threads-branch":Mn,"069-sandbox-runner-state":Yn,"070-model-categories":hn,"071-default-home-agents":Bn,"072-ai-provider-key-preset-id":An,"073-backfill-basic-usage-roles":Sn,"074-sandbox-runner-state-handle-nonunique":On,"075-thread-inflight-async-jobs":Gn,"076-automations-drop-agent-json":In,"077-tier-only-model-selection":sn,"078-automation-tool-call-kind":Vn,"079-strip-legacy-freestyle-vm-map-entries":vn,"080-async-research-jobs":qn,"081-async-research-jobs-result-content":ln,"082-secrets":dn,"083-thread-run-locally":bn,"084-drop-host-sandbox-rows":tu,"085-rename-runner-kind":nu,"086-thread-pins-and-vm-map-rekey":uu,"087-fix-vm-map-rekey":iu,"088-purge-cli-activate-keys":eu,"089-rename-remote-user-to-desktop":_u,"090-automation-webhook-triggers":xu,"091-organization-domains-allow-multi":au,"092-sandbox-naming-uniformization":mu,"093-backfill-global-search-basic-usage":ou,"094-org-file-configs":Tu,"095-remove-automation-tool-call-kind":Cu,"096-org-file-configs-public-url-base":Nu,"097-drop-local-docker-sandbox-state":Eu,"098-thread-message-parts":wu,"099-run-fence":Ku,"100-link-transport":cu,"101-cancel-requested-at":pu,"102-observational-agent":zu,"103-revert-observational-agent":Pu,"104-agent-sandbox-provider-kind":Uu,"105-org-fs":ju,"106-automation-tools":Du,"107-org-fs-public-org":Ju,"108-automation-max-agent-steps":Lu,"109-thread-message-parts-per-message-seq":Ru,"110-backfill-ghs-token-expiry":Wu,"111-org-fs-thread-id":ku,"112-org-file-configs-credential-type":$u,"113-thread-failure-reason":Xu,"114-run-acked-seq":Qu,"115-thread-projected-seq":Zu,"116-org-sites":Fu,"117-org-file-configs-site-slug":Hu,"118-organization-domains-multi-verify":Mu,"119-organization-join-requests":Yu,"120-org-fs-read-public":hu,"121-org-fs-share-password":Bu,"122-split-web-research-tier":Ou,"123-connection-credential-vault":Gu,"124-drop-thread-projected-seq":Iu,"125-github-child-single-parent":gu,"126-task-board":Vu,"127-task-board-due-date":vu,"128-reports-only":qu,"129-task-board-assigned-by":lu,"130-task-board-thread-id":du,"131-task-board-thread-link-cascade":bu,"132-task-board-item-prs":ti,"133-dedupe-duplicate-members":ni,"134-drop-task-board-enabled":ui,"135-task-board-item-fk-cascade":ii,"136-task-board-import-idempotency":ei,"137-agent-sandbox-runner-state":_i,"138-agent-sandbox-sessions":xi,"139-organization-billing":ai,"140-seat-change-log":mi,"141-benefits-sync-pending":oi,"142-stripe-event-watermark":yi,"143-armed-report-url":Ti,"144-benefits-pending-index":Ci,"145-user-model-preferences":Ni,"146-organization-main-agent":fi,"147-drop-agent-sandbox-tables":Ei,"148-org-flags":wi,"149-task-board-item-sort-order":Ki,"150-task-board-activity":ci,"151-task-board-tags":zi,"152-repair-connection-slug":ri,"153-task-board-latest-assistant-part-index":Ui},ji=by;import{getMigrations as QT}from"better-auth/db";import{sso as ZT}from"@better-auth/sso";import{organization as FT}from"@decocms/better-auth/plugins";import{admin as HT,apiKey as MT,jwt as YT,magicLink as hT,mcp as BT,openAPI as AT}from"better-auth/plugins";import{emailOTP as ST}from"better-auth/plugins/email-otp";import{Kysely as JT,PostgresDialect as re}from"kysely";import{Pool as Ue}from"pg";import{homedir as tT}from"os";var nT=new Set(["all","worker","api"]);function uT(t){let n=(t??"").trim();return nT.has(n)?n:"all"}var iT=new Set(["production","development","test"]);function eT(t){let n=(t??"").trim();return iT.has(n)?n:"development"}function k(t){return t==="true"||t==="1"}function _T(t){if(t===void 0||t==="")return;return k(t)}function Di(t,n,u){if(n===void 0||n==="")return;let _=Number(n);if(!Number.isSafeInteger(_)||_<=0)throw Error(`${t} must be a positive integer`);if(u!==void 0&&_>u)throw Error(`${t} must be at most ${u}`);return _}function L(t,n,u,_){return Di(t,n,_)??u}function xT(t,n){if(t===void 0||t==="")return n;return t==="true"||t==="1"}function Ce(t){if(!t)return null;try{let u=new URL(t).hostname.replace(/^\[|\]$/g,"");if(u==="localhost"||u==="127.0.0.1"||u==="::1")return null;return t}catch{return null}}function aT(t){return t===void 0||t===""||t==="true"||t==="1"}function s(t,n){return t||n}var mT=new Set(["agent-sandbox","user-desktop"]);function oT(t){let n=(t??"").trim(),u=n.length>0?n:"user-desktop";if(u==="cluster")return"agent-sandbox";if(!mT.has(u))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${t}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return u}function Ne(t,n){let u=t.home||n.DATA_DIR||n.DECOCMS_HOME||`${tT()}/deco`,_=t.localMode,e=t.nodeEnv||eT(n.NODE_ENV),x=n.NATS_URL||"nats://localhost:4222",m=_T(n.NATS_TUNNEL_PUBLIC_ENABLED)??!!n.NATS_PUBLIC_URL;return{settings:{nodeEnv:e,port:L("PORT",t.port||n.PORT,3000),baseUrl:t.baseUrl||n.BASE_URL,publicUrl:s(n.STUDIO_PUBLIC_URL,n.MESH_PUBLIC_URL),dataDir:u,databasePgSsl:k(n.DATABASE_PG_SSL),databasePoolMax:L("DATABASE_POOL_MAX",n.DATABASE_POOL_MAX,5),dbosPoolSize:L("DBOS_POOL_SIZE",n.DBOS_POOL_SIZE,5),betterAuthSecret:n.BETTER_AUTH_SECRET||"",encryptionKey:n.ENCRYPTION_KEY||"",studioJwtSecret:s(n.STUDIO_JWT_SECRET,n.MESH_JWT_SECRET),localMode:_,disableRateLimit:k(n.DISABLE_RATE_LIMIT),studioProvisionSecretKey:n.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(n.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((o)=>o.trim().toLowerCase()).filter(Boolean),clickhouseUrl:n.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Di("CLICKHOUSE_MAX_MEMORY_USAGE",n.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:n.MONITORING_OTLP_ENDPOINT,otelServiceName:n.OTEL_SERVICE_NAME||"studio",natsPublicUrl:n.NATS_PUBLIC_URL,natsTunnelPublicEnabled:m,natsTunnelSessionTtlSeconds:L("NATS_TUNNEL_SESSION_TTL_SECONDS",n.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:n.NATS_OPERATOR_JWT,natsAccountJwt:n.NATS_ACCOUNT_JWT,natsAccountSigningKey:n.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:n.NATS_CREDS,configPath:n.CONFIG_PATH||"./config.json",aiGatewayEnabled:k(n.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:n.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:n.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:L("STUDIO_SEAT_ALLOWANCE_CENTS",n.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:n.STRIPE_WEBHOOK_SECRET,stripeSecretKey:n.STRIPE_SECRET_KEY,stripeSeatPriceId:n.STRIPE_SEAT_PRICE_ID,topupFeePercent:L("STUDIO_TOPUP_FEE_PERCENT",n.STUDIO_TOPUP_FEE_PERCENT,15,100),enableDecoImport:k(n.ENABLE_DECO_IMPORT),billingEnforced:k(n.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:xT(n.MCP_CACHE_ENABLED,e!=="development"),orgFsPublicSetsJson:n.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:k(n.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:L("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",n.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:L("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",n.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:n.S3_ENDPOINT,s3Bucket:n.S3_BUCKET,s3Region:n.S3_REGION||"auto",s3AccessKeyId:n.S3_ACCESS_KEY_ID,s3SecretAccessKey:n.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:aT(n.S3_FORCE_PATH_STYLE),monitoringS3Bucket:n.MONITORING_S3_BUCKET,monitoringS3Endpoint:n.MONITORING_S3_ENDPOINT,monitoringS3Region:n.MONITORING_S3_REGION,monitoringS3AccessKeyId:n.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:n.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:n.MONITORING_S3_PREFIX,duckdbExtensionDirectory:n.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:n.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:Di("DUCKDB_THREADS",n.DUCKDB_THREADS),isCli:!0,noTui:t.noTui===!0,podName:n.POD_NAME||crypto.randomUUID(),dispatchRole:uT(s(n.STUDIO_DISPATCH_ROLE,n.MESH_DISPATCH_ROLE)),sandboxProviderKind:oT(n.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:n.DECO_SUPABASE_URL,decoSupabaseServiceKey:n.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:n.FIRECRAWL_API_KEY,reportsInternalApiUrl:s(n.REPORTS_INTERNAL_API_URL,n.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:s(n.REPORTS_INTERNAL_API_KEY,n.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:n.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:n.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:n.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:n.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:n.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:n.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:n.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:Ce(n.DATABASE_URL),externalNatsUrl:Ce(x),skipMigrations:t.skipMigrations}}var Ct=null;function H(){if(!Ct)yT();return Ct}function yT(){if(Ct)return;let t={...process.env},n=Ne({port:t.PORT||"3000",home:t.DATA_DIR||t.DECOCMS_HOME||"",localMode:t.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:t.DECO_NO_TUI==="true",vitePort:t.VITE_PORT,baseUrl:t.BASE_URL},t);Ct=Object.freeze({...n.settings,databaseUrl:t.DATABASE_URL||"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:(t.NATS_URL||"nats://localhost:4222").split(",").map((u)=>u.trim()).filter(Boolean)})}import{createContextKey as wT,metrics as KT,propagation as _E,ROOT_CONTEXT as xE,SpanStatusCode as aE,trace as cT}from"@opentelemetry/api";import{logs as pT,SeverityNumber as Ji}from"@opentelemetry/api-logs";import{OTLPLogExporter as yE}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as zT}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as NE}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as EE}from"@opentelemetry/instrumentation-runtime-node";import{context as dN,propagation as bN,SpanKind as tf,SpanStatusCode as nf}from"@opentelemetry/api";var ef=globalThis.fetch;import{ExportResultCode as wf}from"@opentelemetry/core";import{ExportResultCode as Nt}from"@opentelemetry/core";import{mkdir as TT,rename as CT,writeFile as NT}from"fs/promises";import{join as ft}from"path";class Et{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor(t){this.basePath=t.basePath,this.flushThreshold=t.flushThreshold??1000,this.maxBufferBytes=t.maxBufferBytes??10485760,this.partitionKey=t.partitionKey;let n=t.flushIntervalMs??60000;if(n>0&&n<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((u)=>{console.error("[NDJSONExporter] Timer flush failed:",u)})},n),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows(t){if(this.isShutdown)return Promise.resolve({code:Nt.FAILED});for(let n of t){let u=JSON.stringify(n),_=this.partitionKey?this.partitionKey(n):"";this.bufferItems.push({partition:_,json:u}),this.bufferBytes+=Buffer.byteLength(u,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:Nt.SUCCESS})).catch((n)=>{return console.error("[NDJSONExporter] Flush failed:",n),{code:Nt.FAILED}});return Promise.resolve({code:Nt.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let n=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=n,n}async doFlush(){if(this.bufferItems.length===0)return;let t=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let n=new Map;for(let e of t){let x=n.get(e.partition);if(!x)x=[],n.set(e.partition,x);x.push(e.json)}let u=await Promise.allSettled(Array.from(n.entries()).map(([e,x])=>this.writeNDJSON(x,e).then(()=>e))),_=u.find((e)=>e.status==="rejected");if(_){let e=new Set;for(let m of u)if(m.status==="fulfilled")e.add(m.value);let x=t.filter((m)=>!e.has(m.partition));this.bufferItems=x.concat(this.bufferItems),this.bufferBytes=0;for(let m of this.bufferItems)this.bufferBytes+=Buffer.byteLength(m.json,"utf8")+1;throw _.reason}}async writeNDJSON(t,n){let u=new Date,_=[String(u.getUTCFullYear()),String(u.getUTCMonth()+1).padStart(2,"0"),String(u.getUTCDate()).padStart(2,"0"),String(u.getUTCHours()).padStart(2,"0")],e=n?ft(this.basePath,n,..._):ft(this.basePath,..._);if(!this.knownDirs.has(e))await TT(e,{recursive:!0,mode:448}),this.knownDirs.add(e);let x=`${crypto.randomUUID()}.ndjson`,m=ft(e,`.${x}.tmp`),a=ft(e,x),o=t.join(`
1057
1057
  `)+`
1058
1058
  `;await NT(m,o,{mode:384}),await CT(m,a)}}import{ExportResultCode as Pf}from"@opentelemetry/core";import{AggregationTemporality as Uf,DataPointType as jf}from"@opentelemetry/sdk-metrics";import{ExportResultCode as kf}from"@opentelemetry/core";var Zf=Buffer.byteLength("... [TRUNCATED]","utf8");import{BatchLogRecordProcessor as jE,LoggerProvider as DE}from"@opentelemetry/sdk-logs";import{detectResources as LE,envDetector as RE,hostDetector as WE,osDetector as kE,processDetector as $E,resourceFromAttributes as XE}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as ZE}from"@opentelemetry/sdk-metrics";import{NOOP_LOGGER as Mf}from"@opentelemetry/api-logs";import{NodeSDK as ME}from"@opentelemetry/sdk-node";import{BatchSpanProcessor as hE,SamplingDecision as M}from"@opentelemetry/sdk-trace-base";import{SpanStatusCode as Sf}from"@opentelemetry/api";var PT="__d",rT=wT("Current request"),UT=1;var Ee=(t)=>{let u=new URL(t.url).searchParams.get(PT);if(u==="")return crypto.randomUUID();if(!u)u=t.headers.get("x-trace-debug-id");return u};class we{inner;constructor(t){this.inner=t}shouldSample(t,n,u,_,e,x){let m=t.getValue(rT);if(!m){if(this.inner)return this.inner.shouldSample(t,n,u,_,e,x);return{decision:M.RECORD_AND_SAMPLED}}let a=Ee(m);if(a)return{decision:M.RECORD_AND_SAMPLED,attributes:{"trace.debug.id":a}};if(this.inner){let o=this.inner.shouldSample(t,n,u,_,e,x);if(o.decision===M.RECORD_AND_SAMPLED){let y=crypto.randomUUID();o.attributes={...o.attributes??{},"trace.debug.id":y}}return o}return{decision:M.NOT_RECORD}}toString(){return"DebugSampler"}}class Ke{ratio;constructor(t){this.ratio=t}shouldSample(){if(Math.random()<this.ratio)return{decision:M.RECORD_AND_SAMPLED};return{decision:M.NOT_RECORD}}toString(){return`RatioSampler(${this.ratio})`}}var AE=new zT({preventServerStart:!0}),SE=new we(new Ke(UT));var fe=cT.getTracer("studio","1.0.0"),V=KT.getMeter("studio","1.0.0"),jT=pT.getLogger("studio","1.0.0"),Li=(t,n,u)=>{let _={},e=u,x=u[u.length-1];if(x!==null&&typeof x==="object"&&!Array.isArray(x)&&!(x instanceof Error)&&Object.getPrototypeOf(x)===Object.prototype)_=x,e=u.slice(0,-1);let m=e.map((a)=>{if(a instanceof Error)return`${a.name}: ${a.message}`;if(typeof a==="object")try{return JSON.stringify(a)}catch{return"[Object]"}return String(a)}).join(" ");jT.emit({severityNumber:t,severityText:n,body:m,attributes:{"log.source":"console",..._}})},Ri={error:console.error.bind(console),warn:console.warn.bind(console),debug:console.debug.bind(console)};console.error=(...t)=>{Li(Ji.ERROR,"ERROR",t),Ri.error(...t)};console.warn=(...t)=>{Li(Ji.WARN,"WARN",t),Ri.warn(...t)};console.debug=(...t)=>{Li(Ji.DEBUG,"DEBUG",t),Ri.debug(...t)};var Wi,ce=0,ki=500;function DT(){if(Wi)return;let t=performance.now()+ki;Wi=setInterval(()=>{let n=performance.now();ce=Math.max(0,n-t),t=n+ki},ki),Wi.unref?.()}function pe(){return DT(),ce}var LT=()=>V.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),ze=()=>V.createHistogram("db.pool.acquire.duration",{description:"Time spent waiting to acquire a connection from the pool",unit:"ms"}),Pe=400,RT=100,WT=(t)=>(n)=>{let u={"db.statement":n.query.sql,"db.status":n.level==="error"?"error":"success"};if(n.queryDurationMillis>Pe){let _=pe(),e=_>Pe/2;console.error(e?"Slow query measurement \u2014 likely event-loop lag, not slow SQL:":"Slow query detected:",{durationMs:n.queryDurationMillis,eventLoopLagMs:Math.round(_),sql:n.query.sql,pool:{total:t.totalCount,idle:t.idleCount,waiting:t.waitingCount,max:wt()}})}if(LT().record(n.queryDurationMillis,u),n.level==="error")console.error("Query failed:",{durationMs:n.queryDurationMillis,error:n.error,sql:n.query.sql})};function kT(t){let n=t.connect.bind(t);return t.connect=(u)=>{if(typeof u==="function")return n(u);let _=performance.now(),e=wt(),x=t.idleCount===0&&t.totalCount>=e,m=t.idleCount;return n().then((a)=>{let o=performance.now()-_;if(ze().record(o,{"db.pool.outcome":x?"contended":"available"}),o>RT)if(x)console.error("Slow db pool acquire \u2014 pool saturated:",{waitMs:o,total:t.totalCount,idle:t.idleCount,waiting:t.waitingCount,max:e});else console.warn("Slow db pool acquire \u2014 event-loop lag (not pool):",{waitMs:o,idleAtStart:m,total:t.totalCount,max:e});return a},(a)=>{throw ze().record(performance.now()-_,{"db.pool.outcome":"error"}),a})},t}var je={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0};function De(){try{return H().databasePgSsl}catch{return!1}}function wt(){try{return H().databasePoolMax}catch{return 10}}function $T(t){let n=kT(new Ue({connectionString:t,max:wt(),ssl:De(),...je})),u=new re({pool:n});return{type:"postgres",db:new JT({dialect:u,log:WT(n)}),pool:n}}function q(){return H().databaseUrl}function Je(t){let n=t||q();return new re({pool:new Ue({connectionString:n,max:wt(),ssl:De(),...je})})}function XT(t){let n=t||q();return $T(n)}async function Le(t){if(await t.db.destroy(),!t.pool.ended)await t.pool.end();if(t===v)v=null}var v=null;function $i(){if(!v)v=XT(q());return v}async function Re(t){let u={database:Je(t||q()),plugins:[FT({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),HT(),MT(),YT(),AT(),BT({loginPage:"/login"}),ZT(),hT({sendMagicLink:async()=>{}}),ST({sendVerificationOTP:async()=>{}})]},{toBeAdded:_,toBeCreated:e,runMigrations:x}=await QT(u);if(!_.length&&!e.length)return"up to date";return await x(),`${e.length+_.length} table(s) migrated`}async function ke(t,n){return(await Y`
1059
1059
  SELECT table_name FROM information_schema.tables