decocms 4.205.2 → 4.205.3

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 (224) hide show
  1. package/dist/client/assets/{AlertCircle-DT4ogH7T.js → AlertCircle-DNyRl07r.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CUMoC-gq.js → AreaChart-BLXyhfdm.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-BBoCs-vs.js → ArrowLeft-DMb1xeg8.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-fFQOhYSl.js → ArrowUp-am5_uNtA.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-BGE42lZT.js → ArrowUpRight-CQae0Phk.js} +1 -1
  6. package/dist/client/assets/{Check-CwoDm-BZ.js → Check-Dj_5OUva.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-BifN-c-M.js → CheckCircle-CaMmPFsb.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-IMS4VarS.js → ChevronDown-z8rewN8_.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-DwwxMXbJ.js → ChevronRight-BwtaIo0v.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-5rvpPh6i.js → ChevronUp-Ck9Za_Vs.js} +1 -1
  11. package/dist/client/assets/{Copy01-C8K4qVaI.js → Copy01-D_LBrNkv.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-BHB5Svc8.js → CpuChip01-BJ1Vem6e.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-BN45_sIz.js → CreditCard01-BKCCwoB6.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-B9CpFwiR.js → DotsVertical-CaBIn1AY.js} +1 -1
  15. package/dist/client/assets/{Eye-BRmj20OZ.js → Eye-DwKekAMK.js} +1 -1
  16. package/dist/client/assets/{FilterLines-C_jqY_xU.js → FilterLines-B_iKi7P5.js} +1 -1
  17. package/dist/client/assets/{Globe01-Ddac6lPc.js → Globe01-BLhh8Cgw.js} +1 -1
  18. package/dist/client/assets/{Globe04-Du0b80Uv.js → Globe04-Cn0ir2Td.js} +1 -1
  19. package/dist/client/assets/{HardDrive-D_c-C6Eg.js → HardDrive-CdH6tRZJ.js} +1 -1
  20. package/dist/client/assets/{Key01-B22jC5bn.js → Key01-CybVo0_t.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-C20sxRVe.js → LayoutLeft-lk9Ko2Pn.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-BDouqx5Q.js → LinkExternal01-C0Z06ad0.js} +1 -1
  23. package/dist/client/assets/{LogOut01-DXL6_Qr2.js → LogOut01-D7JRVvMq.js} +1 -1
  24. package/dist/client/assets/{Monitor01-C7QRCXPb.js → Monitor01-D1lYcsjH.js} +1 -1
  25. package/dist/client/assets/{Palette-tMKRKQFl.js → Palette-DSRESIFG.js} +1 -1
  26. package/dist/client/assets/{Play-UTlssgLs.js → Play-zeSsxd3Y.js} +1 -1
  27. package/dist/client/assets/{Plus-Q1colDUQ.js → Plus-CoVh9p-J.js} +1 -1
  28. package/dist/client/assets/{SearchLg-DJzGFa6n.js → SearchLg-Bp6h1sw5.js} +1 -1
  29. package/dist/client/assets/{SearchMd--SerfgxV.js → SearchMd-M0omef_V.js} +1 -1
  30. package/dist/client/assets/{Settings02-Cr2gx_1C.js → Settings02-DO2Nc3ys.js} +1 -1
  31. package/dist/client/assets/{Share07-BQBk4G5H.js → Share07-BGm6SIfX.js} +1 -1
  32. package/dist/client/assets/{Shield01-BsLY8Gmb.js → Shield01-DSrgNP0M.js} +1 -1
  33. package/dist/client/assets/{Star01-PFFRv69z.js → Star01-nR6LYpps.js} +1 -1
  34. package/dist/client/assets/{Stars01-Botvz2bI.js → Stars01-S50_uot9.js} +1 -1
  35. package/dist/client/assets/{Stars02-BobCFF3I.js → Stars02-CksdEMP5.js} +1 -1
  36. package/dist/client/assets/{Sun-BuxyFxUr.js → Sun-DFm_XfWY.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-BWjXGXL8.js → SwitchHorizontal01-Dst7SGY6.js} +1 -1
  38. package/dist/client/assets/{Tool01-CIJcWYM8.js → Tool01-D9yY3-Us.js} +1 -1
  39. package/dist/client/assets/{Tool02-CwnG6aB4.js → Tool02-CLNmrpEa.js} +1 -1
  40. package/dist/client/assets/{Trash01-BAkKcs6B.js → Trash01-HO7OtnfE.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-BKt75543.js → TrendUp01-BwDaEqEd.js} +1 -1
  42. package/dist/client/assets/{Upload01-B_-YLTnI.js → Upload01-DQY61qLr.js} +1 -1
  43. package/dist/client/assets/{User01-5DEVPoDT.js → User01-BznUEa6Z.js} +1 -1
  44. package/dist/client/assets/{Users01-A_RC1j2Z.js → Users01-D6sh1N3A.js} +1 -1
  45. package/dist/client/assets/{Users03-BztLJOTk.js → Users03-DKbunQPx.js} +1 -1
  46. package/dist/client/assets/{X-DWjGvs9Y.js → X-B2Q_xu3g.js} +1 -1
  47. package/dist/client/assets/{XCircle-zXn3UqPV.js → XCircle-B5CJiABH.js} +1 -1
  48. package/dist/client/assets/{XClose-DGX3A8va.js → XClose-B45u8xPC.js} +1 -1
  49. package/dist/client/assets/{Zap-DQK6JCpg.js → Zap-CqRnX2su.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-BMIe2avN.js → ZapSquare-DMr0tPkI.js} +1 -1
  51. package/dist/client/assets/{access-gate-DAhgJpAk.js → access-gate-BC54MUjS.js} +1 -1
  52. package/dist/client/assets/{agent-icon-C-DDTkgE.js → agent-icon-iMAcTW5p.js} +1 -1
  53. package/dist/client/assets/{agents-list-Dy2PzAv4.js → agents-list-BQvgmz79.js} +1 -1
  54. package/dist/client/assets/{ai-providers-DYnZorR6.js → ai-providers-Bvusl_Qy.js} +1 -1
  55. package/dist/client/assets/{alert-8VDkIqlq.js → alert-B2wW5wE7.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-CfzGfedS.js → alert-dialog-Cw79bxRU.js} +1 -1
  57. package/dist/client/assets/{app-editor-DbMZu-gC.js → app-editor-COqHlKYX.js} +1 -1
  58. package/dist/client/assets/{auth-D-LTL2HK.js → auth-DMYcy0Ou.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-CYmiRFqD.js → auth-catchall-COpx3a0b.js} +1 -1
  60. package/dist/client/assets/{auth-entry-QkdvZK9K.js → auth-entry-C049Wsbd.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-DxRv6e2h.js → auth-split-layout-CA4-wm9m.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-Cm1Y0dlk.js → authenticate-and-persist-oauth-CeXXb3NA.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-Cu5DjMOZ.js → automation-list-row-D6TdEPoC.js} +1 -1
  64. package/dist/client/assets/{automation-runs-DqecvFb-.js → automation-runs-D-LKA8hO.js} +1 -1
  65. package/dist/client/assets/{automations-LhZtItmx.js → automations-Csu1_5vq.js} +1 -1
  66. package/dist/client/assets/{avatar-BZeVTTOK.js → avatar-Bul78N1s.js} +1 -1
  67. package/dist/client/assets/{badge-BPCpCm8-.js → badge-prScT2iN.js} +1 -1
  68. package/dist/client/assets/{billing-B4mFcJs5.js → billing-COf5kkMG.js} +1 -1
  69. package/dist/client/assets/{block-document-DRZuLa4u.js → block-document-DWtQM-dZ.js} +1 -1
  70. package/dist/client/assets/{brand-context-DUBjWP_l.js → brand-context-BDEvgVXo.js} +1 -1
  71. package/dist/client/assets/{buckets-D_fCLOHz.js → buckets-BST1dCUP.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-qqpmkjYm.js → bulk-category-panel-aeDi007f.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-CWZpHRnD.js → capability-load-error-qbIvt61-.js} +1 -1
  74. package/dist/client/assets/{card-DyDb4Jle.js → card-D-jSnOxg.js} +1 -1
  75. package/dist/client/assets/{cards-C-CYIOTG.js → cards-BVGy6ZUW.js} +1 -1
  76. package/dist/client/assets/{category-editor-CoDQwnKr.js → category-editor-3kayX8-y.js} +1 -1
  77. package/dist/client/assets/{chat-context-BRGTVDoJ.js → chat-context-5Ho8P_iR.js} +1 -1
  78. package/dist/client/assets/{checkbox-DmQLUyKd.js → checkbox-IqLBzaWT.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-CSSTROim.js → cli-auth-success-Bz_06ulU.js} +1 -1
  80. package/dist/client/assets/{collection-detail-9_riYquc.js → collection-detail-DDNoO9ZR.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-BKNSmWCv.js → collection-display-button-BCkyIYaq.js} +1 -1
  82. package/dist/client/assets/{collection-search-D7DLkxpI.js → collection-search-BRDem_Mr.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-CUczGdsi.js → collection-table-wrapper-B2YqxUPR.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-BOt_tF0Z.js → collection-tabs-DhmeQHSZ.js} +1 -1
  85. package/dist/client/assets/{command-wAssRwCP.js → command-CUvM3h9Q.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-BKbKGvGk.js → commerce-onboarding-RJCf-zdc.js} +1 -1
  87. package/dist/client/assets/{connect-a_Kc0mv-.js → connect-COIqQlLI.js} +1 -1
  88. package/dist/client/assets/{connection-C8le19RQ.js → connection-BmptdaOp.js} +1 -1
  89. package/dist/client/assets/{connection-card-Cq1eoRdR.js → connection-card-D0M0jKw7.js} +1 -1
  90. package/dist/client/assets/{connection-detail-uHt9VtRi.js → connection-detail-Bl6Q5JeR.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-DCwoZRkE.js → connection-form-helpers-CkiT3zMV.js} +1 -1
  92. package/dist/client/assets/{connections-DeZcofvR.js → connections-DH6-7rDM.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-DwvSnXbs.js → decopilot-sse-pool-C97vdT_r.js} +1 -1
  94. package/dist/client/assets/{dialog-RctqmW5f.js → dialog-XQVS5cqr.js} +1 -1
  95. package/dist/client/assets/{domain-settings-BwEBfFTU.js → domain-settings-BYHinQmX.js} +1 -1
  96. package/dist/client/assets/{drawer-BL-rm4El.js → drawer-D291qIg5.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-OZIKRhC6.js → dropdown-menu-j3JAdZ7A.js} +1 -1
  98. package/dist/client/assets/{empty-state-mluW8SPC.js → empty-state-ChY-KASk.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-DPY7WXBa.js → extract-connection-data-Bmoq9N7a.js} +1 -1
  100. package/dist/client/assets/{file-explorer-BXu2FPoI.js → file-explorer-kk5Zyhnq.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-CwcBsPQB.js → file-type-icon-f87H9sSh.js} +1 -1
  102. package/dist/client/assets/{form-ekTJ6dzg.js → form-loX1BZs5.js} +1 -1
  103. package/dist/client/assets/{general-qziECEnS.js → general-gfEAUBqE.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-7zVikfWX.js → github-repo-picker-otnWcHoH.js} +1 -1
  105. package/dist/client/assets/{hooks-1YxcXvrI.js → hooks-Cz1j_zBd.js} +1 -1
  106. package/dist/client/assets/{index-BdmbzbDr.js → index-6DNYn3dl.js} +5 -5
  107. package/dist/client/assets/{index-BWvsPBN3.js → index-8pkK4A2d.js} +1 -1
  108. package/dist/client/assets/{index-DiIx5Gvt.js → index-BBwLwumH.js} +1 -1
  109. package/dist/client/assets/{index-UBYvdpKD.js → index-BWHQT2R7.js} +1 -1
  110. package/dist/client/assets/{index-C1KPmxzw.js → index-BwJpTLXk.js} +3 -3
  111. package/dist/client/assets/{index-DOD4Ev_Q.js → index-C40BWT9-.js} +1 -1
  112. package/dist/client/assets/{index-CywUMbfX.js → index-Cit0sIqr.js} +1 -1
  113. package/dist/client/assets/{index-BPKD15i5.js → index-CxqOfMw7.js} +1 -1
  114. package/dist/client/assets/{index-1-8hrBMG.js → index-EvKdNhEB.js} +1 -1
  115. package/dist/client/assets/{index-C4ProsEc.js → index-T_O426K_.js} +1 -1
  116. package/dist/client/assets/{index-redirect-Bvjdilku.js → index-redirect-Bwk6c7Kh.js} +1 -1
  117. package/dist/client/assets/{input-CMXTf_xX.js → input-BKpIgmDV.js} +1 -1
  118. package/dist/client/assets/{integration-icon-DeuW4yT1.js → integration-icon-Dl7vFAh0.js} +1 -1
  119. package/dist/client/assets/{invite-member-dialog-Lal4Zdch.js → invite-member-dialog-BStH7Y9F.js} +1 -1
  120. package/dist/client/assets/{label-CBGhn9yh.js → label-xgNa47EQ.js} +1 -1
  121. package/dist/client/assets/{layout-tILx2JEG.js → layout-BqFWjSO4.js} +1 -1
  122. package/dist/client/assets/{login-Be_WWg4t.js → login-nSciD7XP.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-DJVZ4GGn.js → mcp-oauth-CzANoK9Y.js} +1 -1
  124. package/dist/client/assets/{members-Cz3YClTM.js → members-CUdyHAEU.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-c2IpXYqZ.js → monaco-editor-tkRAZo7-.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-DET-MJsD.js → monitoring-stats-row-Dna8Etg_.js} +1 -1
  127. package/dist/client/assets/{multi-select-hfhWOgV7.js → multi-select-DeOFXQQe.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-l7ucoTjw.js → oauth-callback-DVIFg34s.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-ai-provider-DNSAjUPq.js → oauth-callback-ai-provider-DUViCY8h.js} +1 -1
  130. package/dist/client/assets/{onboarding-BwA88Pjz.js → onboarding-DCHoZQKi.js} +1 -1
  131. package/dist/client/assets/{org-layout-CC80_gVN.js → org-layout-DMahZevQ.js} +1 -1
  132. package/dist/client/assets/{organization-choice-2DzPnUz8.js → organization-choice-CLcM_K64.js} +1 -1
  133. package/dist/client/assets/{orgs-Bqz-FijN.js → orgs-DBF730Ls.js} +1 -1
  134. package/dist/client/assets/{page-seo-form-CdqBiIpP.js → page-seo-form-Dch1sxcv.js} +1 -1
  135. package/dist/client/assets/{popover-C0ce_fcK.js → popover-DVXsqWSU.js} +1 -1
  136. package/dist/client/assets/{post-editor-UlxOV2eD.js → post-editor-CM-yniZ9.js} +1 -1
  137. package/dist/client/assets/{primitives-C_Sw0giD.js → primitives-C_JwQhYW.js} +1 -1
  138. package/dist/client/assets/{profile-GzGqsplI.js → profile-blhG44by.js} +1 -1
  139. package/dist/client/assets/{project-app-view-BQMc0ZDe.js → project-app-view-BKMug1KN.js} +1 -1
  140. package/dist/client/assets/record-editor-CKQbUrDG.js +1 -0
  141. package/dist/client/assets/{redirect-editor-BCf_CGXs.js → redirect-editor-sL_MhGJB.js} +1 -1
  142. package/dist/client/assets/registry-Dg32YaAR.js +2 -0
  143. package/dist/client/assets/{registry-layout-BAUuoPuq.js → registry-layout-9-HsVNOa.js} +1 -1
  144. package/dist/client/assets/{reports-1qQ-xrMf.js → reports-DoR9Z74Z.js} +1 -1
  145. package/dist/client/assets/{require-capability-Dv7RzEaX.js → require-capability-_IDlI0Bx.js} +1 -1
  146. package/dist/client/assets/{required-auth-layout-B0w8q8h4.js → required-auth-layout-CZnHp3Es.js} +1 -1
  147. package/dist/client/assets/{reset-password-DSNTDue1.js → reset-password-SuW5T4X_.js} +1 -1
  148. package/dist/client/assets/{roles-BLO-NvYm.js → roles-BUNKcqll.js} +1 -1
  149. package/dist/client/assets/{search-input-B80ackAh.js → search-input-BVsK7eEJ.js} +1 -1
  150. package/dist/client/assets/{secrets-YfluQU11.js → secrets-DlX1i1d9.js} +1 -1
  151. package/dist/client/assets/{sections-editor-DvVbKrXY.js → sections-editor-BBQ2cGB5.js} +1 -1
  152. package/dist/client/assets/{select-CWYubPco.js → select-CmPW7Mbc.js} +1 -1
  153. package/dist/client/assets/{select-model-DDAHC-f0.js → select-model-CAdm1EkY.js} +1 -1
  154. package/dist/client/assets/{self-tool-result-CbcsfrLH.js → self-tool-result-x-pvudt-.js} +1 -1
  155. package/dist/client/assets/{seo-editor-gor1NZux.js → seo-editor-BY5XdetI.js} +1 -1
  156. package/dist/client/assets/{settings-layout-DgIcloas.js → settings-layout-B7LEK02W.js} +1 -1
  157. package/dist/client/assets/{settings-section-d2uXEQIW.js → settings-section-jdiJSK1p.js} +1 -1
  158. package/dist/client/assets/{shell-controls-C5bmuK3U.js → shell-controls-DWcfbxcO.js} +1 -1
  159. package/dist/client/assets/{shell-layout-Ywi2J373.js → shell-layout-P4ayLvnl.js} +1 -1
  160. package/dist/client/assets/{sidebar-CykWDHgi.js → sidebar-DFn2K1_p.js} +1 -1
  161. package/dist/client/assets/{skeleton-DEqFi2K3.js → skeleton-00d7l2Od.js} +1 -1
  162. package/dist/client/assets/{spinner-B-Et2Rql.js → spinner-C1h38aMd.js} +1 -1
  163. package/dist/client/assets/{sso-WhK7Glkp.js → sso-BfyNlGlm.js} +1 -1
  164. package/dist/client/assets/{store-iTMn61AS.js → store-CCCRstks.js} +1 -1
  165. package/dist/client/assets/store-registry-DT_Iierh.js +2 -0
  166. package/dist/client/assets/{studio-tools-D9rGQPxm.js → studio-tools-Cr1rBS5W.js} +1 -1
  167. package/dist/client/assets/{switch-hgFRSh80.js → switch-BeIMWt_3.js} +1 -1
  168. package/dist/client/assets/{synced-repos-FySBqK5k.js → synced-repos-DwB2Rdii.js} +1 -1
  169. package/dist/client/assets/{tab-id-DnVMEJgY.js → tab-id-BEcJ0qYM.js} +1 -1
  170. package/dist/client/assets/{table-X-NkiHIu.js → table-ETs7pgGr.js} +1 -1
  171. package/dist/client/assets/{tabs-CBAQOMey.js → tabs-CWeptkWi.js} +1 -1
  172. package/dist/client/assets/{textarea-CfCykLsx.js → textarea-C_LPzQzK.js} +1 -1
  173. package/dist/client/assets/{toggle-group-DSfSES7Z.js → toggle-group-BDtL_YzV.js} +1 -1
  174. package/dist/client/assets/{toolbar-CTozWbiD.js → toolbar-B-UgoADs.js} +1 -1
  175. package/dist/client/assets/{tooltip-CpJiwq4X.js → tooltip-CEkzy5_u.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-8oxmwtvB.js → use-ai-providers-DMycdqpY.js} +1 -1
  177. package/dist/client/assets/{use-automations-C-CYQomu.js → use-automations-DUiJPqOn.js} +1 -1
  178. package/dist/client/assets/{use-autosave-CsbIheZz.js → use-autosave-CXKaZ6CK.js} +1 -1
  179. package/dist/client/assets/{use-capability-BPv-RiGf.js → use-capability-pSOmEs21.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-BOGk9zyU.js → use-clock-tick-B4KmdsZl.js} +1 -1
  181. package/dist/client/assets/{use-connection-DM3HSMSQ.js → use-connection-D8YWiOXI.js} +1 -1
  182. package/dist/client/assets/{use-copy-BMO4yQox.js → use-copy-d6A5qYJH.js} +1 -1
  183. package/dist/client/assets/{use-create-virtual-mcp-BJPqZDRq.js → use-create-virtual-mcp-S918ao1F.js} +1 -1
  184. package/dist/client/assets/{use-debounced-autosave-DAHuGXYG.js → use-debounced-autosave-CcuW_o0d.js} +1 -1
  185. package/dist/client/assets/{use-debounced-value-Ckt9Zohs.js → use-debounced-value-Cc8H9Y7A.js} +1 -1
  186. package/dist/client/assets/{use-deco-credits-DIvaze32.js → use-deco-credits-D2wX7Gn4.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-BOfGPnP3.js → use-decopilot-events-C01aEO9v.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-CEPVFkka.js → use-delete-connection-BtRPCPDK.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-fcH1uOfX.js → use-deployment-admin-BJypE1aj.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-Dr_t9ZJG.js → use-file-configs-DA_XIxnA.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-DrSDlnaP.js → use-infinite-scroll-CeE1cmvi.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-miAhbcpj.js → use-join-requests-Cx3GSy99.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-Id-huKGb.js → use-mcp-client-BT5_JvUF.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-1AXW6cKy.js → use-mcp-tools-OwLVtcDL.js} +1 -1
  195. package/dist/client/assets/{use-members-BW5AInzP.js → use-members-DMTcwT8b.js} +1 -1
  196. package/dist/client/assets/{use-mobile-DOUfE59G.js → use-mobile-BEMYXY8X.js} +1 -1
  197. package/dist/client/assets/{use-navigate-to-agent-DPYeYLWV.js → use-navigate-to-agent-BIzKXNSB.js} +1 -1
  198. package/dist/client/assets/{use-open-billing-url-C-tDZIKU.js → use-open-billing-url-DpoP6d-L.js} +1 -1
  199. package/dist/client/assets/{use-org-auth-client-CX7xcPjj.js → use-org-auth-client-DeSyItiJ.js} +1 -1
  200. package/dist/client/assets/{use-org-sso-B04U2ggi.js → use-org-sso-ChCIpWEL.js} +1 -1
  201. package/dist/client/assets/{use-organization-roles-DAWdJy95.js → use-organization-roles-DMvCuTky.js} +1 -1
  202. package/dist/client/assets/{use-organization-settings-BB4jWajK.js → use-organization-settings-CDwpCjQ4.js} +1 -1
  203. package/dist/client/assets/{use-registry-connections-BcY5Rc2i.js → use-registry-connections-CVtpK_IL.js} +1 -1
  204. package/dist/client/assets/{use-secrets-DaBsQ4R7.js → use-secrets-DMWNrzfP.js} +1 -1
  205. package/dist/client/assets/{use-section-preview-base-CpJHSOY-.js → use-section-preview-base-BQieR9VK.js} +1 -1
  206. package/dist/client/assets/{use-status-sounds-D3MytbK8.js → use-status-sounds-C3TABQk8.js} +1 -1
  207. package/dist/client/assets/{use-tags-CSUg0q_3.js → use-tags-AW5DZW_B.js} +1 -1
  208. package/dist/client/assets/{use-view-mode-BmMHlKNA.js → use-view-mode-CTHo7Cni.js} +1 -1
  209. package/dist/client/assets/{use-virtual-mcp-DBlf_6gT.js → use-virtual-mcp-DfyqQSqA.js} +1 -1
  210. package/dist/client/assets/useInfiniteQuery-DTYpL5Dk.js +1 -0
  211. package/dist/client/assets/{useRouterState-Bhd7F5_V.js → useRouterState-DcvWYS4n.js} +1 -1
  212. package/dist/client/assets/useSuspenseInfiniteQuery-5SsnA51s.js +1 -0
  213. package/dist/client/assets/{users-COsoPIBa.js → users-C_mSSKV-.js} +1 -1
  214. package/dist/client/assets/{variant-calendar-ChpZdRh_.js → variant-calendar-BjU9WgH3.js} +1 -1
  215. package/dist/client/assets/{view-mode-toggle-BppWi5ko.js → view-mode-toggle-PD0f9zgf.js} +1 -1
  216. package/dist/client/index.html +1 -1
  217. package/dist/server/cli.js +4 -4
  218. package/dist/server/server.js +4 -4
  219. package/package.json +1 -1
  220. package/dist/client/assets/record-editor-C2k0YqCy.js +0 -1
  221. package/dist/client/assets/registry-DkCxx0B2.js +0 -2
  222. package/dist/client/assets/store-registry-DVLoUwwk.js +0 -2
  223. package/dist/client/assets/useInfiniteQuery-IHwGk8aa.js +0 -1
  224. package/dist/client/assets/useSuspenseInfiniteQuery-CP80kQ5s.js +0 -1
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var sl1=O(()=>{hx()});f
1332
1332
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await wb`
1333
1333
  DELETE FROM kysely_migration WHERE name = ${X}
1334
1334
  `.execute($)}}async function Lp1($){await td6($),await od6($);let Z=new Bp1({db:$,provider:{getMigrations:()=>Promise.resolve(ld0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function rd6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Fu0();let G=X??N6(),J=async()=>{if(!Z&&!X)await Pw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Lp1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function ad6(){let $=N6(),Z=new Bp1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ld0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Ep1=O(()=>{wp1();wu0();e7()});async function I90($){let Z={...process.env},X=E10($,Z);console.log(_w1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?km1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (f50(),x50)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (wu0(),Cm1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (e7(),pd1)),{migrateToLatest:U}=await Promise.resolve().then(() => (Ep1(),Dp1)),N=H(G.databaseUrl);await U({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return el1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var dd0=O(()=>{hx();Sm1();v8()});var Pp1={};B0(Pp1,{updateService:()=>ZE,subscribeCliState:()=>nd0,setTuiConsoleIntercepted:()=>q90,setServerUrl:()=>am,setMigrationsDone:()=>rm,setDevMode:()=>$m6,resetCliStateForTests:()=>sd6,isTuiConsoleIntercepted:()=>M90,getCliState:()=>id0,addLogEntry:()=>qw});function zp1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function sd6(){fQ=zp1()}function ed6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function om(){for(let $ of md0)$()}function id0(){return fQ}function nd0($){return md0.add($),()=>md0.delete($)}function ZE($){fQ={...fQ,services:fQ.services.map((Z)=>Z.name===$.name?$:Z)},om()}function rm(){fQ={...fQ,migrationsStatus:"done"},om()}function am($){fQ={...fQ,serverUrl:$},om()}function qw($){let Z=[...fQ.logs,$];fQ={...fQ,logs:Z.length>500?Z.slice(-500):Z},om()}function $m6(){fQ={...fQ,services:[...ed6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},om()}function q90($){jp1=$}function M90(){return jp1}var fQ,md0,jp1=!1;var XE=O(()=>{fQ=zp1();md0=new Set});import{createServer as Ap1}from"net";function Zm6($){return new Promise((Z)=>{let X=Ap1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function sm($){if(await Zm6($))return $;let Z=await new Promise((X,Q)=>{let Y=Ap1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var pd0=()=>{};function em($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var td0={};B0(td0,{startDevServer:()=>Qm6});import{join as Xm6}from"path";function Tp1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1335
- `);Q=G.pop()??"";for(let J of G){let K=em(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=em(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Qm6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await sm(Number(Y)+1):await sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await I90({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)ZE({name:L.name,status:"ready",port:L.port});rm();let U=Xm6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Tp1(F.stdout),Tp1(F.stderr);am(G),ZE({name:"Vite",status:"ready",port:Number(Y)}),ZE({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (f50(),x50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var od0=O(()=>{dd0();XE();pd0()});var V90;var rd0=O(()=>{V90={name:"decocms",version:"4.205.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Gm6,Text as Rp1}from"ink";import{jsx as Jm6,jsxs as Ip1}from"react/jsx-runtime";function qp1({version:$}){return Ip1(Gm6,{flexDirection:"column",marginTop:1,children:[X90.map((Z,X)=>Jm6(Rp1,{color:Q90[X],children:Z},X)),Ip1(Rp1,{dimColor:!0,children:[" v",$]})]})}var Mp1=O(()=>{gm()});import{Box as QE,Text as Mw}from"ink";import{Spinner as Km6}from"@inkjs/ui";import{jsx as iY,jsxs as Bb}from"react/jsx-runtime";function Vp1({status:$}){if($==="pending")return iY(Km6,{label:""});return iY(Mw,{color:"green",children:"\u2713"})}function Wm6($){return`${$.name}: ${$.port||"...."}`}function kp1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Bb(QE,{flexDirection:"column",paddingBottom:1,children:[iY(qp1,{version:V90.version}),iY(QE,{marginBottom:1,children:iY(Mw,{dimColor:!0,children:"\u2500".repeat(80)})}),iY(QE,{children:Bb(Mw,{dimColor:!0,children:["Home: ",X]})}),Bb(QE,{gap:2,children:[$.map((Y)=>Bb(QE,{gap:1,children:[iY(Mw,{children:Wm6(Y)}),iY(Vp1,{status:Y.status})]},Y.name)),Bb(QE,{gap:1,children:[iY(Mw,{children:"Migrations"}),iY(Vp1,{status:Z})]})]}),iY(QE,{children:Q?Bb(Mw,{children:["Open in browser: ",iY(Mw,{color:"cyan",children:Q})]}):iY(Mw,{dimColor:!0,children:"Starting..."})})]})}var Sp1=O(()=>{rd0();Mp1()});import{Box as Hm6,Text as $i}from"ink";import{jsx as ad0,jsxs as sd0}from"react/jsx-runtime";function Um6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Cp1({logs:$}){return ad0(Hm6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return ad0($i,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return sd0($i,{children:[sd0($i,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ad0($i,{color:Um6(Z.status),children:Z.status}),sd0($i,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var _p1=()=>{};var ed0={};B0(ed0,{App:()=>wm6});import{Box as Nm6}from"ink";import{useSyncExternalStore as Fm6}from"react";import{jsx as vp1,jsxs as Bm6}from"react/jsx-runtime";function wm6({home:$}){let Z=Fm6(nd0,id0);return Bm6(Nm6,{flexDirection:"column",children:[vp1(kp1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),vp1(Cp1,{logs:Z.logs})]})}var $m0=O(()=>{Sp1();_p1();XE()});var jJ="thread-gate",bU="decopilot-hosted-harness",rG="automations",Vw="background-tools";var xp1="7";function fp1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:xp1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var bp1=()=>{};function Om6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Zm0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function yp1(){let $=Om6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Zm0($,"--cpu-prof-dir")??process.cwd(),name:Zm0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Zm0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function gp1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=aD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),k90=setInterval(()=>void Z().catch(()=>{}),$),k90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(k90)clearInterval(k90)}}var k90;var hp1=()=>{};import*as Lm6 from"bun:jsc";function up1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Dm6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Em6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Dm6,Em6;var cp1=O(()=>{({startSamplingProfiler:Dm6,samplingProfilerStackTraces:Em6}=Lm6)});function lp1(){yp1();let $=[gp1(),hd1(),up1()];return()=>{for(let Z of $)Z()}}var dp1=O(()=>{Xu0();hp1();cp1()});var YE=_((mp1)=>{Object.defineProperty(mp1,"__esModule",{value:!0});mp1.RepublishHeaders=mp1.DirectMsgHeaders=mp1.JsHeaders=mp1.AdvisoryKind=void 0;mp1.isOrderedPushConsumerOptions=zm6;mp1.isPullConsumer=jm6;mp1.isPushConsumer=Pm6;mp1.isBoundPushConsumerOptions=Am6;function zm6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function jm6($){return $.isPullConsumer()}function Pm6($){return $.isPushConsumer()}function Am6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}mp1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};mp1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};mp1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};mp1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var nY=_((np1)=>{Object.defineProperty(np1,"__esModule",{value:!0});np1.TD=np1.TE=np1.Empty=void 0;np1.encode=Cm6;np1.decode=_m6;np1.Empty=new Uint8Array(0);np1.TE=new TextEncoder;np1.TD=new TextDecoder;function Sm6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Cm6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(np1.TE.encode($[X]));if(Z.length===0)return np1.Empty;if(Z.length===1)return Z[0];return Sm6(...Z)}function _m6($){if(!$||$.length===0)return"";return np1.TD.decode($)}});var pY=_((op1)=>{Object.defineProperty(op1,"__esModule",{value:!0});op1.errors=op1.PermissionViolationError=op1.NoRespondersError=op1.TimeoutError=op1.RequestError=op1.ProtocolError=op1.ConnectionError=op1.DrainingConnectionError=op1.ClosedConnectionError=op1.AuthorizationError=op1.UserAuthenticationExpiredError=op1.InvalidOperationError=op1.InvalidArgumentError=op1.InvalidSubjectError=void 0;class Qm0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}op1.InvalidSubjectError=Qm0;class S90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new S90(`${$} ${Z}`,X)}}op1.InvalidArgumentError=S90;class Ym0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}op1.InvalidOperationError=Ym0;class C90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new C90($);return null}}op1.UserAuthenticationExpiredError=C90;class _90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new _90($);return null}}op1.AuthorizationError=_90;class Gm0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}op1.ClosedConnectionError=Gm0;class Jm0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}op1.DrainingConnectionError=Jm0;class Km0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}op1.ConnectionError=Km0;class Wm0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}op1.ProtocolError=Wm0;class Hm0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof v90}}op1.RequestError=Hm0;class Um0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}op1.TimeoutError=Um0;class v90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}op1.NoRespondersError=v90;class x90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new x90($,X,Q,Y)}}op1.PermissionViolationError=x90;op1.errors={AuthorizationError:_90,ClosedConnectionError:Gm0,ConnectionError:Km0,DrainingConnectionError:Jm0,InvalidArgumentError:S90,InvalidOperationError:Ym0,InvalidSubjectError:Qm0,NoRespondersError:v90,PermissionViolationError:x90,ProtocolError:Wm0,RequestError:Hm0,TimeoutError:Um0,UserAuthenticationExpiredError:C90}});var PJ=_(($t1)=>{Object.defineProperty($t1,"__esModule",{value:!0});$t1.SimpleMutex=$t1.Perf=void 0;$t1.extend=om6;$t1.render=rm6;$t1.timeout=am6;$t1.delay=sm6;$t1.deadline=em6;$t1.deferred=Fm0;$t1.debugDeferred=$i6;$t1.shuffle=Zi6;$t1.collect=Xi6;$t1.jitter=ep1;$t1.backoff=Qi6;$t1.nanos=Yi6;$t1.millis=Gi6;$t1.randomToken=Wi6;var tm6=nY(),Nm0=pY();function om6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function rm6($){return tm6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function am6($,Z=!0){let X=Z?new Nm0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Nm0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function sm6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function em6($,Z=1000){let X=Fm0(),Q=setTimeout(()=>{X.reject(new Nm0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Fm0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function $i6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Zi6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Xi6($){let Z=[];for await(let X of $)Z.push(X);return Z}class ap1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}$t1.Perf=ap1;class sp1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Fm0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}$t1.SimpleMutex=sp1;function ep1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Qi6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ep1(X>Z?$[Z]:$[X])}}}function Yi6($){return $*1e6}function Gi6($){return Math.floor($/1e6)}var Ji6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",yU=new Uint8Array(62);for(let $=0;$<62;$++)yU[$]=Ji6.charCodeAt($);var Ki6=218340105584896;function Wi6(){let $=Math.floor(Math.random()*Ki6),Z=$%62,X=yU[Z];$=($-Z)/62,Z=$%62;let Q=yU[Z];$=($-Z)/62,Z=$%62;let Y=yU[Z];$=($-Z)/62,Z=$%62;let G=yU[Z];$=($-Z)/62,Z=$%62;let J=yU[Z];$=($-Z)/62,Z=$%62;let K=yU[Z];$=($-Z)/62,Z=$%62;let W=yU[Z];$=($-Z)/62;let H=yU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Wt1=_((Jt1)=>{Object.defineProperty(Jt1,"__esModule",{value:!0});Jt1.nuid=Jt1.NuidImpl=void 0;var Ri6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kw=62,b90=12,Yt1=10,Xt1=33,Ii6=333,Qt1=b90+Yt1,Bm0=new Uint8Array(kw);for(let $=0;$<kw;$++)Bm0[$]=Ri6.charCodeAt($);var f90=4294967296,Gt1=BigInt(kw)**BigInt(Yt1),Zi=Number(Gt1/(1n<<32n)),wm0=Number(Gt1%(1n<<32n));function qi6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Mi6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else qi6($)}class Om0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Qt1),this.cbuf=new Uint8Array(b90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Zi+1)),this.seqLo=Math.floor(Math.random()*f90);while($++<8&&this.seqHi===Zi&&this.seqLo>=wm0);if(this.seqHi===Zi&&this.seqLo>=wm0)this.seqLo=0;this.inc=Math.random()*(Ii6-Xt1)+Xt1|0}setPre(){Mi6(this.cbuf);for(let $=0;$<b90;$++)this.buf[$]=Bm0[this.cbuf[$]%kw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Qt1-1;X>=b90;X--){let Q=Math.floor($/kw),G=($-Q*kw)*f90+Z,J=Math.floor(G/kw),K=G-J*kw;this.buf[X]=Bm0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=f90)this.seqLo-=f90,this.seqHi+=1;if(this.seqHi>Zi||this.seqHi===Zi&&this.seqLo>=wm0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Jt1.NuidImpl=Om0;Jt1.nuid=new Om0});var Ft1=_((Ut1)=>{Object.defineProperty(Ut1,"__esModule",{value:!0});Ut1.nuid=Ut1.Nuid=void 0;var Ht1=Wt1();Ut1.Nuid=Ht1.NuidImpl;Ut1.nuid=Ht1.nuid});var g90=_((y90)=>{Object.defineProperty(y90,"__esModule",{value:!0});y90.nuid=y90.Nuid=void 0;var wt1=Ft1();Object.defineProperty(y90,"Nuid",{enumerable:!0,get:function(){return wt1.Nuid}});Object.defineProperty(y90,"nuid",{enumerable:!0,get:function(){return wt1.nuid}})});var Sw=_((Bt1)=>{Object.defineProperty(Bt1,"__esModule",{value:!0});Bt1.DEFAULT_HOST=Bt1.DEFAULT_PORT=Bt1.Match=void 0;Bt1.syncIterator=vi6;Bt1.createInbox=xi6;var Ci6=g90(),_i6=pY();Bt1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function vi6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function xi6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw _i6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ci6.nuid.next()}`}Bt1.DEFAULT_PORT=4222;Bt1.DEFAULT_HOST="127.0.0.1"});var Xi=_((Et1)=>{Object.defineProperty(Et1,"__esModule",{value:!0});Et1.DataBuffer=void 0;var Lt1=nY();class Dt1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Lt1.TE.encode($)}static toAscii($){return Lt1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Et1.DataBuffer=Dt1});var GE=_((Pt1)=>{Object.defineProperty(Pt1,"__esModule",{value:!0});Pt1.LF=Pt1.CR=Pt1.CRLF=Pt1.CR_LF_LEN=Pt1.CR_LF=void 0;Pt1.setTransportFactory=li6;Pt1.defaultPort=di6;Pt1.getUrlParseFn=mi6;Pt1.newTransport=ii6;Pt1.getResolveFn=ni6;Pt1.protoLen=jt1;Pt1.extractProtocolMessage=pi6;var hi6=nY(),ui6=Sw(),ci6=Xi(),tY;function li6($){tY=$}function di6(){return tY!==void 0&&tY.defaultPort!==void 0?tY.defaultPort:ui6.DEFAULT_PORT}function mi6(){return tY!==void 0&&tY.urlParseFn?tY.urlParseFn:void 0}function ii6(){if(!tY||typeof tY.factory!=="function")throw Error("transport fn is not set");return tY.factory()}function ni6(){return tY!==void 0&&tY.dnsResolveFn?tY.dnsResolveFn:void 0}Pt1.CR_LF=`\r
1335
+ `);Q=G.pop()??"";for(let J of G){let K=em(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=em(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)qw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Qm6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await sm(Number(Y)+1):await sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await I90({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)ZE({name:L.name,status:"ready",port:L.port});rm();let U=Xm6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Tp1(F.stdout),Tp1(F.stderr);am(G),ZE({name:"Vite",status:"ready",port:Number(Y)}),ZE({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (f50(),x50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var od0=O(()=>{dd0();XE();pd0()});var V90;var rd0=O(()=>{V90={name:"decocms",version:"4.205.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Gm6,Text as Rp1}from"ink";import{jsx as Jm6,jsxs as Ip1}from"react/jsx-runtime";function qp1({version:$}){return Ip1(Gm6,{flexDirection:"column",marginTop:1,children:[X90.map((Z,X)=>Jm6(Rp1,{color:Q90[X],children:Z},X)),Ip1(Rp1,{dimColor:!0,children:[" v",$]})]})}var Mp1=O(()=>{gm()});import{Box as QE,Text as Mw}from"ink";import{Spinner as Km6}from"@inkjs/ui";import{jsx as iY,jsxs as Bb}from"react/jsx-runtime";function Vp1({status:$}){if($==="pending")return iY(Km6,{label:""});return iY(Mw,{color:"green",children:"\u2713"})}function Wm6($){return`${$.name}: ${$.port||"...."}`}function kp1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Bb(QE,{flexDirection:"column",paddingBottom:1,children:[iY(qp1,{version:V90.version}),iY(QE,{marginBottom:1,children:iY(Mw,{dimColor:!0,children:"\u2500".repeat(80)})}),iY(QE,{children:Bb(Mw,{dimColor:!0,children:["Home: ",X]})}),Bb(QE,{gap:2,children:[$.map((Y)=>Bb(QE,{gap:1,children:[iY(Mw,{children:Wm6(Y)}),iY(Vp1,{status:Y.status})]},Y.name)),Bb(QE,{gap:1,children:[iY(Mw,{children:"Migrations"}),iY(Vp1,{status:Z})]})]}),iY(QE,{children:Q?Bb(Mw,{children:["Open in browser: ",iY(Mw,{color:"cyan",children:Q})]}):iY(Mw,{dimColor:!0,children:"Starting..."})})]})}var Sp1=O(()=>{rd0();Mp1()});import{Box as Hm6,Text as $i}from"ink";import{jsx as ad0,jsxs as sd0}from"react/jsx-runtime";function Um6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Cp1({logs:$}){return ad0(Hm6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return ad0($i,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return sd0($i,{children:[sd0($i,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ad0($i,{color:Um6(Z.status),children:Z.status}),sd0($i,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var _p1=()=>{};var ed0={};B0(ed0,{App:()=>wm6});import{Box as Nm6}from"ink";import{useSyncExternalStore as Fm6}from"react";import{jsx as vp1,jsxs as Bm6}from"react/jsx-runtime";function wm6({home:$}){let Z=Fm6(nd0,id0);return Bm6(Nm6,{flexDirection:"column",children:[vp1(kp1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),vp1(Cp1,{logs:Z.logs})]})}var $m0=O(()=>{Sp1();_p1();XE()});var jJ="thread-gate",bU="decopilot-hosted-harness",rG="automations",Vw="background-tools";var xp1="7";function fp1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:xp1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var bp1=()=>{};function Om6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Zm0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function yp1(){let $=Om6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Zm0($,"--cpu-prof-dir")??process.cwd(),name:Zm0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Zm0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function gp1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=aD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),k90=setInterval(()=>void Z().catch(()=>{}),$),k90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(k90)clearInterval(k90)}}var k90;var hp1=()=>{};import*as Lm6 from"bun:jsc";function up1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Dm6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Em6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Dm6,Em6;var cp1=O(()=>{({startSamplingProfiler:Dm6,samplingProfilerStackTraces:Em6}=Lm6)});function lp1(){yp1();let $=[gp1(),hd1(),up1()];return()=>{for(let Z of $)Z()}}var dp1=O(()=>{Xu0();hp1();cp1()});var YE=_((mp1)=>{Object.defineProperty(mp1,"__esModule",{value:!0});mp1.RepublishHeaders=mp1.DirectMsgHeaders=mp1.JsHeaders=mp1.AdvisoryKind=void 0;mp1.isOrderedPushConsumerOptions=zm6;mp1.isPullConsumer=jm6;mp1.isPushConsumer=Pm6;mp1.isBoundPushConsumerOptions=Am6;function zm6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function jm6($){return $.isPullConsumer()}function Pm6($){return $.isPushConsumer()}function Am6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}mp1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};mp1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};mp1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};mp1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var nY=_((np1)=>{Object.defineProperty(np1,"__esModule",{value:!0});np1.TD=np1.TE=np1.Empty=void 0;np1.encode=Cm6;np1.decode=_m6;np1.Empty=new Uint8Array(0);np1.TE=new TextEncoder;np1.TD=new TextDecoder;function Sm6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Cm6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(np1.TE.encode($[X]));if(Z.length===0)return np1.Empty;if(Z.length===1)return Z[0];return Sm6(...Z)}function _m6($){if(!$||$.length===0)return"";return np1.TD.decode($)}});var pY=_((op1)=>{Object.defineProperty(op1,"__esModule",{value:!0});op1.errors=op1.PermissionViolationError=op1.NoRespondersError=op1.TimeoutError=op1.RequestError=op1.ProtocolError=op1.ConnectionError=op1.DrainingConnectionError=op1.ClosedConnectionError=op1.AuthorizationError=op1.UserAuthenticationExpiredError=op1.InvalidOperationError=op1.InvalidArgumentError=op1.InvalidSubjectError=void 0;class Qm0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}op1.InvalidSubjectError=Qm0;class S90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new S90(`${$} ${Z}`,X)}}op1.InvalidArgumentError=S90;class Ym0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}op1.InvalidOperationError=Ym0;class C90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new C90($);return null}}op1.UserAuthenticationExpiredError=C90;class _90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new _90($);return null}}op1.AuthorizationError=_90;class Gm0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}op1.ClosedConnectionError=Gm0;class Jm0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}op1.DrainingConnectionError=Jm0;class Km0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}op1.ConnectionError=Km0;class Wm0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}op1.ProtocolError=Wm0;class Hm0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof v90}}op1.RequestError=Hm0;class Um0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}op1.TimeoutError=Um0;class v90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}op1.NoRespondersError=v90;class x90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new x90($,X,Q,Y)}}op1.PermissionViolationError=x90;op1.errors={AuthorizationError:_90,ClosedConnectionError:Gm0,ConnectionError:Km0,DrainingConnectionError:Jm0,InvalidArgumentError:S90,InvalidOperationError:Ym0,InvalidSubjectError:Qm0,NoRespondersError:v90,PermissionViolationError:x90,ProtocolError:Wm0,RequestError:Hm0,TimeoutError:Um0,UserAuthenticationExpiredError:C90}});var PJ=_(($t1)=>{Object.defineProperty($t1,"__esModule",{value:!0});$t1.SimpleMutex=$t1.Perf=void 0;$t1.extend=om6;$t1.render=rm6;$t1.timeout=am6;$t1.delay=sm6;$t1.deadline=em6;$t1.deferred=Fm0;$t1.debugDeferred=$i6;$t1.shuffle=Zi6;$t1.collect=Xi6;$t1.jitter=ep1;$t1.backoff=Qi6;$t1.nanos=Yi6;$t1.millis=Gi6;$t1.randomToken=Wi6;var tm6=nY(),Nm0=pY();function om6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function rm6($){return tm6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function am6($,Z=!0){let X=Z?new Nm0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Nm0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function sm6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function em6($,Z=1000){let X=Fm0(),Q=setTimeout(()=>{X.reject(new Nm0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Fm0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function $i6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Zi6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Xi6($){let Z=[];for await(let X of $)Z.push(X);return Z}class ap1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}$t1.Perf=ap1;class sp1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Fm0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}$t1.SimpleMutex=sp1;function ep1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Qi6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ep1(X>Z?$[Z]:$[X])}}}function Yi6($){return $*1e6}function Gi6($){return Math.floor($/1e6)}var Ji6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",yU=new Uint8Array(62);for(let $=0;$<62;$++)yU[$]=Ji6.charCodeAt($);var Ki6=218340105584896;function Wi6(){let $=Math.floor(Math.random()*Ki6),Z=$%62,X=yU[Z];$=($-Z)/62,Z=$%62;let Q=yU[Z];$=($-Z)/62,Z=$%62;let Y=yU[Z];$=($-Z)/62,Z=$%62;let G=yU[Z];$=($-Z)/62,Z=$%62;let J=yU[Z];$=($-Z)/62,Z=$%62;let K=yU[Z];$=($-Z)/62,Z=$%62;let W=yU[Z];$=($-Z)/62;let H=yU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Wt1=_((Jt1)=>{Object.defineProperty(Jt1,"__esModule",{value:!0});Jt1.nuid=Jt1.NuidImpl=void 0;var Ri6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",kw=62,b90=12,Yt1=10,Xt1=33,Ii6=333,Qt1=b90+Yt1,Bm0=new Uint8Array(kw);for(let $=0;$<kw;$++)Bm0[$]=Ri6.charCodeAt($);var f90=4294967296,Gt1=BigInt(kw)**BigInt(Yt1),Zi=Number(Gt1/(1n<<32n)),wm0=Number(Gt1%(1n<<32n));function qi6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Mi6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else qi6($)}class Om0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Qt1),this.cbuf=new Uint8Array(b90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Zi+1)),this.seqLo=Math.floor(Math.random()*f90);while($++<8&&this.seqHi===Zi&&this.seqLo>=wm0);if(this.seqHi===Zi&&this.seqLo>=wm0)this.seqLo=0;this.inc=Math.random()*(Ii6-Xt1)+Xt1|0}setPre(){Mi6(this.cbuf);for(let $=0;$<b90;$++)this.buf[$]=Bm0[this.cbuf[$]%kw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Qt1-1;X>=b90;X--){let Q=Math.floor($/kw),G=($-Q*kw)*f90+Z,J=Math.floor(G/kw),K=G-J*kw;this.buf[X]=Bm0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=f90)this.seqLo-=f90,this.seqHi+=1;if(this.seqHi>Zi||this.seqHi===Zi&&this.seqLo>=wm0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Jt1.NuidImpl=Om0;Jt1.nuid=new Om0});var Ft1=_((Ut1)=>{Object.defineProperty(Ut1,"__esModule",{value:!0});Ut1.nuid=Ut1.Nuid=void 0;var Ht1=Wt1();Ut1.Nuid=Ht1.NuidImpl;Ut1.nuid=Ht1.nuid});var g90=_((y90)=>{Object.defineProperty(y90,"__esModule",{value:!0});y90.nuid=y90.Nuid=void 0;var wt1=Ft1();Object.defineProperty(y90,"Nuid",{enumerable:!0,get:function(){return wt1.Nuid}});Object.defineProperty(y90,"nuid",{enumerable:!0,get:function(){return wt1.nuid}})});var Sw=_((Bt1)=>{Object.defineProperty(Bt1,"__esModule",{value:!0});Bt1.DEFAULT_HOST=Bt1.DEFAULT_PORT=Bt1.Match=void 0;Bt1.syncIterator=vi6;Bt1.createInbox=xi6;var Ci6=g90(),_i6=pY();Bt1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function vi6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function xi6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw _i6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ci6.nuid.next()}`}Bt1.DEFAULT_PORT=4222;Bt1.DEFAULT_HOST="127.0.0.1"});var Xi=_((Et1)=>{Object.defineProperty(Et1,"__esModule",{value:!0});Et1.DataBuffer=void 0;var Lt1=nY();class Dt1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Lt1.TE.encode($)}static toAscii($){return Lt1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Et1.DataBuffer=Dt1});var GE=_((Pt1)=>{Object.defineProperty(Pt1,"__esModule",{value:!0});Pt1.LF=Pt1.CR=Pt1.CRLF=Pt1.CR_LF_LEN=Pt1.CR_LF=void 0;Pt1.setTransportFactory=li6;Pt1.defaultPort=di6;Pt1.getUrlParseFn=mi6;Pt1.newTransport=ii6;Pt1.getResolveFn=ni6;Pt1.protoLen=jt1;Pt1.extractProtocolMessage=pi6;var hi6=nY(),ui6=Sw(),ci6=Xi(),tY;function li6($){tY=$}function di6(){return tY!==void 0&&tY.defaultPort!==void 0?tY.defaultPort:ui6.DEFAULT_PORT}function mi6(){return tY!==void 0&&tY.urlParseFn?tY.urlParseFn:void 0}function ii6(){if(!tY||typeof tY.factory!=="function")throw Error("transport fn is not set");return tY.factory()}function ni6(){return tY!==void 0&&tY.dnsResolveFn?tY.dnsResolveFn:void 0}Pt1.CR_LF=`\r
1336
1336
  `;Pt1.CR_LF_LEN=Pt1.CR_LF.length;Pt1.CRLF=ci6.DataBuffer.fromAscii(Pt1.CR_LF);Pt1.CR=new Uint8Array(Pt1.CRLF)[0];Pt1.LF=new Uint8Array(Pt1.CRLF)[1];function jt1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Pt1.CR&&$[X]===Pt1.LF)return X+1}return 0}function pi6($){let Z=jt1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return hi6.TD.decode(Q)}return""}});var jm0=_((kt1)=>{Object.defineProperty(kt1,"__esModule",{value:!0});kt1.ipV4=qt1;kt1.isIP=Yn6;kt1.parseIP=Mt1;var Qi=4,JE=16,h90=48,It1=57,Tt1=65,Xn6=70,Rt1=97,Qn6=102,zm0=16777215;function qt1($,Z,X,Q){let Y=new Uint8Array(JE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function Yn6($){return Mt1($)!==void 0}function Mt1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Vt1($);case":":return Gn6($)}return}function Vt1($){let Z=new Uint8Array(Qi);for(let X=0;X<Qi;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Jn6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return qt1(Z[0],Z[1],Z[2],Z[3])}function Gn6($){let Z=new Uint8Array(JE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<JE){let{n:Y,c:G,ok:J}=Kn6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=JE-Qi)return;if(Q+Qi>JE)return;let K=Vt1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=Qi;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<JE){if(X<0)return;let Y=JE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function Jn6($){let Z=0,X=0;for(Z=0;Z<$.length&&h90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=It1;Z++)if(X=X*10+($.charCodeAt(Z)-h90),X>=zm0)return{n:zm0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Kn6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(h90<=$.charCodeAt(X)&&$.charCodeAt(X)<=It1)Z*=16,Z+=$.charCodeAt(X)-h90;else if(Rt1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Qn6)Z*=16,Z+=$.charCodeAt(X)-Rt1+10;else if(Tt1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Xn6)Z*=16,Z+=$.charCodeAt(X)-Tt1+10;else break;if(Z>=zm0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var qm0=_((Ct1)=>{Object.defineProperty(Ct1,"__esModule",{value:!0});Ct1.Servers=Ct1.ServerImpl=void 0;Ct1.isIPV4OrHostname=St1;Ct1.hostPort=Im0;var Pm0=GE(),Am0=PJ(),Tm0=jm0(),Nn6=Sw(),Fn6=pY();function St1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Rm0($){return!St1($)}function wn6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Im0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=wn6($),Rm0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Rm0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Nn6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Ob{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Im0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Tm0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Rm0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Ob(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Am0.shuffle)(Z);return this.resolves=Z,Z}}Ct1.ServerImpl=Ob;class u90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Fn6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Pm0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Im0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Ob(Y))}if(this.randomize)(0,Am0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Tm0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Pm0.getUrlParseFn)();$=X?X($):$;let Q=new Ob($,Z);if((0,Tm0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return u90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return u90.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Pm0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Ob(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Am0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Ct1.Servers=u90});var c90=_((ft1)=>{Object.defineProperty(ft1,"__esModule",{value:!0});ft1.QueuedIteratorImpl=void 0;var Mm0=PJ(),vt1=pY();class xt1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Mm0.deferred)(),this.yields=[],this.iterClosed=(0,Mm0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new vt1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new vt1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Mm0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}ft1.QueuedIteratorImpl=xt1});var Vm0=_((ht1)=>{Object.defineProperty(ht1,"__esModule",{value:!0});ht1.MuxSubscription=void 0;var Dn6=Sw(),yt1=pY();class gt1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Dn6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new yt1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new yt1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}ht1.MuxSubscription=gt1});var km0=_((lt1)=>{Object.defineProperty(lt1,"__esModule",{value:!0});lt1.Heartbeat=void 0;var En6=PJ();class ct1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,En6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}lt1.Heartbeat=ct1});var _m0=_((pt1)=>{Object.defineProperty(pt1,"__esModule",{value:!0});pt1.DenoBuffer=pt1.MAX_SIZE=pt1.AssertionError=void 0;pt1.assert=it1;pt1.concat=nt1;pt1.append=jn6;pt1.readAll=Pn6;pt1.writeAll=An6;var zn6=nY();class Sm0 extends Error{constructor($){super($);this.name="AssertionError"}}pt1.AssertionError=Sm0;function it1($,Z="Assertion failed."){if(!$)throw new Sm0(Z)}var mt1=32768;pt1.MAX_SIZE=4294967294;function l90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function nt1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function jn6($,Z){return nt1($,Uint8Array.of(Z))}class Cm0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){it1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=l90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(zn6.TE.encode($))}write($){let Z=this._grow($.byteLength);return l90($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)l90(this._buf.subarray(this._off),this._buf);else if(Q+$>pt1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,pt1.MAX_SIZE));l90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,pt1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(mt1);while(!0){let Q=this.capacity-this.length<mt1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}pt1.DenoBuffer=Cm0;function Pn6($){let Z=new Cm0;return Z.readFrom($),Z.bytes()}function An6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var fm0=_((st1)=>{Object.defineProperty(st1,"__esModule",{value:!0});st1.cc=st1.State=st1.Parser=st1.Kind=void 0;st1.describe=kn6;var vm0=_m0(),xm0=nY();st1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function kn6($){let Z,X="";switch($.kind){case st1.Kind.MSG:Z="MSG";break;case st1.Kind.OK:Z="OK";break;case st1.Kind.ERR:Z="ERR",X=xm0.TD.decode($.data);break;case st1.Kind.PING:Z="PING";break;case st1.Kind.PONG:Z="PONG";break;case st1.Kind.INFO:Z="INFO",X=xm0.TD.decode($.data)}return`${Z}: ${X}`}function ot1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var rt1=48,Sn6=57,Lb=67108864;class at1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=st1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case st1.State.OP_START:switch(X){case st1.cc.M:case st1.cc.m:this.state=st1.State.OP_M,this.hdr=-1,this.ma=ot1();break;case st1.cc.H:case st1.cc.h:this.state=st1.State.OP_H,this.hdr=0,this.ma=ot1();break;case st1.cc.P:case st1.cc.p:this.state=st1.State.OP_P;break;case st1.cc.PLUS:this.state=st1.State.OP_PLUS;break;case st1.cc.MINUS:this.state=st1.State.OP_MINUS;break;case st1.cc.I:case st1.cc.i:this.state=st1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_H:switch(X){case st1.cc.M:case st1.cc.m:this.state=st1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_M:switch(X){case st1.cc.S:case st1.cc.s:this.state=st1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MS:switch(X){case st1.cc.G:case st1.cc.g:this.state=st1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MSG:switch(X){case st1.cc.SPACE:case st1.cc.TAB:this.state=st1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MSG_SPC:switch(X){case st1.cc.SPACE:case st1.cc.TAB:continue;default:this.state=st1.State.MSG_ARG,this.as=Z}break;case st1.State.MSG_ARG:switch(X){case st1.cc.CR:this.drop=1;break;case st1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=st1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case st1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:st1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=st1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:st1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=st1.State.MSG_END;break;case st1.State.MSG_END:switch(X){case st1.cc.NL:this.drop=0,this.as=Z+1,this.state=st1.State.OP_START;break;default:continue}break;case st1.State.OP_PLUS:switch(X){case st1.cc.O:case st1.cc.o:this.state=st1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PLUS_O:switch(X){case st1.cc.K:case st1.cc.k:this.state=st1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PLUS_OK:switch(X){case st1.cc.NL:this.dispatcher.push({kind:st1.Kind.OK}),this.drop=0,this.state=st1.State.OP_START;break}break;case st1.State.OP_MINUS:switch(X){case st1.cc.E:case st1.cc.e:this.state=st1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_E:switch(X){case st1.cc.R:case st1.cc.r:this.state=st1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_ER:switch(X){case st1.cc.R:case st1.cc.r:this.state=st1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_ERR:switch(X){case st1.cc.SPACE:case st1.cc.TAB:this.state=st1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_MINUS_ERR_SPC:switch(X){case st1.cc.SPACE:case st1.cc.TAB:continue;default:this.state=st1.State.MINUS_ERR_ARG,this.as=Z}break;case st1.State.MINUS_ERR_ARG:switch(X){case st1.cc.CR:this.drop=1;break;case st1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:st1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=st1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case st1.State.OP_P:switch(X){case st1.cc.I:case st1.cc.i:this.state=st1.State.OP_PI;break;case st1.cc.O:case st1.cc.o:this.state=st1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PO:switch(X){case st1.cc.N:case st1.cc.n:this.state=st1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PON:switch(X){case st1.cc.G:case st1.cc.g:this.state=st1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PONG:switch(X){case st1.cc.NL:this.dispatcher.push({kind:st1.Kind.PONG}),this.drop=0,this.state=st1.State.OP_START;break}break;case st1.State.OP_PI:switch(X){case st1.cc.N:case st1.cc.n:this.state=st1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PIN:switch(X){case st1.cc.G:case st1.cc.g:this.state=st1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_PING:switch(X){case st1.cc.NL:this.dispatcher.push({kind:st1.Kind.PING}),this.drop=0,this.state=st1.State.OP_START;break}break;case st1.State.OP_I:switch(X){case st1.cc.N:case st1.cc.n:this.state=st1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_IN:switch(X){case st1.cc.F:case st1.cc.f:this.state=st1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_INF:switch(X){case st1.cc.O:case st1.cc.o:this.state=st1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_INFO:switch(X){case st1.cc.SPACE:case st1.cc.TAB:this.state=st1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case st1.State.OP_INFO_SPC:switch(X){case st1.cc.SPACE:case st1.cc.TAB:continue;default:this.state=st1.State.INFO_ARG,this.as=Z}break;case st1.State.INFO_ARG:switch(X){case st1.cc.CR:this.drop=1;break;case st1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:st1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=st1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===st1.State.MSG_ARG||this.state===st1.State.MINUS_ERR_ARG||this.state===st1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new vm0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===st1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new vm0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new vm0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case st1.cc.SPACE:case st1.cc.TAB:case st1.cc.CR:case st1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Lb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Lb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${xm0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case st1.cc.SPACE:case st1.cc.TAB:case st1.cc.CR:case st1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Lb),this.ma.size=this.protoParseInt(Z[3],Lb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Lb),this.ma.size=this.protoParseInt(Z[4],Lb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<rt1||$[Q]>Sn6)return-1;X=X*10+($[Q]-rt1)}return Z!==void 0&&X>Z?-1:X}}st1.Parser=at1;st1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};st1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var i90=_(($o1)=>{Object.defineProperty($o1,"__esModule",{value:!0});$o1.MsgHdrsImpl=void 0;$o1.canonicalMIMEHeaderKey=ym0;$o1.headers=vn6;var et1=nY(),AJ=Sw(),m90=pY();function ym0($){let U=!0,N=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw m90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(U&&97<=w&&w<=122)w-=32;else if(!U&&65<=w&&w<=90)w+=32;N[F]=w,U=w==45}return String.fromCharCode(...N)}function vn6($=0,Z=""){if($===0&&Z!=="")throw m90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw m90.InvalidArgumentError.format("description","is required");return new Db($,Z)}var bm0="NATS/1.0";class Db{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Db,Q=et1.TD.decode($).split(`\r
1337
1337
  `),Y=Q[0];if(Y!==bm0){let G=Y.replace(bm0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=bm0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1338
1338
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2741,12 +2741,12 @@ Guidelines:
2741
2741
  ${B}`:`[Uploaded files \u2014 use these URLs when calling tools]
2742
2742
  ${B}`,D=new Map(w.flatMap((A)=>A.dataUrl?[[A.dataUrl,A.studioStorageUrl]]:[])),E=G.parts.map((A)=>{if(A.type!=="file"||!("url"in A)||typeof A.url!=="string")return A;let P=D.get(A.url);if(!P)return A;return{...A,url:P}}),z=E.findIndex((A)=>A.type==="text"),j;if(z!==-1)j=E.map((A,P)=>{if(P!==z||A.type!=="text")return A;return{...A,text:`${L}
2743
2743
 
2744
- ${"text"in A?A.text:""}`.trim()}});else j=[{type:"text",text:L},...E];return[...$.slice(0,Y),{...G,parts:j},...$.slice(Y+1)]}async function ij0($,Z){if(!Z.organization)return $;let X=$.map((K)=>{let W=K.parts.filter((H)=>!wl4(H));return W.length===K.parts.length?K:{...K,parts:W}}),Q=new Set;for(let K of X)for(let W of K.parts)if(W.type==="file"&&"url"in W&&typeof W.url==="string"){let H=Vr(W.url);if(H)Q.add(H)}let Y=AH(),G=new Map;if(await Promise.all(Array.from(Q).map(async(K)=>{let W=await _r(K,Z);if(!W)return;if(Y&&!W.startsWith("https://"))try{let H=await Z.objectStorage.getBytes(K);if(H.byteLength<=uV8){G.set(K,{kind:"bytes",b64:Buffer.from(H).toString("base64")});return}console.warn(`[file-materializer] dev inline skipped (${H.byteLength}B > ${uV8}B):`,K)}catch(H){console.error("[file-materializer] dev inline read failed; passing URL through:",H)}G.set(K,{kind:"url",url:W})})),G.size===0)return El4(X,Z);return X.map((K)=>{let W=K.parts.map((U)=>{if(U.type==="file"&&"url"in U&&typeof U.url==="string"){let N=Vr(U.url);if(N){let F=G.get(N);if(F?.kind==="url")return{...U,url:F.url};if(F?.kind==="bytes"){let w="mediaType"in U&&typeof U.mediaType==="string"?U.mediaType:"application/octet-stream";return{...U,url:`data:${w};base64,${F.b64}`}}}}return U});return W.some((U,N)=>U!==K.parts[N])?{...K,parts:W}:K})}async function nV8($,Z){let X=new Set;if(H51($,X),X.size===0)return $;let Q=new Map;if(await Promise.all(Array.from(X).map(async(Y)=>{let G=await _r(Y,Z);if(G)Q.set(Y,G)})),Q.size===0)return $;return U51($,Q)}function H51($,Z){if(typeof $==="string")for(let X of $.matchAll(i$1()))Z.add(X[1]);else if(Array.isArray($))for(let X of $)H51(X,Z);else if($!==null&&typeof $==="object")for(let X of Object.values($))H51(X,Z)}function U51($,Z){if(typeof $==="string")return $.replace(i$1(),(X,Q)=>Z.get(Q)??M7(Q));if(Array.isArray($))return $.map((X)=>U51(X,Z));if($!==null&&typeof $==="object")return Object.fromEntries(Object.entries($).map(([X,Q])=>[X,U51(Q,Z)]));return $}async function El4($,Z){let X=$.findLastIndex((H)=>H.role==="user");if(X===-1)return $;let Q=$[X],Y=Q.parts.filter((H)=>H.type==="file"&&("url"in H)&&typeof H.url==="string"&&H.url.startsWith("data:"));if(Y.length===0)return $;let J=(await Promise.all(Y.map(async(H)=>{if(H.type!=="file"||!("url"in H)||typeof H.url!=="string")return null;let U=mV8(H.url);if(!U)return null;let N=W51(U.mimeType),F=`chat-uploads/${crypto.randomUUID()}.${N}`,w=await Bl4(U.bytes,F,U.mimeType,Z);if(!w)return null;let B=await _r(w,Z);return B?{dataUrl:H.url,presigned:B}:null}))).filter((H)=>H!==null);if(J.length===0)return $;let K=new Map(J.map((H)=>[H.dataUrl,H.presigned])),W=Q.parts.map((H)=>{if(H.type!=="file"||!("url"in H)||typeof H.url!=="string")return H;let U=K.get(H.url);return U?{...H,url:U}:H});return[...$.slice(0,X),{...Q,parts:W},...$.slice(X+1)]}var Fl4,Ol4=604800,uV8=20971520,Ll4,Dl4;var uh=O(()=>{m_();Vb();KW();hV8();Fl4=new Set(["application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]);Ll4=/^\[file::\/\/(.+?)\]$/,Dl4=/^\[file::\/\/(.+?)\]\n([\s\S]*)$/});import{sql as zl4}from"kysely";function N51($){let Z=(X)=>X instanceof Date?X.toISOString():X;return{id:$.id,taskBoardItemId:$.task_board_item_id,parentId:$.parent_id,authorId:$.author_id,body:$.body,resolved:$.resolved,createdAt:Z($.created_at),updatedAt:Z($.updated_at)}}function pV8($){if($&&typeof $==="object"&&!Array.isArray($)){let Z=$.text;if(typeof Z==="string"&&Z.trim())return Z.trim()}return null}function F51($){if($.status!=="in_progress")return!1;let Z=$.threads.filter((X)=>X.hasMessages);if(Z.length===0)return!1;if(!Z.every((X)=>X.status!==null&&vr.has(X.status)))return!1;return Z.some((X)=>X.status==="completed")}function jl4($){let Z=typeof $==="string"?(()=>{try{return JSON.parse($)}catch{return null}})():$;if(!Z||typeof Z!=="object")return!1;let X=Z.githubRepo?.url;return typeof X==="string"&&X.length>0}class mN{db;constructor($){this.db=$}inTransaction($){return this.db.isTransaction?$(this.db):this.db.transaction().execute($)}async list($){let X=(await this.db.selectFrom("task_board_items").selectAll().where("organization_id","=",$).where("dismissed_at","is",null).orderBy("sort_order","asc").execute()).map((Q)=>this.itemFromDbRow(Q));return await this.attachRefs(X,$),X}async getById($,Z){let X=await this.db.selectFrom("task_board_items").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!X)return null;let Q=this.itemFromDbRow(X);return await this.attachRefs([Q],Z),Q}async create($){let Z=Z4("board"),X=new Date().toISOString(),Q=$.status??"triage",Y=await this.db.insertInto("task_board_items").values({id:Z,organization_id:$.organizationId,title:$.title,description:$.description??null,status:Q,priority:$.priority??"medium",assignee_id:$.assigneeId??null,assigned_by:$.assignedBy??null,repo:$.repo??null,due_date:$.dueDate??null,external_key:$.externalKey??null,sort_order:zl4`(
2744
+ ${"text"in A?A.text:""}`.trim()}});else j=[{type:"text",text:L},...E];return[...$.slice(0,Y),{...G,parts:j},...$.slice(Y+1)]}async function ij0($,Z){if(!Z.organization)return $;let X=$.map((K)=>{let W=K.parts.filter((H)=>!wl4(H));return W.length===K.parts.length?K:{...K,parts:W}}),Q=new Set;for(let K of X)for(let W of K.parts)if(W.type==="file"&&"url"in W&&typeof W.url==="string"){let H=Vr(W.url);if(H)Q.add(H)}let Y=AH(),G=new Map;if(await Promise.all(Array.from(Q).map(async(K)=>{let W=await _r(K,Z);if(!W)return;if(Y&&!W.startsWith("https://"))try{let H=await Z.objectStorage.getBytes(K);if(H.byteLength<=uV8){G.set(K,{kind:"bytes",b64:Buffer.from(H).toString("base64")});return}console.warn(`[file-materializer] dev inline skipped (${H.byteLength}B > ${uV8}B):`,K)}catch(H){console.error("[file-materializer] dev inline read failed; passing URL through:",H)}G.set(K,{kind:"url",url:W})})),G.size===0)return El4(X,Z);return X.map((K)=>{let W=K.parts.map((U)=>{if(U.type==="file"&&"url"in U&&typeof U.url==="string"){let N=Vr(U.url);if(N){let F=G.get(N);if(F?.kind==="url")return{...U,url:F.url};if(F?.kind==="bytes"){let w="mediaType"in U&&typeof U.mediaType==="string"?U.mediaType:"application/octet-stream";return{...U,url:`data:${w};base64,${F.b64}`}}}}return U});return W.some((U,N)=>U!==K.parts[N])?{...K,parts:W}:K})}async function nV8($,Z){let X=new Set;if(H51($,X),X.size===0)return $;let Q=new Map;if(await Promise.all(Array.from(X).map(async(Y)=>{let G=await _r(Y,Z);if(G)Q.set(Y,G)})),Q.size===0)return $;return U51($,Q)}function H51($,Z){if(typeof $==="string")for(let X of $.matchAll(i$1()))Z.add(X[1]);else if(Array.isArray($))for(let X of $)H51(X,Z);else if($!==null&&typeof $==="object")for(let X of Object.values($))H51(X,Z)}function U51($,Z){if(typeof $==="string")return $.replace(i$1(),(X,Q)=>Z.get(Q)??M7(Q));if(Array.isArray($))return $.map((X)=>U51(X,Z));if($!==null&&typeof $==="object")return Object.fromEntries(Object.entries($).map(([X,Q])=>[X,U51(Q,Z)]));return $}async function El4($,Z){let X=$.findLastIndex((H)=>H.role==="user");if(X===-1)return $;let Q=$[X],Y=Q.parts.filter((H)=>H.type==="file"&&("url"in H)&&typeof H.url==="string"&&H.url.startsWith("data:"));if(Y.length===0)return $;let J=(await Promise.all(Y.map(async(H)=>{if(H.type!=="file"||!("url"in H)||typeof H.url!=="string")return null;let U=mV8(H.url);if(!U)return null;let N=W51(U.mimeType),F=`chat-uploads/${crypto.randomUUID()}.${N}`,w=await Bl4(U.bytes,F,U.mimeType,Z);if(!w)return null;let B=await _r(w,Z);return B?{dataUrl:H.url,presigned:B}:null}))).filter((H)=>H!==null);if(J.length===0)return $;let K=new Map(J.map((H)=>[H.dataUrl,H.presigned])),W=Q.parts.map((H)=>{if(H.type!=="file"||!("url"in H)||typeof H.url!=="string")return H;let U=K.get(H.url);return U?{...H,url:U}:H});return[...$.slice(0,X),{...Q,parts:W},...$.slice(X+1)]}var Fl4,Ol4=604800,uV8=20971520,Ll4,Dl4;var uh=O(()=>{m_();Vb();KW();hV8();Fl4=new Set(["application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]);Ll4=/^\[file::\/\/(.+?)\]$/,Dl4=/^\[file::\/\/(.+?)\]\n([\s\S]*)$/});import{sql as zl4}from"kysely";function N51($){let Z=(X)=>X instanceof Date?X.toISOString():X;return{id:$.id,taskBoardItemId:$.task_board_item_id,parentId:$.parent_id,authorId:$.author_id,body:$.body,resolved:$.resolved,createdAt:Z($.created_at),updatedAt:Z($.updated_at)}}function pV8($){if($&&typeof $==="object"&&!Array.isArray($)){let Z=$.text;if(typeof Z==="string"&&Z.trim())return Z.trim()}return null}function F51($,Z=!1){if($.status!=="in_progress")return!1;let X=$.threads.filter((Q)=>Q.hasMessages);if(X.length===0)return!1;if($.repo!=null&&!Z)return!1;if(!X.every((Q)=>Q.status!==null&&vr.has(Q.status)))return!1;return X.some((Q)=>Q.status==="completed")}function jl4($){let Z=typeof $==="string"?(()=>{try{return JSON.parse($)}catch{return null}})():$;if(!Z||typeof Z!=="object")return!1;let X=Z.githubRepo?.url;return typeof X==="string"&&X.length>0}class mN{db;constructor($){this.db=$}inTransaction($){return this.db.isTransaction?$(this.db):this.db.transaction().execute($)}async list($){let X=(await this.db.selectFrom("task_board_items").selectAll().where("organization_id","=",$).where("dismissed_at","is",null).orderBy("sort_order","asc").execute()).map((Q)=>this.itemFromDbRow(Q));return await this.attachRefs(X,$),X}async getById($,Z){let X=await this.db.selectFrom("task_board_items").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!X)return null;let Q=this.itemFromDbRow(X);return await this.attachRefs([Q],Z),Q}async create($){let Z=Z4("board"),X=new Date().toISOString(),Q=$.status??"triage",Y=await this.db.insertInto("task_board_items").values({id:Z,organization_id:$.organizationId,title:$.title,description:$.description??null,status:Q,priority:$.priority??"medium",assignee_id:$.assigneeId??null,assigned_by:$.assignedBy??null,repo:$.repo??null,due_date:$.dueDate??null,external_key:$.externalKey??null,sort_order:zl4`(
2745
2745
  select coalesce(min(sort_order), 0) - 1
2746
2746
  from task_board_items
2747
2747
  where organization_id = ${$.organizationId}
2748
2748
  and status = ${Q}
2749
- )`,created_by:$.by,created_at:X,updated_by:$.by,updated_at:X}).returningAll().executeTakeFirstOrThrow();return this.itemFromDbRow(Y)}async update($,Z,X,Q){let Y=await this.db.updateTable("task_board_items").set({...X.title!==void 0?{title:X.title}:{},...X.description!==void 0?{description:X.description}:{},...X.status!==void 0?{status:X.status}:{},...X.priority!==void 0?{priority:X.priority}:{},...X.assigneeId!==void 0?{assignee_id:X.assigneeId}:{},...X.assignedBy!==void 0?{assigned_by:X.assignedBy}:{},...X.repo!==void 0?{repo:X.repo}:{},...X.dueDate!==void 0?{due_date:X.dueDate}:{},...X.sortOrder!==void 0?{sort_order:X.sortOrder}:{},updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).returningAll().executeTakeFirstOrThrow(),G=this.itemFromDbRow(Y);return await this.attachRefs([G],Z),G}async delete($,Z,X){return this.inTransaction(async(Q)=>{let Y=await Q.selectFrom("task_board_items").select(["created_by"]).where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!Y)return!1;if(sQ({createdBy:Y.created_by}))return await Q.updateTable("task_board_items").set({dismissed_at:new Date().toISOString(),updated_by:X}).where("id","=",$).where("organization_id","=",Z).where("dismissed_at","is",null).execute(),!0;return await Q.deleteFrom("task_board_item_threads").where("task_board_item_id","=",$).where("organization_id","=",Z).execute(),await Q.deleteFrom("task_board_item_prs").where("task_board_item_id","=",$).where("organization_id","=",Z).execute(),await Q.deleteFrom("task_board_items").where("id","=",$).where("organization_id","=",Z).execute(),!0})}async dismissedFindingKeys($,Z){if(Z.length===0)return new Set;let X=await this.db.selectFrom("task_board_items").select(["external_key"]).where("organization_id","=",$).where("external_key","in",Z).where("dismissed_at","is not",null).execute();return new Set(X.flatMap((Q)=>Q.external_key??[]))}async listDismissedFindings($){return(await this.db.selectFrom("task_board_items").select(["external_key","updated_by","dismissed_at"]).where("organization_id","=",$).where("dismissed_at","is not",null).orderBy("dismissed_at","desc").execute()).flatMap((X)=>X.external_key&&X.dismissed_at?[{externalKey:X.external_key,dismissedBy:X.updated_by,dismissedAt:X.dismissed_at instanceof Date?X.dismissed_at.toISOString():X.dismissed_at}]:[])}async restoreDismissedFindings($,Z){if(Z&&Z.length===0)return 0;let X=this.db.updateTable("task_board_items").set({dismissed_at:null}).where("organization_id","=",$).where("dismissed_at","is not",null);if(Z)X=X.where("external_key","in",Z);let Q=await X.executeTakeFirst();return Number(Q.numUpdatedRows??0n)}async setItemTags($,Z,X){await this.inTransaction(async(Q)=>{if(await Q.deleteFrom("task_board_item_tags").where("task_board_item_id","=",$).$if(Z.length>0,(Y)=>Y.where("id","not in",Z)).execute(),Z.length>0)await Q.insertInto("task_board_item_tags").values(Z.map((Y)=>({task_board_item_id:$,id:Y,created_by:X,created_at:new Date().toISOString()}))).onConflict((Y)=>Y.doNothing()).execute()})}async addItemTags($,Z,X){if(Z.length===0)return;await this.db.insertInto("task_board_item_tags").values(Z.map((Q)=>({task_board_item_id:$,id:Q,created_by:X,created_at:new Date().toISOString()}))).onConflict((Q)=>Q.doNothing()).execute()}async linkThread($,Z,X){await this.db.insertInto("task_board_item_threads").values({task_board_item_id:$,thread_id:Z,organization_id:X}).onConflict((Q)=>Q.columns(["task_board_item_id","thread_id"]).doNothing()).execute()}async listItemsPendingReview($,Z,X){let Q=this.db.selectFrom("task_board_items").select(["id","organization_id as organizationId","updated_at"]).where("status","=","in_review").where("assignee_id","=",M4).where("dismissed_at","is",null);if(X)Q=Q.where((G)=>G.or([G("last_swept_at","is",null),G("last_swept_at","<",X)]));if(Z){let G=new Date(Z.updatedAt);Q=Q.where((J)=>J.or([J("updated_at",">",G),J.and([J("updated_at","=",G),J("id",">",Z.id)])]))}return(await Q.orderBy("updated_at","asc").orderBy("id","asc").limit($).execute()).map((G)=>({id:G.id,organizationId:G.organizationId,updatedAt:G.updated_at instanceof Date?G.updated_at.toISOString():String(G.updated_at)}))}async markSwept($,Z){await this.db.updateTable("task_board_items").set({last_swept_at:new Date}).where("id","=",$).where("organization_id","=",Z).execute()}async failedRunInfo($,Z){let X=await this.db.selectFrom("threads as t").leftJoinLateral((Q)=>Q.selectFrom("thread_message_parts as p").select("p.payload").whereRef("p.thread_id","=","t.id").where("p.kind","=","error").orderBy("p.created_at","desc").limit(1).as("err"),(Q)=>Q.onTrue()).select(["t.status","t.failure_kind as kind","err.payload as payload"]).where("t.id","=",$).where("t.organization_id","=",Z).executeTakeFirst();if(!X||X.status!=="failed")return null;return{kind:X.kind??null,errorText:pV8(X.payload)}}async scheduleRunRetry($,Z,X,Q){return(await this.db.updateTable("task_board_items").set({retry_at:Q,retry_attempts:X}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returning("id").execute()).length>0}async returnToTodoAfterFailure($,Z,X){if((await this.db.updateTable("task_board_items").set({status:"todo",retry_at:null,retry_attempts:0,updated_by:X,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returning("id").execute()).length===0)return null;return await this.getById($,Z)}async failNeverStartedLinkedThreads($,Z,X){let Q=await this.db.selectFrom("threads as t").innerJoin("task_board_item_threads as l","l.thread_id","t.id").select(["t.id as threadId","l.task_board_item_id as itemId","l.organization_id as organizationId"]).where("t.status","=","in_progress").where("t.run_started_at","is",null).where((K)=>K.and([K("t.updated_at","<",Z),K.or([K("t.last_progress_at","is",null),K("t.last_progress_at","<",Z)])])).limit($).execute();if(Q.length===0)return[];let Y=Q.map((K)=>K.threadId),G=await this.db.updateTable("threads").set({status:"failed",failure_reason:X,failure_kind:"abandoned",run_owner_pod:null,run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","in",Y).where("status","=","in_progress").returning("id").execute(),J=new Set(G.map((K)=>K.id));return Q.filter((K)=>J.has(K.threadId))}async listItemsStuckAfterFailure($,Z){let X=await this.db.selectFrom("task_board_items as i").innerJoin("task_board_item_threads as l","l.task_board_item_id","i.id").innerJoin("threads as t","t.id","l.thread_id").select(["i.id as id","i.organization_id as organizationId","t.id as threadId"]).where("i.status","=","in_progress").where("i.assignee_id","=",M4).where("i.dismissed_at","is",null).where("i.retry_at","is",null).where("t.status","=","failed").where("t.updated_at","<",Z).where((Y)=>Y.not(Y.exists(Y.selectFrom("task_board_item_threads as l2").innerJoin("threads as t2","t2.id","l2.thread_id").select("t2.id").whereRef("l2.task_board_item_id","=","i.id").where("t2.status","in",["in_progress","requires_action"])))).orderBy("t.updated_at","desc").limit($).execute(),Q=new Set;return X.filter((Y)=>!Q.has(Y.id)&&Q.add(Y.id))}async listItemsDueForRetry($,Z){return await this.db.selectFrom("task_board_items").select(["id","organization_id as organizationId","retry_attempts as attempts"]).where("retry_at","is not",null).where("retry_at","<=",Z).where("status","=","in_progress").where("dismissed_at","is",null).orderBy("retry_at","asc").limit($).execute()}async claimDueRetry($,Z,X){return(await this.db.updateTable("task_board_items").set({retry_at:null}).where("id","=",$).where("organization_id","=",Z).where("retry_at","is not",null).where("retry_at","<=",X).returning("id").execute()).length>0}async clearRunRetry($,Z){await this.db.updateTable("task_board_items").set({retry_at:null,retry_attempts:0}).where("id","=",$).where("organization_id","=",Z).execute()}async clearSweepBudget($,Z){await this.db.updateTable("task_board_items").set({last_swept_at:null}).where("id","=",$).where("organization_id","=",Z).execute()}async linkedTaskIds($,Z){return(await this.db.selectFrom("task_board_item_threads").select("task_board_item_id as taskId").where("thread_id","=",$).where("organization_id","=",Z).execute()).map((Q)=>Q.taskId)}async linkPr($){await this.db.insertInto("task_board_item_prs").values({task_board_item_id:$.taskBoardItemId,organization_id:$.organizationId,url:$.url,pr_number:$.prNumber,repo_owner:$.repoOwner,repo_name:$.repoName,connection_id:$.connectionId??null}).onConflict((Z)=>Z.columns(["task_board_item_id","url"]).doNothing()).execute()}async listPrs($,Z){return(await this.db.selectFrom("task_board_item_prs").select(["url","pr_number as prNumber","repo_owner as repoOwner","repo_name as repoName","connection_id as connectionId","created_at as createdAt"]).where("task_board_item_id","=",$).where("organization_id","=",Z).orderBy("created_at","desc").execute()).map((Q)=>({url:Q.url,number:Q.prNumber,repoOwner:Q.repoOwner,repoName:Q.repoName,connectionId:Q.connectionId??null,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}))}async advanceLinkedTasksToReviewOnThreadFinish($,Z){let X=[];for(let Q of await this.linkedTaskIds($,Z)){let Y=await this.getById(Q,Z);if(!Y||!F51(Y))continue;let G=await this.advanceToReviewIfInProgress(Q,Z,Y.updatedBy);if(!G)continue;X.push(G),await this.recordActivity({taskBoardItemId:Q,action:"status_changed",actorId:null,data:{from:Y.status,to:"in_review"}}).catch((J)=>console.error("[task-board] in_review activity write failed",J))}return X}async advanceToReviewIfInProgress($,Z,X){let Q=await this.db.updateTable("task_board_items").set({status:"in_review",updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returningAll().executeTakeFirst();if(!Q)return null;let Y=this.itemFromDbRow(Q);return await this.attachRefs([Y],Z),Y}async reopenLinkedTasksOnThreadRun($,Z){let X=[];for(let Q of await this.linkedTaskIds($,Z)){let Y=await this.getById(Q,Z);if(!Y||Y.status!=="in_review")continue;X.push(await this.update(Q,Z,{status:"in_progress"},Y.updatedBy))}return X}claimConflictResolution($,Z,X){return this.claimInReviewSuperAgentSlot($,Z,X)}claimReviewChangesBounce($,Z,X){return this.claimInReviewSuperAgentSlot($,Z,X)}async claimInReviewSuperAgentSlot($,Z,X){let Q=await this.db.updateTable("task_board_items").set({status:"in_progress",updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_review").where("assignee_id","=",M4).returningAll().executeTakeFirst();if(!Q)return null;let Y=this.itemFromDbRow(Q);return await this.attachRefs([Y],Z),Y}async unassignSuperAgent($,Z,X){let Q=await this.db.updateTable("task_board_items").set({assignee_id:null,updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("assignee_id","=",M4).returningAll().executeTakeFirst();if(!Q)return null;let Y=this.itemFromDbRow(Q);return await this.attachRefs([Y],Z),Y}async attachRefs($,Z){if($.length===0)return;await this.inTransaction(async(X)=>{await this.attachThreads(X,$,Z),await this.attachTags(X,$)})}async attachThreads($,Z,X){let Q=Z.map((J)=>J.id),Y=await $.selectFrom("task_board_item_threads as link").innerJoin("threads as t","t.id","link.thread_id").leftJoinLateral((J)=>J.selectFrom("thread_message_parts as p").select("p.payload as payload").whereRef("p.thread_id","=","link.thread_id").where("p.role","=","assistant").where("p.kind","=","text").orderBy("p.created_at","desc").limit(1).as("lastmsg"),(J)=>J.onTrue()).select((J)=>["link.task_board_item_id as taskId","link.thread_id as threadId","link.created_at as createdAt","t.status as status","t.title as title","t.virtual_mcp_id as virtualMcpId","t.metadata as metadata","lastmsg.payload as lastMessagePayload",J.or([J.exists(J.selectFrom("thread_message_parts as mp").select("mp.id").whereRef("mp.thread_id","=","link.thread_id")),J.exists(J.selectFrom("thread_messages as tm").select("tm.id").whereRef("tm.thread_id","=","link.thread_id"))]).as("hasMessages")]).where("link.organization_id","=",X).where("link.task_board_item_id","in",Q).orderBy("link.created_at","desc").execute(),G=new Map;for(let J of Y){let K={threadId:J.threadId,virtualMcpId:J.virtualMcpId??null,status:J.status??null,title:J.title??null,lastMessage:pV8(J.lastMessagePayload),hasPreview:jl4(J.metadata),hasMessages:!!J.hasMessages,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt},W=G.get(J.taskId);if(W)W.push(K);else G.set(J.taskId,[K])}for(let J of Z)J.threads=G.get(J.id)??[]}async attachTags($,Z){let X=Z.map((G)=>G.id),Q=await $.selectFrom("task_board_item_tags as link").innerJoin("organization_tags as tag","tag.id","link.id").select(["link.task_board_item_id as taskId","link.created_by as createdBy","link.created_at as createdAt","tag.id as id","tag.name as name","tag.color as color"]).where("link.task_board_item_id","in",X).orderBy("tag.name","asc").execute(),Y=new Map;for(let G of Q){let J={id:G.id,name:G.name,color:G.color??null,createdBy:G.createdBy,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt},K=Y.get(G.taskId);if(K)K.push(J);else Y.set(G.taskId,[J])}for(let G of Z)G.tags=Y.get(G.id)??[]}async recordActivity($){await this.db.insertInto("task_board_activity").values({id:Z4("act"),task_board_item_id:$.taskBoardItemId,action:$.action,actor_id:$.actorId,data:$.data?JSON.stringify($.data):null,occurred_at:new Date().toISOString()}).execute()}async claimReviewer($,Z,X){let Q=`rtok_${crypto.randomUUID()}`,Y=await this.db.insertInto("task_board_review_claims").values({task_board_item_id:$,reviewer:Z,cycle_at:X,token:Q}).onConflict((J)=>J.columns(["task_board_item_id","reviewer","cycle_at"]).doNothing()).returning("token").executeTakeFirst();if(Y)return{claimed:!0,token:Y.token};return{claimed:!1,token:(await this.db.selectFrom("task_board_review_claims").select("token").where("task_board_item_id","=",$).where("reviewer","=",Z).where("cycle_at","=",X).executeTakeFirst())?.token??Q}}async releaseReviewerClaim($,Z,X){await this.db.deleteFrom("task_board_review_claims").where("task_board_item_id","=",$).where("reviewer","=",Z).where("cycle_at","=",X).execute()}async resolveReviewClaimByToken($,Z){let X=await this.db.selectFrom("task_board_review_claims").select(["reviewer","cycle_at"]).where("task_board_item_id","=",$).where("token","=",Z).executeTakeFirst();return X?{reviewer:X.reviewer,cycleAt:X.cycle_at}:null}async recordActivities($){if($.length===0)return;let Z=new Date().toISOString();await this.db.insertInto("task_board_activity").values($.map((X)=>({id:Z4("act"),task_board_item_id:X.taskBoardItemId,action:X.action,actor_id:X.actorId,data:X.data?JSON.stringify(X.data):null,occurred_at:Z}))).execute()}async listActivity($,Z){return(await this.db.selectFrom("task_board_activity as a").innerJoin("task_board_items as item","item.id","a.task_board_item_id").selectAll("a").where("item.organization_id","=",Z).where("a.task_board_item_id","=",$).orderBy("a.occurred_at","asc").execute()).map((Q)=>({id:Q.id,taskBoardItemId:Q.task_board_item_id,action:Q.action,actorId:Q.actor_id,data:typeof Q.data==="string"?JSON.parse(Q.data):Q.data??{},occurredAt:Q.occurred_at instanceof Date?Q.occurred_at.toISOString():Q.occurred_at}))}async listComments($,Z){return(await this.db.selectFrom("task_board_comments as c").innerJoin("task_board_items as item","item.id","c.task_board_item_id").selectAll("c").where("item.organization_id","=",Z).where("c.task_board_item_id","=",$).orderBy("c.created_at","asc").execute()).map((Q)=>N51(Q))}async createComment($){if(!await this.db.selectFrom("task_board_items").select("id").where("id","=",$.taskBoardItemId).where("organization_id","=",$.organizationId).executeTakeFirst())return null;let X=null;if($.parentId){let Y=await this.db.selectFrom("task_board_comments").select(["id","parent_id"]).where("id","=",$.parentId).where("task_board_item_id","=",$.taskBoardItemId).executeTakeFirst();if(!Y)return null;X=Y.parent_id??Y.id}let Q=await this.db.insertInto("task_board_comments").values({id:Z4("cmt"),task_board_item_id:$.taskBoardItemId,parent_id:X,author_id:$.authorId,body:$.body}).returningAll().executeTakeFirstOrThrow();return N51(Q)}async updateComment($){let Z=await this.commentInOrg($.id,$.organizationId);if(!Z)return null;if($.body!==void 0&&Z.authorId!==$.callerId)return null;if($.resolved!==void 0&&Z.parentId!==null)return null;let X=await this.db.updateTable("task_board_comments").set({...$.body===void 0?{}:{body:$.body},...$.resolved===void 0?{}:{resolved:$.resolved},updated_at:new Date().toISOString()}).where("id","=",$.id).returningAll().executeTakeFirst();return X?N51(X):null}async deleteComment($,Z,X){let Q=await this.commentInOrg($,Z);if(!Q)return!1;if(Q.authorId!==X&&Q.authorId!==M4)return!1;return await this.db.deleteFrom("task_board_comments").where("id","=",$).execute(),!0}async commentInOrg($,Z){let X=await this.db.selectFrom("task_board_comments as c").innerJoin("task_board_items as item","item.id","c.task_board_item_id").select(["c.id","c.author_id","c.parent_id"]).where("c.id","=",$).where("item.organization_id","=",Z).executeTakeFirst();return X?{authorId:X.author_id,parentId:X.parent_id}:null}itemFromDbRow($){return{id:$.id,organizationId:$.organization_id,title:$.title,description:$.description,status:$.status,priority:$.priority,assigneeId:$.assignee_id,assignedBy:$.assigned_by,repo:$.repo,dueDate:$.due_date instanceof Date?$.due_date.toISOString():$.due_date,sortOrder:$.sort_order,retryAttempts:$.retry_attempts??0,threads:[],tags:[],createdBy:$.created_by,createdAt:$.created_at instanceof Date?$.created_at.toISOString():$.created_at,updatedBy:$.updated_by,updatedAt:$.updated_at instanceof Date?$.updated_at.toISOString():$.updated_at}}}var vr;var i_=O(()=>{GK();$Q();rZ();vr=new Set(["completed","failed","expired"])});function tV8($){let Z=$[1],X=$[2],Q=Number($[3]);return{owner:Z,repo:X,number:Q,url:`https://github.com/${Z}/${X}/pull/${Q}`}}function nj0($){let Z=$.length>200000?$.slice(0,200000):$,X=Pl4.exec(Z);if(X&&Number(X[3])>0)return tV8(X);let Q=Al4.exec(Z);if(Q&&Number(Q[3])>0)return tV8(Q);return null}function oV8($){if($==null)return null;if(typeof $==="string")return nj0($);let Z;try{Z=JSON.stringify($)}catch{return null}return Z?nj0(Z):null}var Pl4,Al4;var w51=O(()=>{Pl4=/https?:\/\/github\.com\/([^/\s"']+)\/([^/\s"']+)\/pull\/(\d+)/,Al4=/https?:\/\/api\.github\.com\/repos\/([^/\s"']+)\/([^/\s"']+)\/pulls\/(\d+)/});function aV8($){if(rV8.has($.kind??""))return 0;return Ml4($)?Il4:ql4}function Ml4($){let Z=$.kind??"";if(rV8.has(Z))return!1;if(Tl4.has(Z))return!0;let X=$.errorText??"";if(!X)return!1;if(X.includes(Pj0))return!0;return Rl4.some((Q)=>Q.test(X))}var Tl4,rV8,Rl4,Il4=3,ql4=1;var sV8=O(()=>{v$1();Tl4=new Set(["stall","liveness","projection","abandoned"]),rV8=new Set(["cancelled","superseded"]),Rl4=[/sandbox did not become ready/i,/sandbox (?:provisioning|claim) failed/i,/mcp is unusable/i,/harness_crashed: unexpected eof/i,/too many clients already|timeout exceeded when trying to connect/i,/\b(?:429|503)\b|too many requests|service unavailable/i]});class Zk8{listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,X)=>this.localEmit(Z,X)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=$k8)return console.warn(`[SSEHub] Total connection limit reached (${$k8})`),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=eV8)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (${eV8})`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let X=this.listeners.get($);if(!X)return;if(X.delete(Z)){if(this.totalCount--,X.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){let X=this.listeners.get($);if(!X||X.size===0)return;for(let Q of X.values()){if(Q.typePatterns&&!Vl4(Z.type,Q.typePatterns))continue;try{Q.push(Z)}catch{this.remove($,Q.id)}}}}function Vl4($,Z){for(let X of Z){if(X===$)return!0;if(X.endsWith(".*")){let Q=X.slice(0,-1);if($.startsWith(Q))return!0}}return!1}var eV8=50,$k8=500,O9;var pj0=O(()=>{n$();O9=new Zk8;y8.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback(($)=>$.observe(O9.count))});import{z as tj0}from"zod";async function L9($,Z){try{await $.storage.taskBoard.recordActivity(Z)}catch(X){console.error("[task-board] activity log write failed",X)}}async function Xk8($,Z){if(Z.length===0)return;try{await $.storage.taskBoard.recordActivities(Z)}catch(X){console.error("[task-board] activity log write failed",X)}}var B51;var v3=O(()=>{p0();wH();B51=t({name:"TASK_BOARD_ACTIVITY_LIST",description:"List a task board item's change history (timeline, oldest first).",annotations:{title:"List Task Activity",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:tj0.object({taskBoardItemId:tj0.string()}),outputSchema:tj0.object({activity:tj0.array(B28)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{activity:await Z.storage.taskBoard.listActivity($.taskBoardItemId,X)}}})});function O51($,Z,X,Q){tJ({event:$,organizationId:Z,properties:{task_id:X.id,reports_task:sQ(X),...Q}})}function t4($,Z){O9.emit($,{id:crypto.randomUUID(),type:sU8,source:"task-board",subject:Z.id,data:Z,time:new Date().toISOString()})}function Qk8($,Z){O9.emit($,{id:crypto.randomUUID(),type:eU8,source:"task-board",subject:Z,data:{id:Z},time:new Date().toISOString()})}function kl4($,Z){return $?[$]:Z}async function rj0($,Z,X){let Q=$.metadata?.runMetadata?.taskBoardItemId,Y=!Q&&X?await $.storage.taskBoard.linkedTaskIds(X,Z):[];return kl4(Q,Y)}async function ch($,Z,X){let Q=$.organization?.id;if(!Q)return;try{for(let Y of await rj0($,Q,X)){let G=await $.storage.taskBoard.getById(Y,Q);if(!G||oj0[Z]<=oj0[G.status])continue;let J=await $.storage.taskBoard.update(Y,Q,{status:Z},$.auth?.user?.id??G.updatedBy);if(await $.storage.taskBoard.recordActivity({taskBoardItemId:Y,action:"status_changed",actorId:null,data:{from:G.status,to:Z}}).catch((K)=>console.error("[task-board] activity log write failed",K)),t4(Q,J),Z==="in_progress"||Z==="in_review")O51(Z==="in_progress"?"task_run_started":"task_run_completed",Q,J,{from:G.status,via:"pr_open"})}}catch(Y){console.error("[task-board] run transition failed",Y)}}async function aj0($,Z,X,Q){let Y=$.organization?.id;if(!Y)return;try{let G=oV8(Z);if(!G)return;let J=await rj0($,Y,Q);for(let K of J)await $.storage.taskBoard.linkPr({taskBoardItemId:K,organizationId:Y,url:G.url,prNumber:G.number,repoOwner:G.owner,repoName:G.repo,connectionId:X??null})}catch(G){console.error("[task-board] PR capture failed",G)}}async function lh($,Z,X,Q){try{let Y=await $.advanceLinkedTasksToReviewOnThreadFinish(Z,X);for(let G of Y)t4(X,G),O51("task_run_completed",X,G,{from:"in_progress",via:"thread_finish"});for(let G of Y)await $.clearRunRetry(G.id,X).catch(()=>{})}catch(Y){console.error("[task-board] thread-finish transition failed",Y)}await L51($,Z,X),await D51($,Q,Z,X)}async function L51($,Z,X){try{let Q=await $.failedRunInfo(Z,X);if(!Q)return;let Y=aV8(Q);for(let G of await $.linkedTaskIds(Z,X)){let J=await $.getById(G,X);if(!J||J.status!=="in_progress")continue;if(J.threads.some((H)=>H.hasMessages&&H.status==="in_progress"))continue;let K=J.retryAttempts;if(K<Y){let H=J7(Cl4,Sl4,K,2,0.5);if(!await $.scheduleRunRetry(G,X,K+1,new Date(Date.now()+H)))continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:"in_progress",to:"in_progress",retry:K+1,of:Y,reason:Q.errorText??Q.kind}}).catch(()=>{});continue}let W=await $.returnToTodoAfterFailure(G,X,J.updatedBy);if(!W)continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q.errorText??Q.kind,retriesSpent:K}}).catch(()=>{}),t4(X,W),O51("task_run_failed",X,J,{reason:Q.kind??"error",retries_spent:K})}}catch(Q){console.error("[task-board] failed-run reaction failed",Q)}}async function D51($,Z,X,Q){try{for(let Y of await $.linkedTaskIds(X,Q)){let G=await $.getById(Y,Q);if(!G)continue;if(oj0[G.status]>=oj0.in_review)continue;if(G.threads.some((K)=>K.hasMessages&&(K.status===null||!vr.has(K.status))))continue;if((await $.listPrs(Y,Q)).length>0)continue;await QN8(Z,Q,Y)}}catch(Y){console.error("[task-board] quota refund pass failed",Y)}}async function iO($,Z,X){let Q=Z.organizationId;if(Z.assigneeId!==M4)return!1;try{let Y=await $.storage.taskBoard.unassignSuperAgent(Z.id,Q,Z.updatedBy);if(!Y)return!1;return await L9($,{taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:Z.assigneeId,to:null,reason:X}}),console.warn(`[task-board] ${Z.id} handed to a human: ${X}`),t4(Q,Y),!0}catch(Y){return console.error(`[task-board] handing ${Z.id} to a human failed`,Y),!1}}async function Yk8($,Z){let X=$.organization?.id;if(!X)return;try{let Q=await $.storage.taskBoard.reopenLinkedTasksOnThreadRun(Z,X);for(let Y of Q)t4(X,Y)}catch(Q){console.error("[task-board] thread-run reopen failed",Q)}}function Gk8($){return $.includes("create_pull_request")||$.includes("createPullRequest")}function Jk8($){if(_l4.test($))return!0;return vl4.test($)&&xl4.test($)}var oj0,Sl4=30000,Cl4=120000,_l4,vl4,xl4;var PZ=O(()=>{GK();p4();i_();w51();sV8();a4();pj0();rZ();v3();oj0={triage:0,todo:1,in_progress:2,in_review:3,done:4};_l4=/\bgh\s+pr\s+create\b/,vl4=/api\.github\.com\/repos\/[^\s"']+\/pulls\b/,xl4=/(?:-X|--request)\s+POST/});function sj0($,Z){return{resolveArgs:(X)=>nV8(X,$),onToolCalled:(X)=>{if(!X.isError&&Gk8(X.toolName))ch($,"in_review",Z);let Q=$.organization?.id,Y=$.auth?.user?.id;if(!Q||!Y)return;n1.capture({distinctId:Y,event:"tool_called",groups:{organization:Q},properties:{organization_id:Q,tool_source:"mcp",tool_name:X.toolName,tool_safe_name:X.toolSafeName,read_only:X.annotations?.readOnlyHint??null,destructive:X.annotations?.destructiveHint??null,idempotent:X.annotations?.idempotentHint??null,open_world:X.annotations?.openWorldHint??null,latency_ms:Math.round(X.latencyMs),is_error:X.isError}})},onPrOpened:(X)=>{aj0($,X.result,X.connectionId,Z)}}}var E51=O(()=>{p4();uh();PZ()});function Kk8($){if($ instanceof Error)return $.message;if(typeof $==="string")return $;if(typeof $==="object"&&$!==null){let Z=$.message;if(typeof Z==="string")return Z;try{return JSON.stringify($)}catch{return String($)}}return String($)}function Wk8($){let Z,X,Q=new Promise((K)=>{X=K}),Y=(K)=>{if(Z===void 0)Z=K;X(Z)},J=($.streamText??BO)({model:$.model,system:$.systemMessages,messages:$.messages,tools:$.tools,providerOptions:KM8,prepareStep:$.prepareStep,temperature:$.temperature,maxOutputTokens:$.maxOutputTokens,stopWhen:$.stopWhen,abortSignal:$.abortSignal,onStepFinish:$.onStepFinish,onError:async(K)=>{let W=K.error??K,H=Kk8(W);$.onError?.(H,W),Y(H)},onAbort:async()=>{Y(Z??"Run aborted before completion.")}});return Promise.resolve(J.finishReason).then(()=>{if(Z===void 0)X(void 0)}).catch((K)=>{let W=Kk8(K);$.onError?.(W,K),Y(W)}),{result:J,error:Q}}var Hk8=O(()=>{u4();u$1()});import{SpanStatusCode as z51,trace as fl4}from"@opentelemetry/api";async function dh($){let Z=$.tracer??fl4.getTracer("decopilot"),X=$.stepLimit??($.kind==="agent"?Rq8:cN),Q=$.planMode??!1,Y=$.toolApprovalLevel??"auto",G=Z.startSpan("decopilot.agent_loop",{attributes:{"decopilot.agent.id":$.virtualMcp.id,"decopilot.agent.kind":$.kind,"decopilot.organization.id":$.organization.id,"decopilot.model.id":$.models.thinking.id}}),J=await TM8({ctx:$.ctx,organization:$.organization,virtualMcp:$.virtualMcp,kind:$.kind,planMode:Q,isDecopilot:$.isDecopilot,agentInstructions:$.systemAgentInstructions,currentThreadId:$.currentThreadId,user:$.user,userContext:$.userContext,codingWorkspace:$.codingWorkspace,passthroughClient:$.passthroughClient,connectionsData:$.connectionsData}),K=$.additionalSystemMessages&&$.additionalSystemMessages.length>0?[...J,...$.additionalSystemMessages]:J,{resolveArgs:W,onToolCalled:H,onPrOpened:U}=sj0($.ctx,$.currentThreadId),{tools:N}=await _V8({kind:$.kind,ctx:$.ctx,mcpClient:$.mcpClient,writer:$.writer,planMode:Q,toolApprovalLevel:Y,subtaskParams:$.subtaskParams,resolveArgs:W,onToolCalled:H,onPrOpened:U,fullBuiltInParams:$.subagentBuiltInParams,toolOutputMap:$.toolOutputMap}),F=$.extraTools?{...N,...$.extraTools}:N,w=$.__streamText?void 0:jj0($.provider,$.models.thinking),B=(D)=>{for(let E of D.toolCalls??[]){let z=E.input?.command;if(E.toolName==="bash"&&z&&Jk8(z)){ch($.ctx,"in_review",$.currentThreadId);let j=(D.toolResults??[]).find((A)=>A.toolCallId===E.toolCallId);aj0($.ctx,j?.output,null,$.currentThreadId);break}}return $.onStepFinish?.(D)},L=Wk8({model:w,systemMessages:K,messages:$.messages,tools:F,prepareStep:$.prepareStep,temperature:$.temperature,maxOutputTokens:QM8($.models.thinking.limits,RX(K)+RX($.messages)+RX(XM8(F,$.activeToolNames))),stopWhen:NO(X),abortSignal:$.abortSignal,onStepFinish:B,streamText:$.__streamText,onError:(D,E)=>{if(console.error(`[runAgentLoop:${$.kind}:${$.virtualMcp.id}] Error`,D),G.setStatus({code:z51.ERROR,message:D}),E instanceof Error)G.recordException(E)}});return Promise.resolve(L.result.finishReason).then(()=>{G.setStatus({code:z51.OK})}).catch((D)=>{let E=D instanceof Error?D.message:typeof D==="string"?D:`${D}`;G.setStatus({code:z51.ERROR,message:E})}).finally(()=>G.end()),{result:L.result,error:L.error,span:G,assembledSystemMessages:K}}var ej0=O(()=>{u4();A$1();dN();b_();RM8();vV8();E51();PZ();Hk8()});function $P0($){let Z=Number.isFinite($)?Math.max(1,$):1,X=0,Q=0,Y=[];return{async acquire(G=0){if(X<Z)X++;else await new Promise((K)=>{let W={priority:G,seq:Q++,wake:K},H=Y.length;while(H>0&&Y[H-1].priority>G)H--;Y.splice(H,0,W)});let J=!1;return()=>{if(J)return;J=!0;let K=Y.shift();if(K)K.wake();else X--}},get active(){return X},get pending(){return Y.length}}}var bl4,Uk8=()=>bl4.acquire();var j51=O(()=>{v8();bl4=$P0(e0().decopilotMaxConcurrentSubagents)});import{z as P51}from"zod";function T51($){return/socket connection was closed|econnreset|epipe|etimedout|fetch failed|terminated|network error|premature close|\b(429|500|502|503|504)\b|overloaded|rate.?limit|timed? ?out/i.test($)}function gl4($,Z,X=!1){if(!$.repo)return X?Z:void 0;return{repo:{owner:$.repo.owner,name:$.repo.name,connectedGithub:Boolean($.repo.connectionId)},branch:Z?.branch,cwd:Z?.cwd,workspaceKind:"github"}}function A51($){if($==="{}")return"";return $.length>Fk8?$.slice(0,Fk8)+"\u2026":$}function hl4($,Z){let X="";try{X=typeof Z==="string"?Z:JSON.stringify(Z??{})}catch{X=""}let Q=A51(X);return Q?`${$} ${Q}`:$}function G51($,Z,X){let{provider:Q,organization:Y,models:G,needsApproval:J,self:K,onChildUsage:W,vmTools:H,codingWorkspace:U,parentBuiltInParams:N,currentThreadId:F}=Z;return d8({description:yl4,inputSchema:K0(Y51),needsApproval:J,execute:async function*({prompt:w,agent_id:B},{abortSignal:L,toolCallId:D}){let E=performance.now(),z=!!K&&(!B||B===K.id),j=z?K.id:B,A=K?" Omit agent_id to clone yourself (a fresh subagent with your tools + instructions).":"";if(!j){yield{text:"",error:`agent_id is required here.${A}`,finishReason:"error"};return}if(!z&&K){let f=(await X.storage.virtualMcps.findById(K.id,Y.id))?.metadata?.subAgents;if(Array.isArray(f)&&!f.includes(j)){let y=f.length>0?" Or pass an id from <available-agents> or <available-connections>.":"";yield{text:"",error:`Target '${j}' is not in this agent's delegation allowlist (allow=${JSON.stringify(f)}).${A}${y}`,finishReason:"error"};return}}let P;try{P=await Mj0(X,Y.id,j,{superUser:z})}catch(m){yield{text:"",error:`${m.message} (agent_id="${j}").${A}`,finishReason:"error"};return}let{mcpClient:I,targetRef:V}=P,M=V.id,C=await Uk8();L?.addEventListener("abort",()=>C(),{once:!0});try{let m=gl4(V,U,z),f=N?(()=>{let{toolOutputMap:H0,...V0}=N;return{...V0,passthroughClient:I,agentId:V.id,vmContext:z?V0.vmContext:null,backgroundDispatcher:null,onChildUsage:void 0,pendingImages:[]}})():void 0,y="",o=null,b=0,a=200,F0=()=>{if(!o)return;let H0=A51(o.args),V0=y&&!y.endsWith(`
2749
+ )`,created_by:$.by,created_at:X,updated_by:$.by,updated_at:X}).returningAll().executeTakeFirstOrThrow();return this.itemFromDbRow(Y)}async update($,Z,X,Q){let Y=await this.db.updateTable("task_board_items").set({...X.title!==void 0?{title:X.title}:{},...X.description!==void 0?{description:X.description}:{},...X.status!==void 0?{status:X.status}:{},...X.priority!==void 0?{priority:X.priority}:{},...X.assigneeId!==void 0?{assignee_id:X.assigneeId}:{},...X.assignedBy!==void 0?{assigned_by:X.assignedBy}:{},...X.repo!==void 0?{repo:X.repo}:{},...X.dueDate!==void 0?{due_date:X.dueDate}:{},...X.sortOrder!==void 0?{sort_order:X.sortOrder}:{},updated_by:Q,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).returningAll().executeTakeFirstOrThrow(),G=this.itemFromDbRow(Y);return await this.attachRefs([G],Z),G}async delete($,Z,X){return this.inTransaction(async(Q)=>{let Y=await Q.selectFrom("task_board_items").select(["created_by"]).where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!Y)return!1;if(sQ({createdBy:Y.created_by}))return await Q.updateTable("task_board_items").set({dismissed_at:new Date().toISOString(),updated_by:X}).where("id","=",$).where("organization_id","=",Z).where("dismissed_at","is",null).execute(),!0;return await Q.deleteFrom("task_board_item_threads").where("task_board_item_id","=",$).where("organization_id","=",Z).execute(),await Q.deleteFrom("task_board_item_prs").where("task_board_item_id","=",$).where("organization_id","=",Z).execute(),await Q.deleteFrom("task_board_items").where("id","=",$).where("organization_id","=",Z).execute(),!0})}async dismissedFindingKeys($,Z){if(Z.length===0)return new Set;let X=await this.db.selectFrom("task_board_items").select(["external_key"]).where("organization_id","=",$).where("external_key","in",Z).where("dismissed_at","is not",null).execute();return new Set(X.flatMap((Q)=>Q.external_key??[]))}async listDismissedFindings($){return(await this.db.selectFrom("task_board_items").select(["external_key","updated_by","dismissed_at"]).where("organization_id","=",$).where("dismissed_at","is not",null).orderBy("dismissed_at","desc").execute()).flatMap((X)=>X.external_key&&X.dismissed_at?[{externalKey:X.external_key,dismissedBy:X.updated_by,dismissedAt:X.dismissed_at instanceof Date?X.dismissed_at.toISOString():X.dismissed_at}]:[])}async restoreDismissedFindings($,Z){if(Z&&Z.length===0)return 0;let X=this.db.updateTable("task_board_items").set({dismissed_at:null}).where("organization_id","=",$).where("dismissed_at","is not",null);if(Z)X=X.where("external_key","in",Z);let Q=await X.executeTakeFirst();return Number(Q.numUpdatedRows??0n)}async setItemTags($,Z,X){await this.inTransaction(async(Q)=>{if(await Q.deleteFrom("task_board_item_tags").where("task_board_item_id","=",$).$if(Z.length>0,(Y)=>Y.where("id","not in",Z)).execute(),Z.length>0)await Q.insertInto("task_board_item_tags").values(Z.map((Y)=>({task_board_item_id:$,id:Y,created_by:X,created_at:new Date().toISOString()}))).onConflict((Y)=>Y.doNothing()).execute()})}async addItemTags($,Z,X){if(Z.length===0)return;await this.db.insertInto("task_board_item_tags").values(Z.map((Q)=>({task_board_item_id:$,id:Q,created_by:X,created_at:new Date().toISOString()}))).onConflict((Q)=>Q.doNothing()).execute()}async linkThread($,Z,X){await this.db.insertInto("task_board_item_threads").values({task_board_item_id:$,thread_id:Z,organization_id:X}).onConflict((Q)=>Q.columns(["task_board_item_id","thread_id"]).doNothing()).execute()}async listItemsPendingReview($,Z,X){let Q=this.db.selectFrom("task_board_items").select(["id","organization_id as organizationId","updated_at"]).where("status","=","in_review").where("assignee_id","=",M4).where("dismissed_at","is",null);if(X)Q=Q.where((G)=>G.or([G("last_swept_at","is",null),G("last_swept_at","<",X)]));if(Z){let G=new Date(Z.updatedAt);Q=Q.where((J)=>J.or([J("updated_at",">",G),J.and([J("updated_at","=",G),J("id",">",Z.id)])]))}return(await Q.orderBy("updated_at","asc").orderBy("id","asc").limit($).execute()).map((G)=>({id:G.id,organizationId:G.organizationId,updatedAt:G.updated_at instanceof Date?G.updated_at.toISOString():String(G.updated_at)}))}async markSwept($,Z){await this.db.updateTable("task_board_items").set({last_swept_at:new Date}).where("id","=",$).where("organization_id","=",Z).execute()}async failedRunInfo($,Z){let X=await this.db.selectFrom("threads as t").leftJoinLateral((Q)=>Q.selectFrom("thread_message_parts as p").select("p.payload").whereRef("p.thread_id","=","t.id").where("p.kind","=","error").orderBy("p.created_at","desc").limit(1).as("err"),(Q)=>Q.onTrue()).select(["t.status","t.failure_kind as kind","err.payload as payload"]).where("t.id","=",$).where("t.organization_id","=",Z).executeTakeFirst();if(!X||X.status!=="failed")return null;return{kind:X.kind??null,errorText:pV8(X.payload)}}async scheduleRunRetry($,Z,X,Q){return(await this.db.updateTable("task_board_items").set({retry_at:Q,retry_attempts:X}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returning("id").execute()).length>0}async returnToTodoAfterFailure($,Z,X){if((await this.db.updateTable("task_board_items").set({status:"todo",retry_at:null,retry_attempts:0,updated_by:X,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returning("id").execute()).length===0)return null;return await this.getById($,Z)}async failNeverStartedLinkedThreads($,Z,X){let Q=await this.db.selectFrom("threads as t").innerJoin("task_board_item_threads as l","l.thread_id","t.id").select(["t.id as threadId","l.task_board_item_id as itemId","l.organization_id as organizationId"]).where("t.status","=","in_progress").where("t.run_started_at","is",null).where((K)=>K.and([K("t.updated_at","<",Z),K.or([K("t.last_progress_at","is",null),K("t.last_progress_at","<",Z)])])).limit($).execute();if(Q.length===0)return[];let Y=Q.map((K)=>K.threadId),G=await this.db.updateTable("threads").set({status:"failed",failure_reason:X,failure_kind:"abandoned",run_owner_pod:null,run_config:null,run_started_at:null,updated_at:new Date().toISOString()}).where("id","in",Y).where("status","=","in_progress").returning("id").execute(),J=new Set(G.map((K)=>K.id));return Q.filter((K)=>J.has(K.threadId))}async listItemsStuckAfterFailure($,Z){let X=await this.db.selectFrom("task_board_items as i").innerJoin("task_board_item_threads as l","l.task_board_item_id","i.id").innerJoin("threads as t","t.id","l.thread_id").select(["i.id as id","i.organization_id as organizationId","t.id as threadId"]).where("i.status","=","in_progress").where("i.assignee_id","=",M4).where("i.dismissed_at","is",null).where("i.retry_at","is",null).where("t.status","=","failed").where("t.updated_at","<",Z).where((Y)=>Y.not(Y.exists(Y.selectFrom("task_board_item_threads as l2").innerJoin("threads as t2","t2.id","l2.thread_id").select("t2.id").whereRef("l2.task_board_item_id","=","i.id").where("t2.status","in",["in_progress","requires_action"])))).orderBy("t.updated_at","desc").limit($).execute(),Q=new Set;return X.filter((Y)=>!Q.has(Y.id)&&Q.add(Y.id))}async listItemsDueForRetry($,Z){return await this.db.selectFrom("task_board_items").select(["id","organization_id as organizationId","retry_attempts as attempts"]).where("retry_at","is not",null).where("retry_at","<=",Z).where("status","=","in_progress").where("dismissed_at","is",null).orderBy("retry_at","asc").limit($).execute()}async claimDueRetry($,Z,X){return(await this.db.updateTable("task_board_items").set({retry_at:null}).where("id","=",$).where("organization_id","=",Z).where("retry_at","is not",null).where("retry_at","<=",X).returning("id").execute()).length>0}async clearRunRetry($,Z){await this.db.updateTable("task_board_items").set({retry_at:null,retry_attempts:0}).where("id","=",$).where("organization_id","=",Z).execute()}async clearSweepBudget($,Z){await this.db.updateTable("task_board_items").set({last_swept_at:null}).where("id","=",$).where("organization_id","=",Z).execute()}async linkedTaskIds($,Z){return(await this.db.selectFrom("task_board_item_threads").select("task_board_item_id as taskId").where("thread_id","=",$).where("organization_id","=",Z).execute()).map((Q)=>Q.taskId)}async linkPr($){await this.db.insertInto("task_board_item_prs").values({task_board_item_id:$.taskBoardItemId,organization_id:$.organizationId,url:$.url,pr_number:$.prNumber,repo_owner:$.repoOwner,repo_name:$.repoName,connection_id:$.connectionId??null}).onConflict((Z)=>Z.columns(["task_board_item_id","url"]).doNothing()).execute()}async listPrs($,Z){return(await this.db.selectFrom("task_board_item_prs").select(["url","pr_number as prNumber","repo_owner as repoOwner","repo_name as repoName","connection_id as connectionId","created_at as createdAt"]).where("task_board_item_id","=",$).where("organization_id","=",Z).orderBy("created_at","desc").execute()).map((Q)=>({url:Q.url,number:Q.prNumber,repoOwner:Q.repoOwner,repoName:Q.repoName,connectionId:Q.connectionId??null,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt}))}async advanceLinkedTasksToReviewOnThreadFinish($,Z){let X=[];for(let Q of await this.linkedTaskIds($,Z)){let Y=await this.getById(Q,Z);if(!Y)continue;let G=Y.repo!=null&&(await this.listPrs(Q,Z)).length>0;if(!F51(Y,G))continue;let J=await this.advanceToReviewIfInProgress(Q,Z,Y.updatedBy);if(!J)continue;X.push(J),await this.recordActivity({taskBoardItemId:Q,action:"status_changed",actorId:null,data:{from:Y.status,to:"in_review"}}).catch((K)=>console.error("[task-board] in_review activity write failed",K))}return X}async advanceToReviewIfInProgress($,Z,X){let Q=await this.db.updateTable("task_board_items").set({status:"in_review",updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_progress").where("dismissed_at","is",null).returningAll().executeTakeFirst();if(!Q)return null;let Y=this.itemFromDbRow(Q);return await this.attachRefs([Y],Z),Y}async reopenLinkedTasksOnThreadRun($,Z){let X=[];for(let Q of await this.linkedTaskIds($,Z)){let Y=await this.getById(Q,Z);if(!Y||Y.status!=="in_review")continue;X.push(await this.update(Q,Z,{status:"in_progress"},Y.updatedBy))}return X}claimConflictResolution($,Z,X){return this.claimInReviewSuperAgentSlot($,Z,X)}claimReviewChangesBounce($,Z,X){return this.claimInReviewSuperAgentSlot($,Z,X)}async claimInReviewSuperAgentSlot($,Z,X){let Q=await this.db.updateTable("task_board_items").set({status:"in_progress",updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("status","=","in_review").where("assignee_id","=",M4).returningAll().executeTakeFirst();if(!Q)return null;let Y=this.itemFromDbRow(Q);return await this.attachRefs([Y],Z),Y}async unassignSuperAgent($,Z,X){let Q=await this.db.updateTable("task_board_items").set({assignee_id:null,updated_by:X,updated_at:new Date().toISOString()}).where("id","=",$).where("organization_id","=",Z).where("assignee_id","=",M4).returningAll().executeTakeFirst();if(!Q)return null;let Y=this.itemFromDbRow(Q);return await this.attachRefs([Y],Z),Y}async attachRefs($,Z){if($.length===0)return;await this.inTransaction(async(X)=>{await this.attachThreads(X,$,Z),await this.attachTags(X,$)})}async attachThreads($,Z,X){let Q=Z.map((J)=>J.id),Y=await $.selectFrom("task_board_item_threads as link").innerJoin("threads as t","t.id","link.thread_id").leftJoinLateral((J)=>J.selectFrom("thread_message_parts as p").select("p.payload as payload").whereRef("p.thread_id","=","link.thread_id").where("p.role","=","assistant").where("p.kind","=","text").orderBy("p.created_at","desc").limit(1).as("lastmsg"),(J)=>J.onTrue()).select((J)=>["link.task_board_item_id as taskId","link.thread_id as threadId","link.created_at as createdAt","t.status as status","t.title as title","t.virtual_mcp_id as virtualMcpId","t.metadata as metadata","lastmsg.payload as lastMessagePayload",J.or([J.exists(J.selectFrom("thread_message_parts as mp").select("mp.id").whereRef("mp.thread_id","=","link.thread_id")),J.exists(J.selectFrom("thread_messages as tm").select("tm.id").whereRef("tm.thread_id","=","link.thread_id"))]).as("hasMessages")]).where("link.organization_id","=",X).where("link.task_board_item_id","in",Q).orderBy("link.created_at","desc").execute(),G=new Map;for(let J of Y){let K={threadId:J.threadId,virtualMcpId:J.virtualMcpId??null,status:J.status??null,title:J.title??null,lastMessage:pV8(J.lastMessagePayload),hasPreview:jl4(J.metadata),hasMessages:!!J.hasMessages,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt},W=G.get(J.taskId);if(W)W.push(K);else G.set(J.taskId,[K])}for(let J of Z)J.threads=G.get(J.id)??[]}async attachTags($,Z){let X=Z.map((G)=>G.id),Q=await $.selectFrom("task_board_item_tags as link").innerJoin("organization_tags as tag","tag.id","link.id").select(["link.task_board_item_id as taskId","link.created_by as createdBy","link.created_at as createdAt","tag.id as id","tag.name as name","tag.color as color"]).where("link.task_board_item_id","in",X).orderBy("tag.name","asc").execute(),Y=new Map;for(let G of Q){let J={id:G.id,name:G.name,color:G.color??null,createdBy:G.createdBy,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt},K=Y.get(G.taskId);if(K)K.push(J);else Y.set(G.taskId,[J])}for(let G of Z)G.tags=Y.get(G.id)??[]}async recordActivity($){await this.db.insertInto("task_board_activity").values({id:Z4("act"),task_board_item_id:$.taskBoardItemId,action:$.action,actor_id:$.actorId,data:$.data?JSON.stringify($.data):null,occurred_at:new Date().toISOString()}).execute()}async claimReviewer($,Z,X){let Q=`rtok_${crypto.randomUUID()}`,Y=await this.db.insertInto("task_board_review_claims").values({task_board_item_id:$,reviewer:Z,cycle_at:X,token:Q}).onConflict((J)=>J.columns(["task_board_item_id","reviewer","cycle_at"]).doNothing()).returning("token").executeTakeFirst();if(Y)return{claimed:!0,token:Y.token};return{claimed:!1,token:(await this.db.selectFrom("task_board_review_claims").select("token").where("task_board_item_id","=",$).where("reviewer","=",Z).where("cycle_at","=",X).executeTakeFirst())?.token??Q}}async releaseReviewerClaim($,Z,X){await this.db.deleteFrom("task_board_review_claims").where("task_board_item_id","=",$).where("reviewer","=",Z).where("cycle_at","=",X).execute()}async resolveReviewClaimByToken($,Z){let X=await this.db.selectFrom("task_board_review_claims").select(["reviewer","cycle_at"]).where("task_board_item_id","=",$).where("token","=",Z).executeTakeFirst();return X?{reviewer:X.reviewer,cycleAt:X.cycle_at}:null}async recordActivities($){if($.length===0)return;let Z=new Date().toISOString();await this.db.insertInto("task_board_activity").values($.map((X)=>({id:Z4("act"),task_board_item_id:X.taskBoardItemId,action:X.action,actor_id:X.actorId,data:X.data?JSON.stringify(X.data):null,occurred_at:Z}))).execute()}async listActivity($,Z){return(await this.db.selectFrom("task_board_activity as a").innerJoin("task_board_items as item","item.id","a.task_board_item_id").selectAll("a").where("item.organization_id","=",Z).where("a.task_board_item_id","=",$).orderBy("a.occurred_at","asc").execute()).map((Q)=>({id:Q.id,taskBoardItemId:Q.task_board_item_id,action:Q.action,actorId:Q.actor_id,data:typeof Q.data==="string"?JSON.parse(Q.data):Q.data??{},occurredAt:Q.occurred_at instanceof Date?Q.occurred_at.toISOString():Q.occurred_at}))}async listComments($,Z){return(await this.db.selectFrom("task_board_comments as c").innerJoin("task_board_items as item","item.id","c.task_board_item_id").selectAll("c").where("item.organization_id","=",Z).where("c.task_board_item_id","=",$).orderBy("c.created_at","asc").execute()).map((Q)=>N51(Q))}async createComment($){if(!await this.db.selectFrom("task_board_items").select("id").where("id","=",$.taskBoardItemId).where("organization_id","=",$.organizationId).executeTakeFirst())return null;let X=null;if($.parentId){let Y=await this.db.selectFrom("task_board_comments").select(["id","parent_id"]).where("id","=",$.parentId).where("task_board_item_id","=",$.taskBoardItemId).executeTakeFirst();if(!Y)return null;X=Y.parent_id??Y.id}let Q=await this.db.insertInto("task_board_comments").values({id:Z4("cmt"),task_board_item_id:$.taskBoardItemId,parent_id:X,author_id:$.authorId,body:$.body}).returningAll().executeTakeFirstOrThrow();return N51(Q)}async updateComment($){let Z=await this.commentInOrg($.id,$.organizationId);if(!Z)return null;if($.body!==void 0&&Z.authorId!==$.callerId)return null;if($.resolved!==void 0&&Z.parentId!==null)return null;let X=await this.db.updateTable("task_board_comments").set({...$.body===void 0?{}:{body:$.body},...$.resolved===void 0?{}:{resolved:$.resolved},updated_at:new Date().toISOString()}).where("id","=",$.id).returningAll().executeTakeFirst();return X?N51(X):null}async deleteComment($,Z,X){let Q=await this.commentInOrg($,Z);if(!Q)return!1;if(Q.authorId!==X&&Q.authorId!==M4)return!1;return await this.db.deleteFrom("task_board_comments").where("id","=",$).execute(),!0}async commentInOrg($,Z){let X=await this.db.selectFrom("task_board_comments as c").innerJoin("task_board_items as item","item.id","c.task_board_item_id").select(["c.id","c.author_id","c.parent_id"]).where("c.id","=",$).where("item.organization_id","=",Z).executeTakeFirst();return X?{authorId:X.author_id,parentId:X.parent_id}:null}itemFromDbRow($){return{id:$.id,organizationId:$.organization_id,title:$.title,description:$.description,status:$.status,priority:$.priority,assigneeId:$.assignee_id,assignedBy:$.assigned_by,repo:$.repo,dueDate:$.due_date instanceof Date?$.due_date.toISOString():$.due_date,sortOrder:$.sort_order,retryAttempts:$.retry_attempts??0,threads:[],tags:[],createdBy:$.created_by,createdAt:$.created_at instanceof Date?$.created_at.toISOString():$.created_at,updatedBy:$.updated_by,updatedAt:$.updated_at instanceof Date?$.updated_at.toISOString():$.updated_at}}}var vr;var i_=O(()=>{GK();$Q();rZ();vr=new Set(["completed","failed","expired"])});function tV8($){let Z=$[1],X=$[2],Q=Number($[3]);return{owner:Z,repo:X,number:Q,url:`https://github.com/${Z}/${X}/pull/${Q}`}}function nj0($){let Z=$.length>200000?$.slice(0,200000):$,X=Pl4.exec(Z);if(X&&Number(X[3])>0)return tV8(X);let Q=Al4.exec(Z);if(Q&&Number(Q[3])>0)return tV8(Q);return null}function oV8($){if($==null)return null;if(typeof $==="string")return nj0($);let Z;try{Z=JSON.stringify($)}catch{return null}return Z?nj0(Z):null}var Pl4,Al4;var w51=O(()=>{Pl4=/https?:\/\/github\.com\/([^/\s"']+)\/([^/\s"']+)\/pull\/(\d+)/,Al4=/https?:\/\/api\.github\.com\/repos\/([^/\s"']+)\/([^/\s"']+)\/pulls\/(\d+)/});function aV8($){if(rV8.has($.kind??""))return 0;return Ml4($)?Il4:ql4}function Ml4($){let Z=$.kind??"";if(rV8.has(Z))return!1;if(Tl4.has(Z))return!0;let X=$.errorText??"";if(!X)return!1;if(X.includes(Pj0))return!0;return Rl4.some((Q)=>Q.test(X))}var Tl4,rV8,Rl4,Il4=3,ql4=1;var sV8=O(()=>{v$1();Tl4=new Set(["stall","liveness","projection","abandoned"]),rV8=new Set(["cancelled","superseded"]),Rl4=[/sandbox did not become ready/i,/sandbox (?:provisioning|claim) failed/i,/mcp is unusable/i,/harness_crashed: unexpected eof/i,/too many clients already|timeout exceeded when trying to connect/i,/\b(?:429|503)\b|too many requests|service unavailable/i]});class Zk8{listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,X)=>this.localEmit(Z,X)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=$k8)return console.warn(`[SSEHub] Total connection limit reached (${$k8})`),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=eV8)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (${eV8})`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let X=this.listeners.get($);if(!X)return;if(X.delete(Z)){if(this.totalCount--,X.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){let X=this.listeners.get($);if(!X||X.size===0)return;for(let Q of X.values()){if(Q.typePatterns&&!Vl4(Z.type,Q.typePatterns))continue;try{Q.push(Z)}catch{this.remove($,Q.id)}}}}function Vl4($,Z){for(let X of Z){if(X===$)return!0;if(X.endsWith(".*")){let Q=X.slice(0,-1);if($.startsWith(Q))return!0}}return!1}var eV8=50,$k8=500,O9;var pj0=O(()=>{n$();O9=new Zk8;y8.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback(($)=>$.observe(O9.count))});import{z as tj0}from"zod";async function L9($,Z){try{await $.storage.taskBoard.recordActivity(Z)}catch(X){console.error("[task-board] activity log write failed",X)}}async function Xk8($,Z){if(Z.length===0)return;try{await $.storage.taskBoard.recordActivities(Z)}catch(X){console.error("[task-board] activity log write failed",X)}}var B51;var v3=O(()=>{p0();wH();B51=t({name:"TASK_BOARD_ACTIVITY_LIST",description:"List a task board item's change history (timeline, oldest first).",annotations:{title:"List Task Activity",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:tj0.object({taskBoardItemId:tj0.string()}),outputSchema:tj0.object({activity:tj0.array(B28)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");return{activity:await Z.storage.taskBoard.listActivity($.taskBoardItemId,X)}}})});function O51($,Z,X,Q){tJ({event:$,organizationId:Z,properties:{task_id:X.id,reports_task:sQ(X),...Q}})}function t4($,Z){O9.emit($,{id:crypto.randomUUID(),type:sU8,source:"task-board",subject:Z.id,data:Z,time:new Date().toISOString()})}function Qk8($,Z){O9.emit($,{id:crypto.randomUUID(),type:eU8,source:"task-board",subject:Z,data:{id:Z},time:new Date().toISOString()})}function kl4($,Z){return $?[$]:Z}async function rj0($,Z,X){let Q=$.metadata?.runMetadata?.taskBoardItemId,Y=!Q&&X?await $.storage.taskBoard.linkedTaskIds(X,Z):[];return kl4(Q,Y)}async function ch($,Z,X){let Q=$.organization?.id;if(!Q)return;try{for(let Y of await rj0($,Q,X)){let G=await $.storage.taskBoard.getById(Y,Q);if(!G||oj0[Z]<=oj0[G.status])continue;let J=await $.storage.taskBoard.update(Y,Q,{status:Z},$.auth?.user?.id??G.updatedBy);if(await $.storage.taskBoard.recordActivity({taskBoardItemId:Y,action:"status_changed",actorId:null,data:{from:G.status,to:Z}}).catch((K)=>console.error("[task-board] activity log write failed",K)),t4(Q,J),Z==="in_progress"||Z==="in_review")O51(Z==="in_progress"?"task_run_started":"task_run_completed",Q,J,{from:G.status,via:"pr_open"})}}catch(Y){console.error("[task-board] run transition failed",Y)}}async function aj0($,Z,X,Q){let Y=$.organization?.id;if(!Y)return;try{let G=oV8(Z);if(!G)return;let J=await rj0($,Y,Q);for(let K of J)await $.storage.taskBoard.linkPr({taskBoardItemId:K,organizationId:Y,url:G.url,prNumber:G.number,repoOwner:G.owner,repoName:G.repo,connectionId:X??null})}catch(G){console.error("[task-board] PR capture failed",G)}}async function lh($,Z,X,Q){try{let Y=await $.advanceLinkedTasksToReviewOnThreadFinish(Z,X);for(let G of Y)t4(X,G),O51("task_run_completed",X,G,{from:"in_progress",via:"thread_finish"});for(let G of Y)await $.clearRunRetry(G.id,X).catch(()=>{})}catch(Y){console.error("[task-board] thread-finish transition failed",Y)}await L51($,Z,X),await D51($,Q,Z,X)}async function L51($,Z,X){try{let Q=await $.failedRunInfo(Z,X);if(!Q)return;let Y=aV8(Q);for(let G of await $.linkedTaskIds(Z,X)){let J=await $.getById(G,X);if(!J||J.status!=="in_progress")continue;if(J.threads.some((H)=>H.hasMessages&&H.status==="in_progress"))continue;let K=J.retryAttempts;if(K<Y){let H=J7(Cl4,Sl4,K,2,0.5);if(!await $.scheduleRunRetry(G,X,K+1,new Date(Date.now()+H)))continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:"in_progress",to:"in_progress",retry:K+1,of:Y,reason:Q.errorText??Q.kind}}).catch(()=>{});continue}let W=await $.returnToTodoAfterFailure(G,X,J.updatedBy);if(!W)continue;await $.recordActivity({taskBoardItemId:G,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q.errorText??Q.kind,retriesSpent:K}}).catch(()=>{}),t4(X,W),O51("task_run_failed",X,J,{reason:Q.kind??"error",retries_spent:K})}}catch(Q){console.error("[task-board] failed-run reaction failed",Q)}}async function D51($,Z,X,Q){try{for(let Y of await $.linkedTaskIds(X,Q)){let G=await $.getById(Y,Q);if(!G)continue;if(oj0[G.status]>=oj0.in_review)continue;if(G.threads.some((K)=>K.hasMessages&&(K.status===null||!vr.has(K.status))))continue;if((await $.listPrs(Y,Q)).length>0)continue;await QN8(Z,Q,Y)}}catch(Y){console.error("[task-board] quota refund pass failed",Y)}}async function iO($,Z,X){let Q=Z.organizationId;if(Z.assigneeId!==M4)return!1;try{let Y=await $.storage.taskBoard.unassignSuperAgent(Z.id,Q,Z.updatedBy);if(!Y)return!1;return await L9($,{taskBoardItemId:Z.id,action:"assignee_changed",actorId:null,data:{from:Z.assigneeId,to:null,reason:X}}),console.warn(`[task-board] ${Z.id} handed to a human: ${X}`),t4(Q,Y),!0}catch(Y){return console.error(`[task-board] handing ${Z.id} to a human failed`,Y),!1}}async function Yk8($,Z){let X=$.organization?.id;if(!X)return;try{let Q=await $.storage.taskBoard.reopenLinkedTasksOnThreadRun(Z,X);for(let Y of Q)t4(X,Y)}catch(Q){console.error("[task-board] thread-run reopen failed",Q)}}function Gk8($){return $.includes("create_pull_request")||$.includes("createPullRequest")}function Jk8($){if(_l4.test($))return!0;return vl4.test($)&&xl4.test($)}var oj0,Sl4=30000,Cl4=120000,_l4,vl4,xl4;var PZ=O(()=>{GK();p4();i_();w51();sV8();a4();pj0();rZ();v3();oj0={triage:0,todo:1,in_progress:2,in_review:3,done:4};_l4=/\bgh\s+pr\s+create\b/,vl4=/api\.github\.com\/repos\/[^\s"']+\/pulls\b/,xl4=/(?:-X|--request)\s+POST/});function sj0($,Z){return{resolveArgs:(X)=>nV8(X,$),onToolCalled:(X)=>{if(!X.isError&&Gk8(X.toolName))ch($,"in_review",Z);let Q=$.organization?.id,Y=$.auth?.user?.id;if(!Q||!Y)return;n1.capture({distinctId:Y,event:"tool_called",groups:{organization:Q},properties:{organization_id:Q,tool_source:"mcp",tool_name:X.toolName,tool_safe_name:X.toolSafeName,read_only:X.annotations?.readOnlyHint??null,destructive:X.annotations?.destructiveHint??null,idempotent:X.annotations?.idempotentHint??null,open_world:X.annotations?.openWorldHint??null,latency_ms:Math.round(X.latencyMs),is_error:X.isError}})},onPrOpened:(X)=>{aj0($,X.result,X.connectionId,Z)}}}var E51=O(()=>{p4();uh();PZ()});function Kk8($){if($ instanceof Error)return $.message;if(typeof $==="string")return $;if(typeof $==="object"&&$!==null){let Z=$.message;if(typeof Z==="string")return Z;try{return JSON.stringify($)}catch{return String($)}}return String($)}function Wk8($){let Z,X,Q=new Promise((K)=>{X=K}),Y=(K)=>{if(Z===void 0)Z=K;X(Z)},J=($.streamText??BO)({model:$.model,system:$.systemMessages,messages:$.messages,tools:$.tools,providerOptions:KM8,prepareStep:$.prepareStep,temperature:$.temperature,maxOutputTokens:$.maxOutputTokens,stopWhen:$.stopWhen,abortSignal:$.abortSignal,onStepFinish:$.onStepFinish,onError:async(K)=>{let W=K.error??K,H=Kk8(W);$.onError?.(H,W),Y(H)},onAbort:async()=>{Y(Z??"Run aborted before completion.")}});return Promise.resolve(J.finishReason).then(()=>{if(Z===void 0)X(void 0)}).catch((K)=>{let W=Kk8(K);$.onError?.(W,K),Y(W)}),{result:J,error:Q}}var Hk8=O(()=>{u4();u$1()});import{SpanStatusCode as z51,trace as fl4}from"@opentelemetry/api";async function dh($){let Z=$.tracer??fl4.getTracer("decopilot"),X=$.stepLimit??($.kind==="agent"?Rq8:cN),Q=$.planMode??!1,Y=$.toolApprovalLevel??"auto",G=Z.startSpan("decopilot.agent_loop",{attributes:{"decopilot.agent.id":$.virtualMcp.id,"decopilot.agent.kind":$.kind,"decopilot.organization.id":$.organization.id,"decopilot.model.id":$.models.thinking.id}}),J=await TM8({ctx:$.ctx,organization:$.organization,virtualMcp:$.virtualMcp,kind:$.kind,planMode:Q,isDecopilot:$.isDecopilot,agentInstructions:$.systemAgentInstructions,currentThreadId:$.currentThreadId,user:$.user,userContext:$.userContext,codingWorkspace:$.codingWorkspace,passthroughClient:$.passthroughClient,connectionsData:$.connectionsData}),K=$.additionalSystemMessages&&$.additionalSystemMessages.length>0?[...J,...$.additionalSystemMessages]:J,{resolveArgs:W,onToolCalled:H,onPrOpened:U}=sj0($.ctx,$.currentThreadId),{tools:N}=await _V8({kind:$.kind,ctx:$.ctx,mcpClient:$.mcpClient,writer:$.writer,planMode:Q,toolApprovalLevel:Y,subtaskParams:$.subtaskParams,resolveArgs:W,onToolCalled:H,onPrOpened:U,fullBuiltInParams:$.subagentBuiltInParams,toolOutputMap:$.toolOutputMap}),F=$.extraTools?{...N,...$.extraTools}:N,w=$.__streamText?void 0:jj0($.provider,$.models.thinking),B=(D)=>{for(let E of D.toolCalls??[]){let z=E.input?.command;if(E.toolName==="bash"&&z&&Jk8(z)){ch($.ctx,"in_review",$.currentThreadId);let j=(D.toolResults??[]).find((A)=>A.toolCallId===E.toolCallId);aj0($.ctx,j?.output,null,$.currentThreadId);break}}return $.onStepFinish?.(D)},L=Wk8({model:w,systemMessages:K,messages:$.messages,tools:F,prepareStep:$.prepareStep,temperature:$.temperature,maxOutputTokens:QM8($.models.thinking.limits,RX(K)+RX($.messages)+RX(XM8(F,$.activeToolNames))),stopWhen:NO(X),abortSignal:$.abortSignal,onStepFinish:B,streamText:$.__streamText,onError:(D,E)=>{if(console.error(`[runAgentLoop:${$.kind}:${$.virtualMcp.id}] Error`,D),G.setStatus({code:z51.ERROR,message:D}),E instanceof Error)G.recordException(E)}});return Promise.resolve(L.result.finishReason).then(()=>{G.setStatus({code:z51.OK})}).catch((D)=>{let E=D instanceof Error?D.message:typeof D==="string"?D:`${D}`;G.setStatus({code:z51.ERROR,message:E})}).finally(()=>G.end()),{result:L.result,error:L.error,span:G,assembledSystemMessages:K}}var ej0=O(()=>{u4();A$1();dN();b_();RM8();vV8();E51();PZ();Hk8()});function $P0($){let Z=Number.isFinite($)?Math.max(1,$):1,X=0,Q=0,Y=[];return{async acquire(G=0){if(X<Z)X++;else await new Promise((K)=>{let W={priority:G,seq:Q++,wake:K},H=Y.length;while(H>0&&Y[H-1].priority>G)H--;Y.splice(H,0,W)});let J=!1;return()=>{if(J)return;J=!0;let K=Y.shift();if(K)K.wake();else X--}},get active(){return X},get pending(){return Y.length}}}var bl4,Uk8=()=>bl4.acquire();var j51=O(()=>{v8();bl4=$P0(e0().decopilotMaxConcurrentSubagents)});import{z as P51}from"zod";function T51($){return/socket connection was closed|econnreset|epipe|etimedout|fetch failed|terminated|network error|premature close|\b(429|500|502|503|504)\b|overloaded|rate.?limit|timed? ?out/i.test($)}function gl4($,Z,X=!1){if(!$.repo)return X?Z:void 0;return{repo:{owner:$.repo.owner,name:$.repo.name,connectedGithub:Boolean($.repo.connectionId)},branch:Z?.branch,cwd:Z?.cwd,workspaceKind:"github"}}function A51($){if($==="{}")return"";return $.length>Fk8?$.slice(0,Fk8)+"\u2026":$}function hl4($,Z){let X="";try{X=typeof Z==="string"?Z:JSON.stringify(Z??{})}catch{X=""}let Q=A51(X);return Q?`${$} ${Q}`:$}function G51($,Z,X){let{provider:Q,organization:Y,models:G,needsApproval:J,self:K,onChildUsage:W,vmTools:H,codingWorkspace:U,parentBuiltInParams:N,currentThreadId:F}=Z;return d8({description:yl4,inputSchema:K0(Y51),needsApproval:J,execute:async function*({prompt:w,agent_id:B},{abortSignal:L,toolCallId:D}){let E=performance.now(),z=!!K&&(!B||B===K.id),j=z?K.id:B,A=K?" Omit agent_id to clone yourself (a fresh subagent with your tools + instructions).":"";if(!j){yield{text:"",error:`agent_id is required here.${A}`,finishReason:"error"};return}if(!z&&K){let f=(await X.storage.virtualMcps.findById(K.id,Y.id))?.metadata?.subAgents;if(Array.isArray(f)&&!f.includes(j)){let y=f.length>0?" Or pass an id from <available-agents> or <available-connections>.":"";yield{text:"",error:`Target '${j}' is not in this agent's delegation allowlist (allow=${JSON.stringify(f)}).${A}${y}`,finishReason:"error"};return}}let P;try{P=await Mj0(X,Y.id,j,{superUser:z})}catch(m){yield{text:"",error:`${m.message} (agent_id="${j}").${A}`,finishReason:"error"};return}let{mcpClient:I,targetRef:V}=P,M=V.id,C=await Uk8();L?.addEventListener("abort",()=>C(),{once:!0});try{let m=gl4(V,U,z),f=N?(()=>{let{toolOutputMap:H0,...V0}=N;return{...V0,passthroughClient:I,agentId:V.id,vmContext:z?V0.vmContext:null,backgroundDispatcher:null,onChildUsage:void 0,pendingImages:[]}})():void 0,y="",o=null,b=0,a=200,F0=()=>{if(!o)return;let H0=A51(o.args),V0=y&&!y.endsWith(`
2750
2750
  `)?`
2751
2751
  `:"";y+=`${V0}\u21B3 ${H0?`${o.name} ${H0}`:o.name}
2752
2752
  `,o=null},j0=()=>{if(!o)return y;let H0=A51(o.args),V0=y&&!y.endsWith(`
@@ -2793,7 +2793,7 @@ ${$.description}
2793
2793
  `):Z?.feedback?[Z.pr?`A reviewer requested changes on the existing pull request #${Z.pr.number} (${Z.pr.url}):`:"A reviewer requested changes on your previous work:",Z.feedback,Z.pr?`Load the repo, then CHECK OUT that PR's branch (e.g. \`gh pr checkout ${Z.pr.number}\`) before editing, address the feedback, commit, and push to update the SAME pull request \u2014 do NOT open a new one or start a new branch.`:"Address this feedback.",""].join(`
2794
2794
  `):"","How to work:","- First decide whether this task requires changing code in a repository. Some tasks (research, answering a question, planning) don't. If it doesn't, just do the work directly \u2014 don't load a repo or open a PR.","- If it DOES need code changes: use the `load_repo` tool to load the relevant repository, then make the change, commit on a new branch, push, and open a pull request. Only then does a PR apply.","- Prefer the GitHub tool to open the PR. If it errors or targets the wrong repo, fall back to `git push` + the GitHub REST API (the auth token is embedded in the `origin` URL).","- If a dev server is running it hot-reloads your changes \u2014 don't restart it, hunt for its port, or run a full typecheck/build just to verify a small edit.","- Change only what the task needs. Don't trace the definition of a pre-existing symbol that's incidental to your change \u2014 note it in one line and move on. Prefer one or two broad searches over many narrow retries.","- Only if you hit a genuine blocker a human must clear (see above) may you call `user_ask` \u2014 otherwise keep going and finish the task.","",`(task id: ${$.id})`].join(`
2795
2795
  `)}async function Yi4($,Z,X){let Y=(await $.storage.taskBoard.listPrs(Z.id,Z.organizationId).catch(()=>[])).find((G)=>G.number===X);if(!Y)return null;return PC8($,Z.organizationId,Y).catch(()=>null)}async function tN($,Z,X){let Q=await $N8($,Z,X?.userInitiated?pg():void 0),Y="decopilot";try{let G=e0().taskBoardRerunReusesPrBranch&&X?.pr?await Yi4($,Z,X.pr.number):null,J=await VP0($,Z.organizationId);if(J){Y="claude-code";let K="repo"in J?J.repo:null;await lr($,Z,{title:`Super Agent: ${Z.title}`,...X?.runClass?{runClass:X.runClass}:{},...G?{pinnedRef:G}:{},prompt:HC8(Z,K,{...X,..."choices"in J?{repoChoices:J.choices}:{}}),temperature:0.5,harnessId:"claude-code",...K?{repo:K}:{}})}else await lr($,Z,{title:`Super Agent: ${Z.title}`,...X?.runClass?{runClass:X.runClass}:{},prompt:Qi4(Z,X),temperature:0.5,...G?{pinnedRef:G}:{}})}catch(G){throw await ZN8($.storage.organizationBilling,Z.organizationId,Z.id,Q),G}tJ({event:"task_run_enqueued",organizationId:Z.organizationId,properties:{task_id:Z.id,reports_task:sQ(Z),claim:Q,harness:Y,...X?.runClass?{run_class:X.runClass}:{}}})}var aO=O(()=>{rZ();GK();rZ();p4();v8();B91();sh();O91()});import{z as oN}from"zod";var M91;var AC8=O(()=>{p0();wH();x41();aO();v3();PZ();M91=t({name:"TASK_BOARD_ITEM_CREATE",description:"Create a new task board item for the organization.",annotations:{title:"Create Task Board Item",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:oN.object({title:oN.string().min(1),description:oN.string().nullable().optional(),status:bN.optional(),priority:q_.optional(),assigneeId:oN.string().nullable().optional(),repo:oN.string().nullable().optional(),dueDate:oN.string().datetime().nullable().optional(),tagIds:oN.array(oN.string()).optional()}),outputSchema:oN.object({item:Sh}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if($.assigneeId)await Yj0(Z,X,$.assigneeId);let Q=$.assigneeId===M4;if($.tagIds?.length){let G=await Z.storage.tags.listOrgTags(X),J=new Set(G.map((K)=>K.id));for(let K of $.tagIds)if(!J.has(K))throw Error(`Tag not found: ${K}`)}let Y=await Z.storage.taskBoard.create({organizationId:X,title:$.title,description:$.description??null,status:Q?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId??null,assignedBy:$.assigneeId?z1(Z):null,repo:$.repo??null,dueDate:$.dueDate??null,by:z1(Z)});if($.tagIds?.length)await Z.storage.taskBoard.setItemTags(Y.id,$.tagIds,z1(Z)),Y=await Z.storage.taskBoard.getById(Y.id,X);return await L9(Z,{taskBoardItemId:Y.id,action:"created",actorId:z1(Z)}),t4(X,Y),await eh(Z,Y),{item:Y}}})});function Gi4($){if($.status==="completed")return"advance";if($.status==="failed"&&$.messageStorageVersion===2&&bk8($))return"nudge";return"none"}function Ji4($){return["This task is still In Progress on the board and your last run ended without finishing it.","","Look at what you already did (`git log`, `git status`, and the messages above), then either:","- finish the remaining work (and open the PR, if it needed code changes),","- or, if it's actually done, say so in one line \u2014 the board moves the card for you,",$==="decopilot"?"- or, if you're blocked on something only a human knows, call the `user_ask` tool.":"- or, if you're blocked on something only a human knows, say what you need and stop.","","Don't start over and don't redo work you already committed or pushed. You are on the same branch as before \u2014 push to it and update your existing pull request rather than opening a second one."].join(`
2796
- `)}async function Ki4($,Z,X){let Q=Z.organizationId,Y=await jX($,"smart"),G=X.virtual_mcp_id??vE(Q),J={id:`stall-nudge-${Z.id}-${X.id}`,role:"user",parts:[{type:"text",text:Ji4(X.harness_id)}]};await new IX({storage:$.storage.threads.messageParts(),orgId:Q,threadId:X.id,runId:X.id}).emitRequestMessage(J),await nN({threadId:X.id,source:"background-tool",request:{messages:[J],models:{credentialId:Y.credentialId,thinking:{id:Y.modelId,title:Y.modelMeta.title}},agent:{id:G},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Q,userId:Z.assignedBy??Z.createdBy,harnessId:X.harness_id==="claude-code"?"claude-code":"decopilot",sandboxProviderKind:"agent-sandbox",...X.branch?{branch:X.branch}:{},taskId:X.id,runMetadata:Gj0(Z)}},{workflowID:`stall-nudge:${Z.id}:${X.id}`})}async function Wi4($,Z){let X=await $.storage.threads.get(Z);if(!X)return{action:"none",thread:null};return{action:Gi4({status:X.status,messageStorageVersion:X.message_storage_version,harnessId:X.harness_id,sandboxProviderKind:X.sandbox_provider_kind}),thread:X}}function Hi4($,Z=Date.now()){if($.status!=="in_progress")return!1;if($.run_started_at)return!1;return s$1($,Z)}async function Ui4($,Z){let X=[];for(let Q of Z.threads){if(Q.status!=="in_progress")continue;let Y=await $.storage.threads.get(Q.threadId);if(!Y||!Hi4(Y))continue;if(await $.storage.threads.markRunFailed(Q.threadId,V91,"abandoned"))X.push(Q.threadId),console.warn(`[task-board] failed never-started thread ${Q.threadId} on ${Z.id}`)}return X}async function TC8($,Z){let X=$.organization?.id;if(!X)return;for(let Q of Z){if(Q.status==="in_progress")try{if((await Ui4($,Q)).length>0)continue}catch(G){console.error(`[task-board] reaping threads for ${Q.id} failed`,G)}if(!F51(Q))continue;let Y=Q.threads.find((G)=>G.hasMessages);if(!Y)continue;try{let{action:G,thread:J}=await Wi4($,Y.threadId);if(G==="none"||!J)continue;if(G==="advance")await lh($.storage.taskBoard,Y.threadId,X,$.storage.organizationBilling);else await Ki4($,Q,J)}catch(G){console.error(`[task-board] stall recovery failed for ${Q.id}`,G)}}}var V91="Run never started \u2014 no pod picked it up before the idle window elapsed";var k91=O(()=>{Fr();nO();bO();tO();i_();q6();PZ()});import{z as S91}from"zod";var C91;var RC8=O(()=>{p0();wH();k91();C91=t({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization.",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:S91.object({}),outputSchema:S91.object({items:S91.array(Sh)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.list(X);return TC8(Z,Q),{items:Q}}})});import{z as x3}from"zod";function Fi4($,Z){let X=[];for(let{field:G,action:J}of Ni4){if(Z[G]===$[G])continue;X.push({action:J,data:{from:$[G],to:Z[G]}})}if(Z.description!==$.description)X.push({action:"description_changed"});let Q=new Set($.tags.map((G)=>G.id));if(Z.tags.length!==$.tags.length||Z.tags.some((G)=>!Q.has(G.id)))X.push({action:"tags_changed",data:{from:$.tags,to:Z.tags}});return X}function wi4($,Z){if($!==M4)return!1;if(!Z)return!1;return Z.assigneeId!==M4?!0:Z.status==="todo"}var Ni4,_91;var IC8=O(()=>{p0();wH();x41();aO();v3();PZ();GK();Ni4=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}];_91=t({name:"TASK_BOARD_ITEM_UPDATE",description:"Update a task board item's fields (title, description, status, priority, assignee), and/or link a chat thread to it.",annotations:{title:"Update Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:x3.object({id:x3.string(),title:x3.string().min(1).optional(),description:x3.string().nullable().optional(),status:bN.optional(),priority:q_.optional(),assigneeId:x3.string().nullable().optional(),repo:x3.string().nullable().optional(),dueDate:x3.string().datetime().nullable().optional(),sortOrder:x3.number().optional(),tagIds:x3.array(x3.string()).optional(),linkThreadId:x3.string().optional()}),outputSchema:x3.object({item:Sh}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if($.assigneeId)await Yj0(Z,X,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,X))throw Error(`Task board item not found: ${$.id}`);if(!await Z.storage.threads.get($.linkThreadId))throw Error(`Thread not found: ${$.linkThreadId}`);await Z.storage.taskBoard.linkThread($.id,$.linkThreadId,X)}let Q=$.title!==void 0||$.description!==void 0||$.status!==void 0||$.priority!==void 0||$.assigneeId!==void 0||$.repo!==void 0||$.dueDate!==void 0||$.sortOrder!==void 0||$.tagIds!==void 0,Y=Q?await Z.storage.taskBoard.getById($.id,X):null;if(Q&&!Y)throw Error(`Task board item not found: ${$.id}`);let G=$.assigneeId!==void 0&&$.assigneeId!==(Y?.assigneeId??null),J=wi4($.assigneeId,Y);if(Y&&sQ(Y)){if($.title!==void 0||$.description!==void 0||$.priority!==void 0)throw Error("This task was generated from your report and can't be edited \u2014 create your own task instead.");if(J)await xG0(Z,Y,pg())}if($.tagIds!==void 0){let W=await Z.storage.tags.listOrgTags(X),H=new Set(W.map((U)=>U.id));for(let U of $.tagIds)if(!H.has(U))throw Error(`Tag not found: ${U}`);await Z.storage.taskBoard.setItemTags($.id,$.tagIds,z1(Z))}let K;if(Q)K=await Z.storage.taskBoard.update($.id,X,{title:$.title,description:$.description,status:J?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId,assignedBy:G?$.assigneeId?z1(Z):null:void 0,repo:$.repo,dueDate:$.dueDate,sortOrder:$.sortOrder},z1(Z));else{let W=await Z.storage.taskBoard.getById($.id,X);if(!W)throw Error(`Task board item not found: ${$.id}`);K=W}if(Y){let W=z1(Z),H=Fi4(Y,K);if(H.length>0)await Xk8(Z,H.map((U)=>({taskBoardItemId:K.id,actorId:W,...U})))}if(Q||$.linkThreadId)t4(X,K);if(J)await eh(Z,K,{userInitiated:!0});return{item:K}}})});import{z as fP0}from"zod";var v91;var qC8=O(()=>{p0();PZ();v91=t({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item. A reports-pushed task also dismisses its finding, so the next diagnostic import won't re-create the card.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:fP0.object({id:fP0.string()}),outputSchema:fP0.object({success:fP0.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.taskBoard.delete($.id,X,z1(Z)??"system"))throw Error(`Task board item not found: ${$.id}`);return Qk8(X,$.id),{success:!0}}})});import{z as t_}from"zod";var x91;var MC8=O(()=>{p0();w51();PZ();Nr();x91=t({name:"TASK_BOARD_ITEM_PR_LINK",description:"Link the pull request you just opened to this run's task board item. Call this right after `gh pr create` succeeds, with the PR URL it printed. Reviewers (QA, code review) are dispatched from the linked PR, so a task whose PR is not linked never gets reviewed.",annotations:{title:"Link Pull Request to Task",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t_.object({url:t_.string().describe("The pull request URL, e.g. https://github.com/owner/repo/pull/123")}),outputSchema:t_.object({url:t_.string(),prNumber:t_.number(),taskBoardItemIds:t_.array(t_.string())}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z).id,{threadId:Q}=Qj0(),Y=nj0($.url);if(!Y)throw Error(`Not a GitHub pull request URL: ${$.url} (expected https://github.com/<owner>/<repo>/pull/<number>)`);let G=await rj0(Z,X,Q);for(let J of G)await Z.storage.taskBoard.linkPr({taskBoardItemId:J,organizationId:X,url:Y.url,prNumber:Y.number,repoOwner:Y.owner,repoName:Y.repo}),await Z.storage.taskBoard.clearSweepBudget(J,X);return{url:Y.url,prNumber:Y.number,taskBoardItemIds:G}}})});function kC8($){VC8=$}function SC8($){VC8?.broadcast($)}var VC8=null;import{DBOS as bP0}from"@dbos-inc/dbos-sdk";function Bi4($,Z){let X=`thread-run:${Z}:`;if(!$.workflowID.startsWith(X))return null;let Q=$.input?.[0],Y=Q?.request;return{workflowId:$.workflowID,messageId:Y?.messageId??$.workflowID.slice(X.length),status:$.status==="PENDING"?"running":"queued",enqueuedAt:$.createdAt,...Q?.source!==void 0?{source:Q.source}:{}}}async function f91($){return(await bP0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING","ENQUEUED"],loadInput:!0,loadOutput:!1})).map((X)=>Bi4(X,$)).filter((X)=>X!==null).sort((X,Q)=>X.enqueuedAt-Q.enqueuedAt)}async function CC8($,Z){if(!Z.startsWith(`thread-run:${$}:`))return!1;return await bP0.cancelWorkflows([Z]),!0}async function yP0($){let Z=await bP0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING"],loadInput:!1,loadOutput:!1});if(Z.length===0)return;await bP0.cancelWorkflows(Z.map((X)=>X.workflowID))}var b91=()=>{};import{z as $u}from"zod";function Li4($){return $.threads.filter((Z)=>Z.status!==null&&!vr.has(Z.status)).map((Z)=>Z.threadId)}async function Di4($,Z,X){let Q=(G)=>(J)=>console.error("[task-board] rerun takeover step failed",{threadId:Z,step:G,err:J});await $.storage.threads.setCancelRequested(Z,X).catch(Q("cancel-flag")),await yP0(Z).catch(Q("gate-head"));let Y=await $.storage.threads.getRunFence(Z).catch(()=>null);if(Y)await cr(Z,Y).catch(Q("hosted-harness"));SC8(Z)}var Oi4="Superseded by a manual re-run of this task",y91;var _C8=O(()=>{p0();rZ();i_();tO();b91();v3();PZ();aO();GK();y91=t({name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task board item with the Super Agent, whatever lane it is in. Use this to retry a task that stalled, finished without doing the job, or is already assigned to the Super Agent (in which case re-assigning it does nothing). Fails any run still holding the task open, moves it to In Progress, and queues a fresh run.",annotations:{title:"Re-run Task",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:$u.object({id:$u.string().describe("The task board item to re-run.")}),outputSchema:$u.object({status:$u.string().describe("The task's lane after the re-run was queued."),supersededThreadIds:$u.array($u.string()).describe("Runs that were failed to make room for this one.")}),handler:async({id:$},Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);if(Q.assigneeId!==M4)throw Error("Only a task assigned to the Super Agent can be re-run. Assign it to "+"the Super Agent instead \u2014 that queues a run by itself.");await xG0(Z,Q,pg());let Y=[];for(let J of Li4(Q)){if(!await Z.storage.threads.failIfNotTerminal(J,Oi4,"superseded"))continue;Y.push(J),await Di4(Z,J,X)}let G=await Z.storage.taskBoard.update($,X,{status:"in_progress"},z1(Z));return await L9(Z,{taskBoardItemId:$,action:"status_changed",actorId:z1(Z),data:{from:Q.status,to:"in_progress",reason:"rerun"}}),t4(X,G),await tN(Z,G,{userInitiated:!0}),{status:G.status,supersededThreadIds:Y}}})});async function ji4($,Z,X,Q,Y){if(zi4.has(Q))return;let J=(await $.storage.taskBoard.listActivity(X,Z).catch(()=>[])).at(-1);if(J?.action==="merge_failed"&&J.data?.reason===Q)return;await L9($,{taskBoardItemId:X,action:"merge_failed",actorId:null,data:{reason:Q,...Y?{detail:Y}:{}}})}async function dr($,Z,X){let Q=async(U,N)=>{return await ji4($,Z,X,U,N),{merged:!1,reason:U,...N?{detail:N}:{}}},G=(await $.storage.taskBoard.listPrs(X,Z))[0];if(!G)return console.warn(`[task-board] merge skipped \u2014 no linked PR on ${X}`),Q("no_pr");let J=await zC8($,Z,G);if(J==="failing"||J==="pending")return console.warn(`[task-board] merge blocked \u2014 checks ${J} on PR #${G.number}`),Q(J==="failing"?"checks_failing":"checks_pending");let K=`${G.repoOwner}/${G.repoName}`,W=await ah($,Z,G.connectionId,{owner:G.repoOwner,name:G.repoName});if(!W)return console.warn("[task-board] merge blocked \u2014 no active GitHub connection for "+`${K} (PR #${G.number})`),Q("no_connection",K);let H=await v5(W,$,!0);try{let U=await H.callTool({name:"merge_pull_request",arguments:{owner:G.repoOwner,repo:G.repoName,pullNumber:G.number}},void 0,{timeout:Ei4});if(U?.isError){let N=JSON.stringify(U?.content);return console.error(`[task-board] merge refused by GitHub on PR #${G.number}:`,N),Q("refused",N?.slice(0,500))}return BC8(W.id),{merged:!0}}catch(U){return console.error("[task-board] merge PR failed",U),Q("error",U instanceof Error?U.message:String(U))}finally{await H.close().catch(()=>{})}}async function g91($,Z,X){let Y=(await $.storage.organizationSettings.get(Z))?.flags??{},G=j3.filter((K)=>Y[zN[K]]===!0),J=await $.storage.taskBoard.listActivity(X,Z);return QO(J,G,{verifiedOnly:!0})}async function Pi4($,Z){let Q=(await $.storage.organizationSettings.get(Z.organizationId))?.flags??{},Y=j3.filter((J)=>Q[zN[J]]===!0),G=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId);if(!rU8(G,Y))return;await iO($,Z,"every reviewer approved, but an approval could not be verified \u2014 "+"auto-merge is blocked and no reviewer can be re-dispatched this cycle")}function Ai4($){if($.merged||$.reason!=="refused")return!1;return!P91($.detail??"")}async function Ti4($,Z,X){if(!Ai4(X))return;let Q=Z.organizationId,G=(await $.storage.taskBoard.listPrs(Z.id,Q))[0];if(!G)return;await rh($,Q,Z,{pr:{number:G.number,url:G.url},conflict:await xP0($,Q,G)}).catch((J)=>{console.error("[task-board] sweep conflict auto-resolve failed",J)})}async function vC8($,Z){let X=Z.organizationId;if(Z.status!=="in_review")return!1;if((await $.storage.organizationSettings.get(X))?.flags?.auto_merge!==!0)return!1;if(!await g91($,X,Z.id))return await Pi4($,Z),!1;let Y=await dr($,X,Z.id);if(!Y.merged)return await Ti4($,Z,Y),!1;let G=await $.storage.taskBoard.update(Z.id,X,{status:"done"},Z.updatedBy);return await L9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done"}}),t4(X,G),!0}var Ei4=15000,zi4;var gP0=O(()=>{FN();rZ();v3();SP0();sh();PZ();zi4=new Set(["checks_pending"])});import{z as sO}from"zod";function Ri4($,Z,X){return $!==null&&$.reviewer===Z&&$.cycleAt.getTime()===X}var h91;var xC8=O(()=>{p0();rZ();wH();v3();PZ();aO();gP0();sh();SP0();GK();h91=t({name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision for a task under review. `approve` marks the pull request approved by that reviewer (and, once EVERY enabled reviewer has approved, merges it when the org enabled auto-merge, advancing the task to Done); `request_changes` hands the task back to the Super Agent with your notes so it can fix the PR.",annotations:{title:"Review Decision",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:sO.object({taskBoardItemId:sO.string(),reviewer:sO.enum(["qa","code_review"]).describe("Which reviewer you are: `qa` (QA Agent) or `code_review` (Code Reviewer)."),reviewToken:sO.string().optional().describe("The reviewToken from your prompt \u2014 proves you are this reviewer. "+"Pass it through exactly; an approval without a valid token is recorded but does NOT count toward an automatic merge."),decision:sO.enum(["approve","request_changes"]),notes:sO.string().min(1).describe("For approve: a short summary of what you verified. For request_changes: specific, actionable feedback the Super Agent must address.")}),outputSchema:sO.object({status:bN,merged:sO.boolean().describe("True when this approval completed the review and merged the PR.")}),handler:async({taskBoardItemId:$,reviewer:Z,reviewToken:X,decision:Q,notes:Y},G)=>{W0(G),await G.access.check();let J=G.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let K=await G.storage.taskBoard.getById($,J);if(!K)throw Error(`Task board item not found: ${$}`);let W=X?await G.storage.taskBoard.resolveReviewClaimByToken($,X):null,H=W?Cz(await G.storage.taskBoard.listActivity($,J)):0,U=Ri4(W,Z,H);if(Q==="request_changes"){let D=await G.storage.taskBoard.listActivity($,J);if(aU8(D))return await L9(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:U,bounceLimitReached:!0}}),await iO(G,K,`${u01} review bounces reached \u2014 the reviewer and the `+"Super Agent are not converging"),{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};let E=await G.storage.taskBoard.claimReviewChangesBounce($,J,K.updatedBy);if(await L9(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:U}}),!E)return{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};t4(J,E);let j=(await G.storage.taskBoard.listPrs($,J))[0];return await tN(G,E,{feedback:`${ng[Z]}: ${Y}`,pr:j?{number:j.number,url:j.url}:void 0}).catch((A)=>{if(A instanceof eQ)throw A;console.error("[task-board] request_changes re-enqueue failed",A)}),{status:E.status,merged:!1}}if(await L9(G,{taskBoardItemId:$,action:"review_approved",actorId:null,data:{reviewer:Z,notes:Y,verified:U}}),!await g91(G,J,$)){let D=await G.storage.taskBoard.getById($,J)??K;return t4(J,D),{status:D.status,merged:!1}}let w=(await G.storage.organizationSettings.get(J))?.flags?.auto_merge===!0;if(w?(await dr(G,J,$)).merged:!1){let D=await G.storage.taskBoard.update($,J,{status:"done"},K.updatedBy);return await L9(G,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K.status,to:"done"}}),t4(J,D),{status:D.status,merged:!0}}let L=await G.storage.taskBoard.getById($,J)??K;if(w){let E=(await G.storage.taskBoard.listPrs($,J))[0];if(E?await rh(G,J,L,{pr:{number:E.number,url:E.url},conflict:await xP0(G,J,E)}).catch((j)=>{if(j instanceof eQ)throw j;return console.error("[task-board] conflict auto-resolve failed",j),!1}):!1)return{status:(await G.storage.taskBoard.getById($,J)??L).status,merged:!1}}return t4(J,L),{status:L.status,merged:!1}}})});import{z as hP0}from"zod";function Ii4($,Z,X){if($!=="in_review")return!1;return X.length===0||QO(Z,X)}var u91;var fC8=O(()=>{p0();rZ();wH();v3();PZ();gP0();u91=t({name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Ship a reviewed task: merge its open pull request and move the task to Done. Used by the board's 'Ship to production' button after the enabled reviewers approved, when auto-merge is off (a human does the final merge).",annotations:{title:"Ship to Production",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:hP0.object({taskBoardItemId:hP0.string()}),outputSchema:hP0.object({status:bN,merged:hP0.boolean().describe("True when the PR was merged.")}),handler:async({taskBoardItemId:$},Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);let G=(await Z.storage.organizationSettings.get(X))?.flags??{},J=j3.filter((U)=>G[zN[U]]===!0),K=await Z.storage.taskBoard.listActivity($,X);if(!Ii4(Q.status,K,J))throw Error("Task is not ready to ship: it must be In Review with every enabled reviewer approved");if(!(await dr(Z,X,$)).merged){let U=await Z.storage.taskBoard.getById($,X)??Q;return t4(X,U),{status:Q.status,merged:!1}}let H=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);if(Q.status!=="done")await L9(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}});return t4(X,H),{status:H.status,merged:!0}}})});import{z as f3}from"zod";function bC8($){if(!$)throw Error("Organization ID required (no active organization in context)");return $}var qi4,c91,l91;var yC8=O(()=>{p0();qi4=f3.object({externalKey:f3.string(),dismissedBy:f3.string(),dismissedAt:f3.string()});c91=t({name:"TASK_BOARD_DISMISSED_LIST",description:"List the diagnostic findings this organization has dismissed by deleting their task board cards. The import skips these until they're restored.",annotations:{title:"List Dismissed Findings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:f3.object({}),outputSchema:f3.object({findings:f3.array(qi4)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=bC8(Z.organization?.id);return{findings:await Z.storage.taskBoard.listDismissedFindings(X)}}}),l91=t({name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings, returning their cards to the board. Omit externalKeys to restore every dismissed finding.",annotations:{title:"Restore Dismissed Findings",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:f3.object({externalKeys:f3.array(f3.string()).optional()}),outputSchema:f3.object({restored:f3.number()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=bC8(Z.organization?.id);return{restored:await Z.storage.taskBoard.restoreDismissedFindings(X,$.externalKeys)}}})});import{z as s$}from"zod";function uP0($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}var d91,m91,i91,n91,p91;var gC8=O(()=>{p0();rZ();Nr();d91=s$.object({id:s$.string(),taskBoardItemId:s$.string(),parentId:s$.string().nullable(),authorId:s$.string(),body:s$.string(),resolved:s$.boolean(),createdAt:s$.string(),updatedAt:s$.string()});m91=t({name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comments (flat, oldest first; replies carry parentId).",annotations:{title:"List Task Comments",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s$.object({taskBoardItemId:s$.string()}),outputSchema:s$.object({comments:s$.array(d91)}),handler:async($,Z)=>{return W0(Z),await Z.access.check(),{comments:await Z.storage.taskBoard.listComments($.taskBoardItemId,uP0(Z))}}}),i91=t({name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment on a task board item, or a reply to one.",annotations:{title:"Create Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:s$.object({taskBoardItemId:s$.string(),body:s$.string().trim().min(1),parentId:s$.string().nullish()}),outputSchema:s$.object({comment:d91}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=await Z.storage.taskBoard.createComment({taskBoardItemId:$.taskBoardItemId,organizationId:uP0(Z),parentId:$.parentId??null,authorId:Ur.getStore()?M4:z1(Z),body:$.body});if(!X)throw Error("Task board item not found");return{comment:X}}}),n91=t({name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit your own comment's body, or resolve/unresolve a comment thread (root only, any org member may toggle it).",annotations:{title:"Update Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s$.object({id:s$.string(),body:s$.string().trim().min(1).optional(),resolved:s$.boolean().optional()}),outputSchema:s$.object({comment:d91}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=await Z.storage.taskBoard.updateComment({id:$.id,organizationId:uP0(Z),callerId:z1(Z),body:$.body,resolved:$.resolved});if(!X)throw Error("Comment not found, or you can only edit your own comments");return{comment:X}}}),p91=t({name:"TASK_BOARD_COMMENT_DELETE",description:"Delete your own comment. Deleting a thread root deletes its replies too.",annotations:{title:"Delete Task Comment",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:s$.object({id:s$.string()}),outputSchema:s$.object({success:s$.boolean()}),handler:async($,Z)=>{return W0(Z),await Z.access.check(),{success:await Z.storage.taskBoard.deleteComment($.id,uP0(Z),z1(Z))}}})});var hC8=O(()=>{F28();AC8();RC8();IC8();qC8();sh();MC8();_C8();xC8();fC8();v3();yC8();gC8()});import{z as rN}from"zod";var t91;var uC8=O(()=>{p0();t91=t({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:rN.object({}),outputSchema:rN.object({tags:rN.array(rN.object({id:rN.string(),organizationId:rN.string(),name:rN.string(),color:rN.string().nullable(),createdAt:rN.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);return{tags:(await Z.storage.tags.listOrgTags(X.id)).map((Y)=>({...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():String(Y.createdAt)}))}}})});import{z as RH}from"zod";var o91;var cC8=O(()=>{p0();o91=t({name:"TAGS_CREATE",description:"Create a new tag, usable on organization members and task board items.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:RH.object({name:RH.string().min(1).max(50).describe("Tag name"),color:RH.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional().describe('Hex color the tag renders its dot with, e.g. "#3b82f6"')}),outputSchema:RH.object({tag:RH.object({id:RH.string(),organizationId:RH.string(),name:RH.string(),color:RH.string().nullable(),createdAt:RH.string().describe("ISO 8601 timestamp")})}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=await Z.storage.tags.createTag(X.id,$.name,$.color);return{tag:{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}}}})});import{z as cP0}from"zod";var r91;var lC8=O(()=>{p0();r91=t({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:cP0.object({tagId:cP0.string().describe("Tag ID to delete")}),outputSchema:cP0.object({success:cP0.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=await Z.storage.tags.getTag($.tagId);if(!Q)throw Error("Tag not found");if(Q.organizationId!==X.id)throw Error("Tag does not belong to this organization");return await Z.storage.tags.deleteTag($.tagId),{success:!0}}})});import{z as IH}from"zod";var a91;var dC8=O(()=>{p0();a91=t({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IH.object({memberId:IH.string().describe("Member ID")}),outputSchema:IH.object({tags:IH.array(IH.object({id:IH.string(),organizationId:IH.string(),name:IH.string(),color:IH.string().nullable(),createdAt:IH.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);return{tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});import{z as b3}from"zod";var s91;var mC8=O(()=>{p0();s91=t({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:b3.object({memberId:b3.string().describe("Member ID"),tagIds:b3.array(b3.string()).describe("Array of tag IDs to assign")}),outputSchema:b3.object({success:b3.boolean(),tags:b3.array(b3.object({id:b3.string(),organizationId:b3.string(),name:b3.string(),createdAt:b3.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);for(let G of $.tagIds){let J=await Z.storage.tags.getTag(G);if(!J)throw Error(`Tag not found: ${G}`);if(J.organizationId!==X.id)throw Error(`Tag does not belong to this organization: ${G}`)}return await Z.storage.tags.setMemberTags($.memberId,$.tagIds),{success:!0,tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var iC8=O(()=>{uC8();cC8();lC8();dC8();mC8()});import{z as nC8}from"zod";function Ci4($,Z){let X=$?.[Z];if(!X)return;return Object.entries(X).sort(([,Y],[,G])=>{let J=Math.max(0,...Object.values(Y).map((W)=>W.createdAt??0));return Math.max(0,...Object.values(G).map((W)=>W.createdAt??0))-J})[0]?.[0]}var ki4,Si4,e91;var pC8=O(()=>{p4();p0();u_();$Q();ki4=nC8.object({data:qV8.describe("Data for the new thread (id is auto-generated if not provided)")}),Si4=nC8.object({item:PH.describe("The created thread entity")});e91=t({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ki4,outputSchema:Si4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to create thread");let{data:Y}=$,G=Y.id??Z4("thrd"),J=await Z.storage.virtualMcps.findById(Y.virtual_mcp_id,X.id);if(!J||J.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let K=J.metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??Ci4(K?.sandboxMap,Q)??oz0(tz0(Z.auth.user));let U=await Z.storage.threads.create({id:G,organization_id:X.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:Q});if(U.isNew)n1.capture({distinctId:Q,event:"chat_started",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:G,has_title:!!$.data.title,created_via:"tool"}});return{item:_3(U)}}})});import{z as $Z1}from"zod";var _i4,vi4,ZZ1;var tC8=O(()=>{p4();p0();u_();_i4=$Z1.object({id:$Z1.string().describe("ID of the thread to update"),data:MV8.describe("Partial thread data to update")}),vi4=$Z1.object({item:PH.describe("The updated thread entity")}),ZZ1=t({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:_i4,outputSchema:vi4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to update thread");let{id:Y,data:G}=$,J=await Z.storage.threads.get(Y);if(!J)throw Error("Thread not found in organization");if(G.virtual_mcp_id!==void 0){let H=await Z.storage.virtualMcps.findById(G.virtual_mcp_id,X.id);if(!H||H.organization_id!==X.id)throw Error(`Virtual MCP not found: ${G.virtual_mcp_id}`)}if(G.branch===null&&J.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(J.virtual_mcp_id,X.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let K={title:G.title,description:G.description,hidden:G.hidden,updated_by:Q};if(G.status)K.status=G.status;if(G.metadata!==void 0)K.metadata=G.metadata;if(G.branch!==void 0)K.branch=G.branch;if(G.virtual_mcp_id!==void 0)K.virtual_mcp_id=G.virtual_mcp_id;let W=await Z.storage.threads.update(Y,K);if(G.hidden!==void 0&&G.hidden!==J.hidden)n1.capture({distinctId:Q,event:G.hidden?"chat_archived":"chat_unarchived",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:Y}});return{item:_3(W)}}})});var XZ1;var oC8=O(()=>{B3();u_();p4();p0();XZ1=t({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:gt,outputSchema:ht(PH),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=await Z.storage.threads.get($.id);if(!Q)throw Error(`Thread not found: ${$.id}`);await Z.storage.threads.delete($.id);let Y=z1(Z);if(Y)n1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:$.id}});return{item:_3(Q)}}})});var rC8=O(()=>{pC8();$51();Z51();tC8();oC8();X51()});function fi4($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function bi4($){return $.map((Z)=>{let X=Z.metadata;if(X?.tiptapDoc)return Z;let Q=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!Q?.text||typeof Q.text!=="string")return Z;return{...Z,metadata:{...X,tiptapDoc:fi4(Q.text)}}})}function lP0($){let Z;if(typeof $==="string")try{let X=JSON.parse($);if(Array.isArray(X)&&X.length>0&&X[0]?.role&&Array.isArray(X[0]?.parts))Z=X;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return bi4(Z)}import{z as e$}from"zod";var QZ1;var aC8=O(()=>{p4();p0();E3();QZ1=t({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:e$.object({name:e$.string().min(1).max(255),virtual_mcp_id:e$.string(),messages:e$.union([e$.string(),e$.array(e$.looseObject({id:e$.string().optional(),role:e$.enum(["user","assistant","system"]),parts:e$.array(e$.record(e$.string(),e$.unknown())),metadata:e$.unknown().optional()}))]),models:e$.object({tier:eB,modelId:e$.string().optional(),credentialId:e$.string().optional()}).loose().default({tier:"smart"}),tools:e$.array(e$.string()).nullable().optional(),maxAgentSteps:e$.number().int().min(1).max(100).nullable().optional(),temperature:e$.number().default(0.5),active:e$.boolean().default(!0)}),outputSchema:e$.object({id:e$.string(),name:e$.string(),active:e$.boolean(),created_at:e$.string()}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("Unable to determine user identity");let Y=lP0($.messages),G=await Z.storage.automations.create({organization_id:X.id,created_by:Q,name:$.name,messages:JSON.stringify(Y),models:JSON.stringify($.models),tools:$.tools===void 0||$.tools===null?null:JSON.stringify($.tools),max_agent_steps:$.maxAgentSteps??null,temperature:$.temperature,active:$.active,virtual_mcp_id:$.virtual_mcp_id});return n1.capture({distinctId:Q,event:"automation_created",groups:{organization:X.id},properties:{organization_id:X.id,automation_id:G.id,virtual_mcp_id:$.virtual_mcp_id,active:G.active,tier:$.models.tier}}),{id:G.id,name:G.name,active:G.active,created_at:G.created_at}}})});import{z as l$}from"zod";var YZ1;var sC8=O(()=>{p0();YZ1=t({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:l$.object({id:l$.string()}),outputSchema:l$.object({automation:l$.object({id:l$.string(),name:l$.string(),active:l$.boolean(),created_by:l$.string(),created_at:l$.string(),updated_at:l$.string(),virtual_mcp_id:l$.string(),messages:l$.unknown(),models:l$.unknown(),tools:l$.array(l$.string()).nullable(),maxAgentSteps:l$.number().nullable(),temperature:l$.number(),triggers:l$.array(l$.object({id:l$.string(),type:l$.enum(["cron","event","webhook"]),cron_expression:l$.string().nullable(),connection_id:l$.string().nullable(),event_type:l$.string().nullable(),params:l$.unknown().nullable(),last_run_at:l$.string().nullable(),api_key_id:l$.string().nullable(),created_at:l$.string()}))}).nullable()}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=await Z.storage.automations.findById($.id,X.id);if(!Q)return{automation:null};let Y=await Z.storage.automations.listTriggers(Q.id);return{automation:{id:Q.id,name:Q.name,active:Q.active,created_by:Q.created_by,created_at:Q.created_at,updated_at:Q.updated_at,virtual_mcp_id:Q.virtual_mcp_id,messages:JSON.parse(Q.messages),models:JSON.parse(Q.models),tools:Q.tools?JSON.parse(Q.tools):null,maxAgentSteps:Q.max_agent_steps,temperature:Q.temperature,triggers:Y.map((G)=>({id:G.id,type:G.type,cron_expression:G.cron_expression,connection_id:G.connection_id,event_type:G.event_type,params:G.params?JSON.parse(G.params):null,last_run_at:G.last_run_at,api_key_id:G.api_key_id,created_at:G.created_at}))}}}})});import{z as DG}from"zod";var GZ1;var eC8=O(()=>{p0();GZ1=t({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:DG.object({virtual_mcp_id:DG.string().optional().nullable()}),outputSchema:DG.object({automations:DG.array(DG.object({id:DG.string(),name:DG.string(),active:DG.boolean(),created_by:DG.string(),created_at:DG.string(),trigger_count:DG.number(),nearest_next_run_at:DG.string().nullable(),virtual_mcp_id:DG.string()}))}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(X.id,$.virtual_mcp_id)).map((G)=>({id:G.id,name:G.name,active:G.active,created_by:G.created_by,created_at:G.created_at,trigger_count:G.trigger_count,nearest_next_run_at:G.nearest_next_run_at,virtual_mcp_id:G.virtual_mcp_id}))}}})});function yi4($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((X)=>typeof X==="string"))return Z.length>0?Z:null}catch{}return null}function $_8($){return`${$}:context`}function Z_8($,Z,X,Q,Y){return{messages:JSON.parse($.messages).map((W,H)=>({...W,id:`${X}:${H}`})),models:{credentialId:Q.credentialId,thinking:Q.thinking,...Q.image?{image:Q.image}:{},...Q.webSearch?{webSearch:Q.webSearch}:{},...Q.deepResearch?{deepResearch:Q.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:yi4($.tools),maxAgentSteps:$.max_agent_steps??void 0,temperature:$.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:$.organization_id,userId:$.created_by,harnessId:"decopilot",sandboxProviderKind:"agent-sandbox",triggerId:Z??void 0,...Y?{runMetadata:Y}:{},taskId:X}}function qX($,Z,X,Q,Y,G,J,K){return qX.fromTZ(qX.tp($,Z,X,Q,Y,G,J),K)}function JZ1($,Z=new Date){let X=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${X}`)}function gi4($,Z){let X=new Date(Date.parse($));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=$.substring(9);return $.includes("Z")||Q.includes("-")||Q.includes("+")?qX.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):qX.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Z)}function hi4($){if($===void 0&&($={}),delete $.name,$.legacyMode=$.legacyMode===void 0?!0:$.legacyMode,$.paused=$.paused===void 0?!1:$.paused,$.maxRuns=$.maxRuns===void 0?1/0:$.maxRuns,$.catch=$.catch===void 0?!1:$.catch,$.interval=$.interval===void 0?0:parseInt($.interval.toString(),10),$.utcOffset=$.utcOffset===void 0?void 0:parseInt($.utcOffset.toString(),10),$.unref=$.unref===void 0?!1:$.unref,$.startAt&&($.startAt=new y3($.startAt,$.timezone)),$.stopAt&&($.stopAt=new y3($.stopAt,$.timezone)),$.interval!==null){if(isNaN($.interval))throw Error("CronOptions: Supplied value for interval is not a number");if($.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if($.utcOffset!==void 0){if(isNaN($.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if($.utcOffset<-870||$.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if($.utcOffset!==void 0&&$.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if($.unref!==!0&&$.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return $}function mr($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function ui4($){return mr($)}function ci4($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var KZ1=32,ir,G_8,X_8=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor($,Z){this.pattern=$,this.timezone=Z,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let $=this.pattern.replace(/\s+/g," ").split(" ");if($.length<5||$.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if($.length===5&&$.unshift("0"),$[3].indexOf("L")>=0&&($[3]=$[3].replace("L",""),this.lastDayOfMonth=!0),$[3]=="*"&&(this.starDOM=!0),$[4].length>=3&&($[4]=this.replaceAlphaMonths($[4])),$[5].length>=3&&($[5]=this.replaceAlphaDays($[5])),$[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Z=new y3(new Date,this.timezone).getDate(!0);$[0]=$[0].replace("?",Z.getSeconds().toString()),$[1]=$[1].replace("?",Z.getMinutes().toString()),$[2]=$[2].replace("?",Z.getHours().toString()),this.starDOM||($[3]=$[3].replace("?",Z.getDate().toString())),$[4]=$[4].replace("?",(Z.getMonth()+1).toString()),this.starDOW||($[5]=$[5].replace("?",Z.getDay().toString()))}this.throwAtIllegalCharacters($),this.partToArray("second",$[0],0,1),this.partToArray("minute",$[1],0,1),this.partToArray("hour",$[2],0,1),this.partToArray("day",$[3],-1,1),this.partToArray("month",$[4],-1,1),this.partToArray("dayOfWeek",$[5],0,ir),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,X,Q){let Y=this[$],G=$==="day"&&this.lastDayOfMonth;if(Z===""&&!G)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(Q);let J=Z.split(",");if(J.length>1)for(let K=0;K<J.length;K++)this.partToArray($,J[K],X,Q);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,X,Q):Z.indexOf("-")!==-1?this.handleRange(Z,$,X,Q):Z.indexOf("/")!==-1?this.handleStepping(Z,$,X,Q):Z!==""&&this.handleNumber(Z,$,X,Q)}throwAtIllegalCharacters($){for(let Z=0;Z<$.length;Z++)if((Z===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test($[Z]))throw TypeError("CronPattern: configuration entry "+Z+" ("+$[Z]+") contains illegal characters.")}handleNumber($,Z,X,Q){let Y=this.extractNth($,Z),G=parseInt(Y[0],10)+X;if(isNaN(G))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,G,Y[1]||Q)}setPart($,Z,X){if(!Object.prototype.hasOwnProperty.call(this,$))throw TypeError("CronPattern: Invalid part specified: "+$);if($==="dayOfWeek"){if(Z===7&&(Z=0),Z<0||Z>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Z);this.setNthWeekdayOfMonth(Z,X);return}if($==="second"||$==="minute"){if(Z<0||Z>=60)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="hour"){if(Z<0||Z>=24)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="day"){if(Z<0||Z>=31)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="month"&&(Z<0||Z>=12))throw RangeError("CronPattern: Invalid value for "+$+": "+Z);this[$][Z]=X}handleRangeWithStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(G===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,J,K,W]=G,H=parseInt(J,10)+X,U=parseInt(K,10)+X,N=parseInt(W,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(N))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(N===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(N>this[Z].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Z].length+")");if(H>U)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let F=H;F<=U;F+=N)this.setPart(Z,F,Y[1]||Q)}extractNth($,Z){let X=$,Q;if(X.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=X.split("#")[1],X=X.split("#")[0]}return[X,Q]}handleRange($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("-");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let J=parseInt(G[0],10)+X,K=parseInt(G[1],10)+X;if(isNaN(J))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(J>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=J;W<=K;W++)this.setPart(Z,W,Y[1]||Q)}handleStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("/");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");G[0]===""&&(G[0]="*");let J=0;G[0]!=="*"&&(J=parseInt(G[0],10)+X);let K=parseInt(G[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[Z].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Z].length+")");for(let W=J;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||Q)}replaceAlphaDays($){return $.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths($){return $.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames($){let Z=$.trim().toLowerCase();return Z==="@yearly"||Z==="@annually"?"0 0 1 1 *":Z==="@monthly"?"0 0 1 * *":Z==="@weekly"?"0 0 * * 0":Z==="@daily"?"0 0 * * *":Z==="@hourly"?"0 * * * *":$}setNthWeekdayOfMonth($,Z){if(typeof Z!="number"&&Z==="L")this.dayOfWeek[$]=this.dayOfWeek[$]|KZ1;else if(Z===ir)this.dayOfWeek[$]=ir;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|G_8[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},Q_8,aN,y3=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,X){if(this.tz=X,Z&&Z instanceof Date)if(!isNaN(Z))this.fromDate(Z);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Z===void 0)this.fromDate(new Date);else if(Z&&typeof Z=="string")this.fromString(Z);else if(Z instanceof $)this.fromCronDate(Z);else throw TypeError("CronDate: Invalid type ("+typeof Z+") passed to CronDate constructor")}isNthWeekdayOfMonth(Z,X,Q,Y){let G=new Date(Date.UTC(Z,X,Q)).getUTCDay(),J=0;for(let K=1;K<=Q;K++)new Date(Date.UTC(Z,X,K)).getUTCDay()===G&&J++;if(Y&ir&&G_8[J-1]&Y)return!0;if(Y&KZ1){let K=new Date(Date.UTC(Z,X+1,0)).getUTCDate();for(let W=Q+1;W<=K;W++)if(new Date(Date.UTC(Z,X,W)).getUTCDay()===G)return!1;return!0}return!1}fromDate(Z){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes()+this.tz,this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),this.apply();else{let X=qX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=Z.getMilliseconds(),this.second=Z.getSeconds(),this.minute=Z.getMinutes(),this.hour=Z.getHours(),this.day=Z.getDate(),this.month=Z.getMonth(),this.year=Z.getFullYear()}fromCronDate(Z){this.tz=Z.tz,this.year=Z.year,this.month=Z.month,this.day=Z.day,this.hour=Z.hour,this.minute=Z.minute,this.second=Z.second,this.ms=Z.ms}apply(){if(this.month>11||this.day>Q_8[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Z=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes(),this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),!0}else return!1}fromString(Z){if(typeof this.tz=="number"){let X=qX.fromTZISO(Z);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(qX.fromTZISO(Z,this.tz))}findNext(Z,X,Q,Y){let G=this[X],J;Q.lastDayOfMonth&&(this.month!==1?J=Q_8[this.month]:J=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!Q.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[X]+Y;W<Q[X].length;W++){let H=Q[X][W];if(X==="day"&&Q.lastDayOfMonth&&W-Y==J&&(H=1),X==="day"&&!Q.starDOW){let U=Q.dayOfWeek[(K+(W-Y-1))%7];if(U&&U&ir)U=this.isNthWeekdayOfMonth(this.year,this.month,W-Y,U)?1:0;else if(U)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${U}`);Z.legacyMode&&!Q.starDOM?H=H||U:H=H&&U}if(H)return this[X]=W-Y,G!==this[X]?2:1}return 3}recurse(Z,X,Q){let Y=this.findNext(X,aN[Q][0],Z,aN[Q][2]);if(Y>1){let G=Q+1;for(;G<aN.length;)this[aN[G][0]]=-aN[G][2],G++;if(Y===3)return this[aN[Q][1]]++,this[aN[Q][0]]=-aN[Q][2],this.apply(),this.recurse(Z,X,0);if(this.apply())return this.recurse(Z,X,Q-1)}return Q+=1,Q>=aN.length?this:this.year>=3000?null:this.recurse(Z,X,Q)}increment(Z,X,Q){return this.second+=X.interval!==void 0&&X.interval>1&&Q?X.interval:1,this.ms=0,this.apply(),this.recurse(Z,X,0)}getDate(Z){return Z||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):qX.fromTZ(qX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},Y_8=30000,dP0,mP0=class{name;options;_states;fn;constructor($,Z,X){let Q,Y;if(mr(Z))Y=Z;else if(typeof Z=="object")Q=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(mr(X))Y=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=hi4(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new X_8("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new y3($,this.options.timezone||this.options.utcOffset):this._states.pattern=new X_8($,this.options.timezone),this.name){if(dP0.find((G)=>G.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");dP0.push(this)}return Y!==void 0&&ui4(Y)&&(this.fn=Y,this.schedule()),this}nextRun($){let Z=this._next($);return Z?Z.getDate(!1):null}nextRuns($,Z){this._states.maxRuns!==void 0&&$>this._states.maxRuns&&($=this._states.maxRuns);let X=[],Q=Z||this._states.currentRun||void 0;for(;$--&&(Q=this.nextRun(Q));)X.push(Q);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,X=this.fn!==void 0,Q=!this._states.kill;return Z&&X&&Q&&$!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext($){let Z=this._next($);return Z?$ instanceof y3||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new y3($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=dP0.indexOf(this);$>=0&&dP0.splice($,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule($){if($&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");$&&(this.fn=$);let Z=this.msToNext(),X=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||X===null?this:(Z>Y_8&&(Z=Y_8),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Z),this._states.currentTimeout&&this.options.unref&&ci4(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new y3(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Z){mr(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new y3($,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger($){let Z=new Date,X=!this._states.paused&&Z.getTime()>=$.getTime(),Q=this._states.blocking&&this.options.protect;X&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&Q&&mr(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),X=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),X=!$),$=new y3($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let Q=this._states.once||new y3($,this.options.timezone||this.options.utcOffset);return!X&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun($,Z){let X=new y3(void 0,this.options.timezone||this.options.utcOffset),Q=$;if(this.options.startAt.getTime()<=X.getTime()){Q=this.options.startAt;let Y=Q.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)Q=new y3(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=Q.getTime()+this.options.interval*1000;Z=!0}return Q===null&&(Q=void 0),[Q,Z]}};var WZ1=O(()=>{qX.fromTZISO=($,Z,X)=>qX.fromTZ(gi4($,Z),X);qX.fromTZ=function($,Z){let X=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),Q=JZ1($.tz,X),Y=new Date(X.getTime()-Q),G=JZ1($.tz,Y);if(G-Q===0)return Y;{let J=new Date(X.getTime()-G),K=JZ1($.tz,J);if(K-G===0)return J;if(!Z&&K-G>0)return J;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};qX.toTZ=function($,Z){let X=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),Q=new Date(X);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:Z}};qX.tp=($,Z,X,Q,Y,G,J)=>({y:$,m:Z,d:X,h:Q,i:Y,s:G,tz:J});qX.minitz=qX;ir=31|KZ1,G_8=[1,2,4,8,16],Q_8=[31,28,31,30,31,30,31,31,30,31,30,31],aN=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];dP0=[]});function iP0($,Z){try{return new mP0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var HZ1=O(()=>{WZ1()});import{DBOS as V7,SchedulerMode as li4}from"@dbos-inc/dbos-sdk";async function BZ1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
2796
+ `)}async function Ki4($,Z,X){let Q=Z.organizationId,Y=await jX($,"smart"),G=X.virtual_mcp_id??vE(Q),J={id:`stall-nudge-${Z.id}-${X.id}`,role:"user",parts:[{type:"text",text:Ji4(X.harness_id)}]};await new IX({storage:$.storage.threads.messageParts(),orgId:Q,threadId:X.id,runId:X.id}).emitRequestMessage(J),await nN({threadId:X.id,source:"background-tool",request:{messages:[J],models:{credentialId:Y.credentialId,thinking:{id:Y.modelId,title:Y.modelMeta.title}},agent:{id:G},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Q,userId:Z.assignedBy??Z.createdBy,harnessId:X.harness_id==="claude-code"?"claude-code":"decopilot",sandboxProviderKind:"agent-sandbox",...X.branch?{branch:X.branch}:{},taskId:X.id,runMetadata:Gj0(Z)}},{workflowID:`stall-nudge:${Z.id}:${X.id}`})}async function Wi4($,Z){let X=await $.storage.threads.get(Z);if(!X)return{action:"none",thread:null};return{action:Gi4({status:X.status,messageStorageVersion:X.message_storage_version,harnessId:X.harness_id,sandboxProviderKind:X.sandbox_provider_kind}),thread:X}}function Hi4($,Z=Date.now()){if($.status!=="in_progress")return!1;if($.run_started_at)return!1;return s$1($,Z)}async function Ui4($,Z){let X=[];for(let Q of Z.threads){if(Q.status!=="in_progress")continue;let Y=await $.storage.threads.get(Q.threadId);if(!Y||!Hi4(Y))continue;if(await $.storage.threads.markRunFailed(Q.threadId,V91,"abandoned"))X.push(Q.threadId),console.warn(`[task-board] failed never-started thread ${Q.threadId} on ${Z.id}`)}return X}async function TC8($,Z){let X=$.organization?.id;if(!X)return;for(let Q of Z){if(Q.status==="in_progress")try{if((await Ui4($,Q)).length>0)continue}catch(J){console.error(`[task-board] reaping threads for ${Q.id} failed`,J)}let Y=Q.repo!=null&&(await $.storage.taskBoard.listPrs(Q.id,X)).length>0;if(!F51(Q,Y))continue;let G=Q.threads.find((J)=>J.hasMessages);if(!G)continue;try{let{action:J,thread:K}=await Wi4($,G.threadId);if(J==="none"||!K)continue;if(J==="advance")await lh($.storage.taskBoard,G.threadId,X,$.storage.organizationBilling);else await Ki4($,Q,K)}catch(J){console.error(`[task-board] stall recovery failed for ${Q.id}`,J)}}}var V91="Run never started \u2014 no pod picked it up before the idle window elapsed";var k91=O(()=>{Fr();nO();bO();tO();i_();q6();PZ()});import{z as S91}from"zod";var C91;var RC8=O(()=>{p0();wH();k91();C91=t({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization.",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:S91.object({}),outputSchema:S91.object({items:S91.array(Sh)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.list(X);return TC8(Z,Q),{items:Q}}})});import{z as x3}from"zod";function Fi4($,Z){let X=[];for(let{field:G,action:J}of Ni4){if(Z[G]===$[G])continue;X.push({action:J,data:{from:$[G],to:Z[G]}})}if(Z.description!==$.description)X.push({action:"description_changed"});let Q=new Set($.tags.map((G)=>G.id));if(Z.tags.length!==$.tags.length||Z.tags.some((G)=>!Q.has(G.id)))X.push({action:"tags_changed",data:{from:$.tags,to:Z.tags}});return X}function wi4($,Z){if($!==M4)return!1;if(!Z)return!1;return Z.assigneeId!==M4?!0:Z.status==="todo"}var Ni4,_91;var IC8=O(()=>{p0();wH();x41();aO();v3();PZ();GK();Ni4=[{field:"status",action:"status_changed"},{field:"assigneeId",action:"assignee_changed"},{field:"priority",action:"priority_changed"},{field:"dueDate",action:"due_date_changed"},{field:"title",action:"title_changed"}];_91=t({name:"TASK_BOARD_ITEM_UPDATE",description:"Update a task board item's fields (title, description, status, priority, assignee), and/or link a chat thread to it.",annotations:{title:"Update Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:x3.object({id:x3.string(),title:x3.string().min(1).optional(),description:x3.string().nullable().optional(),status:bN.optional(),priority:q_.optional(),assigneeId:x3.string().nullable().optional(),repo:x3.string().nullable().optional(),dueDate:x3.string().datetime().nullable().optional(),sortOrder:x3.number().optional(),tagIds:x3.array(x3.string()).optional(),linkThreadId:x3.string().optional()}),outputSchema:x3.object({item:Sh}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if($.assigneeId)await Yj0(Z,X,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,X))throw Error(`Task board item not found: ${$.id}`);if(!await Z.storage.threads.get($.linkThreadId))throw Error(`Thread not found: ${$.linkThreadId}`);await Z.storage.taskBoard.linkThread($.id,$.linkThreadId,X)}let Q=$.title!==void 0||$.description!==void 0||$.status!==void 0||$.priority!==void 0||$.assigneeId!==void 0||$.repo!==void 0||$.dueDate!==void 0||$.sortOrder!==void 0||$.tagIds!==void 0,Y=Q?await Z.storage.taskBoard.getById($.id,X):null;if(Q&&!Y)throw Error(`Task board item not found: ${$.id}`);let G=$.assigneeId!==void 0&&$.assigneeId!==(Y?.assigneeId??null),J=wi4($.assigneeId,Y);if(Y&&sQ(Y)){if($.title!==void 0||$.description!==void 0||$.priority!==void 0)throw Error("This task was generated from your report and can't be edited \u2014 create your own task instead.");if(J)await xG0(Z,Y,pg())}if($.tagIds!==void 0){let W=await Z.storage.tags.listOrgTags(X),H=new Set(W.map((U)=>U.id));for(let U of $.tagIds)if(!H.has(U))throw Error(`Tag not found: ${U}`);await Z.storage.taskBoard.setItemTags($.id,$.tagIds,z1(Z))}let K;if(Q)K=await Z.storage.taskBoard.update($.id,X,{title:$.title,description:$.description,status:J?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId,assignedBy:G?$.assigneeId?z1(Z):null:void 0,repo:$.repo,dueDate:$.dueDate,sortOrder:$.sortOrder},z1(Z));else{let W=await Z.storage.taskBoard.getById($.id,X);if(!W)throw Error(`Task board item not found: ${$.id}`);K=W}if(Y){let W=z1(Z),H=Fi4(Y,K);if(H.length>0)await Xk8(Z,H.map((U)=>({taskBoardItemId:K.id,actorId:W,...U})))}if(Q||$.linkThreadId)t4(X,K);if(J)await eh(Z,K,{userInitiated:!0});return{item:K}}})});import{z as fP0}from"zod";var v91;var qC8=O(()=>{p0();PZ();v91=t({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item. A reports-pushed task also dismisses its finding, so the next diagnostic import won't re-create the card.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:fP0.object({id:fP0.string()}),outputSchema:fP0.object({success:fP0.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.taskBoard.delete($.id,X,z1(Z)??"system"))throw Error(`Task board item not found: ${$.id}`);return Qk8(X,$.id),{success:!0}}})});import{z as t_}from"zod";var x91;var MC8=O(()=>{p0();w51();PZ();Nr();x91=t({name:"TASK_BOARD_ITEM_PR_LINK",description:"Link the pull request you just opened to this run's task board item. Call this right after `gh pr create` succeeds, with the PR URL it printed. Reviewers (QA, code review) are dispatched from the linked PR, so a task whose PR is not linked never gets reviewed.",annotations:{title:"Link Pull Request to Task",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:t_.object({url:t_.string().describe("The pull request URL, e.g. https://github.com/owner/repo/pull/123")}),outputSchema:t_.object({url:t_.string(),prNumber:t_.number(),taskBoardItemIds:t_.array(t_.string())}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z).id,{threadId:Q}=Qj0(),Y=nj0($.url);if(!Y)throw Error(`Not a GitHub pull request URL: ${$.url} (expected https://github.com/<owner>/<repo>/pull/<number>)`);let G=await rj0(Z,X,Q);for(let J of G)await Z.storage.taskBoard.linkPr({taskBoardItemId:J,organizationId:X,url:Y.url,prNumber:Y.number,repoOwner:Y.owner,repoName:Y.repo}),await Z.storage.taskBoard.clearSweepBudget(J,X);return{url:Y.url,prNumber:Y.number,taskBoardItemIds:G}}})});function kC8($){VC8=$}function SC8($){VC8?.broadcast($)}var VC8=null;import{DBOS as bP0}from"@dbos-inc/dbos-sdk";function Bi4($,Z){let X=`thread-run:${Z}:`;if(!$.workflowID.startsWith(X))return null;let Q=$.input?.[0],Y=Q?.request;return{workflowId:$.workflowID,messageId:Y?.messageId??$.workflowID.slice(X.length),status:$.status==="PENDING"?"running":"queued",enqueuedAt:$.createdAt,...Q?.source!==void 0?{source:Q.source}:{}}}async function f91($){return(await bP0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING","ENQUEUED"],loadInput:!0,loadOutput:!1})).map((X)=>Bi4(X,$)).filter((X)=>X!==null).sort((X,Q)=>X.enqueuedAt-Q.enqueuedAt)}async function CC8($,Z){if(!Z.startsWith(`thread-run:${$}:`))return!1;return await bP0.cancelWorkflows([Z]),!0}async function yP0($){let Z=await bP0.listWorkflows({workflow_id_prefix:`thread-run:${$}:`,status:["PENDING"],loadInput:!1,loadOutput:!1});if(Z.length===0)return;await bP0.cancelWorkflows(Z.map((X)=>X.workflowID))}var b91=()=>{};import{z as $u}from"zod";function Li4($){return $.threads.filter((Z)=>Z.status!==null&&!vr.has(Z.status)).map((Z)=>Z.threadId)}async function Di4($,Z,X){let Q=(G)=>(J)=>console.error("[task-board] rerun takeover step failed",{threadId:Z,step:G,err:J});await $.storage.threads.setCancelRequested(Z,X).catch(Q("cancel-flag")),await yP0(Z).catch(Q("gate-head"));let Y=await $.storage.threads.getRunFence(Z).catch(()=>null);if(Y)await cr(Z,Y).catch(Q("hosted-harness"));SC8(Z)}var Oi4="Superseded by a manual re-run of this task",y91;var _C8=O(()=>{p0();rZ();i_();tO();b91();v3();PZ();aO();GK();y91=t({name:"TASK_BOARD_ITEM_RERUN",description:"Re-run a task board item with the Super Agent, whatever lane it is in. Use this to retry a task that stalled, finished without doing the job, or is already assigned to the Super Agent (in which case re-assigning it does nothing). Fails any run still holding the task open, moves it to In Progress, and queues a fresh run.",annotations:{title:"Re-run Task",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:$u.object({id:$u.string().describe("The task board item to re-run.")}),outputSchema:$u.object({status:$u.string().describe("The task's lane after the re-run was queued."),supersededThreadIds:$u.array($u.string()).describe("Runs that were failed to make room for this one.")}),handler:async({id:$},Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);if(Q.assigneeId!==M4)throw Error("Only a task assigned to the Super Agent can be re-run. Assign it to "+"the Super Agent instead \u2014 that queues a run by itself.");await xG0(Z,Q,pg());let Y=[];for(let J of Li4(Q)){if(!await Z.storage.threads.failIfNotTerminal(J,Oi4,"superseded"))continue;Y.push(J),await Di4(Z,J,X)}let G=await Z.storage.taskBoard.update($,X,{status:"in_progress"},z1(Z));return await L9(Z,{taskBoardItemId:$,action:"status_changed",actorId:z1(Z),data:{from:Q.status,to:"in_progress",reason:"rerun"}}),t4(X,G),await tN(Z,G,{userInitiated:!0}),{status:G.status,supersededThreadIds:Y}}})});async function ji4($,Z,X,Q,Y){if(zi4.has(Q))return;let J=(await $.storage.taskBoard.listActivity(X,Z).catch(()=>[])).at(-1);if(J?.action==="merge_failed"&&J.data?.reason===Q)return;await L9($,{taskBoardItemId:X,action:"merge_failed",actorId:null,data:{reason:Q,...Y?{detail:Y}:{}}})}async function dr($,Z,X){let Q=async(U,N)=>{return await ji4($,Z,X,U,N),{merged:!1,reason:U,...N?{detail:N}:{}}},G=(await $.storage.taskBoard.listPrs(X,Z))[0];if(!G)return console.warn(`[task-board] merge skipped \u2014 no linked PR on ${X}`),Q("no_pr");let J=await zC8($,Z,G);if(J==="failing"||J==="pending")return console.warn(`[task-board] merge blocked \u2014 checks ${J} on PR #${G.number}`),Q(J==="failing"?"checks_failing":"checks_pending");let K=`${G.repoOwner}/${G.repoName}`,W=await ah($,Z,G.connectionId,{owner:G.repoOwner,name:G.repoName});if(!W)return console.warn("[task-board] merge blocked \u2014 no active GitHub connection for "+`${K} (PR #${G.number})`),Q("no_connection",K);let H=await v5(W,$,!0);try{let U=await H.callTool({name:"merge_pull_request",arguments:{owner:G.repoOwner,repo:G.repoName,pullNumber:G.number}},void 0,{timeout:Ei4});if(U?.isError){let N=JSON.stringify(U?.content);return console.error(`[task-board] merge refused by GitHub on PR #${G.number}:`,N),Q("refused",N?.slice(0,500))}return BC8(W.id),{merged:!0}}catch(U){return console.error("[task-board] merge PR failed",U),Q("error",U instanceof Error?U.message:String(U))}finally{await H.close().catch(()=>{})}}async function g91($,Z,X){let Y=(await $.storage.organizationSettings.get(Z))?.flags??{},G=j3.filter((K)=>Y[zN[K]]===!0),J=await $.storage.taskBoard.listActivity(X,Z);return QO(J,G,{verifiedOnly:!0})}async function Pi4($,Z){let Q=(await $.storage.organizationSettings.get(Z.organizationId))?.flags??{},Y=j3.filter((J)=>Q[zN[J]]===!0),G=await $.storage.taskBoard.listActivity(Z.id,Z.organizationId);if(!rU8(G,Y))return;await iO($,Z,"every reviewer approved, but an approval could not be verified \u2014 "+"auto-merge is blocked and no reviewer can be re-dispatched this cycle")}function Ai4($){if($.merged||$.reason!=="refused")return!1;return!P91($.detail??"")}async function Ti4($,Z,X){if(!Ai4(X))return;let Q=Z.organizationId,G=(await $.storage.taskBoard.listPrs(Z.id,Q))[0];if(!G)return;await rh($,Q,Z,{pr:{number:G.number,url:G.url},conflict:await xP0($,Q,G)}).catch((J)=>{console.error("[task-board] sweep conflict auto-resolve failed",J)})}async function vC8($,Z){let X=Z.organizationId;if(Z.status!=="in_review")return!1;if((await $.storage.organizationSettings.get(X))?.flags?.auto_merge!==!0)return!1;if(!await g91($,X,Z.id))return await Pi4($,Z),!1;let Y=await dr($,X,Z.id);if(!Y.merged)return await Ti4($,Z,Y),!1;let G=await $.storage.taskBoard.update(Z.id,X,{status:"done"},Z.updatedBy);return await L9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done"}}),t4(X,G),!0}var Ei4=15000,zi4;var gP0=O(()=>{FN();rZ();v3();SP0();sh();PZ();zi4=new Set(["checks_pending"])});import{z as sO}from"zod";function Ri4($,Z,X){return $!==null&&$.reviewer===Z&&$.cycleAt.getTime()===X}var h91;var xC8=O(()=>{p0();rZ();wH();v3();PZ();aO();gP0();sh();SP0();GK();h91=t({name:"TASK_BOARD_REVIEW_DECISION",description:"Record a reviewer's decision for a task under review. `approve` marks the pull request approved by that reviewer (and, once EVERY enabled reviewer has approved, merges it when the org enabled auto-merge, advancing the task to Done); `request_changes` hands the task back to the Super Agent with your notes so it can fix the PR.",annotations:{title:"Review Decision",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:sO.object({taskBoardItemId:sO.string(),reviewer:sO.enum(["qa","code_review"]).describe("Which reviewer you are: `qa` (QA Agent) or `code_review` (Code Reviewer)."),reviewToken:sO.string().optional().describe("The reviewToken from your prompt \u2014 proves you are this reviewer. "+"Pass it through exactly; an approval without a valid token is recorded but does NOT count toward an automatic merge."),decision:sO.enum(["approve","request_changes"]),notes:sO.string().min(1).describe("For approve: a short summary of what you verified. For request_changes: specific, actionable feedback the Super Agent must address.")}),outputSchema:sO.object({status:bN,merged:sO.boolean().describe("True when this approval completed the review and merged the PR.")}),handler:async({taskBoardItemId:$,reviewer:Z,reviewToken:X,decision:Q,notes:Y},G)=>{W0(G),await G.access.check();let J=G.organization?.id;if(!J)throw Error("Organization ID required (no active organization in context)");let K=await G.storage.taskBoard.getById($,J);if(!K)throw Error(`Task board item not found: ${$}`);let W=X?await G.storage.taskBoard.resolveReviewClaimByToken($,X):null,H=W?Cz(await G.storage.taskBoard.listActivity($,J)):0,U=Ri4(W,Z,H);if(Q==="request_changes"){let D=await G.storage.taskBoard.listActivity($,J);if(aU8(D))return await L9(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:U,bounceLimitReached:!0}}),await iO(G,K,`${u01} review bounces reached \u2014 the reviewer and the `+"Super Agent are not converging"),{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};let E=await G.storage.taskBoard.claimReviewChangesBounce($,J,K.updatedBy);if(await L9(G,{taskBoardItemId:$,action:"review_changes_requested",actorId:null,data:{reviewer:Z,notes:Y,verified:U}}),!E)return{status:(await G.storage.taskBoard.getById($,J)??K).status,merged:!1};t4(J,E);let j=(await G.storage.taskBoard.listPrs($,J))[0];return await tN(G,E,{feedback:`${ng[Z]}: ${Y}`,pr:j?{number:j.number,url:j.url}:void 0}).catch((A)=>{if(A instanceof eQ)throw A;console.error("[task-board] request_changes re-enqueue failed",A)}),{status:E.status,merged:!1}}if(await L9(G,{taskBoardItemId:$,action:"review_approved",actorId:null,data:{reviewer:Z,notes:Y,verified:U}}),!await g91(G,J,$)){let D=await G.storage.taskBoard.getById($,J)??K;return t4(J,D),{status:D.status,merged:!1}}let w=(await G.storage.organizationSettings.get(J))?.flags?.auto_merge===!0;if(w?(await dr(G,J,$)).merged:!1){let D=await G.storage.taskBoard.update($,J,{status:"done"},K.updatedBy);return await L9(G,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K.status,to:"done"}}),t4(J,D),{status:D.status,merged:!0}}let L=await G.storage.taskBoard.getById($,J)??K;if(w){let E=(await G.storage.taskBoard.listPrs($,J))[0];if(E?await rh(G,J,L,{pr:{number:E.number,url:E.url},conflict:await xP0(G,J,E)}).catch((j)=>{if(j instanceof eQ)throw j;return console.error("[task-board] conflict auto-resolve failed",j),!1}):!1)return{status:(await G.storage.taskBoard.getById($,J)??L).status,merged:!1}}return t4(J,L),{status:L.status,merged:!1}}})});import{z as hP0}from"zod";function Ii4($,Z,X){if($!=="in_review")return!1;return X.length===0||QO(Z,X)}var u91;var fC8=O(()=>{p0();rZ();wH();v3();PZ();gP0();u91=t({name:"TASK_BOARD_PROMOTE_TO_PRODUCTION",description:"Ship a reviewed task: merge its open pull request and move the task to Done. Used by the board's 'Ship to production' button after the enabled reviewers approved, when auto-merge is off (a human does the final merge).",annotations:{title:"Ship to Production",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:hP0.object({taskBoardItemId:hP0.string()}),outputSchema:hP0.object({status:bN,merged:hP0.boolean().describe("True when the PR was merged.")}),handler:async({taskBoardItemId:$},Z)=>{W0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X);if(!Q)throw Error(`Task board item not found: ${$}`);let G=(await Z.storage.organizationSettings.get(X))?.flags??{},J=j3.filter((U)=>G[zN[U]]===!0),K=await Z.storage.taskBoard.listActivity($,X);if(!Ii4(Q.status,K,J))throw Error("Task is not ready to ship: it must be In Review with every enabled reviewer approved");if(!(await dr(Z,X,$)).merged){let U=await Z.storage.taskBoard.getById($,X)??Q;return t4(X,U),{status:Q.status,merged:!1}}let H=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);if(Q.status!=="done")await L9(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}});return t4(X,H),{status:H.status,merged:!0}}})});import{z as f3}from"zod";function bC8($){if(!$)throw Error("Organization ID required (no active organization in context)");return $}var qi4,c91,l91;var yC8=O(()=>{p0();qi4=f3.object({externalKey:f3.string(),dismissedBy:f3.string(),dismissedAt:f3.string()});c91=t({name:"TASK_BOARD_DISMISSED_LIST",description:"List the diagnostic findings this organization has dismissed by deleting their task board cards. The import skips these until they're restored.",annotations:{title:"List Dismissed Findings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:f3.object({}),outputSchema:f3.object({findings:f3.array(qi4)}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=bC8(Z.organization?.id);return{findings:await Z.storage.taskBoard.listDismissedFindings(X)}}}),l91=t({name:"TASK_BOARD_DISMISSED_RESTORE",description:"Un-dismiss diagnostic findings, returning their cards to the board. Omit externalKeys to restore every dismissed finding.",annotations:{title:"Restore Dismissed Findings",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:f3.object({externalKeys:f3.array(f3.string()).optional()}),outputSchema:f3.object({restored:f3.number()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=bC8(Z.organization?.id);return{restored:await Z.storage.taskBoard.restoreDismissedFindings(X,$.externalKeys)}}})});import{z as s$}from"zod";function uP0($){let Z=$.organization?.id;if(!Z)throw Error("Organization ID required (no active organization in context)");return Z}var d91,m91,i91,n91,p91;var gC8=O(()=>{p0();rZ();Nr();d91=s$.object({id:s$.string(),taskBoardItemId:s$.string(),parentId:s$.string().nullable(),authorId:s$.string(),body:s$.string(),resolved:s$.boolean(),createdAt:s$.string(),updatedAt:s$.string()});m91=t({name:"TASK_BOARD_COMMENT_LIST",description:"List a task board item's comments (flat, oldest first; replies carry parentId).",annotations:{title:"List Task Comments",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s$.object({taskBoardItemId:s$.string()}),outputSchema:s$.object({comments:s$.array(d91)}),handler:async($,Z)=>{return W0(Z),await Z.access.check(),{comments:await Z.storage.taskBoard.listComments($.taskBoardItemId,uP0(Z))}}}),i91=t({name:"TASK_BOARD_COMMENT_CREATE",description:"Post a comment on a task board item, or a reply to one.",annotations:{title:"Create Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:s$.object({taskBoardItemId:s$.string(),body:s$.string().trim().min(1),parentId:s$.string().nullish()}),outputSchema:s$.object({comment:d91}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=await Z.storage.taskBoard.createComment({taskBoardItemId:$.taskBoardItemId,organizationId:uP0(Z),parentId:$.parentId??null,authorId:Ur.getStore()?M4:z1(Z),body:$.body});if(!X)throw Error("Task board item not found");return{comment:X}}}),n91=t({name:"TASK_BOARD_COMMENT_UPDATE",description:"Edit your own comment's body, or resolve/unresolve a comment thread (root only, any org member may toggle it).",annotations:{title:"Update Task Comment",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:s$.object({id:s$.string(),body:s$.string().trim().min(1).optional(),resolved:s$.boolean().optional()}),outputSchema:s$.object({comment:d91}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=await Z.storage.taskBoard.updateComment({id:$.id,organizationId:uP0(Z),callerId:z1(Z),body:$.body,resolved:$.resolved});if(!X)throw Error("Comment not found, or you can only edit your own comments");return{comment:X}}}),p91=t({name:"TASK_BOARD_COMMENT_DELETE",description:"Delete your own comment. Deleting a thread root deletes its replies too.",annotations:{title:"Delete Task Comment",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:s$.object({id:s$.string()}),outputSchema:s$.object({success:s$.boolean()}),handler:async($,Z)=>{return W0(Z),await Z.access.check(),{success:await Z.storage.taskBoard.deleteComment($.id,uP0(Z),z1(Z))}}})});var hC8=O(()=>{F28();AC8();RC8();IC8();qC8();sh();MC8();_C8();xC8();fC8();v3();yC8();gC8()});import{z as rN}from"zod";var t91;var uC8=O(()=>{p0();t91=t({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:rN.object({}),outputSchema:rN.object({tags:rN.array(rN.object({id:rN.string(),organizationId:rN.string(),name:rN.string(),color:rN.string().nullable(),createdAt:rN.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);return{tags:(await Z.storage.tags.listOrgTags(X.id)).map((Y)=>({...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():String(Y.createdAt)}))}}})});import{z as RH}from"zod";var o91;var cC8=O(()=>{p0();o91=t({name:"TAGS_CREATE",description:"Create a new tag, usable on organization members and task board items.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:RH.object({name:RH.string().min(1).max(50).describe("Tag name"),color:RH.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional().describe('Hex color the tag renders its dot with, e.g. "#3b82f6"')}),outputSchema:RH.object({tag:RH.object({id:RH.string(),organizationId:RH.string(),name:RH.string(),color:RH.string().nullable(),createdAt:RH.string().describe("ISO 8601 timestamp")})}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=await Z.storage.tags.createTag(X.id,$.name,$.color);return{tag:{...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}}}})});import{z as cP0}from"zod";var r91;var lC8=O(()=>{p0();r91=t({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:cP0.object({tagId:cP0.string().describe("Tag ID to delete")}),outputSchema:cP0.object({success:cP0.boolean()}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z),Q=await Z.storage.tags.getTag($.tagId);if(!Q)throw Error("Tag not found");if(Q.organizationId!==X.id)throw Error("Tag does not belong to this organization");return await Z.storage.tags.deleteTag($.tagId),{success:!0}}})});import{z as IH}from"zod";var a91;var dC8=O(()=>{p0();a91=t({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IH.object({memberId:IH.string().describe("Member ID")}),outputSchema:IH.object({tags:IH.array(IH.object({id:IH.string(),organizationId:IH.string(),name:IH.string(),color:IH.string().nullable(),createdAt:IH.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);return{tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});import{z as b3}from"zod";var s91;var mC8=O(()=>{p0();s91=t({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:b3.object({memberId:b3.string().describe("Member ID"),tagIds:b3.array(b3.string()).describe("Array of tag IDs to assign")}),outputSchema:b3.object({success:b3.boolean(),tags:b3.array(b3.object({id:b3.string(),organizationId:b3.string(),name:b3.string(),createdAt:b3.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{W0(Z),await Z.access.check();let X=Y0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,X.id))throw Error(`Member not found in this organization: ${$.memberId}`);for(let G of $.tagIds){let J=await Z.storage.tags.getTag(G);if(!J)throw Error(`Tag not found: ${G}`);if(J.organizationId!==X.id)throw Error(`Tag does not belong to this organization: ${G}`)}return await Z.storage.tags.setMemberTags($.memberId,$.tagIds),{success:!0,tags:(await Z.storage.tags.getMemberTags($.memberId)).map((G)=>({...G,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():String(G.createdAt)}))}}})});var iC8=O(()=>{uC8();cC8();lC8();dC8();mC8()});import{z as nC8}from"zod";function Ci4($,Z){let X=$?.[Z];if(!X)return;return Object.entries(X).sort(([,Y],[,G])=>{let J=Math.max(0,...Object.values(Y).map((W)=>W.createdAt??0));return Math.max(0,...Object.values(G).map((W)=>W.createdAt??0))-J})[0]?.[0]}var ki4,Si4,e91;var pC8=O(()=>{p4();p0();u_();$Q();ki4=nC8.object({data:qV8.describe("Data for the new thread (id is auto-generated if not provided)")}),Si4=nC8.object({item:PH.describe("The created thread entity")});e91=t({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ki4,outputSchema:Si4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to create thread");let{data:Y}=$,G=Y.id??Z4("thrd"),J=await Z.storage.virtualMcps.findById(Y.virtual_mcp_id,X.id);if(!J||J.organization_id!==X.id)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let K=J.metadata,W=K?.githubRepo,H=null;if(W)H=Y.branch??Ci4(K?.sandboxMap,Q)??oz0(tz0(Z.auth.user));let U=await Z.storage.threads.create({id:G,organization_id:X.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:H,created_by:Q});if(U.isNew)n1.capture({distinctId:Q,event:"chat_started",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:G,has_title:!!$.data.title,created_via:"tool"}});return{item:_3(U)}}})});import{z as $Z1}from"zod";var _i4,vi4,ZZ1;var tC8=O(()=>{p4();p0();u_();_i4=$Z1.object({id:$Z1.string().describe("ID of the thread to update"),data:MV8.describe("Partial thread data to update")}),vi4=$Z1.object({item:PH.describe("The updated thread entity")}),ZZ1=t({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:_i4,outputSchema:vi4,handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("User ID required to update thread");let{id:Y,data:G}=$,J=await Z.storage.threads.get(Y);if(!J)throw Error("Thread not found in organization");if(G.virtual_mcp_id!==void 0){let H=await Z.storage.virtualMcps.findById(G.virtual_mcp_id,X.id);if(!H||H.organization_id!==X.id)throw Error(`Virtual MCP not found: ${G.virtual_mcp_id}`)}if(G.branch===null&&J.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(J.virtual_mcp_id,X.id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let K={title:G.title,description:G.description,hidden:G.hidden,updated_by:Q};if(G.status)K.status=G.status;if(G.metadata!==void 0)K.metadata=G.metadata;if(G.branch!==void 0)K.branch=G.branch;if(G.virtual_mcp_id!==void 0)K.virtual_mcp_id=G.virtual_mcp_id;let W=await Z.storage.threads.update(Y,K);if(G.hidden!==void 0&&G.hidden!==J.hidden)n1.capture({distinctId:Q,event:G.hidden?"chat_archived":"chat_unarchived",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:Y}});return{item:_3(W)}}})});var XZ1;var oC8=O(()=>{B3();u_();p4();p0();XZ1=t({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:gt,outputSchema:ht(PH),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=await Z.storage.threads.get($.id);if(!Q)throw Error(`Thread not found: ${$.id}`);await Z.storage.threads.delete($.id);let Y=z1(Z);if(Y)n1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:X.id},properties:{organization_id:X.id,thread_id:$.id}});return{item:_3(Q)}}})});var rC8=O(()=>{pC8();$51();Z51();tC8();oC8();X51()});function fi4($){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:$}]}]}}function bi4($){return $.map((Z)=>{let X=Z.metadata;if(X?.tiptapDoc)return Z;let Q=Z.parts.find((Y)=>Y.type==="text"&&typeof Y.text==="string");if(!Q?.text||typeof Q.text!=="string")return Z;return{...Z,metadata:{...X,tiptapDoc:fi4(Q.text)}}})}function lP0($){let Z;if(typeof $==="string")try{let X=JSON.parse($);if(Array.isArray(X)&&X.length>0&&X[0]?.role&&Array.isArray(X[0]?.parts))Z=X;else Z=[{role:"user",parts:[{type:"text",text:$}]}]}catch{Z=[{role:"user",parts:[{type:"text",text:$}]}]}else Z=$;return bi4(Z)}import{z as e$}from"zod";var QZ1;var aC8=O(()=>{p4();p0();E3();QZ1=t({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:e$.object({name:e$.string().min(1).max(255),virtual_mcp_id:e$.string(),messages:e$.union([e$.string(),e$.array(e$.looseObject({id:e$.string().optional(),role:e$.enum(["user","assistant","system"]),parts:e$.array(e$.record(e$.string(),e$.unknown())),metadata:e$.unknown().optional()}))]),models:e$.object({tier:eB,modelId:e$.string().optional(),credentialId:e$.string().optional()}).loose().default({tier:"smart"}),tools:e$.array(e$.string()).nullable().optional(),maxAgentSteps:e$.number().int().min(1).max(100).nullable().optional(),temperature:e$.number().default(0.5),active:e$.boolean().default(!0)}),outputSchema:e$.object({id:e$.string(),name:e$.string(),active:e$.boolean(),created_at:e$.string()}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=z1(Z);if(!Q)throw Error("Unable to determine user identity");let Y=lP0($.messages),G=await Z.storage.automations.create({organization_id:X.id,created_by:Q,name:$.name,messages:JSON.stringify(Y),models:JSON.stringify($.models),tools:$.tools===void 0||$.tools===null?null:JSON.stringify($.tools),max_agent_steps:$.maxAgentSteps??null,temperature:$.temperature,active:$.active,virtual_mcp_id:$.virtual_mcp_id});return n1.capture({distinctId:Q,event:"automation_created",groups:{organization:X.id},properties:{organization_id:X.id,automation_id:G.id,virtual_mcp_id:$.virtual_mcp_id,active:G.active,tier:$.models.tier}}),{id:G.id,name:G.name,active:G.active,created_at:G.created_at}}})});import{z as l$}from"zod";var YZ1;var sC8=O(()=>{p0();YZ1=t({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:l$.object({id:l$.string()}),outputSchema:l$.object({automation:l$.object({id:l$.string(),name:l$.string(),active:l$.boolean(),created_by:l$.string(),created_at:l$.string(),updated_at:l$.string(),virtual_mcp_id:l$.string(),messages:l$.unknown(),models:l$.unknown(),tools:l$.array(l$.string()).nullable(),maxAgentSteps:l$.number().nullable(),temperature:l$.number(),triggers:l$.array(l$.object({id:l$.string(),type:l$.enum(["cron","event","webhook"]),cron_expression:l$.string().nullable(),connection_id:l$.string().nullable(),event_type:l$.string().nullable(),params:l$.unknown().nullable(),last_run_at:l$.string().nullable(),api_key_id:l$.string().nullable(),created_at:l$.string()}))}).nullable()}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);await Z.access.check();let Q=await Z.storage.automations.findById($.id,X.id);if(!Q)return{automation:null};let Y=await Z.storage.automations.listTriggers(Q.id);return{automation:{id:Q.id,name:Q.name,active:Q.active,created_by:Q.created_by,created_at:Q.created_at,updated_at:Q.updated_at,virtual_mcp_id:Q.virtual_mcp_id,messages:JSON.parse(Q.messages),models:JSON.parse(Q.models),tools:Q.tools?JSON.parse(Q.tools):null,maxAgentSteps:Q.max_agent_steps,temperature:Q.temperature,triggers:Y.map((G)=>({id:G.id,type:G.type,cron_expression:G.cron_expression,connection_id:G.connection_id,event_type:G.event_type,params:G.params?JSON.parse(G.params):null,last_run_at:G.last_run_at,api_key_id:G.api_key_id,created_at:G.created_at}))}}}})});import{z as DG}from"zod";var GZ1;var eC8=O(()=>{p0();GZ1=t({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:DG.object({virtual_mcp_id:DG.string().optional().nullable()}),outputSchema:DG.object({automations:DG.array(DG.object({id:DG.string(),name:DG.string(),active:DG.boolean(),created_by:DG.string(),created_at:DG.string(),trigger_count:DG.number(),nearest_next_run_at:DG.string().nullable(),virtual_mcp_id:DG.string()}))}),handler:async($,Z)=>{W0(Z);let X=Y0(Z);return await Z.access.check(),{automations:(await Z.storage.automations.listWithTriggerCounts(X.id,$.virtual_mcp_id)).map((G)=>({id:G.id,name:G.name,active:G.active,created_by:G.created_by,created_at:G.created_at,trigger_count:G.trigger_count,nearest_next_run_at:G.nearest_next_run_at,virtual_mcp_id:G.virtual_mcp_id}))}}})});function yi4($){if(!$)return null;try{let Z=JSON.parse($);if(Array.isArray(Z)&&Z.every((X)=>typeof X==="string"))return Z.length>0?Z:null}catch{}return null}function $_8($){return`${$}:context`}function Z_8($,Z,X,Q,Y){return{messages:JSON.parse($.messages).map((W,H)=>({...W,id:`${X}:${H}`})),models:{credentialId:Q.credentialId,thinking:Q.thinking,...Q.image?{image:Q.image}:{},...Q.webSearch?{webSearch:Q.webSearch}:{},...Q.deepResearch?{deepResearch:Q.deepResearch}:{}},agent:{id:$.virtual_mcp_id},toolAllowlist:yi4($.tools),maxAgentSteps:$.max_agent_steps??void 0,temperature:$.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:$.organization_id,userId:$.created_by,harnessId:"decopilot",sandboxProviderKind:"agent-sandbox",triggerId:Z??void 0,...Y?{runMetadata:Y}:{},taskId:X}}function qX($,Z,X,Q,Y,G,J,K){return qX.fromTZ(qX.tp($,Z,X,Q,Y,G,J),K)}function JZ1($,Z=new Date){let X=Z.toLocaleString("en-US",{timeZone:$,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=Z.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${X}`)}function gi4($,Z){let X=new Date(Date.parse($));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=$.substring(9);return $.includes("Z")||Q.includes("-")||Q.includes("+")?qX.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):qX.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Z)}function hi4($){if($===void 0&&($={}),delete $.name,$.legacyMode=$.legacyMode===void 0?!0:$.legacyMode,$.paused=$.paused===void 0?!1:$.paused,$.maxRuns=$.maxRuns===void 0?1/0:$.maxRuns,$.catch=$.catch===void 0?!1:$.catch,$.interval=$.interval===void 0?0:parseInt($.interval.toString(),10),$.utcOffset=$.utcOffset===void 0?void 0:parseInt($.utcOffset.toString(),10),$.unref=$.unref===void 0?!1:$.unref,$.startAt&&($.startAt=new y3($.startAt,$.timezone)),$.stopAt&&($.stopAt=new y3($.stopAt,$.timezone)),$.interval!==null){if(isNaN($.interval))throw Error("CronOptions: Supplied value for interval is not a number");if($.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if($.utcOffset!==void 0){if(isNaN($.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if($.utcOffset<-870||$.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if($.utcOffset!==void 0&&$.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if($.unref!==!0&&$.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return $}function mr($){return Object.prototype.toString.call($)==="[object Function]"||typeof $=="function"||$ instanceof Function}function ui4($){return mr($)}function ci4($){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer($):$&&typeof $.unref<"u"&&$.unref()}var KZ1=32,ir,G_8,X_8=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor($,Z){this.pattern=$,this.timezone=Z,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let $=this.pattern.replace(/\s+/g," ").split(" ");if($.length<5||$.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if($.length===5&&$.unshift("0"),$[3].indexOf("L")>=0&&($[3]=$[3].replace("L",""),this.lastDayOfMonth=!0),$[3]=="*"&&(this.starDOM=!0),$[4].length>=3&&($[4]=this.replaceAlphaMonths($[4])),$[5].length>=3&&($[5]=this.replaceAlphaDays($[5])),$[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Z=new y3(new Date,this.timezone).getDate(!0);$[0]=$[0].replace("?",Z.getSeconds().toString()),$[1]=$[1].replace("?",Z.getMinutes().toString()),$[2]=$[2].replace("?",Z.getHours().toString()),this.starDOM||($[3]=$[3].replace("?",Z.getDate().toString())),$[4]=$[4].replace("?",(Z.getMonth()+1).toString()),this.starDOW||($[5]=$[5].replace("?",Z.getDay().toString()))}this.throwAtIllegalCharacters($),this.partToArray("second",$[0],0,1),this.partToArray("minute",$[1],0,1),this.partToArray("hour",$[2],0,1),this.partToArray("day",$[3],-1,1),this.partToArray("month",$[4],-1,1),this.partToArray("dayOfWeek",$[5],0,ir),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray($,Z,X,Q){let Y=this[$],G=$==="day"&&this.lastDayOfMonth;if(Z===""&&!G)throw TypeError("CronPattern: configuration entry "+$+" ("+Z+") is empty, check for trailing spaces.");if(Z==="*")return Y.fill(Q);let J=Z.split(",");if(J.length>1)for(let K=0;K<J.length;K++)this.partToArray($,J[K],X,Q);else Z.indexOf("-")!==-1&&Z.indexOf("/")!==-1?this.handleRangeWithStepping(Z,$,X,Q):Z.indexOf("-")!==-1?this.handleRange(Z,$,X,Q):Z.indexOf("/")!==-1?this.handleStepping(Z,$,X,Q):Z!==""&&this.handleNumber(Z,$,X,Q)}throwAtIllegalCharacters($){for(let Z=0;Z<$.length;Z++)if((Z===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test($[Z]))throw TypeError("CronPattern: configuration entry "+Z+" ("+$[Z]+") contains illegal characters.")}handleNumber($,Z,X,Q){let Y=this.extractNth($,Z),G=parseInt(Y[0],10)+X;if(isNaN(G))throw TypeError("CronPattern: "+Z+" is not a number: '"+$+"'");this.setPart(Z,G,Y[1]||Q)}setPart($,Z,X){if(!Object.prototype.hasOwnProperty.call(this,$))throw TypeError("CronPattern: Invalid part specified: "+$);if($==="dayOfWeek"){if(Z===7&&(Z=0),Z<0||Z>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Z);this.setNthWeekdayOfMonth(Z,X);return}if($==="second"||$==="minute"){if(Z<0||Z>=60)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="hour"){if(Z<0||Z>=24)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="day"){if(Z<0||Z>=31)throw RangeError("CronPattern: Invalid value for "+$+": "+Z)}else if($==="month"&&(Z<0||Z>=12))throw RangeError("CronPattern: Invalid value for "+$+": "+Z);this[$][Z]=X}handleRangeWithStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(G===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+$+"'");let[,J,K,W]=G,H=parseInt(J,10)+X,U=parseInt(K,10)+X,N=parseInt(W,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(N))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(N===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(N>this[Z].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Z].length+")");if(H>U)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let F=H;F<=U;F+=N)this.setPart(Z,F,Y[1]||Q)}extractNth($,Z){let X=$,Q;if(X.includes("#")){if(Z!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=X.split("#")[1],X=X.split("#")[0]}return[X,Q]}handleRange($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("-");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+$+"'");let J=parseInt(G[0],10)+X,K=parseInt(G[1],10)+X;if(isNaN(J))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(J>K)throw TypeError("CronPattern: From value is larger than to value: '"+$+"'");for(let W=J;W<=K;W++)this.setPart(Z,W,Y[1]||Q)}handleStepping($,Z,X,Q){let Y=this.extractNth($,Z),G=Y[0].split("/");if(G.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+$+"'");G[0]===""&&(G[0]="*");let J=0;G[0]!=="*"&&(J=parseInt(G[0],10)+X);let K=parseInt(G[1],10);if(isNaN(K))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(K===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(K>this[Z].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Z].length+")");for(let W=J;W<this[Z].length;W+=K)this.setPart(Z,W,Y[1]||Q)}replaceAlphaDays($){return $.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths($){return $.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames($){let Z=$.trim().toLowerCase();return Z==="@yearly"||Z==="@annually"?"0 0 1 1 *":Z==="@monthly"?"0 0 1 * *":Z==="@weekly"?"0 0 * * 0":Z==="@daily"?"0 0 * * *":Z==="@hourly"?"0 * * * *":$}setNthWeekdayOfMonth($,Z){if(typeof Z!="number"&&Z==="L")this.dayOfWeek[$]=this.dayOfWeek[$]|KZ1;else if(Z===ir)this.dayOfWeek[$]=ir;else if(Z<6&&Z>0)this.dayOfWeek[$]=this.dayOfWeek[$]|G_8[Z-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Z}, Type: ${typeof Z}`)}},Q_8,aN,y3=class ${tz;ms;second;minute;hour;day;month;year;constructor(Z,X){if(this.tz=X,Z&&Z instanceof Date)if(!isNaN(Z))this.fromDate(Z);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Z===void 0)this.fromDate(new Date);else if(Z&&typeof Z=="string")this.fromString(Z);else if(Z instanceof $)this.fromCronDate(Z);else throw TypeError("CronDate: Invalid type ("+typeof Z+") passed to CronDate constructor")}isNthWeekdayOfMonth(Z,X,Q,Y){let G=new Date(Date.UTC(Z,X,Q)).getUTCDay(),J=0;for(let K=1;K<=Q;K++)new Date(Date.UTC(Z,X,K)).getUTCDay()===G&&J++;if(Y&ir&&G_8[J-1]&Y)return!0;if(Y&KZ1){let K=new Date(Date.UTC(Z,X+1,0)).getUTCDate();for(let W=Q+1;W<=K;W++)if(new Date(Date.UTC(Z,X,W)).getUTCDay()===G)return!1;return!0}return!1}fromDate(Z){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes()+this.tz,this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),this.apply();else{let X=qX.toTZ(Z,this.tz);this.ms=Z.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=Z.getMilliseconds(),this.second=Z.getSeconds(),this.minute=Z.getMinutes(),this.hour=Z.getHours(),this.day=Z.getDate(),this.month=Z.getMonth(),this.year=Z.getFullYear()}fromCronDate(Z){this.tz=Z.tz,this.year=Z.year,this.month=Z.month,this.day=Z.day,this.hour=Z.hour,this.minute=Z.minute,this.second=Z.second,this.ms=Z.ms}apply(){if(this.month>11||this.day>Q_8[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Z=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Z.getUTCMilliseconds(),this.second=Z.getUTCSeconds(),this.minute=Z.getUTCMinutes(),this.hour=Z.getUTCHours(),this.day=Z.getUTCDate(),this.month=Z.getUTCMonth(),this.year=Z.getUTCFullYear(),!0}else return!1}fromString(Z){if(typeof this.tz=="number"){let X=qX.fromTZISO(Z);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(qX.fromTZISO(Z,this.tz))}findNext(Z,X,Q,Y){let G=this[X],J;Q.lastDayOfMonth&&(this.month!==1?J=Q_8[this.month]:J=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let K=!Q.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let W=this[X]+Y;W<Q[X].length;W++){let H=Q[X][W];if(X==="day"&&Q.lastDayOfMonth&&W-Y==J&&(H=1),X==="day"&&!Q.starDOW){let U=Q.dayOfWeek[(K+(W-Y-1))%7];if(U&&U&ir)U=this.isNthWeekdayOfMonth(this.year,this.month,W-Y,U)?1:0;else if(U)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${U}`);Z.legacyMode&&!Q.starDOM?H=H||U:H=H&&U}if(H)return this[X]=W-Y,G!==this[X]?2:1}return 3}recurse(Z,X,Q){let Y=this.findNext(X,aN[Q][0],Z,aN[Q][2]);if(Y>1){let G=Q+1;for(;G<aN.length;)this[aN[G][0]]=-aN[G][2],G++;if(Y===3)return this[aN[Q][1]]++,this[aN[Q][0]]=-aN[Q][2],this.apply(),this.recurse(Z,X,0);if(this.apply())return this.recurse(Z,X,Q-1)}return Q+=1,Q>=aN.length?this:this.year>=3000?null:this.recurse(Z,X,Q)}increment(Z,X,Q){return this.second+=X.interval!==void 0&&X.interval>1&&Q?X.interval:1,this.ms=0,this.apply(),this.recurse(Z,X,0)}getDate(Z){return Z||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):qX.fromTZ(qX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},Y_8=30000,dP0,mP0=class{name;options;_states;fn;constructor($,Z,X){let Q,Y;if(mr(Z))Y=Z;else if(typeof Z=="object")Q=Z;else if(Z!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(mr(X))Y=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=hi4(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new X_8("* * * * *")},$&&($ instanceof Date||typeof $=="string"&&$.indexOf(":")>0)?this._states.once=new y3($,this.options.timezone||this.options.utcOffset):this._states.pattern=new X_8($,this.options.timezone),this.name){if(dP0.find((G)=>G.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");dP0.push(this)}return Y!==void 0&&ui4(Y)&&(this.fn=Y,this.schedule()),this}nextRun($){let Z=this._next($);return Z?Z.getDate(!1):null}nextRuns($,Z){this._states.maxRuns!==void 0&&$>this._states.maxRuns&&($=this._states.maxRuns);let X=[],Q=Z||this._states.currentRun||void 0;for(;$--&&(Q=this.nextRun(Q));)X.push(Q);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let $=this.nextRun(this._states.currentRun),Z=!this._states.paused,X=this.fn!==void 0,Q=!this._states.kill;return Z&&X&&Q&&$!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext($){let Z=this._next($);return Z?$ instanceof y3||$ instanceof Date?Z.getTime()-$.getTime():Z.getTime()-new y3($).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let $=dP0.indexOf(this);$>=0&&dP0.splice($,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule($){if($&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");$&&(this.fn=$);let Z=this.msToNext(),X=this.nextRun(this._states.currentRun);return Z==null||isNaN(Z)||X===null?this:(Z>Y_8&&(Z=Y_8),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Z),this._states.currentTimeout&&this.options.unref&&ci4(this._states.currentTimeout),this)}async _trigger($){if(this._states.blocking=!0,this._states.currentRun=new y3(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Z){mr(this.options.catch)&&this.options.catch(Z,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new y3($,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger($){let Z=new Date,X=!this._states.paused&&Z.getTime()>=$.getTime(),Q=this._states.blocking&&this.options.protect;X&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&Q&&mr(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next($){let Z=!!($||this._states.currentRun),X=!1;!$&&this.options.startAt&&this.options.interval&&([$,Z]=this._calculatePreviousRun($,Z),X=!$),$=new y3($,this.options.timezone||this.options.utcOffset),this.options.startAt&&$&&$.getTime()<this.options.startAt.getTime()&&($=this.options.startAt);let Q=this._states.once||new y3($,this.options.timezone||this.options.utcOffset);return!X&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,Z)),this._states.once&&this._states.once.getTime()<=$.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun($,Z){let X=new y3(void 0,this.options.timezone||this.options.utcOffset),Q=$;if(this.options.startAt.getTime()<=X.getTime()){Q=this.options.startAt;let Y=Q.getTime()+this.options.interval*1000;for(;Y<=X.getTime();)Q=new y3(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),Y=Q.getTime()+this.options.interval*1000;Z=!0}return Q===null&&(Q=void 0),[Q,Z]}};var WZ1=O(()=>{qX.fromTZISO=($,Z,X)=>qX.fromTZ(gi4($,Z),X);qX.fromTZ=function($,Z){let X=new Date(Date.UTC($.y,$.m-1,$.d,$.h,$.i,$.s)),Q=JZ1($.tz,X),Y=new Date(X.getTime()-Q),G=JZ1($.tz,Y);if(G-Q===0)return Y;{let J=new Date(X.getTime()-G),K=JZ1($.tz,J);if(K-G===0)return J;if(!Z&&K-G>0)return J;if(Z)throw Error("Invalid date passed to fromTZ()");return Y}};qX.toTZ=function($,Z){let X=$.toLocaleString("en-US",{timeZone:Z}).replace(/[\u202f]/," "),Q=new Date(X);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:Z}};qX.tp=($,Z,X,Q,Y,G,J)=>({y:$,m:Z,d:X,h:Q,i:Y,s:G,tz:J});qX.minitz=qX;ir=31|KZ1,G_8=[1,2,4,8,16],Q_8=[31,28,31,30,31,30,31,31,30,31,30,31],aN=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];dP0=[]});function iP0($,Z){try{return new mP0($,{timezone:"UTC"}).nextRun(Z)??null}catch{return null}}var HZ1=O(()=>{WZ1()});import{DBOS as V7,SchedulerMode as li4}from"@dbos-inc/dbos-sdk";async function BZ1($){try{let{rows:Z}=await $.query(`SELECT q.name FROM dbos.queues q
2797
2797
  WHERE q.name LIKE $1
2798
2798
  AND NOT EXISTS (
2799
2799
  SELECT 1 FROM dbos.workflow_status w