decocms 4.170.4 → 4.170.6

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 (220) hide show
  1. package/dist/client/assets/{AlertCircle-Dffzq_ZN.js → AlertCircle-BGl5ighK.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CMNHajTI.js → AreaChart-T2w6v7ql.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-CGvV5PLf.js → ArrowUp-CFKeYwqA.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-CbqzKWGP.js → ArrowUpRight-Dt7ni8hD.js} +1 -1
  5. package/dist/client/assets/{Check-Bz0gt91y.js → Check-XFhUqf8U.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-C7yM7Zap.js → CheckCircle-Beg-_WPP.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-BPNK4USg.js → ChevronDown-50yl4oIw.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-C62Sp-a-.js → ChevronRight-O2B2rAg8.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-DSh7qBtT.js → ChevronUp-C_V9zxcD.js} +1 -1
  10. package/dist/client/assets/{Copy01-BM2OefYX.js → Copy01-CAs5aPtG.js} +1 -1
  11. package/dist/client/assets/{CpuChip01-BIyeXmJ5.js → CpuChip01-B5F79sww.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-DKjPE2YG.js → DotsVertical-_UckeHmI.js} +1 -1
  13. package/dist/client/assets/{Eye-X4L6l8Qy.js → Eye-B6aQvm7I.js} +1 -1
  14. package/dist/client/assets/{FilterLines-Cx7rDrHt.js → FilterLines-O8vfNPK0.js} +1 -1
  15. package/dist/client/assets/{HardDrive-C14s2ieo.js → HardDrive-CSF6kWer.js} +1 -1
  16. package/dist/client/assets/{Key01-Hm2Fox-H.js → Key01-Boase60D.js} +1 -1
  17. package/dist/client/assets/{LayoutLeft-DzMObfnL.js → LayoutLeft-B1QA8TOx.js} +1 -1
  18. package/dist/client/assets/{LinkExternal01-CXSRYE31.js → LinkExternal01-wcFp3Fli.js} +1 -1
  19. package/dist/client/assets/{LogOut01-DJIyUohZ.js → LogOut01-Do_0Tqip.js} +1 -1
  20. package/dist/client/assets/{Monitor01-Dsk5GgOz.js → Monitor01--21gWGku.js} +1 -1
  21. package/dist/client/assets/{Palette-DuPAEn5N.js → Palette-BRQYUWid.js} +1 -1
  22. package/dist/client/assets/{Play-4eS81vvy.js → Play-BpEYYFMZ.js} +1 -1
  23. package/dist/client/assets/{Plus-DbIhBwbJ.js → Plus-KCSkpE7B.js} +1 -1
  24. package/dist/client/assets/{SearchLg-Cjqx-scg.js → SearchLg-weNBVZ4Z.js} +1 -1
  25. package/dist/client/assets/{SearchMd-Dc987v6K.js → SearchMd-9t27WW0h.js} +1 -1
  26. package/dist/client/assets/{Settings02-BgmECssu.js → Settings02-DXgUkSaK.js} +1 -1
  27. package/dist/client/assets/{Shield01-ili7WnRz.js → Shield01-CQrsE2Tq.js} +1 -1
  28. package/dist/client/assets/{Star01-Dnh_ljc8.js → Star01-CyHWKvpI.js} +1 -1
  29. package/dist/client/assets/{Stars01-DKLhshOO.js → Stars01-Bfwum3J3.js} +1 -1
  30. package/dist/client/assets/{Stars02-DgSJcSLO.js → Stars02-hzTJtSUN.js} +1 -1
  31. package/dist/client/assets/{Sun-Cs4p_jLH.js → Sun-_y1aT31G.js} +1 -1
  32. package/dist/client/assets/{SwitchHorizontal01-wBoObRHQ.js → SwitchHorizontal01-B1iilh1T.js} +1 -1
  33. package/dist/client/assets/{Tool01-BUsWsGW7.js → Tool01-DtW2gfBS.js} +1 -1
  34. package/dist/client/assets/{Tool02-D7nTNwRx.js → Tool02-Dt0sAKBi.js} +1 -1
  35. package/dist/client/assets/{Trash01-RNrAYYMt.js → Trash01-B3C_Qnqh.js} +1 -1
  36. package/dist/client/assets/{TrendUp01-D4vnUcIt.js → TrendUp01-BNK9-fkG.js} +1 -1
  37. package/dist/client/assets/{Upload01-BjwlqYSK.js → Upload01-CxqBazIa.js} +1 -1
  38. package/dist/client/assets/{User01-CRoNKvA4.js → User01-BgnTJii8.js} +1 -1
  39. package/dist/client/assets/{Users01-DTq7O8jZ.js → Users01-CjGi1sKt.js} +1 -1
  40. package/dist/client/assets/{Users03-ofglNxfo.js → Users03-CrZ8BG5V.js} +1 -1
  41. package/dist/client/assets/{X-BxkKXXOZ.js → X-D-91LUkr.js} +1 -1
  42. package/dist/client/assets/{XCircle-CL1Cfcyf.js → XCircle-Dqfs6zJW.js} +1 -1
  43. package/dist/client/assets/{XClose-BAUvtYrU.js → XClose-DkfDI0Ya.js} +1 -1
  44. package/dist/client/assets/{Zap-D9pVbd-F.js → Zap-BGpFnOwn.js} +1 -1
  45. package/dist/client/assets/{ZapSquare-DSuoJsUU.js → ZapSquare-COK8Z6p_.js} +1 -1
  46. package/dist/client/assets/{access-gate-C2OrVvkI.js → access-gate-CMzKna09.js} +1 -1
  47. package/dist/client/assets/{add-section-modal-DkTdmz-t.js → add-section-modal-0gB0am5u.js} +1 -1
  48. package/dist/client/assets/{agent-icon-y0K6Ib_X.js → agent-icon-DTWpfaUv.js} +1 -1
  49. package/dist/client/assets/{agents-list-BRhG6Tw2.js → agents-list-bnG-f-4w.js} +1 -1
  50. package/dist/client/assets/{ai-providers-BkcDm1cf.js → ai-providers-D1_DYk1t.js} +1 -1
  51. package/dist/client/assets/{alert-ChOMzxHq.js → alert-DXKluUF_.js} +1 -1
  52. package/dist/client/assets/{alert-dialog-llEz0JAi.js → alert-dialog-m68nyvLc.js} +1 -1
  53. package/dist/client/assets/{app-editor-uDK60Ku5.js → app-editor-KzORC3cY.js} +1 -1
  54. package/dist/client/assets/{auth-1D6Ff8lo.js → auth-D1K3kq5l.js} +1 -1
  55. package/dist/client/assets/{auth-catchall-DFbGyUxM.js → auth-catchall-BEuCYqxb.js} +1 -1
  56. package/dist/client/assets/{auth-entry-CftV0cNM.js → auth-entry-DK-xLjz3.js} +1 -1
  57. package/dist/client/assets/{auth-split-layout-CFp94BVH.js → auth-split-layout-DSlsQB4t.js} +1 -1
  58. package/dist/client/assets/{authenticate-and-persist-oauth-DogWRHIL.js → authenticate-and-persist-oauth-BJZGpecB.js} +1 -1
  59. package/dist/client/assets/{automation-list-row-Dadk4eLW.js → automation-list-row-Bx08NGLt.js} +1 -1
  60. package/dist/client/assets/{automation-runs-DX59zSiP.js → automation-runs-YVjmznzu.js} +1 -1
  61. package/dist/client/assets/{automations-Dbr0i-wc.js → automations-BPeRBEjq.js} +1 -1
  62. package/dist/client/assets/{avatar-CSGgeUb4.js → avatar-DvWDftqB.js} +1 -1
  63. package/dist/client/assets/{badge-X0L4i6oj.js → badge-BUMIf0Ml.js} +1 -1
  64. package/dist/client/assets/{block-document-CDPUWZpc.js → block-document-bt-1D3OT.js} +1 -1
  65. package/dist/client/assets/{brand-context-BIQmZ_eb.js → brand-context-DLbvsuZl.js} +1 -1
  66. package/dist/client/assets/{buckets-CAgJAo_Q.js → buckets-PzW-4bBS.js} +1 -1
  67. package/dist/client/assets/{bulk-category-panel-ozHnkeiI.js → bulk-category-panel-CyUoOi7H.js} +1 -1
  68. package/dist/client/assets/{calendar-C2AYQnKw.js → calendar-BDXgO3W8.js} +1 -1
  69. package/dist/client/assets/{capability-load-error-DofyvwMH.js → capability-load-error-AvDtCdwA.js} +1 -1
  70. package/dist/client/assets/{card-BLCWOYJ0.js → card-DzGTj8nC.js} +1 -1
  71. package/dist/client/assets/{category-editor-BlLVVdxz.js → category-editor-C3U1qk3_.js} +1 -1
  72. package/dist/client/assets/{chat-context-BmWOwP1z.js → chat-context-DNbdUqx6.js} +1 -1
  73. package/dist/client/assets/{checkbox-BRhGIRoW.js → checkbox-CawHejtp.js} +1 -1
  74. package/dist/client/assets/{cli-auth-success-D1LP2TMg.js → cli-auth-success-D4d43DD2.js} +1 -1
  75. package/dist/client/assets/{collection-detail-nC7P3pwm.js → collection-detail-DNl-FNkp.js} +1 -1
  76. package/dist/client/assets/{collection-display-button-BmqJyb8a.js → collection-display-button-D6yvS7Dq.js} +1 -1
  77. package/dist/client/assets/{collection-search-L2h4er6w.js → collection-search-Dvzr6bxB.js} +1 -1
  78. package/dist/client/assets/{collection-table-wrapper-C9fjwVnj.js → collection-table-wrapper-D2Rrhmg5.js} +1 -1
  79. package/dist/client/assets/{collection-tabs-DMqJXOtl.js → collection-tabs-BmRzx03c.js} +1 -1
  80. package/dist/client/assets/{command-DEn0LVGV.js → command-DpSfg7db.js} +1 -1
  81. package/dist/client/assets/{commerce-onboarding-C9q8kul4.js → commerce-onboarding-o97RlK8d.js} +1 -1
  82. package/dist/client/assets/{companions-core-oYWNzm-8.js → companions-core-Ckx3OWvB.js} +1 -1
  83. package/dist/client/assets/{connect-Cc9uQO7h.js → connect-BuTZtRg9.js} +1 -1
  84. package/dist/client/assets/{connection-DNKzBLU6.js → connection-DQpKO4Xe.js} +1 -1
  85. package/dist/client/assets/{connection-card-CLTDSPZY.js → connection-card-CD9NKO3K.js} +1 -1
  86. package/dist/client/assets/{connection-detail-BOe1htcB.js → connection-detail-BYPDCNsG.js} +1 -1
  87. package/dist/client/assets/{connection-form-helpers-DSg3kPpS.js → connection-form-helpers-BkdXd-D2.js} +1 -1
  88. package/dist/client/assets/{connections-acYNnjpz.js → connections-zQBJyLGd.js} +1 -1
  89. package/dist/client/assets/{decopilot-sse-pool-BSQpNnmR.js → decopilot-sse-pool-Dnihfra3.js} +1 -1
  90. package/dist/client/assets/{dialog-CxOlfZ0Y.js → dialog-CtnwWKwM.js} +1 -1
  91. package/dist/client/assets/{domain-settings-CQJardaM.js → domain-settings-CI1CQcUd.js} +1 -1
  92. package/dist/client/assets/{drawer-aoTTmB0B.js → drawer-BVqquu4q.js} +1 -1
  93. package/dist/client/assets/{dropdown-menu-Ii93040I.js → dropdown-menu-BGugK2qR.js} +1 -1
  94. package/dist/client/assets/{empty-state-B0LFlf6s.js → empty-state-CBSpE2Uj.js} +1 -1
  95. package/dist/client/assets/{extract-connection-data-BwPftCZb.js → extract-connection-data-DL70rQ_6.js} +1 -1
  96. package/dist/client/assets/{file-explorer-CjdnV-6b.js → file-explorer-Dbf1s_sD.js} +1 -1
  97. package/dist/client/assets/{form-TfFmu9r0.js → form-DR38KL2W.js} +1 -1
  98. package/dist/client/assets/{general-Drqqlcb8.js → general-DUeYXSMD.js} +1 -1
  99. package/dist/client/assets/{github-repo-picker-C36C95BN.js → github-repo-picker-BhD2Zo7-.js} +1 -1
  100. package/dist/client/assets/{hooks-C1veRuyx.js → hooks-CXYFKnXM.js} +1 -1
  101. package/dist/client/assets/{index-BoNg1AuM.js → index-AV5Q0w_h.js} +1 -1
  102. package/dist/client/assets/{index-B7agBJk1.js → index-BWWLh4Um.js} +1 -1
  103. package/dist/client/assets/{index-DZYakX-m.js → index-BtXaZS8G.js} +5 -5
  104. package/dist/client/assets/{index-C1_awH14.js → index-CNeG9xZE.js} +1 -1
  105. package/dist/client/assets/{index-CGw51Y2l.js → index-CUjzC1oW.js} +3 -3
  106. package/dist/client/assets/{index-G3dU9NY2.js → index-Ce0Auruj.js} +3 -3
  107. package/dist/client/assets/{index-GyRadZa9.js → index-DArsFur5.js} +1 -1
  108. package/dist/client/assets/{index-BsHsC9SD.js → index-DBaKGixC.js} +1 -1
  109. package/dist/client/assets/{index-C1OQ0RhL.js → index-DcyJ_KTy.js} +1 -1
  110. package/dist/client/assets/{index-Cu3TzZv_.js → index-RRmkJud_.js} +1 -1
  111. package/dist/client/assets/{index-Maun0gdz.js → index-Zdp2cEyF.js} +1 -1
  112. package/dist/client/assets/{index-redirect-DOZ8lSD6.js → index-redirect-Bruk5RBp.js} +1 -1
  113. package/dist/client/assets/{input-CjZuYgEH.js → input-DnnpGkKX.js} +1 -1
  114. package/dist/client/assets/{integration-icon-COkVcLO8.js → integration-icon-CYI0UnJJ.js} +1 -1
  115. package/dist/client/assets/{invite-member-dialog-vC5cQwvl.js → invite-member-dialog-B0SWKt2Q.js} +1 -1
  116. package/dist/client/assets/{label-CwC0MQ1h.js → label-8sQd9VGH.js} +1 -1
  117. package/dist/client/assets/{layout-DPtLxgwX.js → layout-Bw6vv6l4.js} +1 -1
  118. package/dist/client/assets/{login-Cdkvzrqe.js → login-Q8JCy4Gk.js} +1 -1
  119. package/dist/client/assets/{mcp-oauth-CsRO8hOm.js → mcp-oauth-f9iD4BaF.js} +1 -1
  120. package/dist/client/assets/{members-C4d5TP2s.js → members-C0ZHT_1Z.js} +1 -1
  121. package/dist/client/assets/{monaco-editor-B1_6N7uk.js → monaco-editor-CD6O6U38.js} +1 -1
  122. package/dist/client/assets/{monitoring-stats-row-DyQyW_lD.js → monitoring-stats-row-CCCQZ9Fn.js} +1 -1
  123. package/dist/client/assets/{multi-select-BFGd-k9b.js → multi-select-B5c9Yhpu.js} +1 -1
  124. package/dist/client/assets/{oauth-callback-ai-provider-BR-n46VP.js → oauth-callback-ai-provider-DX_L_tfv.js} +1 -1
  125. package/dist/client/assets/{oauth-callback-lzUV_T-_.js → oauth-callback-wIiufHVT.js} +1 -1
  126. package/dist/client/assets/{onboarding-DVhTtRxt.js → onboarding-CafiWazF.js} +1 -1
  127. package/dist/client/assets/{org-layout-DdYINXx8.js → org-layout-BOoVf_Q6.js} +1 -1
  128. package/dist/client/assets/{organization-choice-D9fsMN-n.js → organization-choice-DUrOxfld.js} +1 -1
  129. package/dist/client/assets/{orgs-DDHYIoYk.js → orgs-B4QfxaeH.js} +1 -1
  130. package/dist/client/assets/{page-seo-form-BeNIr4Og.js → page-seo-form-DtVU0PxG.js} +1 -1
  131. package/dist/client/assets/{popover-B6-VOpEs.js → popover-Cj0KqrSY.js} +1 -1
  132. package/dist/client/assets/{post-editor-D0U8_iYo.js → post-editor-lA9sctPj.js} +1 -1
  133. package/dist/client/assets/{primitives-BZLCjd7O.js → primitives-B16QDSRq.js} +1 -1
  134. package/dist/client/assets/{profile-CGatJBBY.js → profile-DJXWamrw.js} +1 -1
  135. package/dist/client/assets/project-app-view-BKRSMom2.js +1 -0
  136. package/dist/client/assets/record-editor-B9hwvS4r.js +1 -0
  137. package/dist/client/assets/{redirect-editor-Fg6944G7.js → redirect-editor-rZkCvwF2.js} +1 -1
  138. package/dist/client/assets/registry-B49leyHW.js +2 -0
  139. package/dist/client/assets/{registry-layout-BUIH0qyx.js → registry-layout-CicvdeGP.js} +1 -1
  140. package/dist/client/assets/{reports-oN0IIpfe.js → reports-BZr3N1to.js} +1 -1
  141. package/dist/client/assets/{require-capability-CSnMNUTJ.js → require-capability-CBnKsCv5.js} +1 -1
  142. package/dist/client/assets/{required-auth-layout-Beg15UCY.js → required-auth-layout-BfzAS318.js} +1 -1
  143. package/dist/client/assets/{reset-password-DO9lpit1.js → reset-password-DUp4DNkx.js} +1 -1
  144. package/dist/client/assets/{roles-CuXzljqr.js → roles-CMtafLvT.js} +1 -1
  145. package/dist/client/assets/{search-input-99jVvVXG.js → search-input-iCXBXliJ.js} +1 -1
  146. package/dist/client/assets/{secrets-CPT_AbXa.js → secrets-CiQQtYAp.js} +1 -1
  147. package/dist/client/assets/{sections-editor-CVtLTZyZ.js → sections-editor-mDkErbzS.js} +1 -1
  148. package/dist/client/assets/{select-DJjRPXi3.js → select-Cf5sw-NL.js} +1 -1
  149. package/dist/client/assets/{select-model-BXNjZx2L.js → select-model-MEvU5FyF.js} +1 -1
  150. package/dist/client/assets/{self-tool-result-D1OFuMQV.js → self-tool-result-CNtN1Cfa.js} +1 -1
  151. package/dist/client/assets/{seo-editor-1X_baqP3.js → seo-editor-D2Hi7OjJ.js} +1 -1
  152. package/dist/client/assets/{settings-layout-Lmf1pV5T.js → settings-layout-DtiIg5Rj.js} +1 -1
  153. package/dist/client/assets/{settings-section-BAc6L2-C.js → settings-section-B4on_fER.js} +1 -1
  154. package/dist/client/assets/{shell-controls--rmuGoVG.js → shell-controls-CV46q6o7.js} +1 -1
  155. package/dist/client/assets/{shell-layout-CRUVQFX0.js → shell-layout-C9fpq0V8.js} +1 -1
  156. package/dist/client/assets/{sidebar-CVbSUyOG.js → sidebar-DZRyO9Fu.js} +1 -1
  157. package/dist/client/assets/{skeleton-BdC_6P4Y.js → skeleton-mVQ5yppY.js} +1 -1
  158. package/dist/client/assets/{spinner-CPF9AG_E.js → spinner-CxW_9APv.js} +1 -1
  159. package/dist/client/assets/{sso-DTbTbvZR.js → sso-CQ8uPY5L.js} +1 -1
  160. package/dist/client/assets/{store-CkAY-HVn.js → store-B1BmZjZW.js} +1 -1
  161. package/dist/client/assets/store-registry-Ckp7aprw.js +2 -0
  162. package/dist/client/assets/{studio-tools-Cg1eFuyV.js → studio-tools-CmS7BNcR.js} +1 -1
  163. package/dist/client/assets/{switch-CAPZKffc.js → switch-7TQFddVf.js} +1 -1
  164. package/dist/client/assets/{tab-id-BBg_TxqQ.js → tab-id-D2XJFPyy.js} +1 -1
  165. package/dist/client/assets/{table-BGswKiit.js → table-BOa6JWXF.js} +1 -1
  166. package/dist/client/assets/{tabs-BAzjvT7g.js → tabs-ZJAwmfUK.js} +1 -1
  167. package/dist/client/assets/{textarea-DWZEefhT.js → textarea-DsocCxeK.js} +1 -1
  168. package/dist/client/assets/{toggle-group-DoUx6q98.js → toggle-group-DJaxlxEL.js} +1 -1
  169. package/dist/client/assets/{toolbar-C60rCKCk.js → toolbar-Cx92eLpk.js} +1 -1
  170. package/dist/client/assets/{tooltip-wzItPbXP.js → tooltip-CArfcpnk.js} +1 -1
  171. package/dist/client/assets/{use-ai-providers-DwIh41lG.js → use-ai-providers-CqJWs_4B.js} +1 -1
  172. package/dist/client/assets/{use-automations-CgcU8g4T.js → use-automations-D7xHpKWL.js} +1 -1
  173. package/dist/client/assets/{use-autosave-D-c12Ygv.js → use-autosave-B-xTTeYd.js} +1 -1
  174. package/dist/client/assets/{use-capability-B6FhR7iO.js → use-capability-BLJUv44U.js} +1 -1
  175. package/dist/client/assets/{use-clock-tick-BRxIqD8m.js → use-clock-tick-2avMlm_f.js} +1 -1
  176. package/dist/client/assets/{use-connection-CzI1Qk4q.js → use-connection-CAsaJp9E.js} +1 -1
  177. package/dist/client/assets/{use-copy-DPyuHT9t.js → use-copy-Dt4p5QOr.js} +1 -1
  178. package/dist/client/assets/{use-create-virtual-mcp-LZgL9B5r.js → use-create-virtual-mcp-BnYBn_4i.js} +1 -1
  179. package/dist/client/assets/{use-debounced-autosave-B2t20Mns.js → use-debounced-autosave-C7nZBt3f.js} +1 -1
  180. package/dist/client/assets/{use-debounced-value-D-F6wGFO.js → use-debounced-value-C1QOQAtO.js} +1 -1
  181. package/dist/client/assets/{use-deco-credits-Dk64TYT8.js → use-deco-credits-DA84JKXH.js} +1 -1
  182. package/dist/client/assets/{use-decopilot-events-DRoXwozU.js → use-decopilot-events-DZsviPrS.js} +1 -1
  183. package/dist/client/assets/{use-delete-connection-B82qPfiX.js → use-delete-connection-BdLq1wVF.js} +1 -1
  184. package/dist/client/assets/{use-deployment-admin-D4Cy8C9u.js → use-deployment-admin-BpF3NIMd.js} +1 -1
  185. package/dist/client/assets/{use-file-configs-ka2k8fDd.js → use-file-configs-daU8vwWC.js} +1 -1
  186. package/dist/client/assets/{use-infinite-scroll-2t_7e6aG.js → use-infinite-scroll-Dc3N52L4.js} +1 -1
  187. package/dist/client/assets/{use-join-requests-CcNEwd5p.js → use-join-requests-Cx3hJ6wX.js} +1 -1
  188. package/dist/client/assets/{use-mcp-auth-status-Cq_mr41q.js → use-mcp-auth-status-MEBh8zA_.js} +1 -1
  189. package/dist/client/assets/{use-mcp-client-BfFdajzI.js → use-mcp-client-UeAQ9YgN.js} +1 -1
  190. package/dist/client/assets/{use-mcp-tools-CM9gHBUb.js → use-mcp-tools-wmaa4DjL.js} +1 -1
  191. package/dist/client/assets/{use-members-Csjm1RBN.js → use-members-DUgeLbCs.js} +1 -1
  192. package/dist/client/assets/{use-mobile-1hg5p0vG.js → use-mobile-CV-pNUb6.js} +1 -1
  193. package/dist/client/assets/{use-navigate-to-agent-BTjZAjII.js → use-navigate-to-agent-ChzrB1ZD.js} +1 -1
  194. package/dist/client/assets/{use-org-auth-client-CgvL9SL_.js → use-org-auth-client-yxuFw5uC.js} +1 -1
  195. package/dist/client/assets/{use-org-sso-CCqRgiHq.js → use-org-sso-aU764qAJ.js} +1 -1
  196. package/dist/client/assets/{use-organization-roles-D1BVI7Ao.js → use-organization-roles-Bfv_iU-9.js} +1 -1
  197. package/dist/client/assets/{use-organization-settings-BmCj2qM1.js → use-organization-settings-C7tDUbh-.js} +1 -1
  198. package/dist/client/assets/{use-registry-connections-xKigbUiK.js → use-registry-connections-45HurGxs.js} +1 -1
  199. package/dist/client/assets/{use-secrets-8u3VKT8C.js → use-secrets-CJgGQHsH.js} +1 -1
  200. package/dist/client/assets/{use-status-sounds-DaqnGQEb.js → use-status-sounds-iy7R43uR.js} +1 -1
  201. package/dist/client/assets/{use-tags-BmaFwLb5.js → use-tags-CO1WM3yG.js} +1 -1
  202. package/dist/client/assets/{use-view-mode-DpOP6bx5.js → use-view-mode--B0d8AL9.js} +1 -1
  203. package/dist/client/assets/{use-virtual-mcp-wMWmRJU_.js → use-virtual-mcp-DJsJxcgI.js} +1 -1
  204. package/dist/client/assets/useInfiniteQuery-BKVS2juv.js +1 -0
  205. package/dist/client/assets/{useQueries-5qapwdoD.js → useQueries-MNq4iErN.js} +1 -1
  206. package/dist/client/assets/{useRouterState-D-CAa0FO.js → useRouterState-Bkw7ytQh.js} +1 -1
  207. package/dist/client/assets/useSuspenseInfiniteQuery-CtHEFnp7.js +1 -0
  208. package/dist/client/assets/{users-DDMwq9VT.js → users-BPF-0qLg.js} +1 -1
  209. package/dist/client/assets/{variant-calendar-CaJHz1Zh.js → variant-calendar-DOdhXcS5.js} +1 -1
  210. package/dist/client/assets/{view-mode-toggle-mL8GRdj8.js → view-mode-toggle-BTgX_5Kn.js} +1 -1
  211. package/dist/client/index.html +1 -1
  212. package/dist/server/cli.js +2 -2
  213. package/dist/server/server.js +2 -2
  214. package/package.json +1 -1
  215. package/dist/client/assets/project-app-view-DUm4j4Oj.js +0 -1
  216. package/dist/client/assets/record-editor-CPu1gGEA.js +0 -1
  217. package/dist/client/assets/registry-ByIVM6dw.js +0 -2
  218. package/dist/client/assets/store-registry-4hu2YFMi.js +0 -2
  219. package/dist/client/assets/useInfiniteQuery-CdZJzZnV.js +0 -1
  220. package/dist/client/assets/useSuspenseInfiniteQuery-Ccfuu0Qp.js +0 -1
@@ -1215,7 +1215,7 @@ Respond with a JSON object containing the title.`,g4$=($)=>/[\p{L}\p{N}]/u.test(
1215
1215
  `);return""}return""}function l4$($,Z){let X=new Set;for(let G of $){if(G.role!=="assistant")continue;for(let Q of G.parts){let Y=Q;if((Y.toolName==="enable_tool"||Y.toolName==="enable_tools")&&Y.result){let J=Y.result;if(Array.isArray(J.enabled))for(let K of J.enabled){let W=K.replace(/[^a-zA-Z0-9_]/g,"_");if(Z.has(W))X.add(W);else if(Z.has(K))X.add(K)}}}}return X}function d4$($){let Z=$.modeConfig.forcedFirstStepTool&&$.modeConfig.forcedFirstStepTool in $.streamTools?$.modeConfig.forcedFirstStepTool:null,X=0;return(G)=>{let Q=G.messages,Y=X===0;X++;let J=Q;if($.pendingImages.length>0){let N=$.pendingImages.splice(0,$.pendingImages.length),H=[];for(let F of N)if(H.push({type:"text",text:F.label??(F.pageUrl?`[Screenshot of ${F.pageUrl}]`:"[Image]")}),F.url.startsWith("data:")){let U=F.url.match(/^data:([^;]+);base64,(.+)$/s);if(U)H.push({type:"image",image:U[2],mimeType:U[1]})}else H.push({type:"image",image:new URL(F.url)});J=[...Q,{role:"user",content:H}]}let K=[...$.builtInToolNames,...$.hasEnableTool?["enable_tool"]:[],...$.enabledTools];if($.modeConfig.isPlanMode)K=K.filter((N)=>{if($.builtInToolNames.includes(N)||$.hasEnableTool&&N==="enable_tool")return!0;return $.toolAnnotations.get(N)?.readOnlyHint===!0});let W=Z&&Y?Z:null;return{activeTools:K,messages:J,...W&&{toolChoice:{type:"tool",toolName:W}}}}}function U84(){let $=[],Z=!1,X=null;return{push(G){if(Z)return;if(X){let Q=X;X=null,Q({done:!1,value:G})}else $.push(G)},next(){if($.length>0){let G=$.shift();return Promise.resolve({done:!1,value:G})}if(Z)return Promise.resolve({done:!0});return new Promise((G)=>{X=G})},close(){if(Z=!0,X){let G=X;X=null,G({done:!0})}}}}async function*m4$($){let{input:Z,tools:X,runEngine:G,extras:Q}=$,Y=Q.runContext,{provider:J,titleProvider:K,titleModel:W,registrySignal:N,processedSystemMessages:H,processedMessages:F,originalMessages:U,threadId:w,writer:O,telemetry:D}=Q,L=qd0(Z.mode,{isCliAgent:!1}),E,z=!1,j=U84(),A=k4$({currentThreadTitle:Q.currentThreadTitle,kind:Q.kind}),P=c4$(F),I=(()=>{if(!A)return[];let x0=new Set,d1=[],E8=(T6,B5)=>{if(!B5||x0.has(B5.id))return;x0.add(B5.id),d1.push(()=>J90(T6,B5))};return E8(K??J,W),E8(J,Z.models.fast),E8(J,Z.models.smart),E8(J,Z.models.thinking),d1})(),V=A?h4$({abortSignal:N,models:I,userMessage:P}):null,k=V?V.promise.then((x0)=>{return x0?I4$(x0):null}).catch((x0)=>{return console.warn("[decopilot:title] title generation failed",dN(x0)),null}):Promise.resolve(null),_=null,l=Q.usageAccumulator??Q90();E=Date.now();let b=new Set(Object.keys(X.passthroughTools)),x=Object.keys(X.builtInTools),d=Q.kind==="subtask"||Y?.isSubagent===!0?new Set(b):l4$(U,b),J0={...X.tools,...X.connectionsBlockTools.length>0?{enable_tool:A4$(d,b,{isPlanMode:L.isPlanMode,toolAnnotations:X.toolAnnotations})}:{}},O0=d4$({modeConfig:L,streamTools:J0,builtInToolNames:x,enabledTools:d,toolAnnotations:X.toolAnnotations,pendingImages:Q.pendingImages,hasEnableTool:X.connectionsBlockTools.length>0}),T0=d.size>0?{role:"system",content:`<currently-enabled-tools>
1216
1216
  ${[...d].sort().join(`
1217
1217
  `)}
1218
- </currently-enabled-tools>`}:null,s=Y?.virtualMcp.metadata,o=Z.workspace.cwd==="/repo"?{repo:Z.workspace.repo,branch:Z.workspace.branch,cwd:Z.workspace.cwd,workspaceKind:"github"}:void 0,A0=await G({kind:Y?.isSubagent?"subagent":"agent",virtualMcp:{id:Z.agent.id,repo:s?.githubRepo??void 0,delegationTargetIds:s?.subAgents},mcpClient:X.passthroughClient,provider:J,models:Z.models,messages:F,abortSignal:N,temperature:Z.temperature,planMode:L.isPlanMode,isDecopilot:sQ(Z.agent.id)!==null,codingWorkspace:o,systemAgentInstructions:X.serverInstructions,currentThreadId:w,user:{id:Z.user.id,email:Z.user.email},userContext:Y?.userContext,writer:O,prepareStep:O0,onStepFinish:Q.onStepFinish,passthroughClient:X.passthroughClient,connectionsData:{tools:X.connectionsBlockTools,connectionTitleMap:X.connectionTitleMap},toolOutputMap:X.toolOutputMap,extraTools:{...X.builtInTools,...X.connectionsBlockTools.length>0&&J0.enable_tool?{enable_tool:J0.enable_tool}:{}},additionalSystemMessages:[...H,...T0?[T0]:[]],activeToolNames:[...x,..."enable_tool"in J0?["enable_tool"]:[],...d],stepLimit:Q.stepLimit??Z.maxAgentSteps}),X0=A0.result,u0=Promise.resolve(X0.finishReason).then(async(x0)=>{let[d1,E8,T6,B5]=await Promise.all([X0.totalUsage,X0.usage,X0.request,X0.response]);if(await A0.error!==void 0)return;A0.span.setAttribute("decopilot.llm.inputTokens",d1.inputTokens??0),A0.span.setAttribute("decopilot.llm.outputTokens",d1.outputTokens??0),A0.span.setAttribute("decopilot.llm.finishReason",x0);let i=l.cacheTotals();A0.span.setAttribute("decopilot.cache.read_tokens",i.read),A0.span.setAttribute("decopilot.cache.write_tokens",i.write);let i0=i.input>0?i.read/i.input:0;A0.span.setAttribute("decopilot.cache.hit_ratio",i0);let e$=Date.now()-(E??Date.now());if(z=!0,D?.recordLlmCall({organizationId:Z.organizationId,modelId:Z.models.thinking.id,durationMs:e$,isError:!1,inputTokens:d1.inputTokens,outputTokens:d1.outputTokens,cacheReadTokens:i.read,cacheWriteTokens:i.write}),D?.monitorLlmCall({organizationId:Z.organizationId,agentId:Z.agent.id,modelId:Z.models.thinking.id,modelTitle:Z.models.thinking.title??Z.models.thinking.id,credentialId:Z.models.thinking.credentialId,taskId:w,durationMs:e$,isError:!1,finishReason:x0,usage:{inputTokens:E8.inputTokens??0,outputTokens:E8.outputTokens??0,totalTokens:E8.totalTokens??0},totalUsage:{inputTokens:d1.inputTokens??0,outputTokens:d1.outputTokens??0,totalTokens:d1.totalTokens??0},cost:l.cost(),request:T6,response:B5,userId:Z.user.id}),N.aborted)return}).catch(async(x0)=>{let d1=x0 instanceof Error?x0:Error(dN(x0));if(console.error("[decopilot:stream] Error",d1.message),N.aborted)return;if(!z){let E8=Date.now()-(E??Date.now());z=!0,D?.recordLlmCall({organizationId:Z.organizationId,modelId:Z.models.thinking.id,durationMs:E8,isError:!0,errorType:d1.name}),D?.monitorLlmCall({organizationId:Z.organizationId,agentId:Z.agent.id,modelId:Z.models.thinking.id,modelTitle:Z.models.thinking.title??Z.models.thinking.id,credentialId:Z.models.thinking.credentialId,taskId:w,durationMs:E8,isError:!0,errorMessage:d1.message,userId:Z.user.id})}}).catch((x0)=>{console.error("[decopilot:stream] finish metrics failed",x0)}),g0=A0.error.then(async(x0)=>{if(!N.aborted||z)return null;let d1=await X0.steps;if(!d1.length||z)return null;z=!0;let E8=Date.now()-(E??Date.now()),T6=d1.reduce((i0,e$)=>({inputTokens:i0.inputTokens+(e$.usage.inputTokens??0),outputTokens:i0.outputTokens+(e$.usage.outputTokens??0),totalTokens:i0.totalTokens+(e$.usage.totalTokens??0)}),{inputTokens:0,outputTokens:0,totalTokens:0}),B5=d1[d1.length-1].usage,w9=l.cacheTotals();if(D?.recordLlmCall({organizationId:Z.organizationId,modelId:Z.models.thinking.id,durationMs:E8,isError:!1,inputTokens:T6.inputTokens,outputTokens:T6.outputTokens,cacheReadTokens:w9.read,cacheWriteTokens:w9.write}),D?.monitorLlmCall({organizationId:Z.organizationId,agentId:Z.agent.id,modelId:Z.models.thinking.id,modelTitle:Z.models.thinking.title??Z.models.thinking.id,credentialId:Z.models.thinking.credentialId,taskId:w,durationMs:E8,isError:!1,finishReason:"abort",usage:{inputTokens:B5.inputTokens??0,outputTokens:B5.outputTokens??0,totalTokens:B5.totalTokens??0},totalUsage:T6,cost:l.cost(),request:void 0,response:void 0,userId:Z.user.id}),T6.totalTokens<=0)return null;let i=l.cost();return{type:"message-metadata",messageMetadata:{usage:{inputTokens:T6.inputTokens,outputTokens:T6.outputTokens,totalTokens:T6.totalTokens,cachedInputTokens:w9.read,inputTokenDetails:{cacheReadTokens:w9.read,cacheWriteTokens:w9.write,noCacheTokens:T6.inputTokens-w9.read-w9.write},...i>0&&{providerMetadata:{openrouter:{usage:{cost:i}}}}}}}}).then((x0)=>x0).catch((x0)=>{return console.error("[decopilot:stream] abort metadata failed",x0),null}),B0=X0.toUIMessageStream({originalMessages:U,generateMessageId:qd,onError:(x0)=>_4$(x0),messageMetadata:({part:x0})=>{if(x0.type==="start")return{agent:{id:Z.agent.id??null},models:{credentialId:Z.models.thinking.credentialId,thinking:{...Z.models.thinking,title:Z.models.thinking.title??Z.models.thinking.id,provider:Z.models.thinking.provider??void 0}},created_at:new Date,_request:{systemSections:A0.assembledSystemMessages.map((d1)=>({chars:d1.content.length,preview:d1.content.slice(0,80).replace(/\s+/g," ")})),tools:Object.keys(J0).length,activeTools:x.length+("enable_tool"in J0?1:0)+d.size},thread_id:w,...Y?.subtaskJobId?{subtaskJobId:Y.subtaskJobId}:{},...Y?.resumedFromBackground?{resumedFromBackground:!0}:{}};if(x0.type==="reasoning-start"){if(_===null)_=new Date;return{reasoning_start_at:_}}if(x0.type==="reasoning-end")return{reasoning_end_at:new Date};if(x0.type==="finish-step")return l.addStep(x0.usage,x0.providerMetadata),{usage:l.buildStepUsage()};if(x0.type==="finish"){let d1=l.buildFinalUsage({totalUsage:x0.totalUsage,providerKey:Z.models.thinking.provider,fallbackProviderMetadata:x0.providerMetadata});return d1?{usage:d1}:{}}return}})[Symbol.asyncIterator](),j0=Q.sideChunks?.[Symbol.asyncIterator](),q0=!1,r=V===null,$0=!1,M0=!1,K0=!1,F0=j0===void 0,s0=!1,n=B0.next().then((x0)=>({kind:"main",value:x0})),U0=j.next().then((x0)=>({kind:"queue",value:x0})),L0=j0?j0.next().then((x0)=>({kind:"side",value:x0})):null,$1=k.then((x0)=>({kind:"title",value:x0})),R1=u0.then(()=>({kind:"finish-metrics"})),N8=g0.then((x0)=>({kind:"abort-metadata",value:x0}));try{while(!q0||!r||!$0||!M0||!K0||!F0){if(q0&&r&&$0&&M0&&!s0)Q.closeSideChunks?.(),j.close(),s0=!0;let x0=[];if(!K0)x0.push(U0);if(!q0)x0.push(n);if(!r)x0.push($1);if(!$0)x0.push(R1);if(!M0)x0.push(N8);if(!F0&&L0)x0.push(L0);let d1=await Promise.race(x0);if(d1.kind==="main"){if(d1.value.done){if(q0=!0,!r)V?.finish();continue}yield d1.value.value,n=B0.next().then((E8)=>({kind:"main",value:E8}))}else if(d1.kind==="title"){if(r=!0,d1.value)yield d1.value}else if(d1.kind==="finish-metrics")$0=!0;else if(d1.kind==="abort-metadata"){if(M0=!0,d1.value)yield d1.value}else if(d1.kind==="side"){if(d1.value.done){F0=!0;continue}yield d1.value.value,L0=j0?.next().then((E8)=>({kind:"side",value:E8}))??null}else{if(d1.value.done){K0=!0;continue}yield d1.value.value,U0=j.next().then((E8)=>({kind:"queue",value:E8}))}}}finally{if(!r)V?.finish();Q.closeSideChunks?.(),await B0.return?.().catch(()=>{}),await j0?.return?.().catch(()=>{}),j.close()}}var i4$=B(()=>{T4$();Id0();Sy0();Md0();S4$();Vd0();u4$();O8()});function n4$($){return $.type==="tool-call"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function w84($){return $.type==="tool-result"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function p4$($){let Z=null;for(let G=$.length-1;G>=0&&Z===null;G--){let Y=$[G].content;if(!Array.isArray(Y))continue;for(let J=Y.length-1;J>=0;J--){let K=Y[J];if(n4$(K)){Z=K.toolCallId;break}}}if(Z===null)return $;let X=Z;return $.map((G)=>{let Q=G.content;if(!Array.isArray(Q))return G;let Y=Q.filter((J)=>{if(n4$(J))return J.toolCallId===X;if(w84(J))return J.toolCallId===X;return!0});if(Y.length===Q.length)return G;return{...G,content:Y}})}function t4$($){let Z=!1,X=$.map((G)=>{if(G.role!=="assistant")return G;if(!G.parts.some((Y)=>("state"in Y)&&Y.state==="approval-requested"))return G;return Z=!0,{...G,parts:G.parts.map((Y)=>{if(!("state"in Y)||Y.state!=="approval-requested"||!("approval"in Y)||!Y.approval)return Y;return{...Y,state:"output-denied",approval:{...Y.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return Z?X:$}function O84($){let[Z,X]=$.reduce((G,Q)=>{if(Q.role==="system")G[0].push(Q);else G[1].push(Q);return G},[[],[]]);return{systemMessages:Z,messages:X}}async function Cd0($,Z){let X=$.filter((F)=>F.role!=="assistant"||F.parts&&F.parts.length>0),G=await ri({messages:X}),Q=t4$(G),Y=await oi(Q,{tools:Z.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:J,messages:K}=O84(Y),W=p4$(K),H=jd0({messages:W,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((F)=>{if(F.role!=="assistant")return F;let U=Array.isArray(F.content)?F.content.filter((w)=>w.type!=="reasoning"&&w.type!=="thinking"&&w.type!=="redacted-reasoning").map((w)=>{let O=w;if("providerOptions"in O||"providerMetadata"in O){let{providerOptions:D,providerMetadata:L,...E}=O;if(O.type==="tool-call"){let z=L?.google,j=D?.google;return{...E,...z?{providerMetadata:{google:z}}:{},...j?{providerOptions:{google:j}}:{}}}return E}return w}):F.content;return{...F,content:Array.isArray(U)&&U.length===0?[{type:"text",text:""}]:U,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:J,messages:H,originalMessages:G}}var _d0=B(()=>{S4()});function o4$($){if($<1)throw Error("Semaphore cap must be >= 1");let Z=$,X=[];function G(Q){return Q.reason??Error("Semaphore acquire aborted")}return{acquire(Q){if(Q?.aborted)return Promise.reject(G(Q));if(Z>0)return Z-=1,Promise.resolve();return new Promise((Y,J)=>{let K={resolve:Y,reject:J,cleanup:()=>{}},W=()=>{let N=X.indexOf(K);if(N!==-1)X.splice(N,1);K.cleanup(),J(G(Q))};if(Q)Q.addEventListener("abort",W,{once:!0}),K.cleanup=()=>Q.removeEventListener("abort",W);X.push(K)})},release(){let Q=X.shift();if(Q){Q.cleanup(),Q.resolve();return}if(Z+=1,Z>$)Z=$},available(){return Z}}}function vd0($,Z){r4$.set($,Z)}function bd0($){return r4$.get($)}function Jx($){let Z=bd0($);if(!Z)throw Error("Decopilot requires process-local run context. Dispatch must attach DecopilotRunContext before invoking the Decopilot harness.");return Z}var r4$;var Kx=B(()=>{r4$=new WeakMap});function a4$($,Z){let X=$.modelSources?.thinking??null;if(!X||X.kind!=="secret")throw Error("Decopilot core requires a secret thinking model source. Dispatch must resolve the selected model credential before invoking Decopilot.");let G=Z(X),Q=(H)=>{let F=$.models[H];if(!F)return;let U=$.modelSources?.[H];if(U&&U.kind!=="secret")throw Error("Decopilot core requires secret modelSources for all resolved slots.");return{model:F,provider:U&&U.kind==="secret"?Z(U):G}},Y=Q("fast"),J=Q("smart"),K=Q("image"),W=Q("webSearch"),N=Q("deepResearch");return{thinking:{model:$.models.thinking,provider:G},...Y?{fast:Y}:{},...J?{smart:J}:{},...K?{image:K}:{},...W?{webSearch:W}:{},...N?{deepResearch:N}:{}}}async function*s4$($){let{input:Z,modelRuntime:X,toolRuntime:G,telemetry:Q}=$,Y=bd0(Z),J=$.kind==="subtask",K=Q90(),W=J?void 0:(L)=>K.addExternal(L),N=await G.buildEnvironmentTools({input:Z,onChildUsage:W});if(J)D84(N);let{systemMessages:H,messages:F,originalMessages:U}=await Cd0(Y?.messages??[Z.userMessage],{windowSize:FY,models:Z.models,tools:N.tools}),w=F,O=Z.models.fast??Z.models.smart??Z.models.thinking,D=(Z.models.fast?X.fast?.provider:void 0)??(Z.models.smart?X.smart?.provider:void 0)??X.thinking.provider;yield*m4$({input:Z,tools:N,runEngine:G.runEngine,extras:{provider:X.thinking.provider,titleProvider:D,titleModel:O,registrySignal:Z.signal??new AbortController().signal,processedSystemMessages:H,processedMessages:w,originalMessages:U,threadId:Z.threadId,currentThreadTitle:Z.currentThreadTitle??"",pendingImages:N.pendingImages,writer:N.writer,sideChunks:N.sideChunks,closeSideChunks:N.closeSideChunks,onStepFinish:N.onStepFinish,telemetry:Q,kind:$.kind,stepLimit:J?jN:void 0,usageAccumulator:K,runContext:Y}})}function D84($){if("subtask"in $.tools){let{subtask:Z,...X}=$.tools;$.tools=X}if("subtask"in $.builtInTools){let{subtask:Z,...X}=$.builtInTools;$.builtInTools=X}}var B84=4,KW5;var e4$=B(()=>{i4$();_d0();SD();Id0();Kx();KW5=o4$(B84)});function L84($){return"storage"in $}function $6$($){fd0=$}var fd0,Z6$;var xd0=B(()=>{ql0();e4$();Kx();Z6$={id:"decopilot",create($){return{id:"decopilot",async*stream(Z){let X=Jx(Z),G=a4$({models:Z.models,modelSources:X.modelSources},v50),Q=b50(),Y={};if(!L84($))throw Error("[decopilot] a hosted Studio context is required");if(!fd0)throw Error("[decopilot] cluster environment builder not registered \u2014 "+"apps/api/src/harnesses must be imported before dispatching the decopilot harness in cluster mode");let J=fd0({ctx:$,modelRuntime:G,sideChannel:Q,cleanup:Y});try{yield*s4$({input:Z,modelRuntime:G,toolRuntime:J.toolRuntime,telemetry:J.telemetry,kind:"main"})}finally{Q.close(),await Y.close?.().catch(()=>{})}}}}}});class yd0{ctx;harnessId;constructor($){this.ctx=$.ctx,this.harnessId=$.harnessId}dispatch($){if(this.harnessId!=="decopilot")throw Error(`InProcessSandboxClient runs cluster-hosted decopilot only; got "${this.harnessId}" \u2014 CLI harnesses run in the desktop app or are `+"rejected at the gate");return Z6$.create(this.ctx).stream($)}}var X6$=B(()=>{xd0()});import{z as M1}from"zod";var E84,LW5,EW5,G6$,z84,si,j84,P84,zW5;var Q6$=B(()=>{E84=M1.enum(["claude-code","codex","decopilot-sandbox","body-offload"]),LW5=M1.array(M1.string()).catch([]).transform(($)=>$.filter((Z)=>E84.safeParse(Z).success)),EW5=M1.discriminatedUnion("type",[M1.object({type:M1.literal("ui-message-chunk"),chunk:M1.unknown()}),M1.object({type:M1.literal("error"),code:M1.string(),message:M1.string()}),M1.object({type:M1.literal("done")})]),G6$=M1.object({chunks:M1.array(M1.unknown()),done:M1.boolean().nullish().transform(($)=>$??!1),error:M1.object({code:M1.string(),message:M1.string()}).nullish().transform(($)=>$??null)}),z84=M1.record(M1.string(),M1.unknown()),si=M1.object({id:M1.string(),title:M1.string().optional(),provider:M1.string().nullable().optional(),credentialId:M1.string(),limits:M1.object({contextWindow:M1.number().int().positive().optional(),maxOutputTokens:M1.number().int().positive().optional()}).optional(),capabilities:M1.object({vision:M1.boolean().optional(),text:M1.boolean().optional(),reasoning:M1.boolean().optional()}).optional()}).strict(),j84=M1.object({thinking:si.extend({title:M1.string()}),fast:si.optional(),smart:si.optional(),image:si.optional(),deepResearch:si.optional()}).strict(),P84=M1.discriminatedUnion("cwd",[M1.object({cwd:M1.literal("/repo"),repo:M1.object({owner:M1.string(),name:M1.string(),connectedGithub:M1.boolean()}).strict(),branch:M1.string().nullable()}).strict(),M1.object({cwd:M1.null()}).strict()]),zW5=M1.object({harnessId:M1.enum(["decopilot","claude-code","codex"]).optional(),threadId:M1.string(),userMessage:z84,harness:M1.object({sessionId:M1.string().optional()}).strict(),workspace:P84,models:j84,mcp:M1.object({url:M1.string().url(),headers:M1.record(M1.string(),M1.string()),expiresAt:M1.number().int().positive()}).strict(),mode:M1.enum(["default","plan","web-search","gen-image"]),temperature:M1.number(),toolApprovalLevel:M1.enum(["auto","readonly"]),toolAllowlist:M1.array(M1.string()).nullable().optional(),maxAgentSteps:M1.number().int().optional(),user:M1.object({id:M1.string(),email:M1.string()}).strict(),organizationId:M1.string(),organizationSlug:M1.string().optional(),agent:M1.object({id:M1.string(),instructions:M1.string().optional()}).strict(),triggerId:M1.string().optional(),currentThreadTitle:M1.string().optional(),traceparent:M1.string().optional(),runFenceToken:M1.string().optional(),resume:M1.object({reason:M1.string()}).strict().optional()}).strict()});function K6$($){let{providerId:Z,apiKey:X,baseUrl:G}=$;if(Z==="anthropic")return{CLAUDE_CODE_MODEL:Y6$.anthropic,ANTHROPIC_API_KEY:X,ANTHROPIC_AUTH_TOKEN:null,ANTHROPIC_BASE_URL:G??null};if(Z==="openrouter")return{CLAUDE_CODE_MODEL:Y6$.openrouter,ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:X,ANTHROPIC_BASE_URL:G??"https://openrouter.ai/api"};throw new J6$(Z)}var Y6$,J6$;var W6$=B(()=>{Y6$={anthropic:"claude-opus-5",openrouter:"anthropic/claude-opus-5"};J6$=class J6$ extends Error{constructor($){super(`the claude-code harness needs an Anthropic or OpenRouter model credential; this run's model resolves to "${$}". Point the agent's thinking model at an Anthropic or OpenRouter key, or run it with Decopilot.`);this.name="UnsupportedClaudeCodeProviderError"}}});function A84($){let{publicUrl:Z,agentId:X,organization:G,target:Q}=$;if(Q==="agent-tools")return`${Z}/mcp/virtual-mcp/${X}`;if(!G.slug)throw new H6$(G.id);return`${Z}/api/${G.slug}/mcp/self`}async function K90($,Z,X,G,Q="agent-tools"){let Y=A84({publicUrl:nX(),agentId:Z,organization:X,target:Q}),J=await $.boundAuth.apiKey.create({name:G,permissions:{"*":["*"]},expiresIn:N6$,metadata:{organization:{id:X.id,slug:X.slug,name:X.name}}});return{url:Y,headers:{Authorization:`Bearer ${J.key}`,"x-org-id":X.id},expiresAt:Date.now()+N6$*1000}}var N6$=3600,H6$;var gd0=B(()=>{wZ();H6$=class H6$ extends Error{constructor($){super(`cannot mint a management MCP endpoint for organization "${$}": the org-scoped path /api/<slug>/mcp/self needs the org slug, which was not loaded.`);this.name="MissingOrganizationSlugError"}}});import{z as T84}from"zod";function IL($){return $==="cluster"?"agent-sandbox":$}function hd0($){return`${$.userId}:${$.projectRef}`}var R84;var W90=B(()=>{R84=T84.enum(["agent-sandbox","user-desktop"])});class N90{map=new Map;async run($,Z){let X=this.map.get($);if(X)return X;let G=Z();this.map.set($,G);try{return await G}finally{this.map.delete($)}}}function H90($,Z,X,G){if(!$)return G(null);if(!$.withLock)return G($);return $.withLock(Z,X,G)}import{createHash as I84}from"crypto";function M84($,Z=16){return I84("sha256").update(hd0($)).digest("hex").slice(0,Z)}function Wx($,Z){let X=M84($),G=k84(Z);return G?`${G}-${X}`:`s-${X}`}function k84($){if(!$)return"";return($.split("/").pop()??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,q84).replace(/-+$/g,"")}var q84=24;var F6$=B(()=>{W90()});function F90($,Z){let X=$.replace(/\/+$/,"");if(X.includes("{handle}"))return`${X.replace("{handle}",Z)}/`;try{let G=new URL(X);return G.hostname=`${Z}.${G.hostname}`,`${G.toString()}/`}catch{return`${X}/${Z}/`}}function ei($){let Z=$?.userName?.trim();if(!Z||U6$.test(Z))return null;let X=$?.userEmail?.trim();if(!X||U6$.test(X))return{userName:Z};if(!S84.test(X))return{userName:Z};return{userName:Z,userEmail:X}}var U6$,S84;var ud0=B(()=>{U6$=/[\r\n<>]/,S84=/^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/});function cd0($){let Z=$.repo,X=Z?{repository:{cloneUrl:Z.cloneUrl,repoName:Z.displayName??V84(Z.cloneUrl),...Z.branch?{branch:Z.branch}:{},...Z.submoduleCredentials&&Z.submoduleCredentials.length>0?{submoduleCredentials:Z.submoduleCredentials}:{}},identity:{userName:Z.userName,userEmail:Z.userEmail}}:void 0,G=$.tenant,Q=ei({userName:G?.userName,userEmail:G?.userEmail})??void 0,Y=$.packageManager?{name:$.packageManager.name,...$.packageManager.path?{path:$.packageManager.path}:{}}:void 0,J=Y?{packageManager:Y,runtime:$.runtime,...$.port!==void 0?{port:$.port}:{}}:void 0;if(!X&&!J&&!Q&&!$.cloneOnly)return null;return{...X?{git:X}:{},...Q?{operator:Q}:{},...$.cloneOnly!==void 0?{cloneOnly:$.cloneOnly}:{},...J?{application:J}:{}}}function V84($){try{let Z=new URL($);return Z.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||Z.hostname}catch{return $}}var w6$=B(()=>{ud0()});function C84($){try{return new URL($).username.length>0}catch{return!1}}function ld0($){let Z=$.repo?.cloneUrl;if(!Z||!C84(Z))return null;return{git:{repository:{cloneUrl:Z}}}}var dd0=B(()=>{F6$();w6$()});function $n($){if("threadId"in $){if(!$.threadId)throw Error("composeSandboxRef: threadId required");return`thread:${$.threadId}`}if(!$.orgId||!$.virtualMcpId||!$.branch)throw Error("composeSandboxRef: orgId, virtualMcpId and branch are all required for agent refs");return`agent:${$.orgId}:${$.virtualMcpId}:${$.branch}`}function _84($){return(typeof $.timeout==="number"&&$.timeout>0?Math.min($.timeout,120000):30000)+15000}function v84($,Z){if($.aborted)return Z.catch(()=>{}),Promise.reject($.reason??Error("aborted"));return new Promise((X,G)=>{let Q=()=>{Z.catch(()=>{}),G($.reason??Error("aborted"))};$.addEventListener("abort",Q,{once:!0}),Z.then(X,G).finally(()=>{$.removeEventListener("abort",Q)})})}async function b84($,Z,X,G,Q="POST",Y){let J=Y?.timeoutMs??_84(G??{}),K=AbortSignal.timeout(J),W=Y?.signal?AbortSignal.any([Y.signal,K]):K,N,H;try{let U={method:Q,headers:new Headers({"content-type":"application/json"}),body:null,signal:W};if(Q!=="GET"&&G!==null)U.body=JSON.stringify(G);({res:N,rawText:H}=await v84(W,(async()=>{let w=await $.proxyDaemonRequest(Z,X,U);return{res:w,rawText:await w.text()}})()))}catch(U){if(Y?.signal?.aborted)throw U;if(K.aborted)throw Error(`Sandbox ${Q} ${X} timed out after ${Math.round(J/1000)}s \u2014 the sandbox may be overloaded or its filesystem stalled. Retry, or use a smaller operation.`);throw new Zn(U)}let F;try{F=JSON.parse(H)}catch{console.error("[sandbox-fs-hooks] Failed to parse JSON response runner=%s path=%s status=%d rawText=%s",$.kind,X,N.status,H.slice(0,2000));let U=N.status>=500?" (server error)":N.status===0?" (no response)":"";throw Error(`Daemon ${X} returned invalid JSON (HTTP ${N.status}${U}): ${H.slice(0,800)}`)}if(!N.ok){console.error("[sandbox-fs-hooks] Non-OK response runner=%s path=%s status=%d body=%s",$.kind,X,N.status,H.slice(0,2000));let U=F.error??`Daemon ${X} failed (${N.status})`;if(N.status===404&&U==="sandbox not found")throw new Zn(Error(U),!0);throw Error(U)}return F}function f84($){let Z=[];for(let X of $.split(`
1218
+ </currently-enabled-tools>`}:null,s=Y?.virtualMcp.metadata,o=Z.workspace.cwd==="/repo"?{repo:Z.workspace.repo,branch:Z.workspace.branch,cwd:Z.workspace.cwd,workspaceKind:"github"}:void 0,A0=await G({kind:Y?.isSubagent?"subagent":"agent",virtualMcp:{id:Z.agent.id,repo:s?.githubRepo??void 0,delegationTargetIds:s?.subAgents},mcpClient:X.passthroughClient,provider:J,models:Z.models,messages:F,abortSignal:N,temperature:Z.temperature,planMode:L.isPlanMode,isDecopilot:sQ(Z.agent.id)!==null,codingWorkspace:o,systemAgentInstructions:X.serverInstructions,currentThreadId:w,user:{id:Z.user.id,email:Z.user.email},userContext:Y?.userContext,writer:O,prepareStep:O0,onStepFinish:Q.onStepFinish,passthroughClient:X.passthroughClient,connectionsData:{tools:X.connectionsBlockTools,connectionTitleMap:X.connectionTitleMap},toolOutputMap:X.toolOutputMap,extraTools:{...X.builtInTools,...X.connectionsBlockTools.length>0&&J0.enable_tool?{enable_tool:J0.enable_tool}:{}},additionalSystemMessages:[...H,...T0?[T0]:[]],activeToolNames:[...x,..."enable_tool"in J0?["enable_tool"]:[],...d],stepLimit:Q.stepLimit??Z.maxAgentSteps}),X0=A0.result,u0=Promise.resolve(X0.finishReason).then(async(x0)=>{let[d1,E8,T6,B5]=await Promise.all([X0.totalUsage,X0.usage,X0.request,X0.response]);if(await A0.error!==void 0)return;A0.span.setAttribute("decopilot.llm.inputTokens",d1.inputTokens??0),A0.span.setAttribute("decopilot.llm.outputTokens",d1.outputTokens??0),A0.span.setAttribute("decopilot.llm.finishReason",x0);let i=l.cacheTotals();A0.span.setAttribute("decopilot.cache.read_tokens",i.read),A0.span.setAttribute("decopilot.cache.write_tokens",i.write);let i0=i.input>0?i.read/i.input:0;A0.span.setAttribute("decopilot.cache.hit_ratio",i0);let e$=Date.now()-(E??Date.now());if(z=!0,D?.recordLlmCall({organizationId:Z.organizationId,modelId:Z.models.thinking.id,durationMs:e$,isError:!1,inputTokens:d1.inputTokens,outputTokens:d1.outputTokens,cacheReadTokens:i.read,cacheWriteTokens:i.write}),D?.monitorLlmCall({organizationId:Z.organizationId,agentId:Z.agent.id,modelId:Z.models.thinking.id,modelTitle:Z.models.thinking.title??Z.models.thinking.id,credentialId:Z.models.thinking.credentialId,taskId:w,durationMs:e$,isError:!1,finishReason:x0,usage:{inputTokens:E8.inputTokens??0,outputTokens:E8.outputTokens??0,totalTokens:E8.totalTokens??0},totalUsage:{inputTokens:d1.inputTokens??0,outputTokens:d1.outputTokens??0,totalTokens:d1.totalTokens??0},cost:l.cost(),request:T6,response:B5,userId:Z.user.id}),N.aborted)return}).catch(async(x0)=>{let d1=x0 instanceof Error?x0:Error(dN(x0));if(console.error("[decopilot:stream] Error",d1.message),N.aborted)return;if(!z){let E8=Date.now()-(E??Date.now());z=!0,D?.recordLlmCall({organizationId:Z.organizationId,modelId:Z.models.thinking.id,durationMs:E8,isError:!0,errorType:d1.name}),D?.monitorLlmCall({organizationId:Z.organizationId,agentId:Z.agent.id,modelId:Z.models.thinking.id,modelTitle:Z.models.thinking.title??Z.models.thinking.id,credentialId:Z.models.thinking.credentialId,taskId:w,durationMs:E8,isError:!0,errorMessage:d1.message,userId:Z.user.id})}}).catch((x0)=>{console.error("[decopilot:stream] finish metrics failed",x0)}),g0=A0.error.then(async(x0)=>{if(!N.aborted||z)return null;let d1=await X0.steps;if(!d1.length||z)return null;z=!0;let E8=Date.now()-(E??Date.now()),T6=d1.reduce((i0,e$)=>({inputTokens:i0.inputTokens+(e$.usage.inputTokens??0),outputTokens:i0.outputTokens+(e$.usage.outputTokens??0),totalTokens:i0.totalTokens+(e$.usage.totalTokens??0)}),{inputTokens:0,outputTokens:0,totalTokens:0}),B5=d1[d1.length-1].usage,w9=l.cacheTotals();if(D?.recordLlmCall({organizationId:Z.organizationId,modelId:Z.models.thinking.id,durationMs:E8,isError:!1,inputTokens:T6.inputTokens,outputTokens:T6.outputTokens,cacheReadTokens:w9.read,cacheWriteTokens:w9.write}),D?.monitorLlmCall({organizationId:Z.organizationId,agentId:Z.agent.id,modelId:Z.models.thinking.id,modelTitle:Z.models.thinking.title??Z.models.thinking.id,credentialId:Z.models.thinking.credentialId,taskId:w,durationMs:E8,isError:!1,finishReason:"abort",usage:{inputTokens:B5.inputTokens??0,outputTokens:B5.outputTokens??0,totalTokens:B5.totalTokens??0},totalUsage:T6,cost:l.cost(),request:void 0,response:void 0,userId:Z.user.id}),T6.totalTokens<=0)return null;let i=l.cost();return{type:"message-metadata",messageMetadata:{usage:{inputTokens:T6.inputTokens,outputTokens:T6.outputTokens,totalTokens:T6.totalTokens,cachedInputTokens:w9.read,inputTokenDetails:{cacheReadTokens:w9.read,cacheWriteTokens:w9.write,noCacheTokens:T6.inputTokens-w9.read-w9.write},...i>0&&{providerMetadata:{openrouter:{usage:{cost:i}}}}}}}}).then((x0)=>x0).catch((x0)=>{return console.error("[decopilot:stream] abort metadata failed",x0),null}),B0=X0.toUIMessageStream({originalMessages:U,generateMessageId:qd,onError:(x0)=>_4$(x0),messageMetadata:({part:x0})=>{if(x0.type==="start")return{agent:{id:Z.agent.id??null},models:{credentialId:Z.models.thinking.credentialId,thinking:{...Z.models.thinking,title:Z.models.thinking.title??Z.models.thinking.id,provider:Z.models.thinking.provider??void 0}},created_at:new Date,_request:{systemSections:A0.assembledSystemMessages.map((d1)=>({chars:d1.content.length,preview:d1.content.slice(0,80).replace(/\s+/g," ")})),tools:Object.keys(J0).length,activeTools:x.length+("enable_tool"in J0?1:0)+d.size},thread_id:w,...Y?.subtaskJobId?{subtaskJobId:Y.subtaskJobId}:{},...Y?.resumedFromBackground?{resumedFromBackground:!0}:{}};if(x0.type==="reasoning-start"){if(_===null)_=new Date;return{reasoning_start_at:_}}if(x0.type==="reasoning-end")return{reasoning_end_at:new Date};if(x0.type==="finish-step")return l.addStep(x0.usage,x0.providerMetadata),{usage:l.buildStepUsage()};if(x0.type==="finish"){let d1=l.buildFinalUsage({totalUsage:x0.totalUsage,providerKey:Z.models.thinking.provider,fallbackProviderMetadata:x0.providerMetadata});return d1?{usage:d1}:{}}return}})[Symbol.asyncIterator](),j0=Q.sideChunks?.[Symbol.asyncIterator](),q0=!1,r=V===null,$0=!1,M0=!1,K0=!1,F0=j0===void 0,s0=!1,n=B0.next().then((x0)=>({kind:"main",value:x0})),U0=j.next().then((x0)=>({kind:"queue",value:x0})),L0=j0?j0.next().then((x0)=>({kind:"side",value:x0})):null,$1=k.then((x0)=>({kind:"title",value:x0})),R1=u0.then(()=>({kind:"finish-metrics"})),N8=g0.then((x0)=>({kind:"abort-metadata",value:x0}));try{while(!q0||!r||!$0||!M0||!K0||!F0){if(q0&&r&&$0&&M0&&!s0)Q.closeSideChunks?.(),j.close(),s0=!0;let x0=[];if(!K0)x0.push(U0);if(!q0)x0.push(n);if(!r)x0.push($1);if(!$0)x0.push(R1);if(!M0)x0.push(N8);if(!F0&&L0)x0.push(L0);let d1=await Promise.race(x0);if(d1.kind==="main"){if(d1.value.done){if(q0=!0,!r)V?.finish();continue}yield d1.value.value,n=B0.next().then((E8)=>({kind:"main",value:E8}))}else if(d1.kind==="title"){if(r=!0,d1.value)yield d1.value}else if(d1.kind==="finish-metrics")$0=!0;else if(d1.kind==="abort-metadata"){if(M0=!0,d1.value)yield d1.value}else if(d1.kind==="side"){if(d1.value.done){F0=!0;continue}yield d1.value.value,L0=j0?.next().then((E8)=>({kind:"side",value:E8}))??null}else{if(d1.value.done){K0=!0;continue}yield d1.value.value,U0=j.next().then((E8)=>({kind:"queue",value:E8}))}}}finally{if(!r)V?.finish();Q.closeSideChunks?.(),await B0.return?.().catch(()=>{}),await j0?.return?.().catch(()=>{}),j.close()}}var i4$=B(()=>{T4$();Id0();Sy0();Md0();S4$();Vd0();u4$();O8()});function n4$($){return $.type==="tool-call"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function w84($){return $.type==="tool-result"&&$.toolName==="todo_write"&&typeof $.toolCallId==="string"}function p4$($){let Z=null;for(let G=$.length-1;G>=0&&Z===null;G--){let Y=$[G].content;if(!Array.isArray(Y))continue;for(let J=Y.length-1;J>=0;J--){let K=Y[J];if(n4$(K)){Z=K.toolCallId;break}}}if(Z===null)return $;let X=Z;return $.map((G)=>{let Q=G.content;if(!Array.isArray(Q))return G;let Y=Q.filter((J)=>{if(n4$(J))return J.toolCallId===X;if(w84(J))return J.toolCallId===X;return!0});if(Y.length===Q.length)return G;return{...G,content:Y}})}function t4$($){let Z=!1,X=$.map((G)=>{if(G.role!=="assistant")return G;if(!G.parts.some((Y)=>("state"in Y)&&Y.state==="approval-requested"))return G;return Z=!0,{...G,parts:G.parts.map((Y)=>{if(!("state"in Y)||Y.state!=="approval-requested"||!("approval"in Y)||!Y.approval)return Y;return{...Y,state:"output-denied",approval:{...Y.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return Z?X:$}function O84($){let[Z,X]=$.reduce((G,Q)=>{if(Q.role==="system")G[0].push(Q);else G[1].push(Q);return G},[[],[]]);return{systemMessages:Z,messages:X}}async function Cd0($,Z){let X=$.filter((F)=>F.role!=="assistant"||F.parts&&F.parts.length>0),G=await ri({messages:X}),Q=t4$(G),Y=await oi(Q,{tools:Z.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:J,messages:K}=O84(Y),W=p4$(K),H=jd0({messages:W,reasoning:"all",emptyMessages:"remove",toolCalls:"none"}).map((F)=>{if(F.role!=="assistant")return F;let U=Array.isArray(F.content)?F.content.filter((w)=>w.type!=="reasoning"&&w.type!=="thinking"&&w.type!=="redacted-reasoning").map((w)=>{let O=w;if("providerOptions"in O||"providerMetadata"in O){let{providerOptions:D,providerMetadata:L,...E}=O;if(O.type==="tool-call"){let z=L?.google,j=D?.google;return{...E,...z?{providerMetadata:{google:z}}:{},...j?{providerOptions:{google:j}}:{}}}return E}return w}):F.content;return{...F,content:Array.isArray(U)&&U.length===0?[{type:"text",text:""}]:U,providerOptions:void 0,providerMetadata:void 0}});return{systemMessages:J,messages:H,originalMessages:G}}var _d0=B(()=>{S4()});function o4$($){if($<1)throw Error("Semaphore cap must be >= 1");let Z=$,X=[];function G(Q){return Q.reason??Error("Semaphore acquire aborted")}return{acquire(Q){if(Q?.aborted)return Promise.reject(G(Q));if(Z>0)return Z-=1,Promise.resolve();return new Promise((Y,J)=>{let K={resolve:Y,reject:J,cleanup:()=>{}},W=()=>{let N=X.indexOf(K);if(N!==-1)X.splice(N,1);K.cleanup(),J(G(Q))};if(Q)Q.addEventListener("abort",W,{once:!0}),K.cleanup=()=>Q.removeEventListener("abort",W);X.push(K)})},release(){let Q=X.shift();if(Q){Q.cleanup(),Q.resolve();return}if(Z+=1,Z>$)Z=$},available(){return Z}}}function vd0($,Z){r4$.set($,Z)}function bd0($){return r4$.get($)}function Jx($){let Z=bd0($);if(!Z)throw Error("Decopilot requires process-local run context. Dispatch must attach DecopilotRunContext before invoking the Decopilot harness.");return Z}var r4$;var Kx=B(()=>{r4$=new WeakMap});function a4$($,Z){let X=$.modelSources?.thinking??null;if(!X||X.kind!=="secret")throw Error("Decopilot core requires a secret thinking model source. Dispatch must resolve the selected model credential before invoking Decopilot.");let G=Z(X),Q=(H)=>{let F=$.models[H];if(!F)return;let U=$.modelSources?.[H];if(U&&U.kind!=="secret")throw Error("Decopilot core requires secret modelSources for all resolved slots.");return{model:F,provider:U&&U.kind==="secret"?Z(U):G}},Y=Q("fast"),J=Q("smart"),K=Q("image"),W=Q("webSearch"),N=Q("deepResearch");return{thinking:{model:$.models.thinking,provider:G},...Y?{fast:Y}:{},...J?{smart:J}:{},...K?{image:K}:{},...W?{webSearch:W}:{},...N?{deepResearch:N}:{}}}async function*s4$($){let{input:Z,modelRuntime:X,toolRuntime:G,telemetry:Q}=$,Y=bd0(Z),J=$.kind==="subtask",K=Q90(),W=J?void 0:(L)=>K.addExternal(L),N=await G.buildEnvironmentTools({input:Z,onChildUsage:W});if(J)D84(N);let{systemMessages:H,messages:F,originalMessages:U}=await Cd0(Y?.messages??[Z.userMessage],{windowSize:FY,models:Z.models,tools:N.tools}),w=F,O=Z.models.fast??Z.models.smart??Z.models.thinking,D=(Z.models.fast?X.fast?.provider:void 0)??(Z.models.smart?X.smart?.provider:void 0)??X.thinking.provider;yield*m4$({input:Z,tools:N,runEngine:G.runEngine,extras:{provider:X.thinking.provider,titleProvider:D,titleModel:O,registrySignal:Z.signal??new AbortController().signal,processedSystemMessages:H,processedMessages:w,originalMessages:U,threadId:Z.threadId,currentThreadTitle:Z.currentThreadTitle??"",pendingImages:N.pendingImages,writer:N.writer,sideChunks:N.sideChunks,closeSideChunks:N.closeSideChunks,onStepFinish:N.onStepFinish,telemetry:Q,kind:$.kind,stepLimit:J?jN:void 0,usageAccumulator:K,runContext:Y}})}function D84($){if("subtask"in $.tools){let{subtask:Z,...X}=$.tools;$.tools=X}if("subtask"in $.builtInTools){let{subtask:Z,...X}=$.builtInTools;$.builtInTools=X}}var B84=4,KW5;var e4$=B(()=>{i4$();_d0();SD();Id0();Kx();KW5=o4$(B84)});function L84($){return"storage"in $}function $6$($){fd0=$}var fd0,Z6$;var xd0=B(()=>{ql0();e4$();Kx();Z6$={id:"decopilot",create($){return{id:"decopilot",async*stream(Z){let X=Jx(Z),G=a4$({models:Z.models,modelSources:X.modelSources},v50),Q=b50(),Y={};if(!L84($))throw Error("[decopilot] a hosted Studio context is required");if(!fd0)throw Error("[decopilot] cluster environment builder not registered \u2014 "+"apps/api/src/harnesses must be imported before dispatching the decopilot harness in cluster mode");let J=fd0({ctx:$,modelRuntime:G,sideChannel:Q,cleanup:Y});try{yield*s4$({input:Z,modelRuntime:G,toolRuntime:J.toolRuntime,telemetry:J.telemetry,kind:"main"})}finally{Q.close(),await Y.close?.().catch(()=>{})}}}}}});class yd0{ctx;harnessId;constructor($){this.ctx=$.ctx,this.harnessId=$.harnessId}dispatch($){if(this.harnessId!=="decopilot")throw Error(`InProcessSandboxClient runs cluster-hosted decopilot only; got "${this.harnessId}" \u2014 CLI harnesses run in the desktop app or are `+"rejected at the gate");return Z6$.create(this.ctx).stream($)}}var X6$=B(()=>{xd0()});import{z as M1}from"zod";var E84,LW5,EW5,G6$,z84,si,j84,P84,zW5;var Q6$=B(()=>{E84=M1.enum(["claude-code","codex","decopilot-sandbox","body-offload"]),LW5=M1.array(M1.string()).catch([]).transform(($)=>$.filter((Z)=>E84.safeParse(Z).success)),EW5=M1.discriminatedUnion("type",[M1.object({type:M1.literal("ui-message-chunk"),chunk:M1.unknown()}),M1.object({type:M1.literal("error"),code:M1.string(),message:M1.string()}),M1.object({type:M1.literal("done")})]),G6$=M1.object({chunks:M1.array(M1.unknown()),done:M1.boolean().nullish().transform(($)=>$??!1),error:M1.object({code:M1.string(),message:M1.string()}).nullish().transform(($)=>$??null)}),z84=M1.record(M1.string(),M1.unknown()),si=M1.object({id:M1.string(),title:M1.string().optional(),provider:M1.string().nullable().optional(),credentialId:M1.string(),limits:M1.object({contextWindow:M1.number().int().positive().optional(),maxOutputTokens:M1.number().int().positive().optional()}).optional(),capabilities:M1.object({vision:M1.boolean().optional(),text:M1.boolean().optional(),reasoning:M1.boolean().optional()}).optional()}).strict(),j84=M1.object({thinking:si.extend({title:M1.string()}),fast:si.optional(),smart:si.optional(),image:si.optional(),deepResearch:si.optional()}).strict(),P84=M1.discriminatedUnion("cwd",[M1.object({cwd:M1.literal("/repo"),repo:M1.object({owner:M1.string(),name:M1.string(),connectedGithub:M1.boolean()}).strict(),branch:M1.string().nullable()}).strict(),M1.object({cwd:M1.null()}).strict()]),zW5=M1.object({harnessId:M1.enum(["decopilot","claude-code","codex"]).optional(),threadId:M1.string(),userMessage:z84,harness:M1.object({sessionId:M1.string().optional()}).strict(),workspace:P84,models:j84,mcp:M1.object({url:M1.string().url(),headers:M1.record(M1.string(),M1.string()),expiresAt:M1.number().int().positive()}).strict(),mode:M1.enum(["default","plan","web-search","gen-image"]),temperature:M1.number(),toolApprovalLevel:M1.enum(["auto","readonly"]),toolAllowlist:M1.array(M1.string()).nullable().optional(),maxAgentSteps:M1.number().int().optional(),user:M1.object({id:M1.string(),email:M1.string()}).strict(),organizationId:M1.string(),organizationSlug:M1.string().optional(),agent:M1.object({id:M1.string(),instructions:M1.string().optional()}).strict(),triggerId:M1.string().optional(),currentThreadTitle:M1.string().optional(),traceparent:M1.string().optional(),runFenceToken:M1.string().optional(),resume:M1.object({reason:M1.string()}).strict().optional()}).strict()});function K6$($){let{providerId:Z,apiKey:X,baseUrl:G}=$;if(Z==="anthropic")return{CLAUDE_CODE_MODEL:Y6$.anthropic,ANTHROPIC_API_KEY:X,ANTHROPIC_AUTH_TOKEN:null,ANTHROPIC_BASE_URL:G??null};if(Z==="openrouter"||Z==="deco")return{CLAUDE_CODE_MODEL:Y6$.openrouter,ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:X,ANTHROPIC_BASE_URL:G??"https://openrouter.ai/api"};throw new J6$(Z)}var Y6$,J6$;var W6$=B(()=>{Y6$={anthropic:"claude-opus-5",openrouter:"anthropic/claude-opus-5"};J6$=class J6$ extends Error{constructor($){super(`the claude-code harness needs an Anthropic, OpenRouter or Deco model credential; this run's model resolves to "${$}". Point the agent's thinking model at one of those, or run it with Decopilot.`);this.name="UnsupportedClaudeCodeProviderError"}}});function A84($){let{publicUrl:Z,agentId:X,organization:G,target:Q}=$;if(Q==="agent-tools")return`${Z}/mcp/virtual-mcp/${X}`;if(!G.slug)throw new H6$(G.id);return`${Z}/api/${G.slug}/mcp/self`}async function K90($,Z,X,G,Q="agent-tools"){let Y=A84({publicUrl:nX(),agentId:Z,organization:X,target:Q}),J=await $.boundAuth.apiKey.create({name:G,permissions:{"*":["*"]},expiresIn:N6$,metadata:{organization:{id:X.id,slug:X.slug,name:X.name}}});return{url:Y,headers:{Authorization:`Bearer ${J.key}`,"x-org-id":X.id},expiresAt:Date.now()+N6$*1000}}var N6$=3600,H6$;var gd0=B(()=>{wZ();H6$=class H6$ extends Error{constructor($){super(`cannot mint a management MCP endpoint for organization "${$}": the org-scoped path /api/<slug>/mcp/self needs the org slug, which was not loaded.`);this.name="MissingOrganizationSlugError"}}});import{z as T84}from"zod";function IL($){return $==="cluster"?"agent-sandbox":$}function hd0($){return`${$.userId}:${$.projectRef}`}var R84;var W90=B(()=>{R84=T84.enum(["agent-sandbox","user-desktop"])});class N90{map=new Map;async run($,Z){let X=this.map.get($);if(X)return X;let G=Z();this.map.set($,G);try{return await G}finally{this.map.delete($)}}}function H90($,Z,X,G){if(!$)return G(null);if(!$.withLock)return G($);return $.withLock(Z,X,G)}import{createHash as I84}from"crypto";function M84($,Z=16){return I84("sha256").update(hd0($)).digest("hex").slice(0,Z)}function Wx($,Z){let X=M84($),G=k84(Z);return G?`${G}-${X}`:`s-${X}`}function k84($){if(!$)return"";return($.split("/").pop()??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,q84).replace(/-+$/g,"")}var q84=24;var F6$=B(()=>{W90()});function F90($,Z){let X=$.replace(/\/+$/,"");if(X.includes("{handle}"))return`${X.replace("{handle}",Z)}/`;try{let G=new URL(X);return G.hostname=`${Z}.${G.hostname}`,`${G.toString()}/`}catch{return`${X}/${Z}/`}}function ei($){let Z=$?.userName?.trim();if(!Z||U6$.test(Z))return null;let X=$?.userEmail?.trim();if(!X||U6$.test(X))return{userName:Z};if(!S84.test(X))return{userName:Z};return{userName:Z,userEmail:X}}var U6$,S84;var ud0=B(()=>{U6$=/[\r\n<>]/,S84=/^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/});function cd0($){let Z=$.repo,X=Z?{repository:{cloneUrl:Z.cloneUrl,repoName:Z.displayName??V84(Z.cloneUrl),...Z.branch?{branch:Z.branch}:{},...Z.submoduleCredentials&&Z.submoduleCredentials.length>0?{submoduleCredentials:Z.submoduleCredentials}:{}},identity:{userName:Z.userName,userEmail:Z.userEmail}}:void 0,G=$.tenant,Q=ei({userName:G?.userName,userEmail:G?.userEmail})??void 0,Y=$.packageManager?{name:$.packageManager.name,...$.packageManager.path?{path:$.packageManager.path}:{}}:void 0,J=Y?{packageManager:Y,runtime:$.runtime,...$.port!==void 0?{port:$.port}:{}}:void 0;if(!X&&!J&&!Q&&!$.cloneOnly)return null;return{...X?{git:X}:{},...Q?{operator:Q}:{},...$.cloneOnly!==void 0?{cloneOnly:$.cloneOnly}:{},...J?{application:J}:{}}}function V84($){try{let Z=new URL($);return Z.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||Z.hostname}catch{return $}}var w6$=B(()=>{ud0()});function C84($){try{return new URL($).username.length>0}catch{return!1}}function ld0($){let Z=$.repo?.cloneUrl;if(!Z||!C84(Z))return null;return{git:{repository:{cloneUrl:Z}}}}var dd0=B(()=>{F6$();w6$()});function $n($){if("threadId"in $){if(!$.threadId)throw Error("composeSandboxRef: threadId required");return`thread:${$.threadId}`}if(!$.orgId||!$.virtualMcpId||!$.branch)throw Error("composeSandboxRef: orgId, virtualMcpId and branch are all required for agent refs");return`agent:${$.orgId}:${$.virtualMcpId}:${$.branch}`}function _84($){return(typeof $.timeout==="number"&&$.timeout>0?Math.min($.timeout,120000):30000)+15000}function v84($,Z){if($.aborted)return Z.catch(()=>{}),Promise.reject($.reason??Error("aborted"));return new Promise((X,G)=>{let Q=()=>{Z.catch(()=>{}),G($.reason??Error("aborted"))};$.addEventListener("abort",Q,{once:!0}),Z.then(X,G).finally(()=>{$.removeEventListener("abort",Q)})})}async function b84($,Z,X,G,Q="POST",Y){let J=Y?.timeoutMs??_84(G??{}),K=AbortSignal.timeout(J),W=Y?.signal?AbortSignal.any([Y.signal,K]):K,N,H;try{let U={method:Q,headers:new Headers({"content-type":"application/json"}),body:null,signal:W};if(Q!=="GET"&&G!==null)U.body=JSON.stringify(G);({res:N,rawText:H}=await v84(W,(async()=>{let w=await $.proxyDaemonRequest(Z,X,U);return{res:w,rawText:await w.text()}})()))}catch(U){if(Y?.signal?.aborted)throw U;if(K.aborted)throw Error(`Sandbox ${Q} ${X} timed out after ${Math.round(J/1000)}s \u2014 the sandbox may be overloaded or its filesystem stalled. Retry, or use a smaller operation.`);throw new Zn(U)}let F;try{F=JSON.parse(H)}catch{console.error("[sandbox-fs-hooks] Failed to parse JSON response runner=%s path=%s status=%d rawText=%s",$.kind,X,N.status,H.slice(0,2000));let U=N.status>=500?" (server error)":N.status===0?" (no response)":"";throw Error(`Daemon ${X} returned invalid JSON (HTTP ${N.status}${U}): ${H.slice(0,800)}`)}if(!N.ok){console.error("[sandbox-fs-hooks] Non-OK response runner=%s path=%s status=%d body=%s",$.kind,X,N.status,H.slice(0,2000));let U=F.error??`Daemon ${X} failed (${N.status})`;if(N.status===404&&U==="sandbox not found")throw new Zn(Error(U),!0);throw Error(U)}return F}function f84($){let Z=[];for(let X of $.split(`
1219
1219
  `)){if(!X)continue;let G=X.indexOf(":");if(G<0)continue;let Q=X.indexOf(":",G+1);if(Q<0)continue;let Y=X.slice(0,G),J=Number.parseInt(X.slice(G+1,Q),10);if(!Number.isFinite(J))continue;Z.push({file:Y,line:J,text:X.slice(Q+1)})}return Z}function md0($,Z){let{ensureHandle:X,invalidateHandle:G,canAutoRestart:Q}=Z,Y=(K)=>{let W=K instanceof Error?K.message:String(K);return Q?`Sandbox is unreachable and auto-restart did not recover it: ${W}`:"The sandbox is not running. Ask the user to start it by clicking the server button (left side of the header bar)."},J=async(K,W,N="POST",H)=>{let F=async(w)=>b84($,w,K,W,N,{signal:H,timeoutMs:Z.opTimeoutMs}),U=await X();try{return await F(U)}catch(w){if(!(w instanceof Zn))throw w;if(!Q&&!w.gone)throw Error(Y(w.cause??w));console.warn(`[sandbox-fs-hooks] daemon ${K} unreachable \u2014 reaping sandbox and retrying once`,w.cause??w);try{await G({force:w.gone})}catch(D){console.warn("[sandbox-fs-hooks] invalidateHandle failed",D)}let O;try{O=await X()}catch(D){throw Error(`Failed to restart sandbox: ${D instanceof Error?D.message:String(D)}`)}try{return await F(O)}catch(D){if(D instanceof Zn)throw Error(Y(D.cause??D));throw D}}};return{onProxy:(K,W,N,H)=>J(K,W,N,H),onRead:async(K)=>{return(await J("/_sandbox/read",{path:K})).content},onWrite:async(K,W)=>{await J("/_sandbox/write",{path:K,content:W})},onEdit:async(K,W)=>{for(let N of W)await J("/_sandbox/edit",{path:K,old_string:N.oldText,new_string:N.newText,replace_all:N.replaceAll===!0})},onBash:async(K,W)=>{return await J("/_sandbox/bash",{command:K,...W?.cwd!==void 0?{cwd:W.cwd}:{},...W?.timeoutMs!==void 0?{timeout:W.timeoutMs}:{}})},onGlob:async(K)=>{return(await J("/_sandbox/glob",{pattern:K})).files},onGrep:async(K,W)=>{let N=await J("/_sandbox/grep",{pattern:K,output_mode:"content",...W?.path!==void 0?{path:W.path}:{},...W?.glob!==void 0?{glob:W.glob}:{},...W?.caseInsensitive?{ignore_case:!0}:{}});return f84(N.results)}}}var Zn;var O6$=B(()=>{Zn=class Zn extends Error{code="DAEMON_UNREACHABLE";gone;constructor($,Z=!1){super($ instanceof Error?$.message:"Daemon proxy failed");if(this.gone=Z,$ instanceof Error)this.cause=$}}});function x84($){return $==="agent-sandbox"||$==="cluster"||$==="user-desktop"}function qL(){let $=process.env.STUDIO_SANDBOX_PROVIDER,Z=$&&$.length>0?$:"user-desktop";if(!x84(Z))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${$}" \u2014 expected "agent-sandbox", "cluster", or "user-desktop".`);return IL(Z)}var mN=B(()=>{W90();W90();dd0();O6$()});function k5($){if(!$||typeof $!=="object")return{};let Z=$.sandboxMap;if(!Z||typeof Z!=="object")return{};return Z}function Uw($,Z,X,G){let Q=$[Z]?.[X];if(!Q)return null;return wJ(Q)[G]??null}function Xn($,Z,X,G,Q){let Y=wJ($[Z]?.[X]);return{...$,[Z]:{...$[Z]??{},[X]:{...Y,[G]:Q}}}}async function B6$($,Z,X,G,Q,Y,J){let K=await $.findById(Z);if(!K)return;let W=K.metadata??{},N=Xn(k5(W),G,Q,Y,J);await $.update(Z,X,{metadata:{...W,sandboxMap:N}})}function id0($,Z,X,G){let Q=wJ($[Z]?.[X]);if(!Q[G])return null;let Y={...Q};delete Y[G];let J={...$[Z]??{}};if(Object.keys(Y).length===0)delete J[X];else J[X]=Y;let K={...$};if(Object.keys(J).length===0)delete K[Z];else K[Z]=J;return K}async function ww($,Z,X,G,Q,Y){let J=await $.findById(Z);if(!J)return;let K=J.metadata??{},W=id0(k5(K),G,Q,Y);if(!W)return;await $.update(Z,X,{metadata:{...K,sandboxMap:W}})}var zQ=B(()=>{O8()});import{createHash as y84}from"crypto";import{sql as U90}from"kysely";function g84($,Z){return y84("sha256").update($.userId).update("\x00").update($.projectRef).update("\x00").update(Z).digest().readBigInt64BE(0)}async function L6$($,Z,X){let G=await $.selectFrom("sandbox_runner_state").select(["handle","state","updated_at"]).where("user_id","=",Z.userId).where("project_ref","=",Z.projectRef).where("sandbox_provider_kind","=",X).executeTakeFirst();if(!G)return null;return{handle:G.handle,state:G.state,updatedAt:G.updated_at}}async function E6$($,Z,X){let G=await $.selectFrom("sandbox_runner_state").select(["user_id","project_ref","handle","state","updated_at"]).where("sandbox_provider_kind","=",Z).where("handle","=",X).executeTakeFirst();if(!G)return null;return{id:{userId:G.user_id,projectRef:G.project_ref},handle:G.handle,state:G.state,updatedAt:G.updated_at}}async function z6$($,Z,X,G){let Q=JSON.stringify(G.state),Y=new Date().toISOString();await $.insertInto("sandbox_runner_state").values({user_id:Z.userId,project_ref:Z.projectRef,sandbox_provider_kind:X,handle:G.handle,state:Q,updated_at:Y}).onConflict((J)=>J.columns(["user_id","project_ref","sandbox_provider_kind"]).doUpdateSet({handle:G.handle,state:Q,updated_at:Y})).execute()}async function j6$($,Z,X){await $.deleteFrom("sandbox_runner_state").where("user_id","=",Z.userId).where("project_ref","=",Z.projectRef).where("sandbox_provider_kind","=",X).execute()}async function P6$($,Z,X){await $.deleteFrom("sandbox_runner_state").where("sandbox_provider_kind","=",Z).where("handle","=",X).execute()}function h84($){return{get:(Z,X)=>L6$($,Z,X),getByHandle:(Z,X)=>E6$($,Z,X),put:(Z,X,G)=>z6$($,Z,X,G),delete:(Z,X)=>j6$($,Z,X),deleteByHandle:(Z,X)=>P6$($,Z,X)}}class Gn{db;constructor($){this.db=$}get($,Z){return L6$(this.db,$,Z)}getByHandle($,Z){return E6$(this.db,$,Z)}put($,Z,X){return z6$(this.db,$,Z,X)}delete($,Z){return j6$(this.db,$,Z)}deleteByHandle($,Z){return P6$(this.db,$,Z)}async withLock($,Z,X){let G=g84($,Z);return this.db.transaction().execute(async(Q)=>{try{await U90`set local statement_timeout = ${U90.lit(D6$)}`.execute(Q),await U90`select pg_advisory_xact_lock(${G}::bigint)`.execute(Q)}catch(Y){if(u84(Y))throw Error(`sandbox advisory lock busy >${D6$}ms for user=${$.userId} projectRef=${$.projectRef} kind=${Z} \u2014 provisioner is slow or stuck; retry shortly`);throw Y}return await U90`set local statement_timeout = 0`.execute(Q),X(h84(Q))})}}function u84($){if(!($ instanceof Error))return!1;return $.code==="57014"||/statement timeout/i.test($.message)}var D6$=90000;var nd0=()=>{};function T6$($,Z){return`${$}::${Z}`}var A6$;var R6$=B(()=>{A6$={githubNotAuthenticated:"GITHUB_NOT_AUTHENTICATED"}});function I6$($,Z){return{cloneUrl:`https://github.com/${$}/${Z}.git`,gitUserName:"Deco Studio",gitUserEmail:"studio@deco.cx"}}async function w90($){let Z=await $.ctx.storage.connections.findById($.connectionId,$.organizationId),X=Z?qX(Z):null;if(!Z||!X?.sourceConnectionId)return;try{await n60($.ctx,Z,{forceRefresh:$.forceRefresh})}catch(G){$.onLegacyMintError?.(G)}}async function Nx($,Z,X,G,Q,Y){let J=new F5(G,Q),K=await CN({connectionId:$,tokenStorage:J,bufferMs:Y?.bufferMs});if(!K.accessToken)throw Error(T6$(A6$.githubNotAuthenticated,K.state==="refresh_failed"?h7:"No GitHub token found. Ensure the mcp-github connection is authenticated."));let W=K.accessToken,N=`https://x-access-token:${W}@github.com/${Z}/${X}.git`,H="Deco Studio",F="studio@deco.cx";try{let U=await fetch("https://api.github.com/user",{headers:{Authorization:`token ${W}`,Accept:"application/vnd.github+json"}});if(U.ok){let w=await U.json();H=w.name||w.login,F=w.email||`${w.login}@users.noreply.github.com`}}catch{}return{cloneUrl:N,gitUserName:H,gitUserEmail:F}}var O90=B(()=>{ru0();pJ();oU();AK();R6$()});function q6$($){try{let[Z,X]=new URL($).pathname.replace(/^\//,"").split("/"),G=X?.replace(/\.git$/,"");return Z&&G?{owner:Z,name:G}:null}catch{return null}}function l6$($){return typeof $>"u"||$===null}function c84($){return typeof $==="object"&&$!==null}function l84($){if(Array.isArray($))return $;else if(l6$($))return[];return[$]}function d84($,Z){var X,G,Q,Y;if(Z){Y=Object.keys(Z);for(X=0,G=Y.length;X<G;X+=1)Q=Y[X],$[Q]=Z[Q]}return $}function m84($,Z){var X="",G;for(G=0;G<Z;G+=1)X+=$;return X}function i84($){return $===0&&Number.NEGATIVE_INFINITY===1/$}function d6$($,Z){var X="",G=$.reason||"(unknown reason)";if(!$.mark)return G;if($.mark.name)X+='in "'+$.mark.name+'" ';if(X+="("+($.mark.line+1)+":"+($.mark.column+1)+")",!Z&&$.mark.snippet)X+=`
1220
1220
 
1221
1221
  `+$.mark.snippet;return G+" "+X}function Yn($,Z){if(Error.call(this),this.name="YAMLException",this.reason=$,this.mark=Z,this.message=d6$(this,!1),Error.captureStackTrace)Error.captureStackTrace(this,this.constructor);else this.stack=Error().stack||""}function pd0($,Z,X,G,Q){var Y="",J="",K=Math.floor(Q/2)-1;if(G-Z>K)Y=" ... ",Z=G-K+Y.length;if(X-G>K)J=" ...",X=G+K-J.length;return{str:Y+$.slice(Z,X).replace(/\t/g,"\u2192")+J,pos:G-Z+Y.length}}function td0($,Z){return e9.repeat(" ",Z-$.length)+$}function s84($,Z){if(Z=Object.create(Z||null),!$.buffer)return null;if(!Z.maxLength)Z.maxLength=79;if(typeof Z.indent!=="number")Z.indent=1;if(typeof Z.linesBefore!=="number")Z.linesBefore=3;if(typeof Z.linesAfter!=="number")Z.linesAfter=2;var X=/\r?\n|\r|\0/g,G=[0],Q=[],Y,J=-1;while(Y=X.exec($.buffer))if(Q.push(Y.index),G.push(Y.index+Y[0].length),$.position<=Y.index&&J<0)J=G.length-2;if(J<0)J=G.length-1;var K="",W,N,H=Math.min($.line+Z.linesAfter,Q.length).toString().length,F=Z.maxLength-(Z.indent+H+3);for(W=1;W<=Z.linesBefore;W++){if(J-W<0)break;N=pd0($.buffer,G[J-W],Q[J-W],$.position-(G[J]-G[J-W]),F),K=e9.repeat(" ",Z.indent)+td0(($.line-W+1).toString(),H)+" | "+N.str+`
@@ -2716,7 +2716,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
2716
2716
 
2717
2717
  When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
2718
2718
 
2719
- Respond with the structured verdict and a short reason.`,hS$;var cS$=B(()=>{S4();Gw();J$1();Ne4=K$1.object({requiresReview:K$1.boolean().describe("true if the changes should go through pull-request review"),reason:K$1.string().describe("One short sentence explaining the decision (max ~120 chars)")});hS$={requiresReview:!1,reason:""}});function we4($){if(!$||$.includes(".."))return!1;return Ue4.test($)}function lS$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!we4(Z))return null;let{__resolveType:X,...G}=$;return{resolveType:Z,payload:G}}function dS$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var Ue4;var mS$=B(()=>{Ue4=/^[\w./@-]+$/});function W$1($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function iS$($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function nS$($,Z,X,G){if(!G.connectionId)throw new Hg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Q=$.organization?.id;if(!Q)throw new Hg(h7);await w90({ctx:$,connectionId:G.connectionId,organizationId:Q,forceRefresh:!0,onLegacyMintError:(H)=>{let F=H instanceof Error?H.message:h7;throw new Hg(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:K}=await Nx(G.connectionId,G.owner,G.name,$.db,$.vault),W=LE0($),N=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:K}},...W?{operator:W}:{}})});if(!N.ok){let H=await Sw(N,Oe4).catch(()=>N.statusText);throw Error(`Failed to refresh sandbox git credentials (${N.status}): ${H}`)}}var Oe4=10485760,Hg;var pS$=B(()=>{oU();e11();_n();O90();Hg=class Hg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function De4($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Be4.test(Z))throw Error(`Invalid branch name: ${$}`)}function FC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Ee4)])}function UC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function N$1($,Z){let G=(EE0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Q=G.catch(()=>{});return EE0.set($,Q),Q.finally(()=>{if(EE0.get($)===Q)EE0.delete($)}),G}async function kZ($,Z,X){let G=UC($);if(G instanceof Response)return G;let{claimName:Q,userId:Y,projectRef:J}=$.get("vmClaim"),K=X?.method??"POST",W=null,N=new Headers;if(X?.jsonBody!==void 0)W=X.jsonBody,N.set("content-type","application/json");else if(X?.forwardJsonBody)W=await $.req.text(),N.set("content-type","application/json");let H=X?.signal,F={method:K,headers:N,body:W,...H?{signal:H}:{}},U=async()=>{let w=await G.proxyDaemonRequest(Q,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await G.adoptLiveClaim?.({userId:Y,projectRef:J},Q))w=await G.proxyDaemonRequest(Q,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...vQ}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&G.kind!=="user-desktop"?je4(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...vQ}})};try{if(H){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function je4($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function zE0($,Z,X,G="GET",Q){let Y=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null});if(Y.status===404&&Q){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Q,Z))Y=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok)try{let K=JSON.parse(J);throw Error(K.error??`Daemon error (${Y.status})`)}catch(K){if(K instanceof Error&&K.message!==J)throw K;throw Error(`Daemon error (${Y.status})`)}return JSON.parse(J)}function Pe4($){return rS$.includes($)}var Be4,tS$=524288,Le4=65536,Ee4=1e4,oS$=2000,ze4,EE0,vQ,rS$,aS$=()=>{let $=new L1;return $.use("/:virtualMcpId/:branch/*",ze4),$.post("/:virtualMcpId/:branch/write",(Z)=>kZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>kZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>kZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>kZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>kZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>kZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>kZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return kZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return kZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>kZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>kZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!Pe4(X))return Z.json({error:`step must be one of: ${rS$.join(", ")}`},400);if(X==="start"){let G=Z.get("vmClaim");if(G.runner){let Q=e(Z.var.studioContext),Y=hU0(G.virtualMcpMetadata);try{await uU0({ctx:Z.var.studioContext,runner:G.runner,handle:G.claimName,orgId:Q.id,userId:G.callerUserId,entries:Y})}catch(J){let K=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${K}`},502)}}}return kZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return qH(Z,async(G)=>{await G.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return vS$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>kZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(oS$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>kZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(oS$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>kZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G,virtualMcpMetadata:Q,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return N$1(G,async()=>{try{await $$1(J,X,G);let K=iS$(Q,Y);if(K)await nS$(J,X,G,K)}catch(K){if(K instanceof Hg)return Z.json({error:K.message},403,vQ);let W=K instanceof Error?K.message:String(K);return Z.json({error:W},502,vQ)}return kZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return N$1(X,()=>kZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Q=Z.var.studioContext;return N$1(G,async()=>{try{await $$1(Q,X,G)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,vQ)}return kZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",H7({maxSize:tS$,onError:(Z)=>Z.json({error:"Payload too large"},413,vQ)}),async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Q,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,N=K.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=G$1(W)&&H?[W,N]:await Promise.all([zE0(X,G,"/_sandbox/git/status","GET",{userId:Q,projectRef:Y}),zE0(X,G,"/_sandbox/git/diff","GET",{userId:Q,projectRef:Y})]),w=await gS$(J,F,U);return Z.json(w,200,vQ)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,vQ);return Z.json({error:W},502,vQ)}}),$.post("/:virtualMcpId/:branch/git/judge-review",H7({maxSize:tS$,onError:(Z)=>Z.json({error:"Payload too large"},413,vQ)}),async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Q,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,N=K.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=G$1(W)&&H?[W,N]:await Promise.all([zE0(X,G,"/_sandbox/git/status","GET",{userId:Q,projectRef:Y}),zE0(X,G,"/_sandbox/git/diff","GET",{userId:Q,projectRef:Y})]),w=await uS$(J,F,U,typeof K.language==="string"?K.language:void 0);return Z.json(w,200,vQ)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,vQ);return Z.json({error:W},502,vQ)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Q=Z.req.query("path");if(!Q||!Q.startsWith("/")||Q.startsWith("//")||Q.includes("..")||Q.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),K=W$1(`${J}${Q}`),W;try{W=await fetch(K?.url??`${J}${Q}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await W.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:W.status,headers:{"content-type":W.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",H7({maxSize:Le4,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Q;try{Q=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Q)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=lS$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let K=dS$(Q,J.resolveType),W=W$1(K),N;try{N=await fetch(W?.url??K,{method:"POST",headers:{"content-type":"application/json",...W?{host:W.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await N.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),$};var sS$=B(()=>{i8();XC();Ng();SS$();mN();CS$();gK();GV();_S$();bS$();Kn0();Cn();J$1();cS$();mS$();pS$();Be4=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;ze4=kS$(async($,Z)=>{let X=$.var.studioContext;try{W0(X)}catch{return $.json({error:"Unauthorized"},401)}let G=z1(X);if(!G)return $.json({error:"Unauthorized"},401);let Q;try{Q=e(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{De4(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let K=await X.storage.virtualMcps.findById(Y);if(!K||K.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let W=$n({orgId:Q.id,virtualMcpId:Y,branch:J}),N=await QV(X,J,G),H=VS$({userId:N,projectRef:W},J),F=K.metadata??null,U;try{U=(await TQ(X,{userId:N,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:H,callerUserId:G,runner:U,virtualMcpId:Y,branch:J,userId:N,projectRef:W,virtualMcpMetadata:F,connectionIds:K.connections?.map((w)=>w.connection_id)??[]}),Z()});EE0=new Map;vQ={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};rS$=["clone","install","start"]});var eS$=($)=>{let Z=new L1;if(Z.use("*",ZC),Z.route("/",bL0()),Z.route("/",Bq$()),Z.route("/",BS$()),Z.route("/",wS$()),Z.route("/",OE0()),Z.route("/tools",AS$()),Z.route("/",zS$()),Z.route("/",ak$({kvStorage:$.kvStorage})),Z.route("/",ok$()),Z.route("/fs",WS$({getConnection:$.getNatsConnection})),Z.route("/sandbox",aS$()),Z.route("/",HS$()),Z.route("/deco-sites",xL0()),Z.route("/sso",ML0()),Z.route("/",BE0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Kq$()),$.mountDevAssets)Z.route("/dev-assets",yL0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.route("/",Ba1()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp",KO0()),Z.route("/mcp/self",wE0()),Z.route("/mcp",HO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var $V$=B(()=>{i8();j01();Wq$();I01();gL0();Tt();E01();rk$();sk$();NS$();Ji();N01();FO0();n11();FS$();OS$();DS$();jS$();t11();TS$();o11();WO0();sS$()});function Te4($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function Re4($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(Ae4)});if(!X.ok){let G=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${G.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var Ae4=1e4,Ie4=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},ZV$=()=>{let $=new L1;return $.use("*",Ie4),$.get("/",async(Z)=>{let X=n0(),G=X.decoSupabaseUrl,Q=X.decoSupabaseServiceKey;if(!G||!Q)return Z.json({apps:[]});try{let Y=await Re4(G,Q);return Z.json({apps:Te4(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var XV$=B(()=>{i8();f$()});import{z as I1}from"zod";function FW($,Z="invalid_request_error",X=null,G=null){return{error:{message:$,type:Z,param:X,code:G}}}function fe4($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),G=$.substring(Z+1);if(!X||!G)return null;return{credentialId:X,modelId:G}}function xe4($,Z,X){try{return JSON.parse($)}catch{throw new YV$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function ye4($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let G of X.tool_calls)Z[G.id]=G.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Q)=>{if(Q.type==="text")return{type:"text",text:Q.text};return{type:"image",image:Q.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Q)=>({type:"tool-call",toolCallId:Q.id,toolName:Q.function.name,input:xe4(Q.function.arguments,Q.id,Q.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let G=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:G,output:{type:"text",value:X.content}}]}}})}function ge4($){let Z=$.map((X)=>{let G=X.function.parameters?HQ(X.function.parameters):HQ({type:"object",properties:{}});return[X.function.name,V$({description:X.function.description,inputSchema:G})]});return Object.fromEntries(Z)}function he4($){if(!$)return;return{openai:{response_format:$}}}function ue4(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function GV$($,Z,X,G,Q,Y){let J={model:$,messages:Z,tools:X,temperature:G.temperature,maxTokens:G.max_tokens,topP:G.top_p,frequencyPenalty:G.frequency_penalty,presencePenalty:G.presence_penalty,stopSequences:G.stop?Array.isArray(G.stop)?G.stop:[G.stop]:void 0,abortSignal:Y};return Q?{...J,providerOptions:Q}:J}function QV$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var qe4=256,Me4,ke4,Se4,Ve4,Ce4,_e4,ve4,be4,YV$,JV$,KV$;var WV$=B(()=>{S4();i8();Ng();YH();Me4=I1.object({type:I1.literal("function"),function:I1.object({name:I1.string(),description:I1.string().optional(),parameters:I1.record(I1.string(),I1.unknown()).optional()})}),ke4=I1.object({id:I1.string(),type:I1.literal("function"),function:I1.object({name:I1.string(),arguments:I1.string()})}),Se4=I1.discriminatedUnion("role",[I1.object({role:I1.literal("system"),content:I1.string(),name:I1.string().optional()}),I1.object({role:I1.literal("user"),content:I1.union([I1.string(),I1.array(I1.union([I1.object({type:I1.literal("text"),text:I1.string()}),I1.object({type:I1.literal("image_url"),image_url:I1.object({url:I1.string(),detail:I1.string().optional()})})]))]),name:I1.string().optional()}),I1.object({role:I1.literal("assistant"),content:I1.string().nullable().optional(),name:I1.string().optional(),tool_calls:I1.array(ke4).optional()}),I1.object({role:I1.literal("tool"),content:I1.string(),tool_call_id:I1.string()})]),Ve4=I1.object({type:I1.literal("text")}),Ce4=I1.object({type:I1.literal("json_object")}),_e4=I1.object({type:I1.literal("json_schema"),json_schema:I1.object({name:I1.string(),description:I1.string().optional(),schema:I1.record(I1.string(),I1.unknown()),strict:I1.boolean().optional()})}),ve4=I1.union([Ve4,Ce4,_e4]),be4=I1.object({model:I1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:I1.array(Se4),stream:I1.boolean().optional().default(!1),temperature:I1.number().min(0).max(2).optional(),max_tokens:I1.number().positive().optional(),top_p:I1.number().min(0).max(1).optional(),frequency_penalty:I1.number().min(-2).max(2).optional(),presence_penalty:I1.number().min(-2).max(2).optional(),stop:I1.union([I1.string(),I1.array(I1.string())]).optional(),tools:I1.array(Me4).optional(),tool_choice:I1.union([I1.literal("auto"),I1.literal("none"),I1.literal("required"),I1.object({type:I1.literal("function"),function:I1.object({name:I1.string()})})]).optional(),response_format:ve4.optional(),user:I1.string().optional()});YV$=class YV$ extends Error{constructor($){super($);this.name="MessageConversionError"}};JV$=new L1;JV$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(FW("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(FW("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(FW("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let G=await $.req.json(),Q=be4.safeParse(G);if(!Q.success){let L=Q.error.issues[0]??{message:"Invalid request",path:[]};return $.json(FW(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=Q.data,J=fe4(Y.model);if(!J)return $.json(FW("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((z)=>TB(z.providerId));if(!E)return $.json(FW("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);K=E.id}let N;try{N=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(FW(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let H=N.aiSdk.languageModel(W),F=ye4(Y.messages),U=Y.tools?ge4(Y.tools):void 0,w=he4(Y.response_format),O=ue4(),D=Math.floor(Date.now()/1000);if(Y.stream)return qH($,async(L)=>{let E=GV$(H,F,U,Y,w,$.req.raw.signal);try{let z=Fw(E),j=!1,A=0,P="",I=async()=>{if(P.length===0)return;let V=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:V},finish_reason:null}]})})};for await(let V of z.fullStream){if(!j&&(V.type==="text-delta"||V.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(V.type==="text-delta"){if(P+=V.text,P.length>=qe4)await I()}else if(V.type==="tool-call"){await I();let k=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:V.toolCallId,type:"function",function:{name:V.toolName,arguments:JSON.stringify(V.input)}}]},finish_reason:null}]})})}else if(V.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:QV$(V.finishReason)}],usage:V.totalUsage?{prompt_tokens:V.totalUsage.inputTokens??0,completion_tokens:V.totalUsage.outputTokens??0,total_tokens:V.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await L.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let L=GV$(H,F,U,Y,w,$.req.raw.signal),E=await Nw(L),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:z,finish_reason:QV$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(G){let Q=G;if(Q.name==="AbortError")return $.json(FW("Request aborted","invalid_request_error"),400);if(Q.name==="MessageConversionError")return $.json(FW(Q.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Q.message,Q.stack),$.json(FW(Q.message,"server_error"),500)}});KV$=JV$});var HV$;var NV$=B(()=>{HV$={name:"decocms",version:"4.170.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function de4(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??le4}}var FV$,le4="https://ph.studio.decocms.com",UV$;var wV$=B(()=>{i8();$C0();WV();wZ();f$();Q01();NV$();FV$=new L1;FV$.get("/",($)=>{let Z={version:HV$.version,theme:Iq1(),...kB().logo&&{logo:kB().logo},...uK()&&{internalUrl:MI1()},...n0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!n0().firecrawlApiKey,auth:A2$(),posthog:de4(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!uK()&&n0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});UV$=FV$});function Fg($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function H$1($){return(Fg($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function BV$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Fg($))}&sz=${Z}`}function OV$($,Z){let X=$.trim();if(X.length<=Z)return X;let G=X.slice(0,Z-1),Q=G.lastIndexOf(" ");return`${(Q>Z*0.6?G.slice(0,Q):G).trimEnd()}\u2026`}function DV$($){let{brand:Z,domain:X,score:G,verdict:Q}=$,Y=typeof G==="number"?`${Z} commerce report \u2014 ${Math.round(G)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,K=Q?.trim()?OV$(`${Q.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):OV$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:K}}import{z as c0}from"zod";var wC,me4,ie4,ne4,pe4,LV$;var EV$=B(()=>{wC=c0.enum(["good","bad","neutral"]),me4=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:wC.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),ie4=c0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},c0.array(me4)),ne4={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},pe4=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:wC.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:wC.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:wC.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:wC.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(ie4).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:wC.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:wC.optional()})).min(1)})]),LV$=c0.object({...ne4,template:pe4})});function jE0($){let Z=[],X=[...$.sections].sort((G,Q)=>G.position-Q.position).map((G)=>{let Q=LV$.safeParse(G.props);if(Q.success)return Q.data;let Y=Q.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:Y?`${Y.path.join(".")||"(root)"}: ${Y.message}`:"contract violation"}),null}).filter((G)=>G!==null);return{deck:{meta:{...$.meta,scores:$.summary?.scores},slides:X},drops:Z}}var F$1=B(()=>{EV$()});import{join as zV$}from"path";async function oe4($){try{let Z=await fetch(`${e3({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(te4)});if(!Z.ok)return null;let X=await Z.json(),{deck:G}=jE0(X);if(!G.slides.length)return null;let Q=G.slides.find((K)=>K.template.template==="cover"),Y=Q?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:G.meta.brand?.trim()||H$1($),score:G.meta.scores?.cover??J?.score?.value,verdict:Q?.annotation?.trim()||Q?.headline?.trim()||void 0}}catch{return null}}function bQ($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function re4($,Z){let X=Fg($),G=Z?.brand?.trim()||H$1(X),Q=BV$(X,128),J=`${(n0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=DV$({brand:G,domain:X,score:Z?.score,verdict:Z?.verdict}),N=`${J}/og.png`,H=`${G} commerce report by decocms`;return[`<title>${bQ(K)}</title>`,`<meta name="description" content="${bQ(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${bQ(K)}" />`,`<meta property="og:description" content="${bQ(W)}" />`,`<meta property="og:url" content="${bQ(J)}" />`,`<meta property="og:image" content="${bQ(N)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${bQ(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${bQ(K)}" />`,`<meta name="twitter:description" content="${bQ(W)}" />`,`<meta name="twitter:image" content="${bQ(N)}" />`,`<meta name="twitter:image:alt" content="${bQ(H)}" />`,`<link rel="canonical" href="${bQ(J)}" />`,`<link rel="icon" href="${bQ(Q)}" sizes="any" />`].join(`
2719
+ Respond with the structured verdict and a short reason.`,hS$;var cS$=B(()=>{S4();Gw();J$1();Ne4=K$1.object({requiresReview:K$1.boolean().describe("true if the changes should go through pull-request review"),reason:K$1.string().describe("One short sentence explaining the decision (max ~120 chars)")});hS$={requiresReview:!1,reason:""}});function we4($){if(!$||$.includes(".."))return!1;return Ue4.test($)}function lS$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!we4(Z))return null;let{__resolveType:X,...G}=$;return{resolveType:Z,payload:G}}function dS$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var Ue4;var mS$=B(()=>{Ue4=/^[\w./@-]+$/});function W$1($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function iS$($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function nS$($,Z,X,G){if(!G.connectionId)throw new Hg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Q=$.organization?.id;if(!Q)throw new Hg(h7);await w90({ctx:$,connectionId:G.connectionId,organizationId:Q,forceRefresh:!0,onLegacyMintError:(H)=>{let F=H instanceof Error?H.message:h7;throw new Hg(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:K}=await Nx(G.connectionId,G.owner,G.name,$.db,$.vault),W=LE0($),N=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:K}},...W?{operator:W}:{}})});if(!N.ok){let H=await Sw(N,Oe4).catch(()=>N.statusText);throw Error(`Failed to refresh sandbox git credentials (${N.status}): ${H}`)}}var Oe4=10485760,Hg;var pS$=B(()=>{oU();e11();_n();O90();Hg=class Hg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function De4($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Be4.test(Z))throw Error(`Invalid branch name: ${$}`)}function FC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Ee4)])}function UC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function N$1($,Z){let G=(EE0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Q=G.catch(()=>{});return EE0.set($,Q),Q.finally(()=>{if(EE0.get($)===Q)EE0.delete($)}),G}async function kZ($,Z,X){let G=UC($);if(G instanceof Response)return G;let{claimName:Q,userId:Y,projectRef:J}=$.get("vmClaim"),K=X?.method??"POST",W=null,N=new Headers;if(X?.jsonBody!==void 0)W=X.jsonBody,N.set("content-type","application/json");else if(X?.forwardJsonBody)W=await $.req.text(),N.set("content-type","application/json");let H=X?.signal,F={method:K,headers:N,body:W,...H?{signal:H}:{}},U=async()=>{let w=await G.proxyDaemonRequest(Q,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await G.adoptLiveClaim?.({userId:Y,projectRef:J},Q))w=await G.proxyDaemonRequest(Q,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...vQ}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&G.kind!=="user-desktop"?je4(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...vQ}})};try{if(H){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function je4($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function zE0($,Z,X,G="GET",Q){let Y=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null});if(Y.status===404&&Q){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Q,Z))Y=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok)try{let K=JSON.parse(J);throw Error(K.error??`Daemon error (${Y.status})`)}catch(K){if(K instanceof Error&&K.message!==J)throw K;throw Error(`Daemon error (${Y.status})`)}return JSON.parse(J)}function Pe4($){return rS$.includes($)}var Be4,tS$=524288,Le4=65536,Ee4=1e4,oS$=2000,ze4,EE0,vQ,rS$,aS$=()=>{let $=new L1;return $.use("/:virtualMcpId/:branch/*",ze4),$.post("/:virtualMcpId/:branch/write",(Z)=>kZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>kZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>kZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>kZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>kZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>kZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>kZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:FC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return kZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return kZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>kZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>kZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!Pe4(X))return Z.json({error:`step must be one of: ${rS$.join(", ")}`},400);if(X==="start"){let G=Z.get("vmClaim");if(G.runner){let Q=e(Z.var.studioContext),Y=hU0(G.virtualMcpMetadata);try{await uU0({ctx:Z.var.studioContext,runner:G.runner,handle:G.claimName,orgId:Q.id,userId:G.callerUserId,entries:Y})}catch(J){let K=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${K}`},502)}}}return kZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return qH(Z,async(G)=>{await G.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return vS$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>kZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(oS$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>kZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(oS$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>kZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G,virtualMcpMetadata:Q,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return N$1(G,async()=>{try{await $$1(J,X,G);let K=iS$(Q,Y);if(K)await nS$(J,X,G,K)}catch(K){if(K instanceof Hg)return Z.json({error:K.message},403,vQ);let W=K instanceof Error?K.message:String(K);return Z.json({error:W},502,vQ)}return kZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return N$1(X,()=>kZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Q=Z.var.studioContext;return N$1(G,async()=>{try{await $$1(Q,X,G)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,vQ)}return kZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",H7({maxSize:tS$,onError:(Z)=>Z.json({error:"Payload too large"},413,vQ)}),async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Q,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,N=K.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=G$1(W)&&H?[W,N]:await Promise.all([zE0(X,G,"/_sandbox/git/status","GET",{userId:Q,projectRef:Y}),zE0(X,G,"/_sandbox/git/diff","GET",{userId:Q,projectRef:Y})]),w=await gS$(J,F,U);return Z.json(w,200,vQ)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,vQ);return Z.json({error:W},502,vQ)}}),$.post("/:virtualMcpId/:branch/git/judge-review",H7({maxSize:tS$,onError:(Z)=>Z.json({error:"Payload too large"},413,vQ)}),async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Q,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,N=K.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=G$1(W)&&H?[W,N]:await Promise.all([zE0(X,G,"/_sandbox/git/status","GET",{userId:Q,projectRef:Y}),zE0(X,G,"/_sandbox/git/diff","GET",{userId:Q,projectRef:Y})]),w=await uS$(J,F,U,typeof K.language==="string"?K.language:void 0);return Z.json(w,200,vQ)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,vQ);return Z.json({error:W},502,vQ)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Q=Z.req.query("path");if(!Q||!Q.startsWith("/")||Q.startsWith("//")||Q.includes("..")||Q.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),K=W$1(`${J}${Q}`),W;try{W=await fetch(K?.url??`${J}${Q}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await W.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:W.status,headers:{"content-type":W.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",H7({maxSize:Le4,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=UC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Q;try{Q=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Q)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=lS$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let K=dS$(Q,J.resolveType),W=W$1(K),N;try{N=await fetch(W?.url??K,{method:"POST",headers:{"content-type":"application/json",...W?{host:W.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await N.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),$};var sS$=B(()=>{i8();XC();Ng();SS$();mN();CS$();gK();GV();_S$();bS$();Kn0();Cn();J$1();cS$();mS$();pS$();Be4=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;ze4=kS$(async($,Z)=>{let X=$.var.studioContext;try{W0(X)}catch{return $.json({error:"Unauthorized"},401)}let G=z1(X);if(!G)return $.json({error:"Unauthorized"},401);let Q;try{Q=e(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{De4(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let K=await X.storage.virtualMcps.findById(Y);if(!K||K.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let W=$n({orgId:Q.id,virtualMcpId:Y,branch:J}),N=await QV(X,J,G),H=VS$({userId:N,projectRef:W},J),F=K.metadata??null,U;try{U=(await TQ(X,{userId:N,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:H,callerUserId:G,runner:U,virtualMcpId:Y,branch:J,userId:N,projectRef:W,virtualMcpMetadata:F,connectionIds:K.connections?.map((w)=>w.connection_id)??[]}),Z()});EE0=new Map;vQ={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};rS$=["clone","install","start"]});var eS$=($)=>{let Z=new L1;if(Z.use("*",ZC),Z.route("/",bL0()),Z.route("/",Bq$()),Z.route("/",BS$()),Z.route("/",wS$()),Z.route("/",OE0()),Z.route("/tools",AS$()),Z.route("/",zS$()),Z.route("/",ak$({kvStorage:$.kvStorage})),Z.route("/",ok$()),Z.route("/fs",WS$({getConnection:$.getNatsConnection})),Z.route("/sandbox",aS$()),Z.route("/",HS$()),Z.route("/deco-sites",xL0()),Z.route("/sso",ML0()),Z.route("/",BE0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Kq$()),$.mountDevAssets)Z.route("/dev-assets",yL0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.route("/",Ba1()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp",KO0()),Z.route("/mcp/self",wE0()),Z.route("/mcp",HO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var $V$=B(()=>{i8();j01();Wq$();I01();gL0();Tt();E01();rk$();sk$();NS$();Ji();N01();FO0();n11();FS$();OS$();DS$();jS$();t11();TS$();o11();WO0();sS$()});function Te4($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function Re4($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(Ae4)});if(!X.ok){let G=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${G.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var Ae4=1e4,Ie4=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},ZV$=()=>{let $=new L1;return $.use("*",Ie4),$.get("/",async(Z)=>{let X=n0(),G=X.decoSupabaseUrl,Q=X.decoSupabaseServiceKey;if(!G||!Q)return Z.json({apps:[]});try{let Y=await Re4(G,Q);return Z.json({apps:Te4(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var XV$=B(()=>{i8();f$()});import{z as I1}from"zod";function FW($,Z="invalid_request_error",X=null,G=null){return{error:{message:$,type:Z,param:X,code:G}}}function fe4($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),G=$.substring(Z+1);if(!X||!G)return null;return{credentialId:X,modelId:G}}function xe4($,Z,X){try{return JSON.parse($)}catch{throw new YV$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function ye4($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let G of X.tool_calls)Z[G.id]=G.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Q)=>{if(Q.type==="text")return{type:"text",text:Q.text};return{type:"image",image:Q.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Q)=>({type:"tool-call",toolCallId:Q.id,toolName:Q.function.name,input:xe4(Q.function.arguments,Q.id,Q.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let G=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:G,output:{type:"text",value:X.content}}]}}})}function ge4($){let Z=$.map((X)=>{let G=X.function.parameters?HQ(X.function.parameters):HQ({type:"object",properties:{}});return[X.function.name,V$({description:X.function.description,inputSchema:G})]});return Object.fromEntries(Z)}function he4($){if(!$)return;return{openai:{response_format:$}}}function ue4(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function GV$($,Z,X,G,Q,Y){let J={model:$,messages:Z,tools:X,temperature:G.temperature,maxTokens:G.max_tokens,topP:G.top_p,frequencyPenalty:G.frequency_penalty,presencePenalty:G.presence_penalty,stopSequences:G.stop?Array.isArray(G.stop)?G.stop:[G.stop]:void 0,abortSignal:Y};return Q?{...J,providerOptions:Q}:J}function QV$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var qe4=256,Me4,ke4,Se4,Ve4,Ce4,_e4,ve4,be4,YV$,JV$,KV$;var WV$=B(()=>{S4();i8();Ng();YH();Me4=I1.object({type:I1.literal("function"),function:I1.object({name:I1.string(),description:I1.string().optional(),parameters:I1.record(I1.string(),I1.unknown()).optional()})}),ke4=I1.object({id:I1.string(),type:I1.literal("function"),function:I1.object({name:I1.string(),arguments:I1.string()})}),Se4=I1.discriminatedUnion("role",[I1.object({role:I1.literal("system"),content:I1.string(),name:I1.string().optional()}),I1.object({role:I1.literal("user"),content:I1.union([I1.string(),I1.array(I1.union([I1.object({type:I1.literal("text"),text:I1.string()}),I1.object({type:I1.literal("image_url"),image_url:I1.object({url:I1.string(),detail:I1.string().optional()})})]))]),name:I1.string().optional()}),I1.object({role:I1.literal("assistant"),content:I1.string().nullable().optional(),name:I1.string().optional(),tool_calls:I1.array(ke4).optional()}),I1.object({role:I1.literal("tool"),content:I1.string(),tool_call_id:I1.string()})]),Ve4=I1.object({type:I1.literal("text")}),Ce4=I1.object({type:I1.literal("json_object")}),_e4=I1.object({type:I1.literal("json_schema"),json_schema:I1.object({name:I1.string(),description:I1.string().optional(),schema:I1.record(I1.string(),I1.unknown()),strict:I1.boolean().optional()})}),ve4=I1.union([Ve4,Ce4,_e4]),be4=I1.object({model:I1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:I1.array(Se4),stream:I1.boolean().optional().default(!1),temperature:I1.number().min(0).max(2).optional(),max_tokens:I1.number().positive().optional(),top_p:I1.number().min(0).max(1).optional(),frequency_penalty:I1.number().min(-2).max(2).optional(),presence_penalty:I1.number().min(-2).max(2).optional(),stop:I1.union([I1.string(),I1.array(I1.string())]).optional(),tools:I1.array(Me4).optional(),tool_choice:I1.union([I1.literal("auto"),I1.literal("none"),I1.literal("required"),I1.object({type:I1.literal("function"),function:I1.object({name:I1.string()})})]).optional(),response_format:ve4.optional(),user:I1.string().optional()});YV$=class YV$ extends Error{constructor($){super($);this.name="MessageConversionError"}};JV$=new L1;JV$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(FW("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(FW("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(FW("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let G=await $.req.json(),Q=be4.safeParse(G);if(!Q.success){let L=Q.error.issues[0]??{message:"Invalid request",path:[]};return $.json(FW(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=Q.data,J=fe4(Y.model);if(!J)return $.json(FW("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((z)=>TB(z.providerId));if(!E)return $.json(FW("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);K=E.id}let N;try{N=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(FW(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let H=N.aiSdk.languageModel(W),F=ye4(Y.messages),U=Y.tools?ge4(Y.tools):void 0,w=he4(Y.response_format),O=ue4(),D=Math.floor(Date.now()/1000);if(Y.stream)return qH($,async(L)=>{let E=GV$(H,F,U,Y,w,$.req.raw.signal);try{let z=Fw(E),j=!1,A=0,P="",I=async()=>{if(P.length===0)return;let V=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:V},finish_reason:null}]})})};for await(let V of z.fullStream){if(!j&&(V.type==="text-delta"||V.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(V.type==="text-delta"){if(P+=V.text,P.length>=qe4)await I()}else if(V.type==="tool-call"){await I();let k=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:V.toolCallId,type:"function",function:{name:V.toolName,arguments:JSON.stringify(V.input)}}]},finish_reason:null}]})})}else if(V.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:QV$(V.finishReason)}],usage:V.totalUsage?{prompt_tokens:V.totalUsage.inputTokens??0,completion_tokens:V.totalUsage.outputTokens??0,total_tokens:V.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await L.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let L=GV$(H,F,U,Y,w,$.req.raw.signal),E=await Nw(L),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:z,finish_reason:QV$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(G){let Q=G;if(Q.name==="AbortError")return $.json(FW("Request aborted","invalid_request_error"),400);if(Q.name==="MessageConversionError")return $.json(FW(Q.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Q.message,Q.stack),$.json(FW(Q.message,"server_error"),500)}});KV$=JV$});var HV$;var NV$=B(()=>{HV$={name:"decocms",version:"4.170.6",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",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function de4(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??le4}}var FV$,le4="https://ph.studio.decocms.com",UV$;var wV$=B(()=>{i8();$C0();WV();wZ();f$();Q01();NV$();FV$=new L1;FV$.get("/",($)=>{let Z={version:HV$.version,theme:Iq1(),...kB().logo&&{logo:kB().logo},...uK()&&{internalUrl:MI1()},...n0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!n0().firecrawlApiKey,auth:A2$(),posthog:de4(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!uK()&&n0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});UV$=FV$});function Fg($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function H$1($){return(Fg($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function BV$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Fg($))}&sz=${Z}`}function OV$($,Z){let X=$.trim();if(X.length<=Z)return X;let G=X.slice(0,Z-1),Q=G.lastIndexOf(" ");return`${(Q>Z*0.6?G.slice(0,Q):G).trimEnd()}\u2026`}function DV$($){let{brand:Z,domain:X,score:G,verdict:Q}=$,Y=typeof G==="number"?`${Z} commerce report \u2014 ${Math.round(G)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,K=Q?.trim()?OV$(`${Q.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):OV$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:K}}import{z as c0}from"zod";var wC,me4,ie4,ne4,pe4,LV$;var EV$=B(()=>{wC=c0.enum(["good","bad","neutral"]),me4=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:wC.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),ie4=c0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},c0.array(me4)),ne4={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},pe4=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:wC.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:wC.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:wC.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:wC.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(ie4).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:wC.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:wC.optional()})).min(1)})]),LV$=c0.object({...ne4,template:pe4})});function jE0($){let Z=[],X=[...$.sections].sort((G,Q)=>G.position-Q.position).map((G)=>{let Q=LV$.safeParse(G.props);if(Q.success)return Q.data;let Y=Q.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:Y?`${Y.path.join(".")||"(root)"}: ${Y.message}`:"contract violation"}),null}).filter((G)=>G!==null);return{deck:{meta:{...$.meta,scores:$.summary?.scores},slides:X},drops:Z}}var F$1=B(()=>{EV$()});import{join as zV$}from"path";async function oe4($){try{let Z=await fetch(`${e3({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(te4)});if(!Z.ok)return null;let X=await Z.json(),{deck:G}=jE0(X);if(!G.slides.length)return null;let Q=G.slides.find((K)=>K.template.template==="cover"),Y=Q?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:G.meta.brand?.trim()||H$1($),score:G.meta.scores?.cover??J?.score?.value,verdict:Q?.annotation?.trim()||Q?.headline?.trim()||void 0}}catch{return null}}function bQ($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function re4($,Z){let X=Fg($),G=Z?.brand?.trim()||H$1(X),Q=BV$(X,128),J=`${(n0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=DV$({brand:G,domain:X,score:Z?.score,verdict:Z?.verdict}),N=`${J}/og.png`,H=`${G} commerce report by decocms`;return[`<title>${bQ(K)}</title>`,`<meta name="description" content="${bQ(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${bQ(K)}" />`,`<meta property="og:description" content="${bQ(W)}" />`,`<meta property="og:url" content="${bQ(J)}" />`,`<meta property="og:image" content="${bQ(N)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${bQ(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${bQ(K)}" />`,`<meta name="twitter:description" content="${bQ(W)}" />`,`<meta name="twitter:image" content="${bQ(N)}" />`,`<meta name="twitter:image:alt" content="${bQ(H)}" />`,`<link rel="canonical" href="${bQ(J)}" />`,`<link rel="icon" href="${bQ(Q)}" sizes="any" />`].join(`
2720
2720
  `)}function ae4($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
2721
2721
  </head>`)}function jV$($){let Z=new L1;return Z.get("/:domain/og.png",async(X)=>{let G=Fg(X.req.param("domain")),Q=async()=>{let Y=$?Bun.file(zV$($,"report-og-fallback.png")):null;if(!Y||!await Y.exists())return X.notFound();return X.body(new Uint8Array(await Y.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let Y=await fetch(`${e3({})}/api/v2/public/diagnostics/${encodeURIComponent(G)}/og.png`,{signal:AbortSignal.timeout(se4)}),J=Y.headers.get("content-type")??"";if(!Y.ok||!J.startsWith("image/")||!Y.body)return Q();return X.body(Y.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Q()}}),Z.get("/:domain",async(X)=>{let G=X.req.param("domain"),Q=$?zV$($,"index.html"):null,Y=Q?Bun.file(Q):null;if(!Y||!await Y.exists())return X.notFound();let J=await Y.text();try{let K=await oe4(Fg(G)),W=re4(G,K);return X.html(ae4(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var te4=2500,se4=1e4;var PV$=B(()=>{i8();F$1();ZD();f$()});function rt($,Z){return fetch(`${e3({})}${$}`,Z)}async function ee4($,Z,X){let G=new URLSearchParams;if(Z)G.set("pw",Z);if(X)G.set("lang",X);let Q=G.toString()?`?${G.toString()}`:"",Y=await rt(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Q}`,{headers:{Accept:"application/json"}});if(Y.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!Y.ok)throw Error(`report read HTTP ${Y.status}`);let J=await Y.json(),{deck:K,drops:W}=jE0(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var $06,OC,AV$;var TV$=B(()=>{i8();AY();ZD();F$1();$06=new Set(["complete","errored","terminated","unknown"]),OC=new L1;OC.use("*",async($,Z)=>{let X=await L8.api.getSession({headers:$.req.raw.headers});if(!X?.user?.id)return $.json({error:"Authentication required"},401,{"Cache-Control":"private, no-store",Vary:"Cookie"});$.set("reportUser",{email:X.user.email}),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});OC.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.req.query("key")?.trim()||void 0,G=$.req.query("lang")?.trim()||void 0;try{let Q=await ee4(Z,X,G);return $.header("Cache-Control","private, no-store"),$.json(Q)}catch{return $.json({error:"report read failed"},502)}});OC.post("/run",async($)=>{let Z;try{Z=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Z.domain==="string"?Z.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let G=$.get("reportUser").email,Q=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;try{let Y=await rt("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${$D({})}`},body:JSON.stringify({url:X,email:G,distinct_id:Q})});if(!Y.ok)return $.json({error:`run HTTP ${Y.status}`},502);let J=await Y.json(),K=J.blocked?{state:"blocked"}:J.status==="fresh"?{state:"fresh"}:J.mode==="sync"?{state:"sync"}:{state:"running",id:J.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});OC.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await rt(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${$D({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Q=(await X.json()).status??"unknown",Y={done:$06.has(Q),status:Q};return $.json(Y)}catch{return $.json({error:"status failed"},502)}});OC.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await rt(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});OC.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await rt(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let G=await X.json();return $.json({suggestions:Array.isArray(G.suggestions)?G.suggestions:[]})}catch{return $.json({suggestions:[]})}});AV$=OC});import{createHmac as Z06,timingSafeEqual as X06}from"crypto";function RV$($,Z,X,G=Date.now()){if(!Z||!X)return!1;let Q,Y=[];for(let N of Z.split(",")){let H=N.indexOf("=");if(H<=0)continue;let F=N.slice(0,H).trim(),U=N.slice(H+1).trim();if(F==="t")Q=U;else if(F==="v1")Y.push(U)}if(!Q||Y.length===0)return!1;let J=Number(Q);if(!Number.isFinite(J)||Math.abs(G/1000-J)>G06)return!1;let K=Z06("sha256",X).update(`${Q}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return Y.some((N)=>{let H=Buffer.from(N,"hex");return W.length===H.length&&X06(W,H)})}function IV$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=lY(Z),G=lY(lY(X?.data)?.object);if(!X||typeof X.type!=="string"||!G)return null;return{id:UW(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:G}}}function Q06($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function UW($){return typeof $==="string"?$:void 0}function lY($){return typeof $==="object"&&$!==null?$:void 0}function PE0($){return typeof $==="number"?new Date($*1000):null}function O$1($){return UW($)??UW(lY($)?.id)}function Y06($){return O$1($.subscription)??UW(lY(lY($.parent)?.subscription_details)?.subscription)}function J06($){let Z=PE0($.current_period_end);if(Z)return Z;let X=lY($.items)?.data;if(!Array.isArray(X))return null;let G=0;for(let Q of X){let Y=lY(Q)?.current_period_end;if(typeof Y==="number"&&Y>G)G=Y}return G>0?new Date(G*1000):null}function U$1($,Z){let X=PE0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function w$1($,Z){let X=PE0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function K06($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let G=UW(lY(X.metadata)?.orgId);if(!G)return{handled:!1,reason:"no orgId"};if(UW(lY(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(UW(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=UW(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:G}),{handled:!1,reason:"topup session without id"};let K=Number(lY(X.metadata)?.creditCents);if(!Number.isInteger(K)||K<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:G,creditCents:lY(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:G,topUp:{creditCents:K,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(UW(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Q=await $.getBilling(G);if(!Q)return{handled:!1,reason:"unknown org"};let Y=O$1(X.subscription);if(Q.stripeSubscriptionId&&Y&&Q.stripeSubscriptionId!==Y)return console.error("stripe webhook: refused checkout rebind",{organizationId:G,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:Y};if(U$1(Z,Q))return{handled:!1,reason:"stale event"};return await $.updateStripeState(G,{stripeCustomerId:O$1(X.customer),stripeSubscriptionId:Y,status:"active",lastStripeEventAt:w$1(Z,Q)}),{handled:!0,organizationId:G}}case"customer.subscription.updated":case"customer.subscription.deleted":{let G=UW(X.id);if(!G)return{handled:!1,reason:"no sub id"};let Q=await $.getBillingByStripeSubscriptionId(G);if(!Q)return{handled:!1,reason:"unknown subscription"};let Y=Z.type==="customer.subscription.deleted";if(!Y&&U$1(Z,Q))return{handled:!1,reason:"stale event"};let J=Y?"canceled":Q06(X.status);return await $.updateStripeState(Q.organizationId,{status:J,currentPeriodEnd:J06(X),...Y&&{stripeSubscriptionId:null},lastStripeEventAt:w$1(Z,Q)}),{handled:!0,organizationId:Q.organizationId}}case"invoice.paid":{let G=Y06(X);if(!G)return{handled:!1,reason:"no sub id"};let Q=await $.getBillingByStripeSubscriptionId(G);if(!Q)return{handled:!1,reason:"unknown subscription"};if(U$1(Z,Q))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q.organizationId,{status:"active",currentPeriodEnd:PE0(X.period_end),lastStripeEventAt:w$1(Z,Q)}),{handled:!0,organizationId:Q.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}async function qV$($){let Z=new jd(n8().db),X=await K06(Z,$);if(X.handled&&X.topUp)await xN$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId});if(!X.handled&&X.orphanSubscriptionId)try{await X0$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(G){if(!(G instanceof eJ&&(G.status===400||G.status===404)))throw G}return X}var G06=300;var MV$=B(()=>{XY();_i();nt0()});var W06=1048576,B$1;var kV$=B(()=>{i8();XC();f$();MV$();B$1=new L1;B$1.post("/webhook",H7({maxSize:W06,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=n0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!RV$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Q=IV$(X);if(!Q)return $.json({error:"invalid payload"},400);let Y=await qV$(Q);return console.log("stripe webhook",{eventId:Q.id,type:Q.type,livemode:Q.livemode,...Y}),$.json({received:!0})})});function SV$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var VV$,N06,H06,CV$;var _V$=B(()=>{i8();BJ();Cx();e_();VV$=new L1,N06=["range","if-none-match","if-modified-since"],H06=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];VV$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(my($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new X$(401,{message:"Authentication required"})}if(!X)throw new X$(401,{message:"Organization context required"});let G=$.req.path.replace(/^.*\/files\//,"");if(!G)throw new X$(400,{message:"Missing file key"});let Q=await yn(G,Z);if(!Q)throw new X$(503,{message:"Object storage not configured"});if(Q.startsWith("data:")&&OJ()){let W=Q.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new X$(500,{message:"Invalid data URL from storage"});let[,N,H]=W,F=Buffer.from(H,"base64"),U=new Headers({"Content-Type":N,"Cache-Control":"private, max-age=86400"});return SV$(U,N),new Response(F,{status:200,headers:U})}let Y=new Headers;for(let W of N06){let N=$.req.header(W);if(N)Y.set(W,N)}let J=await fetch(Q,{headers:Y});if(J.status===403||J.status===404)throw new X$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,G),new X$(502,{message:"Upstream storage error"});let K=new Headers;for(let W of H06){let N=J.headers.get(W);if(N)K.set(W,N)}return K.set("Cache-Control","private, max-age=86400"),SV$(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});CV$=VV$});var at=C((BC)=>{var F06=BC&&BC.__createBinding||(Object.create?function($,Z,X,G){if(G===void 0)G=X;var Q=Object.getOwnPropertyDescriptor(Z,X);if(!Q||("get"in Q?!Z.__esModule:Q.writable||Q.configurable))Q={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,G,Q)}:function($,Z,X,G){if(G===void 0)G=X;$[G]=Z[X]}),U06=BC&&BC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))F06(Z,$,X)};Object.defineProperty(BC,"__esModule",{value:!0});U06(dG(),BC)});var fV$=C((vV$)=>{Object.defineProperty(vV$,"__esModule",{value:!0});vV$.version=void 0;vV$.version="3.4.0"});var gV$=C((wW)=>{var w06=wW&&wW.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(wW,"__esModule",{value:!0});wW.NodeTransport=wW.VERSION=void 0;wW.nodeResolveHost=z06;var y6=at(),O06=P0("net"),D$1=P0("tls"),B06=P0("path"),xV$=P0("fs"),D06=w06(P0("dns")),L06=fV$();wW.VERSION=L06.version;var E06="nats.js";class yV${socket;version;lang;yields=[];signal=(0,y6.deferred)();closedNotification=(0,y6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=E06,this.version=wW.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:G}=X||{};try{if(G===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Q=await this.peekInfo();(0,y6.checkOptions)(Q,Z);let{tls_required:Y,tls_available:J}=Q,K=J===!0&&Z.tls!==null;if(!G&&(Y||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(Y&&this.socket.encrypted!==!0)throw y6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Q){let Y=Q;if(!Y)Y=new y6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=Y,K=J==="ECONNREFUSED"?new y6.errors.ConnectionError("connection refused",{cause:Y}):Y;throw this.socket?.destroy(),K}}dial($){let Z=(0,y6.deferred)(),X,G=(0,O06.createConnection)($.port,$.hostname,()=>{Z.resolve(G),G.removeAllListeners()});return G.on("error",(Q)=>{X=Q}),G.on("close",()=>{G.removeAllListeners(),Z.reject(X)}),G.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,y6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let G=y6.DataBuffer.concat(...this.yields),Q=(0,y6.extractProtocolMessage)(G);if(Q!=="")try{let Y=y6.INFO.exec(Q);if(!Y)throw Error("unexpected response from server");let J=JSON.parse(Y[1]);$.resolve(J)}catch(Y){$.reject(Y)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,y6.deferred)();try{if($=(0,B06.resolve)($),!(0,xV$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,xV$.readFile)($,(X,G)=>{if(X)return Z.reject(X);Z.resolve(G)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:G,ca:Q,keyFile:Y,key:J}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(X)$.cert=X;if(Y){let K=await this.loadFile(Y);if(K)$.key=K}else if(J)$.key=J;if(G){let K=await this.loadFile(G);if(K)$.ca=[K]}else if(Q)$.ca=Q;return Promise.resolve($)}catch(K){return Promise.reject(K)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};X=(0,y6.extend)(X,this.options.tls,Q)}catch(Q){return Promise.reject(new y6.errors.ConnectionError(Q.message,{cause:Q}))}let G=(0,y6.deferred)();try{let Q=(0,D$1.connect)($.port,$.hostname,X,()=>{Q.removeAllListeners(),G.resolve(Q)});Q.on("error",(Y)=>{Z=Y}),Q.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{G.reject(Z),Q.removeAllListeners()}),Q.setNoDelay(!0)}catch(Q){G.reject(new y6.errors.ConnectionError(Q.message,{cause:Q}))}return G}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let G=await this.loadClientCerts()||{};Z=(0,y6.extend)(Z,this.options.tls,G)}catch(G){return Promise.reject(new y6.errors.ConnectionError(G.message,{cause:G}))}let X=(0,y6.deferred)();try{let G=(0,D$1.connect)(Z,()=>{G.removeAllListeners(),X.resolve(G)});G.on("error",(Q)=>{$=Q}),G.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!G.authorized)throw G.authorizationError}),G.on("close",()=>{X.reject($),G.removeAllListeners()})}catch(G){X.reject(new y6.errors.ConnectionError(G.message,{cause:G}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,y6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,y6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof D$1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,y6.render)($)}`);let Z=(0,y6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,y6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,y6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}wW.NodeTransport=yV$;function z06($){let Z=(0,y6.deferred)();return D06.default.lookup($,{all:!0},(X,G)=>{if(X){Z.reject(X);return}let Q=[];for(let Y of G)Q.push(Y.address);if(Q.length===0)Q.push($);Z.resolve(Q)}),Z}});var dV$=C((lV$)=>{Object.defineProperty(lV$,"__esModule",{value:!0});lV$.connect=j06;var hV$=gV$(),uV$=at(),cV$=at();function j06($={}){if((0,cV$.hasWsProtocol)($))return Promise.reject(cV$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,uV$.setTransportFactory)({factory:()=>{return new hV$.NodeTransport},dnsResolveFn:hV$.nodeResolveHost}),uV$.NatsConnectionImpl.connect($)}});var mV$=C((MH)=>{var A06=MH&&MH.__createBinding||(Object.create?function($,Z,X,G){if(G===void 0)G=X;var Q=Object.getOwnPropertyDescriptor(Z,X);if(!Q||("get"in Q?!Z.__esModule:Q.writable||Q.configurable))Q={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,G,Q)}:function($,Z,X,G){if(G===void 0)G=X;$[G]=Z[X]}),T06=MH&&MH.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))A06(Z,$,X)};Object.defineProperty(MH,"__esModule",{value:!0});MH.connect=void 0;var R06=dV$();Object.defineProperty(MH,"connect",{enumerable:!0,get:function(){return R06.connect}});T06(at(),MH)});function tV$($){let Z=$?.connectFn??k06,X=null,G=null,Q=!1,Y=!1,J=!1,K=[];function W(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function N(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let U of K)try{U()}catch{}}function H(U){(async()=>{for await(let w of U.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,G=null,N()})().catch(()=>{})}async function F(U,w){let O=0;while(!Y)try{X=await Z({servers:U,timeout:M06,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),G=null,J=!1,H(X),N();return}catch{O++;let D=yG(q06,I06,O-1,2,0.5);await w8(D)}}return{init(U,w){if(Q)return;Q=!0,Y=!1;let O=w?.creds?iV$.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;F(U,O).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!G)G=pV$.jetstream(X);return G},onReady(U){if(K.push(U),W())try{U()}catch{}},async drain(){if(Y=!0,Q=!1,G=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function k06($){return nV$.connect($)}var iV$,nV$,pV$,I06=100,q06=3000,M06=3000;var oV$=B(()=>{L5();iV$=M(gg(),1),nV$=M(mV$(),1),pV$=M(CO(),1)});function L$1($,Z){return`${$}.${Z}`}class E$1{cache;constructor($){this.cache=cy({ttlMs:$?.ttlMs??S06,maxSize:$?.maxSize??V06})}async get($,Z){return this.cache.get(L$1($,Z))??null}async set($,Z,X){this.cache.set(L$1($,Z),X)}async invalidate($,Z){this.cache.delete(L$1($,Z))}teardown(){this.cache.clear()}}var S06=600000,V06=5000;var rV$=()=>{};function AE0($,Z){return`${$}:${Z}`}function z$1($){let Z=cy({ttlMs:$?.ttlMs??C06,maxSize:$?.maxSize??_06}),X=$?.getConnection,G=crypto.randomUUID(),Q=new TextEncoder,Y=new TextDecoder,J=null;function K(W,N){let H=X?.();if(!H)return;try{H.publish(aV$,Q.encode(JSON.stringify({organizationId:W,keyId:N,originId:G})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(W,N){return Z.get(AE0(W,N))},set(W,N,H){Z.set(AE0(W,N),H)},invalidate(W,N){Z.delete(AE0(W,N)),K(W,N)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(aV$),(async()=>{for await(let N of J)try{let H=JSON.parse(Y.decode(N.data));if(H.originId===G)continue;Z.delete(AE0(H.organizationId,H.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var aV$="studio.ai-provider-keys.invalidate",C06=30000,_06=5000;var sV$=()=>{};class j$1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=eV$.map((G)=>Z.subscribe(G));for(let G of this.subscriptions)(async()=>{for await(let Q of G)try{let Y=JSON.parse(X.decode(Q.data));if(Y.originId===this.originId)continue;if(Y.messageId&&this.hasSeen(Y.messageId))continue;this.onCancel?.(Y.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let G of eV$)Z.publish(G,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var eV$;var $C$=B(()=>{eV$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var ZC$=($)=>{let Z;return()=>Z??=$()},P$1,A$1;var XC$=B(()=>{G5();P$1=ZC$(()=>Q8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),A$1=ZC$(()=>Q8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function h06(){return{name:$H,subjects:[`${vw0}.>`],storage:T3.StorageType.File,max_age:f06,max_bytes:y06,max_msgs_per_subject:g06,discard:T3.DiscardPolicy.Old,retention:T3.RetentionPolicy.Limits,duplicate_window:x06,num_replicas:1}}class YC${chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function GC$($){let Z=QC$.headers();for(let[X,G]of Object.entries($))Z.set(X,G);return Z}function d06($,Z){let X=0;return{publish(G,Q,Y,J){G.publish(Q,Y,J?{headers:J}:void 0).catch((K)=>{if(X++,b06().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,K)})},get errorCount(){return X}}}function m06($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class T$1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=h06(),X=await gG(async()=>{let G=this.options.getJetStreamManager?await this.options.getJetStreamManager():await T3.jetstreamManager($);try{await G.streams.info($H),await G.streams.update($H,Z)}catch(Q){if(Q instanceof Error&&Q.message.includes("stream not found"))await G.streams.add(Z);else if(Q instanceof Error&&/can ?not change.*storage|storage type/i.test(Q.message))await G.streams.delete($H),await G.streams.add(Z);else throw Q}return G},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:m06});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,G){let Q=this.js;if(!Q)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let Y=d06(Z,G),J=!1,K=()=>{if(J)return;J=!0;let N=zK$(Z);Q.publish(N.subject,N.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(N)=>{let H=performance.now(),F=Fp0(N,{runId:Z}),U=performance.now()-H;if(P$1().record(U),A$1().add(1,{"org.id":G??"unknown"}),l06?.record(U,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of F)Y.publish(Q,w.subject,w.data,w.headers?GC$(w.headers):void 0)};return(async()=>{let N=$.getReader(),H=0,F=0,U;try{while(!0){let{done:w,value:O}=await N.read();if(w)break;if(W(O),F++,++H>=64)H=0,await new Promise((D)=>setImmediate(D))}}catch(w){U=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(N.releaseLock(),K(),c06)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:Y.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let G=this.js;if(!G)return!1;let Q=performance.now(),Y=Fp0(Z,{runId:$,dedup:X});if(P$1().record(performance.now()-Q),A$1().add(1),Y.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of Y)await G.publish(J.subject,J.data,{...J.headers?{headers:GC$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let G=this.js;if(!G)return!1;let Q=EK$({runId:$,fenceToken:Z,finalSeq:X});return await G.publish(Q.subject,Q.data,{msgID:Q.msgId}),!0}async createTailStream($,Z,X){let G=this.js;if(!G)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Q=X?.deliverPolicy==="new"?T3.DeliverPolicy.New:T3.DeliverPolicy.All,Y=X?.closeOnDone??!1,J=xw($),K;try{K=await(await G.consumers.get($H,{filter_subjects:J,deliver_policy:Q})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let H=gw0({messages:async function*(){try{for await(let D of K)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(bw0()).pipeThrough(fw0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{H.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,K.stop(),H.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await H.read();if(L){O(),D.close();return}let z=E;if(z.kind==="done"){if(Y){O(),D.close();return}continue}D.enqueue(z.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge($H,{filter:xw($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var T3,QC$,v06=($)=>{let Z;return()=>Z??=$()},b06,f06=86400000000000,x06=120000000000,y06=4294967296,g06=500000,u06,c06,l06;var JC$=B(()=>{L5();Up0();hw0();xw0();G5();XC$();T3=M(CO(),1),QC$=M(gg(),1),b06=v06(()=>Q8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));u06=process.env.STREAM_ENCODE_TRACE==="1",c06=process.env.DECOPILOT_STREAM_TRACE==="1";l06=u06?new YC$:null});function TE0($,Z,X,G){if(!G)return!1;return $.emit(Z,l3(X,G.status,{title:G.title??void 0,virtualMcpId:G.virtual_mcp_id??void 0,createdBy:G.created_by??void 0,triggerId:G.trigger_id??null,branch:G.branch??null,createdAt:G.created_at,updatedAt:G.updated_at})),!0}var KC$=B(()=>{O8()});class R$1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}import{readdir as i06,rm as RE0}from"fs/promises";import{join as IE0}from"path";async function qE0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-n06),Z.setUTCHours(0,0,0,0);let X=0;try{let G=await DC($);for(let Q of G)if(/^\d{4}$/.test(Q))X+=await WC$($,Q,Z);else if(!Q.startsWith(".")){let Y=IE0($,Q),J=await DC(Y);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await WC$(Y,W,Z)}if((await DC(Y)).length===0)await RE0(Y,{recursive:!0,force:!0})}}catch(G){console.warn("monitoring retention cleanup failed:",G)}return X}async function WC$($,Z,X){let G=0,Q=IE0($,Z),Y=await DC(Q);for(let K of Y){if(!/^\d{2}$/.test(K))continue;let W=IE0(Q,K),N=await DC(W);for(let F of N){if(!/^\d{2}$/.test(F))continue;let U=new Date(`${Z}-${K}-${F}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let w=IE0(W,F);await RE0(w,{recursive:!0,force:!0}),G++}}if((await DC(W)).length===0)await RE0(W,{recursive:!0,force:!0})}if((await DC(Q)).length===0)await RE0(Q,{recursive:!0,force:!0});return G}async function DC($){try{return(await i06($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var n06=30;var I$1=()=>{};import{DBOS as q$1,SchedulerMode as p06}from"@dbos-inc/dbos-sdk";async function o06(){let $=[iY(),LC(),DW()],Z=0;for(let X of $)try{Z+=await qE0(X)}catch(G){console.error("[monitoring-retention] cleanup failed:",G)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function r06($,Z){await q$1.runStep(()=>o06(),{name:"monitoringRetention"})}function HC$(){if(NC$)return;NC$=!0;let $=q$1.registerWorkflow(r06,{name:"monitoringRetentionWorkflow"});q$1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:t06,mode:p06.ExactlyOncePerIntervalWhenActive})}var t06="23 4 * * *",NC$=!1;var FC$=B(()=>{hG();I$1()});function UC$($){return async(Z,X)=>{let G=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!G)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Q=await tU.create();Q.auth.user={id:X,role:G.role},Q.organization={id:G.orgId,slug:G.orgSlug,name:G.orgName};let Y=await cu0($.db,Z,G.role);return Q.boundAuth=uu0({auth:Q.authInstance,headers:new Headers,role:G.role,permissions:Y,userId:X}),Q.access=new MD(X,void 0,Q.boundAuth,G.role,"self"),u60(Q,{id:G.orgId,slug:G.orgSlug}),Q}}var wC$=B(()=>{kD();Gi()});function a06(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function e06(){for(let $ of s06)$()}function OC$($){let Z=[...M$1.logs,$];M$1={...M$1,logs:Z.length>500?Z.slice(-500):Z},e06()}function k$1(){return $16}var M$1,s06,$16=!1;var S$1=B(()=>{M$1=a06(),s06=new Set});import{EventEmitter as Z16}from"events";var V$1;var BC$=B(()=>{S$1();V$1=new Z16;V$1.on("request",($)=>{OC$($)})});function DC$(){return async($,Z)=>{let X=Date.now(),G=$.req.method,Q=$.req.path;if(Q==="/api/auth/get-session"||Q.includes("favicon")){await Z();return}let Y="",J=!1;if(Q.startsWith("/mcp")&&G==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let w=Ug(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>Ug(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";Y=`${i6.tool}${w}${i6.dim}(${L})${i6.reset}`}else if(U.method)Y=`${i6.dim}${Ug(U.method)}${i6.reset}`}}catch{}}let K=Ug(Q);if(Q.startsWith("/mcp/conn_")){let H=Q.split("/")[2]??"";K=`/mcp/${i6.mcp}${Ug(H.slice(0,12))}\u2026${i6.reset}`}else if(Q==="/mcp")K=`${i6.mcp}/mcp${i6.reset}`;else if(Q==="/mcp/registry")K=`${i6.mcp}/mcp/registry${i6.reset}`;let W=G16(G),N=J?"\u25C0":"\u2190";if(!k$1())console.log(`${i6.dim}${N}${i6.reset} ${W}${G}${i6.reset} ${K}${Y?` ${Y}`:""}`);try{await Z()}finally{let H=Date.now()-X,F=$.res.status,U=X16(F),w=H<1000?`${H}ms`:`${(H/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!k$1())console.log(`${i6.dim}${O}${i6.reset} ${W}${G}${i6.reset} ${K}${Y?` ${Y}`:""} ${U}${F}${i6.reset} ${i6.duration}${w}${i6.reset}`);V$1.emit("request",{method:G,path:Ug(Q),status:F,duration:H,timestamp:new Date})}}}var i6,X16=($)=>{if($>=500)return i6.serverError;if($>=400)return i6.clientError;if($>=300)return i6.redirect;return i6.ok},G16=($)=>{return i6[$]||i6.reset},Ug=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var LC$=B(()=>{S$1();BC$();i6={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as PC$}from"crypto";import{mkdir as Q16,readdir as Y16,rm as EC$,stat as AC$}from"fs/promises";import{join as _$1,relative as J16}from"path";import{z as D$}from"zod";function RC$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return _$1(K16,Z)}function IC$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function C$1($,Z){let X=RC$($),G=IC$(Z);return _$1(X,G)}function W16($,Z,X,G){let Q=n0().encryptionKey||"dev-secret",Y=`${$}:${Z}:${X}:${G}`;return PC$("sha256",Q).update(Y).digest("hex")}function jC$($,Z,X,G,Q){let Y=Math.floor(Date.now()/1000)+G,J=W16(Z,X,Y,Q),K=new URL(`/api/dev-assets/${Z}/${IC$(X)}`,$);return K.searchParams.set("expires",Y.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Q),K.toString()}function qC$($,Z,X){let G=`${$}:${Z.getTime()}:${X}`;return`"${PC$("md5","etag").update(G).digest("hex")}"`}async function MC$($,Z,X,G,Q){try{let Y=await Y16($,{withFileTypes:!0});for(let J of Y){let K=_$1($,J.name),N=J16(Z,K).replace(/\\/g,"/");if(X&&!N.startsWith(X))continue;if(J.isDirectory())if(G){let H=N+"/";if(!X||H.startsWith(X)){if(!(X?N.slice(X.length):N).includes("/"))Q.commonPrefixes.add(H)}}else await MC$(K,Z,X,G,Q);else if(J.isFile()){if(G&&X){let H=N.slice(X.length);if(H.includes(G)){let F=H.indexOf(G),U=X+H.slice(0,F+1);Q.commonPrefixes.add(U);continue}}try{let H=await AC$(K);Q.objects.push({key:N,size:H.size,lastModified:H.mtime.toISOString(),etag:qC$(K,H.mtime,H.size)})}catch{}}}}catch{}}function kC$($,Z){let G=e($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:D$.object({prefix:D$.string().optional(),maxKeys:D$.number().optional().default(1000),continuationToken:D$.string().optional(),delimiter:D$.string().optional()}),outputSchema:D$.object({objects:D$.array(D$.object({key:D$.string(),size:D$.number(),lastModified:D$.string(),etag:D$.string()})),nextContinuationToken:D$.string().optional(),isTruncated:D$.boolean(),commonPrefixes:D$.array(D$.string()).optional()}),handler:async(Q)=>{let Y=Q,J=Y.prefix||"",K=Y.maxKeys??1000,W=Y.delimiter,N=Y.continuationToken,H=RC$(G);await Q16(H,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await MC$(H,H,J,W,F),F.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(N){if(U=F.objects.findIndex((L)=>L.key>N),U===-1)U=F.objects.length}let w=F.objects.slice(U,U+K),O=U+K<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:D$.object({key:D$.string()}),outputSchema:D$.object({contentType:D$.string().optional(),contentLength:D$.number(),lastModified:D$.string(),etag:D$.string(),metadata:D$.record(D$.string(),D$.string()).optional()}),handler:async(Q)=>{let Y=Q,J=C$1(G,Y.key),K=await AC$(J);return{contentType:M01(Y.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:qC$(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:D$.object({key:D$.string(),expiresIn:D$.number().optional()}),outputSchema:D$.object({url:D$.string(),expiresIn:D$.number()}),handler:async(Q)=>{let Y=Q,J=Y.expiresIn??zC$;return{url:jC$(Z,G,Y.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:D$.object({key:D$.string(),expiresIn:D$.number().optional(),contentType:D$.string().optional()}),outputSchema:D$.object({url:D$.string(),expiresIn:D$.number()}),handler:async(Q)=>{let Y=Q,J=Y.expiresIn??zC$;return{url:jC$(Z,G,Y.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:D$.object({key:D$.string()}),outputSchema:D$.object({success:D$.boolean(),key:D$.string()}),handler:async(Q)=>{let Y=Q,J=C$1(G,Y.key);try{return await EC$(J),{success:!0,key:Y.key}}catch{return{success:!1,key:Y.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:D$.object({keys:D$.array(D$.string()).max(1000)}),outputSchema:D$.object({deleted:D$.array(D$.string()),errors:D$.array(D$.object({key:D$.string(),message:D$.string()}))}),handler:async(Q)=>{let Y=Q,J=[],K=[];return await Promise.all(Y.keys.map(async(W)=>{let N=C$1(G,W);try{await EC$(N),J.push(W)}catch(H){K.push({key:W,message:H instanceof Error?H.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function v$1($,Z,X){let G=kC$(Z,X),Q=new FN({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:K5});for(let J of G){let K="shape"in J.inputSchema?J.inputSchema.shape:D$.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:D$.object({}).shape;Q.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(N)=>{try{let H=await J.handler(N);return{content:[{type:"text",text:JSON.stringify(H)}],structuredContent:H}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}})}let Y=new MQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Q.connect(Y),iK(Q,Y,$,"mcp:dev-assets")}async function SC$($,Z,X,G){let Y=kC$(X,G).find((J)=>J.name===$);if(!Y)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await Y.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var K16="./data/assets",zC$=3600,TC$,VC$;var CC$=B(()=>{f$();Xp();i8();hc();nx();jX();gL0();TC$=new L1;TC$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),G=`${X.protocol}//${X.host}`;return v$1($.req.raw,Z,G)});VC$=TC$});var _C$={};N4(_C$,{mountDevRoutes:()=>N16});function N16($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(G)=>{let Q=G.get("studioContext"),Y=new URL(G.req.url),J=`${Y.protocol}//${Y.host}`;return v$1(G.req.raw,Q,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(G)=>{let Q=G.get("studioContext"),Y=new URL(G.req.url),J=`${Y.protocol}//${Y.host}`,K=G.req.param("toolName");if(!K)return G.json({error:"Missing tool name"},400);let W=await G.req.json(),N=await SC$(K,W,Q,J);if(N.isError)return G.json(N.content,500);return G.json(N.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",VC$);let X=new L1;X.use("*",P3({mountPath:"/api/dev-assets"})),X.route("/",yL0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var vC$=B(()=>{i8();z01();gL0();CC$()});import{sql as H16}from"kysely";import{randomUUID as bC$}from"crypto";import{z as F16}from"zod";async function w16($){let Z=new Date().toISOString(),X=bC$(),G=x4.SELF($.organizationId),Q="registry.publish_request.created",Y={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:G,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(Y),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((K)=>K.or([K("publisher","is",null),K("publisher","=",G)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:bC$(),event_id:X,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await H16`SELECT
2722
2722
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.170.4",
3
+ "version": "4.170.6",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as L,F as H,j as U}from"./index-G3dU9NY2.js";import{a as O,g as $,s as E}from"./automation-runs-DX59zSiP.js";import{s as k,u as B}from"./use-mcp-client-BfFdajzI.js";import{b as V,c as Y}from"./use-mcp-tools-CM9gHBUb.js";import{u as q}from"./index-DZYakX-m.js";import{c as G}from"./monaco-editor-B1_6N7uk.js";import{g as F,M as K,a as D}from"./index-BsHsC9SD.js";import{a as W,u as z}from"./chat-context-BmWOwP1z.js";import{u as J}from"./shell-layout-CRUVQFX0.js";import{O as Q}from"./tab-id-BBg_TxqQ.js";import"./select-DJjRPXi3.js";import"./tooltip-wzItPbXP.js";import"./Check-Bz0gt91y.js";import"./ChevronDown-BPNK4USg.js";import"./ChevronUp-DSh7qBtT.js";import"./useInfiniteQuery-CdZJzZnV.js";import"./use-infinite-scroll-2t_7e6aG.js";import"./use-connection-CzI1Qk4q.js";import"./use-virtual-mcp-wMWmRJU_.js";import"./card-BLCWOYJ0.js";import"./sidebar-CVbSUyOG.js";import"./LayoutLeft-DzMObfnL.js";import"./use-mobile-1hg5p0vG.js";import"./X-BxkKXXOZ.js";import"./table-BGswKiit.js";import"./empty-state-B0LFlf6s.js";import"./use-members-Csjm1RBN.js";import"./use-org-auth-client-CgvL9SL_.js";import"./use-clock-tick-BRxIqD8m.js";import"./AlertCircle-Dffzq_ZN.js";import"./CheckCircle-C7yM7Zap.js";import"./DotsVertical-DKjPE2YG.js";import"./agent-icon-y0K6Ib_X.js";import"./Tool01-BUsWsGW7.js";import"./ArrowUp-CGvV5PLf.js";import"./Settings02-BgmECssu.js";import"./Tool02-D7nTNwRx.js";import"./XCircle-CL1Cfcyf.js";import"./ArrowUpRight-CbqzKWGP.js";import"./TrendUp01-D4vnUcIt.js";import"./ZapSquare-DSuoJsUU.js";import"./Users03-ofglNxfo.js";import"./ChevronRight-C62Sp-a-.js";import"./Stars02-DgSJcSLO.js";import"./Copy01-BM2OefYX.js";import"./CpuChip01-BIyeXmJ5.js";import"./Eye-X4L6l8Qy.js";import"./FilterLines-Cx7rDrHt.js";import"./Star01-Dnh_ljc8.js";import"./Palette-DuPAEn5N.js";import"./SwitchHorizontal01-wBoObRHQ.js";import"./HardDrive-C14s2ieo.js";import"./Key01-Hm2Fox-H.js";import"./LinkExternal01-CXSRYE31.js";import"./LogOut01-DJIyUohZ.js";import"./Monitor01-Dsk5GgOz.js";import"./Sun-Cs4p_jLH.js";import"./Play-4eS81vvy.js";import"./Plus-DbIhBwbJ.js";import"./SearchLg-Cjqx-scg.js";import"./SearchMd-Dc987v6K.js";import"./Shield01-ili7WnRz.js";import"./Stars01-DKLhshOO.js";import"./Trash01-RNrAYYMt.js";import"./Upload01-BjwlqYSK.js";import"./User01-CRoNKvA4.js";import"./Users01-DTq7O8jZ.js";import"./XClose-BAUvtYrU.js";import"./Zap-D9pVbd-F.js";import"./use-automations-CgcU8g4T.js";import"./studio-tools-Cg1eFuyV.js";import"./useSuspenseInfiniteQuery-Ccfuu0Qp.js";import"./avatar-CSGgeUb4.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-DPyuHT9t.js";import"./calendar-C2AYQnKw.js";import"./dialog-CxOlfZ0Y.js";import"./hooks-C1veRuyx.js";import"./decopilot-sse-pool-BSQpNnmR.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./integration-icon-COkVcLO8.js";import"./use-navigate-to-agent-BTjZAjII.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-CMNHajTI.js";import"./form-TfFmu9r0.js";import"./label-CwC0MQ1h.js";import"./input-CjZuYgEH.js";import"./spinner-CPF9AG_E.js";import"./auth-1D6Ff8lo.js";import"./drawer-aoTTmB0B.js";import"./collection-search-L2h4er6w.js";import"./index-CGw51Y2l.js";import"./get-initials-D-f_fDFw.js";import"./popover-B6-VOpEs.js";import"./dropdown-menu-Ii93040I.js";import"./github-repo-picker-C36C95BN.js";import"./use-debounced-value-D-F6wGFO.js";import"./authenticate-and-persist-oauth-DogWRHIL.js";import"./mcp-oauth-CsRO8hOm.js";import"./extract-connection-data-BwPftCZb.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CAXumITS.js";import"./use-decopilot-events-DRoXwozU.js";import"./use-tags-BmaFwLb5.js";import"./skeleton-BdC_6P4Y.js";import"./use-organization-settings-BmCj2qM1.js";import"./command-DEn0LVGV.js";import"./index-Maun0gdz.js";import"./companions-core-oYWNzm-8.js";import"./tabs-BAzjvT7g.js";import"./toggle-group-DoUx6q98.js";import"./use-deco-credits-Dk64TYT8.js";import"./alert-dialog-llEz0JAi.js";import"./toolbar-C60rCKCk.js";import"./agent-capabilities-cXfbMfjV.js";import"./connection-card-CLTDSPZY.js";import"./use-registry-connections-xKigbUiK.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./textarea-DWZEefhT.js";import"./connection-form-helpers-DSg3kPpS.js";import"./collection-tabs-DMqJXOtl.js";import"./badge-X0L4i6oj.js";import"./use-ai-providers-DwIh41lG.js";import"./select-model-BXNjZx2L.js";import"./checkbox-BRhGIRoW.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-BAc6L2-C.js";import"./use-is-desktop-app-BNujXJc_.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-DaqnGQEb.js";import"./deco-site-production-url-CaKZ7xBn.js";import"./use-capability-B6FhR7iO.js";import"./pt-BR-CLy76QW2.js";import"./use-mcp-auth-status-Cq_mr41q.js";import"./use-debounced-autosave-B2t20Mns.js";import"./index-C1OQ0RhL.js";import"./search-input-99jVvVXG.js";import"./switch-CAPZKffc.js";import"./use-secrets-8u3VKT8C.js";import"./useQueries-5qapwdoD.js";import"./use-file-configs-ka2k8fDd.js";import"./automation-list-row-Dadk4eLW.js";import"./required-auth-layout-Beg15UCY.js";import"./use-org-sso-CCqRgiHq.js";const X="studio://navigate";function Z(M){const[t]=M;if(M.length!==1||t?.type!=="resource_link"||!t.uri.startsWith(X))return{isNavigate:!1};let o=null;try{o=new URL(t.uri).searchParams.get("main")}catch{}return{isNavigate:!0,tab:o&&Q.has(o)?o:null}}const tt={};function ot(M){const t=L.c(38),{client:o,resourceURI:I,tool:e,connectionId:p,orgId:a,args:v}=M,{sendMessage:C}=W(),{setAppContext:f,clearAppContext:l}=z(),{openSidePanel:g,openTab:s}=J(),i=`${p}:${e.name}`;let c;t[0]!==s?(c=x=>x==="inline"?(s("0"),"inline"):"fullscreen",t[0]=s,t[1]=c):c=t[1];const m=c,n=v??tt;let u;t[2]!==o||t[3]!==e.name||t[4]!==n?(u={client:o,toolName:e.name,toolArguments:n},t[2]=o,t[3]=e.name,t[4]=n,t[5]=u):u=t[5];const{data:r}=Y(u);let h;if(t[6]!==e._meta||t[7]!==e.name){const x=$(e._meta);h=E(e.name,x),t[6]=e._meta,t[7]=e.name,t[8]=h}else h=t[8];const A=h;let d;t[9]!==e.inputSchema?(d=e.inputSchema??{type:"object"},t[9]=e.inputSchema,t[10]=d):d=t[10];let R;t[11]!==A||t[12]!==d||t[13]!==e?(R={...e,name:A,inputSchema:d},t[11]=A,t[12]=d,t[13]=e,t[14]=R):R=t[14];const b=R;let _;t[15]!==g||t[16]!==s||t[17]!==C?(_=x=>{const j=Z(x.content);if(j.isNavigate){j.tab&&s(j.tab);return}const w=G(x.content);w.content.length>0&&(g("chat"),C({tiptapDoc:w}))},t[15]=g,t[16]=s,t[17]=C,t[18]=_):_=t[18];const y=_;let P;t[19]!==b?(P={tool:b},t[19]=b,t[20]=P):P=t[20];let N;t[21]!==f||t[22]!==i?(N=x=>f(i,x),t[21]=f,t[22]=i,t[23]=N):N=t[23];let T;t[24]!==l||t[25]!==i?(T=()=>l(i),t[24]=l,t[25]=i,t[26]=T):T=t[26];let S;return t[27]!==o||t[28]!==y||t[29]!==m||t[30]!==a||t[31]!==I||t[32]!==P||t[33]!==N||t[34]!==T||t[35]!==n||t[36]!==r?(S=U.jsx(K,{resourceURI:I,orgId:a,toolInfo:P,toolInput:n,toolResult:r,displayMode:"fullscreen",minHeight:D.fullscreen.minHeight,maxHeight:D.fullscreen.maxHeight,client:o,onMessage:y,onUpdateModelContext:N,onTeardown:T,onRequestDisplayMode:m,className:"h-full"}),t[27]=o,t[28]=y,t[29]=m,t[30]=a,t[31]=I,t[32]=P,t[33]=N,t[34]=T,t[35]=n,t[36]=r,t[37]=S):S=t[37],S}function Ve(M){const t=L.c(24),{connectionId:o,toolName:I,args:e}=M,{org:p}=H(),a=q();let v;t[0]!==o||t[1]!==a?(v=k(o)&&a.vmEntry?.sandboxProviderKind==="user-desktop"&&a.previewUrl?`${a.previewUrl.replace(/\/+$/,"")}/api/mcp`:void 0,t[0]=o,t[1]=a,t[2]=v):v=t[2];const C=v;let f;t[3]!==o||t[4]!==C||t[5]!==p.id||t[6]!==p.slug?(f={connectionId:o,orgId:p.id,orgSlug:p.slug,mcpUrl:C},t[3]=o,t[4]=C,t[5]=p.id,t[6]=p.slug,t[7]=f):f=t[7];const l=B(f);let g;t[8]!==l?(g={client:l},t[8]=l,t[9]=g):g=t[9];const{data:s}=V(g);let i,c,m;t[10]!==I||t[11]!==s.tools?(i=O(decodeURIComponent(I)),m=s.tools.find(r=>r.name===i)??s.tools.find(r=>{const h=$(r._meta);if(!h)return!1;if(E(r.name,h)===i)return!0;const d=E(i,h);return d!==i&&r.name===d}),c=m?._meta?F(m._meta):void 0,t[10]=I,t[11]=s.tools,t[12]=i,t[13]=c,t[14]=m):(i=t[12],c=t[13],m=t[14]);const n=c;if(!m||!n){let r;return t[15]!==i?(r=U.jsx("div",{className:"flex items-center justify-center h-full w-full",children:U.jsxs("p",{className:"text-sm text-muted-foreground",children:['Tool "',i,'" not found or has no UI']})}),t[15]=i,t[16]=r):r=t[16],r}let u;return t[17]!==e||t[18]!==l||t[19]!==o||t[20]!==p.id||t[21]!==n||t[22]!==m?(u=U.jsx(ot,{client:l,resourceURI:n,tool:m,connectionId:o,orgId:p.id,args:e}),t[17]=e,t[18]=l,t[19]=o,t[20]=p.id,t[21]=n,t[22]=m,t[23]=u):u=t[23],u}export{Ve as AppViewContent};
@@ -1 +0,0 @@
1
- import{c as L,b as A,j as r}from"./index-G3dU9NY2.js";import{I as O}from"./input-CjZuYgEH.js";import{L as F}from"./label-CwC0MQ1h.js";import{S as R,a as z,b as V,c as D,d as J}from"./select-DJjRPXi3.js";import{T as M}from"./textarea-DWZEefhT.js";import{O as Q,P as Y,Q as $,I as q,T as G,Y as H}from"./index-DZYakX-m.js";import{s as I}from"./primitives-BZLCjd7O.js";import{u as U}from"./use-autosave-D-c12Ygv.js";import"./tooltip-wzItPbXP.js";import"./Check-Bz0gt91y.js";import"./ChevronDown-BPNK4USg.js";import"./ChevronUp-DSh7qBtT.js";import"./ArrowUp-CGvV5PLf.js";import"./chat-context-BmWOwP1z.js";import"./tab-id-BBg_TxqQ.js";import"./dialog-CxOlfZ0Y.js";import"./X-BxkKXXOZ.js";import"./Copy01-BM2OefYX.js";import"./hooks-C1veRuyx.js";import"./use-mcp-client-BfFdajzI.js";import"./auth-1D6Ff8lo.js";import"./decopilot-sse-pool-BSQpNnmR.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-wMWmRJU_.js";import"./use-ai-providers-DwIh41lG.js";import"./studio-tools-Cg1eFuyV.js";import"./use-decopilot-events-DRoXwozU.js";import"./use-organization-settings-BmCj2qM1.js";import"./automation-runs-DX59zSiP.js";import"./useInfiniteQuery-CdZJzZnV.js";import"./use-infinite-scroll-2t_7e6aG.js";import"./use-connection-CzI1Qk4q.js";import"./card-BLCWOYJ0.js";import"./sidebar-CVbSUyOG.js";import"./LayoutLeft-DzMObfnL.js";import"./use-mobile-1hg5p0vG.js";import"./table-BGswKiit.js";import"./empty-state-B0LFlf6s.js";import"./use-members-Csjm1RBN.js";import"./use-org-auth-client-CgvL9SL_.js";import"./use-clock-tick-BRxIqD8m.js";import"./AlertCircle-Dffzq_ZN.js";import"./CheckCircle-C7yM7Zap.js";import"./DotsVertical-DKjPE2YG.js";import"./agent-icon-y0K6Ib_X.js";import"./Tool01-BUsWsGW7.js";import"./Settings02-BgmECssu.js";import"./Tool02-D7nTNwRx.js";import"./XCircle-CL1Cfcyf.js";import"./ArrowUpRight-CbqzKWGP.js";import"./TrendUp01-D4vnUcIt.js";import"./ZapSquare-DSuoJsUU.js";import"./Users03-ofglNxfo.js";import"./ChevronRight-C62Sp-a-.js";import"./Stars02-DgSJcSLO.js";import"./CpuChip01-BIyeXmJ5.js";import"./Eye-X4L6l8Qy.js";import"./FilterLines-Cx7rDrHt.js";import"./Star01-Dnh_ljc8.js";import"./Palette-DuPAEn5N.js";import"./SwitchHorizontal01-wBoObRHQ.js";import"./HardDrive-C14s2ieo.js";import"./Key01-Hm2Fox-H.js";import"./LinkExternal01-CXSRYE31.js";import"./LogOut01-DJIyUohZ.js";import"./Monitor01-Dsk5GgOz.js";import"./Sun-Cs4p_jLH.js";import"./Play-4eS81vvy.js";import"./Plus-DbIhBwbJ.js";import"./SearchLg-Cjqx-scg.js";import"./SearchMd-Dc987v6K.js";import"./Shield01-ili7WnRz.js";import"./Stars01-DKLhshOO.js";import"./Trash01-RNrAYYMt.js";import"./Upload01-BjwlqYSK.js";import"./User01-CRoNKvA4.js";import"./Users01-DTq7O8jZ.js";import"./XClose-BAUvtYrU.js";import"./Zap-D9pVbd-F.js";import"./use-automations-CgcU8g4T.js";import"./useSuspenseInfiniteQuery-Ccfuu0Qp.js";import"./avatar-CSGgeUb4.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-DPyuHT9t.js";import"./calendar-C2AYQnKw.js";import"./monaco-editor-B1_6N7uk.js";import"./spinner-CPF9AG_E.js";import"./index-BsHsC9SD.js";import"./shell-layout-CRUVQFX0.js";import"./required-auth-layout-Beg15UCY.js";import"./use-org-sso-CCqRgiHq.js";import"./integration-icon-COkVcLO8.js";import"./use-navigate-to-agent-BTjZAjII.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-CMNHajTI.js";import"./form-TfFmu9r0.js";import"./drawer-aoTTmB0B.js";import"./collection-search-L2h4er6w.js";import"./index-CGw51Y2l.js";import"./get-initials-D-f_fDFw.js";import"./popover-B6-VOpEs.js";import"./dropdown-menu-Ii93040I.js";import"./github-repo-picker-C36C95BN.js";import"./use-debounced-value-D-F6wGFO.js";import"./authenticate-and-persist-oauth-DogWRHIL.js";import"./mcp-oauth-CsRO8hOm.js";import"./use-mcp-tools-CM9gHBUb.js";import"./extract-connection-data-BwPftCZb.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CAXumITS.js";import"./use-tags-BmaFwLb5.js";import"./skeleton-BdC_6P4Y.js";import"./command-DEn0LVGV.js";import"./index-Maun0gdz.js";import"./companions-core-oYWNzm-8.js";import"./tabs-BAzjvT7g.js";import"./toggle-group-DoUx6q98.js";import"./use-deco-credits-Dk64TYT8.js";import"./alert-dialog-llEz0JAi.js";import"./toolbar-C60rCKCk.js";import"./agent-capabilities-cXfbMfjV.js";import"./connection-card-CLTDSPZY.js";import"./use-registry-connections-xKigbUiK.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-DSg3kPpS.js";import"./collection-tabs-DMqJXOtl.js";import"./badge-X0L4i6oj.js";import"./select-model-BXNjZx2L.js";import"./checkbox-BRhGIRoW.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-BAc6L2-C.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-DaqnGQEb.js";import"./deco-site-production-url-CaKZ7xBn.js";import"./use-capability-B6FhR7iO.js";import"./pt-BR-CLy76QW2.js";import"./use-mcp-auth-status-Cq_mr41q.js";import"./use-debounced-autosave-B2t20Mns.js";import"./index-C1OQ0RhL.js";import"./search-input-99jVvVXG.js";import"./switch-CAPZKffc.js";import"./use-secrets-8u3VKT8C.js";import"./useQueries-5qapwdoD.js";import"./use-file-configs-ka2k8fDd.js";import"./automation-list-row-Dadk4eLW.js";const W={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},X={authors:"sandbox.recordEditor.titleAuthor"};function Dr(C){const t=L.c(40),{orgSlug:K,virtualMcpId:h,branch:w,kind:a,blockKey:g,block:P}=C,i=A(),f=Q(h);let b;t[0]!==w||t[1]!==K||t[2]!==f||t[3]!==h?(b={orgSlug:K,virtualMcpId:h,branch:w,packagePath:f},t[0]=w,t[1]=K,t[2]=f,t[3]=h,t[4]=b):b=t[4];const p=Y(b);let k;t[5]!==P||t[6]!==a?(k=$(P,a),t[5]=P,t[6]=a,t[7]=k):k=t[7];const B=k;let v;t[8]!==g||t[9]!==a||t[10]!==p?(v=l=>{p.mutate({blockKey:g,data:G(g,a,l)})},t[8]=g,t[9]=a,t[10]=p,t[11]=v):v=t[11];const[e,S]=U(B,v);let j;t[12]!==e||t[13]!==S?(j=(l,o)=>S({...e,[l]:o}),t[12]=e,t[13]=S,t[14]=j):j=t[14];const s=j,T=X[a];let n;t[15]!==i||t[16]!==T?(n=i(T),t[15]=i,t[16]=T,t[17]=n):n=t[17];let c;t[18]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[18]=n,t[19]=c):c=t[19];let d;t[20]!==p.isError||t[21]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[20]=p.isError,t[21]=p.isPending,t[22]=d):d=t[22];let y;t[23]!==c||t[24]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[23]=c,t[24]=d,t[25]=y):y=t[25];const N=W[a];let x;if(t[26]!==e||t[27]!==s||t[28]!==i||t[29]!==N){let l;t[31]!==e||t[32]!==s||t[33]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:I(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(z,{id:o.key,className:"h-10 w-full",children:r.jsx(V,{placeholder:i(o.labelKey)})}),r.jsx(D,{children:(o.options??[]).map(m=>r.jsx(J,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(M,{id:o.key,value:I(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(O,{id:o.key,value:I(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[31]=e,t[32]=s,t[33]=i,t[34]=l):l=t[34],x=N.map(l),t[26]=e,t[27]=s,t[28]=i,t[29]=N,t[30]=x}else x=t[30];let u;t[35]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[35]=x,t[36]=u):u=t[36];let E;return t[37]!==y||t[38]!==u?(E=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[37]=y,t[38]=u,t[39]=E):E=t[39],E}export{Dr as RecordEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-BUIH0qyx.js","assets/index-G3dU9NY2.js","assets/index-Cw0lZSdB.css","assets/Tool02-D7nTNwRx.js","assets/CheckCircle-C7yM7Zap.js","assets/Settings02-BgmECssu.js","assets/use-mcp-client-BfFdajzI.js","assets/auth-1D6Ff8lo.js","assets/useInfiniteQuery-CdZJzZnV.js","assets/use-infinite-scroll-2t_7e6aG.js","assets/studio-tools-Cg1eFuyV.js","assets/badge-X0L4i6oj.js","assets/input-CjZuYgEH.js","assets/dropdown-menu-Ii93040I.js","assets/Check-Bz0gt91y.js","assets/ChevronRight-C62Sp-a-.js","assets/DotsVertical-DKjPE2YG.js","assets/table-BGswKiit.js","assets/toggle-group-DoUx6q98.js","assets/use-view-mode-DpOP6bx5.js","assets/use-mobile-1hg5p0vG.js","assets/FilterLines-Cx7rDrHt.js","assets/SearchMd-Dc987v6K.js","assets/dialog-CxOlfZ0Y.js","assets/X-BxkKXXOZ.js","assets/AlertCircle-Dffzq_ZN.js","assets/Upload01-BjwlqYSK.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-llEz0JAi.js","assets/card-BLCWOYJ0.js","assets/Trash01-RNrAYYMt.js","assets/label-CwC0MQ1h.js","assets/select-DJjRPXi3.js","assets/tooltip-wzItPbXP.js","assets/ChevronDown-BPNK4USg.js","assets/ChevronUp-DSh7qBtT.js","assets/switch-CAPZKffc.js","assets/textarea-DWZEefhT.js","assets/XCircle-CL1Cfcyf.js","assets/checkbox-BRhGIRoW.js","assets/Eye-X4L6l8Qy.js","assets/LinkExternal01-CXSRYE31.js","assets/use-copy-DPyuHT9t.js","assets/Copy01-BM2OefYX.js","assets/Key01-Hm2Fox-H.js","assets/Plus-DbIhBwbJ.js","assets/mcp-oauth-CsRO8hOm.js","assets/Play-4eS81vvy.js"])))=>i.map(i=>d[i]);
2
- import{c as i,j as e,r as s,k as a,aG as o}from"./index-G3dU9NY2.js";import{R as m}from"./require-capability-CSnMNUTJ.js";import"./use-capability-B6FhR7iO.js";import"./access-gate-C2OrVvkI.js";import"./capability-load-error-DofyvwMH.js";const n=s.lazy(()=>o(()=>import("./registry-layout-BUIH0qyx.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47])));function f(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(m,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(n,{})})}),r[0]=t):t=r[0],t}export{f as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-BUIH0qyx.js","assets/index-G3dU9NY2.js","assets/index-Cw0lZSdB.css","assets/Tool02-D7nTNwRx.js","assets/CheckCircle-C7yM7Zap.js","assets/Settings02-BgmECssu.js","assets/use-mcp-client-BfFdajzI.js","assets/auth-1D6Ff8lo.js","assets/useInfiniteQuery-CdZJzZnV.js","assets/use-infinite-scroll-2t_7e6aG.js","assets/studio-tools-Cg1eFuyV.js","assets/badge-X0L4i6oj.js","assets/input-CjZuYgEH.js","assets/dropdown-menu-Ii93040I.js","assets/Check-Bz0gt91y.js","assets/ChevronRight-C62Sp-a-.js","assets/DotsVertical-DKjPE2YG.js","assets/table-BGswKiit.js","assets/toggle-group-DoUx6q98.js","assets/use-view-mode-DpOP6bx5.js","assets/use-mobile-1hg5p0vG.js","assets/FilterLines-Cx7rDrHt.js","assets/SearchMd-Dc987v6K.js","assets/dialog-CxOlfZ0Y.js","assets/X-BxkKXXOZ.js","assets/AlertCircle-Dffzq_ZN.js","assets/Upload01-BjwlqYSK.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-llEz0JAi.js","assets/card-BLCWOYJ0.js","assets/Trash01-RNrAYYMt.js","assets/label-CwC0MQ1h.js","assets/select-DJjRPXi3.js","assets/tooltip-wzItPbXP.js","assets/ChevronDown-BPNK4USg.js","assets/ChevronUp-DSh7qBtT.js","assets/switch-CAPZKffc.js","assets/textarea-DWZEefhT.js","assets/XCircle-CL1Cfcyf.js","assets/checkbox-BRhGIRoW.js","assets/Eye-X4L6l8Qy.js","assets/LinkExternal01-CXSRYE31.js","assets/use-copy-DPyuHT9t.js","assets/Copy01-BM2OefYX.js","assets/Key01-Hm2Fox-H.js","assets/Plus-DbIhBwbJ.js","assets/mcp-oauth-CsRO8hOm.js","assets/Play-4eS81vvy.js"])))=>i.map(i=>d[i]);
2
- import{c as m,d as n,f as c,j as t,k as f,r as l,aG as p}from"./index-G3dU9NY2.js";import{R as u}from"./require-capability-CSnMNUTJ.js";import"./use-capability-B6FhR7iO.js";import"./access-gate-C2OrVvkI.js";import"./capability-load-error-DofyvwMH.js";const g=l.lazy(()=>p(()=>import("./registry-layout-BUIH0qyx.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47])));function j(){const e=m.c(5),i=n();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=c(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{j as default};
@@ -1 +0,0 @@
1
- import{I as u}from"./use-infinite-scroll-2t_7e6aG.js";import{e4 as i}from"./index-G3dU9NY2.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./use-infinite-scroll-2t_7e6aG.js";import{e4 as u,X as n}from"./index-G3dU9NY2.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};