decocms 4.74.8 → 4.74.10

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 (238) hide show
  1. package/dist/client/assets/{AlertCircle-Dbk2M0Y9.js → AlertCircle-DqUTv4E-.js} +1 -1
  2. package/dist/client/assets/{AreaChart-VJSa52eE.js → AreaChart-C1xsF6-b.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-B3FfTe0H.js → ArrowUp-D0fgN69F.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-3Z1kMomp.js → ArrowUpRight-DwzlEsWL.js} +1 -1
  5. package/dist/client/assets/{Check-Ct-bIzbx.js → Check-CBXtGnm9.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-DjztQz-Q.js → CheckCircle-CCHw73Vk.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-HCsDd0DZ.js → ChevronDown-CBWZJXqq.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-CCXBxU6v.js → ChevronRight-CTlXQU5v.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-BsmtwzSj.js → ChevronUp-BLGln-Io.js} +1 -1
  10. package/dist/client/assets/{Circle-BKCrqOaO.js → Circle-BAM1jueR.js} +1 -1
  11. package/dist/client/assets/{Copy01-Cza2ncwY.js → Copy01-CElLw1fl.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-jw31uiRl.js → DotsVertical-RLfiLFOr.js} +1 -1
  13. package/dist/client/assets/{Eye-D_805lK1.js → Eye-IOVCSFlQ.js} +1 -1
  14. package/dist/client/assets/{FilterLines-BVxMeYNv.js → FilterLines-HpeJlpds.js} +1 -1
  15. package/dist/client/assets/{Flag01-DsR6BYrN.js → Flag01-CiwuOJAP.js} +1 -1
  16. package/dist/client/assets/{Globe01-C0wAtmXN.js → Globe01-BqESiBJA.js} +1 -1
  17. package/dist/client/assets/{Globe04-BZ6_mpAa.js → Globe04-D4MABzP4.js} +1 -1
  18. package/dist/client/assets/{HardDrive-D0it1XgQ.js → HardDrive-DHGRYDuf.js} +1 -1
  19. package/dist/client/assets/{Key01-B4RkJszn.js → Key01-me6x8D8K.js} +1 -1
  20. package/dist/client/assets/{LayoutLeft-6RayBb8x.js → LayoutLeft-88rLzCY1.js} +1 -1
  21. package/dist/client/assets/{LinkExternal01-CXO3L5Tt.js → LinkExternal01-B4DTl-9I.js} +1 -1
  22. package/dist/client/assets/{List-BJYRlsJE.js → List-Bgmi-6e-.js} +1 -1
  23. package/dist/client/assets/{Monitor01-Dba9fC5P.js → Monitor01-BvUM9dT0.js} +1 -1
  24. package/dist/client/assets/{Package-B9z_ptDM.js → Package-B6lnLIbo.js} +1 -1
  25. package/dist/client/assets/{Palette-BOlw9vrp.js → Palette-B-LC1_nw.js} +1 -1
  26. package/dist/client/assets/{Play-BtKxjvaZ.js → Play-lMgmJv4m.js} +1 -1
  27. package/dist/client/assets/{Plus-Bjx5bsQW.js → Plus-DdHts2nB.js} +1 -1
  28. package/dist/client/assets/{SearchLg-B20k0mP_.js → SearchLg-SfcKjsN1.js} +1 -1
  29. package/dist/client/assets/{SearchMd-CenKvtk4.js → SearchMd-p-Ii2h3M.js} +1 -1
  30. package/dist/client/assets/{Settings02-DyxhheRw.js → Settings02-CEorXPqB.js} +1 -1
  31. package/dist/client/assets/{Shield01-zwzSYreZ.js → Shield01-7oLNZ1U-.js} +1 -1
  32. package/dist/client/assets/{Star01-XcSSnE3a.js → Star01-BEA5l9_4.js} +1 -1
  33. package/dist/client/assets/{Stars01-Bem_tDxV.js → Stars01-J5YWHOyl.js} +1 -1
  34. package/dist/client/assets/{Stars02-DJ5l1JZ9.js → Stars02-BpuPaAxk.js} +1 -1
  35. package/dist/client/assets/{Sun-DHIC1Oxw.js → Sun-CgWbC73j.js} +1 -1
  36. package/dist/client/assets/{SwitchHorizontal01-DON89y5w.js → SwitchHorizontal01-GRlSgYit.js} +1 -1
  37. package/dist/client/assets/{Tool01-BNWHK7Iw.js → Tool01-DELPJYbE.js} +1 -1
  38. package/dist/client/assets/{Tool02-CgCj5fLk.js → Tool02-BYdVUfuG.js} +1 -1
  39. package/dist/client/assets/{Trash01-CRqSaKL3.js → Trash01-BH0Gzqas.js} +1 -1
  40. package/dist/client/assets/{TrendUp01-BJpxhHMJ.js → TrendUp01-BWmWNUPZ.js} +1 -1
  41. package/dist/client/assets/{Upload01-CNIt3nEK.js → Upload01-l_OrVf75.js} +1 -1
  42. package/dist/client/assets/{User01-DQNlsBCp.js → User01-DgDzh_-J.js} +1 -1
  43. package/dist/client/assets/{UserPlus01-pbsIckOE.js → UserPlus01-BRPJI-kd.js} +1 -1
  44. package/dist/client/assets/{Users01-RqU0SsiF.js → Users01-C2Q1kAxM.js} +1 -1
  45. package/dist/client/assets/{Users03-mbR3Isac.js → Users03-CBi_H52g.js} +1 -1
  46. package/dist/client/assets/{X-uL4x1buz.js → X-CUR9-mVG.js} +1 -1
  47. package/dist/client/assets/{XCircle-l65H1m46.js → XCircle-BKxq4FDV.js} +1 -1
  48. package/dist/client/assets/{XClose-eImoTfb5.js → XClose-rOXWT4e4.js} +1 -1
  49. package/dist/client/assets/{Zap-Cqm2djEL.js → Zap-2ydwexiY.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-DUU-nTXn.js → ZapSquare-DxvHCdOR.js} +1 -1
  51. package/dist/client/assets/{ZoomOut-BfbLoVFq.js → ZoomOut-lMw6sntg.js} +1 -1
  52. package/dist/client/assets/{access-gate-DPaZyigA.js → access-gate-C5aRyhaf.js} +1 -1
  53. package/dist/client/assets/{add-section-modal-D8zc50cc.js → add-section-modal-BomjPheO.js} +1 -1
  54. package/dist/client/assets/{agent-icon-BenvVCsR.js → agent-icon-CVLkupAb.js} +1 -1
  55. package/dist/client/assets/{agents-list-D5qogjgQ.js → agents-list-D6ZpIgfM.js} +1 -1
  56. package/dist/client/assets/{ai-providers-DmtEkz1B.js → ai-providers-Ccshg_fd.js} +1 -1
  57. package/dist/client/assets/{alert-C3jLuVEh.js → alert-CWJ6exRF.js} +1 -1
  58. package/dist/client/assets/{alert-dialog-DtpeBGOy.js → alert-dialog-CiCy278X.js} +1 -1
  59. package/dist/client/assets/app-editor-Cju8oHNw.js +1 -0
  60. package/dist/client/assets/{auth-DiOwJ4Zn.js → auth-DI40xGlG.js} +1 -1
  61. package/dist/client/assets/{auth-catchall-D8UA7Z5N.js → auth-catchall-kMXn38hI.js} +1 -1
  62. package/dist/client/assets/{auth-entry-6Fk2Lp27.js → auth-entry-6eleepnx.js} +1 -1
  63. package/dist/client/assets/{auth-split-layout-C80Ehx_w.js → auth-split-layout-ByW5qRpR.js} +1 -1
  64. package/dist/client/assets/{authenticate-and-persist-oauth-X6mZqsR9.js → authenticate-and-persist-oauth-BQPP7J79.js} +1 -1
  65. package/dist/client/assets/{automation-list-row-MV-IKeo3.js → automation-list-row-CXtqUyPv.js} +1 -1
  66. package/dist/client/assets/{automation-runs-7lkRnIT8.js → automation-runs-gf_ddYXn.js} +1 -1
  67. package/dist/client/assets/automations-BgpHJnQf.js +1 -0
  68. package/dist/client/assets/{autosend-D4LvSDIA.js → autosend-CO9rteLy.js} +1 -1
  69. package/dist/client/assets/{avatar-E-zDKmZl.js → avatar-D-q3KQy7.js} +1 -1
  70. package/dist/client/assets/{badge-C28_nmrg.js → badge-b0NeH1QD.js} +1 -1
  71. package/dist/client/assets/{block-document-2bVexgel.js → block-document-BhAB19tA.js} +1 -1
  72. package/dist/client/assets/{brand-context-DTg7DBWt.js → brand-context-BfzAc0jr.js} +1 -1
  73. package/dist/client/assets/{buckets-C92BOkv5.js → buckets-e-1_lIs_.js} +1 -1
  74. package/dist/client/assets/{bulk-category-panel-C_klyNYa.js → bulk-category-panel-BDHvD5Y6.js} +1 -1
  75. package/dist/client/assets/{calendar-yaUmasHS.js → calendar-DH9Rymv2.js} +1 -1
  76. package/dist/client/assets/{capability-load-error-Di2rmWF0.js → capability-load-error-BootHoW9.js} +1 -1
  77. package/dist/client/assets/{card-Dghn7Dnw.js → card-Cw34STqH.js} +1 -1
  78. package/dist/client/assets/{category-editor-BPixujdI.js → category-editor-BGMVH8Cs.js} +1 -1
  79. package/dist/client/assets/{chat-context-3M57oyfQ.js → chat-context-DSX3R4xj.js} +1 -1
  80. package/dist/client/assets/{checkbox-BbHYEzxy.js → checkbox-BbkVndwT.js} +1 -1
  81. package/dist/client/assets/{cli-auth-success-BC5YeBwl.js → cli-auth-success-D6y55h1k.js} +1 -1
  82. package/dist/client/assets/{collection-detail-BCK86ALO.js → collection-detail-DlHAyCwL.js} +1 -1
  83. package/dist/client/assets/{collection-display-button-IZw4hA4F.js → collection-display-button-Dp6lPxJs.js} +1 -1
  84. package/dist/client/assets/{collection-search-VU7a6mrQ.js → collection-search-vXj-H8f7.js} +1 -1
  85. package/dist/client/assets/{collection-table-wrapper-DsZ2z__U.js → collection-table-wrapper-CKbD1Hj7.js} +1 -1
  86. package/dist/client/assets/{collection-tabs-BR_uNx6a.js → collection-tabs-CFAUBGSW.js} +1 -1
  87. package/dist/client/assets/{command-_KD0C2T-.js → command-C8LgPwXB.js} +1 -1
  88. package/dist/client/assets/{commerce-onboarding-CRx3vtME.js → commerce-onboarding-CnCBkuUX.js} +1 -1
  89. package/dist/client/assets/{companions-core-Bb_Nl3VS.js → companions-core-sVZXHkec.js} +1 -1
  90. package/dist/client/assets/{connect-desktop-dialog-C9uVFOAl.js → connect-desktop-dialog-D7S5hYji.js} +1 -1
  91. package/dist/client/assets/{connection-card-CUXV54tR.js → connection-card-Bu3M0izU.js} +1 -1
  92. package/dist/client/assets/{connection-detail-DGlu56AW.js → connection-detail-DmwT8aAs.js} +1 -1
  93. package/dist/client/assets/{connection-form-helpers-DyEZc8mc.js → connection-form-helpers-ntLx35DV.js} +1 -1
  94. package/dist/client/assets/{connections-BY7RqiL7.js → connections-CnChjXoE.js} +1 -1
  95. package/dist/client/assets/{decopilot-sse-pool-C0u2ilsB.js → decopilot-sse-pool-CCtOo1xM.js} +1 -1
  96. package/dist/client/assets/{dialog-u3pgzWfP.js → dialog-Byp8kvju.js} +1 -1
  97. package/dist/client/assets/{domain-settings-B06NH_Nq.js → domain-settings-C4hcILop.js} +1 -1
  98. package/dist/client/assets/{drawer-DsxnCDAz.js → drawer-BTw8yDQO.js} +1 -1
  99. package/dist/client/assets/{dropdown-menu-rR2nk4Wp.js → dropdown-menu-BE06-lYz.js} +1 -1
  100. package/dist/client/assets/{empty-state-C9U8Gx-I.js → empty-state-DIxdCHdc.js} +1 -1
  101. package/dist/client/assets/{extract-connection-data-mPHkggV_.js → extract-connection-data-DP4BQce6.js} +1 -1
  102. package/dist/client/assets/{file-explorer-q4HBI6dK.js → file-explorer-4MP3kv5R.js} +1 -1
  103. package/dist/client/assets/{file-type-icon-Bn5n7GSJ.js → file-type-icon-BQzy_1eM.js} +1 -1
  104. package/dist/client/assets/{files-FdqMpGg_.js → files-BzDVtjhd.js} +1 -1
  105. package/dist/client/assets/{form-gZwGmSIl.js → form-DyZTxsmU.js} +1 -1
  106. package/dist/client/assets/{general-B1RNNqxF.js → general-D44PflFM.js} +1 -1
  107. package/dist/client/assets/{github-repo-picker-BVVspv39.js → github-repo-picker-uYLNI-zE.js} +1 -1
  108. package/dist/client/assets/{hooks-0UvKYRHp.js → hooks-nzOrZJDo.js} +1 -1
  109. package/dist/client/assets/{index-DArpT4j9.js → index-BDTTuZyz.js} +6 -6
  110. package/dist/client/assets/index-BIxXN72h.css +1 -0
  111. package/dist/client/assets/{index-BTjq95SK.js → index-BZyOoAmd.js} +1 -1
  112. package/dist/client/assets/{index-DX0aAfst.js → index-BhKNnfIr.js} +1 -1
  113. package/dist/client/assets/{index-CfL_6LL_.js → index-Bmw724sM.js} +1 -1
  114. package/dist/client/assets/{index-D5xwAIKh.js → index-Bv9nQt0i.js} +1 -1
  115. package/dist/client/assets/{index-C0jg8QYv.js → index-ByU7JUmr.js} +1 -1
  116. package/dist/client/assets/{index-DA9yXCsd.js → index-C3MekPVV.js} +2 -2
  117. package/dist/client/assets/{index-CfpOItsn.js → index-CDSvv4NO.js} +3 -3
  118. package/dist/client/assets/{index-CdVBLaMV.js → index-CTmjjl9s.js} +1 -1
  119. package/dist/client/assets/{index-CCg5Ncm5.js → index-CTpX7PRp.js} +1 -1
  120. package/dist/client/assets/{index-8os7vLRi.js → index-Ce7kC04E.js} +1 -1
  121. package/dist/client/assets/{index-DkwOQR9p.js → index-D8pwGaD0.js} +1 -1
  122. package/dist/client/assets/{index-CKfOcNyN.js → index-DrGBJD2a.js} +1 -1
  123. package/dist/client/assets/{index-redirect-CHxPEc2Q.js → index-redirect-BT3ayzNe.js} +1 -1
  124. package/dist/client/assets/index-sIhFZYsG.js +1 -0
  125. package/dist/client/assets/{input-BLsubvxk.js → input-0XrIE4O6.js} +1 -1
  126. package/dist/client/assets/{integration-icon-D9IUVtKn.js → integration-icon-C-YCSKWG.js} +1 -1
  127. package/dist/client/assets/{invite-member-dialog-DWYGg9F-.js → invite-member-dialog-ChmyqnD-.js} +1 -1
  128. package/dist/client/assets/{label-C5W-W5cC.js → label-Bzo14-Ek.js} +1 -1
  129. package/dist/client/assets/{layout-B7s_t1fB.js → layout-DVuxpBn9.js} +1 -1
  130. package/dist/client/assets/{login-Dk8G1zrj.js → login-D0LIEnSG.js} +1 -1
  131. package/dist/client/assets/{mcp-oauth-DdZnRfPn.js → mcp-oauth-BrpQO4bJ.js} +1 -1
  132. package/dist/client/assets/{members-D8QthcI5.js → members-zm5V61t1.js} +1 -1
  133. package/dist/client/assets/{monaco-editor-Cme3G7ai.js → monaco-editor-DhGoVuxa.js} +1 -1
  134. package/dist/client/assets/{monitoring-stats-row-ZkAWBJQu.js → monitoring-stats-row-DsdCZ99e.js} +1 -1
  135. package/dist/client/assets/{oauth-callback-B-9scwua.js → oauth-callback-BW4iQG9I.js} +1 -1
  136. package/dist/client/assets/{oauth-callback-ai-provider-B4sfrCOa.js → oauth-callback-ai-provider-BUwydVJQ.js} +1 -1
  137. package/dist/client/assets/{onboarding-BsGThIaN.js → onboarding-DJhyinnH.js} +1 -1
  138. package/dist/client/assets/{org-install-CD3to0tk.js → org-install-6wBe_xBZ.js} +1 -1
  139. package/dist/client/assets/{org-layout-BVjw8ghZ.js → org-layout-D9z_XCy_.js} +1 -1
  140. package/dist/client/assets/{organization-choice-CC84dAaJ.js → organization-choice-CLkcT-2-.js} +1 -1
  141. package/dist/client/assets/{orgs-DsVOfCfI.js → orgs-Bht9j8HD.js} +1 -1
  142. package/dist/client/assets/{page-seo-form-DYJ30pys.js → page-seo-form-CBrvJ8_0.js} +1 -1
  143. package/dist/client/assets/page-seo-sheet-BD_qgBhM.js +1 -0
  144. package/dist/client/assets/{popover-BTMMZyQ-.js → popover--8AuDDhS.js} +1 -1
  145. package/dist/client/assets/{post-editor-BkNfRItN.js → post-editor-D9U2IUJ_.js} +1 -1
  146. package/dist/client/assets/{primitives-BZy3jaHA.js → primitives-e6lXU0Yb.js} +1 -1
  147. package/dist/client/assets/{profile-CM3SSNvb.js → profile-cKOy62OH.js} +1 -1
  148. package/dist/client/assets/project-app-view-Dd3KhK8Z.js +1 -0
  149. package/dist/client/assets/record-editor-B0Nkj61O.js +1 -0
  150. package/dist/client/assets/redirect-editor-C5xQD9fx.js +1 -0
  151. package/dist/client/assets/registry-AgAf85ax.js +2 -0
  152. package/dist/client/assets/{registry-layout-DiX_dwYS.js → registry-layout-DjLCPBHA.js} +1 -1
  153. package/dist/client/assets/{reports-Cu0P7710.js → reports-BLasOp0Z.js} +1 -1
  154. package/dist/client/assets/{require-capability-Cfuyyn0g.js → require-capability-Bmiv-25w.js} +1 -1
  155. package/dist/client/assets/{required-auth-layout-BewPhQDk.js → required-auth-layout-CkWUtoa1.js} +1 -1
  156. package/dist/client/assets/{reset-password-IwNkNvDx.js → reset-password-DQFgLqQq.js} +1 -1
  157. package/dist/client/assets/{roles-Bum0Vavk.js → roles-Dm2YGCSp.js} +1 -1
  158. package/dist/client/assets/{search-input-9fNeO-8e.js → search-input-B9sOgx5S.js} +1 -1
  159. package/dist/client/assets/{secrets-DmUuVGQR.js → secrets-gHTbD8Eb.js} +1 -1
  160. package/dist/client/assets/{sections-editor-CrSG3V-B.js → sections-editor-Bf0wHzRY.js} +1 -1
  161. package/dist/client/assets/{select-BBIWVLPI.js → select-jeKT31QY.js} +1 -1
  162. package/dist/client/assets/{select-model-BIAzOk4W.js → select-model-BjBFHH76.js} +1 -1
  163. package/dist/client/assets/{self-tool-result-D7AomOng.js → self-tool-result-CWMuYub7.js} +1 -1
  164. package/dist/client/assets/{seo-editor-DxI4Ozo4.js → seo-editor-CZHyrQkl.js} +1 -1
  165. package/dist/client/assets/settings-layout-CG-mrtT3.js +1 -0
  166. package/dist/client/assets/{settings-section-C0S9QVGc.js → settings-section-BMH9ObjD.js} +1 -1
  167. package/dist/client/assets/{shell-controls-C2XNQMb-.js → shell-controls-B8cwZ_hJ.js} +1 -1
  168. package/dist/client/assets/{shell-layout-0yTprY0a.js → shell-layout-C4n4LX1o.js} +1 -1
  169. package/dist/client/assets/{sidebar-Bij8ggKi.js → sidebar-BqZqrtdp.js} +1 -1
  170. package/dist/client/assets/{skeleton-Ca3dYGzS.js → skeleton-tasAUkql.js} +1 -1
  171. package/dist/client/assets/{sso-C5PZevHC.js → sso-DxwqYo0M.js} +1 -1
  172. package/dist/client/assets/{store-BljXwcY8.js → store-CLDV41KF.js} +1 -1
  173. package/dist/client/assets/store-registry-B6rrbOHH.js +2 -0
  174. package/dist/client/assets/{studio-tools-CuJn_WJ0.js → studio-tools-yGlWtkR_.js} +1 -1
  175. package/dist/client/assets/{switch-DekLl61V.js → switch-kD35HMpu.js} +1 -1
  176. package/dist/client/assets/{table-CzZahsuJ.js → table-BodmHA3C.js} +1 -1
  177. package/dist/client/assets/{tabs-BZQXwKYX.js → tabs-BzSseQXk.js} +1 -1
  178. package/dist/client/assets/{textarea-bJuJBBGP.js → textarea-BhawJxFy.js} +1 -1
  179. package/dist/client/assets/{toggle-group-D5Ogo70h.js → toggle-group-Bp8wUSTR.js} +1 -1
  180. package/dist/client/assets/{toolbar-ZtfE3KTY.js → toolbar-CuKv0WJf.js} +1 -1
  181. package/dist/client/assets/{toolbar-icon-button-BpKoPW8a.js → toolbar-icon-button-DNsWvqm8.js} +1 -1
  182. package/dist/client/assets/{tools-list-CQ7bhDIK.js → tools-list-srTemGeg.js} +1 -1
  183. package/dist/client/assets/{tooltip-BAc12ag7.js → tooltip-B1usiOow.js} +1 -1
  184. package/dist/client/assets/{use-ai-providers-BF1NME0M.js → use-ai-providers-BbBPR1pd.js} +1 -1
  185. package/dist/client/assets/{use-automations-DQXFC1eK.js → use-automations-7mwiKLui.js} +1 -1
  186. package/dist/client/assets/{use-autosave-F7qgTf-3.js → use-autosave-BFHnVHxU.js} +1 -1
  187. package/dist/client/assets/{use-capability-Cn2DGqEt.js → use-capability-Zfskg52A.js} +1 -1
  188. package/dist/client/assets/{use-clock-tick-D3ktdq4V.js → use-clock-tick-BQo5rn8V.js} +1 -1
  189. package/dist/client/assets/{use-collections-DFSiUcH_.js → use-collections-DqbfPLBV.js} +1 -1
  190. package/dist/client/assets/{use-connection-BBJMOn4X.js → use-connection-DD6pA7cv.js} +1 -1
  191. package/dist/client/assets/{use-copy-DsxbyrBu.js → use-copy-BudFs2yF.js} +1 -1
  192. package/dist/client/assets/{use-create-virtual-mcp-DUeOQvN5.js → use-create-virtual-mcp-BitPrZNs.js} +1 -1
  193. package/dist/client/assets/{use-debounced-autosave-DdS5WXbW.js → use-debounced-autosave-CS26pRul.js} +1 -1
  194. package/dist/client/assets/{use-debounced-value-BdZmD6MF.js → use-debounced-value-CqrQ5vL7.js} +1 -1
  195. package/dist/client/assets/{use-deco-credits-D1YDcVWB.js → use-deco-credits-BJYDkYoN.js} +1 -1
  196. package/dist/client/assets/{use-decopilot-events-DW_N35Hc.js → use-decopilot-events-DbPFIxe-.js} +1 -1
  197. package/dist/client/assets/{use-delete-connection-BTlNvoR1.js → use-delete-connection-CkUjO_lD.js} +1 -1
  198. package/dist/client/assets/{use-deployment-admin-ClSCFZVT.js → use-deployment-admin-DO8zYVYi.js} +1 -1
  199. package/dist/client/assets/{use-file-configs-CYKg0DRZ.js → use-file-configs-BzVt0GyX.js} +1 -1
  200. package/dist/client/assets/{use-infinite-scroll-BM1Pgjzw.js → use-infinite-scroll-C_cOyIjf.js} +1 -1
  201. package/dist/client/assets/{use-join-requests-BLr79ywV.js → use-join-requests-B0kMkPVd.js} +1 -1
  202. package/dist/client/assets/{use-mcp-client-CNJECO91.js → use-mcp-client-CEvFn46B.js} +1 -1
  203. package/dist/client/assets/{use-mcp-tools-CT679MJF.js → use-mcp-tools-Bx62Ux25.js} +1 -1
  204. package/dist/client/assets/{use-members-AGE4OWut.js → use-members-BCjAaUMj.js} +1 -1
  205. package/dist/client/assets/{use-mobile-B3Cel6w4.js → use-mobile-QCPJKRg6.js} +1 -1
  206. package/dist/client/assets/{use-navigate-to-agent-TcrJh5dm.js → use-navigate-to-agent-BAs2B82C.js} +1 -1
  207. package/dist/client/assets/{use-org-auth-client-CJk0fWlH.js → use-org-auth-client-BJw3uNLx.js} +1 -1
  208. package/dist/client/assets/{use-org-sso-BODZwGG-.js → use-org-sso-BYPXQkqD.js} +1 -1
  209. package/dist/client/assets/{use-organization-roles-Br4HkWcn.js → use-organization-roles-DsJNbBKz.js} +1 -1
  210. package/dist/client/assets/{use-organization-settings-GjrS28kh.js → use-organization-settings-D_nQd8gr.js} +1 -1
  211. package/dist/client/assets/{use-registry-connections-CqNdEHjy.js → use-registry-connections-DCWQ0-F7.js} +1 -1
  212. package/dist/client/assets/{use-secrets-DAPfCKju.js → use-secrets-BfwCjVI3.js} +1 -1
  213. package/dist/client/assets/{use-status-sounds-D4xFJTdB.js → use-status-sounds-fiHRdBK7.js} +1 -1
  214. package/dist/client/assets/{use-view-mode-aUO6Ho5h.js → use-view-mode-Dhj5U3hC.js} +1 -1
  215. package/dist/client/assets/{use-virtual-mcp-CJIhtwFW.js → use-virtual-mcp-dVs9wzKO.js} +1 -1
  216. package/dist/client/assets/useInfiniteQuery-CGAby2Fs.js +1 -0
  217. package/dist/client/assets/{useRouterState-CS1SZ5LS.js → useRouterState-D6GADB_F.js} +1 -1
  218. package/dist/client/assets/useSuspenseInfiniteQuery-BQEshPBM.js +1 -0
  219. package/dist/client/assets/{users-D_9Xin7b.js → users-CBCKVGHx.js} +1 -1
  220. package/dist/client/assets/{variant-calendar-B-uhJjn1.js → variant-calendar-D6A3u_76.js} +1 -1
  221. package/dist/client/assets/{view-mode-toggle-BiO-gy-U.js → view-mode-toggle-DNZCAX1M.js} +1 -1
  222. package/dist/client/index.html +2 -2
  223. package/dist/server/cli.js +2 -2
  224. package/dist/server/server.js +2 -2
  225. package/package.json +1 -1
  226. package/dist/client/assets/app-editor-CBAsNv2O.js +0 -1
  227. package/dist/client/assets/automations-8u2rN4QN.js +0 -1
  228. package/dist/client/assets/index-B7Kp0gmf.css +0 -1
  229. package/dist/client/assets/index-q9hnlMPK.js +0 -1
  230. package/dist/client/assets/page-seo-sheet-DuoLgmct.js +0 -1
  231. package/dist/client/assets/project-app-view-CDidhZnk.js +0 -1
  232. package/dist/client/assets/record-editor-DuQ_qUix.js +0 -1
  233. package/dist/client/assets/redirect-editor-BA41Q069.js +0 -1
  234. package/dist/client/assets/registry-DGGS_vMC.js +0 -2
  235. package/dist/client/assets/settings-layout-CaWrgncu.js +0 -1
  236. package/dist/client/assets/store-registry-BQ2OieoE.js +0 -2
  237. package/dist/client/assets/useInfiniteQuery-BzJzWxWo.js +0 -1
  238. package/dist/client/assets/useSuspenseInfiniteQuery-B8Sdu2Zk.js +0 -1
@@ -84512,7 +84512,7 @@ ${$}`;h(N);return}if(E(null,y),t.strategy==="count"){if(w--,w===0)h()}if(t.strat
84512
84512
  `);function h(_){if(t===void 0)return!0;let v=oM(_),D=v&&oM(t)?Hmu(t):t,n=v?Hmu(_):Rmu(_),O=gCt(D,n);return O===""||!O.startsWith("..")&&!DCt(O)}return{upsert(_){f.run({$handle:_.handle,$status:_.status,$sandboxPath:_.sandboxPath,$port:_.port??null,$previewUrl:_.previewUrl??null,$repoCloneUrl:_.repoCloneUrl??null,$branch:_.branch??null,$projectName:_.projectName??null,$error:_.error??null,$now:Date.now()})},list(){return l.all().map(j1i)},reconcile(){let _=Date.now();for(let v of l.all().map(j1i)){if(!h(v.sandboxPath)){c.run({$handle:v.handle,$now:_});continue}if(!oM(v.sandboxPath)){E.run({$handle:v.handle,$now:_});continue}if(v.status==="spawning"||v.status==="ready"||v.status==="failed"||v.status==="missing")$.run({$handle:v.handle,$now:_})}return l.all().map(j1i)},prune(_){let v=[],D=[],n=this.reconcile();for(let O of n){if(!h(O.sandboxPath)){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(_.missing&&O.status==="missing"){w.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!_.merged||!oM(O.sandboxPath))continue;if(O.branch===null||O.branch.trim()===""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!O2(O.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let N=O2(O.sandboxPath,["status","--porcelain"]);if(!N.ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(N.stdout.trim()!==""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let y=Cmu(O.sandboxPath,O.branch);if(y===null){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!y){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}_Ct(O.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:v,skipped:D}},delete(_){w.run({$handle:_})},inspect(_){let v=d.get({$handle:_});if(v===null)return null;let D=j1i(v),n=0,O=null;if(oM(D.sandboxPath)&&O2(D.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let N=O2(D.sandboxPath,["status","--porcelain"]);if(N.ok){let y=N.stdout.trim();n=y===""?0:y.split(`
84513
84513
  `).length}if(D.branch!==null&&D.branch.trim()!=="")O=Cmu(D.sandboxPath,D.branch)}return{handle:D.handle,branch:D.branch,sandboxPath:D.sandboxPath,dirtyCount:n,merged:O}},close(){u.close()}}}var KRi=()=>{};function ZCt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function qmu(i,u){if(process.platform==="win32")return;for(let t of ZCt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var Vmu=()=>{};import{existsSync as TCt,readdirSync as BCt}from"fs";import{rm as FCt}from"fs/promises";import{join as rmu}from"path";async function mmu(i,u={}){let t=u.detach??UCt,f=u.exists??TCt,l=u.readdir??(($)=>BCt($)),c=u.rm??(($)=>FCt($,{recursive:!0,force:!0})),E=rmu(i,"org");if(f(E))for(let $ of l(E))t(rmu(E,$));await c(i)}var UCt=(i)=>qmu(i,process.platform==="darwin");var emu=g(()=>{Vmu()});import{join as PCt}from"path";function amu(i){let u=i.purge??mmu;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await Cl(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??PCt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof Wc?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var omu=g(()=>{y4();emu()});import{randomBytes as ACt}from"crypto";import{mkdir as ICt}from"fs/promises";import{createServer as xCt}from"net";import{join as kCt}from"path";function smu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function GCt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function pmu(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function SCt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function jCt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:SCt(i.repo?.cloneUrl)}}function ieu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??KCt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((n,O)=>`http://127.0.0.1:${O}`),E=(n)=>kCt(i.dataDir,"sandboxes",n),$=(n)=>{try{i.registry?.upsert(n)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${n.handle} status=${n.status}:`,O)}},w=(n)=>{try{i.onEvent?.(n)}catch{}},d=async(n)=>{let O=new AbortController,N=setTimeout(()=>O.abort(),1500);try{let y=await l(`${n}/health`,{signal:O.signal});if(!y.ok)console.warn(`[user-desktop] probe ${n}/health \u2192 ${y.status} (treating as dead)`);return y.ok}catch(y){return console.warn(`[user-desktop] probe ${n}/health failed: ${y instanceof Error?y.message:String(y)} (treating as dead)`),!1}finally{clearTimeout(N)}},h=(n)=>{console.warn(`[user-desktop] evicting dead daemon handle=${n.handle} port=${n.port}`);try{n.process.kill("SIGTERM")}catch{}if(t.get(n.handle)===n)t.delete(n.handle),$({handle:n.handle,status:"stopped",sandboxPath:E(n.handle),port:null,previewUrl:null,...n.registryMetadata,error:null}),w({handle:n.handle,phase:"evicted"})},_=new Map;function v(){if(t.size<u)return;let n=[...t.values()].filter((N)=>N.activeDispatchCount===0).sort((N,y)=>N.lastUsedAt-y.lastUsedAt);if(n.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let O=n[0];console.log(`[user-desktop] evicting LRU victim handle=${O.handle} port=${O.port} (cap ${u} reached, size=${t.size})`);try{O.process.kill("SIGTERM")}catch{}t.delete(O.handle),$({handle:O.handle,status:"stopped",sandboxPath:E(O.handle),port:null,previewUrl:null,...O.registryMetadata,error:null}),w({handle:O.handle,phase:"evicted"})}let D=async(n)=>{let O=jCt(n),N=E(n.handle);$({handle:n.handle,status:"spawning",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),w({handle:n.handle,phase:"spawning",sandboxPath:N,projectName:O.projectName,branch:O.branch}),v();let y,Z=null,T;try{await ICt(N,{recursive:!0}),console.log(`[user-desktop] ensure handle=${n.handle} repo=${n.repo?.cloneUrl??"(none)"} branch=${n.repo?.branch??"(none)"} runtime=${n.workload?.runtime??"(autodetect)"} pm=${n.workload?.packageManager??"(autodetect)"}`),T=ACt(24).toString("hex");let[G,I]=await Promise.all([f(),f()]);y=G,console.log(`[user-desktop] spawn handle=${n.handle} port=${y} devPort=${I} workdir=${N}`),Z=await Promise.resolve(i.spawnDaemon({workdir:N,handle:n.handle,port:y,daemonToken:T,offloadAllowedHosts:n.offloadAllowedHosts??[],offloadAllowSameHostDev:n.offloadAllowSameHostDev??!1,orgFsConfigJson:n.orgFsConfigJson}));try{await i.waitForHealth(y)}catch(k){throw smu("the sandbox didn't come online in time",k)}console.log(`[user-desktop] healthy handle=${n.handle} port=${y} \u2014 posting config`);try{await i.postConfig(y,I,{repo:n.repo,workload:n.workload,operator:n.operator},T)}catch(k){throw smu(GCt(k)?"configuration timed out":"the sandbox rejected its configuration",k)}}catch(G){if(console.error(`[user-desktop] sandbox bring-up failed handle=${n.handle} port=${y??"(none)"}${Z?" (killing daemon)":""}:`,G),Z)try{Z.kill("SIGKILL")}catch{}throw w({handle:n.handle,phase:"failed",error:pmu(G),sandboxPath:N,projectName:O.projectName,branch:O.branch}),$({handle:n.handle,status:"failed",sandboxPath:N,port:null,previewUrl:null,...O,error:pmu(G)}),G}if(!Z||y===void 0)throw Error("sandbox bring-up invariant violated");let B=`http://127.0.0.1:${y}`,F=c(n.handle,y);console.log(`[user-desktop] ready handle=${n.handle} port=${y} sandboxApiUrl=${B} previewUrl=${F}`);let A={handle:n.handle,port:y,process:Z,sandboxApiUrl:B,previewUrl:F,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:T,registryMetadata:O};if(t.set(n.handle,A),$({handle:n.handle,status:"ready",sandboxPath:N,port:y,previewUrl:F,...O,error:null}),w({handle:n.handle,phase:"ready",port:y,previewUrl:F,sandboxPath:N,projectName:O.projectName,branch:O.branch}),Z.exited)Z.exited.then(()=>{if(t.get(n.handle)===A)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${n.handle} port=${y} \u2014 removing from cache`),t.delete(n.handle),$({handle:n.handle,status:"stopped",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),w({handle:n.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${n.handle} port=${y} (already replaced/removed)`)});return{sandboxApiUrl:B,previewUrl:F,port:y}};return{async ensureSandbox(n){let O=t.get(n.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${n.handle} port=${O.port} (alive)`),O.lastUsedAt=Date.now(),{sandboxApiUrl:O.sandboxApiUrl,previewUrl:O.previewUrl,port:O.port};console.warn(`[user-desktop] cache stale handle=${n.handle} port=${O.port} \u2014 respawning`),h(O)}let N=_.get(n.handle);if(N)return console.log(`[user-desktop] joining in-flight ensure handle=${n.handle}`),N;let y=D(n).finally(()=>{_.delete(n.handle)});return _.set(n.handle,y),y},proxyPort(n){let O=t.get(n);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(n){return t.get(n)?.daemonToken??null},hasHandle(n){return t.has(n)||_.has(n)},recordHit(n){let O=t.get(n);if(O)O.lastUsedAt=Date.now()},acquireDispatch(n){let O=t.get(n);if(!O)return()=>{};O.activeDispatchCount+=1;let N=!1;return()=>{if(N)return;N=!0;let y=t.get(n);if(y)y.activeDispatchCount=Math.max(0,y.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(n){let O=t.get(n);if(!O){console.log(`[user-desktop] delete handle=${n} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${n} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${n} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(n),$({handle:n,status:"stopped",sandboxPath:E(n),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:n,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let n of t.values())try{n.process.kill("SIGTERM")}catch{}t.clear()}}}function KCt(){return new Promise((i,u)=>{let t=xCt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var ueu=()=>{};import{randomUUID as JCt}from"crypto";import{hostname as XCt}from"os";async function teu(i){let u=XCt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=Wbu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=J1i({path:K1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=ieu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(k,q)=>E>0?`http://${k}.localhost:${E}`:`http://127.0.0.1:${q}`,spawnDaemon:async(k)=>{let q={DAEMON_BOOT_ID:JCt(),APP_ROOT:k.workdir,PROXY_PORT:String(k.port),DAEMON_TOKEN:k.daemonToken,OFFLOAD_ALLOWED_HOSTS:k.offloadAllowedHosts.join(","),...k.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(k.orgFsConfigJson){let W=await Hbu(i.dataDir);if(W)q.ORGFS_CONFIG=k.orgFsConfigJson,q.ORGFS_RCLONE_PATH=W}let J=await t({workdir:k.workdir,env:q,daemonPort:k.port});return{port:k.port,kill:(W)=>J.kill(W),exited:J.exited.then(()=>{return})}},postConfig:async(k,q,J,W)=>{let r={port:q};if(J.workload)r.runtime=J.workload.runtime,r.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let Y={application:r},li=_h(J.operator??null);if(li)Y.operator=li;if(J.repo)Y.git={repository:{cloneUrl:J.repo.cloneUrl,branch:J.repo.branch},...J.repo.userName&&J.repo.userEmail?{identity:{userName:J.repo.userName,userEmail:J.repo.userEmail}}:{}};await c2(`http://127.0.0.1:${k}`,W,Y)},waitForHealth:async(k)=>{await Kli(`http://127.0.0.1:${k}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await kmu({port:i.port,lookupSandboxPort:(k)=>$.proxyPort(k)});E=w.port,console.log(`Local ingress listening on http://127.0.0.1:${w.port} (use http://<handle>.localhost:${w.port}/)`),i.monitor?.onIngress?.(w.port);let d=bbu({provider:$}),h=async()=>{let k=await l2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!k)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return k.accessToken},_=await Qmu(i.dataDir),v=process.env.npm_package_version??"0.0.0",D=await jRi(),n=Wmu(D,{onChange:(k)=>{console.log(`[link-daemon] capabilities detected: +${k.join(",")} (now: ${D.join(",")})`)}}),O=Zzi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let N=()=>{},y=new AbortController,Z={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:h,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:_,cliVersion:v,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>N(),runLifetimeSignal:y.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let T=await Omu(Z);console.log("[link-daemon] active transport=tunnel");let B,F=new Promise((k)=>{B=k}),A=!1,G=async()=>{if(A)return;A=!0,y.abort(),console.log(`
84514
84514
  Shutting down\u2026`),n();try{await T.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),B(0)};process.on("SIGINT",()=>void G()),process.on("SIGTERM",()=>void G()),N=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),G()},T.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!A)console.error("Cluster connection closed permanently; exiting."),G()});let I=amu({provider:$,registry:f,dataDir:i.dataDir});return{stopped:F,stop:G,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(E){throw c(),E}}var feu=g(()=>{vzi();TM();Ybu();Rbu();Cbu();Tzi();Nmu();Gmu();Ymu();zmu();ZM();KRi();omu();ueu()});function JRi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as LCt}from"net";async function YCt(i){for(let u of WCt)if(await XRi(i,u))return u;return null}async function leu(i,{intervalMs:u=1000}={}){for(;;){let t=await YCt(i);if(t)return t;await O0(u)}}function XRi(i,u){return new Promise((t)=>{let f=LCt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var WCt;var LRi=g(()=>{y4();WCt=["localhost","127.0.0.1","0.0.0.0"]});function ceu(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function QCt(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function Eeu(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${QCt(i,u)}`].join(`
84515
- `)}var WRi;var $eu=g(()=>{WRi=class WRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var oL;var X1i=g(()=>{oL={name:"decocms",version:"4.74.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var sM={};Xi(sM,{printBanner:()=>RCt,bannerLines:()=>weu,BANNER_LINES:()=>L1i,BANNER_GRADIENT:()=>W1i});function HCt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function weu(i){let u=L1i.map((t,f)=>{let[l,c,E]=HCt(W1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function RCt(i){console.log("");for(let u of weu(i))console.log(u);console.log("")}var L1i,W1i;var sL=g(()=>{L1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],W1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as bCt,Text as deu}from"ink";import{jsx as CCt,jsxs as heu}from"react/jsx-runtime";function Y1i({version:i}){return heu(bCt,{flexDirection:"column",marginTop:1,children:[L1i.map((u,t)=>CCt(deu,{color:W1i[t],children:u},t)),heu(deu,{dimColor:!0,children:[" v",i]})]})}var YRi=g(()=>{sL()});function _eu(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function pL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function veu(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Deu(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var RRi={};Xi(RRi,{subscribeLinkState:()=>QRi,setSelectedHandle:()=>zRi,setRemoving:()=>H1i,setPersistedSandboxes:()=>pCt,setPendingConfirm:()=>iq,setMachine:()=>eCt,setLogPath:()=>oCt,setLinkActions:()=>sCt,setIngress:()=>mCt,setDaemonError:()=>aCt,setClusterUrl:()=>rCt,setCluster:()=>VCt,setActionError:()=>z1i,resetLinkStateForTests:()=>uMt,removeSandboxRow:()=>HRi,pushSandboxEvent:()=>iMt,getLinkState:()=>pM,applySandboxEvent:()=>neu});function qCt(i){return i==="spawning"||i==="ready"||i==="failed"}function neu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function geu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:MCt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Q$(){for(let i of Q1i)i()}function pM(){return cf}function QRi(i){return Q1i.add(i),()=>Q1i.delete(i)}function VCt(i){cf={...cf,cluster:i},Q$()}function rCt(i){cf={...cf,clusterUrl:i},Q$()}function mCt(i,u){cf={...cf,ingressPort:i,ingressUrl:u},Q$()}function eCt(i){cf={...cf,machine:i},Q$()}function aCt(i){cf={...cf,daemonError:i},Q$()}function oCt(i){cf={...cf,logPath:i},Q$()}function zRi(i){cf={...cf,selectedHandle:i},Q$()}function iq(i){cf={...cf,pendingConfirm:i},Q$()}function z1i(i){cf={...cf,actionError:i},Q$()}function H1i(i,u){if(cf.removingHandles.has(i)===u)return;let t=new Set(cf.removingHandles);if(u)t.add(i);else t.delete(i);cf={...cf,removingHandles:t},Q$()}function sCt(i){cf={...cf,actions:i},Q$()}function HRi(i){let u=pL(cf.sandboxes),t=Deu(u,i,cf.selectedHandle),f=new Map(cf.sandboxes);f.delete(i);let l=new Set(cf.removingHandles);l.delete(i),cf={...cf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Q$()}function pCt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of cf.sandboxes)if(qCt(f.status))u.set(t,f);cf={...cf,sandboxes:u},Q$()}function iMt(i){cf={...cf,sandboxes:neu(cf.sandboxes,i)},Q$()}function uMt(){cf=geu(),Q1i.clear()}var MCt=20,cf,Q1i;var uq=g(()=>{cf=geu(),Q1i=new Set});import{spawn as tMt}from"child_process";function fMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Oeu(i,u=process.platform){let t=fMt(u);try{tMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Neu=()=>{};function yeu(i,u={}){let t=u.openUrl??Oeu,f=pM(),l=pL(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":zRi(veu(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let $=f.sandboxes.get(c);if($?.status==="ready"&&$.previewUrl)t($.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let $=E.inspectSandbox(c),w=f.sandboxes.get(c);z1i(null),iq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(iq(null),$===null||!E)return;H1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)HRi($.handle);else H1i($.handle,!1),z1i(w.error)});return}case"confirmNo":iq(null);return;case"quit":if(E)E.quit();return}}var Zeu=g(()=>{uq();Neu()});function Teu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var Beu={};Xi(Beu,{LinkApp:()=>$Mt});import{Box as ql,Text as _1,useInput as lMt}from"ink";import{useSyncExternalStore as cMt}from"react";import{jsx as Gf,jsxs as Fh}from"react/jsx-runtime";function EMt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function $Mt(){let i=cMt(QRi,pM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=pL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return lMt((l,c)=>{let E=Teu(l,c,i.pendingConfirm!==null);if(E!==null)yeu(E)}),Fh(ql,{flexDirection:"column",children:[Gf(Y1i,{version:oL.version}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),Gf(ql,{children:i.cluster==="linked"?Fh(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Fh(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Fh(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Gf(ql,{children:i.ingressUrl?Fh(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Gf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Gf(_1,{dimColor:!0,children:"No previews running yet."}):Fh(ql,{flexDirection:"column",children:[Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0}),Gf(ql,{width:iW.project,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Gf(ql,{width:iW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Gf(ql,{width:iW.status,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=EMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0,children:Gf(_1,{color:"cyan",children:E?"\u203A":" "})}),Gf(ql,{width:iW.project,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),Gf(ql,{width:iW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),Gf(ql,{width:iW.status,flexShrink:0,marginRight:1,children:Gf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Gf(ql,{marginTop:1,children:Fh(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Gf(ql,{marginTop:1,children:Gf(_1,{color:"yellow",children:_eu(i.pendingConfirm)})}):null,i.actionError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,Gf(ql,{marginTop:1,children:Gf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var iW;var Feu=g(()=>{X1i();YRi();Zeu();uq();iW={project:18,branch:22,status:14}});var Ueu={};Xi(Ueu,{runLinkCommand:()=>gMt});import{closeSync as wMt,mkdirSync as dMt,openSync as hMt,writeSync as _Mt}from"fs";import{homedir as vMt}from"os";import{join as bRi}from"path";function DMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{_Mt(u,`${JRi(l)}
84515
+ `)}var WRi;var $eu=g(()=>{WRi=class WRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var oL;var X1i=g(()=>{oL={name:"decocms",version:"4.74.10",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var sM={};Xi(sM,{printBanner:()=>RCt,bannerLines:()=>weu,BANNER_LINES:()=>L1i,BANNER_GRADIENT:()=>W1i});function HCt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function weu(i){let u=L1i.map((t,f)=>{let[l,c,E]=HCt(W1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function RCt(i){console.log("");for(let u of weu(i))console.log(u);console.log("")}var L1i,W1i;var sL=g(()=>{L1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],W1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as bCt,Text as deu}from"ink";import{jsx as CCt,jsxs as heu}from"react/jsx-runtime";function Y1i({version:i}){return heu(bCt,{flexDirection:"column",marginTop:1,children:[L1i.map((u,t)=>CCt(deu,{color:W1i[t],children:u},t)),heu(deu,{dimColor:!0,children:[" v",i]})]})}var YRi=g(()=>{sL()});function _eu(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function pL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function veu(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Deu(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var RRi={};Xi(RRi,{subscribeLinkState:()=>QRi,setSelectedHandle:()=>zRi,setRemoving:()=>H1i,setPersistedSandboxes:()=>pCt,setPendingConfirm:()=>iq,setMachine:()=>eCt,setLogPath:()=>oCt,setLinkActions:()=>sCt,setIngress:()=>mCt,setDaemonError:()=>aCt,setClusterUrl:()=>rCt,setCluster:()=>VCt,setActionError:()=>z1i,resetLinkStateForTests:()=>uMt,removeSandboxRow:()=>HRi,pushSandboxEvent:()=>iMt,getLinkState:()=>pM,applySandboxEvent:()=>neu});function qCt(i){return i==="spawning"||i==="ready"||i==="failed"}function neu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function geu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:MCt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Q$(){for(let i of Q1i)i()}function pM(){return cf}function QRi(i){return Q1i.add(i),()=>Q1i.delete(i)}function VCt(i){cf={...cf,cluster:i},Q$()}function rCt(i){cf={...cf,clusterUrl:i},Q$()}function mCt(i,u){cf={...cf,ingressPort:i,ingressUrl:u},Q$()}function eCt(i){cf={...cf,machine:i},Q$()}function aCt(i){cf={...cf,daemonError:i},Q$()}function oCt(i){cf={...cf,logPath:i},Q$()}function zRi(i){cf={...cf,selectedHandle:i},Q$()}function iq(i){cf={...cf,pendingConfirm:i},Q$()}function z1i(i){cf={...cf,actionError:i},Q$()}function H1i(i,u){if(cf.removingHandles.has(i)===u)return;let t=new Set(cf.removingHandles);if(u)t.add(i);else t.delete(i);cf={...cf,removingHandles:t},Q$()}function sCt(i){cf={...cf,actions:i},Q$()}function HRi(i){let u=pL(cf.sandboxes),t=Deu(u,i,cf.selectedHandle),f=new Map(cf.sandboxes);f.delete(i);let l=new Set(cf.removingHandles);l.delete(i),cf={...cf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Q$()}function pCt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of cf.sandboxes)if(qCt(f.status))u.set(t,f);cf={...cf,sandboxes:u},Q$()}function iMt(i){cf={...cf,sandboxes:neu(cf.sandboxes,i)},Q$()}function uMt(){cf=geu(),Q1i.clear()}var MCt=20,cf,Q1i;var uq=g(()=>{cf=geu(),Q1i=new Set});import{spawn as tMt}from"child_process";function fMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Oeu(i,u=process.platform){let t=fMt(u);try{tMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Neu=()=>{};function yeu(i,u={}){let t=u.openUrl??Oeu,f=pM(),l=pL(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":zRi(veu(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let $=f.sandboxes.get(c);if($?.status==="ready"&&$.previewUrl)t($.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let $=E.inspectSandbox(c),w=f.sandboxes.get(c);z1i(null),iq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(iq(null),$===null||!E)return;H1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)HRi($.handle);else H1i($.handle,!1),z1i(w.error)});return}case"confirmNo":iq(null);return;case"quit":if(E)E.quit();return}}var Zeu=g(()=>{uq();Neu()});function Teu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var Beu={};Xi(Beu,{LinkApp:()=>$Mt});import{Box as ql,Text as _1,useInput as lMt}from"ink";import{useSyncExternalStore as cMt}from"react";import{jsx as Gf,jsxs as Fh}from"react/jsx-runtime";function EMt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function $Mt(){let i=cMt(QRi,pM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=pL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return lMt((l,c)=>{let E=Teu(l,c,i.pendingConfirm!==null);if(E!==null)yeu(E)}),Fh(ql,{flexDirection:"column",children:[Gf(Y1i,{version:oL.version}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),Gf(ql,{children:i.cluster==="linked"?Fh(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Fh(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Fh(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Gf(ql,{children:i.ingressUrl?Fh(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Gf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Gf(_1,{dimColor:!0,children:"No previews running yet."}):Fh(ql,{flexDirection:"column",children:[Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0}),Gf(ql,{width:iW.project,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Gf(ql,{width:iW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Gf(ql,{width:iW.status,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=EMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0,children:Gf(_1,{color:"cyan",children:E?"\u203A":" "})}),Gf(ql,{width:iW.project,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),Gf(ql,{width:iW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),Gf(ql,{width:iW.status,flexShrink:0,marginRight:1,children:Gf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Gf(ql,{marginTop:1,children:Fh(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Gf(ql,{marginTop:1,children:Gf(_1,{color:"yellow",children:_eu(i.pendingConfirm)})}):null,i.actionError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,Gf(ql,{marginTop:1,children:Gf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var iW;var Feu=g(()=>{X1i();YRi();Zeu();uq();iW={project:18,branch:22,status:14}});var Ueu={};Xi(Ueu,{runLinkCommand:()=>gMt});import{closeSync as wMt,mkdirSync as dMt,openSync as hMt,writeSync as _Mt}from"fs";import{homedir as vMt}from"os";import{join as bRi}from"path";function DMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{_Mt(u,`${JRi(l)}
84516
84516
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(JRi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function nMt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function gMt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??bRi(vMt(),"deco"),f=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,c,E,$=()=>{if(E===void 0)return;try{E.close()}catch{}finally{E=void 0}};try{if(await XRi(u,"127.0.0.1"))throw new WRi(u);let w=bRi(t,"sandboxes");E=J1i({path:K1i(t),managedSandboxRoot:w});let d=await kli({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await nMt(f,d.accessToken);let h=E.reconcile();if(i.prune){let n=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${n.removed.length}, skipped ${n.skipped.length}.`);h=E.reconcile()}let _;if(i.tui){let{render:n}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:N}=await Promise.resolve().then(() => (Feu(),Beu)),{pushSandboxEvent:y,setCluster:Z,setClusterUrl:T,setDaemonError:B,setIngress:F,setLogPath:A,setMachine:G,setPersistedSandboxes:I}=await Promise.resolve().then(() => (uq(),RRi));dMt(t,{recursive:!0});let k=bRi(t,"link.log");c=hMt(k,"w"),A(k),I(h),T(f),Z("connecting"),_={onEvent:(q)=>y(q),onIngress:(q)=>F(q,`http://127.0.0.1:${q}`),onCluster:(q)=>Z(q),onMachine:(q)=>G(q)},l=DMt(B,c),n(O(N),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:n}=await Promise.resolve().then(() => (sL(),sM));n(i.version??"0.0.0")}$();let v=process.env.DECOCMS_LINK_MANAGED!=="1",D=await teu({port:u,clusterBaseUrl:f,dataDir:t,session:d,monitor:_,logFd:c,perSandboxLogs:v,hotReload:i.hotReload});if(i.tui){let{setLinkActions:n}=await Promise.resolve().then(() => (uq(),RRi));n({stopSandbox:D.stopSandbox,removeSandbox:D.removeSandbox,inspectSandbox:D.inspectSandbox,quit:D.stop})}return await D.stopped}catch(w){return l?.(),console.error(ceu(w)?Eeu(u):w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{wMt(c)}catch{}$()}}var Peu=g(()=>{_zi();feu();LRi();$eu();KRi()});var mRi={};Xi(mRi,{resolveDevLinkClusterUrl:()=>ZMt,populateDevLinkToxiProxy:()=>Seu,isDevLinkToxiProxyEnabled:()=>yMt,ensureDevLinkToxiProxy:()=>PMt,buildDevLinkToxiProxyConfig:()=>keu,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>Ieu,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>xeu});function yMt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function CRi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function keu(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=CRi(i.apiPort,"apiPort"),f=CRi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=CRi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:Ieu,proxyName:xeu,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:c,clusterUrl:E,logLine:`[dev-link-toxiproxy] ready: ${E} -> ${c}`}}function ZMt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function MRi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function rRi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Geu(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Geu(i.cause)}async function qRi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${rRi(l)}`,{cause:l})}}async function Seu(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await qRi(u,"reset",t,{method:"POST"});await MRi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await qRi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await MRi(c,"populate",l)}async function TMt(i,u){let t=`${i.apiUrl}/version`;try{await Cl(async()=>{let f=await qRi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(NMt)});await MRi(f,"readiness check",t)},{maxAttempts:OMt,minTimeout:Aeu,maxTimeout:Aeu,multiplier:1,jitter:0,isRetriable:(f)=>!Geu(f)})}catch(f){let l=f instanceof Wc?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${rRi(l)}`,{cause:l})}}async function BMt(i){if(i===null)return"";return await new Response(i).text()}async function VRi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch($){throw Error(`Docker command failed to start (${t}): ${rRi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,BMt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let E=c.trim().length>0?`: ${c.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${E}`)}async function FMt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await VRi(["rm","-f",t],{ignoreFailure:!0}),await VRi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function UMt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await VRi(["rm","-f",t],{ignoreFailure:!0})}async function PMt(i){let u=keu(i),t=i.startDaemon??FMt,f=i.stopDaemon??(i.startDaemon===void 0?UMt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await TMt(u,l),await Seu(u,l)}catch(c){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw c}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var Ieu="ToxiProxy",xeu="dev_link_studio",OMt=20,Aeu=100,NMt=100;var eRi=g(()=>{y4()});var jeu={};Xi(jeu,{migrateBetterAuth:()=>aRi});import{getMigrations as AMt}from"better-auth/db";import{sso as IMt}from"@better-auth/sso";import{organization as xMt}from"@decocms/better-auth/plugins";import{admin as kMt,apiKey as GMt,jwt as SMt,magicLink as jMt,mcp as KMt,openAPI as JMt}from"better-auth/plugins";import{emailOTP as XMt}from"better-auth/plugins/email-otp";async function aRi(i){let t={database:DM(i||i2()),plugins:[xMt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),kMt(),GMt(),SMt(),JMt(),KMt({loginPage:"/login"}),IMt(),jMt({sendMagicLink:async()=>{}}),XMt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await AMt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var oRi=g(()=>{lE()});var sRi={};Xi(sRi,{up:()=>LMt,down:()=>WMt});import{sql as $v}from"kysely";async function LMt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function WMt(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var Keu=()=>{};var pRi={};Xi(pRi,{up:()=>YMt,down:()=>QMt});import{sql as Jeu}from"kysely";async function YMt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Jeu`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Jeu`CURRENT_TIMESTAMP`)).execute()}async function QMt(i){await i.schema.dropTable("organization_settings").execute()}var Xeu=()=>{};var ibi={};Xi(ibi,{up:()=>zMt,down:()=>HMt});async function zMt(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function HMt(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var ubi={};Xi(ubi,{up:()=>RMt,down:()=>bMt});async function RMt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function bMt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var tbi={};Xi(tbi,{up:()=>CMt,down:()=>MMt});async function CMt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function MMt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var fbi={};Xi(fbi,{up:()=>VMt,down:()=>rMt});import{sql as qMt}from"kysely";async function VMt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",qMt`text`).execute()}async function rMt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Leu=()=>{};var lbi={};Xi(lbi,{up:()=>mMt,down:()=>eMt});async function mMt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function eMt(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var cbi={};Xi(cbi,{up:()=>aMt,down:()=>oMt});import{sql as tq}from"kysely";async function aMt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(tq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(tq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(tq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(tq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(tq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function oMt(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var Weu=()=>{};var Ebi={};Xi(Ebi,{up:()=>pMt,down:()=>iqt});import{sql as sMt}from"kysely";async function pMt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function iqt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(sMt`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var Yeu=()=>{};var $bi={};Xi($bi,{up:()=>uqt,down:()=>tqt});import{sql as R1i}from"kysely";async function uqt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(R1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(R1i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(R1i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await R1i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function tqt(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var Qeu=()=>{};var wbi={};Xi(wbi,{up:()=>fqt,down:()=>lqt});async function fqt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function lqt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var dbi={};Xi(dbi,{up:()=>cqt,down:()=>Eqt});import{sql as b1i}from"kysely";async function cqt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await b1i`
84517
84517
  UPDATE gateways
84518
84518
  SET tool_selection_mode = CASE
@@ -86464,7 +86464,7 @@ Keep both indexes concise \u2014 a curated list of durable facts and one-line po
86464
86464
  - \`org/public/<set>/\` \u2014 curated read-only skill sets, mounted here. Your skills are listed in the <available-skills> catalog; load one with the \`skill\` tool before applying it.
86465
86465
  - \`org/upload/\` \u2014 files the user attached to this conversation are already here; read them directly (no copy step needed).
86466
86466
  - \`org/output/\` \u2014 write final deliverables here; they are shared back to the organization under this run's folder.
86467
- </organization-filesystem>`}var W7=g(()=>{Ey();Jm()});function fpi(i){let u=new Map;for(let f of i){let l=u.get(f.message_id);if(l)l.push(f);else u.set(f.message_id,[f])}let t=[];for(let[f,l]of u){let c=[...l].sort(($,w)=>$.seq-w.seq),E=c[0];t.push({id:f,role:E.role,parts:c.filter(($)=>$.kind!=="finish").map(($)=>$.payload&&typeof $.payload==="object"&&!Array.isArray($.payload)?{...$.payload,created_at:$.created_at}:$.payload),created_at:E.created_at,status:c.some(($)=>$.kind==="finish")?"complete":"in_progress",metadata:c.find(($)=>$.kind==="finish")?.metadata??null})}return t.sort((f,l)=>f.created_at<l.created_at?-1:f.created_at>l.created_at?1:0),t}function T9f(i,u){let t=0,f=0,l=[i];while(l.length>0){if(t>u||++f>y9f)return 1/0;let c=l.pop();if(typeof c==="string")t+=c.length;else if(Array.isArray(c))for(let E of c)l.push(E);else if(c!==null&&typeof c==="object")for(let E of Object.values(c))l.push(E)}return t}function n50(i){if(T9f(i,D50)>D50)return JSON.stringify({truncated:!0,reason:"payload exceeds max stored size"});return JSON.stringify(i)}class lpi{db;constructor(i){this.db=i}async serializeParts(i){let u=new Set,t=[],f=new Map;for(let l=0;l<i.length;l++){let c=i[l];if(u.has(c.id))continue;if(u.add(c.id),f.set(c.id,c),t.push({id:c.id,seq:c.seq,org_id:c.org_id,thread_id:c.thread_id,run_id:c.run_id,message_id:c.message_id,role:c.role,kind:c.kind,payload:n50(c.payload),payload_ref:c.payload_ref??null,metadata:c.metadata!=null?n50(c.metadata):null,created_at:c.created_at}),(l+1)%Z9f===0)await O0(0)}return{rows:t,partsById:f}}async appendParts(i){if(i.length===0)return[];let{rows:u,partsById:t}=await this.serializeParts(i);return(await this.db.insertInto("thread_message_parts").values(u).onConflict((l)=>l.column("id").doNothing()).returning("id").execute()).map((l)=>t.get(l.id)).filter((l)=>l!==void 0)}async replaceMessageParts(i,u,t){let{rows:f}=await this.serializeParts(t);return await this.db.transaction().execute(async(l)=>{let c=await l.selectFrom("thread_message_parts").select((w)=>w.fn.min("created_at").as("created_at")).where("thread_id","=",i).where("message_id","=",u).executeTakeFirst(),E=c?.created_at!=null?new Date(c.created_at).getTime():null,$=E!=null&&Number.isFinite(E)?f.map((w)=>({...w,created_at:new Date(E+w.seq).toISOString()})):f;if(await l.deleteFrom("thread_message_parts").where("thread_id","=",i).where("message_id","=",u).execute(),$.length>0)await l.insertInto("thread_message_parts").values($).execute()}),t}async deleteMessageParts(i,u){await this.db.deleteFrom("thread_message_parts").where("thread_id","=",i).where("message_id","=",u).execute()}async maxCreatedAtMsForRun(i){let u=await this.db.selectFrom("thread_message_parts").select((f)=>f.fn.max("created_at").as("max")).where("run_id","=",i).executeTakeFirst();if(!u?.max)return null;let t=new Date(u.max).getTime();return Number.isFinite(t)?t:null}async maxCreatedAtMsForMessage(i,u){let t=await this.db.selectFrom("thread_message_parts").select((l)=>l.fn.max("created_at").as("max")).where("run_id","=",i).where("message_id","=",u).executeTakeFirst();if(!t?.max)return null;let f=new Date(t.max).getTime();return Number.isFinite(f)?f:null}async loadWindow(i,u){let t=await this.db.selectFrom("thread_message_parts").select(["message_id"]).where("thread_id","=",i).where("kind","=","finish").orderBy("created_at","desc").orderBy("id","desc").limit(u.limit).offset(u.offset??0).execute(),f=await this.db.selectFrom("thread_message_parts").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",i).where("kind","=","finish").executeTakeFirst(),l=Number(f?.count??0),c=t.map(($)=>$.message_id);if(c.length===0)return{messages:[],total:l};let E=await this.db.selectFrom("thread_message_parts").selectAll().where("thread_id","=",i).where("message_id","in",c).orderBy("seq","asc").execute();return{messages:fpi(E),total:l}}async backfillFromMessages(i,u){let t=[],f=0;for(let l of i)t.push({id:`${u.runId}:${l.id}:content`,seq:f++,org_id:u.orgId,thread_id:u.threadId,run_id:u.runId,message_id:l.id,role:l.role,kind:"text",payload:l.parts,payload_ref:null,metadata:l.metadata??null,created_at:l.created_at}),t.push({id:`${u.runId}:${l.id}:finish`,seq:f++,org_id:u.orgId,thread_id:u.threadId,run_id:u.runId,message_id:l.id,role:l.role,kind:"finish",payload:{},payload_ref:null,metadata:null,created_at:l.created_at});await this.appendParts(t)}}var D50=50000000,y9f=1e5,Z9f=25;var g50=g(()=>{y4()});import{sql as O50}from"kysely";function IQ(i){return typeof i==="string"?i:i.toISOString()}class cpi{inner;organizationId;constructor(i,u){this.inner=i;this.organizationId=u}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}setOrganizationId(i){this.organizationId=i}getOrganizationId(){return this.organizationId}create(i){let u=this.requireOrg();return this.inner.create({...i,organization_id:u})}get(i){return this.inner.get(i,this.requireOrg())}update(i,u){return this.inner.update(i,this.requireOrg(),u)}completeRunIfNotCompleted(i){return this.inner.completeRunIfNotCompleted(i,this.requireOrg())}markRunFailed(i,u,t){return this.inner.markRunFailed(i,this.requireOrg(),u,t)}requiresActionIfInProgress(i){return this.inner.requiresActionIfInProgress(i,this.requireOrg())}forceFailIfInProgress(i){return this.inner.forceFailIfInProgress(i,this.requireOrg())}delete(i){return this.inner.delete(i,this.requireOrg())}list(i,u){return this.inner.list(this.requireOrg(),i,u)}listByTriggerIds(i,u){return this.inner.listByTriggerIds(this.requireOrg(),i,u)}findLastUsedByVirtualMcpIds(i){return this.inner.findLastUsedByVirtualMcpIds(this.requireOrg(),i)}bumpProgress(i){return this.inner.bumpProgress(i,this.requireOrg())}getProgress(i){return this.inner.getProgress(i,this.requireOrg())}listMessages(i,u){return this.inner.listMessages(i,this.requireOrg(),u)}listWithLastMessage(i){return this.inner.listWithLastMessage(this.requireOrg(),i)}messageParts(){return this.inner.messageParts()}getRunFence(i){return this.inner.getRunFence(i)}setRunFence(i,u){return this.inner.setRunFence(i,u)}setCancelRequested(i,u){return this.inner.setCancelRequested(i,u)}getCancelRequestedAt(i){return this.inner.getCancelRequestedAt(i)}clearCancelRequested(i){return this.inner.clearCancelRequested(i)}bumpAckedSeq(i,u,t){return this.inner.bumpAckedSeq(i,this.requireOrg(),u,t)}getAckedSeq(i){return this.inner.getAckedSeq(i,this.requireOrg())}}class xQ{db;constructor(i){this.db=i}messageParts(){return new lpi(this.db)}async create(i){let u=i.id??Jf("thrd"),t=new Date().toISOString();if(!i.organization_id)throw Error("organization_id is required");if(!i.created_by)throw Error("created_by is required");if(!i.title)i.title=l8;let f={id:u,organization_id:i.organization_id,title:i.title,description:i.description??null,status:i.status??"completed",trigger_id:i.trigger_id??null,virtual_mcp_id:i.virtual_mcp_id??"",branch:i.branch??null,sandbox_provider_kind:null,harness_id:null,created_at:t,updated_at:t,created_by:i.created_by,updated_by:i.updated_by??null,...i.message_storage_version!==void 0?{message_storage_version:i.message_storage_version}:{},...i.metadata!==void 0?{metadata:JSON.stringify(i.metadata)}:{}},l=await this.db.insertInto("threads").values(f).onConflict((E)=>E.column("id").doNothing()).returningAll().executeTakeFirst();if(l)return this.threadFromDbRow(l);let c=await this.db.selectFrom("threads").selectAll().where("id","=",u).where("organization_id","=",i.organization_id).executeTakeFirstOrThrow();return this.threadFromDbRow(c)}async get(i,u){let t=await this.db.selectFrom("threads").selectAll().where("id","=",i).where("organization_id","=",u).executeTakeFirst();return t?this.threadFromDbRow(t):null}async update(i,u,t){let l={updated_at:new Date().toISOString()};if(t.title!==void 0)l.title=t.title;if(t.description!==void 0)l.description=t.description;if(t.updated_by!==void 0)l.updated_by=t.updated_by;if(t.hidden!==void 0)l.hidden=t.hidden;if(t.status!==void 0)l.status=t.status;if(t.context_start_message_id!==void 0)l.context_start_message_id=t.context_start_message_id;if(t.run_owner_pod!==void 0)l.run_owner_pod=t.run_owner_pod;if(t.run_config!==void 0)l.run_config=t.run_config?JSON.stringify(t.run_config):null;if(t.run_started_at!==void 0)l.run_started_at=t.run_started_at;if(t.last_progress_at!==void 0)l.last_progress_at=t.last_progress_at;if(t.failure_reason!==void 0)l.failure_reason=t.failure_reason;if(t.failure_kind!==void 0)l.failure_kind=t.failure_kind;if(t.metadata!==void 0)l.metadata=JSON.stringify(t.metadata);if(t.branch!==void 0)l.branch=t.branch;if(t.virtual_mcp_id!==void 0)l.virtual_mcp_id=t.virtual_mcp_id;if(t.sandbox_provider_kind!==void 0)l.sandbox_provider_kind=t.sandbox_provider_kind;if(t.harness_id!==void 0)l.harness_id=t.harness_id;if(t.message_storage_version!==void 0)l.message_storage_version=t.message_storage_version;await this.db.updateTable("threads").set(l).where("id","=",i).where("organization_id","=",u).execute();let c=await this.get(i,u);if(!c)throw Error("Thread not found after update");return c}async completeRunIfNotCompleted(i,u){let f=(await this.db.updateTable("threads").set({status:"completed",run_owner_pod:null,run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").returningAll().execute())[0];return f?this.threadFromDbRow(f):null}async markRunFailed(i,u,t,f){let c=(await this.db.updateTable("threads").set({status:"failed",failure_reason:t,failure_kind:f,run_owner_pod:null,run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").returningAll().execute())[0];return c?this.threadFromDbRow(c):null}async requiresActionIfInProgress(i,u){let f=(await this.db.updateTable("threads").set({status:"requires_action",run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").returningAll().execute())[0];return f?this.threadFromDbRow(f):null}async forceFailIfInProgress(i,u){let t=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:t}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(i,u){await this.db.deleteFrom("threads").where("id","=",i).where("organization_id","=",u).execute()}async list(i,u,t){let f=t?.includeArchived===!0,l=this.db.selectFrom("threads").selectAll().where("organization_id","=",i).where("hidden","=",f).orderBy("updated_at","desc");if(u)l=l.where("created_by","=",u);let c=t?.virtualMcpId??t?.agentId;if(c)l=l.where("virtual_mcp_id","=",c);if(t?.hasTrigger===!0)l=l.where("trigger_id","is not",null);else if(t?.hasTrigger===!1)l=l.where("trigger_id","is",null);if(t?.startDate)l=l.where("updated_at",">=",t.startDate);if(t?.endDate)l=l.where("updated_at","<=",t.endDate);if(t?.search)l=l.where("title","ilike",`%${t.search}%`);if(t?.status)l=l.where("status","=",t.status);let E=this.db.selectFrom("threads").select((d)=>d.fn.count("id").as("count")).where("organization_id","=",i).where("hidden","=",f);if(u)E=E.where("created_by","=",u);if(c)E=E.where("virtual_mcp_id","=",c);if(t?.hasTrigger===!0)E=E.where("trigger_id","is not",null);else if(t?.hasTrigger===!1)E=E.where("trigger_id","is",null);if(t?.startDate)E=E.where("updated_at",">=",t.startDate);if(t?.endDate)E=E.where("updated_at","<=",t.endDate);if(t?.search)E=E.where("title","ilike",`%${t.search}%`);if(t?.status)E=E.where("status","=",t.status);if(t?.limit)l=l.limit(t.limit);if(t?.offset)l=l.offset(t.offset);let[$,w]=await Promise.all([l.execute(),E.executeTakeFirst()]);return{threads:$.map((d)=>this.threadFromDbRow(d)),total:Number(w?.count||0)}}async listByTriggerIds(i,u,t){if(u.length===0)return{threads:[],total:0};let f=this.db.selectFrom("threads").selectAll().where("organization_id","=",i).where("hidden","=",!1).where("trigger_id","in",u).orderBy("updated_at","desc"),l=this.db.selectFrom("threads").select(($)=>$.fn.count("id").as("count")).where("organization_id","=",i).where("hidden","=",!1).where("trigger_id","in",u);if(t?.limit)f=f.limit(t.limit);if(t?.offset)f=f.offset(t.offset);let[c,E]=await Promise.all([f.execute(),l.executeTakeFirst()]);return{threads:c.map(($)=>this.threadFromDbRow($)),total:Number(E?.count||0)}}async findLastUsedByVirtualMcpIds(i,u){let t=new Map;if(u.length===0)return t;let f=await this.db.selectFrom("threads").distinctOn("virtual_mcp_id").select(["virtual_mcp_id","created_by","created_at"]).where("organization_id","=",i).where("virtual_mcp_id","in",u).orderBy("virtual_mcp_id").orderBy("created_at","desc").execute();for(let l of f)t.set(l.virtual_mcp_id,{last_used_at:IQ(l.created_at),last_used_by:l.created_by});return t}async listWithLastMessage(i,u){let t=this.db.selectFrom("threads as t").innerJoinLateral((l)=>l.selectFrom("thread_messages as m").selectAll().whereRef("m.thread_id","=","t.id").orderBy("m.created_at","desc").orderBy("m.id","desc").limit(1).as("lm"),(l)=>l.onTrue()).selectAll("t").select(["lm.id as lm_id","lm.thread_id as lm_thread_id","lm.metadata as lm_metadata","lm.parts as lm_parts","lm.role as lm_role","lm.created_at as lm_created_at","lm.updated_at as lm_updated_at"]).where("t.organization_id","=",i).where("t.hidden","=",!1).where("lm.role","=",u.lastMessageRole).orderBy("lm.created_at","desc").limit(u.limit);if(u.createdBy)t=t.where("t.created_by","=",u.createdBy);return(await t.execute()).map((l)=>({thread:this.threadFromDbRow(l),lastMessage:this.messageFromDbRow({id:l.lm_id,thread_id:l.lm_thread_id,metadata:l.lm_metadata,parts:l.lm_parts,role:l.lm_role,created_at:l.lm_created_at,updated_at:l.lm_updated_at})}))}async listMessages(i,u,t){if(!await this.get(i,u))return{messages:[],total:0};let l=t?.sort??"asc",c=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",i).orderBy("created_at",l).orderBy("id",l),E=this.db.selectFrom("thread_messages").select((d)=>d.fn.count("id").as("count")).where("thread_id","=",i);if(t?.limit)c=c.limit(t.limit);if(t?.offset)c=c.offset(t.offset);let[$,w]=await Promise.all([c.execute(),E.executeTakeFirst()]);return{messages:$.map((d)=>this.messageFromDbRow(d)),total:Number(w?.count||0)}}async bumpProgress(i,u){await this.db.updateTable("threads").set({last_progress_at:O50`now()`}).where("id","=",i).where("organization_id","=",u).execute()}async getProgress(i,u){let t=await this.db.selectFrom("threads").select(["last_progress_at","run_started_at"]).where("id","=",i).where("organization_id","=",u).executeTakeFirst();if(!t)return null;let f=(l)=>{if(l==null)return null;let c=(l instanceof Date?l:new Date(l)).getTime();return Number.isNaN(c)?null:c};return{lastProgressAt:f(t.last_progress_at),runStartedAt:f(t.run_started_at)}}async getRunFence(i){return(await this.db.selectFrom("threads").select("run_fence_token").where("id","=",i).executeTakeFirst())?.run_fence_token??null}async setRunFence(i,u){await this.db.updateTable("threads").set(u===null?{run_fence_token:null,run_acked_seq:null}:{run_fence_token:u,run_acked_seq:null,status:"in_progress"}).where("id","=",i).execute()}async setCancelRequested(i,u){await this.db.updateTable("threads").set({cancel_requested_at:O50`now()`}).where("id","=",i).where("organization_id","=",u).execute()}async getCancelRequestedAt(i){let t=(await this.db.selectFrom("threads").select("cancel_requested_at").where("id","=",i).executeTakeFirst())?.cancel_requested_at;if(t==null)return null;return t instanceof Date?t:new Date(t)}async clearCancelRequested(i){await this.db.updateTable("threads").set({cancel_requested_at:null}).where("id","=",i).execute()}async bumpAckedSeq(i,u,t,f){await this.db.updateTable("threads").set({run_acked_seq:f}).where("id","=",i).where("organization_id","=",u).where((l)=>l.or([l("run_acked_seq","is",null),l("run_acked_seq","<",f)])).execute()}async getAckedSeq(i,u){return(await this.db.selectFrom("threads").select("run_acked_seq").where("id","=",i).where("organization_id","=",u).executeTakeFirst())?.run_acked_seq??0}threadFromDbRow(i){let u={};if(i.metadata!=null)if(typeof i.metadata==="string")try{u=JSON.parse(i.metadata)}catch(t){console.error(`Failed to parse metadata for thread ${i.id}:`,i.metadata,t)}else u=i.metadata;return{id:i.id,organization_id:i.organization_id,title:i.title,description:i.description,status:i.status,trigger_id:i.trigger_id??null,context_start_message_id:i.context_start_message_id??null,run_owner_pod:i.run_owner_pod??null,run_config:i.run_config??null,run_started_at:i.run_started_at?IQ(i.run_started_at):null,virtual_mcp_id:i.virtual_mcp_id??"",branch:i.branch??null,sandbox_provider_kind:i.sandbox_provider_kind??null,harness_id:i.harness_id??null,metadata:u,created_at:IQ(i.created_at),updated_at:IQ(i.updated_at),created_by:i.created_by,updated_by:i.updated_by??void 0,hidden:!!i.hidden,message_storage_version:i.message_storage_version??1,link_transport:i.link_transport??null}}messageFromDbRow(i){let u,t;try{u=i.metadata?JSON.parse(i.metadata):void 0}catch(f){console.error(`Failed to parse metadata for message ${i.id}:`,i.metadata,f),u=void 0}try{t=typeof i.parts==="string"?JSON.parse(i.parts):i.parts}catch(f){console.error(`Failed to parse parts for message ${i.id}:`,i.parts,f),t=[]}return{id:i.id,thread_id:i.thread_id,metadata:u,parts:t,role:i.role,created_at:IQ(i.created_at),updated_at:IQ(i.updated_at)}}}var Epi=g(()=>{c$();W7();g50()});import{sql as $pi}from"kysely";function Swi(i){if(i==null)return null;return typeof i==="string"?i:i.toISOString()}function jwi(i){return`msg_async_stub_${i}`}async function wpi(i,u){await i.deleteFrom("thread_messages").where("id","=",jwi(u)).execute(),await i.deleteFrom("thread_message_parts").where("message_id","=",jwi(u)).execute()}function B9f(i){if(i==null)return null;if(typeof i!=="string")return i;try{return JSON.parse(i)}catch{return null}}function dpi(i){return{id:i.id,interactionId:i.interaction_id??null,toolCallId:i.tool_call_id,organizationId:i.organization_id,threadId:i.thread_id,messageId:i.message_id??null,provider:i.provider,modelId:i.model_id,query:i.query,status:i.status,attempts:i.attempts??0,lastPolledAt:Swi(i.last_polled_at),lastError:i.last_error??null,inputTokens:i.input_tokens??null,outputTokens:i.output_tokens??null,citations:B9f(i.citations),resultUri:i.result_uri??null,resultPreview:i.result_preview??null,resultContent:i.result_content??null,createdAt:Swi(i.created_at)??"",updatedAt:Swi(i.updated_at)??"",completedAt:Swi(i.completed_at)}}class hpi{inner;organizationId;constructor(i,u){this.inner=i;this.organizationId=u}requireOrg(){if(!this.organizationId)throw Error("OrgScopedAsyncResearchJobStorage: requires an authenticated organization");return this.organizationId}setOrganizationId(i){this.organizationId=i}upsertPending(i){return this.inner.upsertPending({organizationId:this.requireOrg(),...i})}findByToolCall(i){return this.inner.findByToolCall(this.requireOrg(),i)}markPolling(i,u,t){return this.inner.markPolling(this.requireOrg(),i,u,t)}recordPoll(i,u){return this.inner.recordPoll(this.requireOrg(),i,u)}markCompleted(i,u){return this.inner.markCompleted(this.requireOrg(),i,u)}markFailed(i,u){return this.inner.markFailed(this.requireOrg(),i,u)}markCancelled(i,u){return this.inner.markCancelled(this.requireOrg(),i,u)}}class Xm{db;constructor(i){this.db=i}async upsertPending(i){let u=new Date().toISOString(),t=await this.db.insertInto("async_research_jobs").values({organization_id:i.organizationId,thread_id:i.threadId,tool_call_id:i.toolCallId,message_id:i.messageId??null,provider:i.provider,model_id:i.modelId,query:i.query,status:"pending",attempts:0,updated_at:u}).onConflict((l)=>l.columns(["organization_id","tool_call_id"]).doNothing()).returningAll().executeTakeFirst();if(t)return dpi(t);let f=await this.db.selectFrom("async_research_jobs").selectAll().where("organization_id","=",i.organizationId).where("tool_call_id","=",i.toolCallId).executeTakeFirstOrThrow();return dpi(f)}async findByToolCall(i,u){let t=await this.db.selectFrom("async_research_jobs").selectAll().where("organization_id","=",i).where("tool_call_id","=",u).executeTakeFirst();return t?dpi(t):null}async markPolling(i,u,t,f){let l=new Date().toISOString();await this.db.transaction().execute(async(c)=>{if(await c.updateTable("async_research_jobs").set({status:"polling",interaction_id:t,last_polled_at:l,updated_at:l}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),(await c.selectFrom("threads").select("message_storage_version").where("id","=",f.threadId).where("organization_id","=",i).executeTakeFirst())?.message_storage_version!==2)return;let $=jwi(u);await c.insertInto("thread_message_parts").values([{id:`${f.threadId}:${$}:0`,seq:0,org_id:i,thread_id:f.threadId,run_id:f.threadId,message_id:$,role:"assistant",kind:"tool_call",payload:JSON.stringify({type:`tool-${f.toolName}`,toolCallId:u,state:"input-available",input:{query:f.query}}),payload_ref:null,metadata:null,created_at:l},{id:`${f.threadId}:${$}:finish`,seq:1,org_id:i,thread_id:f.threadId,run_id:f.threadId,message_id:$,role:"assistant",kind:"finish",payload:JSON.stringify({}),payload_ref:null,metadata:null,created_at:l}]).onConflict((w)=>w.column("id").doNothing()).execute()})}async recordPoll(i,u,t){let f=new Date().toISOString();await this.db.updateTable("async_research_jobs").set({attempts:$pi`attempts + 1`,last_polled_at:f,...t!==void 0?{last_error:t}:{},updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute()}async markCompleted(i,u,t){let f=new Date().toISOString();await this.db.transaction().execute(async(l)=>{await l.updateTable("async_research_jobs").set({status:"completed",input_tokens:t.inputTokens,output_tokens:t.outputTokens,citations:JSON.stringify(t.citations),result_uri:t.resultUri,result_preview:t.resultPreview,result_content:t.resultContent,completed_at:f,updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),await wpi(l,u)})}async markFailed(i,u,t){let f=new Date().toISOString();await this.db.transaction().execute(async(l)=>{await l.updateTable("async_research_jobs").set({status:"failed",last_error:t,completed_at:f,updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),await wpi(l,u)})}async markCancelled(i,u,t){let f=new Date().toISOString();await this.db.transaction().execute(async(l)=>{await l.updateTable("async_research_jobs").set({status:"cancelled",last_error:t??null,completed_at:f,updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),await wpi(l,u)})}async sweepAbandoned(i){let u=new Date(Date.now()-i).toISOString(),t=new Date().toISOString();return await this.db.transaction().execute(async(f)=>{let l=await f.updateTable("async_research_jobs").set({status:"abandoned",completed_at:t,updated_at:t,last_error:$pi`COALESCE(last_error, '') || ' [abandoned by sweeper]'`}).where("status","in",["pending","polling"]).where($pi`COALESCE(last_polled_at, created_at) < ${u}::timestamptz`).returning(["tool_call_id"]).execute();if(l.length===0)return 0;let c=l.map((E)=>jwi(E.tool_call_id));return await f.deleteFrom("thread_messages").where("id","in",c).execute(),await f.deleteFrom("thread_message_parts").where("message_id","in",c).execute(),l.length})}}var _pi=()=>{};function Kwi(){let i=new Map;function u(f,l){let c=i.get(l);if(c)return c;let E=new k1({name:`outbound-client-${l}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}},jsonSchemaValidator:Xl});E.onclose=()=>{i.delete(l)};let $=E.connect(f).then(()=>E).catch((w)=>{throw i.delete(l),w});return i.set(l,$),$}return Object.assign(u,{[Symbol.asyncDispose]:async()=>{let f=[];for(let[l,c]of i)f.push(c.then((E)=>E.close()).catch(()=>{}));await Promise.all(f),i.clear()}})}var vpi=g(()=>{zh();i$()});import{sql as F9f}from"kysely";function N50(i){return i instanceof Date?i.toISOString():String(i)}class Dpi{db;vault;constructor(i,u){this.db=i;this.vault=u}rowToInfo(i){return{id:i.id,organizationId:i.organization_id,scope:i.scope,userId:i.user_id,name:i.name,description:i.description,createdBy:i.created_by,createdAt:N50(i.created_at),updatedBy:i.updated_by,updatedAt:N50(i.updated_at)}}assertVisible(i,u){if(i.scope==="user"&&i.user_id!==u)throw new kQ(i.id)}async create(i){let u=Jf("sec"),t=await this.vault.encrypt(i.value),f=new Date,l=await this.db.insertInto("secrets").values({id:u,organization_id:i.organizationId,scope:i.scope.kind,user_id:i.scope.kind==="user"?i.scope.userId:null,name:i.name,encrypted_value:t,description:i.description??null,created_by:i.createdBy,created_at:f,updated_by:i.createdBy,updated_at:f}).returning(Jwi).executeTakeFirstOrThrow();return this.rowToInfo(l)}async update(i){let u=await this.db.selectFrom("secrets").where("id","=",i.id).where("organization_id","=",i.organizationId).select(["id","scope","user_id"]).executeTakeFirst();if(!u)throw new Yv(i.id);this.assertVisible(u,i.callerUserId);let t={updated_by:i.updatedBy,updated_at:new Date};if(i.value!==void 0)t.encrypted_value=await this.vault.encrypt(i.value);if(i.description!==void 0)t.description=i.description;let f=await this.db.updateTable("secrets").set(t).where("id","=",i.id).where("organization_id","=",i.organizationId).returning(Jwi).executeTakeFirstOrThrow();return this.rowToInfo(f)}async delete(i,u,t){let f=await this.db.selectFrom("secrets").where("id","=",i).where("organization_id","=",u).select(["id","scope","user_id"]).executeTakeFirst();if(!f)throw new Yv(i);this.assertVisible(f,t),await this.db.deleteFrom("secrets").where("id","=",i).where("organization_id","=",u).execute()}async list(i){let u=this.db.selectFrom("secrets").where("organization_id","=",i.organizationId).select(Jwi);if(i.scope?.kind==="user")u=u.where("scope","=","user").where("user_id","=",i.scope.userId);else if(i.scope?.kind==="organization")u=u.where("scope","=","organization");else u=u.where((f)=>f.or([f("scope","=","organization"),f.and([f("scope","=","user"),f("user_id","=",i.callerUserId)])]));return(await u.orderBy("created_at","desc").execute()).map((f)=>this.rowToInfo(f))}async findById(i,u,t){let f=await this.db.selectFrom("secrets").where("id","=",i).where("organization_id","=",u).select(Jwi).executeTakeFirst();if(!f)throw new Yv(i);return this.assertVisible(f,t),this.rowToInfo(f)}async resolveById(i,u,t){let f=await this.db.selectFrom("secrets").where("id","=",i).where("organization_id","=",u).selectAll().executeTakeFirst();if(!f)throw new Yv(i);this.assertVisible(f,t);let l=await this.vault.decrypt(f.encrypted_value);return{info:this.rowToInfo(f),value:l}}async resolveByName(i){let u=this.db.selectFrom("secrets").where("organization_id","=",i.organizationId).where("scope","=",i.scope.kind).where(F9f`lower(name) = lower(${i.name})`).selectAll();if(i.scope.kind==="user")u=u.where("user_id","=",i.scope.userId);let t=await u.executeTakeFirst();if(!t)throw new Yv(`${i.scope.kind}:${i.name}`);let f=await this.vault.decrypt(t.encrypted_value);return{info:this.rowToInfo(t),value:f}}}var Jwi,Yv,kQ;var Xwi=g(()=>{c$();Jwi=["id","organization_id","scope","user_id","name","description","created_by","created_at","updated_by","updated_at"];Yv=class Yv extends Error{constructor(i){super(`Secret ${i} not found`);this.name="SecretNotFoundError"}};kQ=class kQ extends Error{constructor(i){super(`Access denied for secret ${i}`);this.name="SecretAccessDeniedError"}}});import{sql as U9f}from"kysely";function y50(i){return i instanceof Date?i.toISOString():String(i)}class npi{db;vault;constructor(i,u){this.db=i;this.vault=u}rowToInfo(i){return{id:i.id,organizationId:i.organization_id,name:i.name,description:i.description,bucket:i.bucket,region:i.region,endpoint:i.endpoint,forcePathStyle:i.force_path_style,prefix:i.prefix,publicUrlBase:i.public_url_base,credentialType:i.credential_type??"static",refreshUrl:i.refresh_url,siteSlug:i.site_slug,createdBy:i.created_by,createdAt:y50(i.created_at),updatedBy:i.updated_by,updatedAt:y50(i.updated_at)}}async create(i){let u=Jf("fcfg"),t=await this.vault.encrypt(JSON.stringify(i.credentials)),f=new Date,l=await this.db.insertInto("org_file_configs").values({id:u,organization_id:i.organizationId,name:i.name,description:i.description??null,bucket:i.bucket,region:i.region,endpoint:i.endpoint??null,force_path_style:i.forcePathStyle??!1,prefix:i.prefix??null,public_url_base:i.publicUrlBase??null,credential_type:i.credentials.type,refresh_url:i.refreshUrl??null,site_slug:i.siteSlug??null,encrypted_credentials:t,created_by:i.createdBy,created_at:f,updated_by:i.createdBy,updated_at:f}).returning(Lwi).executeTakeFirstOrThrow();return this.rowToInfo(l)}async update(i){if(!await this.db.selectFrom("org_file_configs").where("id","=",i.id).where("organization_id","=",i.organizationId).select(["id"]).executeTakeFirst())throw new GQ(i.id);let t={updated_by:i.updatedBy,updated_at:new Date};if(i.name!==void 0)t.name=i.name;if(i.description!==void 0)t.description=i.description;if(i.bucket!==void 0)t.bucket=i.bucket;if(i.region!==void 0)t.region=i.region;if(i.endpoint!==void 0)t.endpoint=i.endpoint;if(i.forcePathStyle!==void 0)t.force_path_style=i.forcePathStyle;if(i.prefix!==void 0)t.prefix=i.prefix;if(i.publicUrlBase!==void 0)t.public_url_base=i.publicUrlBase;if(i.refreshUrl!==void 0)t.refresh_url=i.refreshUrl;if(i.siteSlug!==void 0)t.site_slug=i.siteSlug;if(i.credentials!==void 0)t.credential_type=i.credentials.type,t.encrypted_credentials=await this.vault.encrypt(JSON.stringify(i.credentials));let f=await this.db.updateTable("org_file_configs").set(t).where("id","=",i.id).where("organization_id","=",i.organizationId).returning(Lwi).executeTakeFirstOrThrow();return this.rowToInfo(f)}async delete(i,u){if(!await this.db.selectFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).select(["id"]).executeTakeFirst())throw new GQ(i);await this.db.deleteFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).execute()}async list(i){return(await this.db.selectFrom("org_file_configs").where("organization_id","=",i).select(Lwi).orderBy("created_at","desc").execute()).map((t)=>this.rowToInfo(t))}async findById(i,u){let t=await this.db.selectFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).select(Lwi).executeTakeFirst();if(!t)throw new GQ(i);return this.rowToInfo(t)}async resolveById(i,u){let t=await this.db.selectFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).selectAll().executeTakeFirst();if(!t)throw new GQ(i);return{info:this.rowToInfo(t),credentials:await this.decodeCredentials(t)}}async resolveByName(i){let u=await this.db.selectFrom("org_file_configs").where("organization_id","=",i.organizationId).where(U9f`lower(name) = lower(${i.name})`).selectAll().executeTakeFirst();if(!u)throw new GQ(i.name);return{info:this.rowToInfo(u),credentials:await this.decodeCredentials(u)}}async decodeCredentials(i){if(i.credential_type==="managed")return{type:"managed"};let u=await this.vault.decrypt(i.encrypted_credentials),t=JSON.parse(u);if((i.credential_type??"static")==="sts-session")return{type:"sts-session",apiKey:String(t.apiKey)};return{type:"static",accessKeyId:String(t.accessKeyId),secretAccessKey:String(t.secretAccessKey)}}}var Lwi,GQ;var Z50=g(()=>{c$();Lwi=["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"];GQ=class GQ extends Error{constructor(i){super(`File config ${i} not found`);this.name="OrgFileConfigNotFoundError"}}});function Wwi(i){return gpi.test(i)}var gpi;var Ywi=g(()=>{gpi=/^[a-z0-9][a-z0-9-]{0,59}$/});function T50(i){return i instanceof Date?i.toISOString():String(i)}function Opi(i){return{slug:i.slug,organizationId:i.organization_id,source:i.source,createdBy:i.created_by,createdAt:T50(i.created_at),updatedBy:i.updated_by,updatedAt:T50(i.updated_at)}}class ypi{db;constructor(i){this.db=i}async claimSite(i){if(!Wwi(i.slug))throw Error(`Invalid site slug "${i.slug}" \u2014 must be 1-60 chars of lowercase letters, digits, or hyphens, starting with a letter or digit`);let u=new Date,t=await this.db.insertInto("org_sites").values({slug:i.slug,organization_id:i.organizationId,source:i.source??"deco-import",created_by:i.by,created_at:u,updated_by:i.by,updated_at:u}).onConflict((c)=>c.column("slug").doNothing()).returningAll().executeTakeFirst();if(t)return Opi(t);let f=await this.getBySlug(i.slug);if(!f)throw new Npi(i.slug,"unknown");if(f.organizationId!==i.organizationId)throw new Npi(i.slug,f.organizationId);let l=await this.db.updateTable("org_sites").set({source:i.source??f.source,updated_by:i.by,updated_at:u}).where("slug","=",i.slug).where("organization_id","=",i.organizationId).returningAll().executeTakeFirstOrThrow();return Opi(l)}async getBySlug(i){let u=await this.db.selectFrom("org_sites").selectAll().where("slug","=",i).executeTakeFirst();return u?Opi(u):null}async isOwnedBy(i,u){return!!await this.db.selectFrom("org_sites").select("slug").where("slug","=",i).where("organization_id","=",u).executeTakeFirst()}}var Npi;var B50=g(()=>{Ywi();Npi=class Npi extends Error{slug;ownerOrganizationId;constructor(i,u){super(`Site slug "${i}" is already owned by another organization`);this.slug=i;this.ownerOrganizationId=u;this.name="OrgSiteConflictError"}}});function P9f(i){if(i&&typeof i==="object"&&!Array.isArray(i)){let u=i.text;if(typeof u==="string"&&u.trim())return u.trim()}return null}function I9f(i){if(i.status!=="in_progress")return!1;if(i.threads.length===0)return!1;if(i.threads.some((u)=>u.hasPreview))return!1;return i.threads.every((u)=>u.status!==null&&A9f.has(u.status))}function x9f(i){let u=typeof i==="string"?(()=>{try{return JSON.parse(i)}catch{return null}})():i;if(!u||typeof u!=="object")return!1;let t=u.githubRepo?.url;return typeof t==="string"&&t.length>0}class Lm{db;constructor(i){this.db=i}async list(i){let t=(await this.db.selectFrom("task_board_items").selectAll().where("organization_id","=",i).orderBy("created_at","desc").execute()).map((f)=>this.itemFromDbRow(f));return await this.attachThreads(t,i),t}async getById(i,u){let t=await this.db.selectFrom("task_board_items").selectAll().where("id","=",i).where("organization_id","=",u).executeTakeFirst();if(!t)return null;let f=this.itemFromDbRow(t);return await this.attachThreads([f],u),f}async create(i){let u=Jf("board"),t=new Date().toISOString(),f=await this.db.insertInto("task_board_items").values({id:u,organization_id:i.organizationId,title:i.title,description:i.description??null,status:i.status??"triage",priority:i.priority??"medium",assignee_id:i.assigneeId??null,assigned_by:i.assignedBy??null,due_date:i.dueDate??null,created_by:i.by,created_at:t,updated_by:i.by,updated_at:t}).returningAll().executeTakeFirstOrThrow();return this.itemFromDbRow(f)}async update(i,u,t,f){let l=await this.db.updateTable("task_board_items").set({...t.title!==void 0?{title:t.title}:{},...t.description!==void 0?{description:t.description}:{},...t.status!==void 0?{status:t.status}:{},...t.priority!==void 0?{priority:t.priority}:{},...t.assigneeId!==void 0?{assignee_id:t.assigneeId}:{},...t.assignedBy!==void 0?{assigned_by:t.assignedBy}:{},...t.dueDate!==void 0?{due_date:t.dueDate}:{},updated_by:f,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).returningAll().executeTakeFirstOrThrow(),c=this.itemFromDbRow(l);return await this.attachThreads([c],u),c}async delete(i,u){await this.db.transaction().execute(async(t)=>{await t.deleteFrom("task_board_item_threads").where("task_board_item_id","=",i).where("organization_id","=",u).execute(),await t.deleteFrom("task_board_item_prs").where("task_board_item_id","=",i).where("organization_id","=",u).execute(),await t.deleteFrom("task_board_items").where("id","=",i).where("organization_id","=",u).execute()})}async linkThread(i,u,t){await this.db.insertInto("task_board_item_threads").values({task_board_item_id:i,thread_id:u,organization_id:t}).onConflict((f)=>f.columns(["task_board_item_id","thread_id"]).doNothing()).execute()}async linkedTaskIds(i,u){return(await this.db.selectFrom("task_board_item_threads").select("task_board_item_id as taskId").where("thread_id","=",i).where("organization_id","=",u).execute()).map((f)=>f.taskId)}async linkPr(i){await this.db.insertInto("task_board_item_prs").values({task_board_item_id:i.taskBoardItemId,organization_id:i.organizationId,url:i.url,pr_number:i.prNumber,repo_owner:i.repoOwner,repo_name:i.repoName,connection_id:i.connectionId??null}).onConflict((u)=>u.columns(["task_board_item_id","url"]).doNothing()).execute()}async listPrs(i,u){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","created_at as createdAt"]).where("task_board_item_id","=",i).where("organization_id","=",u).orderBy("created_at","desc").execute()).map((f)=>({url:f.url,number:f.prNumber,repoOwner:f.repoOwner,repoName:f.repoName,connectionId:f.connectionId??null,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}))}async advanceLinkedTasksToReviewOnThreadFinish(i,u){let t=[];for(let f of await this.linkedTaskIds(i,u)){let l=await this.getById(f,u);if(!l||!I9f(l))continue;t.push(await this.update(f,u,{status:"in_review"},l.updatedBy))}return t}async reopenLinkedTasksOnThreadRun(i,u){let t=[];for(let f of await this.linkedTaskIds(i,u)){let l=await this.getById(f,u);if(!l||l.status!=="in_review")continue;t.push(await this.update(f,u,{status:"in_progress"},l.updatedBy))}return t}async attachThreads(i,u){if(i.length===0)return;let t=i.map((c)=>c.id),f=await this.db.selectFrom("task_board_item_threads as link").innerJoin("threads as t","t.id","link.thread_id").leftJoinLateral((c)=>c.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"),(c)=>c.onTrue()).select(["link.task_board_item_id as taskId","link.thread_id as threadId","link.created_at as createdAt","t.status as status","t.title as title","t.virtual_mcp_id as virtualMcpId","t.metadata as metadata","lastmsg.payload as lastMessagePayload"]).where("link.organization_id","=",u).where("link.task_board_item_id","in",t).orderBy("link.created_at","desc").execute(),l=new Map;for(let c of f){let E={threadId:c.threadId,virtualMcpId:c.virtualMcpId??null,status:c.status??null,title:c.title??null,lastMessage:P9f(c.lastMessagePayload),hasPreview:x9f(c.metadata),createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():c.createdAt},$=l.get(c.taskId);if($)$.push(E);else l.set(c.taskId,[E])}for(let c of i)c.threads=l.get(c.id)??[]}itemFromDbRow(i){return{id:i.id,organizationId:i.organization_id,title:i.title,description:i.description,status:i.status,priority:i.priority,assigneeId:i.assignee_id,assignedBy:i.assigned_by,dueDate:i.due_date instanceof Date?i.due_date.toISOString():i.due_date,threads:[],createdBy:i.created_by,createdAt:i.created_at instanceof Date?i.created_at.toISOString():i.created_at,updatedBy:i.updated_by,updatedAt:i.updated_at instanceof Date?i.updated_at.toISOString():i.updated_at}}}var A9f;var Zpi=g(()=>{c$();A9f=new Set(["completed","failed","expired"])});class Tpi{db;constructor(i){this.db=i}async create(i,u,t){let f=crypto.randomUUID(),l=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:f,organization_id:u,user_id:t,code_verifier:i,expires_at:l,created_at:new Date}).execute(),f}async consume(i,u,t){let f=await this.db.deleteFrom("oauth_pkce_states").where("id","=",i).where("organization_id","=",u).where("user_id","=",t).returningAll().executeTakeFirst();if(!f)throw Error("Invalid or expired OAuth state token");if((f.expires_at instanceof Date?f.expires_at:new Date(f.expires_at))<new Date)throw Error("OAuth state token has expired");return f.code_verifier}}function Qv(i){if(i==null)return"unknown error";if(typeof i==="string")return i;if(i instanceof Error)return i.message;return JSON.stringify(i)}function Qwi(i){if(i===null||typeof i==="string"||typeof i==="number"||typeof i==="boolean")return!0;if(Array.isArray(i))return i.every(Qwi);if(typeof i==="object")return Object.entries(i).every(([u,t])=>typeof u==="string"&&(t===void 0||Qwi(t)));return!1}function Bpi(i){return Array.isArray(i)&&i.every(Qwi)}function Wm(i){return i!=null&&typeof i==="object"&&Object.entries(i).every(([u,t])=>typeof u==="string"&&(t===void 0||Qwi(t)))}var a50="vercel.ai.error",k9f,F50,U50,Bu,o50="AI_APICallError",s50,G9f,P50,A50,Dt,p50="AI_EmptyResponseBodyError",iD0,S9f,I50,x50,zwi,uD0="AI_InvalidArgumentError",tD0,j9f,k50,G50,Y7,fD0="AI_InvalidPromptError",lD0,K9f,S50,j50,Z3,cD0="AI_InvalidResponseDataError",ED0,J9f,K50,J50,SQ,$D0="AI_JSONParseError",wD0,X9f,X50,L50,E8,dD0="AI_LoadAPIKeyError",hD0,L9f,W50,Y50,fd,_D0="AI_LoadSettingError",vD0,W9f,Q50,z50,DD0,nD0="AI_NoContentGeneratedError",gD0,Y9f,H50,R50,OD0,ND0="AI_NoSuchModelError",yD0,Q9f,b50,C50,Lf,ZD0="AI_TooManyEmbeddingValuesForCallError",TD0,z9f,M50,q50,jQ,BD0="AI_TypeValidationError",FD0,H9f,V50,r50,Bl,UD0="AI_UnsupportedFunctionalityError",PD0,R9f,m50,e50,Ff;var eu=g(()=>{k9f=Symbol.for(a50),Bu=class i extends(U50=Error,F50=k9f,U50){constructor({name:u,message:t,cause:f}){super(t);this[F50]=!0,this.name=u,this.cause=f}static isInstance(u){return i.hasMarker(u,a50)}static hasMarker(u,t){let f=Symbol.for(t);return u!=null&&typeof u==="object"&&f in u&&typeof u[f]==="boolean"&&u[f]===!0}},s50=`vercel.ai.error.${o50}`,G9f=Symbol.for(s50),Dt=class extends(A50=Bu,P50=G9f,A50){constructor({message:i,url:u,requestBodyValues:t,statusCode:f,responseHeaders:l,responseBody:c,cause:E,isRetryable:$=f!=null&&(f===408||f===409||f===429||f>=500),data:w}){super({name:o50,message:i,cause:E});this[P50]=!0,this.url=u,this.requestBodyValues=t,this.statusCode=f,this.responseHeaders=l,this.responseBody=c,this.isRetryable=$,this.data=w}static isInstance(i){return Bu.hasMarker(i,s50)}},iD0=`vercel.ai.error.${p50}`,S9f=Symbol.for(iD0),zwi=class extends(x50=Bu,I50=S9f,x50){constructor({message:i="Empty response body"}={}){super({name:p50,message:i});this[I50]=!0}static isInstance(i){return Bu.hasMarker(i,iD0)}};tD0=`vercel.ai.error.${uD0}`,j9f=Symbol.for(tD0),Y7=class extends(G50=Bu,k50=j9f,G50){constructor({message:i,cause:u,argument:t}){super({name:uD0,message:i,cause:u});this[k50]=!0,this.argument=t}static isInstance(i){return Bu.hasMarker(i,tD0)}},lD0=`vercel.ai.error.${fD0}`,K9f=Symbol.for(lD0),Z3=class extends(j50=Bu,S50=K9f,j50){constructor({prompt:i,message:u,cause:t}){super({name:fD0,message:`Invalid prompt: ${u}`,cause:t});this[S50]=!0,this.prompt=i}static isInstance(i){return Bu.hasMarker(i,lD0)}},ED0=`vercel.ai.error.${cD0}`,J9f=Symbol.for(ED0),SQ=class extends(J50=Bu,K50=J9f,J50){constructor({data:i,message:u=`Invalid response data: ${JSON.stringify(i)}.`}){super({name:cD0,message:u});this[K50]=!0,this.data=i}static isInstance(i){return Bu.hasMarker(i,ED0)}},wD0=`vercel.ai.error.${$D0}`,X9f=Symbol.for(wD0),E8=class extends(L50=Bu,X50=X9f,L50){constructor({text:i,cause:u}){super({name:$D0,message:`JSON parsing failed: Text: ${i}.
86467
+ </organization-filesystem>`}var W7=g(()=>{Ey();Jm()});function fpi(i){let u=new Map;for(let f of i){let l=u.get(f.message_id);if(l)l.push(f);else u.set(f.message_id,[f])}let t=[];for(let[f,l]of u){let c=[...l].sort(($,w)=>$.seq-w.seq),E=c[0];t.push({id:f,role:E.role,parts:c.filter(($)=>$.kind!=="finish").map(($)=>$.payload&&typeof $.payload==="object"&&!Array.isArray($.payload)?{...$.payload,created_at:$.created_at}:$.payload),created_at:E.created_at,status:c.some(($)=>$.kind==="finish")?"complete":"in_progress",metadata:c.find(($)=>$.kind==="finish")?.metadata??null})}return t.sort((f,l)=>f.created_at<l.created_at?-1:f.created_at>l.created_at?1:0),t}function T9f(i,u){let t=0,f=0,l=[i];while(l.length>0){if(t>u||++f>y9f)return 1/0;let c=l.pop();if(typeof c==="string")t+=c.length;else if(Array.isArray(c))for(let E of c)l.push(E);else if(c!==null&&typeof c==="object")for(let E of Object.values(c))l.push(E)}return t}function n50(i){if(T9f(i,D50)>D50)return JSON.stringify({truncated:!0,reason:"payload exceeds max stored size"});return JSON.stringify(i)}class lpi{db;constructor(i){this.db=i}async serializeParts(i){let u=new Set,t=[],f=new Map;for(let l=0;l<i.length;l++){let c=i[l];if(u.has(c.id))continue;if(u.add(c.id),f.set(c.id,c),t.push({id:c.id,seq:c.seq,org_id:c.org_id,thread_id:c.thread_id,run_id:c.run_id,message_id:c.message_id,role:c.role,kind:c.kind,payload:n50(c.payload),payload_ref:c.payload_ref??null,metadata:c.metadata!=null?n50(c.metadata):null,created_at:c.created_at}),(l+1)%Z9f===0)await O0(0)}return{rows:t,partsById:f}}async appendParts(i){if(i.length===0)return[];let{rows:u,partsById:t}=await this.serializeParts(i);return(await this.db.insertInto("thread_message_parts").values(u).onConflict((l)=>l.column("id").doNothing()).returning("id").execute()).map((l)=>t.get(l.id)).filter((l)=>l!==void 0)}async replaceMessageParts(i,u,t){let{rows:f}=await this.serializeParts(t);return await this.db.transaction().execute(async(l)=>{let c=await l.selectFrom("thread_message_parts").select((w)=>w.fn.min("created_at").as("created_at")).where("thread_id","=",i).where("message_id","=",u).executeTakeFirst(),E=c?.created_at!=null?new Date(c.created_at).getTime():null,$=E!=null&&Number.isFinite(E)?f.map((w)=>({...w,created_at:new Date(E+w.seq).toISOString()})):f;if(await l.deleteFrom("thread_message_parts").where("thread_id","=",i).where("message_id","=",u).execute(),$.length>0)await l.insertInto("thread_message_parts").values($).onConflict((w)=>w.column("id").doUpdateSet((d)=>({seq:d.ref("excluded.seq"),role:d.ref("excluded.role"),kind:d.ref("excluded.kind"),payload:d.ref("excluded.payload"),payload_ref:d.ref("excluded.payload_ref"),metadata:d.ref("excluded.metadata"),created_at:d.ref("excluded.created_at")}))).execute()}),t}async deleteMessageParts(i,u){await this.db.deleteFrom("thread_message_parts").where("thread_id","=",i).where("message_id","=",u).execute()}async maxCreatedAtMsForRun(i){let u=await this.db.selectFrom("thread_message_parts").select((f)=>f.fn.max("created_at").as("max")).where("run_id","=",i).executeTakeFirst();if(!u?.max)return null;let t=new Date(u.max).getTime();return Number.isFinite(t)?t:null}async maxCreatedAtMsForMessage(i,u){let t=await this.db.selectFrom("thread_message_parts").select((l)=>l.fn.max("created_at").as("max")).where("run_id","=",i).where("message_id","=",u).executeTakeFirst();if(!t?.max)return null;let f=new Date(t.max).getTime();return Number.isFinite(f)?f:null}async loadWindow(i,u){let t=await this.db.selectFrom("thread_message_parts").select(["message_id"]).where("thread_id","=",i).where("kind","=","finish").orderBy("created_at","desc").orderBy("id","desc").limit(u.limit).offset(u.offset??0).execute(),f=await this.db.selectFrom("thread_message_parts").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",i).where("kind","=","finish").executeTakeFirst(),l=Number(f?.count??0),c=t.map(($)=>$.message_id);if(c.length===0)return{messages:[],total:l};let E=await this.db.selectFrom("thread_message_parts").selectAll().where("thread_id","=",i).where("message_id","in",c).orderBy("seq","asc").execute();return{messages:fpi(E),total:l}}async backfillFromMessages(i,u){let t=[],f=0;for(let l of i)t.push({id:`${u.runId}:${l.id}:content`,seq:f++,org_id:u.orgId,thread_id:u.threadId,run_id:u.runId,message_id:l.id,role:l.role,kind:"text",payload:l.parts,payload_ref:null,metadata:l.metadata??null,created_at:l.created_at}),t.push({id:`${u.runId}:${l.id}:finish`,seq:f++,org_id:u.orgId,thread_id:u.threadId,run_id:u.runId,message_id:l.id,role:l.role,kind:"finish",payload:{},payload_ref:null,metadata:null,created_at:l.created_at});await this.appendParts(t)}}var D50=50000000,y9f=1e5,Z9f=25;var g50=g(()=>{y4()});import{sql as O50}from"kysely";function IQ(i){return typeof i==="string"?i:i.toISOString()}class cpi{inner;organizationId;constructor(i,u){this.inner=i;this.organizationId=u}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}setOrganizationId(i){this.organizationId=i}getOrganizationId(){return this.organizationId}create(i){let u=this.requireOrg();return this.inner.create({...i,organization_id:u})}get(i){return this.inner.get(i,this.requireOrg())}update(i,u){return this.inner.update(i,this.requireOrg(),u)}completeRunIfNotCompleted(i){return this.inner.completeRunIfNotCompleted(i,this.requireOrg())}markRunFailed(i,u,t){return this.inner.markRunFailed(i,this.requireOrg(),u,t)}requiresActionIfInProgress(i){return this.inner.requiresActionIfInProgress(i,this.requireOrg())}forceFailIfInProgress(i){return this.inner.forceFailIfInProgress(i,this.requireOrg())}delete(i){return this.inner.delete(i,this.requireOrg())}list(i,u){return this.inner.list(this.requireOrg(),i,u)}listByTriggerIds(i,u){return this.inner.listByTriggerIds(this.requireOrg(),i,u)}findLastUsedByVirtualMcpIds(i){return this.inner.findLastUsedByVirtualMcpIds(this.requireOrg(),i)}bumpProgress(i){return this.inner.bumpProgress(i,this.requireOrg())}getProgress(i){return this.inner.getProgress(i,this.requireOrg())}listMessages(i,u){return this.inner.listMessages(i,this.requireOrg(),u)}listWithLastMessage(i){return this.inner.listWithLastMessage(this.requireOrg(),i)}messageParts(){return this.inner.messageParts()}getRunFence(i){return this.inner.getRunFence(i)}setRunFence(i,u){return this.inner.setRunFence(i,u)}setCancelRequested(i,u){return this.inner.setCancelRequested(i,u)}getCancelRequestedAt(i){return this.inner.getCancelRequestedAt(i)}clearCancelRequested(i){return this.inner.clearCancelRequested(i)}bumpAckedSeq(i,u,t){return this.inner.bumpAckedSeq(i,this.requireOrg(),u,t)}getAckedSeq(i){return this.inner.getAckedSeq(i,this.requireOrg())}}class xQ{db;constructor(i){this.db=i}messageParts(){return new lpi(this.db)}async create(i){let u=i.id??Jf("thrd"),t=new Date().toISOString();if(!i.organization_id)throw Error("organization_id is required");if(!i.created_by)throw Error("created_by is required");if(!i.title)i.title=l8;let f={id:u,organization_id:i.organization_id,title:i.title,description:i.description??null,status:i.status??"completed",trigger_id:i.trigger_id??null,virtual_mcp_id:i.virtual_mcp_id??"",branch:i.branch??null,sandbox_provider_kind:null,harness_id:null,created_at:t,updated_at:t,created_by:i.created_by,updated_by:i.updated_by??null,...i.message_storage_version!==void 0?{message_storage_version:i.message_storage_version}:{},...i.metadata!==void 0?{metadata:JSON.stringify(i.metadata)}:{}},l=await this.db.insertInto("threads").values(f).onConflict((E)=>E.column("id").doNothing()).returningAll().executeTakeFirst();if(l)return this.threadFromDbRow(l);let c=await this.db.selectFrom("threads").selectAll().where("id","=",u).where("organization_id","=",i.organization_id).executeTakeFirstOrThrow();return this.threadFromDbRow(c)}async get(i,u){let t=await this.db.selectFrom("threads").selectAll().where("id","=",i).where("organization_id","=",u).executeTakeFirst();return t?this.threadFromDbRow(t):null}async update(i,u,t){let l={updated_at:new Date().toISOString()};if(t.title!==void 0)l.title=t.title;if(t.description!==void 0)l.description=t.description;if(t.updated_by!==void 0)l.updated_by=t.updated_by;if(t.hidden!==void 0)l.hidden=t.hidden;if(t.status!==void 0)l.status=t.status;if(t.context_start_message_id!==void 0)l.context_start_message_id=t.context_start_message_id;if(t.run_owner_pod!==void 0)l.run_owner_pod=t.run_owner_pod;if(t.run_config!==void 0)l.run_config=t.run_config?JSON.stringify(t.run_config):null;if(t.run_started_at!==void 0)l.run_started_at=t.run_started_at;if(t.last_progress_at!==void 0)l.last_progress_at=t.last_progress_at;if(t.failure_reason!==void 0)l.failure_reason=t.failure_reason;if(t.failure_kind!==void 0)l.failure_kind=t.failure_kind;if(t.metadata!==void 0)l.metadata=JSON.stringify(t.metadata);if(t.branch!==void 0)l.branch=t.branch;if(t.virtual_mcp_id!==void 0)l.virtual_mcp_id=t.virtual_mcp_id;if(t.sandbox_provider_kind!==void 0)l.sandbox_provider_kind=t.sandbox_provider_kind;if(t.harness_id!==void 0)l.harness_id=t.harness_id;if(t.message_storage_version!==void 0)l.message_storage_version=t.message_storage_version;await this.db.updateTable("threads").set(l).where("id","=",i).where("organization_id","=",u).execute();let c=await this.get(i,u);if(!c)throw Error("Thread not found after update");return c}async completeRunIfNotCompleted(i,u){let f=(await this.db.updateTable("threads").set({status:"completed",run_owner_pod:null,run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").returningAll().execute())[0];return f?this.threadFromDbRow(f):null}async markRunFailed(i,u,t,f){let c=(await this.db.updateTable("threads").set({status:"failed",failure_reason:t,failure_kind:f,run_owner_pod:null,run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").returningAll().execute())[0];return c?this.threadFromDbRow(c):null}async requiresActionIfInProgress(i,u){let f=(await this.db.updateTable("threads").set({status:"requires_action",run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").returningAll().execute())[0];return f?this.threadFromDbRow(f):null}async forceFailIfInProgress(i,u){let t=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:t}).where("id","=",i).where("organization_id","=",u).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(i,u){await this.db.deleteFrom("threads").where("id","=",i).where("organization_id","=",u).execute()}async list(i,u,t){let f=t?.includeArchived===!0,l=this.db.selectFrom("threads").selectAll().where("organization_id","=",i).where("hidden","=",f).orderBy("updated_at","desc");if(u)l=l.where("created_by","=",u);let c=t?.virtualMcpId??t?.agentId;if(c)l=l.where("virtual_mcp_id","=",c);if(t?.hasTrigger===!0)l=l.where("trigger_id","is not",null);else if(t?.hasTrigger===!1)l=l.where("trigger_id","is",null);if(t?.startDate)l=l.where("updated_at",">=",t.startDate);if(t?.endDate)l=l.where("updated_at","<=",t.endDate);if(t?.search)l=l.where("title","ilike",`%${t.search}%`);if(t?.status)l=l.where("status","=",t.status);let E=this.db.selectFrom("threads").select((d)=>d.fn.count("id").as("count")).where("organization_id","=",i).where("hidden","=",f);if(u)E=E.where("created_by","=",u);if(c)E=E.where("virtual_mcp_id","=",c);if(t?.hasTrigger===!0)E=E.where("trigger_id","is not",null);else if(t?.hasTrigger===!1)E=E.where("trigger_id","is",null);if(t?.startDate)E=E.where("updated_at",">=",t.startDate);if(t?.endDate)E=E.where("updated_at","<=",t.endDate);if(t?.search)E=E.where("title","ilike",`%${t.search}%`);if(t?.status)E=E.where("status","=",t.status);if(t?.limit)l=l.limit(t.limit);if(t?.offset)l=l.offset(t.offset);let[$,w]=await Promise.all([l.execute(),E.executeTakeFirst()]);return{threads:$.map((d)=>this.threadFromDbRow(d)),total:Number(w?.count||0)}}async listByTriggerIds(i,u,t){if(u.length===0)return{threads:[],total:0};let f=this.db.selectFrom("threads").selectAll().where("organization_id","=",i).where("hidden","=",!1).where("trigger_id","in",u).orderBy("updated_at","desc"),l=this.db.selectFrom("threads").select(($)=>$.fn.count("id").as("count")).where("organization_id","=",i).where("hidden","=",!1).where("trigger_id","in",u);if(t?.limit)f=f.limit(t.limit);if(t?.offset)f=f.offset(t.offset);let[c,E]=await Promise.all([f.execute(),l.executeTakeFirst()]);return{threads:c.map(($)=>this.threadFromDbRow($)),total:Number(E?.count||0)}}async findLastUsedByVirtualMcpIds(i,u){let t=new Map;if(u.length===0)return t;let f=await this.db.selectFrom("threads").distinctOn("virtual_mcp_id").select(["virtual_mcp_id","created_by","created_at"]).where("organization_id","=",i).where("virtual_mcp_id","in",u).orderBy("virtual_mcp_id").orderBy("created_at","desc").execute();for(let l of f)t.set(l.virtual_mcp_id,{last_used_at:IQ(l.created_at),last_used_by:l.created_by});return t}async listWithLastMessage(i,u){let t=this.db.selectFrom("threads as t").innerJoinLateral((l)=>l.selectFrom("thread_messages as m").selectAll().whereRef("m.thread_id","=","t.id").orderBy("m.created_at","desc").orderBy("m.id","desc").limit(1).as("lm"),(l)=>l.onTrue()).selectAll("t").select(["lm.id as lm_id","lm.thread_id as lm_thread_id","lm.metadata as lm_metadata","lm.parts as lm_parts","lm.role as lm_role","lm.created_at as lm_created_at","lm.updated_at as lm_updated_at"]).where("t.organization_id","=",i).where("t.hidden","=",!1).where("lm.role","=",u.lastMessageRole).orderBy("lm.created_at","desc").limit(u.limit);if(u.createdBy)t=t.where("t.created_by","=",u.createdBy);return(await t.execute()).map((l)=>({thread:this.threadFromDbRow(l),lastMessage:this.messageFromDbRow({id:l.lm_id,thread_id:l.lm_thread_id,metadata:l.lm_metadata,parts:l.lm_parts,role:l.lm_role,created_at:l.lm_created_at,updated_at:l.lm_updated_at})}))}async listMessages(i,u,t){if(!await this.get(i,u))return{messages:[],total:0};let l=t?.sort??"asc",c=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",i).orderBy("created_at",l).orderBy("id",l),E=this.db.selectFrom("thread_messages").select((d)=>d.fn.count("id").as("count")).where("thread_id","=",i);if(t?.limit)c=c.limit(t.limit);if(t?.offset)c=c.offset(t.offset);let[$,w]=await Promise.all([c.execute(),E.executeTakeFirst()]);return{messages:$.map((d)=>this.messageFromDbRow(d)),total:Number(w?.count||0)}}async bumpProgress(i,u){await this.db.updateTable("threads").set({last_progress_at:O50`now()`}).where("id","=",i).where("organization_id","=",u).execute()}async getProgress(i,u){let t=await this.db.selectFrom("threads").select(["last_progress_at","run_started_at"]).where("id","=",i).where("organization_id","=",u).executeTakeFirst();if(!t)return null;let f=(l)=>{if(l==null)return null;let c=(l instanceof Date?l:new Date(l)).getTime();return Number.isNaN(c)?null:c};return{lastProgressAt:f(t.last_progress_at),runStartedAt:f(t.run_started_at)}}async getRunFence(i){return(await this.db.selectFrom("threads").select("run_fence_token").where("id","=",i).executeTakeFirst())?.run_fence_token??null}async setRunFence(i,u){await this.db.updateTable("threads").set(u===null?{run_fence_token:null,run_acked_seq:null}:{run_fence_token:u,run_acked_seq:null,status:"in_progress"}).where("id","=",i).execute()}async setCancelRequested(i,u){await this.db.updateTable("threads").set({cancel_requested_at:O50`now()`}).where("id","=",i).where("organization_id","=",u).execute()}async getCancelRequestedAt(i){let t=(await this.db.selectFrom("threads").select("cancel_requested_at").where("id","=",i).executeTakeFirst())?.cancel_requested_at;if(t==null)return null;return t instanceof Date?t:new Date(t)}async clearCancelRequested(i){await this.db.updateTable("threads").set({cancel_requested_at:null}).where("id","=",i).execute()}async bumpAckedSeq(i,u,t,f){await this.db.updateTable("threads").set({run_acked_seq:f}).where("id","=",i).where("organization_id","=",u).where((l)=>l.or([l("run_acked_seq","is",null),l("run_acked_seq","<",f)])).execute()}async getAckedSeq(i,u){return(await this.db.selectFrom("threads").select("run_acked_seq").where("id","=",i).where("organization_id","=",u).executeTakeFirst())?.run_acked_seq??0}threadFromDbRow(i){let u={};if(i.metadata!=null)if(typeof i.metadata==="string")try{u=JSON.parse(i.metadata)}catch(t){console.error(`Failed to parse metadata for thread ${i.id}:`,i.metadata,t)}else u=i.metadata;return{id:i.id,organization_id:i.organization_id,title:i.title,description:i.description,status:i.status,trigger_id:i.trigger_id??null,context_start_message_id:i.context_start_message_id??null,run_owner_pod:i.run_owner_pod??null,run_config:i.run_config??null,run_started_at:i.run_started_at?IQ(i.run_started_at):null,virtual_mcp_id:i.virtual_mcp_id??"",branch:i.branch??null,sandbox_provider_kind:i.sandbox_provider_kind??null,harness_id:i.harness_id??null,metadata:u,created_at:IQ(i.created_at),updated_at:IQ(i.updated_at),created_by:i.created_by,updated_by:i.updated_by??void 0,hidden:!!i.hidden,message_storage_version:i.message_storage_version??1,link_transport:i.link_transport??null}}messageFromDbRow(i){let u,t;try{u=i.metadata?JSON.parse(i.metadata):void 0}catch(f){console.error(`Failed to parse metadata for message ${i.id}:`,i.metadata,f),u=void 0}try{t=typeof i.parts==="string"?JSON.parse(i.parts):i.parts}catch(f){console.error(`Failed to parse parts for message ${i.id}:`,i.parts,f),t=[]}return{id:i.id,thread_id:i.thread_id,metadata:u,parts:t,role:i.role,created_at:IQ(i.created_at),updated_at:IQ(i.updated_at)}}}var Epi=g(()=>{c$();W7();g50()});import{sql as $pi}from"kysely";function Swi(i){if(i==null)return null;return typeof i==="string"?i:i.toISOString()}function jwi(i){return`msg_async_stub_${i}`}async function wpi(i,u){await i.deleteFrom("thread_messages").where("id","=",jwi(u)).execute(),await i.deleteFrom("thread_message_parts").where("message_id","=",jwi(u)).execute()}function B9f(i){if(i==null)return null;if(typeof i!=="string")return i;try{return JSON.parse(i)}catch{return null}}function dpi(i){return{id:i.id,interactionId:i.interaction_id??null,toolCallId:i.tool_call_id,organizationId:i.organization_id,threadId:i.thread_id,messageId:i.message_id??null,provider:i.provider,modelId:i.model_id,query:i.query,status:i.status,attempts:i.attempts??0,lastPolledAt:Swi(i.last_polled_at),lastError:i.last_error??null,inputTokens:i.input_tokens??null,outputTokens:i.output_tokens??null,citations:B9f(i.citations),resultUri:i.result_uri??null,resultPreview:i.result_preview??null,resultContent:i.result_content??null,createdAt:Swi(i.created_at)??"",updatedAt:Swi(i.updated_at)??"",completedAt:Swi(i.completed_at)}}class hpi{inner;organizationId;constructor(i,u){this.inner=i;this.organizationId=u}requireOrg(){if(!this.organizationId)throw Error("OrgScopedAsyncResearchJobStorage: requires an authenticated organization");return this.organizationId}setOrganizationId(i){this.organizationId=i}upsertPending(i){return this.inner.upsertPending({organizationId:this.requireOrg(),...i})}findByToolCall(i){return this.inner.findByToolCall(this.requireOrg(),i)}markPolling(i,u,t){return this.inner.markPolling(this.requireOrg(),i,u,t)}recordPoll(i,u){return this.inner.recordPoll(this.requireOrg(),i,u)}markCompleted(i,u){return this.inner.markCompleted(this.requireOrg(),i,u)}markFailed(i,u){return this.inner.markFailed(this.requireOrg(),i,u)}markCancelled(i,u){return this.inner.markCancelled(this.requireOrg(),i,u)}}class Xm{db;constructor(i){this.db=i}async upsertPending(i){let u=new Date().toISOString(),t=await this.db.insertInto("async_research_jobs").values({organization_id:i.organizationId,thread_id:i.threadId,tool_call_id:i.toolCallId,message_id:i.messageId??null,provider:i.provider,model_id:i.modelId,query:i.query,status:"pending",attempts:0,updated_at:u}).onConflict((l)=>l.columns(["organization_id","tool_call_id"]).doNothing()).returningAll().executeTakeFirst();if(t)return dpi(t);let f=await this.db.selectFrom("async_research_jobs").selectAll().where("organization_id","=",i.organizationId).where("tool_call_id","=",i.toolCallId).executeTakeFirstOrThrow();return dpi(f)}async findByToolCall(i,u){let t=await this.db.selectFrom("async_research_jobs").selectAll().where("organization_id","=",i).where("tool_call_id","=",u).executeTakeFirst();return t?dpi(t):null}async markPolling(i,u,t,f){let l=new Date().toISOString();await this.db.transaction().execute(async(c)=>{if(await c.updateTable("async_research_jobs").set({status:"polling",interaction_id:t,last_polled_at:l,updated_at:l}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),(await c.selectFrom("threads").select("message_storage_version").where("id","=",f.threadId).where("organization_id","=",i).executeTakeFirst())?.message_storage_version!==2)return;let $=jwi(u);await c.insertInto("thread_message_parts").values([{id:`${f.threadId}:${$}:0`,seq:0,org_id:i,thread_id:f.threadId,run_id:f.threadId,message_id:$,role:"assistant",kind:"tool_call",payload:JSON.stringify({type:`tool-${f.toolName}`,toolCallId:u,state:"input-available",input:{query:f.query}}),payload_ref:null,metadata:null,created_at:l},{id:`${f.threadId}:${$}:finish`,seq:1,org_id:i,thread_id:f.threadId,run_id:f.threadId,message_id:$,role:"assistant",kind:"finish",payload:JSON.stringify({}),payload_ref:null,metadata:null,created_at:l}]).onConflict((w)=>w.column("id").doNothing()).execute()})}async recordPoll(i,u,t){let f=new Date().toISOString();await this.db.updateTable("async_research_jobs").set({attempts:$pi`attempts + 1`,last_polled_at:f,...t!==void 0?{last_error:t}:{},updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute()}async markCompleted(i,u,t){let f=new Date().toISOString();await this.db.transaction().execute(async(l)=>{await l.updateTable("async_research_jobs").set({status:"completed",input_tokens:t.inputTokens,output_tokens:t.outputTokens,citations:JSON.stringify(t.citations),result_uri:t.resultUri,result_preview:t.resultPreview,result_content:t.resultContent,completed_at:f,updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),await wpi(l,u)})}async markFailed(i,u,t){let f=new Date().toISOString();await this.db.transaction().execute(async(l)=>{await l.updateTable("async_research_jobs").set({status:"failed",last_error:t,completed_at:f,updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),await wpi(l,u)})}async markCancelled(i,u,t){let f=new Date().toISOString();await this.db.transaction().execute(async(l)=>{await l.updateTable("async_research_jobs").set({status:"cancelled",last_error:t??null,completed_at:f,updated_at:f}).where("organization_id","=",i).where("tool_call_id","=",u).execute(),await wpi(l,u)})}async sweepAbandoned(i){let u=new Date(Date.now()-i).toISOString(),t=new Date().toISOString();return await this.db.transaction().execute(async(f)=>{let l=await f.updateTable("async_research_jobs").set({status:"abandoned",completed_at:t,updated_at:t,last_error:$pi`COALESCE(last_error, '') || ' [abandoned by sweeper]'`}).where("status","in",["pending","polling"]).where($pi`COALESCE(last_polled_at, created_at) < ${u}::timestamptz`).returning(["tool_call_id"]).execute();if(l.length===0)return 0;let c=l.map((E)=>jwi(E.tool_call_id));return await f.deleteFrom("thread_messages").where("id","in",c).execute(),await f.deleteFrom("thread_message_parts").where("message_id","in",c).execute(),l.length})}}var _pi=()=>{};function Kwi(){let i=new Map;function u(f,l){let c=i.get(l);if(c)return c;let E=new k1({name:`outbound-client-${l}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}},jsonSchemaValidator:Xl});E.onclose=()=>{i.delete(l)};let $=E.connect(f).then(()=>E).catch((w)=>{throw i.delete(l),w});return i.set(l,$),$}return Object.assign(u,{[Symbol.asyncDispose]:async()=>{let f=[];for(let[l,c]of i)f.push(c.then((E)=>E.close()).catch(()=>{}));await Promise.all(f),i.clear()}})}var vpi=g(()=>{zh();i$()});import{sql as F9f}from"kysely";function N50(i){return i instanceof Date?i.toISOString():String(i)}class Dpi{db;vault;constructor(i,u){this.db=i;this.vault=u}rowToInfo(i){return{id:i.id,organizationId:i.organization_id,scope:i.scope,userId:i.user_id,name:i.name,description:i.description,createdBy:i.created_by,createdAt:N50(i.created_at),updatedBy:i.updated_by,updatedAt:N50(i.updated_at)}}assertVisible(i,u){if(i.scope==="user"&&i.user_id!==u)throw new kQ(i.id)}async create(i){let u=Jf("sec"),t=await this.vault.encrypt(i.value),f=new Date,l=await this.db.insertInto("secrets").values({id:u,organization_id:i.organizationId,scope:i.scope.kind,user_id:i.scope.kind==="user"?i.scope.userId:null,name:i.name,encrypted_value:t,description:i.description??null,created_by:i.createdBy,created_at:f,updated_by:i.createdBy,updated_at:f}).returning(Jwi).executeTakeFirstOrThrow();return this.rowToInfo(l)}async update(i){let u=await this.db.selectFrom("secrets").where("id","=",i.id).where("organization_id","=",i.organizationId).select(["id","scope","user_id"]).executeTakeFirst();if(!u)throw new Yv(i.id);this.assertVisible(u,i.callerUserId);let t={updated_by:i.updatedBy,updated_at:new Date};if(i.value!==void 0)t.encrypted_value=await this.vault.encrypt(i.value);if(i.description!==void 0)t.description=i.description;let f=await this.db.updateTable("secrets").set(t).where("id","=",i.id).where("organization_id","=",i.organizationId).returning(Jwi).executeTakeFirstOrThrow();return this.rowToInfo(f)}async delete(i,u,t){let f=await this.db.selectFrom("secrets").where("id","=",i).where("organization_id","=",u).select(["id","scope","user_id"]).executeTakeFirst();if(!f)throw new Yv(i);this.assertVisible(f,t),await this.db.deleteFrom("secrets").where("id","=",i).where("organization_id","=",u).execute()}async list(i){let u=this.db.selectFrom("secrets").where("organization_id","=",i.organizationId).select(Jwi);if(i.scope?.kind==="user")u=u.where("scope","=","user").where("user_id","=",i.scope.userId);else if(i.scope?.kind==="organization")u=u.where("scope","=","organization");else u=u.where((f)=>f.or([f("scope","=","organization"),f.and([f("scope","=","user"),f("user_id","=",i.callerUserId)])]));return(await u.orderBy("created_at","desc").execute()).map((f)=>this.rowToInfo(f))}async findById(i,u,t){let f=await this.db.selectFrom("secrets").where("id","=",i).where("organization_id","=",u).select(Jwi).executeTakeFirst();if(!f)throw new Yv(i);return this.assertVisible(f,t),this.rowToInfo(f)}async resolveById(i,u,t){let f=await this.db.selectFrom("secrets").where("id","=",i).where("organization_id","=",u).selectAll().executeTakeFirst();if(!f)throw new Yv(i);this.assertVisible(f,t);let l=await this.vault.decrypt(f.encrypted_value);return{info:this.rowToInfo(f),value:l}}async resolveByName(i){let u=this.db.selectFrom("secrets").where("organization_id","=",i.organizationId).where("scope","=",i.scope.kind).where(F9f`lower(name) = lower(${i.name})`).selectAll();if(i.scope.kind==="user")u=u.where("user_id","=",i.scope.userId);let t=await u.executeTakeFirst();if(!t)throw new Yv(`${i.scope.kind}:${i.name}`);let f=await this.vault.decrypt(t.encrypted_value);return{info:this.rowToInfo(t),value:f}}}var Jwi,Yv,kQ;var Xwi=g(()=>{c$();Jwi=["id","organization_id","scope","user_id","name","description","created_by","created_at","updated_by","updated_at"];Yv=class Yv extends Error{constructor(i){super(`Secret ${i} not found`);this.name="SecretNotFoundError"}};kQ=class kQ extends Error{constructor(i){super(`Access denied for secret ${i}`);this.name="SecretAccessDeniedError"}}});import{sql as U9f}from"kysely";function y50(i){return i instanceof Date?i.toISOString():String(i)}class npi{db;vault;constructor(i,u){this.db=i;this.vault=u}rowToInfo(i){return{id:i.id,organizationId:i.organization_id,name:i.name,description:i.description,bucket:i.bucket,region:i.region,endpoint:i.endpoint,forcePathStyle:i.force_path_style,prefix:i.prefix,publicUrlBase:i.public_url_base,credentialType:i.credential_type??"static",refreshUrl:i.refresh_url,siteSlug:i.site_slug,createdBy:i.created_by,createdAt:y50(i.created_at),updatedBy:i.updated_by,updatedAt:y50(i.updated_at)}}async create(i){let u=Jf("fcfg"),t=await this.vault.encrypt(JSON.stringify(i.credentials)),f=new Date,l=await this.db.insertInto("org_file_configs").values({id:u,organization_id:i.organizationId,name:i.name,description:i.description??null,bucket:i.bucket,region:i.region,endpoint:i.endpoint??null,force_path_style:i.forcePathStyle??!1,prefix:i.prefix??null,public_url_base:i.publicUrlBase??null,credential_type:i.credentials.type,refresh_url:i.refreshUrl??null,site_slug:i.siteSlug??null,encrypted_credentials:t,created_by:i.createdBy,created_at:f,updated_by:i.createdBy,updated_at:f}).returning(Lwi).executeTakeFirstOrThrow();return this.rowToInfo(l)}async update(i){if(!await this.db.selectFrom("org_file_configs").where("id","=",i.id).where("organization_id","=",i.organizationId).select(["id"]).executeTakeFirst())throw new GQ(i.id);let t={updated_by:i.updatedBy,updated_at:new Date};if(i.name!==void 0)t.name=i.name;if(i.description!==void 0)t.description=i.description;if(i.bucket!==void 0)t.bucket=i.bucket;if(i.region!==void 0)t.region=i.region;if(i.endpoint!==void 0)t.endpoint=i.endpoint;if(i.forcePathStyle!==void 0)t.force_path_style=i.forcePathStyle;if(i.prefix!==void 0)t.prefix=i.prefix;if(i.publicUrlBase!==void 0)t.public_url_base=i.publicUrlBase;if(i.refreshUrl!==void 0)t.refresh_url=i.refreshUrl;if(i.siteSlug!==void 0)t.site_slug=i.siteSlug;if(i.credentials!==void 0)t.credential_type=i.credentials.type,t.encrypted_credentials=await this.vault.encrypt(JSON.stringify(i.credentials));let f=await this.db.updateTable("org_file_configs").set(t).where("id","=",i.id).where("organization_id","=",i.organizationId).returning(Lwi).executeTakeFirstOrThrow();return this.rowToInfo(f)}async delete(i,u){if(!await this.db.selectFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).select(["id"]).executeTakeFirst())throw new GQ(i);await this.db.deleteFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).execute()}async list(i){return(await this.db.selectFrom("org_file_configs").where("organization_id","=",i).select(Lwi).orderBy("created_at","desc").execute()).map((t)=>this.rowToInfo(t))}async findById(i,u){let t=await this.db.selectFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).select(Lwi).executeTakeFirst();if(!t)throw new GQ(i);return this.rowToInfo(t)}async resolveById(i,u){let t=await this.db.selectFrom("org_file_configs").where("id","=",i).where("organization_id","=",u).selectAll().executeTakeFirst();if(!t)throw new GQ(i);return{info:this.rowToInfo(t),credentials:await this.decodeCredentials(t)}}async resolveByName(i){let u=await this.db.selectFrom("org_file_configs").where("organization_id","=",i.organizationId).where(U9f`lower(name) = lower(${i.name})`).selectAll().executeTakeFirst();if(!u)throw new GQ(i.name);return{info:this.rowToInfo(u),credentials:await this.decodeCredentials(u)}}async decodeCredentials(i){if(i.credential_type==="managed")return{type:"managed"};let u=await this.vault.decrypt(i.encrypted_credentials),t=JSON.parse(u);if((i.credential_type??"static")==="sts-session")return{type:"sts-session",apiKey:String(t.apiKey)};return{type:"static",accessKeyId:String(t.accessKeyId),secretAccessKey:String(t.secretAccessKey)}}}var Lwi,GQ;var Z50=g(()=>{c$();Lwi=["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"];GQ=class GQ extends Error{constructor(i){super(`File config ${i} not found`);this.name="OrgFileConfigNotFoundError"}}});function Wwi(i){return gpi.test(i)}var gpi;var Ywi=g(()=>{gpi=/^[a-z0-9][a-z0-9-]{0,59}$/});function T50(i){return i instanceof Date?i.toISOString():String(i)}function Opi(i){return{slug:i.slug,organizationId:i.organization_id,source:i.source,createdBy:i.created_by,createdAt:T50(i.created_at),updatedBy:i.updated_by,updatedAt:T50(i.updated_at)}}class ypi{db;constructor(i){this.db=i}async claimSite(i){if(!Wwi(i.slug))throw Error(`Invalid site slug "${i.slug}" \u2014 must be 1-60 chars of lowercase letters, digits, or hyphens, starting with a letter or digit`);let u=new Date,t=await this.db.insertInto("org_sites").values({slug:i.slug,organization_id:i.organizationId,source:i.source??"deco-import",created_by:i.by,created_at:u,updated_by:i.by,updated_at:u}).onConflict((c)=>c.column("slug").doNothing()).returningAll().executeTakeFirst();if(t)return Opi(t);let f=await this.getBySlug(i.slug);if(!f)throw new Npi(i.slug,"unknown");if(f.organizationId!==i.organizationId)throw new Npi(i.slug,f.organizationId);let l=await this.db.updateTable("org_sites").set({source:i.source??f.source,updated_by:i.by,updated_at:u}).where("slug","=",i.slug).where("organization_id","=",i.organizationId).returningAll().executeTakeFirstOrThrow();return Opi(l)}async getBySlug(i){let u=await this.db.selectFrom("org_sites").selectAll().where("slug","=",i).executeTakeFirst();return u?Opi(u):null}async isOwnedBy(i,u){return!!await this.db.selectFrom("org_sites").select("slug").where("slug","=",i).where("organization_id","=",u).executeTakeFirst()}}var Npi;var B50=g(()=>{Ywi();Npi=class Npi extends Error{slug;ownerOrganizationId;constructor(i,u){super(`Site slug "${i}" is already owned by another organization`);this.slug=i;this.ownerOrganizationId=u;this.name="OrgSiteConflictError"}}});function P9f(i){if(i&&typeof i==="object"&&!Array.isArray(i)){let u=i.text;if(typeof u==="string"&&u.trim())return u.trim()}return null}function I9f(i){if(i.status!=="in_progress")return!1;if(i.threads.length===0)return!1;if(i.threads.some((u)=>u.hasPreview))return!1;return i.threads.every((u)=>u.status!==null&&A9f.has(u.status))}function x9f(i){let u=typeof i==="string"?(()=>{try{return JSON.parse(i)}catch{return null}})():i;if(!u||typeof u!=="object")return!1;let t=u.githubRepo?.url;return typeof t==="string"&&t.length>0}class Lm{db;constructor(i){this.db=i}async list(i){let t=(await this.db.selectFrom("task_board_items").selectAll().where("organization_id","=",i).orderBy("created_at","desc").execute()).map((f)=>this.itemFromDbRow(f));return await this.attachThreads(t,i),t}async getById(i,u){let t=await this.db.selectFrom("task_board_items").selectAll().where("id","=",i).where("organization_id","=",u).executeTakeFirst();if(!t)return null;let f=this.itemFromDbRow(t);return await this.attachThreads([f],u),f}async create(i){let u=Jf("board"),t=new Date().toISOString(),f=await this.db.insertInto("task_board_items").values({id:u,organization_id:i.organizationId,title:i.title,description:i.description??null,status:i.status??"triage",priority:i.priority??"medium",assignee_id:i.assigneeId??null,assigned_by:i.assignedBy??null,due_date:i.dueDate??null,created_by:i.by,created_at:t,updated_by:i.by,updated_at:t}).returningAll().executeTakeFirstOrThrow();return this.itemFromDbRow(f)}async update(i,u,t,f){let l=await this.db.updateTable("task_board_items").set({...t.title!==void 0?{title:t.title}:{},...t.description!==void 0?{description:t.description}:{},...t.status!==void 0?{status:t.status}:{},...t.priority!==void 0?{priority:t.priority}:{},...t.assigneeId!==void 0?{assignee_id:t.assigneeId}:{},...t.assignedBy!==void 0?{assigned_by:t.assignedBy}:{},...t.dueDate!==void 0?{due_date:t.dueDate}:{},updated_by:f,updated_at:new Date().toISOString()}).where("id","=",i).where("organization_id","=",u).returningAll().executeTakeFirstOrThrow(),c=this.itemFromDbRow(l);return await this.attachThreads([c],u),c}async delete(i,u){await this.db.transaction().execute(async(t)=>{await t.deleteFrom("task_board_item_threads").where("task_board_item_id","=",i).where("organization_id","=",u).execute(),await t.deleteFrom("task_board_item_prs").where("task_board_item_id","=",i).where("organization_id","=",u).execute(),await t.deleteFrom("task_board_items").where("id","=",i).where("organization_id","=",u).execute()})}async linkThread(i,u,t){await this.db.insertInto("task_board_item_threads").values({task_board_item_id:i,thread_id:u,organization_id:t}).onConflict((f)=>f.columns(["task_board_item_id","thread_id"]).doNothing()).execute()}async linkedTaskIds(i,u){return(await this.db.selectFrom("task_board_item_threads").select("task_board_item_id as taskId").where("thread_id","=",i).where("organization_id","=",u).execute()).map((f)=>f.taskId)}async linkPr(i){await this.db.insertInto("task_board_item_prs").values({task_board_item_id:i.taskBoardItemId,organization_id:i.organizationId,url:i.url,pr_number:i.prNumber,repo_owner:i.repoOwner,repo_name:i.repoName,connection_id:i.connectionId??null}).onConflict((u)=>u.columns(["task_board_item_id","url"]).doNothing()).execute()}async listPrs(i,u){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","created_at as createdAt"]).where("task_board_item_id","=",i).where("organization_id","=",u).orderBy("created_at","desc").execute()).map((f)=>({url:f.url,number:f.prNumber,repoOwner:f.repoOwner,repoName:f.repoName,connectionId:f.connectionId??null,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}))}async advanceLinkedTasksToReviewOnThreadFinish(i,u){let t=[];for(let f of await this.linkedTaskIds(i,u)){let l=await this.getById(f,u);if(!l||!I9f(l))continue;t.push(await this.update(f,u,{status:"in_review"},l.updatedBy))}return t}async reopenLinkedTasksOnThreadRun(i,u){let t=[];for(let f of await this.linkedTaskIds(i,u)){let l=await this.getById(f,u);if(!l||l.status!=="in_review")continue;t.push(await this.update(f,u,{status:"in_progress"},l.updatedBy))}return t}async attachThreads(i,u){if(i.length===0)return;let t=i.map((c)=>c.id),f=await this.db.selectFrom("task_board_item_threads as link").innerJoin("threads as t","t.id","link.thread_id").leftJoinLateral((c)=>c.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"),(c)=>c.onTrue()).select(["link.task_board_item_id as taskId","link.thread_id as threadId","link.created_at as createdAt","t.status as status","t.title as title","t.virtual_mcp_id as virtualMcpId","t.metadata as metadata","lastmsg.payload as lastMessagePayload"]).where("link.organization_id","=",u).where("link.task_board_item_id","in",t).orderBy("link.created_at","desc").execute(),l=new Map;for(let c of f){let E={threadId:c.threadId,virtualMcpId:c.virtualMcpId??null,status:c.status??null,title:c.title??null,lastMessage:P9f(c.lastMessagePayload),hasPreview:x9f(c.metadata),createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():c.createdAt},$=l.get(c.taskId);if($)$.push(E);else l.set(c.taskId,[E])}for(let c of i)c.threads=l.get(c.id)??[]}itemFromDbRow(i){return{id:i.id,organizationId:i.organization_id,title:i.title,description:i.description,status:i.status,priority:i.priority,assigneeId:i.assignee_id,assignedBy:i.assigned_by,dueDate:i.due_date instanceof Date?i.due_date.toISOString():i.due_date,threads:[],createdBy:i.created_by,createdAt:i.created_at instanceof Date?i.created_at.toISOString():i.created_at,updatedBy:i.updated_by,updatedAt:i.updated_at instanceof Date?i.updated_at.toISOString():i.updated_at}}}var A9f;var Zpi=g(()=>{c$();A9f=new Set(["completed","failed","expired"])});class Tpi{db;constructor(i){this.db=i}async create(i,u,t){let f=crypto.randomUUID(),l=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:f,organization_id:u,user_id:t,code_verifier:i,expires_at:l,created_at:new Date}).execute(),f}async consume(i,u,t){let f=await this.db.deleteFrom("oauth_pkce_states").where("id","=",i).where("organization_id","=",u).where("user_id","=",t).returningAll().executeTakeFirst();if(!f)throw Error("Invalid or expired OAuth state token");if((f.expires_at instanceof Date?f.expires_at:new Date(f.expires_at))<new Date)throw Error("OAuth state token has expired");return f.code_verifier}}function Qv(i){if(i==null)return"unknown error";if(typeof i==="string")return i;if(i instanceof Error)return i.message;return JSON.stringify(i)}function Qwi(i){if(i===null||typeof i==="string"||typeof i==="number"||typeof i==="boolean")return!0;if(Array.isArray(i))return i.every(Qwi);if(typeof i==="object")return Object.entries(i).every(([u,t])=>typeof u==="string"&&(t===void 0||Qwi(t)));return!1}function Bpi(i){return Array.isArray(i)&&i.every(Qwi)}function Wm(i){return i!=null&&typeof i==="object"&&Object.entries(i).every(([u,t])=>typeof u==="string"&&(t===void 0||Qwi(t)))}var a50="vercel.ai.error",k9f,F50,U50,Bu,o50="AI_APICallError",s50,G9f,P50,A50,Dt,p50="AI_EmptyResponseBodyError",iD0,S9f,I50,x50,zwi,uD0="AI_InvalidArgumentError",tD0,j9f,k50,G50,Y7,fD0="AI_InvalidPromptError",lD0,K9f,S50,j50,Z3,cD0="AI_InvalidResponseDataError",ED0,J9f,K50,J50,SQ,$D0="AI_JSONParseError",wD0,X9f,X50,L50,E8,dD0="AI_LoadAPIKeyError",hD0,L9f,W50,Y50,fd,_D0="AI_LoadSettingError",vD0,W9f,Q50,z50,DD0,nD0="AI_NoContentGeneratedError",gD0,Y9f,H50,R50,OD0,ND0="AI_NoSuchModelError",yD0,Q9f,b50,C50,Lf,ZD0="AI_TooManyEmbeddingValuesForCallError",TD0,z9f,M50,q50,jQ,BD0="AI_TypeValidationError",FD0,H9f,V50,r50,Bl,UD0="AI_UnsupportedFunctionalityError",PD0,R9f,m50,e50,Ff;var eu=g(()=>{k9f=Symbol.for(a50),Bu=class i extends(U50=Error,F50=k9f,U50){constructor({name:u,message:t,cause:f}){super(t);this[F50]=!0,this.name=u,this.cause=f}static isInstance(u){return i.hasMarker(u,a50)}static hasMarker(u,t){let f=Symbol.for(t);return u!=null&&typeof u==="object"&&f in u&&typeof u[f]==="boolean"&&u[f]===!0}},s50=`vercel.ai.error.${o50}`,G9f=Symbol.for(s50),Dt=class extends(A50=Bu,P50=G9f,A50){constructor({message:i,url:u,requestBodyValues:t,statusCode:f,responseHeaders:l,responseBody:c,cause:E,isRetryable:$=f!=null&&(f===408||f===409||f===429||f>=500),data:w}){super({name:o50,message:i,cause:E});this[P50]=!0,this.url=u,this.requestBodyValues=t,this.statusCode=f,this.responseHeaders=l,this.responseBody=c,this.isRetryable=$,this.data=w}static isInstance(i){return Bu.hasMarker(i,s50)}},iD0=`vercel.ai.error.${p50}`,S9f=Symbol.for(iD0),zwi=class extends(x50=Bu,I50=S9f,x50){constructor({message:i="Empty response body"}={}){super({name:p50,message:i});this[I50]=!0}static isInstance(i){return Bu.hasMarker(i,iD0)}};tD0=`vercel.ai.error.${uD0}`,j9f=Symbol.for(tD0),Y7=class extends(G50=Bu,k50=j9f,G50){constructor({message:i,cause:u,argument:t}){super({name:uD0,message:i,cause:u});this[k50]=!0,this.argument=t}static isInstance(i){return Bu.hasMarker(i,tD0)}},lD0=`vercel.ai.error.${fD0}`,K9f=Symbol.for(lD0),Z3=class extends(j50=Bu,S50=K9f,j50){constructor({prompt:i,message:u,cause:t}){super({name:fD0,message:`Invalid prompt: ${u}`,cause:t});this[S50]=!0,this.prompt=i}static isInstance(i){return Bu.hasMarker(i,lD0)}},ED0=`vercel.ai.error.${cD0}`,J9f=Symbol.for(ED0),SQ=class extends(J50=Bu,K50=J9f,J50){constructor({data:i,message:u=`Invalid response data: ${JSON.stringify(i)}.`}){super({name:cD0,message:u});this[K50]=!0,this.data=i}static isInstance(i){return Bu.hasMarker(i,ED0)}},wD0=`vercel.ai.error.${$D0}`,X9f=Symbol.for(wD0),E8=class extends(L50=Bu,X50=X9f,L50){constructor({text:i,cause:u}){super({name:$D0,message:`JSON parsing failed: Text: ${i}.
86468
86468
  Error message: ${Qv(u)}`,cause:u});this[X50]=!0,this.text=i}static isInstance(i){return Bu.hasMarker(i,wD0)}},hD0=`vercel.ai.error.${dD0}`,L9f=Symbol.for(hD0),fd=class extends(Y50=Bu,W50=L9f,Y50){constructor({message:i}){super({name:dD0,message:i});this[W50]=!0}static isInstance(i){return Bu.hasMarker(i,hD0)}},vD0=`vercel.ai.error.${_D0}`,W9f=Symbol.for(vD0),DD0=class extends(z50=Bu,Q50=W9f,z50){constructor({message:i}){super({name:_D0,message:i});this[Q50]=!0}static isInstance(i){return Bu.hasMarker(i,vD0)}},gD0=`vercel.ai.error.${nD0}`,Y9f=Symbol.for(gD0),OD0=class extends(R50=Bu,H50=Y9f,R50){constructor({message:i="No content generated."}={}){super({name:nD0,message:i});this[H50]=!0}static isInstance(i){return Bu.hasMarker(i,gD0)}},yD0=`vercel.ai.error.${ND0}`,Q9f=Symbol.for(yD0),Lf=class extends(C50=Bu,b50=Q9f,C50){constructor({errorName:i=ND0,modelId:u,modelType:t,message:f=`No such ${t}: ${u}`}){super({name:i,message:f});this[b50]=!0,this.modelId=u,this.modelType=t}static isInstance(i){return Bu.hasMarker(i,yD0)}},TD0=`vercel.ai.error.${ZD0}`,z9f=Symbol.for(TD0),jQ=class extends(q50=Bu,M50=z9f,q50){constructor(i){super({name:ZD0,message:`Too many values for a single embedding call. The ${i.provider} model "${i.modelId}" can only embed up to ${i.maxEmbeddingsPerCall} values per call, but ${i.values.length} values were provided.`});this[M50]=!0,this.provider=i.provider,this.modelId=i.modelId,this.maxEmbeddingsPerCall=i.maxEmbeddingsPerCall,this.values=i.values}static isInstance(i){return Bu.hasMarker(i,TD0)}},FD0=`vercel.ai.error.${BD0}`,H9f=Symbol.for(FD0),Bl=class i extends(r50=Bu,V50=H9f,r50){constructor({value:u,cause:t,context:f}){let l="Type validation failed";if(f==null?void 0:f.field)l+=` for ${f.field}`;if((f==null?void 0:f.entityName)||(f==null?void 0:f.entityId)){l+=" (";let c=[];if(f.entityName)c.push(f.entityName);if(f.entityId)c.push(`id: "${f.entityId}"`);l+=c.join(", "),l+=")"}super({name:BD0,message:`${l}: Value: ${JSON.stringify(u)}.
86469
86469
  Error message: ${Qv(t)}`,cause:t});this[V50]=!0,this.value=u,this.context=f}static isInstance(u){return Bu.hasMarker(u,FD0)}static wrap({value:u,cause:t,context:f}){var l,c,E;if(i.isInstance(t)&&t.value===u&&((l=t.context)==null?void 0:l.field)===(f==null?void 0:f.field)&&((c=t.context)==null?void 0:c.entityName)===(f==null?void 0:f.entityName)&&((E=t.context)==null?void 0:E.entityId)===(f==null?void 0:f.entityId))return t;return new i({value:u,cause:t,context:f})}},PD0=`vercel.ai.error.${UD0}`,R9f=Symbol.for(PD0),Ff=class extends(e50=Bu,m50=R9f,e50){constructor({functionality:i,message:u=`'${i}' functionality not supported.`}){super({name:UD0,message:u});this[m50]=!0,this.functionality=i}static isInstance(i){return Bu.hasMarker(i,PD0)}}});import*as Cwi from"zod/v4";import{ZodFirstPartyTypeKind as Uf}from"zod/v3";import{ZodFirstPartyTypeKind as cOf}from"zod/v3";import{ZodFirstPartyTypeKind as Hwi}from"zod/v3";function it(...i){return i.reduce((u,t)=>({...u,...t!=null?t:{}}),{})}function Rwi({tools:i=[],providerToolNames:u,resolveProviderToolName:t}){var f;let l={},c={};for(let E of i)if(E.type==="provider"){let $=(f=t==null?void 0:t(E))!=null?f:(E.id in u)?u[E.id]:void 0;if($==null)continue;l[E.name]=$,c[$]=E.name}return{toProviderToolName:(E)=>{var $;return($=l[E])!=null?$:E},toCustomToolName:(E)=>{var $;return($=c[E])!=null?$:E}}}async function o$(i,u){if(i==null)return Promise.resolve();let t=u==null?void 0:u.abortSignal;return new Promise((f,l)=>{if(t==null?void 0:t.aborted){l(AD0());return}let c=setTimeout(()=>{E(),f()},i),E=()=>{clearTimeout(c),t==null||t.removeEventListener("abort",$)},$=()=>{E(),l(AD0())};t==null||t.addEventListener("abort",$)})}function AD0(){return new DOMException("Delay was aborted","AbortError")}function KQ(i){return Object.fromEntries([...i.headers])}function j1(i){let u=i.replace(/-/g,"+").replace(/_/g,"/"),t=C9f(u);return Uint8Array.from(t,(f)=>f.codePointAt(0))}function p$(i){let u="";for(let t=0;t<i.length;t++)u+=String.fromCodePoint(i[t]);return b9f(u)}function Zc(i){return i instanceof Uint8Array?p$(i):i}function jD0(i,u={}){let{useArrayBrackets:t=!0}=u,f=new FormData;for(let[l,c]of Object.entries(i)){if(c==null)continue;if(Array.isArray(c)){if(c.length===1){f.append(l,c[0]);continue}let E=t?`${l}[]`:l;for(let $ of c)f.append(E,$);continue}f.append(l,c)}return f}async function Ym(i){var u;try{await((u=i.body)==null?void 0:u.cancel())}catch(t){}}function q9f(i=globalThis){return i.window!=null}function V9f(i){let u;try{u=new URL(i)}catch(f){throw new yc({url:i,message:`Invalid URL: ${i}`})}if(u.protocol==="data:")return;if(u.protocol!=="http:"&&u.protocol!=="https:")throw new yc({url:i,message:`URL scheme must be http, https, or data, got ${u.protocol}`});let t=u.hostname.toLowerCase().replace(/\.+$/,"");if(!t)throw new yc({url:i,message:"URL must have a hostname"});if(t==="localhost"||t.endsWith(".local")||t.endsWith(".localhost"))throw new yc({url:i,message:`URL with hostname ${t} is not allowed`});if(t.startsWith("[")&&t.endsWith("]")){let f=t.slice(1,-1);if(m9f(f))throw new yc({url:i,message:`URL with IPv6 address ${t} is not allowed`});return}if(XD0(t)){if(LD0(t))throw new yc({url:i,message:`URL with IP address ${t} is not allowed`});return}}function XD0(i){let u=i.split(".");if(u.length!==4)return!1;return u.every((t)=>{let f=Number(t);return Number.isInteger(f)&&f>=0&&f<=255&&String(f)===t})}function LD0(i){let u=i.split(".").map(Number),[t,f,l]=u;if(t===0)return!0;if(t===10)return!0;if(t===100&&f>=64&&f<=127)return!0;if(t===127)return!0;if(t===169&&f===254)return!0;if(t===172&&f>=16&&f<=31)return!0;if(t===192&&f===0&&l===0)return!0;if(t===192&&f===168)return!0;if(t===198&&(f===18||f===19))return!0;if(t>=240)return!0;return!1}function r9f(i){let u=i.toLowerCase(),t=u.indexOf("%");if(t!==-1)u=u.slice(0,t);let f=u.split("::");if(f.length>2)return null;let l=(E)=>{if(E==="")return[];let $=[],w=E.split(":");for(let d=0;d<w.length;d++){let h=w[d];if(h.includes(".")){if(d!==w.length-1||!XD0(h))return null;let[_,v,D,n]=h.split(".").map(Number);$.push(_<<8|v,D<<8|n);continue}if(!/^[0-9a-f]{1,4}$/.test(h))return null;$.push(parseInt(h,16))}return $},c=l(f[0]);if(c===null)return null;if(f.length===2){let E=l(f[1]);if(E===null)return null;let $=8-c.length-E.length;if($<0)return null;return[...c,...Array($).fill(0),...E]}return c.length===8?c:null}function m9f(i){let u=r9f(i);if(u===null)return!0;let t=(l)=>u.slice(0,l).every((c)=>c===0);if(t(7)&&(u[7]===0||u[7]===1))return!0;if((u[0]&65024)===64512)return!0;if((u[0]&65472)===65152)return!0;if((u[0]&65472)===65216)return!0;if((u[0]&65280)===65280)return!0;if(t(6)||t(5)&&u[5]===65535||t(4)&&u[4]===65535&&u[5]===0||u[0]===100&&u[1]===65435&&u[2]===0&&u[3]===0&&u[4]===0&&u[5]===0||u[0]===100&&u[1]===65435&&u[2]===1){let l=u[6]>>8&255,c=u[6]&255,E=u[7]>>8&255,$=u[7]&255;return LD0(`${l}.${c}.${E}.${$}`)}return!1}async function Ipi({url:i,headers:u,abortSignal:t,maxRedirects:f=e9f}){let l={signal:t};if(u!==void 0)l.headers=u;let c=i;for(let E=0;E<=f;E++){V9f(c);let $=await fetch(c,{...l,redirect:"manual"});if($.type==="opaqueredirect"){if(!q9f())throw new yc({url:i,message:`Redirect from ${c} could not be validated and was blocked`});return await fetch(c,{...l,redirect:"follow"})}let w=$.headers.get("location");if($.status>=300&&$.status<400&&w){await Ym($),c=new URL(w,c).toString();continue}return $}throw new yc({url:i,message:`Too many redirects (max ${f})`})}async function xpi({response:i,url:u,maxBytes:t=bwi}){let f=i.headers.get("content-length");if(f!=null){let h=parseInt(f,10);if(!isNaN(h)&&h>t)throw await Ym(i),new yc({url:u,message:`Download of ${u} exceeded maximum size of ${t} bytes (Content-Length: ${h}).`})}let l=i.body;if(l==null)return new Uint8Array(0);let c=l.getReader(),E=[],$=0;try{while(!0){let{done:h,value:_}=await c.read();if(h)break;if($+=_.length,$>t)throw new yc({url:u,message:`Download of ${u} exceeded maximum size of ${t} bytes.`});E.push(_)}}finally{try{await c.cancel()}finally{c.releaseLock()}}let w=new Uint8Array($),d=0;for(let h of E)w.set(h,d),d+=h.length;return w}async function kpi(i,u){var t,f;try{let l=await Ipi({url:i,abortSignal:u==null?void 0:u.abortSignal});if(!l.ok)throw await Ym(l),new yc({url:i,statusCode:l.status,statusText:l.statusText});let c=await xpi({response:l,url:i,maxBytes:(t=u==null?void 0:u.maxBytes)!=null?t:bwi}),E=(f=l.headers.get("content-type"))!=null?f:void 0;return new Blob([c],E?{type:E}:void 0)}catch(l){if(yc.isInstance(l))throw l;throw new yc({url:i,cause:l})}}function JQ(i){if(i==null)return"unknown error";if(typeof i==="string")return i;if(i instanceof Error)return i.message;return JSON.stringify(i)}function a$(i){return(i instanceof Error||i instanceof DOMException)&&(i.name==="AbortError"||i.name==="ResponseAborted"||i.name==="TimeoutError")}function s9f(i){if(!(i instanceof Error))return!1;let u=i.code;if(typeof u==="string"&&o9f.includes(u))return!0;return!1}function WD0({error:i,url:u,requestBodyValues:t}){if(a$(i))return i;if(i instanceof TypeError&&a9f.includes(i.message.toLowerCase())){let f=i.cause;if(f!=null)return new Dt({message:`Cannot connect to API: ${f.message}`,cause:f,url:u,requestBodyValues:t,isRetryable:!0})}if(s9f(i))return new Dt({message:`Cannot connect to API: ${i.message}`,cause:i,url:u,requestBodyValues:t,isRetryable:!0});return i}function Q7(i=globalThis){var u,t,f;if(i.window)return"runtime/browser";if((u=i.navigator)==null?void 0:u.userAgent)return`runtime/${i.navigator.userAgent.toLowerCase()}`;if((f=(t=i.process)==null?void 0:t.versions)==null?void 0:f.node)return`runtime/node.js/${i.process.version.substring(0)}`;if(i.EdgeRuntime)return"runtime/vercel-edge";return"runtime/unknown"}function z7(i){if(i==null)return{};let u={};if(i instanceof Headers)i.forEach((t,f)=>{u[f.toLowerCase()]=t});else{if(!Array.isArray(i))i=Object.entries(i);for(let[t,f]of i)if(f!=null)u[t.toLowerCase()]=f}return u}function E4(i,...u){let t=new Headers(z7(i)),f=t.get("user-agent")||"";return t.set("user-agent",[f,...u].filter(Boolean).join(" ")),Object.fromEntries(t.entries())}function wy(i){return i!=null}function QD0(i,u){try{return new URL(i).origin===new URL(u).origin}catch(t){return!1}}function zD0({mediaType:i,url:u,supportedUrls:t}){return u=u.toLowerCase(),i=i.toLowerCase(),Object.entries(t).map(([f,l])=>{let c=f.toLowerCase();return c==="*"||c==="*/*"?{mediaTypePrefix:"",regexes:l}:{mediaTypePrefix:c.replace(/\*/,""),regexes:l}}).filter(({mediaTypePrefix:f})=>i.startsWith(f)).flatMap(({regexes:f})=>f).some((f)=>f.test(u))}function XQ({apiKey:i,environmentVariableName:u,apiKeyParameterName:t="apiKey",description:f}){if(typeof i==="string")return i;if(i!=null)throw new fd({message:`${f} API key must be a string.`});if(typeof process>"u")throw new fd({message:`${f} API key is missing. Pass it using the '${t}' parameter. Environment variables are not supported in this environment.`});if(i=process.env[u],i==null)throw new fd({message:`${f} API key is missing. Pass it using the '${t}' parameter or the ${u} environment variable.`});if(typeof i!=="string")throw new fd({message:`${f} API key must be a string. The value of the ${u} environment variable is not a string.`});return i}function zv({settingValue:i,environmentVariableName:u}){if(typeof i==="string")return i;if(i!=null||typeof process>"u")return;if(i=process.env[u],i==null||typeof i!=="string")return;return i}function HD0(i){var u;let[t,f=""]=i.toLowerCase().split("/");return(u={mpeg:"mp3","x-wav":"wav",opus:"ogg",mp4:"m4a","x-m4a":"m4a"}[f])!=null?u:f}function kD0(i){let u=JSON.parse(i);if(u===null||typeof u!=="object")return u;if(iOf.test(i)===!1&&uOf.test(i)===!1)return u;return tOf(u)}function tOf(i){let u=[i];while(u.length){let t=u;u=[];for(let f of t){if(Object.prototype.hasOwnProperty.call(f,"__proto__"))throw SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(f,"constructor")&&f.constructor!==null&&typeof f.constructor==="object"&&Object.prototype.hasOwnProperty.call(f.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let l in f){let c=f[l];if(c&&typeof c==="object")u.push(c)}}}return i}function Gpi(i){let{stackTraceLimit:u}=Error;try{Error.stackTraceLimit=0}catch(t){return kD0(i)}try{return kD0(i)}finally{Error.stackTraceLimit=u}}function Spi(i){if(i.type==="object"||Array.isArray(i.type)&&i.type.includes("object")){i.additionalProperties=!1;let{properties:t}=i;if(t!=null)for(let f of Object.keys(t))t[f]=$y(t[f])}if(i.items!=null)i.items=Array.isArray(i.items)?i.items.map($y):$y(i.items);if(i.anyOf!=null)i.anyOf=i.anyOf.map($y);if(i.allOf!=null)i.allOf=i.allOf.map($y);if(i.oneOf!=null)i.oneOf=i.oneOf.map($y);let{definitions:u}=i;if(u!=null)for(let t of Object.keys(u))u[t]=$y(u[t]);return i}function $y(i){if(typeof i==="boolean")return i;return Spi(i)}function ld(){return{}}function EOf(i,u){var t,f,l;let c={type:"array"};if(((t=i.type)==null?void 0:t._def)&&((l=(f=i.type)==null?void 0:f._def)==null?void 0:l.typeName)!==cOf.ZodAny)c.items=G4(i.type._def,{...u,currentPath:[...u.currentPath,"items"]});if(i.minLength)c.minItems=i.minLength.value;if(i.maxLength)c.maxItems=i.maxLength.value;if(i.exactLength)c.minItems=i.exactLength.value,c.maxItems=i.exactLength.value;return c}function $Of(i){let u={type:"integer",format:"int64"};if(!i.checks)return u;for(let t of i.checks)switch(t.kind){case"min":if(t.inclusive)u.minimum=t.value;else u.exclusiveMinimum=t.value;break;case"max":if(t.inclusive)u.maximum=t.value;else u.exclusiveMaximum=t.value;break;case"multipleOf":u.multipleOf=t.value;break}return u}function wOf(){return{type:"boolean"}}function RD0(i,u){return G4(i.type._def,u)}function bD0(i,u,t){let f=t!=null?t:u.dateStrategy;if(Array.isArray(f))return{anyOf:f.map((l,c)=>bD0(i,u,l))};switch(f){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return hOf(i)}}function _Of(i,u){return{...G4(i.innerType._def,u),default:i.defaultValue()}}function vOf(i,u){return u.effectStrategy==="input"?G4(i.schema._def,u):ld()}function DOf(i){return{type:"string",enum:Array.from(i.values)}}function gOf(i,u){let t=[G4(i.left._def,{...u,currentPath:[...u.currentPath,"allOf","0"]}),G4(i.right._def,{...u,currentPath:[...u.currentPath,"allOf","1"]})].filter((l)=>!!l),f=[];return t.forEach((l)=>{if(nOf(l))f.push(...l.allOf);else{let c=l;if("additionalProperties"in l&&l.additionalProperties===!1){let{additionalProperties:E,...$}=l;c=$}f.push(c)}}),f.length?{allOf:f}:void 0}function OOf(i){let u=typeof i.value;if(u!=="bigint"&&u!=="number"&&u!=="boolean"&&u!=="string")return{type:Array.isArray(i.value)?"array":"object"};return{type:u==="bigint"?"integer":u,const:i.value}}function CD0(i,u){let t={type:"string"};if(i.checks)for(let f of i.checks)switch(f.kind){case"min":t.minLength=typeof t.minLength==="number"?Math.max(t.minLength,f.value):f.value;break;case"max":t.maxLength=typeof t.maxLength==="number"?Math.min(t.maxLength,f.value):f.value;break;case"email":switch(u.emailStrategy){case"format:email":f_(t,"email",f.message,u);break;case"format:idn-email":f_(t,"idn-email",f.message,u);break;case"pattern:zod":d$(t,t_.email,f.message,u);break}break;case"url":f_(t,"uri",f.message,u);break;case"uuid":f_(t,"uuid",f.message,u);break;case"regex":d$(t,f.regex,f.message,u);break;case"cuid":d$(t,t_.cuid,f.message,u);break;case"cuid2":d$(t,t_.cuid2,f.message,u);break;case"startsWith":d$(t,RegExp(`^${Upi(f.value,u)}`),f.message,u);break;case"endsWith":d$(t,RegExp(`${Upi(f.value,u)}$`),f.message,u);break;case"datetime":f_(t,"date-time",f.message,u);break;case"date":f_(t,"date",f.message,u);break;case"time":f_(t,"time",f.message,u);break;case"duration":f_(t,"duration",f.message,u);break;case"length":t.minLength=typeof t.minLength==="number"?Math.max(t.minLength,f.value):f.value,t.maxLength=typeof t.maxLength==="number"?Math.min(t.maxLength,f.value):f.value;break;case"includes":{d$(t,RegExp(Upi(f.value,u)),f.message,u);break}case"ip":{if(f.version!=="v6")f_(t,"ipv4",f.message,u);if(f.version!=="v4")f_(t,"ipv6",f.message,u);break}case"base64url":d$(t,t_.base64url,f.message,u);break;case"jwt":d$(t,t_.jwt,f.message,u);break;case"cidr":{if(f.version!=="v6")d$(t,t_.ipv4Cidr,f.message,u);if(f.version!=="v4")d$(t,t_.ipv6Cidr,f.message,u);break}case"emoji":d$(t,t_.emoji(),f.message,u);break;case"ulid":{d$(t,t_.ulid,f.message,u);break}case"base64":{switch(u.base64Strategy){case"format:binary":{f_(t,"binary",f.message,u);break}case"contentEncoding:base64":{t.contentEncoding="base64";break}case"pattern:zod":{d$(t,t_.base64,f.message,u);break}}break}case"nanoid":d$(t,t_.nanoid,f.message,u);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return t}function Upi(i,u){return u.patternStrategy==="escape"?yOf(i):i}function yOf(i){let u="";for(let t=0;t<i.length;t++){if(!NOf.has(i[t]))u+="\\";u+=i[t]}return u}function f_(i,u,t,f){var l;if(i.format||((l=i.anyOf)==null?void 0:l.some((c)=>c.format))){if(!i.anyOf)i.anyOf=[];if(i.format)i.anyOf.push({format:i.format}),delete i.format;i.anyOf.push({format:u,...t&&f.errorMessages&&{errorMessage:{format:t}}})}else i.format=u}function d$(i,u,t,f){var l;if(i.pattern||((l=i.allOf)==null?void 0:l.some((c)=>c.pattern))){if(!i.allOf)i.allOf=[];if(i.pattern)i.allOf.push({pattern:i.pattern}),delete i.pattern;i.allOf.push({pattern:SD0(u,f),...t&&f.errorMessages&&{errorMessage:{pattern:t}}})}else i.pattern=SD0(u,f)}function SD0(i,u){var t;if(!u.applyRegexFlags||!i.flags)return i.source;let f={i:i.flags.includes("i"),m:i.flags.includes("m"),s:i.flags.includes("s")},l=f.i?i.source.toLowerCase():i.source,c="",E=!1,$=!1,w=!1;for(let d=0;d<l.length;d++){if(E){c+=l[d],E=!1;continue}if(f.i){if($){if(l[d].match(/[a-z]/)){if(w)c+=l[d],c+=`${l[d-2]}-${l[d]}`.toUpperCase(),w=!1;else if(l[d+1]==="-"&&((t=l[d+2])==null?void 0:t.match(/[a-z]/)))c+=l[d],w=!0;else c+=`${l[d]}${l[d].toUpperCase()}`;continue}}else if(l[d].match(/[a-z]/)){c+=`[${l[d]}${l[d].toUpperCase()}]`;continue}}if(f.m){if(l[d]==="^"){c+=`(^|(?<=[\r
86470
86470
  ]))`;continue}else if(l[d]==="$"){c+=`($|(?=[\r