decocms 4.400.5 → 4.401.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/client/assets/{AlertCircle-DAwsTYRk.js → AlertCircle-D1gV07Oe.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CY-F46Be.js → AreaChart-lv4gftWl.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-tvLjkuWF.js → ArrowLeft-Bpb3sor7.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-z0a_5OhC.js → ArrowRight-BFyYdKNd.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-Lg4NvWzc.js → ArrowUp-COLR6KTW.js} +1 -1
  6. package/dist/client/assets/{CartesianChart-BoMqHHQt.js → CartesianChart-CJGGumCB.js} +1 -1
  7. package/dist/client/assets/{Check-BQZy9c_F.js → Check-C-Vn17o5.js} +1 -1
  8. package/dist/client/assets/{CheckCircle-Czw2y_F3.js → CheckCircle-CyKBJceB.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-BYljQT_d.js → ChevronUp-Dto8qCq2.js} +1 -1
  10. package/dist/client/assets/{Copy01-6I1_Aion.js → Copy01-B2GuMU9Q.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-DargNaAR.js → CreditCard01-CoMSE38C.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-CN_Dg-j8.js → DotsVertical-R1tuLE9v.js} +1 -1
  13. package/dist/client/assets/{ErrorBarContext-BT3n9Mmx.js → ErrorBarContext-viPSAyu4.js} +1 -1
  14. package/dist/client/assets/{Eye-B4QzGCZN.js → Eye-BhTmzCKr.js} +1 -1
  15. package/dist/client/assets/{Globe04-CXTO7_iP.js → Globe04-BLoVxWaz.js} +1 -1
  16. package/dist/client/assets/{Image01-9AXWgviq.js → Image01-D02_x5mu.js} +1 -1
  17. package/dist/client/assets/{Key01-DFgwFBUs.js → Key01-BuudAO_W.js} +1 -1
  18. package/dist/client/assets/{LayoutLeft-SQ7j1egP.js → LayoutLeft-CuG2yJZR.js} +1 -1
  19. package/dist/client/assets/{Line-_W3oVo8E.js → Line-CsKmpStn.js} +1 -1
  20. package/dist/client/assets/{Link01-V3TqRs3C.js → Link01-CVUd8ZSz.js} +1 -1
  21. package/dist/client/assets/{LinkExternal01-CPO90J3S.js → LinkExternal01-Bo5cppL4.js} +1 -1
  22. package/dist/client/assets/{Monitor01-C9DSVDfs.js → Monitor01-Cj93oSbT.js} +1 -1
  23. package/dist/client/assets/{Palette-D0rqSgjT.js → Palette-CEa7GqA9.js} +1 -1
  24. package/dist/client/assets/{Plus-BU--LXol.js → Plus-Ch1uJBgh.js} +1 -1
  25. package/dist/client/assets/{SearchMd-BpFEap-1.js → SearchMd-B_MXZ22A.js} +1 -1
  26. package/dist/client/assets/{Sector-uvc125JQ.js → Sector-CNfzRqjQ.js} +1 -1
  27. package/dist/client/assets/{Share07-B29GBkjP.js → Share07-D6XgmppM.js} +1 -1
  28. package/dist/client/assets/{Sun-t-nvniXl.js → Sun-Dy_rDhHe.js} +1 -1
  29. package/dist/client/assets/{Tool01-B8crh1aV.js → Tool01-BoO1X0ZH.js} +1 -1
  30. package/dist/client/assets/{Trash01-DdWmWubI.js → Trash01-D4CwdSy9.js} +1 -1
  31. package/dist/client/assets/{Upload01-CsQlMBfP.js → Upload01-hQyKBWZL.js} +1 -1
  32. package/dist/client/assets/{User01-B4ccibs0.js → User01-gmEyKvLo.js} +1 -1
  33. package/dist/client/assets/{UserSquare-CAO2KcuZ.js → UserSquare-DXqYCX9F.js} +1 -1
  34. package/dist/client/assets/{Users01-D4csSmiF.js → Users01-BBb4-Wbt.js} +1 -1
  35. package/dist/client/assets/{X-lSFSs7wx.js → X-CEngH8b7.js} +1 -1
  36. package/dist/client/assets/{XClose-BEOYWQzz.js → XClose-Dvx_qcsQ.js} +1 -1
  37. package/dist/client/assets/{Zap-BZmnDtce.js → Zap-DkS3ccHw.js} +1 -1
  38. package/dist/client/assets/{ZoomOut-DwQzEWYf.js → ZoomOut-D3wne5dx.js} +1 -1
  39. package/dist/client/assets/{access-gate-CeyEk8D6.js → access-gate-D2mi3EXZ.js} +1 -1
  40. package/dist/client/assets/{add-connection-dialog-BwKHIeY0.js → add-connection-dialog-mm-WrmAR.js} +1 -1
  41. package/dist/client/assets/agent-analytics-IX3kP91L.js +2 -0
  42. package/dist/client/assets/agent-app-CliE0mM3.js +1 -0
  43. package/dist/client/assets/agent-assets-BbU_YrcZ.js +1 -0
  44. package/dist/client/assets/agent-automation-v13d06rk.js +20 -0
  45. package/dist/client/assets/agent-automations-yzTI8Hoc.js +1 -0
  46. package/dist/client/assets/agent-connect-sources-CEF4jbih.js +1 -0
  47. package/dist/client/assets/agent-deck-rRdXFIQU.js +1 -0
  48. package/dist/client/assets/agent-e2e-SKpj9Qv7.js +1 -0
  49. package/dist/client/assets/agent-experiments-DPD7MHX9.js +1 -0
  50. package/dist/client/assets/agent-file-CBIwfV0H.js +1 -0
  51. package/dist/client/assets/{agent-git-Dm-Aa993.js → agent-git-N-SzMySX.js} +2 -2
  52. package/dist/client/assets/agent-hosting-BnzsqBpZ.js +1 -0
  53. package/dist/client/assets/{agent-icon-Uyip_c6M.js → agent-icon-CjNFk4Bw.js} +1 -1
  54. package/dist/client/assets/agent-library-file-DHUyHSwO.js +1 -0
  55. package/dist/client/assets/agent-monitor-BeURekaz.js +1 -0
  56. package/dist/client/assets/agent-overview-By923wES.js +1 -0
  57. package/dist/client/assets/agent-settings-DiYW6DT3.js +1 -0
  58. package/dist/client/assets/{agent-site-editor-CisoB_8z.js → agent-site-editor-B7WR4KwZ.js} +13 -13
  59. package/dist/client/assets/agent-site-editor-code-A3lMFnBk.js +2 -0
  60. package/dist/client/assets/agent-site-editor-content-CTyxs9-E.js +9 -0
  61. package/dist/client/assets/agent-site-editor-preview-Db1buU8G.js +518 -0
  62. package/dist/client/assets/agent-view-Ct7YMMW7.js +1 -0
  63. package/dist/client/assets/{agent-view-guard-CW2E0Nya.js → agent-view-guard-BpwecHVM.js} +1 -1
  64. package/dist/client/assets/agents-list-XIrdiWMz.js +1 -0
  65. package/dist/client/assets/{ai-providers-aALsTmcr.js → ai-providers-CsYNRATt.js} +2 -2
  66. package/dist/client/assets/{alert-Cj3mDHfa.js → alert-BYraKSPm.js} +1 -1
  67. package/dist/client/assets/{alert-dialog-ScZSd_g9.js → alert-dialog-DpzgB-Ls.js} +1 -1
  68. package/dist/client/assets/analytics-sections-C2rbPWDv.js +1 -0
  69. package/dist/client/assets/api-keys-B9Lt-UrM.js +1 -0
  70. package/dist/client/assets/api-keys-CzlAuC7_.js +1 -0
  71. package/dist/client/assets/app-editor-tD7rn_1-.js +1 -0
  72. package/dist/client/assets/{asset-utils-zuPagV4t.js → asset-utils-4p52RC3c.js} +1 -1
  73. package/dist/client/assets/{auth-IJXSFSKo.js → auth-Dafjkfpj.js} +1 -1
  74. package/dist/client/assets/{auth-catchall-_ZlrnKe5.js → auth-catchall-DD401U-a.js} +1 -1
  75. package/dist/client/assets/auth-entry-CEr7Y2wf.js +1 -0
  76. package/dist/client/assets/{auth-split-layout-RzXa3xC3.js → auth-split-layout-DLRovWby.js} +1 -1
  77. package/dist/client/assets/{authenticate-and-persist-oauth-2rXUqvh1.js → authenticate-and-persist-oauth-DIl2N_8B.js} +1 -1
  78. package/dist/client/assets/{automation-list-row-DXlvb1Ba.js → automation-list-row-ueTfZfDa.js} +1 -1
  79. package/dist/client/assets/{automation-runs-bP6fMSYg.js → automation-runs-iTxxsepZ.js} +1 -1
  80. package/dist/client/assets/{automations-Cc87rLF5.js → automations-Cad12Ows.js} +1 -1
  81. package/dist/client/assets/{autosend-n3O0UdBS.js → autosend-DeYn5nkP.js} +1 -1
  82. package/dist/client/assets/{avatar-BdlFnSU8.js → avatar-B6HmPhM4.js} +1 -1
  83. package/dist/client/assets/{badge-Bhd7Yjxv.js → badge-4kURMy-V.js} +1 -1
  84. package/dist/client/assets/block-document-CgGOvOyl.js +3 -0
  85. package/dist/client/assets/{blocks-preview-workspace-context-CPHwvzb5.js → blocks-preview-workspace-context-Bm8P7H4k.js} +1 -1
  86. package/dist/client/assets/{buckets-D8dvVOSB.js → buckets-CK1WY8Rz.js} +1 -1
  87. package/dist/client/assets/{build-improve-prompt-doc-B6eWxg8K.js → build-improve-prompt-doc-BYdufdhy.js} +1 -1
  88. package/dist/client/assets/{calendar-BBDqyYcl.js → calendar-CZsGTekl.js} +1 -1
  89. package/dist/client/assets/{capability-load-error-DtKGgHck.js → capability-load-error-CaE4aliY.js} +1 -1
  90. package/dist/client/assets/{use-org-repo-syncs-DhQYfFtK.js → cards-DaNm0Rmg.js} +3 -3
  91. package/dist/client/assets/category-editor-CyFQk1RV.js +1 -0
  92. package/dist/client/assets/{chart-E7ehfHUF.js → chart-_YADtzsN.js} +1 -1
  93. package/dist/client/assets/{chat-context-SUJKu-XN.js → chat-context-v9O7Tar9.js} +5 -5
  94. package/dist/client/assets/{chat-draft-D9u5CYEW.js → chat-draft-BSL5UQWs.js} +1 -1
  95. package/dist/client/assets/{checkbox-CC9zkEff.js → checkbox-BMxilLAm.js} +1 -1
  96. package/dist/client/assets/{choose-editor-B5Rx7Zk5.js → choose-editor-TgQWBIvA.js} +1 -1
  97. package/dist/client/assets/{claim-phase-copy-Chi823Vj.js → claim-phase-copy-DHsomph6.js} +1 -1
  98. package/dist/client/assets/{cli-auth-success-QqvzIrWg.js → cli-auth-success-Bsu7TVxL.js} +1 -1
  99. package/dist/client/assets/{client-icons-CPgcSrwC.js → client-icons-PiLBRjl7.js} +1 -1
  100. package/dist/client/assets/{collapsible-CMMGBTfa.js → collapsible-bc19817o.js} +1 -1
  101. package/dist/client/assets/collection-detail-DpwCwzTH.js +1 -0
  102. package/dist/client/assets/{collection-display-button-c-WnLfEk.js → collection-display-button-BBRywDRf.js} +1 -1
  103. package/dist/client/assets/{collection-search-3XS3AdJ3.js → collection-search-kj64tBFw.js} +1 -1
  104. package/dist/client/assets/{collection-table-wrapper-DhxAGzgU.js → collection-table-wrapper-D2tmoW8T.js} +1 -1
  105. package/dist/client/assets/collection-tabs-DCLfzEOA.js +1 -0
  106. package/dist/client/assets/{combobox-q-ECrVO-.js → combobox-DlQnH8_N.js} +1 -1
  107. package/dist/client/assets/command-vKgGCoFF.js +1 -0
  108. package/dist/client/assets/{companion-mcps-section-DQRFd5L_.js → companion-mcps-section-Dpcawwvl.js} +1 -1
  109. package/dist/client/assets/connect-Dick3000.js +8 -0
  110. package/dist/client/assets/{connect-layout-DtbA5xEp.js → connect-layout-BfLs3zCI.js} +1 -1
  111. package/dist/client/assets/{connection-D_fwf_le.js → connection-CTAV5crm.js} +1 -1
  112. package/dist/client/assets/{connection-card-wq7ff65-.js → connection-card-DXWUKoxP.js} +1 -1
  113. package/dist/client/assets/connection-detail-BsIDB4zB.js +1 -0
  114. package/dist/client/assets/{connection-form-helpers-D8LXn1d-.js → connection-form-helpers-BrejHCrx.js} +1 -1
  115. package/dist/client/assets/connections-dBKfZKZY.js +1 -0
  116. package/dist/client/assets/{context-B092rba-.js → context-VbsY_yj4.js} +1 -1
  117. package/dist/client/assets/{create-organization-dialog-CyGYpJhs.js → create-organization-dialog-BCpMYw7e.js} +1 -1
  118. package/dist/client/assets/{decofile-api-BQi9jV2r.js → decofile-api-5Nr0-h_v.js} +1 -1
  119. package/dist/client/assets/{decopilot-D9YGMtj1.js → decopilot-DlmPNMn_.js} +2 -2
  120. package/dist/client/assets/dialog-CEiE0rPQ.js +1 -0
  121. package/dist/client/assets/discover-BvxkrONV.js +1 -0
  122. package/dist/client/assets/{domain-settings-BaQvjI4O.js → domain-settings-D1tynvCC.js} +1 -1
  123. package/dist/client/assets/{download-app-dialog-hSU8H3Vj.js → download-app-dialog-fmWolHKD.js} +1 -1
  124. package/dist/client/assets/{drawer-DeP9v70y.js → drawer-mNZA6mOf.js} +1 -1
  125. package/dist/client/assets/{editor-B7C6vwjS.js → editor-BGAJHie_.js} +1 -1
  126. package/dist/client/assets/{empty-state-CaK4RTlm.js → empty-state-BJxP56xq.js} +1 -1
  127. package/dist/client/assets/{empty-state-Bd7rwiDP.js → empty-state-BgjUu2bT.js} +1 -1
  128. package/dist/client/assets/{extract-connection-data-v71aWs18.js → extract-connection-data-erEsLv_0.js} +1 -1
  129. package/dist/client/assets/{feature-gate-LTW2kwcy.js → feature-gate-BdRUy7K_.js} +1 -1
  130. package/dist/client/assets/{feature-paywall-1lut-OZA.js → feature-paywall-Tj9HTPlX.js} +1 -1
  131. package/dist/client/assets/{file-explorer-CaKgHoMf.js → file-explorer-0KdYuesc.js} +2 -2
  132. package/dist/client/assets/{file-preview-DK07f0Bu.js → file-preview-i5I4Vmk2.js} +1 -1
  133. package/dist/client/assets/file-share-button-FS8XJyOj.js +3 -0
  134. package/dist/client/assets/{file-type-icon-BV5PHbD1.js → file-type-icon-Cv10yXI0.js} +1 -1
  135. package/dist/client/assets/{folder-icon-1-1m6gFV.js → folder-icon-DJuQAXN-.js} +1 -1
  136. package/dist/client/assets/{form-BT-p7abF.js → form-CCT2OtgN.js} +1 -1
  137. package/dist/client/assets/{gateway-client-Bunqz-v_.js → gateway-client-hbsOo-al.js} +1 -1
  138. package/dist/client/assets/{general-fOjVxBHu.js → general-B_HDEt1Q.js} +1 -1
  139. package/dist/client/assets/{github-icon-B7EzOW44.js → github-icon-BpCOzzV8.js} +1 -1
  140. package/dist/client/assets/home-CMRSzFNz.js +1 -0
  141. package/dist/client/assets/{hooks-ZDl1T3YR.js → hooks-CcmbiBeQ.js} +4 -4
  142. package/dist/client/assets/{icon-button-CH4FIKTp.js → icon-button-B8KzCtPE.js} +1 -1
  143. package/dist/client/assets/index-BeJdXzSv.css +1 -0
  144. package/dist/client/assets/{index-DGrB0yWK.js → index-BpvXUNGE.js} +27 -27
  145. package/dist/client/assets/index-BsLVRPrU.js +26 -0
  146. package/dist/client/assets/{index-C6jf5hj5.js → index-CDe2yrwT.js} +1 -1
  147. package/dist/client/assets/index-CGxhGPsv.js +5 -0
  148. package/dist/client/assets/{index-Cbxez_uk.js → index-CKZ6XrRd.js} +1 -1
  149. package/dist/client/assets/{index--xKIMIg3.js → index-CWksyNR9.js} +1 -1
  150. package/dist/client/assets/{index-4aLH0qvl.js → index-ClooW3Im.js} +1 -1
  151. package/dist/client/assets/{index-C_kk8c78.js → index-DVgj8U7g.js} +1 -1
  152. package/dist/client/assets/index-D_lD_4br.js +1 -0
  153. package/dist/client/assets/{index-Ck4x2-t2.js → index-De5sr9zh.js} +44 -44
  154. package/dist/client/assets/{index-Bg7kKf4r.js → index-Kwx27vNK.js} +1 -1
  155. package/dist/client/assets/index-bMw4G7-h.js +1 -0
  156. package/dist/client/assets/{index-Om_Krpb0.js → index-gldwodyc.js} +1 -1
  157. package/dist/client/assets/{index-nUsHjtAT.js → index-ldS2WUeM.js} +1 -1
  158. package/dist/client/assets/index-redirect-CfY3ykU_.js +1 -0
  159. package/dist/client/assets/{infiniteQueryObserver-DJPW5pCw.js → infiniteQueryObserver-CwgE9ndj.js} +1 -1
  160. package/dist/client/assets/{infra-billing-CHwTXFTp.js → infra-billing-TzlPUT1_.js} +1 -1
  161. package/dist/client/assets/{input-BBpmUhtR.js → input-B-DIEGoS.js} +1 -1
  162. package/dist/client/assets/{input-CsRLFWsE.js → input-CogQggtY.js} +1 -1
  163. package/dist/client/assets/input-DMbK8B2u.js +8 -0
  164. package/dist/client/assets/{integration-icon-CXxe2Nmz.js → integration-icon-CsYMgjoT.js} +1 -1
  165. package/dist/client/assets/{label-BasQfmGn.js → label-Baft7ecp.js} +1 -1
  166. package/dist/client/assets/{last-preview-page-tC_ec-8v.js → last-preview-page-DkIjQnDn.js} +1 -1
  167. package/dist/client/assets/{layout-BCBVVsx8.js → layout-CI3O4gkp.js} +1 -1
  168. package/dist/client/assets/{legacy-agents-deep-DJ3dRrzM.js → legacy-agents-deep-BvWpwcOc.js} +1 -1
  169. package/dist/client/assets/{legacy-main-redirect-C7QpzNdk.js → legacy-main-redirect-CQgWSIje.js} +1 -1
  170. package/dist/client/assets/library-CAwdTP4-.js +161 -0
  171. package/dist/client/assets/{login-BtJlygis.js → login-DJ5PeYOE.js} +1 -1
  172. package/dist/client/assets/{markdown-D9JYtNvk.js → markdown-UaZeehfy.js} +2 -2
  173. package/dist/client/assets/{mcp-app-renderer-CK8AdoIv.js → mcp-app-renderer-DVXFXjZU.js} +2 -2
  174. package/dist/client/assets/{mcp-oauth-CCvVH2OB.js → mcp-oauth-DpJ1IX9I.js} +1 -1
  175. package/dist/client/assets/members-CXM5jx_X.js +1 -0
  176. package/dist/client/assets/message-templates-54foej4h.js +1 -0
  177. package/dist/client/assets/{mini-report-page-CCQFv7lr.js → mini-report-page-B1sFW1ww.js} +1 -1
  178. package/dist/client/assets/mock-board-BbS_eZEl.js +10 -0
  179. package/dist/client/assets/{monaco-editor-CLYybS8B.js → monaco-editor-B9FUV1NZ.js} +2 -2
  180. package/dist/client/assets/{monitoring-stats-row-avCjcK0F.js → monitoring-stats-row-Cl5_OBZ5.js} +1 -1
  181. package/dist/client/assets/multi-select-VDMM47xB.js +1 -0
  182. package/dist/client/assets/{mustache-C9rsi357.js → mustache-DZ4FV0Nc.js} +1 -1
  183. package/dist/client/assets/{oauth-callback-ivL7RrDf.js → oauth-callback-OoZf3jL0.js} +1 -1
  184. package/dist/client/assets/{oauth-callback-ai-provider-DyQmwFrI.js → oauth-callback-ai-provider-foDaIFwI.js} +1 -1
  185. package/dist/client/assets/{onboarding-Bu2705eX.js → onboarding-Dq71FOpN.js} +1 -1
  186. package/dist/client/assets/{optimistic-project-sidebar-views-lIiVbcFU.js → optimistic-project-sidebar-views-CgB8Gy1s.js} +1 -1
  187. package/dist/client/assets/org-file-open-context-Mx8jC4-P.js +1 -0
  188. package/dist/client/assets/{organization-choice-Cqq6hiux.js → organization-choice-ZqNf00EY.js} +1 -1
  189. package/dist/client/assets/{orgs-DjPk91H4.js → orgs-B8y0HHqF.js} +1 -1
  190. package/dist/client/assets/page-seo-form-DPObRKD4.js +1 -0
  191. package/dist/client/assets/{pair-DW_WRb6G.js → pair-D39JYx1G.js} +5 -5
  192. package/dist/client/assets/{plan-ladder-BXJ0swZ2.js → plan-ladder-D85oNnSr.js} +1 -1
  193. package/dist/client/assets/{popover-K1ZrYG78.js → popover-DCaw39mN.js} +1 -1
  194. package/dist/client/assets/{post-calendar-2v4vqP8p.js → post-calendar-Dpixo2IP.js} +1 -1
  195. package/dist/client/assets/{post-editor-B2FiOFhN.js → post-editor-BivV74bZ.js} +1 -1
  196. package/dist/client/assets/{preview-content-CpPj1JH3.js → preview-content-ziDhpr9V.js} +1 -1
  197. package/dist/client/assets/{preview-dialog-Clu5ydVv.js → preview-dialog-DHJShsrA.js} +1 -1
  198. package/dist/client/assets/profile-C9xI3KvS.js +1 -0
  199. package/dist/client/assets/{project-app-view-1zY3x0YR.js → project-app-view-CFWAaKq_.js} +1 -1
  200. package/dist/client/assets/project-feed-D6D6bSHY.js +1 -0
  201. package/dist/client/assets/{project-icon-CjBJRgr0.js → project-icon-CXM68zVZ.js} +1 -1
  202. package/dist/client/assets/project-reports-8SYQbI2J.js +1 -0
  203. package/dist/client/assets/project-tasks-DrEyprGU.js +1 -0
  204. package/dist/client/assets/{prompts-rF3K-sXx.js → prompts-CVNAEIJB.js} +1 -1
  205. package/dist/client/assets/record-editor-CKxwz78L.js +1 -0
  206. package/dist/client/assets/{redirect-editor-C8SiyMIE.js → redirect-editor-Dy1UJRrv.js} +1 -1
  207. package/dist/client/assets/{reports-yWFVxw0Z.js → reports-BvZHk8Hk.js} +2 -2
  208. package/dist/client/assets/reports-DyvsxSR9.js +1 -0
  209. package/dist/client/assets/{reports-onboarding-N2pt6gNg.js → reports-onboarding-D4Uaui5Y.js} +1 -1
  210. package/dist/client/assets/reports-tab-CwwTWlIS.js +2 -0
  211. package/dist/client/assets/{repositories-CaSms5FF.js → repositories-CqbcdDdH.js} +1 -1
  212. package/dist/client/assets/{repository-import-picker-Kal2nH0n.js → repository-import-picker-BXQhU82J.js} +1 -1
  213. package/dist/client/assets/{repository-picker-DxgY__Tu.js → repository-picker-D1hSYB_G.js} +1 -1
  214. package/dist/client/assets/require-capability-Cab5QyjH.js +1 -0
  215. package/dist/client/assets/{required-auth-layout-BWh5q3u2.js → required-auth-layout-scRrBHKS.js} +1 -1
  216. package/dist/client/assets/{reset-password-aeaUD9hZ.js → reset-password-CDE1iX3h.js} +1 -1
  217. package/dist/client/assets/{resizable-C3GNt7qd.js → resizable-D2L182YF.js} +1 -1
  218. package/dist/client/assets/{review-settings-DTVyO-Pc.js → review-settings-B98rLFs_.js} +1 -1
  219. package/dist/client/assets/{rich-text-link-control-CWGtfixK.js → rich-text-link-control-DwRx0-0K.js} +1 -1
  220. package/dist/client/assets/roles-CZvYgdUZ.js +1 -0
  221. package/dist/client/assets/route-B9TApoqS.js +1 -0
  222. package/dist/client/assets/route-N926-QRJ.js +1 -0
  223. package/dist/client/assets/route-OKy5_TxY.js +1 -0
  224. package/dist/client/assets/route-page-header-ErgCCo2N.js +1 -0
  225. package/dist/client/assets/runnable-block-editor-C2YphDcL.js +17 -0
  226. package/dist/client/assets/{sandbox-lifecycle-context-DIc5m19C.js → sandbox-lifecycle-context-o4KKoGrI.js} +2 -2
  227. package/dist/client/assets/{schema-C2l7sv-S.js → schema-DkZUkArz.js} +1 -1
  228. package/dist/client/assets/{scroll-area-CTv9WE1l.js → scroll-area-Ca9Mo_QH.js} +1 -1
  229. package/dist/client/assets/{search-input-yrvqqqa5.js → search-input-DRWRYRPs.js} +1 -1
  230. package/dist/client/assets/{search-toggle-g6PUq9ya.js → search-toggle-B5FB44XX.js} +1 -1
  231. package/dist/client/assets/{secret-picker-BxxQ42cR.js → secret-picker-DLap6vTC.js} +1 -1
  232. package/dist/client/assets/secrets-jZp-bTCf.js +1 -0
  233. package/dist/client/assets/sections-editor-BFbkxXEt.js +1 -0
  234. package/dist/client/assets/{select-BoR29t6W.js → select-BZ6sktb7.js} +1 -1
  235. package/dist/client/assets/select-model-BIWsu5PV.js +1 -0
  236. package/dist/client/assets/{seo-editor-BMB6shx2.js → seo-editor-PDlEaSFK.js} +1 -1
  237. package/dist/client/assets/{separator-Di6srp9Z.js → separator-D_UVaWw6.js} +1 -1
  238. package/dist/client/assets/settings-tab-BBHI-Kul.js +5 -0
  239. package/dist/client/assets/{sheet-C9bl1oJW.js → sheet-Kja83qKC.js} +1 -1
  240. package/dist/client/assets/shell-layout-ynqF32RZ.js +1 -0
  241. package/dist/client/assets/{skill-preview-CjSzB6zf.js → skill-preview-BjeMKh94.js} +1 -1
  242. package/dist/client/assets/skills-BVNUFN8s.js +1 -0
  243. package/dist/client/assets/{sso-CT9ELyZE.js → sso-CbvzPnGh.js} +1 -1
  244. package/dist/client/assets/{suggestion-BSo5OP_j.js → suggestion-DMGPIg87.js} +1 -1
  245. package/dist/client/assets/{switch-wAm3D1I6.js → switch-CSgTLkLq.js} +1 -1
  246. package/dist/client/assets/synced-repos-DkDa4E03.js +1 -0
  247. package/dist/client/assets/{table-3nkTB4Np.js → table-BNlBwUw8.js} +1 -1
  248. package/dist/client/assets/{tabs-Z84fQLpa.js → tabs-DWl7SNDG.js} +1 -1
  249. package/dist/client/assets/{task-board-CIQEQ9gq.js → task-board-C6TTBmRS.js} +1 -1
  250. package/dist/client/assets/{task-route-BYXl_z5M.js → task-route-Bz3woGSP.js} +1 -1
  251. package/dist/client/assets/{task-status-B6zn5x63.js → task-status-CnFMIlt_.js} +1 -1
  252. package/dist/client/assets/taskboard-analytics-DoJw1Xfg.js +1 -0
  253. package/dist/client/assets/tasks-CIdMsSLJ.js +1 -0
  254. package/dist/client/assets/{tasks-3RHZzkFK.js → tasks-Cqz8mQiU.js} +2 -2
  255. package/dist/client/assets/{textarea-DmhWadvL.js → textarea-CufiKBr1.js} +1 -1
  256. package/dist/client/assets/thread-analytics-CC-_zVgm.js +1 -0
  257. package/dist/client/assets/thread-button-Ds-0KssI.js +1 -0
  258. package/dist/client/assets/{thread-intent-BuxfElu5.js → thread-intent-rbLXiRX-.js} +1 -1
  259. package/dist/client/assets/{thread-route-CmEEfnPs.js → thread-route-B3__WRb1.js} +1 -1
  260. package/dist/client/assets/thread-route-D_-4E_Qa.js +1 -0
  261. package/dist/client/assets/{thread-sheet-body-BpOJ-mpg.js → thread-sheet-body-C6Nvo-gY.js} +1 -1
  262. package/dist/client/assets/toggle-group-CEb1zCbt.js +1 -0
  263. package/dist/client/assets/toolbar-icon-button-B7ENG3u2.js +1 -0
  264. package/dist/client/assets/{tooltip-D_t5agRT.js → tooltip-Bdu4_ay-.js} +1 -1
  265. package/dist/client/assets/{track-CWcmFBdJ.js → track-DYcNrkYj.js} +1 -1
  266. package/dist/client/assets/{types-EnXetskt.js → types-C1lh-7rD.js} +3 -3
  267. package/dist/client/assets/{usage-stats-Gv-3x4Ta.js → usage-stats-C8kdutYl.js} +1 -1
  268. package/dist/client/assets/{use-ai-providers-BOtkBAHJ.js → use-ai-providers-DdvmCGxF.js} +1 -1
  269. package/dist/client/assets/{use-automations-C_H2RSDu.js → use-automations-By-N-e6c.js} +1 -1
  270. package/dist/client/assets/{use-autosave-CtwCn4lm.js → use-autosave-tkO4DMDZ.js} +1 -1
  271. package/dist/client/assets/use-connect-companion-CRgCDVPT.js +1 -0
  272. package/dist/client/assets/{use-connection-CK-5Lpbl.js → use-connection-CzhqmkxY.js} +1 -1
  273. package/dist/client/assets/{use-copy-CWcw9y0f.js → use-copy-D35bNj5j.js} +1 -1
  274. package/dist/client/assets/{use-create-virtual-mcp-0s6caXAs.js → use-create-virtual-mcp-DSS6KW-Y.js} +1 -1
  275. package/dist/client/assets/{use-date-fns-locale-DeGGdClH.js → use-date-fns-locale-B65-a3KP.js} +1 -1
  276. package/dist/client/assets/{use-debounced-autosave-l-fa5dGN.js → use-debounced-autosave-UCDN4Lw3.js} +1 -1
  277. package/dist/client/assets/{use-debounced-value-BAmcCwZ4.js → use-debounced-value-CWshbX7F.js} +1 -1
  278. package/dist/client/assets/{use-deco-credits-BAtSd5iZ.js → use-deco-credits-DTu_Qf20.js} +1 -1
  279. package/dist/client/assets/{use-decopilot-events-BzhXXQi3.js → use-decopilot-events-BvKgG5Ws.js} +1 -1
  280. package/dist/client/assets/{use-delete-connection-AWBlHZP0.js → use-delete-connection-1XhxmMPF.js} +1 -1
  281. package/dist/client/assets/{use-deployment-admin-sAUdKDqS.js → use-deployment-admin-DMXwbJU8.js} +1 -1
  282. package/dist/client/assets/{use-entitlements-Dql2buFj.js → use-entitlements-Da1bmf67.js} +1 -1
  283. package/dist/client/assets/{use-fast-preview-draft-url-BxezoKmd.js → use-fast-preview-draft-url-C7L3VsQn.js} +1 -1
  284. package/dist/client/assets/{use-file-configs-Dr0d27aT.js → use-file-configs-C7xVU8E2.js} +1 -1
  285. package/dist/client/assets/use-in-settings-icIKIpSR.js +1 -0
  286. package/dist/client/assets/{use-infinite-scroll-CAp6PiC0.js → use-infinite-scroll-7-m4dXi3.js} +1 -1
  287. package/dist/client/assets/{use-join-requests-CMqjWeBG.js → use-join-requests-D_x3dmzZ.js} +1 -1
  288. package/dist/client/assets/use-main-panel-tabs-B5g6e1MJ.js +1 -0
  289. package/dist/client/assets/{use-mcp-auth-status-CH7YPNve.js → use-mcp-auth-status-nDkEwx2c.js} +1 -1
  290. package/dist/client/assets/{use-mcp-client-DDIocHT6.js → use-mcp-client-CkjkRUta.js} +1 -1
  291. package/dist/client/assets/{use-mcp-prompts-D8MzpgAT.js → use-mcp-prompts-D2XJcis0.js} +1 -1
  292. package/dist/client/assets/{use-mcp-tools-CFGrhbrB.js → use-mcp-tools-DZlo67bQ.js} +1 -1
  293. package/dist/client/assets/{use-members-BtxsC9V3.js → use-members-CdPjttiy.js} +1 -1
  294. package/dist/client/assets/{use-mobile-CdzCnkMt.js → use-mobile-DVMuGaln.js} +1 -1
  295. package/dist/client/assets/{use-navigate-to-agent-CK2ojcHr.js → use-navigate-to-agent-BCcYux8q.js} +1 -1
  296. package/dist/client/assets/{use-open-billing-url-ptdTbbBm.js → use-open-billing-url-CJn1G7pV.js} +1 -1
  297. package/dist/client/assets/{use-org-auth-client-B2Mz39Ds.js → use-org-auth-client-D8dxsLtj.js} +1 -1
  298. package/dist/client/assets/{use-org-fs-B5SsMM_1.js → use-org-fs-3jzMRDSK.js} +1 -1
  299. package/dist/client/assets/{use-org-sso-Bg9XoWeE.js → use-org-sso-Bb_2_N0Z.js} +1 -1
  300. package/dist/client/assets/{use-organization-roles-Q61E1tJN.js → use-organization-roles-ixSaPxG5.js} +1 -1
  301. package/dist/client/assets/{use-organization-settings-DYk5FZJw.js → use-organization-settings-B0mobgxG.js} +1 -1
  302. package/dist/client/assets/{use-panel-navigate-wv77dcM5.js → use-panel-navigate-CjSWJCy4.js} +1 -1
  303. package/dist/client/assets/{use-project-native-view-presence-gzbdZMHU.js → use-project-native-view-presence-_PPun-xm.js} +1 -1
  304. package/dist/client/assets/{use-project-scope-DHDkFc-g.js → use-project-scope-CJnr8HCi.js} +1 -1
  305. package/dist/client/assets/{use-releases-h152tw9n.js → use-releases-CT-nVxtd.js} +1 -1
  306. package/dist/client/assets/{use-reports-diagnostic-DldYivxc.js → use-reports-diagnostic-AsJIEIvt.js} +1 -1
  307. package/dist/client/assets/{use-route-default-main-BWkjTfSK.js → use-route-default-main-CQGz2KW9.js} +1 -1
  308. package/dist/client/assets/{use-secrets-DQHJ4cVA.js → use-secrets-DgNcVRY9.js} +1 -1
  309. package/dist/client/assets/use-section-preview-base-mIL7vKdH.js +1 -0
  310. package/dist/client/assets/{use-session-runtime-D_Z0r9x6.js → use-session-runtime-B9eFlXyW.js} +1 -1
  311. package/dist/client/assets/{use-tags-DEpNJldS.js → use-tags-BM82Yu0K.js} +1 -1
  312. package/dist/client/assets/{use-task-board-analytics-Cw3-V-U_.js → use-task-board-analytics-D_ruF5p9.js} +1 -1
  313. package/dist/client/assets/{use-task-metadata-B8IWdSS_.js → use-task-metadata-qZ-qzNT-.js} +1 -1
  314. package/dist/client/assets/{use-thread-analytics-CW55-Xe0.js → use-thread-analytics-BcEpZDI1.js} +1 -1
  315. package/dist/client/assets/{use-thread-outputs-C4iYsVj1.js → use-thread-outputs-CIF4-tq_.js} +1 -1
  316. package/dist/client/assets/{use-virtual-mcp-CfvZlIda.js → use-virtual-mcp-BKP1YfD8.js} +1 -1
  317. package/dist/client/assets/useInfiniteQuery-DhVx-Xnv.js +1 -0
  318. package/dist/client/assets/{useQueries-Cd_bJN_E.js → useQueries-CbuhlNe5.js} +1 -1
  319. package/dist/client/assets/useSuspenseInfiniteQuery-CB90sByh.js +1 -0
  320. package/dist/client/assets/{users-DHJxjXSq.js → users-CDy-vhRi.js} +1 -1
  321. package/dist/client/assets/{utils-DMlJ8ARz.js → utils-VRidfAJX.js} +1 -1
  322. package/dist/client/assets/{variant-calendar-DghqPTU4.js → variant-calendar-C5Yhhu_f.js} +1 -1
  323. package/dist/client/assets/{variant-matcher-override-BL815r4E.js → variant-matcher-override-NRDTBNQG.js} +1 -1
  324. package/dist/client/assets/view-mode-toggle-P-VmNhrj.js +1 -0
  325. package/dist/client/assets/{virtual-mcp-CcUa7C54.js → virtual-mcp-DXr1jTLu.js} +1 -1
  326. package/dist/client/index.html +2 -2
  327. package/dist/server/cli.js +6 -6
  328. package/dist/server/server.js +6 -6
  329. package/package.json +1 -1
  330. package/dist/client/assets/agent-analytics-5H0k6n1D.js +0 -2
  331. package/dist/client/assets/agent-app-Cw9tbDuz.js +0 -1
  332. package/dist/client/assets/agent-assets-YP1dibLm.js +0 -1
  333. package/dist/client/assets/agent-automation-Bp39QN0z.js +0 -20
  334. package/dist/client/assets/agent-automations-CcIjwuOa.js +0 -1
  335. package/dist/client/assets/agent-connect-sources-gwlJwqxl.js +0 -1
  336. package/dist/client/assets/agent-deck-DjA8jeH7.js +0 -1
  337. package/dist/client/assets/agent-e2e-BiBmSSMh.js +0 -1
  338. package/dist/client/assets/agent-experiments-C0aMSCki.js +0 -1
  339. package/dist/client/assets/agent-file-C8oUDbru.js +0 -1
  340. package/dist/client/assets/agent-hosting-CrRHqit9.js +0 -1
  341. package/dist/client/assets/agent-library-file-DHksNut0.js +0 -1
  342. package/dist/client/assets/agent-monitor-BfRZolsZ.js +0 -1
  343. package/dist/client/assets/agent-overview-B71w2k7g.js +0 -1
  344. package/dist/client/assets/agent-settings-DLjV3KWn.js +0 -1
  345. package/dist/client/assets/agent-site-editor-code-HV34X_yY.js +0 -2
  346. package/dist/client/assets/agent-site-editor-content-BcZDuxlX.js +0 -9
  347. package/dist/client/assets/agent-site-editor-preview-B9JYzQCZ.js +0 -518
  348. package/dist/client/assets/agent-view-BTwtHRZF.js +0 -1
  349. package/dist/client/assets/agents-list-BOyqXgKJ.js +0 -1
  350. package/dist/client/assets/analytics-sections-DtS7EZgf.js +0 -1
  351. package/dist/client/assets/api-keys-CuyD-Z5R.js +0 -1
  352. package/dist/client/assets/api-keys-DrMp2tSJ.js +0 -1
  353. package/dist/client/assets/app-editor-CIFNTD8w.js +0 -1
  354. package/dist/client/assets/auth-entry-Bt2xP80T.js +0 -1
  355. package/dist/client/assets/block-document-B66z-LAv.js +0 -3
  356. package/dist/client/assets/breadcrumb-CTYBDQ2Q.js +0 -1
  357. package/dist/client/assets/category-editor-BzKSt8vB.js +0 -1
  358. package/dist/client/assets/collection-detail-CNH0TqEJ.js +0 -1
  359. package/dist/client/assets/collection-tabs-B6d-4IcJ.js +0 -1
  360. package/dist/client/assets/command-BNNuUVzL.js +0 -1
  361. package/dist/client/assets/connect-B67H5sTV.js +0 -8
  362. package/dist/client/assets/connection-detail-CGeE1NL9.js +0 -1
  363. package/dist/client/assets/connections-JoHYlluM.js +0 -1
  364. package/dist/client/assets/dialog-DP1MSxJH.js +0 -1
  365. package/dist/client/assets/discover-BV0HsgaI.js +0 -1
  366. package/dist/client/assets/file-share-button-rEL9QTqo.js +0 -3
  367. package/dist/client/assets/home-D2-wyRKJ.js +0 -1
  368. package/dist/client/assets/index-Cba7I4uA.js +0 -26
  369. package/dist/client/assets/index-DK8MJmup.js +0 -1
  370. package/dist/client/assets/index-DQQ8_5-n.css +0 -1
  371. package/dist/client/assets/index-g9QoTWAS.js +0 -1
  372. package/dist/client/assets/index-redirect-Cl6Yu5tU.js +0 -1
  373. package/dist/client/assets/index-xK_UxIbV.js +0 -5
  374. package/dist/client/assets/input-BpZKxjG2.js +0 -8
  375. package/dist/client/assets/library-B502b1z4.js +0 -161
  376. package/dist/client/assets/members-BoGXKcke.js +0 -1
  377. package/dist/client/assets/message-templates-D0vFWbXr.js +0 -1
  378. package/dist/client/assets/mock-board-CLLyx2N9.js +0 -10
  379. package/dist/client/assets/multi-select--1a2IkR7.js +0 -1
  380. package/dist/client/assets/org-file-open-context-BGwxOJ5f.js +0 -1
  381. package/dist/client/assets/page-seo-form-C1Rgy6PR.js +0 -1
  382. package/dist/client/assets/profile-r8hRIBVU.js +0 -1
  383. package/dist/client/assets/project-feed-DminiBzl.js +0 -1
  384. package/dist/client/assets/project-reports-JmbfgpKz.js +0 -1
  385. package/dist/client/assets/project-tasks-2GTKjWCp.js +0 -1
  386. package/dist/client/assets/record-editor-B-ETGxA0.js +0 -1
  387. package/dist/client/assets/reports-Dd7XY9fp.js +0 -1
  388. package/dist/client/assets/reports-tab-CoNw5u9A.js +0 -2
  389. package/dist/client/assets/require-capability-3QFnbaVg.js +0 -1
  390. package/dist/client/assets/roles-CesqgDGr.js +0 -1
  391. package/dist/client/assets/route-BXF3hfx7.js +0 -1
  392. package/dist/client/assets/route-CH1X1P-P.js +0 -1
  393. package/dist/client/assets/route-page-header-BHR-ItxW.js +0 -1
  394. package/dist/client/assets/route-utJJlEy1.js +0 -1
  395. package/dist/client/assets/runnable-block-editor-D_EKjpsM.js +0 -17
  396. package/dist/client/assets/secrets-CTexxl38.js +0 -1
  397. package/dist/client/assets/sections-editor-8OIVL9zx.js +0 -1
  398. package/dist/client/assets/select-model-baGNpvTB.js +0 -1
  399. package/dist/client/assets/settings-tab-DSJnx2cf.js +0 -5
  400. package/dist/client/assets/shell-layout-PUnaTk6G.js +0 -1
  401. package/dist/client/assets/sidebar-gH44_aFR.js +0 -1
  402. package/dist/client/assets/skills-CEarjmfu.js +0 -1
  403. package/dist/client/assets/synced-repos-B5N_C_En.js +0 -1
  404. package/dist/client/assets/taskboard-analytics-BDhMfBmv.js +0 -1
  405. package/dist/client/assets/tasks-L4O6RNHu.js +0 -1
  406. package/dist/client/assets/thread-analytics-CWolaSZq.js +0 -1
  407. package/dist/client/assets/thread-button-C353BNO6.js +0 -1
  408. package/dist/client/assets/thread-route-Bx6eqAUQ.js +0 -1
  409. package/dist/client/assets/toggle-group-WpqscYaw.js +0 -1
  410. package/dist/client/assets/toolbar-icon-button-DAFKD_pK.js +0 -1
  411. package/dist/client/assets/use-connect-companion-v6osDnhK.js +0 -1
  412. package/dist/client/assets/use-in-settings-BA5Od6zt.js +0 -1
  413. package/dist/client/assets/use-main-panel-tabs-CtoMsbfs.js +0 -1
  414. package/dist/client/assets/use-section-preview-base-CdEeBhgs.js +0 -1
  415. package/dist/client/assets/useInfiniteQuery-DfdWdULq.js +0 -1
  416. package/dist/client/assets/useSuspenseInfiniteQuery-ByyP6gL-.js +0 -1
  417. package/dist/client/assets/view-mode-toggle-Czn_wQOw.js +0 -1
@@ -2105,7 +2105,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var P4$=L(()=>{Zu()});f
2105
2105
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Vl`
2106
2106
  DELETE FROM kysely_migration WHERE name = ${Q}
2107
2107
  `.execute($)}}async function s7$($){await SW4($),await CW4($);let Z=new a7$({db:$,provider:{getMigrations:()=>Promise.resolve(q11)}}),{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 _W4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await xa0();let J=Q??F8(),G=async()=>{if(!Z&&!Q)await eD(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await s7$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function vW4(){let $=F8(),Z=new a7$({db:$.db,provider:{getMigrations:()=>Promise.resolve(q11)}}),{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 $Q$=L(()=>{o7$();fa0();jX()});async function z30($){let Z={...process.env},Q=H70($,Z);console.log(AV1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?e6$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (PG0(),zG0)),{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(() => (fa0(),Z5$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (jX(),w6$)),{migrateToLatest:F}=await Promise.resolve().then(() => ($Q$(),e7$)),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 T4$(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 M11=L(()=>{Zu();$5$();W$()});var YQ$={};K0(YQ$,{updateService:()=>wT,subscribeCliState:()=>k11,setTuiConsoleIntercepted:()=>P30,setServerUrl:()=>Wr,setMigrationsDone:()=>Kr,setDevMode:()=>fW4,resetCliStateForTests:()=>xW4,isTuiConsoleIntercepted:()=>T30,getCliState:()=>V11,addLogEntry:()=>Jw});function ZQ$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function QQ$(){return{services:ZQ$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function xW4(){wJ=QQ$()}function Gr(){for(let $ of I11)$()}function V11(){return wJ}function k11($){return I11.add($),()=>I11.delete($)}function wT($){wJ={...wJ,services:wJ.services.map((Z)=>Z.name===$.name?$:Z)},Gr()}function Kr(){wJ={...wJ,migrationsStatus:"done"},Gr()}function Wr($){wJ={...wJ,serverUrl:$},Gr()}function Jw($){let Z=[...wJ.logs,$];wJ={...wJ,logs:Z.length>500?Z.slice(-500):Z},Gr()}function fW4(){wJ={...wJ,services:[...ZQ$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Gr()}function P30($){XQ$=$}function T30(){return XQ$}var wJ,I11,XQ$=!1;var jT=L(()=>{wJ=QQ$();I11=new Set});import{createServer as JQ$}from"net";function bW4($){return new Promise((Z)=>{let Q=JQ$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Hr($){if(await bW4($))return $;let Z=await new Promise((Q,X)=>{let Y=JQ$();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 S11=()=>{};var _11={};K0(_11,{startDevServer:()=>gW4,pipeToLogStore:()=>C11});import{join as yW4}from"path";function C11($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
2108
- `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Jw({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)Jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function gW4($){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 Hr(Number(Y)+1):await Hr(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await z30({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)wT({name:D.name,status:"ready",port:D.port});Kr();let F=yW4(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)C11(N.stdout),C11(N.stderr);Wr(J),wT({name:"Vite",status:"ready",port:Number(Y)}),wT({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (PG0(),zG0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var v11=L(()=>{M11();jT();S11()});var A30;var x11=L(()=>{A30={name:"decocms",version:"4.400.5",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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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:"^7.0.107","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 uW4,Text as GQ$}from"ink";import{jsx as lW4,jsxs as KQ$}from"react/jsx-runtime";function WQ$({version:$}){return KQ$(uW4,{flexDirection:"column",marginTop:1,children:[dG0.map((Z,Q)=>lW4(GQ$,{color:iG0[Q],children:Z},Q)),KQ$(GQ$,{dimColor:!0,children:[" v",$]})]})}var HQ$=L(()=>{ia()});import{Box as ET,Text as Gw}from"ink";import{Spinner as cW4}from"@inkjs/ui";import{jsx as bG,jsxs as kl}from"react/jsx-runtime";function FQ$({status:$}){if($==="pending")return bG(cW4,{label:""});return bG(Gw,{color:"green",children:"\u2713"})}function mW4($){return`${$.name}: ${$.port||"...."}`}function UQ$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return kl(ET,{flexDirection:"column",paddingBottom:1,children:[bG(WQ$,{version:A30.version}),bG(ET,{marginBottom:1,children:bG(Gw,{dimColor:!0,children:"\u2500".repeat(80)})}),bG(ET,{children:kl(Gw,{dimColor:!0,children:["Home: ",Q]})}),kl(ET,{gap:2,children:[$.map((Y)=>kl(ET,{gap:1,children:[bG(Gw,{children:mW4(Y)}),bG(FQ$,{status:Y.status})]},Y.name)),kl(ET,{gap:1,children:[bG(Gw,{children:"Migrations"}),bG(FQ$,{status:Z})]})]}),bG(ET,{children:X?kl(Gw,{children:["Open in browser: ",bG(Gw,{color:"cyan",children:X})]}):bG(Gw,{dimColor:!0,children:"Starting..."})})]})}var NQ$=L(()=>{x11();HQ$()});import{Box as dW4,Text as Fr}from"ink";import{jsx as f11,jsxs as b11}from"react/jsx-runtime";function iW4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function BQ$({logs:$}){return f11(dW4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return f11(Fr,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return b11(Fr,{children:[b11(Fr,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),f11(Fr,{color:iW4(Z.status),children:Z.status}),b11(Fr,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var LQ$=()=>{};var y11={};K0(y11,{App:()=>tW4});import{Box as pW4}from"ink";import{useSyncExternalStore as nW4}from"react";import{jsx as OQ$,jsxs as oW4}from"react/jsx-runtime";function tW4({home:$}){let Z=nW4(k11,V11);return oW4(pW4,{flexDirection:"column",children:[OQ$(UQ$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),OQ$(BQ$,{logs:Z.logs})]})}var g11=L(()=>{NQ$();LQ$();jT()});var BK="thread-gate",uB="decopilot-hosted-harness",lB="decopilot-hosted-harness-sandboxed",LK="automations",Kw="background-tools",zT="task-board-github-reads";var DQ$="13";function wQ$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:DQ$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var jQ$=()=>{};import aW4 from"pg";async function zQ$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=rW4}=$,Y=$.log??((W)=>console.log(W)),J=new aW4.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",[EQ$.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 S$(sW4)}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)",[EQ$.toString()])}catch{}await J.end().catch(()=>{})}}var EQ$=8314027461559302n,rW4=600000,sW4=500;var PQ$=L(()=>{w8()});function eW4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function h11($,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 TQ$(){let $=eW4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:h11($,"--cpu-prof-dir")??process.cwd(),name:h11($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(h11($,"--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 AQ$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=BT();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(()=>{}),R30=setInterval(()=>void Z().catch(()=>{}),$),R30.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(R30)clearInterval(R30)}}var R30;var RQ$=()=>{};import*as $H4 from"bun:jsc";function qQ$(){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{ZH4()}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=QH4()?.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 ZH4,QH4;var MQ$=L(()=>{({startSamplingProfiler:ZH4,samplingProfilerStackTraces:QH4}=$H4)});function IQ$(){TQ$();let $=[AQ$(),H6$(),qQ$()];return()=>{for(let Z of $)Z()}}var VQ$=L(()=>{Ma0();RQ$();MQ$()});var PT=b((kQ$)=>{Object.defineProperty(kQ$,"__esModule",{value:!0});kQ$.RepublishHeaders=kQ$.DirectMsgHeaders=kQ$.JsHeaders=kQ$.AdvisoryKind=void 0;kQ$.isOrderedPushConsumerOptions=XH4;kQ$.isPullConsumer=YH4;kQ$.isPushConsumer=JH4;kQ$.isBoundPushConsumerOptions=GH4;function XH4($){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 YH4($){return $.isPullConsumer()}function JH4($){return $.isPushConsumer()}function GH4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}kQ$.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"};kQ$.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"};kQ$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};kQ$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var yG=b((CQ$)=>{Object.defineProperty(CQ$,"__esModule",{value:!0});CQ$.TD=CQ$.TE=CQ$.Empty=void 0;CQ$.encode=OH4;CQ$.decode=DH4;CQ$.Empty=new Uint8Array(0);CQ$.TE=new TextEncoder;CQ$.TD=new TextDecoder;function LH4(...$){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 OH4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(CQ$.TE.encode($[Q]));if(Z.length===0)return CQ$.Empty;if(Z.length===1)return Z[0];return LH4(...Z)}function DH4($){if(!$||$.length===0)return"";return CQ$.TD.decode($)}});var gG=b((xQ$)=>{Object.defineProperty(xQ$,"__esModule",{value:!0});xQ$.errors=xQ$.PermissionViolationError=xQ$.NoRespondersError=xQ$.TimeoutError=xQ$.RequestError=xQ$.ProtocolError=xQ$.ConnectionError=xQ$.DrainingConnectionError=xQ$.ClosedConnectionError=xQ$.AuthorizationError=xQ$.UserAuthenticationExpiredError=xQ$.InvalidOperationError=xQ$.InvalidArgumentError=xQ$.InvalidSubjectError=void 0;class l11 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}xQ$.InvalidSubjectError=l11;class q30 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 q30(`${$} ${Z}`,Q)}}xQ$.InvalidArgumentError=q30;class c11 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}xQ$.InvalidOperationError=c11;class M30 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new M30($);return null}}xQ$.UserAuthenticationExpiredError=M30;class I30 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 I30($);return null}}xQ$.AuthorizationError=I30;class m11 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}xQ$.ClosedConnectionError=m11;class d11 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}xQ$.DrainingConnectionError=d11;class i11 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}xQ$.ConnectionError=i11;class p11 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}xQ$.ProtocolError=p11;class n11 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof V30}}xQ$.RequestError=n11;class t11 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}xQ$.TimeoutError=t11;class V30 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}xQ$.NoRespondersError=V30;class k30 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 k30($,Q,X,Y)}}xQ$.PermissionViolationError=k30;xQ$.errors={AuthorizationError:I30,ClosedConnectionError:m11,ConnectionError:i11,DrainingConnectionError:d11,InvalidArgumentError:q30,InvalidOperationError:c11,InvalidSubjectError:l11,NoRespondersError:V30,PermissionViolationError:k30,ProtocolError:p11,RequestError:n11,TimeoutError:t11,UserAuthenticationExpiredError:M30}});var oW=b((hQ$)=>{Object.defineProperty(hQ$,"__esModule",{value:!0});hQ$.SimpleMutex=hQ$.Perf=void 0;hQ$.extend=vH4;hQ$.render=xH4;hQ$.timeout=fH4;hQ$.delay=bH4;hQ$.deadline=yH4;hQ$.deferred=a11;hQ$.debugDeferred=gH4;hQ$.shuffle=hH4;hQ$.collect=uH4;hQ$.jitter=gQ$;hQ$.backoff=lH4;hQ$.nanos=cH4;hQ$.millis=mH4;hQ$.randomToken=pH4;var _H4=yG(),o11=gG();function vH4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function xH4($){return _H4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function fH4($,Z=!0){let Q=Z?new o11.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new o11.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function bH4($=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 yH4($,Z=1000){let Q=a11(),X=setTimeout(()=>{Q.reject(new o11.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function a11(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function gH4(){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 hH4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function uH4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class bQ${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})}),$}}hQ$.Perf=bQ$;class yQ${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=a11();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}hQ$.SimpleMutex=yQ$;function gQ$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function lH4($=[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 gQ$(Q>Z?$[Z]:$[Q])}}}function cH4($){return $*1e6}function mH4($){return Math.floor($/1e6)}var dH4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",cB=new Uint8Array(62);for(let $=0;$<62;$++)cB[$]=dH4.charCodeAt($);var iH4=218340105584896;function pH4(){let $=Math.floor(Math.random()*iH4),Z=$%62,Q=cB[Z];$=($-Z)/62,Z=$%62;let X=cB[Z];$=($-Z)/62,Z=$%62;let Y=cB[Z];$=($-Z)/62,Z=$%62;let J=cB[Z];$=($-Z)/62,Z=$%62;let G=cB[Z];$=($-Z)/62,Z=$%62;let K=cB[Z];$=($-Z)/62,Z=$%62;let W=cB[Z];$=($-Z)/62;let H=cB[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var nQ$=b((iQ$)=>{Object.defineProperty(iQ$,"__esModule",{value:!0});iQ$.nuid=iQ$.NuidImpl=void 0;var WF4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ww=62,C30=12,mQ$=10,lQ$=33,HF4=333,cQ$=C30+mQ$,s11=new Uint8Array(Ww);for(let $=0;$<Ww;$++)s11[$]=WF4.charCodeAt($);var S30=4294967296,dQ$=BigInt(Ww)**BigInt(mQ$),Ur=Number(dQ$/(1n<<32n)),r11=Number(dQ$%(1n<<32n));function FF4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function UF4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else FF4($)}class e11{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(cQ$),this.cbuf=new Uint8Array(C30),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ur+1)),this.seqLo=Math.floor(Math.random()*S30);while($++<8&&this.seqHi===Ur&&this.seqLo>=r11);if(this.seqHi===Ur&&this.seqLo>=r11)this.seqLo=0;this.inc=Math.random()*(HF4-lQ$)+lQ$|0}setPre(){UF4(this.cbuf);for(let $=0;$<C30;$++)this.buf[$]=s11[this.cbuf[$]%Ww]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=cQ$-1;Q>=C30;Q--){let X=Math.floor($/Ww),J=($-X*Ww)*S30+Z,G=Math.floor(J/Ww),K=J-G*Ww;this.buf[Q]=s11[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=S30)this.seqLo-=S30,this.seqHi+=1;if(this.seqHi>Ur||this.seqHi===Ur&&this.seqLo>=r11)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()}}iQ$.NuidImpl=e11;iQ$.nuid=new e11});var rQ$=b((oQ$)=>{Object.defineProperty(oQ$,"__esModule",{value:!0});oQ$.nuid=oQ$.Nuid=void 0;var tQ$=nQ$();oQ$.Nuid=tQ$.NuidImpl;oQ$.nuid=tQ$.nuid});var v30=b((_30)=>{Object.defineProperty(_30,"__esModule",{value:!0});_30.nuid=_30.Nuid=void 0;var sQ$=rQ$();Object.defineProperty(_30,"Nuid",{enumerable:!0,get:function(){return sQ$.Nuid}});Object.defineProperty(_30,"nuid",{enumerable:!0,get:function(){return sQ$.nuid}})});var Hw=b((eQ$)=>{Object.defineProperty(eQ$,"__esModule",{value:!0});eQ$.DEFAULT_HOST=eQ$.DEFAULT_PORT=eQ$.Match=void 0;eQ$.syncIterator=wF4;eQ$.createInbox=jF4;var OF4=v30(),DF4=gG();eQ$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function wF4($){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 jF4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw DF4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${OF4.nuid.next()}`}eQ$.DEFAULT_PORT=4222;eQ$.DEFAULT_HOST="127.0.0.1"});var Nr=b((XX$)=>{Object.defineProperty(XX$,"__esModule",{value:!0});XX$.DataBuffer=void 0;var ZX$=yG();class QX${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 ZX$.TE.encode($)}static toAscii($){return ZX$.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}}XX$.DataBuffer=QX$});var TT=b((GX$)=>{Object.defineProperty(GX$,"__esModule",{value:!0});GX$.LF=GX$.CR=GX$.CRLF=GX$.CR_LF_LEN=GX$.CR_LF=void 0;GX$.setTransportFactory=MF4;GX$.defaultPort=IF4;GX$.getUrlParseFn=VF4;GX$.newTransport=kF4;GX$.getResolveFn=SF4;GX$.protoLen=JX$;GX$.extractProtocolMessage=CF4;var AF4=yG(),RF4=Hw(),qF4=Nr(),hG;function MF4($){hG=$}function IF4(){return hG!==void 0&&hG.defaultPort!==void 0?hG.defaultPort:RF4.DEFAULT_PORT}function VF4(){return hG!==void 0&&hG.urlParseFn?hG.urlParseFn:void 0}function kF4(){if(!hG||typeof hG.factory!=="function")throw Error("transport fn is not set");return hG.factory()}function SF4(){return hG!==void 0&&hG.dnsResolveFn?hG.dnsResolveFn:void 0}GX$.CR_LF=`\r
2108
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Jw({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)Jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function gW4($){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 Hr(Number(Y)+1):await Hr(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await z30({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)wT({name:D.name,status:"ready",port:D.port});Kr();let F=yW4(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)C11(N.stdout),C11(N.stderr);Wr(J),wT({name:"Vite",status:"ready",port:Number(Y)}),wT({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (PG0(),zG0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var v11=L(()=>{M11();jT();S11()});var A30;var x11=L(()=>{A30={name:"decocms",version:"4.401.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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:"^7.0.107","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 uW4,Text as GQ$}from"ink";import{jsx as lW4,jsxs as KQ$}from"react/jsx-runtime";function WQ$({version:$}){return KQ$(uW4,{flexDirection:"column",marginTop:1,children:[dG0.map((Z,Q)=>lW4(GQ$,{color:iG0[Q],children:Z},Q)),KQ$(GQ$,{dimColor:!0,children:[" v",$]})]})}var HQ$=L(()=>{ia()});import{Box as ET,Text as Gw}from"ink";import{Spinner as cW4}from"@inkjs/ui";import{jsx as bG,jsxs as kl}from"react/jsx-runtime";function FQ$({status:$}){if($==="pending")return bG(cW4,{label:""});return bG(Gw,{color:"green",children:"\u2713"})}function mW4($){return`${$.name}: ${$.port||"...."}`}function UQ$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return kl(ET,{flexDirection:"column",paddingBottom:1,children:[bG(WQ$,{version:A30.version}),bG(ET,{marginBottom:1,children:bG(Gw,{dimColor:!0,children:"\u2500".repeat(80)})}),bG(ET,{children:kl(Gw,{dimColor:!0,children:["Home: ",Q]})}),kl(ET,{gap:2,children:[$.map((Y)=>kl(ET,{gap:1,children:[bG(Gw,{children:mW4(Y)}),bG(FQ$,{status:Y.status})]},Y.name)),kl(ET,{gap:1,children:[bG(Gw,{children:"Migrations"}),bG(FQ$,{status:Z})]})]}),bG(ET,{children:X?kl(Gw,{children:["Open in browser: ",bG(Gw,{color:"cyan",children:X})]}):bG(Gw,{dimColor:!0,children:"Starting..."})})]})}var NQ$=L(()=>{x11();HQ$()});import{Box as dW4,Text as Fr}from"ink";import{jsx as f11,jsxs as b11}from"react/jsx-runtime";function iW4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function BQ$({logs:$}){return f11(dW4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return f11(Fr,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return b11(Fr,{children:[b11(Fr,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),f11(Fr,{color:iW4(Z.status),children:Z.status}),b11(Fr,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var LQ$=()=>{};var y11={};K0(y11,{App:()=>tW4});import{Box as pW4}from"ink";import{useSyncExternalStore as nW4}from"react";import{jsx as OQ$,jsxs as oW4}from"react/jsx-runtime";function tW4({home:$}){let Z=nW4(k11,V11);return oW4(pW4,{flexDirection:"column",children:[OQ$(UQ$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),OQ$(BQ$,{logs:Z.logs})]})}var g11=L(()=>{NQ$();LQ$();jT()});var BK="thread-gate",uB="decopilot-hosted-harness",lB="decopilot-hosted-harness-sandboxed",LK="automations",Kw="background-tools",zT="task-board-github-reads";var DQ$="13";function wQ$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:DQ$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var jQ$=()=>{};import aW4 from"pg";async function zQ$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=rW4}=$,Y=$.log??((W)=>console.log(W)),J=new aW4.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",[EQ$.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 S$(sW4)}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)",[EQ$.toString()])}catch{}await J.end().catch(()=>{})}}var EQ$=8314027461559302n,rW4=600000,sW4=500;var PQ$=L(()=>{w8()});function eW4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function h11($,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 TQ$(){let $=eW4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:h11($,"--cpu-prof-dir")??process.cwd(),name:h11($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(h11($,"--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 AQ$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=BT();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(()=>{}),R30=setInterval(()=>void Z().catch(()=>{}),$),R30.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(R30)clearInterval(R30)}}var R30;var RQ$=()=>{};import*as $H4 from"bun:jsc";function qQ$(){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{ZH4()}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=QH4()?.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 ZH4,QH4;var MQ$=L(()=>{({startSamplingProfiler:ZH4,samplingProfilerStackTraces:QH4}=$H4)});function IQ$(){TQ$();let $=[AQ$(),H6$(),qQ$()];return()=>{for(let Z of $)Z()}}var VQ$=L(()=>{Ma0();RQ$();MQ$()});var PT=b((kQ$)=>{Object.defineProperty(kQ$,"__esModule",{value:!0});kQ$.RepublishHeaders=kQ$.DirectMsgHeaders=kQ$.JsHeaders=kQ$.AdvisoryKind=void 0;kQ$.isOrderedPushConsumerOptions=XH4;kQ$.isPullConsumer=YH4;kQ$.isPushConsumer=JH4;kQ$.isBoundPushConsumerOptions=GH4;function XH4($){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 YH4($){return $.isPullConsumer()}function JH4($){return $.isPushConsumer()}function GH4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}kQ$.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"};kQ$.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"};kQ$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};kQ$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var yG=b((CQ$)=>{Object.defineProperty(CQ$,"__esModule",{value:!0});CQ$.TD=CQ$.TE=CQ$.Empty=void 0;CQ$.encode=OH4;CQ$.decode=DH4;CQ$.Empty=new Uint8Array(0);CQ$.TE=new TextEncoder;CQ$.TD=new TextDecoder;function LH4(...$){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 OH4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(CQ$.TE.encode($[Q]));if(Z.length===0)return CQ$.Empty;if(Z.length===1)return Z[0];return LH4(...Z)}function DH4($){if(!$||$.length===0)return"";return CQ$.TD.decode($)}});var gG=b((xQ$)=>{Object.defineProperty(xQ$,"__esModule",{value:!0});xQ$.errors=xQ$.PermissionViolationError=xQ$.NoRespondersError=xQ$.TimeoutError=xQ$.RequestError=xQ$.ProtocolError=xQ$.ConnectionError=xQ$.DrainingConnectionError=xQ$.ClosedConnectionError=xQ$.AuthorizationError=xQ$.UserAuthenticationExpiredError=xQ$.InvalidOperationError=xQ$.InvalidArgumentError=xQ$.InvalidSubjectError=void 0;class l11 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}xQ$.InvalidSubjectError=l11;class q30 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 q30(`${$} ${Z}`,Q)}}xQ$.InvalidArgumentError=q30;class c11 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}xQ$.InvalidOperationError=c11;class M30 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new M30($);return null}}xQ$.UserAuthenticationExpiredError=M30;class I30 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 I30($);return null}}xQ$.AuthorizationError=I30;class m11 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}xQ$.ClosedConnectionError=m11;class d11 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}xQ$.DrainingConnectionError=d11;class i11 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}xQ$.ConnectionError=i11;class p11 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}xQ$.ProtocolError=p11;class n11 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof V30}}xQ$.RequestError=n11;class t11 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}xQ$.TimeoutError=t11;class V30 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}xQ$.NoRespondersError=V30;class k30 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 k30($,Q,X,Y)}}xQ$.PermissionViolationError=k30;xQ$.errors={AuthorizationError:I30,ClosedConnectionError:m11,ConnectionError:i11,DrainingConnectionError:d11,InvalidArgumentError:q30,InvalidOperationError:c11,InvalidSubjectError:l11,NoRespondersError:V30,PermissionViolationError:k30,ProtocolError:p11,RequestError:n11,TimeoutError:t11,UserAuthenticationExpiredError:M30}});var oW=b((hQ$)=>{Object.defineProperty(hQ$,"__esModule",{value:!0});hQ$.SimpleMutex=hQ$.Perf=void 0;hQ$.extend=vH4;hQ$.render=xH4;hQ$.timeout=fH4;hQ$.delay=bH4;hQ$.deadline=yH4;hQ$.deferred=a11;hQ$.debugDeferred=gH4;hQ$.shuffle=hH4;hQ$.collect=uH4;hQ$.jitter=gQ$;hQ$.backoff=lH4;hQ$.nanos=cH4;hQ$.millis=mH4;hQ$.randomToken=pH4;var _H4=yG(),o11=gG();function vH4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function xH4($){return _H4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function fH4($,Z=!0){let Q=Z?new o11.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new o11.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function bH4($=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 yH4($,Z=1000){let Q=a11(),X=setTimeout(()=>{Q.reject(new o11.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function a11(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function gH4(){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 hH4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function uH4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class bQ${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})}),$}}hQ$.Perf=bQ$;class yQ${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=a11();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}hQ$.SimpleMutex=yQ$;function gQ$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function lH4($=[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 gQ$(Q>Z?$[Z]:$[Q])}}}function cH4($){return $*1e6}function mH4($){return Math.floor($/1e6)}var dH4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",cB=new Uint8Array(62);for(let $=0;$<62;$++)cB[$]=dH4.charCodeAt($);var iH4=218340105584896;function pH4(){let $=Math.floor(Math.random()*iH4),Z=$%62,Q=cB[Z];$=($-Z)/62,Z=$%62;let X=cB[Z];$=($-Z)/62,Z=$%62;let Y=cB[Z];$=($-Z)/62,Z=$%62;let J=cB[Z];$=($-Z)/62,Z=$%62;let G=cB[Z];$=($-Z)/62,Z=$%62;let K=cB[Z];$=($-Z)/62,Z=$%62;let W=cB[Z];$=($-Z)/62;let H=cB[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var nQ$=b((iQ$)=>{Object.defineProperty(iQ$,"__esModule",{value:!0});iQ$.nuid=iQ$.NuidImpl=void 0;var WF4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ww=62,C30=12,mQ$=10,lQ$=33,HF4=333,cQ$=C30+mQ$,s11=new Uint8Array(Ww);for(let $=0;$<Ww;$++)s11[$]=WF4.charCodeAt($);var S30=4294967296,dQ$=BigInt(Ww)**BigInt(mQ$),Ur=Number(dQ$/(1n<<32n)),r11=Number(dQ$%(1n<<32n));function FF4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function UF4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else FF4($)}class e11{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(cQ$),this.cbuf=new Uint8Array(C30),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Ur+1)),this.seqLo=Math.floor(Math.random()*S30);while($++<8&&this.seqHi===Ur&&this.seqLo>=r11);if(this.seqHi===Ur&&this.seqLo>=r11)this.seqLo=0;this.inc=Math.random()*(HF4-lQ$)+lQ$|0}setPre(){UF4(this.cbuf);for(let $=0;$<C30;$++)this.buf[$]=s11[this.cbuf[$]%Ww]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=cQ$-1;Q>=C30;Q--){let X=Math.floor($/Ww),J=($-X*Ww)*S30+Z,G=Math.floor(J/Ww),K=J-G*Ww;this.buf[Q]=s11[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=S30)this.seqLo-=S30,this.seqHi+=1;if(this.seqHi>Ur||this.seqHi===Ur&&this.seqLo>=r11)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()}}iQ$.NuidImpl=e11;iQ$.nuid=new e11});var rQ$=b((oQ$)=>{Object.defineProperty(oQ$,"__esModule",{value:!0});oQ$.nuid=oQ$.Nuid=void 0;var tQ$=nQ$();oQ$.Nuid=tQ$.NuidImpl;oQ$.nuid=tQ$.nuid});var v30=b((_30)=>{Object.defineProperty(_30,"__esModule",{value:!0});_30.nuid=_30.Nuid=void 0;var sQ$=rQ$();Object.defineProperty(_30,"Nuid",{enumerable:!0,get:function(){return sQ$.Nuid}});Object.defineProperty(_30,"nuid",{enumerable:!0,get:function(){return sQ$.nuid}})});var Hw=b((eQ$)=>{Object.defineProperty(eQ$,"__esModule",{value:!0});eQ$.DEFAULT_HOST=eQ$.DEFAULT_PORT=eQ$.Match=void 0;eQ$.syncIterator=wF4;eQ$.createInbox=jF4;var OF4=v30(),DF4=gG();eQ$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function wF4($){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 jF4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw DF4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${OF4.nuid.next()}`}eQ$.DEFAULT_PORT=4222;eQ$.DEFAULT_HOST="127.0.0.1"});var Nr=b((XX$)=>{Object.defineProperty(XX$,"__esModule",{value:!0});XX$.DataBuffer=void 0;var ZX$=yG();class QX${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 ZX$.TE.encode($)}static toAscii($){return ZX$.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}}XX$.DataBuffer=QX$});var TT=b((GX$)=>{Object.defineProperty(GX$,"__esModule",{value:!0});GX$.LF=GX$.CR=GX$.CRLF=GX$.CR_LF_LEN=GX$.CR_LF=void 0;GX$.setTransportFactory=MF4;GX$.defaultPort=IF4;GX$.getUrlParseFn=VF4;GX$.newTransport=kF4;GX$.getResolveFn=SF4;GX$.protoLen=JX$;GX$.extractProtocolMessage=CF4;var AF4=yG(),RF4=Hw(),qF4=Nr(),hG;function MF4($){hG=$}function IF4(){return hG!==void 0&&hG.defaultPort!==void 0?hG.defaultPort:RF4.DEFAULT_PORT}function VF4(){return hG!==void 0&&hG.urlParseFn?hG.urlParseFn:void 0}function kF4(){if(!hG||typeof hG.factory!=="function")throw Error("transport fn is not set");return hG.factory()}function SF4(){return hG!==void 0&&hG.dnsResolveFn?hG.dnsResolveFn:void 0}GX$.CR_LF=`\r
2109
2109
  `;GX$.CR_LF_LEN=GX$.CR_LF.length;GX$.CRLF=qF4.DataBuffer.fromAscii(GX$.CR_LF);GX$.CR=new Uint8Array(GX$.CRLF)[0];GX$.LF=new Uint8Array(GX$.CRLF)[1];function JX$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===GX$.CR&&$[Q]===GX$.LF)return Q+1}return 0}function CF4($){let Z=JX$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return AF4.TD.decode(X)}return""}});var Y$1=b((LX$)=>{Object.defineProperty(LX$,"__esModule",{value:!0});LX$.ipV4=UX$;LX$.isIP=cF4;LX$.parseIP=NX$;var Br=4,AT=16,x30=48,FX$=57,WX$=65,uF4=70,HX$=97,lF4=102,X$1=16777215;function UX$($,Z,Q,X){let Y=new Uint8Array(AT);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 cF4($){return NX$($)!==void 0}function NX$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return BX$($);case":":return mF4($)}return}function BX$($){let Z=new Uint8Array(Br);for(let Q=0;Q<Br;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=dF4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return UX$(Z[0],Z[1],Z[2],Z[3])}function mF4($){let Z=new Uint8Array(AT),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<AT){let{n:Y,c:J,ok:G}=iF4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=AT-Br)return;if(X+Br>AT)return;let K=BX$($);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+=Br;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<AT){if(Q<0)return;let Y=AT-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 dF4($){let Z=0,Q=0;for(Z=0;Z<$.length&&x30<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=FX$;Z++)if(Q=Q*10+($.charCodeAt(Z)-x30),Q>=X$1)return{n:X$1,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function iF4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(x30<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=FX$)Z*=16,Z+=$.charCodeAt(Q)-x30;else if(HX$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=lF4)Z*=16,Z+=$.charCodeAt(Q)-HX$+10;else if(WX$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=uF4)Z*=16,Z+=$.charCodeAt(Q)-WX$+10;else break;if(Z>=X$1)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 F$1=b((DX$)=>{Object.defineProperty(DX$,"__esModule",{value:!0});DX$.Servers=DX$.ServerImpl=void 0;DX$.isIPV4OrHostname=OX$;DX$.hostPort=H$1;var J$1=TT(),G$1=oW(),K$1=Y$1(),oF4=Hw(),aF4=gG();function OX$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function W$1($){return!OX$($)}function rF4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function H$1($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=rF4($),W$1($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=W$1($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):oF4.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 Sl{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=H$1($);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,K$1.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}://${W$1(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Sl(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,G$1.shuffle)(Z);return this.resolves=Z,Z}}DX$.ServerImpl=Sl;class f30{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw aF4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,J$1.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}=H$1(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Sl(Y))}if(this.randomize)(0,G$1.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,K$1.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,J$1.getUrlParseFn)();$=Q?Q($):$;let X=new Sl($,Z);if((0,K$1.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 f30.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return f30.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,J$1.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Sl(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,G$1.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}DX$.Servers=f30});var b30=b((zX$)=>{Object.defineProperty(zX$,"__esModule",{value:!0});zX$.QueuedIteratorImpl=void 0;var U$1=oW(),jX$=gG();class EX${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,U$1.deferred)(),this.yields=[],this.iterClosed=(0,U$1.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 jX$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new jX$.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,U$1.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}}zX$.QueuedIteratorImpl=EX$});var N$1=b((RX$)=>{Object.defineProperty(RX$,"__esModule",{value:!0});RX$.MuxSubscription=void 0;var ZU4=Hw(),TX$=gG();class AX${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,ZU4.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 TX$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new TX$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}RX$.MuxSubscription=AX$});var B$1=b((IX$)=>{Object.defineProperty(IX$,"__esModule",{value:!0});IX$.Heartbeat=void 0;var QU4=oW();class MX${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,QU4.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})}}IX$.Heartbeat=MX$});var D$1=b((_X$)=>{Object.defineProperty(_X$,"__esModule",{value:!0});_X$.DenoBuffer=_X$.MAX_SIZE=_X$.AssertionError=void 0;_X$.assert=SX$;_X$.concat=CX$;_X$.append=YU4;_X$.readAll=JU4;_X$.writeAll=GU4;var XU4=yG();class L$1 extends Error{constructor($){super($);this.name="AssertionError"}}_X$.AssertionError=L$1;function SX$($,Z="Assertion failed."){if(!$)throw new L$1(Z)}var kX$=32768;_X$.MAX_SIZE=4294967294;function y30($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function CX$($,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 YU4($,Z){return CX$($,Uint8Array.of(Z))}class O$1{_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($){SX$($<=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=y30(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(XU4.TE.encode($))}write($){let Z=this._grow($.byteLength);return y30($,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)y30(this._buf.subarray(this._off),this._buf);else if(X+$>_X$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,_X$.MAX_SIZE));y30(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,_X$.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(kX$);while(!0){let X=this.capacity-this.length<kX$,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}}}_X$.DenoBuffer=O$1;function JU4($){let Z=new O$1;return Z.readFrom($),Z.bytes()}function GU4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var E$1=b((yX$)=>{Object.defineProperty(yX$,"__esModule",{value:!0});yX$.cc=yX$.State=yX$.Parser=yX$.Kind=void 0;yX$.describe=BU4;var w$1=D$1(),j$1=yG();yX$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function BU4($){let Z,Q="";switch($.kind){case yX$.Kind.MSG:Z="MSG";break;case yX$.Kind.OK:Z="OK";break;case yX$.Kind.ERR:Z="ERR",Q=j$1.TD.decode($.data);break;case yX$.Kind.PING:Z="PING";break;case yX$.Kind.PONG:Z="PONG";break;case yX$.Kind.INFO:Z="INFO",Q=j$1.TD.decode($.data)}return`${Z}: ${Q}`}function xX$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var fX$=48,LU4=57,Cl=67108864;class bX${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=yX$.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 yX$.State.OP_START:switch(Q){case yX$.cc.M:case yX$.cc.m:this.state=yX$.State.OP_M,this.hdr=-1,this.ma=xX$();break;case yX$.cc.H:case yX$.cc.h:this.state=yX$.State.OP_H,this.hdr=0,this.ma=xX$();break;case yX$.cc.P:case yX$.cc.p:this.state=yX$.State.OP_P;break;case yX$.cc.PLUS:this.state=yX$.State.OP_PLUS;break;case yX$.cc.MINUS:this.state=yX$.State.OP_MINUS;break;case yX$.cc.I:case yX$.cc.i:this.state=yX$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_H:switch(Q){case yX$.cc.M:case yX$.cc.m:this.state=yX$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_M:switch(Q){case yX$.cc.S:case yX$.cc.s:this.state=yX$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_MS:switch(Q){case yX$.cc.G:case yX$.cc.g:this.state=yX$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_MSG:switch(Q){case yX$.cc.SPACE:case yX$.cc.TAB:this.state=yX$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_MSG_SPC:switch(Q){case yX$.cc.SPACE:case yX$.cc.TAB:continue;default:this.state=yX$.State.MSG_ARG,this.as=Z}break;case yX$.State.MSG_ARG:switch(Q){case yX$.cc.CR:this.drop=1;break;case yX$.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=yX$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case yX$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:yX$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=yX$.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:yX$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=yX$.State.MSG_END;break;case yX$.State.MSG_END:switch(Q){case yX$.cc.NL:this.drop=0,this.as=Z+1,this.state=yX$.State.OP_START;break;default:continue}break;case yX$.State.OP_PLUS:switch(Q){case yX$.cc.O:case yX$.cc.o:this.state=yX$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_PLUS_O:switch(Q){case yX$.cc.K:case yX$.cc.k:this.state=yX$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_PLUS_OK:switch(Q){case yX$.cc.NL:this.dispatcher.push({kind:yX$.Kind.OK}),this.drop=0,this.state=yX$.State.OP_START;break}break;case yX$.State.OP_MINUS:switch(Q){case yX$.cc.E:case yX$.cc.e:this.state=yX$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_MINUS_E:switch(Q){case yX$.cc.R:case yX$.cc.r:this.state=yX$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_MINUS_ER:switch(Q){case yX$.cc.R:case yX$.cc.r:this.state=yX$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_MINUS_ERR:switch(Q){case yX$.cc.SPACE:case yX$.cc.TAB:this.state=yX$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_MINUS_ERR_SPC:switch(Q){case yX$.cc.SPACE:case yX$.cc.TAB:continue;default:this.state=yX$.State.MINUS_ERR_ARG,this.as=Z}break;case yX$.State.MINUS_ERR_ARG:switch(Q){case yX$.cc.CR:this.drop=1;break;case yX$.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:yX$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=yX$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case yX$.State.OP_P:switch(Q){case yX$.cc.I:case yX$.cc.i:this.state=yX$.State.OP_PI;break;case yX$.cc.O:case yX$.cc.o:this.state=yX$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_PO:switch(Q){case yX$.cc.N:case yX$.cc.n:this.state=yX$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_PON:switch(Q){case yX$.cc.G:case yX$.cc.g:this.state=yX$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_PONG:switch(Q){case yX$.cc.NL:this.dispatcher.push({kind:yX$.Kind.PONG}),this.drop=0,this.state=yX$.State.OP_START;break}break;case yX$.State.OP_PI:switch(Q){case yX$.cc.N:case yX$.cc.n:this.state=yX$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_PIN:switch(Q){case yX$.cc.G:case yX$.cc.g:this.state=yX$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_PING:switch(Q){case yX$.cc.NL:this.dispatcher.push({kind:yX$.Kind.PING}),this.drop=0,this.state=yX$.State.OP_START;break}break;case yX$.State.OP_I:switch(Q){case yX$.cc.N:case yX$.cc.n:this.state=yX$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_IN:switch(Q){case yX$.cc.F:case yX$.cc.f:this.state=yX$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_INF:switch(Q){case yX$.cc.O:case yX$.cc.o:this.state=yX$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_INFO:switch(Q){case yX$.cc.SPACE:case yX$.cc.TAB:this.state=yX$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case yX$.State.OP_INFO_SPC:switch(Q){case yX$.cc.SPACE:case yX$.cc.TAB:continue;default:this.state=yX$.State.INFO_ARG,this.as=Z}break;case yX$.State.INFO_ARG:switch(Q){case yX$.cc.CR:this.drop=1;break;case yX$.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:yX$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=yX$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===yX$.State.MSG_ARG||this.state===yX$.State.MINUS_ERR_ARG||this.state===yX$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new w$1.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===yX$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new w$1.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 w$1.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 yX$.cc.SPACE:case yX$.cc.TAB:case yX$.cc.CR:case yX$.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],Cl);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],Cl);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}: ${j$1.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case yX$.cc.SPACE:case yX$.cc.TAB:case yX$.cc.CR:case yX$.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],Cl),this.ma.size=this.protoParseInt(Z[3],Cl);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],Cl),this.ma.size=this.protoParseInt(Z[4],Cl);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]<fX$||$[X]>LU4)return-1;Q=Q*10+($[X]-fX$)}return Z!==void 0&&Q>Z?-1:Q}}yX$.Parser=bX$;yX$.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};yX$.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 u30=b((hX$)=>{Object.defineProperty(hX$,"__esModule",{value:!0});hX$.MsgHdrsImpl=void 0;hX$.canonicalMIMEHeaderKey=P$1;hX$.headers=wU4;var gX$=yG(),aW=Hw(),h30=gG();function P$1($){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 h30.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 wU4($=0,Z=""){if($===0&&Z!=="")throw h30.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw h30.InvalidArgumentError.format("description","is required");return new _l($,Z)}var z$1="NATS/1.0";class _l{_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 _l,X=gX$.TD.decode($).split(`\r
2110
2110
  `),Y=X[0];if(Y!==z$1){let J=Y.replace(z$1,"").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 $=z$1;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
2111
2111
  ${Z}: ${Q[X]}`;return`${$}\r
@@ -3046,7 +3046,7 @@ ${Q.text}`};Z[Z.length-1]=Y;continue}Z.push(Q)}return Z}function kL({signature:$
3046
3046
 
3047
3047
  `)}function Os4($,Z){let Q=[],X=[],Y=new Set;for(let J of $){if(J.type==="text"&&J.text)Q.push(J.text);for(let G of J.annotations)if(G?.type==="url_citation"&&G.url&&!Y.has(G.url))Y.add(G.url),X.push({url:G.url,title:G.title})}return{text:Q.join(`
3048
3048
 
3049
- `),citations:X,usage:Z}}function Ds4($){let Z=cU($,"text");if(Z)return Z;let Q=$.summary;if(typeof Q==="string")return Q;if(Q&&typeof Q==="object")return cU(Q,"text")??"";return""}function ws4($){let Z=O2($,"steps")??O2($,"outputs")??[],Q=[];for(let X of Z){if(!X||typeof X!=="object")continue;let Y=X,J=cU(Y,"type")??"text";if(J==="thought"||J==="thought_summary"){let K=Ds4(Y);if(K)Q.push({type:"thought_summary",text:K,annotations:[]});continue}let G=O2(Y,"content");if(G){if(J!=="model_output")continue;for(let K of G){if(!K||typeof K!=="object")continue;let W=K;if((cU(W,"type")??"text")!=="text")continue;Q.push({type:"text",text:cU(W,"text")??"",annotations:O2(W,"annotations")??[]})}continue}if(J==="text")Q.push({type:"text",text:cU(Y,"text")??"",annotations:O2(Y,"annotations")??[]})}return Q}function js4($){let Z=$.usage;if(!Z)return{inputTokens:0,outputTokens:0};let Q=K$0(Z,"total_input_tokens")??K$0(Z,"input_tokens")??0,X=K$0(Z,"total_output_tokens")??K$0(Z,"output_tokens")??Math.max(0,(K$0(Z,"total_tokens")??0)-Q);return{inputTokens:Q,outputTokens:X}}function Es4($){let Z=$?.reason;if(Z instanceof Error)return Z;let Q=Error("Aborted");return Q.name="AbortError",Q}function cU($,Z){let Q=$[Z];return typeof Q==="string"?Q:null}function K$0($,Z){let Q=$[Z];return typeof Q==="number"?Q:null}function O2($,Z){let Q=$[Z];return Array.isArray(Q)?Q:null}var Us4="https://generativelanguage.googleapis.com/v1beta/interactions",Ns4=5000,RJ1=30000;var qJ1=L(()=>{w8();AJ1()});var QS$=L(()=>{qJ1()});var XS$=L(()=>{QS$()});function zs4($,Z){return jU("Google listModels",$,{headers:{"x-goog-api-key":Z},signal:AbortSignal.timeout(15000)})}function Ps4($){let Z=$.name.replace("models/","");if(/^imagen-/.test(Z)||/-image/.test(Z)){let Q=["image"];if($.supportedGenerationMethods.includes("generateContent"))Q.push("text");return Q}return[]}var YS$;var JS$=L(()=>{TJ1();XS$();lA();YS$={info:{id:"google",name:"Google Gemini",description:"Google's Gemini family of models",logo:"https://assets.decocache.com/decocms/29370b4b-c623-487b-a6c4-a1637a2c0401/Google__G__logo.svg"},supportedMethods:["api-key"],create($){let Z=G$0({apiKey:$});return{info:this.info,aiSdk:Z,asyncResearch:{canHandle:(Q)=>hd(Q),start:async({modelId:Q,query:X,abortSignal:Y})=>{let{interactionId:J}=await OB0({apiKey:$,agent:Q,query:X,abortSignal:Y});return{jobId:J}},resume:({jobId:Q,abortSignal:X,onProgress:Y,pollIntervalMs:J})=>DB0({apiKey:$,interactionId:Q,abortSignal:X,onProgress:Y,pollIntervalMs:J})},async listModels(){let Q=[],X;do{let Y=new URL("https://generativelanguage.googleapis.com/v1beta/models");if(Y.searchParams.set("pageSize","1000"),X)Y.searchParams.set("pageToken",X);let J=await zs4(Y,$);if(!J.ok)await CX("Google listModels",J);let G=await RU0("Google listModels",J);Q.push(...G.models),X=G.nextPageToken}while(X);return Q.filter((Y)=>Y.lifecycleState!=="DEPRECATED").map((Y)=>{let J=Y.name.replace("models/","");return{m:Y,id:J,capabilities:Ps4(Y)}}).filter(({m:Y,id:J,capabilities:G})=>G.length>0||Y.supportedGenerationMethods.includes("generateContent")||hd(J)).map(({m:Y,id:J,capabilities:G})=>({modelId:J,providerId:"google",title:Y.displayName,description:Y.description,logo:null,capabilities:G,limits:{contextWindow:Y.inputTokenLimit,maxOutputTokens:Y.outputTokenLimit},costs:null,...hd(J)&&{asyncResearch:!0}}))}}}}});import{z as rj}from"zod/v4";import{z as T1}from"zod/v4";import{z as O5}from"zod/v4";import{z as i8}from"zod/v4";import{z as mU}from"zod/v4";import{z as IJ1}from"zod/v4";import{z as D2}from"zod/v4";import{z as U3}from"zod/v4";import{z as VJ1}from"zod/v4";import{z as mQ}from"zod/v4";import{z as vL}from"zod/v4";import{z as YQ}from"zod/v4";import{z as JQ}from"zod/v4";import{z as H$}from"zod/v4";import{z as bH}from"zod/v4";import{z as H6}from"zod/v4";import{z as k7}from"zod/v4";import{z as F3}from"zod/v4";import{z as v$}from"zod/v4";import{z as lJ}from"zod/v4";import{z as p4}from"zod/v4";import{z as yZ}from"zod/v4";import{z as z4}from"zod/v4";import{z as ud}from"zod/v4";import{z as m6}from"zod/v4";import{z as R}from"zod/v4";import{z as CJ1}from"zod/v4";import{z as Z4}from"zod/v4";import{z as j2}from"zod/v4";import{z as g$}from"zod/v4";import{z as cK}from"zod/v4";import{z as z6}from"zod/v4";import{z as fJ1}from"zod/v4";import{z as $5}from"zod/v4";import{z as $7}from"zod/v4";import{z as B16}from"zod/v4";import{z as N3}from"zod/v4";function uS$($){var Z,Q,X,Y,J;let G=Ts4($),K=As4($),W=(K==null?void 0:K.minor)==null&&((Q=(Z=K==null?void 0:K.variant)==null?void 0:Z.startsWith("chat"))!=null?Q:!1),H=(Y=(X=K==null?void 0:K.variant)==null?void 0:X.startsWith("nano"))!=null?Y:!1,F=K!=null&&K.major>=6,U=G!=null&&G>=3||K!=null&&K.major>=5&&!W,N=$.startsWith("gpt-4")||K!=null&&K.major>=5&&!H&&!W||G!=null&&G>=3,B=G!=null||K!=null&&K.major>=5&&!W,O=!F&&K!=null&&(K.major>5||K.major===5&&((J=K.minor)!=null?J:0)>=1);return{supportsFlexProcessing:U,supportsPriorityProcessing:N,supportsConfigurationUpdate:F,supportsAsyncToolCalling:F,supportedReasoningEfforts:F?["low","medium","high","xhigh","max"]:void 0,isReasoningModel:B,systemMessageMode:B?"developer":"system",supportsNonReasoningParameters:O}}function Ts4($){let Z=/^o(\d+)(?:-|$)/.exec($);return Z==null?void 0:Number(Z[1])}function As4($){let Z=/^gpt-(\d+)(?:\.(\d+))?(?:-(.+))?$/.exec($);if(Z==null)return;return{major:Number(Z[1]),minor:Z[2]==null?void 0:Number(Z[2]),variant:Z[3]}}function H$0($){var Z,Q;let X=Ms4($);if(X==null)return;let Y=Is4(X);return Xd({message:X.message,type:(Z=X.type)!=null?Z:void 0,code:(Q=X.code)!=null?Q:void 0,statusCode:Y,isRetryable:Cs4(X,Y),data:$})}async function ZG1({stream:$,getError:Z,isOutputChunk:Q,isAcceptedChunk:X,acceptedGraceMs:Y=50,url:J,requestBodyValues:G,responseHeaders:K}){let[W,H]=$.tee(),F=W.getReader(),U=!1;try{let N=!1;while(!0){let B;if(N){let w=await Rs4(F.read(),Y);if(w.timedOut)return H;B=w.value}else B=await F.read();if(B.done)return H;let O=B.value;if(!O.success)return H;let D=Z(O.value);if(D!=null)throw U=!0,GS$(F).catch(()=>{}),GS$(H.getReader()).catch(()=>{}),qs4({frame:D,url:J,requestBodyValues:G,responseHeaders:K});if(Q(O.value))return H;if(!N&&(X==null?void 0:X(O.value))===!0)N=!0}}finally{if(!U)F.cancel().catch(()=>{}),F.releaseLock()}}async function GS$($){try{while(!(await $.read()).done);}catch(Z){}finally{$.releaseLock()}}async function Rs4($,Z){let Q,X=$.then((Y)=>({timedOut:!1,value:Y}));try{let Y=await Promise.race([X,new Promise((J)=>{Q=setTimeout(()=>J({timedOut:!0}),Z)})]);if(Y.timedOut)X.catch(()=>{});return Y}finally{clearTimeout(Q)}}function qs4({frame:$,url:Z,requestBodyValues:Q,responseHeaders:X}){var Y,J;let G=H$0($);return new N8({message:(Y=G==null?void 0:G.message)!=null?Y:"OpenAI stream failed before any output was generated",url:Z,requestBodyValues:Q,statusCode:(J=G==null?void 0:G.statusCode)!=null?J:500,responseHeaders:X,responseBody:JSON.stringify($),data:$,isRetryable:G==null?void 0:G.isRetryable})}function Ms4($){var Z;let Q=W$0($);if(Q==null)return;if(Q.type==="response.failed"){let Y=W$0(Q.response),J=W$0(Y==null?void 0:Y.error);return typeof(J==null?void 0:J.message)==="string"?{message:J.message,code:KS$(J.code),type:"response.failed"}:void 0}let X=(Z=W$0(Q.error))!=null?Z:Q;return typeof X.message==="string"&&(W$0(Q.error)!=null||typeof X.type==="string"||("code"in X)||("param"in X))?{message:X.message,code:KS$(X.code),type:typeof X.type==="string"?X.type:void 0}:void 0}function Is4($){let Z=ks4($.code);if(Z!=null)return Z;let Q=[$.code,$.type].filter((X)=>typeof X==="string"||typeof X==="number").join(" ").toLowerCase();if(["insufficient_quota","rate_limit"].some((X)=>Q.includes(X)))return 429;if(Q.includes("authentication"))return 401;if(Q.includes("permission"))return 403;if(Q.includes("not_found"))return 404;if(["invalid","bad_request","context_length"].some((X)=>Q.includes(X)))return 400;if(Q.includes("overload"))return 503;if(Q.includes("timeout"))return 504;return 500}function W$0($){return typeof $==="object"&&$!=null?$:void 0}function KS$($){return typeof $==="string"||typeof $==="number"?$:void 0}function Vs4($){return Number.isInteger($)&&$>=400&&$<=599}function ks4($){let Z=typeof $==="string"&&/^\d{3}$/.test($)?Number($):$;return typeof Z==="number"&&Vs4(Z)?Z:void 0}function Ss4($){return $===408||$===409||$===429||$>=500}function Cs4($,Z){if($.code==="insufficient_quota"||$.type==="insufficient_quota")return!1;return Ss4(Z)}function WS$($){var Z,Q,X,Y,J,G,K,W;if($==null)return MU();let H=(Z=$.prompt_tokens)!=null?Z:0,F=(Q=$.completion_tokens)!=null?Q:0,U=(Y=(X=$.prompt_tokens_details)==null?void 0:X.cached_tokens)!=null?Y:0,N=(G=(J=$.prompt_tokens_details)==null?void 0:J.cache_write_tokens)!=null?G:void 0,B=(W=(K=$.completion_tokens_details)==null?void 0:K.reasoning_tokens)!=null?W:0;return{inputTokens:{total:H,noCache:H-U-(N!=null?N:0),cacheRead:U,cacheWrite:N},outputTokens:{total:F,text:Math.max(0,F-B),reasoning:B},raw:$}}function _s4($){return JSON.stringify(typeof $==="object"&&$!==null&&!Array.isArray($)?$:{})}function _L($){var Z;return(Z=$==null?void 0:$.openai)==null?void 0:Z.promptCacheBreakpoint}function vs4({prompt:$,systemMessageMode:Z="system"}){var Q,X;let Y=[],J=[];for(let{role:G,content:K,providerOptions:W}of $)switch(G){case"system":{switch(Z){case"system":{let H=_L(W);Y.push({role:"system",content:H==null?K:[{type:"text",text:K,prompt_cache_breakpoint:H}]});break}case"developer":{let H=_L(W);Y.push({role:"developer",content:H==null?K:[{type:"text",text:K,prompt_cache_breakpoint:H}]});break}case"remove":{J.push({type:"other",message:"system messages are removed for this model"});break}default:throw Error(`Unsupported system message mode: ${Z}`)}break}case"user":{if(K.length===1&&K[0].type==="text"&&_L(K[0].providerOptions)==null){Y.push({role:"user",content:K[0].text});break}Y.push({role:"user",content:K.map((H,F)=>{var U,N,B;switch(H.type){case"text":{let O=_L(H.providerOptions);return{type:"text",text:H.text,...O!=null&&{prompt_cache_breakpoint:O}}}case"file":{let O=_L(H.providerOptions);switch(H.data.type){case"reference":return{type:"file",file:{file_id:hQ({reference:H.data.reference,provider:"openai"})},...O!=null&&{prompt_cache_breakpoint:O}};case"text":throw new r1({functionality:"text file parts"});case"url":case"data":{let D=gQ(H.mediaType);if(D==="image")return{type:"image_url",image_url:{url:H.data.type==="url"?H.data.url.toString():`data:${d9({part:H})};base64,${H4(H.data.data)}`,detail:(N=(U=H.providerOptions)==null?void 0:U.openai)==null?void 0:N.imageDetail},...O!=null&&{prompt_cache_breakpoint:O}};else if(D==="audio"){if(H.data.type==="url")throw new r1({functionality:"audio file parts with URLs"});let w=d9({part:H});switch(w){case"audio/wav":return{type:"input_audio",input_audio:{data:H4(H.data.data),format:"wav"},...O!=null&&{prompt_cache_breakpoint:O}};case"audio/mp3":case"audio/mpeg":return{type:"input_audio",input_audio:{data:H4(H.data.data),format:"mp3"},...O!=null&&{prompt_cache_breakpoint:O}};default:throw new r1({functionality:`audio content parts with media type ${w}`})}}{let w=d9({part:H});if(w!=="application/pdf")throw new r1({functionality:`file part media type ${w}`});if(H.data.type==="url")throw new r1({functionality:"PDF file parts with URLs"});return{type:"file",file:{filename:(B=H.filename)!=null?B:`part-${F}.pdf`,file_data:`data:application/pdf;base64,${H4(H.data.data)}`},...O!=null&&{prompt_cache_breakpoint:O}}}}}}}})});break}case"assistant":{let H="",F=[],U=!1,N=[];for(let B of K)switch(B.type){case"text":{let O=_L(B.providerOptions);H+=B.text,F.push({type:"text",text:B.text,...O!=null&&{prompt_cache_breakpoint:O}}),U||(U=O!=null);break}case"tool-call":{N.push({id:B.toolCallId,type:"function",function:{name:B.toolName,arguments:_s4(B.input)}});break}}Y.push({role:"assistant",content:U?F:N.length>0?H||null:H,tool_calls:N.length>0?N:void 0});break}case"tool":{for(let H of K){if(H.type==="tool-approval-response")continue;let F=H.output,U=(Q=F.type==="content"?F.value.map((B)=>_L(B.providerOptions)).find((B)=>B!=null):_L(F.providerOptions))!=null?Q:_L(H.providerOptions),N;switch(F.type){case"text":case"error-text":N=F.value;break;case"execution-denied":N=(X=F.reason)!=null?X:"Tool call execution denied.";break;case"content":case"json":case"error-json":N=JSON.stringify(F.value);break}Y.push({role:"tool",tool_call_id:H.toolCallId,content:U==null?N:[{type:"text",text:N,prompt_cache_breakpoint:U}]})}break}default:throw Error(`Unsupported role: ${G}`)}return{messages:Y,warnings:J}}function MJ1({id:$,model:Z,created:Q}){return f00({id:$,model:Z,created:Q||void 0})}function HS$($){switch($){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}function F$0($){let Z=!1;return{schema:X($),warnings:Z?[{type:"compatibility",feature:"JSON Schema propertyNames",details:"OpenAI does not support JSON Schema propertyNames. It was removed before sending the schema, so OpenAI will not enforce property-name constraints."}]:[]};function X(G){let K=G.propertyNames;if(K!=null){if(typeof K==="boolean"||K.type!=="string")throw new r1({functionality:"JSON Schema propertyNames that does not use a string schema"});Z=!0}let W={...G};if(delete W.propertyNames,W.properties!=null)W.properties=Y(W.properties);if(W.patternProperties!=null)W.patternProperties=Y(W.patternProperties);if(W.additionalProperties!=null)W.additionalProperties=J(W.additionalProperties);if(W.additionalItems!=null)W.additionalItems=J(W.additionalItems);if(W.items!=null)W.items=Array.isArray(W.items)?W.items.map(J):J(W.items);if(W.contains!=null)W.contains=J(W.contains);if(W.not!=null)W.not=J(W.not);if(W.allOf!=null)W.allOf=W.allOf.map(J);if(W.anyOf!=null)W.anyOf=W.anyOf.map(J);if(W.oneOf!=null)W.oneOf=W.oneOf.map(J);if(W.definitions!=null)W.definitions=Y(W.definitions);if(W.$defs!=null)W.$defs=Y(W.$defs);if(W.dependencies!=null)W.dependencies=Object.fromEntries(Object.entries(W.dependencies).map(([H,F])=>[H,Array.isArray(F)?F:J(F)]));for(let H of["if","then","else"]){let F=W[H];if(F!=null)W[H]=J(F)}return W}function Y(G){return Object.fromEntries(Object.entries(G).map(([K,W])=>[K,J(W)]))}function J(G){return typeof G==="boolean"?G:X(G)}}function ys4({tools:$,toolChoice:Z}){$=($==null?void 0:$.length)?$:void 0;let Q=[];if($==null)return{tools:void 0,toolChoice:void 0,toolWarnings:Q};let X=[];for(let J of $)switch(J.type){case"function":{let G=F$0(J.inputSchema);Q.push(...G.warnings),X.push({type:"function",function:{name:J.name,description:J.description,parameters:G.schema,...J.strict!=null?{strict:J.strict}:{}}});break}default:Q.push({type:"unsupported",feature:`tool type: ${J.type}`});break}if(Z==null)return{tools:X,toolChoice:void 0,toolWarnings:Q};let Y=Z.type;switch(Y){case"auto":case"none":case"required":return{tools:X,toolChoice:Y,toolWarnings:Q};case"tool":return{tools:X,toolChoice:{type:"function",function:{name:Z.toolName}},toolWarnings:Q};default:throw new r1({functionality:`tool choice type: ${Y}`})}}function hs4($){if("error"in $)return!1;return $.choices.some((Z)=>{let Q=Z.delta;return(Q==null?void 0:Q.content)!=null&&Q.content.length>0||(Q==null?void 0:Q.tool_calls)!=null&&Q.tool_calls.length>0||(Q==null?void 0:Q.annotations)!=null&&Q.annotations.length>0})}function FS$($){var Z,Q,X,Y;if($==null)return MU();let J=(Z=$.prompt_tokens)!=null?Z:0,G=(Q=$.completion_tokens)!=null?Q:0;return{inputTokens:{total:(X=$.prompt_tokens)!=null?X:void 0,noCache:J,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:(Y=$.completion_tokens)!=null?Y:void 0,text:G,reasoning:void 0},raw:$}}function us4({prompt:$,user:Z="user",assistant:Q="assistant"}){let X="";if($[0].role==="system")X+=`${$[0].content}
3049
+ `),citations:X,usage:Z}}function Ds4($){let Z=cU($,"text");if(Z)return Z;let Q=$.summary;if(typeof Q==="string")return Q;if(Q&&typeof Q==="object")return cU(Q,"text")??"";return""}function ws4($){let Z=O2($,"steps")??O2($,"outputs")??[],Q=[];for(let X of Z){if(!X||typeof X!=="object")continue;let Y=X,J=cU(Y,"type")??"text";if(J==="thought"||J==="thought_summary"){let K=Ds4(Y);if(K)Q.push({type:"thought_summary",text:K,annotations:[]});continue}let G=O2(Y,"content");if(G){if(J!=="model_output")continue;for(let K of G){if(!K||typeof K!=="object")continue;let W=K;if((cU(W,"type")??"text")!=="text")continue;Q.push({type:"text",text:cU(W,"text")??"",annotations:O2(W,"annotations")??[]})}continue}if(J==="text")Q.push({type:"text",text:cU(Y,"text")??"",annotations:O2(Y,"annotations")??[]})}return Q}function js4($){let Z=$.usage;if(!Z)return{inputTokens:0,outputTokens:0};let Q=K$0(Z,"total_input_tokens")??K$0(Z,"input_tokens")??0,X=K$0(Z,"total_output_tokens")??K$0(Z,"output_tokens")??Math.max(0,(K$0(Z,"total_tokens")??0)-Q);return{inputTokens:Q,outputTokens:X}}function Es4($){let Z=$?.reason;if(Z instanceof Error)return Z;let Q=Error("Aborted");return Q.name="AbortError",Q}function cU($,Z){let Q=$[Z];return typeof Q==="string"?Q:null}function K$0($,Z){let Q=$[Z];return typeof Q==="number"?Q:null}function O2($,Z){let Q=$[Z];return Array.isArray(Q)?Q:null}var Us4="https://generativelanguage.googleapis.com/v1beta/interactions",Ns4=5000,RJ1=30000;var qJ1=L(()=>{w8();AJ1()});var QS$=L(()=>{qJ1()});var XS$=L(()=>{QS$()});function zs4($,Z){return jU("Google listModels",$,{headers:{"x-goog-api-key":Z},signal:AbortSignal.timeout(15000)})}function Ps4($){let Z=$.name.replace("models/","");if(/^imagen-/.test(Z)||/-image/.test(Z)){let Q=["image"];if($.supportedGenerationMethods.includes("generateContent"))Q.push("text");return Q}return[]}var YS$;var JS$=L(()=>{TJ1();XS$();lA();YS$={info:{id:"google",name:"Google Gemini",description:"Google's Gemini family of models",logo:"https://assets.decocache.com/decocms/29370b4b-c623-487b-a6c4-a1637a2c0401/Google__G__logo.svg"},supportedMethods:["api-key"],create($){let Z=G$0({apiKey:$});return{info:this.info,aiSdk:Z,asyncResearch:{canHandle:(Q)=>hd(Q),start:async({modelId:Q,query:X,abortSignal:Y})=>{let{interactionId:J}=await OB0({apiKey:$,agent:Q,query:X,abortSignal:Y});return{jobId:J}},resume:({jobId:Q,abortSignal:X,onProgress:Y,pollIntervalMs:J})=>DB0({apiKey:$,interactionId:Q,abortSignal:X,onProgress:Y,pollIntervalMs:J})},async listModels(){let Q=[],X;do{let Y=new URL("https://generativelanguage.googleapis.com/v1beta/models");if(Y.searchParams.set("pageSize","1000"),X)Y.searchParams.set("pageToken",X);let J=await zs4(Y,$);if(!J.ok)await CX("Google listModels",J);let G=await RU0("Google listModels",J);Q.push(...G.models??[]),X=G.nextPageToken}while(X);return Q.filter((Y)=>Y.lifecycleState!=="DEPRECATED").map((Y)=>{let J=Y.name.replace("models/","");return{m:Y,id:J,capabilities:Ps4(Y)}}).filter(({m:Y,id:J,capabilities:G})=>G.length>0||Y.supportedGenerationMethods.includes("generateContent")||hd(J)).map(({m:Y,id:J,capabilities:G})=>({modelId:J,providerId:"google",title:Y.displayName,description:Y.description,logo:null,capabilities:G,limits:{contextWindow:Y.inputTokenLimit,maxOutputTokens:Y.outputTokenLimit},costs:null,...hd(J)&&{asyncResearch:!0}}))}}}}});import{z as rj}from"zod/v4";import{z as T1}from"zod/v4";import{z as O5}from"zod/v4";import{z as i8}from"zod/v4";import{z as mU}from"zod/v4";import{z as IJ1}from"zod/v4";import{z as D2}from"zod/v4";import{z as U3}from"zod/v4";import{z as VJ1}from"zod/v4";import{z as mQ}from"zod/v4";import{z as vL}from"zod/v4";import{z as YQ}from"zod/v4";import{z as JQ}from"zod/v4";import{z as H$}from"zod/v4";import{z as bH}from"zod/v4";import{z as H6}from"zod/v4";import{z as k7}from"zod/v4";import{z as F3}from"zod/v4";import{z as v$}from"zod/v4";import{z as lJ}from"zod/v4";import{z as p4}from"zod/v4";import{z as yZ}from"zod/v4";import{z as z4}from"zod/v4";import{z as ud}from"zod/v4";import{z as m6}from"zod/v4";import{z as R}from"zod/v4";import{z as CJ1}from"zod/v4";import{z as Z4}from"zod/v4";import{z as j2}from"zod/v4";import{z as g$}from"zod/v4";import{z as cK}from"zod/v4";import{z as z6}from"zod/v4";import{z as fJ1}from"zod/v4";import{z as $5}from"zod/v4";import{z as $7}from"zod/v4";import{z as B16}from"zod/v4";import{z as N3}from"zod/v4";function uS$($){var Z,Q,X,Y,J;let G=Ts4($),K=As4($),W=(K==null?void 0:K.minor)==null&&((Q=(Z=K==null?void 0:K.variant)==null?void 0:Z.startsWith("chat"))!=null?Q:!1),H=(Y=(X=K==null?void 0:K.variant)==null?void 0:X.startsWith("nano"))!=null?Y:!1,F=K!=null&&K.major>=6,U=G!=null&&G>=3||K!=null&&K.major>=5&&!W,N=$.startsWith("gpt-4")||K!=null&&K.major>=5&&!H&&!W||G!=null&&G>=3,B=G!=null||K!=null&&K.major>=5&&!W,O=!F&&K!=null&&(K.major>5||K.major===5&&((J=K.minor)!=null?J:0)>=1);return{supportsFlexProcessing:U,supportsPriorityProcessing:N,supportsConfigurationUpdate:F,supportsAsyncToolCalling:F,supportedReasoningEfforts:F?["low","medium","high","xhigh","max"]:void 0,isReasoningModel:B,systemMessageMode:B?"developer":"system",supportsNonReasoningParameters:O}}function Ts4($){let Z=/^o(\d+)(?:-|$)/.exec($);return Z==null?void 0:Number(Z[1])}function As4($){let Z=/^gpt-(\d+)(?:\.(\d+))?(?:-(.+))?$/.exec($);if(Z==null)return;return{major:Number(Z[1]),minor:Z[2]==null?void 0:Number(Z[2]),variant:Z[3]}}function H$0($){var Z,Q;let X=Ms4($);if(X==null)return;let Y=Is4(X);return Xd({message:X.message,type:(Z=X.type)!=null?Z:void 0,code:(Q=X.code)!=null?Q:void 0,statusCode:Y,isRetryable:Cs4(X,Y),data:$})}async function ZG1({stream:$,getError:Z,isOutputChunk:Q,isAcceptedChunk:X,acceptedGraceMs:Y=50,url:J,requestBodyValues:G,responseHeaders:K}){let[W,H]=$.tee(),F=W.getReader(),U=!1;try{let N=!1;while(!0){let B;if(N){let w=await Rs4(F.read(),Y);if(w.timedOut)return H;B=w.value}else B=await F.read();if(B.done)return H;let O=B.value;if(!O.success)return H;let D=Z(O.value);if(D!=null)throw U=!0,GS$(F).catch(()=>{}),GS$(H.getReader()).catch(()=>{}),qs4({frame:D,url:J,requestBodyValues:G,responseHeaders:K});if(Q(O.value))return H;if(!N&&(X==null?void 0:X(O.value))===!0)N=!0}}finally{if(!U)F.cancel().catch(()=>{}),F.releaseLock()}}async function GS$($){try{while(!(await $.read()).done);}catch(Z){}finally{$.releaseLock()}}async function Rs4($,Z){let Q,X=$.then((Y)=>({timedOut:!1,value:Y}));try{let Y=await Promise.race([X,new Promise((J)=>{Q=setTimeout(()=>J({timedOut:!0}),Z)})]);if(Y.timedOut)X.catch(()=>{});return Y}finally{clearTimeout(Q)}}function qs4({frame:$,url:Z,requestBodyValues:Q,responseHeaders:X}){var Y,J;let G=H$0($);return new N8({message:(Y=G==null?void 0:G.message)!=null?Y:"OpenAI stream failed before any output was generated",url:Z,requestBodyValues:Q,statusCode:(J=G==null?void 0:G.statusCode)!=null?J:500,responseHeaders:X,responseBody:JSON.stringify($),data:$,isRetryable:G==null?void 0:G.isRetryable})}function Ms4($){var Z;let Q=W$0($);if(Q==null)return;if(Q.type==="response.failed"){let Y=W$0(Q.response),J=W$0(Y==null?void 0:Y.error);return typeof(J==null?void 0:J.message)==="string"?{message:J.message,code:KS$(J.code),type:"response.failed"}:void 0}let X=(Z=W$0(Q.error))!=null?Z:Q;return typeof X.message==="string"&&(W$0(Q.error)!=null||typeof X.type==="string"||("code"in X)||("param"in X))?{message:X.message,code:KS$(X.code),type:typeof X.type==="string"?X.type:void 0}:void 0}function Is4($){let Z=ks4($.code);if(Z!=null)return Z;let Q=[$.code,$.type].filter((X)=>typeof X==="string"||typeof X==="number").join(" ").toLowerCase();if(["insufficient_quota","rate_limit"].some((X)=>Q.includes(X)))return 429;if(Q.includes("authentication"))return 401;if(Q.includes("permission"))return 403;if(Q.includes("not_found"))return 404;if(["invalid","bad_request","context_length"].some((X)=>Q.includes(X)))return 400;if(Q.includes("overload"))return 503;if(Q.includes("timeout"))return 504;return 500}function W$0($){return typeof $==="object"&&$!=null?$:void 0}function KS$($){return typeof $==="string"||typeof $==="number"?$:void 0}function Vs4($){return Number.isInteger($)&&$>=400&&$<=599}function ks4($){let Z=typeof $==="string"&&/^\d{3}$/.test($)?Number($):$;return typeof Z==="number"&&Vs4(Z)?Z:void 0}function Ss4($){return $===408||$===409||$===429||$>=500}function Cs4($,Z){if($.code==="insufficient_quota"||$.type==="insufficient_quota")return!1;return Ss4(Z)}function WS$($){var Z,Q,X,Y,J,G,K,W;if($==null)return MU();let H=(Z=$.prompt_tokens)!=null?Z:0,F=(Q=$.completion_tokens)!=null?Q:0,U=(Y=(X=$.prompt_tokens_details)==null?void 0:X.cached_tokens)!=null?Y:0,N=(G=(J=$.prompt_tokens_details)==null?void 0:J.cache_write_tokens)!=null?G:void 0,B=(W=(K=$.completion_tokens_details)==null?void 0:K.reasoning_tokens)!=null?W:0;return{inputTokens:{total:H,noCache:H-U-(N!=null?N:0),cacheRead:U,cacheWrite:N},outputTokens:{total:F,text:Math.max(0,F-B),reasoning:B},raw:$}}function _s4($){return JSON.stringify(typeof $==="object"&&$!==null&&!Array.isArray($)?$:{})}function _L($){var Z;return(Z=$==null?void 0:$.openai)==null?void 0:Z.promptCacheBreakpoint}function vs4({prompt:$,systemMessageMode:Z="system"}){var Q,X;let Y=[],J=[];for(let{role:G,content:K,providerOptions:W}of $)switch(G){case"system":{switch(Z){case"system":{let H=_L(W);Y.push({role:"system",content:H==null?K:[{type:"text",text:K,prompt_cache_breakpoint:H}]});break}case"developer":{let H=_L(W);Y.push({role:"developer",content:H==null?K:[{type:"text",text:K,prompt_cache_breakpoint:H}]});break}case"remove":{J.push({type:"other",message:"system messages are removed for this model"});break}default:throw Error(`Unsupported system message mode: ${Z}`)}break}case"user":{if(K.length===1&&K[0].type==="text"&&_L(K[0].providerOptions)==null){Y.push({role:"user",content:K[0].text});break}Y.push({role:"user",content:K.map((H,F)=>{var U,N,B;switch(H.type){case"text":{let O=_L(H.providerOptions);return{type:"text",text:H.text,...O!=null&&{prompt_cache_breakpoint:O}}}case"file":{let O=_L(H.providerOptions);switch(H.data.type){case"reference":return{type:"file",file:{file_id:hQ({reference:H.data.reference,provider:"openai"})},...O!=null&&{prompt_cache_breakpoint:O}};case"text":throw new r1({functionality:"text file parts"});case"url":case"data":{let D=gQ(H.mediaType);if(D==="image")return{type:"image_url",image_url:{url:H.data.type==="url"?H.data.url.toString():`data:${d9({part:H})};base64,${H4(H.data.data)}`,detail:(N=(U=H.providerOptions)==null?void 0:U.openai)==null?void 0:N.imageDetail},...O!=null&&{prompt_cache_breakpoint:O}};else if(D==="audio"){if(H.data.type==="url")throw new r1({functionality:"audio file parts with URLs"});let w=d9({part:H});switch(w){case"audio/wav":return{type:"input_audio",input_audio:{data:H4(H.data.data),format:"wav"},...O!=null&&{prompt_cache_breakpoint:O}};case"audio/mp3":case"audio/mpeg":return{type:"input_audio",input_audio:{data:H4(H.data.data),format:"mp3"},...O!=null&&{prompt_cache_breakpoint:O}};default:throw new r1({functionality:`audio content parts with media type ${w}`})}}{let w=d9({part:H});if(w!=="application/pdf")throw new r1({functionality:`file part media type ${w}`});if(H.data.type==="url")throw new r1({functionality:"PDF file parts with URLs"});return{type:"file",file:{filename:(B=H.filename)!=null?B:`part-${F}.pdf`,file_data:`data:application/pdf;base64,${H4(H.data.data)}`},...O!=null&&{prompt_cache_breakpoint:O}}}}}}}})});break}case"assistant":{let H="",F=[],U=!1,N=[];for(let B of K)switch(B.type){case"text":{let O=_L(B.providerOptions);H+=B.text,F.push({type:"text",text:B.text,...O!=null&&{prompt_cache_breakpoint:O}}),U||(U=O!=null);break}case"tool-call":{N.push({id:B.toolCallId,type:"function",function:{name:B.toolName,arguments:_s4(B.input)}});break}}Y.push({role:"assistant",content:U?F:N.length>0?H||null:H,tool_calls:N.length>0?N:void 0});break}case"tool":{for(let H of K){if(H.type==="tool-approval-response")continue;let F=H.output,U=(Q=F.type==="content"?F.value.map((B)=>_L(B.providerOptions)).find((B)=>B!=null):_L(F.providerOptions))!=null?Q:_L(H.providerOptions),N;switch(F.type){case"text":case"error-text":N=F.value;break;case"execution-denied":N=(X=F.reason)!=null?X:"Tool call execution denied.";break;case"content":case"json":case"error-json":N=JSON.stringify(F.value);break}Y.push({role:"tool",tool_call_id:H.toolCallId,content:U==null?N:[{type:"text",text:N,prompt_cache_breakpoint:U}]})}break}default:throw Error(`Unsupported role: ${G}`)}return{messages:Y,warnings:J}}function MJ1({id:$,model:Z,created:Q}){return f00({id:$,model:Z,created:Q||void 0})}function HS$($){switch($){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}function F$0($){let Z=!1;return{schema:X($),warnings:Z?[{type:"compatibility",feature:"JSON Schema propertyNames",details:"OpenAI does not support JSON Schema propertyNames. It was removed before sending the schema, so OpenAI will not enforce property-name constraints."}]:[]};function X(G){let K=G.propertyNames;if(K!=null){if(typeof K==="boolean"||K.type!=="string")throw new r1({functionality:"JSON Schema propertyNames that does not use a string schema"});Z=!0}let W={...G};if(delete W.propertyNames,W.properties!=null)W.properties=Y(W.properties);if(W.patternProperties!=null)W.patternProperties=Y(W.patternProperties);if(W.additionalProperties!=null)W.additionalProperties=J(W.additionalProperties);if(W.additionalItems!=null)W.additionalItems=J(W.additionalItems);if(W.items!=null)W.items=Array.isArray(W.items)?W.items.map(J):J(W.items);if(W.contains!=null)W.contains=J(W.contains);if(W.not!=null)W.not=J(W.not);if(W.allOf!=null)W.allOf=W.allOf.map(J);if(W.anyOf!=null)W.anyOf=W.anyOf.map(J);if(W.oneOf!=null)W.oneOf=W.oneOf.map(J);if(W.definitions!=null)W.definitions=Y(W.definitions);if(W.$defs!=null)W.$defs=Y(W.$defs);if(W.dependencies!=null)W.dependencies=Object.fromEntries(Object.entries(W.dependencies).map(([H,F])=>[H,Array.isArray(F)?F:J(F)]));for(let H of["if","then","else"]){let F=W[H];if(F!=null)W[H]=J(F)}return W}function Y(G){return Object.fromEntries(Object.entries(G).map(([K,W])=>[K,J(W)]))}function J(G){return typeof G==="boolean"?G:X(G)}}function ys4({tools:$,toolChoice:Z}){$=($==null?void 0:$.length)?$:void 0;let Q=[];if($==null)return{tools:void 0,toolChoice:void 0,toolWarnings:Q};let X=[];for(let J of $)switch(J.type){case"function":{let G=F$0(J.inputSchema);Q.push(...G.warnings),X.push({type:"function",function:{name:J.name,description:J.description,parameters:G.schema,...J.strict!=null?{strict:J.strict}:{}}});break}default:Q.push({type:"unsupported",feature:`tool type: ${J.type}`});break}if(Z==null)return{tools:X,toolChoice:void 0,toolWarnings:Q};let Y=Z.type;switch(Y){case"auto":case"none":case"required":return{tools:X,toolChoice:Y,toolWarnings:Q};case"tool":return{tools:X,toolChoice:{type:"function",function:{name:Z.toolName}},toolWarnings:Q};default:throw new r1({functionality:`tool choice type: ${Y}`})}}function hs4($){if("error"in $)return!1;return $.choices.some((Z)=>{let Q=Z.delta;return(Q==null?void 0:Q.content)!=null&&Q.content.length>0||(Q==null?void 0:Q.tool_calls)!=null&&Q.tool_calls.length>0||(Q==null?void 0:Q.annotations)!=null&&Q.annotations.length>0})}function FS$($){var Z,Q,X,Y;if($==null)return MU();let J=(Z=$.prompt_tokens)!=null?Z:0,G=(Q=$.completion_tokens)!=null?Q:0;return{inputTokens:{total:(X=$.prompt_tokens)!=null?X:void 0,noCache:J,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:(Y=$.completion_tokens)!=null?Y:void 0,text:G,reasoning:void 0},raw:$}}function us4({prompt:$,user:Z="user",assistant:Q="assistant"}){let X="";if($[0].role==="system")X+=`${$[0].content}
3050
3050
 
3051
3051
  `,$=$.slice(1);for(let{role:Y,content:J}of $)switch(Y){case"system":throw new EU({message:"Unexpected system message in prompt: ${content}",prompt:$});case"user":{let G=J.map((K)=>{switch(K.type){case"text":return K.text}}).filter(Boolean).join("");X+=`${Z}:
3052
3052
  ${G}
@@ -3299,7 +3299,7 @@ history, you MUST NOT call skill for it again \u2014 its instructions are alread
3299
3299
  loaded. Only call skill for a skill whose SKILL.md is NOT yet in the
3300
3300
  conversation.
3301
3301
  </skills-usage>`;var Ki$=()=>{};function CU6($){let Z={};for(let Q of $.split(`
3302
- `)){let X=Q.match(/^([A-Za-z][\w-]*):\s*(.*)$/);if(X?.[1]&&X[2]!==void 0)Z[X[1].toLowerCase()]=X[2].trim()}return Z}function Wi$($){for(let Z of $.split(/\n\s*\n/)){let Q=Z.trim();if(!Q||Q.startsWith("#"))continue;return Q.replace(/\n/g," ")}return null}function Hi$($){let Z=$.match(/^---\n([\s\S]*?)\n---\n?/);if(!Z||Z[1]===void 0)return{name:null,description:Wi$($),disableModelInvocation:!1,body:$};let Q=CU6(Z[1]),X=$.slice(Z[0].length);return{name:Q.name||null,description:Q.description||Wi$(X),disableModelInvocation:Q["disable-model-invocation"]==="true",body:X}}var Fi$=()=>{};class yF1{options;kv=null;codec=XE();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new Ni$.Kvm($).create(_U6,{storage:Ui$.StorageType.Memory,ttl:vU6,maxValueSize:xU6})}async get($){if(!this.kv)return{catalog:null};try{let Z=await this.kv.get($);if(!Z)return{catalog:null};if(Z.operation==="DEL"||Z.operation==="PURGE"||!Z.value?.length)return{catalog:null,revision:Z.revision};let Q=this.codec.decode(Z.value);if(Q===null)return{catalog:null,revision:Z.revision};return Bi$.add(1,{outcome:"hit"}),{catalog:Q,revision:Z.revision}}catch{return{catalog:null}}}async set($,Z,Q){if(!this.kv)return;try{let X=this.codec.encode(Z);if(Q===void 0)await this.kv.create($,X);else await this.kv.update($,X,Q)}catch{}}async invalidate($){if(!this.kv)return;try{await this.kv.put($,fU6)}catch{}}teardown(){this.kv=null}}function Li$(){Bi$.add(1,{outcome:"miss"})}function hF1($){gF1=$}function Oi$(){return gF1}async function Di$($){await gF1?.invalidate($)}var Ui$,Ni$,Bi$,_U6="DECOCMS_SKILL_CATALOGS",vU6=60000,xU6=1048576,fU6,gF1=null;var eV0=L(()=>{h6();Ui$=_(tB(),1),Ni$=_(z$0(),1),Bi$=A$.createCounter("skill_catalog_cache.fetches",{description:"Skill catalog cache fetch outcomes (hit, miss)",unit:"{fetches}"}),fU6=new TextEncoder().encode("null")});function uU6($){let Z=$.lastIndexOf("/");return Z===-1?$:$.slice(Z+1)}async function wi$($,Z,Q){try{let X=(await $.listDir(Z,Q)).filter((J)=>J.kind==="dir");if(X.length===0)return[];let Y=await $.filesExist(Z,X.map((J)=>`${J.path}/SKILL.md`));return X.map((J)=>J.path).filter((J)=>Y.has(`${J}/SKILL.md`)).toSorted()}catch(X){return console.warn(`[skill-catalog] scan failed (${Z}:${Q||"/"})`,X),[]}}async function ji$($,Z){let Q=Array(Z.length).fill(null);return await sm(Z.map((X,Y)=>({dir:X,index:Y})),gU6,async({dir:X,index:Y})=>{try{let J=await $.read(X.volume,`${X.dirPath}/SKILL.md`),G=Hi$(new TextDecoder().decode(J));Q[Y]={...X,name:G.name??uU6(X.dirPath),description:G.description,disableModelInvocation:G.disableModelInvocation}}catch{}}),Q.filter((X)=>X!==null)}async function lU6($,Z,Q,X){let J=(await wi$($,Z,Q)).slice(0,Math.max(0,X.remaining));return X.remaining-=J.length,(await ji$($,J.map((K)=>({volume:Z,dirPath:K})))).map(({dirPath:K,name:W,description:H,disableModelInvocation:F})=>({dirPath:K,name:W,description:H,disableModelInvocation:F}))}async function cU6($){if($k0&&$k0.expires>Date.now())return $k0.entries;let Z={remaining:yU6},Q=vr($),X=[];for(let{set:Y}of wK()){let J=Ow(Y),G=await lU6(Q,J,"",Z);for(let K of G)X.push({id:`${Y}/${K.dirPath}`,name:K.name,description:K.description,disableModelInvocation:K.disableModelInvocation,source:`public:${Y}`,sandboxPath:KN(J,K.dirPath),volume:J,path:K.dirPath})}if(X.length>0)$k0={entries:X,expires:Date.now()+hU6};return X}function mU6($,Z){let Q=qQ(),X=Q?zY(Q,Z):new OK(Z,$.baseUrl);return new DK(X,$.storage.orgFsEntries,Z)}async function dU6($,Z){let Q=(await $.storage.orgRepoSyncs.listEnabledVolumes(Z).catch(()=>[])).toSorted(),X=mU6($,Z),Y=[{volume:K40,base:""},{volume:K40,base:"skills"},...Q.map((W)=>({volume:W,base:""}))],J=await Promise.all(Y.map((W)=>wi$(X,W.volume,W.base))),G=bU6,K=[];for(let[W,H]of J.entries()){let F=H.slice(0,G);G-=F.length;for(let U of F)K.push({volume:Y[W].volume,dirPath:U})}return(await ji$(X,K)).map((W)=>W.volume===K40?{id:`home/${W.dirPath}`,name:W.name,description:W.description,disableModelInvocation:W.disableModelInvocation,source:"home",sandboxPath:KN(K40,W.dirPath),volume:K40,path:W.dirPath}:{id:`repo/${W.volume}/${W.dirPath}`,name:W.name,description:W.description,disableModelInvocation:W.disableModelInvocation,source:`repo:${W.volume}`,sandboxPath:KN(W.volume,W.dirPath),volume:W.volume,path:W.dirPath})}async function Zk0($,Z){let Q=Oi$(),X=await Q?.get(Z)??{catalog:null};if(X.catalog)return X.catalog;Li$();let[Y,J]=await Promise.all([cU6($),dU6($,Z)]),G=[...Y,...J].sort((K,W)=>K.source.localeCompare(W.source)||K.id.localeCompare(W.id));return Q?.set(Z,G,X.revision).catch(()=>{}),G}var bU6=200,yU6=200,gU6=16,hU6=300000,K40="home",$k0=null;var uF1=L(()=>{Fi$();cl();yB();oB();a2();eV0();xT()});async function Ei$($,Z){let Q=$.organization?.id;if(!Q)return null;try{let X=await Zk0($,Q),Y=new Set((Z.metadata?.knowledge??[]).filter((K)=>K.kind==="skill").map((K)=>KN(K.volume,K.path))),J=X.filter((K)=>!K.disableModelInvocation||Y.has(K.sandboxPath));if(J.length===0)return null;let G=J.filter((K)=>Y.has(K.sandboxPath)).map((K)=>K.id);return Gi$(J.map((K)=>({id:K.id,description:K.description,source:K.source})),G)}catch(X){return console.warn("[skill-catalog] failed to render skills block",X),null}}var zi$=L(()=>{Ki$();uF1();a2()});import{SpanStatusCode as Pi$}from"@opentelemetry/api";function iU6($,Z){if($.connection_type!=="VIRTUAL")return!1;if(!Z||_Q(Z))return!1;return $.id===Z}async function Ti$($,Z,Q=!1){let X=$.id,Y=await Z.storage.virtualMcps.findById(X);if(!Y)throw Error(`Virtual MCP not found: ${X}`);return BO(Y,Z,Q)}function nU6($){let Z=$.metadata?.githubRepo?.url;if(!$.organization_id||!Z)return null;let Q=c4.SELF($.organization_id);if($.connections.some((X)=>X.connection_id===Q))return null;return{connection_id:Q,selected_tools:[...pU6],selected_resources:null,selected_prompts:null}}async function BO($,Z,Q=!1,X){let Y=$.connections.map((U)=>U.connection_id),G=(await Z.tracer.startActiveSpan("studio.virtual_mcp.load_connections",{attributes:{"virtual_mcp.id":$.id??"decopilot","virtual_mcp.connection_count":Y.length}},async(U)=>{try{let N=await Promise.all(Y.map((B)=>Z.storage.connections.findById(B)));return U.setStatus({code:Pi$.OK}),N}catch(N){throw U.setStatus({code:Pi$.ERROR,message:N.message}),U.recordException(N),N}finally{U.end()}})).filter((U)=>U!==null&&U.status==="active"&&!iU6(U,$.id));if(X?.additionalConnections?.length)G.unshift(...X.additionalConnections);if($.organization_id){let U=new Set(G.map((B)=>B.id)),{items:N}=await Z.storage.connections.list($.organization_id,{slug:"mcp-github"});for(let B of N)if(B.status==="active"&&!U.has(B.id)&&NE(B))G.push(B)}let K=X?.includeSkillsCatalog?await Ei$(Z,$)??void 0:void 0,W=$,H=nU6($);if(H&&!G.some((U)=>U.id===H.connection_id)){let U=await Z.storage.connections.findById(H.connection_id,$.organization_id);if(U&&U.status==="active")G.push(U),W={...$,connections:[...$.connections,H]}}let F={connections:G,virtualMcp:W,superUser:Q,mcpListCache:jZ()??void 0,listTimeoutMs:X?.listTimeoutMs,skillsBlock:K};return new sV0(F,Z)}function Ai$($,Z,Q=!1,X){if($.connection_type==="VIRTUAL")throw Error(`Concrete MCP connection required, received Virtual MCP: ${$.id}`);let Y=$.description?.trim(),J=[`You are an ephemeral specialist for the "${$.title}" MCP connection (ID: ${$.id}).`,Y||void 0].filter((G)=>G!==void 0).join(`
3302
+ `)){let X=Q.match(/^([A-Za-z][\w-]*):\s*(.*)$/);if(X?.[1]&&X[2]!==void 0)Z[X[1].toLowerCase()]=X[2].trim()}return Z}function Wi$($){for(let Z of $.split(/\n\s*\n/)){let Q=Z.trim();if(!Q||Q.startsWith("#"))continue;return Q.replace(/\n/g," ")}return null}function Hi$($){let Z=$.match(/^---\n([\s\S]*?)\n---\n?/);if(!Z||Z[1]===void 0)return{name:null,description:Wi$($),disableModelInvocation:!1,body:$};let Q=CU6(Z[1]),X=$.slice(Z[0].length);return{name:Q.name||null,description:Q.description||Wi$(X),disableModelInvocation:Q["disable-model-invocation"]==="true",body:X}}var Fi$=()=>{};class yF1{options;kv=null;codec=XE();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new Ni$.Kvm($).create(_U6,{storage:Ui$.StorageType.Memory,ttl:vU6,maxValueSize:xU6})}async get($){if(!this.kv)return{catalog:null};try{let Z=await this.kv.get($);if(!Z)return{catalog:null};if(Z.operation==="DEL"||Z.operation==="PURGE"||!Z.value?.length)return{catalog:null,revision:Z.revision};let Q=this.codec.decode(Z.value);if(Q===null)return{catalog:null,revision:Z.revision};return Bi$.add(1,{outcome:"hit"}),{catalog:Q,revision:Z.revision}}catch{return{catalog:null}}}async set($,Z,Q){if(!this.kv)return;try{let X=this.codec.encode(Z);if(Q===void 0)await this.kv.create($,X);else await this.kv.update($,X,Q)}catch{}}async invalidate($){if(!this.kv)return;try{await this.kv.put($,fU6)}catch{}}teardown(){this.kv=null}}function Li$(){Bi$.add(1,{outcome:"miss"})}function hF1($){gF1=$}function Oi$(){return gF1}async function Di$($){await gF1?.invalidate($)}var Ui$,Ni$,Bi$,_U6="DECOCMS_SKILL_CATALOGS",vU6=60000,xU6=1048576,fU6,gF1=null;var eV0=L(()=>{h6();Ui$=_(tB(),1),Ni$=_(z$0(),1),Bi$=A$.createCounter("skill_catalog_cache.fetches",{description:"Skill catalog cache fetch outcomes (hit, miss)",unit:"{fetches}"}),fU6=new TextEncoder().encode("null")});function uU6($){let Z=$.lastIndexOf("/");return Z===-1?$:$.slice(Z+1)}async function wi$($,Z,Q){try{let X=(await $.listDir(Z,Q)).filter((J)=>J.kind==="dir");if(X.length===0)return[];let Y=await $.filesExist(Z,X.map((J)=>`${J.path}/SKILL.md`));return X.map((J)=>J.path).filter((J)=>Y.has(`${J}/SKILL.md`)).toSorted()}catch(X){return console.warn(`[skill-catalog] scan failed (${Z}:${Q||"/"})`,X),[]}}async function ji$($,Z){let Q=Array(Z.length).fill(null);return await sm(Z.map((X,Y)=>({dir:X,index:Y})),gU6,async({dir:X,index:Y})=>{try{let J=await $.read(X.volume,`${X.dirPath}/SKILL.md`),G=Hi$(new TextDecoder().decode(J));Q[Y]={...X,name:G.name??uU6(X.dirPath),description:G.description,disableModelInvocation:G.disableModelInvocation}}catch{}}),Q.filter((X)=>X!==null)}async function lU6($,Z,Q,X){let J=(await wi$($,Z,Q)).slice(0,Math.max(0,X.remaining));return X.remaining-=J.length,(await ji$($,J.map((K)=>({volume:Z,dirPath:K})))).map(({dirPath:K,name:W,description:H,disableModelInvocation:F})=>({dirPath:K,name:W,description:H,disableModelInvocation:F}))}async function cU6($){if($k0&&$k0.expires>Date.now())return $k0.entries;let Z={remaining:yU6},Q=vr($),X=[];for(let{set:Y}of wK()){let J=Ow(Y),G=await lU6(Q,J,"",Z);for(let K of G)X.push({id:`${Y}/${K.dirPath}`,name:K.name,description:K.description,disableModelInvocation:K.disableModelInvocation,source:`public:${Y}`,sandboxPath:KN(J,K.dirPath),volume:J,path:K.dirPath})}if(X.length>0)$k0={entries:X,expires:Date.now()+hU6};return X}function mU6($,Z){let Q=qQ(),X=Q?zY(Q,Z):new OK(Z,$.baseUrl);return new DK(X,$.storage.orgFsEntries,Z)}async function dU6($,Z){let Q=(await $.storage.orgRepoSyncs.listEnabledVolumes(Z).catch(()=>[])).toSorted(),X=mU6($,Z),Y=[{volume:K40,base:""},{volume:K40,base:"skills"},...Q.map((W)=>({volume:W,base:""}))],J=await Promise.all(Y.map((W)=>wi$(X,W.volume,W.base))),G=bU6,K=[];for(let[W,H]of J.entries()){let F=H.slice(0,G);G-=F.length;for(let U of F)K.push({volume:Y[W].volume,dirPath:U})}return(await ji$(X,K)).map((W)=>W.volume===K40?{id:`home/${W.dirPath}`,name:W.name,description:W.description,disableModelInvocation:W.disableModelInvocation,source:"home",sandboxPath:KN(K40,W.dirPath),volume:K40,path:W.dirPath}:{id:`repo/${W.volume}/${W.dirPath}`,name:W.name,description:W.description,disableModelInvocation:W.disableModelInvocation,source:`repo:${W.volume}`,sandboxPath:KN(W.volume,W.dirPath),volume:W.volume,path:W.dirPath})}async function Zk0($,Z){let Q=Oi$(),X=await Q?.get(Z)??{catalog:null};if(X.catalog)return X.catalog;Li$();let[Y,J]=await Promise.all([cU6($),dU6($,Z)]),G=[...Y,...J].sort((K,W)=>K.source.localeCompare(W.source)||K.id.localeCompare(W.id));return Q?.set(Z,G,X.revision).catch(()=>{}),G}var bU6=200,yU6=200,gU6=16,hU6=300000,K40="home",$k0=null;var uF1=L(()=>{Fi$();cl();yB();oB();a2();eV0();xT()});async function Ei$($,Z){let Q=$.organization?.id;if(!Q)return null;try{let X=await Zk0($,Q),Y=new Set((Z.metadata?.knowledge??[]).filter((K)=>K.kind==="skill").map((K)=>KN(K.volume,K.path))),J=X.filter((K)=>!K.disableModelInvocation||Y.has(K.sandboxPath));if(J.length===0)return null;let G=J.filter((K)=>Y.has(K.sandboxPath)).map((K)=>K.id);return Gi$(J.map((K)=>({id:K.id,description:K.description,source:K.source})),G)}catch(X){return console.warn("[skill-catalog] failed to render skills block",X),null}}var zi$=L(()=>{Ki$();uF1();a2()});import{SpanStatusCode as Pi$}from"@opentelemetry/api";function iU6($,Z){if($.connection_type!=="VIRTUAL")return!1;if(!Z||_Q(Z))return!1;return $.id===Z}async function Ti$($,Z,Q=!1){let X=$.id,Y=await Z.storage.virtualMcps.findById(X);if(!Y)throw Error(`Virtual MCP not found: ${X}`);return BO(Y,Z,Q)}function nU6($){let Z=$.metadata?.githubRepo?.url;if(!$.organization_id||!Z)return null;let Q=c4.SELF($.organization_id);if($.connections.some((X)=>X.connection_id===Q))return null;return{connection_id:Q,selected_tools:[...pU6],selected_resources:null,selected_prompts:null}}async function BO($,Z,Q=!1,X){let Y=$.connections.map((U)=>U.connection_id),G=(await Z.tracer.startActiveSpan("studio.virtual_mcp.load_connections",{attributes:{"virtual_mcp.id":$.id??"decopilot","virtual_mcp.connection_count":Y.length}},async(U)=>{let N=await Promise.allSettled(Y.map((O)=>Z.storage.connections.findById(O))),B=N.filter((O)=>O.status==="rejected");if(B.length>0){U.setStatus({code:Pi$.ERROR,message:`${B.length}/${N.length} connection lookups failed`});for(let O of B)U.recordException(O.reason),console.error(`[virtual-mcp] failed to load a connection for virtual MCP ${$.id??"decopilot"}:`,O.reason)}else U.setStatus({code:Pi$.OK});return U.end(),N.map((O)=>O.status==="fulfilled"?O.value:null)})).filter((U)=>U!==null&&U.status==="active"&&!iU6(U,$.id));if(X?.additionalConnections?.length)G.unshift(...X.additionalConnections);if($.organization_id){let U=new Set(G.map((B)=>B.id)),{items:N}=await Z.storage.connections.list($.organization_id,{slug:"mcp-github"});for(let B of N)if(B.status==="active"&&!U.has(B.id)&&NE(B))G.push(B)}let K=X?.includeSkillsCatalog?await Ei$(Z,$)??void 0:void 0,W=$,H=nU6($);if(H&&!G.some((U)=>U.id===H.connection_id)){let U=await Z.storage.connections.findById(H.connection_id,$.organization_id);if(U&&U.status==="active")G.push(U),W={...$,connections:[...$.connections,H]}}let F={connections:G,virtualMcp:W,superUser:Q,mcpListCache:jZ()??void 0,listTimeoutMs:X?.listTimeoutMs,skillsBlock:K};return new sV0(F,Z)}function Ai$($,Z,Q=!1,X){if($.connection_type==="VIRTUAL")throw Error(`Concrete MCP connection required, received Virtual MCP: ${$.id}`);let Y=$.description?.trim(),J=[`You are an ephemeral specialist for the "${$.title}" MCP connection (ID: ${$.id}).`,Y||void 0].filter((G)=>G!==void 0).join(`
3303
3303
 
3304
3304
  `);return new sV0({connections:[$],superUser:Q,mcpListCache:jZ()??void 0,listTimeoutMs:X?.listTimeoutMs,instructions:J},Z)}var pU6;var mi=L(()=>{Y4();dJ();pJ();Yi$();zi$();pU6=["TASK_BOARD_ITEM_LIST","TASK_BOARD_ITEM_CREATE","TASK_BOARD_ITEM_UPDATE","TASK_BOARD_COMMENT_CREATE"]});async function Qk0($,Z,Q,{superUser:X=!1}={}){let Y=await $.storage.virtualMcps.findById(Q,Z);if(Y?.organization_id===Z){if(Y.status!=="active")throw Error("Agent is not active");let K=await CU0({virtualMcp:Y,organizationId:Z,ctx:$}),W=await BO(K,$,X,{includeSkillsCatalog:!0});return{mcpClient:W,targetKind:"virtual-mcp",targetRef:{id:K.id,instructions:W.getInstructions(),repo:K.metadata?.githubRepo??void 0}}}let J=await $.storage.connections.findById(Q,Z);if(!J||J.organization_id!==Z||J.connection_type==="VIRTUAL")throw Error("Agent or MCP connection not found");if(J.status!=="active")throw Error("MCP connection is not active");let G=Ai$(J,$,X);return{mcpClient:G,targetKind:"connection",targetRef:{id:J.id,instructions:G.getInstructions(),repo:void 0}}}var lF1=L(()=>{mi();$d()});var mF1=b((apZ,Mi$)=>{var{defineProperty:cF1,getOwnPropertyDescriptor:tU6,getOwnPropertyNames:oU6}=Object,aU6=Object.prototype.hasOwnProperty,rU6=($,Z)=>{for(var Q in Z)cF1($,Q,{get:Z[Q],enumerable:!0})},sU6=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of oU6(Z))if(!aU6.call($,Y)&&Y!==Q)cF1($,Y,{get:()=>Z[Y],enumerable:!(X=tU6(Z,Y))||X.enumerable})}return $},eU6=($)=>sU6(cF1({},"__esModule",{value:!0}),$),Ri$={};rU6(Ri$,{SYMBOL_FOR_REQ_CONTEXT:()=>qi$,getContext:()=>$N6});Mi$.exports=eU6(Ri$);var qi$=Symbol.for("@vercel/request-context");function $N6(){return globalThis[qi$]?.get?.()??{}}});var W40=b((rpZ,ki$)=>{var{defineProperty:dF1,getOwnPropertyDescriptor:ZN6,getOwnPropertyNames:QN6}=Object,XN6=Object.prototype.hasOwnProperty,YN6=($,Z)=>{for(var Q in Z)dF1($,Q,{get:Z[Q],enumerable:!0})},JN6=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of QN6(Z))if(!XN6.call($,Y)&&Y!==Q)dF1($,Y,{get:()=>Z[Y],enumerable:!(X=ZN6(Z,Y))||X.enumerable})}return $},GN6=($)=>JN6(dF1({},"__esModule",{value:!0}),$),Ii$={};YN6(Ii$,{VercelOidcTokenError:()=>Vi$});ki$.exports=GN6(Ii$);class Vi$ extends Error{constructor($,Z){super($);this.name="VercelOidcTokenError",this.cause=Z}toString(){if(this.cause)return`${this.name}: ${this.message}: ${this.cause}`;return`${this.name}: ${this.message}`}}});var vi$=b((spZ,_i$)=>{var{create:KN6,defineProperty:Xk0,getOwnPropertyDescriptor:WN6,getOwnPropertyNames:HN6,getPrototypeOf:FN6}=Object,UN6=Object.prototype.hasOwnProperty,NN6=($,Z)=>{for(var Q in Z)Xk0($,Q,{get:Z[Q],enumerable:!0})},Si$=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of HN6(Z))if(!UN6.call($,Y)&&Y!==Q)Xk0($,Y,{get:()=>Z[Y],enumerable:!(X=WN6(Z,Y))||X.enumerable})}return $},pF1=($,Z,Q)=>(Q=$!=null?KN6(FN6($)):{},Si$(Z||!$||!$.__esModule?Xk0(Q,"default",{value:$,enumerable:!0}):Q,$)),BN6=($)=>Si$(Xk0({},"__esModule",{value:!0}),$),Ci$={};NN6(Ci$,{findRootDir:()=>DN6,getUserDataDir:()=>wN6});_i$.exports=BN6(Ci$);var H40=pF1(B0("path")),LN6=pF1(B0("fs")),iF1=pF1(B0("os")),ON6=W40();function DN6(){try{let $=process.cwd();while($!==H40.default.dirname($)){let Z=H40.default.join($,".vercel");if(LN6.default.existsSync(Z))return $;$=H40.default.dirname($)}}catch($){throw new ON6.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function wN6(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(iF1.default.platform()){case"darwin":return H40.default.join(iF1.default.homedir(),"Library/Application Support");case"linux":return H40.default.join(iF1.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}});var ui$=b((epZ,hi$)=>{var{create:jN6,defineProperty:Yk0,getOwnPropertyDescriptor:EN6,getOwnPropertyNames:zN6,getPrototypeOf:PN6}=Object,TN6=Object.prototype.hasOwnProperty,AN6=($,Z)=>{for(var Q in Z)Yk0($,Q,{get:Z[Q],enumerable:!0})},xi$=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of zN6(Z))if(!TN6.call($,Y)&&Y!==Q)Yk0($,Y,{get:()=>Z[Y],enumerable:!(X=EN6(Z,Y))||X.enumerable})}return $},fi$=($,Z,Q)=>(Q=$!=null?jN6(PN6($)):{},xi$(Z||!$||!$.__esModule?Yk0(Q,"default",{value:$,enumerable:!0}):Q,$)),RN6=($)=>xi$(Yk0({},"__esModule",{value:!0}),$),bi$={};AN6(bi$,{isValidAccessToken:()=>VN6,readAuthConfig:()=>MN6,writeAuthConfig:()=>IN6});hi$.exports=RN6(bi$);var F40=fi$(B0("fs")),yi$=fi$(B0("path")),qN6=U40();function gi$(){let $=(0,qN6.getVercelDataDir)();if(!$)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return yi$.join($,"auth.json")}function MN6(){try{let $=gi$();if(!F40.existsSync($))return null;let Z=F40.readFileSync($,"utf8");if(!Z)return null;return JSON.parse(Z)}catch($){return null}}function IN6($){let Z=gi$(),Q=yi$.dirname(Z);if(!F40.existsSync(Q))F40.mkdirSync(Q,{mode:504,recursive:!0});F40.writeFileSync(Z,JSON.stringify($,null,2),{mode:384})}function VN6($,Z=0){if(!$.token)return!1;if(typeof $.expiresAt!=="number")return!0;let Q=Math.floor(Date.now()/1000),X=Z/1000;return $.expiresAt>=Q+X}});var di$=b(($nZ,mi$)=>{var{defineProperty:oF1,getOwnPropertyDescriptor:kN6,getOwnPropertyNames:SN6}=Object,CN6=Object.prototype.hasOwnProperty,_N6=($,Z)=>{for(var Q in Z)oF1($,Q,{get:Z[Q],enumerable:!0})},vN6=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of SN6(Z))if(!CN6.call($,Y)&&Y!==Q)oF1($,Y,{get:()=>Z[Y],enumerable:!(X=kN6(Z,Y))||X.enumerable})}return $},xN6=($)=>vN6(oF1({},"__esModule",{value:!0}),$),li$={};_N6(li$,{processTokenResponse:()=>hN6,refreshTokenRequest:()=>gN6});mi$.exports=xN6(li$);var nF1=B0("os"),fN6="https://vercel.com",bN6="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",ci$=`@vercel/oidc node-${process.version} ${(0,nF1.platform)()} (${(0,nF1.arch)()}) ${(0,nF1.hostname)()}`,tF1=null;async function yN6(){if(tF1)return tF1;let $=`${fN6}/.well-known/openid-configuration`,Z=await fetch($,{headers:{"user-agent":ci$}});if(!Z.ok)throw Error("Failed to discover OAuth endpoints");let Q=await Z.json();if(!Q||typeof Q.token_endpoint!=="string")throw Error("Invalid OAuth discovery response");let X=Q.token_endpoint;return tF1=X,X}async function gN6($){let Z=await yN6();return await fetch(Z,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":ci$},body:new URLSearchParams({client_id:bN6,grant_type:"refresh_token",...$})})}async function hN6($){let Z=await $.json();if(!$.ok){let Q=typeof Z==="object"&&Z&&"error"in Z?String(Z.error):"Token refresh failed";return[Error(Q)]}if(typeof Z!=="object"||Z===null)return[Error("Invalid token response")];if(typeof Z.access_token!=="string")return[Error("Missing access_token in response")];if(Z.token_type!=="Bearer")return[Error("Invalid token_type in response")];if(typeof Z.expires_in!=="number")return[Error("Missing expires_in in response")];return[null,Z]}});var rF1=b((ZnZ,ti$)=>{var{defineProperty:aF1,getOwnPropertyDescriptor:uN6,getOwnPropertyNames:lN6}=Object,cN6=Object.prototype.hasOwnProperty,mN6=($,Z)=>{for(var Q in Z)aF1($,Q,{get:Z[Q],enumerable:!0})},dN6=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of lN6(Z))if(!cN6.call($,Y)&&Y!==Q)aF1($,Y,{get:()=>Z[Y],enumerable:!(X=uN6(Z,Y))||X.enumerable})}return $},iN6=($)=>dN6(aF1({},"__esModule",{value:!0}),$),ii$={};mN6(ii$,{AccessTokenMissingError:()=>pi$,RefreshAccessTokenFailedError:()=>ni$});ti$.exports=iN6(ii$);class pi$ extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login).");this.name="AccessTokenMissingError"}}class ni$ extends Error{constructor($){super("Failed to refresh authentication token.",{cause:$});this.name="RefreshAccessTokenFailedError"}}});var U40=b((QnZ,ei$)=>{var{create:pN6,defineProperty:Jk0,getOwnPropertyDescriptor:nN6,getOwnPropertyNames:tN6,getPrototypeOf:oN6}=Object,aN6=Object.prototype.hasOwnProperty,rN6=($,Z)=>{for(var Q in Z)Jk0($,Q,{get:Z[Q],enumerable:!0})},ai$=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of tN6(Z))if(!aN6.call($,Y)&&Y!==Q)Jk0($,Y,{get:()=>Z[Y],enumerable:!(X=nN6(Z,Y))||X.enumerable})}return $},ri$=($,Z,Q)=>(Q=$!=null?pN6(oN6($)):{},ai$(Z||!$||!$.__esModule?Jk0(Q,"default",{value:$,enumerable:!0}):Q,$)),sN6=($)=>ai$(Jk0({},"__esModule",{value:!0}),$),si$={};rN6(si$,{assertVercelOidcTokenResponse:()=>sF1,findProjectInfo:()=>QB6,getTokenPayload:()=>JB6,getVercelDataDir:()=>eN6,getVercelOidcToken:()=>ZB6,getVercelToken:()=>$B6,isExpired:()=>GB6,loadToken:()=>YB6,saveToken:()=>XB6});ei$.exports=sN6(si$);var N40=ri$(B0("path")),vy=ri$(B0("fs")),pi=W40(),Gk0=vi$(),di=ui$(),oi$=di$(),ii=rF1();function eN6(){let Z=(0,Gk0.getUserDataDir)();if(!Z)return null;return N40.join(Z,"com.vercel.cli")}async function $B6($){let Z=(0,di.readAuthConfig)();if(!Z?.token)throw new ii.AccessTokenMissingError;if((0,di.isValidAccessToken)(Z,$?.expirationBufferMs))return Z.token;if(!Z.refreshToken)throw(0,di.writeAuthConfig)({}),new ii.RefreshAccessTokenFailedError("No refresh token available");try{let Q=await(0,oi$.refreshTokenRequest)({refresh_token:Z.refreshToken}),[X,Y]=await(0,oi$.processTokenResponse)(Q);if(X||!Y)throw(0,di.writeAuthConfig)({}),new ii.RefreshAccessTokenFailedError(X);let J={token:Y.access_token,expiresAt:Math.floor(Date.now()/1000)+Y.expires_in};if(Y.refresh_token)J.refreshToken=Y.refresh_token;return(0,di.writeAuthConfig)(J),J.token}catch(Q){if((0,di.writeAuthConfig)({}),Q instanceof ii.AccessTokenMissingError||Q instanceof ii.RefreshAccessTokenFailedError)throw Q;throw new ii.RefreshAccessTokenFailedError(Q)}}async function ZB6($,Z,Q){let X=`https://api.vercel.com/v1/projects/${Z}/token?source=vercel-oidc-refresh${Q?`&teamId=${Q}`:""}`,Y=await fetch(X,{method:"POST",headers:{Authorization:`Bearer ${$}`}});if(!Y.ok)throw new pi.VercelOidcTokenError(`Failed to refresh OIDC token: ${Y.statusText}`);let J=await Y.json();return sF1(J),J}function sF1($){if(!$||typeof $!=="object")throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in $)||typeof $.token!=="string")throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function QB6(){let $=(0,Gk0.findRootDir)();if(!$)throw new pi.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let Z=N40.join($,".vercel","project.json");if(!vy.existsSync(Z))throw new pi.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let Q=JSON.parse(vy.readFileSync(Z,"utf8"));if(typeof Q.projectId!=="string"&&typeof Q.orgId!=="string")throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:Q.projectId,teamId:Q.orgId}}function XB6($,Z){let Q=(0,Gk0.getUserDataDir)();if(!Q)throw new pi.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let X=N40.join(Q,"com.vercel.token",`${Z}.json`),Y=JSON.stringify($);vy.mkdirSync(N40.dirname(X),{mode:504,recursive:!0}),vy.writeFileSync(X,Y),vy.chmodSync(X,432);return}function YB6($){let Z=(0,Gk0.getUserDataDir)();if(!Z)throw new pi.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let Q=N40.join(Z,"com.vercel.token",`${$}.json`);if(!vy.existsSync(Q))return null;let X=JSON.parse(vy.readFileSync(Q,"utf8"));return sF1(X),X}function JB6($){let Z=$.split(".");if(Z.length!==3)throw new pi.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let Q=Z[1].replace(/-/g,"+").replace(/_/g,"/"),X=Q.padEnd(Q.length+(4-Q.length%4)%4,"=");return JSON.parse(Buffer.from(X,"base64").toString("utf8"))}function GB6($,Z=0){return $.exp*1000<Date.now()+Z}});var Xp$=b((XnZ,Qp$)=>{var{defineProperty:eF1,getOwnPropertyDescriptor:KB6,getOwnPropertyNames:WB6}=Object,HB6=Object.prototype.hasOwnProperty,FB6=($,Z)=>{for(var Q in Z)eF1($,Q,{get:Z[Q],enumerable:!0})},UB6=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of WB6(Z))if(!HB6.call($,Y)&&Y!==Q)eF1($,Y,{get:()=>Z[Y],enumerable:!(X=KB6(Z,Y))||X.enumerable})}return $},NB6=($)=>UB6(eF1({},"__esModule",{value:!0}),$),Zp$={};FB6(Zp$,{refreshToken:()=>BB6});Qp$.exports=NB6(Zp$);var $p$=W40(),$z=U40();async function BB6($){let Z=$?.project,Q=$?.team;if(!Z&&!Q){let Y=(0,$z.findProjectInfo)();Z=Y.projectId,Q=Y.teamId}else if(!Z||!Q){let Y=(0,$z.findProjectInfo)();Z=Z??Y.projectId,Q=Q??Y.teamId}if(!Z)throw new $p$.VercelOidcTokenError("Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`");let X=(0,$z.loadToken)(Z);if(!X||(0,$z.isExpired)((0,$z.getTokenPayload)(X.token),$?.expirationBufferMs)){let Y=await(0,$z.getVercelToken)({expirationBufferMs:$?.expirationBufferMs});if(X=await(0,$z.getVercelOidcToken)(Y,Z,Q),!X)throw new $p$.VercelOidcTokenError("Failed to refresh OIDC token");(0,$z.saveToken)(X,Z)}process.env.VERCEL_OIDC_TOKEN=X.token;return}});var Gp$=b((YnZ,Jp$)=>{var{defineProperty:ZU1,getOwnPropertyDescriptor:LB6,getOwnPropertyNames:OB6}=Object,DB6=Object.prototype.hasOwnProperty,wB6=($,Z)=>{for(var Q in Z)ZU1($,Q,{get:Z[Q],enumerable:!0})},jB6=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of OB6(Z))if(!DB6.call($,Y)&&Y!==Q)ZU1($,Y,{get:()=>Z[Y],enumerable:!(X=LB6(Z,Y))||X.enumerable})}return $},EB6=($)=>jB6(ZU1({},"__esModule",{value:!0}),$),Yp$={};wB6(Yp$,{getVercelOidcToken:()=>TB6,getVercelOidcTokenSync:()=>$U1});Jp$.exports=EB6(Yp$);var zB6=mF1(),PB6=W40();async function TB6($){let Z="",Q;try{Z=$U1()}catch(X){Q=X}try{let[{getTokenPayload:X,isExpired:Y},{refreshToken:J}]=await Promise.all([await Promise.resolve().then(() => _(U40())),await Promise.resolve().then(() => _(Xp$()))]);if(!Z||Y(X(Z),$?.expirationBufferMs))await J($),Z=$U1()}catch(X){let Y=Q instanceof Error?Q.message:"";if(X instanceof Error)Y=`${Y}
3305
3305
  ${X.message}`;if(Y)throw new PB6.VercelOidcTokenError(Y);throw X}return Z}function $U1(){let $=(0,zB6.getContext)().headers?.["x-vercel-oidc-token"]??process.env.VERCEL_OIDC_TOKEN;if(!$)throw Error("The 'x-vercel-oidc-token' header is missing from the request. Do you have the OIDC option enabled in the Vercel project settings?");return $}});var XU1=b((JnZ,Fp$)=>{var{defineProperty:QU1,getOwnPropertyDescriptor:AB6,getOwnPropertyNames:RB6}=Object,qB6=Object.prototype.hasOwnProperty,MB6=($,Z)=>{for(var Q in Z)QU1($,Q,{get:Z[Q],enumerable:!0})},IB6=($,Z,Q,X)=>{if(Z&&typeof Z==="object"||typeof Z==="function"){for(let Y of RB6(Z))if(!qB6.call($,Y)&&Y!==Q)QU1($,Y,{get:()=>Z[Y],enumerable:!(X=AB6(Z,Y))||X.enumerable})}return $},VB6=($)=>IB6(QU1({},"__esModule",{value:!0}),$),Hp$={};MB6(Hp$,{AccessTokenMissingError:()=>Wp$.AccessTokenMissingError,RefreshAccessTokenFailedError:()=>Wp$.RefreshAccessTokenFailedError,getContext:()=>kB6.getContext,getVercelOidcToken:()=>Kp$.getVercelOidcToken,getVercelOidcTokenSync:()=>Kp$.getVercelOidcTokenSync,getVercelToken:()=>SB6.getVercelToken});Fp$.exports=VB6(Hp$);var Kp$=Gp$(),kB6=mF1(),Wp$=rF1(),SB6=U40()});import{any as yB6,array as gB6,boolean as hB6,discriminatedUnion as uB6,enum as lB6,literal as cB6,number as mB6,object as dB6,record as iB6,string as pB6,union as nB6,unknown as tB6}from"zod/v4";function xB6($,Z){return Qn$(CB6,$,Z)}function fB6($,Z){return Qn$(Zn$,$,Z)}function Qn$($,Z,Q){let X=[$,`${_B6}${Z}`];if(Q==null?void 0:Q.teamIdOrSlug)X.push(`${vB6}${bB6(Q.teamIdOrSlug)}`);return X}function bB6($){let Z=new TextEncoder().encode($),Q="";for(let X of Z)Q+=String.fromCharCode(X);return btoa(Q).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/u,"")}async function KU1({response:$,statusCode:Z,defaultMessage:Q="Gateway request failed",cause:X,authMethod:Y,isRetryable:J}){var G;let K=await i4({value:$,schema:LL6});if(!K.success){let N=typeof $==="object"&&$!==null&&"generationId"in $?$.generationId:void 0;return new BL6({message:`Invalid error response format: ${Q}`,statusCode:Z,response:$,validationError:K.error,cause:X,generationId:N,isRetryable:J})}let W=K.value,H=W.error.type,F=W.error.message,U=(G=W.generationId)!=null?G:void 0;switch(H){case"authentication_error":return B40.createContextualError({apiKeyProvided:Y==="api-key",oidcTokenProvided:Y==="oidc",statusCode:Z,cause:X,generationId:U});case"invalid_request_error":return new sB6({message:F,statusCode:Z,cause:X,generationId:U});case"rate_limit_exceeded":return new $L6({message:F,statusCode:Z,cause:X,generationId:U});case"model_not_found":{let N=await i4({value:W.error.param,schema:QL6});return new XL6({message:F,statusCode:Z,modelId:N.success?N.value.modelId:void 0,cause:X,generationId:U})}case"not_found":return new JL6({message:F,statusCode:Z,cause:X,generationId:U});case"internal_server_error":return new Cp$({message:F,statusCode:Z,cause:X,generationId:U});case"failed_dependency":return new WL6({message:F,statusCode:Z,cause:X,generationId:U});case"forbidden":{let N=await i4({value:W.error.param,schema:FL6});return new UL6({message:F,statusCode:Z,cause:X,generationId:U,ruleId:N.success?N.value.ruleId:void 0})}default:return new Cp$({message:F,statusCode:Z,cause:X,generationId:U})}}function OL6($){if($.data!==void 0)return $.data;if($.responseBody!=null)try{return xJ($.responseBody)}catch(Z){return $.responseBody}return{}}function ip$($){if(!($ instanceof Error))return!1;let Z=$.code;if(typeof Z==="string")return["UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT"].includes(Z);return!1}async function g9($,Z){var Q;if(e9.isInstance($))return $;if(ip$($))return dp$.createTimeoutError({originalMessage:$ instanceof Error?$.message:"Unknown error",cause:$});if(N8.isInstance($)){if($.cause&&ip$($.cause))return dp$.createTimeoutError({originalMessage:$.message,cause:$});return await KU1({response:OL6($),statusCode:(Q=$.statusCode)!=null?Q:500,defaultMessage:"Gateway request failed",cause:$,authMethod:Z,isRetryable:$.isRetryable&&($.statusCode==null||$.statusCode<400)?!0:void 0})}return await KU1({response:{},statusCode:500,defaultMessage:$ instanceof Error?`Gateway request failed: ${$.message}`:"Unknown Gateway error",cause:$,authMethod:Z})}async function Y7($){let Z=await i4({value:$[Bn$],schema:wL6});return Z.success?Z.value:void 0}function ML6($){for(let Z of $.prompt){if(!Array.isArray(Z.content))continue;for(let Q of Z.content)if(Q.type==="file"||Q.type==="reasoning-file")Q.data=np$(Q.data);else if(Q.type==="tool-result"&&Q.output.type==="content"){for(let X of Q.output.value)if(X.type==="file")X.data=np$(X.data)}}return $}function np$($){if($.type==="data"){let Z=$.data;if(Z instanceof Uint8Array)return{...$,data:Buffer.from(Z).toString("base64")}}return $}function IL6($){var Z;let Q=(Z=$[0])==null?void 0:Z.modelId;if(Q==null)throw new h8({argument:"requests",message:"The AI Gateway Batch API requires at least one request."});for(let X of $)if(X.modelId!==Q)throw new h8({argument:"requests",message:`The AI Gateway Batch API requires all requests in a batch to use the same model. Found "${Q}" and "${X.modelId}".`});return Q}function VL6($){for(let Z of $){let Q=Z.type;if(Q!=="text")throw new r1({functionality:`batch request type: ${Q}`,message:`The AI Gateway Batch API does not support batch requests with type "${Q}".`})}}function kL6($){let Z=$==null?void 0:$.gateway;if(Z==null||typeof Z!=="object"||Array.isArray(Z))return;let Q=Z.idempotencyKey;return typeof Q==="string"&&Q.length>0?Q:void 0}function SL6($){let Z=$==null?void 0:$.gateway;if(Z==null||typeof Z!=="object"||Array.isArray(Z)||!("idempotencyKey"in Z))return $;let{idempotencyKey:Q,...X}=Z,Y={...$};if(Object.keys(X).length===0)delete Y.gateway;else Y.gateway=X;if(Object.keys(Y).length===0)return;return Y}function JU1($){if(!($ instanceof Error||$ instanceof DOMException))return!1;return $.name==="AbortError"||$.name==="TimeoutError"}function tp$($){var Z,Q,X,Y;let J=_j({total:(Z=$.requestCounts)==null?void 0:Z.total,pending:(Q=$.requestCounts)==null?void 0:Q.pending,completed:(X=$.requestCounts)==null?void 0:X.completed,failed:(Y=$.requestCounts)==null?void 0:Y.failed});return{status:$.status,...$.rawStatus!=null&&{rawStatus:$.rawStatus},...J!=null&&{requestCounts:J},...$.error!=null&&{error:{message:$.error.message,...$.error.type!=null&&{type:$.error.type},...$.error.code!=null&&{code:$.error.code},...$.error.statusCode!=null&&{statusCode:$.error.statusCode}}},...$.createdAt!=null&&{createdAt:$.createdAt},...$.expiresAt!=null&&{expiresAt:$.expiresAt},...$.providerMetadata!=null&&{providerMetadata:$.providerMetadata}}}async function*CL6($){var Z;for await(let Q of $){let X=Q;if(X.status==="succeeded"){let Y=(Z=X.result)==null?void 0:Z.response;if(Y!==void 0&&typeof Y.timestamp==="string")Y.timestamp=new Date(Y.timestamp)}yield X}}function op$($){if($.type==="data"){let Z=$.data;if(Z instanceof Uint8Array)return{...$,data:Buffer.from(Z).toString("base64")}}return $}function ap$($){if($.type==="file"&&$.data instanceof Uint8Array)return{...$,data:_J($.data)};return $}function GU1($){if($.type==="file"&&$.data instanceof Uint8Array)return{...$,data:_J($.data)};return $}function wn$($,Z){let Q=new URL(`${$.replace(/^http/,"ws")}/transcription-model`);return Q.searchParams.set("ai-model-id",Z),Q.toString()}function HO6($){let Z=y00($),Q=Z.authorization,X=(Q==null?void 0:Q.startsWith("Bearer "))?Q.slice(7):void 0;return X==null?[Zn$]:fB6(X,{teamIdOrSlug:Z[Ln$]})}function FO6({webSocket:$,url:Z,protocols:Q,headers:X,startFrame:Y,audio:J,abortSignal:G,authMethod:K}){let W=!1,H=()=>{};return new ReadableStream({start:(F)=>{let U,N=!1,B,O=!1,D;H=(z)=>{if(U!=null)U.cancel().catch(()=>{});else J.cancel().catch(()=>{});D==null||D.close(z)};let w=()=>{if(O=!0,U!=null)U.cancel().catch(()=>{}),U=void 0;else J.cancel().catch(()=>{})},j=(z)=>{if(W)return;W=!0,H(),LO6(F,z,K)},E=async(z)=>{let A=J.getReader();U=A;try{while(!0){let{done:P,value:T}=await A.read();if(P||W)break;let q=typeof T==="string"?m9(T):T;for(let f=0;f<q.length;f+=rp$){if(W)break;z.send(q.subarray(f,f+rp$)),await TU(z)}}}finally{if(A.releaseLock(),U===A)U=void 0}if(!W&&!O)z.send(JSON.stringify({type:pq$}))};D=AU({url:Z,protocols:Q,headers:X,webSocket:$,abortSignal:G,onAbort:(z)=>{if(W)return;W=!0,H(),F.error(z)},onProcessingError:j,onOpen:(z)=>{z.send(JSON.stringify(Y)),E(z).catch(j)},onMessageText:(z)=>{if(W)return;let A=nq$(z);if(A==null)return;if(A.type==="finish"){W=!0,F.enqueue(A),F.close(),H(1000);return}if(A.type==="error")N=!0,B=A.error,w();F.enqueue(A)},onSocketError:()=>{j(Error("Connection error on AI Gateway transcription stream"))},onClose:()=>{if(N){if(W)return;DO6(B,K).then(j);return}j(Error("AI Gateway transcription stream closed before a finish part was received"))}})},cancel:()=>{if(W)return;W=!0,H()}})}async function LO6($,Z,Q){$.error(await g9(Z,Q))}function OO6($){if($!=null&&typeof $==="object"&&"message"in $&&typeof $.message==="string")return $.message;return j8($)}async function DO6($,Z){if(typeof $==="object"&&$!=null&&"message"in $&&typeof $.message==="string"&&"type"in $&&typeof $.type==="string"&&$.type in sp$)return KU1({response:{error:{message:$.message,type:$.type}},statusCode:sp$[$.type],authMethod:Z});return Error(`AI Gateway transcription stream failed: ${OO6($)}`)}function jO6($,Z){let Q=new URL(`${$.replace(/^http/,"ws")}/realtime-model`);return Q.searchParams.set("ai-model-id",Z),Q.toString()}async function uO6(){var $;return($=En$.getContext().headers)==null?void 0:$["x-vercel-id"]}function dO6($={}){var Z,Q;let X=null,Y=null,J=(Z=$.metadataCacheRefreshMillis)!=null?Z:300000,G=0,K=(Q=xj($.baseURL))!=null?Q:"https://ai-gateway.vercel.sh/v4/ai",W=(V)=>Y9({Authorization:`Bearer ${V.token}`,"ai-gateway-protocol-version":cO6,[Bn$]:V.authMethod,...$.teamIdOrSlug!=null?{[Ln$]:$.teamIdOrSlug}:{},...$.headers},`ai-sdk/gateway/${lO6}`),H=async()=>{try{return W(await $n$($))}catch(V){throw B40.createContextualError({apiKeyProvided:!1,oidcTokenProvided:!1,statusCode:401,cause:V})}},F=async()=>{try{return await $n$($)}catch(V){throw B40.createContextualError({apiKeyProvided:!1,oidcTokenProvided:!1,statusCode:401,cause:V})}},U=async(V)=>{iO6();let h=await F(),g=W(h),l=new URL("/v1/realtime/client-secrets",K).toString();try{let{value:u}=await s1({url:l,headers:g,body:{model:V.modelId,...V.routeKind!=null&&{routeKind:V.routeKind},...V.expiresAfterSeconds!=null&&{expiresIn:V.expiresAfterSeconds}},successfulResponseHandler:P1(mO6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(d)=>{var W0;return(W0=j8(d))!=null?W0:"unknown error"}}),fetch:$.fetch});return{token:u.token,...u.expiresAt!=null&&{expiresAt:u.expiresAt}}}catch(u){throw await g9(u,await Y7(g))}},N=()=>{let V=VU({settingValue:void 0,environmentVariableName:"VERCEL_DEPLOYMENT_ID"}),h=VU({settingValue:void 0,environmentVariableName:"VERCEL_ENV"}),g=VU({settingValue:void 0,environmentVariableName:"VERCEL_REGION"}),l=VU({settingValue:void 0,environmentVariableName:"VERCEL_PROJECT_ID"});return async()=>{let u=await uO6();return{...V&&{"ai-o11y-deployment-id":V},...h&&{"ai-o11y-environment":h},...g&&{"ai-o11y-region":g},...u&&{"ai-o11y-request-id":u},...l&&{"ai-o11y-project-id":l}}}},B=(V)=>{return new gL6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()})},O=()=>new qL6({provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()}),D=async()=>{var V,h,g;let l=(g=(h=(V=$._internal)==null?void 0:V.currentDate)==null?void 0:h.call(V).getTime())!=null?g:Date.now();if(!X||l-G>J)G=l,X=new pp$({baseURL:K,headers:H,fetch:$.fetch}).getAvailableModels().then((u)=>{return Y=u,u}).catch(async(u)=>{throw await g9(u,await Y7(await H()))});return Y?Promise.resolve(Y):X},w=async()=>{return new pp$({baseURL:K,headers:H,fetch:$.fetch}).getCredits().catch(async(V)=>{throw await g9(V,await Y7(await H()))})},j=async(V)=>{return new PL6({baseURL:K,headers:H,fetch:$.fetch}).getSpendReport(V).catch(async(h)=>{throw await g9(h,await Y7(await H()))})},E=async(V)=>{return new AL6({baseURL:K,headers:H,fetch:$.fetch}).getGenerationInfo(V).catch(async(h)=>{throw await g9(h,await Y7(await H()))})},z=function(V){if(new.target)throw Error("The Gateway Provider model function cannot be called with the new keyword.");return B(V)};z.specificationVersion="v4",z.getAvailableModels=D,z.getCredits=w,z.getSpendReport=j,z.getGenerationInfo=E,z.imageModel=(V)=>{return new cL6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()})},z.languageModel=B,z.experimental_batch=O;let A=(V)=>{return new hL6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()})};z.embeddingModel=A,z.textEmbeddingModel=A,z.videoModel=(V)=>{return new nL6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()})};let P=(V)=>{return new ZO6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()})};z.rerankingModel=P,z.reranking=P;let T=(V)=>{return new rL6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()})};z.evaluationModel=T,z.evaluation=T;let q=(V)=>{return new YO6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N()})};z.speechModel=q,z.speech=q;let f=(V)=>{return new WO6(V,{provider:"gateway",baseURL:K,headers:H,fetch:$.fetch,o11yHeaders:N(),webSocket:$.webSocket})};z.transcriptionModel=f,z.transcription=f,z.experimental_transcription=Object.assign((V)=>f(V),{getToken:async(V)=>{let h=await U({modelId:V.model,routeKind:"transcription",...V.expiresAfterSeconds!=null&&{expiresAfterSeconds:V.expiresAfterSeconds}});return{token:h.token,url:wn$(K,V.model),...h.expiresAt!=null&&{expiresAt:h.expiresAt}}}});let C=(V)=>new wO6(V,{provider:"gateway.realtime",baseURL:K,teamIdOrSlug:$.teamIdOrSlug,createClientSecret:U});return z.experimental_realtime=Object.assign((V)=>C(V),{getToken:async(V)=>{let{model:h,...g}=V,u=await C(h).doCreateClientSecret(g);return{token:u.token,url:u.url,...u.expiresAt!=null&&{expiresAt:u.expiresAt}}}}),z.chat=z.languageModel,z.embedding=z.embeddingModel,z.image=z.imageModel,z.video=z.videoModel,z.tools=hO6,z}async function $n$($){let Z=VU({settingValue:$.apiKey,environmentVariableName:"AI_GATEWAY_API_KEY"});if(Z)return{token:Z,authMethod:"api-key"};return{token:await zn$.getVercelOidcToken(),authMethod:"oidc"}}function iO6(){if(typeof globalThis.window<"u")throw Error("AI Gateway client secrets must be minted server-side: minting needs your Gateway credential, which must never reach the browser. Call gateway.experimental_realtime.getToken() or gateway.experimental_transcription.getToken() from your server and pass the returned token to the client.")}var En$,zn$,CB6="ai-gateway-realtime.v1",Zn$="ai-gateway-transcription.v1",_B6="ai-gateway-auth.",vB6="ai-gateway-team.",I,oB6="vercel.ai.gateway.error",YU1,Up$,Np$,e9,Xn$="GatewayAuthenticationError",aB6,Bp$,Lp$,Op$,B40,Yn$="GatewayInvalidRequestError",rB6,Dp$,wp$,jp$,sB6,Jn$="GatewayRateLimitError",eB6,Ep$,zp$,Pp$,$L6,Gn$="GatewayModelNotFoundError",ZL6,Tp$,QL6,Ap$,Rp$,XL6,Kn$="GatewayNotFoundError",YL6,qp$,Mp$,Ip$,JL6,Wn$="GatewayInternalServerError",GL6,Vp$,kp$,Sp$,Cp$,Hn$="GatewayFailedDependencyError",KL6,_p$,vp$,xp$,WL6,Fn$="GatewayForbiddenError",HL6,fp$,FL6,bp$,yp$,UL6,Un$="GatewayResponseError",NL6,gp$,hp$,up$,BL6,LL6,Nn$="GatewayTimeoutError",DL6,lp$,cp$,mp$,dp$,Bn$="ai-gateway-auth-method",Ln$="x-vercel-ai-gateway-team",wL6,jL6,pp$=class{constructor($){this.config=$}async getAvailableModels(){try{let{value:$}=await b6({url:`${this.config.baseURL}/config`,validateUrl:!1,headers:this.config.headers?await n1(this.config.headers):void 0,successfulResponseHandler:P1(EL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(Z)=>{var Q;return(Q=j8(Z))!=null?Q:"unknown error"}}),fetch:this.config.fetch});return $}catch($){throw await g9($)}}async getCredits(){try{let $=new URL(this.config.baseURL),{value:Z}=await b6({url:`${$.origin}/v1/credits`,validateUrl:!1,headers:this.config.headers?await n1(this.config.headers):void 0,successfulResponseHandler:P1(zL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(Q)=>{var X;return(X=j8(Q))!=null?X:"unknown error"}}),fetch:this.config.fetch});return Z}catch($){throw await g9($)}}},EL6,zL6,PL6=class{constructor($){this.config=$}async getSpendReport($){try{let Z=new URL(this.config.baseURL),Q=new URLSearchParams;if(Q.set("start_date",$.startDate),Q.set("end_date",$.endDate),$.groupBy)Q.set("group_by",$.groupBy);if($.datePart)Q.set("date_part",$.datePart);if($.userId)Q.set("user_id",$.userId);if($.model)Q.set("model",$.model);if($.provider)Q.set("provider",$.provider);if($.credentialType)Q.set("credential_type",$.credentialType);if($.tags&&$.tags.length>0)Q.set("tags",$.tags.join(","));let{value:X}=await b6({url:`${Z.origin}/v1/report?${Q.toString()}`,validateUrl:!1,headers:this.config.headers?await n1(this.config.headers):void 0,successfulResponseHandler:P1(TL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(Y)=>{var J;return(J=j8(Y))!=null?J:"unknown error"}}),fetch:this.config.fetch});return X}catch(Z){throw await g9(Z)}}},TL6,AL6=class{constructor($){this.config=$}async getGenerationInfo($){try{let Z=new URL(this.config.baseURL),{value:Q}=await b6({url:`${Z.origin}/v1/generation?id=${encodeURIComponent($.id)}`,validateUrl:!1,headers:this.config.headers?await n1(this.config.headers):void 0,successfulResponseHandler:P1(RL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(X)=>{var Y;return(Y=j8(X))!=null?Y:"unknown error"}}),fetch:this.config.fetch});return Q}catch(Z){throw await g9(Z)}}},RL6,qL6=class{constructor($){this.config=$,this.specificationVersion="v4",this.supportedUrls={"*/*":[/.*/]},this.provider=`${$.provider}.batch`}async doStartBatch({requests:$,providerOptions:Z,headers:Q,abortSignal:X,webhookUrl:Y}){var J;VL6($);let G=IL6($),K=this.config.headers?await n1(this.config.headers):void 0,W=kL6(Z),H=SL6(Z);try{let{value:F}=await s1({url:this.getBatchUrl("start"),headers:M1(K,Q,{"ai-model-id":G},await n1(this.config.o11yHeaders),W!=null?{"idempotency-key":W}:void 0),body:{...Y!=null&&{callbackUrl:Y},requests:$.map((U)=>({id:U.id,type:U.type,modelId:U.modelId,options:ML6(U.options)})),...H!=null&&{providerOptions:H}},successfulResponseHandler:P1(bL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(U)=>{var N;return(N=j8(U))!=null?N:"unknown error"}}),...X&&{abortSignal:X},fetch:this.config.fetch});return{batchId:F.batchId,...tp$(F),warnings:(J=F.warnings)!=null?J:[]}}catch(F){if(JU1(F))throw F;throw await g9(F,await Y7(K!=null?K:{}))}}async doGetBatchStatus({batchId:$,headers:Z,abortSignal:Q}){let X=this.config.headers?await n1(this.config.headers):void 0;try{let{value:Y}=await s1({url:this.getBatchUrl("status"),headers:M1(X,Z,await n1(this.config.o11yHeaders)),body:{batchId:$},successfulResponseHandler:P1(yL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(J)=>{var G;return(G=j8(J))!=null?G:"unknown error"}}),...Q&&{abortSignal:Q},fetch:this.config.fetch});return tp$(Y)}catch(Y){if(JU1(Y))throw Y;throw await g9(Y,await Y7(X!=null?X:{}))}}async doGetBatchResults({batchId:$,headers:Z,abortSignal:Q}){let X=this.config.headers?await n1(this.config.headers):void 0;try{let{value:Y}=await s1({url:this.getBatchUrl("results"),headers:M1(X,Z,await n1(this.config.o11yHeaders)),body:{batchId:$},successfulResponseHandler:vj(_L6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(J)=>{var G;return(G=j8(J))!=null?G:"unknown error"}}),...Q&&{abortSignal:Q},fetch:this.config.fetch});return RU(CL6(Y))}catch(Y){if(JU1(Y))throw Y;throw await g9(Y,await Y7(X!=null?X:{}))}}getBatchUrl($){return`${this.config.baseURL}/batch/${$}`}},_L6,vL6,xL6,fL6,On$,bL6,yL6,gL6,hL6,uL6,lL6,cL6,mL6,dL6,iL6,pL6,nL6=class{constructor($,Z){this.modelId=$,this.config=Z,this.specificationVersion="v4",this.maxVideosPerCall=Number.MAX_SAFE_INTEGER}get provider(){return this.config.provider}async doGenerate($){var Z,Q;let{headers:X,abortSignal:Y}=$,J=this.config.headers?await n1(this.config.headers):void 0;try{let{responseHeaders:G,value:K}=await s1({url:this.getUrl(),headers:M1(J,X!=null?X:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders),{accept:"text/event-stream"}),body:this.buildRequestBody($),successfulResponseHandler:async({response:W,url:H,requestBodyValues:F})=>{if(W.body==null)throw new N8({message:"SSE response body is empty",url:H,requestBodyValues:F,statusCode:W.status});let N=ZN0({stream:W.body,schema:tL6}).getReader(),{done:B,value:O}=await N.read();if(N.releaseLock(),B||!O)throw new N8({message:"SSE stream ended without a data event",url:H,requestBodyValues:F,statusCode:W.status});if(!O.success)throw new N8({message:"Failed to parse video SSE event",cause:O.error,url:H,requestBodyValues:F,statusCode:W.status});let D=O.value;if(D.type==="error")throw new N8({message:D.message,statusCode:D.statusCode,url:H,requestBodyValues:F,responseHeaders:Object.fromEntries([...W.headers]),responseBody:JSON.stringify(D),data:{error:{message:D.message,type:D.errorType,param:D.param}}});return{value:{videos:D.videos,warnings:D.warnings,providerMetadata:D.providerMetadata},responseHeaders:Object.fromEntries([...W.headers])}},failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(W)=>{var H;return(H=j8(W))!=null?H:"unknown error"}}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{videos:K.videos,warnings:(Z=K.warnings)!=null?Z:[],providerMetadata:(Q=K.providerMetadata)!=null?Q:void 0,response:{timestamp:new Date,modelId:this.modelId,headers:G}}}catch(G){throw await g9(G,await Y7(J!=null?J:{}))}}async handleWebhookOption({webhook:$}){let{url:Z,received:Q}=await $();return{webhookUrl:Z,received:Q}}async doStart($){var Z,Q;let{headers:X,abortSignal:Y,webhookUrl:J}=$,G=this.config.headers?await n1(this.config.headers):void 0;try{let{responseHeaders:K,value:W}=await s1({url:this.getStartUrl(),headers:M1(G,X!=null?X:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders)),body:{...this.buildRequestBody($),...J&&{callbackUrl:J}},successfulResponseHandler:P1(oL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(H)=>{var F;return(F=j8(H))!=null?F:"unknown error"}}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{operation:W.operation,warnings:(Z=W.warnings)!=null?Z:[],providerMetadata:(Q=W.providerMetadata)!=null?Q:void 0,response:{timestamp:new Date,modelId:this.modelId,headers:K}}}catch(K){throw await g9(K,await Y7(G!=null?G:{}))}}async doStatus({operation:$,abortSignal:Z,headers:Q}){var X,Y,J,G,K,W;let H=this.config.headers?await n1(this.config.headers):void 0;try{let{responseHeaders:F,value:U}=await s1({url:this.getStatusUrl(),headers:M1(H,Q!=null?Q:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders)),body:{operation:$},successfulResponseHandler:P1(aL6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(B)=>{var O;return(O=j8(B))!=null?O:"unknown error"}}),...Z&&{abortSignal:Z},fetch:this.config.fetch}),N={timestamp:new Date,modelId:this.modelId,headers:F};if(U.status==="completed")return{status:"completed",videos:U.videos,warnings:(X=U.warnings)!=null?X:[],providerMetadata:(Y=U.providerMetadata)!=null?Y:void 0,response:N};if(U.status==="error")return{status:"error",error:U.error,providerMetadata:(J=U.providerMetadata)!=null?J:void 0,response:N};if(U.status==="cancelled")return{status:"error",error:"Video generation was cancelled.",providerMetadata:(G=U.providerMetadata)!=null?G:void 0,response:N};return{status:"pending",warnings:(K=U.warnings)!=null?K:[],providerMetadata:(W=U.providerMetadata)!=null?W:void 0,response:N}}catch(F){throw await g9(F,await Y7(H!=null?H:{}))}}buildRequestBody({prompt:$,n:Z,aspectRatio:Q,resolution:X,duration:Y,fps:J,seed:G,generateAudio:K,image:W,frameImages:H,inputReferences:F,providerOptions:U}){return{prompt:$,n:Z,...Q&&{aspectRatio:Q},...X&&{resolution:X},...Y&&{duration:Y},...J&&{fps:J},...G&&{seed:G},...K!==void 0&&{generateAudio:K},...U&&{providerOptions:U},...W&&{image:GU1(W)},...H&&{frameImages:H.map((N)=>({...N,image:GU1(N.image)}))},...F&&{inputReferences:F.map((N)=>GU1(N))}}}getUrl(){return`${this.config.baseURL}/video-model`}getStartUrl(){return`${this.config.baseURL}/video-model/start`}getStatusUrl(){return`${this.config.baseURL}/video-model/status`}getModelConfigHeaders(){return{"ai-video-model-specification-version":"4","ai-model-id":this.modelId}}},ni,Dn$,Kk0,tL6,oL6,aL6,rL6=class{constructor($,Z){this.modelId=$,this.config=Z,this.specificationVersion="v4",this.supportedQuestionTypes=["choice","score","boolean"]}get provider(){return this.config.provider}async doEvaluate({state:$,questions:Z,headers:Q,abortSignal:X,providerOptions:Y}){var J;let G=this.config.headers?await n1(this.config.headers):void 0;try{let{responseHeaders:K,value:W,rawValue:H}=await s1({url:this.getUrl(),headers:M1(G,Q!=null?Q:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders)),body:{state:$,questions:Z,...Y?{providerOptions:Y}:{}},successfulResponseHandler:P1($O6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(F)=>{var U;return(U=j8(F))!=null?U:"unknown error"}}),...X&&{abortSignal:X},fetch:this.config.fetch});return{answers:W.answers,...W.rounding?{rounding:W.rounding}:{},...W.usage?{usage:W.usage}:{},warnings:(J=W.warnings)!=null?J:[],providerMetadata:W.providerMetadata,response:{modelId:this.modelId,headers:K,body:H}}}catch(K){throw await g9(K,await Y7(G!=null?G:{}))}}getUrl(){return`${this.config.baseURL}/evaluation-model`}getModelConfigHeaders(){return{"ai-evaluation-model-specification-version":"4","ai-model-id":this.modelId}}},sL6,eL6,$O6,ZO6=class{constructor($,Z){this.modelId=$,this.config=Z,this.specificationVersion="v4"}get provider(){return this.config.provider}async doRerank({documents:$,query:Z,topN:Q,headers:X,abortSignal:Y,providerOptions:J}){var G;let K=this.config.headers?await n1(this.config.headers):void 0;try{let{responseHeaders:W,value:H,rawValue:F}=await s1({url:this.getUrl(),headers:M1(K,X!=null?X:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders)),body:{documents:$,query:Z,...Q!=null?{topN:Q}:{},...J?{providerOptions:J}:{}},successfulResponseHandler:P1(XO6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(U)=>{var N;return(N=j8(U))!=null?N:"unknown error"}}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{ranking:H.ranking,providerMetadata:H.providerMetadata,response:{headers:W,body:F},warnings:(G=H.warnings)!=null?G:[]}}catch(W){throw await g9(W,await Y7(K!=null?K:{}))}}getUrl(){return`${this.config.baseURL}/reranking-model`}getModelConfigHeaders(){return{"ai-reranking-model-specification-version":"4","ai-model-id":this.modelId}}},QO6,XO6,YO6=class{constructor($,Z){this.modelId=$,this.config=Z,this.specificationVersion="v4"}get provider(){return this.config.provider}async doGenerate({text:$,voice:Z,outputFormat:Q,instructions:X,speed:Y,language:J,providerOptions:G,headers:K,abortSignal:W}){var H;let F=this.config.headers?await n1(this.config.headers):void 0;try{let{responseHeaders:U,value:N,rawValue:B}=await s1({url:this.getUrl(),headers:M1(F,K!=null?K:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders)),body:{text:$,...Z&&{voice:Z},...Q&&{outputFormat:Q},...X&&{instructions:X},...Y!=null&&{speed:Y},...J&&{language:J},...G&&{providerOptions:G}},successfulResponseHandler:P1(KO6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(O)=>{var D;return(D=j8(O))!=null?D:"unknown error"}}),...W&&{abortSignal:W},fetch:this.config.fetch});return{audio:N.audio,warnings:(H=N.warnings)!=null?H:[],providerMetadata:N.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:U,body:B}}}catch(U){throw await g9(U,await Y7(F!=null?F:{}))}}getUrl(){return`${this.config.baseURL}/speech-model`}getModelConfigHeaders(){return{"ai-speech-model-specification-version":"4","ai-model-id":this.modelId}}},JO6,GO6,KO6,WO6=class{constructor($,Z){this.modelId=$,this.config=Z,this.specificationVersion="v4"}get provider(){return this.config.provider}async doGenerate({audio:$,mediaType:Z,providerOptions:Q,headers:X,abortSignal:Y}){var J,G,K,W;let H=this.config.headers?await n1(this.config.headers):void 0;try{let{responseHeaders:F,value:U,rawValue:N}=await s1({url:this.getUrl(),headers:M1(H,X!=null?X:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders)),body:{audio:$ instanceof Uint8Array?_J($):$,mediaType:Z,...Q&&{providerOptions:Q}},successfulResponseHandler:P1(BO6),failedResponseHandler:v4({errorSchema:I.any(),errorToMessage:(B)=>{var O;return(O=j8(B))!=null?O:"unknown error"}}),...Y&&{abortSignal:Y},fetch:this.config.fetch});return{text:U.text,segments:(J=U.segments)!=null?J:[],language:(G=U.language)!=null?G:void 0,durationInSeconds:(K=U.durationInSeconds)!=null?K:void 0,warnings:(W=U.warnings)!=null?W:[],providerMetadata:U.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:F,body:N}}}catch(F){throw await g9(F,await Y7(H!=null?H:{}))}}async doStream($){var Z,Q,X,Y,J;let G=(X=(Q=(Z=this.config._internal)==null?void 0:Z.currentDate)==null?void 0:Q.call(Z))!=null?X:new Date,K=M1(await n1((Y=this.config.headers)!=null?Y:{}),(J=$.headers)!=null?J:{},this.getModelConfigHeaders(),await n1(this.config.o11yHeaders)),W=await Y7(K),H={type:iq$,inputAudioFormat:$.inputAudioFormat,...$.providerOptions!=null&&{providerOptions:$.providerOptions},...$.includeRawChunks!=null&&{includeRawChunks:$.includeRawChunks}};return{stream:FO6({webSocket:this.config.webSocket,url:wn$(this.config.baseURL,this.modelId),protocols:HO6(K),headers:K,startFrame:H,audio:$.audio,abortSignal:$.abortSignal,authMethod:W}),request:{body:H},response:{timestamp:G,modelId:this.modelId}}}getUrl(){return`${this.config.baseURL}/transcription-model`}getModelConfigHeaders(){return{"ai-transcription-model-specification-version":"4","ai-model-id":this.modelId}}},rp$=65536,UO6,NO6,BO6,sp$,wO6=class{constructor($,Z){this.specificationVersion="v4",this.modelId=$,this.provider=Z.provider,this.config=Z}async doCreateClientSecret($){let Z=await this.config.createClientSecret({modelId:this.modelId,...($==null?void 0:$.expiresAfterSeconds)!=null&&{expiresAfterSeconds:$.expiresAfterSeconds}});return{token:Z.token,url:jO6(this.config.baseURL,this.modelId),...Z.expiresAt!=null&&{expiresAt:Z.expiresAt}}}getWebSocketConfig($){return{url:$.url,protocols:xB6($.token,{teamIdOrSlug:this.config.teamIdOrSlug})}}parseServerEvent($){return $}serializeClientEvent($){return $}buildSessionConfig($){return $}},EO6,zO6,PO6,TO6=($={})=>PO6($),AO6,RO6,qO6,MO6=($={})=>qO6($),IO6,VO6,kO6,SO6=($={})=>kO6($),CO6,_O6,vO6,ep$,jn$,xO6,fO6,bO6,yO6,gO6=($={})=>yO6($),hO6,lO6="4.0.87",cO6="0.0.1",mO6,WU1;var Wk0=L(()=>{A0();D1();A0();A0();A0();A0();A0();A0();A0();A0();D1();A0();A0();A0();A0();D1();A0();A0();A0();A0();D1();A0();A0();A0();A0();A0();En$=_(XU1(),1),zn$=_(XU1(),1);I={any:yB6,array:gB6,boolean:hB6,discriminatedUnion:uB6,enum:lB6,literal:cB6,number:mB6,object:dB6,record:iB6,string:pB6,union:nB6,unknown:tB6},YU1=Symbol.for(oB6),e9=class $ extends(Np$=Error,Up$=YU1,Np$){constructor({message:Z,statusCode:Q=500,cause:X,generationId:Y,isRetryable:J=Q!=null&&(Q===408||Q===409||Q===429||Q>=500)}){super(Y?`${Z} [${Y}]`:Z);this[Up$]=!0,this.statusCode=Q,this.cause=X,this.generationId=Y,this.isRetryable=J}static isInstance(Z){return $.hasMarker(Z)}static hasMarker(Z){return typeof Z==="object"&&Z!==null&&YU1 in Z&&Z[YU1]===!0}},aB6=`vercel.ai.gateway.error.${Xn$}`,Bp$=Symbol.for(aB6),B40=class $ extends(Op$=e9,Lp$=Bp$,Op$){constructor({message:Z="Authentication failed",statusCode:Q=401,cause:X,generationId:Y}={}){super({message:Z,statusCode:Q,cause:X,generationId:Y});this[Lp$]=!0,this.name=Xn$,this.type="authentication_error"}static isInstance(Z){return e9.hasMarker(Z)&&Bp$ in Z}static createContextualError({apiKeyProvided:Z,oidcTokenProvided:Q,statusCode:X=401,cause:Y,generationId:J}){let G;if(Z)G=`AI Gateway authentication failed: Invalid API key or token.
@@ -3612,7 +3612,7 @@ ${Y}`:Y}case"media":return"";case"mediaSingle":case"mediaGroup":return Gp(zN(Q),
3612
3612
 
3613
3613
  [\u2026 truncated]`:$}function iP6($){if($<1024)return`${$} B`;if($<1048576)return`${Math.round($/1024)} KB`;return`${($/1048576).toFixed(1)} MB`}function US0($){let Z=[`# ${$.key}: ${$.summary}`,`Status: ${$.status}`,`Link: ${$.url}`,"","## Description",$.description?ke$($.description,mP6):"_(empty)_"];if($.links.length>0){Z.push("","## Web links");for(let Q of $.links)Z.push(`- [${Q.title}](${Q.url})`)}if($.attachments.length>0){Z.push("","## Attachments");for(let Q of $.attachments)Z.push(`- ${Q.filename} (${iP6(Q.size)}) \u2014 attachment id \`${Q.id}\``);Z.push("","Fetch one with `JIRA_ATTACHMENT_DOWNLOAD` and the attachment id; it returns a short-lived URL to `curl` into the sandbox.")}if($.comments.length>0){Z.push("","## Comments");let Q=dP6;for(let[X,Y]of $.comments.entries()){let J=ke$(Y.body,Math.max(0,Q));Z.push(`**${Y.author}** (${Y.created}):`,J,""),Q-=J.length;let G=X===$.comments.length-1;if(Q<=0&&!G){Z.push("[\u2026 older comments omitted]");break}}}return Z.join(`
3614
3614
  `).trim()}function Se$($){let Z=[`# ${$.length} Jira issues`,"This run works on every issue below. Each Jira tool takes `issueKey` to say which one it is about; `JIRA_ISSUE_GET` with a key returns that issue in "+"full \u2014 description, comments, attachments."];for(let Q of $)if(Z.push("",`## ${Q.key}: ${Q.summary}`,`Status: ${Q.status}`,`Link: ${Q.url}`),Q.links.length>0){Z.push("Web links:");for(let X of Q.links)Z.push(`- [${X.title}](${X.url})`)}return Z.join(`
3615
- `).trim()}var mP6=12000,dP6=12000;var pN1=L(()=>{Uz()});function nN1($){if($?.source!=="jira")return[];let Z=$.jira_issue_keys;if(Array.isArray(Z)){let X=Z.filter((Y)=>typeof Y==="string");if(X.length>0)return X}let Q=$.jira_issue_key;return typeof Q==="string"&&Q!==""?[Q]:[]}function Ce$($){if($?.source!=="jira")return[];let Z=$.jira_created_issue_keys;return Array.isArray(Z)?Z.filter((Q)=>typeof Q==="string"):[]}function tN1($,Z){if($.length===0)throw Error("This run is not working on a Jira issue");let Q=Z?.trim().toUpperCase();if(!Q){let Y=$[0];if($.length===1&&Y!==void 0)return{key:Y,inRun:!0};throw Error(`This run works on ${$.length} issues (${$.join(", ")}) \u2014 pass \`issueKey\` to say which one`)}let X=$.find((Y)=>Y.toUpperCase()===Q);if(X)return{key:X,inRun:!0};if(!pP6.test(Q))throw Error(`"${Z}" is not a Jira issue key, e.g. EX-12`);return{key:Q,inRun:!1}}var pP6;var _e$=L(()=>{pP6=/^[A-Z][A-Z0-9_]*-\d+$/});import{z as x$}from"zod";async function t40($,Z,Q=Z40().threadId){let X=F0($),Y=await $.storage.jiraIntegrations.getByOrg(X.id);if(!Y)throw Error("Jira is not connected for this org");let J=await $.storage.threads.get(Q),G=new oQ(Y.siteUrl,Y.email,Y.apiToken),K=tN1(nN1(J?.metadata),Z);if(!K.inRun)await be$(G,Y,K.key);return{integration:Y,client:G,issueKey:K.key}}async function be$($,Z,Q){if(!Z.boardId)throw Error(`Jira has no board connected, so ${Q} cannot be checked \u2014 only this run's issues are reachable`);if(!await $.isOnBoard(Z.boardId,Q))throw Error(`${Q} is not on the connected Jira board`)}function rP6($){return $.slice(0,$.lastIndexOf("-"))}function xe$($,Z){return $.trim().toLowerCase()===Z.trim().toLowerCase()}async function sP6($,Z,Q,X){for(let J of X){let G=await $.getIssue(J);if(xe$(G.fields.summary,Q))return G.key}let{issues:Y}=await $.searchIssues({jql:`project = "${Z}" AND reporter = currentUser() AND statusCategory != Done AND created >= ${oP6} ORDER BY created DESC`});return Y.find((J)=>xe$(J.fields.summary,Q))?.key??null}var fe$=50000,n40,ny,ty,oN1,oy,nP6=100,aN1,tP6=5,oP6="-14d",ve$="Relates",aP6,rN1,ay;var sN1=L(()=>{v0();D9();IN1();Uz();Ve$();pN1();_e$();UO();n40=x$.string().optional().describe("Which issue: any on the board, e.g. one this run's issue links to or one you created. Leave out for this run's issue, when it has one.");ny=p({name:"JIRA_ISSUE_GET",description:"Read a Jira issue \u2014 this run's, or another on the board: summary, "+"status, description, comments, and attachments with the ids JIRA_ATTACHMENT_DOWNLOAD takes.",inputSchema:x$.object({issueKey:n40}),outputSchema:x$.object({key:x$.string(),url:x$.string(),status:x$.string(),markdown:x$.string()}),handler:async($,Z)=>{await Z.access.check();let{integration:Q,client:X,issueKey:Y}=await t40(Z,$.issueKey),J=await Wp(X,Q.siteUrl,Y);return{key:J.key,url:J.url,status:J.status,markdown:US0(J)}}}),ty=p({name:"JIRA_COMMENT_ADD",description:"Post a comment on a Jira issue on the board. Markdown is rendered as Jira rich text, tables included. Leave one when you finish: what you did, and any pull request link. To show evidence, write the image to `org/output/<name>.png` in your working pod and reference it as "+"`![what it shows](org/output/<name>.png)` \u2014 it is uploaded to the issue "+"and rendered inline. Any other URL stays a plain link.",inputSchema:x$.object({issueKey:n40,body:x$.string().min(1).max(fe$)}),outputSchema:x$.object({commentId:x$.string(),embeddedImages:x$.array(x$.string())}),handler:async($,Z)=>{await Z.access.check();let{client:Q,issueKey:X}=await t40(Z,$.issueKey),Y=await Ie$({client:Q,orgFs:Z.orgFs,issueIdOrKey:X,threadId:q3.getStore()?.threadId??null,markdown:$.body}),{id:J}=await Q.addComment(X,$.body,{media:Y});return{commentId:J,embeddedImages:[...Y.keys()]}}}),oN1=p({name:"JIRA_REMOTE_LINK_ADD",description:"Put a link on a Jira issue on the board \u2014 its pull request, "+"its deploy preview. A link on the card is what a person clicks; the same URL inside a comment is not. Posting the same `key` again updates that link instead of adding a second.",inputSchema:x$.object({issueKey:n40,url:x$.string().min(1),title:x$.string().min(1).max(255),summary:x$.string().max(1000).optional(),key:x$.string().max(255).optional().describe("Stable id for this link, e.g. `pull-request` or `preview`.")}),outputSchema:x$.object({linkId:x$.number()}),handler:async($,Z)=>{await Z.access.check();let{client:Q,issueKey:X}=await t40(Z,$.issueKey),Y;try{Y=new URL($.url)}catch{throw Error(`"${$.url}" is not an absolute URL`)}if(Y.protocol!=="https:"&&Y.protocol!=="http:")throw Error(`${Y.protocol} is not a linkable scheme`);let{id:J}=await Q.addRemoteLink(X,{url:Y.toString(),title:$.title,...$.summary?{summary:$.summary}:{},...$.key?{globalId:`studio-${X}-${$.key}`}:{}});return{linkId:J}}}),oy=p({name:"JIRA_ISSUE_TRANSITION",description:"Move a Jira issue on the board to another status, by the status name (case-insensitive). Only a status the issue's workflow can reach from where it is; the error names the reachable ones.",inputSchema:x$.object({issueKey:n40,toStatus:x$.string().min(1)}),outputSchema:x$.object({status:x$.string()}),handler:async($,Z)=>{await Z.access.check();let{client:Q,issueKey:X}=await t40(Z,$.issueKey),Y=await Q.listTransitions(X),J=$.toStatus.trim().toLowerCase(),G=Y.find((K)=>K.to.name.toLowerCase()===J||K.name.toLowerCase()===J);if(!G)throw Error(`The issue cannot move to "${$.toStatus}" from here \u2014 reachable: ${Y.map((K)=>K.to.name).join(", ")||"none"}`);return await Q.transitionIssue(X,G.id),{status:G.to.name}}}),aN1=p({name:"JIRA_ISSUE_SEARCH",description:'Find issues on the board with JQL, e.g. `status = "Code Review"` or `text ~ "checkout" ORDER BY updated DESC`. The query is narrowed to the board, so name only the condition. Returns keys to read in full with JIRA_ISSUE_GET.',inputSchema:x$.object({jql:x$.string().max(2000),limit:x$.number().int().min(1).max(nP6).default(20)}),outputSchema:x$.object({issues:x$.array(x$.object({key:x$.string(),url:x$.string(),summary:x$.string(),status:x$.string(),type:x$.string().nullable(),updated:x$.string()})),truncated:x$.boolean()}),handler:async($,Z)=>{await Z.access.check();let Q=F0(Z),X=await Z.storage.jiraIntegrations.getByOrg(Q.id);if(!X)throw Error("Jira is not connected for this org");if(!X.boardId)throw Error("Jira has no board connected to search");let Y=new oQ(X.siteUrl,X.email,X.apiToken),J=await Y.getBoardScopeJql(X.boardId),G=await Y.searchIssues({jql:cN1(J,$.jql)});return{issues:G.issues.slice(0,$.limit).map((K)=>({key:K.key,url:Kp(X.siteUrl,K.key),summary:K.fields.summary,status:K.fields.status.name,type:K.fields.issuetype?.name??null,updated:K.fields.updated})),truncated:G.issues.length>$.limit||G.nextPageToken!==null}}}),aP6=/^[A-Z][A-Z0-9_]*$/;rN1=p({name:"JIRA_ISSUE_CREATE",description:"Create a Jira issue in the project this run works in \u2014 a release card, "+"a follow-up found along the way \u2014 then comment on it, link it and move "+"it with the other Jira tools by its key. If an open issue this integration created in the last two weeks already has this exact summary, that one is returned instead (`created: false`) and still linked, so calling again after a restart does not duplicate it. Write the full description now; there is no tool to edit it later.",inputSchema:x$.object({summary:x$.string().trim().min(1).max(255),issueType:x$.string().min(1).describe("The issue type's name as the Jira API names it (often English, e.g. Story or Task, even when the UI shows a translation). The error lists the project's types."),description:x$.string().max(fe$).optional().describe("Markdown, rendered as Jira rich text, tables included."),relatesTo:x$.array(x$.string().min(1)).max(100).default([]).describe("Issues on the board to link to the new one as `Relates`, e.g. the cards a release ships."),sprint:x$.enum(["active","none"]).default("none").describe("`active` puts it in the board's running sprint, which is what a sprint board shows; `none` leaves it in the backlog."),storyPoints:x$.number().min(0).max(1000).optional()}),outputSchema:x$.object({key:x$.string(),url:x$.string(),created:x$.boolean(),linked:x$.array(x$.string()),notLinked:x$.array(x$.object({key:x$.string(),reason:x$.string()}))}),handler:async($,Z)=>{await Z.access.check();let Q=F0(Z),{threadId:X}=Z40(),Y=await Z.storage.jiraIntegrations.getByOrg(Q.id);if(!Y)throw Error("Jira is not connected for this org");let J=await Z.storage.threads.get(X),G=nN1(J?.metadata);if(G.length===0)throw Error("This run is not working on a Jira issue");let K=[...new Set(G.map(rP6))],W=K[0];if(K.length!==1||!W||!aP6.test(W))throw Error(`This run works in ${K.join(", ")}; it can only create in a single project`);let H=new oQ(Y.siteUrl,Y.email,Y.apiToken),F=[];for(let j of $.relatesTo){let E=tN1(G,j);if(F.includes(E.key))continue;if(!E.inRun)await be$(H,Y,E.key);F.push(E.key)}let U=Ce$(J?.metadata),N=await sP6(H,W,$.summary,U),B=N===null;if(N===null){if(U.length>=tP6)throw Error(`This run already created ${U.length} issues (${U.join(", ")}), the most one run may`);let j=await H.getCreateMeta(W,$.issueType),E={};if($.storyPoints!==void 0){if(!j.storyPointsFieldId)throw Error(`${j.issueTypeName} in ${W} has no story points field to set`);E[j.storyPointsFieldId]=$.storyPoints}if($.sprint==="active"){if(!Y.boardId||!j.sprintFieldId)throw Error(`${j.issueTypeName} in ${W} cannot go in a sprint \u2014 pass sprint: "none"`);let z=await H.getActiveSprint(Y.boardId);if(!z)throw Error('The board has no active sprint \u2014 pass sprint: "none"');E[j.sprintFieldId]=z.id}({key:N}=await H.createIssue({projectKey:W,issueTypeId:j.issueTypeId,summary:$.summary,description:$.description,fields:E})),await Z.storage.threads.recordJiraIssueCreated(X,N)}let O=B?new Set:new Set(await H.listLinkedIssueKeys(N,ve$)),D=[],w=[];for(let j of F){if(O.has(j)){D.push(j);continue}try{await H.linkIssues(ve$,j,N),D.push(j)}catch(E){w.push({key:j,reason:E instanceof Error?E.message:String(E)})}}return{key:N,url:Kp(Y.siteUrl,N),created:B,linked:D,notLinked:w}}});ay=p({name:"JIRA_ATTACHMENT_DOWNLOAD",description:"Get a short-lived URL for one attachment of a Jira issue on the board, to `curl -L -o <path>` into the sandbox. Attachment ids are listed by JIRA_ISSUE_GET. The URL needs no credential and expires.",inputSchema:x$.object({issueKey:n40,attachmentId:x$.string().min(1)}),outputSchema:x$.object({url:x$.string(),filename:x$.string(),expiresAt:x$.string(),command:x$.string()}),handler:async($,Z)=>{await Z.access.check();let{integration:Q,client:X,issueKey:Y}=await t40(Z,$.issueKey),J=(await X.listAttachments(Y)).find((F)=>F.id===$.attachmentId);if(!J)throw Error(`${Y} has no attachment "${$.attachmentId}" \u2014 JIRA_ISSUE_GET lists the ids`);let G=Date.now()+ls$,K=ms$({organizationId:Q.organizationId,attachmentId:J.id,expiresAt:G}),W=`${c5()}/api/_jira/attachments/${K}`,H=J.filename.replace(/[^\w.-]+/g,"_");return{url:W,filename:J.filename,expiresAt:new Date(G).toISOString(),command:`curl -fsSL -o ${JSON.stringify(H)} ${JSON.stringify(W)}`}}})});function ye$($,Z){let Q=(X)=>q3.run({threadId:Z},X);return{JIRA_ISSUE_GET:n$({description:ny.description,inputSchema:r(ny.inputSchema),execute:(X)=>Q(()=>ny.execute(X,$))}),JIRA_COMMENT_ADD:n$({description:ty.description,inputSchema:r(ty.inputSchema),execute:(X)=>Q(()=>ty.execute(X,$))}),JIRA_ISSUE_TRANSITION:n$({description:oy.description,inputSchema:r(oy.inputSchema),execute:(X)=>Q(()=>oy.execute(X,$))}),JIRA_ATTACHMENT_DOWNLOAD:n$({description:ay.description,inputSchema:r(ay.inputSchema),execute:(X)=>Q(()=>ay.execute(X,$))})}}var ge$=L(()=>{g4();sN1();UO()});function ZB1($){let Z=$.type;if(typeof Z!=="string")return!1;if(Z==="text"||Z==="reasoning")return $.state!=="streaming";if(Z==="step-start")return!1;if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="approval-requested"||Z==="tool-user_ask"&&$.state==="input-available"||$.state==="output-available"||$.state==="output-error"||$.state==="output-denied";return!0}function eN1($){let Z=$.type??"";if(Z==="reasoning")return"reasoning";if(Z==="file")return"file";if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="output-available"||$.state==="output-error"||$.state==="output-denied"?"tool_result":"tool_call";return"text"}class QB1{ctx;base;seqByPart=new Map;emitted=new Set;finished=new Set;partKeyByRowId=new Map;finishMessageIdByRowId=new Map;nextSeq=0;constructor($){this.ctx=$;this.base=$.baseTimeMs??Date.now()}hasEmittedContentFor($){let Z=`${$}#`;for(let Q of this.emitted)if(Q.startsWith(Z))return!0;return!1}seqFor($){let Z=this.seqByPart.get($);if(Z!==void 0)return Z;let Q=this.nextSeq++;return this.seqByPart.set($,Q),Q}row($,Z,Q,X,Y,J=null){return{id:`${this.ctx.runId}:${$}:${Q}`,seq:Q,org_id:this.ctx.orgId,thread_id:this.ctx.threadId,run_id:this.ctx.runId,message_id:$,role:Z,kind:X,payload:Y,payload_ref:null,metadata:J,created_at:new Date(this.base+Q).toISOString()}}emitMessageParts($){let Z=$.parts??[],Q=[];for(let X=0;X<Z.length;X++){let Y=Z[X];if(!ZB1(Y))continue;let J=`${$.id}#${X}`;if(this.emitted.has(J))continue;let G=this.seqFor(J),K=this.row($.id,$.role,G,eN1(Y),$B1(Y));this.partKeyByRowId.set(K.id,J),Q.push(K)}return Q}emitRequestMessageParts($){let Z=$.parts??[],Q=[];for(let X=0;X<Z.length;X++){let Y=Z[X],J=`${$.id}#${X}`,G=this.seqFor(J),K=this.row($.id,$.role,G,eN1(Y),$B1(Y));this.partKeyByRowId.set(K.id,J),Q.push(K)}return Q}markFinished($,Z,Q=null){if(this.finished.has($))return[];let X=this.seqFor(`${$}#finish`),Y=this.row($,Z,X,"finish",{},Q);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}markRequestFinished($,Z,Q=null){let X=this.seqFor(`${$}#finish`),Y=this.row($,Z,X,"finish",{},Q);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}acknowledge($){for(let Z of $){let Q=this.partKeyByRowId.get(Z.id);if(Q!==void 0)this.emitted.add(Q);let X=this.finishMessageIdByRowId.get(Z.id);if(X!==void 0)this.finished.add(X)}}emitUserMessage($){return[...this.emitMessageParts($),...this.markFinished($.id,$.role,$.metadata??null)]}emitRequestMessage($){return[...this.emitRequestMessageParts($),...this.markRequestFinished($.id,$.role,$.metadata??null)]}emitStepParts($){return this.emitMessageParts($)}emitFinal($){let Z=this.emitMessageParts($);if(Z.length===0&&!this.hasEmittedContentFor($.id))return Z;return[...Z,...this.markFinished($.id,$.role,$.metadata??null)]}emitFinalSnapshot($){let Z=$.parts??[],Q=[];for(let J=0;J<Z.length;J++){let G=Z[J];if(!ZB1(G))continue;let K=`${$.id}#${J}`,W=this.seqFor(K),H=this.row($.id,$.role,W,eN1(G),$B1(G));this.partKeyByRowId.set(H.id,K),Q.push(H)}if(Q.length===0&&!this.hasEmittedContentFor($.id))return Q;let X=this.seqFor(`${$.id}#finish`),Y=this.row($.id,$.role,X,"finish",{},$.metadata??null);return this.finishMessageIdByRowId.set(Y.id,$.id),[...Q,Y]}emitError($,Z){let Q=`${$}#error`,X=[];if(!this.emitted.has(Q)){let Y=this.seqFor(Q),J=this.row($,"assistant",Y,"error",{type:"text",text:`Error: ${he$(Z)}`});this.partKeyByRowId.set(J.id,Q),X.push(J)}return[...X,...this.markFinished($,"assistant")]}}function he$($){if($.length<=NS0)return $;let Z=$.length-NS0;return`${$.slice(0,NS0)}\u2026 [truncated ${Z} characters]`}function $B1($){let Z=$.errorText;if(typeof Z!=="string"||Z.length<=NS0)return $;return{...$,errorText:he$(Z)}}var NS0=8000;class sX{ctx;builder;constructor($){this.ctx=$;this.builder=new QB1($)}async appendBuiltRows($){await this.ctx.storage.appendParts($),this.builder.acknowledge($)}async emitUserMessage($){await this.appendBuiltRows(this.builder.emitUserMessage($))}async emitRequestMessage($){let Z=this.builder.emitRequestMessage($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitStepParts($){await this.appendBuiltRows(this.builder.emitStepParts($))}async emitFinal($){await this.appendBuiltRows(this.builder.emitFinal($))}async replaceFinal($){let Z=this.builder.emitFinalSnapshot($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitError($,Z){await this.appendBuiltRows(this.builder.emitError($,Z))}}var Nz=()=>{};async function Hp($,Z,Q,X){let Y=Z.organizationId;if(!await dK($,Y,"kanban"))throw new dU("Continuing a task agent needs the kanban feature, which this plan does not include.","kanban");await yH($,Y,"continuing a task agent");let J=await k6($,"smart"),G=Q.virtual_mcp_id??cT(Y),K={id:X.messageId,role:"user",parts:[{type:"text",text:X.prompt}],metadata:{created_at:new Date().toISOString()}};await new sX({storage:$.storage.threads.messageParts(),orgId:Y,threadId:Q.id,runId:Q.id}).emitRequestMessage(K),await jO({threadId:Q.id,source:"background-tool",request:{messages:[K],models:{credentialId:J.credentialId,thinking:{id:J.modelId,title:J.modelMeta.title}},agent:{id:G,...X.agent??{}},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Y,userId:Z.assignedBy??Z.createdBy,harnessId:Q.harness_id==="claude-code"?"claude-code":"decopilot",...Q.branch?{branch:Q.branch}:{},taskId:Q.id,runMetadata:{...pV0(Z),...X.runClass?{[ui]:X.runClass}:{}}}},{workflowID:X.workflowID})}var BS0=L(()=>{X40();Nz();iU();oX();EO();li();Y4()});var LS0,ue$="notification.created";var OS0=L(()=>{LS0=["created","commented","mentioned","status_changed","assignee_changed","review_requested","review_approved","review_changes_requested","merge_failed"]});class me${listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,Q)=>this.localEmit(Z,Q)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=ce$)return console.warn(`[SSEHub] Total connection limit reached (${ce$})`),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=le$)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (${le$})`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let Q=this.listeners.get($);if(!Q)return;if(Q.delete(Z)){if(this.totalCount--,Q.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){this.deliver($,$,Z),this.deliver(DS0,$,Z)}deliver($,Z,Q){let X=this.listeners.get($);if(!X||X.size===0)return;for(let Y of X.values()){if(Y.typePatterns&&!eP6(Q.type,Y.typePatterns))continue;try{Y.push(Q,Z)}catch{this.remove($,Y.id)}}}}function eP6($,Z){for(let Q of Z){if(Q===$)return!0;if(Q.endsWith(".*")){let X=Q.slice(0,-1);if($.startsWith(X))return!0}}return!1}var DS0="*",le$=50,ce$=500,K9;var o40=L(()=>{h6();K9=new me$;A$.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback(($)=>$.observe(K9.count))});function $T6($){return $.replace(/[^a-zA-Z]/g,"").toUpperCase().slice(0,4)||"TASK"}function Fp($,Z){if(Z==null)return null;return`${$T6($)}-${String(Z).padStart(2,"0")}`}var wS0=()=>{};function XB1($){return $.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function QT6($,Z){let Q=$.taskKeySeq===null?null:Fp($.orgSlug,$.taskKeySeq),X=XB1($.actorName??"The agent"),Y=XB1($.taskTitle),J=Q?`${XB1(Q)} \xB7 ${Y}`:Y,G=Q?`<a href="${Z}/${encodeURIComponent($.orgSlug)}/t/${encodeURIComponent(Q)}" style="color:#141413;">${J}</a>`:J;return`<p style="margin:0 0 12px 0;font-size:14px;color:#141413;line-height:1.6;font-family:Inter,system-ui,sans-serif;">${X} ${ZT6[$.type]} ${G}</p>`}function de$($,Z){let Q=$.length===1?"1 update on your tasks":`${$.length} updates on your tasks`;return{subject:Q,html:rG({preheader:Q,heading:Q,body:$.map((X)=>QT6(X,Z)).join(`
3615
+ `).trim()}var mP6=12000,dP6=12000;var pN1=L(()=>{Uz()});function nN1($){if($?.source!=="jira")return[];let Z=$.jira_issue_keys;if(Array.isArray(Z)){let X=Z.filter((Y)=>typeof Y==="string");if(X.length>0)return X}let Q=$.jira_issue_key;return typeof Q==="string"&&Q!==""?[Q]:[]}function Ce$($){if($?.source!=="jira")return[];let Z=$.jira_created_issue_keys;return Array.isArray(Z)?Z.filter((Q)=>typeof Q==="string"):[]}function tN1($,Z){if($.length===0)throw Error("This run is not working on a Jira issue");let Q=Z?.trim().toUpperCase();if(!Q){let Y=$[0];if($.length===1&&Y!==void 0)return{key:Y,inRun:!0};throw Error(`This run works on ${$.length} issues (${$.join(", ")}) \u2014 pass \`issueKey\` to say which one`)}let X=$.find((Y)=>Y.toUpperCase()===Q);if(X)return{key:X,inRun:!0};if(!pP6.test(Q))throw Error(`"${Z}" is not a Jira issue key, e.g. EX-12`);return{key:Q,inRun:!1}}var pP6;var _e$=L(()=>{pP6=/^[A-Z][A-Z0-9_]*-\d+$/});import{z as x$}from"zod";async function t40($,Z,Q=Z40().threadId){let X=F0($),Y=await $.storage.jiraIntegrations.getByOrg(X.id);if(!Y)throw Error("Jira is not connected for this org");let J=await $.storage.threads.get(Q),G=new oQ(Y.siteUrl,Y.email,Y.apiToken),K=tN1(nN1(J?.metadata),Z);if(!K.inRun)await be$(G,Y,K.key);return{integration:Y,client:G,issueKey:K.key}}async function be$($,Z,Q){if(!Z.boardId)throw Error(`Jira has no board connected, so ${Q} cannot be checked \u2014 only this run's issues are reachable`);if(!await $.isOnBoard(Z.boardId,Q))throw Error(`${Q} is not on the connected Jira board`)}function rP6($){return $.slice(0,$.lastIndexOf("-"))}function xe$($,Z){return $.trim().toLowerCase()===Z.trim().toLowerCase()}async function sP6($,Z,Q,X){for(let J of X){let G=await $.getIssue(J).catch(()=>null);if(G&&xe$(G.fields.summary,Q))return G.key}let{issues:Y}=await $.searchIssues({jql:`project = "${Z}" AND reporter = currentUser() AND statusCategory != Done AND created >= ${oP6} ORDER BY created DESC`});return Y.find((J)=>xe$(J.fields.summary,Q))?.key??null}var fe$=50000,n40,ny,ty,oN1,oy,nP6=100,aN1,tP6=5,oP6="-14d",ve$="Relates",aP6,rN1,ay;var sN1=L(()=>{v0();D9();IN1();Uz();Ve$();pN1();_e$();UO();n40=x$.string().optional().describe("Which issue: any on the board, e.g. one this run's issue links to or one you created. Leave out for this run's issue, when it has one.");ny=p({name:"JIRA_ISSUE_GET",description:"Read a Jira issue \u2014 this run's, or another on the board: summary, "+"status, description, comments, and attachments with the ids JIRA_ATTACHMENT_DOWNLOAD takes.",inputSchema:x$.object({issueKey:n40}),outputSchema:x$.object({key:x$.string(),url:x$.string(),status:x$.string(),markdown:x$.string()}),handler:async($,Z)=>{await Z.access.check();let{integration:Q,client:X,issueKey:Y}=await t40(Z,$.issueKey),J=await Wp(X,Q.siteUrl,Y);return{key:J.key,url:J.url,status:J.status,markdown:US0(J)}}}),ty=p({name:"JIRA_COMMENT_ADD",description:"Post a comment on a Jira issue on the board. Markdown is rendered as Jira rich text, tables included. Leave one when you finish: what you did, and any pull request link. To show evidence, write the image to `org/output/<name>.png` in your working pod and reference it as "+"`![what it shows](org/output/<name>.png)` \u2014 it is uploaded to the issue "+"and rendered inline. Any other URL stays a plain link.",inputSchema:x$.object({issueKey:n40,body:x$.string().min(1).max(fe$)}),outputSchema:x$.object({commentId:x$.string(),embeddedImages:x$.array(x$.string())}),handler:async($,Z)=>{await Z.access.check();let{client:Q,issueKey:X}=await t40(Z,$.issueKey),Y=await Ie$({client:Q,orgFs:Z.orgFs,issueIdOrKey:X,threadId:q3.getStore()?.threadId??null,markdown:$.body}),{id:J}=await Q.addComment(X,$.body,{media:Y});return{commentId:J,embeddedImages:[...Y.keys()]}}}),oN1=p({name:"JIRA_REMOTE_LINK_ADD",description:"Put a link on a Jira issue on the board \u2014 its pull request, "+"its deploy preview. A link on the card is what a person clicks; the same URL inside a comment is not. Posting the same `key` again updates that link instead of adding a second.",inputSchema:x$.object({issueKey:n40,url:x$.string().min(1),title:x$.string().min(1).max(255),summary:x$.string().max(1000).optional(),key:x$.string().max(255).optional().describe("Stable id for this link, e.g. `pull-request` or `preview`.")}),outputSchema:x$.object({linkId:x$.number()}),handler:async($,Z)=>{await Z.access.check();let{client:Q,issueKey:X}=await t40(Z,$.issueKey),Y;try{Y=new URL($.url)}catch{throw Error(`"${$.url}" is not an absolute URL`)}if(Y.protocol!=="https:"&&Y.protocol!=="http:")throw Error(`${Y.protocol} is not a linkable scheme`);let{id:J}=await Q.addRemoteLink(X,{url:Y.toString(),title:$.title,...$.summary?{summary:$.summary}:{},...$.key?{globalId:`studio-${X}-${$.key}`}:{}});return{linkId:J}}}),oy=p({name:"JIRA_ISSUE_TRANSITION",description:"Move a Jira issue on the board to another status, by the status name (case-insensitive). Only a status the issue's workflow can reach from where it is; the error names the reachable ones.",inputSchema:x$.object({issueKey:n40,toStatus:x$.string().min(1)}),outputSchema:x$.object({status:x$.string()}),handler:async($,Z)=>{await Z.access.check();let{client:Q,issueKey:X}=await t40(Z,$.issueKey),Y=await Q.listTransitions(X),J=$.toStatus.trim().toLowerCase(),G=Y.find((K)=>K.to.name.toLowerCase()===J||K.name.toLowerCase()===J);if(!G)throw Error(`The issue cannot move to "${$.toStatus}" from here \u2014 reachable: ${Y.map((K)=>K.to.name).join(", ")||"none"}`);return await Q.transitionIssue(X,G.id),{status:G.to.name}}}),aN1=p({name:"JIRA_ISSUE_SEARCH",description:'Find issues on the board with JQL, e.g. `status = "Code Review"` or `text ~ "checkout" ORDER BY updated DESC`. The query is narrowed to the board, so name only the condition. Returns keys to read in full with JIRA_ISSUE_GET.',inputSchema:x$.object({jql:x$.string().max(2000),limit:x$.number().int().min(1).max(nP6).default(20)}),outputSchema:x$.object({issues:x$.array(x$.object({key:x$.string(),url:x$.string(),summary:x$.string(),status:x$.string(),type:x$.string().nullable(),updated:x$.string()})),truncated:x$.boolean()}),handler:async($,Z)=>{await Z.access.check();let Q=F0(Z),X=await Z.storage.jiraIntegrations.getByOrg(Q.id);if(!X)throw Error("Jira is not connected for this org");if(!X.boardId)throw Error("Jira has no board connected to search");let Y=new oQ(X.siteUrl,X.email,X.apiToken),J=await Y.getBoardScopeJql(X.boardId),G=await Y.searchIssues({jql:cN1(J,$.jql)});return{issues:G.issues.slice(0,$.limit).map((K)=>({key:K.key,url:Kp(X.siteUrl,K.key),summary:K.fields.summary,status:K.fields.status.name,type:K.fields.issuetype?.name??null,updated:K.fields.updated})),truncated:G.issues.length>$.limit||G.nextPageToken!==null}}}),aP6=/^[A-Z][A-Z0-9_]*$/;rN1=p({name:"JIRA_ISSUE_CREATE",description:"Create a Jira issue in the project this run works in \u2014 a release card, "+"a follow-up found along the way \u2014 then comment on it, link it and move "+"it with the other Jira tools by its key. If an open issue this integration created in the last two weeks already has this exact summary, that one is returned instead (`created: false`) and still linked, so calling again after a restart does not duplicate it. Write the full description now; there is no tool to edit it later.",inputSchema:x$.object({summary:x$.string().trim().min(1).max(255),issueType:x$.string().min(1).describe("The issue type's name as the Jira API names it (often English, e.g. Story or Task, even when the UI shows a translation). The error lists the project's types."),description:x$.string().max(fe$).optional().describe("Markdown, rendered as Jira rich text, tables included."),relatesTo:x$.array(x$.string().min(1)).max(100).default([]).describe("Issues on the board to link to the new one as `Relates`, e.g. the cards a release ships."),sprint:x$.enum(["active","none"]).default("none").describe("`active` puts it in the board's running sprint, which is what a sprint board shows; `none` leaves it in the backlog."),storyPoints:x$.number().min(0).max(1000).optional()}),outputSchema:x$.object({key:x$.string(),url:x$.string(),created:x$.boolean(),linked:x$.array(x$.string()),notLinked:x$.array(x$.object({key:x$.string(),reason:x$.string()}))}),handler:async($,Z)=>{await Z.access.check();let Q=F0(Z),{threadId:X}=Z40(),Y=await Z.storage.jiraIntegrations.getByOrg(Q.id);if(!Y)throw Error("Jira is not connected for this org");let J=await Z.storage.threads.get(X),G=nN1(J?.metadata);if(G.length===0)throw Error("This run is not working on a Jira issue");let K=[...new Set(G.map(rP6))],W=K[0];if(K.length!==1||!W||!aP6.test(W))throw Error(`This run works in ${K.join(", ")}; it can only create in a single project`);let H=new oQ(Y.siteUrl,Y.email,Y.apiToken),F=[];for(let j of $.relatesTo){let E=tN1(G,j);if(F.includes(E.key))continue;if(!E.inRun)await be$(H,Y,E.key);F.push(E.key)}let U=Ce$(J?.metadata),N=await sP6(H,W,$.summary,U),B=N===null;if(N===null){if(U.length>=tP6)throw Error(`This run already created ${U.length} issues (${U.join(", ")}), the most one run may`);let j=await H.getCreateMeta(W,$.issueType),E={};if($.storyPoints!==void 0){if(!j.storyPointsFieldId)throw Error(`${j.issueTypeName} in ${W} has no story points field to set`);E[j.storyPointsFieldId]=$.storyPoints}if($.sprint==="active"){if(!Y.boardId||!j.sprintFieldId)throw Error(`${j.issueTypeName} in ${W} cannot go in a sprint \u2014 pass sprint: "none"`);let z=await H.getActiveSprint(Y.boardId);if(!z)throw Error('The board has no active sprint \u2014 pass sprint: "none"');E[j.sprintFieldId]=z.id}({key:N}=await H.createIssue({projectKey:W,issueTypeId:j.issueTypeId,summary:$.summary,description:$.description,fields:E})),await Z.storage.threads.recordJiraIssueCreated(X,N)}let O=B?new Set:new Set(await H.listLinkedIssueKeys(N,ve$)),D=[],w=[];for(let j of F){if(O.has(j)){D.push(j);continue}try{await H.linkIssues(ve$,j,N),D.push(j)}catch(E){w.push({key:j,reason:E instanceof Error?E.message:String(E)})}}return{key:N,url:Kp(Y.siteUrl,N),created:B,linked:D,notLinked:w}}});ay=p({name:"JIRA_ATTACHMENT_DOWNLOAD",description:"Get a short-lived URL for one attachment of a Jira issue on the board, to `curl -L -o <path>` into the sandbox. Attachment ids are listed by JIRA_ISSUE_GET. The URL needs no credential and expires.",inputSchema:x$.object({issueKey:n40,attachmentId:x$.string().min(1)}),outputSchema:x$.object({url:x$.string(),filename:x$.string(),expiresAt:x$.string(),command:x$.string()}),handler:async($,Z)=>{await Z.access.check();let{integration:Q,client:X,issueKey:Y}=await t40(Z,$.issueKey),J=(await X.listAttachments(Y)).find((F)=>F.id===$.attachmentId);if(!J)throw Error(`${Y} has no attachment "${$.attachmentId}" \u2014 JIRA_ISSUE_GET lists the ids`);let G=Date.now()+ls$,K=ms$({organizationId:Q.organizationId,attachmentId:J.id,expiresAt:G}),W=`${c5()}/api/_jira/attachments/${K}`,H=J.filename.replace(/[^\w.-]+/g,"_");return{url:W,filename:J.filename,expiresAt:new Date(G).toISOString(),command:`curl -fsSL -o ${JSON.stringify(H)} ${JSON.stringify(W)}`}}})});function ye$($,Z){let Q=(X)=>q3.run({threadId:Z},X);return{JIRA_ISSUE_GET:n$({description:ny.description,inputSchema:r(ny.inputSchema),execute:(X)=>Q(()=>ny.execute(X,$))}),JIRA_COMMENT_ADD:n$({description:ty.description,inputSchema:r(ty.inputSchema),execute:(X)=>Q(()=>ty.execute(X,$))}),JIRA_ISSUE_TRANSITION:n$({description:oy.description,inputSchema:r(oy.inputSchema),execute:(X)=>Q(()=>oy.execute(X,$))}),JIRA_ATTACHMENT_DOWNLOAD:n$({description:ay.description,inputSchema:r(ay.inputSchema),execute:(X)=>Q(()=>ay.execute(X,$))})}}var ge$=L(()=>{g4();sN1();UO()});function ZB1($){let Z=$.type;if(typeof Z!=="string")return!1;if(Z==="text"||Z==="reasoning")return $.state!=="streaming";if(Z==="step-start")return!1;if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="approval-requested"||Z==="tool-user_ask"&&$.state==="input-available"||$.state==="output-available"||$.state==="output-error"||$.state==="output-denied";return!0}function eN1($){let Z=$.type??"";if(Z==="reasoning")return"reasoning";if(Z==="file")return"file";if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="output-available"||$.state==="output-error"||$.state==="output-denied"?"tool_result":"tool_call";return"text"}class QB1{ctx;base;seqByPart=new Map;emitted=new Set;finished=new Set;partKeyByRowId=new Map;finishMessageIdByRowId=new Map;nextSeq=0;constructor($){this.ctx=$;this.base=$.baseTimeMs??Date.now()}hasEmittedContentFor($){let Z=`${$}#`;for(let Q of this.emitted)if(Q.startsWith(Z))return!0;return!1}seqFor($){let Z=this.seqByPart.get($);if(Z!==void 0)return Z;let Q=this.nextSeq++;return this.seqByPart.set($,Q),Q}row($,Z,Q,X,Y,J=null){return{id:`${this.ctx.runId}:${$}:${Q}`,seq:Q,org_id:this.ctx.orgId,thread_id:this.ctx.threadId,run_id:this.ctx.runId,message_id:$,role:Z,kind:X,payload:Y,payload_ref:null,metadata:J,created_at:new Date(this.base+Q).toISOString()}}emitMessageParts($){let Z=$.parts??[],Q=[];for(let X=0;X<Z.length;X++){let Y=Z[X];if(!ZB1(Y))continue;let J=`${$.id}#${X}`;if(this.emitted.has(J))continue;let G=this.seqFor(J),K=this.row($.id,$.role,G,eN1(Y),$B1(Y));this.partKeyByRowId.set(K.id,J),Q.push(K)}return Q}emitRequestMessageParts($){let Z=$.parts??[],Q=[];for(let X=0;X<Z.length;X++){let Y=Z[X],J=`${$.id}#${X}`,G=this.seqFor(J),K=this.row($.id,$.role,G,eN1(Y),$B1(Y));this.partKeyByRowId.set(K.id,J),Q.push(K)}return Q}markFinished($,Z,Q=null){if(this.finished.has($))return[];let X=this.seqFor(`${$}#finish`),Y=this.row($,Z,X,"finish",{},Q);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}markRequestFinished($,Z,Q=null){let X=this.seqFor(`${$}#finish`),Y=this.row($,Z,X,"finish",{},Q);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}acknowledge($){for(let Z of $){let Q=this.partKeyByRowId.get(Z.id);if(Q!==void 0)this.emitted.add(Q);let X=this.finishMessageIdByRowId.get(Z.id);if(X!==void 0)this.finished.add(X)}}emitUserMessage($){return[...this.emitMessageParts($),...this.markFinished($.id,$.role,$.metadata??null)]}emitRequestMessage($){return[...this.emitRequestMessageParts($),...this.markRequestFinished($.id,$.role,$.metadata??null)]}emitStepParts($){return this.emitMessageParts($)}emitFinal($){let Z=this.emitMessageParts($);if(Z.length===0&&!this.hasEmittedContentFor($.id))return Z;return[...Z,...this.markFinished($.id,$.role,$.metadata??null)]}emitFinalSnapshot($){let Z=$.parts??[],Q=[];for(let J=0;J<Z.length;J++){let G=Z[J];if(!ZB1(G))continue;let K=`${$.id}#${J}`,W=this.seqFor(K),H=this.row($.id,$.role,W,eN1(G),$B1(G));this.partKeyByRowId.set(H.id,K),Q.push(H)}if(Q.length===0&&!this.hasEmittedContentFor($.id))return Q;let X=this.seqFor(`${$.id}#finish`),Y=this.row($.id,$.role,X,"finish",{},$.metadata??null);return this.finishMessageIdByRowId.set(Y.id,$.id),[...Q,Y]}emitError($,Z){let Q=`${$}#error`,X=[];if(!this.emitted.has(Q)){let Y=this.seqFor(Q),J=this.row($,"assistant",Y,"error",{type:"text",text:`Error: ${he$(Z)}`});this.partKeyByRowId.set(J.id,Q),X.push(J)}return[...X,...this.markFinished($,"assistant")]}}function he$($){if($.length<=NS0)return $;let Z=$.length-NS0;return`${$.slice(0,NS0)}\u2026 [truncated ${Z} characters]`}function $B1($){let Z=$.errorText;if(typeof Z!=="string"||Z.length<=NS0)return $;return{...$,errorText:he$(Z)}}var NS0=8000;class sX{ctx;builder;constructor($){this.ctx=$;this.builder=new QB1($)}async appendBuiltRows($){await this.ctx.storage.appendParts($),this.builder.acknowledge($)}async emitUserMessage($){await this.appendBuiltRows(this.builder.emitUserMessage($))}async emitRequestMessage($){let Z=this.builder.emitRequestMessage($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitStepParts($){await this.appendBuiltRows(this.builder.emitStepParts($))}async emitFinal($){await this.appendBuiltRows(this.builder.emitFinal($))}async replaceFinal($){let Z=this.builder.emitFinalSnapshot($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitError($,Z){await this.appendBuiltRows(this.builder.emitError($,Z))}}var Nz=()=>{};async function Hp($,Z,Q,X){let Y=Z.organizationId;if(!await dK($,Y,"kanban"))throw new dU("Continuing a task agent needs the kanban feature, which this plan does not include.","kanban");await yH($,Y,"continuing a task agent");let J=await k6($,"smart"),G=Q.virtual_mcp_id??cT(Y),K={id:X.messageId,role:"user",parts:[{type:"text",text:X.prompt}],metadata:{created_at:new Date().toISOString()}};await new sX({storage:$.storage.threads.messageParts(),orgId:Y,threadId:Q.id,runId:Q.id}).emitRequestMessage(K),await jO({threadId:Q.id,source:"background-tool",request:{messages:[K],models:{credentialId:J.credentialId,thinking:{id:J.modelId,title:J.modelMeta.title}},agent:{id:G,...X.agent??{}},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Y,userId:Z.assignedBy??Z.createdBy,harnessId:Q.harness_id==="claude-code"?"claude-code":"decopilot",...Q.branch?{branch:Q.branch}:{},taskId:Q.id,runMetadata:{...pV0(Z),...X.runClass?{[ui]:X.runClass}:{}}}},{workflowID:X.workflowID})}var BS0=L(()=>{X40();Nz();iU();oX();EO();li();Y4()});var LS0,ue$="notification.created";var OS0=L(()=>{LS0=["created","commented","mentioned","status_changed","assignee_changed","review_requested","review_approved","review_changes_requested","merge_failed"]});class me${listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,Q)=>this.localEmit(Z,Q)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=ce$)return console.warn(`[SSEHub] Total connection limit reached (${ce$})`),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=le$)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (${le$})`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let Q=this.listeners.get($);if(!Q)return;if(Q.delete(Z)){if(this.totalCount--,Q.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){this.deliver($,$,Z),this.deliver(DS0,$,Z)}deliver($,Z,Q){let X=this.listeners.get($);if(!X||X.size===0)return;for(let Y of X.values()){if(Y.typePatterns&&!eP6(Q.type,Y.typePatterns))continue;try{Y.push(Q,Z)}catch{this.remove($,Y.id)}}}}function eP6($,Z){for(let Q of Z){if(Q===$)return!0;if(Q.endsWith(".*")){let X=Q.slice(0,-1);if($.startsWith(X))return!0}}return!1}var DS0="*",le$=50,ce$=500,K9;var o40=L(()=>{h6();K9=new me$;A$.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback(($)=>$.observe(K9.count))});function $T6($){return $.replace(/[^a-zA-Z]/g,"").toUpperCase().slice(0,4)||"TASK"}function Fp($,Z){if(Z==null)return null;return`${$T6($)}-${String(Z).padStart(2,"0")}`}var wS0=()=>{};function XB1($){return $.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function QT6($,Z){let Q=$.taskKeySeq===null?null:Fp($.orgSlug,$.taskKeySeq),X=XB1($.actorName??"The agent"),Y=XB1($.taskTitle),J=Q?`${XB1(Q)} \xB7 ${Y}`:Y,G=Q?`<a href="${Z}/${encodeURIComponent($.orgSlug)}/t/${encodeURIComponent(Q)}" style="color:#141413;">${J}</a>`:J;return`<p style="margin:0 0 12px 0;font-size:14px;color:#141413;line-height:1.6;font-family:Inter,system-ui,sans-serif;">${X} ${ZT6[$.type]} ${G}</p>`}function de$($,Z){let Q=$.length===1?"1 update on your tasks":`${$.length} updates on your tasks`;return{subject:Q,html:rG({preheader:Q,heading:Q,body:$.map((X)=>QT6(X,Z)).join(`
3616
3616
  `),footnote:"You received this because you follow these tasks. Open a task and use Unfollow to stop."})}}var ZT6;var ie$=L(()=>{wS0();ZT6={created:"created",commented:"commented on",mentioned:"mentioned you on",status_changed:"moved",assignee_changed:"reassigned",review_requested:"requested review on",review_approved:"approved",review_changes_requested:"requested changes on",merge_failed:"couldn't merge"}});import{z as a40}from"zod";var Up;var jS0=L(()=>{Up=a40.object({taskTitle:a40.string(),taskKeySeq:a40.number().int().nullable(),actorName:a40.string().nullable(),actorImage:a40.string().nullable()})});import{DBOS as PN,SchedulerMode as XT6}from"@dbos-inc/dbos-sdk";function pe$($){GB1=$}function WB1(){if(!GB1)throw Error("[notifications] runtime not initialized \u2014 setNotificationDigestRuntime() must run before the workflow fires");return GB1}function ne$(){return WB1().db.selectFrom("notifications as n").innerJoin("organization as o","o.id","n.organization_id").innerJoin("user as u","u.id","n.user_id").innerJoin("member as m",($)=>$.onRef("m.userId","=","n.user_id").onRef("m.organizationId","=","n.organization_id")).select(["n.id as id","n.user_id as userId","n.type as type","n.data as data","o.slug as orgSlug","u.email as email"]).where("n.emailed_at","is",null).where("n.read_at","is",null).orderBy("n.created_at","asc").limit(GT6)}function te$($){return $.map((Z)=>{let Q=Up.parse(Z.data);return{id:Z.id,userId:Z.userId,email:Z.email,type:Z.type,orgSlug:Z.orgSlug,taskTitle:Q.taskTitle,taskKeySeq:Q.taskKeySeq,actorName:Q.actorName}})}async function WT6($){return te$(await ne$().where("n.user_id","=",$).execute())}async function HT6($){return te$(await ne$().where("n.created_at","<",$).execute())}async function FT6($){if($.length===0)return new Set;let Z=await WB1().db.updateTable("notifications").set({emailed_at:new Date}).where("id","in",$).where("emailed_at","is",null).returning("id").execute();return new Set(Z.map((Q)=>Q.id))}function UT6($){let Z=new Map;for(let Q of $){let X=Z.get(Q.userId);if(X)X.push(Q);else Z.set(Q.userId,[Q])}return[...Z.values()]}function HB1(){let $=TH().auth,Z=$.emailProviders??[],Q=$.inviteEmailProviderId?aG(Z,$.inviteEmailProviderId):Z[0];return Q?oG(Q):null}function NT6($){if($.length>254)return!1;if($.length<3)return!1;if($.includes(" "))return!1;let Z=$.lastIndexOf("@");if(Z<=0||Z===$.length-1)return!1;if(!$.substring(Z+1).includes("."))return!1;return!0}async function BT6($){let Z=HB1();if(!Z)throw Error("no email provider configured");let Q=$[0].email;if(!NT6(Q))throw Error(`invalid recipient email: ${Q.substring(0,50)}`);let{subject:X,html:Y}=de$($,S9());if(X.length>1000)throw Error(`digest subject too long: ${X.length} chars (max 1000)`);if(Y.length>1e6)throw Error(`digest html too long: ${Y.length} bytes (max 1MB)`);await Z({to:Q,subject:X,html:Y})}async function LT6($){await WB1().db.deleteFrom("notifications").where("created_at","<",$).execute()}async function oe$($,Z){if($.length===0)return;let Q=await PN.runStep(()=>FT6($.map((Y)=>Y.id)),{name:`claimForEmail:${Z}`}),X=$.filter((Y)=>Q.has(Y.id));if(X.length===0)return;await PN.runStep(()=>BT6(X),{name:`sendDigest:${Z}`,retriesAllowed:!0,maxAttempts:3})}async function OT6($,Z){let Q=Z-Date.now();if(Q>0)await PN.sleep(Q);if(!HB1())return;let X=await PN.runStep(()=>WT6($),{name:"loadPendingForUser"});try{await oe$(X,$)}catch(Y){console.warn(`[notifications] digest for ${$} failed:`,Y instanceof Error?Y.message:Y)}}async function DT6($,Z){let Q=new Date($.getTime()-JB1-JT6),X=HB1()?await PN.runStep(()=>HT6(Q),{name:"loadOrphanedNotifications"}):[];for(let Y of UT6(X)){let J=Y[0].userId;try{await oe$(Y,J)}catch(G){console.warn(`[notifications] sweep digest for ${J} failed:`,G instanceof Error?G.message:G)}}if($.getUTCMinutes()<2)await PN.runStep(()=>LT6(new Date($.getTime()-KT6)),{name:"pruneOldNotifications"})}function ae$($){if(!KB1)return;let Z=Math.floor(Date.now()/JB1),Q=(Z+1)*JB1;PN.startWorkflow(KB1,{workflowID:`notif-digest:${$}:${Z}`})($,Q).catch((X)=>{console.debug("[notifications] digest enqueue skipped:",X instanceof Error?X.message:X)})}function re$(){if(YB1)return;KB1=PN.registerWorkflow(OT6,{name:"notificationUserDigestWorkflow"}),YB1=PN.registerWorkflow(DT6,{name:"notificationDigestWorkflow"}),PN.registerScheduled(YB1,{name:"notificationDigestWorkflow",crontab:YT6,mode:XT6.ExactlyOncePerIntervalWhenActive})}var YT6="*/2 * * * *",JB1=30000,JT6=60000,GT6=500,KT6=2592000000,GB1=null,YB1=null,KB1=null;var FB1=L(()=>{N00();D9();bA();ie$();jS0()});async function wT6($,Z){return await $.selectFrom("task_board_items").select(["organization_id","title","key_seq"]).where("id","=",Z).executeTakeFirst()}async function jT6($,Z){if(!Z)return{name:null,image:null};let Q=await $.selectFrom("user").select(["name","image"]).where("id","=",Z).executeTakeFirst();return{name:Q?.name??null,image:Q?.image??null}}async function Np($){let{db:Z,taskBoardItemId:Q,type:X,actorId:Y}=$;try{let J=[],G=await wT6(Z,Q);if(!G)return;let K=async(W)=>{let H=[...new Set($.alsoSubscribe?.filter((D)=>!!D))];if(H.length>0)await W.insertInto("notification_subscriptions").values(H.map((D)=>({id:X4("nsub"),user_id:D,task_board_item_id:Q}))).onConflict((D)=>D.columns(["user_id","task_board_item_id"]).doNothing()).execute();let F=$.recipients,N=(F?[...new Set(F.filter((D)=>!!D))]:(await W.selectFrom("notification_subscriptions").select("user_id").where("task_board_item_id","=",Q).where("subscribed","=",!0).execute()).map((D)=>D.user_id)).filter((D)=>D!==Y);if(N.length===0)return;J=N;let B=await jT6(W,Y),O=Up.parse({taskTitle:G.title,taskKeySeq:G.key_seq??null,actorName:B.name,actorImage:B.image});await W.insertInto("notifications").values(N.map((D)=>({id:X4("notif"),user_id:D,organization_id:G.organization_id,task_board_item_id:Q,type:X,actor_id:Y,data:JSON.stringify(O)}))).execute()};await(Z.isTransaction?K(Z):Z.transaction().execute(K));for(let W of J)ae$(W),K9.emit(G.organization_id,{id:crypto.randomUUID(),type:ue$,source:"notifications",subject:W,time:new Date().toISOString()})}catch(J){console.error("[notifications] fan-out failed",J)}}var ES0=L(()=>{TX();OS0();o40();FB1();jS0()});import{sql as V3}from"kysely";function zT6($){return ET6.has($)?$:null}function zS0($){let Z=(Q)=>Q instanceof Date?Q.toISOString():Q;return{id:$.id,taskBoardItemId:$.task_board_item_id,parentId:$.parent_id,authorId:$.author_id,threadId:$.thread_id,body:$.body,resolved:$.resolved,createdAt:Z($.created_at),updatedAt:Z($.updated_at)}}function se$($){if($&&typeof $==="object"&&!Array.isArray($)){let Z=$.text;if(typeof Z==="string"&&Z.trim())return Z.trim()}return null}function UB1($,Z=!1){if($.status!=="in_progress")return!1;let Q=$.threads.filter((X)=>X.hasMessages);if(Q.length===0)return!1;if($.repo!=null&&!Z)return!1;if(!Q.every((X)=>X.status!==null&&r40.has(X.status)))return!1;return Q.some((X)=>X.status==="completed")}function AT6($){let Z=typeof $==="string"?(()=>{try{return JSON.parse($)}catch{return null}})():$;if(!Z||typeof Z!=="object")return!1;let Q=Z.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function RT6($){if($===null||$===void 0)return null;let Z=typeof $==="number"?$:Number($);return Number.isFinite(Z)?Z:null}function qT6($,Z){let Q=(J)=>J instanceof Date?J.getTime():new Date(J).getTime(),X=Q($),Y=Z===null?Number.NEGATIVE_INFINITY:Q(Z);return new Date(Math.max(X,Y)).toISOString()}class k3{db;constructor($){this.db=$}inTransaction($){return this.db.isTransaction?$(this.db):this.db.transaction().execute($)}async list($){let Q=(await this.db.selectFrom("task_board_items").selectAll().where("organization_id","=",$).where("dismissed_at","is",null).where("source","is",null).orderBy("sort_order","asc").execute()).map((X)=>this.itemFromDbRow(X));return await this.attachRefs(Q,$),Q}async searchByTitle($,Z,Q){return(await this.db.selectFrom("task_board_items").selectAll().where("organization_id","=",$).where("dismissed_at","is",null).where("source","is",null).where("title","ilike",`%${Yc(Z)}%`).orderBy("updated_at","desc").limit(Q).execute()).map((Y)=>this.itemFromDbRow(Y))}async getById($,Z){let Q=await this.db.selectFrom("task_board_items").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!Q)return null;let X=this.itemFromDbRow(Q);return await this.attachRefs([X],Z),X}async create($){let Z=X4("board"),Q=new Date().toISOString(),X=$.status??"triage",Y=(G)=>G.insertInto("task_board_items").values({id:Z,organization_id:$.organizationId,title:$.title,description:$.description??null,status:X,priority:$.priority??"medium",type:$.type??KK1,assignee_id:$.assigneeId??null,assigned_by:$.assignedBy??null,repo:$.repo??null,repository_id:$.repositoryId??null,due_date:$.dueDate??null,external_key:$.externalKey??null,external_url:$.externalUrl??null,source:$.source??null,sort_order:V3`(
3617
3617
  select coalesce(min(sort_order), 0) - 1
3618
3618
  from task_board_items
@@ -3625,7 +3625,7 @@ ${Y}`:Y}case"media":return"";case"mediaSingle":case"mediaGroup":return Gp(zN(Q),
3625
3625
  )`,created_by:$.by,created_at:Q,updated_by:$.by,updated_at:Q}).returningAll().executeTakeFirstOrThrow(),J=await this.inTransaction(async(G)=>{return await V3`select pg_advisory_xact_lock(hashtext(${`task-board-key-seq:${$.organizationId}`})::bigint)`.execute(G),Y(G)});return this.itemFromDbRow(J)}async update($,Z,Q,X){let Y=await this.db.updateTable("task_board_items").set({...Q.title!==void 0?{title:Q.title}:{},...Q.description!==void 0?{description:Q.description}:{},...Q.status!==void 0?{status:Q.status}:{},...Q.priority!==void 0?{priority:Q.priority}:{},...Q.type!==void 0?{type:Q.type}:{},...Q.assigneeId!==void 0?{assignee_id:Q.assigneeId}:{},...Q.assignedBy!==void 0?{assigned_by:Q.assignedBy}:{},...Q.repo!==void 0?{repo:Q.repo}:{},...Q.repositoryId!==void 0?{repository_id:Q.repositoryId}:{},...Q.dueDate!==void 0?{due_date:Q.dueDate}:{},...Q.externalUrl!==void 0?{external_url:Q.externalUrl}:{},...Q.previewRoutes!==void 0?{preview_routes:JSON.stringify(Q.previewRoutes)}:{},...Q.sortOrder!==void 0?{sort_order:Q.sortOrder}:{},...Q.status!==void 0&&!ee$.has(Q.status)?{review_cycle_started_at:null}:{},updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).returningAll().executeTakeFirstOrThrow(),J=this.itemFromDbRow(Y);return await this.attachRefs([J],Z),J}async delete($,Z,Q){return this.inTransaction(async(X)=>{let Y=await X.selectFrom("task_board_items").select(["created_by"]).where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!Y)return!1;if(cX({createdBy:Y.created_by}))return await X.updateTable("task_board_items").set({dismissed_at:new Date().toISOString(),updated_by:Q}).where("id","=",$).where("organization_id","=",Z).where("dismissed_at","is",null).execute(),!0;return await X.deleteFrom("task_board_item_threads").where("task_board_item_id","=",$).where("organization_id","=",Z).execute(),await X.deleteFrom("task_board_item_prs").where("task_board_item_id","=",$).where("organization_id","=",Z).execute(),await X.deleteFrom("task_board_items").where("id","=",$).where("organization_id","=",Z).execute(),!0})}async dismissedFindingKeys($,Z){if(Z.length===0)return new Set;let Q=await this.db.selectFrom("task_board_items").select(["external_key"]).where("organization_id","=",$).where("external_key","in",Z).where("dismissed_at","is not",null).execute();return new Set(Q.flatMap((X)=>X.external_key??[]))}async listDismissedFindings($){return(await this.db.selectFrom("task_board_items").select(["external_key","updated_by","dismissed_at"]).where("organization_id","=",$).where("dismissed_at","is not",null).orderBy("dismissed_at","desc").execute()).flatMap((Q)=>Q.external_key&&Q.dismissed_at?[{externalKey:Q.external_key,dismissedBy:Q.updated_by,dismissedAt:Q.dismissed_at instanceof Date?Q.dismissed_at.toISOString():Q.dismissed_at}]:[])}async restoreDismissedFindings($,Z){if(Z&&Z.length===0)return 0;let Q=this.db.updateTable("task_board_items").set({dismissed_at:null}).where("organization_id","=",$).where("dismissed_at","is not",null);if(Z)Q=Q.where("external_key","in",Z);let X=await Q.executeTakeFirst();return Number(X.numUpdatedRows??0n)}async setItemTags($,Z,Q){await this.inTransaction(async(X)=>{if(await X.deleteFrom("task_board_item_tags").where("task_board_item_id","=",$).$if(Z.length>0,(Y)=>Y.where("id","not in",Z)).execute(),Z.length>0)await X.insertInto("task_board_item_tags").values(Z.map((Y)=>({task_board_item_id:$,id:Y,created_by:Q,created_at:new Date().toISOString()}))).onConflict((Y)=>Y.doNothing()).execute()})}async addItemTags($,Z,Q){if(Z.length===0)return;await this.db.insertInto("task_board_item_tags").values(Z.map((X)=>({task_board_item_id:$,id:X,created_by:Q,created_at:new Date().toISOString()}))).onConflict((X)=>X.doNothing()).execute()}async linkThread($,Z,Q){await this.db.insertInto("task_board_item_threads").values({task_board_item_id:$,thread_id:Z,organization_id:Q}).onConflict((X)=>X.columns(["task_board_item_id","thread_id"]).doNothing()).execute()}async listItemsPendingReview($,Z,Q){let X=this.db.selectFrom("task_board_items").select(["id","organization_id as organizationId","updated_at"]).where((J)=>J.or([J("review_cycle_started_at","is not",null),J("status","=",M$.review)])).where("dismissed_at","is",null);if(Q)X=X.where((J)=>J.or([J("last_swept_at","is",null),J("last_swept_at","<",Q)]));if(Z){let J=new Date(Z.updatedAt);X=X.where((G)=>G.or([G("updated_at",">",J),G.and([G("updated_at","=",J),G("id",">",Z.id)])]))}return(await X.orderBy("updated_at","asc").orderBy("id","asc").limit($).execute()).map((J)=>({id:J.id,organizationId:J.organizationId,updatedAt:J.updated_at instanceof Date?J.updated_at.toISOString():String(J.updated_at)}))}async listItemsAwaitingArchive($,Z){return(await this.db.selectFrom("task_board_items as i").select(["i.id","i.organization_id as organizationId"]).where("i.status","=","done").where("i.dismissed_at","is",null).where("i.updated_at","<",$).where((X)=>X.exists(X.selectFrom("task_board_item_prs as p").select("p.url").whereRef("p.task_board_item_id","=","i.id"))).orderBy("i.updated_at","asc").limit(Z).execute()).map((X)=>({id:X.id,organizationId:X.organizationId}))}async listItemsAwaitingMergedTag($,Z){return(await this.db.selectFrom("task_board_items as i").select(["i.id","i.organization_id as organizationId"]).where("i.status","in",MT6).where("i.dismissed_at","is",null).where((X)=>X.exists(X.selectFrom("task_board_item_prs as p").select("p.url").whereRef("p.task_board_item_id","=","i.id"))).where((X)=>X.not(X.exists(X.selectFrom("task_board_item_tags as t").innerJoin("organization_tags as g","g.id","t.id").select("t.id").whereRef("t.task_board_item_id","=","i.id").where(V3`lower(g.name)`,"=",$)))).orderBy("i.updated_at","desc").limit(Z).execute()).map((X)=>({id:X.id,organizationId:X.organizationId}))}async claimSweep($,Z,Q){let X=await this.db.updateTable("task_board_items").set({last_swept_at:new Date}).where("id","=",$).where("organization_id","=",Z).where((Y)=>Y.or([Y("last_swept_at","is",null),Y("last_swept_at","<",Q)])).executeTakeFirst();return Number(X.numUpdatedRows??0)>0}async failedRunInfo($,Z){let Q=await this.db.selectFrom("threads as t").leftJoinLateral((X)=>X.selectFrom("thread_message_parts as p").select("p.payload").whereRef("p.thread_id","=","t.id").where("p.kind","=","error").orderBy("p.created_at","desc").limit(1).as("err"),(X)=>X.onTrue()).select(["t.status","t.failure_kind as kind","err.payload as payload"]).where("t.id","=",$).where("t.organization_id","=",Z).executeTakeFirst();if(!Q||Q.status!=="failed")return null;return{kind:Q.kind??null,errorText:se$(Q.payload)}}async scheduleRunRetry($,Z,Q,X){return(await this.db.updateTable("task_board_items").set({retry_at:X,retry_attempts:Q}).where("id","=",$).where("organization_id","=",Z).where("status","=",M$.progress).where("dismissed_at","is",null).returning("id").execute()).length>0}async returnToTodoAfterFailure($,Z,Q){if((await this.db.updateTable("task_board_items").set({status:M$.queue,retry_at:null,retry_attempts:0,updated_by:Q,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).where("status","=",M$.progress).where("dismissed_at","is",null).returning("id").execute()).length===0)return null;return await this.getById($,Z)}async failNeverStartedLinkedThreads($,Z,Q){let X=await this.db.selectFrom("threads as t").innerJoin("task_board_item_threads as l","l.thread_id","t.id").select(["t.id as threadId","l.task_board_item_id as itemId","l.organization_id as organizationId"]).where("t.status","=","in_progress").where("t.run_started_at","is",null).where((K)=>K.and([K("t.updated_at","<",Z),K.or([K("t.last_progress_at","is",null),K("t.last_progress_at","<",Z)])])).limit($).execute();if(X.length===0)return[];let Y=X.map((K)=>K.threadId),J=await this.db.updateTable("threads").set({status:"failed",failure_reason:Q,failure_kind:"abandoned",run_owner_pod:null,run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","in",Y).where("status","=","in_progress").returning("id").execute(),G=new Set(J.map((K)=>K.id));return X.filter((K)=>G.has(K.threadId))}async relabelDeliveredFailure($,Z,Q){return(await this.db.updateTable("threads").set({failure_reason:Q,failure_kind:"ended_after_delivery",updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=","failed").where((Y)=>Y.or([Y("failure_kind","is",null),Y("failure_kind","not in",["cancelled",...d40])])).returning("id").execute()).length>0}async supersedeFailedThreads($,Z){return(await this.db.updateTable("threads").set({failure_kind:"superseded",updated_at:new Date().toISOString()}).where("organization_id","=",Z).where("status","=","failed").where("failure_kind","is distinct from","cancelled").where((X)=>X("id","in",X.selectFrom("task_board_item_threads").select("thread_id").where("task_board_item_id","=",$).where("organization_id","=",Z))).returning("id").execute()).length}async listItemsStuckAfterFailure($,Z){let Q=await this.db.selectFrom("task_board_items as i").innerJoin("task_board_item_threads as l","l.task_board_item_id","i.id").innerJoin("threads as t","t.id","l.thread_id").select(["i.id as id","i.organization_id as organizationId","t.id as threadId"]).where("i.status","=","in_progress").where("i.assignee_id","=",A8).where("i.dismissed_at","is",null).where("i.retry_at","is",null).where("t.status","=","failed").where((Y)=>Y.or([Y("t.failure_kind","is",null),Y("t.failure_kind","not in",[...d40])])).where("t.updated_at","<",Z).where((Y)=>Y.not(Y.exists(Y.selectFrom("task_board_item_threads as l2").innerJoin("threads as t2","t2.id","l2.thread_id").select("t2.id").whereRef("l2.task_board_item_id","=","i.id").where("t2.status","in",["in_progress","requires_action"])))).orderBy("t.updated_at","desc").limit($).execute(),X=new Set;return Q.filter((Y)=>!X.has(Y.id)&&X.add(Y.id))}async listItemsFinishedWithoutPr($,Z){let Q=(Y)=>V3`(select t.${V3.ref(Y)} from task_board_item_threads l
3626
3626
  join threads t on t.id = l.thread_id
3627
3627
  where l.task_board_item_id = i.id
3628
- order by t.updated_at desc limit 1)`;return(await this.db.selectFrom("task_board_items as i").select(["i.id as id","i.organization_id as organizationId",Q("updated_at").as("finishedAt")]).where("i.status","=",M$.progress).where("i.assignee_id","=",A8).where("i.review_cycle_started_at","is",null).where("i.dismissed_at","is",null).where("i.retry_at","is",null).where("i.source","is",null).where((Y)=>Y.or([Y("i.last_swept_at","is",null),Y("i.last_swept_at","<",Z)])).where((Y)=>Y.not(Y.exists(Y.selectFrom("task_board_item_prs as p").select("p.task_board_item_id").whereRef("p.task_board_item_id","=","i.id")))).where(Q("status"),"=","completed").where((Y)=>Y.not(Y.exists(Y.selectFrom("task_board_item_threads as l2").innerJoin("threads as t2","t2.id","l2.thread_id").select("t2.id").whereRef("l2.task_board_item_id","=","i.id").where("t2.status","in",["in_progress","requires_action"])))).orderBy("i.updated_at","asc").limit($).execute()).map((Y)=>({id:Y.id,organizationId:Y.organizationId,finishedAt:new Date(Y.finishedAt)}))}async listItemsDueForRetry($,Z){return await this.db.selectFrom("task_board_items").select(["id","organization_id as organizationId","retry_attempts as attempts"]).where("retry_at","is not",null).where("retry_at","<=",Z).where("status","=","in_progress").where("dismissed_at","is",null).orderBy("retry_at","asc").limit($).execute()}async claimDueRetry($,Z,Q){return(await this.db.updateTable("task_board_items").set({retry_at:null}).where("id","=",$).where("organization_id","=",Z).where("retry_at","is not",null).where("retry_at","<=",Q).returning("id").execute()).length>0}async clearRunRetry($,Z){await this.db.updateTable("task_board_items").set({retry_at:null,retry_attempts:0}).where("id","=",$).where("organization_id","=",Z).execute()}async clearSweepBudget($,Z){await this.db.updateTable("task_board_items").set({last_swept_at:null}).where("id","=",$).where("organization_id","=",Z).execute()}async linkedThreadIds($,Z){return(await this.db.selectFrom("task_board_item_threads").select("thread_id as threadId").where("task_board_item_id","=",$).where("organization_id","=",Z).execute()).map((X)=>X.threadId)}async boardManagedIds($,Z){if($.length===0)return[];let Q=await this.db.selectFrom("task_board_items").select("id").where("id","in",[...$]).where("organization_id","=",Z).where("source","is",null).execute(),X=new Set(Q.map((Y)=>Y.id));return $.filter((Y)=>X.has(Y))}async linkedTaskIds($,Z){return(await this.db.selectFrom("task_board_item_threads").select("task_board_item_id as taskId").where("thread_id","=",$).where("organization_id","=",Z).execute()).map((X)=>X.taskId)}async linkPr($){let{owner:Z,name:Q}=n5($.repo),X=await this.db.selectFrom("repositories").select("id").where("organization_id","=",$.organizationId).where("host","=",$.repo.host).where(V3`lower(path)`,"=",$.repo.path.toLowerCase()).executeTakeFirst();await this.db.insertInto("task_board_item_prs").values({task_board_item_id:$.taskBoardItemId,organization_id:$.organizationId,url:$.url,pr_number:$.prNumber,repo_owner:Z,repo_name:Q,connection_id:$.connectionId??null,repository_id:X?.id??null}).onConflict((Y)=>Y.columns(["task_board_item_id","url"]).doNothing()).execute()}async findPrLinks($){return await this.db.selectFrom("task_board_item_prs").select(["task_board_item_id as taskBoardItemId","organization_id as organizationId"]).where("repo_owner","=",$.repoOwner).where("repo_name","=",$.repoName).where("pr_number","=",$.number).execute()}async listPrs($,Z){return(await this.db.selectFrom("task_board_item_prs").select(["url","pr_number as prNumber","repo_owner as repoOwner","repo_name as repoName","connection_id as connectionId","repository_id as repositoryId","created_at as createdAt"]).where("task_board_item_id","=",$).where("organization_id","=",Z).orderBy("created_at","desc").execute()).map((X)=>({url:X.url,number:X.prNumber,repoOwner:X.repoOwner,repoName:X.repoName,connectionId:X.connectionId??null,repositoryId:X.repositoryId??null,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}))}async advanceLinkedTasksToReviewOnThreadFinish($,Z){let Q=[];for(let X of await this.linkedTaskIds($,Z)){let Y=await this.getById(X,Z);if(!Y)continue;if(Y.source)continue;let J=(await this.listPrs(X,Z)).length>0;if(!UB1(Y,J))continue;if(Y.reviewCycleStartedAt)continue;if(J){let K=await this.openReviewCycleIfInProgress(X,Z);if(!K)continue;Q.push(K);continue}let G=await this.advanceToReviewIfInProgress(X,Z,Y.updatedBy);if(!G)continue;Q.push(G),await this.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:Y.status,to:"in_review"}}).catch((K)=>console.error("[task-board] in_review activity write failed",K))}return Q}async openReviewCycleIfInProgress($,Z){let Q=await this.db.updateTable("task_board_items").set({review_cycle_started_at:new Date,status:M$.progress}).where("id","=",$).where("organization_id","=",Z).where((Y)=>Y.or([Y("status","=",M$.progress),Y.and([Y("status","=",M$.review),Y("assignee_id","=",A8)])])).where("review_cycle_started_at","is",null).where("dismissed_at","is",null).returningAll().executeTakeFirst();if(!Q)return null;let X=this.itemFromDbRow(Q);return await this.attachRefs([X],Z),X}async closeReviewCycle($,Z){await this.db.updateTable("task_board_items").set({review_cycle_started_at:null}).where("id","=",$).where("organization_id","=",Z).execute()}async advanceToReviewIfInProgress($,Z,Q){let X=await this.db.updateTable("task_board_items").set({status:"in_review",updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returningAll().executeTakeFirst();if(!X)return null;let Y=this.itemFromDbRow(X);return await this.attachRefs([Y],Z),Y}async reopenLinkedTasksOnThreadRun($,Z){let Q=[];for(let X of await this.linkedTaskIds($,Z)){let Y=await this.getById(X,Z);if(!Y||Y.status!=="in_review")continue;await this.closeReviewCycle(X,Z),Q.push(await this.update(X,Z,{status:"in_progress"},Y.updatedBy))}return Q}claimConflictResolution($,Z,Q){return this.claimInReviewSuperAgentSlot($,Z,Q)}async claimInReviewSuperAgentSlot($,Z,Q){let X=await this.db.updateTable("task_board_items").set({status:M$.progress,review_cycle_started_at:null,updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=",M$.review).where("assignee_id","=",A8).returningAll().executeTakeFirst();if(!X)return null;let Y=this.itemFromDbRow(X);return await this.attachRefs([Y],Z),Y}async claimUnassignedForSuperAgent($,Z,Q,X,Y){if(Y===null)return null;let J=await this.db.updateTable("task_board_items").set({assignee_id:A8,assigned_by:Q,updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=",Y).where("assignee_id","is",null).returningAll().executeTakeFirst();if(!J)return null;let G=this.itemFromDbRow(J);return await this.attachRefs([G],Z),G}async advanceToProgressOnPrOpen($,Z,Q,X,Y){let J=await this.db.updateTable("task_board_items").set({status:X,assignee_id:V3`coalesce(assignee_id, ${A8})`,assigned_by:V3`case when assignee_id is null then ${Y} else assigned_by end`,...ee$.has(X)?{}:{review_cycle_started_at:null},updated_by:Y,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=",Q).returningAll().executeTakeFirst();if(!J)return null;let G=this.itemFromDbRow(J);return await this.attachRefs([G],Z),G}async unassignSuperAgent($,Z,Q){let X=await this.db.updateTable("task_board_items").set({assignee_id:null,assigned_by:null,updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("assignee_id","=",A8).returningAll().executeTakeFirst();if(!X)return null;let Y=this.itemFromDbRow(X);return await this.attachRefs([Y],Z),Y}async attachRefs($,Z){if($.length===0)return;await this.inTransaction((Q)=>Promise.all([this.attachThreads(Q,$,Z),this.attachTags(Q,$),this.attachReviewVerdicts(Q,$)]))}async attachThreads($,Z,Q){let X=Z.map((G)=>G.id),Y=await $.selectFrom("task_board_item_threads as link").innerJoin("threads as t","t.id","link.thread_id").leftJoinLateral((G)=>G.selectFrom("thread_message_parts as p").select("p.payload as payload").whereRef("p.thread_id","=","link.thread_id").where("p.role","=","assistant").where("p.kind","=","text").orderBy("p.created_at","desc").limit(1).as("lastmsg"),(G)=>G.onTrue()).leftJoinLateral((G)=>G.selectFrom("thread_message_parts as up").select((K)=>[K.fn.sum(V3`coalesce((up.metadata->'usage'->'providerMetadata'->'openrouter'->'usage'->>'cost')::numeric, 0)`).as("usd"),V3`
3628
+ order by t.updated_at desc, t.id desc limit 1)`;return(await this.db.selectFrom("task_board_items as i").select(["i.id as id","i.organization_id as organizationId",Q("updated_at").as("finishedAt")]).where("i.status","=",M$.progress).where("i.assignee_id","=",A8).where("i.review_cycle_started_at","is",null).where("i.dismissed_at","is",null).where("i.retry_at","is",null).where("i.source","is",null).where((Y)=>Y.or([Y("i.last_swept_at","is",null),Y("i.last_swept_at","<",Z)])).where((Y)=>Y.not(Y.exists(Y.selectFrom("task_board_item_prs as p").select("p.task_board_item_id").whereRef("p.task_board_item_id","=","i.id")))).where(Q("status"),"=","completed").where((Y)=>Y.not(Y.exists(Y.selectFrom("task_board_item_threads as l2").innerJoin("threads as t2","t2.id","l2.thread_id").select("t2.id").whereRef("l2.task_board_item_id","=","i.id").where("t2.status","in",["in_progress","requires_action"])))).orderBy("i.updated_at","asc").limit($).execute()).map((Y)=>({id:Y.id,organizationId:Y.organizationId,finishedAt:new Date(Y.finishedAt)}))}async listItemsDueForRetry($,Z){return await this.db.selectFrom("task_board_items").select(["id","organization_id as organizationId","retry_attempts as attempts"]).where("retry_at","is not",null).where("retry_at","<=",Z).where("status","=","in_progress").where("dismissed_at","is",null).orderBy("retry_at","asc").limit($).execute()}async claimDueRetry($,Z,Q){return(await this.db.updateTable("task_board_items").set({retry_at:null}).where("id","=",$).where("organization_id","=",Z).where("retry_at","is not",null).where("retry_at","<=",Q).returning("id").execute()).length>0}async clearRunRetry($,Z){await this.db.updateTable("task_board_items").set({retry_at:null,retry_attempts:0}).where("id","=",$).where("organization_id","=",Z).execute()}async clearSweepBudget($,Z){await this.db.updateTable("task_board_items").set({last_swept_at:null}).where("id","=",$).where("organization_id","=",Z).execute()}async linkedThreadIds($,Z){return(await this.db.selectFrom("task_board_item_threads").select("thread_id as threadId").where("task_board_item_id","=",$).where("organization_id","=",Z).execute()).map((X)=>X.threadId)}async boardManagedIds($,Z){if($.length===0)return[];let Q=await this.db.selectFrom("task_board_items").select("id").where("id","in",[...$]).where("organization_id","=",Z).where("source","is",null).execute(),X=new Set(Q.map((Y)=>Y.id));return $.filter((Y)=>X.has(Y))}async linkedTaskIds($,Z){return(await this.db.selectFrom("task_board_item_threads").select("task_board_item_id as taskId").where("thread_id","=",$).where("organization_id","=",Z).execute()).map((X)=>X.taskId)}async linkPr($){let{owner:Z,name:Q}=n5($.repo),X=await this.db.selectFrom("repositories").select("id").where("organization_id","=",$.organizationId).where("host","=",$.repo.host).where(V3`lower(path)`,"=",$.repo.path.toLowerCase()).executeTakeFirst();await this.db.insertInto("task_board_item_prs").values({task_board_item_id:$.taskBoardItemId,organization_id:$.organizationId,url:$.url,pr_number:$.prNumber,repo_owner:Z,repo_name:Q,connection_id:$.connectionId??null,repository_id:X?.id??null}).onConflict((Y)=>Y.columns(["task_board_item_id","url"]).doNothing()).execute()}async findPrLinks($){return await this.db.selectFrom("task_board_item_prs").select(["task_board_item_id as taskBoardItemId","organization_id as organizationId"]).where("repo_owner","=",$.repoOwner).where("repo_name","=",$.repoName).where("pr_number","=",$.number).execute()}async listPrs($,Z){return(await this.db.selectFrom("task_board_item_prs").select(["url","pr_number as prNumber","repo_owner as repoOwner","repo_name as repoName","connection_id as connectionId","repository_id as repositoryId","created_at as createdAt"]).where("task_board_item_id","=",$).where("organization_id","=",Z).orderBy("created_at","desc").execute()).map((X)=>({url:X.url,number:X.prNumber,repoOwner:X.repoOwner,repoName:X.repoName,connectionId:X.connectionId??null,repositoryId:X.repositoryId??null,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}))}async advanceLinkedTasksToReviewOnThreadFinish($,Z){let Q=[];for(let X of await this.linkedTaskIds($,Z)){let Y=await this.getById(X,Z);if(!Y)continue;if(Y.source)continue;let J=(await this.listPrs(X,Z)).length>0;if(!UB1(Y,J))continue;if(Y.reviewCycleStartedAt)continue;if(J){let K=await this.openReviewCycleIfInProgress(X,Z);if(!K)continue;Q.push(K);continue}let G=await this.advanceToReviewIfInProgress(X,Z,Y.updatedBy);if(!G)continue;Q.push(G),await this.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:Y.status,to:"in_review"}}).catch((K)=>console.error("[task-board] in_review activity write failed",K))}return Q}async openReviewCycleIfInProgress($,Z){let Q=await this.db.updateTable("task_board_items").set({review_cycle_started_at:new Date,status:M$.progress}).where("id","=",$).where("organization_id","=",Z).where((Y)=>Y.or([Y("status","=",M$.progress),Y.and([Y("status","=",M$.review),Y("assignee_id","=",A8)])])).where("review_cycle_started_at","is",null).where("dismissed_at","is",null).returningAll().executeTakeFirst();if(!Q)return null;let X=this.itemFromDbRow(Q);return await this.attachRefs([X],Z),X}async closeReviewCycle($,Z){await this.db.updateTable("task_board_items").set({review_cycle_started_at:null}).where("id","=",$).where("organization_id","=",Z).execute()}async advanceToReviewIfInProgress($,Z,Q){let X=await this.db.updateTable("task_board_items").set({status:"in_review",updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returningAll().executeTakeFirst();if(!X)return null;let Y=this.itemFromDbRow(X);return await this.attachRefs([Y],Z),Y}async reopenLinkedTasksOnThreadRun($,Z){let Q=[];for(let X of await this.linkedTaskIds($,Z)){let Y=await this.getById(X,Z);if(!Y||Y.status!=="in_review")continue;await this.closeReviewCycle(X,Z),Q.push(await this.update(X,Z,{status:"in_progress"},Y.updatedBy))}return Q}claimConflictResolution($,Z,Q){return this.claimInReviewSuperAgentSlot($,Z,Q)}async claimInReviewSuperAgentSlot($,Z,Q){let X=await this.db.updateTable("task_board_items").set({status:M$.progress,review_cycle_started_at:null,updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=",M$.review).where("assignee_id","=",A8).returningAll().executeTakeFirst();if(!X)return null;let Y=this.itemFromDbRow(X);return await this.attachRefs([Y],Z),Y}async claimUnassignedForSuperAgent($,Z,Q,X,Y){if(Y===null)return null;let J=await this.db.updateTable("task_board_items").set({assignee_id:A8,assigned_by:Q,updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=",Y).where("assignee_id","is",null).returningAll().executeTakeFirst();if(!J)return null;let G=this.itemFromDbRow(J);return await this.attachRefs([G],Z),G}async advanceToProgressOnPrOpen($,Z,Q,X,Y){let J=await this.db.updateTable("task_board_items").set({status:X,assignee_id:V3`coalesce(assignee_id, ${A8})`,assigned_by:V3`case when assignee_id is null then ${Y} else assigned_by end`,...ee$.has(X)?{}:{review_cycle_started_at:null},updated_by:Y,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=",Q).returningAll().executeTakeFirst();if(!J)return null;let G=this.itemFromDbRow(J);return await this.attachRefs([G],Z),G}async unassignSuperAgent($,Z,Q){let X=await this.db.updateTable("task_board_items").set({assignee_id:null,assigned_by:null,updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("assignee_id","=",A8).returningAll().executeTakeFirst();if(!X)return null;let Y=this.itemFromDbRow(X);return await this.attachRefs([Y],Z),Y}async attachRefs($,Z){if($.length===0)return;await this.inTransaction((Q)=>Promise.all([this.attachThreads(Q,$,Z),this.attachTags(Q,$),this.attachReviewVerdicts(Q,$)]))}async attachThreads($,Z,Q){let X=Z.map((G)=>G.id),Y=await $.selectFrom("task_board_item_threads as link").innerJoin("threads as t","t.id","link.thread_id").leftJoinLateral((G)=>G.selectFrom("thread_message_parts as p").select("p.payload as payload").whereRef("p.thread_id","=","link.thread_id").where("p.role","=","assistant").where("p.kind","=","text").orderBy("p.created_at","desc").limit(1).as("lastmsg"),(G)=>G.onTrue()).leftJoinLateral((G)=>G.selectFrom("thread_message_parts as up").select((K)=>[K.fn.sum(V3`coalesce((up.metadata->'usage'->'providerMetadata'->'openrouter'->'usage'->>'cost')::numeric, 0)`).as("usd"),V3`
3629
3629
  case
3630
3630
  when count(distinct up.metadata->'models'->'thinking'->>'provider') = 1
3631
3631
  then max(up.metadata->'models'->'thinking'->>'provider')
@@ -5543,7 +5543,7 @@ ${Y}`,$.data)}function qf0($){let Z=$;if(!Z||Z.isError!==!0||!Array.isArray(Z.co
5543
5543
  ${Z}`}:X)}}var ZL8=L(()=>{FZ()});async function HZ5($,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 xT1(){return{kind:"org"}}function GE($,Z,Q,X){let Y=new e7({name:`lazy-${$.id}`,version:"1.0.0"},{capabilities:{},jsonSchemaValidator:_Z}),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){UF0($.id);let D=L3($,Z,Q).then((w)=>{NF0($.id);let j=w.onclose;return w.onclose=()=>{if(G===D)G=null;j?.()},w}).catch((w)=>{throw G=null,BF0($.id),w});G=D}return G}let H=(D,w)=>D!==void 0||w!==void 0,F=(D,w,j,E)=>{return async(z,A)=>{if($.connection_type==="VIRTUAL"||J||!X||H(z,A)){let T=await W();return w(T,z,A)}let P=await JE(D,$.id,async()=>{let T=await W(),q=await w(T);return j(q)},X,(T)=>Z.pendingRevalidations.push(T),YE);return E(P??[])}};Y.listTools=F("tools",(D,w,j)=>D.listTools(w,j),(D)=>D.tools,(D)=>({tools:D})),Y.listResources=F("resources",(D,w,j)=>D.listResources(w,j),(D)=>D.resources,(D)=>({resources:D})),Y.listPrompts=F("prompts",(D,w,j)=>D.listPrompts(w,j),(D)=>D.prompts,(D)=>({prompts:D}));let U=JL0(),N=$.connection_type!=="VIRTUAL"&&!J,B=async(D,w,j)=>{let E=D?.name,z=U&&N&&typeof E==="string"&&await HZ5(X,$.id,E);if(U&&z&&!w)return await U.fetch({type:"tools/call",connectionId:$.id,scope:xT1(),params:{name:E,arguments:D?.arguments},fetchLive:async()=>{return(await W()).callTool(D,w,j)},shouldCache:(T)=>T?.isError!==!0,onRevalidation:(T)=>Z.pendingRevalidations.push(T)});let A=await W();if(U&&N&&!z)try{return await A.callTool(D,w,j)}finally{rd($.id)}return A.callTool(D,w,j)};Y.callTool=async(D,w,j)=>{let E=D?.name,z=typeof E==="string"?E:null,A=D?.arguments,P=async()=>{return(await X.get("tools",$.id).catch(()=>null))?.find((h)=>typeof h==="object"&&h!==null&&h.name===z)?.inputSchema},T=async(V)=>{let h=sB8(V,A);if(!h)return null;return await B({...D,arguments:h},w,j).catch(()=>null)},q;try{q=await B(D,w,j)}catch(V){if(!z||!X||!(V instanceof k1)||V.code!==f1.InvalidParams)throw V;let h=await P(),g=await T(h);if(g&&!qf0(g))return g;throw eB8(V,z,h,A)}if(!z||!X||!qf0(q))return q;let f=await P(),C=await T(f);if(C&&!qf0(C))return C;return $L8(q,vT1(z,f,A))},Y.getPrompt=async(D,w)=>{if(!U||!N)return(await W()).getPrompt(D,w);return await U.fetch({type:"prompts/get",connectionId:$.id,scope:xT1(),params:D,fetchLive:async()=>{return(await W()).getPrompt(D,w)},onRevalidation:(E)=>Z.pendingRevalidations.push(E)})},Y.readResource=async(D,w)=>{if(!U||!N){if(process.env?.MCP_CACHE_DEBUG)console.log("[mcp-read-cache] BYPASS (VIRTUAL)",$.id,"resources/read");return(await W()).readResource(D,w)}return await U.fetch({type:"resources/read",connectionId:$.id,scope:xT1(),params:D,fetchLive:async()=>{return(await W()).readResource(D,w)},onRevalidation:(E)=>Z.pendingRevalidations.push(E)})},Y.listResourceTemplates=async(D,w)=>{return(await W()).listResourceTemplates(D,w)};let O=Y.close.bind(Y);return Y.close=async()=>{if(K=!0,G){let D=await G.catch(()=>null);if(D)await D.close().catch(()=>{})}await O()},Y}var A$0=L(()=>{UL();IJ();FZ();IZ1();w$0();h$0();dJ();y$0();ZL8()});function zD1($){return{client:{callTool:$.callTool.bind($),listTools:$.listTools.bind($)}}}async function FZ5($,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=GE(X,Z,Q,jZ()??void 0),J=qA(Y,{name:"mcp-cms-proxy-client",version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}},toolCallTimeoutMs:Zc}),{client:G,server:K}=MZ1();await J.connect(K);let W=new e7({name:"mcp-cms-proxy-client",version:"1.0.0"},{jsonSchemaValidator:_Z});return await W.connect(G),W}async function QL8($,Z){return FZ5($,Z,{superUser:!1})}var PD1=L(()=>{A$0();dJ();IJ();UL()});function fT1($,Z){let Q=$["*"];if(Q?.includes("*"))return!0;for(let[X,Y]of Object.entries(Z)){let J=$[X];if(J?.includes("*"))continue;let G=new Set([...J??[],...Q??[]]);for(let K of Y)if(!G.has(K))return!1}return!0}import{sql as bT1}from"kysely";function Mf0($){if($==null)return null;return typeof $==="string"?$:$.toISOString()}function If0($){return`msg_async_stub_${$}`}async function yT1($,Z){await $.deleteFrom("thread_messages").where("id","=",If0(Z)).execute(),await $.deleteFrom("thread_message_parts").where("message_id","=",If0(Z)).execute()}function UZ5($){if($==null)return null;if(typeof $!=="string")return $;try{return JSON.parse($)}catch{return null}}function gT1($){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:Mf0($.last_polled_at),lastError:$.last_error??null,inputTokens:$.input_tokens??null,outputTokens:$.output_tokens??null,citations:UZ5($.citations),resultUri:$.result_uri??null,resultPreview:$.result_preview??null,resultContent:$.result_content??null,createdAt:Mf0($.created_at)??"",updatedAt:Mf0($.updated_at)??"",completedAt:Mf0($.completed_at)}}class hT1{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 Y90{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 gT1(Q);let X=await this.db.selectFrom("async_research_jobs").selectAll().where("organization_id","=",$.organizationId).where("tool_call_id","=",$.toolCallId).executeTakeFirstOrThrow();return gT1(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?gT1(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=If0(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:bT1`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 yT1(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 yT1(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 yT1(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:bT1`COALESCE(last_error, '') || ' [abandoned by sweeper]'`}).where("status","in",["pending","polling"]).where(bT1`COALESCE(last_polled_at, created_at) < ${Z}::timestamptz`).returning(["tool_call_id"]).execute();if(Y.length===0)return 0;let J=Y.map((G)=>If0(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 uT1=()=>{};class lT1{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 NZ5}from"kysely";function XL8($){return $ instanceof Date?$.toISOString():String($)}class cT1{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:XL8($.created_at),updatedBy:$.updated_by,updatedAt:XL8($.updated_at)}}async create($){let Z=X4("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(Vf0).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 cn($.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(Vf0).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 cn($);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(Vf0).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(Vf0).executeTakeFirst();if(!Q)throw new cn($);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 cn($);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(NZ5`lower(name) = lower(${$.name})`).selectAll().executeTakeFirst();if(!Z)throw new cn($.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 Vf0,cn;var YL8=L(()=>{TX();Vf0=["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"];cn=class cn extends Error{constructor($){super(`File config ${$} not found`);this.name="OrgFileConfigNotFoundError"}}});function JL8($){return $ instanceof Date?$.toISOString():String($)}function J90($){return{slug:$.slug,organizationId:$.organization_id,source:$.source,createdBy:$.created_by,createdAt:JL8($.created_at),updatedBy:$.updated_by,updatedAt:JL8($.updated_at)}}class eg{db;constructor($){this.db=$}async claimSite($){if(!Z7($.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 J90(Q);let X=await this.getBySlug($.slug);if(!X)throw new G90($.slug,"unknown");if(X.organizationId!==$.organizationId)throw new G90($.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 J90(Y)}async reassignSite($){if(!Z7($.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 J90(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?J90(Z):null}async listByOrg($){return(await this.db.selectFrom("org_sites").selectAll().where("organization_id","=",$).orderBy("slug","asc").execute()).map((Q)=>J90(Q))}async isOwnedBy($,Z){return!!await this.db.selectFrom("org_sites").select("slug").where("slug","=",$).where("organization_id","=",Z).executeTakeFirst()}}var G90;var mT1=L(()=>{aK();G90=class G90 extends Error{slug;ownerOrganizationId;constructor($,Z){super(`Site slug "${$}" is already owned by another organization`);this.slug=$;this.ownerOrganizationId=Z;this.name="OrgSiteConflictError"}}});function dT1($){return $?`${$.id}:${$.updatedAt}`:null}class iT1{db;constructor($){this.db=$}async create($,Z){return await this.db.deleteFrom("github_connect_flows").where("expires_at","<=",new Date).execute(),this.db.transaction().execute(async(Q)=>{await Q.selectFrom("organization").select("id").where("id","=",$.organizationId).forUpdate().executeTakeFirstOrThrow(),await Q.deleteFrom("github_connect_flows").where("organization_id","=",$.organizationId).where("user_id","=",$.userId).execute();let X=crypto.randomUUID();return await Q.insertInto("github_connect_flows").values({id:X,organization_id:$.organizationId,user_id:$.userId,encrypted_access_token:Z,expires_at:new Date(Date.now()+600000)}).execute(),X})}async get($,Z){return this.db.selectFrom("github_connect_flows").selectAll().where("id","=",$).where("organization_id","=",Z.organizationId).where("user_id","=",Z.userId).where("expires_at",">",new Date).executeTakeFirst()}async refresh($,Z,Q){return(await this.db.updateTable("github_connect_flows").set({encrypted_access_token:Q}).where("id","=",$).where("organization_id","=",Z.organizationId).where("user_id","=",Z.userId).where("expires_at",">",new Date).executeTakeFirst()).numUpdatedRows>0n}async cancel($,Z){await this.db.deleteFrom("github_connect_flows").where("id","=",$).where("organization_id","=",Z.organizationId).where("user_id","=",Z.userId).execute()}async connect($,Z,Q,X){return this.db.transaction().execute(async(Y)=>{if(await Y.selectFrom("organization").select("id").where("id","=",Z.organizationId).forUpdate().executeTakeFirstOrThrow(),!await Y.deleteFrom("github_connect_flows").where("id","=",$).where("organization_id","=",Z.organizationId).where("user_id","=",Z.userId).where("expires_at",">",new Date).returning("id").executeTakeFirst())return null;let G=new u2(Y),K=await G.findByExternalId({organizationId:Z.organizationId,host:Q.host,externalAccountId:Q.externalAccountId});if(dT1(K)!==X)throw new kf0("GitHub repository access changed. Review the selection again.");return G.upsert({...Q,organizationId:Z.organizationId,createdBy:Z.userId})})}}var kf0;var pT1=L(()=>{IL0();kf0=class kf0 extends Error{}});class nT1{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 GL8($){return $ instanceof Date?$.toISOString():String($)}class hO{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:GL8($.created_at),updatedAt:GL8($.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?WL8(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?WL8(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","continue_pr"]).where("organization_id","=",$).orderBy("jira_status","asc").execute()).map(KL8)}async getAutomation($,Z){let Q=await this.db.selectFrom("org_jira_column_automations").select(["jira_status","prompt","continue_pr"]).where("organization_id","=",$).where("jira_status","=",Z).executeTakeFirst();return Q?KL8(Q):null}async upsertAutomation($,Z,Q,X=!1){return await this.db.insertInto("org_jira_column_automations").values({organization_id:$,jira_status:Z,prompt:Q,continue_pr:X}).onConflict((Y)=>Y.columns(["organization_id","jira_status"]).doUpdateSet({prompt:Q,continue_pr:X,updated_at:new Date})).execute(),{jiraStatus:Z,prompt:Q,continuePr:X}}async removeAutomation($,Z){return((await this.db.deleteFrom("org_jira_column_automations").where("organization_id","=",$).where("jira_status","=",Z).executeTakeFirst()).numDeletedRows??0n)>0n}}function KL8($){return{jiraStatus:$.jira_status,prompt:$.prompt,continuePr:$.continue_pr}}function WL8($){return{itemId:$.item_id,jiraIssueId:$.jira_issue_id,jiraIssueKey:$.jira_issue_key}}class tT1{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 oT1{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(`
5544
5544
 
5545
5545
  `):void 0}async upsert($,Z,Q){return await this.db.insertInto("task_board_prompts").values({id:HL8($,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","=",HL8($,Z)).where("organization_id","=",$).executeTakeFirst()).numDeletedRows??0n)>0n}}var HL8=($,Z)=>`tbp_${$}_${Z??""}`;function aT1($){let Z=new Set;for(let Q of $.matchAll(BZ5))if(Z.add(Q[2]),Z.size>=50)break;return[...Z]}var BZ5;var FL8=L(()=>{BZ5=/\[@([^\]]+)\]\(mention:([^)\s]+)\)/g});async function UL8($){let{db:Z,organizationId:Q,actorId:X}=$;try{let Y=new Set(aT1($.previousBody??"")),G=aT1($.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 Np({db:Z,taskBoardItemId:$.taskBoardItemId,type:"mentioned",actorId:X,alsoSubscribe:W,recipients:W})}catch(Y){console.error("[notifications] mention fan-out failed",Y)}}var NL8=L(()=>{FL8();ES0()});import{sql as LZ5}from"kysely";class rT1{db;constructor($){this.db=$}async listUnread($,Z,Q={}){let X=Math.min(Q.limit??OZ5,DZ5),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(LZ5`(created_at, id) <
5546
- (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:Up.parse(F.data),createdAt:wZ5(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:X4("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 Np({...$,db:this.db})}async notifyMentions($){await UL8({...$,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 OZ5=20,DZ5=50,wZ5=($)=>$ instanceof Date?$.toISOString():$;var BL8=L(()=>{TX();jS0();ES0();NL8()});class sT1{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 eT1{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 jZ5($){return $.includes("/")?$.split("/").slice(1).join("/"):$}function EZ5($){let Z=$.supported_parameters?.includes("tools")??!1,Q=$.supported_parameters?.includes("reasoning")??!1;return{providerId:"openrouter",modelId:jZ5($.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:Number($.pricing.prompt),output:Number($.pricing.completion)}}}function OL8($){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 zZ5($){if($){let Z=await $.get(LL8,"openrouter");if(Z)return OL8(Z)}try{let Z=await jU("OpenRouter enrichment index","https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!Z.ok)await CX("OpenRouter enrichment index",Z);let{data:Q}=await Z.json(),X=Q.map(EZ5);if($)await $.set(LL8,"openrouter",X);return OL8(X)}catch{return new Map}}function PZ5($){let Z=$.replace(/\./g,"-"),Q=$.replace(/-\d{8}$/,""),X=Q.replace(/\./g,"-");return[...new Set([$,Z,Q,X])]}function TZ5($){return $.providerId==="anthropic"||$.modelId.startsWith("anthropic/")}function wL8($,Z){if(TZ5(Z)&&$.includes("vision")&&!$.includes("file"))return[...$,"file"];return $}function AZ5($,Z){return $.map((Q)=>{let Y=PZ5(Q.modelId).map((K)=>Z.get(K)).find(Boolean),J=Q.capabilities.length?Q.capabilities:Y?.capabilities??[],G=wL8(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 $A1{storage;cache;constructor($,Z){this.storage=$;this.cache=Z}async activate($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=b9()[Q.providerId];if(!Y)throw Error(`Unknown provider: ${Q.providerId}`);return Y.create(X)}async listDecisionModels($,Z){let Q=await this.activate($,Z);if(!Q.decisions?.listModels)throw Error("Provider does not support decision model discovery");let X=`${Q.info.id}:decisions`,Y=await this.cache?.get(Z,X);if(Y)return Y;let J=new Set,G=(await Q.decisions.listModels()).filter((K)=>{if(K.deprecated||!K.capabilities.includes("decisions")||J.has(K.modelId))return!1;return J.add(K.modelId),!0}).map((K)=>({...K,providerId:Q.info.id}));return await this.cache?.set(Z,X,G),G}async listModels($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=Q.providerId,J=b9()[Y];if(!J)throw Error(`Unknown provider: ${Y}`);if(this.cache){let U=await this.cache.get(Z,Y);if(U)return DL8(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"&&Y!=="deco"){let U=await zZ5(this.cache);H=AZ5(H,U)}else H=H.map((U)=>({...U,capabilities:wL8(U.capabilities,U)}));let F=H.map((U)=>({...U,providerId:Y}));if(this.cache)await this.cache.set(Z,Y,F);return DL8(F,J,X)}}function DL8($,Z,Q){let Y=Z.create(Q).asyncResearch;if(!Y)return $;return $.map((J)=>Y.canHandle(J.modelId)?{...J,asyncResearch:!0}:J)}var LL8="_global";var jL8=L(()=>{mK();lA()});import{SpanStatusCode as EL8}from"@opentelemetry/api";function qZ5($){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(Object.keys(Q).length>=RZ5)break;if(typeof Y==="string"&&X.length<=zL8&&Y.length<=zL8)Q[X]=Y}return Object.keys(Q).length>0?Q:void 0}catch{return}}function MZ5($,Z){return Z?.connectionId??$?.headers.get("x-caller-id")??void 0}function IZ5($){try{let Z=new URL($.url).pathname.split("/").filter(Boolean);if(Z[0]==="api"&&Z[1])return decodeURIComponent(Z[1])}catch{}return}function XA1($){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 fT1(Y??{},F);let N=!!U?.organizationId&&!!K&&U.organizationId!==K,B=U?U.role:X;if(SZ(B))return!0;if(Y&&!N)return fT1(Y,F);let O=oN8(U?.role,F,aN8());if(O!=="fallback")return O==="grant";if(!H)return console.error("[Auth] hasPermission API not available"),!1;let D=U?.organizationId?{organizationId:U.organizationId}:{};try{if((await H({headers:Q,body:{permission:F,...D}}))?.success===!0)return!0;let j=TN$(F);return(await H({headers:Q,body:{permission:j,...D}}))?.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)=>!_9(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 C2($,Z,Q){if(Km.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}}function kZ5($,Z,Q){$.delete(Z),$.set(Z,{archived:Q,at:Date.now()})}function SZ5($,Z,Q){if($.size<=Z)return;let X=Date.now();for(let[Y,J]of $)if(X-J.at>=Q)$.delete(Y);if($.size>Z){let Y=$.size-Z,J=0;for(let G of $.keys()){if(J>=Y)break;$.delete(G),J++}}}async function TL8($,Z,Q,X){let Y=ZA1.get(Q);if(Y&&Date.now()-Y.at<PL8)return Y.archived;let J=await Z.measure(X,()=>$.selectFrom("organization").select(["metadata"]).where("id","=",Q).executeTakeFirst()),G=_9(J);return kZ5(ZA1,Q,G),SZ5(ZA1,VZ5,PL8),G}async function QA1($,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 CZ5($,Z){if(!$)return!0;return Z===$}async function _Z5($,Z,Q,X,Y){let J=KH0($.headers,"token");if(!J)return;let G=await Q.measure("auth_verify_onbehalf_studio_jwt",()=>f81(J));if(!G?.sub)return;let K=G.metadata?.organizationId;if(!CZ5(X,K))return;let W=X?await QA1(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 vZ5($,Z,Q,X=RL8,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=IZ5($),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(_9({metadata:N?.orgMetadata}))throw Error(YH0);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 D;if(N&&B)D=await X.measure("auth_fetch_role_permissions",()=>C2(Q,N.organizationId,B));return{user:{id:W,role:B},role:B,permissions:D,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",()=>f81(G));if(K){let W,H=K.metadata?.organizationId;if(K.sub&&H)W=await QA1(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 TL8(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(_9(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 TL8(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 QA1(Q,X,U,W.id,Y);let N=await _Z5($,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(_9({metadata:N?.orgMetadata}))throw Error(YH0);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&&!_9(N))W={id:N.id,slug:N.slug,name:N.name},H=N.members?.find((O)=>O.userId===K.user.id)?.role;else if(!N)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;if(K.message===YH0)throw 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 qL8($){let Z=new mG($.encryption.key),Q=T0(),X=Q.clickhouseUrl,Y=!!X,J=!Y&&!!Q.monitoringS3Bucket,G=Y?"clickhouse":"duckdb",{resolve:K}=await import("path"),W=K(cW()),H=K(bB()),F=(P)=>`read_ndjson('${W}/${P}/**/*.ndjson', auto_detect=true)`,U=(P)=>`read_ndjson('${H}/${P}/**/*.ndjson', auto_detect=true)`,N,B,O,D,w=!1;if($.monitoringEngines)N=$.monitoringEngines.monitoringEngine,B=$.monitoringEngines.metricEngine,O=F,D=U;else if(Y){let P=Q.clickhouseMaxMemoryUsage?{maxMemoryUsage:String(Q.clickhouseMaxMemoryUsage)}:void 0;N=new Be(X,P),B=new Be(X,P),O=(T)=>"studio_monitoring_logs",D=(T)=>"studio_monitoring_logs"}else if(J){let P=Q.monitoringS3AccessKeyId??Q.s3AccessKeyId,T=Q.monitoringS3SecretAccessKey??Q.s3SecretAccessKey,q=Q.duckdbExtensionDirectory;if(!P||!T||!q)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 f={endpoint:Q.monitoringS3Endpoint??Q.s3Endpoint??"storage.googleapis.com",region:Q.monitoringS3Region??Q.s3Region,accessKeyId:P,secretAccessKey:T,extensionDirectory:q},C=new Ne(f,{memoryLimit:Q.duckdbMemoryLimit,threads:Q.duckdbThreads});N=C,B=C;let V=Q.monitoringS3Bucket,h=Q.monitoringS3Prefix??"",g=(l,u)=>FN$({bucket:V,prefix:h,range:u});O=g,D=g,w=!0}else{let{engine:P}=await B51({basePath:cW()}),{engine:T}=await B51({basePath:bB()});N=P,B=T,O=F,D=U}let j=new Jc($.db),E=new Y90($.db),z=new we($.db),A={connections:new $s($.db,Z),connectionCredentialVault:new V41($.db),organizationSettings:new LA($.db),userModelPreferences:new O51($.db),monitoring:new f41(N,O,B,D,G,w),virtualMcps:new Gc($.db),users:new I51($.db),tags:new je($.db),experiments:new q51($.db),organizationBilling:new tG($.db),aiProviderKeys:new V00($.db,Z,$.providerKeyCache),subsidizedGatewayKeys:new lT1($.db,Z),secrets:new RF1($.db,Z),orgFileConfigs:new cT1($.db,Z),orgSites:new eg($.db),orgRepoSyncs:new r2($.db),gitProviderAccounts:new u2($.db),gitProviderAccountCredentials:new Y80($.db,Z),gitProviderOAuthStates:new nT1($.db),githubConnectFlows:new iT1($.db),repositories:new J80($.db),jiraIntegrations:new hO($.db,Z),taskBoard:new k3($.db),columnAutomations:new tT1($.db),taskBoardPrompts:new oT1($.db),taskBoardAnalytics:new hO1($.db),threadAnalytics:new mO1($.db),notifications:new rT1($.db),orgFsEntries:new fr($.db),oauthPkceStates:new sT1($.db),claudeSubscriptions:new eT1($.db,Z),automations:rW0($.db),triggerCallbackTokens:new Oe($.db),orgSsoConfig:new T51($.db,Z),orgSsoSessions:new A51($.db),brandContext:new De($.db),organizationDomains:new nG($.db),organizationJoinRequests:new Jm($.db),kv:z,interests:new P51(z)};return async(P,T)=>{let q=T?.timings??RL8,f=Rf0(),C=P?await $.observability.tracer.startActiveSpan("studio.auth",async($0)=>{try{let a=await vZ5(P,$.auth,$.db,q,$.memberRoleCache);return $0.setStatus({code:EL8.OK}),a}catch(a){throw $0.setStatus({code:EL8.ERROR,message:a.message}),$0.recordException(a),a}finally{$0.end()}}):{user:void 0},V=MZ5(P,C.user),h=XA1({auth:$.auth,headers:P?.headers??new Headers,role:C.role,permissions:C.permissions,userId:C.user?.id,apiKeyId:C.apiKeyId,organizationId:C.organization?.id}),g={user:C.user,tokenOrganizationId:C.tokenOrganizationId,permissions:C.permissions,permissionsOrganizationId:C.permissions?C.organization?.id:void 0};if(C.apiKey)g.apiKey=C.apiKey;let l=C.organization,u=P?T0().baseUrl??`${new URL(P.url).origin}`:S9(),d=new DA(g.user?.id,void 0,h,C.role,"self",void 0,l?.id),W0={...A,virtualMcps:IK$(A.virtualMcps),threads:new R41(j,l?.id),asyncResearchJobs:new hT1(E,l?.id)},P0=new $A1(W0.aiProviderKeys,$.modelListCache),J0=qQ(),U0=!l?null:J0?zY(J0,l.id):new OK(l.id,u),Y0=l&&U0?new DK(U0,W0.orgFsEntries,l.id):null;Sa0(W0,{objectStorage:U0,baseUrl:u,orgSlug:l?.slug});let t={timings:q,auth:g,connectionId:V,organization:l,storage:W0,vault:Z,authInstance:$.auth,boundAuth:h,access:d,db:$.db,tracer:$.observability.tracer,meter:$.observability.meter,baseUrl:u,objectStorage:U0,orgFs:Y0,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(xZ5.map(($0)=>[$0,P?.headers.get($0)??null]).filter(([,$0])=>$0!==null)),userAgent:(P?KH0(P.headers,"client"):null)||P?.headers.get("User-Agent")||void 0,ipAddress:(P?.headers.get("CF-Connecting-IP")||P?.headers.get("X-Forwarded-For"))??void 0,properties:qZ5(P?KH0(P.headers,"properties"):null)},aiProviders:P0,createMCPProxy:async($0)=>{return await QL8($0,t)},invalidateMemberRole:$.memberRoleCache?($0,a)=>$.memberRoleCache.invalidate($0,a):void 0,getOrCreateClient:f,pendingRevalidations:[],firecrawlApiKey:T0().firecrawlApiKey};return t}}function Lz($,Z){$.storage.threads.setOrganizationId(Z.id),$.storage.asyncResearchJobs.setOrganizationId(Z.id);let Q=qQ();$.objectStorage=Q?zY(Q,Z.id):new OK(Z.id,$.baseUrl),$.orgFs=new DK($.objectStorage,$.storage.orgFsEntries,Z.id),Sa0($.storage,{objectStorage:$.objectStorage,baseUrl:$.baseUrl,orgSlug:Z.slug??void 0})}var RZ5=50,zL8=500,PL8=60000,VZ5=1e4,ZA1,AL8,aQ,RL8,xZ5;var eU=L(()=>{YH();bT();W$();D9();q41();$W0();k41();vK$();UN$();WK();L51();D51();w51();E51();R51();EN$();Ee();UH();C51();PD1();IX();NT1();er();uT1();CT1();TQ1();s80();YL8();mT1();IL0();Ki();pT1();uO1();dO1();zO();BL8();V81();oB();jL8();yB();cl();gG0();ZA1=new Map;aQ={set:($)=>{AL8=$},create:async($,Z)=>{return await AL8($,Z)}},RL8={measure:async($,Z)=>{return await Z()}},xZ5=["x-hub-signature-256"]});import{DBOS as Sf0,SchedulerMode as fZ5}from"@dbos-inc/dbos-sdk";function ML8($){JA1=$}function IL8(){if(!JA1)throw Error("[org-fs] org-repo-sync runtime not initialized \u2014 setOrgRepoSyncRuntime() must run before the workflow fires");return JA1}async function yZ5($,Z){let Q=await $.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z).executeTakeFirst();if(!Q)return null;let X=await aQ.create();return X.organization={id:Q.id,slug:Q.slug,name:Q.name},Lz(X,{id:Q.id,slug:Q.slug}),X}async function gZ5($){try{let{db:Z}=IL8(),Q=await yZ5(Z,$.organizationId);if(!Q)return{id:$.id,volume:$.volume,error:"organization no longer exists"};let X=await JO0(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 hZ5($,Z){let Q=await Sf0.runStep(()=>new r2(IL8().db).listEnabled(),{name:"loadOrgRepoSyncConfigs"});for(let X of Q){let Y=await Sf0.runStep(()=>gZ5(X),{name:`syncOrgRepo:${X.id}`});if(Y.error)console.warn(`[org-fs] org repo sync ${Y.id} (${Y.volume}) failed: ${Y.error}`)}}function VL8(){if(YA1)return;YA1=Sf0.registerWorkflow(hZ5,{name:"orgRepoSyncWorkflow"}),Sf0.registerScheduled(YA1,{name:"orgRepoSyncWorkflow",crontab:bZ5,mode:fZ5.ExactlyOncePerIntervalWhenActive})}var bZ5="7-59/10 * * * *",JA1=null,YA1=null;var kL8=L(()=>{eU();GO0()});import{DBOS as Cf0,SchedulerMode as uZ5}from"@dbos-inc/dbos-sdk";function SL8($){KA1=$}function CL8(){if(!KA1)throw Error("[task-board-archive] runtime not initialized \u2014 setTaskBoardArchiveSweepRuntime() must run before the workflow fires");return KA1}async function dZ5($,Z){try{let Q=await FW(CL8().db,$);if(!Q)return{organizationId:$,archived:0};let{archived:X}=await X08(Q,$,Z);return{organizationId:$,archived:X}}catch(Q){return{organizationId:$,archived:0,error:Q instanceof Error?Q.message:String(Q)}}}async function iZ5($,Z){let Q=new Date($.getTime()-cZ5),X=await Cf0.runStep(()=>new k3(CL8().db).listItemsAwaitingArchive(Q,mZ5),{name:"loadArchiveCandidates"});if(X.length===0)return;let Y=await Promise.all(AS0(X).map(({organizationId:G,itemIds:K})=>Cf0.runStep(()=>dZ5(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 _L8(){if(GA1)return;GA1=Cf0.registerWorkflow(iZ5,{name:"taskBoardArchiveSweepWorkflow"}),Cf0.registerScheduled(GA1,{name:"taskBoardArchiveSweepWorkflow",crontab:lZ5,mode:uZ5.ExactlyOncePerIntervalWhenActive})}var lZ5="23 * * * *",cZ5=432000000,mZ5=200,KA1=null,GA1=null;var vL8=L(()=>{zO();Op();sy()});import{createHmac as pZ5,timingSafeEqual as nZ5}from"crypto";function fL8($,Z,Q,X=Date.now()){if(!Z||!Q)return!1;let Y,J=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let U=H.slice(0,F).trim(),N=H.slice(F+1).trim();if(U==="t")Y=N;else if(U==="v1")J.push(N)}if(!Y||J.length===0)return!1;let G=Number(Y);if(!Number.isFinite(G)||Math.abs(X/1000-G)>tZ5)return!1;let K=pZ5("sha256",Q).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return J.some((H)=>{let F=Buffer.from(H,"hex");return W.length===F.length&&nZ5(W,F)})}function bL8($){let Z;try{Z=JSON.parse($)}catch{return null}let Q=g7(Z),X=g7(g7(Q?.data)?.object);if(!Q||typeof Q.type!=="string"||!X)return null;return{id:RW(Q.id),type:Q.type,created:typeof Q.created==="number"?Q.created:void 0,livemode:typeof Q.livemode==="boolean"?Q.livemode:void 0,data:{object:X}}}function vf0($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function RW($){return typeof $==="string"?$:void 0}function g7($){return typeof $==="object"&&$!==null?$:void 0}function xf0($){return typeof $==="number"?new Date($*1000):null}function _f0($){return RW($)??RW(g7($)?.id)}function oZ5($){return _f0($.subscription)??RW(g7(g7($.parent)?.subscription_details)?.subscription)}function aZ5($){let Z=g7($.lines)?.data;if(Array.isArray(Z)){let Q=null;for(let X of Z){let Y=g7(g7(X)?.period)?.end;if(typeof Y==="number"&&(Q===null||Y>Q))Q=Y}if(Q!==null)return new Date(Q*1000)}return xf0($.period_end)}function rZ5($,Z){let Q=g7($.items)?.data;if(!Array.isArray(Q))return;for(let X of Q){let Y=g7(X)?.amount;if(typeof Y==="number"&&Y<=0)continue;let J=_f0(g7(X)?.price);if(J&&Z[J])return Z[J]}return}function FA1($,Z,Q){if($==="past_due")return;if($!=="active")return"free";return}function sZ5($){let Z=xf0($.current_period_end);if(Z)return Z;let Q=g7($.items)?.data;if(!Array.isArray(Q))return null;let X=0;for(let Y of Q){let J=g7(Y)?.current_period_end;if(typeof J==="number"&&J>X)X=J}return X>0?new Date(X*1000):null}function WA1($,Z){let Q=xf0($.created);return!!Q&&!!Z.lastStripeEventAt&&Q<Z.lastStripeEventAt}function HA1($,Z){let Q=xf0($.created);if(!Q)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>Q?void 0:Q}async function eZ5($,Z){let Q=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let X=RW(g7(Q.metadata)?.orgId);if(!X)return{handled:!1,reason:"no orgId"};if(RW(g7(Q.metadata)?.kind)==="topup"){if(Q.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(RW(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let H=RW(Q.id);if(!H)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:X}),{handled:!1,reason:"topup session without id"};let F=Number(g7(Q.metadata)?.creditCents);if(!Number.isInteger(F)||F<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:X,creditCents:g7(Q.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:X,topUp:{creditCents:F,referenceId:`stripe-topup:${H}`}}}if(Q.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(RW(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.ensureBilling(X);if(!Y)return console.error("stripe webhook: PAID checkout for an org that does not exist",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"unknown org"};let J=_f0(Q.subscription);if(!J)return console.error("stripe webhook: subscription checkout without a sub id",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"subscription checkout without sub id"};if(WA1(Z,Y))return{handled:!1,reason:"stale event"};if(Y.stripeSubscriptionId&&Y.stripeSubscriptionId!==J)return console.error("stripe webhook: refused checkout rebind",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:J};let G=_f0(Q.customer);if(!await $.bindSubscription(X,{stripeSubscriptionId:J,...G?{stripeCustomerId:G}:{},status:"active",lastStripeEventAt:HA1(Z,Y)}))return console.error("stripe webhook: lost the bind race",{organizationId:X,subscriptionId:J,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:J};let W=RW(g7(Q.metadata)?.planId);return{handled:!0,organizationId:X,...W?{planChange:{planId:W,note:`stripe checkout ${RW(Q.id)??""}`.trim()}}:{}}}case"customer.subscription.updated":case"customer.subscription.deleted":{let X=RW(Q.id);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};let J=Z.type==="customer.subscription.deleted";if(!J&&WA1(Z,Y))return{handled:!1,reason:"stale event"};let G=J?"canceled":vf0(Q.status);await $.updateStripeState(Y.organizationId,{status:G,currentPeriodEnd:sZ5(Q),...J&&{stripeSubscriptionId:null},lastStripeEventAt:HA1(Z,Y)});let K=FA1(G,Q,T0().stripePlanPriceIds);return{handled:!0,organizationId:Y.organizationId,...K?{planChange:{planId:K,note:`stripe ${Z.type} (${G})`}}:{}}}case"invoice.paid":{let X=oZ5(Q);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};if(WA1(Z,Y))return{handled:!1,reason:"stale event"};await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:aZ5(Q),lastStripeEventAt:HA1(Z,Y)});let J=rZ5({items:Q.lines},T0().stripePlanPriceIds);return{handled:!0,organizationId:Y.organizationId,...J?{planChange:{planId:J,note:"stripe invoice.paid"}}:{}}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function $75($,Z){if(!Z.handled||$.livemode===!1)return null;let Q=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:vf0(Q.status),...typeof Q.cancel_at_period_end==="boolean"?{cancel_at_period_end:Q.cancel_at_period_end}:{}}};case"invoice.paid":if(Q.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function xL8($,Z){let Q=$75($,Z);if(!Q)return;CJ({event:Q.name,organizationId:Q.organizationId,...$.id?{uuid:PP$(`stripe:${$.id}:${Q.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:Q.properties})}async function yL8($){let Z=new tG(F8().db),Q=await eZ5(Z,$);if(!(Q.handled&&Q.topUp))xL8($,Q);if(Q.handled&&Q.topUp)await M58({organizationId:Q.organizationId,amountCents:Q.topUp.creditCents,referenceId:Q.topUp.referenceId}),xL8($,Q);if(Q.handled&&Q.planChange){try{await K_0({organizationId:Q.organizationId,planId:Q.planChange.planId,note:Q.planChange.note})}catch(X){if(!(X instanceof ip))throw X;return console.error("stripe webhook: gateway REFUSED the plan change \u2014 the org has been "+"charged (or cancelled) and its entitlement did NOT move. Place it by hand through the gateway admin API.",{organizationId:Q.organizationId,planId:Q.planChange.planId,eventId:$.id,status:X.status,error:X.message}),Q}np(Q.organizationId)}if(!Q.handled&&Q.orphanSubscriptionId){let X=Q.orphanSubscriptionId;try{await ox$(X)}catch(J){if(!(J instanceof uZ&&(J.status===400||J.status===404)))throw J}let{refundedCents:Y}=await ax$(X);console.error("stripe webhook: reversed orphan subscription",{subscriptionId:X,refundedCents:Y,eventId:$.id})}return Q}var tZ5=300;var UA1=L(()=>{d60();jX();D6();Ee();iL();W_0();W$()});import{DBOS as ff0,SchedulerMode as Z75}from"@dbos-inc/dbos-sdk";function gL8($){BA1=$}function hL8(){if(!BA1)throw Error("[subscription-sweep] runtime not initialized \u2014 setSubscriptionSweepRuntime() must run before the workflow fires");return BA1}async function J75($){let{organizationId:Z,stripeSubscriptionId:Q}=$;if(!Q)return{organizationId:Z,action:"ok"};let X=new tG(hL8().db);try{let Y,J,G=!1;try{let W=await wE(Q);Y=vf0(W.status),J=G75(W)}catch(W){if(!(W instanceof uZ)||W.status!==404)throw W;Y="canceled",J=$.currentPeriodEnd,G=!0}let K=FA1(Y,{},T0().stripePlanPriceIds);if(await X.updateStripeState(Z,{status:Y,currentPeriodEnd:J,...G&&{stripeSubscriptionId:null}}),!K)return{organizationId:Z,action:"ok"};return await K_0({organizationId:Z,planId:K,note:`studio subscription sweep (${Y})`}),np(Z),console.warn("[subscription-sweep] revoked a paid tier whose webhook never arrived",{organizationId:Z,subscriptionId:Q,status:Y}),{organizationId:Z,action:G?"gone":"revoked"}}catch(Y){if(Y instanceof ip)console.error("[subscription-sweep] gateway REFUSED the revocation \u2014 the org still holds a tier it no longer pays for",{organizationId:Z,subscriptionId:Q,status:Y.status});return{organizationId:Z,action:"failed",error:Y instanceof Error?Y.message:String(Y)}}}function G75($){if(typeof $.current_period_end==="number")return new Date($.current_period_end*1000);let Z=0;for(let Q of $.items?.data??[])if(typeof Q.current_period_end==="number")Z=Math.max(Z,Q.current_period_end);return Z>0?new Date(Z*1000):null}async function K75($,Z){let Q=T0();if(!Q.plansEnabled||!Q.stripeSecretKey)return;let X=new Date($.getTime()-X75),Y=await ff0.runStep(()=>new tG(hL8().db).listSubscriptionsPastPeriodEnd(X,Y75),{name:"loadLapsedSubscriptions"});if(Y.length===0)return;let J=await Promise.all(Y.map((K)=>ff0.runStep(()=>J75(K),{name:`sweepSubscription:${K.organizationId}`})));for(let K of J)if(K.action==="failed")console.warn(`[subscription-sweep] org ${K.organizationId} failed: ${K.error}`);let G=J.filter((K)=>K.action==="revoked"||K.action==="gone").length;if(G>0)console.warn(`[subscription-sweep] revoked ${G} of ${Y.length} lapsed subscriptions`)}function uL8(){if(NA1)return;NA1=ff0.registerWorkflow(K75,{name:"subscriptionSweepWorkflow"}),ff0.registerScheduled(NA1,{name:"subscriptionSweepWorkflow",crontab:Q75,mode:Z75.ExactlyOncePerIntervalWhenActive})}var Q75="41 * * * *",X75=172800000,Y75=100,BA1=null,NA1=null;var lL8=L(()=>{d60();Ee();iL();W_0();UA1();W$()});async function W75($,Z){let Q=await $.storage.tags.listOrgTags(Z),X=Q.find((J)=>J.name.toLowerCase()===bf0);if(X)return X.id;return(await $.storage.tags.createTag(Z,bf0,RL0(Q.length))).id}async function H75($,Z,Q,X,Y){let J=await $.storage.taskBoard.getById(Q,Z);if(!J||!K08(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(!ey(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 Q5($,{taskBoardItemId:Q,action:"tags_changed",actorId:null,data:{from:J.tags,to:W.tags,reason:"merged_pr_auto_tag"}}),R8(Z,W),!0}async function cL8($,Z,Q,X=RS0){let Y=null,J=()=>Y??=W75($,Z),G=0;for(let K of Q)try{if(await H75($,Z,K,J,X))G+=1}catch(W){console.error(`[task-board-merged-tag] ${K} failed`,W)}return{tagged:G}}var bf0="merged";var mL8=L(()=>{b4();eX();Op();JF();_7();h9()});import{DBOS as yf0,SchedulerMode as F75}from"@dbos-inc/dbos-sdk";function dL8($){OA1=$}function iL8(){if(!OA1)throw Error("[task-board-merged-tag] runtime not initialized \u2014 setTaskBoardMergedTagSweepRuntime() must run before the workflow fires");return OA1}async function B75($,Z){try{let Q=await FW(iL8().db,$);if(!Q)return{organizationId:$,tagged:0};let{tagged:X}=await cL8(Q,$,Z);return{organizationId:$,tagged:X}}catch(Q){return{organizationId:$,tagged:0,error:Q instanceof Error?Q.message:String(Q)}}}async function L75(){let $=await yf0.runStep(()=>new k3(iL8().db).listItemsAwaitingMergedTag(bf0,N75),{name:"loadMergedTagCandidates"});if($.length===0)return;let Z=await Promise.all(AS0($).map(({organizationId:X,itemIds:Y})=>yf0.runStep(()=>B75(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 pL8(){if(LA1)return;LA1=yf0.registerWorkflow(L75,{name:"taskBoardMergedTagSweepWorkflow"}),yf0.registerScheduled(LA1,{name:"taskBoardMergedTagSweepWorkflow",crontab:U75,mode:F75.ExactlyOncePerIntervalWhenActive})}var U75="41 * * * *",N75=200,OA1=null,LA1=null;var nL8=L(()=>{zO();Op();sy();mL8()});function tL8($){if(!$)return!1;try{return new URL($).host==="api.decocms.com"}catch{return!1}}var aL8,O75,oL8=($)=>{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)},DA1=($,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=oL8(Y.substring(0,J));if(Z&&Z!==G||!aL8.test(G))continue;let K=oL8(Y.substring(J+1));if(K.startsWith('"')&&K.endsWith('"'))K=K.slice(1,-1);if(O75.test(K)){if(X[G]=K.indexOf("%")!==-1?bm(K,J00):K,Z)break}}return X},D75=($,Z,Q={})=>{if(!aL8.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},gf0=($,Z,Q)=>{return Z=encodeURIComponent(Z),D75($,Z,Q)};var rL8=L(()=>{Lj();aL8=/^[\w!#$%&'*.^`|~+-]+$/,O75=/^[ !#-:<-[\]-~]*$/});var mn=($,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 DA1(X,J)[J]}if(!X)return{};return DA1(X)},w75=($,Z,Q)=>{let X;if(Q?.prefix==="secure")X=gf0("__Secure-"+$,Z,{path:"/",...Q,secure:!0});else if(Q?.prefix==="host")X=gf0("__Host-"+$,Z,{...Q,path:"/",secure:!0,domain:void 0});else X=gf0($,Z,{path:"/",...Q});return X},K90=($,Z,Q,X)=>{let Y=w75(Z,Q,X);$.header("Set-Cookie",Y,{append:!0})};var hf0=L(()=>{rL8()});var sL8=($)=>{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 eL8=()=>{};function wA1($,Z){return`${$}:${Z}`}function $O8($){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=wA1(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=wA1(J,G);X.set(W,{role:K,expiresAt:Date.now()+Z}),Y()},invalidate(J,G){X.delete(wA1(J,G))}}}class jA1{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=ZO8.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 ZO8)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 ZO8;var QO8=L(()=>{ZO8=["studio.sse.broadcast","mesh.sse.broadcast"]});async function j75($,Z,Q=5){try{await S8(Z,{maxAttempts:Q,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(X){console.error(`${$} Deferred start failed:`,X instanceof e5?X.cause:X)}}function XO8($){let Z=new jA1({getConnection:()=>$.getConnection()});K9.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),$.onReady(()=>{j75("[NatsSSEBroadcast]",()=>Z.start())})}var EA1=L(()=>{w8();QO8();o40();o40()});var YO8=()=>{};var zA1=()=>{};var JO8=()=>{};var E75,ak7;var GO8=L(()=>{YO8();zA1();Lj();JO8();E75={br:".br",zstd:".zst",gzip:".gz"},ak7=Object.keys(E75)});var KO8=L(()=>{GO8()});var WO8=()=>{};var HO8=L(()=>{WO8()});var FO8=()=>{};var UO8=L(()=>{K71()});var PA1=L(()=>{Oj();UO8()});var TA1="x-hono-disable-ssg",OS7;var AA1=L(()=>{PA1();OS7=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[TA1]:"true"}})}catch{return null}})()});var NO8=L(()=>{bF0()});var RA1=L(()=>{NO8()});var BO8=L(()=>{HO8();FO8();zA1();AA1();RA1();PA1()});var LO8=L(()=>{AA1();RA1();BO8()});var rS7;var OO8=L(()=>{LO8();({write:rS7}=Bun)});var T75=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)}},DO8=($)=>{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 wO8=()=>{};var W90=($)=>("server"in $.env)?$.env.server:$.env;var uf0=()=>{};var A75;var jO8=L(()=>{wO8();uf0();A75=DO8(($,Z)=>{let Q=W90($);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 H90=($)=>{let Z=W90($);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 EO8=L(()=>{uf0()});var qA1=L(()=>{KO8();OO8();jO8();EO8();uf0()});var zO8;var PO8=L(()=>{zO8={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 TO8(){let $=Object.keys(k4.socialProviders??{}),Z=$.length>0,Q=$.map((Y)=>({name:Y,icon:zO8[Y].icon})),X=T0().localMode;return{emailAndPassword:{enabled:k4.emailAndPassword?.enabled??!1},magicLink:{enabled:k4.magicLinkConfig?.enabled??!1},emailOtp:{enabled:k4.emailOtpConfig?.enabled??!1},resetPassword:{enabled:Pf0},socialProviders:{enabled:Z,providers:Q},sso:k4.ssoConfig?{enabled:!0,providerId:k4.ssoConfig.providerId}:{enabled:!1},stdioEnabled:X,localMode:RO()}}async function R75($,Z,Q){try{if(!k4.inviteEmailProviderId||!k4.emailProviders||k4.emailProviders.length===0)return;let X=aG(k4.emailProviders,k4.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=ze,G=Y.filter((H)=>(H.role??"").split(",").map((F)=>F.trim()).some((F)=>J.includes(F)));if(G.length===0)return;let K=oG(X),W=`${S9()}/${Z.slug}/settings/members`;await Promise.allSettled(G.map((H)=>K({to:H.email,subject:`New request to join ${Z.name}`,html:rG({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:yA("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 uO,AO8;var MA1=L(()=>{U8();qA1();D6();W$();w3();jX();wT1();b31();jf0();bA();IX();D9();E51();PO8();Yg();Gm();uO=new Y1;uO.post("/local-session",async($)=>{if(!RO())return $.json({success:!1,error:"Local mode is not active"},403);let Z;try{Z=H90($).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(() => (Yg(),nS0));await X();let{auth:Y}=await Promise.resolve().then(() => (w3(),OB8)),J=await rB1();if(!J)return $.json({success:!1,error:"Local admin user not found"},500);let G=await pS0();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)}});uO.get("/my-capabilities/:slug",async($)=>{let Z=$.req.param("slug"),Q=await b8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({error:"Authentication required"},401);let X=F8().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(SZ(G))return $.json({role:G,capabilities:PN$()});if(G==="user")return $.json({role:G,capabilities:k51({self:[...QH0]})});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:k51(W)})});uO.get("/domain-lookup",async($)=>{let Z=await b8.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||pH.has(Q))return $.json({found:!1,organizations:[]});try{let Y=(await new nG(F8().db).getAllByDomain(Q)).filter(wf0);if(Y.length===0)return $.json({found:!1,organizations:[]});let J=await F8().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(_9(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)}});uO.post("/domain-join",async($)=>{let Z=await b8.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||pH.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=F8().db,W=(await new nG(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)=>!_9(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 b8.api.addMember({body:{userId:Z.user.id,role:"user",organizationId:N.id}})}catch(B){if(!DE(B))return console.error("[Auth] Domain join addMember failed:",B),$.json({success:!1,error:"Failed to join organization"},500)}return h1.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 h1.captureException(J,Z.user.id),console.error("[Auth] Domain join failed:",J),$.json({success:!1,error:"Failed to join organization"},500)}});uO.post("/domain-setup",async($)=>{let Z=await b8.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||pH.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=F8().db,W=new nG(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((A)=>A.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 A=0;A<3;A++){let P=A===0?"":`-${Math.random().toString(36).slice(2,6)}`,T=A===0?U:`${U}${P}`,q=`${N}${P}`;try{B=await b8.api.createOrganization({body:{name:T,slug:q,userId:Z.user.id}});break}catch(f){if(!(f instanceof Error&&("body"in f)&&f.body?.code==="ORGANIZATION_ALREADY_EXISTS")||A===2)throw f}}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 D=!1,w=null,j=null;try{let z=T0().firecrawlApiKey;if(z){let A=await EL0(Q,z,U);if(A){let P=new De(F8().db),T=await P.create(O,A);if(await P.setDefault(T.id,O),D=!0,A.name&&A.name!==U)w=A.name;j=A.favicon??A.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 b8.api.updateOrganization({headers:$.req.raw.headers,body:{organizationId:O,data:E}})}catch(z){console.error("[Auth] Org update failed (non-fatal):",z)}return h1.identify({distinctId:Z.user.id,properties:{email:Z.user.email,$set:{email:Z.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),h1.groupIdentify({groupType:"organization",groupKey:O,properties:{name:B.slug??N,slug:B.slug??N,email_domain:Q,brand_extracted:D,created_at:new Date().toISOString()}}),h1.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:D}}),$.json({success:!0,slug:B.slug??N,brandExtracted:D})}catch(K){return h1.captureException(K,Z.user?.id),console.error("[Auth] Domain setup failed:",K),$.json({success:!1,error:"Failed to set up organization"},500)}});uO.get("/org-access-status/:slug",async($)=>{let Z=$.req.param("slug"),Q=await b8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({success:!1,error:"Authentication required"},401);let X=F8().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 b8.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&&!pH.has(K)){let W=await new nG(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 Jm(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})});uO.post("/domain-request-join",async($)=>{let Z=await b8.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||pH.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=F8().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 nG(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 Jm(J).create(G.id,Z.user.id),await R75(J,G,Z.user.email),h1.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 h1.captureException(J,Z.user.id),console.error("[Auth] Domain request-join failed:",J),$.json({success:!1,error:"Failed to request access"},500)}});uO.post("/ensure-organization",async($)=>{let Z=null;try{if(Z=await b8.api.getSession({headers:$.req.raw.headers}),!Z?.user)return $.json({success:!1,error:"Authentication required"},401);let Q=await Ef0({db:F8().db,authApi:b8.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)h1.captureException(Q,X);return console.error("[Auth] ensure organization failed:",Q),$.json({success:!1,error:"Failed to ensure organization"},500)}});AO8=uO});import{createHmac as q75}from"crypto";function RO8($){return/^Bearer\s+(.+)$/i.exec($.get("authorization")??"")?.[1]?.trim()||null}function qO8($){if(!$||typeof $!=="object"||!("userId"in $)||typeof $.userId!=="string")return null;return $.userId}function M75($){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 I75($){if(!$||typeof $!=="object"||!("valid"in $)||$.valid!==!0||!("key"in $))return null;return qO8($.key)}async function MO8($){let Z=new Headers({authorization:`Bearer ${$}`,"X-MCP-Session-Auth":"true"}),Q=await b8.api.getMcpSession({headers:Z}).catch(()=>null),X=qO8(Q);if(X)return X;let Y=await b8.api.verifyApiKey({body:{key:$}}).catch(()=>null);return I75(Y)}function V75($,Z){let Q=q75("sha256",Z).update($).digest("base64");return encodeURIComponent(`${$}.${Q}`)}var IA1,IO8;var VO8=L(()=>{U8();w3();IA1=new Y1;IA1.get("/me",async($)=>{let Z=RO8($.req.raw.headers),Q;if(Z)Q=await MO8(Z);else{let X=await b8.api.getSession({headers:$.req.raw.headers}).catch(()=>null);Q=M75(X)}if(!Q)return $.json({error:"unauthorized"},401);return $.json({userId:Q})});IA1.post("/session-from-oauth",async($)=>{let Z=RO8($.req.raw.headers);if(!Z)return $.json({error:"unauthorized"},401);let Q=await MO8(Z);if(!Q)return $.json({error:"unauthorized"},401);try{let X=await b8.$context,Y=await X.internalAdapter.createSession(Q,!1),J=V75(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)}});IO8=IA1});var dn=($)=>{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 k75($){let Z=$.req.path;return $.req.method==="GET"&&/\/fs\/[^/]+\/read$/.test(Z)||$.req.method==="POST"&&/\/fs\/[^/]+\/unlock$/.test(Z)}function VA1($){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 C75($){let Z=$.split("/").filter(Boolean);if(Z[0]!=="api")return!1;let Q=Z.slice(2);return S75.some((X)=>X.length===Q.length&&X.every((Y,J)=>Y==="*"||Y===Q[J]))}var S75,pn=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=C75($.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(dn($))return $.redirect(`/${encodeURIComponent(Q)}`,302);return $.json({error:`organization "${Q}" not found`},404)}let K=VA1(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(_9(G)){if(dn($))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)H=F.role;else if(await NB1(Y,W))PO({action:"org_scope_admit",actorUserId:W,targetOrgId:G.id,method:$.req.method,route:$.req.path}),H="owner";else if(!k75($)){if(dn($))return $.redirect(`/${encodeURIComponent(G.slug)}`,302);return $.json({error:"forbidden: not a member of organization"},403)}}return X.organization={id:G.id,slug:G.slug,name:G.name,role:H},X.access.setOrganizationId(G.id),X.access.setRole(H),Lz(X,G),await Z()};var lf0=L(()=>{eU();Bp();S75=[["vault","connections","*","access-token"],["vault","connections","*","configuration"],["internal","task-board","import"],["internal","commerce-diagnostic","share-invite"],["internal","organization-notices"],["internal","repositories","resolve"],["internal","repositories","*","tree"],["internal","repositories","*","file"],["internal","repositories","*","search"],["internal","repositories","*","change-requests"],["internal","repositories","*","commits"]]});function _75($){if(_Q($.id)!==null)return!0;if(o3$($.id))return!0;let Z=$.metadata?.liveAgentId;return typeof Z==="string"&&Z.length>0}function v75($,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 x75($){let Z=$.auth?.apiKey?.id?VA1($):{present:!1,id:void 0};if(Z.present&&!Z.id)return cf0;let Q=$.auth?.tokenOrganizationId;if(Z.id&&Q&&Z.id!==Q)return cf0;let X=Z.id??Q??null;if(X===null&&$.auth?.apiKey?.id)return cf0;return X}var kO8="/api/_me",cf0,f75=256,b75=20,y75=50,g75=10,h75=5,SO8=()=>{let $=new Y1;return $.get("/projects/search",async(Z)=>{let Q=Z.get("studioContext");Z.header("Cache-Control","private, no-store");let X=t0(Q);if(!X)return Z.json({error:"Unauthorized"},401);let Y=x75(Q);if(Y===cf0)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>f75)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,y75):b75,W=v75(Q,X),H=K+g75,F=[];for(let U=0;U<h75&&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)=>!_75(O)).filter((O)=>!_9({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 CO8=L(()=>{U8();Y4();lf0();cf0=Symbol("deny")});var _O8="Payload Too Large",vO8,f5=($)=>{let Z=$.onError||(()=>{let X=new Response(_O8,{status:413});throw new q$(413,{res:X})}),Q=$.maxSize;return async function(Y,J){if(!Y.req.raw.body)return J();let G=Y.req.raw.headers.has("transfer-encoding"),K=Y.req.raw.headers.has("content-length");if(K&&!G)return parseInt(Y.req.raw.headers.get("content-length")||"0",10)>Q?Z(Y):J();let W=0,H=Y.req.raw.body.getReader(),U={body:new ReadableStream({async start(N){try{for(;;){let{done:B,value:O}=await H.read();if(B)break;if(W+=O.length,W>Q){N.error(new vO8(_O8));break}N.enqueue(O)}}finally{N.close()}}}),duplex:"half"};if(Y.req.raw=new Request(Y.req.raw,U),await J(),Y.error instanceof vO8)Y.res=await Z(Y)}};var qW=L(()=>{PH();vO8=class extends Error{constructor($){super($);this.name="BodyLimitError"}}});import{createHash as u75}from"crypto";function F90($,Z,Q=0){return Z.every((X,Y)=>$[Q+Y]===X)}function fO8($){if(F90($,[137,80,78,71,13,10,26,10]))return{mime:"image/png",ext:"png"};if(F90($,[255,216,255]))return{mime:"image/jpeg",ext:"jpg"};if(F90($,[71,73,70,56])&&($[4]===55||$[4]===57)&&$[5]===97)return{mime:"image/gif",ext:"gif"};if(F90($,[82,73,70,70])&&F90($,[87,69,66,80],8))return{mime:"image/webp",ext:"webp"};return null}function SA1($){return oF($)}function m75($,Z){let Q=u75("sha256").update($).digest("hex");return`${mf0}/${Q}.${Z}`}function if0($,Z,Q){let X=new URLSearchParams({path:Q}).toString();return`${$.replace(/\/$/,"")}${df0}/fs/${encodeURIComponent(Z)}/read?${X}`}function nn($){let Z=qQ(),Q=Z?zY(Z,kA1):new OK(kA1,$.baseUrl);return new DK(Q,$.storage.orgFsEntries,kA1,l75)}async function U90($,Z){return(await $.listDir(Z,mf0).catch(()=>[])).filter((X)=>X.kind==="file").sort((X,Y)=>Y.updatedAt.localeCompare(X.updatedAt))}async function bO8($,Z){return(await U90($,Z)).map((X)=>({path:X.path,current:X.readPublic,updatedAt:X.updatedAt}))}async function d75($,Z){if((await $.stat(Z,mf0))?.readPublic)await $.setReadPublic(Z,mf0,!1,{actor:Z})}async function CA1($,Z,Q){let X=await U90($,Z);if(!X.some((Y)=>Y.path===Q))throw new qY(`No such avatar: ${Q}`);await d75($,Z),await $.setReadPublic(Z,Q,!0,{actor:Z}),await Promise.all(X.filter((Y)=>Y.path!==Q&&Y.readPublic).map((Y)=>$.setReadPublic(Z,Y.path,!1,{actor:Z})))}async function i75($,Z,Q){try{let Y=(await U90($,Z)).filter((J)=>J.path!==Q).slice(c75-1);await Promise.all(Y.map((J)=>$.delete(Z,J.path,{actor:Z})))}catch(X){console.warn("[user-fs] failed to evict old avatars",X)}}async function yO8($,Z){let{userId:Q,bytes:X,contentType:Y,ext:J}=Z,G=m75(X,J);return await $.write(Q,G,X,{actor:Q,contentType:Y}),await CA1($,Q,G),await i75($,Q,G),G}async function gO8($,Z,Q){if(!(await U90($,Z)).some((Y)=>Y.path===Q))throw new qY(`No such avatar: ${Q}`);await $.delete(Z,Q,{actor:Z})}async function hO8($,Z){try{let Q=await U90($,Z);await Promise.all(Q.map((X)=>$.delete(Z,X.path,{actor:Z})))}catch(Q){console.warn("[user-fs] failed to clear avatars",Q)}}var kA1="org_user_fs",df0="/api/_users",mf0="avatars",l75,xO8=2097152,c75=5;var _A1=L(()=>{cl();yB();oB();_T();l75={maxFileBytes:5242880,volumeQuotaBytes:67108864}});function N90($,Z,Q,X){let Y=i7(Q),J={"Content-Type":Y,"X-Content-Type-Options":"nosniff","Cache-Control":X?"public, max-age=0, must-revalidate":"private, max-age=0"};if(Y.startsWith("text/html"))J["Content-Security-Policy"]="sandbox allow-scripts allow-modals allow-same-origin allow-downloads";return $.body(Buffer.from(Z),200,J)}var vA1=L(()=>{mW()});function pf0($,Z){if(Z instanceof qY)return $.json({error:Z.message},404);if(Z instanceof cG)return $.json({error:Z.message},400);if(Z instanceof vT)return $.json({error:Z.message},413);return console.error("[user-fs] request failed",Z),$.json({error:"Internal error"},500)}function nf0($){let Q=$.get("studioContext").auth?.user?.id;if(!Q)return{ok:!1,res:$.json({error:"Unauthorized"},401)};if(!SA1(Q))return{ok:!1,res:$.json({error:"Unsupported user id"},400)};return{ok:!0,userId:Q}}var uO8=()=>{let $=new Y1;return $.get("/fs/:userId/read",async(Z)=>{let Q=Z.req.param("userId"),X=Z.req.query("path")??"";if(!SA1(Q))return Z.json({error:"Invalid user id"},400);let Y=Z.get("studioContext"),J=nn(Y),K=(await J.resolveReadAccess(Q,X).catch(()=>({access:"private"}))).access==="public";if(!K&&Y.auth?.user?.id!==Q)return Z.json({error:"Not found"},404);try{return N90(Z,await J.read(Q,X),X,K)}catch(W){return pf0(Z,W)}}),$.post("/avatar",f5({maxSize:xO8,onError:(Z)=>Z.json({error:"Avatar exceeds the size limit"},413)}),async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let{userId:X}=Q,Y=Z.get("studioContext"),J=new Uint8Array(await Z.req.arrayBuffer());if(J.byteLength===0)return Z.json({error:"Empty request body"},400);let G=fO8(J);if(!G)return Z.json({error:"Avatar must be a PNG, JPEG, GIF or WebP image"},415);try{let K=await yO8(nn(Y),{userId:X,bytes:J,contentType:G.mime,ext:G.ext});return Z.json({url:if0(Y.baseUrl,X,K)})}catch(K){return pf0(Z,K)}}),$.get("/avatars",async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let X=Z.get("studioContext"),Y=await bO8(nn(X),Q.userId);return Z.json({avatars:Y.map((J)=>({...J,url:if0(X.baseUrl,Q.userId,J.path)}))})}),$.post("/avatar/select",async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let X=Z.get("studioContext"),Y=await Z.req.json().catch(()=>null);if(typeof Y?.path!=="string"||!Y.path)return Z.json({error:"Body must be { path: string }"},400);try{return await CA1(nn(X),Q.userId,Y.path),Z.json({url:if0(X.baseUrl,Q.userId,Y.path)})}catch(J){return pf0(Z,J)}}),$.delete("/avatar",async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let X=Z.get("studioContext"),Y=nn(X),J=Z.req.query("path");if(!J)return await hO8(Y,Q.userId),Z.json({ok:!0});try{return await gO8(Y,Q.userId,J),Z.json({ok:!0})}catch(G){return pf0(Z,G)}}),$};var lO8=L(()=>{U8();qW();oB();_A1();vA1()});import{z as tn}from"zod";var p75,n75,t75=200,o75=2000,a75=60,r75=2000,s75,tf0;var xA1=L(()=>{p75=["warn","block"],n75=tn.enum(p75),s75=tn.string().max(r75).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"}),tf0=tn.object({severity:n75,title:tn.string().trim().min(1).max(t75),message:tn.string().trim().min(1).max(o75),ctaLabel:tn.string().trim().max(a75).nullable().optional(),ctaUrl:s75.nullable().optional()}).refine(($)=>!$.ctaLabel===!$.ctaUrl,{message:"ctaLabel and ctaUrl must be set together",path:["ctaUrl"]})});import{z as fA1}from"zod";function bA1($){let Z=$??{},Q=new Set([...Object.keys(y2.shape),...Object.keys(Z)]),X={};for(let Y of Q)X[Y]=iQ(Z,Y);return{flags:Z,effective:X}}var e75,cO8;var mO8=L(()=>{gZ();e75=fA1.string().min(1).max(64).regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/),cO8=fA1.record(e75,fA1.boolean())});function dO8($,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===`
5546
+ (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:Up.parse(F.data),createdAt:wZ5(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:X4("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 Np({...$,db:this.db})}async notifyMentions($){await UL8({...$,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 OZ5=20,DZ5=50,wZ5=($)=>$ instanceof Date?$.toISOString():$;var BL8=L(()=>{TX();jS0();ES0();NL8()});class sT1{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 eT1{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 jZ5($){return $.includes("/")?$.split("/").slice(1).join("/"):$}function EZ5($){let Z=$.supported_parameters?.includes("tools")??!1,Q=$.supported_parameters?.includes("reasoning")??!1;return{providerId:"openrouter",modelId:jZ5($.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:Number($.pricing.prompt)||0,output:Number($.pricing.completion)||0}}}function OL8($){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 zZ5($){if($){let Z=await $.get(LL8,"openrouter");if(Z)return OL8(Z)}try{let Z=await jU("OpenRouter enrichment index","https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!Z.ok)await CX("OpenRouter enrichment index",Z);let{data:Q}=await Z.json(),X=Q.map(EZ5);if($)await $.set(LL8,"openrouter",X);return OL8(X)}catch{return new Map}}function PZ5($){let Z=$.replace(/\./g,"-"),Q=$.replace(/-\d{8}$/,""),X=Q.replace(/\./g,"-");return[...new Set([$,Z,Q,X])]}function TZ5($){return $.providerId==="anthropic"||$.modelId.startsWith("anthropic/")}function wL8($,Z){if(TZ5(Z)&&$.includes("vision")&&!$.includes("file"))return[...$,"file"];return $}function AZ5($,Z){return $.map((Q)=>{let Y=PZ5(Q.modelId).map((K)=>Z.get(K)).find(Boolean),J=Q.capabilities.length?Q.capabilities:Y?.capabilities??[],G=wL8(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 $A1{storage;cache;constructor($,Z){this.storage=$;this.cache=Z}async activate($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=b9()[Q.providerId];if(!Y)throw Error(`Unknown provider: ${Q.providerId}`);return Y.create(X)}async listDecisionModels($,Z){let Q=await this.activate($,Z);if(!Q.decisions?.listModels)throw Error("Provider does not support decision model discovery");let X=`${Q.info.id}:decisions`,Y=await this.cache?.get(Z,X);if(Y)return Y;let J=new Set,G=(await Q.decisions.listModels()).filter((K)=>{if(K.deprecated||!K.capabilities.includes("decisions")||J.has(K.modelId))return!1;return J.add(K.modelId),!0}).map((K)=>({...K,providerId:Q.info.id}));return await this.cache?.set(Z,X,G),G}async listModels($,Z){let{keyInfo:Q,apiKey:X}=await this.storage.resolve($,Z),Y=Q.providerId,J=b9()[Y];if(!J)throw Error(`Unknown provider: ${Y}`);if(this.cache){let U=await this.cache.get(Z,Y);if(U)return DL8(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"&&Y!=="deco"){let U=await zZ5(this.cache);H=AZ5(H,U)}else H=H.map((U)=>({...U,capabilities:wL8(U.capabilities,U)}));let F=H.map((U)=>({...U,providerId:Y}));if(this.cache)await this.cache.set(Z,Y,F);return DL8(F,J,X)}}function DL8($,Z,Q){let Y=Z.create(Q).asyncResearch;if(!Y)return $;return $.map((J)=>Y.canHandle(J.modelId)?{...J,asyncResearch:!0}:J)}var LL8="_global";var jL8=L(()=>{mK();lA()});import{SpanStatusCode as EL8}from"@opentelemetry/api";function qZ5($){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(Object.keys(Q).length>=RZ5)break;if(typeof Y==="string"&&X.length<=zL8&&Y.length<=zL8)Q[X]=Y}return Object.keys(Q).length>0?Q:void 0}catch{return}}function MZ5($,Z){return Z?.connectionId??$?.headers.get("x-caller-id")??void 0}function IZ5($){try{let Z=new URL($.url).pathname.split("/").filter(Boolean);if(Z[0]==="api"&&Z[1])return decodeURIComponent(Z[1])}catch{}return}function XA1($){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 fT1(Y??{},F);let N=!!U?.organizationId&&!!K&&U.organizationId!==K,B=U?U.role:X;if(SZ(B))return!0;if(Y&&!N)return fT1(Y,F);let O=oN8(U?.role,F,aN8());if(O!=="fallback")return O==="grant";if(!H)return console.error("[Auth] hasPermission API not available"),!1;let D=U?.organizationId?{organizationId:U.organizationId}:{};try{if((await H({headers:Q,body:{permission:F,...D}}))?.success===!0)return!0;let j=TN$(F);return(await H({headers:Q,body:{permission:j,...D}}))?.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)=>!_9(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 C2($,Z,Q){if(Km.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}}function kZ5($,Z,Q){$.delete(Z),$.set(Z,{archived:Q,at:Date.now()})}function SZ5($,Z,Q){if($.size<=Z)return;let X=Date.now();for(let[Y,J]of $)if(X-J.at>=Q)$.delete(Y);if($.size>Z){let Y=$.size-Z,J=0;for(let G of $.keys()){if(J>=Y)break;$.delete(G),J++}}}async function TL8($,Z,Q,X){let Y=ZA1.get(Q);if(Y&&Date.now()-Y.at<PL8)return Y.archived;let J=await Z.measure(X,()=>$.selectFrom("organization").select(["metadata"]).where("id","=",Q).executeTakeFirst()),G=_9(J);return kZ5(ZA1,Q,G),SZ5(ZA1,VZ5,PL8),G}async function QA1($,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 CZ5($,Z){if(!$)return!0;return Z===$}async function _Z5($,Z,Q,X,Y){let J=KH0($.headers,"token");if(!J)return;let G=await Q.measure("auth_verify_onbehalf_studio_jwt",()=>f81(J));if(!G?.sub)return;let K=G.metadata?.organizationId;if(!CZ5(X,K))return;let W=X?await QA1(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 vZ5($,Z,Q,X=RL8,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=IZ5($),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(_9({metadata:N?.orgMetadata}))throw Error(YH0);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 D;if(N&&B)D=await X.measure("auth_fetch_role_permissions",()=>C2(Q,N.organizationId,B));return{user:{id:W,role:B},role:B,permissions:D,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",()=>f81(G));if(K){let W,H=K.metadata?.organizationId;if(K.sub&&H)W=await QA1(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 TL8(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(_9(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 TL8(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 QA1(Q,X,U,W.id,Y);let N=await _Z5($,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(_9({metadata:N?.orgMetadata}))throw Error(YH0);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&&!_9(N))W={id:N.id,slug:N.slug,name:N.name},H=N.members?.find((O)=>O.userId===K.user.id)?.role;else if(!N)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;if(K.message===YH0)throw 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 qL8($){let Z=new mG($.encryption.key),Q=T0(),X=Q.clickhouseUrl,Y=!!X,J=!Y&&!!Q.monitoringS3Bucket,G=Y?"clickhouse":"duckdb",{resolve:K}=await import("path"),W=K(cW()),H=K(bB()),F=(P)=>`read_ndjson('${W}/${P}/**/*.ndjson', auto_detect=true)`,U=(P)=>`read_ndjson('${H}/${P}/**/*.ndjson', auto_detect=true)`,N,B,O,D,w=!1;if($.monitoringEngines)N=$.monitoringEngines.monitoringEngine,B=$.monitoringEngines.metricEngine,O=F,D=U;else if(Y){let P=Q.clickhouseMaxMemoryUsage?{maxMemoryUsage:String(Q.clickhouseMaxMemoryUsage)}:void 0;N=new Be(X,P),B=new Be(X,P),O=(T)=>"studio_monitoring_logs",D=(T)=>"studio_monitoring_logs"}else if(J){let P=Q.monitoringS3AccessKeyId??Q.s3AccessKeyId,T=Q.monitoringS3SecretAccessKey??Q.s3SecretAccessKey,q=Q.duckdbExtensionDirectory;if(!P||!T||!q)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 f={endpoint:Q.monitoringS3Endpoint??Q.s3Endpoint??"storage.googleapis.com",region:Q.monitoringS3Region??Q.s3Region,accessKeyId:P,secretAccessKey:T,extensionDirectory:q},C=new Ne(f,{memoryLimit:Q.duckdbMemoryLimit,threads:Q.duckdbThreads});N=C,B=C;let V=Q.monitoringS3Bucket,h=Q.monitoringS3Prefix??"",g=(l,u)=>FN$({bucket:V,prefix:h,range:u});O=g,D=g,w=!0}else{let{engine:P}=await B51({basePath:cW()}),{engine:T}=await B51({basePath:bB()});N=P,B=T,O=F,D=U}let j=new Jc($.db),E=new Y90($.db),z=new we($.db),A={connections:new $s($.db,Z),connectionCredentialVault:new V41($.db),organizationSettings:new LA($.db),userModelPreferences:new O51($.db),monitoring:new f41(N,O,B,D,G,w),virtualMcps:new Gc($.db),users:new I51($.db),tags:new je($.db),experiments:new q51($.db),organizationBilling:new tG($.db),aiProviderKeys:new V00($.db,Z,$.providerKeyCache),subsidizedGatewayKeys:new lT1($.db,Z),secrets:new RF1($.db,Z),orgFileConfigs:new cT1($.db,Z),orgSites:new eg($.db),orgRepoSyncs:new r2($.db),gitProviderAccounts:new u2($.db),gitProviderAccountCredentials:new Y80($.db,Z),gitProviderOAuthStates:new nT1($.db),githubConnectFlows:new iT1($.db),repositories:new J80($.db),jiraIntegrations:new hO($.db,Z),taskBoard:new k3($.db),columnAutomations:new tT1($.db),taskBoardPrompts:new oT1($.db),taskBoardAnalytics:new hO1($.db),threadAnalytics:new mO1($.db),notifications:new rT1($.db),orgFsEntries:new fr($.db),oauthPkceStates:new sT1($.db),claudeSubscriptions:new eT1($.db,Z),automations:rW0($.db),triggerCallbackTokens:new Oe($.db),orgSsoConfig:new T51($.db,Z),orgSsoSessions:new A51($.db),brandContext:new De($.db),organizationDomains:new nG($.db),organizationJoinRequests:new Jm($.db),kv:z,interests:new P51(z)};return async(P,T)=>{let q=T?.timings??RL8,f=Rf0(),C=P?await $.observability.tracer.startActiveSpan("studio.auth",async($0)=>{try{let a=await vZ5(P,$.auth,$.db,q,$.memberRoleCache);return $0.setStatus({code:EL8.OK}),a}catch(a){throw $0.setStatus({code:EL8.ERROR,message:a.message}),$0.recordException(a),a}finally{$0.end()}}):{user:void 0},V=MZ5(P,C.user),h=XA1({auth:$.auth,headers:P?.headers??new Headers,role:C.role,permissions:C.permissions,userId:C.user?.id,apiKeyId:C.apiKeyId,organizationId:C.organization?.id}),g={user:C.user,tokenOrganizationId:C.tokenOrganizationId,permissions:C.permissions,permissionsOrganizationId:C.permissions?C.organization?.id:void 0};if(C.apiKey)g.apiKey=C.apiKey;let l=C.organization,u=P?T0().baseUrl??`${new URL(P.url).origin}`:S9(),d=new DA(g.user?.id,void 0,h,C.role,"self",void 0,l?.id),W0={...A,virtualMcps:IK$(A.virtualMcps),threads:new R41(j,l?.id),asyncResearchJobs:new hT1(E,l?.id)},P0=new $A1(W0.aiProviderKeys,$.modelListCache),J0=qQ(),U0=!l?null:J0?zY(J0,l.id):new OK(l.id,u),Y0=l&&U0?new DK(U0,W0.orgFsEntries,l.id):null;Sa0(W0,{objectStorage:U0,baseUrl:u,orgSlug:l?.slug});let t={timings:q,auth:g,connectionId:V,organization:l,storage:W0,vault:Z,authInstance:$.auth,boundAuth:h,access:d,db:$.db,tracer:$.observability.tracer,meter:$.observability.meter,baseUrl:u,objectStorage:U0,orgFs:Y0,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(xZ5.map(($0)=>[$0,P?.headers.get($0)??null]).filter(([,$0])=>$0!==null)),userAgent:(P?KH0(P.headers,"client"):null)||P?.headers.get("User-Agent")||void 0,ipAddress:(P?.headers.get("CF-Connecting-IP")||P?.headers.get("X-Forwarded-For"))??void 0,properties:qZ5(P?KH0(P.headers,"properties"):null)},aiProviders:P0,createMCPProxy:async($0)=>{return await QL8($0,t)},invalidateMemberRole:$.memberRoleCache?($0,a)=>$.memberRoleCache.invalidate($0,a):void 0,getOrCreateClient:f,pendingRevalidations:[],firecrawlApiKey:T0().firecrawlApiKey};return t}}function Lz($,Z){$.storage.threads.setOrganizationId(Z.id),$.storage.asyncResearchJobs.setOrganizationId(Z.id);let Q=qQ();$.objectStorage=Q?zY(Q,Z.id):new OK(Z.id,$.baseUrl),$.orgFs=new DK($.objectStorage,$.storage.orgFsEntries,Z.id),Sa0($.storage,{objectStorage:$.objectStorage,baseUrl:$.baseUrl,orgSlug:Z.slug??void 0})}var RZ5=50,zL8=500,PL8=60000,VZ5=1e4,ZA1,AL8,aQ,RL8,xZ5;var eU=L(()=>{YH();bT();W$();D9();q41();$W0();k41();vK$();UN$();WK();L51();D51();w51();E51();R51();EN$();Ee();UH();C51();PD1();IX();NT1();er();uT1();CT1();TQ1();s80();YL8();mT1();IL0();Ki();pT1();uO1();dO1();zO();BL8();V81();oB();jL8();yB();cl();gG0();ZA1=new Map;aQ={set:($)=>{AL8=$},create:async($,Z)=>{return await AL8($,Z)}},RL8={measure:async($,Z)=>{return await Z()}},xZ5=["x-hub-signature-256"]});import{DBOS as Sf0,SchedulerMode as fZ5}from"@dbos-inc/dbos-sdk";function ML8($){JA1=$}function IL8(){if(!JA1)throw Error("[org-fs] org-repo-sync runtime not initialized \u2014 setOrgRepoSyncRuntime() must run before the workflow fires");return JA1}async function yZ5($,Z){let Q=await $.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z).executeTakeFirst();if(!Q)return null;let X=await aQ.create();return X.organization={id:Q.id,slug:Q.slug,name:Q.name},Lz(X,{id:Q.id,slug:Q.slug}),X}async function gZ5($){try{let{db:Z}=IL8(),Q=await yZ5(Z,$.organizationId);if(!Q)return{id:$.id,volume:$.volume,error:"organization no longer exists"};let X=await JO0(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 hZ5($,Z){let Q=await Sf0.runStep(()=>new r2(IL8().db).listEnabled(),{name:"loadOrgRepoSyncConfigs"});for(let X of Q){let Y=await Sf0.runStep(()=>gZ5(X),{name:`syncOrgRepo:${X.id}`});if(Y.error)console.warn(`[org-fs] org repo sync ${Y.id} (${Y.volume}) failed: ${Y.error}`)}}function VL8(){if(YA1)return;YA1=Sf0.registerWorkflow(hZ5,{name:"orgRepoSyncWorkflow"}),Sf0.registerScheduled(YA1,{name:"orgRepoSyncWorkflow",crontab:bZ5,mode:fZ5.ExactlyOncePerIntervalWhenActive})}var bZ5="7-59/10 * * * *",JA1=null,YA1=null;var kL8=L(()=>{eU();GO0()});import{DBOS as Cf0,SchedulerMode as uZ5}from"@dbos-inc/dbos-sdk";function SL8($){KA1=$}function CL8(){if(!KA1)throw Error("[task-board-archive] runtime not initialized \u2014 setTaskBoardArchiveSweepRuntime() must run before the workflow fires");return KA1}async function dZ5($,Z){try{let Q=await FW(CL8().db,$);if(!Q)return{organizationId:$,archived:0};let{archived:X}=await X08(Q,$,Z);return{organizationId:$,archived:X}}catch(Q){return{organizationId:$,archived:0,error:Q instanceof Error?Q.message:String(Q)}}}async function iZ5($,Z){let Q=new Date($.getTime()-cZ5),X=await Cf0.runStep(()=>new k3(CL8().db).listItemsAwaitingArchive(Q,mZ5),{name:"loadArchiveCandidates"});if(X.length===0)return;let Y=await Promise.all(AS0(X).map(({organizationId:G,itemIds:K})=>Cf0.runStep(()=>dZ5(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 _L8(){if(GA1)return;GA1=Cf0.registerWorkflow(iZ5,{name:"taskBoardArchiveSweepWorkflow"}),Cf0.registerScheduled(GA1,{name:"taskBoardArchiveSweepWorkflow",crontab:lZ5,mode:uZ5.ExactlyOncePerIntervalWhenActive})}var lZ5="23 * * * *",cZ5=432000000,mZ5=200,KA1=null,GA1=null;var vL8=L(()=>{zO();Op();sy()});import{createHmac as pZ5,timingSafeEqual as nZ5}from"crypto";function fL8($,Z,Q,X=Date.now()){if(!Z||!Q)return!1;let Y,J=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let U=H.slice(0,F).trim(),N=H.slice(F+1).trim();if(U==="t")Y=N;else if(U==="v1")J.push(N)}if(!Y||J.length===0)return!1;let G=Number(Y);if(!Number.isFinite(G)||Math.abs(X/1000-G)>tZ5)return!1;let K=pZ5("sha256",Q).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return J.some((H)=>{let F=Buffer.from(H,"hex");return W.length===F.length&&nZ5(W,F)})}function bL8($){let Z;try{Z=JSON.parse($)}catch{return null}let Q=g7(Z),X=g7(g7(Q?.data)?.object);if(!Q||typeof Q.type!=="string"||!X)return null;return{id:RW(Q.id),type:Q.type,created:typeof Q.created==="number"?Q.created:void 0,livemode:typeof Q.livemode==="boolean"?Q.livemode:void 0,data:{object:X}}}function vf0($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function RW($){return typeof $==="string"?$:void 0}function g7($){return typeof $==="object"&&$!==null?$:void 0}function xf0($){return typeof $==="number"?new Date($*1000):null}function _f0($){return RW($)??RW(g7($)?.id)}function oZ5($){return _f0($.subscription)??RW(g7(g7($.parent)?.subscription_details)?.subscription)}function aZ5($){let Z=g7($.lines)?.data;if(Array.isArray(Z)){let Q=null;for(let X of Z){let Y=g7(g7(X)?.period)?.end;if(typeof Y==="number"&&(Q===null||Y>Q))Q=Y}if(Q!==null)return new Date(Q*1000)}return xf0($.period_end)}function rZ5($,Z){let Q=g7($.items)?.data;if(!Array.isArray(Q))return;for(let X of Q){let Y=g7(X)?.amount;if(typeof Y==="number"&&Y<=0)continue;let J=_f0(g7(X)?.price);if(J&&Z[J])return Z[J]}return}function FA1($,Z,Q){if($==="past_due")return;if($!=="active")return"free";return}function sZ5($){let Z=xf0($.current_period_end);if(Z)return Z;let Q=g7($.items)?.data;if(!Array.isArray(Q))return null;let X=0;for(let Y of Q){let J=g7(Y)?.current_period_end;if(typeof J==="number"&&J>X)X=J}return X>0?new Date(X*1000):null}function WA1($,Z){let Q=xf0($.created);return!!Q&&!!Z.lastStripeEventAt&&Q<Z.lastStripeEventAt}function HA1($,Z){let Q=xf0($.created);if(!Q)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>Q?void 0:Q}async function eZ5($,Z){let Q=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let X=RW(g7(Q.metadata)?.orgId);if(!X)return{handled:!1,reason:"no orgId"};if(RW(g7(Q.metadata)?.kind)==="topup"){if(Q.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(RW(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let H=RW(Q.id);if(!H)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:X}),{handled:!1,reason:"topup session without id"};let F=Number(g7(Q.metadata)?.creditCents);if(!Number.isInteger(F)||F<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:X,creditCents:g7(Q.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:X,topUp:{creditCents:F,referenceId:`stripe-topup:${H}`}}}if(Q.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(RW(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.ensureBilling(X);if(!Y)return console.error("stripe webhook: PAID checkout for an org that does not exist",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"unknown org"};let J=_f0(Q.subscription);if(!J)return console.error("stripe webhook: subscription checkout without a sub id",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"subscription checkout without sub id"};if(WA1(Z,Y))return{handled:!1,reason:"stale event"};if(Y.stripeSubscriptionId&&Y.stripeSubscriptionId!==J)return console.error("stripe webhook: refused checkout rebind",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:J};let G=_f0(Q.customer);if(!await $.bindSubscription(X,{stripeSubscriptionId:J,...G?{stripeCustomerId:G}:{},status:"active",lastStripeEventAt:HA1(Z,Y)}))return console.error("stripe webhook: lost the bind race",{organizationId:X,subscriptionId:J,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:J};let W=RW(g7(Q.metadata)?.planId);return{handled:!0,organizationId:X,...W?{planChange:{planId:W,note:`stripe checkout ${RW(Q.id)??""}`.trim()}}:{}}}case"customer.subscription.updated":case"customer.subscription.deleted":{let X=RW(Q.id);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};let J=Z.type==="customer.subscription.deleted";if(!J&&WA1(Z,Y))return{handled:!1,reason:"stale event"};let G=J?"canceled":vf0(Q.status);await $.updateStripeState(Y.organizationId,{status:G,currentPeriodEnd:sZ5(Q),...J&&{stripeSubscriptionId:null},lastStripeEventAt:HA1(Z,Y)});let K=FA1(G,Q,T0().stripePlanPriceIds);return{handled:!0,organizationId:Y.organizationId,...K?{planChange:{planId:K,note:`stripe ${Z.type} (${G})`}}:{}}}case"invoice.paid":{let X=oZ5(Q);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};if(WA1(Z,Y))return{handled:!1,reason:"stale event"};await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:aZ5(Q),lastStripeEventAt:HA1(Z,Y)});let J=rZ5({items:Q.lines},T0().stripePlanPriceIds);return{handled:!0,organizationId:Y.organizationId,...J?{planChange:{planId:J,note:"stripe invoice.paid"}}:{}}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function $75($,Z){if(!Z.handled||$.livemode===!1)return null;let Q=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:vf0(Q.status),...typeof Q.cancel_at_period_end==="boolean"?{cancel_at_period_end:Q.cancel_at_period_end}:{}}};case"invoice.paid":if(Q.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function xL8($,Z){let Q=$75($,Z);if(!Q)return;CJ({event:Q.name,organizationId:Q.organizationId,...$.id?{uuid:PP$(`stripe:${$.id}:${Q.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:Q.properties})}async function yL8($){let Z=new tG(F8().db),Q=await eZ5(Z,$);if(!(Q.handled&&Q.topUp))xL8($,Q);if(Q.handled&&Q.topUp)await M58({organizationId:Q.organizationId,amountCents:Q.topUp.creditCents,referenceId:Q.topUp.referenceId}),xL8($,Q);if(Q.handled&&Q.planChange){try{await K_0({organizationId:Q.organizationId,planId:Q.planChange.planId,note:Q.planChange.note})}catch(X){if(!(X instanceof ip))throw X;return console.error("stripe webhook: gateway REFUSED the plan change \u2014 the org has been "+"charged (or cancelled) and its entitlement did NOT move. Place it by hand through the gateway admin API.",{organizationId:Q.organizationId,planId:Q.planChange.planId,eventId:$.id,status:X.status,error:X.message}),Q}np(Q.organizationId)}if(!Q.handled&&Q.orphanSubscriptionId){let X=Q.orphanSubscriptionId;try{await ox$(X)}catch(J){if(!(J instanceof uZ&&(J.status===400||J.status===404)))throw J}let{refundedCents:Y}=await ax$(X);console.error("stripe webhook: reversed orphan subscription",{subscriptionId:X,refundedCents:Y,eventId:$.id})}return Q}var tZ5=300;var UA1=L(()=>{d60();jX();D6();Ee();iL();W_0();W$()});import{DBOS as ff0,SchedulerMode as Z75}from"@dbos-inc/dbos-sdk";function gL8($){BA1=$}function hL8(){if(!BA1)throw Error("[subscription-sweep] runtime not initialized \u2014 setSubscriptionSweepRuntime() must run before the workflow fires");return BA1}async function J75($){let{organizationId:Z,stripeSubscriptionId:Q}=$;if(!Q)return{organizationId:Z,action:"ok"};let X=new tG(hL8().db);try{let Y,J,G=!1;try{let W=await wE(Q);Y=vf0(W.status),J=G75(W)}catch(W){if(!(W instanceof uZ)||W.status!==404)throw W;Y="canceled",J=$.currentPeriodEnd,G=!0}let K=FA1(Y,{},T0().stripePlanPriceIds);if(await X.updateStripeState(Z,{status:Y,currentPeriodEnd:J,...G&&{stripeSubscriptionId:null}}),!K)return{organizationId:Z,action:"ok"};return await K_0({organizationId:Z,planId:K,note:`studio subscription sweep (${Y})`}),np(Z),console.warn("[subscription-sweep] revoked a paid tier whose webhook never arrived",{organizationId:Z,subscriptionId:Q,status:Y}),{organizationId:Z,action:G?"gone":"revoked"}}catch(Y){if(Y instanceof ip)console.error("[subscription-sweep] gateway REFUSED the revocation \u2014 the org still holds a tier it no longer pays for",{organizationId:Z,subscriptionId:Q,status:Y.status});return{organizationId:Z,action:"failed",error:Y instanceof Error?Y.message:String(Y)}}}function G75($){if(typeof $.current_period_end==="number")return new Date($.current_period_end*1000);let Z=0;for(let Q of $.items?.data??[])if(typeof Q.current_period_end==="number")Z=Math.max(Z,Q.current_period_end);return Z>0?new Date(Z*1000):null}async function K75($,Z){let Q=T0();if(!Q.plansEnabled||!Q.stripeSecretKey)return;let X=new Date($.getTime()-X75),Y=await ff0.runStep(()=>new tG(hL8().db).listSubscriptionsPastPeriodEnd(X,Y75),{name:"loadLapsedSubscriptions"});if(Y.length===0)return;let J=await Promise.all(Y.map((K)=>ff0.runStep(()=>J75(K),{name:`sweepSubscription:${K.organizationId}`})));for(let K of J)if(K.action==="failed")console.warn(`[subscription-sweep] org ${K.organizationId} failed: ${K.error}`);let G=J.filter((K)=>K.action==="revoked"||K.action==="gone").length;if(G>0)console.warn(`[subscription-sweep] revoked ${G} of ${Y.length} lapsed subscriptions`)}function uL8(){if(NA1)return;NA1=ff0.registerWorkflow(K75,{name:"subscriptionSweepWorkflow"}),ff0.registerScheduled(NA1,{name:"subscriptionSweepWorkflow",crontab:Q75,mode:Z75.ExactlyOncePerIntervalWhenActive})}var Q75="41 * * * *",X75=172800000,Y75=100,BA1=null,NA1=null;var lL8=L(()=>{d60();Ee();iL();W_0();UA1();W$()});async function W75($,Z){let Q=await $.storage.tags.listOrgTags(Z),X=Q.find((J)=>J.name.toLowerCase()===bf0);if(X)return X.id;return(await $.storage.tags.createTag(Z,bf0,RL0(Q.length))).id}async function H75($,Z,Q,X,Y){let J=await $.storage.taskBoard.getById(Q,Z);if(!J||!K08(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(!ey(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 Q5($,{taskBoardItemId:Q,action:"tags_changed",actorId:null,data:{from:J.tags,to:W.tags,reason:"merged_pr_auto_tag"}}),R8(Z,W),!0}async function cL8($,Z,Q,X=RS0){let Y=null,J=()=>Y??=W75($,Z),G=0;for(let K of Q)try{if(await H75($,Z,K,J,X))G+=1}catch(W){console.error(`[task-board-merged-tag] ${K} failed`,W)}return{tagged:G}}var bf0="merged";var mL8=L(()=>{b4();eX();Op();JF();_7();h9()});import{DBOS as yf0,SchedulerMode as F75}from"@dbos-inc/dbos-sdk";function dL8($){OA1=$}function iL8(){if(!OA1)throw Error("[task-board-merged-tag] runtime not initialized \u2014 setTaskBoardMergedTagSweepRuntime() must run before the workflow fires");return OA1}async function B75($,Z){try{let Q=await FW(iL8().db,$);if(!Q)return{organizationId:$,tagged:0};let{tagged:X}=await cL8(Q,$,Z);return{organizationId:$,tagged:X}}catch(Q){return{organizationId:$,tagged:0,error:Q instanceof Error?Q.message:String(Q)}}}async function L75(){let $=await yf0.runStep(()=>new k3(iL8().db).listItemsAwaitingMergedTag(bf0,N75),{name:"loadMergedTagCandidates"});if($.length===0)return;let Z=await Promise.all(AS0($).map(({organizationId:X,itemIds:Y})=>yf0.runStep(()=>B75(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 pL8(){if(LA1)return;LA1=yf0.registerWorkflow(L75,{name:"taskBoardMergedTagSweepWorkflow"}),yf0.registerScheduled(LA1,{name:"taskBoardMergedTagSweepWorkflow",crontab:U75,mode:F75.ExactlyOncePerIntervalWhenActive})}var U75="41 * * * *",N75=200,OA1=null,LA1=null;var nL8=L(()=>{zO();Op();sy();mL8()});function tL8($){if(!$)return!1;try{return new URL($).host==="api.decocms.com"}catch{return!1}}var aL8,O75,oL8=($)=>{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)},DA1=($,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=oL8(Y.substring(0,J));if(Z&&Z!==G||!aL8.test(G))continue;let K=oL8(Y.substring(J+1));if(K.startsWith('"')&&K.endsWith('"'))K=K.slice(1,-1);if(O75.test(K)){if(X[G]=K.indexOf("%")!==-1?bm(K,J00):K,Z)break}}return X},D75=($,Z,Q={})=>{if(!aL8.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},gf0=($,Z,Q)=>{return Z=encodeURIComponent(Z),D75($,Z,Q)};var rL8=L(()=>{Lj();aL8=/^[\w!#$%&'*.^`|~+-]+$/,O75=/^[ !#-:<-[\]-~]*$/});var mn=($,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 DA1(X,J)[J]}if(!X)return{};return DA1(X)},w75=($,Z,Q)=>{let X;if(Q?.prefix==="secure")X=gf0("__Secure-"+$,Z,{path:"/",...Q,secure:!0});else if(Q?.prefix==="host")X=gf0("__Host-"+$,Z,{...Q,path:"/",secure:!0,domain:void 0});else X=gf0($,Z,{path:"/",...Q});return X},K90=($,Z,Q,X)=>{let Y=w75(Z,Q,X);$.header("Set-Cookie",Y,{append:!0})};var hf0=L(()=>{rL8()});var sL8=($)=>{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 eL8=()=>{};function wA1($,Z){return`${$}:${Z}`}function $O8($){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=wA1(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=wA1(J,G);X.set(W,{role:K,expiresAt:Date.now()+Z}),Y()},invalidate(J,G){X.delete(wA1(J,G))}}}class jA1{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=ZO8.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 ZO8)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 ZO8;var QO8=L(()=>{ZO8=["studio.sse.broadcast","mesh.sse.broadcast"]});async function j75($,Z,Q=5){try{await S8(Z,{maxAttempts:Q,minTimeout:1000,maxTimeout:1e4,jitter:0})}catch(X){console.error(`${$} Deferred start failed:`,X instanceof e5?X.cause:X)}}function XO8($){let Z=new jA1({getConnection:()=>$.getConnection()});K9.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),$.onReady(()=>{j75("[NatsSSEBroadcast]",()=>Z.start())})}var EA1=L(()=>{w8();QO8();o40();o40()});var YO8=()=>{};var zA1=()=>{};var JO8=()=>{};var E75,ak7;var GO8=L(()=>{YO8();zA1();Lj();JO8();E75={br:".br",zstd:".zst",gzip:".gz"},ak7=Object.keys(E75)});var KO8=L(()=>{GO8()});var WO8=()=>{};var HO8=L(()=>{WO8()});var FO8=()=>{};var UO8=L(()=>{K71()});var PA1=L(()=>{Oj();UO8()});var TA1="x-hono-disable-ssg",OS7;var AA1=L(()=>{PA1();OS7=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[TA1]:"true"}})}catch{return null}})()});var NO8=L(()=>{bF0()});var RA1=L(()=>{NO8()});var BO8=L(()=>{HO8();FO8();zA1();AA1();RA1();PA1()});var LO8=L(()=>{AA1();RA1();BO8()});var rS7;var OO8=L(()=>{LO8();({write:rS7}=Bun)});var T75=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)}},DO8=($)=>{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 wO8=()=>{};var W90=($)=>("server"in $.env)?$.env.server:$.env;var uf0=()=>{};var A75;var jO8=L(()=>{wO8();uf0();A75=DO8(($,Z)=>{let Q=W90($);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 H90=($)=>{let Z=W90($);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 EO8=L(()=>{uf0()});var qA1=L(()=>{KO8();OO8();jO8();EO8();uf0()});var zO8;var PO8=L(()=>{zO8={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 TO8(){let $=Object.keys(k4.socialProviders??{}),Z=$.length>0,Q=$.map((Y)=>({name:Y,icon:zO8[Y].icon})),X=T0().localMode;return{emailAndPassword:{enabled:k4.emailAndPassword?.enabled??!1},magicLink:{enabled:k4.magicLinkConfig?.enabled??!1},emailOtp:{enabled:k4.emailOtpConfig?.enabled??!1},resetPassword:{enabled:Pf0},socialProviders:{enabled:Z,providers:Q},sso:k4.ssoConfig?{enabled:!0,providerId:k4.ssoConfig.providerId}:{enabled:!1},stdioEnabled:X,localMode:RO()}}async function R75($,Z,Q){try{if(!k4.inviteEmailProviderId||!k4.emailProviders||k4.emailProviders.length===0)return;let X=aG(k4.emailProviders,k4.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=ze,G=Y.filter((H)=>(H.role??"").split(",").map((F)=>F.trim()).some((F)=>J.includes(F)));if(G.length===0)return;let K=oG(X),W=`${S9()}/${Z.slug}/settings/members`;await Promise.allSettled(G.map((H)=>K({to:H.email,subject:`New request to join ${Z.name}`,html:rG({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:yA("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 uO,AO8;var MA1=L(()=>{U8();qA1();D6();W$();w3();jX();wT1();b31();jf0();bA();IX();D9();E51();PO8();Yg();Gm();uO=new Y1;uO.post("/local-session",async($)=>{if(!RO())return $.json({success:!1,error:"Local mode is not active"},403);let Z;try{Z=H90($).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(() => (Yg(),nS0));await X();let{auth:Y}=await Promise.resolve().then(() => (w3(),OB8)),J=await rB1();if(!J)return $.json({success:!1,error:"Local admin user not found"},500);let G=await pS0();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)}});uO.get("/my-capabilities/:slug",async($)=>{let Z=$.req.param("slug"),Q=await b8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({error:"Authentication required"},401);let X=F8().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(SZ(G))return $.json({role:G,capabilities:PN$()});if(G==="user")return $.json({role:G,capabilities:k51({self:[...QH0]})});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:k51(W)})});uO.get("/domain-lookup",async($)=>{let Z=await b8.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||pH.has(Q))return $.json({found:!1,organizations:[]});try{let Y=(await new nG(F8().db).getAllByDomain(Q)).filter(wf0);if(Y.length===0)return $.json({found:!1,organizations:[]});let J=await F8().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(_9(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)}});uO.post("/domain-join",async($)=>{let Z=await b8.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||pH.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=F8().db,W=(await new nG(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)=>!_9(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 b8.api.addMember({body:{userId:Z.user.id,role:"user",organizationId:N.id}})}catch(B){if(!DE(B))return console.error("[Auth] Domain join addMember failed:",B),$.json({success:!1,error:"Failed to join organization"},500)}return h1.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 h1.captureException(J,Z.user.id),console.error("[Auth] Domain join failed:",J),$.json({success:!1,error:"Failed to join organization"},500)}});uO.post("/domain-setup",async($)=>{let Z=await b8.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||pH.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=F8().db,W=new nG(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((A)=>A.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 A=0;A<3;A++){let P=A===0?"":`-${Math.random().toString(36).slice(2,6)}`,T=A===0?U:`${U}${P}`,q=`${N}${P}`;try{B=await b8.api.createOrganization({body:{name:T,slug:q,userId:Z.user.id}});break}catch(f){if(!(f instanceof Error&&("body"in f)&&f.body?.code==="ORGANIZATION_ALREADY_EXISTS")||A===2)throw f}}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 D=!1,w=null,j=null;try{let z=T0().firecrawlApiKey;if(z){let A=await EL0(Q,z,U);if(A){let P=new De(F8().db),T=await P.create(O,A);if(await P.setDefault(T.id,O),D=!0,A.name&&A.name!==U)w=A.name;j=A.favicon??A.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 b8.api.updateOrganization({headers:$.req.raw.headers,body:{organizationId:O,data:E}})}catch(z){console.error("[Auth] Org update failed (non-fatal):",z)}return h1.identify({distinctId:Z.user.id,properties:{email:Z.user.email,$set:{email:Z.user.email},$set_once:{first_organization_created_at:new Date().toISOString()}}}),h1.groupIdentify({groupType:"organization",groupKey:O,properties:{name:B.slug??N,slug:B.slug??N,email_domain:Q,brand_extracted:D,created_at:new Date().toISOString()}}),h1.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:D}}),$.json({success:!0,slug:B.slug??N,brandExtracted:D})}catch(K){return h1.captureException(K,Z.user?.id),console.error("[Auth] Domain setup failed:",K),$.json({success:!1,error:"Failed to set up organization"},500)}});uO.get("/org-access-status/:slug",async($)=>{let Z=$.req.param("slug"),Q=await b8.api.getSession({headers:$.req.raw.headers});if(!Q?.user)return $.json({success:!1,error:"Authentication required"},401);let X=F8().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 b8.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&&!pH.has(K)){let W=await new nG(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 Jm(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})});uO.post("/domain-request-join",async($)=>{let Z=await b8.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||pH.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=F8().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 nG(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 Jm(J).create(G.id,Z.user.id),await R75(J,G,Z.user.email),h1.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 h1.captureException(J,Z.user.id),console.error("[Auth] Domain request-join failed:",J),$.json({success:!1,error:"Failed to request access"},500)}});uO.post("/ensure-organization",async($)=>{let Z=null;try{if(Z=await b8.api.getSession({headers:$.req.raw.headers}),!Z?.user)return $.json({success:!1,error:"Authentication required"},401);let Q=await Ef0({db:F8().db,authApi:b8.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)h1.captureException(Q,X);return console.error("[Auth] ensure organization failed:",Q),$.json({success:!1,error:"Failed to ensure organization"},500)}});AO8=uO});import{createHmac as q75}from"crypto";function RO8($){return/^Bearer\s+(.+)$/i.exec($.get("authorization")??"")?.[1]?.trim()||null}function qO8($){if(!$||typeof $!=="object"||!("userId"in $)||typeof $.userId!=="string")return null;return $.userId}function M75($){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 I75($){if(!$||typeof $!=="object"||!("valid"in $)||$.valid!==!0||!("key"in $))return null;return qO8($.key)}async function MO8($){let Z=new Headers({authorization:`Bearer ${$}`,"X-MCP-Session-Auth":"true"}),Q=await b8.api.getMcpSession({headers:Z}).catch(()=>null),X=qO8(Q);if(X)return X;let Y=await b8.api.verifyApiKey({body:{key:$}}).catch(()=>null);return I75(Y)}function V75($,Z){let Q=q75("sha256",Z).update($).digest("base64");return encodeURIComponent(`${$}.${Q}`)}var IA1,IO8;var VO8=L(()=>{U8();w3();IA1=new Y1;IA1.get("/me",async($)=>{let Z=RO8($.req.raw.headers),Q;if(Z)Q=await MO8(Z);else{let X=await b8.api.getSession({headers:$.req.raw.headers}).catch(()=>null);Q=M75(X)}if(!Q)return $.json({error:"unauthorized"},401);return $.json({userId:Q})});IA1.post("/session-from-oauth",async($)=>{let Z=RO8($.req.raw.headers);if(!Z)return $.json({error:"unauthorized"},401);let Q=await MO8(Z);if(!Q)return $.json({error:"unauthorized"},401);try{let X=await b8.$context,Y=await X.internalAdapter.createSession(Q,!1),J=V75(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)}});IO8=IA1});var dn=($)=>{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 k75($){let Z=$.req.path;return $.req.method==="GET"&&/\/fs\/[^/]+\/read$/.test(Z)||$.req.method==="POST"&&/\/fs\/[^/]+\/unlock$/.test(Z)}function VA1($){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 C75($){let Z=$.split("/").filter(Boolean);if(Z[0]!=="api")return!1;let Q=Z.slice(2);return S75.some((X)=>X.length===Q.length&&X.every((Y,J)=>Y==="*"||Y===Q[J]))}var S75,pn=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=C75($.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(dn($))return $.redirect(`/${encodeURIComponent(Q)}`,302);return $.json({error:`organization "${Q}" not found`},404)}let K=VA1(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(_9(G)){if(dn($))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)H=F.role;else if(await NB1(Y,W))PO({action:"org_scope_admit",actorUserId:W,targetOrgId:G.id,method:$.req.method,route:$.req.path}),H="owner";else if(!k75($)){if(dn($))return $.redirect(`/${encodeURIComponent(G.slug)}`,302);return $.json({error:"forbidden: not a member of organization"},403)}}return X.organization={id:G.id,slug:G.slug,name:G.name,role:H},X.access.setOrganizationId(G.id),X.access.setRole(H),Lz(X,G),await Z()};var lf0=L(()=>{eU();Bp();S75=[["vault","connections","*","access-token"],["vault","connections","*","configuration"],["internal","task-board","import"],["internal","commerce-diagnostic","share-invite"],["internal","organization-notices"],["internal","repositories","resolve"],["internal","repositories","*","tree"],["internal","repositories","*","file"],["internal","repositories","*","search"],["internal","repositories","*","change-requests"],["internal","repositories","*","commits"]]});function _75($){if(_Q($.id)!==null)return!0;if(o3$($.id))return!0;let Z=$.metadata?.liveAgentId;return typeof Z==="string"&&Z.length>0}function v75($,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 x75($){let Z=$.auth?.apiKey?.id?VA1($):{present:!1,id:void 0};if(Z.present&&!Z.id)return cf0;let Q=$.auth?.tokenOrganizationId;if(Z.id&&Q&&Z.id!==Q)return cf0;let X=Z.id??Q??null;if(X===null&&$.auth?.apiKey?.id)return cf0;return X}var kO8="/api/_me",cf0,f75=256,b75=20,y75=50,g75=10,h75=5,SO8=()=>{let $=new Y1;return $.get("/projects/search",async(Z)=>{let Q=Z.get("studioContext");Z.header("Cache-Control","private, no-store");let X=t0(Q);if(!X)return Z.json({error:"Unauthorized"},401);let Y=x75(Q);if(Y===cf0)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>f75)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,y75):b75,W=v75(Q,X),H=K+g75,F=[];for(let U=0;U<h75&&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)=>!_75(O)).filter((O)=>!_9({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 CO8=L(()=>{U8();Y4();lf0();cf0=Symbol("deny")});var _O8="Payload Too Large",vO8,f5=($)=>{let Z=$.onError||(()=>{let X=new Response(_O8,{status:413});throw new q$(413,{res:X})}),Q=$.maxSize;return async function(Y,J){if(!Y.req.raw.body)return J();let G=Y.req.raw.headers.has("transfer-encoding"),K=Y.req.raw.headers.has("content-length");if(K&&!G)return parseInt(Y.req.raw.headers.get("content-length")||"0",10)>Q?Z(Y):J();let W=0,H=Y.req.raw.body.getReader(),U={body:new ReadableStream({async start(N){try{for(;;){let{done:B,value:O}=await H.read();if(B)break;if(W+=O.length,W>Q){N.error(new vO8(_O8));break}N.enqueue(O)}}finally{N.close()}}}),duplex:"half"};if(Y.req.raw=new Request(Y.req.raw,U),await J(),Y.error instanceof vO8)Y.res=await Z(Y)}};var qW=L(()=>{PH();vO8=class extends Error{constructor($){super($);this.name="BodyLimitError"}}});import{createHash as u75}from"crypto";function F90($,Z,Q=0){return Z.every((X,Y)=>$[Q+Y]===X)}function fO8($){if(F90($,[137,80,78,71,13,10,26,10]))return{mime:"image/png",ext:"png"};if(F90($,[255,216,255]))return{mime:"image/jpeg",ext:"jpg"};if(F90($,[71,73,70,56])&&($[4]===55||$[4]===57)&&$[5]===97)return{mime:"image/gif",ext:"gif"};if(F90($,[82,73,70,70])&&F90($,[87,69,66,80],8))return{mime:"image/webp",ext:"webp"};return null}function SA1($){return oF($)}function m75($,Z){let Q=u75("sha256").update($).digest("hex");return`${mf0}/${Q}.${Z}`}function if0($,Z,Q){let X=new URLSearchParams({path:Q}).toString();return`${$.replace(/\/$/,"")}${df0}/fs/${encodeURIComponent(Z)}/read?${X}`}function nn($){let Z=qQ(),Q=Z?zY(Z,kA1):new OK(kA1,$.baseUrl);return new DK(Q,$.storage.orgFsEntries,kA1,l75)}async function U90($,Z){return(await $.listDir(Z,mf0).catch(()=>[])).filter((X)=>X.kind==="file").sort((X,Y)=>Y.updatedAt.localeCompare(X.updatedAt))}async function bO8($,Z){return(await U90($,Z)).map((X)=>({path:X.path,current:X.readPublic,updatedAt:X.updatedAt}))}async function d75($,Z){if((await $.stat(Z,mf0))?.readPublic)await $.setReadPublic(Z,mf0,!1,{actor:Z})}async function CA1($,Z,Q){let X=await U90($,Z);if(!X.some((Y)=>Y.path===Q))throw new qY(`No such avatar: ${Q}`);await d75($,Z),await $.setReadPublic(Z,Q,!0,{actor:Z}),await Promise.all(X.filter((Y)=>Y.path!==Q&&Y.readPublic).map((Y)=>$.setReadPublic(Z,Y.path,!1,{actor:Z})))}async function i75($,Z,Q){try{let Y=(await U90($,Z)).filter((J)=>J.path!==Q).slice(c75-1);await Promise.all(Y.map((J)=>$.delete(Z,J.path,{actor:Z})))}catch(X){console.warn("[user-fs] failed to evict old avatars",X)}}async function yO8($,Z){let{userId:Q,bytes:X,contentType:Y,ext:J}=Z,G=m75(X,J);return await $.write(Q,G,X,{actor:Q,contentType:Y}),await CA1($,Q,G),await i75($,Q,G),G}async function gO8($,Z,Q){if(!(await U90($,Z)).some((Y)=>Y.path===Q))throw new qY(`No such avatar: ${Q}`);await $.delete(Z,Q,{actor:Z})}async function hO8($,Z){try{let Q=await U90($,Z);await Promise.all(Q.map((X)=>$.delete(Z,X.path,{actor:Z})))}catch(Q){console.warn("[user-fs] failed to clear avatars",Q)}}var kA1="org_user_fs",df0="/api/_users",mf0="avatars",l75,xO8=2097152,c75=5;var _A1=L(()=>{cl();yB();oB();_T();l75={maxFileBytes:5242880,volumeQuotaBytes:67108864}});function N90($,Z,Q,X){let Y=i7(Q),J={"Content-Type":Y,"X-Content-Type-Options":"nosniff","Cache-Control":X?"public, max-age=0, must-revalidate":"private, max-age=0"};if(Y.startsWith("text/html"))J["Content-Security-Policy"]="sandbox allow-scripts allow-modals allow-same-origin allow-downloads";return $.body(Buffer.from(Z),200,J)}var vA1=L(()=>{mW()});function pf0($,Z){if(Z instanceof qY)return $.json({error:Z.message},404);if(Z instanceof cG)return $.json({error:Z.message},400);if(Z instanceof vT)return $.json({error:Z.message},413);return console.error("[user-fs] request failed",Z),$.json({error:"Internal error"},500)}function nf0($){let Q=$.get("studioContext").auth?.user?.id;if(!Q)return{ok:!1,res:$.json({error:"Unauthorized"},401)};if(!SA1(Q))return{ok:!1,res:$.json({error:"Unsupported user id"},400)};return{ok:!0,userId:Q}}var uO8=()=>{let $=new Y1;return $.get("/fs/:userId/read",async(Z)=>{let Q=Z.req.param("userId"),X=Z.req.query("path")??"";if(!SA1(Q))return Z.json({error:"Invalid user id"},400);let Y=Z.get("studioContext"),J=nn(Y),K=(await J.resolveReadAccess(Q,X).catch(()=>({access:"private"}))).access==="public";if(!K&&Y.auth?.user?.id!==Q)return Z.json({error:"Not found"},404);try{return N90(Z,await J.read(Q,X),X,K)}catch(W){return pf0(Z,W)}}),$.post("/avatar",f5({maxSize:xO8,onError:(Z)=>Z.json({error:"Avatar exceeds the size limit"},413)}),async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let{userId:X}=Q,Y=Z.get("studioContext"),J=new Uint8Array(await Z.req.arrayBuffer());if(J.byteLength===0)return Z.json({error:"Empty request body"},400);let G=fO8(J);if(!G)return Z.json({error:"Avatar must be a PNG, JPEG, GIF or WebP image"},415);try{let K=await yO8(nn(Y),{userId:X,bytes:J,contentType:G.mime,ext:G.ext});return Z.json({url:if0(Y.baseUrl,X,K)})}catch(K){return pf0(Z,K)}}),$.get("/avatars",async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let X=Z.get("studioContext"),Y=await bO8(nn(X),Q.userId);return Z.json({avatars:Y.map((J)=>({...J,url:if0(X.baseUrl,Q.userId,J.path)}))})}),$.post("/avatar/select",async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let X=Z.get("studioContext"),Y=await Z.req.json().catch(()=>null);if(typeof Y?.path!=="string"||!Y.path)return Z.json({error:"Body must be { path: string }"},400);try{return await CA1(nn(X),Q.userId,Y.path),Z.json({url:if0(X.baseUrl,Q.userId,Y.path)})}catch(J){return pf0(Z,J)}}),$.delete("/avatar",async(Z)=>{let Q=nf0(Z);if(!Q.ok)return Q.res;let X=Z.get("studioContext"),Y=nn(X),J=Z.req.query("path");if(!J)return await hO8(Y,Q.userId),Z.json({ok:!0});try{return await gO8(Y,Q.userId,J),Z.json({ok:!0})}catch(G){return pf0(Z,G)}}),$};var lO8=L(()=>{U8();qW();oB();_A1();vA1()});import{z as tn}from"zod";var p75,n75,t75=200,o75=2000,a75=60,r75=2000,s75,tf0;var xA1=L(()=>{p75=["warn","block"],n75=tn.enum(p75),s75=tn.string().max(r75).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"}),tf0=tn.object({severity:n75,title:tn.string().trim().min(1).max(t75),message:tn.string().trim().min(1).max(o75),ctaLabel:tn.string().trim().max(a75).nullable().optional(),ctaUrl:s75.nullable().optional()}).refine(($)=>!$.ctaLabel===!$.ctaUrl,{message:"ctaLabel and ctaUrl must be set together",path:["ctaUrl"]})});import{z as fA1}from"zod";function bA1($){let Z=$??{},Q=new Set([...Object.keys(y2.shape),...Object.keys(Z)]),X={};for(let Y of Q)X[Y]=iQ(Z,Y);return{flags:Z,effective:X}}var e75,cO8;var mO8=L(()=>{gZ();e75=fA1.string().min(1).max(64).regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/),cO8=fA1.record(e75,fA1.boolean())});function dO8($,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===`
5547
5547
  `||Y==="\r")return X;X+=Z.length}}function iO8($,Z){let Q=dO8($,$Q5(Z),0);if(Q===-1)return null;let X=$.indexOf(`
5548
5548
  `,Q);if(X===-1)return null;let Y=dO8($,ZQ5(Z),X);if(Y===-1)return null;let J=$.lastIndexOf(`
5549
5549
  `,Y);return{from:X+1,to:J+1}}function pO8($,Z){let Q=iO8($,Z);return Q?$.slice(Q.from,Q.to):null}function nO8($,Z,Q){let X=iO8($,Z);if(!X)throw Error(`prompt region "${Z}" not found in source`);let Y=Q.endsWith(`