decocms 4.340.1 → 4.340.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/dist/client/assets/{AlertCircle-BzfLgQxW.js → AlertCircle-D4eptcdD.js} +1 -1
  2. package/dist/client/assets/{AreaChart-NXV3zXu6.js → AreaChart-T4EDIvYF.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-ZtHY0hHS.js → ArrowLeft-By7NdTU-.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-GtlqrtUG.js → ArrowUp-edD97XIY.js} +1 -1
  5. package/dist/client/assets/{Check-D1RndvMl.js → Check-D2l5BF-Z.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-kXqYZ4lp.js → CheckCircle-qxgqqPk6.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-BXbNr5x_.js → ChevronRight-CTzgHliU.js} +1 -1
  8. package/dist/client/assets/{ChevronSelectorVertical-BvOjX3vH.js → ChevronSelectorVertical--U_-SmJI.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-B-O6lb_g.js → ChevronUp-LXuYKq_u.js} +1 -1
  10. package/dist/client/assets/{Copy01-Cz4gIH9t.js → Copy01-Da7Gwpg8.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-CV7AlRJM.js → CreditCard01-B6Je6ds6.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-BzMxyiyI.js → DotsVertical-oKCtfNDV.js} +1 -1
  13. package/dist/client/assets/{Download01-D4vSzFHt.js → Download01-DFVY5rQN.js} +1 -1
  14. package/dist/client/assets/{ErrorBarContext-0x81WJuU.js → ErrorBarContext-BFbX9b5Z.js} +1 -1
  15. package/dist/client/assets/{Eye-CQf7Good.js → Eye-yCkz-G0q.js} +1 -1
  16. package/dist/client/assets/{GitBranch01-DO9pv3PP.js → GitBranch01-BYBggGnl.js} +1 -1
  17. package/dist/client/assets/{Globe01-B1SjH2oA.js → Globe01-DwNzZ366.js} +1 -1
  18. package/dist/client/assets/{HardDrive-1tMtWfEi.js → HardDrive-qXE-7yCu.js} +1 -1
  19. package/dist/client/assets/{Image01-DcplqJxC.js → Image01-BI0pxSgO.js} +1 -1
  20. package/dist/client/assets/{Key01-Bka_ZL3e.js → Key01-DjaX2pWd.js} +1 -1
  21. package/dist/client/assets/{Link01-D-5fFI_p.js → Link01-BHjLm33S.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-BJBRYdix.js → LinkExternal01-BPqjvb8k.js} +1 -1
  23. package/dist/client/assets/{Monitor01-BVJVkRyL.js → Monitor01-BA0D5du5.js} +1 -1
  24. package/dist/client/assets/{Package-StGHMY-P.js → Package-CEcFeOI2.js} +1 -1
  25. package/dist/client/assets/{Palette-BKW_8aCv.js → Palette-A4Wns4ig.js} +1 -1
  26. package/dist/client/assets/{Play-Cuda6UNO.js → Play-B6EOv-3E.js} +1 -1
  27. package/dist/client/assets/{Plus-cEc0jpzJ.js → Plus-o0Y2PUSC.js} +1 -1
  28. package/dist/client/assets/{SearchLg-DXo2LFfn.js → SearchLg-Dmp-TaSc.js} +1 -1
  29. package/dist/client/assets/{SearchMd-IS_lUYp2.js → SearchMd-DRqnwlLc.js} +1 -1
  30. package/dist/client/assets/{Sector-CzUzYulK.js → Sector-CNSFn1D1.js} +1 -1
  31. package/dist/client/assets/{Settings02-CCqfjQqM.js → Settings02-BYSzjS8c.js} +1 -1
  32. package/dist/client/assets/{Share07-UUisBlZD.js → Share07-C4GWKp8b.js} +1 -1
  33. package/dist/client/assets/{Shield01-Bu8fodHD.js → Shield01-DyES_6E-.js} +1 -1
  34. package/dist/client/assets/{Stars01-Dd7BmkuI.js → Stars01-wkPjgYzm.js} +1 -1
  35. package/dist/client/assets/{Sun-BjhJpIdB.js → Sun-BcFJuXPi.js} +1 -1
  36. package/dist/client/assets/{Tool01-C-tPOEIT.js → Tool01-Ds6CNk32.js} +1 -1
  37. package/dist/client/assets/{Tool02-BE6l5Twz.js → Tool02-q0KsYMT-.js} +1 -1
  38. package/dist/client/assets/{Trash01-mvzeyawb.js → Trash01-BKDtPzTP.js} +1 -1
  39. package/dist/client/assets/{TrendUp01-C83A2OZW.js → TrendUp01-Blj4JI-e.js} +1 -1
  40. package/dist/client/assets/{Upload01-CEpgeOQo.js → Upload01-DfXMh7m7.js} +1 -1
  41. package/dist/client/assets/{User01-DfurwKCt.js → User01-BUfmnH4r.js} +1 -1
  42. package/dist/client/assets/{UserSquare-BF6cbCMy.js → UserSquare-rhqwE2Ol.js} +1 -1
  43. package/dist/client/assets/{Users01-CvV0EOpL.js → Users01-Cavw3M_7.js} +1 -1
  44. package/dist/client/assets/{Users03-C_KwnO8j.js → Users03-CMiKV-au.js} +1 -1
  45. package/dist/client/assets/{XCircle-C5OuQHlS.js → XCircle-CBa7oU0T.js} +1 -1
  46. package/dist/client/assets/{XClose-B3VYnfFA.js → XClose-BWCEWVtY.js} +1 -1
  47. package/dist/client/assets/{Zap-XKzdZrkx.js → Zap-DNLi-aw-.js} +1 -1
  48. package/dist/client/assets/{ZoomOut-BgLMQCGy.js → ZoomOut--LB8-MJ0.js} +1 -1
  49. package/dist/client/assets/{access-gate-71_9IB2B.js → access-gate-BKCBd5up.js} +1 -1
  50. package/dist/client/assets/{agent-icon-BqwQnN-H.js → agent-icon-D9yOgdsj.js} +1 -1
  51. package/dist/client/assets/{agents-list-DDVHqmKW.js → agents-list-CzIwDnAs.js} +1 -1
  52. package/dist/client/assets/{ai-providers-BhjTLCpT.js → ai-providers-TVBeQed9.js} +1 -1
  53. package/dist/client/assets/{alert-dialog-Diiy_s1s.js → alert-dialog-B65KF7uo.js} +1 -1
  54. package/dist/client/assets/{alert-CV80KCdi.js → alert-uwNUIliw.js} +1 -1
  55. package/dist/client/assets/{analytics-tab-ka3rVQGP.js → analytics-tab-BGOTFEol.js} +1 -1
  56. package/dist/client/assets/{api-keys-DWiHCkdk.js → api-keys-DWV5ABx8.js} +1 -1
  57. package/dist/client/assets/api-keys-DqqUCZpl.js +1 -0
  58. package/dist/client/assets/app-editor-DE9j7-CA.js +1 -0
  59. package/dist/client/assets/{auth-CQrAJgcB.js → auth-DioziTTE.js} +1 -1
  60. package/dist/client/assets/{auth-catchall-B9vVUGmK.js → auth-catchall-BrYWovtI.js} +1 -1
  61. package/dist/client/assets/{auth-entry-B65aE7ca.js → auth-entry-DyC6TOjg.js} +1 -1
  62. package/dist/client/assets/{auth-split-layout-VVCPfvYJ.js → auth-split-layout-BJNsnITH.js} +1 -1
  63. package/dist/client/assets/{authenticate-and-persist-oauth-f6JOL-_R.js → authenticate-and-persist-oauth-D_DYHjS1.js} +1 -1
  64. package/dist/client/assets/{automation-list-row-oVa0VxYK.js → automation-list-row-Bj-YjioX.js} +1 -1
  65. package/dist/client/assets/{automation-runs-CLGrPldK.js → automation-runs-riNjhYq4.js} +1 -1
  66. package/dist/client/assets/{automations-Xn-kNOgb.js → automations-DwJ6thUy.js} +1 -1
  67. package/dist/client/assets/{autosend-DqG3RWl9.js → autosend-Bb_eeT5K.js} +1 -1
  68. package/dist/client/assets/{avatar-D42nRXCs.js → avatar-Su9BccVA.js} +1 -1
  69. package/dist/client/assets/{badge-D_ofFGRW.js → badge-D5opyBVG.js} +1 -1
  70. package/dist/client/assets/{block-document-Cyw3PVye.js → block-document-0FZzNRnA.js} +1 -1
  71. package/dist/client/assets/{breadcrumb-Q6Ic1TbG.js → breadcrumb-D0dG4zMw.js} +1 -1
  72. package/dist/client/assets/{buckets-BbnCcISt.js → buckets-C3Gfleiz.js} +1 -1
  73. package/dist/client/assets/{bulk-category-panel-C4UoAyci.js → bulk-category-panel-UjLqwS7U.js} +1 -1
  74. package/dist/client/assets/{capability-load-error-CKiRrnmu.js → capability-load-error-DlaWwGcu.js} +1 -1
  75. package/dist/client/assets/{cards-DxWUWsUt.js → cards-BxZs3S9t.js} +1 -1
  76. package/dist/client/assets/{category-editor-BbuX9iC0.js → category-editor-Ciy7h3Ht.js} +1 -1
  77. package/dist/client/assets/{cdn-tab-mJBUwSPN.js → cdn-tab-94TJpUWH.js} +1 -1
  78. package/dist/client/assets/{chart-BcRbuRFX.js → chart-BDUoTpmV.js} +1 -1
  79. package/dist/client/assets/{chat-context-DyxdiM-D.js → chat-context-BHGFVHN3.js} +1 -1
  80. package/dist/client/assets/{checkbox-Br8eTE9Q.js → checkbox-DaWx9dP_.js} +1 -1
  81. package/dist/client/assets/{choose-editor-C0gDcFoj.js → choose-editor-ByhxySDt.js} +1 -1
  82. package/dist/client/assets/{cli-auth-success-LuPD3OyG.js → cli-auth-success-CUrlSCTu.js} +1 -1
  83. package/dist/client/assets/{client-icons-BTlLq4AS.js → client-icons-DmMx7Ulj.js} +1 -1
  84. package/dist/client/assets/{collection-detail-DbO3l89Z.js → collection-detail-CMn9dpyT.js} +1 -1
  85. package/dist/client/assets/{collection-display-button-B_lNaZN2.js → collection-display-button-DsjF-ASd.js} +1 -1
  86. package/dist/client/assets/{collection-search-mHMIaP-Q.js → collection-search-BgvAhEP3.js} +1 -1
  87. package/dist/client/assets/{collection-table-wrapper-JEUUV8vN.js → collection-table-wrapper-CGWXHqwo.js} +1 -1
  88. package/dist/client/assets/{collection-tabs-Cn7IgPGQ.js → collection-tabs-CkVVLsFa.js} +1 -1
  89. package/dist/client/assets/{command-HZlL54qe.js → command-Dfw7RW16.js} +1 -1
  90. package/dist/client/assets/{commerce-onboarding-Cdg1Lxob.js → commerce-onboarding-C3Bv2uGv.js} +1 -1
  91. package/dist/client/assets/{connect-ErQsSVID.js → connect-BLwXEJXJ.js} +1 -1
  92. package/dist/client/assets/{connect-layout-UN7qnCBS.js → connect-layout-ymcfw2uW.js} +1 -1
  93. package/dist/client/assets/{connection-Sl8tunew.js → connection-DoUDNDkd.js} +1 -1
  94. package/dist/client/assets/{connection-card-fSTKvJcu.js → connection-card-BHSFJnLS.js} +1 -1
  95. package/dist/client/assets/{connection-detail-NjpMO4r7.js → connection-detail-B8fEcGAE.js} +1 -1
  96. package/dist/client/assets/{connection-form-helpers-B0ki2Dj1.js → connection-form-helpers-D0Ul3Q7c.js} +1 -1
  97. package/dist/client/assets/{connections-C_oAO3se.js → connections-DzY7XO8J.js} +1 -1
  98. package/dist/client/assets/{create-organization-dialog-C9joAAsU.js → create-organization-dialog-CFrOi5ND.js} +1 -1
  99. package/dist/client/assets/{decopilot-sse-pool-Z9qQzEfU.js → decopilot-sse-pool-BxKR4Ktf.js} +1 -1
  100. package/dist/client/assets/{dialog-CNh5j8Ij.js → dialog-CMB-qBs8.js} +1 -1
  101. package/dist/client/assets/{domain-settings-CMnPU1dt.js → domain-settings-CktWvaxO.js} +1 -1
  102. package/dist/client/assets/{drawer-DkaTBCFj.js → drawer-D61o3aS7.js} +1 -1
  103. package/dist/client/assets/{dropdown-menu-Dwv2NZje.js → dropdown-menu-AwgQpgo6.js} +1 -1
  104. package/dist/client/assets/{e2e-tab-Bd-AJops.js → e2e-tab-CCYMlTxn.js} +1 -1
  105. package/dist/client/assets/{editor-BawOduQH.js → editor-IgAxUnzG.js} +1 -1
  106. package/dist/client/assets/{empty-state-BKEY6gPA.js → empty-state-Cuda3xDL.js} +1 -1
  107. package/dist/client/assets/{empty-state-5gWmdRtE.js → empty-state-LDf6W2DE.js} +1 -1
  108. package/dist/client/assets/{extract-connection-data-ZZXv8aem.js → extract-connection-data-D3hXZhuz.js} +1 -1
  109. package/dist/client/assets/{file-explorer-Jbt-gHZ7.js → file-explorer-CAGW55EV.js} +1 -1
  110. package/dist/client/assets/{file-type-icon-BsvWo3X0.js → file-type-icon-D9_gJydp.js} +1 -1
  111. package/dist/client/assets/{folder-icon-BG6ZKjpD.js → folder-icon-Co18vvIx.js} +1 -1
  112. package/dist/client/assets/{form-B6Rxlr4w.js → form-P9x_8iLW.js} +1 -1
  113. package/dist/client/assets/{general-BZb-4XgT.js → general-DD2Gbn1o.js} +1 -1
  114. package/dist/client/assets/{github-icon-D1ImZTL0.js → github-icon-D7iRPbYd.js} +1 -1
  115. package/dist/client/assets/{github-repo-picker-9y0JtRji.js → github-repo-picker-oki5M2Yp.js} +1 -1
  116. package/dist/client/assets/{gitlab-icon-CNLKhv3h.js → gitlab-icon-BUUIzzAR.js} +1 -1
  117. package/dist/client/assets/{hooks-CVCDBZ_q.js → hooks-C7MaW46e.js} +1 -1
  118. package/dist/client/assets/{hosting-tab-CDj19muk.js → hosting-tab-B3LdFlyo.js} +1 -1
  119. package/dist/client/assets/{index-PQGtBCCF.js → index-Bd3dLWt0.js} +1 -1
  120. package/dist/client/assets/{index-PYBlFE43.js → index-BjFJi_dY.js} +6 -6
  121. package/dist/client/assets/{index-DeZZ_dDI.js → index-C-w2qLLj.js} +1 -1
  122. package/dist/client/assets/{index-CSRM1f8q.js → index-CjwXQIsq.js} +3 -3
  123. package/dist/client/assets/{index-CQR5qovd.js → index-CpnS34dS.js} +1 -1
  124. package/dist/client/assets/{index-DuMy9MwF.js → index-DGVk_6Hc.js} +1 -1
  125. package/dist/client/assets/{index-DAaD02_4.js → index-DTqoj4wk.js} +1 -1
  126. package/dist/client/assets/{index-CqtkQPoY.js → index-QRInmqL5.js} +1 -1
  127. package/dist/client/assets/{index-CLxPOse6.js → index-izgOnY_o.js} +1 -1
  128. package/dist/client/assets/{index-BbR1yInm.js → index-r657k7_1.js} +1 -1
  129. package/dist/client/assets/{index-redirect-C97l6niv.js → index-redirect-CbyXgZCh.js} +1 -1
  130. package/dist/client/assets/{infra-billing-DDkNrUqa.js → infra-billing-Csz1Zxpv.js} +1 -1
  131. package/dist/client/assets/{input-BS0hECon.js → input-CnBsHD1o.js} +1 -1
  132. package/dist/client/assets/{integration-icon-C1WwgYjH.js → integration-icon-CM-iB_lL.js} +1 -1
  133. package/dist/client/assets/{invite-member-dialog-g-3glVQe.js → invite-member-dialog-C2K_dSyQ.js} +1 -1
  134. package/dist/client/assets/{label-Cc7Rkk65.js → label-CntSk49v.js} +1 -1
  135. package/dist/client/assets/{layout-CjAR7zjm.js → layout-DdsuP3TB.js} +1 -1
  136. package/dist/client/assets/{login-D7zbWP3h.js → login-tA1ITPo3.js} +1 -1
  137. package/dist/client/assets/{markdown-DiQc9Tr_.js → markdown-BNZypzOK.js} +1 -1
  138. package/dist/client/assets/{mcp-app-renderer-oLhTvIMa.js → mcp-app-renderer-m4qJtiod.js} +1 -1
  139. package/dist/client/assets/{mcp-oauth-BJExp-m2.js → mcp-oauth-C-XlB80v.js} +1 -1
  140. package/dist/client/assets/{members-DX1SvDgD.js → members-CTttdZN-.js} +1 -1
  141. package/dist/client/assets/{monaco-editor-No4JVyH1.js → monaco-editor-Bin7w4mZ.js} +1 -1
  142. package/dist/client/assets/{monitoring-stats-row-DDuwuem1.js → monitoring-stats-row-C4SfF9ul.js} +1 -1
  143. package/dist/client/assets/{multi-select-l2Ha7sZX.js → multi-select-C-_n5jTV.js} +1 -1
  144. package/dist/client/assets/{oauth-callback-Chx6oBaI.js → oauth-callback-__01eD-F.js} +1 -1
  145. package/dist/client/assets/{oauth-callback-ai-provider-Br9HSpkj.js → oauth-callback-ai-provider-BXhUblQr.js} +1 -1
  146. package/dist/client/assets/{onboarding-Cqok_-S0.js → onboarding-vNUwdiST.js} +1 -1
  147. package/dist/client/assets/{org-layout-CX1ali2o.js → org-layout-Dk4aqRs3.js} +1 -1
  148. package/dist/client/assets/{organization-choice-BvjYcUgL.js → organization-choice-BEjNku_f.js} +1 -1
  149. package/dist/client/assets/{orgs-LMX-WnJ3.js → orgs-Cdfe-MJM.js} +1 -1
  150. package/dist/client/assets/{page-seo-form-ByfB018R.js → page-seo-form-BQlQTPmN.js} +1 -1
  151. package/dist/client/assets/{popover-DCbBhRIu.js → popover-BJdYEE-0.js} +1 -1
  152. package/dist/client/assets/{post-calendar-BmnVmB1c.js → post-calendar-PKeYqO45.js} +1 -1
  153. package/dist/client/assets/{post-editor-2IIEXlMc.js → post-editor-Iw6l14n9.js} +1 -1
  154. package/dist/client/assets/{primitives-D3Byu5gP.js → primitives-BuYcUvRU.js} +1 -1
  155. package/dist/client/assets/{profile-C8QqbhfC.js → profile-DC2BD9UX.js} +1 -1
  156. package/dist/client/assets/{project-app-view-bc7KoHNm.js → project-app-view-hpAlBOj7.js} +1 -1
  157. package/dist/client/assets/{project-icon-OuMDwoA3.js → project-icon-Dra14WkC.js} +1 -1
  158. package/dist/client/assets/{prompts-Bzm8zwb7.js → prompts-FPfktgB9.js} +1 -1
  159. package/dist/client/assets/record-editor-DDX8_Aaq.js +1 -0
  160. package/dist/client/assets/redirect-editor-BKiZkTha.js +1 -0
  161. package/dist/client/assets/registry-DU2RshNd.js +2 -0
  162. package/dist/client/assets/{registry-layout--QJbMHJw.js → registry-layout-kaDhlhvn.js} +1 -1
  163. package/dist/client/assets/{reports-Cp5SOQdj.js → reports-B3iBq3pk.js} +1 -1
  164. package/dist/client/assets/{repositories-D7jt6s7N.js → repositories-BvrWAlFC.js} +1 -1
  165. package/dist/client/assets/{require-capability-DCcOMqgN.js → require-capability-C9DPCJ2u.js} +1 -1
  166. package/dist/client/assets/{required-auth-layout-Cn1LfVyd.js → required-auth-layout-BYXeRelM.js} +1 -1
  167. package/dist/client/assets/{reset-password-BnOeZ70l.js → reset-password-a7XKM2U5.js} +1 -1
  168. package/dist/client/assets/{review-settings-DEOzdgEG.js → review-settings-BmjrFOo5.js} +1 -1
  169. package/dist/client/assets/{roles-BthEMu9X.js → roles-Cb8DGHGk.js} +1 -1
  170. package/dist/client/assets/{schema-CbckVqfN.js → schema-DXOKrz9X.js} +1 -1
  171. package/dist/client/assets/{scroll-area-Bvq02Hbr.js → scroll-area-Bqfc_Erd.js} +1 -1
  172. package/dist/client/assets/{search-input-BXExtOld.js → search-input-CIDcVK1W.js} +1 -1
  173. package/dist/client/assets/{secrets-Cg_hxWXW.js → secrets-vWIhSw2n.js} +1 -1
  174. package/dist/client/assets/{sections-editor--931iFv5.js → sections-editor-GP3j8IAp.js} +1 -1
  175. package/dist/client/assets/{select-zQOHiEA6.js → select-DjihVQpE.js} +1 -1
  176. package/dist/client/assets/{select-model-BA84Djxj.js → select-model-DVj85GcE.js} +1 -1
  177. package/dist/client/assets/{self-tool-result-CL8jNSxU.js → self-tool-result-CILdhiz7.js} +1 -1
  178. package/dist/client/assets/{seo-editor-Cjng28hf.js → seo-editor-Cf-5ZI1C.js} +1 -1
  179. package/dist/client/assets/settings-layout-D-93a62O.js +1 -0
  180. package/dist/client/assets/{settings-sidebar-DvQnn6jo.js → settings-sidebar-ub0T8wlz.js} +1 -1
  181. package/dist/client/assets/{shell-controls-B93Aqrsy.js → shell-controls-BHPQ69NP.js} +1 -1
  182. package/dist/client/assets/{shell-layout-u7vIjAJ2.js → shell-layout-giov_RV6.js} +1 -1
  183. package/dist/client/assets/{skill-preview-DUckxm1M.js → skill-preview-Dc0F9K9f.js} +1 -1
  184. package/dist/client/assets/{skills-BQ2p7mU8.js → skills-BPPAhgo8.js} +1 -1
  185. package/dist/client/assets/{sso-BlTkwMs_.js → sso-D9lq9fiA.js} +1 -1
  186. package/dist/client/assets/{store-DpW30yeH.js → store-BFxE9Ubd.js} +1 -1
  187. package/dist/client/assets/store-registry-DlwPkUXk.js +2 -0
  188. package/dist/client/assets/{switch-Crn1m8Ty.js → switch-3uli6w8o.js} +1 -1
  189. package/dist/client/assets/{synced-repos-DEQNXeOM.js → synced-repos-pIQVPkS4.js} +1 -1
  190. package/dist/client/assets/{table-CPfPQObG.js → table-HInbTBT3.js} +1 -1
  191. package/dist/client/assets/{tabs-PHr5-Sm6.js → tabs-CB0X0rSm.js} +1 -1
  192. package/dist/client/assets/{task-board-HxgCbes1.js → task-board-Cf4HtK71.js} +1 -1
  193. package/dist/client/assets/{task-route-Cj5NLhi7.js → task-route-CpZajaUU.js} +1 -1
  194. package/dist/client/assets/{tasks-ptgYP-TN.js → tasks-BqDpZWKM.js} +1 -1
  195. package/dist/client/assets/{textarea-SZQQtpOJ.js → textarea-CbgllfHl.js} +1 -1
  196. package/dist/client/assets/{thread-intent-CZrpPLgb.js → thread-intent-CwML40cq.js} +1 -1
  197. package/dist/client/assets/{thread-route-CP1A3IMw.js → thread-route-CfKr1K45.js} +1 -1
  198. package/dist/client/assets/{toggle-group-DSF6RKWs.js → toggle-group-XO00wy6s.js} +1 -1
  199. package/dist/client/assets/{toolbar-u1uvCeRu.js → toolbar-WtIFrGCF.js} +1 -1
  200. package/dist/client/assets/{toolbar-icon-button-DYkGGfZd.js → toolbar-icon-button-BZyQ1b8j.js} +1 -1
  201. package/dist/client/assets/{track-Dk6T6yFd.js → track-DuWwbucV.js} +1 -1
  202. package/dist/client/assets/{types-zV_J5pVR.js → types-Dx22xJO1.js} +1 -1
  203. package/dist/client/assets/{use-ai-providers-BQvDcCtZ.js → use-ai-providers-C0USvI9F.js} +1 -1
  204. package/dist/client/assets/{use-automations-jxcz423f.js → use-automations-Bm4c3QsR.js} +1 -1
  205. package/dist/client/assets/{use-autosave-DGIFo8wk.js → use-autosave-COZeuXrG.js} +1 -1
  206. package/dist/client/assets/{use-connection-Dd6kUAU0.js → use-connection-B_f52nsX.js} +1 -1
  207. package/dist/client/assets/{use-copy-B3ZxAdyf.js → use-copy-C4kDu14m.js} +1 -1
  208. package/dist/client/assets/{use-create-virtual-mcp-bVNFPJww.js → use-create-virtual-mcp-Bk5L3sJJ.js} +1 -1
  209. package/dist/client/assets/{use-debounced-autosave-DZmV54Pv.js → use-debounced-autosave-Dr2yIC01.js} +1 -1
  210. package/dist/client/assets/{use-debounced-value-BULHGxEc.js → use-debounced-value-C6sbjzCo.js} +1 -1
  211. package/dist/client/assets/{use-decopilot-events-Y3bBtckC.js → use-decopilot-events-Cpx-O_6L.js} +1 -1
  212. package/dist/client/assets/{use-delete-connection-C_piTU4W.js → use-delete-connection-Do0rbLq6.js} +1 -1
  213. package/dist/client/assets/{use-deployment-admin-DVMeISn6.js → use-deployment-admin-B1ITNZl2.js} +1 -1
  214. package/dist/client/assets/{use-destination-route-BbXFM1pX.js → use-destination-route-DDQ78Jvv.js} +1 -1
  215. package/dist/client/assets/{use-file-configs-CdZKiWeS.js → use-file-configs-aH4hOs-Y.js} +1 -1
  216. package/dist/client/assets/{use-infinite-scroll-C5Ep99oQ.js → use-infinite-scroll-BJqBipr7.js} +1 -1
  217. package/dist/client/assets/{use-join-requests-CQ3Z4Qrw.js → use-join-requests-oAFbqCBk.js} +1 -1
  218. package/dist/client/assets/{use-mcp-auth-status-Zi2E6ZyD.js → use-mcp-auth-status-D9jS0E53.js} +1 -1
  219. package/dist/client/assets/{use-mcp-client-GjCeFgDH.js → use-mcp-client-B18ah0oT.js} +1 -1
  220. package/dist/client/assets/{use-mcp-prompts-CGlW_da5.js → use-mcp-prompts-DsHnNXXI.js} +1 -1
  221. package/dist/client/assets/{use-mcp-tools-CXwKYIie.js → use-mcp-tools-CCVeHBA6.js} +1 -1
  222. package/dist/client/assets/{use-members-CD_T8b9k.js → use-members-BhPw9btz.js} +1 -1
  223. package/dist/client/assets/{use-navigate-to-agent-BC0hw-vb.js → use-navigate-to-agent-CcKceYLc.js} +1 -1
  224. package/dist/client/assets/{use-org-auth-client-DMcrJO43.js → use-org-auth-client-CjMTRXnm.js} +1 -1
  225. package/dist/client/assets/{use-org-notice-B4YUBZRP.js → use-org-notice-CdmVkOT1.js} +1 -1
  226. package/dist/client/assets/{use-org-sso-u9wHl90t.js → use-org-sso-B976idpX.js} +1 -1
  227. package/dist/client/assets/{use-organization-roles-D_fJiyY7.js → use-organization-roles-CxkBMnQe.js} +1 -1
  228. package/dist/client/assets/{use-organization-settings-BH1NOa50.js → use-organization-settings-BmMnmPtW.js} +1 -1
  229. package/dist/client/assets/{use-panel-navigate-2xdG0afb.js → use-panel-navigate-Duta24ra.js} +1 -1
  230. package/dist/client/assets/{use-registry-connections-yodN_YsJ.js → use-registry-connections-BAD2PYkI.js} +1 -1
  231. package/dist/client/assets/{use-secrets-Cn2wvy2G.js → use-secrets-D1T_uOne.js} +1 -1
  232. package/dist/client/assets/{use-section-preview-base-C5A6LIdf.js → use-section-preview-base-CIZ9iv7b.js} +1 -1
  233. package/dist/client/assets/{use-status-sounds-CONvuMNp.js → use-status-sounds-InjXEoSW.js} +1 -1
  234. package/dist/client/assets/{use-tags-DUbHFFkW.js → use-tags-ioD3yFxX.js} +1 -1
  235. package/dist/client/assets/{use-view-mode-DXppc9Ne.js → use-view-mode-CB2VgC0t.js} +1 -1
  236. package/dist/client/assets/{use-virtual-mcp-B2EgYaXF.js → use-virtual-mcp-DiGxq30S.js} +1 -1
  237. package/dist/client/assets/useInfiniteQuery-Ce0KA0bU.js +1 -0
  238. package/dist/client/assets/useSuspenseInfiniteQuery-DMFx2SPM.js +1 -0
  239. package/dist/client/assets/{users-D4knlE5Y.js → users-DTeVRu1z.js} +1 -1
  240. package/dist/client/assets/{variant-calendar-liGK8R6N.js → variant-calendar-CKeoP_Ir.js} +1 -1
  241. package/dist/client/assets/{view-mode-toggle-Da1Cv3i4.js → view-mode-toggle-qfftb1wk.js} +1 -1
  242. package/dist/client/index.html +1 -1
  243. package/dist/server/cli.js +2 -2
  244. package/dist/server/server.js +2 -2
  245. package/package.json +1 -1
  246. package/dist/client/assets/api-keys-ALdi9hXk.js +0 -1
  247. package/dist/client/assets/app-editor-CxXdpHfH.js +0 -1
  248. package/dist/client/assets/record-editor-CFIOX_Yr.js +0 -1
  249. package/dist/client/assets/redirect-editor-ZRxBDumi.js +0 -1
  250. package/dist/client/assets/registry-epsDJaNV.js +0 -2
  251. package/dist/client/assets/settings-layout-CiAYVX75.js +0 -1
  252. package/dist/client/assets/store-registry-DZ23YwZo.js +0 -2
  253. package/dist/client/assets/useInfiniteQuery-B3e5h8-g.js +0 -1
  254. package/dist/client/assets/useSuspenseInfiniteQuery-DgElf62-.js +0 -1
@@ -1883,7 +1883,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Dr1=D(()=>{Ky()});f
1883
1883
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await vg`
1884
1884
  DELETE FROM kysely_migration WHERE name = ${Q}
1885
1885
  `.execute($)}}async function M1$($){await C44($),await _44($);let Z=new I1$({db:$,provider:{getMigrations:()=>Promise.resolve(Lo0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function v44($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await td0();let J=Q??u$(),G=async()=>{if(!Z&&!Q)await gO(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await M1$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function x44(){let $=u$(),Z=new I1$({db:$.db,provider:{getMigrations:()=>Promise.resolve(Lo0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var k1$=D(()=>{R1$();od0();wQ()});async function QX0($){let Z={...process.env},Q=n40($,Z);console.log(wP1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?na1(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (JQ0(),YQ0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (od0(),oa1));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (wQ(),Ua1)),{migrateToLatest:F}=await Promise.resolve().then(() => (k1$(),V1$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return Lr1(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var wo0=D(()=>{Ky();ta1();A$()});var v1$={};e(v1$,{updateService:()=>vE,subscribeCliState:()=>zo0,setTuiConsoleIntercepted:()=>XX0,setServerUrl:()=>fn,setMigrationsDone:()=>xn,setDevMode:()=>b44,resetCliStateForTests:()=>f44,isTuiConsoleIntercepted:()=>YX0,getCliState:()=>Eo0,addLogEntry:()=>iO});function S1$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function C1$(){return{services:S1$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function f44(){WY=C1$()}function vn(){for(let $ of jo0)$()}function Eo0(){return WY}function zo0($){return jo0.add($),()=>jo0.delete($)}function vE($){WY={...WY,services:WY.services.map((Z)=>Z.name===$.name?$:Z)},vn()}function xn(){WY={...WY,migrationsStatus:"done"},vn()}function fn($){WY={...WY,serverUrl:$},vn()}function iO($){let Z=[...WY.logs,$];WY={...WY,logs:Z.length>500?Z.slice(-500):Z},vn()}function b44(){WY={...WY,services:[...S1$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},vn()}function XX0($){_1$=$}function YX0(){return _1$}var WY,jo0,_1$=!1;var xE=D(()=>{WY=C1$();jo0=new Set});import{createServer as x1$}from"net";function y44($){return new Promise((Z)=>{let Q=x1$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function bn($){if(await y44($))return $;let Z=await new Promise((Q,X)=>{let Y=x1$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Po0=()=>{};var To0={};e(To0,{startDevServer:()=>h44,pipeToLogStore:()=>Ao0});import{join as g44}from"path";function Ao0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
1886
- `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;iO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)iO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function h44($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await bn(Number(Y)+1):await bn(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await QX0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)vE({name:L.name,status:"ready",port:L.port});xn();let F=g44(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Ao0(N.stdout),Ao0(N.stderr);fn(J),vE({name:"Vite",status:"ready",port:Number(Y)}),vE({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (JQ0(),YQ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var Ro0=D(()=>{wo0();xE();Po0()});var JX0;var Io0=D(()=>{JX0={name:"decocms",version:"4.340.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/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","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},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","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/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",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"}}});import{Box as c44,Text as f1$}from"ink";import{jsx as l44,jsxs as b1$}from"react/jsx-runtime";function y1$({version:$}){return b1$(c44,{flexDirection:"column",marginTop:1,children:[VQ0.map((Z,Q)=>l44(f1$,{color:kQ0[Q],children:Z},Q)),b1$(f1$,{dimColor:!0,children:[" v",$]})]})}var g1$=D(()=>{zn()});import{Box as fE,Text as pO}from"ink";import{Spinner as m44}from"@inkjs/ui";import{jsx as RJ,jsxs as xg}from"react/jsx-runtime";function h1$({status:$}){if($==="pending")return RJ(m44,{label:""});return RJ(pO,{color:"green",children:"\u2713"})}function d44($){return`${$.name}: ${$.port||"...."}`}function u1$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return xg(fE,{flexDirection:"column",paddingBottom:1,children:[RJ(y1$,{version:JX0.version}),RJ(fE,{marginBottom:1,children:RJ(pO,{dimColor:!0,children:"\u2500".repeat(80)})}),RJ(fE,{children:xg(pO,{dimColor:!0,children:["Home: ",Q]})}),xg(fE,{gap:2,children:[$.map((Y)=>xg(fE,{gap:1,children:[RJ(pO,{children:d44(Y)}),RJ(h1$,{status:Y.status})]},Y.name)),xg(fE,{gap:1,children:[RJ(pO,{children:"Migrations"}),RJ(h1$,{status:Z})]})]}),RJ(fE,{children:X?xg(pO,{children:["Open in browser: ",RJ(pO,{color:"cyan",children:X})]}):RJ(pO,{dimColor:!0,children:"Starting..."})})]})}var c1$=D(()=>{Io0();g1$()});import{Box as i44,Text as yn}from"ink";import{jsx as qo0,jsxs as Mo0}from"react/jsx-runtime";function p44($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function l1$({logs:$}){return qo0(i44,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return qo0(yn,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Mo0(yn,{children:[Mo0(yn,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),qo0(yn,{color:p44(Z.status),children:Z.status}),Mo0(yn,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var m1$=()=>{};var Vo0={};e(Vo0,{App:()=>o44});import{Box as n44}from"ink";import{useSyncExternalStore as t44}from"react";import{jsx as d1$,jsxs as r44}from"react/jsx-runtime";function o44({home:$}){let Z=t44(zo0,Eo0);return r44(n44,{flexDirection:"column",children:[d1$(u1$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),d1$(l1$,{logs:Z.logs})]})}var ko0=D(()=>{c1$();m1$();xE()});var DK="thread-gate",nU="decopilot-hosted-harness",tU="decopilot-hosted-harness-sandboxed",cG="automations",nO="background-tools",bE="task-board-github-reads";var i1$="11";function p1$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:i1$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var n1$=()=>{};import a44 from"pg";async function o1$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=s44}=$,Y=$.log??((W)=>console.log(W)),J=new a44.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[t1$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(e44)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[t1$.toString()])}catch{}await J.end().catch(()=>{})}}var t1$=8314027461559302n,s44=600000,e44=500;var r1$=D(()=>{h8()});function $64(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function So0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function a1$(){let $=$64();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:So0($,"--cpu-prof-dir")??process.cwd(),name:So0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(So0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function s1$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=kE();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),GX0=setInterval(()=>void Z().catch(()=>{}),$),GX0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(GX0)clearInterval(GX0)}}var GX0;var e1$=()=>{};import*as Z64 from"bun:jsc";function $$$(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Q64()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=X64()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var Q64,X64;var Z$$=D(()=>{({startSamplingProfiler:Q64,samplingProfilerStackTraces:X64}=Z64)});function Q$$(){a1$();let $=[s1$(),Xa1(),$$$()];return()=>{for(let Z of $)Z()}}var X$$=D(()=>{hd0();e1$();Z$$()});var yE=v((Y$$)=>{Object.defineProperty(Y$$,"__esModule",{value:!0});Y$$.RepublishHeaders=Y$$.DirectMsgHeaders=Y$$.JsHeaders=Y$$.AdvisoryKind=void 0;Y$$.isOrderedPushConsumerOptions=Y64;Y$$.isPullConsumer=J64;Y$$.isPushConsumer=G64;Y$$.isBoundPushConsumerOptions=K64;function Y64($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function J64($){return $.isPullConsumer()}function G64($){return $.isPushConsumer()}function K64($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Y$$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Y$$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Y$$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Y$$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var IJ=v((G$$)=>{Object.defineProperty(G$$,"__esModule",{value:!0});G$$.TD=G$$.TE=G$$.Empty=void 0;G$$.encode=L64;G$$.decode=w64;G$$.Empty=new Uint8Array(0);G$$.TE=new TextEncoder;G$$.TD=new TextDecoder;function D64(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function L64(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(G$$.TE.encode($[Q]));if(Z.length===0)return G$$.Empty;if(Z.length===1)return Z[0];return D64(...Z)}function w64($){if(!$||$.length===0)return"";return G$$.TD.decode($)}});var qJ=v((H$$)=>{Object.defineProperty(H$$,"__esModule",{value:!0});H$$.errors=H$$.PermissionViolationError=H$$.NoRespondersError=H$$.TimeoutError=H$$.RequestError=H$$.ProtocolError=H$$.ConnectionError=H$$.DrainingConnectionError=H$$.ClosedConnectionError=H$$.AuthorizationError=H$$.UserAuthenticationExpiredError=H$$.InvalidOperationError=H$$.InvalidArgumentError=H$$.InvalidSubjectError=void 0;class _o0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}H$$.InvalidSubjectError=_o0;class KX0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new KX0(`${$} ${Z}`,Q)}}H$$.InvalidArgumentError=KX0;class vo0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}H$$.InvalidOperationError=vo0;class WX0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new WX0($);return null}}H$$.UserAuthenticationExpiredError=WX0;class HX0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new HX0($);return null}}H$$.AuthorizationError=HX0;class xo0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}H$$.ClosedConnectionError=xo0;class fo0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}H$$.DrainingConnectionError=fo0;class bo0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}H$$.ConnectionError=bo0;class yo0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}H$$.ProtocolError=yo0;class go0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof FX0}}H$$.RequestError=go0;class ho0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}H$$.TimeoutError=ho0;class FX0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}H$$.NoRespondersError=FX0;class UX0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new UX0($,Q,X,Y)}}H$$.PermissionViolationError=UX0;H$$.errors={AuthorizationError:HX0,ClosedConnectionError:xo0,ConnectionError:bo0,DrainingConnectionError:fo0,InvalidArgumentError:KX0,InvalidOperationError:vo0,InvalidSubjectError:_o0,NoRespondersError:FX0,PermissionViolationError:UX0,ProtocolError:yo0,RequestError:go0,TimeoutError:ho0,UserAuthenticationExpiredError:WX0}});var LK=v((O$$)=>{Object.defineProperty(O$$,"__esModule",{value:!0});O$$.SimpleMutex=O$$.Perf=void 0;O$$.extend=x64;O$$.render=f64;O$$.timeout=b64;O$$.delay=y64;O$$.deadline=g64;O$$.deferred=co0;O$$.debugDeferred=h64;O$$.shuffle=u64;O$$.collect=c64;O$$.jitter=B$$;O$$.backoff=l64;O$$.nanos=m64;O$$.millis=d64;O$$.randomToken=n64;var v64=IJ(),uo0=qJ();function x64($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function f64($){return v64.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function b64($,Z=!0){let Q=Z?new uo0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new uo0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function y64($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function g64($,Z=1000){let Q=co0(),X=setTimeout(()=>{Q.reject(new uo0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function co0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function h64(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function u64($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function c64($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class U$${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}O$$.Perf=U$$;class N$${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=co0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}O$$.SimpleMutex=N$$;function B$$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function l64($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return B$$(Q>Z?$[Z]:$[Q])}}}function m64($){return $*1e6}function d64($){return Math.floor($/1e6)}var i64="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oU=new Uint8Array(62);for(let $=0;$<62;$++)oU[$]=i64.charCodeAt($);var p64=218340105584896;function n64(){let $=Math.floor(Math.random()*p64),Z=$%62,Q=oU[Z];$=($-Z)/62,Z=$%62;let X=oU[Z];$=($-Z)/62,Z=$%62;let Y=oU[Z];$=($-Z)/62,Z=$%62;let J=oU[Z];$=($-Z)/62,Z=$%62;let G=oU[Z];$=($-Z)/62,Z=$%62;let K=oU[Z];$=($-Z)/62,Z=$%62;let W=oU[Z];$=($-Z)/62;let H=oU[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var A$$=v((z$$)=>{Object.defineProperty(z$$,"__esModule",{value:!0});z$$.nuid=z$$.NuidImpl=void 0;var H54="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",tO=62,BX0=12,j$$=10,L$$=33,F54=333,w$$=BX0+j$$,mo0=new Uint8Array(tO);for(let $=0;$<tO;$++)mo0[$]=H54.charCodeAt($);var NX0=4294967296,E$$=BigInt(tO)**BigInt(j$$),gn=Number(E$$/(1n<<32n)),lo0=Number(E$$%(1n<<32n));function U54($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function N54($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else U54($)}class do0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(w$$),this.cbuf=new Uint8Array(BX0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(gn+1)),this.seqLo=Math.floor(Math.random()*NX0);while($++<8&&this.seqHi===gn&&this.seqLo>=lo0);if(this.seqHi===gn&&this.seqLo>=lo0)this.seqLo=0;this.inc=Math.random()*(F54-L$$)+L$$|0}setPre(){N54(this.cbuf);for(let $=0;$<BX0;$++)this.buf[$]=mo0[this.cbuf[$]%tO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=w$$-1;Q>=BX0;Q--){let X=Math.floor($/tO),J=($-X*tO)*NX0+Z,G=Math.floor(J/tO),K=J-G*tO;this.buf[Q]=mo0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=NX0)this.seqLo-=NX0,this.seqHi+=1;if(this.seqHi>gn||this.seqHi===gn&&this.seqLo>=lo0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}z$$.NuidImpl=do0;z$$.nuid=new do0});var q$$=v((R$$)=>{Object.defineProperty(R$$,"__esModule",{value:!0});R$$.nuid=R$$.Nuid=void 0;var T$$=A$$();R$$.Nuid=T$$.NuidImpl;R$$.nuid=T$$.nuid});var DX0=v((OX0)=>{Object.defineProperty(OX0,"__esModule",{value:!0});OX0.nuid=OX0.Nuid=void 0;var M$$=q$$();Object.defineProperty(OX0,"Nuid",{enumerable:!0,get:function(){return M$$.Nuid}});Object.defineProperty(OX0,"nuid",{enumerable:!0,get:function(){return M$$.nuid}})});var oO=v((V$$)=>{Object.defineProperty(V$$,"__esModule",{value:!0});V$$.DEFAULT_HOST=V$$.DEFAULT_PORT=V$$.Match=void 0;V$$.syncIterator=j54;V$$.createInbox=E54;var L54=DX0(),w54=qJ();V$$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function j54($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function E54($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw w54.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${L54.nuid.next()}`}V$$.DEFAULT_PORT=4222;V$$.DEFAULT_HOST="127.0.0.1"});var hn=v((_$$)=>{Object.defineProperty(_$$,"__esModule",{value:!0});_$$.DataBuffer=void 0;var S$$=IJ();class C$${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return S$$.TE.encode($)}static toAscii($){return S$$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}_$$.DataBuffer=C$$});var gE=v((f$$)=>{Object.defineProperty(f$$,"__esModule",{value:!0});f$$.LF=f$$.CR=f$$.CRLF=f$$.CR_LF_LEN=f$$.CR_LF=void 0;f$$.setTransportFactory=M54;f$$.defaultPort=V54;f$$.getUrlParseFn=k54;f$$.newTransport=S54;f$$.getResolveFn=C54;f$$.protoLen=x$$;f$$.extractProtocolMessage=_54;var R54=IJ(),I54=oO(),q54=hn(),MJ;function M54($){MJ=$}function V54(){return MJ!==void 0&&MJ.defaultPort!==void 0?MJ.defaultPort:I54.DEFAULT_PORT}function k54(){return MJ!==void 0&&MJ.urlParseFn?MJ.urlParseFn:void 0}function S54(){if(!MJ||typeof MJ.factory!=="function")throw Error("transport fn is not set");return MJ.factory()}function C54(){return MJ!==void 0&&MJ.dnsResolveFn?MJ.dnsResolveFn:void 0}f$$.CR_LF=`\r
1886
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;iO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)iO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function h44($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await bn(Number(Y)+1):await bn(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await QX0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)vE({name:L.name,status:"ready",port:L.port});xn();let F=g44(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Ao0(N.stdout),Ao0(N.stderr);fn(J),vE({name:"Vite",status:"ready",port:Number(Y)}),vE({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (JQ0(),YQ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var Ro0=D(()=>{wo0();xE();Po0()});var JX0;var Io0=D(()=>{JX0={name:"decocms",version:"4.340.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","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},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","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/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",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"}}});import{Box as c44,Text as f1$}from"ink";import{jsx as l44,jsxs as b1$}from"react/jsx-runtime";function y1$({version:$}){return b1$(c44,{flexDirection:"column",marginTop:1,children:[VQ0.map((Z,Q)=>l44(f1$,{color:kQ0[Q],children:Z},Q)),b1$(f1$,{dimColor:!0,children:[" v",$]})]})}var g1$=D(()=>{zn()});import{Box as fE,Text as pO}from"ink";import{Spinner as m44}from"@inkjs/ui";import{jsx as RJ,jsxs as xg}from"react/jsx-runtime";function h1$({status:$}){if($==="pending")return RJ(m44,{label:""});return RJ(pO,{color:"green",children:"\u2713"})}function d44($){return`${$.name}: ${$.port||"...."}`}function u1$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return xg(fE,{flexDirection:"column",paddingBottom:1,children:[RJ(y1$,{version:JX0.version}),RJ(fE,{marginBottom:1,children:RJ(pO,{dimColor:!0,children:"\u2500".repeat(80)})}),RJ(fE,{children:xg(pO,{dimColor:!0,children:["Home: ",Q]})}),xg(fE,{gap:2,children:[$.map((Y)=>xg(fE,{gap:1,children:[RJ(pO,{children:d44(Y)}),RJ(h1$,{status:Y.status})]},Y.name)),xg(fE,{gap:1,children:[RJ(pO,{children:"Migrations"}),RJ(h1$,{status:Z})]})]}),RJ(fE,{children:X?xg(pO,{children:["Open in browser: ",RJ(pO,{color:"cyan",children:X})]}):RJ(pO,{dimColor:!0,children:"Starting..."})})]})}var c1$=D(()=>{Io0();g1$()});import{Box as i44,Text as yn}from"ink";import{jsx as qo0,jsxs as Mo0}from"react/jsx-runtime";function p44($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function l1$({logs:$}){return qo0(i44,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return qo0(yn,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Mo0(yn,{children:[Mo0(yn,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),qo0(yn,{color:p44(Z.status),children:Z.status}),Mo0(yn,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var m1$=()=>{};var Vo0={};e(Vo0,{App:()=>o44});import{Box as n44}from"ink";import{useSyncExternalStore as t44}from"react";import{jsx as d1$,jsxs as r44}from"react/jsx-runtime";function o44({home:$}){let Z=t44(zo0,Eo0);return r44(n44,{flexDirection:"column",children:[d1$(u1$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),d1$(l1$,{logs:Z.logs})]})}var ko0=D(()=>{c1$();m1$();xE()});var DK="thread-gate",nU="decopilot-hosted-harness",tU="decopilot-hosted-harness-sandboxed",cG="automations",nO="background-tools",bE="task-board-github-reads";var i1$="11";function p1$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:i1$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var n1$=()=>{};import a44 from"pg";async function o1$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=s44}=$,Y=$.log??((W)=>console.log(W)),J=new a44.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[t1$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(e44)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[t1$.toString()])}catch{}await J.end().catch(()=>{})}}var t1$=8314027461559302n,s44=600000,e44=500;var r1$=D(()=>{h8()});function $64(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function So0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function a1$(){let $=$64();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:So0($,"--cpu-prof-dir")??process.cwd(),name:So0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(So0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function s1$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=kE();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),GX0=setInterval(()=>void Z().catch(()=>{}),$),GX0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(GX0)clearInterval(GX0)}}var GX0;var e1$=()=>{};import*as Z64 from"bun:jsc";function $$$(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Q64()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=X64()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var Q64,X64;var Z$$=D(()=>{({startSamplingProfiler:Q64,samplingProfilerStackTraces:X64}=Z64)});function Q$$(){a1$();let $=[s1$(),Xa1(),$$$()];return()=>{for(let Z of $)Z()}}var X$$=D(()=>{hd0();e1$();Z$$()});var yE=v((Y$$)=>{Object.defineProperty(Y$$,"__esModule",{value:!0});Y$$.RepublishHeaders=Y$$.DirectMsgHeaders=Y$$.JsHeaders=Y$$.AdvisoryKind=void 0;Y$$.isOrderedPushConsumerOptions=Y64;Y$$.isPullConsumer=J64;Y$$.isPushConsumer=G64;Y$$.isBoundPushConsumerOptions=K64;function Y64($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function J64($){return $.isPullConsumer()}function G64($){return $.isPushConsumer()}function K64($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Y$$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Y$$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Y$$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Y$$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var IJ=v((G$$)=>{Object.defineProperty(G$$,"__esModule",{value:!0});G$$.TD=G$$.TE=G$$.Empty=void 0;G$$.encode=L64;G$$.decode=w64;G$$.Empty=new Uint8Array(0);G$$.TE=new TextEncoder;G$$.TD=new TextDecoder;function D64(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function L64(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(G$$.TE.encode($[Q]));if(Z.length===0)return G$$.Empty;if(Z.length===1)return Z[0];return D64(...Z)}function w64($){if(!$||$.length===0)return"";return G$$.TD.decode($)}});var qJ=v((H$$)=>{Object.defineProperty(H$$,"__esModule",{value:!0});H$$.errors=H$$.PermissionViolationError=H$$.NoRespondersError=H$$.TimeoutError=H$$.RequestError=H$$.ProtocolError=H$$.ConnectionError=H$$.DrainingConnectionError=H$$.ClosedConnectionError=H$$.AuthorizationError=H$$.UserAuthenticationExpiredError=H$$.InvalidOperationError=H$$.InvalidArgumentError=H$$.InvalidSubjectError=void 0;class _o0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}H$$.InvalidSubjectError=_o0;class KX0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new KX0(`${$} ${Z}`,Q)}}H$$.InvalidArgumentError=KX0;class vo0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}H$$.InvalidOperationError=vo0;class WX0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new WX0($);return null}}H$$.UserAuthenticationExpiredError=WX0;class HX0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new HX0($);return null}}H$$.AuthorizationError=HX0;class xo0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}H$$.ClosedConnectionError=xo0;class fo0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}H$$.DrainingConnectionError=fo0;class bo0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}H$$.ConnectionError=bo0;class yo0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}H$$.ProtocolError=yo0;class go0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof FX0}}H$$.RequestError=go0;class ho0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}H$$.TimeoutError=ho0;class FX0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}H$$.NoRespondersError=FX0;class UX0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new UX0($,Q,X,Y)}}H$$.PermissionViolationError=UX0;H$$.errors={AuthorizationError:HX0,ClosedConnectionError:xo0,ConnectionError:bo0,DrainingConnectionError:fo0,InvalidArgumentError:KX0,InvalidOperationError:vo0,InvalidSubjectError:_o0,NoRespondersError:FX0,PermissionViolationError:UX0,ProtocolError:yo0,RequestError:go0,TimeoutError:ho0,UserAuthenticationExpiredError:WX0}});var LK=v((O$$)=>{Object.defineProperty(O$$,"__esModule",{value:!0});O$$.SimpleMutex=O$$.Perf=void 0;O$$.extend=x64;O$$.render=f64;O$$.timeout=b64;O$$.delay=y64;O$$.deadline=g64;O$$.deferred=co0;O$$.debugDeferred=h64;O$$.shuffle=u64;O$$.collect=c64;O$$.jitter=B$$;O$$.backoff=l64;O$$.nanos=m64;O$$.millis=d64;O$$.randomToken=n64;var v64=IJ(),uo0=qJ();function x64($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function f64($){return v64.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function b64($,Z=!0){let Q=Z?new uo0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new uo0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function y64($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function g64($,Z=1000){let Q=co0(),X=setTimeout(()=>{Q.reject(new uo0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function co0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function h64(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function u64($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function c64($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class U$${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}O$$.Perf=U$$;class N$${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=co0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}O$$.SimpleMutex=N$$;function B$$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function l64($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return B$$(Q>Z?$[Z]:$[Q])}}}function m64($){return $*1e6}function d64($){return Math.floor($/1e6)}var i64="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oU=new Uint8Array(62);for(let $=0;$<62;$++)oU[$]=i64.charCodeAt($);var p64=218340105584896;function n64(){let $=Math.floor(Math.random()*p64),Z=$%62,Q=oU[Z];$=($-Z)/62,Z=$%62;let X=oU[Z];$=($-Z)/62,Z=$%62;let Y=oU[Z];$=($-Z)/62,Z=$%62;let J=oU[Z];$=($-Z)/62,Z=$%62;let G=oU[Z];$=($-Z)/62,Z=$%62;let K=oU[Z];$=($-Z)/62,Z=$%62;let W=oU[Z];$=($-Z)/62;let H=oU[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var A$$=v((z$$)=>{Object.defineProperty(z$$,"__esModule",{value:!0});z$$.nuid=z$$.NuidImpl=void 0;var H54="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",tO=62,BX0=12,j$$=10,L$$=33,F54=333,w$$=BX0+j$$,mo0=new Uint8Array(tO);for(let $=0;$<tO;$++)mo0[$]=H54.charCodeAt($);var NX0=4294967296,E$$=BigInt(tO)**BigInt(j$$),gn=Number(E$$/(1n<<32n)),lo0=Number(E$$%(1n<<32n));function U54($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function N54($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else U54($)}class do0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(w$$),this.cbuf=new Uint8Array(BX0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(gn+1)),this.seqLo=Math.floor(Math.random()*NX0);while($++<8&&this.seqHi===gn&&this.seqLo>=lo0);if(this.seqHi===gn&&this.seqLo>=lo0)this.seqLo=0;this.inc=Math.random()*(F54-L$$)+L$$|0}setPre(){N54(this.cbuf);for(let $=0;$<BX0;$++)this.buf[$]=mo0[this.cbuf[$]%tO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=w$$-1;Q>=BX0;Q--){let X=Math.floor($/tO),J=($-X*tO)*NX0+Z,G=Math.floor(J/tO),K=J-G*tO;this.buf[Q]=mo0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=NX0)this.seqLo-=NX0,this.seqHi+=1;if(this.seqHi>gn||this.seqHi===gn&&this.seqLo>=lo0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}z$$.NuidImpl=do0;z$$.nuid=new do0});var q$$=v((R$$)=>{Object.defineProperty(R$$,"__esModule",{value:!0});R$$.nuid=R$$.Nuid=void 0;var T$$=A$$();R$$.Nuid=T$$.NuidImpl;R$$.nuid=T$$.nuid});var DX0=v((OX0)=>{Object.defineProperty(OX0,"__esModule",{value:!0});OX0.nuid=OX0.Nuid=void 0;var M$$=q$$();Object.defineProperty(OX0,"Nuid",{enumerable:!0,get:function(){return M$$.Nuid}});Object.defineProperty(OX0,"nuid",{enumerable:!0,get:function(){return M$$.nuid}})});var oO=v((V$$)=>{Object.defineProperty(V$$,"__esModule",{value:!0});V$$.DEFAULT_HOST=V$$.DEFAULT_PORT=V$$.Match=void 0;V$$.syncIterator=j54;V$$.createInbox=E54;var L54=DX0(),w54=qJ();V$$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function j54($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function E54($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw w54.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${L54.nuid.next()}`}V$$.DEFAULT_PORT=4222;V$$.DEFAULT_HOST="127.0.0.1"});var hn=v((_$$)=>{Object.defineProperty(_$$,"__esModule",{value:!0});_$$.DataBuffer=void 0;var S$$=IJ();class C$${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return S$$.TE.encode($)}static toAscii($){return S$$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}_$$.DataBuffer=C$$});var gE=v((f$$)=>{Object.defineProperty(f$$,"__esModule",{value:!0});f$$.LF=f$$.CR=f$$.CRLF=f$$.CR_LF_LEN=f$$.CR_LF=void 0;f$$.setTransportFactory=M54;f$$.defaultPort=V54;f$$.getUrlParseFn=k54;f$$.newTransport=S54;f$$.getResolveFn=C54;f$$.protoLen=x$$;f$$.extractProtocolMessage=_54;var R54=IJ(),I54=oO(),q54=hn(),MJ;function M54($){MJ=$}function V54(){return MJ!==void 0&&MJ.defaultPort!==void 0?MJ.defaultPort:I54.DEFAULT_PORT}function k54(){return MJ!==void 0&&MJ.urlParseFn?MJ.urlParseFn:void 0}function S54(){if(!MJ||typeof MJ.factory!=="function")throw Error("transport fn is not set");return MJ.factory()}function C54(){return MJ!==void 0&&MJ.dnsResolveFn?MJ.dnsResolveFn:void 0}f$$.CR_LF=`\r
1887
1887
  `;f$$.CR_LF_LEN=f$$.CR_LF.length;f$$.CRLF=q54.DataBuffer.fromAscii(f$$.CR_LF);f$$.CR=new Uint8Array(f$$.CRLF)[0];f$$.LF=new Uint8Array(f$$.CRLF)[1];function x$$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===f$$.CR&&$[Q]===f$$.LF)return Q+1}return 0}function _54($){let Z=x$$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return R54.TD.decode(X)}return""}});var oo0=v((m$$)=>{Object.defineProperty(m$$,"__esModule",{value:!0});m$$.ipV4=u$$;m$$.isIP=m54;m$$.parseIP=c$$;var un=4,hE=16,LX0=48,h$$=57,y$$=65,c54=70,g$$=97,l54=102,to0=16777215;function u$$($,Z,Q,X){let Y=new Uint8Array(hE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function m54($){return c$$($)!==void 0}function c$$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return l$$($);case":":return d54($)}return}function l$$($){let Z=new Uint8Array(un);for(let Q=0;Q<un;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=i54($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return u$$(Z[0],Z[1],Z[2],Z[3])}function d54($){let Z=new Uint8Array(hE),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<hE){let{n:Y,c:J,ok:G}=p54($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=hE-un)return;if(X+un>hE)return;let K=l$$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=un;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<hE){if(Q<0)return;let Y=hE-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function i54($){let Z=0,Q=0;for(Z=0;Z<$.length&&LX0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=h$$;Z++)if(Q=Q*10+($.charCodeAt(Z)-LX0),Q>=to0)return{n:to0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function p54($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(LX0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=h$$)Z*=16,Z+=$.charCodeAt(Q)-LX0;else if(g$$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=l54)Z*=16,Z+=$.charCodeAt(Q)-g$$+10;else if(y$$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=c54)Z*=16,Z+=$.charCodeAt(Q)-y$$+10;else break;if(Z>=to0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var Zr0=v((i$$)=>{Object.defineProperty(i$$,"__esModule",{value:!0});i$$.Servers=i$$.ServerImpl=void 0;i$$.isIPV4OrHostname=d$$;i$$.hostPort=$r0;var ro0=gE(),ao0=LK(),so0=oo0(),r54=oO(),a54=qJ();function d$$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function eo0($){return!d$$($)}function s54($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function $r0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=s54($),eo0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=eo0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):r54.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class fg{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=$r0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,so0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",J=new URL(`${Y}://${eo0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new fg(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,ao0.shuffle)(Z);return this.resolves=Z,Z}}i$$.ServerImpl=fg;class wX0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw a54.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,ro0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:J}=$r0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new fg(Y))}if(this.randomize)(0,ao0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,so0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,ro0.getUrlParseFn)();$=Q?Q($):$;let X=new fg($,Z);if((0,so0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return wX0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return wX0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,ro0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new fg(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,ao0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}i$$.Servers=wX0});var jX0=v((o$$)=>{Object.defineProperty(o$$,"__esModule",{value:!0});o$$.QueuedIteratorImpl=void 0;var Qr0=LK(),n$$=qJ();class t$${inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Qr0.deferred)(),this.yields=[],this.iterClosed=(0,Qr0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new n$$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new n$$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Qr0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}o$$.QueuedIteratorImpl=t$$});var Xr0=v((e$$)=>{Object.defineProperty(e$$,"__esModule",{value:!0});e$$.MuxSubscription=void 0;var Q94=oO(),a$$=qJ();class s$${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Q94.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new a$$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new a$$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}e$$.MuxSubscription=s$$});var Yr0=v((Q8$)=>{Object.defineProperty(Q8$,"__esModule",{value:!0});Q8$.Heartbeat=void 0;var X94=LK();class Z8${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,X94.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Q8$.Heartbeat=Z8$});var Kr0=v((K8$)=>{Object.defineProperty(K8$,"__esModule",{value:!0});K8$.DenoBuffer=K8$.MAX_SIZE=K8$.AssertionError=void 0;K8$.assert=J8$;K8$.concat=G8$;K8$.append=J94;K8$.readAll=G94;K8$.writeAll=K94;var Y94=IJ();class Jr0 extends Error{constructor($){super($);this.name="AssertionError"}}K8$.AssertionError=Jr0;function J8$($,Z="Assertion failed."){if(!$)throw new Jr0(Z)}var Y8$=32768;K8$.MAX_SIZE=4294967294;function EX0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function G8$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function J94($,Z){return G8$($,Uint8Array.of(Z))}class Gr0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){J8$($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=EX0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Y94.TE.encode($))}write($){let Z=this._grow($.byteLength);return EX0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)EX0(this._buf.subarray(this._off),this._buf);else if(X+$>K8$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,K8$.MAX_SIZE));EX0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,K8$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(Y8$);while(!0){let X=this.capacity-this.length<Y8$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}K8$.DenoBuffer=Gr0;function G94($){let Z=new Gr0;return Z.readFrom($),Z.bytes()}function K94($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var Fr0=v((N8$)=>{Object.defineProperty(N8$,"__esModule",{value:!0});N8$.cc=N8$.State=N8$.Parser=N8$.Kind=void 0;N8$.describe=O94;var Wr0=Kr0(),Hr0=IJ();N8$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function O94($){let Z,Q="";switch($.kind){case N8$.Kind.MSG:Z="MSG";break;case N8$.Kind.OK:Z="OK";break;case N8$.Kind.ERR:Z="ERR",Q=Hr0.TD.decode($.data);break;case N8$.Kind.PING:Z="PING";break;case N8$.Kind.PONG:Z="PONG";break;case N8$.Kind.INFO:Z="INFO",Q=Hr0.TD.decode($.data)}return`${Z}: ${Q}`}function H8$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var F8$=48,D94=57,bg=67108864;class U8${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=N8$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case N8$.State.OP_START:switch(Q){case N8$.cc.M:case N8$.cc.m:this.state=N8$.State.OP_M,this.hdr=-1,this.ma=H8$();break;case N8$.cc.H:case N8$.cc.h:this.state=N8$.State.OP_H,this.hdr=0,this.ma=H8$();break;case N8$.cc.P:case N8$.cc.p:this.state=N8$.State.OP_P;break;case N8$.cc.PLUS:this.state=N8$.State.OP_PLUS;break;case N8$.cc.MINUS:this.state=N8$.State.OP_MINUS;break;case N8$.cc.I:case N8$.cc.i:this.state=N8$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_H:switch(Q){case N8$.cc.M:case N8$.cc.m:this.state=N8$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_M:switch(Q){case N8$.cc.S:case N8$.cc.s:this.state=N8$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_MS:switch(Q){case N8$.cc.G:case N8$.cc.g:this.state=N8$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_MSG:switch(Q){case N8$.cc.SPACE:case N8$.cc.TAB:this.state=N8$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_MSG_SPC:switch(Q){case N8$.cc.SPACE:case N8$.cc.TAB:continue;default:this.state=N8$.State.MSG_ARG,this.as=Z}break;case N8$.State.MSG_ARG:switch(Q){case N8$.cc.CR:this.drop=1;break;case N8$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=N8$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case N8$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:N8$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=N8$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:N8$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=N8$.State.MSG_END;break;case N8$.State.MSG_END:switch(Q){case N8$.cc.NL:this.drop=0,this.as=Z+1,this.state=N8$.State.OP_START;break;default:continue}break;case N8$.State.OP_PLUS:switch(Q){case N8$.cc.O:case N8$.cc.o:this.state=N8$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_PLUS_O:switch(Q){case N8$.cc.K:case N8$.cc.k:this.state=N8$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_PLUS_OK:switch(Q){case N8$.cc.NL:this.dispatcher.push({kind:N8$.Kind.OK}),this.drop=0,this.state=N8$.State.OP_START;break}break;case N8$.State.OP_MINUS:switch(Q){case N8$.cc.E:case N8$.cc.e:this.state=N8$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_MINUS_E:switch(Q){case N8$.cc.R:case N8$.cc.r:this.state=N8$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_MINUS_ER:switch(Q){case N8$.cc.R:case N8$.cc.r:this.state=N8$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_MINUS_ERR:switch(Q){case N8$.cc.SPACE:case N8$.cc.TAB:this.state=N8$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_MINUS_ERR_SPC:switch(Q){case N8$.cc.SPACE:case N8$.cc.TAB:continue;default:this.state=N8$.State.MINUS_ERR_ARG,this.as=Z}break;case N8$.State.MINUS_ERR_ARG:switch(Q){case N8$.cc.CR:this.drop=1;break;case N8$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:N8$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=N8$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case N8$.State.OP_P:switch(Q){case N8$.cc.I:case N8$.cc.i:this.state=N8$.State.OP_PI;break;case N8$.cc.O:case N8$.cc.o:this.state=N8$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_PO:switch(Q){case N8$.cc.N:case N8$.cc.n:this.state=N8$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_PON:switch(Q){case N8$.cc.G:case N8$.cc.g:this.state=N8$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_PONG:switch(Q){case N8$.cc.NL:this.dispatcher.push({kind:N8$.Kind.PONG}),this.drop=0,this.state=N8$.State.OP_START;break}break;case N8$.State.OP_PI:switch(Q){case N8$.cc.N:case N8$.cc.n:this.state=N8$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_PIN:switch(Q){case N8$.cc.G:case N8$.cc.g:this.state=N8$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_PING:switch(Q){case N8$.cc.NL:this.dispatcher.push({kind:N8$.Kind.PING}),this.drop=0,this.state=N8$.State.OP_START;break}break;case N8$.State.OP_I:switch(Q){case N8$.cc.N:case N8$.cc.n:this.state=N8$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_IN:switch(Q){case N8$.cc.F:case N8$.cc.f:this.state=N8$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_INF:switch(Q){case N8$.cc.O:case N8$.cc.o:this.state=N8$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_INFO:switch(Q){case N8$.cc.SPACE:case N8$.cc.TAB:this.state=N8$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case N8$.State.OP_INFO_SPC:switch(Q){case N8$.cc.SPACE:case N8$.cc.TAB:continue;default:this.state=N8$.State.INFO_ARG,this.as=Z}break;case N8$.State.INFO_ARG:switch(Q){case N8$.cc.CR:this.drop=1;break;case N8$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:N8$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=N8$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===N8$.State.MSG_ARG||this.state===N8$.State.MINUS_ERR_ARG||this.state===N8$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Wr0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===N8$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Wr0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new Wr0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case N8$.cc.SPACE:case N8$.cc.TAB:case N8$.cc.CR:case N8$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],bg);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],bg);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${Hr0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case N8$.cc.SPACE:case N8$.cc.TAB:case N8$.cc.CR:case N8$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],bg),this.ma.size=this.protoParseInt(Z[3],bg);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],bg),this.ma.size=this.protoParseInt(Z[4],bg);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<F8$||$[X]>D94)return-1;Q=Q*10+($[X]-F8$)}return Z!==void 0&&Q>Z?-1:Q}}N8$.Parser=U8$;N8$.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};N8$.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var AX0=v((O8$)=>{Object.defineProperty(O8$,"__esModule",{value:!0});O8$.MsgHdrsImpl=void 0;O8$.canonicalMIMEHeaderKey=Nr0;O8$.headers=j94;var B8$=IJ(),wK=oO(),PX0=qJ();function Nr0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw PX0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function j94($=0,Z=""){if($===0&&Z!=="")throw PX0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw PX0.InvalidArgumentError.format("description","is required");return new yg($,Z)}var Ur0="NATS/1.0";class yg{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new yg,X=B8$.TD.decode($).split(`\r
1888
1888
  `),Y=X[0];if(Y!==Ur0){let J=Y.replace(Ur0,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Ur0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
1889
1889
  ${Z}: ${Q[X]}`;return`${$}\r
@@ -4543,7 +4543,7 @@ ${Y}`,$.data)}function QS0($){let Z=$;if(!Z||Z.isError!==!0||!Array.isArray(Z.co
4543
4543
  ${Z}`}:X)}}var JX8=D(()=>{P9()});async function bh6($,Z,Q){if(!$)return!1;let X=await $.get("tools",Z).catch(()=>null);if(!X)return!1;for(let Y of X)if(typeof Y==="object"&&Y!==null&&Y.name===Q)return Y.annotations?.readOnlyHint===!0;return!1}function lO1(){return{kind:"org"}}function EL($,Z,Q,X){let Y=new e9({name:`lazy-${$.id}`,version:"1.0.0"},{capabilities:{},jsonSchemaValidator:C5}),J=$.metadata?.isDevConnection===!0,G=null,K=!1;function W(){if(K)return Promise.reject(Error(`MCP client for connection ${$.id} is closed`));if(!G){j30($.id);let L=h7($,Z,Q).then((w)=>{E30($.id);let j=w.onclose;return w.onclose=()=>{if(G===L)G=null;j?.()},w}).catch((w)=>{throw G=null,z30($.id),w});G=L}return G}let H=(L,w)=>L!==void 0||w!==void 0,F=(L,w,j,E)=>{return async(z,P)=>{if($.connection_type==="VIRTUAL"||J||!X||H(z,P)){let I=await W();return w(I,z,P)}let A=await jL(L,$.id,async()=>{let I=await W(),V=await w(I);return j(V)},X,(I)=>Z.pendingRevalidations.push(I),wL);return E(A??[])}};Y.listTools=F("tools",(L,w,j)=>L.listTools(w,j),(L)=>L.tools,(L)=>({tools:L})),Y.listResources=F("resources",(L,w,j)=>L.listResources(w,j),(L)=>L.resources,(L)=>({resources:L})),Y.listPrompts=F("prompts",(L,w,j)=>L.listPrompts(w,j),(L)=>L.prompts,(L)=>({prompts:L}));let U=sK0(),N=$.connection_type!=="VIRTUAL"&&!J,B=async(L,w,j)=>{let E=L?.name,z=U&&N&&typeof E==="string"&&await bh6(X,$.id,E);if(U&&z&&!w)return await U.fetch({type:"tools/call",connectionId:$.id,scope:lO1(),params:{name:E,arguments:L?.arguments},fetchLive:async()=>{return(await W()).callTool(L,w,j)},shouldCache:(I)=>I?.isError!==!0,onRevalidation:(I)=>Z.pendingRevalidations.push(I)});let P=await W();if(U&&N&&!z)try{return await P.callTool(L,w,j)}finally{Bc($.id)}return P.callTool(L,w,j)};Y.callTool=async(L,w,j)=>{let E=L?.name,z=typeof E==="string"?E:null,P=L?.arguments,A=async()=>{return(await X.get("tools",$.id).catch(()=>null))?.find((x)=>typeof x==="object"&&x!==null&&x.name===z)?.inputSchema},I=async(l)=>{let x=QX8(l,P);if(!x)return null;return await B({...L,arguments:x},w,j).catch(()=>null)},V;try{V=await B(L,w,j)}catch(l){if(!z||!X||!(l instanceof E1)||l.code!==V1.InvalidParams)throw l;let x=await A(),b=await I(x);if(b&&!QS0(b))return b;throw XX8(l,z,x,P)}if(!z||!X||!QS0(V))return V;let q=await A(),C=await I(q);if(C&&!QS0(C))return C;return YX8(V,cO1(z,q,P))},Y.getPrompt=async(L,w)=>{if(!U||!N)return(await W()).getPrompt(L,w);return await U.fetch({type:"prompts/get",connectionId:$.id,scope:lO1(),params:L,fetchLive:async()=>{return(await W()).getPrompt(L,w)},onRevalidation:(E)=>Z.pendingRevalidations.push(E)})},Y.readResource=async(L,w)=>{if(!U||!N){if(process.env?.MCP_CACHE_DEBUG)console.log("[mcp-read-cache] BYPASS (VIRTUAL)",$.id,"resources/read");return(await W()).readResource(L,w)}return await U.fetch({type:"resources/read",connectionId:$.id,scope:lO1(),params:L,fetchLive:async()=>{return(await W()).readResource(L,w)},onRevalidation:(E)=>Z.pendingRevalidations.push(E)})},Y.listResourceTemplates=async(L,w)=>{return(await W()).listResourceTemplates(L,w)};let O=Y.close.bind(Y);return Y.close=async()=>{if(K=!0,G){let L=await G.catch(()=>null);if(L)await L.close().catch(()=>{})}await O()},Y}var Da=D(()=>{SH();TQ();P9();o$1();Oa();Sa();AY();Va();JX8()});function u31($){return{client:{callTool:$.callTool.bind($),listTools:$.listTools.bind($)}}}async function yh6($,Z,{superUser:Q}){if(!Q&&!Z.organization?.id)throw Error("Organization context is required");let X=typeof $==="string"?await Z.storage.connections.findById($,Z.organization?.id):$;if(!X)throw Error("Connection not found");if(Z.organization&&X.organization_id!==Z.organization.id)throw Error("Connection does not belong to the active organization");if(!Z.organization){let H=await Z.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",X.organization_id).executeTakeFirst();Z.organization=H?{id:H.id,slug:H.slug,name:H.name}:{id:X.organization_id}}if(X.status!=="active")throw Error(`Connection inactive: ${X.status}`);let Y=EL(X,Z,Q,T9()??void 0),J=Fz(Y,{name:"mcp-cms-proxy-client",version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}},toolCallTimeoutMs:yh}),{client:G,server:K}=K01();await J.connect(K);let W=new e9({name:"mcp-cms-proxy-client",version:"1.0.0"},{jsonSchemaValidator:C5});return await W.connect(G),W}async function GX8($,Z){return yh6($,Z,{superUser:!1})}var c31=D(()=>{Da();AY();TQ();SH()});function mO1($,Z){for(let[Q,X]of Object.entries(Z)){let Y=$[Q];if(!Y||Y.length===0){let G=$["*"];if(!G||G.length===0)return!1;if(G.includes("*"))continue;let K=new Set(G);for(let W of X)if(!K.has(W))return!1;continue}if(Y.includes("*"))continue;let J=new Set(Y);for(let G of X)if(!J.has(G))return!1}return!0}import{sql as dO1}from"kysely";function XS0($){if($==null)return null;return typeof $==="string"?$:$.toISOString()}function YS0($){return`msg_async_stub_${$}`}async function iO1($,Z){await $.deleteFrom("thread_messages").where("id","=",YS0(Z)).execute(),await $.deleteFrom("thread_message_parts").where("message_id","=",YS0(Z)).execute()}function gh6($){if($==null)return null;if(typeof $!=="string")return $;try{return JSON.parse($)}catch{return null}}function pO1($){return{id:$.id,interactionId:$.interaction_id??null,toolCallId:$.tool_call_id,organizationId:$.organization_id,threadId:$.thread_id,messageId:$.message_id??null,provider:$.provider,modelId:$.model_id,query:$.query,status:$.status,attempts:$.attempts??0,lastPolledAt:XS0($.last_polled_at),lastError:$.last_error??null,inputTokens:$.input_tokens??null,outputTokens:$.output_tokens??null,citations:gh6($.citations),resultUri:$.result_uri??null,resultPreview:$.result_preview??null,resultContent:$.result_content??null,createdAt:XS0($.created_at)??"",updatedAt:XS0($.updated_at)??"",completedAt:XS0($.completed_at)}}class nO1{inner;organizationId;constructor($,Z){this.inner=$;this.organizationId=Z}requireOrg(){if(!this.organizationId)throw Error("OrgScopedAsyncResearchJobStorage: requires an authenticated organization");return this.organizationId}setOrganizationId($){this.organizationId=$}upsertPending($){return this.inner.upsertPending({organizationId:this.requireOrg(),...$})}findByToolCall($){return this.inner.findByToolCall(this.requireOrg(),$)}markPolling($,Z,Q){return this.inner.markPolling(this.requireOrg(),$,Z,Q)}recordPoll($,Z){return this.inner.recordPoll(this.requireOrg(),$,Z)}markCompleted($,Z){return this.inner.markCompleted(this.requireOrg(),$,Z)}markFailed($,Z){return this.inner.markFailed(this.requireOrg(),$,Z)}markCancelled($,Z){return this.inner.markCancelled(this.requireOrg(),$,Z)}}class s$0{db;constructor($){this.db=$}async upsertPending($){let Z=new Date().toISOString(),Q=await this.db.insertInto("async_research_jobs").values({organization_id:$.organizationId,thread_id:$.threadId,tool_call_id:$.toolCallId,message_id:$.messageId??null,provider:$.provider,model_id:$.modelId,query:$.query,status:"pending",attempts:0,updated_at:Z}).onConflict((Y)=>Y.columns(["organization_id","tool_call_id"]).doNothing()).returningAll().executeTakeFirst();if(Q)return pO1(Q);let X=await this.db.selectFrom("async_research_jobs").selectAll().where("organization_id","=",$.organizationId).where("tool_call_id","=",$.toolCallId).executeTakeFirstOrThrow();return pO1(X)}async findByToolCall($,Z){let Q=await this.db.selectFrom("async_research_jobs").selectAll().where("organization_id","=",$).where("tool_call_id","=",Z).executeTakeFirst();return Q?pO1(Q):null}async markPolling($,Z,Q,X){let Y=new Date().toISOString();await this.db.transaction().execute(async(J)=>{if(await J.updateTable("async_research_jobs").set({status:"polling",interaction_id:Q,last_polled_at:Y,updated_at:Y}).where("organization_id","=",$).where("tool_call_id","=",Z).execute(),(await J.selectFrom("threads").select("message_storage_version").where("id","=",X.threadId).where("organization_id","=",$).executeTakeFirst())?.message_storage_version!==2)return;let K=YS0(Z);await J.insertInto("thread_message_parts").values([{id:`${X.threadId}:${K}:0`,seq:0,org_id:$,thread_id:X.threadId,run_id:X.threadId,message_id:K,role:"assistant",kind:"tool_call",payload:JSON.stringify({type:`tool-${X.toolName}`,toolCallId:Z,state:"input-available",input:{query:X.query}}),payload_ref:null,metadata:null,created_at:Y},{id:`${X.threadId}:${K}:finish`,seq:1,org_id:$,thread_id:X.threadId,run_id:X.threadId,message_id:K,role:"assistant",kind:"finish",payload:JSON.stringify({}),payload_ref:null,metadata:null,created_at:Y}]).onConflict((W)=>W.column("id").doNothing()).execute()})}async recordPoll($,Z,Q){let X=new Date().toISOString();await this.db.updateTable("async_research_jobs").set({attempts:dO1`attempts + 1`,last_polled_at:X,...Q!==void 0?{last_error:Q}:{},updated_at:X}).where("organization_id","=",$).where("tool_call_id","=",Z).execute()}async markCompleted($,Z,Q){let X=new Date().toISOString();await this.db.transaction().execute(async(Y)=>{await Y.updateTable("async_research_jobs").set({status:"completed",input_tokens:Q.inputTokens,output_tokens:Q.outputTokens,citations:JSON.stringify(Q.citations),result_uri:Q.resultUri,result_preview:Q.resultPreview,result_content:Q.resultContent,completed_at:X,updated_at:X}).where("organization_id","=",$).where("tool_call_id","=",Z).execute(),await iO1(Y,Z)})}async markFailed($,Z,Q){let X=new Date().toISOString();await this.db.transaction().execute(async(Y)=>{await Y.updateTable("async_research_jobs").set({status:"failed",last_error:Q,completed_at:X,updated_at:X}).where("organization_id","=",$).where("tool_call_id","=",Z).execute(),await iO1(Y,Z)})}async markCancelled($,Z,Q){let X=new Date().toISOString();await this.db.transaction().execute(async(Y)=>{await Y.updateTable("async_research_jobs").set({status:"cancelled",last_error:Q??null,completed_at:X,updated_at:X}).where("organization_id","=",$).where("tool_call_id","=",Z).execute(),await iO1(Y,Z)})}async sweepAbandoned($){let Z=new Date(Date.now()-$).toISOString(),Q=new Date().toISOString();return await this.db.transaction().execute(async(X)=>{let Y=await X.updateTable("async_research_jobs").set({status:"abandoned",completed_at:Q,updated_at:Q,last_error:dO1`COALESCE(last_error, '') || ' [abandoned by sweeper]'`}).where("status","in",["pending","polling"]).where(dO1`COALESCE(last_polled_at, created_at) < ${Z}::timestamptz`).returning(["tool_call_id"]).execute();if(Y.length===0)return 0;let J=Y.map((G)=>YS0(G.tool_call_id));return await X.deleteFrom("thread_messages").where("id","in",J).execute(),await X.deleteFrom("thread_message_parts").where("message_id","in",J).execute(),Y.length})}}var tO1=()=>{};class oO1{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("subsidized_gateway_keys").select("encrypted_key").where("organization_id","=",$).executeTakeFirst();if(!Z)return null;return await this.vault.decrypt(Z.encrypted_key)}async put($,Z){let Q=await this.vault.encrypt(Z);await this.db.insertInto("subsidized_gateway_keys").values({organization_id:$,encrypted_key:Q}).onConflict((X)=>X.column("organization_id").doUpdateSet({encrypted_key:Q})).execute()}}import{sql as hh6}from"kysely";function KX8($){return $ instanceof Date?$.toISOString():String($)}class rO1{db;vault;constructor($,Z){this.db=$;this.vault=Z}rowToInfo($){return{id:$.id,organizationId:$.organization_id,name:$.name,description:$.description,bucket:$.bucket,region:$.region,endpoint:$.endpoint,forcePathStyle:$.force_path_style,prefix:$.prefix,publicUrlBase:$.public_url_base,credentialType:$.credential_type??"static",refreshUrl:$.refresh_url,siteSlug:$.site_slug,createdBy:$.created_by,createdAt:KX8($.created_at),updatedBy:$.updated_by,updatedAt:KX8($.updated_at)}}async create($){let Z=_8("fcfg"),Q=await this.vault.encrypt(JSON.stringify($.credentials)),X=new Date,Y=await this.db.insertInto("org_file_configs").values({id:Z,organization_id:$.organizationId,name:$.name,description:$.description??null,bucket:$.bucket,region:$.region,endpoint:$.endpoint??null,force_path_style:$.forcePathStyle??!1,prefix:$.prefix??null,public_url_base:$.publicUrlBase??null,credential_type:$.credentials.type,refresh_url:$.refreshUrl??null,site_slug:$.siteSlug??null,encrypted_credentials:Q,created_by:$.createdBy,created_at:X,updated_by:$.createdBy,updated_at:X}).returning(JS0).executeTakeFirstOrThrow();return this.rowToInfo(Y)}async update($){if(!await this.db.selectFrom("org_file_configs").where("id","=",$.id).where("organization_id","=",$.organizationId).select(["id"]).executeTakeFirst())throw new Rd($.id);let Q={updated_by:$.updatedBy,updated_at:new Date};if($.name!==void 0)Q.name=$.name;if($.description!==void 0)Q.description=$.description;if($.bucket!==void 0)Q.bucket=$.bucket;if($.region!==void 0)Q.region=$.region;if($.endpoint!==void 0)Q.endpoint=$.endpoint;if($.forcePathStyle!==void 0)Q.force_path_style=$.forcePathStyle;if($.prefix!==void 0)Q.prefix=$.prefix;if($.publicUrlBase!==void 0)Q.public_url_base=$.publicUrlBase;if($.refreshUrl!==void 0)Q.refresh_url=$.refreshUrl;if($.siteSlug!==void 0)Q.site_slug=$.siteSlug;if($.credentials!==void 0)Q.credential_type=$.credentials.type,Q.encrypted_credentials=await this.vault.encrypt(JSON.stringify($.credentials));let X=await this.db.updateTable("org_file_configs").set(Q).where("id","=",$.id).where("organization_id","=",$.organizationId).returning(JS0).executeTakeFirstOrThrow();return this.rowToInfo(X)}async delete($,Z){if(!await this.db.selectFrom("org_file_configs").where("id","=",$).where("organization_id","=",Z).select(["id"]).executeTakeFirst())throw new Rd($);await this.db.deleteFrom("org_file_configs").where("id","=",$).where("organization_id","=",Z).execute()}async list($){return(await this.db.selectFrom("org_file_configs").where("organization_id","=",$).select(JS0).orderBy("created_at","desc").execute()).map((Q)=>this.rowToInfo(Q))}async findById($,Z){let Q=await this.db.selectFrom("org_file_configs").where("id","=",$).where("organization_id","=",Z).select(JS0).executeTakeFirst();if(!Q)throw new Rd($);return this.rowToInfo(Q)}async resolveById($,Z){let Q=await this.db.selectFrom("org_file_configs").where("id","=",$).where("organization_id","=",Z).selectAll().executeTakeFirst();if(!Q)throw new Rd($);return{info:this.rowToInfo(Q),credentials:await this.decodeCredentials(Q)}}async resolveByName($){let Z=await this.db.selectFrom("org_file_configs").where("organization_id","=",$.organizationId).where(hh6`lower(name) = lower(${$.name})`).selectAll().executeTakeFirst();if(!Z)throw new Rd($.name);return{info:this.rowToInfo(Z),credentials:await this.decodeCredentials(Z)}}async decodeCredentials($){if($.credential_type==="managed")return{type:"managed"};let Z=await this.vault.decrypt($.encrypted_credentials),Q=JSON.parse(Z);if(($.credential_type??"static")==="sts-session")return{type:"sts-session",apiKey:String(Q.apiKey)};return{type:"static",accessKeyId:String(Q.accessKeyId),secretAccessKey:String(Q.secretAccessKey)}}}var JS0,Rd;var WX8=D(()=>{RQ();JS0=["id","organization_id","name","description","bucket","region","endpoint","force_path_style","prefix","public_url_base","credential_type","refresh_url","site_slug","created_by","created_at","updated_by","updated_at"];Rd=class Rd extends Error{constructor($){super(`File config ${$} not found`);this.name="OrgFileConfigNotFoundError"}}});function HX8($){return $ instanceof Date?$.toISOString():String($)}function e$0($){return{slug:$.slug,organizationId:$.organization_id,source:$.source,createdBy:$.created_by,createdAt:HX8($.created_at),updatedBy:$.updated_by,updatedAt:HX8($.updated_at)}}class Ob{db;constructor($){this.db=$}async claimSite($){if(!CX($.slug))throw Error(`Invalid site slug "${$.slug}" \u2014 must be 1-60 chars of lowercase letters, digits, or hyphens, starting with a letter or digit`);let Z=new Date,Q=await this.db.insertInto("org_sites").values({slug:$.slug,organization_id:$.organizationId,source:$.source??"deco-import",created_by:$.by,created_at:Z,updated_by:$.by,updated_at:Z}).onConflict((J)=>J.column("slug").doNothing()).returningAll().executeTakeFirst();if(Q)return e$0(Q);let X=await this.getBySlug($.slug);if(!X)throw new $80($.slug,"unknown");if(X.organizationId!==$.organizationId)throw new $80($.slug,X.organizationId);let Y=await this.db.updateTable("org_sites").set({source:$.source??X.source,updated_by:$.by,updated_at:Z}).where("slug","=",$.slug).where("organization_id","=",$.organizationId).returningAll().executeTakeFirstOrThrow();return e$0(Y)}async reassignSite($){if(!CX($.slug))throw Error(`Invalid site slug "${$.slug}" \u2014 must be 1-60 chars of lowercase letters, digits, or hyphens, starting with a letter or digit`);let Z=new Date,Q=await this.db.insertInto("org_sites").values({slug:$.slug,organization_id:$.organizationId,source:$.source??"manual",created_by:$.by,created_at:Z,updated_by:$.by,updated_at:Z}).onConflict((X)=>X.column("slug").doUpdateSet({organization_id:$.organizationId,source:$.source??"manual",updated_by:$.by,updated_at:Z})).returningAll().executeTakeFirstOrThrow();return e$0(Q)}async releaseSite($,Z){let Q=await this.db.deleteFrom("org_sites").where("slug","=",$).where("organization_id","=",Z).executeTakeFirst();return Number(Q.numDeletedRows??0n)>0}async getBySlug($){let Z=await this.db.selectFrom("org_sites").selectAll().where("slug","=",$).executeTakeFirst();return Z?e$0(Z):null}async listByOrg($){return(await this.db.selectFrom("org_sites").selectAll().where("organization_id","=",$).orderBy("slug","asc").execute()).map((Q)=>e$0(Q))}async isOwnedBy($,Z){return!!await this.db.selectFrom("org_sites").select("slug").where("slug","=",$).where("organization_id","=",Z).executeTakeFirst()}}var $80;var aO1=D(()=>{IN();$80=class $80 extends Error{slug;ownerOrganizationId;constructor($,Z){super(`Site slug "${$}" is already owned by another organization`);this.slug=$;this.ownerOrganizationId=Z;this.name="OrgSiteConflictError"}}});class sO1{db;constructor($){this.db=$}async create($){await this.deleteExpired($.organizationId);let Z=crypto.randomUUID();return await this.db.insertInto("git_provider_oauth_states").values({id:Z,organization_id:$.organizationId,user_id:$.userId,provider:$.provider,host:$.host,return_to:$.returnTo,expires_at:new Date(Date.now()+600000)}).execute(),Z}async consume($){let Z=await this.db.deleteFrom("git_provider_oauth_states").where("id","=",$).returningAll().executeTakeFirst();if(!Z)return null;if((Z.expires_at instanceof Date?Z.expires_at:new Date(Z.expires_at))<new Date)return null;return{organizationId:Z.organization_id,userId:Z.user_id,provider:Z.provider,host:Z.host,returnTo:Z.return_to}}async deleteExpired($){await this.db.deleteFrom("git_provider_oauth_states").where("organization_id","=",$).where("expires_at","<",new Date).execute()}}function FX8($){return $ instanceof Date?$.toISOString():String($)}class _B{db;vault;constructor($,Z){this.db=$;this.vault=Z}async toEntity($){return{id:$.id,organizationId:$.organization_id,siteUrl:$.site_url,email:$.email,apiToken:await this.vault.decrypt($.api_token),boardId:$.board_id,boardName:$.board_name,webhookSecret:$.webhook_secret,enabled:$.enabled,createdBy:$.created_by,createdAt:FX8($.created_at),updatedAt:FX8($.updated_at)}}async getByOrg($){let Z=await this.db.selectFrom("org_jira_integrations").selectAll().where("organization_id","=",$).executeTakeFirst();return Z?this.toEntity(Z):null}async upsert($){let Z=await this.vault.encrypt($.apiToken),Q=await this.db.insertInto("org_jira_integrations").values({organization_id:$.organizationId,site_url:$.siteUrl,email:$.email,api_token:Z,board_id:$.boardId,board_name:$.boardName,enabled:$.enabled,created_by:$.createdBy}).onConflict((X)=>X.column("organization_id").doUpdateSet({site_url:$.siteUrl,email:$.email,api_token:Z,board_id:$.boardId,board_name:$.boardName,enabled:$.enabled,updated_at:new Date})).returningAll().executeTakeFirstOrThrow();return this.toEntity(Q)}async getByWebhookSecret($){let Z=await this.db.selectFrom("org_jira_integrations").selectAll().where("webhook_secret","=",$).executeTakeFirst();return Z?this.toEntity(Z):null}async delete($){return(await this.db.deleteFrom("org_jira_integrations").where("organization_id","=",$).executeTakeFirst()).numDeletedRows>0n}async getById($){let Z=await this.db.selectFrom("org_jira_integrations").selectAll().where("id","=",$).executeTakeFirst();return Z?this.toEntity(Z):null}async listEnabledIds(){return(await this.db.selectFrom("org_jira_integrations").select("id").where("enabled","=",!0).orderBy("created_at","asc").execute()).map((Z)=>Z.id)}async getLinkByIssueId($,Z){let Q=await this.db.selectFrom("task_board_item_jira_links").select(["item_id","jira_issue_id","jira_issue_key"]).where("organization_id","=",$).where("jira_issue_id","=",Z).executeTakeFirst();return Q?UX8(Q):null}async getLinkByItemId($,Z){let Q=await this.db.selectFrom("task_board_item_jira_links").select(["item_id","jira_issue_id","jira_issue_key"]).where("item_id","=",$).where("organization_id","=",Z).executeTakeFirst();return Q?UX8(Q):null}async createLink($){await this.db.insertInto("task_board_item_jira_links").values({item_id:$.itemId,organization_id:$.organizationId,jira_issue_id:$.jiraIssueId,jira_issue_key:$.jiraIssueKey}).onConflict((Z)=>Z.doNothing()).execute()}async claimTrigger($,Z,Q){return((await this.db.insertInto("jira_trigger_claims").values({organization_id:$,jira_issue_id:Z,changelog_id:Q}).onConflict((Y)=>Y.doNothing()).executeTakeFirst()).numInsertedOrUpdatedRows??0n)>0n}async listAutomations($){return(await this.db.selectFrom("org_jira_column_automations").select(["jira_status","prompt"]).where("organization_id","=",$).orderBy("jira_status","asc").execute()).map((Q)=>({jiraStatus:Q.jira_status,prompt:Q.prompt}))}async getAutomation($,Z){let Q=await this.db.selectFrom("org_jira_column_automations").select(["jira_status","prompt"]).where("organization_id","=",$).where("jira_status","=",Z).executeTakeFirst();return Q?{jiraStatus:Q.jira_status,prompt:Q.prompt}:null}async upsertAutomation($,Z,Q){return await this.db.insertInto("org_jira_column_automations").values({organization_id:$,jira_status:Z,prompt:Q}).onConflict((X)=>X.columns(["organization_id","jira_status"]).doUpdateSet({prompt:Q,updated_at:new Date})).execute(),{jiraStatus:Z,prompt:Q}}async removeAutomation($,Z){return((await this.db.deleteFrom("org_jira_column_automations").where("organization_id","=",$).where("jira_status","=",Z).executeTakeFirst()).numDeletedRows??0n)>0n}}function UX8($){return{itemId:$.item_id,jiraIssueId:$.jira_issue_id,jiraIssueKey:$.jira_issue_key}}class eO1{db;constructor($){this.db=$}async listByOrg($){return(await this.db.selectFrom("task_board_column_automations").select(["column_key","prompt"]).where("organization_id","=",$).orderBy("column_key","asc").execute()).map((Q)=>({columnKey:Q.column_key,prompt:Q.prompt}))}async get($,Z){let Q=await this.db.selectFrom("task_board_column_automations").select(["column_key","prompt"]).where("organization_id","=",$).where("column_key","=",Z).executeTakeFirst();if(!Q)return null;let X=Q;return{columnKey:X.column_key,prompt:X.prompt}}async upsert($,Z,Q){return await this.db.insertInto("task_board_column_automations").values({id:`tbca_${$}_${Z}`,organization_id:$,column_key:Z,prompt:Q}).onConflict((X)=>X.columns(["organization_id","column_key"]).doUpdateSet({prompt:Q,updated_at:new Date})).execute(),{columnKey:Z,prompt:Q}}async remove($,Z){return((await this.db.deleteFrom("task_board_column_automations").where("organization_id","=",$).where("column_key","=",Z).executeTakeFirst()).numDeletedRows??0n)>0n}}class $D1{db;constructor($){this.db=$}async listByOrg($){return(await this.db.selectFrom("task_board_prompts").select(["column_key","prompt"]).where("organization_id","=",$).orderBy("column_key","asc").execute()).map((Q)=>({columnKey:Q.column_key,prompt:Q.prompt})).sort((Q,X)=>Q.columnKey===null?-1:X.columnKey===null?1:0)}async promptFor($,Z){let X=(await this.listByOrg($)).filter((Y)=>Y.columnKey===null||Y.columnKey===Z).map((Y)=>Y.prompt.trim()).filter(Boolean);return X.length>0?X.join(`
4544
4544
 
4545
4545
  `):void 0}async upsert($,Z,Q){return await this.db.insertInto("task_board_prompts").values({id:NX8($,Z),organization_id:$,column_key:Z,prompt:Q}).onConflict((X)=>X.column("id").doUpdateSet({prompt:Q,updated_at:new Date})).execute(),{columnKey:Z,prompt:Q}}async remove($,Z){return((await this.db.deleteFrom("task_board_prompts").where("id","=",NX8($,Z)).where("organization_id","=",$).executeTakeFirst()).numDeletedRows??0n)>0n}}var NX8=($,Z)=>`tbp_${$}_${Z??""}`;function ZD1($){let Z=new Set;for(let Q of $.matchAll(uh6))if(Z.add(Q[2]),Z.size>=50)break;return[...Z]}var uh6;var BX8=D(()=>{uh6=/\[@([^\]]+)\]\(mention:([^)\s]+)\)/g});async function OX8($){let{db:Z,organizationId:Q,actorId:X}=$;try{let Y=new Set(ZD1($.previousBody??"")),G=ZD1($.body).filter((H)=>!Y.has(H)).filter((H)=>H!==X);if(G.length===0)return;let W=(await Z.selectFrom("member").select("userId").where("organizationId","=",Q).where("userId","in",G).execute()).map((H)=>H.userId);if(W.length===0)return;await zl({db:Z,taskBoardItemId:$.taskBoardItemId,type:"mentioned",actorId:X,alsoSubscribe:W,recipients:W})}catch(Y){console.error("[notifications] mention fan-out failed",Y)}}var DX8=D(()=>{BX8();YR0()});import{sql as ch6}from"kysely";class QD1{db;constructor($){this.db=$}async listUnread($,Z,Q={}){let X=Math.min(Q.limit??lh6,mh6),Y=Q.cursor?await this.anchorExists(Q.cursor):!1,J=this.db.selectFrom("notifications").select(["id","task_board_item_id","type","data","created_at"]).where("user_id","=",$).where("organization_id","=",Z).where("read_at","is",null).orderBy("created_at","desc").orderBy("id","desc").limit(X+1);if(Y)J=J.where(ch6`(created_at, id) <
4546
- (SELECT created_at, id FROM notifications WHERE id = ${Q.cursor})`);let G=await J.execute(),K=G.slice(0,X),W=await this.db.selectFrom("notifications").select((F)=>F.fn.countAll().as("count")).where("user_id","=",$).where("organization_id","=",Z).where("read_at","is",null).executeTakeFirst(),H=K[K.length-1];return{nextCursor:G.length>X&&H?H.id:null,notifications:K.map((F)=>({id:F.id,taskBoardItemId:F.task_board_item_id,type:F.type,data:El.parse(F.data),createdAt:dh6(F.created_at)})),unreadCount:Number(W?.count??0)}}async anchorExists($){return!!await this.db.selectFrom("notifications").select("id").where("id","=",$).executeTakeFirst()}async markRead($,Z,Q){if(Q&&Q.length===0)return 0;let X=this.db.updateTable("notifications").set({read_at:new Date}).where("user_id","=",$).where("organization_id","=",Z).where("read_at","is",null);if(Q)X=X.where("id","in",Q);let Y=await X.executeTakeFirst();return Number(Y.numUpdatedRows??0n)}async setSubscribed($,Z,Q){await this.db.insertInto("notification_subscriptions").values({id:_8("nsub"),user_id:$,task_board_item_id:Z,subscribed:Q}).onConflict((X)=>X.columns(["user_id","task_board_item_id"]).doUpdateSet({subscribed:Q,updated_at:new Date})).execute()}async notify($){await zl({...$,db:this.db})}async notifyMentions($){await OX8({...$,db:this.db})}async listSubscribers($){return(await this.db.selectFrom("notification_subscriptions").select("user_id").where("task_board_item_id","=",$).where("subscribed","=",!0).execute()).map((Q)=>Q.user_id)}}var lh6=20,mh6=50,dh6=($)=>$ instanceof Date?$.toISOString():$;var LX8=D(()=>{RQ();XR0();YR0();DX8()});class XD1{db;constructor($){this.db=$}async create($,Z,Q){let X=crypto.randomUUID(),Y=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:X,organization_id:Z,user_id:Q,code_verifier:$,expires_at:Y,created_at:new Date}).execute(),X}async consume($,Z,Q){let X=await this.db.deleteFrom("oauth_pkce_states").where("id","=",$).where("organization_id","=",Z).where("user_id","=",Q).returningAll().executeTakeFirst();if(!X)throw Error("Invalid or expired OAuth state token");if((X.expires_at instanceof Date?X.expires_at:new Date(X.expires_at))<new Date)throw Error("OAuth state token has expired");return X.code_verifier}}class YD1{db;vault;constructor($,Z){this.db=$;this.vault=Z}async upsert($){let Z=await this.vault.encrypt($.accessToken),Q=$.expiresAt??null,X=new Date;return await this.db.insertInto("claude_subscriptions").values({user_id:$.userId,encrypted_access_token:Z,expires_at:Q,created_at:X}).onConflict((Y)=>Y.column("user_id").doUpdateSet({encrypted_access_token:Z,expires_at:Q,created_at:X})).execute(),{linkedAt:X.toISOString(),expiresAt:Q?.toISOString()??null}}async find($){let Z=await this.db.selectFrom("claude_subscriptions").select(["created_at","expires_at"]).where("user_id","=",$).executeTakeFirst();if(!Z)return null;return{linkedAt:new Date(Z.created_at).toISOString(),expiresAt:Z.expires_at?new Date(Z.expires_at).toISOString():null}}async findLiveToken($){let Z=await this.db.selectFrom("claude_subscriptions").select(["encrypted_access_token","expires_at"]).where("user_id","=",$).executeTakeFirst();if(!Z)return null;if(Z.expires_at&&new Date(Z.expires_at).getTime()<=Date.now())return null;return this.vault.decrypt(Z.encrypted_access_token)}async delete($){await this.db.deleteFrom("claude_subscriptions").where("user_id","=",$).execute()}}function ih6($){return $.includes("/")?$.split("/").slice(1).join("/"):$}function ph6($){let Z=$.supported_parameters.includes("tools"),Q=$.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:ih6($.id),title:$.name,description:$.description||null,logo:null,capabilities:[...new Set([...$.architecture.input_modalities.map((X)=>X==="image"?"vision":X),...$.architecture.output_modalities,...Z?["tools"]:[],...Q?["reasoning"]:[]])],limits:{contextWindow:$.context_length,maxOutputTokens:$.top_provider.max_completion_tokens||null},costs:{input:$.pricing.prompt,output:$.pricing.completion}}}function jX8($){let Z=new Map;for(let Q of $){let X={description:Q.description,capabilities:Q.capabilities,limits:Q.limits,costs:Q.costs};Z.set(Q.modelId,X);let Y=Q.modelId.replace(/\./g,"-");if(Y!==Q.modelId)Z.set(Y,X)}return Z}async function nh6($){if($){let Z=await $.get(wX8,"openrouter");if(Z)return jX8(Z)}try{let Z=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!Z.ok)return new Map;let{data:Q}=await Z.json(),X=Q.map(ph6);if($)await $.set(wX8,"openrouter",X);return jX8(X)}catch{return new Map}}function th6($){let Z=$.replace(/\./g,"-"),Q=$.replace(/-\d{8}$/,""),X=Q.replace(/\./g,"-");return[...new Set([$,Z,Q,X])]}function oh6($){return $.providerId==="anthropic"||$.modelId.startsWith("anthropic/")}function zX8($,Z){if(oh6(Z)&&$.includes("vision")&&!$.includes("file"))return[...$,"file"];return $}function rh6($,Z){return $.map((Q)=>{let Y=th6(Q.modelId).map((K)=>Z.get(K)).find(Boolean),J=Q.capabilities.length?Q.capabilities:Y?.capabilities??[],G=zX8(J,Q);if(!Y)return G===J?Q:{...Q,capabilities:G};return{...Q,description:Q.description??Y.description??null,capabilities:G,limits:Q.limits??Y.limits??null,costs:Q.costs??Y.costs??null}})}class JD1{storage;cache;constructor($,Z){this.storage=$;this.cache=Z}async activate($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=a7()[Q.providerId];if(!Y)throw Error(`Unknown provider: ${Q.providerId}`);return Y.create(X)}async listModels($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=Q.providerId,J=a7()[Y];if(!J)throw Error(`Unknown provider: ${Y}`);if(this.cache){let U=await this.cache.get(Z,Y);if(U)return EX8(U,J,X)}let K=await J.create(X).listModels(),W=new Set,H=K.filter((U)=>{if(U.deprecated)return!1;if(W.has(U.modelId))return!1;return W.add(U.modelId),!0});if(Y!=="openrouter"){let U=await nh6(this.cache);H=rh6(H,U)}else H=H.map((U)=>({...U,capabilities:zX8(U.capabilities,U)}));let F=H.map((U)=>({...U,providerId:Y}));if(this.cache)await this.cache.set(Z,Y,F);return EX8(F,J,X)}}function EX8($,Z,Q){let Y=Z.create(Q).asyncResearch;if(!Y)return $;return $.map((J)=>Y.canHandle(J.modelId)?{...J,asyncResearch:!0}:J)}var wX8="_global";var PX8=D(()=>{wB()});import{SpanStatusCode as AX8}from"@opentelemetry/api";function ah6($){if(!$)return;try{let Z=JSON.parse($);if(typeof Z!=="object"||Z===null||Array.isArray(Z))return;let Q={};for(let[X,Y]of Object.entries(Z))if(typeof Y==="string")Q[X]=Y;return Object.keys(Q).length>0?Q:void 0}catch{return}}function sh6($,Z){return Z?.connectionId??$?.headers.get("x-caller-id")??void 0}function eh6($){try{let Z=new URL($.url).pathname.split("/").filter(Boolean);if(Z[0]==="api"&&Z[1])return decodeURIComponent(Z[1])}catch{}return}function KD1($){let{auth:Z,headers:Q,role:X,permissions:Y,userId:J,apiKeyId:G,organizationId:K}=$,W=!!G,H=Z.api.hasPermission;return{isApiKeyPrincipal:W,hasPermission:async(F,U)=>{if(W)return mO1(Y??{},F);let N=!!U?.organizationId&&!!K&&U.organizationId!==K,B=U?U.role:X;if(TZ(B))return!0;if(Y&&!N)return mO1(Y,F);let O=e78(U?.role,F,$Q8());if(O!=="fallback")return O==="grant";if(!H)return console.error("[Auth] hasPermission API not available"),!1;let L=U?.organizationId?{organizationId:U.organizationId}:{};try{if((await H({headers:Q,body:{permission:F,...L}}))?.success===!0)return!0;let j=UF$(F);return(await H({headers:Q,body:{permission:j,...L}}))?.success===!0}catch(w){let j=w?.statusCode;if(j!==401&&j!==403)console.error("[Auth] Permission check failed:",w instanceof Error?w.message:String(w));return!1}},organization:{create:async(F)=>{return Z.api.createOrganization({body:F})},update:async(F)=>{return Z.api.updateOrganization({headers:Q,body:F})},delete:async(F)=>{await Z.api.deleteOrganization({headers:Q,body:{organizationId:F}})},get:async(F)=>{return Z.api.getFullOrganization({headers:Q,query:F?{organizationId:F}:void 0})},list:async()=>{return(await Z.api.listOrganizations({headers:Q})).filter((U)=>!XZ(U))},addMember:async(F)=>{return Z.api.addMember({body:F})},removeMember:async(F)=>{return Z.api.removeMember({headers:Q,body:F})},listMembers:async(F)=>{return Z.api.listMembers({headers:Q,query:F?{organizationId:F.organizationId,limit:F.limit,offset:F.offset,filterField:F.filterField,filterValue:F.filterValue}:void 0})},updateMemberRole:async(F)=>{return Z.api.updateMemberRole({headers:Q,body:F})}},apiKey:{create:async(F)=>{return Z.api.createApiKey({body:{...F,userId:J}})},list:async()=>{return Z.api.listApiKeys({headers:Q})},update:async(F)=>{return Z.api.updateApiKey({body:{...F,userId:J}})},delete:async(F)=>{await Z.api.deleteApiKey({headers:Q,body:{keyId:F}})}}}}async function ce($,Z,Q){if(Jh.includes(Q))return;let X=await $.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",Z).where("role","=",Q).executeTakeFirst();if(!X?.permission)return;try{return JSON.parse(X.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${Q}`);return}}async function RX8($,Z,Q,X){let Y=TX8.get(Q);if(Y&&Date.now()-Y.at<$u6)return Y.archived;let J=await Z.measure(X,()=>$.selectFrom("organization").select(["metadata"]).where("id","=",Q).executeTakeFirst()),G=XZ(J);return TX8.set(Q,{archived:G,at:Date.now()}),G}async function GD1($,Z,Q,X,Y){let J=Y?.get(Q,X);if(J)return J;let K=(await Z.measure("auth_query_membership",()=>$.selectFrom("member").select(["member.role"]).where("member.userId","=",Q).where("member.organizationId","=",X).executeTakeFirst()))?.role;if(K)Y?.set(Q,X,K);return K}function Zu6($,Z){if(!$)return!0;return Z===$}async function Qu6($,Z,Q,X,Y){let J=w30($.headers,"token");if(!J)return;let G=await Q.measure("auth_verify_onbehalf_studio_jwt",()=>Ia0(J));if(!G?.sub)return;let K=G.metadata?.organizationId;if(!Zu6(X,K))return;let W=X?await GD1(Z,Q,G.sub,X,Y):G.user?.role??void 0;return{id:G.sub,email:G.user?.email,name:G.user?.name,role:W}}async function Xu6($,Z,Q,X=qX8,Y){let J=$.headers.get("Authorization");try{let G=new Headers($.headers);G.set("X-MCP-Session-Auth","true");let K=await X.measure("auth_get_mcp_session",()=>Z.api.getMcpSession({headers:G}));if(K){let W=K.userId,H=$.headers.get("x-org-id"),F=$.headers.get("x-org-slug"),U=eh6($),N=await X.measure("auth_query_membership",()=>{let w=Q.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName","organization.metadata as orgMetadata"]).where("member.userId","=",W);if(U)return w.where("organization.slug","=",U).executeTakeFirst();if(H)return w.where("organization.id","=",H).executeTakeFirst();if(F)return w.where("organization.slug","=",F).executeTakeFirst();return w.orderBy("member.createdAt","asc").limit(2).execute().then((j)=>j.length===1?j[0]:void 0)});if(XZ({metadata:N?.orgMetadata}))throw Error("Organization is archived");let B=N?.role,O=N?{id:N.orgId,slug:N.orgSlug,name:N.orgName}:void 0;if(N&&B)Y?.set(W,N.organizationId,B);let L;if(N&&B)L=await X.measure("auth_fetch_role_permissions",()=>ce(Q,N.organizationId,B));return{user:{id:W,role:B},role:B,permissions:L,organization:O}}}catch(G){console.error("[Auth] OAuth session check failed:",G)}if(J?.startsWith("Bearer ")){let G=J.replace("Bearer ","").trim();try{let K=await X.measure("auth_verify_studio_token",()=>Ia0(G));if(K){let W,H=K.metadata?.organizationId;if(K.sub&&H)W=await GD1(Q,X,K.sub,H,Y);let F,U=K.metadata?.organizationId;if(U){let N=K.metadata?.organizationName,B=K.metadata?.organizationSlug;if(N||B){if(await RX8(Q,X,U,"auth_query_org_archived_for_studio_token"))return{user:void 0};F={id:U,name:N,slug:B}}else{let O=await X.measure("auth_query_org_for_studio_token",()=>Q.selectFrom("organization").select(["id","slug","name","metadata"]).where("id","=",U).executeTakeFirst());if(XZ(O))return{user:void 0};F=O?{id:O.id,slug:O.slug,name:O.name}:{id:U}}}return{user:{id:K.sub,connectionId:K.metadata?.connectionId,role:W},role:W,permissions:K.permissions,tokenOrganizationId:H,organization:F}}}catch{}try{let K=await X.measure("auth_verify_api_key",()=>Z.api.verifyApiKey({body:{key:G}}));if(K?.valid&&K.key){let W=K.key.metadata?.organization;if(W?.id&&await RX8(Q,X,W.id,"auth_query_org_for_api_key"))return{user:void 0};let H=K.key.permissions,F,U=K.key.userId;if(U&&W?.id)F=await GD1(Q,X,U,W.id,Y);let N=await Qu6($,Q,X,W?.id,Y);return{apiKeyId:K.key.id,user:N??{id:K.key.userId,role:F},role:N?N.role:F,permissions:H,apiKey:{id:K.key.id,name:K.key.name??"",userId:K.key.userId,metadata:K.key.metadata},tokenOrganizationId:W?.id,organization:W?{id:W.id,slug:W.slug,name:W.name}:void 0}}}catch(K){let W=K;if(W.body?.code==="INVALID_API_KEY"||W.message?.includes("Invalid API key"))console.warn("[Auth] invalid API key (Bearer)",{path:new URL($.url).pathname,method:$.method,ua:$.headers.get("user-agent")??void 0,ip:$.headers.get("x-forwarded-for")??$.headers.get("x-real-ip")??void 0,tokenPrefix:G.slice(0,8)});else console.error("[Auth] API key check failed:",W)}}try{let G=new Headers($.headers);G.delete("Authorization");let K=await X.measure("auth_get_session",()=>Z.api.getSession({headers:G}));if(K){let W,H,F=$.headers.get("x-org-id"),U=$.headers.get("x-org-slug");if(!F&&!U&&$.method.toUpperCase()==="GET")try{let N=new URL($.url).searchParams;F=N.get("x-org-id"),U=N.get("x-org-slug")}catch{}if(F||U){let N=await X.measure("auth_query_membership_from_header",()=>{let B=Q.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName","organization.metadata as orgMetadata"]).where("member.userId","=",K.user.id);if(F)B=B.where("organization.id","=",F);else if(U)B=B.where("organization.slug","=",U);return B.executeTakeFirst()});if(XZ({metadata:N?.orgMetadata}))throw Error("Organization is archived");if(N)W={id:N.orgId,slug:N.orgSlug,name:N.orgName},H=N.role}else if(K.session.activeOrganizationId){let N=await X.measure("auth_get_full_organization",()=>Z.api.getFullOrganization({headers:G}).catch(()=>null));if(N){if(XZ(N))throw Error("Organization is archived");W={id:N.id,slug:N.slug,name:N.name},H=N.members?.find((O)=>O.userId===K.user.id)?.role}else W={id:K.session.activeOrganizationId,slug:"",name:""}}return{user:{id:K.user.id,email:K.user.email,emailVerified:!!K.user.emailVerified,name:K.user.name,image:K.user.image??void 0,role:H},role:H,organization:W}}}catch(G){let K=G;console.error("[Auth] Session check failed:",JSON.stringify({message:K.message,body:K.body,stack:K.stack},null,2))}return{user:void 0}}async function MX8($){let Z=new EX($.encryption.key),Q=k0(),X=Q.clickhouseUrl,Y=!!X,J=!Y&&!!Q.monitoringS3Bucket,G=Y?"clickhouse":"duckdb",{resolve:K}=await import("path"),W=K(FK()),H=K(dU()),F=(A)=>`read_ndjson('${W}/${A}/**/*.ndjson', auto_detect=true)`,U=(A)=>`read_ndjson('${H}/${A}/**/*.ndjson', auto_detect=true)`,N,B,O,L,w=!1;if($.monitoringEngines)N=$.monitoringEngines.monitoringEngine,B=$.monitoringEngines.metricEngine,O=F,L=U;else if(Y){let A=Q.clickhouseMaxMemoryUsage?{maxMemoryUsage:String(Q.clickhouseMaxMemoryUsage)}:void 0;N=new Mr(X,A),B=new Mr(X,A),O=(I)=>"studio_monitoring_logs",L=(I)=>"studio_monitoring_logs"}else if(J){let A=Q.monitoringS3AccessKeyId??Q.s3AccessKeyId,I=Q.monitoringS3SecretAccessKey??Q.s3SecretAccessKey,V=Q.duckdbExtensionDirectory;if(!A||!I||!V)throw Error("MONITORING_S3_BUCKET is set but the GCS monitoring path is misconfigured: MONITORING_S3_ACCESS_KEY_ID/S3_ACCESS_KEY_ID, MONITORING_S3_SECRET_ACCESS_KEY/S3_SECRET_ACCESS_KEY, and DUCKDB_EXTENSION_DIRECTORY are all required.");let q={endpoint:Q.monitoringS3Endpoint??Q.s3Endpoint??"storage.googleapis.com",region:Q.monitoringS3Region??Q.s3Region,accessKeyId:A,secretAccessKey:I,extensionDirectory:V},C=new qr(q,{memoryLimit:Q.duckdbMemoryLimit,threads:Q.duckdbThreads});N=C,B=C;let l=Q.monitoringS3Bucket,x=Q.monitoringS3Prefix??"",b=(d,y)=>iH$({bucket:l,prefix:x,range:y});O=b,L=b,w=!0}else{let{engine:A}=await k$1({basePath:FK()}),{engine:I}=await k$1({basePath:dU()});N=A,B=I,O=F,L=U}let j=new Pl($.db),E=new s$0($.db),z=new Cr($.db),P={connections:new Bo($.db,Z),connectionCredentialVault:new d01($.db),organizationSettings:new uz($.db),userModelPreferences:new C$1($.db),monitoring:new a01(N,O,B,L,G,w),virtualMcps:new hh($.db),users:new p$1($.db),tags:new _r($.db),organizationBilling:new uH($.db),virtualMcpPluginConfigs:new _$1($.db),aiProviderKeys:new Xa($.db,Z,$.providerKeyCache),subsidizedGatewayKeys:new oO1($.db,Z),secrets:new EX1($.db,Z),orgFileConfigs:new rO1($.db,Z),orgSites:new Ob($.db),orgRepoSyncs:new _P($.db),gitProviderAccounts:new Ec($.db),gitProviderAccountCredentials:new ta($.db,Z),gitProviderOAuthStates:new sO1($.db),repositories:new oa($.db),jiraIntegrations:new _B($.db,Z),taskBoard:new ZG($.db),columnAutomations:new eO1($.db),taskBoardPrompts:new $D1($.db),notifications:new QD1($.db),orgFsEntries:new Ut($.db),oauthPkceStates:new XD1($.db),claudeSubscriptions:new YD1($.db,Z),automations:X30($.db),triggerCallbackTokens:new kr($.db),orgSsoConfig:new h$1($.db,Z),orgSsoSessions:new u$1($.db),registry:{items:new hu($.db),publishRequests:new uu($.db),publishApiKeys:new cu($.db),monitorRuns:new B30($.db),monitorResults:new O30($.db),monitorConnections:new D30($.db)},brandContext:new Sr($.db),organizationDomains:new fJ($.db),organizationJoinRequests:new gu($.db),kv:z,interests:new g$1(z)};return async(A,I)=>{let V=I?.timings??qX8,q=ZS0(),C=A?await $.observability.tracer.startActiveSpan("studio.auth",async(j0)=>{try{let g0=await Xu6(A,$.auth,$.db,V,$.memberRoleCache);return j0.setStatus({code:AX8.OK}),g0}catch(g0){throw j0.setStatus({code:AX8.ERROR,message:g0.message}),j0.recordException(g0),g0}finally{j0.end()}}):{user:void 0},l=sh6(A,C.user),x=KD1({auth:$.auth,headers:A?.headers??new Headers,role:C.role,permissions:C.permissions,userId:C.user?.id,apiKeyId:C.apiKeyId,organizationId:C.organization?.id}),b={user:C.user,tokenOrganizationId:C.tokenOrganizationId};if(C.apiKey)b.apiKey=C.apiKey;let d=C.organization,y=A?k0().baseUrl??`${new URL(A.url).origin}`:c5(),p=new $z(b.user?.id,void 0,x,C.role,"self",void 0,d?.id),J0={...P,virtualMcps:WG$(P.virtualMcps),threads:new qY1(j,d?.id),asyncResearchJobs:new nO1(E,d?.id)},D0=new JD1(J0.aiProviderKeys,$.modelListCache),s=OX(),o=!d?null:s?TJ(s,d.id):new OH(d.id,y),L0=d&&o?new wH(o,J0.orgFsEntries,d.id):null;dd0(J0,{objectStorage:o,baseUrl:y,orgSlug:d?.slug});let Z0={timings:V,auth:b,connectionId:l,organization:d,storage:J0,vault:Z,authInstance:$.auth,boundAuth:x,access:p,db:$.db,tracer:$.observability.tracer,meter:$.observability.meter,baseUrl:y,objectStorage:o,orgFs:L0,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(Yu6.map((j0)=>[j0,A?.headers.get(j0)??null]).filter(([j0,g0])=>g0!==null)),userAgent:(A?w30(A.headers,"client"):null)||A?.headers.get("User-Agent")||void 0,ipAddress:(A?.headers.get("CF-Connecting-IP")||A?.headers.get("X-Forwarded-For"))??void 0,properties:ah6(A?w30(A.headers,"properties"):null)},aiProviders:D0,createMCPProxy:async(j0)=>{return await GX8(j0,Z0)},invalidateMemberRole:$.memberRoleCache?(j0,g0)=>$.memberRoleCache.invalidate(j0,g0):void 0,getOrCreateClient:q,pendingRevalidations:[],firecrawlApiKey:k0().firecrawlApiKey};return Z0}}function Rw($,Z){$.storage.threads.setOrganizationId(Z.id),$.storage.asyncResearchJobs.setOrganizationId(Z.id);let Q=OX();$.objectStorage=Q?TJ(Q,Z.id):new OH(Z.id,$.baseUrl),$.orgFs=new wH($.objectStorage,$.storage.orgFsEntries,Z.id),dd0($.storage,{objectStorage:$.objectStorage,baseUrl:$.baseUrl,orgSlug:Z.slug??void 0})}var $u6=60000,TX8,IX8,mQ,qX8,Yu6;var JB=D(()=>{XD();YD();A$();k5();c01();GG0();i01();OG$();pH$();yG();S$1();nH$();v$1();x$1();b$1();HF$();i$1();L30();GN();t$1();c31();zX();AO1();GR0();tO1();hO1();O41();Fe();WX8();aO1();ra();YB();LX8();Ea0();tE();PX8();uO();Gt();AQ0();TX8=new Map;mQ={set:($)=>{IX8=$},create:async($,Z)=>{return await IX8($,Z)}},qX8={measure:async($,Z)=>{return await Z()}},Yu6=["x-hub-signature-256"]});import{DBOS as GS0,SchedulerMode as Ju6}from"@dbos-inc/dbos-sdk";function VX8($){HD1=$}function kX8(){if(!HD1)throw Error("[org-fs] org-repo-sync runtime not initialized \u2014 setOrgRepoSyncRuntime() must run before the workflow fires");return HD1}async function Ku6($,Z){let Q=await $.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z).executeTakeFirst();if(!Q)return null;let X=await mQ.create();return X.organization={id:Q.id,slug:Q.slug,name:Q.name},Rw(X,{id:Q.id,slug:Q.slug}),X}async function Wu6($){try{let{db:Z}=kX8(),Q=await Ku6(Z,$.organizationId);if(!Q)return{id:$.id,volume:$.volume,error:"organization no longer exists"};let X=await lW0(Q,$);return"error"in X?{id:X.id,volume:X.volume,error:X.error}:{id:X.id,volume:X.volume}}catch(Z){return{id:$.id,volume:$.volume,error:Z instanceof Error?Z.message:String(Z)}}}async function Hu6($,Z){let Q=await GS0.runStep(()=>new _P(kX8().db).listEnabled(),{name:"loadOrgRepoSyncConfigs"});for(let X of Q){let Y=await GS0.runStep(()=>Wu6(X),{name:`syncOrgRepo:${X.id}`});if(Y.error)console.warn(`[org-fs] org repo sync ${Y.id} (${Y.volume}) failed: ${Y.error}`)}}function SX8(){if(WD1)return;WD1=GS0.registerWorkflow(Hu6,{name:"orgRepoSyncWorkflow"}),GS0.registerScheduled(WD1,{name:"orgRepoSyncWorkflow",crontab:Gu6,mode:Ju6.ExactlyOncePerIntervalWhenActive})}var Gu6="7-59/10 * * * *",HD1=null,WD1=null;var CX8=D(()=>{JB();mW0()});import{DBOS as KS0,SchedulerMode as Fu6}from"@dbos-inc/dbos-sdk";function _X8($){UD1=$}function vX8(){if(!UD1)throw Error("[task-board-archive] runtime not initialized \u2014 setTaskBoardArchiveSweepRuntime() must run before the workflow fires");return UD1}async function Ou6($,Z){try{let Q=await RF(vX8().db,$);if(!Q)return{organizationId:$,archived:0};let{archived:X}=await Jy$(Q,$,Z);return{organizationId:$,archived:X}}catch(Q){return{organizationId:$,archived:0,error:Q instanceof Error?Q.message:String(Q)}}}async function Du6($,Z){let Q=new Date($.getTime()-Nu6),X=await KS0.runStep(()=>new ZG(vX8().db).listItemsAwaitingArchive(Q,Bu6),{name:"loadArchiveCandidates"});if(X.length===0)return;let Y=await Promise.all(HR0(X).map(({organizationId:G,itemIds:K})=>KS0.runStep(()=>Ou6(G,K),{name:`archiveMergedForOrg:${G}`})));for(let G of Y)if(G.error)console.warn(`[task-board-archive] org ${G.organizationId} failed: ${G.error}`);let J=Y.reduce((G,K)=>G+K.archived,0);if(J>0)console.log(`[task-board-archive] archived ${J} of ${X.length} candidates`)}function xX8(){if(FD1)return;FD1=KS0.registerWorkflow(Du6,{name:"taskBoardArchiveSweepWorkflow"}),KS0.registerScheduled(FD1,{name:"taskBoardArchiveSweepWorkflow",crontab:Uu6,mode:Fu6.ExactlyOncePerIntervalWhenActive})}var Uu6="23 * * * *",Nu6=432000000,Bu6=200,UD1=null,FD1=null;var fX8=D(()=>{YB();Al();Rl()});async function Lu6($,Z){let Q=await $.storage.tags.listOrgTags(Z),X=Q.find((J)=>J.name.toLowerCase()===WS0);if(X)return X.id;return(await $.storage.tags.createTag(Z,WS0,jW0(Q.length))).id}async function wu6($,Z,Q,X,Y){let J=await $.storage.taskBoard.getById(Q,Z);if(!J||!Hy$(J.status))return!1;let G=await $.storage.taskBoard.listPrs(Q,Z),K=await Promise.all(G.map(async(H)=>({...H,...await Y($,Z,H)})));if(!mx(K))return!1;await $.storage.taskBoard.addItemTags(Q,[await X()],"system");let W=await $.storage.taskBoard.getById(Q,Z);if(!W)return!1;return await x6($,{taskBoardItemId:Q,action:"tags_changed",actorId:null,data:{from:J.tags,to:W.tags,reason:"merged_pr_auto_tag"}}),N8(Z,W),!0}async function bX8($,Z,Q,X=FR0){let Y=null,J=()=>Y??=Lu6($,Z),G=0;for(let K of Q)try{if(await wu6($,Z,K,J,X))G+=1}catch(W){console.error(`[task-board-merged-tag] ${K} failed`,W)}return{tagged:G}}var WS0="merged";var yX8=D(()=>{T4();lQ();Al();jW();U7();W9()});import{DBOS as HS0,SchedulerMode as ju6}from"@dbos-inc/dbos-sdk";function gX8($){BD1=$}function hX8(){if(!BD1)throw Error("[task-board-merged-tag] runtime not initialized \u2014 setTaskBoardMergedTagSweepRuntime() must run before the workflow fires");return BD1}async function Pu6($,Z){try{let Q=await RF(hX8().db,$);if(!Q)return{organizationId:$,tagged:0};let{tagged:X}=await bX8(Q,$,Z);return{organizationId:$,tagged:X}}catch(Q){return{organizationId:$,tagged:0,error:Q instanceof Error?Q.message:String(Q)}}}async function Au6(){let $=await HS0.runStep(()=>new ZG(hX8().db).listItemsAwaitingMergedTag(WS0,zu6),{name:"loadMergedTagCandidates"});if($.length===0)return;let Z=await Promise.all(HR0($).map(({organizationId:X,itemIds:Y})=>HS0.runStep(()=>Pu6(X,Y),{name:`tagMergedForOrg:${X}`})));for(let X of Z)if(X.error)console.warn(`[task-board-merged-tag] org ${X.organizationId} failed: ${X.error}`);let Q=Z.reduce((X,Y)=>X+Y.tagged,0);if(Q>0)console.log(`[task-board-merged-tag] tagged ${Q} of ${$.length} candidates`)}function uX8(){if(ND1)return;ND1=HS0.registerWorkflow(Au6,{name:"taskBoardMergedTagSweepWorkflow"}),HS0.registerScheduled(ND1,{name:"taskBoardMergedTagSweepWorkflow",crontab:Eu6,mode:ju6.ExactlyOncePerIntervalWhenActive})}var Eu6="41 * * * *",zu6=200,BD1=null,ND1=null;var cX8=D(()=>{YB();Al();Rl();yX8()});function mX8($){if(!$)return!1;try{return new URL($).host==="api.decocms.com"&&$!=="https://studio.decocms.com/org/deco/registry/mcp"}catch{return!1}}var lX8="https://studio.decocms.com/org/deco/registry/mcp";var iX8,Tu6,dX8=($)=>{let Z=0,Q=$.length;while(Z<Q){let X=$.charCodeAt(Z);if(X!==32&&X!==9)break;Z++}while(Q>Z){let X=$.charCodeAt(Q-1);if(X!==32&&X!==9)break;Q--}return Z===0&&Q===$.length?$:$.slice(Z,Q)},OD1=($,Z)=>{if(Z&&$.indexOf(Z)===-1)return{};let Q=$.split(";"),X={};for(let Y of Q){let J=Y.indexOf("=");if(J===-1)continue;let G=dX8(Y.substring(0,J));if(Z&&Z!==G||!iX8.test(G))continue;let K=dX8(Y.substring(J+1));if(K.startsWith('"')&&K.endsWith('"'))K=K.slice(1,-1);if(Tu6.test(K)){if(X[G]=K.indexOf("%")!==-1?mu(K,xr):K,Z)break}}return X},Ru6=($,Z,Q={})=>{if(!iX8.test($))throw Error("Invalid cookie name");let X=`${$}=${Z}`;if($.startsWith("__Secure-")&&!Q.secure)throw Error("__Secure- Cookie must have Secure attributes");if($.startsWith("__Host-")){if(!Q.secure)throw Error("__Host- Cookie must have Secure attributes");if(Q.path!=="/")throw Error('__Host- Cookie must have Path attributes with "/"');if(Q.domain)throw Error("__Host- Cookie must not have Domain attributes")}for(let Y of["domain","path"])if(Q[Y]&&/[;\r\n]/.test(Q[Y]))throw Error(`${Y} must not contain ";", "\\r", or "\\n"`);if(Q&&typeof Q.maxAge==="number"&&Q.maxAge>=0){if(Q.maxAge>34560000)throw Error("Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.");X+=`; Max-Age=${Q.maxAge|0}`}if(Q.domain&&Q.prefix!=="host")X+=`; Domain=${Q.domain}`;if(Q.path)X+=`; Path=${Q.path}`;if(Q.expires){if(Q.expires.getTime()-Date.now()>34560000000)throw Error("Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.");X+=`; Expires=${Q.expires.toUTCString()}`}if(Q.httpOnly)X+="; HttpOnly";if(Q.secure)X+="; Secure";if(Q.sameSite)X+=`; SameSite=${Q.sameSite.charAt(0).toUpperCase()+Q.sameSite.slice(1)}`;if(Q.priority)X+=`; Priority=${Q.priority.charAt(0).toUpperCase()+Q.priority.slice(1)}`;if(Q.partitioned){if(!Q.secure)throw Error("Partitioned Cookie must have Secure attributes");X+="; Partitioned"}return X},FS0=($,Z,Q)=>{return Z=encodeURIComponent(Z),Ru6($,Z,Q)};var pX8=D(()=>{QL();iX8=/^[\w!#$%&'*.^`|~+-]+$/,Tu6=/^[ !#-:<-[\]-~]*$/});var Id=($,Z,Q)=>{let X=$.req.raw.headers.get("Cookie");if(typeof Z==="string"){if(!X)return;let J=Z;if(Q==="secure")J="__Secure-"+Z;else if(Q==="host")J="__Host-"+Z;return OD1(X,J)[J]}if(!X)return{};return OD1(X)},Iu6=($,Z,Q)=>{let X;if(Q?.prefix==="secure")X=FS0("__Secure-"+$,Z,{path:"/",...Q,secure:!0});else if(Q?.prefix==="host")X=FS0("__Host-"+$,Z,{...Q,path:"/",secure:!0,domain:void 0});else X=FS0($,Z,{path:"/",...Q});return X},Z80=($,Z,Q,X)=>{let Y=Iu6(Z,Q,X);$.header("Set-Cookie",Y,{append:!0})};var US0=D(()=>{pX8()});var nX8=($)=>{let Q={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...$},X=((J)=>{if(typeof J==="string")if(J==="*"){if(Q.credentials)return(G)=>G||null;return()=>J}else return(G)=>J===G?G:null;else if(typeof J==="function")return J;else return(G)=>J.includes(G)?G:null})(Q.origin),Y=((J)=>{if(typeof J==="function")return J;else if(Array.isArray(J))return()=>J;else return()=>[]})(Q.allowMethods);return async function(G,K){function W(F,U){G.res.headers.set(F,U)}let H=await X(G.req.header("origin")||"",G);if(H)W("Access-Control-Allow-Origin",H);if(Q.credentials)W("Access-Control-Allow-Credentials","true");if(Q.exposeHeaders?.length)W("Access-Control-Expose-Headers",Q.exposeHeaders.join(","));if(G.req.method==="OPTIONS"){if(Q.origin!=="*"||Q.credentials)W("Vary","Origin");if(Q.maxAge!=null)W("Access-Control-Max-Age",Q.maxAge.toString());let F=await Y(G.req.header("origin")||"",G);if(F.length)W("Access-Control-Allow-Methods",F.join(","));let U=Q.allowHeaders;if(!U?.length){let N=G.req.header("Access-Control-Request-Headers");if(N)U=N.split(/\s*,\s*/)}if(U?.length)W("Access-Control-Allow-Headers",U.join(",")),G.res.headers.append("Vary","Access-Control-Request-Headers");return G.res.headers.delete("Content-Length"),G.res.headers.delete("Content-Type"),new Response(null,{headers:G.res.headers,status:204,statusText:"No Content"})}if(await K(),Q.origin!=="*"||Q.credentials)G.header("Vary","Origin",{append:!0})}};var tX8=()=>{};function DD1($,Z){return`${$}:${Z}`}function oX8($){let Z=$?.ttlMs??120000,Q=$?.maxSize??1e4,X=new Map;function Y(){if(X.size<=Q)return;let J=Date.now();for(let[G,K]of X)if(K.expiresAt<=J)X.delete(G);if(X.size>Q){let G=X.size-Q,K=0;for(let W of X.keys()){if(K>=G)break;X.delete(W),K++}}}return{get(J,G){let K=DD1(J,G),W=X.get(K);if(!W)return;if(W.expiresAt<=Date.now()){X.delete(K);return}return W.role},set(J,G,K){let W=DD1(J,G);X.set(W,{role:K,expiresAt:Date.now()+Z}),Y()},invalidate(J,G){X.delete(DD1(J,G))}}}class LD1{options;subscriptions=[];localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.localEmit=$;if(this.subscriptions.length>0)return;if(!this.localEmit)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder;this.subscriptions=rX8.map((X)=>Z.subscribe(X));for(let X of this.subscriptions)(async()=>{for await(let Y of X)try{let J=JSON.parse(Q.decode(Y.data));if(typeof J?.originId!=="string"||typeof J?.organizationId!=="string"||typeof J?.event?.id!=="string"||typeof J?.event?.type!=="string")continue;if(J.originId===this.originId)continue;if(typeof J.messageId==="string"&&this.hasSeen(J.messageId))continue;this.localEmit?.(J.organizationId,J.event)}catch{}})().catch((Y)=>{console.error("[NatsSSEBroadcast] Subscription error:",Y)})}broadcast($,Z){this.localEmit?.($,Z);let Q={originId:this.originId,messageId:crypto.randomUUID(),organizationId:$,event:Z};try{let X=this.options.getConnection();if(!X)return;let Y=this.encoder.encode(JSON.stringify(Q));for(let J of rX8)X.publish(J,Y)}catch(X){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",X)}}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.localEmit=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var rX8;var aX8=D(()=>{rX8=["studio.sse.broadcast","mesh.sse.broadcast"]});async function qu6($,Z,Q=5){try{await M4(Z,{maxAttempts:Q,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(X){console.error(`${$} Deferred start failed:`,X instanceof A7?X.cause:X)}}function sX8($){let Z=new LD1({getConnection:()=>$.getConnection()});r5.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),$.onReady(()=>{qu6("[NatsSSEBroadcast]",()=>Z.start())})}var wD1=D(()=>{h8();aX8();qe();qe()});var eX8=()=>{};var jD1=()=>{};var $Y8=()=>{};var Mu6,iQ7;var ZY8=D(()=>{eX8();jD1();QL();$Y8();Mu6={br:".br",zstd:".zst",gzip:".gz"},iQ7=Object.keys(Mu6)});var QY8=D(()=>{ZY8()});var XY8=()=>{};var YY8=D(()=>{XY8()});var JY8=()=>{};var GY8=D(()=>{J81()});var ED1=D(()=>{XL();GY8()});var zD1="x-hono-disable-ssg",FX7;var PD1=D(()=>{ED1();FX7=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[zD1]:"true"}})}catch{return null}})()});var KY8=D(()=>{q30()});var AD1=D(()=>{KY8()});var WY8=D(()=>{YY8();JY8();jD1();PD1();AD1();ED1()});var HY8=D(()=>{PD1();AD1();WY8()});var pX7;var FY8=D(()=>{HY8();({write:pX7}=Bun)});var Su6=class{#$;constructor($){this.#$=$,this.raw=$.raw,this.url=$.url?new URL($.url):null,this.protocol=$.protocol??null}send($,Z){this.#$.send($,Z??{})}raw;binaryType="arraybuffer";get readyState(){return this.#$.readyState}url;protocol;close($,Z){this.#$.close($,Z)}},UY8=($)=>{return(...Z)=>{if(typeof Z[0]==="function"){let[Q,X]=Z;return async function(J,G){let K=await Q(J),W=await $(J,K,X);if(W)return W;await G()}}else{let[Q,X,Y]=Z;return(async()=>{let J=await $(Q,X,Y);if(!J)throw Error("Failed to upgrade WebSocket");return J})()}}};var NY8=()=>{};var Q80=($)=>("server"in $.env)?$.env.server:$.env;var NS0=()=>{};var Cu6;var BY8=D(()=>{NY8();NS0();Cu6=UY8(($,Z)=>{let Q=Q80($);if(!Q)throw TypeError("env has to include the 2nd argument of fetch.");if(Q.upgrade($.req.raw,{data:{events:Z,url:new URL($.req.url),protocol:$.req.url}}))return new Response(null);return})});var TD1=($)=>{let Z=Q80($);if(!Z)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof Z.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let Q=Z.requestIP($.req.raw);if(!Q)return{remote:{}};return{remote:{address:Q.address,addressType:Q.family==="IPv6"||Q.family==="IPv4"?Q.family:void 0,port:Q.port}}};var OY8=D(()=>{NS0()});var DY8=D(()=>{QY8();FY8();BY8();OY8();NS0()});var LY8;var wY8=D(()=>{LY8={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/decocms/e02ce92e-6684-41a6-acfc-432977eb4878/github.png"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});function jY8(){let $=Object.keys(Y4.socialProviders??{}),Z=$.length>0,Q=$.map((Y)=>({name:Y,icon:LY8[Y].icon})),X=k0().localMode;return{emailAndPassword:{enabled:Y4.emailAndPassword?.enabled??!1},magicLink:{enabled:Y4.magicLinkConfig?.enabled??!1},emailOtp:{enabled:Y4.emailOtpConfig?.enabled??!1},resetPassword:{enabled:ak0},socialProviders:{enabled:Z,providers:Q},sso:Y4.ssoConfig?{enabled:!0,providerId:Y4.ssoConfig.providerId}:{enabled:!1},stdioEnabled:X,localMode:GB()}}async function _u6($,Z,Q){try{if(!Y4.inviteEmailProviderId||!Y4.emailProviders||Y4.emailProviders.length===0)return;let X=mK(Y4.emailProviders,Y4.inviteEmailProviderId);if(!X)return;let Y=await $.selectFrom("member").innerJoin("user","user.id","member.userId").select(["user.email as email","member.role as role"]).where("member.organizationId","=",Z.id).execute(),J=qt,G=Y.filter((H)=>(H.role??"").split(",").map((F)=>F.trim()).some((F)=>J.includes(F)));if(G.length===0)return;let K=lK(X),W=`${c5()}/${Z.slug}/settings/members`;await Promise.allSettled(G.map((H)=>K({to:H.email,subject:`New request to join ${Z.name}`,html:dK({preheader:`${Q} requested to join ${Z.name}.`,heading:"New join request",subheading:`<strong>${Q}</strong> requested to join <strong>${Z.name}</strong> on deco Studio.`,body:tz("Review request",W),footnote:"You can approve or deny this request from your members settings."})})))}catch(X){console.error("[Auth] Failed to notify admins of join request:",X)}}var vB,EY8;var RD1=D(()=>{d$();DY8();l4();A$();cJ();wQ();MO1();e61();tk0();au();zX();k5();b$1();wY8();ex();Yh();vB=new Y1;vB.post("/local-session",async($)=>{if(!GB())return $.json({success:!1,error:"Local mode is not active"},403);let Z;try{Z=TD1($).remote.address}catch{}if(!(Z==="127.0.0.1"||Z==="::1"||Z==="::ffff:127.0.0.1"))return $.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:X}=await Promise.resolve().then(() => (ex(),kR0));await X();let{auth:Y}=await Promise.resolve().then(() => (cJ(),EQ8)),J=await UJ1();if(!J)return $.json({success:!1,error:"Local admin user not found"},500);let G=await VR0();return await Y.api.signInEmail({body:{email:J.email,password:G},asResponse:!0})}catch(X){return console.error("Failed to create local session:",X),$.json({success:!1,error:X instanceof Error?X.message:"Failed to create local session"},500)}});vB.get("/my-capabilities/:slug",async($)=>{let Z=$.req.param("slug"),Q=await G8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({error:"Authentication required"},401);let X=u$().db,Y=await X.selectFrom("organization").select(["id"]).where("slug","=",Z).executeTakeFirst();if(!Y)return $.json({role:null,capabilities:{}});let G=(await X.selectFrom("member").select(["role"]).where("userId","=",Q.user.id).where("organizationId","=",Y.id).executeTakeFirst())?.role??null;if(!G)return $.json({role:null,capabilities:{}});if(TZ(G))return $.json({role:G,capabilities:H9$()});if(G==="user")return $.json({role:G,capabilities:Gs0({self:[...VY0]})});let K=await X.selectFrom("organizationRole").select(["permission"]).where("role","=",G).where("organizationId","=",Y.id).executeTakeFirst(),W={},H=K?.permission;if(typeof H==="string")try{let F=JSON.parse(H);if(F&&typeof F==="object"&&!Array.isArray(F))W=F}catch{W={}}return $.json({role:G,capabilities:Gs0(W)})});vB.get("/domain-lookup",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({found:!1,organizations:[]});let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({found:!1,organizations:[]});try{let Y=(await new fJ(u$().db).getAllByDomain(Q)).filter(nk0);if(Y.length===0)return $.json({found:!1,organizations:[]});let J=await u$().db.selectFrom("organization").select(["id","name","slug","logo","metadata"]).where("id","in",Y.map((W)=>W.organizationId)).execute(),G=new Map(J.map((W)=>[W.id,W])),K=Y.map((W)=>{let H=G.get(W.organizationId);if(!H)return null;if(XZ(H))return null;return{id:H.id,name:H.name,slug:H.slug,logo:H.logo,joinMode:W.joinMode}}).filter((W)=>W!==null);return $.json({found:K.length>0,organizations:K})}catch(X){return console.error("[Auth] Domain lookup failed:",X),$.json({success:!1,error:"Domain lookup failed"},500)}});vB.post("/domain-join",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified to join"},403);let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({success:!1,error:"Generic email domains cannot auto-join"},403);let X=await $.req.json().catch(()=>({})),Y=typeof X.organizationSlug==="string"&&X.organizationSlug.trim()?X.organizationSlug.trim():null;try{let J=u$().db,W=(await new fJ(J).getAllByDomain(Q)).filter((B)=>B.verificationStatus==="verified"&&B.joinMode==="auto");if(W.length===0)return $.json({success:!1,error:"Auto-join is not available for this domain"},403);let H=await J.selectFrom("organization").select(["id","slug","metadata"]).where("id","in",W.map((B)=>B.organizationId)).execute(),F=new Map(H.filter((B)=>!XZ(B)).map((B)=>[B.id,{id:B.id,slug:B.slug}])),U=W.flatMap((B)=>{let O=F.get(B.organizationId);return O?[O]:[]});if(U.length===0)return $.json({success:!1,error:"Auto-join is not available for this domain"},403);let N;if(Y){let B=U.find((O)=>O.slug===Y);if(!B)return $.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);N=B}else if(U.length===1)N=U[0];else return $.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await G8.api.addMember({body:{userId:Z.user.id,role:"user",organizationId:N.id}})}catch(B){if(!kL(B))return console.error("[Auth] Domain join addMember failed:",B),$.json({success:!1,error:"Failed to join organization"},500)}return _1.capture({distinctId:Z.user.id,event:"organization_domain_joined",groups:{organization:N.id},properties:{organization_id:N.id,organization_slug:N.slug,email_domain:Q}}),$.json({success:!0,slug:N.slug})}catch(J){return _1.captureException(J,Z.user.id),console.error("[Auth] Domain join failed:",J),$.json({success:!1,error:"Failed to join organization"},500)}});vB.post("/domain-setup",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified"},403);let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({success:!1,error:"Corporate email required"},403);let X=await $.req.json().catch(()=>({})),Y=typeof X.name==="string"&&X.name.trim().length>0?X.name.trim():null,J=typeof X.logo==="string"&&X.logo.length>0?X.logo:null,G=X.claimDomain!==!1;try{let K=u$().db,W=new fJ(K),H=await W.getAllByDomain(Q);if(H.length>0){let z=await K.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",Z.user.id).where("member.organizationId","in",H.map((P)=>P.organizationId)).executeTakeFirst();if(z)return $.json({success:!0,slug:z.slug,alreadyExists:!0})}let F=Q.split(".")[0]??Q,U=Y??F.charAt(0).toUpperCase()+F.slice(1),N=(Y??F).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||F.toLowerCase().replace(/[^a-z0-9-]/g,""),B=null;for(let P=0;P<3;P++){let A=P===0?"":`-${Math.random().toString(36).slice(2,6)}`,I=P===0?U:`${U}${A}`,V=`${N}${A}`;try{B=await G8.api.createOrganization({body:{name:I,slug:V,userId:Z.user.id}});break}catch(q){if(!(q instanceof Error&&("body"in q)&&q.body?.code==="ORGANIZATION_ALREADY_EXISTS")||P===2)throw q}}if(!B?.id)throw Error("Failed to create organization");let O=B.id;if(G)await W.add(O,Q,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"});let L=!1,w=null,j=null;try{let z=k0().firecrawlApiKey;if(z){let P=await BW0(Q,z,U);if(P){let A=new Sr(u$().db),I=await A.create(O,P);if(await A.setDefault(I.id,O),L=!0,P.name&&P.name!==U)w=P.name;j=P.favicon??P.logo??null}}}catch(z){console.error("[Auth] Brand extraction failed (non-fatal):",z)}let E={};if(!Y&&w)E.name=w;if(J)E.logo=J;else if(j)E.logo=j;if(Object.keys(E).length>0)try{await G8.api.updateOrganization({headers:$.req.raw.headers,body:{organizationId:O,data:E}})}catch(z){console.error("[Auth] Org update failed (non-fatal):",z)}return _1.identify({distinctId:Z.user.id,properties:{email:Z.user.email,$set:{email:Z.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),_1.groupIdentify({groupType:"organization",groupKey:O,properties:{name:B.slug??N,slug:B.slug??N,email_domain:Q,brand_extracted:L,created_at:new Date().toISOString()}}),_1.capture({distinctId:Z.user.id,event:"organization_created",groups:{organization:O},properties:{organization_id:O,organization_slug:B.slug??N,email_domain:Q,brand_extracted:L}}),$.json({success:!0,slug:B.slug??N,brandExtracted:L})}catch(K){return _1.captureException(K,Z.user?.id),console.error("[Auth] Domain setup failed:",K),$.json({success:!1,error:"Failed to set up organization"},500)}});vB.get("/org-access-status/:slug",async($)=>{let Z=$.req.param("slug"),Q=await G8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({success:!1,error:"Authentication required"},401);let X=u$().db,Y=await X.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",Z).executeTakeFirst();if(!Y)return $.json({status:"not-found"});let J={id:Y.id,name:Y.name,slug:Y.slug,logo:Y.logo};if(await X.selectFrom("member").select(["id"]).where("userId","=",Q.user.id).where("organizationId","=",Y.id).executeTakeFirst())return $.json({status:"member",organization:J});try{let K=await G8.api.listUserInvitations({headers:$.req.raw.headers}),W=Date.now(),H=K.find((F)=>F.organizationId===Y.id&&F.status==="pending"&&new Date(F.expiresAt).getTime()>W);if(H)return $.json({status:"pending-invite",invitation:{id:H.id},organization:J})}catch(K){console.error("[Auth] listUserInvitations failed:",K)}if(Q.user.emailVerified){let K=Q.user.email?.split("@")[1]?.toLowerCase();if(K&&!aK.has(K)){let W=await new fJ(X).getByOrgAndDomain(Y.id,K);if(W?.verificationStatus==="verified"){if(W.joinMode==="auto")return $.json({status:"auto-domain-join",organization:{...J,domain:K}});if(W.joinMode==="request"){let H=await new gu(X).getPending(Y.id,Q.user.id);return $.json({status:H?"request-pending":"can-request",organization:{...J,domain:K}})}}}}return $.json({status:"no-access",organization:J})});vB.post("/domain-request-join",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified to request access"},403);let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({success:!1,error:"Generic email domains cannot request access"},403);let X=await $.req.json().catch(()=>({})),Y=typeof X.organizationSlug==="string"&&X.organizationSlug.trim()?X.organizationSlug.trim():null;if(!Y)return $.json({success:!1,error:"organizationSlug is required"},400);try{let J=u$().db,G=await J.selectFrom("organization").select(["id","slug","name"]).where("slug","=",Y).executeTakeFirst();if(!G)return $.json({success:!1,error:"Organization not found"},404);let K=await new fJ(J).getByOrgAndDomain(G.id,Q);if(!K||K.verificationStatus!=="verified"||K.joinMode!=="request")return $.json({success:!1,error:"This organization is not accepting requests for your domain."},403);if(await J.selectFrom("member").select(["id"]).where("userId","=",Z.user.id).where("organizationId","=",G.id).executeTakeFirst())return $.json({success:!0,slug:G.slug,alreadyMember:!0});return await new gu(J).create(G.id,Z.user.id),await _u6(J,G,Z.user.email),_1.capture({distinctId:Z.user.id,event:"organization_join_requested",groups:{organization:G.id},properties:{organization_id:G.id,organization_slug:G.slug,email_domain:Q}}),$.json({success:!0,status:"pending"})}catch(J){return _1.captureException(J,Z.user.id),console.error("[Auth] Domain request-join failed:",J),$.json({success:!1,error:"Failed to request access"},500)}});vB.post("/ensure-organization",async($)=>{let Z=null;try{if(Z=await G8.api.getSession({headers:$.req.raw.headers}),!Z?.user)return $.json({success:!1,error:"Authentication required"},401);let Q=await ok0({db:u$().db,authApi:G8.api,user:{id:Z.user.id,email:Z.user.email,name:Z.user.name??null,emailVerified:!!Z.user.emailVerified},allowCreate:!0,createdVia:"commerce_onboarding_recovery"});if(Q.status==="ambiguous")return $.json({success:!1,status:Q.status,domain:Q.domain,organizations:Q.organizations});if(Q.status==="skipped")return $.json({success:!1,status:Q.status,reason:Q.reason,domain:Q.domain,error:"Organization creation is not available."},409);if(Q.status==="already_has_organization")return $.json({success:!0,status:Q.status,organization:Q.organization,domain:Q.domain});return $.json({success:!0,status:Q.status,organization:Q.organization,domain:Q.domain})}catch(Q){let X=Z?.user?.id;if(X)_1.captureException(Q,X);return console.error("[Auth] ensure organization failed:",Q),$.json({success:!1,error:"Failed to ensure organization"},500)}});EY8=vB});import{createHmac as vu6}from"crypto";function zY8($){return/^Bearer\s+(.+)$/i.exec($.get("authorization")??"")?.[1]?.trim()||null}function PY8($){if(!$||typeof $!=="object"||!("userId"in $)||typeof $.userId!=="string")return null;return $.userId}function xu6($){if(!$||typeof $!=="object"||!("user"in $))return null;let{user:Z}=$;if(!Z||typeof Z!=="object"||!("id"in Z)||typeof Z.id!=="string")return null;return Z.id}function fu6($){if(!$||typeof $!=="object"||!("valid"in $)||$.valid!==!0||!("key"in $))return null;return PY8($.key)}async function AY8($){let Z=new Headers({authorization:`Bearer ${$}`,"X-MCP-Session-Auth":"true"}),Q=await G8.api.getMcpSession({headers:Z}).catch(()=>null),X=PY8(Q);if(X)return X;let Y=await G8.api.verifyApiKey({body:{key:$}}).catch(()=>null);return fu6(Y)}function bu6($,Z){let Q=vu6("sha256",Z).update($).digest("base64");return encodeURIComponent(`${$}.${Q}`)}var ID1,TY8;var RY8=D(()=>{d$();cJ();ID1=new Y1;ID1.get("/me",async($)=>{let Z=zY8($.req.raw.headers),Q;if(Z)Q=await AY8(Z);else{let X=await G8.api.getSession({headers:$.req.raw.headers}).catch(()=>null);Q=xu6(X)}if(!Q)return $.json({error:"unauthorized"},401);return $.json({userId:Q})});ID1.post("/session-from-oauth",async($)=>{let Z=zY8($.req.raw.headers);if(!Z)return $.json({error:"unauthorized"},401);let Q=await AY8(Z);if(!Q)return $.json({error:"unauthorized"},401);try{let X=await G8.$context,Y=await X.internalAdapter.createSession(Q,!1),J=bu6(Y.token,X.secret);return $.json({sessionToken:J})}catch(X){return console.error("[desktop-auth] failed to mint a session from an OAuth bearer:",X instanceof Error?X.message:String(X)),$.json({error:"failed to mint a session"},500)}});TY8=ID1});var qd=($)=>{let Z=$.req.header("sec-fetch-dest");if(Z!==void 0)return Z==="document";let Q=$.req.header("accept")??"";return Q.includes("text/html")&&!/text\/html\s*;\s*q\s*=\s*0/.test(Q)};function yu6($){let Z=$.req.path;return $.req.method==="GET"&&/\/fs\/[^/]+\/read$/.test(Z)||$.req.method==="POST"&&/\/fs\/[^/]+\/unlock$/.test(Z)}function qD1($){let Z=$.auth?.apiKey?.metadata;if(!Z||typeof Z!=="object"||Array.isArray(Z)||!("organization"in Z))return{present:!1};let Q=Z.organization;if(!Q||typeof Q!=="object"||Array.isArray(Q))return{present:!0};let X=Q.id;return{present:!0,id:typeof X==="string"?X:void 0}}function hu6($){let Z=$.split("/").filter(Boolean);if(Z[0]!=="api")return!1;let Q=Z.slice(2);return gu6.some((X)=>X.length===Q.length&&X.every((Y,J)=>Y==="*"||Y===Q[J]))}var gu6,Db=async($,Z)=>{let Q=$.req.param("org");if(!Q)return $.json({error:"org slug missing in path"},400);let X=$.get("studioContext");if(!X?.db)return $.json({error:"studioContext not initialized"},500);let Y=X.db,J=hu6($.req.path),G=await Y.selectFrom("organization").select(["id","slug","name","metadata"]).where((F)=>J?F.or([F("slug","=",Q),F("id","=",Q)]):F("slug","=",Q)).executeTakeFirst();if(!G){if(qd($))return $.redirect(`/${encodeURIComponent(Q)}`,302);return $.json({error:`organization "${Q}" not found`},404)}let K=qD1(X);if(X.auth?.apiKey?.id&&K.present&&K.id!==G.id)return $.json({error:"forbidden: API key is scoped to another organization"},403);if(X.auth?.tokenOrganizationId&&X.auth.tokenOrganizationId!==G.id)return $.json({error:"forbidden: token is scoped to another organization"},403);if(XZ(G)){if(qd($))return $.redirect(`/${encodeURIComponent(Q)}`,302);return $.json({error:`organization "${Q}" not found`},404)}let W=X.auth?.user?.id,H;if(W){let F=await Y.selectFrom("member").select(["role"]).where("userId","=",W).where("organizationId","=",G.id).executeTakeFirst();if(!F){if(!yu6($)){if(qd($))return $.redirect(`/${encodeURIComponent(G.slug)}`,302);return $.json({error:"forbidden: not a member of organization"},403)}}else H=F.role}return X.organization={id:G.id,slug:G.slug,name:G.name,role:H},X.access.setOrganizationId(G.id),X.access.setRole(H),Rw(X,G),await Z()};var BS0=D(()=>{JB();gu6=[["vault","connections","*","access-token"],["vault","connections","*","configuration"],["internal","task-board","import"],["internal","commerce-diagnostic","share-invite"]]});function uu6($){if(IQ($.id)!==null)return!0;if(xJ$($.id))return!0;let Z=$.metadata?.liveAgentId;return typeof Z==="string"&&Z.length>0}function cu6($,Z){let Q=new Map,X=(Y)=>{let J=Q.get(Y);if(J)return J;let G=(async()=>{if(!(await $.storage.orgSsoConfig.getByOrgId(Y))?.enforced)return!0;return await $.storage.orgSsoSessions.isValid(Z,Y)})();return Q.set(Y,G),G};return async(Y)=>{let J=await Promise.all(Y.map((G)=>X(G.orgId)));return Y.filter((G,K)=>J[K]===!0)}}function lu6($){let Z=$.auth?.apiKey?.id?qD1($):{present:!1,id:void 0};if(Z.present&&!Z.id)return OS0;let Q=$.auth?.tokenOrganizationId;if(Z.id&&Q&&Z.id!==Q)return OS0;let X=Z.id??Q??null;if(X===null&&$.auth?.apiKey?.id)return OS0;return X}var IY8="/api/_me",OS0,mu6=256,du6=20,iu6=50,pu6=10,nu6=5,qY8=()=>{let $=new Y1;return $.get("/projects/search",async(Z)=>{let Q=Z.get("studioContext");Z.header("Cache-Control","private, no-store");let X=o0(Q);if(!X)return Z.json({error:"Unauthorized"},401);let Y=lu6(Q);if(Y===OS0)return Z.json({error:"forbidden: credential is scoped to another organization"},403);let J=(Z.req.query("q")??"").trim();if(!J)return Z.json({items:[]});if(J.length>mu6)return Z.json({error:"query too long"},400);let G=Number.parseInt(Z.req.query("limit")??"",10),K=Number.isFinite(G)&&G>0?Math.min(G,iu6):du6,W=cu6(Q,X),H=K+pu6,F=[];for(let U=0;U<nu6&&F.length<K;U++){let N=await Q.storage.virtualMcps.searchAcrossMemberships({userId:X,term:J,limit:H,offset:U*H,organizationId:Y}),B=N.filter((O)=>!uu6(O)).filter((O)=>!XZ({metadata:O.organization_metadata})).map((O)=>({id:O.id,title:O.title,icon:O.icon,orgId:O.organization_id,orgName:O.organization_name,orgSlug:O.organization_slug}));if(F.push(...await W(B)),N.length<H)break}return Z.json({items:F.slice(0,K)})}),$};var MY8=D(()=>{d$();v8();BS0();OS0=Symbol("deny")});import{z as Md}from"zod";var tu6,ou6,ru6=200,au6=2000,su6=60,eu6=2000,$c6,VY8;var kY8=D(()=>{tu6=["warn","block"],ou6=Md.enum(tu6),$c6=Md.string().max(eu6).refine(($)=>{try{let Z=new URL($);return Z.protocol==="https:"||Z.protocol==="http:"}catch{return!1}},{message:"ctaUrl must be an absolute http(s) URL"}),VY8=Md.object({severity:ou6,title:Md.string().trim().min(1).max(ru6),message:Md.string().trim().min(1).max(au6),ctaLabel:Md.string().trim().max(su6).nullable().optional(),ctaUrl:$c6.nullable().optional()}).refine(($)=>!$.ctaLabel===!$.ctaUrl,{message:"ctaLabel and ctaUrl must be set together",path:["ctaUrl"]})});import{z as MD1}from"zod";function VD1($){let Z=$??{},Q=new Set([...Object.keys(AP.shape),...Object.keys(Z)]),X={};for(let Y of Q)X[Y]=xX(Z,Y);return{flags:Z,effective:X}}var Zc6,SY8;var CY8=D(()=>{YZ();Zc6=MD1.string().min(1).max(64).regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/),SY8=MD1.record(Zc6,MD1.boolean())});function _Y8($,Z,Q){let X=Q;for(;;){if(X=$.indexOf(Z,X),X===-1)return-1;let Y=$[X+Z.length];if(Y===void 0||Y===`
4546
+ (SELECT created_at, id FROM notifications WHERE id = ${Q.cursor})`);let G=await J.execute(),K=G.slice(0,X),W=await this.db.selectFrom("notifications").select((F)=>F.fn.countAll().as("count")).where("user_id","=",$).where("organization_id","=",Z).where("read_at","is",null).executeTakeFirst(),H=K[K.length-1];return{nextCursor:G.length>X&&H?H.id:null,notifications:K.map((F)=>({id:F.id,taskBoardItemId:F.task_board_item_id,type:F.type,data:El.parse(F.data),createdAt:dh6(F.created_at)})),unreadCount:Number(W?.count??0)}}async anchorExists($){return!!await this.db.selectFrom("notifications").select("id").where("id","=",$).executeTakeFirst()}async markRead($,Z,Q){if(Q&&Q.length===0)return 0;let X=this.db.updateTable("notifications").set({read_at:new Date}).where("user_id","=",$).where("organization_id","=",Z).where("read_at","is",null);if(Q)X=X.where("id","in",Q);let Y=await X.executeTakeFirst();return Number(Y.numUpdatedRows??0n)}async setSubscribed($,Z,Q){await this.db.insertInto("notification_subscriptions").values({id:_8("nsub"),user_id:$,task_board_item_id:Z,subscribed:Q}).onConflict((X)=>X.columns(["user_id","task_board_item_id"]).doUpdateSet({subscribed:Q,updated_at:new Date})).execute()}async notify($){await zl({...$,db:this.db})}async notifyMentions($){await OX8({...$,db:this.db})}async listSubscribers($){return(await this.db.selectFrom("notification_subscriptions").select("user_id").where("task_board_item_id","=",$).where("subscribed","=",!0).execute()).map((Q)=>Q.user_id)}}var lh6=20,mh6=50,dh6=($)=>$ instanceof Date?$.toISOString():$;var LX8=D(()=>{RQ();XR0();YR0();DX8()});class XD1{db;constructor($){this.db=$}async create($,Z,Q){await this.deleteExpired(Z);let X=crypto.randomUUID(),Y=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:X,organization_id:Z,user_id:Q,code_verifier:$,expires_at:Y,created_at:new Date}).execute(),X}async deleteExpired($){await this.db.deleteFrom("oauth_pkce_states").where("organization_id","=",$).where("expires_at","<",new Date).execute()}async consume($,Z,Q){let X=await this.db.deleteFrom("oauth_pkce_states").where("id","=",$).where("organization_id","=",Z).where("user_id","=",Q).returningAll().executeTakeFirst();if(!X)throw Error("Invalid or expired OAuth state token");if((X.expires_at instanceof Date?X.expires_at:new Date(X.expires_at))<new Date)throw Error("OAuth state token has expired");return X.code_verifier}}class YD1{db;vault;constructor($,Z){this.db=$;this.vault=Z}async upsert($){let Z=await this.vault.encrypt($.accessToken),Q=$.expiresAt??null,X=new Date;return await this.db.insertInto("claude_subscriptions").values({user_id:$.userId,encrypted_access_token:Z,expires_at:Q,created_at:X}).onConflict((Y)=>Y.column("user_id").doUpdateSet({encrypted_access_token:Z,expires_at:Q,created_at:X})).execute(),{linkedAt:X.toISOString(),expiresAt:Q?.toISOString()??null}}async find($){let Z=await this.db.selectFrom("claude_subscriptions").select(["created_at","expires_at"]).where("user_id","=",$).executeTakeFirst();if(!Z)return null;return{linkedAt:new Date(Z.created_at).toISOString(),expiresAt:Z.expires_at?new Date(Z.expires_at).toISOString():null}}async findLiveToken($){let Z=await this.db.selectFrom("claude_subscriptions").select(["encrypted_access_token","expires_at"]).where("user_id","=",$).executeTakeFirst();if(!Z)return null;if(Z.expires_at&&new Date(Z.expires_at).getTime()<=Date.now())return null;return this.vault.decrypt(Z.encrypted_access_token)}async delete($){await this.db.deleteFrom("claude_subscriptions").where("user_id","=",$).execute()}}function ih6($){return $.includes("/")?$.split("/").slice(1).join("/"):$}function ph6($){let Z=$.supported_parameters.includes("tools"),Q=$.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:ih6($.id),title:$.name,description:$.description||null,logo:null,capabilities:[...new Set([...$.architecture.input_modalities.map((X)=>X==="image"?"vision":X),...$.architecture.output_modalities,...Z?["tools"]:[],...Q?["reasoning"]:[]])],limits:{contextWindow:$.context_length,maxOutputTokens:$.top_provider.max_completion_tokens||null},costs:{input:$.pricing.prompt,output:$.pricing.completion}}}function jX8($){let Z=new Map;for(let Q of $){let X={description:Q.description,capabilities:Q.capabilities,limits:Q.limits,costs:Q.costs};Z.set(Q.modelId,X);let Y=Q.modelId.replace(/\./g,"-");if(Y!==Q.modelId)Z.set(Y,X)}return Z}async function nh6($){if($){let Z=await $.get(wX8,"openrouter");if(Z)return jX8(Z)}try{let Z=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!Z.ok)return new Map;let{data:Q}=await Z.json(),X=Q.map(ph6);if($)await $.set(wX8,"openrouter",X);return jX8(X)}catch{return new Map}}function th6($){let Z=$.replace(/\./g,"-"),Q=$.replace(/-\d{8}$/,""),X=Q.replace(/\./g,"-");return[...new Set([$,Z,Q,X])]}function oh6($){return $.providerId==="anthropic"||$.modelId.startsWith("anthropic/")}function zX8($,Z){if(oh6(Z)&&$.includes("vision")&&!$.includes("file"))return[...$,"file"];return $}function rh6($,Z){return $.map((Q)=>{let Y=th6(Q.modelId).map((K)=>Z.get(K)).find(Boolean),J=Q.capabilities.length?Q.capabilities:Y?.capabilities??[],G=zX8(J,Q);if(!Y)return G===J?Q:{...Q,capabilities:G};return{...Q,description:Q.description??Y.description??null,capabilities:G,limits:Q.limits??Y.limits??null,costs:Q.costs??Y.costs??null}})}class JD1{storage;cache;constructor($,Z){this.storage=$;this.cache=Z}async activate($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=a7()[Q.providerId];if(!Y)throw Error(`Unknown provider: ${Q.providerId}`);return Y.create(X)}async listModels($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=Q.providerId,J=a7()[Y];if(!J)throw Error(`Unknown provider: ${Y}`);if(this.cache){let U=await this.cache.get(Z,Y);if(U)return EX8(U,J,X)}let K=await J.create(X).listModels(),W=new Set,H=K.filter((U)=>{if(U.deprecated)return!1;if(W.has(U.modelId))return!1;return W.add(U.modelId),!0});if(Y!=="openrouter"){let U=await nh6(this.cache);H=rh6(H,U)}else H=H.map((U)=>({...U,capabilities:zX8(U.capabilities,U)}));let F=H.map((U)=>({...U,providerId:Y}));if(this.cache)await this.cache.set(Z,Y,F);return EX8(F,J,X)}}function EX8($,Z,Q){let Y=Z.create(Q).asyncResearch;if(!Y)return $;return $.map((J)=>Y.canHandle(J.modelId)?{...J,asyncResearch:!0}:J)}var wX8="_global";var PX8=D(()=>{wB()});import{SpanStatusCode as AX8}from"@opentelemetry/api";function ah6($){if(!$)return;try{let Z=JSON.parse($);if(typeof Z!=="object"||Z===null||Array.isArray(Z))return;let Q={};for(let[X,Y]of Object.entries(Z))if(typeof Y==="string")Q[X]=Y;return Object.keys(Q).length>0?Q:void 0}catch{return}}function sh6($,Z){return Z?.connectionId??$?.headers.get("x-caller-id")??void 0}function eh6($){try{let Z=new URL($.url).pathname.split("/").filter(Boolean);if(Z[0]==="api"&&Z[1])return decodeURIComponent(Z[1])}catch{}return}function KD1($){let{auth:Z,headers:Q,role:X,permissions:Y,userId:J,apiKeyId:G,organizationId:K}=$,W=!!G,H=Z.api.hasPermission;return{isApiKeyPrincipal:W,hasPermission:async(F,U)=>{if(W)return mO1(Y??{},F);let N=!!U?.organizationId&&!!K&&U.organizationId!==K,B=U?U.role:X;if(TZ(B))return!0;if(Y&&!N)return mO1(Y,F);let O=e78(U?.role,F,$Q8());if(O!=="fallback")return O==="grant";if(!H)return console.error("[Auth] hasPermission API not available"),!1;let L=U?.organizationId?{organizationId:U.organizationId}:{};try{if((await H({headers:Q,body:{permission:F,...L}}))?.success===!0)return!0;let j=UF$(F);return(await H({headers:Q,body:{permission:j,...L}}))?.success===!0}catch(w){let j=w?.statusCode;if(j!==401&&j!==403)console.error("[Auth] Permission check failed:",w instanceof Error?w.message:String(w));return!1}},organization:{create:async(F)=>{return Z.api.createOrganization({body:F})},update:async(F)=>{return Z.api.updateOrganization({headers:Q,body:F})},delete:async(F)=>{await Z.api.deleteOrganization({headers:Q,body:{organizationId:F}})},get:async(F)=>{return Z.api.getFullOrganization({headers:Q,query:F?{organizationId:F}:void 0})},list:async()=>{return(await Z.api.listOrganizations({headers:Q})).filter((U)=>!XZ(U))},addMember:async(F)=>{return Z.api.addMember({body:F})},removeMember:async(F)=>{return Z.api.removeMember({headers:Q,body:F})},listMembers:async(F)=>{return Z.api.listMembers({headers:Q,query:F?{organizationId:F.organizationId,limit:F.limit,offset:F.offset,filterField:F.filterField,filterValue:F.filterValue}:void 0})},updateMemberRole:async(F)=>{return Z.api.updateMemberRole({headers:Q,body:F})}},apiKey:{create:async(F)=>{return Z.api.createApiKey({body:{...F,userId:J}})},list:async()=>{return Z.api.listApiKeys({headers:Q})},update:async(F)=>{return Z.api.updateApiKey({body:{...F,userId:J}})},delete:async(F)=>{await Z.api.deleteApiKey({headers:Q,body:{keyId:F}})}}}}async function ce($,Z,Q){if(Jh.includes(Q))return;let X=await $.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",Z).where("role","=",Q).executeTakeFirst();if(!X?.permission)return;try{return JSON.parse(X.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${Q}`);return}}async function RX8($,Z,Q,X){let Y=TX8.get(Q);if(Y&&Date.now()-Y.at<$u6)return Y.archived;let J=await Z.measure(X,()=>$.selectFrom("organization").select(["metadata"]).where("id","=",Q).executeTakeFirst()),G=XZ(J);return TX8.set(Q,{archived:G,at:Date.now()}),G}async function GD1($,Z,Q,X,Y){let J=Y?.get(Q,X);if(J)return J;let K=(await Z.measure("auth_query_membership",()=>$.selectFrom("member").select(["member.role"]).where("member.userId","=",Q).where("member.organizationId","=",X).executeTakeFirst()))?.role;if(K)Y?.set(Q,X,K);return K}function Zu6($,Z){if(!$)return!0;return Z===$}async function Qu6($,Z,Q,X,Y){let J=w30($.headers,"token");if(!J)return;let G=await Q.measure("auth_verify_onbehalf_studio_jwt",()=>Ia0(J));if(!G?.sub)return;let K=G.metadata?.organizationId;if(!Zu6(X,K))return;let W=X?await GD1(Z,Q,G.sub,X,Y):G.user?.role??void 0;return{id:G.sub,email:G.user?.email,name:G.user?.name,role:W}}async function Xu6($,Z,Q,X=qX8,Y){let J=$.headers.get("Authorization");try{let G=new Headers($.headers);G.set("X-MCP-Session-Auth","true");let K=await X.measure("auth_get_mcp_session",()=>Z.api.getMcpSession({headers:G}));if(K){let W=K.userId,H=$.headers.get("x-org-id"),F=$.headers.get("x-org-slug"),U=eh6($),N=await X.measure("auth_query_membership",()=>{let w=Q.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName","organization.metadata as orgMetadata"]).where("member.userId","=",W);if(U)return w.where("organization.slug","=",U).executeTakeFirst();if(H)return w.where("organization.id","=",H).executeTakeFirst();if(F)return w.where("organization.slug","=",F).executeTakeFirst();return w.orderBy("member.createdAt","asc").limit(2).execute().then((j)=>j.length===1?j[0]:void 0)});if(XZ({metadata:N?.orgMetadata}))throw Error("Organization is archived");let B=N?.role,O=N?{id:N.orgId,slug:N.orgSlug,name:N.orgName}:void 0;if(N&&B)Y?.set(W,N.organizationId,B);let L;if(N&&B)L=await X.measure("auth_fetch_role_permissions",()=>ce(Q,N.organizationId,B));return{user:{id:W,role:B},role:B,permissions:L,organization:O}}}catch(G){console.error("[Auth] OAuth session check failed:",G)}if(J?.startsWith("Bearer ")){let G=J.replace("Bearer ","").trim();try{let K=await X.measure("auth_verify_studio_token",()=>Ia0(G));if(K){let W,H=K.metadata?.organizationId;if(K.sub&&H)W=await GD1(Q,X,K.sub,H,Y);let F,U=K.metadata?.organizationId;if(U){let N=K.metadata?.organizationName,B=K.metadata?.organizationSlug;if(N||B){if(await RX8(Q,X,U,"auth_query_org_archived_for_studio_token"))return{user:void 0};F={id:U,name:N,slug:B}}else{let O=await X.measure("auth_query_org_for_studio_token",()=>Q.selectFrom("organization").select(["id","slug","name","metadata"]).where("id","=",U).executeTakeFirst());if(XZ(O))return{user:void 0};F=O?{id:O.id,slug:O.slug,name:O.name}:{id:U}}}return{user:{id:K.sub,connectionId:K.metadata?.connectionId,role:W},role:W,permissions:K.permissions,tokenOrganizationId:H,organization:F}}}catch{}try{let K=await X.measure("auth_verify_api_key",()=>Z.api.verifyApiKey({body:{key:G}}));if(K?.valid&&K.key){let W=K.key.metadata?.organization;if(W?.id&&await RX8(Q,X,W.id,"auth_query_org_for_api_key"))return{user:void 0};let H=K.key.permissions,F,U=K.key.userId;if(U&&W?.id)F=await GD1(Q,X,U,W.id,Y);let N=await Qu6($,Q,X,W?.id,Y);return{apiKeyId:K.key.id,user:N??{id:K.key.userId,role:F},role:N?N.role:F,permissions:H,apiKey:{id:K.key.id,name:K.key.name??"",userId:K.key.userId,metadata:K.key.metadata},tokenOrganizationId:W?.id,organization:W?{id:W.id,slug:W.slug,name:W.name}:void 0}}}catch(K){let W=K;if(W.body?.code==="INVALID_API_KEY"||W.message?.includes("Invalid API key"))console.warn("[Auth] invalid API key (Bearer)",{path:new URL($.url).pathname,method:$.method,ua:$.headers.get("user-agent")??void 0,ip:$.headers.get("x-forwarded-for")??$.headers.get("x-real-ip")??void 0,tokenPrefix:G.slice(0,8)});else console.error("[Auth] API key check failed:",W)}}try{let G=new Headers($.headers);G.delete("Authorization");let K=await X.measure("auth_get_session",()=>Z.api.getSession({headers:G}));if(K){let W,H,F=$.headers.get("x-org-id"),U=$.headers.get("x-org-slug");if(!F&&!U&&$.method.toUpperCase()==="GET")try{let N=new URL($.url).searchParams;F=N.get("x-org-id"),U=N.get("x-org-slug")}catch{}if(F||U){let N=await X.measure("auth_query_membership_from_header",()=>{let B=Q.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName","organization.metadata as orgMetadata"]).where("member.userId","=",K.user.id);if(F)B=B.where("organization.id","=",F);else if(U)B=B.where("organization.slug","=",U);return B.executeTakeFirst()});if(XZ({metadata:N?.orgMetadata}))throw Error("Organization is archived");if(N)W={id:N.orgId,slug:N.orgSlug,name:N.orgName},H=N.role}else if(K.session.activeOrganizationId){let N=await X.measure("auth_get_full_organization",()=>Z.api.getFullOrganization({headers:G}).catch(()=>null));if(N){if(XZ(N))throw Error("Organization is archived");W={id:N.id,slug:N.slug,name:N.name},H=N.members?.find((O)=>O.userId===K.user.id)?.role}else W={id:K.session.activeOrganizationId,slug:"",name:""}}return{user:{id:K.user.id,email:K.user.email,emailVerified:!!K.user.emailVerified,name:K.user.name,image:K.user.image??void 0,role:H},role:H,organization:W}}}catch(G){let K=G;console.error("[Auth] Session check failed:",JSON.stringify({message:K.message,body:K.body,stack:K.stack},null,2))}return{user:void 0}}async function MX8($){let Z=new EX($.encryption.key),Q=k0(),X=Q.clickhouseUrl,Y=!!X,J=!Y&&!!Q.monitoringS3Bucket,G=Y?"clickhouse":"duckdb",{resolve:K}=await import("path"),W=K(FK()),H=K(dU()),F=(A)=>`read_ndjson('${W}/${A}/**/*.ndjson', auto_detect=true)`,U=(A)=>`read_ndjson('${H}/${A}/**/*.ndjson', auto_detect=true)`,N,B,O,L,w=!1;if($.monitoringEngines)N=$.monitoringEngines.monitoringEngine,B=$.monitoringEngines.metricEngine,O=F,L=U;else if(Y){let A=Q.clickhouseMaxMemoryUsage?{maxMemoryUsage:String(Q.clickhouseMaxMemoryUsage)}:void 0;N=new Mr(X,A),B=new Mr(X,A),O=(I)=>"studio_monitoring_logs",L=(I)=>"studio_monitoring_logs"}else if(J){let A=Q.monitoringS3AccessKeyId??Q.s3AccessKeyId,I=Q.monitoringS3SecretAccessKey??Q.s3SecretAccessKey,V=Q.duckdbExtensionDirectory;if(!A||!I||!V)throw Error("MONITORING_S3_BUCKET is set but the GCS monitoring path is misconfigured: MONITORING_S3_ACCESS_KEY_ID/S3_ACCESS_KEY_ID, MONITORING_S3_SECRET_ACCESS_KEY/S3_SECRET_ACCESS_KEY, and DUCKDB_EXTENSION_DIRECTORY are all required.");let q={endpoint:Q.monitoringS3Endpoint??Q.s3Endpoint??"storage.googleapis.com",region:Q.monitoringS3Region??Q.s3Region,accessKeyId:A,secretAccessKey:I,extensionDirectory:V},C=new qr(q,{memoryLimit:Q.duckdbMemoryLimit,threads:Q.duckdbThreads});N=C,B=C;let l=Q.monitoringS3Bucket,x=Q.monitoringS3Prefix??"",b=(d,y)=>iH$({bucket:l,prefix:x,range:y});O=b,L=b,w=!0}else{let{engine:A}=await k$1({basePath:FK()}),{engine:I}=await k$1({basePath:dU()});N=A,B=I,O=F,L=U}let j=new Pl($.db),E=new s$0($.db),z=new Cr($.db),P={connections:new Bo($.db,Z),connectionCredentialVault:new d01($.db),organizationSettings:new uz($.db),userModelPreferences:new C$1($.db),monitoring:new a01(N,O,B,L,G,w),virtualMcps:new hh($.db),users:new p$1($.db),tags:new _r($.db),organizationBilling:new uH($.db),virtualMcpPluginConfigs:new _$1($.db),aiProviderKeys:new Xa($.db,Z,$.providerKeyCache),subsidizedGatewayKeys:new oO1($.db,Z),secrets:new EX1($.db,Z),orgFileConfigs:new rO1($.db,Z),orgSites:new Ob($.db),orgRepoSyncs:new _P($.db),gitProviderAccounts:new Ec($.db),gitProviderAccountCredentials:new ta($.db,Z),gitProviderOAuthStates:new sO1($.db),repositories:new oa($.db),jiraIntegrations:new _B($.db,Z),taskBoard:new ZG($.db),columnAutomations:new eO1($.db),taskBoardPrompts:new $D1($.db),notifications:new QD1($.db),orgFsEntries:new Ut($.db),oauthPkceStates:new XD1($.db),claudeSubscriptions:new YD1($.db,Z),automations:X30($.db),triggerCallbackTokens:new kr($.db),orgSsoConfig:new h$1($.db,Z),orgSsoSessions:new u$1($.db),registry:{items:new hu($.db),publishRequests:new uu($.db),publishApiKeys:new cu($.db),monitorRuns:new B30($.db),monitorResults:new O30($.db),monitorConnections:new D30($.db)},brandContext:new Sr($.db),organizationDomains:new fJ($.db),organizationJoinRequests:new gu($.db),kv:z,interests:new g$1(z)};return async(A,I)=>{let V=I?.timings??qX8,q=ZS0(),C=A?await $.observability.tracer.startActiveSpan("studio.auth",async(j0)=>{try{let g0=await Xu6(A,$.auth,$.db,V,$.memberRoleCache);return j0.setStatus({code:AX8.OK}),g0}catch(g0){throw j0.setStatus({code:AX8.ERROR,message:g0.message}),j0.recordException(g0),g0}finally{j0.end()}}):{user:void 0},l=sh6(A,C.user),x=KD1({auth:$.auth,headers:A?.headers??new Headers,role:C.role,permissions:C.permissions,userId:C.user?.id,apiKeyId:C.apiKeyId,organizationId:C.organization?.id}),b={user:C.user,tokenOrganizationId:C.tokenOrganizationId};if(C.apiKey)b.apiKey=C.apiKey;let d=C.organization,y=A?k0().baseUrl??`${new URL(A.url).origin}`:c5(),p=new $z(b.user?.id,void 0,x,C.role,"self",void 0,d?.id),J0={...P,virtualMcps:WG$(P.virtualMcps),threads:new qY1(j,d?.id),asyncResearchJobs:new nO1(E,d?.id)},D0=new JD1(J0.aiProviderKeys,$.modelListCache),s=OX(),o=!d?null:s?TJ(s,d.id):new OH(d.id,y),L0=d&&o?new wH(o,J0.orgFsEntries,d.id):null;dd0(J0,{objectStorage:o,baseUrl:y,orgSlug:d?.slug});let Z0={timings:V,auth:b,connectionId:l,organization:d,storage:J0,vault:Z,authInstance:$.auth,boundAuth:x,access:p,db:$.db,tracer:$.observability.tracer,meter:$.observability.meter,baseUrl:y,objectStorage:o,orgFs:L0,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(Yu6.map((j0)=>[j0,A?.headers.get(j0)??null]).filter(([j0,g0])=>g0!==null)),userAgent:(A?w30(A.headers,"client"):null)||A?.headers.get("User-Agent")||void 0,ipAddress:(A?.headers.get("CF-Connecting-IP")||A?.headers.get("X-Forwarded-For"))??void 0,properties:ah6(A?w30(A.headers,"properties"):null)},aiProviders:D0,createMCPProxy:async(j0)=>{return await GX8(j0,Z0)},invalidateMemberRole:$.memberRoleCache?(j0,g0)=>$.memberRoleCache.invalidate(j0,g0):void 0,getOrCreateClient:q,pendingRevalidations:[],firecrawlApiKey:k0().firecrawlApiKey};return Z0}}function Rw($,Z){$.storage.threads.setOrganizationId(Z.id),$.storage.asyncResearchJobs.setOrganizationId(Z.id);let Q=OX();$.objectStorage=Q?TJ(Q,Z.id):new OH(Z.id,$.baseUrl),$.orgFs=new wH($.objectStorage,$.storage.orgFsEntries,Z.id),dd0($.storage,{objectStorage:$.objectStorage,baseUrl:$.baseUrl,orgSlug:Z.slug??void 0})}var $u6=60000,TX8,IX8,mQ,qX8,Yu6;var JB=D(()=>{XD();YD();A$();k5();c01();GG0();i01();OG$();pH$();yG();S$1();nH$();v$1();x$1();b$1();HF$();i$1();L30();GN();t$1();c31();zX();AO1();GR0();tO1();hO1();O41();Fe();WX8();aO1();ra();YB();LX8();Ea0();tE();PX8();uO();Gt();AQ0();TX8=new Map;mQ={set:($)=>{IX8=$},create:async($,Z)=>{return await IX8($,Z)}},qX8={measure:async($,Z)=>{return await Z()}},Yu6=["x-hub-signature-256"]});import{DBOS as GS0,SchedulerMode as Ju6}from"@dbos-inc/dbos-sdk";function VX8($){HD1=$}function kX8(){if(!HD1)throw Error("[org-fs] org-repo-sync runtime not initialized \u2014 setOrgRepoSyncRuntime() must run before the workflow fires");return HD1}async function Ku6($,Z){let Q=await $.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z).executeTakeFirst();if(!Q)return null;let X=await mQ.create();return X.organization={id:Q.id,slug:Q.slug,name:Q.name},Rw(X,{id:Q.id,slug:Q.slug}),X}async function Wu6($){try{let{db:Z}=kX8(),Q=await Ku6(Z,$.organizationId);if(!Q)return{id:$.id,volume:$.volume,error:"organization no longer exists"};let X=await lW0(Q,$);return"error"in X?{id:X.id,volume:X.volume,error:X.error}:{id:X.id,volume:X.volume}}catch(Z){return{id:$.id,volume:$.volume,error:Z instanceof Error?Z.message:String(Z)}}}async function Hu6($,Z){let Q=await GS0.runStep(()=>new _P(kX8().db).listEnabled(),{name:"loadOrgRepoSyncConfigs"});for(let X of Q){let Y=await GS0.runStep(()=>Wu6(X),{name:`syncOrgRepo:${X.id}`});if(Y.error)console.warn(`[org-fs] org repo sync ${Y.id} (${Y.volume}) failed: ${Y.error}`)}}function SX8(){if(WD1)return;WD1=GS0.registerWorkflow(Hu6,{name:"orgRepoSyncWorkflow"}),GS0.registerScheduled(WD1,{name:"orgRepoSyncWorkflow",crontab:Gu6,mode:Ju6.ExactlyOncePerIntervalWhenActive})}var Gu6="7-59/10 * * * *",HD1=null,WD1=null;var CX8=D(()=>{JB();mW0()});import{DBOS as KS0,SchedulerMode as Fu6}from"@dbos-inc/dbos-sdk";function _X8($){UD1=$}function vX8(){if(!UD1)throw Error("[task-board-archive] runtime not initialized \u2014 setTaskBoardArchiveSweepRuntime() must run before the workflow fires");return UD1}async function Ou6($,Z){try{let Q=await RF(vX8().db,$);if(!Q)return{organizationId:$,archived:0};let{archived:X}=await Jy$(Q,$,Z);return{organizationId:$,archived:X}}catch(Q){return{organizationId:$,archived:0,error:Q instanceof Error?Q.message:String(Q)}}}async function Du6($,Z){let Q=new Date($.getTime()-Nu6),X=await KS0.runStep(()=>new ZG(vX8().db).listItemsAwaitingArchive(Q,Bu6),{name:"loadArchiveCandidates"});if(X.length===0)return;let Y=await Promise.all(HR0(X).map(({organizationId:G,itemIds:K})=>KS0.runStep(()=>Ou6(G,K),{name:`archiveMergedForOrg:${G}`})));for(let G of Y)if(G.error)console.warn(`[task-board-archive] org ${G.organizationId} failed: ${G.error}`);let J=Y.reduce((G,K)=>G+K.archived,0);if(J>0)console.log(`[task-board-archive] archived ${J} of ${X.length} candidates`)}function xX8(){if(FD1)return;FD1=KS0.registerWorkflow(Du6,{name:"taskBoardArchiveSweepWorkflow"}),KS0.registerScheduled(FD1,{name:"taskBoardArchiveSweepWorkflow",crontab:Uu6,mode:Fu6.ExactlyOncePerIntervalWhenActive})}var Uu6="23 * * * *",Nu6=432000000,Bu6=200,UD1=null,FD1=null;var fX8=D(()=>{YB();Al();Rl()});async function Lu6($,Z){let Q=await $.storage.tags.listOrgTags(Z),X=Q.find((J)=>J.name.toLowerCase()===WS0);if(X)return X.id;return(await $.storage.tags.createTag(Z,WS0,jW0(Q.length))).id}async function wu6($,Z,Q,X,Y){let J=await $.storage.taskBoard.getById(Q,Z);if(!J||!Hy$(J.status))return!1;let G=await $.storage.taskBoard.listPrs(Q,Z),K=await Promise.all(G.map(async(H)=>({...H,...await Y($,Z,H)})));if(!mx(K))return!1;await $.storage.taskBoard.addItemTags(Q,[await X()],"system");let W=await $.storage.taskBoard.getById(Q,Z);if(!W)return!1;return await x6($,{taskBoardItemId:Q,action:"tags_changed",actorId:null,data:{from:J.tags,to:W.tags,reason:"merged_pr_auto_tag"}}),N8(Z,W),!0}async function bX8($,Z,Q,X=FR0){let Y=null,J=()=>Y??=Lu6($,Z),G=0;for(let K of Q)try{if(await wu6($,Z,K,J,X))G+=1}catch(W){console.error(`[task-board-merged-tag] ${K} failed`,W)}return{tagged:G}}var WS0="merged";var yX8=D(()=>{T4();lQ();Al();jW();U7();W9()});import{DBOS as HS0,SchedulerMode as ju6}from"@dbos-inc/dbos-sdk";function gX8($){BD1=$}function hX8(){if(!BD1)throw Error("[task-board-merged-tag] runtime not initialized \u2014 setTaskBoardMergedTagSweepRuntime() must run before the workflow fires");return BD1}async function Pu6($,Z){try{let Q=await RF(hX8().db,$);if(!Q)return{organizationId:$,tagged:0};let{tagged:X}=await bX8(Q,$,Z);return{organizationId:$,tagged:X}}catch(Q){return{organizationId:$,tagged:0,error:Q instanceof Error?Q.message:String(Q)}}}async function Au6(){let $=await HS0.runStep(()=>new ZG(hX8().db).listItemsAwaitingMergedTag(WS0,zu6),{name:"loadMergedTagCandidates"});if($.length===0)return;let Z=await Promise.all(HR0($).map(({organizationId:X,itemIds:Y})=>HS0.runStep(()=>Pu6(X,Y),{name:`tagMergedForOrg:${X}`})));for(let X of Z)if(X.error)console.warn(`[task-board-merged-tag] org ${X.organizationId} failed: ${X.error}`);let Q=Z.reduce((X,Y)=>X+Y.tagged,0);if(Q>0)console.log(`[task-board-merged-tag] tagged ${Q} of ${$.length} candidates`)}function uX8(){if(ND1)return;ND1=HS0.registerWorkflow(Au6,{name:"taskBoardMergedTagSweepWorkflow"}),HS0.registerScheduled(ND1,{name:"taskBoardMergedTagSweepWorkflow",crontab:Eu6,mode:ju6.ExactlyOncePerIntervalWhenActive})}var Eu6="41 * * * *",zu6=200,BD1=null,ND1=null;var cX8=D(()=>{YB();Al();Rl();yX8()});function mX8($){if(!$)return!1;try{return new URL($).host==="api.decocms.com"&&$!=="https://studio.decocms.com/org/deco/registry/mcp"}catch{return!1}}var lX8="https://studio.decocms.com/org/deco/registry/mcp";var iX8,Tu6,dX8=($)=>{let Z=0,Q=$.length;while(Z<Q){let X=$.charCodeAt(Z);if(X!==32&&X!==9)break;Z++}while(Q>Z){let X=$.charCodeAt(Q-1);if(X!==32&&X!==9)break;Q--}return Z===0&&Q===$.length?$:$.slice(Z,Q)},OD1=($,Z)=>{if(Z&&$.indexOf(Z)===-1)return{};let Q=$.split(";"),X={};for(let Y of Q){let J=Y.indexOf("=");if(J===-1)continue;let G=dX8(Y.substring(0,J));if(Z&&Z!==G||!iX8.test(G))continue;let K=dX8(Y.substring(J+1));if(K.startsWith('"')&&K.endsWith('"'))K=K.slice(1,-1);if(Tu6.test(K)){if(X[G]=K.indexOf("%")!==-1?mu(K,xr):K,Z)break}}return X},Ru6=($,Z,Q={})=>{if(!iX8.test($))throw Error("Invalid cookie name");let X=`${$}=${Z}`;if($.startsWith("__Secure-")&&!Q.secure)throw Error("__Secure- Cookie must have Secure attributes");if($.startsWith("__Host-")){if(!Q.secure)throw Error("__Host- Cookie must have Secure attributes");if(Q.path!=="/")throw Error('__Host- Cookie must have Path attributes with "/"');if(Q.domain)throw Error("__Host- Cookie must not have Domain attributes")}for(let Y of["domain","path"])if(Q[Y]&&/[;\r\n]/.test(Q[Y]))throw Error(`${Y} must not contain ";", "\\r", or "\\n"`);if(Q&&typeof Q.maxAge==="number"&&Q.maxAge>=0){if(Q.maxAge>34560000)throw Error("Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.");X+=`; Max-Age=${Q.maxAge|0}`}if(Q.domain&&Q.prefix!=="host")X+=`; Domain=${Q.domain}`;if(Q.path)X+=`; Path=${Q.path}`;if(Q.expires){if(Q.expires.getTime()-Date.now()>34560000000)throw Error("Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.");X+=`; Expires=${Q.expires.toUTCString()}`}if(Q.httpOnly)X+="; HttpOnly";if(Q.secure)X+="; Secure";if(Q.sameSite)X+=`; SameSite=${Q.sameSite.charAt(0).toUpperCase()+Q.sameSite.slice(1)}`;if(Q.priority)X+=`; Priority=${Q.priority.charAt(0).toUpperCase()+Q.priority.slice(1)}`;if(Q.partitioned){if(!Q.secure)throw Error("Partitioned Cookie must have Secure attributes");X+="; Partitioned"}return X},FS0=($,Z,Q)=>{return Z=encodeURIComponent(Z),Ru6($,Z,Q)};var pX8=D(()=>{QL();iX8=/^[\w!#$%&'*.^`|~+-]+$/,Tu6=/^[ !#-:<-[\]-~]*$/});var Id=($,Z,Q)=>{let X=$.req.raw.headers.get("Cookie");if(typeof Z==="string"){if(!X)return;let J=Z;if(Q==="secure")J="__Secure-"+Z;else if(Q==="host")J="__Host-"+Z;return OD1(X,J)[J]}if(!X)return{};return OD1(X)},Iu6=($,Z,Q)=>{let X;if(Q?.prefix==="secure")X=FS0("__Secure-"+$,Z,{path:"/",...Q,secure:!0});else if(Q?.prefix==="host")X=FS0("__Host-"+$,Z,{...Q,path:"/",secure:!0,domain:void 0});else X=FS0($,Z,{path:"/",...Q});return X},Z80=($,Z,Q,X)=>{let Y=Iu6(Z,Q,X);$.header("Set-Cookie",Y,{append:!0})};var US0=D(()=>{pX8()});var nX8=($)=>{let Q={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...$},X=((J)=>{if(typeof J==="string")if(J==="*"){if(Q.credentials)return(G)=>G||null;return()=>J}else return(G)=>J===G?G:null;else if(typeof J==="function")return J;else return(G)=>J.includes(G)?G:null})(Q.origin),Y=((J)=>{if(typeof J==="function")return J;else if(Array.isArray(J))return()=>J;else return()=>[]})(Q.allowMethods);return async function(G,K){function W(F,U){G.res.headers.set(F,U)}let H=await X(G.req.header("origin")||"",G);if(H)W("Access-Control-Allow-Origin",H);if(Q.credentials)W("Access-Control-Allow-Credentials","true");if(Q.exposeHeaders?.length)W("Access-Control-Expose-Headers",Q.exposeHeaders.join(","));if(G.req.method==="OPTIONS"){if(Q.origin!=="*"||Q.credentials)W("Vary","Origin");if(Q.maxAge!=null)W("Access-Control-Max-Age",Q.maxAge.toString());let F=await Y(G.req.header("origin")||"",G);if(F.length)W("Access-Control-Allow-Methods",F.join(","));let U=Q.allowHeaders;if(!U?.length){let N=G.req.header("Access-Control-Request-Headers");if(N)U=N.split(/\s*,\s*/)}if(U?.length)W("Access-Control-Allow-Headers",U.join(",")),G.res.headers.append("Vary","Access-Control-Request-Headers");return G.res.headers.delete("Content-Length"),G.res.headers.delete("Content-Type"),new Response(null,{headers:G.res.headers,status:204,statusText:"No Content"})}if(await K(),Q.origin!=="*"||Q.credentials)G.header("Vary","Origin",{append:!0})}};var tX8=()=>{};function DD1($,Z){return`${$}:${Z}`}function oX8($){let Z=$?.ttlMs??120000,Q=$?.maxSize??1e4,X=new Map;function Y(){if(X.size<=Q)return;let J=Date.now();for(let[G,K]of X)if(K.expiresAt<=J)X.delete(G);if(X.size>Q){let G=X.size-Q,K=0;for(let W of X.keys()){if(K>=G)break;X.delete(W),K++}}}return{get(J,G){let K=DD1(J,G),W=X.get(K);if(!W)return;if(W.expiresAt<=Date.now()){X.delete(K);return}return W.role},set(J,G,K){let W=DD1(J,G);X.set(W,{role:K,expiresAt:Date.now()+Z}),Y()},invalidate(J,G){X.delete(DD1(J,G))}}}class LD1{options;subscriptions=[];localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.localEmit=$;if(this.subscriptions.length>0)return;if(!this.localEmit)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder;this.subscriptions=rX8.map((X)=>Z.subscribe(X));for(let X of this.subscriptions)(async()=>{for await(let Y of X)try{let J=JSON.parse(Q.decode(Y.data));if(typeof J?.originId!=="string"||typeof J?.organizationId!=="string"||typeof J?.event?.id!=="string"||typeof J?.event?.type!=="string")continue;if(J.originId===this.originId)continue;if(typeof J.messageId==="string"&&this.hasSeen(J.messageId))continue;this.localEmit?.(J.organizationId,J.event)}catch{}})().catch((Y)=>{console.error("[NatsSSEBroadcast] Subscription error:",Y)})}broadcast($,Z){this.localEmit?.($,Z);let Q={originId:this.originId,messageId:crypto.randomUUID(),organizationId:$,event:Z};try{let X=this.options.getConnection();if(!X)return;let Y=this.encoder.encode(JSON.stringify(Q));for(let J of rX8)X.publish(J,Y)}catch(X){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",X)}}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.localEmit=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var rX8;var aX8=D(()=>{rX8=["studio.sse.broadcast","mesh.sse.broadcast"]});async function qu6($,Z,Q=5){try{await M4(Z,{maxAttempts:Q,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(X){console.error(`${$} Deferred start failed:`,X instanceof A7?X.cause:X)}}function sX8($){let Z=new LD1({getConnection:()=>$.getConnection()});r5.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),$.onReady(()=>{qu6("[NatsSSEBroadcast]",()=>Z.start())})}var wD1=D(()=>{h8();aX8();qe();qe()});var eX8=()=>{};var jD1=()=>{};var $Y8=()=>{};var Mu6,iQ7;var ZY8=D(()=>{eX8();jD1();QL();$Y8();Mu6={br:".br",zstd:".zst",gzip:".gz"},iQ7=Object.keys(Mu6)});var QY8=D(()=>{ZY8()});var XY8=()=>{};var YY8=D(()=>{XY8()});var JY8=()=>{};var GY8=D(()=>{J81()});var ED1=D(()=>{XL();GY8()});var zD1="x-hono-disable-ssg",FX7;var PD1=D(()=>{ED1();FX7=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[zD1]:"true"}})}catch{return null}})()});var KY8=D(()=>{q30()});var AD1=D(()=>{KY8()});var WY8=D(()=>{YY8();JY8();jD1();PD1();AD1();ED1()});var HY8=D(()=>{PD1();AD1();WY8()});var pX7;var FY8=D(()=>{HY8();({write:pX7}=Bun)});var Su6=class{#$;constructor($){this.#$=$,this.raw=$.raw,this.url=$.url?new URL($.url):null,this.protocol=$.protocol??null}send($,Z){this.#$.send($,Z??{})}raw;binaryType="arraybuffer";get readyState(){return this.#$.readyState}url;protocol;close($,Z){this.#$.close($,Z)}},UY8=($)=>{return(...Z)=>{if(typeof Z[0]==="function"){let[Q,X]=Z;return async function(J,G){let K=await Q(J),W=await $(J,K,X);if(W)return W;await G()}}else{let[Q,X,Y]=Z;return(async()=>{let J=await $(Q,X,Y);if(!J)throw Error("Failed to upgrade WebSocket");return J})()}}};var NY8=()=>{};var Q80=($)=>("server"in $.env)?$.env.server:$.env;var NS0=()=>{};var Cu6;var BY8=D(()=>{NY8();NS0();Cu6=UY8(($,Z)=>{let Q=Q80($);if(!Q)throw TypeError("env has to include the 2nd argument of fetch.");if(Q.upgrade($.req.raw,{data:{events:Z,url:new URL($.req.url),protocol:$.req.url}}))return new Response(null);return})});var TD1=($)=>{let Z=Q80($);if(!Z)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof Z.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let Q=Z.requestIP($.req.raw);if(!Q)return{remote:{}};return{remote:{address:Q.address,addressType:Q.family==="IPv6"||Q.family==="IPv4"?Q.family:void 0,port:Q.port}}};var OY8=D(()=>{NS0()});var DY8=D(()=>{QY8();FY8();BY8();OY8();NS0()});var LY8;var wY8=D(()=>{LY8={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/decocms/e02ce92e-6684-41a6-acfc-432977eb4878/github.png"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});function jY8(){let $=Object.keys(Y4.socialProviders??{}),Z=$.length>0,Q=$.map((Y)=>({name:Y,icon:LY8[Y].icon})),X=k0().localMode;return{emailAndPassword:{enabled:Y4.emailAndPassword?.enabled??!1},magicLink:{enabled:Y4.magicLinkConfig?.enabled??!1},emailOtp:{enabled:Y4.emailOtpConfig?.enabled??!1},resetPassword:{enabled:ak0},socialProviders:{enabled:Z,providers:Q},sso:Y4.ssoConfig?{enabled:!0,providerId:Y4.ssoConfig.providerId}:{enabled:!1},stdioEnabled:X,localMode:GB()}}async function _u6($,Z,Q){try{if(!Y4.inviteEmailProviderId||!Y4.emailProviders||Y4.emailProviders.length===0)return;let X=mK(Y4.emailProviders,Y4.inviteEmailProviderId);if(!X)return;let Y=await $.selectFrom("member").innerJoin("user","user.id","member.userId").select(["user.email as email","member.role as role"]).where("member.organizationId","=",Z.id).execute(),J=qt,G=Y.filter((H)=>(H.role??"").split(",").map((F)=>F.trim()).some((F)=>J.includes(F)));if(G.length===0)return;let K=lK(X),W=`${c5()}/${Z.slug}/settings/members`;await Promise.allSettled(G.map((H)=>K({to:H.email,subject:`New request to join ${Z.name}`,html:dK({preheader:`${Q} requested to join ${Z.name}.`,heading:"New join request",subheading:`<strong>${Q}</strong> requested to join <strong>${Z.name}</strong> on deco Studio.`,body:tz("Review request",W),footnote:"You can approve or deny this request from your members settings."})})))}catch(X){console.error("[Auth] Failed to notify admins of join request:",X)}}var vB,EY8;var RD1=D(()=>{d$();DY8();l4();A$();cJ();wQ();MO1();e61();tk0();au();zX();k5();b$1();wY8();ex();Yh();vB=new Y1;vB.post("/local-session",async($)=>{if(!GB())return $.json({success:!1,error:"Local mode is not active"},403);let Z;try{Z=TD1($).remote.address}catch{}if(!(Z==="127.0.0.1"||Z==="::1"||Z==="::ffff:127.0.0.1"))return $.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:X}=await Promise.resolve().then(() => (ex(),kR0));await X();let{auth:Y}=await Promise.resolve().then(() => (cJ(),EQ8)),J=await UJ1();if(!J)return $.json({success:!1,error:"Local admin user not found"},500);let G=await VR0();return await Y.api.signInEmail({body:{email:J.email,password:G},asResponse:!0})}catch(X){return console.error("Failed to create local session:",X),$.json({success:!1,error:X instanceof Error?X.message:"Failed to create local session"},500)}});vB.get("/my-capabilities/:slug",async($)=>{let Z=$.req.param("slug"),Q=await G8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({error:"Authentication required"},401);let X=u$().db,Y=await X.selectFrom("organization").select(["id"]).where("slug","=",Z).executeTakeFirst();if(!Y)return $.json({role:null,capabilities:{}});let G=(await X.selectFrom("member").select(["role"]).where("userId","=",Q.user.id).where("organizationId","=",Y.id).executeTakeFirst())?.role??null;if(!G)return $.json({role:null,capabilities:{}});if(TZ(G))return $.json({role:G,capabilities:H9$()});if(G==="user")return $.json({role:G,capabilities:Gs0({self:[...VY0]})});let K=await X.selectFrom("organizationRole").select(["permission"]).where("role","=",G).where("organizationId","=",Y.id).executeTakeFirst(),W={},H=K?.permission;if(typeof H==="string")try{let F=JSON.parse(H);if(F&&typeof F==="object"&&!Array.isArray(F))W=F}catch{W={}}return $.json({role:G,capabilities:Gs0(W)})});vB.get("/domain-lookup",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({found:!1,organizations:[]});let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({found:!1,organizations:[]});try{let Y=(await new fJ(u$().db).getAllByDomain(Q)).filter(nk0);if(Y.length===0)return $.json({found:!1,organizations:[]});let J=await u$().db.selectFrom("organization").select(["id","name","slug","logo","metadata"]).where("id","in",Y.map((W)=>W.organizationId)).execute(),G=new Map(J.map((W)=>[W.id,W])),K=Y.map((W)=>{let H=G.get(W.organizationId);if(!H)return null;if(XZ(H))return null;return{id:H.id,name:H.name,slug:H.slug,logo:H.logo,joinMode:W.joinMode}}).filter((W)=>W!==null);return $.json({found:K.length>0,organizations:K})}catch(X){return console.error("[Auth] Domain lookup failed:",X),$.json({success:!1,error:"Domain lookup failed"},500)}});vB.post("/domain-join",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified to join"},403);let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({success:!1,error:"Generic email domains cannot auto-join"},403);let X=await $.req.json().catch(()=>({})),Y=typeof X.organizationSlug==="string"&&X.organizationSlug.trim()?X.organizationSlug.trim():null;try{let J=u$().db,W=(await new fJ(J).getAllByDomain(Q)).filter((B)=>B.verificationStatus==="verified"&&B.joinMode==="auto");if(W.length===0)return $.json({success:!1,error:"Auto-join is not available for this domain"},403);let H=await J.selectFrom("organization").select(["id","slug","metadata"]).where("id","in",W.map((B)=>B.organizationId)).execute(),F=new Map(H.filter((B)=>!XZ(B)).map((B)=>[B.id,{id:B.id,slug:B.slug}])),U=W.flatMap((B)=>{let O=F.get(B.organizationId);return O?[O]:[]});if(U.length===0)return $.json({success:!1,error:"Auto-join is not available for this domain"},403);let N;if(Y){let B=U.find((O)=>O.slug===Y);if(!B)return $.json({success:!1,error:"This organization is not available for auto-join with your email domain."},403);N=B}else if(U.length===1)N=U[0];else return $.json({success:!1,error:"Multiple organizations match this domain. Please pick one.",requiresSelection:!0},409);try{await G8.api.addMember({body:{userId:Z.user.id,role:"user",organizationId:N.id}})}catch(B){if(!kL(B))return console.error("[Auth] Domain join addMember failed:",B),$.json({success:!1,error:"Failed to join organization"},500)}return _1.capture({distinctId:Z.user.id,event:"organization_domain_joined",groups:{organization:N.id},properties:{organization_id:N.id,organization_slug:N.slug,email_domain:Q}}),$.json({success:!0,slug:N.slug})}catch(J){return _1.captureException(J,Z.user.id),console.error("[Auth] Domain join failed:",J),$.json({success:!1,error:"Failed to join organization"},500)}});vB.post("/domain-setup",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified"},403);let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({success:!1,error:"Corporate email required"},403);let X=await $.req.json().catch(()=>({})),Y=typeof X.name==="string"&&X.name.trim().length>0?X.name.trim():null,J=typeof X.logo==="string"&&X.logo.length>0?X.logo:null,G=X.claimDomain!==!1;try{let K=u$().db,W=new fJ(K),H=await W.getAllByDomain(Q);if(H.length>0){let z=await K.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.slug"]).where("member.userId","=",Z.user.id).where("member.organizationId","in",H.map((P)=>P.organizationId)).executeTakeFirst();if(z)return $.json({success:!0,slug:z.slug,alreadyExists:!0})}let F=Q.split(".")[0]??Q,U=Y??F.charAt(0).toUpperCase()+F.slice(1),N=(Y??F).toLowerCase().trim().replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")||F.toLowerCase().replace(/[^a-z0-9-]/g,""),B=null;for(let P=0;P<3;P++){let A=P===0?"":`-${Math.random().toString(36).slice(2,6)}`,I=P===0?U:`${U}${A}`,V=`${N}${A}`;try{B=await G8.api.createOrganization({body:{name:I,slug:V,userId:Z.user.id}});break}catch(q){if(!(q instanceof Error&&("body"in q)&&q.body?.code==="ORGANIZATION_ALREADY_EXISTS")||P===2)throw q}}if(!B?.id)throw Error("Failed to create organization");let O=B.id;if(G)await W.add(O,Q,{joinMode:"auto",verificationStatus:"verified",verificationMethod:"email"});let L=!1,w=null,j=null;try{let z=k0().firecrawlApiKey;if(z){let P=await BW0(Q,z,U);if(P){let A=new Sr(u$().db),I=await A.create(O,P);if(await A.setDefault(I.id,O),L=!0,P.name&&P.name!==U)w=P.name;j=P.favicon??P.logo??null}}}catch(z){console.error("[Auth] Brand extraction failed (non-fatal):",z)}let E={};if(!Y&&w)E.name=w;if(J)E.logo=J;else if(j)E.logo=j;if(Object.keys(E).length>0)try{await G8.api.updateOrganization({headers:$.req.raw.headers,body:{organizationId:O,data:E}})}catch(z){console.error("[Auth] Org update failed (non-fatal):",z)}return _1.identify({distinctId:Z.user.id,properties:{email:Z.user.email,$set:{email:Z.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),_1.groupIdentify({groupType:"organization",groupKey:O,properties:{name:B.slug??N,slug:B.slug??N,email_domain:Q,brand_extracted:L,created_at:new Date().toISOString()}}),_1.capture({distinctId:Z.user.id,event:"organization_created",groups:{organization:O},properties:{organization_id:O,organization_slug:B.slug??N,email_domain:Q,brand_extracted:L}}),$.json({success:!0,slug:B.slug??N,brandExtracted:L})}catch(K){return _1.captureException(K,Z.user?.id),console.error("[Auth] Domain setup failed:",K),$.json({success:!1,error:"Failed to set up organization"},500)}});vB.get("/org-access-status/:slug",async($)=>{let Z=$.req.param("slug"),Q=await G8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({success:!1,error:"Authentication required"},401);let X=u$().db,Y=await X.selectFrom("organization").select(["id","name","slug","logo"]).where("slug","=",Z).executeTakeFirst();if(!Y)return $.json({status:"not-found"});let J={id:Y.id,name:Y.name,slug:Y.slug,logo:Y.logo};if(await X.selectFrom("member").select(["id"]).where("userId","=",Q.user.id).where("organizationId","=",Y.id).executeTakeFirst())return $.json({status:"member",organization:J});try{let K=await G8.api.listUserInvitations({headers:$.req.raw.headers}),W=Date.now(),H=K.find((F)=>F.organizationId===Y.id&&F.status==="pending"&&new Date(F.expiresAt).getTime()>W);if(H)return $.json({status:"pending-invite",invitation:{id:H.id},organization:J})}catch(K){console.error("[Auth] listUserInvitations failed:",K)}if(Q.user.emailVerified){let K=Q.user.email?.split("@")[1]?.toLowerCase();if(K&&!aK.has(K)){let W=await new fJ(X).getByOrgAndDomain(Y.id,K);if(W?.verificationStatus==="verified"){if(W.joinMode==="auto")return $.json({status:"auto-domain-join",organization:{...J,domain:K}});if(W.joinMode==="request"){let H=await new gu(X).getPending(Y.id,Q.user.id);return $.json({status:H?"request-pending":"can-request",organization:{...J,domain:K}})}}}}return $.json({status:"no-access",organization:J})});vB.post("/domain-request-join",async($)=>{let Z=await G8.api.getSession({headers:$.req.raw.headers});if(!Z?.user)return $.json({success:!1,error:"Authentication required"},401);if(!Z.user.emailVerified)return $.json({success:!1,error:"Email must be verified to request access"},403);let Q=Z.user.email?.split("@")[1]?.toLowerCase();if(!Q||aK.has(Q))return $.json({success:!1,error:"Generic email domains cannot request access"},403);let X=await $.req.json().catch(()=>({})),Y=typeof X.organizationSlug==="string"&&X.organizationSlug.trim()?X.organizationSlug.trim():null;if(!Y)return $.json({success:!1,error:"organizationSlug is required"},400);try{let J=u$().db,G=await J.selectFrom("organization").select(["id","slug","name"]).where("slug","=",Y).executeTakeFirst();if(!G)return $.json({success:!1,error:"Organization not found"},404);let K=await new fJ(J).getByOrgAndDomain(G.id,Q);if(!K||K.verificationStatus!=="verified"||K.joinMode!=="request")return $.json({success:!1,error:"This organization is not accepting requests for your domain."},403);if(await J.selectFrom("member").select(["id"]).where("userId","=",Z.user.id).where("organizationId","=",G.id).executeTakeFirst())return $.json({success:!0,slug:G.slug,alreadyMember:!0});return await new gu(J).create(G.id,Z.user.id),await _u6(J,G,Z.user.email),_1.capture({distinctId:Z.user.id,event:"organization_join_requested",groups:{organization:G.id},properties:{organization_id:G.id,organization_slug:G.slug,email_domain:Q}}),$.json({success:!0,status:"pending"})}catch(J){return _1.captureException(J,Z.user.id),console.error("[Auth] Domain request-join failed:",J),$.json({success:!1,error:"Failed to request access"},500)}});vB.post("/ensure-organization",async($)=>{let Z=null;try{if(Z=await G8.api.getSession({headers:$.req.raw.headers}),!Z?.user)return $.json({success:!1,error:"Authentication required"},401);let Q=await ok0({db:u$().db,authApi:G8.api,user:{id:Z.user.id,email:Z.user.email,name:Z.user.name??null,emailVerified:!!Z.user.emailVerified},allowCreate:!0,createdVia:"commerce_onboarding_recovery"});if(Q.status==="ambiguous")return $.json({success:!1,status:Q.status,domain:Q.domain,organizations:Q.organizations});if(Q.status==="skipped")return $.json({success:!1,status:Q.status,reason:Q.reason,domain:Q.domain,error:"Organization creation is not available."},409);if(Q.status==="already_has_organization")return $.json({success:!0,status:Q.status,organization:Q.organization,domain:Q.domain});return $.json({success:!0,status:Q.status,organization:Q.organization,domain:Q.domain})}catch(Q){let X=Z?.user?.id;if(X)_1.captureException(Q,X);return console.error("[Auth] ensure organization failed:",Q),$.json({success:!1,error:"Failed to ensure organization"},500)}});EY8=vB});import{createHmac as vu6}from"crypto";function zY8($){return/^Bearer\s+(.+)$/i.exec($.get("authorization")??"")?.[1]?.trim()||null}function PY8($){if(!$||typeof $!=="object"||!("userId"in $)||typeof $.userId!=="string")return null;return $.userId}function xu6($){if(!$||typeof $!=="object"||!("user"in $))return null;let{user:Z}=$;if(!Z||typeof Z!=="object"||!("id"in Z)||typeof Z.id!=="string")return null;return Z.id}function fu6($){if(!$||typeof $!=="object"||!("valid"in $)||$.valid!==!0||!("key"in $))return null;return PY8($.key)}async function AY8($){let Z=new Headers({authorization:`Bearer ${$}`,"X-MCP-Session-Auth":"true"}),Q=await G8.api.getMcpSession({headers:Z}).catch(()=>null),X=PY8(Q);if(X)return X;let Y=await G8.api.verifyApiKey({body:{key:$}}).catch(()=>null);return fu6(Y)}function bu6($,Z){let Q=vu6("sha256",Z).update($).digest("base64");return encodeURIComponent(`${$}.${Q}`)}var ID1,TY8;var RY8=D(()=>{d$();cJ();ID1=new Y1;ID1.get("/me",async($)=>{let Z=zY8($.req.raw.headers),Q;if(Z)Q=await AY8(Z);else{let X=await G8.api.getSession({headers:$.req.raw.headers}).catch(()=>null);Q=xu6(X)}if(!Q)return $.json({error:"unauthorized"},401);return $.json({userId:Q})});ID1.post("/session-from-oauth",async($)=>{let Z=zY8($.req.raw.headers);if(!Z)return $.json({error:"unauthorized"},401);let Q=await AY8(Z);if(!Q)return $.json({error:"unauthorized"},401);try{let X=await G8.$context,Y=await X.internalAdapter.createSession(Q,!1),J=bu6(Y.token,X.secret);return $.json({sessionToken:J})}catch(X){return console.error("[desktop-auth] failed to mint a session from an OAuth bearer:",X instanceof Error?X.message:String(X)),$.json({error:"failed to mint a session"},500)}});TY8=ID1});var qd=($)=>{let Z=$.req.header("sec-fetch-dest");if(Z!==void 0)return Z==="document";let Q=$.req.header("accept")??"";return Q.includes("text/html")&&!/text\/html\s*;\s*q\s*=\s*0/.test(Q)};function yu6($){let Z=$.req.path;return $.req.method==="GET"&&/\/fs\/[^/]+\/read$/.test(Z)||$.req.method==="POST"&&/\/fs\/[^/]+\/unlock$/.test(Z)}function qD1($){let Z=$.auth?.apiKey?.metadata;if(!Z||typeof Z!=="object"||Array.isArray(Z)||!("organization"in Z))return{present:!1};let Q=Z.organization;if(!Q||typeof Q!=="object"||Array.isArray(Q))return{present:!0};let X=Q.id;return{present:!0,id:typeof X==="string"?X:void 0}}function hu6($){let Z=$.split("/").filter(Boolean);if(Z[0]!=="api")return!1;let Q=Z.slice(2);return gu6.some((X)=>X.length===Q.length&&X.every((Y,J)=>Y==="*"||Y===Q[J]))}var gu6,Db=async($,Z)=>{let Q=$.req.param("org");if(!Q)return $.json({error:"org slug missing in path"},400);let X=$.get("studioContext");if(!X?.db)return $.json({error:"studioContext not initialized"},500);let Y=X.db,J=hu6($.req.path),G=await Y.selectFrom("organization").select(["id","slug","name","metadata"]).where((F)=>J?F.or([F("slug","=",Q),F("id","=",Q)]):F("slug","=",Q)).executeTakeFirst();if(!G){if(qd($))return $.redirect(`/${encodeURIComponent(Q)}`,302);return $.json({error:`organization "${Q}" not found`},404)}let K=qD1(X);if(X.auth?.apiKey?.id&&K.present&&K.id!==G.id)return $.json({error:"forbidden: API key is scoped to another organization"},403);if(X.auth?.tokenOrganizationId&&X.auth.tokenOrganizationId!==G.id)return $.json({error:"forbidden: token is scoped to another organization"},403);if(XZ(G)){if(qd($))return $.redirect(`/${encodeURIComponent(Q)}`,302);return $.json({error:`organization "${Q}" not found`},404)}let W=X.auth?.user?.id,H;if(W){let F=await Y.selectFrom("member").select(["role"]).where("userId","=",W).where("organizationId","=",G.id).executeTakeFirst();if(!F){if(!yu6($)){if(qd($))return $.redirect(`/${encodeURIComponent(G.slug)}`,302);return $.json({error:"forbidden: not a member of organization"},403)}}else H=F.role}return X.organization={id:G.id,slug:G.slug,name:G.name,role:H},X.access.setOrganizationId(G.id),X.access.setRole(H),Rw(X,G),await Z()};var BS0=D(()=>{JB();gu6=[["vault","connections","*","access-token"],["vault","connections","*","configuration"],["internal","task-board","import"],["internal","commerce-diagnostic","share-invite"]]});function uu6($){if(IQ($.id)!==null)return!0;if(xJ$($.id))return!0;let Z=$.metadata?.liveAgentId;return typeof Z==="string"&&Z.length>0}function cu6($,Z){let Q=new Map,X=(Y)=>{let J=Q.get(Y);if(J)return J;let G=(async()=>{if(!(await $.storage.orgSsoConfig.getByOrgId(Y))?.enforced)return!0;return await $.storage.orgSsoSessions.isValid(Z,Y)})();return Q.set(Y,G),G};return async(Y)=>{let J=await Promise.all(Y.map((G)=>X(G.orgId)));return Y.filter((G,K)=>J[K]===!0)}}function lu6($){let Z=$.auth?.apiKey?.id?qD1($):{present:!1,id:void 0};if(Z.present&&!Z.id)return OS0;let Q=$.auth?.tokenOrganizationId;if(Z.id&&Q&&Z.id!==Q)return OS0;let X=Z.id??Q??null;if(X===null&&$.auth?.apiKey?.id)return OS0;return X}var IY8="/api/_me",OS0,mu6=256,du6=20,iu6=50,pu6=10,nu6=5,qY8=()=>{let $=new Y1;return $.get("/projects/search",async(Z)=>{let Q=Z.get("studioContext");Z.header("Cache-Control","private, no-store");let X=o0(Q);if(!X)return Z.json({error:"Unauthorized"},401);let Y=lu6(Q);if(Y===OS0)return Z.json({error:"forbidden: credential is scoped to another organization"},403);let J=(Z.req.query("q")??"").trim();if(!J)return Z.json({items:[]});if(J.length>mu6)return Z.json({error:"query too long"},400);let G=Number.parseInt(Z.req.query("limit")??"",10),K=Number.isFinite(G)&&G>0?Math.min(G,iu6):du6,W=cu6(Q,X),H=K+pu6,F=[];for(let U=0;U<nu6&&F.length<K;U++){let N=await Q.storage.virtualMcps.searchAcrossMemberships({userId:X,term:J,limit:H,offset:U*H,organizationId:Y}),B=N.filter((O)=>!uu6(O)).filter((O)=>!XZ({metadata:O.organization_metadata})).map((O)=>({id:O.id,title:O.title,icon:O.icon,orgId:O.organization_id,orgName:O.organization_name,orgSlug:O.organization_slug}));if(F.push(...await W(B)),N.length<H)break}return Z.json({items:F.slice(0,K)})}),$};var MY8=D(()=>{d$();v8();BS0();OS0=Symbol("deny")});import{z as Md}from"zod";var tu6,ou6,ru6=200,au6=2000,su6=60,eu6=2000,$c6,VY8;var kY8=D(()=>{tu6=["warn","block"],ou6=Md.enum(tu6),$c6=Md.string().max(eu6).refine(($)=>{try{let Z=new URL($);return Z.protocol==="https:"||Z.protocol==="http:"}catch{return!1}},{message:"ctaUrl must be an absolute http(s) URL"}),VY8=Md.object({severity:ou6,title:Md.string().trim().min(1).max(ru6),message:Md.string().trim().min(1).max(au6),ctaLabel:Md.string().trim().max(su6).nullable().optional(),ctaUrl:$c6.nullable().optional()}).refine(($)=>!$.ctaLabel===!$.ctaUrl,{message:"ctaLabel and ctaUrl must be set together",path:["ctaUrl"]})});import{z as MD1}from"zod";function VD1($){let Z=$??{},Q=new Set([...Object.keys(AP.shape),...Object.keys(Z)]),X={};for(let Y of Q)X[Y]=xX(Z,Y);return{flags:Z,effective:X}}var Zc6,SY8;var CY8=D(()=>{YZ();Zc6=MD1.string().min(1).max(64).regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/),SY8=MD1.record(Zc6,MD1.boolean())});function _Y8($,Z,Q){let X=Q;for(;;){if(X=$.indexOf(Z,X),X===-1)return-1;let Y=$[X+Z.length];if(Y===void 0||Y===`
4547
4547
  `||Y==="\r")return X;X+=Z.length}}function vY8($,Z){let Q=_Y8($,Qc6(Z),0);if(Q===-1)return null;let X=$.indexOf(`
4548
4548
  `,Q);if(X===-1)return null;let Y=_Y8($,Xc6(Z),X);if(Y===-1)return null;let J=$.lastIndexOf(`
4549
4549
  `,Y);return{from:X+1,to:J+1}}function xY8($,Z){let Q=vY8($,Z);return Q?$.slice(Q.from,Q.to):null}function fY8($,Z,Q){let X=vY8($,Z);if(!X)throw Error(`prompt region "${Z}" not found in source`);let Y=Q.endsWith(`