decocms 4.139.23 → 4.140.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/client/assets/{AlertCircle-DcC27WmA.js → AlertCircle-U27MiVyx.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DsfzIYIp.js → AreaChart-CN3zPnIj.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-CdeTFRe8.js → ArrowUp-BjCNmTaH.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-kIZaH3BQ.js → ArrowUpRight-6AGN5tX_.js} +1 -1
  5. package/dist/client/assets/{Check-RPsONqoi.js → Check-D5nk6Pa9.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-VwoQIY3x.js → CheckCircle-BnMuZrK6.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-CvsGy9_V.js → ChevronDown-oGxXdCrM.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-COrmV1RX.js → ChevronRight-DckgsWNg.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-t2K_HYRx.js → ChevronUp-0dU6sK5d.js} +1 -1
  10. package/dist/client/assets/{Copy01-dUIi2eZN.js → Copy01-SXxZRwKy.js} +1 -1
  11. package/dist/client/assets/{DotsVertical-B5m6mJwx.js → DotsVertical-BdZ38XPK.js} +1 -1
  12. package/dist/client/assets/{Eye-CPyHsNx9.js → Eye-_vabTy2v.js} +1 -1
  13. package/dist/client/assets/{FilterLines-C3ejwu4y.js → FilterLines-BBOiDIkh.js} +1 -1
  14. package/dist/client/assets/{HardDrive-RremZdHb.js → HardDrive-BFwI_9uP.js} +1 -1
  15. package/dist/client/assets/{Key01-DrXVRZX2.js → Key01-CvSbLOeZ.js} +1 -1
  16. package/dist/client/assets/{LayoutLeft-CUtVoabE.js → LayoutLeft-gn5JFlLZ.js} +1 -1
  17. package/dist/client/assets/{LinkExternal01-FYanFsTL.js → LinkExternal01-C_oOsZCM.js} +1 -1
  18. package/dist/client/assets/{LogOut01-Dibr0QOA.js → LogOut01-CPXzS9KG.js} +1 -1
  19. package/dist/client/assets/{Monitor01-0a0QOsYs.js → Monitor01-BV3cwM7J.js} +1 -1
  20. package/dist/client/assets/{Palette-C6VwvyVY.js → Palette-B4ZH4qCb.js} +1 -1
  21. package/dist/client/assets/{Play-Bn0EGB-t.js → Play-D2e0lGbU.js} +1 -1
  22. package/dist/client/assets/{Plus-sc0rW8OF.js → Plus-BD-sC5Tm.js} +1 -1
  23. package/dist/client/assets/{SearchLg-DXFQe1Sx.js → SearchLg-BZGyvigK.js} +1 -1
  24. package/dist/client/assets/{SearchMd-FZNYglTs.js → SearchMd-CEKcgd5X.js} +1 -1
  25. package/dist/client/assets/{Settings02-epU11QVl.js → Settings02-DNq2LB8i.js} +1 -1
  26. package/dist/client/assets/{Shield01-DrNeuOUB.js → Shield01-CZn00ND2.js} +1 -1
  27. package/dist/client/assets/{Star01-Cawt_hmv.js → Star01-DNWE5G12.js} +1 -1
  28. package/dist/client/assets/{Stars01-DIPcXJk_.js → Stars01-BwDZy28i.js} +1 -1
  29. package/dist/client/assets/{Stars02-B8jO1lJL.js → Stars02-CACATX02.js} +1 -1
  30. package/dist/client/assets/{Sun-E9I6kbto.js → Sun-qFQjLlUW.js} +1 -1
  31. package/dist/client/assets/{SwitchHorizontal01-BxES_zRv.js → SwitchHorizontal01-DFrNb-Nk.js} +1 -1
  32. package/dist/client/assets/{Tool01-DV88LwAF.js → Tool01-DJVNREjp.js} +1 -1
  33. package/dist/client/assets/{Tool02-DHfpo6ax.js → Tool02-CskDQgKC.js} +1 -1
  34. package/dist/client/assets/{Trash01-BWM43E9g.js → Trash01-Uq6EiG_k.js} +1 -1
  35. package/dist/client/assets/{TrendUp01-DNTYrYK3.js → TrendUp01-BPy3g0wK.js} +1 -1
  36. package/dist/client/assets/{Upload01-H15qbd7J.js → Upload01-C5rHzgFf.js} +1 -1
  37. package/dist/client/assets/{User01-DnfEmgSx.js → User01-DKfDWYCy.js} +1 -1
  38. package/dist/client/assets/{Users01-chZ7Ggai.js → Users01-CNhOJIWd.js} +1 -1
  39. package/dist/client/assets/{Users03-DEjraBJr.js → Users03-BuQxrKzl.js} +1 -1
  40. package/dist/client/assets/{X-BpPB2vv6.js → X-B3phdLq5.js} +1 -1
  41. package/dist/client/assets/{XCircle-A38V1g83.js → XCircle-BO2mUuyO.js} +1 -1
  42. package/dist/client/assets/{XClose-CN5uz5w3.js → XClose-VTBGl-mt.js} +1 -1
  43. package/dist/client/assets/{Zap-Cnbp-COg.js → Zap-O0m5kDzB.js} +1 -1
  44. package/dist/client/assets/{ZapSquare-DvCo-SHa.js → ZapSquare-Ch4T0A4J.js} +1 -1
  45. package/dist/client/assets/{access-gate-BDUkbCsf.js → access-gate-CNy0nsvt.js} +1 -1
  46. package/dist/client/assets/{add-section-modal-DzbJrwq6.js → add-section-modal-CrFGMVjj.js} +1 -1
  47. package/dist/client/assets/{agent-icon-CXm0tG2U.js → agent-icon-WEyWgGH9.js} +1 -1
  48. package/dist/client/assets/{agents-list-CjHAfdf9.js → agents-list-D--3gvsD.js} +1 -1
  49. package/dist/client/assets/{ai-providers-BROkQV92.js → ai-providers-CIEnnPQl.js} +1 -1
  50. package/dist/client/assets/{alert-D30tDfCd.js → alert-DE05K1AO.js} +1 -1
  51. package/dist/client/assets/{alert-dialog-CLo68ArF.js → alert-dialog-DUbCTbw5.js} +1 -1
  52. package/dist/client/assets/{app-editor-BSkfyJUG.js → app-editor-CsNT91Ka.js} +1 -1
  53. package/dist/client/assets/{auth-Cz9MUOH5.js → auth-DE4ya8fU.js} +1 -1
  54. package/dist/client/assets/{auth-catchall-BIi2h9s3.js → auth-catchall-C2DQ-Kj7.js} +1 -1
  55. package/dist/client/assets/{auth-entry-CzqhITib.js → auth-entry-CjfgXiNz.js} +1 -1
  56. package/dist/client/assets/{auth-split-layout-BRyLNUwV.js → auth-split-layout-C_isXI-1.js} +1 -1
  57. package/dist/client/assets/{authenticate-and-persist-oauth-QRlskZE_.js → authenticate-and-persist-oauth-DQ61Z79F.js} +1 -1
  58. package/dist/client/assets/{automation-list-row-D0YQZG_t.js → automation-list-row-x-JMGJph.js} +1 -1
  59. package/dist/client/assets/{automation-runs-BB4tZxlE.js → automation-runs-DXpguL_E.js} +1 -1
  60. package/dist/client/assets/{automations-BZcwZ-Od.js → automations-Bjv4JI_e.js} +1 -1
  61. package/dist/client/assets/{avatar-qGQm5tob.js → avatar-DJ9EKVaK.js} +1 -1
  62. package/dist/client/assets/{badge-66rG3iWT.js → badge-C9fc_wxN.js} +1 -1
  63. package/dist/client/assets/{block-document-Cm_jusyJ.js → block-document-CsIjaWhk.js} +1 -1
  64. package/dist/client/assets/{brand-context-BqNKSG9k.js → brand-context-D-lD-K-R.js} +1 -1
  65. package/dist/client/assets/{buckets-BGXJu3d4.js → buckets-VUOhqoY8.js} +1 -1
  66. package/dist/client/assets/{bulk-category-panel-XvJ7By1M.js → bulk-category-panel-BM_P3F5D.js} +1 -1
  67. package/dist/client/assets/{calendar-CzpAjlxQ.js → calendar-PuP4tZa0.js} +1 -1
  68. package/dist/client/assets/{capability-load-error-CGTFJhIa.js → capability-load-error-YDmXGl_J.js} +1 -1
  69. package/dist/client/assets/{card-Ci1lZJg4.js → card-D_WImxHs.js} +1 -1
  70. package/dist/client/assets/{category-editor-DYVz_gOe.js → category-editor-DjNIbIkS.js} +1 -1
  71. package/dist/client/assets/{chat-context-8rUWDM2F.js → chat-context-BiyeIiMp.js} +1 -1
  72. package/dist/client/assets/{checkbox-BaGAZdHF.js → checkbox-CDG_LQbU.js} +1 -1
  73. package/dist/client/assets/{cli-auth-success-D8-_HLB1.js → cli-auth-success-D5odyDr8.js} +1 -1
  74. package/dist/client/assets/{collection-detail-BDkIUc9G.js → collection-detail-BBa9lFdZ.js} +1 -1
  75. package/dist/client/assets/{collection-display-button-D7yWJ9_C.js → collection-display-button-CCiOag3M.js} +1 -1
  76. package/dist/client/assets/{collection-search-CadXW_fq.js → collection-search-C6BkcrJY.js} +1 -1
  77. package/dist/client/assets/{collection-table-wrapper-CFX4HclN.js → collection-table-wrapper-Be30ePLW.js} +1 -1
  78. package/dist/client/assets/{collection-tabs-CoBnKZKn.js → collection-tabs-DZTmMw4v.js} +1 -1
  79. package/dist/client/assets/{command-DM53UzIu.js → command-xya09PU3.js} +1 -1
  80. package/dist/client/assets/{commerce-onboarding-DgpUymib.js → commerce-onboarding-B4smoUJZ.js} +1 -1
  81. package/dist/client/assets/{companions-core-CKPOUArc.js → companions-core-DfjMp-va.js} +1 -1
  82. package/dist/client/assets/{connect-DjyEX_0G.js → connect-DxvZNtkV.js} +1 -1
  83. package/dist/client/assets/{connect-desktop-dialog-GV9ICvaM.js → connect-desktop-dialog-DNxvy2H5.js} +1 -1
  84. package/dist/client/assets/{connection-Cg-LX4zr.js → connection-Dd59St6m.js} +1 -1
  85. package/dist/client/assets/{connection-card-DhrUKXbn.js → connection-card-Cx8RHVSA.js} +1 -1
  86. package/dist/client/assets/{connection-detail-DcWby86r.js → connection-detail-CJMa7JCI.js} +1 -1
  87. package/dist/client/assets/{connection-form-helpers-C5m7rYZy.js → connection-form-helpers-BPKRZ_P1.js} +1 -1
  88. package/dist/client/assets/{connections-CUTRuKYm.js → connections-N5lrmtWW.js} +1 -1
  89. package/dist/client/assets/{decopilot-sse-pool-BSWVee71.js → decopilot-sse-pool-y4ZRYpFJ.js} +1 -1
  90. package/dist/client/assets/{dialog-BxTzgMQc.js → dialog-nSaytl1k.js} +1 -1
  91. package/dist/client/assets/{domain-settings-CV5zJhRX.js → domain-settings-DkqS-99Y.js} +1 -1
  92. package/dist/client/assets/{drawer-CJiwuDdN.js → drawer-DcT4Uu3q.js} +1 -1
  93. package/dist/client/assets/{dropdown-menu-B4RxTCSq.js → dropdown-menu-TkROAr0L.js} +1 -1
  94. package/dist/client/assets/{empty-state-CTXAxK95.js → empty-state-DpNuKSPK.js} +1 -1
  95. package/dist/client/assets/{extract-connection-data-RnIuisTy.js → extract-connection-data-DKg48lMh.js} +1 -1
  96. package/dist/client/assets/{file-explorer-uv_H1vB7.js → file-explorer-BFlQnuEV.js} +1 -1
  97. package/dist/client/assets/{form-DQKD1v0g.js → form-ZPARjIO1.js} +1 -1
  98. package/dist/client/assets/{general-BPr6qxJo.js → general-DTohajN6.js} +1 -1
  99. package/dist/client/assets/{github-repo-picker-Co6hb63c.js → github-repo-picker-Bnnr707G.js} +1 -1
  100. package/dist/client/assets/{hooks-CHAv4NGW.js → hooks-qpilqD1H.js} +1 -1
  101. package/dist/client/assets/{index-7ySSB_wV.js → index-BorpVe9v.js} +1 -1
  102. package/dist/client/assets/{index-BuLlGRwx.js → index-Bx5lynAg.js} +1 -1
  103. package/dist/client/assets/{index-CL1Jslvp.js → index-CKADlDP9.js} +1 -1
  104. package/dist/client/assets/{index-BewecO7v.js → index-CNzCXx9V.js} +5 -5
  105. package/dist/client/assets/{index-DUUMVVf8.js → index-Cha9auTF.js} +3 -3
  106. package/dist/client/assets/{index-DAf4hRwd.js → index-Cr6Pr7zT.js} +1 -1
  107. package/dist/client/assets/{index-Bj16BBtO.js → index-DRCY_lNc.js} +1 -1
  108. package/dist/client/assets/{index-CTrHbDcT.js → index-DWioOGzF.js} +1 -1
  109. package/dist/client/assets/{index-BNgXKQGi.js → index-XpHGL8Xf.js} +1 -1
  110. package/dist/client/assets/index-XzrUpVVF.js +1 -0
  111. package/dist/client/assets/{index-redirect-kSXc5CQI.js → index-redirect-BK7bsp6-.js} +1 -1
  112. package/dist/client/assets/{index-BaBe80UU.js → index-wwJd2Sjj.js} +3 -3
  113. package/dist/client/assets/{input-CnmLY31M.js → input-CJEUzz3U.js} +1 -1
  114. package/dist/client/assets/{integration-icon-D8ziNv4e.js → integration-icon-TeHmB2aw.js} +1 -1
  115. package/dist/client/assets/{invite-member-dialog-CAI8atEf.js → invite-member-dialog-BZvi_Hrb.js} +1 -1
  116. package/dist/client/assets/{label-CtIzDrcX.js → label-Dt1MCQYk.js} +1 -1
  117. package/dist/client/assets/{layout-CxNIjagx.js → layout-DT2nwDBA.js} +1 -1
  118. package/dist/client/assets/{login-BwlmyKrx.js → login-H5nY59QD.js} +1 -1
  119. package/dist/client/assets/{mcp-oauth-CCkq-PPq.js → mcp-oauth-DzFo0wIH.js} +1 -1
  120. package/dist/client/assets/{members-PB_LDXIu.js → members-D6uzpsTa.js} +1 -1
  121. package/dist/client/assets/{monaco-editor-RaZqssxu.js → monaco-editor-BG9e6r5t.js} +1 -1
  122. package/dist/client/assets/{monitoring-stats-row-BwyTITKy.js → monitoring-stats-row-BlxOdk3f.js} +1 -1
  123. package/dist/client/assets/{multi-select-Bc2ULJcP.js → multi-select-BAPRSAwF.js} +1 -1
  124. package/dist/client/assets/{oauth-callback-D12oe1rh.js → oauth-callback-D9COrSU4.js} +1 -1
  125. package/dist/client/assets/{oauth-callback-ai-provider-DDu5oMlE.js → oauth-callback-ai-provider-CqgnMndb.js} +1 -1
  126. package/dist/client/assets/{onboarding-BsGu5CIv.js → onboarding-D7K9oZph.js} +1 -1
  127. package/dist/client/assets/{org-install-B_UnHFzM.js → org-install-eyLQ8ArO.js} +1 -1
  128. package/dist/client/assets/{org-layout-DFjKY9G0.js → org-layout-Dh6OcDK1.js} +1 -1
  129. package/dist/client/assets/{organization-choice-D8VKKjij.js → organization-choice-euxrSAqP.js} +1 -1
  130. package/dist/client/assets/{orgs-DRyKnjXZ.js → orgs-C3TUOZZF.js} +1 -1
  131. package/dist/client/assets/{page-seo-form-CE-uaaSZ.js → page-seo-form-CRGVB6Zu.js} +1 -1
  132. package/dist/client/assets/{popover-E3JPeoM_.js → popover-DmUVG79u.js} +1 -1
  133. package/dist/client/assets/{post-editor-DmtkpxyQ.js → post-editor-BCi6oqWL.js} +1 -1
  134. package/dist/client/assets/{primitives-HbonJ6H3.js → primitives-ohHqRH1x.js} +1 -1
  135. package/dist/client/assets/{profile-BQdPECxi.js → profile-B3qbBoYH.js} +1 -1
  136. package/dist/client/assets/project-app-view-CcsrPKFL.js +1 -0
  137. package/dist/client/assets/record-editor-BezjpmqC.js +1 -0
  138. package/dist/client/assets/{redirect-editor-77s4t1K9.js → redirect-editor-b0m3IJDb.js} +1 -1
  139. package/dist/client/assets/registry-DJRtvfJ1.js +2 -0
  140. package/dist/client/assets/{registry-layout-DYgygQJb.js → registry-layout-ZBA5Nky4.js} +1 -1
  141. package/dist/client/assets/{reports-CgGoEKZA.js → reports-DgoRoS98.js} +1 -1
  142. package/dist/client/assets/{require-capability-0koYWXxZ.js → require-capability-DwNiyZiJ.js} +1 -1
  143. package/dist/client/assets/{required-auth-layout-mi5ZHwMW.js → required-auth-layout-5YX1Zkz1.js} +1 -1
  144. package/dist/client/assets/{reset-password-C8kyrQo7.js → reset-password-inPHQycH.js} +1 -1
  145. package/dist/client/assets/{roles-GJBfty57.js → roles-B2LJ8C4Y.js} +1 -1
  146. package/dist/client/assets/{search-input-DQndNQ0y.js → search-input-D8mQgM1n.js} +1 -1
  147. package/dist/client/assets/{secrets-BcGUKHvi.js → secrets-BoStWkty.js} +1 -1
  148. package/dist/client/assets/{sections-editor-tm2zRXuE.js → sections-editor-DWganrLZ.js} +1 -1
  149. package/dist/client/assets/{select-BIIO90wp.js → select-BTm9UZOj.js} +1 -1
  150. package/dist/client/assets/{select-model-DpYmAjaB.js → select-model-CHsuNojn.js} +1 -1
  151. package/dist/client/assets/{self-tool-result-C6NpfXvm.js → self-tool-result-lSJyIHOw.js} +1 -1
  152. package/dist/client/assets/{seo-editor-B3mCpkuz.js → seo-editor-C2jRnKtB.js} +1 -1
  153. package/dist/client/assets/{settings-layout-DN2z8Sla.js → settings-layout-BLzE1qaP.js} +1 -1
  154. package/dist/client/assets/{settings-section-Bq6IN2K4.js → settings-section-BFBMJ5V3.js} +1 -1
  155. package/dist/client/assets/{shell-controls-CRmVnIWH.js → shell-controls-q1c9Jki8.js} +1 -1
  156. package/dist/client/assets/{shell-layout-CODOAxB8.js → shell-layout-C9H5g1Cr.js} +1 -1
  157. package/dist/client/assets/{sidebar-ldg-_gcB.js → sidebar-BcuOCMVi.js} +1 -1
  158. package/dist/client/assets/{skeleton-DSYUICHh.js → skeleton-DcUyQRvY.js} +1 -1
  159. package/dist/client/assets/{sso-ixn9OUuX.js → sso-DSfm7oBg.js} +1 -1
  160. package/dist/client/assets/{store-CqlPg4Jm.js → store-DIjNbpSE.js} +1 -1
  161. package/dist/client/assets/store-registry-BUcFH-Ov.js +2 -0
  162. package/dist/client/assets/{studio-tools-C5EOIT8V.js → studio-tools-BOMuw8L_.js} +1 -1
  163. package/dist/client/assets/{switch-DP_H4qok.js → switch-BaFLi8KM.js} +1 -1
  164. package/dist/client/assets/{tab-id-C6_7L5LO.js → tab-id-CW2J5m3K.js} +1 -1
  165. package/dist/client/assets/{table-IQ1eq-kq.js → table-ZnXVdqHR.js} +1 -1
  166. package/dist/client/assets/{tabs-DCBH6SAb.js → tabs-BCe1c0Fn.js} +1 -1
  167. package/dist/client/assets/{textarea-mjweOaPi.js → textarea-sk2AACdH.js} +1 -1
  168. package/dist/client/assets/{toggle-group-CbDPcMqH.js → toggle-group-D0b92DXT.js} +1 -1
  169. package/dist/client/assets/{toolbar-Cw1AJgYM.js → toolbar-pcdUG7zg.js} +1 -1
  170. package/dist/client/assets/{tooltip-W2R86GKd.js → tooltip-DD2Hc4ga.js} +1 -1
  171. package/dist/client/assets/{use-ai-providers-lrxkqJ6z.js → use-ai-providers-C4V_vlWk.js} +1 -1
  172. package/dist/client/assets/{use-api-keys-BR3TF35O.js → use-api-keys-S7FvtZ0Y.js} +1 -1
  173. package/dist/client/assets/{use-automations-DxXx_lHD.js → use-automations-B_7tdkdL.js} +1 -1
  174. package/dist/client/assets/{use-autosave-DSRh0RXM.js → use-autosave-CisOICRV.js} +1 -1
  175. package/dist/client/assets/{use-capability-Kmrr2_DL.js → use-capability-CeOs3_wu.js} +1 -1
  176. package/dist/client/assets/{use-clock-tick-BKCswZqG.js → use-clock-tick-CQzuc3pK.js} +1 -1
  177. package/dist/client/assets/{use-connection-CLpbKsOa.js → use-connection-BOcrFfQU.js} +1 -1
  178. package/dist/client/assets/{use-copy-Ctcxuxud.js → use-copy-SzRO2_tA.js} +1 -1
  179. package/dist/client/assets/{use-create-virtual-mcp-Bo9StMVq.js → use-create-virtual-mcp-D2oyVg8W.js} +1 -1
  180. package/dist/client/assets/{use-debounced-autosave-RLi4BVRQ.js → use-debounced-autosave-C3uWOW5O.js} +1 -1
  181. package/dist/client/assets/{use-debounced-value-CF1gvVc7.js → use-debounced-value-CdtujOMx.js} +1 -1
  182. package/dist/client/assets/{use-deco-credits-BncCMCeP.js → use-deco-credits--dLzB0V3.js} +1 -1
  183. package/dist/client/assets/{use-decopilot-events-Cmb-e7V8.js → use-decopilot-events-G8vYoJ7s.js} +1 -1
  184. package/dist/client/assets/{use-delete-connection-DXoT9PVi.js → use-delete-connection-LAYkBqwI.js} +1 -1
  185. package/dist/client/assets/{use-deployment-admin-CwpZWZN0.js → use-deployment-admin-Bf9BElY3.js} +1 -1
  186. package/dist/client/assets/{use-file-configs-CZm1ErSy.js → use-file-configs-C7v4MSjv.js} +1 -1
  187. package/dist/client/assets/{use-infinite-scroll-Duo-6Jh0.js → use-infinite-scroll-C9nWVToZ.js} +1 -1
  188. package/dist/client/assets/{use-join-requests-BiNZX6-t.js → use-join-requests-CbToILoQ.js} +1 -1
  189. package/dist/client/assets/{use-mcp-auth-status-EUDH_JPu.js → use-mcp-auth-status-BqwzO10S.js} +1 -1
  190. package/dist/client/assets/{use-mcp-client-Bn_fKie9.js → use-mcp-client-DyXcfDfe.js} +1 -1
  191. package/dist/client/assets/{use-mcp-tools-DeNxG47-.js → use-mcp-tools-DNj60qLW.js} +1 -1
  192. package/dist/client/assets/{use-members-CD6ZyOrK.js → use-members-D3dyWIvs.js} +1 -1
  193. package/dist/client/assets/{use-mobile-By0ugXDS.js → use-mobile-DGhyNURu.js} +1 -1
  194. package/dist/client/assets/{use-navigate-to-agent-DKnGfo5A.js → use-navigate-to-agent-DwmdQ-fW.js} +1 -1
  195. package/dist/client/assets/{use-org-auth-client-BTsOFju1.js → use-org-auth-client-ClyezUwg.js} +1 -1
  196. package/dist/client/assets/{use-org-sso-BLgobVS7.js → use-org-sso-DxRUHlY6.js} +1 -1
  197. package/dist/client/assets/{use-organization-roles-Be81sAA5.js → use-organization-roles-B3Fh0k8l.js} +1 -1
  198. package/dist/client/assets/{use-organization-settings-DxCjQA-p.js → use-organization-settings-CjLDSSX8.js} +1 -1
  199. package/dist/client/assets/{use-registry-app-CiFGb0BH.js → use-registry-app-BqKpTUCs.js} +1 -1
  200. package/dist/client/assets/{use-registry-connections-BtAhGlNY.js → use-registry-connections-DBh_tECH.js} +1 -1
  201. package/dist/client/assets/{use-secrets-CGGmczJZ.js → use-secrets-Zc9U2IuP.js} +1 -1
  202. package/dist/client/assets/{use-status-sounds-C6gn0U8N.js → use-status-sounds-DkbpzlH-.js} +1 -1
  203. package/dist/client/assets/{use-view-mode-2IyCcfB4.js → use-view-mode-UMyg4Dqr.js} +1 -1
  204. package/dist/client/assets/{use-virtual-mcp-DRku4bc3.js → use-virtual-mcp-xlQPk04h.js} +1 -1
  205. package/dist/client/assets/useInfiniteQuery-BzoBaVHL.js +1 -0
  206. package/dist/client/assets/{useQueries-B2OSOrpG.js → useQueries-BEbknLPL.js} +1 -1
  207. package/dist/client/assets/{useRouterState-DYLxn-4w.js → useRouterState-gvhe7iWw.js} +1 -1
  208. package/dist/client/assets/useSuspenseInfiniteQuery-i_lrMAjn.js +1 -0
  209. package/dist/client/assets/{users-BG8U0FQd.js → users-Bw2cJ0vF.js} +1 -1
  210. package/dist/client/assets/{variant-calendar-DLh6-t_H.js → variant-calendar-DFqYMpVH.js} +1 -1
  211. package/dist/client/assets/{view-mode-toggle-B14_Ky0k.js → view-mode-toggle-D1VthKA9.js} +1 -1
  212. package/dist/client/index.html +1 -1
  213. package/dist/server/cli.js +2 -2
  214. package/dist/server/server.js +254 -254
  215. package/package.json +1 -1
  216. package/dist/client/assets/index-B1Pu947Q.js +0 -1
  217. package/dist/client/assets/project-app-view-B1lZU9VM.js +0 -1
  218. package/dist/client/assets/record-editor-BAsNjdjV.js +0 -1
  219. package/dist/client/assets/registry-CEz_-21i.js +0 -2
  220. package/dist/client/assets/store-registry-BNQsgs3Z.js +0 -2
  221. package/dist/client/assets/useInfiniteQuery-C3930CkE.js +0 -1
  222. package/dist/client/assets/useSuspenseInfiniteQuery-CayL-QrT.js +0 -1
@@ -60,7 +60,7 @@
60
60
  <meta name="apple-mobile-web-app-capable" content="yes" />
61
61
  <meta name="apple-mobile-web-app-status-bar-style" content="default" />
62
62
  <meta name="apple-mobile-web-app-title" content="deco Studio" />
63
- <script type="module" crossorigin src="/assets/index-DUUMVVf8.js"></script>
63
+ <script type="module" crossorigin src="/assets/index-Cha9auTF.js"></script>
64
64
  <link rel="stylesheet" crossorigin href="/assets/index-DiJLgWMy.css">
65
65
  </head>
66
66
  <body>
@@ -83168,7 +83168,7 @@ ${w}`;v(B);return}if(c(null,F),t.strategy==="count"){if($--,$===0)v()}if(t.strat
83168
83168
  `);function v(d){if(t===void 0)return!0;let D=Aq(d),_=D&&Aq(t)?Jau(t):t,N=D?Jau(d):Kau(d),Z=QVt(_,N);return Z===""||!Z.startsWith("..")&&!SVt(Z)}return{upsert(d){f.run({$handle:d.handle,$status:d.status,$sandboxPath:d.sandboxPath,$port:d.port??null,$previewUrl:d.previewUrl??null,$repoCloneUrl:d.repoCloneUrl??null,$branch:d.branch??null,$projectName:d.projectName??null,$error:d.error??null,$now:Date.now()})},list(){return l.all().map(f6i)},reconcile(){let d=Date.now();for(let D of l.all().map(f6i)){if(!v(D.sandboxPath)){E.run({$handle:D.handle,$now:d});continue}if(!Aq(D.sandboxPath)){c.run({$handle:D.handle,$now:d});continue}if(D.status==="spawning"||D.status==="ready"||D.status==="failed"||D.status==="missing")w.run({$handle:D.handle,$now:d})}return l.all().map(f6i)},prune(d){let D=[],_=[],N=this.reconcile();for(let Z of N){if(!v(Z.sandboxPath)){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(d.missing&&Z.status==="missing"){$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!d.merged||!Aq(Z.sandboxPath))continue;if(Z.branch===null||Z.branch.trim()===""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!K_(Z.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let B=K_(Z.sandboxPath,["status","--porcelain"]);if(!B.ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(B.stdout.trim()!==""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let F=Wau(Z.sandboxPath,Z.branch);if(F===null){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!F){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}YVt(Z.sandboxPath,{recursive:!0,force:!0}),$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:D,skipped:_}},delete(d){$.run({$handle:d})},inspect(d){let D=h.get({$handle:d});if(D===null)return null;let _=f6i(D),N=0,Z=null;if(Aq(_.sandboxPath)&&K_(_.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let B=K_(_.sandboxPath,["status","--porcelain"]);if(B.ok){let F=B.stdout.trim();N=F===""?0:F.split(`
83169
83169
  `).length}if(_.branch!==null&&_.branch.trim()!=="")Z=Wau(_.sandboxPath,_.branch)}return{handle:_.handle,branch:_.branch,sandboxPath:_.sandboxPath,dirtyCount:N,merged:Z}},close(){u.close()}}}var jbi=()=>{};function nVt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function Lau(i,u){if(process.platform==="win32")return;for(let t of nVt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var Qau=()=>{};import{existsSync as bVt,readdirSync as CVt}from"fs";import{rm as MVt}from"fs/promises";import{join as Hau}from"path";async function zau(i,u={}){let t=u.detach??qVt,f=u.exists??bVt,l=u.readdir??((w)=>CVt(w)),E=u.rm??((w)=>MVt(w,{recursive:!0,force:!0})),c=Hau(i,"org");if(f(c))for(let w of l(c))t(Hau(c,w));await E(i)}var qVt=(i)=>Lau(i,process.platform==="darwin");var Rau=O(()=>{Qau()});import{join as VVt}from"path";function nau(i){let u=i.purge??zau;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await F1(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??VVt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof H6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var bau=O(()=>{Z4();Rau()});import{randomBytes as rVt}from"crypto";import{mkdir as mVt}from"fs/promises";import{createServer as eVt}from"net";import{join as aVt}from"path";function Cau(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function Mau(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function qau(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function oVt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function sVt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:oVt(i.repo?.cloneUrl)}}function Vau(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??pVt,l=i.fetchImpl??fetch,E=i.resolvePreviewUrl??((N,Z)=>`http://127.0.0.1:${Z}`),c=(N)=>aVt(i.dataDir,"sandboxes",N),w=(N)=>{try{i.registry?.upsert(N)}catch(Z){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${N.handle} status=${N.status}:`,Z)}},$=(N)=>{try{i.onEvent?.(N)}catch{}},h=async(N)=>{let Z=new AbortController,B=setTimeout(()=>Z.abort(),1500);try{let F=await l(`${N}/health`,{signal:Z.signal});if(!F.ok)console.warn(`[user-desktop] probe ${N}/health \u2192 ${F.status} (treating as dead)`);return F.ok}catch(F){return console.warn(`[user-desktop] probe ${N}/health failed: ${F instanceof Error?F.message:String(F)} (treating as dead)`),!1}finally{clearTimeout(B)}},v=(N)=>{console.warn(`[user-desktop] evicting dead daemon handle=${N.handle} port=${N.port}`);try{N.process.kill("SIGTERM")}catch{}if(t.get(N.handle)===N)t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:c(N.handle),port:null,previewUrl:null,...N.registryMetadata,error:null}),$({handle:N.handle,phase:"evicted"})},d=new Map;function D(){if(t.size<u)return;let N=[...t.values()].filter((B)=>B.activeDispatchCount===0).sort((B,F)=>B.lastUsedAt-F.lastUsedAt);if(N.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let Z=N[0];console.log(`[user-desktop] evicting LRU victim handle=${Z.handle} port=${Z.port} (cap ${u} reached, size=${t.size})`);try{Z.process.kill("SIGTERM")}catch{}t.delete(Z.handle),w({handle:Z.handle,status:"stopped",sandboxPath:c(Z.handle),port:null,previewUrl:null,...Z.registryMetadata,error:null}),$({handle:Z.handle,phase:"evicted"})}let _=async(N)=>{let Z=sVt(N),B=c(N.handle);w({handle:N.handle,status:"spawning",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"spawning",sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),D();let F,g=null,T;try{await mVt(B,{recursive:!0}),console.log(`[user-desktop] ensure handle=${N.handle} repo=${N.repo?.cloneUrl??"(none)"} branch=${N.repo?.branch??"(none)"} runtime=${N.workload?.runtime??"(autodetect)"} pm=${N.workload?.packageManager??"(autodetect)"}`),T=rVt(24).toString("hex");let[k,I]=await Promise.all([f(),f()]);F=k,console.log(`[user-desktop] spawn handle=${N.handle} port=${F} devPort=${I} workdir=${B}`),g=await Promise.resolve(i.spawnDaemon({workdir:B,handle:N.handle,port:F,daemonToken:T,offloadAllowedHosts:N.offloadAllowedHosts??[],offloadAllowSameHostDev:N.offloadAllowSameHostDev??!1,orgFsConfigJson:N.orgFsConfigJson}));try{await i.waitForHealth(F)}catch(j){throw Cau("the sandbox didn't come online in time",j)}console.log(`[user-desktop] healthy handle=${N.handle} port=${F} \u2014 posting config`);try{await i.postConfig(F,I,{repo:N.repo,workload:N.workload,operator:N.operator},T)}catch(j){throw Cau(Mau(j)?"configuration timed out":"the sandbox rejected its configuration",j)}}catch(k){if((Mau(k)?console.warn:console.error)(`[user-desktop] sandbox bring-up failed handle=${N.handle} port=${F??"(none)"}${g?" (killing daemon)":""}:`,k),g)try{g.kill("SIGKILL")}catch{}throw $({handle:N.handle,phase:"failed",error:qau(k),sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),w({handle:N.handle,status:"failed",sandboxPath:B,port:null,previewUrl:null,...Z,error:qau(k)}),k}if(!g||F===void 0)throw Error("sandbox bring-up invariant violated");let U=`http://127.0.0.1:${F}`,A=E(N.handle,F);console.log(`[user-desktop] ready handle=${N.handle} port=${F} sandboxApiUrl=${U} previewUrl=${A}`);let G={handle:N.handle,port:F,process:g,sandboxApiUrl:U,previewUrl:A,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:T,registryMetadata:Z};if(t.set(N.handle,G),w({handle:N.handle,status:"ready",sandboxPath:B,port:F,previewUrl:A,...Z,error:null}),$({handle:N.handle,phase:"ready",port:F,previewUrl:A,sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),g.exited)g.exited.then(()=>{if(t.get(N.handle)===G)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${N.handle} port=${F} \u2014 removing from cache`),t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${N.handle} port=${F} (already replaced/removed)`)});return{sandboxApiUrl:U,previewUrl:A,port:F}};return{async ensureSandbox(N){let Z=t.get(N.handle);if(Z){if(await h(Z.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${N.handle} port=${Z.port} (alive)`),Z.lastUsedAt=Date.now(),{sandboxApiUrl:Z.sandboxApiUrl,previewUrl:Z.previewUrl,port:Z.port};console.warn(`[user-desktop] cache stale handle=${N.handle} port=${Z.port} \u2014 respawning`),v(Z)}let B=d.get(N.handle);if(B)return console.log(`[user-desktop] joining in-flight ensure handle=${N.handle}`),B;let F=_(N).finally(()=>{d.delete(N.handle)});return d.set(N.handle,F),F},proxyPort(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now();return Z?.port??null},getDaemonToken(N){return t.get(N)?.daemonToken??null},hasHandle(N){return t.has(N)||d.has(N)},recordHit(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now()},acquireDispatch(N){let Z=t.get(N);if(!Z)return()=>{};Z.activeDispatchCount+=1;let B=!1;return()=>{if(B)return;B=!0;let F=t.get(N);if(F)F.activeDispatchCount=Math.max(0,F.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(N){let Z=t.get(N);if(!Z){console.log(`[user-desktop] delete handle=${N} (not found, no-op)`);return}if(Z.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${N} port=${Z.port} REFUSED \u2014 ${Z.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${N} port=${Z.port}`);try{Z.process.kill("SIGTERM")}catch{}t.delete(N),w({handle:N,status:"stopped",sandboxPath:c(N),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),$({handle:N,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let N of t.values())try{N.process.kill("SIGTERM")}catch{}t.clear()}}}function pVt(){return new Promise((i,u)=>{let t=eVt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var rau=()=>{};import{randomUUID as irt}from"crypto";import{hostname as urt}from"os";async function mau(i){let u=urt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=xMu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=E6i({path:l6i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,E=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let c=0,w=Vau({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(j,C)=>c>0?`http://${j}.localhost:${c}`:`http://127.0.0.1:${C}`,spawnDaemon:async(j)=>{let C={DAEMON_BOOT_ID:irt(),APP_ROOT:j.workdir,PROXY_PORT:String(j.port),DAEMON_TOKEN:j.daemonToken,OFFLOAD_ALLOWED_HOSTS:j.offloadAllowedHosts.join(","),...j.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(j.orgFsConfigJson){let L=await JMu(i.dataDir);if(L)C.ORGFS_CONFIG=j.orgFsConfigJson,C.ORGFS_RCLONE_PATH=L}let K=await t({workdir:j.workdir,env:C,daemonPort:j.port});return{port:j.port,kill:(L)=>K.kill(L),exited:K.exited.then(()=>{return})}},postConfig:async(j,C,K,L)=>{let r={port:C};if(K.workload)r.runtime=K.workload.runtime,r.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Q={application:r},ui=Th(K.operator??null);if(ui)Q.operator=ui;if(K.repo)Q.git={repository:{cloneUrl:K.repo.cloneUrl,branch:K.repo.branch,...K.repo.submoduleCredentials&&K.repo.submoduleCredentials.length>0?{submoduleCredentials:K.repo.submoduleCredentials}:{}},...K.repo.userName&&K.repo.userEmail?{identity:{userName:K.repo.userName,userEmail:K.repo.userEmail}}:{}};await U_(`http://127.0.0.1:${j}`,L,Q)},waitForHealth:async(j)=>{await lli(`http://127.0.0.1:${j}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),$=await gau({port:i.port,lookupSandboxPort:(j)=>w.proxyPort(j)});c=$.port,console.log(`Local ingress listening on http://127.0.0.1:${$.port} (use http://<handle>.localhost:${$.port}/)`),i.monitor?.onIngress?.($.port);let h=YMu({provider:w}),v=async()=>{let j=await T_({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!j)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return j.accessToken},d=await jau(i.dataDir),D=process.env.npm_package_version??"0.0.0",_=await kbi(),N=xau(_,{onChange:(j)=>{console.log(`[link-daemon] capabilities detected: +${j.join(",")} (now: ${_.join(",")})`)}}),Z=ZRi({path:`${i.dataDir}/link/outbox.sqlite`});Z.clear();let B=()=>{},F=new AbortController,g={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:v,provider:w,outbox:Z,controlHandler:h,capabilities:_,machineId:d,cliVersion:D,previewPort:$.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>B(),runLifetimeSignal:F.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let T=await wau(g);console.log("[link-daemon] active transport=tunnel");let U,A=new Promise((j)=>{U=j}),G=!1,k=async()=>{if(G)return;G=!0,F.abort(),console.log(`
83170
83170
  Shutting down\u2026`),N();try{await T.close()}catch{}try{await $.stop()}catch{}try{await w.shutdown()}catch{}try{Z.close()}catch{}E(),U(0)};process.on("SIGINT",()=>void k()),process.on("SIGTERM",()=>void k()),B=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),k()},T.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!G)console.error("Cluster connection closed permanently; exiting."),k()});let I=nau({provider:w,registry:f,dataDir:i.dataDir});return{stopped:A,stop:k,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(c){throw E(),c}}var eau=O(()=>{hRi();qM();kMu();KMu();WMu();BRi();$au();Tau();kau();Xau();MM();jbi();bau();rau()});function Xbi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as trt}from"net";async function lrt(i){for(let u of frt)if(await Jbi(i,u))return u;return null}async function aau(i,{intervalMs:u=1000,sleepFn:t=P0}={}){for(;;){let f=await lrt(i);if(f)return f;await t(u)}}function Jbi(i,u){return new Promise((t)=>{let f=trt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var frt;var Kbi=O(()=>{Z4();frt=["localhost","127.0.0.1","0.0.0.0"]});function oau(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function Ert(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function sau(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${Ert(i,u)}`].join(`
83171
- `)}var Ybi;var pau=O(()=>{Ybi=class Ybi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var yL;var c6i=O(()=>{yL={name:"decocms",version:"4.139.23",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var yq={};Gi(yq,{printBanner:()=>$rt,bannerLines:()=>iou,BANNER_LINES:()=>w6i,BANNER_GRADIENT:()=>$6i});function wrt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function iou(i){let u=w6i.map((t,f)=>{let[l,E,c]=wrt($6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function $rt(i){console.log("");for(let u of iou(i))console.log(u);console.log("")}var w6i,$6i;var PL=O(()=>{w6i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],$6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as hrt,Text as uou}from"ink";import{jsx as vrt,jsxs as tou}from"react/jsx-runtime";function h6i({version:i}){return tou(hrt,{flexDirection:"column",marginTop:1,children:[w6i.map((u,t)=>vrt(uou,{color:$6i[t],children:u},t)),tou(uou,{dimColor:!0,children:[" v",i]})]})}var Wbi=O(()=>{PL()});function fou(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function GL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function lou(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Eou(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var Hbi={};Gi(Hbi,{subscribeLinkState:()=>Sbi,setSelectedHandle:()=>Lbi,setRemoving:()=>D6i,setPersistedSandboxes:()=>Trt,setPendingConfirm:()=>Gq,setMachine:()=>Zrt,setLogPath:()=>Frt,setLinkActions:()=>grt,setIngress:()=>Ort,setDaemonError:()=>Brt,setClusterUrl:()=>Nrt,setCluster:()=>_rt,setActionError:()=>d6i,resetLinkStateForTests:()=>Art,removeSandboxRow:()=>Qbi,pushSandboxEvent:()=>Urt,getLinkState:()=>Pq,applySandboxEvent:()=>cou});function Drt(i){return i==="spawning"||i==="ready"||i==="failed"}function cou(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function wou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:drt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function b3(){for(let i of v6i)i()}function Pq(){return lf}function Sbi(i){return v6i.add(i),()=>v6i.delete(i)}function _rt(i){lf={...lf,cluster:i},b3()}function Nrt(i){lf={...lf,clusterUrl:i},b3()}function Ort(i,u){lf={...lf,ingressPort:i,ingressUrl:u},b3()}function Zrt(i){lf={...lf,machine:i},b3()}function Brt(i){lf={...lf,daemonError:i},b3()}function Frt(i){lf={...lf,logPath:i},b3()}function Lbi(i){lf={...lf,selectedHandle:i},b3()}function Gq(i){lf={...lf,pendingConfirm:i},b3()}function d6i(i){lf={...lf,actionError:i},b3()}function D6i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},b3()}function grt(i){lf={...lf,actions:i},b3()}function Qbi(i){let u=GL(lf.sandboxes),t=Eou(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},b3()}function Trt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of lf.sandboxes)if(Drt(f.status))u.set(t,f);lf={...lf,sandboxes:u},b3()}function Urt(i){lf={...lf,sandboxes:cou(lf.sandboxes,i)},b3()}function Art(){lf=wou(),v6i.clear()}var drt=20,lf,v6i;var Iq=O(()=>{lf=wou(),v6i=new Set});import{spawn as yrt}from"child_process";function Prt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function $ou(i,u=process.platform){let t=Prt(u);try{yrt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var hou=()=>{};function vou(i,u={}){let t=u.openUrl??$ou,f=Pq(),l=GL(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":Lbi(lou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);d6i(null),Gq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Gq(null),w===null||!c)return;D6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Qbi(w.handle);else D6i(w.handle,!1),d6i($.error)});return}case"confirmNo":Gq(null);return;case"quit":if(c)c.quit();return}}var dou=O(()=>{Iq();hou()});function Dou(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var _ou={};Gi(_ou,{LinkApp:()=>krt});import{Box as C1,Text as vl,useInput as Grt}from"ink";import{useSyncExternalStore as Irt}from"react";import{jsx as jf,jsxs as Jh}from"react/jsx-runtime";function xrt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function krt(){let i=Irt(Sbi,Pq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=GL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return Grt((l,E)=>{let c=Dou(l,E,i.pendingConfirm!==null);if(c!==null)vou(c)}),Jh(C1,{flexDirection:"column",children:[jf(h6i,{version:yL.version}),jf(C1,{marginBottom:1,children:jf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),jf(C1,{children:i.cluster==="linked"?Jh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Jh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Jh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),jf(C1,{children:i.ingressUrl?Jh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):jf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),jf(C1,{marginBottom:1,children:jf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?jf(vl,{dimColor:!0,children:"No previews running yet."}):Jh(C1,{flexDirection:"column",children:[Jh(C1,{children:[jf(C1,{width:2,flexShrink:0}),jf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),jf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),jf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),jf(C1,{flexGrow:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=xrt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Jh(C1,{children:[jf(C1,{width:2,flexShrink:0,children:jf(vl,{color:"cyan",children:c?"\u203A":" "})}),jf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:jf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),jf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:jf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),jf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:jf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),jf(C1,{flexGrow:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?jf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?jf(C1,{marginTop:1,children:Jh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?jf(C1,{marginTop:1,children:jf(vl,{color:"yellow",children:fou(i.pendingConfirm)})}):null,i.actionError?jf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,jf(C1,{marginTop:1,children:jf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var IL;var Nou=O(()=>{c6i();Wbi();dou();Iq();IL={project:18,branch:22,status:14}});var Oou={};Gi(Oou,{runLinkCommand:()=>Lrt});import{closeSync as jrt,mkdirSync as Xrt,openSync as Jrt,writeSync as Krt}from"fs";import{homedir as Yrt}from"os";import{join as zbi}from"path";function Wrt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{Krt(u,`${Xbi(l)}
83171
+ `)}var Ybi;var pau=O(()=>{Ybi=class Ybi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var yL;var c6i=O(()=>{yL={name:"decocms",version:"4.140.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",vite:"^7.2.1",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});var yq={};Gi(yq,{printBanner:()=>$rt,bannerLines:()=>iou,BANNER_LINES:()=>w6i,BANNER_GRADIENT:()=>$6i});function wrt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function iou(i){let u=w6i.map((t,f)=>{let[l,E,c]=wrt($6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function $rt(i){console.log("");for(let u of iou(i))console.log(u);console.log("")}var w6i,$6i;var PL=O(()=>{w6i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],$6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as hrt,Text as uou}from"ink";import{jsx as vrt,jsxs as tou}from"react/jsx-runtime";function h6i({version:i}){return tou(hrt,{flexDirection:"column",marginTop:1,children:[w6i.map((u,t)=>vrt(uou,{color:$6i[t],children:u},t)),tou(uou,{dimColor:!0,children:[" v",i]})]})}var Wbi=O(()=>{PL()});function fou(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function GL(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function lou(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Eou(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var Hbi={};Gi(Hbi,{subscribeLinkState:()=>Sbi,setSelectedHandle:()=>Lbi,setRemoving:()=>D6i,setPersistedSandboxes:()=>Trt,setPendingConfirm:()=>Gq,setMachine:()=>Zrt,setLogPath:()=>Frt,setLinkActions:()=>grt,setIngress:()=>Ort,setDaemonError:()=>Brt,setClusterUrl:()=>Nrt,setCluster:()=>_rt,setActionError:()=>d6i,resetLinkStateForTests:()=>Art,removeSandboxRow:()=>Qbi,pushSandboxEvent:()=>Urt,getLinkState:()=>Pq,applySandboxEvent:()=>cou});function Drt(i){return i==="spawning"||i==="ready"||i==="failed"}function cou(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function wou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:drt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function b3(){for(let i of v6i)i()}function Pq(){return lf}function Sbi(i){return v6i.add(i),()=>v6i.delete(i)}function _rt(i){lf={...lf,cluster:i},b3()}function Nrt(i){lf={...lf,clusterUrl:i},b3()}function Ort(i,u){lf={...lf,ingressPort:i,ingressUrl:u},b3()}function Zrt(i){lf={...lf,machine:i},b3()}function Brt(i){lf={...lf,daemonError:i},b3()}function Frt(i){lf={...lf,logPath:i},b3()}function Lbi(i){lf={...lf,selectedHandle:i},b3()}function Gq(i){lf={...lf,pendingConfirm:i},b3()}function d6i(i){lf={...lf,actionError:i},b3()}function D6i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},b3()}function grt(i){lf={...lf,actions:i},b3()}function Qbi(i){let u=GL(lf.sandboxes),t=Eou(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},b3()}function Trt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of lf.sandboxes)if(Drt(f.status))u.set(t,f);lf={...lf,sandboxes:u},b3()}function Urt(i){lf={...lf,sandboxes:cou(lf.sandboxes,i)},b3()}function Art(){lf=wou(),v6i.clear()}var drt=20,lf,v6i;var Iq=O(()=>{lf=wou(),v6i=new Set});import{spawn as yrt}from"child_process";function Prt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function $ou(i,u=process.platform){let t=Prt(u);try{yrt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var hou=()=>{};function vou(i,u={}){let t=u.openUrl??$ou,f=Pq(),l=GL(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":Lbi(lou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);d6i(null),Gq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(Gq(null),w===null||!c)return;D6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Qbi(w.handle);else D6i(w.handle,!1),d6i($.error)});return}case"confirmNo":Gq(null);return;case"quit":if(c)c.quit();return}}var dou=O(()=>{Iq();hou()});function Dou(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var _ou={};Gi(_ou,{LinkApp:()=>krt});import{Box as C1,Text as vl,useInput as Grt}from"ink";import{useSyncExternalStore as Irt}from"react";import{jsx as jf,jsxs as Jh}from"react/jsx-runtime";function xrt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function krt(){let i=Irt(Sbi,Pq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=GL(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return Grt((l,E)=>{let c=Dou(l,E,i.pendingConfirm!==null);if(c!==null)vou(c)}),Jh(C1,{flexDirection:"column",children:[jf(h6i,{version:yL.version}),jf(C1,{marginBottom:1,children:jf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),jf(C1,{children:i.cluster==="linked"?Jh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Jh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Jh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),jf(C1,{children:i.ingressUrl?Jh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):jf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),jf(C1,{marginBottom:1,children:jf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?jf(vl,{dimColor:!0,children:"No previews running yet."}):Jh(C1,{flexDirection:"column",children:[Jh(C1,{children:[jf(C1,{width:2,flexShrink:0}),jf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),jf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),jf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),jf(C1,{flexGrow:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=xrt(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Jh(C1,{children:[jf(C1,{width:2,flexShrink:0,children:jf(vl,{color:"cyan",children:c?"\u203A":" "})}),jf(C1,{width:IL.project,flexShrink:0,marginRight:1,children:jf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),jf(C1,{width:IL.branch,flexShrink:0,marginRight:1,children:jf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),jf(C1,{width:IL.status,flexShrink:0,marginRight:1,children:jf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),jf(C1,{flexGrow:1,children:jf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?jf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?jf(C1,{marginTop:1,children:Jh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?jf(C1,{marginTop:1,children:jf(vl,{color:"yellow",children:fou(i.pendingConfirm)})}):null,i.actionError?jf(C1,{marginTop:1,children:Jh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,jf(C1,{marginTop:1,children:jf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var IL;var Nou=O(()=>{c6i();Wbi();dou();Iq();IL={project:18,branch:22,status:14}});var Oou={};Gi(Oou,{runLinkCommand:()=>Lrt});import{closeSync as jrt,mkdirSync as Xrt,openSync as Jrt,writeSync as Krt}from"fs";import{homedir as Yrt}from"os";import{join as zbi}from"path";function Wrt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{Krt(u,`${Xbi(l)}
83172
83172
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(Xbi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function Srt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function Lrt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??zbi(Yrt(),"deco"),f=i.clusterBaseUrl??process.env.STUDIO_CLUSTER_URL??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,E,c,w=()=>{if(c===void 0)return;try{c.close()}catch{}finally{c=void 0}};try{if(await Jbi(u,"127.0.0.1"))throw new Ybi(u);let $=zbi(t,"sandboxes");c=E6i({path:l6i(t),managedSandboxRoot:$});let h=await ili({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await Srt(f,h.accessToken);let v=c.reconcile();if(i.prune){let N=c.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${N.removed.length}, skipped ${N.skipped.length}.`);v=c.reconcile()}let d;if(i.tui){let{render:N}=await import("ink"),{createElement:Z}=await import("react"),{LinkApp:B}=await Promise.resolve().then(() => (Nou(),_ou)),{pushSandboxEvent:F,setCluster:g,setClusterUrl:T,setDaemonError:U,setIngress:A,setLogPath:G,setMachine:k,setPersistedSandboxes:I}=await Promise.resolve().then(() => (Iq(),Hbi));Xrt(t,{recursive:!0});let j=zbi(t,"link.log");E=Jrt(j,"w"),G(j),I(v),T(f),g("connecting"),d={onEvent:(C)=>F(C),onIngress:(C)=>A(C,`http://127.0.0.1:${C}`),onCluster:(C)=>g(C),onMachine:(C)=>k(C)},l=Wrt(U,E),N(Z(B),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:N}=await Promise.resolve().then(() => (PL(),yq));N(i.version??"0.0.0")}w();let D=process.env.DECOCMS_LINK_MANAGED!=="1",_=await mau({port:u,clusterBaseUrl:f,dataDir:t,session:h,monitor:d,logFd:E,perSandboxLogs:D,hotReload:i.hotReload});if(i.tui){let{setLinkActions:N}=await Promise.resolve().then(() => (Iq(),Hbi));N({stopSandbox:_.stopSandbox,removeSandbox:_.removeSandbox,inspectSandbox:_.inspectSandbox,quit:_.stop})}return await _.stopped}catch($){return l?.(),console.error(oau($)?sau(u):$ instanceof Error?$.message:String($)),1}finally{if(l?.(),E!==void 0)try{jrt(E)}catch{}w()}}var Zou=O(()=>{$Ri();eau();Kbi();pau();jbi()});var qbi={};Gi(qbi,{resolveDevLinkClusterUrl:()=>Rrt,populateDevLinkToxiProxy:()=>Aou,isDevLinkToxiProxyEnabled:()=>zrt,ensureDevLinkToxiProxy:()=>qrt,buildDevLinkToxiProxyConfig:()=>Tou,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>Fou,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>gou});function zrt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Rbi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Tou(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=Rbi(i.apiPort,"apiPort"),f=Rbi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=Rbi(Number.parseInt(u.port,10),"upstreamPort"),E=`http://127.0.0.1:${l}`,c=`http://127.0.0.1:${f}`;return{serviceName:Fou,proxyName:gou,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:E,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${E}`}}function Rrt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function nbi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function Mbi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Uou(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Uou(i.cause)}async function bbi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${Mbi(l)}`,{cause:l})}}async function Aou(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await bbi(u,"reset",t,{method:"POST"});await nbi(f,"reset",t);let l=`${i.apiUrl}/populate`,E=await bbi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await nbi(E,"populate",l)}async function nrt(i,u){let t=`${i.apiUrl}/version`;try{await F1(async()=>{let f=await bbi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(Hrt)});await nbi(f,"readiness check",t)},{maxAttempts:Qrt,minTimeout:Bou,maxTimeout:Bou,multiplier:1,jitter:0,isRetriable:(f)=>!Uou(f)})}catch(f){let l=f instanceof H6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${Mbi(l)}`,{cause:l})}}async function brt(i){if(i===null)return"";return await new Response(i).text()}async function Cbi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch(w){throw Error(`Docker command failed to start (${t}): ${Mbi(w)}`,{cause:w})}})(),[l,E]=await Promise.all([f.exited,brt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let c=E.trim().length>0?`: ${E.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${c}`)}async function Crt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await Cbi(["rm","-f",t],{ignoreFailure:!0}),await Cbi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function Mrt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await Cbi(["rm","-f",t],{ignoreFailure:!0})}async function qrt(i){let u=Tou(i),t=i.startDaemon??Crt,f=i.stopDaemon??(i.startDaemon===void 0?Mrt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await nrt(u,l),await Aou(u,l)}catch(E){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw E}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var Fou="ToxiProxy",gou="dev_link_studio",Qrt=20,Bou=100,Hrt=100;var Vbi=O(()=>{Z4()});var you={};Gi(you,{migrateBetterAuth:()=>rbi});import{getMigrations as Vrt}from"better-auth/db";import{sso as rrt}from"@better-auth/sso";import{organization as mrt}from"@decocms/better-auth/plugins";import{admin as ert,apiKey as art,jwt as ort,magicLink as srt,mcp as prt,openAPI as imt}from"better-auth/plugins";import{emailOTP as umt}from"better-auth/plugins/email-otp";async function rbi(i){let t={database:HM(i||Z_()),plugins:[mrt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),ert(),art(),ort(),imt(),prt({loginPage:"/login"}),rrt(),srt({sendMagicLink:async()=>{}}),umt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:E}=await Vrt(t);if(!f.length&&!l.length)return"up to date";return await E(),`${l.length+f.length} table(s) migrated`}var mbi=O(()=>{b6()});var ebi={};Gi(ebi,{up:()=>tmt,down:()=>fmt});import{sql as Bd}from"kysely";async function tmt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Bd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function fmt(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var Pou=()=>{};var abi={};Gi(abi,{up:()=>lmt,down:()=>Emt});import{sql as Gou}from"kysely";async function lmt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Gou`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Gou`CURRENT_TIMESTAMP`)).execute()}async function Emt(i){await i.schema.dropTable("organization_settings").execute()}var Iou=()=>{};var obi={};Gi(obi,{up:()=>cmt,down:()=>wmt});async function cmt(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function wmt(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var sbi={};Gi(sbi,{up:()=>$mt,down:()=>hmt});async function $mt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function hmt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var pbi={};Gi(pbi,{up:()=>vmt,down:()=>dmt});async function vmt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function dmt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var iCi={};Gi(iCi,{up:()=>_mt,down:()=>Nmt});import{sql as Dmt}from"kysely";async function _mt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",Dmt`text`).execute()}async function Nmt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var xou=()=>{};var uCi={};Gi(uCi,{up:()=>Omt,down:()=>Zmt});async function Omt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function Zmt(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var tCi={};Gi(tCi,{up:()=>Bmt,down:()=>Fmt});import{sql as xq}from"kysely";async function Bmt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(xq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(xq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(xq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(xq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(xq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function Fmt(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var kou=()=>{};var fCi={};Gi(fCi,{up:()=>Tmt,down:()=>Umt});import{sql as gmt}from"kysely";async function Tmt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function Umt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(gmt`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var jou=()=>{};var lCi={};Gi(lCi,{up:()=>Amt,down:()=>ymt});import{sql as _6i}from"kysely";async function Amt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(_6i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(_6i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(_6i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await _6i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function ymt(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var Xou=()=>{};var ECi={};Gi(ECi,{up:()=>Pmt,down:()=>Gmt});async function Pmt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function Gmt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var cCi={};Gi(cCi,{up:()=>Imt,down:()=>xmt});import{sql as N6i}from"kysely";async function Imt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await N6i`
83173
83173
  UPDATE gateways
83174
83174
  SET tool_selection_mode = CASE
@@ -86803,7 +86803,7 @@ ${[...Q].sort().join(`
86803
86803
  ${i.agentInstructions.trim()}
86804
86804
  </agent-instructions>`:null,kGi,XR(i.now??new Date)].filter((t)=>Boolean(t?.trim()));return u.length>0?u.join(`
86805
86805
 
86806
- `):void 0}var Jut;var Kut=O(()=>{Nf();am();Xut();Xvu();PGi();jvu();Kvu();XGi();JGi();Jut={id:"codex",create(i){return{id:"codex",async*stream(u){let t=idu(u.models.thinking.id),f=AGi(u.workspace.cwd),l=uP4({workspace:u.workspace,agentInstructions:u.agent.instructions});console.log(`[codex] stream start model=${t} cwd=${f??"(default)"} mcpUrl=${u.mcp.url} mode=${u.mode}`);let{model:E,provider:c}=pvu(t,iP4(u,f,l));try{let w=await yGi([u.userMessage]),h=bn({currentThreadTitle:u.currentThreadTitle})?(()=>{let{model:N,provider:Z}=pvu(idu("codex:gpt-5.6-luna"),{toolApprovalLevel:"readonly",isPlanMode:!0,cwd:f}),B=Cn({abortSignal:u.signal,models:[()=>N],userMessage:Rn(w)}),F=B.promise.finally(()=>Z.close().catch(()=>{}));return{handle:B,closed:F}})():null,v=h?.handle??null,d=n5({model:E,messages:w,abortSignal:u.signal,allowSystemInMessages:!0}),D=IGi({input:u,providerName:"codex",providerMetadataKey:"codex-app-server",extractSessionId:(N)=>typeof N?.threadId==="string"?N.threadId:void 0}),_=d.toUIMessageStream({generateMessageId:y2,messageMetadata:D});try{let N=v?jGi(_,v):_;for await(let Z of N)yield Z}catch(N){if(u.harness.sessionId&&KGi(N))throw new jp(N);throw N}finally{v?.finish(),await h?.closed.catch(()=>{})}}finally{await c.close().catch(()=>{})}}}}}});import{context as tP4,trace as fP4}from"@opentelemetry/api";function Yut(i){lP4({...i,tracer:i.ctx.tracer})}function lP4(i){try{if(!i.organizationId)return;let u=i.tracer.startSpan(Yzi),t=fP4.setSpan(tP4.active(),u),f=i.totalUsage??i.usage;Xa({type:iL,organizationId:i.organizationId,connectionId:Y1i,toolName:i.modelId,toolArguments:{model:i.modelId,credentialId:i.credentialId,threadId:i.taskId,...i.request?.body!==void 0?{requestBody:i.request.body}:{}},result:{...i.usage??{},...i.totalUsage?{totalUsage:i.totalUsage}:{},...i.cost!==void 0?{cost:i.cost}:{},...i.finishReason?{finishReason:i.finishReason}:{},...i.response?{responseId:i.response.id,responseModelId:i.response.modelId,responseTimestamp:i.response.timestamp,messages:i.response.messages}:{},logType:iL},duration:i.durationMs,isError:i.isError,errorMessage:i.errorMessage??null,userId:i.userId,requestId:i.requestId,userAgent:i.userAgent??null,virtualMcpId:i.agentId??null,properties:{model_title:i.modelTitle,credential_id:i.credentialId,thread_id:i.taskId,log_type:iL,...i.response?{response_id:i.response.id}:{},...f?{input_tokens:String(f.inputTokens),output_tokens:String(f.outputTokens),total_tokens:String(f.totalTokens)}:{},...i.cost!==void 0?{cost:String(i.cost)}:{}}},t),u.end()}catch{}}var Wut=O(()=>{n5i();qw()});function Sut(i){let{ctx:u,organizationId:t,modelId:f,durationMs:l,isError:E,inputTokens:c,outputTokens:w,cacheReadTokens:$,cacheWriteTokens:h}=i;if(!t||!f)return;let v={"connection.id":Y1i,"tool.name":f,"organization.id":t,status:E?"error":"success","error.type":E?i.errorType||"Error":""};if(u.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(l,v),u.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,v),c!=null||w!=null)u.meter.createCounter("tool.execution.tokens",{description:"Number of tokens used by LLM calls"}).add((c??0)+(w??0),v);if(($??0)>0)u.meter.createCounter("tool.execution.cache_tokens",{description:"LLM cache tokens by kind (read/write)"}).add($,{...v,kind:"read"});if((h??0)>0)u.meter.createCounter("tool.execution.cache_tokens",{description:"LLM cache tokens by kind (read/write)"}).add(h,{...v,kind:"write"})}var Lut=O(()=>{qw()});function cP4(i,u,t){if(!t)return i;let f=new Set;for(let[l,E]of u)if(t.has(l)||t.has(E))f.add(E);return Object.fromEntries(Object.entries(i).filter(([l])=>f.has(l)))}function wP4(i,u){if(!u)return i;return Object.fromEntries(Object.entries(i).filter(([t])=>EP4.has(t)||u.has(t)))}async function Qut(i,u,t){let f=Mn(i),l=u.organization,E=i.mode==="plan",c=i.toolAllowlist&&i.toolAllowlist.length>0?new Set(i.toolAllowlist):null,w=await t.mcpForAgent(i.agent.id,{superUser:!0,listTimeoutMs:1000});try{let{tools:$,nameMap:h,rawTools:v}=await BUi(w,t.toolOutputMap,t.writer,i.toolApprovalLevel,{isPlanMode:E,timeoutMs:Xvi,resolveArgs:t.resolveArgs,onToolCalled:t.onToolCalled,onPrOpened:t.onPrOpened}),d=cP4($,h,c),D=f.virtualMcp.metadata,_=await po(u,t.threadId),Z=!(_??D.githubRepo),B=i.user.id?{virtualMcpId:i.agent.id,branch:_?cUi(t.threadId,_.connectionId):Z?"ephemeral":f.branch??`thread:${t.threadId}`,userId:i.user.id,threadId:t.threadId,syncTools:!0}:null,F=await IUi(t.writer,{provider:t.provider,imageProvider:t.imageProvider,webSearchProvider:t.webSearchProvider,deepResearchProvider:t.deepResearchProvider,organization:l,models:i.models,toolApprovalLevel:i.toolApprovalLevel,isPlanMode:E,toolOutputMap:t.toolOutputMap,pendingImages:t.pendingImages,passthroughClient:w,vmContext:B,htmlArtifactBuffer:t.htmlArtifactBuffer,taskId:t.threadId,agentId:i.agent.id,onChildUsage:t.onChildUsage,backgroundDispatcher:t.backgroundDispatcher},u),g=wP4(F,c),T=[],U=new Map;for(let I of v){let j=h.get(I.name);if(!j)continue;if(c&&!c.has(I.name)&&!c.has(j))continue;let C=typeof I._meta?.gatewayClientId==="string"?I._meta.gatewayClientId:"unknown";if(T.push({rawName:I.name,safeName:j,connectionId:C}),E)U.set(j,{readOnlyHint:I.annotations?.readOnlyHint})}let A=w.getConnectionTitleMap(),G=w.getInstructions();return{tools:{...d,...g},nameMap:h,passthroughTools:d,builtInTools:g,passthroughToolList:v,connectionsBlockTools:T,toolAnnotations:U,vmContext:B,connectionTitleMap:A,serverInstructions:G,passthroughClient:w,close:async()=>{await w.close().catch(()=>{})}}}catch($){throw await w.close().catch(()=>{}),$}}var EP4;var Hut=O(()=>{wO();nEu();FUi();qn();EP4=new Set(["read_tool_output","enable_tool","open_in_agent","todo_write","update_interests"])});function zut(i){let u=$P4.exec(i);if(!u)return null;return{path:i,name:u[2],kind:u[1].toLowerCase()==="decks"?"deck":"page"}}function Rut(i,u){if(i.kind!=="file"||i.deletedAt)return null;let t=u.threadId!=null&&i.threadId===u.threadId,f=i.threadId==null&&i.updatedBy===u.ownerId;if(!t&&!f)return null;return zut(i.path)}function nut(i,u){if(!u)return null;let t=i.replace(/^\.\//,""),f=`org/${u}/`,l=t.indexOf(f);if(l!==0&&(l<0||t[l-1]!=="/"))return null;return zut(t.slice(l+f.length))}var $P4;var udu=O(()=>{$P4=/^(decks|pages)\/([a-z0-9][a-z0-9._-]*)\.html$/i});function but(i){let u=i.orgFs,t=i.organization?.slug??null,f=i.auth?.user?.id??null;if(!u||!t||!f)return vP4;let l=cg,E=i.metadata?.threadId??null,c=new Map;return{enqueue(w,$){let h=nut(w,l);if(!h)return;c.set(h.path,$)},async flush(){if(c.size===0)return;let w=[...c.entries()];c.clear(),await Promise.allSettled(w.map(async([$,h])=>{try{await u.write(hP4,$,h,{actor:f,contentType:"text/html; charset=utf-8",threadId:E})}catch(v){console.error("[deck-buffer] org-fs write failed",{path:$},v)}}))}}}var hP4="home",vP4;var Cut=O(()=>{V5i();udu();vP4={enqueue:()=>{},flush:async()=>{}}});function Mut(i,u){let t=i.orgFs,f=i.organization?.slug??null,l=i.auth?.user?.id??null;if(!t||!f||!l)return{sweep:async()=>{}};let E=cg,c={threadId:i.metadata?.threadId??null,ownerId:l},w=t.latestSeq(tdu).catch((_)=>{return console.error("[deck-watcher] cursor snapshot failed",_),null}),$=null,h=!1,v=!1,d=new Map;return{sweep:async()=>{if(v)return;v=!0;try{if(!h)$=await w,h=!0;if($===null)return;let _=new Map;for(let N=0;N<20;N++){let Z=await t.changes(tdu,$,dP4);for(let B of Z.entries){let F=Rut(B,c);if(!F)continue;if(B.contentHash){if(d.get(F.path)===B.contentHash)continue;d.set(F.path,B.contentHash)}_.set(F.path,{volume:tdu,path:F.path,name:F.name,kind:F.kind,mountPath:`org/${E}/${F.path}`})}if($=Z.cursor,!Z.hasMore)break}for(let N of _.values())u.write({type:"data-deck-updated",id:N.path,data:N})}catch(_){console.error("[deck-watcher] sweep failed",_)}finally{v=!1}}}}var tdu="home",dP4=200;var qut=O(()=>{V5i();udu()});async function DP4(i,u,t){let f=await KR({kind:t.kind,ctx:i,organization:u,virtualMcp:t.virtualMcp,mcpClient:t.mcpClient,provider:t.provider,models:t.models,messages:t.messages,abortSignal:t.abortSignal,temperature:t.temperature,planMode:t.planMode,isDecopilot:t.isDecopilot,systemAgentInstructions:t.systemAgentInstructions,currentThreadId:t.currentThreadId,user:t.user,userContext:t.userContext,codingWorkspace:t.codingWorkspace,writer:t.writer,subtaskParams:{provider:t.provider,organization:u,models:t.models,codingWorkspace:t.codingWorkspace},prepareStep:t.prepareStep,onStepFinish:t.onStepFinish,passthroughClient:t.passthroughClient,connectionsData:t.connectionsData,extraTools:t.extraTools,additionalSystemMessages:t.additionalSystemMessages,stepLimit:t.stepLimit});return{result:f.result,error:f.error,span:f.span,assembledSystemMessages:f.assembledSystemMessages}}function Vut(i){let{ctx:u,organization:t,modelRuntime:f,sideChannel:l,cleanup:E}=i,c=Mut(u,l.writer),w=but(u);return{toolRuntime:{buildEnvironmentTools:async({input:v,onChildUsage:d})=>{let D=Mn(v),_=new Map,N=[],{resolveArgs:Z,onToolCalled:B,onPrOpened:F}=JUi(u,v.threadId),g=await Qut(v,u,{writer:l.writer,toolOutputMap:_,pendingImages:N,threadId:v.threadId,resolveArgs:Z,onToolCalled:B,onPrOpened:F,mcpForAgent:async(U,A)=>{let G=D.virtualMcp,k=null;if(G.id&&v.user.id&&o1(G.metadata)[v.user.id])k=await OY(u,G.id,v.user.id,D.branch??void 0).catch(()=>null);return W2(G,u,"passthrough",A?.superUser??!1,{listTimeoutMs:A?.listTimeoutMs,includeSkillsCatalog:!0,additionalConnections:k?[k]:[]})},provider:f.thinking.provider,imageProvider:f.image?.provider??f.thinking.provider,webSearchProvider:f.webSearch?.provider??f.thinking.provider,deepResearchProvider:f.deepResearch?.provider??f.thinking.provider,backgroundDispatcher:QUi({threadId:v.threadId,orgId:v.organizationId,userId:v.user.id,agentId:v.agent.id,temperature:v.temperature,toolApprovalLevel:v.toolApprovalLevel,branch:D.branch??null}),htmlArtifactBuffer:w,onChildUsage:d}),T={tools:g.tools,passthroughTools:g.passthroughTools,builtInTools:g.builtInTools,connectionsBlockTools:g.connectionsBlockTools,toolAnnotations:g.toolAnnotations,connectionTitleMap:g.connectionTitleMap,serverInstructions:g.serverInstructions,passthroughClient:g.passthroughClient,writer:l.writer,pendingImages:N,sideChunks:l.stream,closeSideChunks:l.close,onStepFinish:async()=>{await w.flush(),await c.sweep()},close:g.close};return E.close=g.close,T},runEngine:(v)=>DP4(u,t,v)},telemetry:{recordLlmCall:(v)=>Sut({ctx:u,...v}),monitorLlmCall:(v)=>Yut({ctx:u,...v,requestId:u.metadata.requestId,userAgent:u.metadata.userAgent??null})}}}var rut=O(()=>{Wut();Lut();Rz();qUi();G$();Hut();qEu();Cut();qut();TUi();SR();qn()});function nGi(i){if(i.providerId==="openai-compatible")try{let u=JSON.parse(i.apiKey);return{kind:"secret",providerId:i.providerId,apiKey:u.apiKey??"",modelId:i.modelId,...u.baseUrl?{baseUrl:u.baseUrl}:{}}}catch{return{kind:"secret",providerId:i.providerId,apiKey:i.apiKey,modelId:i.modelId}}return{kind:"secret",providerId:i.providerId,apiKey:i.apiKey,modelId:i.modelId}}var mut=O(()=>{Hd();bQ()});var eut=O(()=>{mut()});var aut=O(()=>{git();Yit();Kut();rut();Zvu();Fvu();eut();Jit((i)=>{let u=i.ctx;return Vut({...i,ctx:u,organization:u.organization})});gGi(Kit);gGi(Fit);gGi(Jut)});function fdu(i){if(i==="codex")return"codex";if(i==="claude-code")return"claude-code";return}function out(i){return fdu(i)!==void 0}class sut{thread;organization_id;storage;defaultWindowSize;constructor(i){this.thread=i.thread,this.organization_id=i.thread.organization_id,this.storage=i.storage,this.defaultWindowSize=i.defaultWindowSize??50}async loadHistory(i){let u=i??this.defaultWindowSize,{chronological:t,isWindowed:f}=this.thread.message_storage_version===2?await this.loadWindowedFromParts(u):await this.loadWindowedFromMessages(u),l=t.find(($)=>$.role!=="system");if(!l||l.role==="user")return t;let E=l,c=f?"[Context: earlier turns in this conversation were truncated. The messages below continue the thread \u2014 pick up from there.]":"[Context: this thread opens with your message \u2014 you spoke first to greet the user, and the user has not spoken before it. Their reply follows.]";return[{id:`${this.thread.id}-msg-prefix`,thread_id:this.thread.id,role:"user",parts:[{type:"text",text:c}],metadata:void 0,created_at:E.created_at,updated_at:E.updated_at},...t]}async loadWindowedFromMessages(i){let{messages:u,total:t}=await this.storage.listMessages(this.thread.id,{limit:i,sort:"desc"});return{chronological:[...u].reverse(),isWindowed:t>u.length}}async loadWindowedFromParts(i){let{messages:u,total:t}=await this.storage.messageParts().loadWindow(this.thread.id,{limit:i});return{chronological:u.map((l)=>({id:l.id,thread_id:this.thread.id,role:l.role,parts:l.parts,metadata:l.metadata??void 0,created_at:l.created_at,updated_at:l.created_at})),isWindowed:t>u.length}}}async function bGi(i,u){let{thread_id:t,defaultWindowSize:f}=u;if(!t)throw Error("createMemory: thread_id is required");let l=await i.get(t);if(!l)throw Error(`Thread not found: ${t}`);return new sut({thread:l,storage:i,defaultWindowSize:f})}function _P4(i,u){let t=i.filter((E)=>E.parts&&E.parts.length>0),f=t.findIndex((E)=>E.id===u.id);return f>=0?[...t.slice(0,f),u]:[...t,u]}async function NP4(i){return[...i.systemMessages,..._P4(i.history,i.userMessage)]}async function put(i){let u=i.isSubagent?[]:await(await bGi(i.ctx.storage.threads,{thread_id:i.threadId,organization_id:i.ctx.organization?.id??"",userId:i.ctx.auth.user?.id??"",defaultWindowSize:i.windowSize??P5})).loadHistory(i.windowSize??P5),t=await NP4({history:u,userMessage:i.userMessage,systemMessages:i.systemMessages});return XUi(t,i.ctx)}var i0t=O(()=>{a9();WR()});function u0t(i,u){let t=i.thinking.capabilities;if(!((t?.vision??!1)||(t?.file??!1))){if(u.some((E)=>E.parts?.some((c)=>c.type==="file")))throw new G0(400,{message:"This model does not support file uploads. Please change the model and try again."})}}var t0t=O(()=>{Ch()});function OP4(i=Date.now){return oli(i)}async function*f0t(i,u={}){let t=()=>OP4(u.now),f=null,l=new Fq({intervalMs:u.intervalMs,sleepFn:u.sleepFn,emit:()=>f?.()}),E=i[Symbol.asyncIterator](),c=E.next();try{l.arm();while(!0){let w=new Promise((h)=>{f=()=>h("heartbeat")}),$=await Promise.race([c.then((h)=>({kind:"chunk",r:h})),w.then((h)=>({kind:h}))]);if(f=null,$.kind==="heartbeat"){yield t();continue}if(l.arm(),$.r.done)return;yield $.r.value,c=E.next()}}finally{l.stop(),await E.return?.(void 0).catch(()=>{})}}var l0t=O(()=>{vbi()});function mn(i,u){let t=i.capabilities?{...i.capabilities.vision!==void 0?{vision:i.capabilities.vision}:{},...i.capabilities.text!==void 0?{text:i.capabilities.text}:{},...i.capabilities.reasoning!==void 0?{reasoning:i.capabilities.reasoning}:{}}:void 0;return{id:i.id,...i.title!==void 0?{title:i.title}:{},...i.provider!==void 0?{provider:i.provider}:{},credentialId:u,...i.limits?{limits:i.limits}:{},...t&&Object.keys(t).length>0?{capabilities:t}:{}}}function E0t(i){let u=i.credentialId,t=mn(i.thinking,u);return{thinking:{...t,title:t.title??t.id},...i.fast?{fast:mn(i.fast,u)}:{},...i.smart?{smart:mn(i.smart,u)}:{},...i.image?{image:mn(i.image,i.image.credentialId??u)}:{},...i.webSearch?{webSearch:mn(i.webSearch,i.webSearch.credentialId??u)}:{},...i.deepResearch?{deepResearch:mn(i.deepResearch,i.deepResearch.credentialId??u)}:{}}}function ZP4(i,u){for(let t=i.length-1;t>=0;t--){let f=i[t],l=f?.metadata;if(f?.role==="assistant"&&l?.codingAgentSessionId&&l?.codingAgentProvider===u)return t}return-1}function c0t(i,u){let t=fdu(u);if(!t)return;let f=ZP4(i,t);if(f===-1)return;return i[f]?.metadata?.codingAgentSessionId}var w0t=()=>{};function ldu(){return vu().podName}var $0t=O(()=>{R0()});function BP4(i){let u=null;return new ReadableStream({async pull(t){try{u??=i().getReader();let{done:f,value:l}=await u.read();if(f)t.close();else t.enqueue(l)}catch(f){t.error(f)}},async cancel(t){await u?.cancel(t)}},{highWaterMark:0})}function FP4(i){let u=0;async function*t(){for await(let f of i.chunks)yield{seq:++u,chunk:f}}return new ReadableStream({async start(f){try{let l=await i.loadOriginalMessages?.();await YUi({runId:i.runId,fenceToken:i.fenceToken,chunks:t(),errorMessageId:i.errorMessageId,originalMessages:l},{streamBuffer:i.streamBuffer,hooks:i.hooks,title:i.title}),f.close()}catch(l){f.error(l)}}})}function Edu(i){if(i==="claude-code")return"claude-code";if(i==="codex")return"codex";return"decopilot"}function gP4(i){let u=i.virtualMcp?.metadata?.githubRepo,t=u&&typeof u.owner==="string"&&typeof u.name==="string"?{owner:u.owner,name:u.name,connectedGithub:Boolean(u.connectionId)}:void 0;if(!t)return{cwd:null};if(i.cwd!==oY)return{cwd:null};return{cwd:oY,repo:t,branch:i.branch??null}}async function TP4(i,u,t,f){let{keyInfo:l,apiKey:E}=await i.storage.aiProviderKeys.resolve(t,u);return nGi({providerId:l.providerId,apiKey:E,modelId:f})}function d0t(i){return!("messages"in i)}function D0t(i,u){if(!i.taskId)throw Error("buildDurableDispatchInput: taskId is required");let t=i.messages.filter((f)=>f.role==="system").flatMap((f)=>f.parts).filter((f)=>f.type==="text"&&typeof f.text==="string").map((f)=>f.text).join(`
86806
+ `):void 0}var Jut;var Kut=O(()=>{Nf();am();Xut();Xvu();PGi();jvu();Kvu();XGi();JGi();Jut={id:"codex",create(i){return{id:"codex",async*stream(u){let t=idu(u.models.thinking.id),f=AGi(u.workspace.cwd),l=uP4({workspace:u.workspace,agentInstructions:u.agent.instructions});console.log(`[codex] stream start model=${t} cwd=${f??"(default)"} mcpUrl=${u.mcp.url} mode=${u.mode}`);let{model:E,provider:c}=pvu(t,iP4(u,f,l));try{let w=await yGi([u.userMessage]),h=bn({currentThreadTitle:u.currentThreadTitle})?(()=>{let{model:N,provider:Z}=pvu(idu("codex:gpt-5.6-luna"),{toolApprovalLevel:"readonly",isPlanMode:!0,cwd:f}),B=Cn({abortSignal:u.signal,models:[()=>N],userMessage:Rn(w)}),F=B.promise.finally(()=>Z.close().catch(()=>{}));return{handle:B,closed:F}})():null,v=h?.handle??null,d=n5({model:E,messages:w,abortSignal:u.signal,allowSystemInMessages:!0}),D=IGi({input:u,providerName:"codex",providerMetadataKey:"codex-app-server",extractSessionId:(N)=>typeof N?.threadId==="string"?N.threadId:void 0}),_=d.toUIMessageStream({generateMessageId:y2,messageMetadata:D});try{let N=v?jGi(_,v):_;for await(let Z of N)yield Z}catch(N){if(u.harness.sessionId&&KGi(N))throw new jp(N);throw N}finally{v?.finish(),await h?.closed.catch(()=>{})}}finally{await c.close().catch(()=>{})}}}}}});import{context as tP4,trace as fP4}from"@opentelemetry/api";function Yut(i){lP4({...i,tracer:i.ctx.tracer})}function lP4(i){try{if(!i.organizationId)return;let u=i.tracer.startSpan(Yzi),t=fP4.setSpan(tP4.active(),u),f=i.totalUsage??i.usage;Xa({type:iL,organizationId:i.organizationId,connectionId:Y1i,toolName:i.modelId,toolArguments:{model:i.modelId,credentialId:i.credentialId,threadId:i.taskId,...i.request?.body!==void 0?{requestBody:i.request.body}:{}},result:{...i.usage??{},...i.totalUsage?{totalUsage:i.totalUsage}:{},...i.cost!==void 0?{cost:i.cost}:{},...i.finishReason?{finishReason:i.finishReason}:{},...i.response?{responseId:i.response.id,responseModelId:i.response.modelId,responseTimestamp:i.response.timestamp,messages:i.response.messages}:{},logType:iL},duration:i.durationMs,isError:i.isError,errorMessage:i.errorMessage??null,userId:i.userId,requestId:i.requestId,userAgent:i.userAgent??null,virtualMcpId:i.agentId??null,properties:{model_title:i.modelTitle,credential_id:i.credentialId,thread_id:i.taskId,log_type:iL,...i.response?{response_id:i.response.id}:{},...f?{input_tokens:String(f.inputTokens),output_tokens:String(f.outputTokens),total_tokens:String(f.totalTokens)}:{},...i.cost!==void 0?{cost:String(i.cost)}:{}}},t),u.end()}catch{}}var Wut=O(()=>{n5i();qw()});function Sut(i){let{ctx:u,organizationId:t,modelId:f,durationMs:l,isError:E,inputTokens:c,outputTokens:w,cacheReadTokens:$,cacheWriteTokens:h}=i;if(!t||!f)return;let v={"connection.id":Y1i,"tool.name":f,"organization.id":t,status:E?"error":"success","error.type":E?i.errorType||"Error":""};if(u.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(l,v),u.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,v),c!=null||w!=null)u.meter.createCounter("tool.execution.tokens",{description:"Number of tokens used by LLM calls"}).add((c??0)+(w??0),v);if(($??0)>0)u.meter.createCounter("tool.execution.cache_tokens",{description:"LLM cache tokens by kind (read/write)"}).add($,{...v,kind:"read"});if((h??0)>0)u.meter.createCounter("tool.execution.cache_tokens",{description:"LLM cache tokens by kind (read/write)"}).add(h,{...v,kind:"write"})}var Lut=O(()=>{qw()});function cP4(i,u,t){if(!t)return i;let f=new Set;for(let[l,E]of u)if(t.has(l)||t.has(E))f.add(E);return Object.fromEntries(Object.entries(i).filter(([l])=>f.has(l)))}function wP4(i,u){if(!u)return i;return Object.fromEntries(Object.entries(i).filter(([t])=>EP4.has(t)||u.has(t)))}async function Qut(i,u,t){let f=Mn(i),l=u.organization,E=i.mode==="plan",c=i.toolAllowlist&&i.toolAllowlist.length>0?new Set(i.toolAllowlist):null,w=await t.mcpForAgent(i.agent.id,{superUser:!0,listTimeoutMs:1000});try{let{tools:$,nameMap:h,rawTools:v}=await BUi(w,t.toolOutputMap,t.writer,i.toolApprovalLevel,{isPlanMode:E,timeoutMs:Xvi,resolveArgs:t.resolveArgs,onToolCalled:t.onToolCalled,onPrOpened:t.onPrOpened}),d=cP4($,h,c),D=f.virtualMcp.metadata,_=await po(u,t.threadId),Z=!(_??D.githubRepo),B=i.user.id?{virtualMcpId:i.agent.id,branch:_?cUi(t.threadId,_.connectionId):Z?"ephemeral":f.branch??`thread:${t.threadId}`,userId:i.user.id,threadId:t.threadId,syncTools:!0}:null,F=await IUi(t.writer,{provider:t.provider,imageProvider:t.imageProvider,webSearchProvider:t.webSearchProvider,deepResearchProvider:t.deepResearchProvider,organization:l,models:i.models,toolApprovalLevel:i.toolApprovalLevel,isPlanMode:E,toolOutputMap:t.toolOutputMap,pendingImages:t.pendingImages,passthroughClient:w,vmContext:B,htmlArtifactBuffer:t.htmlArtifactBuffer,taskId:t.threadId,agentId:i.agent.id,onChildUsage:t.onChildUsage,backgroundDispatcher:t.backgroundDispatcher},u),g=wP4(F,c),T=[],U=new Map;for(let I of v){let j=h.get(I.name);if(!j)continue;if(c&&!c.has(I.name)&&!c.has(j))continue;let C=typeof I._meta?.gatewayClientId==="string"?I._meta.gatewayClientId:"unknown";if(T.push({rawName:I.name,safeName:j,connectionId:C}),E)U.set(j,{readOnlyHint:I.annotations?.readOnlyHint})}let A=w.getConnectionTitleMap(),G=w.getInstructions();return{tools:{...d,...g},nameMap:h,passthroughTools:d,builtInTools:g,passthroughToolList:v,connectionsBlockTools:T,toolAnnotations:U,vmContext:B,connectionTitleMap:A,serverInstructions:G,passthroughClient:w,close:async()=>{await w.close().catch(()=>{})}}}catch($){throw await w.close().catch(()=>{}),$}}var EP4;var Hut=O(()=>{wO();nEu();FUi();qn();EP4=new Set(["read_tool_output","enable_tool","open_in_agent","todo_write","update_interests"])});function zut(i){let u=$P4.exec(i);if(!u)return null;return{path:i,name:u[2],kind:u[1].toLowerCase()==="decks"?"deck":"page"}}function Rut(i,u){if(i.kind!=="file"||i.deletedAt)return null;let t=u.threadId!=null&&i.threadId===u.threadId,f=i.threadId==null&&i.updatedBy===u.ownerId;if(!t&&!f)return null;return zut(i.path)}function nut(i,u){if(!u)return null;let t=i.replace(/^\.\//,""),f=`org/${u}/`,l=t.indexOf(f);if(l!==0&&(l<0||t[l-1]!=="/"))return null;return zut(t.slice(l+f.length))}var $P4;var udu=O(()=>{$P4=/^(decks|pages)\/([a-z0-9][a-z0-9._-]*)\.html$/i});function but(i){let u=i.orgFs,t=i.organization?.slug??null,f=i.auth?.user?.id??null;if(!u||!t||!f)return vP4;let l=cg,E=i.metadata?.threadId??null,c=new Map;return{enqueue(w,$){let h=nut(w,l);if(!h)return;c.set(h.path,$)},async flush(){if(c.size===0)return;let w=[...c.entries()];c.clear(),await Promise.allSettled(w.map(async([$,h])=>{try{await u.write(hP4,$,h,{actor:f,contentType:"text/html; charset=utf-8",threadId:E})}catch(v){console.error("[deck-buffer] org-fs write failed",{path:$},v)}}))}}}var hP4="home",vP4;var Cut=O(()=>{V5i();udu();vP4={enqueue:()=>{},flush:async()=>{}}});function Mut(i,u){let t=i.orgFs,f=i.organization?.slug??null,l=i.auth?.user?.id??null;if(!t||!f||!l)return{sweep:async()=>{}};let E=cg,c={threadId:i.metadata?.threadId??null,ownerId:l},w=t.latestSeq(tdu).catch((_)=>{return console.error("[deck-watcher] cursor snapshot failed",_),null}),$=null,h=!1,v=!1,d=new Map;return{sweep:async()=>{if(v)return;v=!0;try{if(!h)$=await w,h=!0;if($===null)return;let _=new Map;for(let N=0;N<20;N++){let Z=await t.changes(tdu,$,dP4);for(let B of Z.entries){let F=Rut(B,c);if(!F)continue;if(B.contentHash){if(d.get(F.path)===B.contentHash)continue;d.set(F.path,B.contentHash)}_.set(F.path,{volume:tdu,path:F.path,name:F.name,kind:F.kind,mountPath:`org/${E}/${F.path}`})}if($=Z.cursor,!Z.hasMore)break}for(let N of _.values())u.write({type:"data-deck-updated",id:N.path,data:N})}catch(_){console.error("[deck-watcher] sweep failed",_)}finally{v=!1}}}}var tdu="home",dP4=200;var qut=O(()=>{V5i();udu()});async function DP4(i,u,t){let f=await KR({kind:t.kind,ctx:i,organization:u,virtualMcp:t.virtualMcp,mcpClient:t.mcpClient,provider:t.provider,models:t.models,messages:t.messages,abortSignal:t.abortSignal,temperature:t.temperature,planMode:t.planMode,isDecopilot:t.isDecopilot,systemAgentInstructions:t.systemAgentInstructions,currentThreadId:t.currentThreadId,user:t.user,userContext:t.userContext,codingWorkspace:t.codingWorkspace,writer:t.writer,subtaskParams:{provider:t.provider,organization:u,models:t.models,codingWorkspace:t.codingWorkspace},prepareStep:t.prepareStep,onStepFinish:t.onStepFinish,passthroughClient:t.passthroughClient,connectionsData:t.connectionsData,extraTools:t.extraTools,additionalSystemMessages:t.additionalSystemMessages,stepLimit:t.stepLimit});return{result:f.result,error:f.error,span:f.span,assembledSystemMessages:f.assembledSystemMessages}}function Vut(i){let{ctx:u,organization:t,modelRuntime:f,sideChannel:l,cleanup:E}=i,c=Mut(u,l.writer),w=but(u);return{toolRuntime:{buildEnvironmentTools:async({input:v,onChildUsage:d})=>{let D=Mn(v),_=new Map,N=[],{resolveArgs:Z,onToolCalled:B,onPrOpened:F}=JUi(u,v.threadId),g=await Qut(v,u,{writer:l.writer,toolOutputMap:_,pendingImages:N,threadId:v.threadId,resolveArgs:Z,onToolCalled:B,onPrOpened:F,mcpForAgent:async(U,A)=>{let G=D.virtualMcp,k=null;if(G.id&&v.user.id&&o1(G.metadata)[v.user.id])k=await OY(u,G.id,v.user.id,D.branch??void 0).catch(()=>null);return W2(G,u,"passthrough",A?.superUser??!1,{listTimeoutMs:A?.listTimeoutMs,includeSkillsCatalog:!0,additionalConnections:k?[k]:[]})},provider:f.thinking.provider,imageProvider:f.image?.provider??f.thinking.provider,webSearchProvider:f.webSearch?.provider??f.thinking.provider,deepResearchProvider:f.deepResearch?.provider??f.thinking.provider,backgroundDispatcher:QUi({threadId:v.threadId,orgId:v.organizationId,userId:v.user.id,agentId:v.agent.id,temperature:v.temperature,toolApprovalLevel:v.toolApprovalLevel,branch:D.branch??null}),htmlArtifactBuffer:w,onChildUsage:d}),T={tools:g.tools,passthroughTools:g.passthroughTools,builtInTools:g.builtInTools,connectionsBlockTools:g.connectionsBlockTools,toolAnnotations:g.toolAnnotations,connectionTitleMap:g.connectionTitleMap,serverInstructions:g.serverInstructions,passthroughClient:g.passthroughClient,writer:l.writer,pendingImages:N,sideChunks:l.stream,closeSideChunks:l.close,onStepFinish:async()=>{await w.flush(),await c.sweep()},close:g.close};return E.close=g.close,T},runEngine:(v)=>DP4(u,t,v)},telemetry:{recordLlmCall:(v)=>Sut({ctx:u,...v}),monitorLlmCall:(v)=>Yut({ctx:u,...v,requestId:u.metadata.requestId,userAgent:u.metadata.userAgent??null})}}}var rut=O(()=>{Wut();Lut();Rz();qUi();G$();Hut();qEu();Cut();qut();TUi();SR();qn()});function nGi(i){if(i.providerId==="openai-compatible")try{let u=JSON.parse(i.apiKey);return{kind:"secret",providerId:i.providerId,apiKey:u.apiKey??"",modelId:i.modelId,...u.baseUrl?{baseUrl:u.baseUrl}:{}}}catch{return{kind:"secret",providerId:i.providerId,apiKey:i.apiKey,modelId:i.modelId}}return{kind:"secret",providerId:i.providerId,apiKey:i.apiKey,modelId:i.modelId}}var mut=O(()=>{Hd();bQ()});var eut=O(()=>{mut()});var aut=O(()=>{git();Yit();Kut();rut();Zvu();Fvu();eut();Jit((i)=>{let u=i.ctx;return Vut({...i,ctx:u,organization:u.organization})});gGi(Kit);gGi(Fit);gGi(Jut)});function fdu(i){if(i==="codex")return"codex";if(i==="claude-code")return"claude-code";return}function out(i){return fdu(i)!==void 0}class sut{thread;organization_id;storage;defaultWindowSize;constructor(i){this.thread=i.thread,this.organization_id=i.thread.organization_id,this.storage=i.storage,this.defaultWindowSize=i.defaultWindowSize??50}async loadHistory(i){let u=i??this.defaultWindowSize,{chronological:t,isWindowed:f}=this.thread.message_storage_version===2?await this.loadWindowedFromParts(u):await this.loadWindowedFromMessages(u),l=t.find(($)=>$.role!=="system");if(!l||l.role==="user")return t;let E=l,c=f?"[Context: earlier turns in this conversation were truncated. The messages below continue the thread \u2014 pick up from there.]":"[Context: this thread opens with your message \u2014 you spoke first to greet the user, and the user has not spoken before it. Their reply follows.]";return[{id:`${this.thread.id}-msg-prefix`,thread_id:this.thread.id,role:"user",parts:[{type:"text",text:c}],metadata:void 0,created_at:E.created_at,updated_at:E.updated_at},...t]}async loadWindowedFromMessages(i){let{messages:u,total:t}=await this.storage.listMessages(this.thread.id,{limit:i,sort:"desc"});return{chronological:[...u].reverse(),isWindowed:t>u.length}}async loadWindowedFromParts(i){let{messages:u,total:t}=await this.storage.messageParts().loadWindow(this.thread.id,{limit:i});return{chronological:u.map((l)=>({id:l.id,thread_id:this.thread.id,role:l.role,parts:l.parts,metadata:l.metadata??void 0,created_at:l.created_at,updated_at:l.created_at})),isWindowed:t>u.length}}}async function bGi(i,u){let{thread_id:t,defaultWindowSize:f}=u;if(!t)throw Error("createMemory: thread_id is required");let l=await i.get(t);if(!l)throw Error(`Thread not found: ${t}`);return new sut({thread:l,storage:i,defaultWindowSize:f})}function _P4(i,u){let t=i.filter((E)=>E.parts&&E.parts.length>0),f=t.findIndex((E)=>E.id===u.id);return f>=0?[...t.slice(0,f),u]:[...t,u]}async function NP4(i){return[...i.systemMessages,..._P4(i.history,i.userMessage)]}async function put(i){let u=i.isSubagent?[]:await(await bGi(i.ctx.storage.threads,{thread_id:i.threadId,organization_id:i.ctx.organization?.id??"",userId:i.ctx.auth.user?.id??"",defaultWindowSize:i.windowSize??P5})).loadHistory(i.windowSize??P5),t=await NP4({history:u,userMessage:i.userMessage,systemMessages:i.systemMessages});return XUi(t,i.ctx)}var i0t=O(()=>{a9();WR()});function u0t(i,u){let t=i.thinking.capabilities;if(!((t?.vision??!1)||(t?.file??!1))){if(u.some((E)=>E.parts?.some((c)=>c.type==="file")))throw new G0(400,{message:"This model does not support file uploads. Please change the model and try again."})}}var t0t=O(()=>{Ch()});function OP4(i=Date.now){return oli(i)}async function*f0t(i,u={}){let t=()=>OP4(u.now),f=null,l=new Fq({intervalMs:u.intervalMs,sleepFn:u.sleepFn,emit:()=>f?.()}),E=i[Symbol.asyncIterator](),c=E.next();try{l.arm();while(!0){let w=new Promise((h)=>{f=()=>h("heartbeat")}),$=await Promise.race([c.then((h)=>({kind:"chunk",r:h})),w.then((h)=>({kind:h}))]);if(f=null,$.kind==="heartbeat"){yield t();continue}if(l.arm(),$.r.done)return;yield $.r.value,c=E.next()}}finally{l.stop(),await E.return?.(void 0).catch(()=>{})}}var l0t=O(()=>{vbi()});function mn(i,u){let t=i.capabilities?{...i.capabilities.vision!==void 0?{vision:i.capabilities.vision}:{},...i.capabilities.text!==void 0?{text:i.capabilities.text}:{},...i.capabilities.reasoning!==void 0?{reasoning:i.capabilities.reasoning}:{}}:void 0;return{id:i.id,...i.title!==void 0?{title:i.title}:{},...i.provider!==void 0?{provider:i.provider}:{},credentialId:u,...i.limits?{limits:i.limits}:{},...t&&Object.keys(t).length>0?{capabilities:t}:{}}}function E0t(i){let u=i.credentialId,t=mn(i.thinking,u);return{thinking:{...t,title:t.title??t.id},...i.fast?{fast:mn(i.fast,u)}:{},...i.smart?{smart:mn(i.smart,u)}:{},...i.image?{image:mn(i.image,i.image.credentialId??u)}:{},...i.webSearch?{webSearch:mn(i.webSearch,i.webSearch.credentialId??u)}:{},...i.deepResearch?{deepResearch:mn(i.deepResearch,i.deepResearch.credentialId??u)}:{}}}function ZP4(i,u){for(let t=i.length-1;t>=0;t--){let f=i[t],l=f?.metadata;if(f?.role==="assistant"&&l?.codingAgentSessionId&&l?.codingAgentProvider===u)return t}return-1}function c0t(i,u){let t=fdu(u);if(!t)return;let f=ZP4(i,t);if(f===-1)return;return i[f]?.metadata?.codingAgentSessionId}var w0t=()=>{};function ldu(){return vu().podName}var $0t=O(()=>{R0()});function BP4(i){let u=null;return new ReadableStream({async pull(t){try{u??=i().getReader();let{done:f,value:l}=await u.read();if(f)t.close();else t.enqueue(l)}catch(f){t.error(f)}},async cancel(t){await u?.cancel(t)}},{highWaterMark:0})}function FP4(i){let u=0;async function*t(){for await(let f of i.chunks)yield{seq:++u,chunk:f}}return new ReadableStream({async start(f){try{let l=await i.loadOriginalMessages?.();await YUi({runId:i.runId,fenceToken:i.fenceToken,chunks:t(),errorMessageId:i.errorMessageId,originalMessages:l},{streamBuffer:i.streamBuffer,hooks:i.hooks,title:i.title}),f.close()}catch(l){f.error(l)}}})}function Edu(i){if(i==="claude-code")return"claude-code";if(i==="codex")return"codex";return"decopilot"}function gP4(i){let u=i.virtualMcp?.metadata?.githubRepo,t=u&&typeof u.owner==="string"&&typeof u.name==="string"?{owner:u.owner,name:u.name,connectedGithub:Boolean(u.connectionId)}:void 0;if(!t)return{cwd:null};if(i.cwd!==oY)return{cwd:null};return{cwd:oY,repo:t,branch:i.branch??null}}async function TP4(i,u,t,f){let{keyInfo:l,apiKey:E}=await i.storage.aiProviderKeys.resolve(t,u),c=nGi({providerId:l.providerId,apiKey:E,modelId:f});if(c.providerId==="openrouter"||c.providerId==="deco"){let w=i.organization?.name??i.organization?.slug??u,$=c.providerId==="deco"?"deco AI Gateway":"Studio";return{...c,extraHeaders:{...c.extraHeaders,"X-Title":`${$} - ${w}`}}}return c}function d0t(i){return!("messages"in i)}function D0t(i,u){if(!i.taskId)throw Error("buildDurableDispatchInput: taskId is required");let t=i.messages.filter((f)=>f.role==="system").flatMap((f)=>f.parts).filter((f)=>f.type==="text"&&typeof f.text==="string").map((f)=>f.text).join(`
86807
86807
 
86808
86808
  `).trim();return{models:i.models,agent:i.agent,temperature:i.temperature,toolApprovalLevel:i.toolApprovalLevel,...i.toolAllowlist!==void 0?{toolAllowlist:i.toolAllowlist}:{},...i.maxAgentSteps!==void 0?{maxAgentSteps:i.maxAgentSteps}:{},...i.isSubagent!==void 0?{isSubagent:i.isSubagent}:{},...i.subtaskJobId!==void 0?{subtaskJobId:i.subtaskJobId}:{},...i.resumedFromBackground!==void 0?{resumedFromBackground:i.resumedFromBackground}:{},mode:i.mode,...i.windowSize!==void 0?{windowSize:i.windowSize}:{},...i.triggerId!==void 0?{triggerId:i.triggerId}:{},...i.runMetadata!==void 0?{runMetadata:i.runMetadata}:{},branch:u.branch??i.branch??null,sandboxProviderKind:u.sandboxProviderKind??i.sandboxProviderKind??null,harnessId:u.harnessId??i.harnessId??null,...u.target?{target:u.target}:{},organizationId:i.organizationId,userId:i.userId,taskId:i.taskId,messageId:u.messageId,...u.runFenceToken!==void 0?{runFenceToken:u.runFenceToken}:{},...i.isResume!==void 0?{isResume:i.isResume}:{},...t?{systemContext:t}:{}}}function UP4(i,u){let t=i.find((f)=>f.id===u);if(!t)throw new dO("empty_request",`Persisted request message missing for messageId=${u}`);if(t.role==="system")throw new dO("empty_request",`Persisted message ${u} has role=system; expected non-system request message`);return t}function _0t(i){let u=i.models;return{"decopilot.agent.id":i.agent.id,"decopilot.model.id":u.thinking.id,"decopilot.credential.id":u.credentialId,"decopilot.organization.id":i.organizationId,"decopilot.user.id":i.userId,"decopilot.thread.id":i.taskId??""}}async function N0t(i,u,t){return ezi("decopilot.dispatchRunAndWait",async(f)=>{let{taskId:l,uiStream:E,registrySignal:c}=await O0t(i,u,t,f),w=t.streamBuffer,$=w?await w.createTailStream(l,i.abortSignal,{deliverPolicy:"new",closeOnDone:!0}):null;if(w&&$){let h=w.pump(E,l,c,i.organizationId);h.catch(()=>{});let v=$.getReader();try{while(!0){let{done:d}=await v.read();if(d)break}}finally{v.releaseLock()}await h}else{if(w)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"producer-fallback-no-pump",taskId:l,hasTail:!!$,note:"createTailStream returned null \u2014 draining producer stream directly; projector persistence depends on streamBuffer publish health"}));let h=E.getReader();try{while(!0){let{done:v}=await h.read();if(v)break}}finally{h.releaseLock()}}return{taskId:l}},_0t(i))}async function AP4(i,u,t,f){let[l,E,c]=await Promise.all([i.storage.threads.list(f,{limit:9,agentId:t}).catch(()=>null),i.storage.interests.getForAgent(u,t,f).catch(()=>null),i.storage.virtualMcps.list(u).catch(()=>null)]),w={};if(l&&l.total>0)w.recentThreads={total:l.total,threads:l.threads.map(($)=>({id:$.id,title:$.title,updated_at:$.updated_at}))};if(E&&E.interests.length>0)w.interests=E.interests.map(($)=>({title:$.title,summary:$.summary}));if(c)w.agents=c.map(($)=>({id:$.id,name:$.title,description:$.description,status:$.status}));return w}async function yP4({virtualMcp:i,agentId:u,organizationId:t,ctx:f}){return L3i({virtualMcp:i,agentId:u,organizationId:t,ctx:f})}async function O0t(i,u,t,f){let{runRegistry:l,streamBuffer:E}=t;if(!d0t(i))i={...i,messages:i.messages.map(($)=>$.id?$:{...$,id:y2()})};let c=!1,w;try{let $=i.models,h=await u.storage.aiProviderKeys.findById($.credentialId,i.organizationId).catch(()=>null),v=i.harnessId??Edu(h?.providerId);f.setAttribute("decopilot.harnessId",v);let d=i.target??{sandboxProviderKind:"agent-sandbox"};if(d.sandboxProviderKind==="agent-sandbox")u.sandboxPreference="agent-sandbox";else u.sandboxPreference="user-desktop";f.setAttribute("decopilot.dispatchTarget.sandboxProviderKind",d.sandboxProviderKind);let D=Ihi({harnessId:v,sandboxProviderKind:d.sandboxProviderKind}),_=E0t($);if(v==="decopilot"){let ji=await Qv(u.db,i.organizationId,u.organization?.role??u.auth.user?.role);if(!Lv(ji,_.thinking.credentialId,_.thinking.id))throw Error("Model not allowed for your role");_=tAi(ji,_)}let N=i.windowSize??P5;if(!i.taskId)throw Error("dispatchRunAndWait: taskId is required");if(D)await n2(E,i.taskId,uo[0]);let Z=(ji)=>v==="decopilot"&&ji?TP4(u,i.organizationId,ji.credentialId,ji.id):Promise.resolve(void 0),[B,F,g,T,U,A,G,k,I]=await Promise.all([u.storage.virtualMcps.findById(i.agent.id,i.organizationId),Z(_.thinking),Z(_.fast),Z(_.smart),Z(_.image),Z(_.webSearch),Z(_.deepResearch),bGi(u.storage.threads,{organization_id:i.organizationId,thread_id:i.taskId,userId:i.userId,defaultWindowSize:N}),v==="decopilot"?AP4(u,i.organizationId,i.agent.id,i.userId):Promise.resolve(void 0)]);if(D)await n2(E,i.taskId,uo[1]);let j=F?{thinking:F,...g?{fast:g}:{},...T?{smart:T}:{},...U?{image:U}:{},...A?{webSearch:A}:{},...G?{deepResearch:G}:{}}:void 0,C=F?WGi(F):null;if(w=k.thread.id,u.metadata.threadId=k.thread.id,f.setAttribute("decopilot.thread.id",k.thread.id),k.thread.created_by!==i.userId)throw Error("You are not allowed to write to this thread because you are not the owner");if(C?.asyncResearch){let ji=[["thinking",_.thinking.id]];if(_.fast)ji.push(["fast",_.fast.id]);if(_.smart)ji.push(["smart",_.smart.id]);if(_.image)ji.push(["image",_.image.id]);for(let[R,_i]of ji)if(C.asyncResearch.canHandle(_i))throw Error(`Model "${_i}" can only be used as a Deep Research model. It is not usable as the ${R} model \u2014 set it in the Deep Research slot instead.`)}let L=k.thread.message_storage_version===2?new SE({storage:u.storage.threads.messageParts(),orgId:i.organizationId,threadId:k.thread.id,runId:k.thread.id}):null;if(!B)throw new dO("agent_not_found","Agent not found");let r=await yP4({virtualMcp:B,agentId:i.agent.id,organizationId:i.organizationId,ctx:u});if(i.isResume)await l.execute({type:"RESUME",taskId:k.thread.id,orgId:i.organizationId,userId:i.userId,abortController:new AbortController,podId:ldu()});else await l.execute({type:"START",taskId:k.thread.id,orgId:i.organizationId,userId:i.userId,abortController:new AbortController,podId:ldu(),runConfig:{models:i.models,agent:i.agent,temperature:i.temperature,toolApprovalLevel:i.toolApprovalLevel,mode:i.mode,windowSize:i.windowSize,triggerId:i.triggerId},messageId:i.messageId});c=!0,await u.storage.threads.clearCancelRequested(k.thread.id);let Q;if(i.runFenceToken)Q=i.runFenceToken;else Q=xhi(),await u.storage.threads.setRunFence(k.thread.id,Q);let ui=l.getAbortSignal(k.thread.id);if(!ui)throw await l.execute({type:"FINISH",taskId:k.thread.id,threadStatus:"failed"}),Error("Run was cancelled immediately after starting");if(i.abortSignal){let ji=i.abortSignal;if(ji.aborted)await l.execute({type:"CANCEL",taskId:k.thread.id});else ji.addEventListener("abort",()=>{l.execute({type:"CANCEL",taskId:k.thread.id}).catch(()=>{})},{once:!0})}if(!i.isResume)E?.purge(k.thread.id);let hi=[],li,ii;if(d0t(i)){if(ii=await k.loadHistory(N),li=UP4(ii,i.messageId),i.systemContext)hi=[{id:`system-${i.messageId}`,role:"system",parts:[{type:"text",text:i.systemContext}]}]}else{hi=i.messages.filter((R)=>R.role==="system");let ji=i.messages.find((R)=>R.role!=="system");if(li=ji?(await jUi([ji],u,{threadId:k.thread.id})).find((R)=>R.role!=="system"):void 0,!i.isResume){if(!li)throw new dO("empty_request","No user message found in input \u2014 expected at least one non-system message");if(L)await L.emitUserMessage(li).catch((R)=>{console.error("[decopilot:stream] v2 user-message emit failed",R)})}}if(li)await FP0(E,k.thread.id,li);let a=[],Zi=out(v)&&d.sandboxProviderKind==="user-desktop",Ei=Zi?ii??await k.loadHistory(N):void 0,Ji=Zi?c0t(Ei??[],v):void 0,Vi=u.organization,ri=Date.now(),Ci=li?(await XUi([li],u))[0]:void 0;if(!Ci||!li)throw new dO("empty_request","No user message found in input \u2014 expected at least one non-system message");u0t(i.models,[Ci]);let Di=v==="decopilot"?await put({ctx:u,threadId:k.thread.id,userMessage:li,windowSize:N,isSubagent:i.isSubagent===!0,systemMessages:hi}):void 0,Ii=v==="decopilot"?{url:"",headers:{},expiresAt:0}:await Yvi(u,i.agent.id,Vi,v==="claude-code"?"claude-code-session":"codex-session",d.sandboxProviderKind),Bi=Ii.expiresAt>0?{kind:"http",url:Ii.url,headers:Ii.headers,expiresAt:Ii.expiresAt}:void 0,$i=v!=="decopilot"&&d.sandboxProviderKind==="user-desktop"&&Vi.slug?{kind:"http",baseUrl:`${gE()}/api/${encodeURIComponent(Vi.slug)}/object-storage`,headers:Ii.headers,expiresAt:Ii.expiresAt}:void 0,ci=gP4({virtualMcp:r,branch:i.branch,cwd:d.sandboxProviderKind==="user-desktop"?oY:null}),Yi=typeof r.metadata?.instructions==="string"?r.metadata.instructions:void 0,m={taskId:i.taskId,isSubagent:i.isSubagent,subtaskJobId:i.subtaskJobId,resumedFromBackground:i.resumedFromBackground,virtualMcp:r,branch:i.branch,messages:Di,modelSources:j,mcpSource:Bi,objectStorageSource:$i,userContext:I},fi={harnessId:v,threadId:k.thread.id,userMessage:Ci,harness:{sessionId:Ji},workspace:ci,models:_,mcp:Ii,mode:i.mode,temperature:i.temperature,toolApprovalLevel:i.toolApprovalLevel,toolAllowlist:i.toolAllowlist??null,maxAgentSteps:i.maxAgentSteps,user:{id:i.userId,email:u.auth.user?.email??""},organizationId:i.organizationId,organizationSlug:Vi.slug,agent:{id:i.agent.id,instructions:Yi},triggerId:i.triggerId,currentThreadTitle:k.thread.title,runFenceToken:Q};if(D)await n2(E,i.taskId,uo[2]);let oi=async function*(){if(v!=="decopilot")throw Error(`dispatchRunAndWait runs cluster-hosted decopilot only; got "${v}" \u2014 CLI harnesses use the link transport or are rejected at the gate`);let ji={...fi,signal:ui};if(Svu(ji,m),D)await n2(E,k.thread.id,uo[3]);yield*new gvu({ctx:u,harnessId:v}).dispatch(ji)},ki=BP4(()=>FP4({runId:k.thread.id,fenceToken:Q,streamBuffer:E??{publishRawChunk:async()=>!1,publishDone:async()=>!1},chunks:f0t(oi()),errorMessageId:QN(k.thread.id,Q),loadOriginalMessages:L?async()=>(await u.storage.threads.messageParts().loadWindow(k.thread.id,{limit:1})).messages.map(lvi):void 0,title:{currentThreadTitle:k.thread.title,threadId:k.thread.id,persistTitle:async(ji,R)=>{await u.storage.threads.update(ji,{title:R})}},hooks:{onStep:()=>{let ji=l.dispatch({type:"STEP_DONE",taskId:k.thread.id});a.push(l.react(ji).catch((R)=>{console.error("[decopilot:stream] onStepFinish reactor failed",R)}))},onFinish:async(ji,R)=>{let _i=a.length,Qi=performance.now();if(await Promise.allSettled(a),h0t.record(performance.now()-Qi,{phase:"settle"}),ui.aborted)return;await P0(0);let uu=v0t?sZ():null,bi=performance.now(),Gu=fvi(R,ji?.parts);await l.execute({type:"FINISH",taskId:k.thread.id,threadStatus:Gu});let t0=performance.now()-bi;if(h0t.record(t0,{phase:"save"}),v0t&&uu){let Gf=sZ()??uu,N4=-1;try{N4=JSON.stringify(ji)?.length??-1}catch{}console.warn(JSON.stringify({msg:"decopilot-finish-trace",threadId:k.thread.id,pendingOps:_i,saveMs:Math.round(t0),parts:ji?.parts?.length??0,messageBytes:N4,rssDelta:Gf.rss-uu.rss,heapUsedDelta:Gf.heapUsed-uu.heapUsed,externalDelta:Gf.external-uu.external}))}},onError:(ji)=>{if(ui.aborted){mu.capture({distinctId:i.userId,event:"chat_message_aborted",groups:{organization:i.organizationId},properties:{organization_id:i.organizationId,thread_id:k.thread.id,agent_id:i.agent.id,model_id:_.thinking.id,mode:i.mode,duration_ms:Date.now()-ri,is_resume:i.isResume??!1}});return}console.error("[decopilot] stream error:",P$(ji)),l.execute({type:"FINISH",taskId:k.thread.id,threadStatus:"failed"}).catch((R)=>{console.error("[decopilot:stream] onError reactor failed",R)})}}}));return{taskId:k.thread.id,uiStream:ki,registrySignal:ui,runFenceToken:Q,wireHarnessInput:fi}}catch($){if(c&&w)l.execute({type:"FINISH",taskId:w,threadStatus:"failed"}).catch((h)=>{console.error("[decopilot:stream] catch-block reactor failed",h)});throw $}}async function PP4(i,u,t){if(i.target?.sandboxProviderKind!=="user-desktop")return null;let f=await u.storage.virtualMcps.findById(i.agent.id,i.organizationId).catch(()=>null);if(!f)return null;let l=f.metadata??{},E=l.githubRepo??null,c;if(E)try{let Z=E.connectionId,{cloneUrl:B,gitUserName:F,gitUserEmail:g}=Z?await(async()=>{return await hR({ctx:u,connectionId:Z,organizationId:i.organizationId,forceRefresh:!0,onLegacyMintError:(T)=>{console.warn("[prepareLinkWorkDispatch] repo-scoped legacy token mint failed",{connectionId:Z,error:T instanceof Error?T.message:String(T)})}}),qN(Z,E.owner,E.name,u.db,u.vault)})():Svi(E.owner,E.name);c={cloneUrl:B,branch:i.branch??void 0,userName:F,userEmail:g}}catch(Z){console.warn(`[prepareLinkWorkDispatch] failed to resolve clone info for agent=${i.agent.id}:`,Z instanceof Error?Z.message:String(Z))}let{runtime:w,packageManager:$,packageManagerPath:h}=hUi(l),v;if(w&&$&&(w==="node"||w==="bun"||w==="deno")&&($==="npm"||$==="pnpm"||$==="yarn"||$==="bun"||$==="deno"))v={runtime:w,packageManager:$,...h?{packageManagerPath:h}:{}};let d,D;try{if(u.objectStorage){let Z=await DUi(u.objectStorage,{isProduction:vu().nodeEnv==="production"});d=Z.hosts,D=Z.allowSameHostDev}}catch(Z){console.warn(`[prepareLinkWorkDispatch] failed to derive offload allowlist for agent=${i.agent.id}:`,Z instanceof Error?Z.message:String(Z))}let _=u.organization?.slug?await r5i(u,{orgSlug:u.organization.slug,orgId:i.organizationId,baseUrl:gE()}):void 0,N=Th({userName:u.auth.user?.name,userEmail:u.auth.user?.email});return{handle:t,...c?{repo:c}:{},...v?{workload:v}:{},...N?{operator:N}:{},...d!==void 0?{offloadAllowedHosts:d}:{},...D!==void 0?{offloadAllowSameHostDev:D}:{},..._?{orgFsConfigJson:_}:{}}}async function Z0t(i,u,t){return ezi("decopilot.prepareLinkWorkDispatch",async(f)=>{let{taskId:l,runFenceToken:E,wireHarnessInput:c}=await O0t(i,u,t,f),w=async(N)=>{throw await t.runRegistry.execute({type:"FINISH",taskId:l,threadStatus:"failed"}),Error(N)},$=c,h=null,v=Buffer.byteLength(JSON.stringify(c),"utf8");if(Weu(v))await w("prepareLinkWorkDispatch: harnessInput exceeds the link payload limit and v3 userMessage offload is not implemented");let d=null;if(i.target?.sandboxProviderKind==="user-desktop")try{let N=i.branch??"ephemeral",Z=GP4({agentId:i.agent.id,userId:await f7(u,N,i.userId),organizationId:i.organizationId,branch:N});d=await PP4(i,u,Z)}catch(N){console.warn(`[prepareLinkWorkDispatch] failed to resolve sandbox config agent=${i.agent.id}:`,N instanceof Error?N.message:String(N))}let D=u.organization?.slug??null;if(!D)D=(await u.db.selectFrom("organization").select("slug").where("id","=",i.organizationId).executeTakeFirst())?.slug??null;let _=D;if(!_)return await w(`prepareLinkWorkDispatch: could not resolve org slug for organization ${i.organizationId}`);return{taskId:l,runFenceToken:E,harnessInput:$,messagesRef:null,sandboxConfig:d,orgSlug:_}},_0t(i))}function GP4(i){let u=Jg({orgId:i.organizationId,virtualMcpId:i.agentId,branch:i.branch});return TGi({userId:i.userId,projectRef:u},i.branch)}var h0t,v0t;var cdu=O(()=>{ucu();z4();mp0();MQ();Tvu();M5();qM();xo();xR();wO();AEu();R0();aut();qn();Yvu();a9();i0t();LN();u1u();WR();t0t();to();rEu();l0t();CR();w0t();Ml();tlu();zz();J1();$0t();Z4();h0t=At.createHistogram("decopilot.finish.duration",{description:"Wall time of onFinish flush segments, tagged by phase",unit:"ms"}),v0t=process.env.DECOPILOT_FINISH_TRACE==="1"});function wdu(i,u=1e4){if(!i.body)return i;let t=kP4(i.body,u);return new Response(t,{status:i.status,statusText:i.statusText,headers:i.headers})}function kP4(i,u=1e4,t=xP4){let f=null,l=null,E=!1,c=!1,w=()=>{if(l!==null)t.clearInterval(l),l=null};return new ReadableStream({async start($){f=i.getReader();let h=()=>{if(E||c)return;try{$.enqueue(IP4)}catch{E=!0,w()}};l=t.setInterval(h,u);try{while(!0){let{done:v,value:d}=await f.read();if(v){E=!0,w(),$.close();return}let D=d.byteLength;if(D>0)c=!(D>=2&&d[D-2]===10&&d[D-1]===10);$.enqueue(d)}}catch(v){E=!0,w();try{$.error(v)}catch{}}finally{E=!0,w();try{f.releaseLock()}catch{}}},cancel($){E=!0,w(),(f??i).cancel($).catch(()=>{})}})}var IP4,xP4;var B0t=O(()=>{IP4=new TextEncoder().encode(`: keepalive
86809
86809