decocms 4.145.1 → 4.145.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/client/assets/{AlertCircle-DuLhNZN0.js → AlertCircle-DHADieAk.js} +1 -1
  2. package/dist/client/assets/{AreaChart-z0AI9xcJ.js → AreaChart-B4JoGe-T.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-7lFdaiIm.js → ArrowUp-DcgbzY8T.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-B0FGQSlh.js → ArrowUpRight-DegSHhME.js} +1 -1
  5. package/dist/client/assets/{Check-CYatl4gN.js → Check-BBS1vS9j.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-CDXqbPI-.js → CheckCircle-0HdO3ytu.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-tOPmtp6w.js → ChevronDown-DK6FrZGD.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-DB6nEMG5.js → ChevronRight-D-0X2sHy.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-DPobloSY.js → ChevronUp-8HfO7Eo2.js} +1 -1
  10. package/dist/client/assets/{Copy01-BnYouc49.js → Copy01-DeKhzpHU.js} +1 -1
  11. package/dist/client/assets/{DotsVertical-Cxrt3FCd.js → DotsVertical-B9coRJmo.js} +1 -1
  12. package/dist/client/assets/{Eye-CgnBokQI.js → Eye-Dt4tRvMo.js} +1 -1
  13. package/dist/client/assets/{FilterLines-DYzUCJSA.js → FilterLines-7wE4bKsM.js} +1 -1
  14. package/dist/client/assets/{HardDrive-CO6nn7DG.js → HardDrive-DYy6xV3d.js} +1 -1
  15. package/dist/client/assets/{Key01-CmbZxG8N.js → Key01-Dwr_QSsN.js} +1 -1
  16. package/dist/client/assets/{LayoutLeft-B7DufqBM.js → LayoutLeft-3ovY4W0z.js} +1 -1
  17. package/dist/client/assets/{LinkExternal01-Bfy60W6D.js → LinkExternal01-BYfTGTay.js} +1 -1
  18. package/dist/client/assets/{LogOut01-dvY4SVZN.js → LogOut01-BQA6YBnS.js} +1 -1
  19. package/dist/client/assets/{Monitor01-Ck0gLFMo.js → Monitor01-Db91qbwr.js} +1 -1
  20. package/dist/client/assets/{Palette-CPFI3BR3.js → Palette-CzDtLRlZ.js} +1 -1
  21. package/dist/client/assets/{Play-DnD1E0xn.js → Play-BzcnyOzu.js} +1 -1
  22. package/dist/client/assets/{Plus-BN5YVyqM.js → Plus-DYWz2q8U.js} +1 -1
  23. package/dist/client/assets/{SearchLg-DyJSW4Vc.js → SearchLg-CLWIPJjy.js} +1 -1
  24. package/dist/client/assets/{SearchMd-DQmFi9D2.js → SearchMd-COdFj0Zc.js} +1 -1
  25. package/dist/client/assets/{Settings02-BFFn1jpi.js → Settings02-BcVsjBLn.js} +1 -1
  26. package/dist/client/assets/{Shield01-BzFXnF6d.js → Shield01-CqwdXd1C.js} +1 -1
  27. package/dist/client/assets/{Star01-CNIRTMR8.js → Star01-C9HEUxkM.js} +1 -1
  28. package/dist/client/assets/{Stars01-n5ORJg1q.js → Stars01-D1gaVF2y.js} +1 -1
  29. package/dist/client/assets/{Stars02-exlT_Okh.js → Stars02-DKGX3cyO.js} +1 -1
  30. package/dist/client/assets/{Sun-CeE_Qvh9.js → Sun-C0gPuR5U.js} +1 -1
  31. package/dist/client/assets/{SwitchHorizontal01-CvFzGh0e.js → SwitchHorizontal01-DwXRtaWg.js} +1 -1
  32. package/dist/client/assets/{Tool01-B_EnHUDN.js → Tool01-Bd8tX_jt.js} +1 -1
  33. package/dist/client/assets/{Tool02-D-a5ivv2.js → Tool02-ZdY4iMfo.js} +1 -1
  34. package/dist/client/assets/{Trash01-DyG0sKse.js → Trash01-HKV6_dwK.js} +1 -1
  35. package/dist/client/assets/{TrendUp01-BqGsLDHt.js → TrendUp01-CFZ6yJSh.js} +1 -1
  36. package/dist/client/assets/{Upload01-BSqGQfFZ.js → Upload01-hxD9v7hx.js} +1 -1
  37. package/dist/client/assets/{User01-C43KhUIm.js → User01-BTTih9HB.js} +1 -1
  38. package/dist/client/assets/{Users01-2_hMByDk.js → Users01-xgSpPMFf.js} +1 -1
  39. package/dist/client/assets/{Users03-CV6iFnFW.js → Users03-BOptv7C2.js} +1 -1
  40. package/dist/client/assets/{X-B-1YeyT_.js → X-DB6vU_0u.js} +1 -1
  41. package/dist/client/assets/{XCircle-C1MN9SQ1.js → XCircle-DTI77eCg.js} +1 -1
  42. package/dist/client/assets/{XClose-DeuN8Vl2.js → XClose-DTaVQZfZ.js} +1 -1
  43. package/dist/client/assets/{Zap-D_ZBtZUN.js → Zap---6_iVtQ.js} +1 -1
  44. package/dist/client/assets/{ZapSquare-BsaCJHMR.js → ZapSquare-D7WRm-n2.js} +1 -1
  45. package/dist/client/assets/{access-gate-CIN92QTR.js → access-gate-zNTs7sE8.js} +1 -1
  46. package/dist/client/assets/{add-section-modal-PXXYBrFI.js → add-section-modal-VEh5rYMM.js} +1 -1
  47. package/dist/client/assets/{agent-icon-ZPy7KFhz.js → agent-icon-BfjY3bgC.js} +1 -1
  48. package/dist/client/assets/{agents-list-28VuL77U.js → agents-list-d5xSixaE.js} +1 -1
  49. package/dist/client/assets/{ai-providers-Dhplojms.js → ai-providers-DbnA06Zb.js} +1 -1
  50. package/dist/client/assets/{alert-Bkmlyq1a.js → alert-CBUIXfSS.js} +1 -1
  51. package/dist/client/assets/{alert-dialog-BRmWg8bs.js → alert-dialog-VU_2bHZu.js} +1 -1
  52. package/dist/client/assets/{app-editor-CY8jUCnF.js → app-editor-etIxWtnF.js} +1 -1
  53. package/dist/client/assets/{auth-D3jKLjpV.js → auth-DfW8TFf6.js} +1 -1
  54. package/dist/client/assets/{auth-catchall-BxtuMR-w.js → auth-catchall-BCCB7tjR.js} +1 -1
  55. package/dist/client/assets/{auth-entry-D6hFYtEs.js → auth-entry-y6ZZukue.js} +1 -1
  56. package/dist/client/assets/{auth-split-layout-DXU5TTD2.js → auth-split-layout-DLmJymzr.js} +1 -1
  57. package/dist/client/assets/{authenticate-and-persist-oauth-BmJB5PkD.js → authenticate-and-persist-oauth-DHPyE4Ju.js} +1 -1
  58. package/dist/client/assets/{automation-list-row-DzUs66Fl.js → automation-list-row-h4yJToyI.js} +1 -1
  59. package/dist/client/assets/{automation-runs-C_mXh4Pl.js → automation-runs-BdX44MVW.js} +1 -1
  60. package/dist/client/assets/{automations-D2qRM64t.js → automations-Nky5RIUQ.js} +1 -1
  61. package/dist/client/assets/{avatar-BzLoKg6t.js → avatar-Bwq5hyeE.js} +1 -1
  62. package/dist/client/assets/{badge-Dp9QNGKd.js → badge-C4CkS7Xv.js} +1 -1
  63. package/dist/client/assets/{block-document-CMT3iPnD.js → block-document-Cdn4JEX0.js} +1 -1
  64. package/dist/client/assets/{brand-context-DYjxoaNy.js → brand-context-Cqom7trF.js} +1 -1
  65. package/dist/client/assets/{buckets-CjSl0muw.js → buckets-prfL5lYi.js} +1 -1
  66. package/dist/client/assets/{bulk-category-panel-DKVDM0bd.js → bulk-category-panel-BGFt0gEk.js} +1 -1
  67. package/dist/client/assets/{calendar-DaLmjxSy.js → calendar-DLURlETz.js} +1 -1
  68. package/dist/client/assets/{capability-load-error-D7twLvxD.js → capability-load-error-CNN8qjS7.js} +1 -1
  69. package/dist/client/assets/{card-C66tmaC1.js → card-CwfL7DAA.js} +1 -1
  70. package/dist/client/assets/{category-editor-D0cAximd.js → category-editor-2PsxQ_GX.js} +1 -1
  71. package/dist/client/assets/{chat-context-CAjeYbH6.js → chat-context-CmOc-nSI.js} +1 -1
  72. package/dist/client/assets/{checkbox-D1etlJIF.js → checkbox-BWkDY5QP.js} +1 -1
  73. package/dist/client/assets/{cli-auth-success-CwHbD-MC.js → cli-auth-success-D3dItHyi.js} +1 -1
  74. package/dist/client/assets/{collection-detail-Dtnplxgh.js → collection-detail-B1UvDbO1.js} +1 -1
  75. package/dist/client/assets/{collection-display-button-DMihc0Xm.js → collection-display-button-CGk1Gcij.js} +1 -1
  76. package/dist/client/assets/{collection-search-CXHWzrgG.js → collection-search-IzQ_eY_-.js} +1 -1
  77. package/dist/client/assets/{collection-table-wrapper-fTzm-QTI.js → collection-table-wrapper-DHirV96n.js} +1 -1
  78. package/dist/client/assets/{collection-tabs-2tMvP3wx.js → collection-tabs-DsfUKIqw.js} +1 -1
  79. package/dist/client/assets/{command-PBTuG0dv.js → command-DeOjdabj.js} +1 -1
  80. package/dist/client/assets/{commerce-onboarding-RHnMlUFZ.js → commerce-onboarding-D6GgtukQ.js} +1 -1
  81. package/dist/client/assets/{companions-core-wgpH4oE7.js → companions-core-BbGE0arO.js} +1 -1
  82. package/dist/client/assets/{connect-CHOcuyfi.js → connect-CfW18KcQ.js} +1 -1
  83. package/dist/client/assets/{connect-desktop-dialog-DUArTSog.js → connect-desktop-dialog-DrcOxXpU.js} +1 -1
  84. package/dist/client/assets/{connection-BxZKRYhE.js → connection-BIQOBlgQ.js} +1 -1
  85. package/dist/client/assets/{connection-card-Cc4Oi67b.js → connection-card-DWYtBj99.js} +1 -1
  86. package/dist/client/assets/{connection-detail-We9499nx.js → connection-detail-BZvVX2HY.js} +1 -1
  87. package/dist/client/assets/{connection-form-helpers-BkB6s6IN.js → connection-form-helpers-CSiiac2u.js} +1 -1
  88. package/dist/client/assets/{connections-BSwayuAc.js → connections-BE7u1T8z.js} +1 -1
  89. package/dist/client/assets/{decopilot-sse-pool-BQpsYyVj.js → decopilot-sse-pool-CS6LSGpV.js} +1 -1
  90. package/dist/client/assets/{dialog-4T2-1H4H.js → dialog-CNTVWqbx.js} +1 -1
  91. package/dist/client/assets/{domain-settings-CV2ZcijY.js → domain-settings-UxEJW0Z_.js} +1 -1
  92. package/dist/client/assets/{drawer-DZSdqYa0.js → drawer-COAt4TSd.js} +1 -1
  93. package/dist/client/assets/{dropdown-menu-BnIzVS1A.js → dropdown-menu-mseM0jY-.js} +1 -1
  94. package/dist/client/assets/{empty-state-DKQS2hwd.js → empty-state-Bw6W6BLL.js} +1 -1
  95. package/dist/client/assets/{extract-connection-data-BOC6y9i-.js → extract-connection-data-Bk9s1fi8.js} +1 -1
  96. package/dist/client/assets/{file-explorer-DJQZ0bN_.js → file-explorer-Cmc0JPgp.js} +1 -1
  97. package/dist/client/assets/{form-CIRFObIM.js → form-DISLZOxg.js} +1 -1
  98. package/dist/client/assets/{general-B-0Hf5S7.js → general-BewSTc6j.js} +1 -1
  99. package/dist/client/assets/{github-repo-picker-BKqjy8qP.js → github-repo-picker-Cj-KmEZt.js} +1 -1
  100. package/dist/client/assets/{hooks-gGJEsbtz.js → hooks-DmG5sfsA.js} +1 -1
  101. package/dist/client/assets/{index-DxqVAbug.js → index-BQvrNJ01.js} +1 -1
  102. package/dist/client/assets/{index-t7GmctXV.js → index-BhsWfBJc.js} +3 -3
  103. package/dist/client/assets/{index-CawoPRV5.js → index-BmSGotzo.js} +1 -1
  104. package/dist/client/assets/{index-BhPhxyf8.js → index-BoHcUcC6.js} +1 -1
  105. package/dist/client/assets/{index-B_fH2klp.js → index-CAS-J8KL.js} +3 -3
  106. package/dist/client/assets/{index-Bn_tdNMF.js → index-CBf6sarS.js} +1 -1
  107. package/dist/client/assets/{index-MKTyJaEp.js → index-CTQqBXFf.js} +1 -1
  108. package/dist/client/assets/{index-BmTV_fTR.js → index-CUb6tV_C.js} +1 -1
  109. package/dist/client/assets/{index-BP-Nq0-I.js → index-IBTdDALy.js} +5 -5
  110. package/dist/client/assets/{index-CMfdCZky.js → index-NJWg6HrD.js} +1 -1
  111. package/dist/client/assets/{index-redirect-Do4i8kUz.js → index-redirect-Dol3ZcEH.js} +1 -1
  112. package/dist/client/assets/{index-DOc2RGpp.js → index-trb30jF9.js} +1 -1
  113. package/dist/client/assets/{input-B6q4PHa5.js → input-DhVJ06K1.js} +1 -1
  114. package/dist/client/assets/{integration-icon-BKt6u8su.js → integration-icon-CLl1V5sL.js} +1 -1
  115. package/dist/client/assets/{invite-member-dialog-fmf3Dt-m.js → invite-member-dialog-5grFLTcz.js} +1 -1
  116. package/dist/client/assets/{label-DJBXhhaI.js → label-ccFteUjF.js} +1 -1
  117. package/dist/client/assets/{layout-_9boDlWC.js → layout-BYRmbT_9.js} +1 -1
  118. package/dist/client/assets/{login-DVaNyHyZ.js → login-BxP-h7-G.js} +1 -1
  119. package/dist/client/assets/{mcp-oauth-Dpqqp1uP.js → mcp-oauth-CcZUrM9I.js} +1 -1
  120. package/dist/client/assets/{members-3kzaAnUh.js → members-DGoS_67T.js} +1 -1
  121. package/dist/client/assets/{monaco-editor-C7iFvad-.js → monaco-editor-CjVqHTIz.js} +1 -1
  122. package/dist/client/assets/{monitoring-stats-row-DtFSIiyk.js → monitoring-stats-row-LA8Yi0e5.js} +1 -1
  123. package/dist/client/assets/{multi-select-D41uZPAQ.js → multi-select-Dy-Z_ow9.js} +1 -1
  124. package/dist/client/assets/{oauth-callback-CuSReeZQ.js → oauth-callback-Vd_GFqdW.js} +1 -1
  125. package/dist/client/assets/{oauth-callback-ai-provider-O-OTq9Nv.js → oauth-callback-ai-provider-MHDGlXXy.js} +1 -1
  126. package/dist/client/assets/{onboarding-C_EAUlje.js → onboarding-DD0nXGuH.js} +1 -1
  127. package/dist/client/assets/{org-install-vpv39q2J.js → org-install-C9lusROS.js} +1 -1
  128. package/dist/client/assets/{org-layout-Ci8jDZYv.js → org-layout-BCZEwKSA.js} +1 -1
  129. package/dist/client/assets/{organization-choice-D3TNsJLp.js → organization-choice-DwhmbfKZ.js} +1 -1
  130. package/dist/client/assets/{orgs-BRWKoSAJ.js → orgs-C8BWMW-N.js} +1 -1
  131. package/dist/client/assets/{page-seo-form-BWXzcHnq.js → page-seo-form-Y7M4-3J1.js} +1 -1
  132. package/dist/client/assets/{popover-CK-lX1K_.js → popover-Smynih5R.js} +1 -1
  133. package/dist/client/assets/{post-editor-BhKDEf-S.js → post-editor-CPkM3_VV.js} +1 -1
  134. package/dist/client/assets/{primitives-CtDUlt-q.js → primitives-BrR7hY5Y.js} +1 -1
  135. package/dist/client/assets/{profile-CxSqfChk.js → profile-esVIZdgy.js} +1 -1
  136. package/dist/client/assets/project-app-view-DRVE_A-k.js +1 -0
  137. package/dist/client/assets/record-editor-BgMTuo4w.js +1 -0
  138. package/dist/client/assets/{redirect-editor-BtHXF_2A.js → redirect-editor-2qfTuk8V.js} +1 -1
  139. package/dist/client/assets/registry-CqVE-vEc.js +2 -0
  140. package/dist/client/assets/{registry-layout-Ck6FP2xN.js → registry-layout-Do06v2DO.js} +1 -1
  141. package/dist/client/assets/{reports-wWt8tknx.js → reports-DxfYx7BK.js} +1 -1
  142. package/dist/client/assets/{require-capability-D1a0w8cz.js → require-capability-CZGtf4tT.js} +1 -1
  143. package/dist/client/assets/{required-auth-layout-CJps-CFv.js → required-auth-layout-DuUMwVHg.js} +1 -1
  144. package/dist/client/assets/{reset-password-BTCuhC82.js → reset-password-Dxxobxa1.js} +1 -1
  145. package/dist/client/assets/{roles-DpUjpXqL.js → roles-FxzkZ7k0.js} +1 -1
  146. package/dist/client/assets/{search-input-koR4fu3F.js → search-input-BjgRouLs.js} +1 -1
  147. package/dist/client/assets/{secrets-C2fmbkv_.js → secrets-ZfUlP-pH.js} +1 -1
  148. package/dist/client/assets/{sections-editor-CXmqjIH4.js → sections-editor-BF1cOxs0.js} +1 -1
  149. package/dist/client/assets/{select-bMZm9VU9.js → select-Bb0GRNnf.js} +1 -1
  150. package/dist/client/assets/{select-model-C9nNyawi.js → select-model-DQgioKDO.js} +1 -1
  151. package/dist/client/assets/{self-tool-result-Bc11F_yr.js → self-tool-result-DZe-zMkW.js} +1 -1
  152. package/dist/client/assets/{seo-editor-DWFzZ-oS.js → seo-editor-BHQ_8Csa.js} +1 -1
  153. package/dist/client/assets/{settings-layout-BZbVgX_2.js → settings-layout-9BG8xRh0.js} +1 -1
  154. package/dist/client/assets/{settings-section-DNh6gEuc.js → settings-section-DBMx0DtX.js} +1 -1
  155. package/dist/client/assets/{shell-controls-J8rcMvt1.js → shell-controls-BKyGZzlA.js} +1 -1
  156. package/dist/client/assets/{shell-layout-C3MPU9KJ.js → shell-layout-DEusTn-G.js} +1 -1
  157. package/dist/client/assets/{sidebar-D0aM-lF8.js → sidebar-qB1ph8XS.js} +1 -1
  158. package/dist/client/assets/{skeleton-Bk0zJMXE.js → skeleton-D1F71SyB.js} +1 -1
  159. package/dist/client/assets/{sso-B3UOC8eE.js → sso-jggkHFlR.js} +1 -1
  160. package/dist/client/assets/{store-BWkoulyp.js → store-DgRVC4oo.js} +1 -1
  161. package/dist/client/assets/store-registry-DW0KnTwL.js +2 -0
  162. package/dist/client/assets/{studio-tools-jw0GlAUk.js → studio-tools-DkEZAphx.js} +1 -1
  163. package/dist/client/assets/{switch-Cf4W_Zzg.js → switch-Bz0H7PEf.js} +1 -1
  164. package/dist/client/assets/{tab-id-roTXI6EQ.js → tab-id-aqAupYT1.js} +1 -1
  165. package/dist/client/assets/{table-Cwt4W0Tf.js → table-C4UFF3oT.js} +1 -1
  166. package/dist/client/assets/{tabs-BKrg7byl.js → tabs-B2Ztflhw.js} +1 -1
  167. package/dist/client/assets/{textarea-rDQmh798.js → textarea-COXgbOpB.js} +1 -1
  168. package/dist/client/assets/{toggle-group-Cgtzh89N.js → toggle-group-5JQ9g_9X.js} +1 -1
  169. package/dist/client/assets/{toolbar-BYgaXMuK.js → toolbar-BN3Spvzo.js} +1 -1
  170. package/dist/client/assets/{tooltip-CnEKAlbd.js → tooltip-Digq2Js0.js} +1 -1
  171. package/dist/client/assets/{use-ai-providers-C3ObpRJA.js → use-ai-providers-B--zDwEJ.js} +1 -1
  172. package/dist/client/assets/{use-api-keys-Cjl0SMZR.js → use-api-keys-BHe0p07e.js} +1 -1
  173. package/dist/client/assets/{use-automations-BPvtRqEC.js → use-automations-BxnLG7TZ.js} +1 -1
  174. package/dist/client/assets/{use-autosave-CdVIYwwM.js → use-autosave-DYBaf-Mi.js} +1 -1
  175. package/dist/client/assets/{use-capability-4JN48OZH.js → use-capability-8TAMywk5.js} +1 -1
  176. package/dist/client/assets/{use-clock-tick-DWfCTzfc.js → use-clock-tick-DS6UOvCd.js} +1 -1
  177. package/dist/client/assets/{use-connection-BIAkvtmH.js → use-connection-DrGwYqfG.js} +1 -1
  178. package/dist/client/assets/{use-copy-CQRvhtrr.js → use-copy-D-mSKpL4.js} +1 -1
  179. package/dist/client/assets/{use-create-virtual-mcp-NDHNXfLX.js → use-create-virtual-mcp-CuQfMxgL.js} +1 -1
  180. package/dist/client/assets/{use-debounced-autosave-CsdPJXc0.js → use-debounced-autosave--mTtvv7G.js} +1 -1
  181. package/dist/client/assets/{use-debounced-value-CdGbWBHC.js → use-debounced-value-BfnjHHFu.js} +1 -1
  182. package/dist/client/assets/{use-deco-credits-ConhAfLC.js → use-deco-credits-CpmWs-DF.js} +1 -1
  183. package/dist/client/assets/{use-decopilot-events-ChOP7Di8.js → use-decopilot-events-C3uLMSAb.js} +1 -1
  184. package/dist/client/assets/{use-delete-connection-C7zF6V5Y.js → use-delete-connection-CKEmLElC.js} +1 -1
  185. package/dist/client/assets/{use-deployment-admin-B0D6z6uQ.js → use-deployment-admin-ChX4nyZ8.js} +1 -1
  186. package/dist/client/assets/{use-file-configs-dmHqOXD3.js → use-file-configs-D1POyNRe.js} +1 -1
  187. package/dist/client/assets/{use-infinite-scroll-BUs3Tfbs.js → use-infinite-scroll-CCofUHhR.js} +1 -1
  188. package/dist/client/assets/{use-join-requests-y9daCAZs.js → use-join-requests-Pn6F1s3Y.js} +1 -1
  189. package/dist/client/assets/{use-mcp-auth-status-BgCis56d.js → use-mcp-auth-status-YtcN_KN0.js} +1 -1
  190. package/dist/client/assets/{use-mcp-client-DqCsdjLu.js → use-mcp-client-BmnDoJyV.js} +1 -1
  191. package/dist/client/assets/{use-mcp-tools-CKTwL7UA.js → use-mcp-tools-Cx6xDQe9.js} +1 -1
  192. package/dist/client/assets/{use-members-PQbZ8CxK.js → use-members-DPOKA-us.js} +1 -1
  193. package/dist/client/assets/{use-mobile-He5AiwSM.js → use-mobile-BJ6hU1eG.js} +1 -1
  194. package/dist/client/assets/{use-navigate-to-agent-CFlRfyt_.js → use-navigate-to-agent-B5ZUJrJT.js} +1 -1
  195. package/dist/client/assets/{use-org-auth-client-DvxS4YSy.js → use-org-auth-client-CILjW5QZ.js} +1 -1
  196. package/dist/client/assets/{use-org-sso-BLAGMVBe.js → use-org-sso-DU1TJ6f4.js} +1 -1
  197. package/dist/client/assets/{use-organization-roles-BalYpOf1.js → use-organization-roles-BcNgri3C.js} +1 -1
  198. package/dist/client/assets/{use-organization-settings-CXC0KeZ-.js → use-organization-settings-DZS2TJwr.js} +1 -1
  199. package/dist/client/assets/{use-registry-connections-HDYaUVfb.js → use-registry-connections-DMjrpHD1.js} +1 -1
  200. package/dist/client/assets/{use-secrets-CsUB_av2.js → use-secrets-Bj7s1s2n.js} +1 -1
  201. package/dist/client/assets/{use-status-sounds-CrzKv503.js → use-status-sounds--pX4RaTo.js} +1 -1
  202. package/dist/client/assets/{use-tags-ChxQrbaH.js → use-tags-Da4JXwuW.js} +1 -1
  203. package/dist/client/assets/{use-view-mode-nrv0wYit.js → use-view-mode-BpXmU6Px.js} +1 -1
  204. package/dist/client/assets/{use-virtual-mcp-CqIVqBaR.js → use-virtual-mcp-Bag6n6aw.js} +1 -1
  205. package/dist/client/assets/useInfiniteQuery-UgsEt0O7.js +1 -0
  206. package/dist/client/assets/{useQueries-CUjN6tft.js → useQueries-C1NTEDcf.js} +1 -1
  207. package/dist/client/assets/{useRouterState-B5Oikkih.js → useRouterState-CSqjLQX3.js} +1 -1
  208. package/dist/client/assets/useSuspenseInfiniteQuery-CRQZxDWS.js +1 -0
  209. package/dist/client/assets/{users-NEpQtfp8.js → users-DzG5v2Ht.js} +1 -1
  210. package/dist/client/assets/{variant-calendar-CBBfiWEM.js → variant-calendar-348gQt6x.js} +1 -1
  211. package/dist/client/assets/{view-mode-toggle-CwPi3LhV.js → view-mode-toggle-BewvSwp6.js} +1 -1
  212. package/dist/client/index.html +1 -1
  213. package/dist/server/cli.js +2 -2
  214. package/dist/server/server.js +2 -2
  215. package/package.json +1 -1
  216. package/dist/client/assets/project-app-view-5OvTnQ1j.js +0 -1
  217. package/dist/client/assets/record-editor-ncODQlUx.js +0 -1
  218. package/dist/client/assets/registry-CFH73H20.js +0 -2
  219. package/dist/client/assets/store-registry-d8m2o1g3.js +0 -2
  220. package/dist/client/assets/useInfiniteQuery-Bqroy405.js +0 -1
  221. package/dist/client/assets/useSuspenseInfiniteQuery-DMt1qV7L.js +0 -1
@@ -60,7 +60,7 @@
60
60
  <meta name="apple-mobile-web-app-capable" content="yes" />
61
61
  <meta name="apple-mobile-web-app-status-bar-style" content="default" />
62
62
  <meta name="apple-mobile-web-app-title" content="deco Studio" />
63
- <script type="module" crossorigin src="/assets/index-t7GmctXV.js"></script>
63
+ <script type="module" crossorigin src="/assets/index-BhsWfBJc.js"></script>
64
64
  <link rel="stylesheet" crossorigin href="/assets/index-DSghpBCP.css">
65
65
  </head>
66
66
  <body>
@@ -83258,7 +83258,7 @@ ${w}`;v(B);return}if(c(null,F),t.strategy==="count"){if($--,$===0)v()}if(t.strat
83258
83258
  `);function v(d){if(t===void 0)return!0;let D=Uq(d),_=D&&Uq(t)?Qau(t):t,N=D?Qau(d):Hau(d),Z=mVt(_,N);return Z===""||!Z.startsWith("..")&&!VVt(Z)}return{upsert(d){f.run({$handle:d.handle,$status:d.status,$sandboxPath:d.sandboxPath,$port:d.port??null,$previewUrl:d.previewUrl??null,$repoCloneUrl:d.repoCloneUrl??null,$branch:d.branch??null,$projectName:d.projectName??null,$error:d.error??null,$now:Date.now()})},list(){return l.all().map(f6i)},reconcile(){let d=Date.now();for(let D of l.all().map(f6i)){if(!v(D.sandboxPath)){E.run({$handle:D.handle,$now:d});continue}if(!Uq(D.sandboxPath)){c.run({$handle:D.handle,$now:d});continue}if(D.status==="spawning"||D.status==="ready"||D.status==="failed"||D.status==="missing")w.run({$handle:D.handle,$now:d})}return l.all().map(f6i)},prune(d){let D=[],_=[],N=this.reconcile();for(let Z of N){if(!v(Z.sandboxPath)){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(d.missing&&Z.status==="missing"){$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!d.merged||!Uq(Z.sandboxPath))continue;if(Z.branch===null||Z.branch.trim()===""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!K_(Z.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let B=K_(Z.sandboxPath,["status","--porcelain"]);if(!B.ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(B.stdout.trim()!==""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let F=Rau(Z.sandboxPath,Z.branch);if(F===null){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!F){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}MVt(Z.sandboxPath,{recursive:!0,force:!0}),$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:D,skipped:_}},delete(d){$.run({$handle:d})},inspect(d){let D=h.get({$handle:d});if(D===null)return null;let _=f6i(D),N=0,Z=null;if(Uq(_.sandboxPath)&&K_(_.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let B=K_(_.sandboxPath,["status","--porcelain"]);if(B.ok){let F=B.stdout.trim();N=F===""?0:F.split(`
83259
83259
  `).length}if(_.branch!==null&&_.branch.trim()!=="")Z=Rau(_.sandboxPath,_.branch)}return{handle:_.handle,branch:_.branch,sandboxPath:_.sandboxPath,dirtyCount:N,merged:Z}},close(){u.close()}}}var Jbi=()=>{};function sVt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function bau(i,u){if(process.platform==="win32")return;for(let t of sVt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var Cau=()=>{};import{existsSync as pVt,readdirSync as irt}from"fs";import{rm as urt}from"fs/promises";import{join as Mau}from"path";async function qau(i,u={}){let t=u.detach??trt,f=u.exists??pVt,l=u.readdir??((w)=>irt(w)),E=u.rm??((w)=>urt(w,{recursive:!0,force:!0})),c=Mau(i,"org");if(f(c))for(let w of l(c))t(Mau(c,w));await E(i)}var trt=(i)=>bau(i,process.platform==="darwin");var Vau=O(()=>{Cau()});import{join as frt}from"path";function rau(i){let u=i.purge??qau;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await F1(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??frt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof H6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var mau=O(()=>{Z4();Vau()});import{randomBytes as lrt}from"crypto";import{mkdir as Ert}from"fs/promises";import{createServer as crt}from"net";import{join as wrt}from"path";function eau(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function aau(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function oau(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 $rt(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 hrt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:$rt(i.repo?.cloneUrl)}}function sau(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??vrt,l=i.fetchImpl??fetch,E=i.resolvePreviewUrl??((N,Z)=>`http://127.0.0.1:${Z}`),c=(N)=>wrt(i.dataDir,"sandboxes",N),w=(N)=>{try{i.registry?.upsert(N)}catch(Z){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${N.handle} status=${N.status}:`,Z)}},$=(N)=>{try{i.onEvent?.(N)}catch{}},h=async(N)=>{let Z=new AbortController,B=setTimeout(()=>Z.abort(),1500);try{let F=await l(`${N}/health`,{signal:Z.signal});if(!F.ok)console.warn(`[user-desktop] probe ${N}/health \u2192 ${F.status} (treating as dead)`);return F.ok}catch(F){return console.warn(`[user-desktop] probe ${N}/health failed: ${F instanceof Error?F.message:String(F)} (treating as dead)`),!1}finally{clearTimeout(B)}},v=(N)=>{console.warn(`[user-desktop] evicting dead daemon handle=${N.handle} port=${N.port}`);try{N.process.kill("SIGTERM")}catch{}if(t.get(N.handle)===N)t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:c(N.handle),port:null,previewUrl:null,...N.registryMetadata,error:null}),$({handle:N.handle,phase:"evicted"})},d=new Map;function D(){if(t.size<u)return;let N=[...t.values()].filter((B)=>B.activeDispatchCount===0).sort((B,F)=>B.lastUsedAt-F.lastUsedAt);if(N.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let Z=N[0];console.log(`[user-desktop] evicting LRU victim handle=${Z.handle} port=${Z.port} (cap ${u} reached, size=${t.size})`);try{Z.process.kill("SIGTERM")}catch{}t.delete(Z.handle),w({handle:Z.handle,status:"stopped",sandboxPath:c(Z.handle),port:null,previewUrl:null,...Z.registryMetadata,error:null}),$({handle:Z.handle,phase:"evicted"})}let _=async(N)=>{let Z=hrt(N),B=c(N.handle);w({handle:N.handle,status:"spawning",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"spawning",sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),D();let F,g=null,T;try{await Ert(B,{recursive:!0}),console.log(`[user-desktop] ensure handle=${N.handle} repo=${N.repo?.cloneUrl??"(none)"} branch=${N.repo?.branch??"(none)"} runtime=${N.workload?.runtime??"(autodetect)"} pm=${N.workload?.packageManager??"(autodetect)"}`),T=lrt(24).toString("hex");let[k,I]=await Promise.all([f(),f()]);F=k,console.log(`[user-desktop] spawn handle=${N.handle} port=${F} devPort=${I} workdir=${B}`),g=await Promise.resolve(i.spawnDaemon({workdir:B,handle:N.handle,port:F,daemonToken:T,offloadAllowedHosts:N.offloadAllowedHosts??[],offloadAllowSameHostDev:N.offloadAllowSameHostDev??!1,orgFsConfigJson:N.orgFsConfigJson}));try{await i.waitForHealth(F)}catch(j){throw eau("the sandbox didn't come online in time",j)}console.log(`[user-desktop] healthy handle=${N.handle} port=${F} \u2014 posting config`);try{await i.postConfig(F,I,{repo:N.repo,workload:N.workload,operator:N.operator},T)}catch(j){throw eau(aau(j)?"configuration timed out":"the sandbox rejected its configuration",j)}}catch(k){if((aau(k)?console.warn:console.error)(`[user-desktop] sandbox bring-up failed handle=${N.handle} port=${F??"(none)"}${g?" (killing daemon)":""}:`,k),g)try{g.kill("SIGKILL")}catch{}throw $({handle:N.handle,phase:"failed",error:oau(k),sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),w({handle:N.handle,status:"failed",sandboxPath:B,port:null,previewUrl:null,...Z,error:oau(k)}),k}if(!g||F===void 0)throw Error("sandbox bring-up invariant violated");let U=`http://127.0.0.1:${F}`,A=E(N.handle,F);console.log(`[user-desktop] ready handle=${N.handle} port=${F} sandboxApiUrl=${U} previewUrl=${A}`);let G={handle:N.handle,port:F,process:g,sandboxApiUrl:U,previewUrl:A,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:T,registryMetadata:Z};if(t.set(N.handle,G),w({handle:N.handle,status:"ready",sandboxPath:B,port:F,previewUrl:A,...Z,error:null}),$({handle:N.handle,phase:"ready",port:F,previewUrl:A,sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),g.exited)g.exited.then(()=>{if(t.get(N.handle)===G)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${N.handle} port=${F} \u2014 removing from cache`),t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${N.handle} port=${F} (already replaced/removed)`)});return{sandboxApiUrl:U,previewUrl:A,port:F}};return{async ensureSandbox(N){let Z=t.get(N.handle);if(Z){if(await h(Z.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${N.handle} port=${Z.port} (alive)`),Z.lastUsedAt=Date.now(),{sandboxApiUrl:Z.sandboxApiUrl,previewUrl:Z.previewUrl,port:Z.port};console.warn(`[user-desktop] cache stale handle=${N.handle} port=${Z.port} \u2014 respawning`),v(Z)}let B=d.get(N.handle);if(B)return console.log(`[user-desktop] joining in-flight ensure handle=${N.handle}`),B;let F=_(N).finally(()=>{d.delete(N.handle)});return d.set(N.handle,F),F},proxyPort(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now();return Z?.port??null},getDaemonToken(N){return t.get(N)?.daemonToken??null},hasHandle(N){return t.has(N)||d.has(N)},recordHit(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now()},acquireDispatch(N){let Z=t.get(N);if(!Z)return()=>{};Z.activeDispatchCount+=1;let B=!1;return()=>{if(B)return;B=!0;let F=t.get(N);if(F)F.activeDispatchCount=Math.max(0,F.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(N){let Z=t.get(N);if(!Z){console.log(`[user-desktop] delete handle=${N} (not found, no-op)`);return}if(Z.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${N} port=${Z.port} REFUSED \u2014 ${Z.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${N} port=${Z.port}`);try{Z.process.kill("SIGTERM")}catch{}t.delete(N),w({handle:N,status:"stopped",sandboxPath:c(N),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),$({handle:N,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let N of t.values())try{N.process.kill("SIGTERM")}catch{}t.clear()}}}function vrt(){return new Promise((i,u)=>{let t=crt();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 pau=()=>{};import{randomUUID as drt}from"crypto";import{hostname as Drt}from"os";async function iou(i){let u=Drt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=YMu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=E6i({path:l6i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,E=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let c=0,w=sau({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(j,C)=>c>0?`http://${j}.localhost:${c}`:`http://127.0.0.1:${C}`,spawnDaemon:async(j)=>{let C={DAEMON_BOOT_ID:drt(),APP_ROOT:j.workdir,PROXY_PORT:String(j.port),DAEMON_TOKEN:j.daemonToken,OFFLOAD_ALLOWED_HOSTS:j.offloadAllowedHosts.join(","),...j.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(j.orgFsConfigJson){let L=await QMu(i.dataDir);if(L)C.ORGFS_CONFIG=j.orgFsConfigJson,C.ORGFS_RCLONE_PATH=L}let K=await t({workdir:j.workdir,env:C,daemonPort:j.port});return{port:j.port,kill:(L)=>K.kill(L),exited:K.exited.then(()=>{return})}},postConfig:async(j,C,K,L)=>{let r={port:C};if(K.workload)r.runtime=K.workload.runtime,r.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Q={application:r},ui=gh(K.operator??null);if(ui)Q.operator=ui;if(K.repo)Q.git={repository:{cloneUrl:K.repo.cloneUrl,branch:K.repo.branch,...K.repo.submoduleCredentials&&K.repo.submoduleCredentials.length>0?{submoduleCredentials:K.repo.submoduleCredentials}:{}},...K.repo.userName&&K.repo.userEmail?{identity:{userName:K.repo.userName,userEmail:K.repo.userEmail}}:{}};await U_(`http://127.0.0.1:${j}`,L,Q)},waitForHealth:async(j)=>{await lli(`http://127.0.0.1:${j}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),$=await Gau({port:i.port,lookupSandboxPort:(j)=>w.proxyPort(j)});c=$.port,console.log(`Local ingress listening on http://127.0.0.1:${$.port} (use http://<handle>.localhost:${$.port}/)`),i.monitor?.onIngress?.($.port);let h=zMu({provider:w}),v=async()=>{let j=await T_({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!j)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return j.accessToken},d=await Sau(i.dataDir),D=process.env.npm_package_version??"0.0.0",_=await Xbi(),N=Yau(_,{onChange:(j)=>{console.log(`[link-daemon] capabilities detected: +${j.join(",")} (now: ${_.join(",")})`)}}),Z=FRi({path:`${i.dataDir}/link/outbox.sqlite`});Z.clear();let B=()=>{},F=new AbortController,g={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:v,provider:w,outbox:Z,controlHandler:h,capabilities:_,machineId:d,cliVersion:D,previewPort:$.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>B(),runLifetimeSignal:F.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let T=await _au(g);console.log("[link-daemon] active transport=tunnel");let U,A=new Promise((j)=>{U=j}),G=!1,k=async()=>{if(G)return;G=!0,F.abort(),console.log(`
83260
83260
  Shutting down\u2026`),N();try{await T.close()}catch{}try{await $.stop()}catch{}try{await w.shutdown()}catch{}try{Z.close()}catch{}E(),U(0)};process.on("SIGINT",()=>void k()),process.on("SIGTERM",()=>void k()),B=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),k()},T.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!G)console.error("Cluster connection closed permanently; exiting."),k()});let I=rau({provider:w,registry:f,dataDir:i.dataDir});return{stopped:A,stop:k,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(c){throw E(),c}}var uou=O(()=>{dRi();MM();WMu();HMu();RMu();gRi();Nau();Iau();Wau();Lau();CM();Jbi();mau();pau()});function Kbi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as _rt}from"net";async function Ort(i){for(let u of Nrt)if(await Ybi(i,u))return u;return null}async function tou(i,{intervalMs:u=1000,sleepFn:t=P0}={}){for(;;){let f=await Ort(i);if(f)return f;await t(u)}}function Ybi(i,u){return new Promise((t)=>{let f=_rt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var Nrt;var Wbi=O(()=>{Z4();Nrt=["localhost","127.0.0.1","0.0.0.0"]});function fou(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function Zrt(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 lou(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`:","",` ${Zrt(i,u)}`].join(`
83261
- `)}var Sbi;var Eou=O(()=>{Sbi=class Sbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var yL;var c6i=O(()=>{yL={name:"decocms",version:"4.145.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var Aq={};Pi(Aq,{printBanner:()=>grt,bannerLines:()=>cou,BANNER_LINES:()=>w6i,BANNER_GRADIENT:()=>$6i});function Frt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function cou(i){let u=w6i.map((t,f)=>{let[l,E,c]=Frt($6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function grt(i){console.log("");for(let u of cou(i))console.log(u);console.log("")}var w6i,$6i;var PL=O(()=>{w6i=[" \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 "],$6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Trt,Text as wou}from"ink";import{jsx as Urt,jsxs as $ou}from"react/jsx-runtime";function h6i({version:i}){return $ou(Trt,{flexDirection:"column",marginTop:1,children:[w6i.map((u,t)=>Urt(wou,{color:$6i[t],children:u},t)),$ou(wou,{dimColor:!0,children:[" v",i]})]})}var Lbi=O(()=>{PL()});function hou(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 GL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function vou(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 dou(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 Rbi={};Pi(Rbi,{subscribeLinkState:()=>Qbi,setSelectedHandle:()=>Hbi,setRemoving:()=>D6i,setPersistedSandboxes:()=>Jrt,setPendingConfirm:()=>Pq,setMachine:()=>xrt,setLogPath:()=>jrt,setLinkActions:()=>Xrt,setIngress:()=>Irt,setDaemonError:()=>krt,setClusterUrl:()=>Grt,setCluster:()=>Prt,setActionError:()=>d6i,resetLinkStateForTests:()=>Yrt,removeSandboxRow:()=>zbi,pushSandboxEvent:()=>Krt,getLinkState:()=>yq,applySandboxEvent:()=>Dou});function yrt(i){return i==="spawning"||i==="ready"||i==="failed"}function Dou(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 _ou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:Art,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function b3(){for(let i of v6i)i()}function yq(){return Ef}function Qbi(i){return v6i.add(i),()=>v6i.delete(i)}function Prt(i){Ef={...Ef,cluster:i},b3()}function Grt(i){Ef={...Ef,clusterUrl:i},b3()}function Irt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},b3()}function xrt(i){Ef={...Ef,machine:i},b3()}function krt(i){Ef={...Ef,daemonError:i},b3()}function jrt(i){Ef={...Ef,logPath:i},b3()}function Hbi(i){Ef={...Ef,selectedHandle:i},b3()}function Pq(i){Ef={...Ef,pendingConfirm:i},b3()}function d6i(i){Ef={...Ef,actionError:i},b3()}function D6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},b3()}function Xrt(i){Ef={...Ef,actions:i},b3()}function zbi(i){let u=GL(Ef.sandboxes),t=dou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},b3()}function Jrt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of Ef.sandboxes)if(yrt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},b3()}function Krt(i){Ef={...Ef,sandboxes:Dou(Ef.sandboxes,i)},b3()}function Yrt(){Ef=_ou(),v6i.clear()}var Art=20,Ef,v6i;var Gq=O(()=>{Ef=_ou(),v6i=new Set});import{spawn as Wrt}from"child_process";function Srt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Nou(i,u=process.platform){let t=Srt(u);try{Wrt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Oou=()=>{};function Zou(i,u={}){let t=u.openUrl??Nou,f=yq(),l=GL(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":Hbi(vou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);d6i(null),Pq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Pq(null),w===null||!c)return;D6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)zbi(w.handle);else D6i(w.handle,!1),d6i($.error)});return}case"confirmNo":Pq(null);return;case"quit":if(c)c.quit();return}}var Bou=O(()=>{Gq();Oou()});function Fou(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 gou={};Pi(gou,{LinkApp:()=>zrt});import{Box as C1,Text as vl,useInput as Lrt}from"ink";import{useSyncExternalStore as Qrt}from"react";import{jsx as Xf,jsxs as Xh}from"react/jsx-runtime";function Hrt(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 zrt(){let i=Qrt(Qbi,yq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=GL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return Lrt((l,E)=>{let c=Fou(l,E,i.pendingConfirm!==null);if(c!==null)Zou(c)}),Xh(C1,{flexDirection:"column",children:[Xf(h6i,{version:yL.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Xh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Xh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Xh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Xh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Xh(C1,{flexDirection:"column",children:[Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=Hrt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Xh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:hou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var IL;var Tou=O(()=>{c6i();Lbi();Bou();Gq();IL={project:18,branch:22,status:14}});var Uou={};Pi(Uou,{runLinkCommand:()=>rrt});import{closeSync as Rrt,mkdirSync as nrt,openSync as brt,writeSync as Crt}from"fs";import{homedir as Mrt}from"os";import{join as nbi}from"path";function qrt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{Crt(u,`${Kbi(l)}
83261
+ `)}var Sbi;var Eou=O(()=>{Sbi=class Sbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var yL;var c6i=O(()=>{yL={name:"decocms",version:"4.145.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var Aq={};Pi(Aq,{printBanner:()=>grt,bannerLines:()=>cou,BANNER_LINES:()=>w6i,BANNER_GRADIENT:()=>$6i});function Frt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function cou(i){let u=w6i.map((t,f)=>{let[l,E,c]=Frt($6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function grt(i){console.log("");for(let u of cou(i))console.log(u);console.log("")}var w6i,$6i;var PL=O(()=>{w6i=[" \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 "],$6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Trt,Text as wou}from"ink";import{jsx as Urt,jsxs as $ou}from"react/jsx-runtime";function h6i({version:i}){return $ou(Trt,{flexDirection:"column",marginTop:1,children:[w6i.map((u,t)=>Urt(wou,{color:$6i[t],children:u},t)),$ou(wou,{dimColor:!0,children:[" v",i]})]})}var Lbi=O(()=>{PL()});function hou(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 GL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function vou(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 dou(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 Rbi={};Pi(Rbi,{subscribeLinkState:()=>Qbi,setSelectedHandle:()=>Hbi,setRemoving:()=>D6i,setPersistedSandboxes:()=>Jrt,setPendingConfirm:()=>Pq,setMachine:()=>xrt,setLogPath:()=>jrt,setLinkActions:()=>Xrt,setIngress:()=>Irt,setDaemonError:()=>krt,setClusterUrl:()=>Grt,setCluster:()=>Prt,setActionError:()=>d6i,resetLinkStateForTests:()=>Yrt,removeSandboxRow:()=>zbi,pushSandboxEvent:()=>Krt,getLinkState:()=>yq,applySandboxEvent:()=>Dou});function yrt(i){return i==="spawning"||i==="ready"||i==="failed"}function Dou(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 _ou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:Art,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function b3(){for(let i of v6i)i()}function yq(){return Ef}function Qbi(i){return v6i.add(i),()=>v6i.delete(i)}function Prt(i){Ef={...Ef,cluster:i},b3()}function Grt(i){Ef={...Ef,clusterUrl:i},b3()}function Irt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},b3()}function xrt(i){Ef={...Ef,machine:i},b3()}function krt(i){Ef={...Ef,daemonError:i},b3()}function jrt(i){Ef={...Ef,logPath:i},b3()}function Hbi(i){Ef={...Ef,selectedHandle:i},b3()}function Pq(i){Ef={...Ef,pendingConfirm:i},b3()}function d6i(i){Ef={...Ef,actionError:i},b3()}function D6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},b3()}function Xrt(i){Ef={...Ef,actions:i},b3()}function zbi(i){let u=GL(Ef.sandboxes),t=dou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},b3()}function Jrt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of Ef.sandboxes)if(yrt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},b3()}function Krt(i){Ef={...Ef,sandboxes:Dou(Ef.sandboxes,i)},b3()}function Yrt(){Ef=_ou(),v6i.clear()}var Art=20,Ef,v6i;var Gq=O(()=>{Ef=_ou(),v6i=new Set});import{spawn as Wrt}from"child_process";function Srt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Nou(i,u=process.platform){let t=Srt(u);try{Wrt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Oou=()=>{};function Zou(i,u={}){let t=u.openUrl??Nou,f=yq(),l=GL(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":Hbi(vou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);d6i(null),Pq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Pq(null),w===null||!c)return;D6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)zbi(w.handle);else D6i(w.handle,!1),d6i($.error)});return}case"confirmNo":Pq(null);return;case"quit":if(c)c.quit();return}}var Bou=O(()=>{Gq();Oou()});function Fou(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 gou={};Pi(gou,{LinkApp:()=>zrt});import{Box as C1,Text as vl,useInput as Lrt}from"ink";import{useSyncExternalStore as Qrt}from"react";import{jsx as Xf,jsxs as Xh}from"react/jsx-runtime";function Hrt(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 zrt(){let i=Qrt(Qbi,yq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=GL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return Lrt((l,E)=>{let c=Fou(l,E,i.pendingConfirm!==null);if(c!==null)Zou(c)}),Xh(C1,{flexDirection:"column",children:[Xf(h6i,{version:yL.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Xh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Xh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Xh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Xh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Xh(C1,{flexDirection:"column",children:[Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=Hrt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Xh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:hou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var IL;var Tou=O(()=>{c6i();Lbi();Bou();Gq();IL={project:18,branch:22,status:14}});var Uou={};Pi(Uou,{runLinkCommand:()=>rrt});import{closeSync as Rrt,mkdirSync as nrt,openSync as brt,writeSync as Crt}from"fs";import{homedir as Mrt}from"os";import{join as nbi}from"path";function qrt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{Crt(u,`${Kbi(l)}
83262
83262
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(Kbi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function Vrt(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 rrt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??nbi(Mrt(),"deco"),f=i.clusterBaseUrl??process.env.STUDIO_CLUSTER_URL??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,E,c,w=()=>{if(c===void 0)return;try{c.close()}catch{}finally{c=void 0}};try{if(await Ybi(u,"127.0.0.1"))throw new Sbi(u);let $=nbi(t,"sandboxes");c=E6i({path:l6i(t),managedSandboxRoot:$});let h=await ili({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await Vrt(f,h.accessToken);let v=c.reconcile();if(i.prune){let N=c.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${N.removed.length}, skipped ${N.skipped.length}.`);v=c.reconcile()}let d;if(i.tui){let{render:N}=await import("ink"),{createElement:Z}=await import("react"),{LinkApp:B}=await Promise.resolve().then(() => (Tou(),gou)),{pushSandboxEvent:F,setCluster:g,setClusterUrl:T,setDaemonError:U,setIngress:A,setLogPath:G,setMachine:k,setPersistedSandboxes:I}=await Promise.resolve().then(() => (Gq(),Rbi));nrt(t,{recursive:!0});let j=nbi(t,"link.log");E=brt(j,"w"),G(j),I(v),T(f),g("connecting"),d={onEvent:(C)=>F(C),onIngress:(C)=>A(C,`http://127.0.0.1:${C}`),onCluster:(C)=>g(C),onMachine:(C)=>k(C)},l=qrt(U,E),N(Z(B),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:N}=await Promise.resolve().then(() => (PL(),Aq));N(i.version??"0.0.0")}w();let D=process.env.DECOCMS_LINK_MANAGED!=="1",_=await iou({port:u,clusterBaseUrl:f,dataDir:t,session:h,monitor:d,logFd:E,perSandboxLogs:D,hotReload:i.hotReload});if(i.tui){let{setLinkActions:N}=await Promise.resolve().then(() => (Gq(),Rbi));N({stopSandbox:_.stopSandbox,removeSandbox:_.removeSandbox,inspectSandbox:_.inspectSandbox,quit:_.stop})}return await _.stopped}catch($){return l?.(),console.error(fou($)?lou(u):$ instanceof Error?$.message:String($)),1}finally{if(l?.(),E!==void 0)try{Rrt(E)}catch{}w()}}var Aou=O(()=>{vRi();uou();Wbi();Eou();Jbi()});var rbi={};Pi(rbi,{resolveDevLinkClusterUrl:()=>ort,populateDevLinkToxiProxy:()=>kou,isDevLinkToxiProxyEnabled:()=>art,ensureDevLinkToxiProxy:()=>tmt,buildDevLinkToxiProxyConfig:()=>Iou,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>Pou,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Gou});function art(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function bbi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Iou(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=bbi(i.apiPort,"apiPort"),f=bbi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=bbi(Number.parseInt(u.port,10),"upstreamPort"),E=`http://127.0.0.1:${l}`,c=`http://127.0.0.1:${f}`;return{serviceName:Pou,proxyName:Gou,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:E,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${E}`}}function ort(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function Cbi(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 Vbi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function xou(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return xou(i.cause)}async function Mbi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${Vbi(l)}`,{cause:l})}}async function kou(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await Mbi(u,"reset",t,{method:"POST"});await Cbi(f,"reset",t);let l=`${i.apiUrl}/populate`,E=await Mbi(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 Cbi(E,"populate",l)}async function srt(i,u){let t=`${i.apiUrl}/version`;try{await F1(async()=>{let f=await Mbi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(ert)});await Cbi(f,"readiness check",t)},{maxAttempts:mrt,minTimeout:you,maxTimeout:you,multiplier:1,jitter:0,isRetriable:(f)=>!xou(f)})}catch(f){let l=f instanceof H6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${Vbi(l)}`,{cause:l})}}async function prt(i){if(i===null)return"";return await new Response(i).text()}async function qbi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch(w){throw Error(`Docker command failed to start (${t}): ${Vbi(w)}`,{cause:w})}})(),[l,E]=await Promise.all([f.exited,prt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let c=E.trim().length>0?`: ${E.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${c}`)}async function imt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await qbi(["rm","-f",t],{ignoreFailure:!0}),await qbi(["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 qbi(["rm","-f",t],{ignoreFailure:!0})}async function tmt(i){let u=Iou(i),t=i.startDaemon??imt,f=i.stopDaemon??(i.startDaemon===void 0?umt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await srt(u,l),await kou(u,l)}catch(E){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw E}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var Pou="ToxiProxy",Gou="dev_link_studio",mrt=20,you=100,ert=100;var mbi=O(()=>{Z4()});var jou={};Pi(jou,{migrateBetterAuth:()=>ebi});import{getMigrations as fmt}from"better-auth/db";import{sso as lmt}from"@better-auth/sso";import{organization as Emt}from"@decocms/better-auth/plugins";import{admin as cmt,apiKey as wmt,jwt as $mt,magicLink as hmt,mcp as vmt,openAPI as dmt}from"better-auth/plugins";import{emailOTP as Dmt}from"better-auth/plugins/email-otp";async function ebi(i){let t={database:QM(i||Z_()),plugins:[Emt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),cmt(),wmt(),$mt(),dmt(),vmt({loginPage:"/login"}),lmt(),hmt({sendMagicLink:async()=>{}}),Dmt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:E}=await fmt(t);if(!f.length&&!l.length)return"up to date";return await E(),`${l.length+f.length} table(s) migrated`}var abi=O(()=>{b6()});var obi={};Pi(obi,{up:()=>_mt,down:()=>Nmt});import{sql as Bd}from"kysely";async function _mt(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(Bd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Bd`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(Bd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Bd`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(Bd`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(Bd`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(Bd`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(Bd`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(Bd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Bd`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 Nmt(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 Xou=()=>{};var sbi={};Pi(sbi,{up:()=>Omt,down:()=>Zmt});import{sql as Jou}from"kysely";async function Omt(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(Jou`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Jou`CURRENT_TIMESTAMP`)).execute()}async function Zmt(i){await i.schema.dropTable("organization_settings").execute()}var Kou=()=>{};var pbi={};Pi(pbi,{up:()=>Bmt,down:()=>Fmt});async function Bmt(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 Fmt(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 iCi={};Pi(iCi,{up:()=>gmt,down:()=>Tmt});async function gmt(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 Tmt(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 uCi={};Pi(uCi,{up:()=>Umt,down:()=>Amt});async function Umt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function Amt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var tCi={};Pi(tCi,{up:()=>Pmt,down:()=>Gmt});import{sql as ymt}from"kysely";async function Pmt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",ymt`text`).execute()}async function Gmt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var You=()=>{};var fCi={};Pi(fCi,{up:()=>Imt,down:()=>xmt});async function Imt(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 xmt(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 lCi={};Pi(lCi,{up:()=>kmt,down:()=>jmt});import{sql as Iq}from"kysely";async function kmt(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(Iq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(Iq`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(Iq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(Iq`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(Iq`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 jmt(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 Wou=()=>{};var ECi={};Pi(ECi,{up:()=>Jmt,down:()=>Kmt});import{sql as Xmt}from"kysely";async function Jmt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function Kmt(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(Xmt`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 Sou=()=>{};var cCi={};Pi(cCi,{up:()=>Ymt,down:()=>Wmt});import{sql as _6i}from"kysely";async function Ymt(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(_6i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(_6i`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(_6i`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 _6i`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 Wmt(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 Lou=()=>{};var wCi={};Pi(wCi,{up:()=>Smt,down:()=>Lmt});async function Smt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function Lmt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var $Ci={};Pi($Ci,{up:()=>Qmt,down:()=>Hmt});import{sql as N6i}from"kysely";async function Qmt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await N6i`
83263
83263
  UPDATE gateways
83264
83264
  SET tool_selection_mode = CASE
@@ -85437,7 +85437,7 @@ ${h}`:h;return{...c,description:v,inputExamples:t?void 0:c.inputExamples}});retu
85437
85437
  `)},flush(i){i.enqueue(`data: [DONE]
85438
85438
 
85439
85439
  `)}})}},R4u={"content-type":"text/event-stream","cache-control":"no-cache",connection:"keep-alive","x-vercel-ai-ui-message-stream":"v1","x-accel-buffering":"no"};vo=Bu.record(Bu.string(),gg.optional()),n4u=Si(()=>Ni(Bu.union([Bu.strictObject({type:Bu.literal("text-start"),id:Bu.string(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("text-delta"),id:Bu.string(),delta:Bu.string(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("text-end"),id:Bu.string(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("error"),errorText:Bu.string()}),Bu.strictObject({type:Bu.literal("tool-input-start"),toolCallId:Bu.string(),toolName:Bu.string(),providerExecuted:Bu.boolean().optional(),providerMetadata:F0.optional(),toolMetadata:vo.optional(),dynamic:Bu.boolean().optional(),title:Bu.string().optional()}),Bu.strictObject({type:Bu.literal("tool-input-delta"),toolCallId:Bu.string(),inputTextDelta:Bu.string()}),Bu.strictObject({type:Bu.literal("tool-input-available"),toolCallId:Bu.string(),toolName:Bu.string(),input:Bu.unknown(),providerExecuted:Bu.boolean().optional(),providerMetadata:F0.optional(),toolMetadata:vo.optional(),dynamic:Bu.boolean().optional(),title:Bu.string().optional()}),Bu.strictObject({type:Bu.literal("tool-input-error"),toolCallId:Bu.string(),toolName:Bu.string(),input:Bu.unknown(),providerExecuted:Bu.boolean().optional(),providerMetadata:F0.optional(),toolMetadata:vo.optional(),dynamic:Bu.boolean().optional(),errorText:Bu.string(),title:Bu.string().optional()}),Bu.strictObject({type:Bu.literal("tool-approval-request"),approvalId:Bu.string(),toolCallId:Bu.string(),signature:Bu.string().optional()}),Bu.strictObject({type:Bu.literal("tool-output-available"),toolCallId:Bu.string(),output:Bu.unknown(),providerExecuted:Bu.boolean().optional(),providerMetadata:F0.optional(),toolMetadata:vo.optional(),dynamic:Bu.boolean().optional(),preliminary:Bu.boolean().optional()}),Bu.strictObject({type:Bu.literal("tool-output-error"),toolCallId:Bu.string(),errorText:Bu.string(),providerExecuted:Bu.boolean().optional(),providerMetadata:F0.optional(),toolMetadata:vo.optional(),dynamic:Bu.boolean().optional()}),Bu.strictObject({type:Bu.literal("tool-output-denied"),toolCallId:Bu.string()}),Bu.strictObject({type:Bu.literal("reasoning-start"),id:Bu.string(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("reasoning-delta"),id:Bu.string(),delta:Bu.string(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("reasoning-end"),id:Bu.string(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("source-url"),sourceId:Bu.string(),url:Bu.string(),title:Bu.string().optional(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("source-document"),sourceId:Bu.string(),mediaType:Bu.string(),title:Bu.string(),filename:Bu.string().optional(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.literal("file"),url:Bu.string(),mediaType:Bu.string(),providerMetadata:F0.optional()}),Bu.strictObject({type:Bu.custom((i)=>typeof i==="string"&&i.startsWith("data-"),{message:'Type must start with "data-"'}),id:Bu.string().optional(),data:Bu.unknown(),transient:Bu.boolean().optional()}),Bu.strictObject({type:Bu.literal("start-step")}),Bu.strictObject({type:Bu.literal("finish-step")}),Bu.strictObject({type:Bu.literal("start"),messageId:Bu.string().optional(),messageMetadata:Bu.unknown().optional()}),Bu.strictObject({type:Bu.literal("finish"),finishReason:Bu.enum(["stop","length","content-filter","tool-calls","error","other"]).optional(),messageMetadata:Bu.unknown().optional()}),Bu.strictObject({type:Bu.literal("abort"),reason:Bu.string().optional()}),Bu.strictObject({type:Bu.literal("message-metadata"),messageMetadata:Bu.unknown()})])));bSf=z5;CSf=No;qSf=vv({prefix:"aitxt",size:24}),VSf={file:!0,source:!0,"text-start":!0,"text-end":!0,"text-delta":!0,"reasoning-start":!0,"reasoning-end":!0,"reasoning-delta":!0,"tool-input-start":!0,"tool-input-end":!0,"tool-input-delta":!0,"tool-approval-request":!0,"tool-call":!0,"tool-result":!0,"tool-error":!0,"stream-start":!1,"response-metadata":!1,finish:!1,error:!1,raw:!1};Zw=Ti.record(Ti.string(),gg.optional()),oSf=Si(()=>Ni(Ti.array(Ti.object({id:Ti.string(),role:Ti.enum(["system","user","assistant"]),metadata:Ti.unknown().optional(),parts:Ti.array(Ti.union([Ti.object({type:Ti.literal("text"),text:Ti.string(),state:Ti.enum(["streaming","done"]).optional(),providerMetadata:F0.optional()}),Ti.object({type:Ti.literal("reasoning"),text:Ti.string(),state:Ti.enum(["streaming","done"]).optional(),providerMetadata:F0.optional()}),Ti.object({type:Ti.literal("source-url"),sourceId:Ti.string(),url:Ti.string(),title:Ti.string().optional(),providerMetadata:F0.optional()}),Ti.object({type:Ti.literal("source-document"),sourceId:Ti.string(),mediaType:Ti.string(),title:Ti.string(),filename:Ti.string().optional(),providerMetadata:F0.optional()}),Ti.object({type:Ti.literal("file"),mediaType:Ti.string(),filename:Ti.string().optional(),url:Ti.string(),providerMetadata:F0.optional()}),Ti.object({type:Ti.literal("step-start")}),Ti.object({type:Ti.string().startsWith("data-"),id:Ti.string().optional(),data:Ti.unknown()}),Ti.object({type:Ti.literal("dynamic-tool"),toolName:Ti.string(),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("input-streaming"),input:Ti.unknown().optional(),providerExecuted:Ti.boolean().optional(),callProviderMetadata:F0.optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),approval:Ti.never().optional()}),Ti.object({type:Ti.literal("dynamic-tool"),toolName:Ti.string(),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("input-available"),input:Ti.unknown(),providerExecuted:Ti.boolean().optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.never().optional()}),Ti.object({type:Ti.literal("dynamic-tool"),toolName:Ti.string(),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("approval-requested"),input:Ti.unknown(),providerExecuted:Ti.boolean().optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.never().optional(),reason:Ti.never().optional(),signature:Ti.string().optional()})}),Ti.object({type:Ti.literal("dynamic-tool"),toolName:Ti.string(),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("approval-responded"),input:Ti.unknown(),providerExecuted:Ti.boolean().optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.boolean(),reason:Ti.string().optional(),signature:Ti.string().optional()})}),Ti.object({type:Ti.literal("dynamic-tool"),toolName:Ti.string(),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("output-available"),input:Ti.unknown(),providerExecuted:Ti.boolean().optional(),output:Ti.unknown(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),resultProviderMetadata:F0.optional(),preliminary:Ti.boolean().optional(),approval:Ti.object({id:Ti.string(),approved:Ti.literal(!0),reason:Ti.string().optional(),signature:Ti.string().optional()}).optional()}),Ti.object({type:Ti.literal("dynamic-tool"),toolName:Ti.string(),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("output-error"),input:Ti.unknown().optional(),rawInput:Ti.unknown().optional(),providerExecuted:Ti.boolean().optional(),output:Ti.never().optional(),errorText:Ti.string(),callProviderMetadata:F0.optional(),resultProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.literal(!0),reason:Ti.string().optional(),signature:Ti.string().optional()}).optional()}),Ti.object({type:Ti.literal("dynamic-tool"),toolName:Ti.string(),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("output-denied"),input:Ti.unknown(),providerExecuted:Ti.boolean().optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.literal(!1),reason:Ti.string().optional(),signature:Ti.string().optional()})}),Ti.object({type:Ti.string().startsWith("tool-"),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("input-streaming"),providerExecuted:Ti.boolean().optional(),callProviderMetadata:F0.optional(),input:Ti.unknown().optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),approval:Ti.never().optional()}),Ti.object({type:Ti.string().startsWith("tool-"),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("input-available"),providerExecuted:Ti.boolean().optional(),input:Ti.unknown(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.never().optional()}),Ti.object({type:Ti.string().startsWith("tool-"),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("approval-requested"),input:Ti.unknown(),providerExecuted:Ti.boolean().optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.never().optional(),reason:Ti.never().optional(),signature:Ti.string().optional()})}),Ti.object({type:Ti.string().startsWith("tool-"),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("approval-responded"),input:Ti.unknown(),providerExecuted:Ti.boolean().optional(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.boolean(),reason:Ti.string().optional(),signature:Ti.string().optional()})}),Ti.object({type:Ti.string().startsWith("tool-"),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("output-available"),providerExecuted:Ti.boolean().optional(),input:Ti.unknown(),output:Ti.unknown(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),resultProviderMetadata:F0.optional(),preliminary:Ti.boolean().optional(),approval:Ti.object({id:Ti.string(),approved:Ti.literal(!0),reason:Ti.string().optional(),signature:Ti.string().optional()}).optional()}),Ti.object({type:Ti.string().startsWith("tool-"),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("output-error"),providerExecuted:Ti.boolean().optional(),input:Ti.unknown().optional(),rawInput:Ti.unknown().optional(),output:Ti.never().optional(),errorText:Ti.string(),callProviderMetadata:F0.optional(),resultProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.literal(!0),reason:Ti.string().optional(),signature:Ti.string().optional()}).optional()}),Ti.object({type:Ti.string().startsWith("tool-"),toolCallId:Ti.string(),toolMetadata:Zw.optional(),state:Ti.literal("output-denied"),providerExecuted:Ti.boolean().optional(),input:Ti.unknown(),output:Ti.never().optional(),errorText:Ti.never().optional(),callProviderMetadata:F0.optional(),approval:Ti.object({id:Ti.string(),approved:Ti.literal(!1),reason:Ti.string().optional(),signature:Ti.string().optional()})})])).nonempty("Message must contain at least one part")})).nonempty("Messages array must not be empty")));cLf=ohi,wLf={type:"no-schema",jsonSchema:async()=>{return},async validatePartialResult({value:i,textDelta:u}){return{success:!0,value:{partial:i,textDelta:u}}},async validateFinalResult(i,u){return i===void 0?{success:!1,error:new Fw({message:"No object generated: response did not match schema.",text:u.text,response:u.response,usage:u.usage,finishReason:u.finishReason})}:{success:!0,value:i}},createElementStream(){throw new Pf({functionality:"element streams in no-schema mode"})}};dLf=vv({prefix:"aiobj",size:24});ZLf=vv({prefix:"aiobj",size:24});gLf=class extends KN{constructor({data:i,mediaType:u}){super({data:i,mediaType:u});let t="mp3";if(u){let f=u.split("/");if(f.length===2){if(u!=="audio/mpeg")t=f[1]}}if(!t)throw Error("Audio format must be provided or determinable from media type");this.format=t}};ALf={word:/\S+\s+/m,line:/\n+/m};PLf=r4u();bLf=BP0,gP0=`vercel.ai.error.${FP0}`,CLf=Symbol.for(gP0),UP0=class extends Sf{constructor({modelId:i,modelType:u,providerId:t,availableProviders:f,message:l=`No such provider: ${t} (available providers: ${f.join()})`}){super({errorName:FP0,modelId:i,modelType:u,message:l});this[TP0]=!0,this.providerId=t,this.availableProviders=f}static isInstance(i){return Uu.hasMarker(i,gP0)}};TP0=CLf;MLf=AP0;rLf=r4u();PP0=class extends a4u{constructor(i={}){super(i)}processResponseStream(i){return I2({stream:i,schema:n4u}).pipeThrough(new TransformStream({async transform(u,t){if(!u.success)throw u.error;t.enqueue(u.value)}}))}};lQf=class extends a4u{constructor(i={}){super(i)}processResponseStream(i){return fQf({stream:i.pipeThrough(new TextDecoderStream)})}}});function shi(i){return{type:"data-title-result",data:{title:i},transient:!0}}function s4u(i){return i.type==="data-title-input"}function p4u(i){return i.type==="data-title-result"}async function*GP0(i,u){let t=u.persistTitle??((l,E)=>u.ctx.storage.threads.update(l,{title:E}).then(()=>{})),f=!1;for await(let l of i){if(s4u(l)){console.warn("[title-interceptor] harness emitted deprecated data-title-input chunk; ignoring");continue}if(p4u(l)){if(f){console.warn("[title-interceptor] harness emitted multiple data-title-result chunks; ignoring extra");continue}if(f=!0,u.currentThreadTitle!==y2)continue;let E=l.data.title;if(!E)continue;await t(u.threadId,E).catch((c)=>{console.error("[title-interceptor] persist failed for thread",u.threadId,c)});try{await u.onTitleUpdated?.(E)}catch(c){console.error("[title-interceptor] onTitleUpdated callback failed",c)}if(!u.isStreamFinished())try{u.writer.write({type:"data-thread-title",data:{title:E},transient:!0})}catch(c){console.error("[title-interceptor] writer.write failed",c)}continue}yield l}}function IP0(i,u){let t=u.persistTitle??((l,E)=>u.ctx.storage.threads.update(l,{title:E}).then(()=>{})),f=!1;return i.pipeThrough(new TransformStream({async transform(l,E){if(s4u(l)){console.warn("[title-interceptor] harness emitted deprecated data-title-input chunk; ignoring");return}if(p4u(l)){if(f){console.warn("[title-interceptor] harness emitted multiple data-title-result chunks; ignoring extra");return}if(f=!0,u.currentThreadTitle!==y2)return;let c=l.data.title;if(!c)return;await t(u.threadId,c).catch((w)=>{console.error("[title-interceptor] persist failed for thread",u.threadId,w)});try{await u.onTitleUpdated?.(c)}catch(w){console.error("[title-interceptor] onTitleUpdated callback failed",w)}if(!u.isStreamFinished())try{u.writer.write({type:"data-thread-title",data:{title:c},transient:!0})}catch(w){console.error("[title-interceptor] writer.write failed",w)}return}E.enqueue(l)}}))}var xP0=O(()=>{a9()});function EQf(i){let u=i[Symbol.asyncIterator]();return new ReadableStream({async pull(t){try{let{value:f,done:l}=await u.next();if(l)t.close();else t.enqueue(f)}catch(f){t.error(f)}},async cancel(t){await u.return?.(t)}})}function cQf(i,u){let t=i.getReader(),f=!1,l=()=>{if(f)return;f=!0,t.releaseLock()};return new ReadableStream({async pull(E){try{let{done:c,value:w}=await t.read();if(c)l(),E.close();else E.enqueue(w)}catch(c){u(),l(),E.error(c)}},async cancel(E){await t.cancel(E),l()}})}function wQf(i){let u=i.metadata?.usage;if(!u||typeof u!=="object"||Array.isArray(u))return null;let t=u,f=(l)=>typeof l==="number"?l:0;return{...t,inputTokens:f(t.inputTokens),outputTokens:f(t.outputTokens),totalTokens:f(t.totalTokens)}}function phi(i){let u=[],t=!1,f=!1,l=!1,E=!0,c=i.errorMessageId??crypto.randomUUID(),w,$=new Promise((g)=>{w=g});if(!i.chunks&&!i.chunkStream)throw Error("consumeHarnessStream requires chunks or chunkStream");let h=i.chunks?async function*(){try{yield*i.chunks}catch(g){throw l=!0,g}}():null,v=i.chunkStream?cQf(i.chunkStream,()=>{l=!0}):null,d=i.originalMessages?.at(-1),D=!i.generateMessageId&&d?.role==="assistant"?d.id:void 0,_=new Map,N=null,Z=(g)=>{if(i.generateMessageId){let T=_.get(g);if(T===void 0)T=i.generateMessageId(),_.set(g,T);return T}if(N===null)N=g;return D&&g===N?D:g},B=(g)=>({...g,id:Z(g.id)});return{uiStream:q4u({originalMessages:i.originalMessages,execute:({writer:g})=>{let T={ctx:null,isStreamFinished:()=>t,currentThreadTitle:i.title.currentThreadTitle,threadId:i.title.threadId,writer:g,onTitleUpdated:i.title.onTitleUpdated,persistTitle:i.title.persistTitle};if(v){g.merge(IP0(v,T));return}let U=GP0(h,T);g.merge(EQf(U))},onStepFinish:({responseMessage:g})=>{let T=B(g);u.push(i.persistence.emitStepParts(T).catch((U)=>{E=!1,console.error("[consume-harness-stream] emitStepParts failed",U)})),u.push(Promise.resolve(i.hooks?.onStep?.(T)).catch((U)=>console.error("[consume-harness-stream] onStep hook failed",U)))},onFinish:async({responseMessage:g,finishReason:T})=>{t=!0,await Promise.allSettled(u);let U=B(g);if(!f){if(T)U.metadata={...U.metadata??{},finishReason:T};await i.persistence.emitFinal(U).catch((G)=>{E=!1,console.error("[consume-harness-stream] emitFinal failed",G)})}let A=wQf(U);if(A)await Promise.resolve(i.hooks?.onUsage?.(A)).catch((G)=>console.error("[consume-harness-stream] onUsage hook failed",G));if(!l)await Promise.resolve(i.hooks?.onFinish?.(U,T,{persistenceOk:E})).catch((G)=>console.error("[consume-harness-stream] onFinish hook failed",G));w()},onError:(g)=>{t=!0;let T=g instanceof Error?g.message:String(g);if(!f)f=!0,u.push(i.persistence.emitError(c,T).catch((U)=>{E=!1,console.error("[consume-harness-stream] emitError failed",U)})),u.push(Promise.resolve(i.hooks?.onError?.(g)).catch((U)=>console.error("[consume-harness-stream] onError hook failed",U)));return i.sanitizeErrorText?i.sanitizeErrorText(g):T}}),whenComplete:$,isStreamFinished:()=>t}}var i1u=O(()=>{Of();xP0()});function $Qf(i){return{type:"data-user-message",data:i}}function kP0(i){if(!i||typeof i!=="object")return!1;return i.type==="data-user-message"}async function jP0(i,u,t){if(!i)return;try{await i.publishRawChunk(u,$Qf(t))}catch{}}function XP0(i){return DT0(i)||kP0(i)}async function hQf(i){let u=i.getReader();try{while(!0){let{done:t}=await u.read();if(t)break}}finally{u.releaseLock()}}function vQf(i,u){let t=i.getReader(),f=!1,l=()=>{if(f)return;f=!0,t.releaseLock()};return new ReadableStream({async pull(E){try{let{done:c,value:w}=await t.read();if(c)l(),E.close();else E.enqueue(w)}catch(c){u(c),l(),E.error(c)}},async cancel(E){await t.cancel(E),l()}})}async function JP0(i){if(!i.chunks&&!i.chunkStream)throw Error("projectChunks requires chunks or chunkStream");let u=null,t=!1,f=void 0,l={inputTokens:0,outputTokens:0,totalTokens:0},E=[],c=null,w=(N)=>{if(c===null)c=N;throw N},$=i.chunks?async function*(){try{for await(let N of i.chunks){if(XP0(N))continue;yield N}}catch(N){throw u=N,N}}():void 0,h=i.chunkStream?vQf(i.chunkStream,(N)=>{u=N}).pipeThrough(new TransformStream({transform(N,Z){if(!XP0(N))Z.enqueue(N)}})):void 0,v={emitStepParts:(N)=>i.persistence.emitStepParts(N).catch(w),emitFinal:(N)=>i.persistence.emitFinal(N).catch(w),emitError:(N,Z)=>i.persistence.emitError(N,Z).catch(w)},{uiStream:d,whenComplete:D}=phi({chunks:$,chunkStream:h,originalMessages:i.originalMessages??[],title:i.title?{currentThreadTitle:i.title.currentThreadTitle,threadId:i.title.threadId,persistTitle:i.title.persistTitle}:{currentThreadTitle:void 0,threadId:"projector",persistTitle:async()=>{}},persistence:v,sanitizeErrorText:i.sanitizeErrorText,errorMessageId:i.errorMessageId,generateMessageId:i.generateMessageId,hooks:{onUsage:(N)=>{l={inputTokens:N.inputTokens,outputTokens:N.outputTokens,totalTokens:N.totalTokens}},onError:()=>{t=!0},onFinish:(N,Z)=>{f=Z,E=Array.isArray(N.parts)?N.parts.filter((B)=>B!=null&&typeof B==="object"&&("type"in B)):[]}}});if(await hQf(d).catch(()=>{}),await D,c!==null)throw c;if(u!==null)throw u;return{failed:t&&f===void 0,finishReason:f,usage:l,finalParts:E}}var KP0=O(()=>{i1u();to()});var q2="DECOPILOT_STREAMS";var u1u=()=>{};function YP0(i,u){return new TransformStream({transform(t,f){if(t.runId!==i||t.fenceToken!==u)return;f.enqueue(t)}})}function WP0(){let i=1;return new TransformStream({transform(u,t){if(u.kind==="done"){t.enqueue(u);return}if(u.seq===null){t.error(Error("projector chunk missing seq"));return}if(u.seq<i)return;if(u.seq>i){t.error(new Uo(i,u.seq));return}i++,t.enqueue(u)}})}function SP0(i){let u=i.getReader(),t=!1,f=0,l=()=>{if(t)return;t=!0,u.releaseLock()};return new ReadableStream({async pull(E){for(;;){let{done:c,value:w}=await u.read();if(c){await u.cancel(),l(),E.error(Error("reader stopped before done"));return}let $=w;if($.kind==="done"){if(!($.envelopeFinalSeq!=null&&$.envelopeFinalSeq===$.msgIdFinalSeq))continue;if($.envelopeFinalSeq!==f){await u.cancel(),l(),E.error(new Uo(f+1,null));return}await u.cancel(),l(),E.close();return}f=$.seq??f,E.enqueue($.chunk);return}},async cancel(E){await u.cancel(E),l()}})}function dQf(i){if(Symbol.asyncIterator in i)return i[Symbol.asyncIterator]();let u=i[Symbol.iterator]();return{next:async()=>u.next(),return:async(t)=>u.return?u.return(t):{done:!0,value:t}}}function uvi(i){let u=dQf(i.messages),t=i.idleTimeoutMs,f=!1,l=(E)=>{if(f)return;f=!0,u.return?.(E).catch(()=>{}),i.onCancel?.()};return new ReadableStream({async pull(E){if(t===void 0){let{done:v,value:d}=await u.next();if(v){E.close();return}E.enqueue(d);return}let c=new AbortController,w=u.next().then((v)=>{return c.abort(),v}),$=P0(t,{signal:c.signal}).then(()=>"idle").catch(()=>"cancelled"),h=await Promise.race([w,$]);if(h==="idle"){E.error(new ivi(t));return}if(h==="cancelled")return;if(h.done){E.close();return}E.enqueue(h.value)},async cancel(E){l(E)}})}var ivi,Uo;var tvi=O(()=>{Z4();ivi=class ivi extends Error{idleTimeoutMs;constructor(i){super("producer produced no output before timeout");this.idleTimeoutMs=i;this.name="StreamIdleTimeoutError"}};Uo=class Uo extends Error{expectedSeq;gotSeq;constructor(i,u){super(u===null?`missing seq ${i} (stream ended at the fenced done)`:`missing seq ${i} (next delivered is ${u})`);this.expectedSeq=i;this.gotSeq=u;this.name="StreamGapError"}}});function DQf(i){let t=uvi({messages:i.messages,idleTimeoutMs:i.idleTimeoutMs,onCancel:i.onDone}).pipeThrough(pli()).pipeThrough(i6i()).pipeThrough(YP0(i.runId,i.fenceToken)).pipeThrough(WP0());return SP0(t)}async function QP0(i){let t=await(await i.js.consumers.get(q2,{filter_subjects:J_(i.runId),deliver_policy:LP0.DeliverPolicy.All})).consume();async function*f(){try{for await(let l of t)yield{subject:l.subject,data:l.data,headers:l.headers}}finally{t.stop()}}return DQf({messages:f(),runId:i.runId,fenceToken:i.fenceToken,idleTimeoutMs:i.idleTimeoutMs,onDone:()=>t.stop()})}var LP0;var HP0=O(()=>{u1u();tvi();u6i();LP0=X(X_(),1)});function f1u(i){let u=i.type;if(typeof u!=="string")return!1;if(u==="text"||u==="reasoning")return i.state!=="streaming";if(u==="step-start")return!1;if(u.startsWith("tool-")||u==="dynamic-tool")return i.state==="approval-requested"||u==="tool-user_ask"&&i.state==="input-available"||i.state==="output-available"||i.state==="output-error"||i.state==="output-denied";return!0}function t1u(i){let u=i.type??"";if(u==="reasoning")return"reasoning";if(u==="file")return"file";if(u.startsWith("tool-")||u==="dynamic-tool")return i.state==="output-available"||i.state==="output-error"||i.state==="output-denied"?"tool_result":"tool_call";return"text"}class l1u{ctx;base;seqByPart=new Map;emitted=new Set;finished=new Set;partKeyByRowId=new Map;finishMessageIdByRowId=new Map;nextSeq=0;constructor(i){this.ctx=i;this.base=i.baseTimeMs??Date.now()}hasEmittedContentFor(i){let u=`${i}#`;for(let t of this.emitted)if(t.startsWith(u))return!0;return!1}seqFor(i){let u=this.seqByPart.get(i);if(u!==void 0)return u;let t=this.nextSeq++;return this.seqByPart.set(i,t),t}row(i,u,t,f,l,E=null){return{id:`${this.ctx.runId}:${i}:${t}`,seq:t,org_id:this.ctx.orgId,thread_id:this.ctx.threadId,run_id:this.ctx.runId,message_id:i,role:u,kind:f,payload:l,payload_ref:null,metadata:E,created_at:new Date(this.base+t).toISOString()}}emitMessageParts(i){let u=i.parts??[],t=[];for(let f=0;f<u.length;f++){let l=u[f];if(!f1u(l))continue;let E=`${i.id}#${f}`;if(this.emitted.has(E))continue;let c=this.seqFor(E),w=this.row(i.id,i.role,c,t1u(l),l);this.partKeyByRowId.set(w.id,E),t.push(w)}return t}emitRequestMessageParts(i){let u=i.parts??[],t=[];for(let f=0;f<u.length;f++){let l=u[f],E=`${i.id}#${f}`,c=this.seqFor(E),w=this.row(i.id,i.role,c,t1u(l),l);this.partKeyByRowId.set(w.id,E),t.push(w)}return t}markFinished(i,u,t=null){if(this.finished.has(i))return[];let f=this.seqFor(`${i}#finish`),l=this.row(i,u,f,"finish",{},t);return this.finishMessageIdByRowId.set(l.id,i),[l]}markRequestFinished(i,u,t=null){let f=this.seqFor(`${i}#finish`),l=this.row(i,u,f,"finish",{},t);return this.finishMessageIdByRowId.set(l.id,i),[l]}acknowledge(i){for(let u of i){let t=this.partKeyByRowId.get(u.id);if(t!==void 0)this.emitted.add(t);let f=this.finishMessageIdByRowId.get(u.id);if(f!==void 0)this.finished.add(f)}}emitUserMessage(i){return[...this.emitMessageParts(i),...this.markFinished(i.id,i.role,i.metadata??null)]}emitRequestMessage(i){return[...this.emitRequestMessageParts(i),...this.markRequestFinished(i.id,i.role,i.metadata??null)]}emitStepParts(i){return this.emitMessageParts(i)}emitFinal(i){let u=this.emitMessageParts(i);if(u.length===0&&!this.hasEmittedContentFor(i.id))return u;return[...u,...this.markFinished(i.id,i.role,i.metadata??null)]}emitFinalSnapshot(i){let u=i.parts??[],t=[];for(let E=0;E<u.length;E++){let c=u[E];if(!f1u(c))continue;let w=`${i.id}#${E}`,$=this.seqFor(w),h=this.row(i.id,i.role,$,t1u(c),c);this.partKeyByRowId.set(h.id,w),t.push(h)}if(t.length===0&&!this.hasEmittedContentFor(i.id))return t;let f=this.seqFor(`${i.id}#finish`),l=this.row(i.id,i.role,f,"finish",{},i.metadata??null);return this.finishMessageIdByRowId.set(l.id,i.id),[...t,l]}emitError(i,u){let t=`${i}#error`,f=[];if(!this.emitted.has(t)){let l=this.seqFor(t),E=this.row(i,"assistant",l,"error",{type:"text",text:`Error: ${u}`});this.partKeyByRowId.set(E.id,t),f.push(E)}return[...f,...this.markFinished(i,"assistant")]}}class WE{ctx;builder;constructor(i){this.ctx=i;this.builder=new l1u(i)}async appendBuiltRows(i){await this.ctx.storage.appendParts(i),this.builder.acknowledge(i)}async emitUserMessage(i){await this.appendBuiltRows(this.builder.emitUserMessage(i))}async emitRequestMessage(i){let u=this.builder.emitRequestMessage(i);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,i.id,u),this.builder.acknowledge(u)}async emitStepParts(i){await this.appendBuiltRows(this.builder.emitStepParts(i))}async emitFinal(i){await this.appendBuiltRows(this.builder.emitFinal(i))}async replaceFinal(i){let u=this.builder.emitFinalSnapshot(i);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,i.id,u),this.builder.acknowledge(u)}async emitError(i,u){await this.appendBuiltRows(this.builder.emitError(i,u))}}var QN=()=>{};async function _Qf(i){let t=(i.requestMessageId?await i.messageParts.maxCreatedAtMsForMessage(i.runId,i.requestMessageId):null)??await i.messageParts.maxCreatedAtMsForRun(i.runId);return new WE({storage:i.messageParts,orgId:i.orgId,threadId:i.runId,runId:i.runId,baseTimeMs:(t??Date.now())+1})}async function zP0(i){let u=await _Qf(i),t=i.replaceFinal?(f)=>u.replaceFinal(f):(f)=>u.emitFinal(f);return{emitStepParts:(f)=>u.emitStepParts(f),emitFinal:t,emitError:(f,l)=>u.emitError(f,l)}}var RP0=O(()=>{QN()});function fvi(i,u){NQf.add(1,{"org.id":u??"unknown"})}var NQf;var nP0=O(()=>{J1();NQf=yt.createCounter("decopilot.projector.poison_runs",{description:"Number of decopilot runs that exhausted retries and were sent to the DLQ",unit:"{runs}"})});class E1u{intervalMs;lastBumpMs=new Map;constructor(i=3000){this.intervalMs=i}shouldBump(i,u=Date.now()){let t=this.lastBumpMs.get(i);if(t!==void 0&&u-t<this.intervalMs)return!1;return this.lastBumpMs.set(i,u),!0}clear(i){this.lastBumpMs.delete(i)}}function bP0(i,u,t,f){return i.pipeThrough(new TransformStream({transform(l,E){if(t.shouldBump(u))f();E.enqueue(l)},flush(){t.clear(u)}}))}function lvi(i,u=[]){if(i==="stop")return u.filter((l)=>l.type==="text"&&l.text).map((l)=>l.text).join(`
85440
- `).replace(/https?:\/\/[^\s)>\]]+/g,"").includes("?")?"requires_action":"completed";if(i==="tool-calls"){let t=u.some((l)=>l.type==="tool-user_ask"&&l.state==="input-available"),f=u.some((l)=>l.state==="approval-requested");return t||f?"requires_action":"completed"}return"failed"}function HN(i,u){return`error-${i}:${u}`}function Evi(i){return{id:i.id,role:i.role,parts:i.parts,metadata:i.metadata??void 0}}var c1u=()=>{};function OQf(i){return`liveness: no stream events for ${Math.round(i/60000)}m`}function $1u(i){return i.runFenceToken!==null&&i.runFenceToken!==i.fenceToken}function MP0(i){w1u=i}function qP0(){if(!w1u)throw Error("[projector-workflow] runtime not initialized \u2014 setProjectorWorkflowRuntime() must run before workflows fire");return w1u}function VP0(){return qP0()}async function rP0(i,u,t){let f=qP0(),l=f.getJetStream();if(!l)throw Error("JetStream unavailable");let E=(await f.messageParts.loadWindow(i.runId,{limit:500})).messages.map(Evi);return{chunkCount:0,attempts:1,outcome:await JP0({chunkStream:bP0(await QP0({js:l,runId:i.runId,fenceToken:i.fenceToken,idleTimeoutMs:i.idleTimeoutMs}),i.runId,ZQf,()=>{f.bumpProgress({runId:i.runId,orgId:u}).catch(()=>{})}),persistence:await zP0({messageParts:f.messageParts,orgId:u,runId:i.runId,requestMessageId:i.messageId,replaceFinal:!0}),originalMessages:E,errorMessageId:HN(i.runId,i.fenceToken),title:{threadId:i.runId,currentThreadTitle:t,persistTitle:async(w,$)=>{await f.persistTitle(i.runId,u,$),await f.onTitleUpdated({runId:i.runId,orgId:u,title:$})}}})}}async function CP0(i,u,t){let f=await i.resolveRun(u).catch(()=>null);return f!==null&&f.runFenceToken===t&&["completed","failed","requires_action"].includes(f.status)}async function mP0(i,u,t){let f=await BQf(i,u);if("skip"in f)return;let l=f.row.orgId,E=f.row.createdBy??i.runId,c=f.row.title;try{let{outcome:w}=await t(i,l,c),$=w?.failed?"failed":w?.finishReason==null?"completed":lvi(w.finishReason,w.finalParts);if($==="failed"){let h=w?.finishReason?`harness reported an error: ${w.finishReason}`:"harness reported an error";if(fvi(i.runId,l),await u.markRunFailed(i.runId,l,h,"harness"))await u.recordFailed({runId:i.runId,orgId:l,distinctId:E,reason:h,kind:"harness"})}else if($==="requires_action")await u.markRunRequiresAction(i.runId,l),await u.clearSynthesizedError(i.runId,i.fenceToken);else{if(await u.completeRunIfNotCompleted(i.runId,l))await u.recordCompleted({runId:i.runId,orgId:l,distinctId:E,usage:w?.usage??{inputTokens:0,outputTokens:0,totalTokens:0}});await u.clearSynthesizedError(i.runId,i.fenceToken)}await u.purgeRun(i.runId,i.fenceToken)}catch(w){if(w instanceof Uo){if(await CP0(u,i.runId,i.fenceToken)){await u.clearSynthesizedError(i.runId,i.fenceToken),await u.purgeRun(i.runId,i.fenceToken);return}let D=`stream truncated before projection could replay it: ${w.message}`;if(fvi(i.runId,l),await u.markRunFailed(i.runId,l,D,"projection"))await u.recordFailed({runId:i.runId,orgId:l,distinctId:E,reason:D,kind:"projection"});await u.purgeRun(i.runId,i.fenceToken);return}let $=w instanceof ivi;if($&&await CP0(u,i.runId,i.fenceToken)){await u.purgeRun(i.runId,i.fenceToken);return}let h=$?OQf(w.idleTimeoutMs):w instanceof Error?w.message:String(w),v=$?"liveness":"projection";if(fvi(i.runId,l),await u.markRunFailed(i.runId,l,h,v))await u.recordFailed({runId:i.runId,orgId:l,distinctId:E,reason:h,kind:v});throw w}}async function BQf(i,u){let t=await u.resolveRun(i.runId);if(!t)return{skip:"missing"};if($1u({status:t.status,runFenceToken:t.runFenceToken,fenceToken:i.fenceToken}))return{skip:"stale",row:t};if(t.version!==2)return{skip:"legacy-v1",row:t};return{row:t}}var w1u=null,ZQf;var h1u=O(()=>{KP0();HP0();tvi();RP0();nP0();c1u();ZQf=new E1u});function eP0(i,u){switch(i.type){case"START":{let t={type:"RUN_STARTED",taskId:i.taskId,orgId:i.orgId,userId:i.userId,abortController:i.abortController,runConfig:i.runConfig,podId:i.podId,messageId:i.messageId};if(u?.status.tag==="running")return[{type:"PREVIOUS_RUN_ABORTED",taskId:i.taskId,orgId:u.orgId},t];return[t]}case"STEP_DONE":{if(u?.status.tag!=="running")return[];return[{type:"STEP_COMPLETED",taskId:i.taskId,orgId:u.orgId,stepCount:u.status.stepCount+1}]}case"FINISH":{if(u==null||u.status.tag!=="running")return[];let{stepCount:t}=u.status;if(i.threadStatus==="completed")return[{type:"RUN_COMPLETED",taskId:i.taskId,orgId:u.orgId,stepCount:t}];if(i.threadStatus==="requires_action")return[{type:"RUN_REQUIRES_ACTION",taskId:i.taskId,orgId:u.orgId,stepCount:t}];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:"error"}]}case"CANCEL":{if(u?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:"cancelled"}]}case"RESUME":{if(u?.status.tag==="running")return[];return[{type:"RUN_RESUMED",taskId:i.taskId,orgId:i.orgId,userId:i.userId,abortController:i.abortController,podId:i.podId}]}case"FORCE_FAIL":{if(i.reason==="ghost")return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u?.orgId??i.orgId,reason:i.reason,expectedFenceToken:i.expectedFenceToken??null}];if(u?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:i.reason}]}}}function aP0(i,u,t=new Date){switch(u.type){case"RUN_STARTED":return{taskId:u.taskId,orgId:u.orgId,userId:u.userId,status:{tag:"running",abortController:u.abortController,stepCount:0,startedAt:t}};case"RUN_RESUMED":return{taskId:u.taskId,orgId:u.orgId,userId:u.userId,status:{tag:"running",abortController:u.abortController,stepCount:0,startedAt:t}};case"STEP_COMPLETED":if(i?.status.tag!=="running")return i;return{...i,status:{...i.status,stepCount:u.stepCount}};case"RUN_COMPLETED":return;case"RUN_REQUIRES_ACTION":return;case"RUN_FAILED":return;case"PREVIOUS_RUN_ABORTED":return}}async function oP0(i,u,t,f){let{storage:l,sseHub:E}=f,c=await l.get(i,u);E.emit(u,kd(i,t,{virtualMcpId:c?.virtual_mcp_id??void 0,createdBy:c?.created_by,triggerId:c?.trigger_id,title:c?.title,branch:c?.branch??null,createdAt:c?.created_at,updatedAt:c?.updated_at})),E.emit(u,$Ei(i,t))}async function gQf(i,u){let{storage:t,sseHub:f}=u;switch(i.type){case"RUN_STARTED":{await t.update(i.taskId,i.orgId,{status:"in_progress",run_config:i.runConfig??null,run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,kd(i.taskId,"in_progress",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at,messageId:i.messageId}));return}case"RUN_RESUMED":{await t.update(i.taskId,i.orgId,{status:"in_progress",run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,kd(i.taskId,"in_progress",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at}));return}case"STEP_COMPLETED":f.emit(i.orgId,hri(i.taskId,i.stepCount));return;case"RUN_COMPLETED":await oP0(i.taskId,i.orgId,"completed",u);return;case"RUN_REQUIRES_ACTION":await oP0(i.taskId,i.orgId,"requires_action",u);return;case"RUN_FAILED":{if(i.reason==="ghost"){if(!await t.forceFailIfInProgress(i.taskId,i.orgId,i.expectedFenceToken))return;await t.update(i.taskId,i.orgId,{run_config:null,run_started_at:null})}else await t.update(i.taskId,i.orgId,{status:"failed",run_config:null,run_started_at:null,...i.reason==="reaped"?{failure_reason:FQf,failure_kind:"stall"}:{}});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,kd(i.taskId,"failed",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at})),f.emit(i.orgId,$Ei(i.taskId,"failed"));return}case"PREVIOUS_RUN_ABORTED":return}}async function sP0(i,u){for(let{event:t}of i)await gQf(t,u)}var FQf="Run stalled \u2014 no progress within the idle timeout window";var pP0=O(()=>{nt()});function iG0(i){return i.now-i.lastProgressAt>i.idleTimeoutMs}function uG0(i){return Math.max(i.persistedLastProgressAt??Number.NEGATIVE_INFINITY,i.currentRunStartedAt)}class d1u{deps;clock;states=new Map;reaperTimer=null;constructor(i,u=()=>new Date){this.deps=i;this.clock=u;this.reaperTimer=setInterval(()=>{this.reapStaleRuns().catch((t)=>{console.error("[RunRegistry] Reaper sweep failed",t)})},TQf)}async execute(i){let u=this.dispatch(i);return await this.react(u),u}dispatch(i){let u=this.states.get(i.taskId),t=eP0(i,u),f=[];for(let l of t){let E=this.states.get(l.taskId);if(l.type==="PREVIOUS_RUN_ABORTED"||l.type==="RUN_FAILED"){if(E?.status.tag==="running")E.status.abortController.abort()}let c=aP0(E,l,this.clock());if(c===void 0)this.states.delete(l.taskId);else this.states.set(l.taskId,c);if(f.push({event:l,state:c}),UQf.has(l.type))tG0().add(1,{"org.id":l.orgId});else if(AQf.has(l.type)&&E?.status.tag==="running")tG0().add(-1,{"org.id":l.orgId})}return f}react(i){return sP0(i,this.deps)}getAbortSignal(i){let u=this.states.get(i);if(u?.status.tag==="running")return u.status.abortController.signal;return null}isRunning(i){return this.states.get(i)?.status.tag==="running"}async stopAll(){for(let[,i]of this.states)if(i.status.tag==="running")i.status.abortController.abort();this.states.clear()}dispose(){if(this.reaperTimer)clearInterval(this.reaperTimer),this.reaperTimer=null}async reapStaleRuns(){let i=this.clock().getTime(),u=[...this.states].filter(([,t])=>t.status.tag==="running");for(let[t,f]of u){if(this.states.get(t)?.status.tag!=="running")continue;let E;try{let w=await this.deps.storage.getProgress(t,f.orgId);E=uG0({persistedLastProgressAt:w?.lastProgressAt??null,currentRunStartedAt:f.status.startedAt.getTime()})}catch(w){console.warn(`[RunRegistry] Reaper progress read failed for ${t}; skipping`,w);continue}if(!iG0({lastProgressAt:E,now:i,idleTimeoutMs:cvi}))continue;let c=await this.deps.storage.get(t,f.orgId).catch(()=>null);if(c&&c.status!=="in_progress"){let w=this.states.get(t);if(w?.status.tag==="running")w.status.abortController.abort();this.states.delete(t);continue}console.warn(`[RunRegistry] Reaping stuck run for thread ${t} (idle > ${cvi/60000}m) ...`),yQf().add(1,{"org.id":f.orgId,reason:"idle_timeout"}),await this.execute({type:"FORCE_FAIL",taskId:t,reason:"reaped"}).catch((w)=>{console.error("[RunRegistry] Reaper execute failed",w)})}}}var TQf=300000,v1u,cvi,UQf,AQf,fG0=(i)=>{let u;return()=>u??=i()},tG0,yQf;var D1u=O(()=>{pP0();J1();v1u=Number(process.env.RUN_IDLE_TIMEOUT_MS),cvi=Number.isFinite(v1u)&&v1u>0?v1u:600000,UQf=new Set(["RUN_STARTED","RUN_RESUMED"]),AQf=new Set(["RUN_COMPLETED","RUN_FAILED","RUN_REQUIRES_ACTION","PREVIOUS_RUN_ABORTED"]),tG0=fG0(()=>yt.createUpDownCounter("decopilot.stream.inflight",{description:"Number of in-flight decopilot stream requests",unit:"{requests}"})),yQf=fG0(()=>yt.createCounter("decopilot.run.reaped",{description:"Number of decopilot runs force-failed by the progress-based reaper",unit:"{runs}"}))});async function lG0(i){let{runId:u}=i,t=VP0(),f=await t.resolveRun(u),l=i.fenceToken??f?.runFenceToken;if(!f||f.version!==2||l==null)return;if($1u({status:f.status,runFenceToken:f.runFenceToken,fenceToken:l}))return;if(!t.getJetStream())throw Error("JetStream unavailable for consume step");await mP0({runId:u,fenceToken:l,messageId:i.messageId,idleTimeoutMs:i.idleTimeoutMs??cvi},t,rP0)}var EG0=O(()=>{h1u();D1u()});function _1u(i){let u=Number.isFinite(i)?Math.max(1,i):1,t=0,f=[];return{async acquire(){if(t<u)t++;else await new Promise((E)=>f.push(E));let l=!1;return()=>{if(l)return;l=!0;let E=f.shift();if(E)E();else t--}},get active(){return t},get pending(){return f.length}}}var PQf,cG0=()=>PQf.acquire();var N1u=O(()=>{PQf=_1u(Number(process.env.DECOPILOT_MAX_CONCURRENT_SUBAGENTS??4))});var O1u,wvi,zN,wG0=()=>({active:zN.active,pending:zN.pending,max:wvi}),$G0=()=>{if(zN.active>=wvi)console.log("[hostedHarness] run parked at concurrency cap",{active:zN.active,pending:zN.pending,max:wvi});return zN.acquire()};var Z1u=O(()=>{N1u();J1();O1u=Number(process.env.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS),wvi=Number.isFinite(O1u)&&O1u>0?O1u:3,zN=_1u(wvi);yt.createObservableGauge("hosted_runs.active",{description:"Hosted agent-loop runs executing on this pod",unit:"{runs}"}).addCallback((i)=>i.observe(zN.active));yt.createObservableGauge("hosted_runs.pending",{description:"Hosted agent-loop runs parked waiting for a slot on this pod",unit:"{runs}"}).addCallback((i)=>i.observe(zN.pending))});function hG0(i){let u=i[1],t=i[2],f=Number(i[3]);return{owner:u,repo:t,number:f,url:`https://github.com/${u}/${t}/pull/${f}`}}function $vi(i){let u=i.length>200000?i.slice(0,200000):i,t=GQf.exec(u);if(t&&Number(t[3])>0)return hG0(t);let f=IQf.exec(u);if(f&&Number(f[3])>0)return hG0(f);return null}function vG0(i){if(i==null)return null;if(typeof i==="string")return $vi(i);let u;try{u=JSON.stringify(i)}catch{return null}return u?$vi(u):null}var GQf,IQf;var B1u=O(()=>{GQf=/https?:\/\/github\.com\/([^/\s"']+)\/([^/\s"']+)\/pull\/(\d+)/,IQf=/https?:\/\/api\.github\.com\/repos\/([^/\s"']+)\/([^/\s"']+)\/pulls\/(\d+)/});class _G0{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(i){if(this.started){if(!i)return;await this.stop()}this.strategy=i,await this.strategy.start((u,t)=>this.localEmit(u,t)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(i){if(this.totalCount>=DG0)return console.warn(`[SSEHub] Total connection limit reached (${DG0})`),null;let u=this.listeners.get(i.organizationId);if(!u)u=new Map,this.listeners.set(i.organizationId,u);if(u.size>=dG0)return console.warn(`[SSEHub] Per-org connection limit reached for ${i.organizationId} (${dG0})`),null;return u.set(i.id,i),this.totalCount++,i.id}remove(i,u){let t=this.listeners.get(i);if(!t)return;if(t.delete(u)){if(this.totalCount--,t.size===0)this.listeners.delete(i)}}emit(i,u){if(this.strategy)this.strategy.broadcast(i,u);else this.localEmit(i,u)}countForOrg(i){return this.listeners.get(i)?.size??0}get count(){return this.totalCount}localEmit(i,u){let t=this.listeners.get(i);if(!t||t.size===0)return;for(let f of t.values()){if(f.typePatterns&&!xQf(u.type,f.typePatterns))continue;try{f.push(u)}catch{this.remove(i,f.id)}}}}function xQf(i,u){for(let t of u){if(t===i)return!0;if(t.endsWith(".*")){let f=t.slice(0,-1);if(i.startsWith(f))return!0}}return!1}var dG0=50,DG0=500,gl;var hvi=O(()=>{J1();gl=new _G0;yt.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback((i)=>i.observe(gl.count))});function n5(i,u){gl.emit(i,{id:crypto.randomUUID(),type:cT0,source:"task-board",subject:u.id,data:u,time:new Date().toISOString()})}function OG0(i,u){gl.emit(i,{id:crypto.randomUUID(),type:wT0,source:"task-board",subject:u,data:{id:u},time:new Date().toISOString()})}function kQf(i,u){return i?[i]:u}async function ZG0(i,u,t){let f=i.metadata?.runMetadata?.taskBoardItemId,l=!f&&t?await i.storage.taskBoard.linkedTaskIds(t,u):[];return kQf(f,l)}async function tR(i,u,t){let f=i.organization?.id;if(!f)return;try{for(let l of await ZG0(i,f,t)){let E=await i.storage.taskBoard.getById(l,f);if(!E||NG0[u]<=NG0[E.status])continue;let c=await i.storage.taskBoard.update(l,f,{status:u},i.auth?.user?.id??E.updatedBy);await i.storage.taskBoard.recordActivity({taskBoardItemId:l,action:"status_changed",actorId:null,data:{from:E.status,to:u}}).catch((w)=>console.error("[task-board] activity log write failed",w)),n5(f,c)}}catch(l){console.error("[task-board] run transition failed",l)}}async function vvi(i,u,t,f){let l=i.organization?.id;if(!l)return;try{let E=vG0(u);if(!E)return;let c=await ZG0(i,l,f);for(let w of c)await i.storage.taskBoard.linkPr({taskBoardItemId:w,organizationId:l,url:E.url,prNumber:E.number,repoOwner:E.owner,repoName:E.repo,connectionId:t??null})}catch(E){console.error("[task-board] PR capture failed",E)}}async function Ao(i,u,t){try{let f=await i.advanceLinkedTasksToReviewOnThreadFinish(u,t);for(let l of f)n5(t,l)}catch(f){console.error("[task-board] thread-finish transition failed",f)}}async function BG0(i,u){let t=i.organization?.id;if(!t)return;try{let f=await i.storage.taskBoard.reopenLinkedTasksOnThreadRun(u,t);for(let l of f)n5(t,l)}catch(f){console.error("[task-board] thread-run reopen failed",f)}}function FG0(i){return i.includes("create_pull_request")||i.includes("createPullRequest")}function gG0(i){if(jQf.test(i))return!0;return XQf.test(i)&&JQf.test(i)}var NG0,jQf,XQf,JQf;var kv=O(()=>{B1u();hvi();NG0={triage:0,todo:1,in_progress:2,in_review:3,done:4};jQf=/\bgh\s+pr\s+create\b/,XQf=/api\.github\.com\/repos\/[^\s"']+\/pulls\b/,JQf=/(?:-X|--request)\s+POST/});import{DBOS as yo}from"@dbos-inc/dbos-sdk";function T1u(i){F1u=i}function TG0(){if(!F1u)throw Error("[hostedHarness] runtime not initialized \u2014 setHostedHarnessRuntime() must run before workflows fire");return F1u}async function KQf(i,u){let t=TG0(),{request:f}=i,l=u??await t.studioContextFactory(f.organizationId,f.userId);if(!l)throw Error("user membership lost mid-dispatch");if(f.runMetadata)l.metadata.runMetadata=f.runMetadata;if(tR(l,"in_progress",i.threadId),!f.runMetadata?.taskBoardItemId)BG0(l,i.threadId);let E=new AbortController,c=await $G0();try{await t.dispatchRunFn({...f,abortSignal:E.signal},l,t.deps)}finally{c()}}function YQf(i,u,t,f=1){let l=t instanceof Error?t.message:String(t);return{messageId:HN(i,u),errorChunk:{type:"error",errorText:l},seq:f,finalSeq:f}}function WQf(i){if(!(i instanceof Error))return;let u=i.lastAckSeq;return typeof u==="number"?u+1:void 0}async function SQf(i,u){let t=TG0(),{streamBuffer:f}=t.deps,{messageId:l,errorChunk:E,seq:c,finalSeq:w}=YQf(i.runId,i.fenceToken,u,WQf(u));if(!f){console.error(`[hostedHarness] no streamBuffer configured; dropping terminal error for run=${i.runId} fence=${i.fenceToken} messageId=${l}`);return}if(!await f.publishRawChunk(i.runId,E,{fenceToken:i.fenceToken,seq:c})){console.error(`[hostedHarness] failed to publish terminal error chunk for run=${i.runId} fence=${i.fenceToken} messageId=${l}`);return}await f.publishDone(i.runId,i.fenceToken,w)}async function LQf(i){try{await yo.runStep(()=>KQf(i),{name:"runHostedHarness",retriesAllowed:!1})}catch(u){await yo.runStep(()=>SQf(i,u),{name:"publishHostedHarnessFailure",retriesAllowed:!0}).catch((t)=>{console.error(`[hostedHarness] could not publish terminal error for run=${i.runId} fence=${i.fenceToken}`,t)})}}function UG0(i,u){return`decopilot-hosted:${i}:${u}`}async function AG0(i){return{workflowID:(await yo.startWorkflow(QQf,{workflowID:UG0(i.runId,i.fenceToken),queueName:VD,enqueueOptions:{queuePartitionKey:i.threadId}})(i)).workflowID}}async function U1u(i,u){await yo.cancelWorkflow(UG0(i,u))}var g1u=1,F1u=null,QQf;var A1u=O(()=>{Z1u();kv();QQf=yo.registerWorkflow(LQf,{name:"hostedHarnessWorkflow",maxRecoveryAttempts:1000})});import{DBOS as fR}from"@dbos-inc/dbos-sdk";function HQf(i){if(i.harnessId==="decopilot")return"cluster";if(i.isLinkCapable&&i.sandboxProviderKind==="user-desktop")return"sandbox";if((i.harnessId==="claude-code"||i.harnessId==="codex")&&i.sandboxProviderKind==="agent-sandbox")throw Error(`not implemented: CLI harness "${i.harnessId}" on an agent-sandbox (cloud-CLI is a planned follow-up)`);return"cluster"}function G1u(i){y1u=i}function zQf(){if(!y1u)throw Error("[threadGate] runtime not initialized \u2014 setThreadGateRuntime() must run before workflows fire");return y1u}function RQf(i,u=khi){let t=i.runFenceToken;if(t)return{runFenceToken:t,claimedRequest:i,shouldPersistFence:!1};let f=u();return{runFenceToken:f,claimedRequest:{...i,runFenceToken:f},shouldPersistFence:!0}}async function nQf(i){let u=zQf(),{request:t}=i,f=t.taskId??i.threadId;if(dT0({harnessId:t.harnessId,sandboxProviderKind:t.target?.sandboxProviderKind}))await b2(u.deps.streamBuffer,f,"starting-run");let l=await u.studioContextFactory(t.organizationId,t.userId);if(!l)throw Error("user membership lost mid-dispatch");let E=u.workPublisher,c=u.prepareLinkWorkFn!=null&&E!=null,w=HQf({isLinkCapable:c,sandboxProviderKind:t.target?.sandboxProviderKind,harnessId:t.harnessId}),$=t.taskId??i.threadId,{runFenceToken:h,claimedRequest:v,shouldPersistFence:d}=RQf(t);if(d)await l.storage.threads.setRunFence($,h);if(w==="cluster")return{runFenceToken:h,hostedEnqueue:{runId:f,fenceToken:h,threadId:i.threadId,request:v}};let D=i.timeoutMs??u.runTimeoutMs,_=new AbortController,N=D!=null?setTimeout(()=>_.abort(),D):null;try{let{taskId:Z,runFenceToken:B,harnessInput:F,messagesRef:g,sandboxConfig:T,orgSlug:U}=await u.prepareLinkWorkFn({...v,abortSignal:_.signal},l,u.deps);if(B!==h)throw Error(`prepareLinkWorkFn returned fence ${B}; expected ${h}`);let A={runId:Z,threadId:t.taskId??i.threadId,orgId:t.organizationId,userId:t.userId,runFenceToken:B,harnessInput:F,...T?{sandbox:T}:{},orgSlug:U,...g?{messagesRef:g}:{}};try{await E.publish(t.userId,A,{signal:_.signal})}catch(G){return console.error(`[thread-gate] link work publish failed for run=${Z}; marking failed`,G),await l.storage.threads.forceFailIfInProgress(Z),{runFenceToken:h}}}finally{if(N!==null)clearTimeout(N)}return{runFenceToken:h}}async function bQf(i){if(i.source!=="user-message")return;let{request:u}=i;mu.capture({distinctId:u.userId,event:"chat_message_started",groups:{organization:u.organizationId},properties:{organization_id:u.organizationId,agent_id:u.agent,mode:u.mode,thread_id:u.taskId??i.threadId,credential_id:u.models.credentialId}})}async function CQf(i,u){if(i.source!=="user-message")return;let{request:t}=i;mu.capture({distinctId:t.userId,event:"chat_message_failed",groups:{organization:t.organizationId},properties:{organization_id:t.organizationId,thread_id:t.taskId??i.threadId,agent_id:t.agent,model_id:t.models.thinking.id,mode:t.mode,error_category:"setup",error_message:u}})}async function dvi(i){await fR.runStep(()=>bQf(i),{name:"trackMessageStarted"});let u;try{let l=i.request.target?.sandboxProviderKind!=="user-desktop";if(u=await fR.runStep(()=>nQf(i),{name:"dispatchRunAndWait",retriesAllowed:l}),u.hostedEnqueue)await AG0(u.hostedEnqueue)}catch(l){let E=l instanceof Error?l.message:String(l);throw await fR.runStep(()=>CQf(i,E),{name:"trackMessageFailed"}),l}let t=i.request.taskId??i.threadId,f="messages"in i.request?void 0:i.request.messageId;return await fR.runStep(()=>lG0({runId:t,fenceToken:u.runFenceToken,messageId:f}),{name:"consumeRunProjection"}),{taskId:i.request.taskId??i.threadId}}async function MQf(i){return dvi(i)}async function U8(i,u){return{workflowID:(await fR.startWorkflow(qQf,{queueName:Wh,enqueueOptions:{queuePartitionKey:i.threadId},workflowID:u?.workflowID})(i)).workflowID}}var P1u=1,y1u=null,qQf;var yG0=O(()=>{z4();to();EG0();A1u();qQf=fR.registerWorkflow(MQf,{name:"threadGateWorkflow",maxRecoveryAttempts:1000})});var Ig=O(()=>{yG0();A1u()});async function lR(i,u){if(u.assigneeId!==U$)return;await VQf(i,u).catch((t)=>{console.error("[task-board] Super Agent enqueue failed",t)})}async function VQf(i,u){let t=u.organizationId,f=u.assignedBy??u.createdBy,l=await Z3(i,"smart"),E=GB(t),c=await i.storage.threads.create({organization_id:t,title:`Super Agent: ${u.title}`,status:"in_progress",virtual_mcp_id:E,message_storage_version:2,created_by:f});await i.storage.taskBoard.linkThread(u.id,c.id,t);let w=["You've been assigned this task. Complete it.","",`Title: ${u.title}`,u.description?`
85440
+ `).replace(/https?:\/\/[^\s)>\]]+/g,"").includes("?")?"requires_action":"completed";if(i==="tool-calls"){let t=u.some((l)=>l.type==="tool-user_ask"&&l.state==="input-available"),f=u.some((l)=>l.state==="approval-requested");return t||f?"requires_action":"completed"}return"failed"}function HN(i,u){return`error-${i}:${u}`}function Evi(i){return{id:i.id,role:i.role,parts:i.parts,metadata:i.metadata??void 0}}var c1u=()=>{};function OQf(i){return`liveness: no stream events for ${Math.round(i/60000)}m`}function $1u(i){return i.runFenceToken!==null&&i.runFenceToken!==i.fenceToken}function MP0(i){w1u=i}function qP0(){if(!w1u)throw Error("[projector-workflow] runtime not initialized \u2014 setProjectorWorkflowRuntime() must run before workflows fire");return w1u}function VP0(){return qP0()}async function rP0(i,u,t){let f=qP0(),l=f.getJetStream();if(!l)throw Error("JetStream unavailable");let E=(await f.messageParts.loadWindow(i.runId,{limit:500})).messages.map(Evi);return{chunkCount:0,attempts:1,outcome:await JP0({chunkStream:bP0(await QP0({js:l,runId:i.runId,fenceToken:i.fenceToken,idleTimeoutMs:i.idleTimeoutMs}),i.runId,ZQf,()=>{f.bumpProgress({runId:i.runId,orgId:u}).catch(()=>{})}),persistence:await zP0({messageParts:f.messageParts,orgId:u,runId:i.runId,requestMessageId:i.messageId,replaceFinal:!0}),originalMessages:E,errorMessageId:HN(i.runId,i.fenceToken),title:{threadId:i.runId,currentThreadTitle:t,persistTitle:async(w,$)=>{await f.persistTitle(i.runId,u,$),await f.onTitleUpdated({runId:i.runId,orgId:u,title:$})}}})}}async function CP0(i,u,t){let f=await i.resolveRun(u).catch(()=>null);return f!==null&&f.runFenceToken===t&&["completed","failed","requires_action"].includes(f.status)}async function mP0(i,u,t){let f=await BQf(i,u);if("skip"in f)return;let l=f.row.orgId,E=f.row.createdBy??i.runId,c=f.row.title;try{let{outcome:w}=await t(i,l,c),$=w?.failed?"failed":w?.finishReason==null?"completed":lvi(w.finishReason,w.finalParts);if($==="failed"){let h=w?.finishReason?`harness reported an error: ${w.finishReason}`:"harness reported an error";if(fvi(i.runId,l),await u.markRunFailed(i.runId,l,h,"harness"))await u.recordFailed({runId:i.runId,orgId:l,distinctId:E,reason:h,kind:"harness"})}else if($==="requires_action")await u.markRunRequiresAction(i.runId,l),await u.clearSynthesizedError(i.runId,i.fenceToken);else{if(await u.completeRunIfNotCompleted(i.runId,l))await u.recordCompleted({runId:i.runId,orgId:l,distinctId:E,usage:w?.usage??{inputTokens:0,outputTokens:0,totalTokens:0}});await u.clearSynthesizedError(i.runId,i.fenceToken)}await u.purgeRun(i.runId,i.fenceToken)}catch(w){if(w instanceof Uo){if(await CP0(u,i.runId,i.fenceToken)){await u.clearSynthesizedError(i.runId,i.fenceToken),await u.purgeRun(i.runId,i.fenceToken);return}let D=`stream truncated before projection could replay it: ${w.message}`;if(fvi(i.runId,l),await u.markRunFailed(i.runId,l,D,"projection"))await u.recordFailed({runId:i.runId,orgId:l,distinctId:E,reason:D,kind:"projection"});await u.purgeRun(i.runId,i.fenceToken);return}let $=w instanceof ivi;if($&&await CP0(u,i.runId,i.fenceToken)){await u.purgeRun(i.runId,i.fenceToken);return}let h=$?OQf(w.idleTimeoutMs):w instanceof Error?w.message:String(w),v=$?"liveness":"projection";if(fvi(i.runId,l),await u.markRunFailed(i.runId,l,h,v))await u.recordFailed({runId:i.runId,orgId:l,distinctId:E,reason:h,kind:v});if($)await u.clearSynthesizedError(i.runId,i.fenceToken);throw w}}async function BQf(i,u){let t=await u.resolveRun(i.runId);if(!t)return{skip:"missing"};if($1u({status:t.status,runFenceToken:t.runFenceToken,fenceToken:i.fenceToken}))return{skip:"stale",row:t};if(t.version!==2)return{skip:"legacy-v1",row:t};return{row:t}}var w1u=null,ZQf;var h1u=O(()=>{KP0();HP0();tvi();RP0();nP0();c1u();ZQf=new E1u});function eP0(i,u){switch(i.type){case"START":{let t={type:"RUN_STARTED",taskId:i.taskId,orgId:i.orgId,userId:i.userId,abortController:i.abortController,runConfig:i.runConfig,podId:i.podId,messageId:i.messageId};if(u?.status.tag==="running")return[{type:"PREVIOUS_RUN_ABORTED",taskId:i.taskId,orgId:u.orgId},t];return[t]}case"STEP_DONE":{if(u?.status.tag!=="running")return[];return[{type:"STEP_COMPLETED",taskId:i.taskId,orgId:u.orgId,stepCount:u.status.stepCount+1}]}case"FINISH":{if(u==null||u.status.tag!=="running")return[];let{stepCount:t}=u.status;if(i.threadStatus==="completed")return[{type:"RUN_COMPLETED",taskId:i.taskId,orgId:u.orgId,stepCount:t}];if(i.threadStatus==="requires_action")return[{type:"RUN_REQUIRES_ACTION",taskId:i.taskId,orgId:u.orgId,stepCount:t}];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:"error"}]}case"CANCEL":{if(u?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:"cancelled"}]}case"RESUME":{if(u?.status.tag==="running")return[];return[{type:"RUN_RESUMED",taskId:i.taskId,orgId:i.orgId,userId:i.userId,abortController:i.abortController,podId:i.podId}]}case"FORCE_FAIL":{if(i.reason==="ghost")return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u?.orgId??i.orgId,reason:i.reason,expectedFenceToken:i.expectedFenceToken??null}];if(u?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:i.reason}]}}}function aP0(i,u,t=new Date){switch(u.type){case"RUN_STARTED":return{taskId:u.taskId,orgId:u.orgId,userId:u.userId,status:{tag:"running",abortController:u.abortController,stepCount:0,startedAt:t}};case"RUN_RESUMED":return{taskId:u.taskId,orgId:u.orgId,userId:u.userId,status:{tag:"running",abortController:u.abortController,stepCount:0,startedAt:t}};case"STEP_COMPLETED":if(i?.status.tag!=="running")return i;return{...i,status:{...i.status,stepCount:u.stepCount}};case"RUN_COMPLETED":return;case"RUN_REQUIRES_ACTION":return;case"RUN_FAILED":return;case"PREVIOUS_RUN_ABORTED":return}}async function oP0(i,u,t,f){let{storage:l,sseHub:E}=f,c=await l.get(i,u);E.emit(u,kd(i,t,{virtualMcpId:c?.virtual_mcp_id??void 0,createdBy:c?.created_by,triggerId:c?.trigger_id,title:c?.title,branch:c?.branch??null,createdAt:c?.created_at,updatedAt:c?.updated_at})),E.emit(u,$Ei(i,t))}async function gQf(i,u){let{storage:t,sseHub:f}=u;switch(i.type){case"RUN_STARTED":{await t.update(i.taskId,i.orgId,{status:"in_progress",run_config:i.runConfig??null,run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,kd(i.taskId,"in_progress",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at,messageId:i.messageId}));return}case"RUN_RESUMED":{await t.update(i.taskId,i.orgId,{status:"in_progress",run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,kd(i.taskId,"in_progress",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at}));return}case"STEP_COMPLETED":f.emit(i.orgId,hri(i.taskId,i.stepCount));return;case"RUN_COMPLETED":await oP0(i.taskId,i.orgId,"completed",u);return;case"RUN_REQUIRES_ACTION":await oP0(i.taskId,i.orgId,"requires_action",u);return;case"RUN_FAILED":{if(i.reason==="ghost"){if(!await t.forceFailIfInProgress(i.taskId,i.orgId,i.expectedFenceToken))return;await t.update(i.taskId,i.orgId,{run_config:null,run_started_at:null})}else await t.update(i.taskId,i.orgId,{status:"failed",run_config:null,run_started_at:null,...i.reason==="reaped"?{failure_reason:FQf,failure_kind:"stall"}:{}});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,kd(i.taskId,"failed",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at})),f.emit(i.orgId,$Ei(i.taskId,"failed"));return}case"PREVIOUS_RUN_ABORTED":return}}async function sP0(i,u){for(let{event:t}of i)await gQf(t,u)}var FQf="Run stalled \u2014 no progress within the idle timeout window";var pP0=O(()=>{nt()});function iG0(i){return i.now-i.lastProgressAt>i.idleTimeoutMs}function uG0(i){return Math.max(i.persistedLastProgressAt??Number.NEGATIVE_INFINITY,i.currentRunStartedAt)}class d1u{deps;clock;states=new Map;reaperTimer=null;constructor(i,u=()=>new Date){this.deps=i;this.clock=u;this.reaperTimer=setInterval(()=>{this.reapStaleRuns().catch((t)=>{console.error("[RunRegistry] Reaper sweep failed",t)})},TQf)}async execute(i){let u=this.dispatch(i);return await this.react(u),u}dispatch(i){let u=this.states.get(i.taskId),t=eP0(i,u),f=[];for(let l of t){let E=this.states.get(l.taskId);if(l.type==="PREVIOUS_RUN_ABORTED"||l.type==="RUN_FAILED"){if(E?.status.tag==="running")E.status.abortController.abort()}let c=aP0(E,l,this.clock());if(c===void 0)this.states.delete(l.taskId);else this.states.set(l.taskId,c);if(f.push({event:l,state:c}),UQf.has(l.type))tG0().add(1,{"org.id":l.orgId});else if(AQf.has(l.type)&&E?.status.tag==="running")tG0().add(-1,{"org.id":l.orgId})}return f}react(i){return sP0(i,this.deps)}getAbortSignal(i){let u=this.states.get(i);if(u?.status.tag==="running")return u.status.abortController.signal;return null}isRunning(i){return this.states.get(i)?.status.tag==="running"}async stopAll(){for(let[,i]of this.states)if(i.status.tag==="running")i.status.abortController.abort();this.states.clear()}dispose(){if(this.reaperTimer)clearInterval(this.reaperTimer),this.reaperTimer=null}async reapStaleRuns(){let i=this.clock().getTime(),u=[...this.states].filter(([,t])=>t.status.tag==="running");for(let[t,f]of u){if(this.states.get(t)?.status.tag!=="running")continue;let E;try{let w=await this.deps.storage.getProgress(t,f.orgId);E=uG0({persistedLastProgressAt:w?.lastProgressAt??null,currentRunStartedAt:f.status.startedAt.getTime()})}catch(w){console.warn(`[RunRegistry] Reaper progress read failed for ${t}; skipping`,w);continue}if(!iG0({lastProgressAt:E,now:i,idleTimeoutMs:cvi}))continue;let c=await this.deps.storage.get(t,f.orgId).catch(()=>null);if(c&&c.status!=="in_progress"){let w=this.states.get(t);if(w?.status.tag==="running")w.status.abortController.abort();this.states.delete(t);continue}console.warn(`[RunRegistry] Reaping stuck run for thread ${t} (idle > ${cvi/60000}m) ...`),yQf().add(1,{"org.id":f.orgId,reason:"idle_timeout"}),await this.execute({type:"FORCE_FAIL",taskId:t,reason:"reaped"}).catch((w)=>{console.error("[RunRegistry] Reaper execute failed",w)})}}}var TQf=300000,v1u,cvi,UQf,AQf,fG0=(i)=>{let u;return()=>u??=i()},tG0,yQf;var D1u=O(()=>{pP0();J1();v1u=Number(process.env.RUN_IDLE_TIMEOUT_MS),cvi=Number.isFinite(v1u)&&v1u>0?v1u:600000,UQf=new Set(["RUN_STARTED","RUN_RESUMED"]),AQf=new Set(["RUN_COMPLETED","RUN_FAILED","RUN_REQUIRES_ACTION","PREVIOUS_RUN_ABORTED"]),tG0=fG0(()=>yt.createUpDownCounter("decopilot.stream.inflight",{description:"Number of in-flight decopilot stream requests",unit:"{requests}"})),yQf=fG0(()=>yt.createCounter("decopilot.run.reaped",{description:"Number of decopilot runs force-failed by the progress-based reaper",unit:"{runs}"}))});async function lG0(i){let{runId:u}=i,t=VP0(),f=await t.resolveRun(u),l=i.fenceToken??f?.runFenceToken;if(!f||f.version!==2||l==null)return;if($1u({status:f.status,runFenceToken:f.runFenceToken,fenceToken:l}))return;if(!t.getJetStream())throw Error("JetStream unavailable for consume step");await mP0({runId:u,fenceToken:l,messageId:i.messageId,idleTimeoutMs:i.idleTimeoutMs??cvi},t,rP0)}var EG0=O(()=>{h1u();D1u()});function _1u(i){let u=Number.isFinite(i)?Math.max(1,i):1,t=0,f=[];return{async acquire(){if(t<u)t++;else await new Promise((E)=>f.push(E));let l=!1;return()=>{if(l)return;l=!0;let E=f.shift();if(E)E();else t--}},get active(){return t},get pending(){return f.length}}}var PQf,cG0=()=>PQf.acquire();var N1u=O(()=>{PQf=_1u(Number(process.env.DECOPILOT_MAX_CONCURRENT_SUBAGENTS??4))});var O1u,wvi,zN,wG0=()=>({active:zN.active,pending:zN.pending,max:wvi}),$G0=()=>{if(zN.active>=wvi)console.log("[hostedHarness] run parked at concurrency cap",{active:zN.active,pending:zN.pending,max:wvi});return zN.acquire()};var Z1u=O(()=>{N1u();J1();O1u=Number(process.env.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS),wvi=Number.isFinite(O1u)&&O1u>0?O1u:3,zN=_1u(wvi);yt.createObservableGauge("hosted_runs.active",{description:"Hosted agent-loop runs executing on this pod",unit:"{runs}"}).addCallback((i)=>i.observe(zN.active));yt.createObservableGauge("hosted_runs.pending",{description:"Hosted agent-loop runs parked waiting for a slot on this pod",unit:"{runs}"}).addCallback((i)=>i.observe(zN.pending))});function hG0(i){let u=i[1],t=i[2],f=Number(i[3]);return{owner:u,repo:t,number:f,url:`https://github.com/${u}/${t}/pull/${f}`}}function $vi(i){let u=i.length>200000?i.slice(0,200000):i,t=GQf.exec(u);if(t&&Number(t[3])>0)return hG0(t);let f=IQf.exec(u);if(f&&Number(f[3])>0)return hG0(f);return null}function vG0(i){if(i==null)return null;if(typeof i==="string")return $vi(i);let u;try{u=JSON.stringify(i)}catch{return null}return u?$vi(u):null}var GQf,IQf;var B1u=O(()=>{GQf=/https?:\/\/github\.com\/([^/\s"']+)\/([^/\s"']+)\/pull\/(\d+)/,IQf=/https?:\/\/api\.github\.com\/repos\/([^/\s"']+)\/([^/\s"']+)\/pulls\/(\d+)/});class _G0{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(i){if(this.started){if(!i)return;await this.stop()}this.strategy=i,await this.strategy.start((u,t)=>this.localEmit(u,t)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(i){if(this.totalCount>=DG0)return console.warn(`[SSEHub] Total connection limit reached (${DG0})`),null;let u=this.listeners.get(i.organizationId);if(!u)u=new Map,this.listeners.set(i.organizationId,u);if(u.size>=dG0)return console.warn(`[SSEHub] Per-org connection limit reached for ${i.organizationId} (${dG0})`),null;return u.set(i.id,i),this.totalCount++,i.id}remove(i,u){let t=this.listeners.get(i);if(!t)return;if(t.delete(u)){if(this.totalCount--,t.size===0)this.listeners.delete(i)}}emit(i,u){if(this.strategy)this.strategy.broadcast(i,u);else this.localEmit(i,u)}countForOrg(i){return this.listeners.get(i)?.size??0}get count(){return this.totalCount}localEmit(i,u){let t=this.listeners.get(i);if(!t||t.size===0)return;for(let f of t.values()){if(f.typePatterns&&!xQf(u.type,f.typePatterns))continue;try{f.push(u)}catch{this.remove(i,f.id)}}}}function xQf(i,u){for(let t of u){if(t===i)return!0;if(t.endsWith(".*")){let f=t.slice(0,-1);if(i.startsWith(f))return!0}}return!1}var dG0=50,DG0=500,gl;var hvi=O(()=>{J1();gl=new _G0;yt.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback((i)=>i.observe(gl.count))});function n5(i,u){gl.emit(i,{id:crypto.randomUUID(),type:cT0,source:"task-board",subject:u.id,data:u,time:new Date().toISOString()})}function OG0(i,u){gl.emit(i,{id:crypto.randomUUID(),type:wT0,source:"task-board",subject:u,data:{id:u},time:new Date().toISOString()})}function kQf(i,u){return i?[i]:u}async function ZG0(i,u,t){let f=i.metadata?.runMetadata?.taskBoardItemId,l=!f&&t?await i.storage.taskBoard.linkedTaskIds(t,u):[];return kQf(f,l)}async function tR(i,u,t){let f=i.organization?.id;if(!f)return;try{for(let l of await ZG0(i,f,t)){let E=await i.storage.taskBoard.getById(l,f);if(!E||NG0[u]<=NG0[E.status])continue;let c=await i.storage.taskBoard.update(l,f,{status:u},i.auth?.user?.id??E.updatedBy);await i.storage.taskBoard.recordActivity({taskBoardItemId:l,action:"status_changed",actorId:null,data:{from:E.status,to:u}}).catch((w)=>console.error("[task-board] activity log write failed",w)),n5(f,c)}}catch(l){console.error("[task-board] run transition failed",l)}}async function vvi(i,u,t,f){let l=i.organization?.id;if(!l)return;try{let E=vG0(u);if(!E)return;let c=await ZG0(i,l,f);for(let w of c)await i.storage.taskBoard.linkPr({taskBoardItemId:w,organizationId:l,url:E.url,prNumber:E.number,repoOwner:E.owner,repoName:E.repo,connectionId:t??null})}catch(E){console.error("[task-board] PR capture failed",E)}}async function Ao(i,u,t){try{let f=await i.advanceLinkedTasksToReviewOnThreadFinish(u,t);for(let l of f)n5(t,l)}catch(f){console.error("[task-board] thread-finish transition failed",f)}}async function BG0(i,u){let t=i.organization?.id;if(!t)return;try{let f=await i.storage.taskBoard.reopenLinkedTasksOnThreadRun(u,t);for(let l of f)n5(t,l)}catch(f){console.error("[task-board] thread-run reopen failed",f)}}function FG0(i){return i.includes("create_pull_request")||i.includes("createPullRequest")}function gG0(i){if(jQf.test(i))return!0;return XQf.test(i)&&JQf.test(i)}var NG0,jQf,XQf,JQf;var kv=O(()=>{B1u();hvi();NG0={triage:0,todo:1,in_progress:2,in_review:3,done:4};jQf=/\bgh\s+pr\s+create\b/,XQf=/api\.github\.com\/repos\/[^\s"']+\/pulls\b/,JQf=/(?:-X|--request)\s+POST/});import{DBOS as yo}from"@dbos-inc/dbos-sdk";function T1u(i){F1u=i}function TG0(){if(!F1u)throw Error("[hostedHarness] runtime not initialized \u2014 setHostedHarnessRuntime() must run before workflows fire");return F1u}async function KQf(i,u){let t=TG0(),{request:f}=i,l=u??await t.studioContextFactory(f.organizationId,f.userId);if(!l)throw Error("user membership lost mid-dispatch");if(f.runMetadata)l.metadata.runMetadata=f.runMetadata;if(tR(l,"in_progress",i.threadId),!f.runMetadata?.taskBoardItemId)BG0(l,i.threadId);let E=new AbortController,c=await $G0();try{await t.dispatchRunFn({...f,abortSignal:E.signal},l,t.deps)}finally{c()}}function YQf(i,u,t,f=1){let l=t instanceof Error?t.message:String(t);return{messageId:HN(i,u),errorChunk:{type:"error",errorText:l},seq:f,finalSeq:f}}function WQf(i){if(!(i instanceof Error))return;let u=i.lastAckSeq;return typeof u==="number"?u+1:void 0}async function SQf(i,u){let t=TG0(),{streamBuffer:f}=t.deps,{messageId:l,errorChunk:E,seq:c,finalSeq:w}=YQf(i.runId,i.fenceToken,u,WQf(u));if(!f){console.error(`[hostedHarness] no streamBuffer configured; dropping terminal error for run=${i.runId} fence=${i.fenceToken} messageId=${l}`);return}if(!await f.publishRawChunk(i.runId,E,{fenceToken:i.fenceToken,seq:c})){console.error(`[hostedHarness] failed to publish terminal error chunk for run=${i.runId} fence=${i.fenceToken} messageId=${l}`);return}await f.publishDone(i.runId,i.fenceToken,w)}async function LQf(i){try{await yo.runStep(()=>KQf(i),{name:"runHostedHarness",retriesAllowed:!1})}catch(u){await yo.runStep(()=>SQf(i,u),{name:"publishHostedHarnessFailure",retriesAllowed:!0}).catch((t)=>{console.error(`[hostedHarness] could not publish terminal error for run=${i.runId} fence=${i.fenceToken}`,t)})}}function UG0(i,u){return`decopilot-hosted:${i}:${u}`}async function AG0(i){return{workflowID:(await yo.startWorkflow(QQf,{workflowID:UG0(i.runId,i.fenceToken),queueName:VD,enqueueOptions:{queuePartitionKey:i.threadId}})(i)).workflowID}}async function U1u(i,u){await yo.cancelWorkflow(UG0(i,u))}var g1u=1,F1u=null,QQf;var A1u=O(()=>{Z1u();kv();QQf=yo.registerWorkflow(LQf,{name:"hostedHarnessWorkflow",maxRecoveryAttempts:1000})});import{DBOS as fR}from"@dbos-inc/dbos-sdk";function HQf(i){if(i.harnessId==="decopilot")return"cluster";if(i.isLinkCapable&&i.sandboxProviderKind==="user-desktop")return"sandbox";if((i.harnessId==="claude-code"||i.harnessId==="codex")&&i.sandboxProviderKind==="agent-sandbox")throw Error(`not implemented: CLI harness "${i.harnessId}" on an agent-sandbox (cloud-CLI is a planned follow-up)`);return"cluster"}function G1u(i){y1u=i}function zQf(){if(!y1u)throw Error("[threadGate] runtime not initialized \u2014 setThreadGateRuntime() must run before workflows fire");return y1u}function RQf(i,u=khi){let t=i.runFenceToken;if(t)return{runFenceToken:t,claimedRequest:i,shouldPersistFence:!1};let f=u();return{runFenceToken:f,claimedRequest:{...i,runFenceToken:f},shouldPersistFence:!0}}async function nQf(i){let u=zQf(),{request:t}=i,f=t.taskId??i.threadId;if(dT0({harnessId:t.harnessId,sandboxProviderKind:t.target?.sandboxProviderKind}))await b2(u.deps.streamBuffer,f,"starting-run");let l=await u.studioContextFactory(t.organizationId,t.userId);if(!l)throw Error("user membership lost mid-dispatch");let E=u.workPublisher,c=u.prepareLinkWorkFn!=null&&E!=null,w=HQf({isLinkCapable:c,sandboxProviderKind:t.target?.sandboxProviderKind,harnessId:t.harnessId}),$=t.taskId??i.threadId,{runFenceToken:h,claimedRequest:v,shouldPersistFence:d}=RQf(t);if(d)await l.storage.threads.setRunFence($,h);if(w==="cluster")return{runFenceToken:h,hostedEnqueue:{runId:f,fenceToken:h,threadId:i.threadId,request:v}};let D=i.timeoutMs??u.runTimeoutMs,_=new AbortController,N=D!=null?setTimeout(()=>_.abort(),D):null;try{let{taskId:Z,runFenceToken:B,harnessInput:F,messagesRef:g,sandboxConfig:T,orgSlug:U}=await u.prepareLinkWorkFn({...v,abortSignal:_.signal},l,u.deps);if(B!==h)throw Error(`prepareLinkWorkFn returned fence ${B}; expected ${h}`);let A={runId:Z,threadId:t.taskId??i.threadId,orgId:t.organizationId,userId:t.userId,runFenceToken:B,harnessInput:F,...T?{sandbox:T}:{},orgSlug:U,...g?{messagesRef:g}:{}};try{await E.publish(t.userId,A,{signal:_.signal})}catch(G){return console.error(`[thread-gate] link work publish failed for run=${Z}; marking failed`,G),await l.storage.threads.forceFailIfInProgress(Z),{runFenceToken:h}}}finally{if(N!==null)clearTimeout(N)}return{runFenceToken:h}}async function bQf(i){if(i.source!=="user-message")return;let{request:u}=i;mu.capture({distinctId:u.userId,event:"chat_message_started",groups:{organization:u.organizationId},properties:{organization_id:u.organizationId,agent_id:u.agent,mode:u.mode,thread_id:u.taskId??i.threadId,credential_id:u.models.credentialId}})}async function CQf(i,u){if(i.source!=="user-message")return;let{request:t}=i;mu.capture({distinctId:t.userId,event:"chat_message_failed",groups:{organization:t.organizationId},properties:{organization_id:t.organizationId,thread_id:t.taskId??i.threadId,agent_id:t.agent,model_id:t.models.thinking.id,mode:t.mode,error_category:"setup",error_message:u}})}async function dvi(i){await fR.runStep(()=>bQf(i),{name:"trackMessageStarted"});let u;try{let l=i.request.target?.sandboxProviderKind!=="user-desktop";if(u=await fR.runStep(()=>nQf(i),{name:"dispatchRunAndWait",retriesAllowed:l}),u.hostedEnqueue)await AG0(u.hostedEnqueue)}catch(l){let E=l instanceof Error?l.message:String(l);throw await fR.runStep(()=>CQf(i,E),{name:"trackMessageFailed"}),l}let t=i.request.taskId??i.threadId,f="messages"in i.request?void 0:i.request.messageId;return await fR.runStep(()=>lG0({runId:t,fenceToken:u.runFenceToken,messageId:f}),{name:"consumeRunProjection"}),{taskId:i.request.taskId??i.threadId}}async function MQf(i){return dvi(i)}async function U8(i,u){return{workflowID:(await fR.startWorkflow(qQf,{queueName:Wh,enqueueOptions:{queuePartitionKey:i.threadId},workflowID:u?.workflowID})(i)).workflowID}}var P1u=1,y1u=null,qQf;var yG0=O(()=>{z4();to();EG0();A1u();qQf=fR.registerWorkflow(MQf,{name:"threadGateWorkflow",maxRecoveryAttempts:1000})});var Ig=O(()=>{yG0();A1u()});async function lR(i,u){if(u.assigneeId!==U$)return;await VQf(i,u).catch((t)=>{console.error("[task-board] Super Agent enqueue failed",t)})}async function VQf(i,u){let t=u.organizationId,f=u.assignedBy??u.createdBy,l=await Z3(i,"smart"),E=GB(t),c=await i.storage.threads.create({organization_id:t,title:`Super Agent: ${u.title}`,status:"in_progress",virtual_mcp_id:E,message_storage_version:2,created_by:f});await i.storage.taskBoard.linkThread(u.id,c.id,t);let w=["You've been assigned this task. Complete it.","",`Title: ${u.title}`,u.description?`
85441
85441
  Description:
85442
85442
  ${u.description}
85443
85443
  `:"","How to work:","- First decide whether this task requires changing code in a repository. Some tasks (research, answering a question, planning) don't. If it doesn't, just do the work directly \u2014 don't load a repo or open a PR.","- If it DOES need code changes: use the `load_repo` tool to load the relevant repository, then make the change, commit on a new branch, push, and open a pull request. Only then does a PR apply.","- Prefer the GitHub tool to open the PR. If it errors or targets the wrong repo, fall back to `git push` + the GitHub REST API (the auth token is embedded in the `origin` URL).","- If a dev server is running it hot-reloads your changes \u2014 don't restart it, hunt for its port, or run a full typecheck/build just to verify a small edit.","- Change only what the task needs. Don't trace the definition of a pre-existing symbol that's incidental to your change \u2014 note it in one line and move on. Prefer one or two broad searches over many narrow retries.","- If you're blocked on a decision or information only a human has, call the `user_ask` tool instead of guessing or stopping.","",`(task id: ${u.id})`].join(`